This commit is contained in:
2026-02-25 17:06:33 -07:00
parent bd3e6016ed
commit f6da1187ad

View File

@@ -72,7 +72,8 @@
dimensional-info (->> r (drop 2) (map parse-long))
errors (-> out
(subs (.end m-start) (.start m-end))
(str/replace-first #"[^!]*" ""))]
(str/replace-first #"[^!]*" "")
str/trim)]
(assert (= snippet-ix snippet-ix*))
(recur (conj acc (-> (snippet-dimensions
tightpage-info dimensional-info)
@@ -90,13 +91,12 @@
;; dvisvgm --page=1- --optimize --clipjoin --relative --no-fonts -v3 --message='processing page {?pageno}: output written to {?svgpath}' --bbox=preview -o %B-%%9p.svg %f
(defn- invoke-dvisvgm [& {:keys [file output-dir]}]
(let [r (invoke
{:dir output-dir}
"dvisvgm" "--page=1-" "--optimize" "--clipjoin"
"--relative" "--no-fonts" "-v3"
"--message=processing page {?pageno}: output written to {?svgpath}"
"--bbox=preview" "-o" "%9p.svg" file)]
r))
(invoke
{:dir output-dir}
"dvisvgm" "--page=1-" "--optimize" "--clipjoin"
"--relative" "--no-fonts" "-v3"
"--message=processing page {?pageno}: output written to {?svgpath}"
"--bbox=preview" "-o" "%9p.svg" file))
(defn- snippet-file-names
"Return a map of TeX snippets (as strings, including the math
@@ -120,14 +120,26 @@
(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-vals #(fs/file dir %)))]
distinct-snippets (distinct snippets)]
(fs/create-dirs output-dir)
(->> (instantiate-preview-template snippets)
(->> (instantiate-preview-template distinct-snippets)
(spit preview-tex))
(invoke-xelatex :output-dir dir :file preview-tex)
(invoke-dvisvgm :output-dir output-dir :file preview-xdv)
snippet->file
(let [dimensions (-> (invoke-xelatex :output-dir dir :file preview-tex)
::out parse-xelatex-output)
_ (invoke-dvisvgm :output-dir output-dir :file preview-xdv)]
;; Adorn each snippet with dimensions and errors parsed from
;; XeLaTeX's output, and the paths to SVG files generated by
;; dvisvgm.
(assert (= (count distinct-snippets) (count dimensions)))
(->> (map (fn [ix snippet dimensions]
{snippet
(-> dimensions
(assoc :file
(fs/file dir (format "%09d.svg" (inc ix)))))})
(range)
distinct-snippets
dimensions)
(into {})))
#_
(do (when (fs/exists? "/tmp/doerg-tex-test") ; For debugging
(fs/delete-tree "/tmp/doerg-tex-test"))
@@ -136,8 +148,8 @@
(comment
(render-xelatex "/tmp/doerg-tex-svgs"
"\\(c = \\sqrt{x^2 + y^2}\\)"
"x" "y" "x"
"\\undefinedcommandlol"))
"\\(x\\)" "\\(y\\)" "\\(x\\)"
"\\(\\undefinedcommandlol\\)"))
;;; Temml