This commit is contained in:
@@ -18,7 +18,7 @@
|
|||||||
#"Preview: Tightpage (-?\d+) *(-?\d+) *(-?\d+) *(-?\d+)")
|
#"Preview: Tightpage (-?\d+) *(-?\d+) *(-?\d+) *(-?\d+)")
|
||||||
|
|
||||||
(def ^:private preview-start-regexp
|
(def ^:private preview-start-regexp
|
||||||
#"^! Preview: Snippet (\d+) started.")
|
#"! Preview: Snippet (\d+) started.")
|
||||||
|
|
||||||
(def ^:private preview-end-regexp
|
(def ^:private preview-end-regexp
|
||||||
#"(?:^Preview: Tightpage.*$)?\n! Preview: Snippet (\d+) ended.\((\d+)\+(\d+)x(\d+)\)")
|
#"(?:^Preview: Tightpage.*$)?\n! Preview: Snippet (\d+) ended.\((\d+)\+(\d+)x(\d+)\)")
|
||||||
@@ -45,29 +45,34 @@
|
|||||||
(-> r
|
(-> r
|
||||||
(assoc ::out out))))
|
(assoc ::out out))))
|
||||||
|
|
||||||
(defn- snippetwise [xelatex-out])
|
(defn- parse-xelatex-output [out]
|
||||||
|
(let [[tp1 tp2 tp3 tp4] (->> (re-find tightpage-regexp out)
|
||||||
(defn- invoke-xelatex [& {:keys [file output-dir]}]
|
|
||||||
(let [{out ::out} (invoke
|
|
||||||
{:dir output-dir}
|
|
||||||
"xelatex" "-no-pdf" "-interaction" "nonstopmode"
|
|
||||||
"-output-directory" output-dir file)
|
|
||||||
[tp1 tp2 tp3 tp4] (->> (re-find tightpage-regexp out)
|
|
||||||
(drop 1)
|
(drop 1)
|
||||||
(map parse-long))]
|
(map parse-long))
|
||||||
(->> (re-seq preview-end-regexp out)
|
m-start (re-matcher preview-start-regexp out)
|
||||||
(map #(let [[d1 d2 d3] (map parse-long (drop 2 %))
|
m-end (re-matcher preview-end-regexp out)]
|
||||||
depth (/ (- d2 tp2)
|
(loop [acc []]
|
||||||
scale-divisor
|
(if-some [[_ snippet-ix] (re-find m-start)]
|
||||||
font-size)]
|
(let [r (re-find m-end)
|
||||||
{:depth depth
|
[_ snippet-ix* _ _ _] r
|
||||||
|
[d1 d2 d3] (->> r (drop 2) (map parse-long))
|
||||||
|
depth (/ (- d2 tp2) scale-divisor font-size)]
|
||||||
|
(assert (= snippet-ix snippet-ix*))
|
||||||
|
(recur (conj acc {:depth depth
|
||||||
:height (+ depth
|
:height (+ depth
|
||||||
(/ (+ d1 tp4)
|
(/ (+ d1 tp4)
|
||||||
scale-divisor
|
scale-divisor
|
||||||
font-size))
|
font-size))
|
||||||
:width (/ (+ d3 tp3 (- tp2))
|
:width (/ (+ d3 tp3 (- tp2))
|
||||||
scale-divisor
|
scale-divisor
|
||||||
font-size)})))))
|
font-size)})))
|
||||||
|
acc))))
|
||||||
|
|
||||||
|
(defn- invoke-xelatex [& {:keys [file output-dir]}]
|
||||||
|
(invoke
|
||||||
|
{:dir output-dir}
|
||||||
|
"xelatex" "-no-pdf" "-interaction" "nonstopmode"
|
||||||
|
"-output-directory" output-dir file))
|
||||||
|
|
||||||
;; 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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user