此 MWE
\documentclass[letterpaper,12pt,reqno]{amsart}
\begin{document}
\begin{align*}
p_{i-1} &= -(p_{i})' - \theta p_i \hspace*{5pt} \text{if} \hspace{10pt} i=n
\end{align*}
\end{document}
在 pdflatex 中编译没有问题并生成
但是在编译时使用
make4ht -ulm default foo.tex "mathjax,htm" "-cunihtf -utf8"
HTML 如下所示,不会产生任何错误
删除星号后\hspace
一切正常。所以现在,我删除了星号\hspace
。
原始 HTML 是
<!DOCTYPE html>
<html lang='en-US' xml:lang='en-US'>
<head><title></title>
<meta charset='utf-8' />
<meta content='TeX4ht (https://tug.org/tex4ht/)' name='generator' />
<meta content='width=device-width,initial-scale=1' name='viewport' />
<link href='foo.css' rel='stylesheet' type='text/css' />
<meta content='foo.tex' name='src' />
<script>window.MathJax = { tex: { tags: "ams", }, }; </script>
<script async='async' id='MathJax-script' src='https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-chtml-full.js' type='text/javascript'></script>
</head><body>
<!-- l. 7 --><p class='noindent'>\begin {align*} p_{i-1} &= -(p_{i})' - \theta p_i \hspace *{5pt} \text {if} \hspace {10pt} i=n \end {align*}
</p>
</body>
</html>
这是 tex4ht 问题还是 mathjax 问题?是否需要在 tex4ht mathjax .cfg 中添加特殊配置以避免此错误?
TL 2022
答案1
有几个问题。第一个问题是HTML 输出中*
的字符被分开\hspace
,这是由去标记化过程引起的。但即使我们尝试修复它并删除虚假空格,也无济于事。MathJax 不知道这个命令,所以它不会显示你的等式。我甚至无法定义带星号的命令,似乎无法为 MathJax 轻松定义它们。
我会使用自定义命令。我曾写过如何配置 MathJax 的各种方法因此请阅读本节。
TeX4ht 源中一个有趣的变化是,现在可以将带有宏定义的文件包含到 MathJax 中。这样,您就可以拥有一个带有自定义命令的文件,该文件既可用于 PDF 编译,也可用于 MathJax。此文件只需包含宏定义,不能包含任何其他 LaTeX 命令。
以下是更新示例文件:
\documentclass[letterpaper,12pt,reqno]{amsart}
\input{mymacros}
\begin{document}
\begin{align*}
p_{i-1} &= -(p_{i})' - \theta p_i \myspace \text{if} \hspace{10pt} i=n
\end{align*}
\end{document}
您可以看到它使用了\myspace
命令,并且包含mymacros
文件。该文件如下所示:
\newcommand\myspace{\quad}
现在您需要告诉 TeX4ht 将此文件用于 MathJax,这可以使用新MathJaxMacros
配置来完成:
\Preamble{xhtml}
\Configure{MathJaxMacros}{mymacros.tex}
\begin{document}
\EndPreamble
它生成以下 HTML:
<!-- l. 4 --><p class='noindent'>\(\newcommand\myspace{\quad}
\) \begin {align*} p_{i-1} &= -(p_{i})' - \theta p_i \myspace \text {if} \hspace {10pt} i=n \end {align*}
</p>
其呈现方式如下: