This commit is contained in:
@@ -40,14 +40,13 @@
|
|||||||
(def ^:dynamic ^:private *document-info*)
|
(def ^:dynamic ^:private *document-info*)
|
||||||
|
|
||||||
(declare ^:private gather-footnotes render-renderer-error
|
(declare ^:private gather-footnotes render-renderer-error
|
||||||
view-children-as-seq)
|
view-children-as-seq render-tex-snippets)
|
||||||
|
|
||||||
(defn org-element-recursive
|
(defn org-element-recursive
|
||||||
"Recursively render an Org-mode element to Hiccup."
|
"Recursively render an Org-mode element to Hiccup."
|
||||||
[e]
|
[e]
|
||||||
(tex/binding-tex-worker
|
(tex/binding-tex-worker
|
||||||
(->> e
|
(->> e
|
||||||
;; gather-footnotes
|
|
||||||
(sp/transform
|
(sp/transform
|
||||||
[element/postorder-walker view-children-as-seq]
|
[element/postorder-walker view-children-as-seq]
|
||||||
(fn [node]
|
(fn [node]
|
||||||
@@ -59,7 +58,8 @@
|
|||||||
(defn org-document
|
(defn org-document
|
||||||
"Recursively render an Org-mode document to Hiccup."
|
"Recursively render an Org-mode document to Hiccup."
|
||||||
[doc]
|
[doc]
|
||||||
(let [rendered (org-element-recursive (gather-footnotes doc))]
|
(let [rendered (-> doc gather-footnotes render-tex-snippets
|
||||||
|
org-element-recursive)]
|
||||||
[:html
|
[:html
|
||||||
[:head
|
[:head
|
||||||
[:title "org document"]
|
[:title "org document"]
|
||||||
@@ -126,6 +126,30 @@
|
|||||||
element/footnotes-section?]
|
element/footnotes-section?]
|
||||||
sp/NONE))))
|
sp/NONE))))
|
||||||
|
|
||||||
|
(defn- render-tex-snippets [doc]
|
||||||
|
(let [promises (atom [])
|
||||||
|
r (->> doc (sp/transform
|
||||||
|
[element/postorder-walker
|
||||||
|
#(element/of-type?
|
||||||
|
% "latex-fragment" "latex-environment")]
|
||||||
|
(fn [node]
|
||||||
|
(let [p (promise)]
|
||||||
|
(swap! promises #(conj % {:promise p :node node}))
|
||||||
|
(assoc node ::rendered p)))))]
|
||||||
|
(future
|
||||||
|
(println "run")
|
||||||
|
(prn (count @promises))
|
||||||
|
(Thread/sleep (* 1000 1))
|
||||||
|
(doseq [[ix {:keys [promise node]}]
|
||||||
|
(map (fn [i x] [i x]) (range) @promises)]
|
||||||
|
(printf "what %d\n" ix)
|
||||||
|
(flush)
|
||||||
|
(deliver promise (str ix))))
|
||||||
|
r))
|
||||||
|
|
||||||
|
(comment
|
||||||
|
(render-tex-snippets doc))
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
(defn- render-pprint
|
(defn- render-pprint
|
||||||
@@ -270,12 +294,14 @@
|
|||||||
|
|
||||||
(defmethod org-element "latex-fragment" [{:keys [contents value] :as e}]
|
(defmethod org-element "latex-fragment" [{:keys [contents value] :as e}]
|
||||||
(let [display? (str/starts-with? value "\\[")]
|
(let [display? (str/starts-with? value "\\[")]
|
||||||
|
[:span.latex-fragment (-> e ::rendered (deref 2000 "«timed out»"))]
|
||||||
#_
|
#_
|
||||||
(render-pprint (assoc e :display? display?))
|
|
||||||
[:span.latex-fragment
|
[:span.latex-fragment
|
||||||
(hiccup/raw (tex/render contents :display? display?))]))
|
(hiccup/raw (tex/render contents :display? display?))]))
|
||||||
|
|
||||||
(defmethod org-element "latex-environment" [{:keys [value]}]
|
(defmethod org-element "latex-environment" [{:keys [value] :as e}]
|
||||||
|
[:span.latex-fragment (-> e ::rendered (deref 2000 "«timed out»"))]
|
||||||
|
#_
|
||||||
[:span.latex-fragment
|
[:span.latex-fragment
|
||||||
(hiccup/raw (tex/render value :display? true))])
|
(hiccup/raw (tex/render value :display? true))])
|
||||||
|
|
||||||
@@ -319,4 +345,3 @@
|
|||||||
[:span.org-link.external
|
[:span.org-link.external
|
||||||
[:a {:href raw-link}
|
[:a {:href raw-link}
|
||||||
(or (seq children) raw-link)]])
|
(or (seq children) raw-link)]])
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,9 @@
|
|||||||
"/home/msyds/org/20250919114912-homepage.org"
|
"/home/msyds/org/20250919114912-homepage.org"
|
||||||
#_
|
#_
|
||||||
"/home/msyds/org/20251111182118-path_induction.org"
|
"/home/msyds/org/20251111182118-path_induction.org"
|
||||||
"/home/msyds/org/20250512144715-natural_transformation_category_theory.org")
|
#_
|
||||||
|
"/home/msyds/org/20250512144715-natural_transformation_category_theory.org"
|
||||||
|
"/home/msyds/org/20251021155921-path_action.org")
|
||||||
|
|
||||||
(defn- force-create-sym-link [path target]
|
(defn- force-create-sym-link [path target]
|
||||||
(fs/delete-if-exists path)
|
(fs/delete-if-exists path)
|
||||||
|
|||||||
Reference in New Issue
Block a user