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 错误报告者所想的那样? 不。也许在某个时候pstoeditSVG 转换是免费软件,但是不再

SVG 是 的一个共享软件“插件” pstoedit,并且没有适用于我的操作系统 FreeBSD 的二进制文件。

我怎样才能进行 SVG 数学运算,并且真正使用 SVG 标记某些命令之间的任何其他内容(带 和htlatex不带pstoedit)?

我已确定htlatex内部工作时,首先生成一个 EPS 文件,例如zztest.eps。然后尝试pstoedit -f svg zztest.eps test0x.svg。所以我想我应该尝试另一个转换器,但其他转换器,例如uniconvertorinkscape -z,不能正确识别 LaTeX 的魔力,并将 EPS 放到一个巨大的画布上(见下文)。此外,每次都必须运行另一个转换器很麻烦,应该有一种方法可以指定要使用哪个转换器。

在此处输入图片描述

该图像应该看起来像默认的输出htlatex,就像 SVG 一样。

在此处输入图片描述

答案1

我们确实应该用更好的东西来代替。实际上,我们转换为然后转换为pstoedit的过程今天并不是真正必要的,因为现在有直接的do转换器。DVIPostScriptSVGDVISVG

您可以在文件中更改图像转换命令tex4ht.env,但这个过程并不容易。相反,我会使用,它是支持构建文件的make4ht现代替代品。您可以在这些构建文件中指定用于图像转换的自定义命令。htlatex

将以下代码保存为test.mk4

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

构建文件是一个 Lua 脚本,Make:image命令提供了图片转换的命令。这个命令有两个参数,第一个是配置的图片格式(它是一个正则表达式,因此$在末尾),第二个是转换命令的模板。有三个重要参数,${source}分别是文件的名称DVI${page}转换后图片的页码和${output}生成的图片的名称。

您可以使用命令编译您的文档

make4ht -c c.cfg test.tex

当构建文件被命名为带有扩展名的输入 TeX 文件时,会自动使用构建文件.mk4

关于数学质量的最后一点评论:最好使用mathml格式,因为图像除了分辨率之外还有其他问题(可访问性、字体大小不匹配、与基线不一致,可能还有很多其他问题)。问题是mathml浏览器支持不佳,除了 Firefox 之外几乎不存在。Mathjax 为所有浏览器提供了良好的支持,但我完全理解你不喜欢这样。可以在编译时使用 Mathjax。此方法用mathml可移植的替代HTML,然后可以在没有 Javascript 的情况下显示。请参阅Mathjax 节点。Make4ht 的下一版本将为该项目提供选项。

相关内容