diff --git a/doerg/src/net/deertopia/doerg/tex.clj b/doerg/src/net/deertopia/doerg/tex.clj index a959d27..75a71a2 100644 --- a/doerg/src/net/deertopia/doerg/tex.clj +++ b/doerg/src/net/deertopia/doerg/tex.clj @@ -35,22 +35,23 @@ (str/replace #"stroke=['\"]#000['\"]" "stroke=\"currentColor\""))) (defn render-snippets [snippet-promises] - (let [rendered-snippets - (delay (->> snippet-promises - (map first) - (apply native/render svg-dir)))] - (doseq [[snippet p] snippet-promises] - (try (let [temml (temml/render snippet)] - (->> (if (temml/erroneous-output? temml) - (let [tex (get @rendered-snippets snippet)] - (if (:errors tex) - temml - (read-and-patch-generated-svg tex))) - temml) - hiccup/raw (deliver p))) - (catch Exception e - (l/error e "Error in TeX thread") - (throw e)))))) + (fs/with-temp-dir [svg-dir {:prefix "doerg-svg-"}] + (let [rendered-snippets + (delay (->> snippet-promises + (map first) + (apply native/render svg-dir)))] + (doseq [[snippet p] snippet-promises] + (try (let [temml (temml/render snippet)] + (->> (if (temml/erroneous-output? temml) + (let [tex (get @rendered-snippets snippet)] + (if (:errors tex) + temml + (read-and-patch-generated-svg tex))) + temml) + hiccup/raw (deliver p))) + (catch Exception e + (l/error e "Error in TeX thread") + (throw e))))))) (comment (let [snippets (for [x ["\\(\\ifxetex blah \\fi\\)"