This commit is contained in:
@@ -72,7 +72,8 @@
|
|||||||
dimensional-info (->> r (drop 2) (map parse-long))
|
dimensional-info (->> r (drop 2) (map parse-long))
|
||||||
errors (-> out
|
errors (-> out
|
||||||
(subs (.end m-start) (.start m-end))
|
(subs (.end m-start) (.start m-end))
|
||||||
(str/replace-first #"[^!]*" ""))]
|
(str/replace-first #"[^!]*" "")
|
||||||
|
str/trim)]
|
||||||
(assert (= snippet-ix snippet-ix*))
|
(assert (= snippet-ix snippet-ix*))
|
||||||
(recur (conj acc (-> (snippet-dimensions
|
(recur (conj acc (-> (snippet-dimensions
|
||||||
tightpage-info dimensional-info)
|
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
|
;; 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]}]
|
(defn- invoke-dvisvgm [& {:keys [file output-dir]}]
|
||||||
(let [r (invoke
|
(invoke
|
||||||
{:dir output-dir}
|
{:dir output-dir}
|
||||||
"dvisvgm" "--page=1-" "--optimize" "--clipjoin"
|
"dvisvgm" "--page=1-" "--optimize" "--clipjoin"
|
||||||
"--relative" "--no-fonts" "-v3"
|
"--relative" "--no-fonts" "-v3"
|
||||||
"--message=processing page {?pageno}: output written to {?svgpath}"
|
"--message=processing page {?pageno}: output written to {?svgpath}"
|
||||||
"--bbox=preview" "-o" "%9p.svg" file)]
|
"--bbox=preview" "-o" "%9p.svg" file))
|
||||||
r))
|
|
||||||
|
|
||||||
(defn- snippet-file-names
|
(defn- snippet-file-names
|
||||||
"Return a map of TeX snippets (as strings, including the math
|
"Return a map of TeX snippets (as strings, including the math
|
||||||
@@ -120,14 +120,26 @@
|
|||||||
(fs/with-temp-dir [dir {:prefix "doerg-xelatex"}]
|
(fs/with-temp-dir [dir {:prefix "doerg-xelatex"}]
|
||||||
(let [preview-tex (fs/file dir "preview.tex")
|
(let [preview-tex (fs/file dir "preview.tex")
|
||||||
preview-xdv (fs/file dir "preview.xdv")
|
preview-xdv (fs/file dir "preview.xdv")
|
||||||
snippet->file (-> (snippet-file-names snippets)
|
distinct-snippets (distinct snippets)]
|
||||||
(update-vals #(fs/file dir %)))]
|
|
||||||
(fs/create-dirs output-dir)
|
(fs/create-dirs output-dir)
|
||||||
(->> (instantiate-preview-template snippets)
|
(->> (instantiate-preview-template distinct-snippets)
|
||||||
(spit preview-tex))
|
(spit preview-tex))
|
||||||
(invoke-xelatex :output-dir dir :file preview-tex)
|
(let [dimensions (-> (invoke-xelatex :output-dir dir :file preview-tex)
|
||||||
(invoke-dvisvgm :output-dir output-dir :file preview-xdv)
|
::out parse-xelatex-output)
|
||||||
snippet->file
|
_ (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
|
(do (when (fs/exists? "/tmp/doerg-tex-test") ; For debugging
|
||||||
(fs/delete-tree "/tmp/doerg-tex-test"))
|
(fs/delete-tree "/tmp/doerg-tex-test"))
|
||||||
@@ -136,8 +148,8 @@
|
|||||||
(comment
|
(comment
|
||||||
(render-xelatex "/tmp/doerg-tex-svgs"
|
(render-xelatex "/tmp/doerg-tex-svgs"
|
||||||
"\\(c = \\sqrt{x^2 + y^2}\\)"
|
"\\(c = \\sqrt{x^2 + y^2}\\)"
|
||||||
"x" "y" "x"
|
"\\(x\\)" "\\(y\\)" "\\(x\\)"
|
||||||
"\\undefinedcommandlol"))
|
"\\(\\undefinedcommandlol\\)"))
|
||||||
|
|
||||||
|
|
||||||
;;; Temml
|
;;; Temml
|
||||||
|
|||||||
Reference in New Issue
Block a user