在 mathjax 模式下使用 \hspace 和星号时出现 tex4ht

在 mathjax 模式下使用 \hspace 和星号时出现 tex4ht

此 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} &amp;= -(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} &amp;= -(p_{i})' - \theta p_i \myspace \text {if} \hspace {10pt} i=n  \end {align*}
</p>

其呈现方式如下:

在此处输入图片描述

相关内容