我有一个文件,我想通过 交替生成可打印的 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 错误报告者所想的那样? 不。也许在某个时候pstoedit
SVG 转换是免费软件,但是不再。
SVG 是 的一个共享软件“插件” pstoedit
,并且没有适用于我的操作系统 FreeBSD 的二进制文件。
我怎样才能进行 SVG 数学运算,并且真正使用 SVG 标记某些命令之间的任何其他内容(带 和htlatex
不带pstoedit
)?
我已确定htlatex
内部工作时,首先生成一个 EPS 文件,例如zztest.eps
。然后尝试pstoedit -f svg zztest.eps test0x.svg
。所以我想我应该尝试另一个转换器,但其他转换器,例如uniconvertor
和inkscape -z
,不能正确识别 LaTeX 的魔力,并将 EPS 放到一个巨大的画布上(见下文)。此外,每次都必须运行另一个转换器很麻烦,应该有一种方法可以指定要使用哪个转换器。
该图像应该看起来像默认的输出htlatex
,就像 SVG 一样。
答案1
我们确实应该用更好的东西来代替。实际上,我们转换为然后转换为pstoedit
的过程今天并不是真正必要的,因为现在有直接的do转换器。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
命令提供了图片转换的命令。这个命令有两个参数,第一个是配置的图片格式(它是一个正则表达式,因此$
在末尾),第二个是转换命令的模板。有三个重要参数,${source}
分别是文件的名称DVI
、${page}
转换后图片的页码和${output}
生成的图片的名称。
您可以使用命令编译您的文档
make4ht -c c.cfg test.tex
当构建文件被命名为带有扩展名的输入 TeX 文件时,会自动使用构建文件.mk4
。
关于数学质量的最后一点评论:最好使用mathml
格式,因为图像除了分辨率之外还有其他问题(可访问性、字体大小不匹配、与基线不一致,可能还有很多其他问题)。问题是mathml
浏览器支持不佳,除了 Firefox 之外几乎不存在。Mathjax 为所有浏览器提供了良好的支持,但我完全理解你不喜欢这样。可以在编译时使用 Mathjax。此方法用mathml
可移植的替代HTML
,然后可以在没有 Javascript 的情况下显示。请参阅Mathjax 节点。Make4ht 的下一版本将为该项目提供选项。