htlatex 中的 SVG 數學/其他符號:使用 pstoedit 以外的其他符號

htlatex 中的 SVG 數學/其他符號:使用 pstoedit 以外的其他符號

我有一個文件,我想交替生成可列印的 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。所以我想我應該嘗試另一個轉換器,但是其他轉換器,例如uniconvertorinkscape -z,不能正確識別 LaTeX 的魔力,並將 EPS 放到一個巨大的畫布上(見下文)。另外,每次都必須執行另一個轉換器很麻煩,應該有一種方法來指定要使用哪個轉換器。

在此輸入影像描述

影像應該看起來像 default 的輸出htlatex,就像 SVG 一樣。

在此輸入影像描述

答案1

我們真的應該pstoedit用更好的東西來代替。事實上,我們現在已經不需要進行轉換然後再轉換的過程,因為DVI現在PostScript有直接轉換。SVGDVISVG

您可以更改文件中圖像轉換的命令tex4ht.env,但這個過程並不容易。相反,我會使用make4ht,它是 的現代替代品,htlatex支援建立文件。您可以在這些建置檔案中指定用於影像轉換的自訂命令。

將以下程式碼另存為test.mk4

Make:image("svg$","dvisvgm -n -p ${page} -c 1.4,1.4 -s ${source} > ${output}")

建置檔案是一個Lua腳本,Make:imagecommand提供了影像轉換的命令。該命令有兩個參數,第一個是配置的圖像格式(它是正則表達式,因此$在最後),第二個是轉換命令的模板。有三個重要的參數,${source}是檔案的名稱DVI${page}是轉換影像的頁碼,${output}是產生影像的名稱。

您可以使用命令編譯您的文檔

make4ht -c c.cfg test.tex

當建置檔案被命名為帶有副檔名的輸入 TeX 檔案時,會自動使用該建置檔案.mk4

關於數學品質的最後評論:最好使用mathml格式,因為除了解析度之外,圖像還存在其他問題(可訪問性、字體大小之間不匹配、它們與基線不對齊,可能還有更多)。問題mathml是瀏覽器支援很差,除了 Firefox 之外幾乎不存在。 Mathjax 為所有瀏覽器添加了良好的支持,但我完全理解您不喜歡這樣。可以在編譯時使用 Mathjax。此方法會替換mathml為 portable HTML,然後可以在沒有 Javascript 的情況下顯示。看Mathjax-節點。 Make4ht 的下一個版本將為該專案提供選項。

相關內容