diff --git a/doerg/src/net/deertopia/doerg/render.clj b/doerg/src/net/deertopia/doerg/render.clj index 3b78d1c..e563bcb 100644 --- a/doerg/src/net/deertopia/doerg/render.clj +++ b/doerg/src/net/deertopia/doerg/render.clj @@ -174,10 +174,9 @@ (delay (->> @promises (map #(-> % :node :value)) (apply tex/render-xelatex svg-dir)))] - (def the-rendered-snippets rendered-snippets) (doseq [{:keys [promise node]} @promises] - (try (let [{:keys [value contents]} node - temml (tex/render-temml (or contents value))] + (try (let [{:keys [value]} node + temml (tex/render-temml value)] (if (tex/erroneous-temml-output? temml) (let [tex (get @rendered-snippets value)] (if (:errors tex) diff --git a/doerg/src/net/deertopia/doerg/tex.clj b/doerg/src/net/deertopia/doerg/tex.clj index 764604c..39403f2 100644 --- a/doerg/src/net/deertopia/doerg/tex.clj +++ b/doerg/src/net/deertopia/doerg/tex.clj @@ -200,10 +200,20 @@ (.flush (:in *temml-worker*)) (cbor/decode cbor/default-codec (:out *temml-worker*))) -(defn render-temml [s & {:keys [display?]}] - (if display? - (command-temml-worker [s]) - (command-temml-worker s))) +(defn render-temml-inline [s] + (command-temml-worker s)) + +(defn render-temml-display [s] + (command-temml-worker [s])) + +(defn render-temml [s] + (if-let [[_ inner] (re-matches #"(?s)\\[(.*)\\]" s)] + (render-temml-display inner) + (if (re-matches #"(?s)\\begin\{.+?}(.*?)\\end\{.+?}" s) + (render-temml-display s) + (if-let [[_ inner] (re-matches #"(?s)\\\((.*)\\\)" s)] + (render-temml-inline s) + (throw (ex-info "weird" {:snippet s})))))) ;; hackky.... (defn erroneous-temml-output? [s]