This commit is contained in:
@@ -4,7 +4,8 @@
|
|||||||
[clj-cbor.core :as cbor]
|
[clj-cbor.core :as cbor]
|
||||||
[clojure.java.io :as io]
|
[clojure.java.io :as io]
|
||||||
[clojure.string :as str]
|
[clojure.string :as str]
|
||||||
[clojure.tools.logging :as l])
|
[clojure.tools.logging :as l]
|
||||||
|
[babashka.fs :as fs])
|
||||||
(:import (java.io ByteArrayOutputStream)))
|
(:import (java.io ByteArrayOutputStream)))
|
||||||
|
|
||||||
;;; XeLaTeX
|
;;; XeLaTeX
|
||||||
@@ -74,16 +75,46 @@
|
|||||||
"--bbox=preview" "-o" "%9p.svg" file)]
|
"--bbox=preview" "-o" "%9p.svg" file)]
|
||||||
r))
|
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]
|
(defn- instantiate-preview-template [snippets]
|
||||||
(let [contents (->> (for [s 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"))]
|
(str/join "\n"))]
|
||||||
(-> (io/resource "net/deertopia/doerg/preview-template.tex")
|
(-> (io/resource "net/deertopia/doerg/preview-template.tex")
|
||||||
slurp
|
slurp
|
||||||
(str/replace-first "% {{contents}}" contents))))
|
(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
|
;;; Temml
|
||||||
|
|||||||
Reference in New Issue
Block a user