From e67f62e5b074ecb4ccbd615e9868d8d80b4f708c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Madeleine=20Sydney=20=C5=9Alaga?= Date: Thu, 26 Feb 2026 11:07:12 -0700 Subject: [PATCH] --- doerg/src/net/deertopia/doerg/render.clj | 44 ++++++++++++++---------- doerg/src/net/deertopia/doerg/tex.clj | 3 +- 2 files changed, 27 insertions(+), 20 deletions(-) diff --git a/doerg/src/net/deertopia/doerg/render.clj b/doerg/src/net/deertopia/doerg/render.clj index 65cf602..56a77cb 100644 --- a/doerg/src/net/deertopia/doerg/render.clj +++ b/doerg/src/net/deertopia/doerg/render.clj @@ -10,7 +10,8 @@ [hiccup2.core :as hiccup] [clojure.pprint] [net.deertopia.doerg.tex :as tex] - [clojure.zip :as z])) + [clojure.zip :as z] + [babashka.fs :as fs])) ;;; Top-level API @@ -137,22 +138,27 @@ (swap! promises #(conj % {:promise p :node node})) (assoc node ::rendered p))))) f (fn [] - (doseq [{:keys [promise node]} @promises] - (try (let [{:keys [value contents]} node - temml (tex/render-temml (or contents value))] - (if (tex/erroneous-temml-output? temml) - (deliver promise "errors!! aghhh!!") - (deliver promise temml))) - (catch Exception e - (prn e) - (flush) - (throw e)))) - #_ - (doseq [[ix {:keys [promise node]}] - (map (fn [i x] [i x]) (range) @promises)] - (printf "what %d\n" ix) - (flush) - (deliver promise (str ix))))] + (let [rendered-snippets + (delay (->> @promises + (map #(-> % :node :value)) + (apply tex/render-xelatex + "/tmp/doerg-test/svg")))] + (def the-rendered-snippets rendered-snippets) + (doseq [{:keys [promise node]} @promises] + (try (let [{:keys [value contents]} node + temml (tex/render-temml (or contents value))] + (if (tex/erroneous-temml-output? temml) + (let [{:keys [file]} (get @rendered-snippets value)] + (deliver + promise + [:object.latex-fragment + {:data (format "svg/%s" (fs/file-name file)) + :type "image/svg+xml"}])) + (deliver promise (hiccup/raw temml)))) + (catch Exception e + (prn e) + (flush) + (throw e))))))] (future-call (bound-fn* f)) r)) @@ -304,14 +310,14 @@ (defmethod org-element "latex-fragment" [{:keys [contents value] :as e}] (let [display? (str/starts-with? value "\\[")] [:span.latex-fragment - (hiccup/raw (-> e ::rendered (deref 2000 "«timed out»")))] + (-> e ::rendered (deref 2000 "«timed out»"))] #_ [:span.latex-fragment (hiccup/raw (tex/render-temml contents :display? display?))])) (defmethod org-element "latex-environment" [{:keys [value] :as e}] [:span.latex-fragment - (hiccup/raw (-> e ::rendered (deref 2000 "«timed out»")))] + (-> e ::rendered (deref 2000 "«timed out»"))] #_ [:span.latex-fragment (hiccup/raw (tex/render-temml value :display? true))]) diff --git a/doerg/src/net/deertopia/doerg/tex.clj b/doerg/src/net/deertopia/doerg/tex.clj index a32cdbf..764604c 100644 --- a/doerg/src/net/deertopia/doerg/tex.clj +++ b/doerg/src/net/deertopia/doerg/tex.clj @@ -141,7 +141,8 @@ {snippet (-> dimensions (assoc - :file (fs/file dir (format "%09d.svg" (inc ix)))))}) + :file (fs/file output-dir + (format "%09d.svg" (inc ix)))))}) (range) distinct-snippets dimensions)