This commit is contained in:
2026-02-25 09:16:54 -07:00
parent 955db64027
commit af493a1291

View File

@@ -4,7 +4,8 @@
[clj-cbor.core :as cbor]
[clojure.java.io :as io]
[clojure.string :as str]
[clojure.tools.logging :as l])
[clojure.tools.logging :as l]
[babashka.fs :as fs])
(:import (java.io ByteArrayOutputStream)))
;;; XeLaTeX
@@ -74,16 +75,46 @@
"--bbox=preview" "-o" "%9p.svg" file)]
r))
(defn- snippet-file-names
"Return a map of TeX snippets (as strings, including the math
delimiters) to file names as would be output by
`invoke-dvisvgm`. The returned file names are relative to dvisvgm's
output directory."
[snippets]
(let [svgs (for [i (range)]
(format "%09d.svg" i))]
(zipmap (reverse snippets) svgs)))
(defn- instantiate-preview-template [snippets]
(let [contents (->> (for [s snippets]
(format "\\begin{preview}\n%s\\end{preview}" s))
(format "\\begin{preview}\n%s\n\\end{preview}" s))
(str/join "\n"))]
(-> (io/resource "net/deertopia/doerg/preview-template.tex")
slurp
(str/replace-first "% {{contents}}" contents))))
(defn render-xelatex [& snippets]
)
(defn render-xelatex [output-dir & snippets]
(fs/with-temp-dir [dir {:prefix "doerg-xelatex"}]
(let [preview-tex (fs/file dir "preview.tex")
preview-xdv (fs/file dir "preview.xdv")
snippet->file (-> (snippet-file-names snippets)
(update-keys #(fs/file dir %)))]
(fs/create-dirs output-dir)
(->> (instantiate-preview-template snippets)
(spit preview-tex))
(invoke-xelatex :output-dir dir :file preview-tex)
(invoke-dvisvgm :output-dir output-dir :file preview-xdv)
snippet->file
#_
(do (when (fs/exists? "/tmp/doerg-tex-test") ; For debugging
(fs/delete-tree "/tmp/doerg-tex-test"))
(fs/copy-tree dir "/tmp/doerg-tex-test")))))
(comment
(render-xelatex "/tmp/doerg-tex-svgs"
"\\(c = \\sqrt{x^2 + y^2}\\)"
"x" "y" "x"
"\\undefinedcommandlol"))
;;; Temml