
我有一個文件,我想交替生成可列印的 PDF 文件xelatex
和 HTML 頁面htlatex
。預設情況下,htlatex
產生的只是非常難看的低解析度 PNG 方程式。我想要 SVG。
我願意不是想要使用MathJaX。我希望我的文件無需 JavaScript 即可運行,並且不希望用戶每次都必須渲染複雜的 TeX。
根據網上的建議,我將其放入c.cfg
...
\Preamble{ext=htm,charset="utf-8",p-width,pic-align}
\Configure{Picture}{.svg}
\makeatletter
\Configure{graphics*}
{svg}
{
{\Configure{Needs}{File: \[email protected]}\Needs{}}
\Picture[\csname a:GraphicsAlt\endcsname]{\csname Gin@base\endcsname.svg
\csname a:Gin-dim\endcsname}
}
\begin{document}
\EndPreamble
跑過...並且得到了這個htlatex
:。htlatex myfile "c"
pstoedit: Unsupported output format svg
嗯,這裡發生了什麼事?我的系統是否配置錯誤,正如這位 Debian bug 記者所認為的那樣?不pstoedit
。不再。
SVG 是 的共享軟體「插件」pstoedit
,並且沒有適用於我的作業系統 FreeBSD 的二進位。
我怎麼能擁有 SVG 數學,以及真正的 SVG 某些指令之間標記的任何其他內容,有htlatex
沒有pstoedit
?
我已經確定htlatex
通過首先生成 EPS 文件(例如zztest.eps
.然後它會嘗試pstoedit -f svg zztest.eps test0x.svg
。所以我想我應該嘗試另一個轉換器,但是其他轉換器,例如uniconvertor
和inkscape -z
,不能正確識別 LaTeX 的魔力,並將 EPS 放到一個巨大的畫布上(見下文)。另外,每次都必須執行另一個轉換器很麻煩,應該有一種方法來指定要使用哪個轉換器。
影像應該看起來像 default 的輸出htlatex
,就像 SVG 一樣。
答案1
我們真的應該pstoedit
用更好的東西來代替。事實上,我們現在已經不需要進行轉換然後再轉換的過程,因為DVI
現在PostScript
有直接轉換。SVG
DVI
SVG
您可以更改文件中圖像轉換的命令tex4ht.env
,但這個過程並不容易。相反,我會使用make4ht
,它是 的現代替代品,htlatex
支援建立文件。您可以在這些建置檔案中指定用於影像轉換的自訂命令。
將以下程式碼另存為test.mk4
:
Make:image("svg$","dvisvgm -n -p ${page} -c 1.4,1.4 -s ${source} > ${output}")
建置檔案是一個Lua腳本,Make:image
command提供了影像轉換的命令。該命令有兩個參數,第一個是配置的圖像格式(它是正則表達式,因此$
在最後),第二個是轉換命令的模板。有三個重要的參數,${source}
是檔案的名稱DVI
,${page}
是轉換影像的頁碼,${output}
是產生影像的名稱。
您可以使用命令編譯您的文檔
make4ht -c c.cfg test.tex
當建置檔案被命名為帶有副檔名的輸入 TeX 檔案時,會自動使用該建置檔案.mk4
。
關於數學品質的最後評論:最好使用mathml
格式,因為除了解析度之外,圖像還存在其他問題(可訪問性、字體大小之間不匹配、它們與基線不對齊,可能還有更多)。問題mathml
是瀏覽器支援很差,除了 Firefox 之外幾乎不存在。 Mathjax 為所有瀏覽器添加了良好的支持,但我完全理解您不喜歡這樣。可以在編譯時使用 Mathjax。此方法會替換mathml
為 portable HTML
,然後可以在沒有 Javascript 的情況下顯示。看Mathjax-節點。 Make4ht 的下一個版本將為該專案提供選項。