我发现make4ht
/tex4ht
使用 unicode + dvi/svg 图像的组合来以 HTML 形式表示我的文档。
我认为,如果我可以选择用 DVI/SVG 来表示所有数学运算(即,或环境内部的任何内容),$
那么$$
对我来说会更有用。amsmath
但我不清楚我是否可以做到这一点make4ht
?
答案1
奇怪的是,我写了一个TeX4ht 文档中的图片数学部分就在昨天。
您可以使用各种TeX4ht 选项请求将附加数学环境转换为图片。查看各种pic-...
选项。
图片数学的一个问题是内联元素的垂直对齐。如果你使用类似的东西$ a = \sqrt{b^2}$
,a
字符将放置在比周围文本更高的位置。这是一个众所周知的问题,但我刚刚找到了一个解决方案,这要归功于这个配置文件:
\Preamble{xhtml,pic-m,pic-equation,svg}
\ExplSyntaxOn
\Configure{PicMath}{\setbox0=}
{\Css{img[src="\PictureFile"]{vertical-align:-\fp_eval:n{ \dim_to_fp:n{\dp0}/(\dim_to_fp:n{\ht0}+\dim_to_fp:n{\dp0}) * 100}\%;}}
\box0}{}
{ class="math" }
\ExplSyntaxOff
\begin{document}
\EndPreamble
需要\Preamble{xhtml,pic-m,pic-equation,svg}
为内联数学和方程式创建图片,还需要格式svg
。然后我们使用PicMath
对所有内联数学都调用的配置,首先在框内排版数学。然后我们可以使用此框来测量正确的垂直对齐。我使用的公式是:box depth / total box height * 100
。结果值可以在 CSS 中使用。您将在 CSS 文件中得到类似以下内容:
img[src="sample0x.svg"]{vertical-align:-11.56156598541914%}
以下是示例文件:
\documentclass{article}
\usepackage{amsmath}
\usepackage{preview}
\begin{document}
Hello $a=\sqrt{b}$, and other text xyz \(a=\sqrt{b}\)
$$
a = \frac{a}{b}
$$
\begin{equation}
a = \frac{a}{b}
\end{equation}
\end{document}
编译使用:
$ make4ht -c config.cfg sample.tex
这是渲染后的页面: