make4ht 无法在 mathjax 模式下呈现新命令

make4ht 无法在 mathjax 模式下呈现新命令

我使用文件这里,然后我运行一个命令

make4ht-uf html5 maths.tex“mathjax”

但结果不是我想要的。 在此处输入图片描述 我发现有些解决方案说我必须在 cfg 文件中添加一些内容,但我不想这样做,因为我觉得这很复杂。如果我在 tex 文件中定义这么多命令和环境,这对我来说是一项很大的工作。那么有没有什么简单的方法可以解决这个问题?

答案1

编辑:现在可以使用该\Configure{MathJaxMacros}命令。请参阅MathJax 操作方法举个例子。


似乎您可以将宏定义放在 HTML 页面的开头,并且这些宏将在 MathJax 的所有后续数学环境中可用。因此,我们可以尝试使用 TeX4ht 在 HTML 文件中逐字逐句地包含自定义宏的文件。

尝试以下文件myconfig.cfg

\Preamble{xhtml,mathjax}
\Configure{@BODY}{\IgnorePar
\HCode{\detokenize{\(}}
\special{t4ht*<mymacros.tex}
\HCode{\detokenize{\)}}
\par
}
\begin{document}
\EndPreamble

它需要命令中的 MathJax 处理使用mathjax选项\Preamble。在元素\Configure{@BODY}后立即插入代码<body>。我们使用禁用可能的虚假段落\IgnorePar。宏必须括在\(...中\)才能被 MathJax 处理。\detokenize将阻止它们的扩展,我们需要将它们逐字逐句地发送到 HTML 文件。\special{t4ht*<filename}指令将文件逐字逐句地包含在生成的文件中。

以下是示例mymacros.tex文件:

\def\RR{{\bf R}}
\newcommand\bold[1]{{\bf #1}}

我们还可以引入一个虚拟mymacros.sty包,这样它们就可以在 TeX 文件中使用\usepackage。我不将宏定义放在 sty 文件中的原因是 MathJax 不支持\ProvidesPackage\endinput,因此它们最终会在 HTML 文件中呈现。

\ProvidesPackage{mymacros}
\input{mymacros.tex}
\endinput

TeX 示例:

\documentclass{article}
\usepackage{mymacros}
\begin{document}

Hello $\RR = \bold{x}$
\end{document}

生成的 HTML:

<body>
   \( \def\RR{{\bf R}}
\def\bold#1{{\bf #1}}
 \)
<!-- l. 5 --><p class='indent'>   Hello \(\RR = \bold{x}\) </p> 
</body> 

并呈现页面:

在此处输入图片描述

相关内容