我如何强制“make4ht”/“tex4ht”将所有数学运算输出为 dvi/svg?

我如何强制“make4ht”/“tex4ht”将所有数学运算输出为 dvi/svg?

我发现make4ht/tex4ht使用 unicode + dvi/svg 图像的组合来以 HTML 形式表示我的文档。

我认为,如果我可以选择用 DVI/SVG 来表示所有数学运算(即,或环境内部的任何内容),$那么$$对我来说会更有用。amsmath

但我不清楚我是否可以做到这一点make4ht

密切相关:将 LaTeX 转换为 HTML 但保留方程式为 LaTeX

答案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

这是渲染后的页面:

在此处输入图片描述

相关内容