This commit is contained in:
2026-02-26 10:31:17 -07:00
parent 8ec78c040a
commit 47b201fd03
2 changed files with 24 additions and 21 deletions

View File

@@ -57,7 +57,7 @@
(defn org-document (defn org-document
"Recursively render an Org-mode document to Hiccup." "Recursively render an Org-mode document to Hiccup."
[doc] [doc]
(tex/binding-tex-worker (tex/binding-temml-worker
(let [rendered (-> doc gather-footnotes render-tex-snippets (let [rendered (-> doc gather-footnotes render-tex-snippets
org-element-recursive)] org-element-recursive)]
[:html [:html
@@ -142,7 +142,7 @@
(Thread/sleep (* 1000 1)) (Thread/sleep (* 1000 1))
(doseq [{:keys [promise node]} @promises] (doseq [{:keys [promise node]} @promises]
(try (let [{:keys [value contents]} node] (try (let [{:keys [value contents]} node]
(deliver promise (tex/render (or contents value)))) (deliver promise (tex/render-temml (or contents value))))
(catch Throwable e (catch Throwable e
(prn e) (prn e)
(flush)))) (flush))))
@@ -306,11 +306,14 @@
(hiccup/raw (-> e ::rendered (deref 2000 "«timed out»")))] (hiccup/raw (-> e ::rendered (deref 2000 "«timed out»")))]
#_ #_
[:span.latex-fragment [:span.latex-fragment
(hiccup/raw (tex/render contents :display? display?))])) (hiccup/raw (tex/render-temml contents :display? display?))]))
(defmethod org-element "latex-environment" [{:keys [value] :as e}] (defmethod org-element "latex-environment" [{:keys [value] :as e}]
[:span.latex-fragment [:span.latex-fragment
(hiccup/raw (tex/render value :display? true))]) (hiccup/raw (-> e ::rendered (deref 2000 "«timed out»")))]
#_
[:span.latex-fragment
(hiccup/raw (tex/render-temml value :display? true))])
(defmethod org-element "example-block" [{:keys [value]}] (defmethod org-element "example-block" [{:keys [value]}]
[:pre value]) [:pre value])

View File

@@ -154,14 +154,14 @@
;;; Temml ;;; Temml
(def ^:dynamic *tex-worker-timeout-duration* (def ^:dynamic *temml-worker-timeout-duration*
"Number of milliseconds to wait before killing the external Uniorg "Number of milliseconds to wait before killing the external Uniorg
process." process."
(* 10 1000)) (* 10 1000))
(def ^:dynamic *worker*) (def ^:dynamic *temml-worker*)
(defn tex-worker [& {:keys [preamble]}] (defn temml-worker [& {:keys [preamble]}]
(p/process (p/process
{:shutdown p/destroy-tree {:shutdown p/destroy-tree
:err (l/log-stream :info "temml/err")} :err (l/log-stream :info "temml/err")}
@@ -170,33 +170,33 @@
"--preamble" "--preamble"
"resources/net/deertopia/doerg/prelude.tex")) "resources/net/deertopia/doerg/prelude.tex"))
(defn finish [tw] (defn close-temml-worker [tw]
(.close (:in tw))) (.close (:in tw)))
(defmacro with-tex-worker [tw & body] (defmacro with-temml-worker [tw & body]
`(let [~tw (tex-worker)] `(let [~tw (temml-worker)]
(try (try
(do ~@body) (do ~@body)
(finally (finally
(finish ~tw) (close-temml-worker ~tw)
(p/destroy-tree ~tw))))) (p/destroy-tree ~tw)))))
(defmacro binding-tex-worker [& body] (defmacro binding-temml-worker [& body]
`(binding [*worker* (tex-worker)] `(binding [*temml-worker* (temml-worker)]
(try (try
~@body ~@body
(finally (finally
(finish *worker*))))) (close-temml-worker *temml-worker*)))))
(defn command [x] (defn command-temml-worker [x]
(cbor/encode cbor/default-codec (:in *worker*) x) (cbor/encode cbor/default-codec (:in *temml-worker*) x)
(.flush (:in *worker*)) (.flush (:in *temml-worker*))
(cbor/decode cbor/default-codec (:out *worker*))) (cbor/decode cbor/default-codec (:out *temml-worker*)))
(defn render [s & {:keys [display?]}] (defn render-temml [s & {:keys [display?]}]
(if display? (if display?
(command [s]) (command-temml-worker [s])
(command s))) (command-temml-worker s)))
;; hackky.... ;; hackky....
(defn erroneous-temml-output? [s] (defn erroneous-temml-output? [s]