我使用文件这里,然后我运行一个命令
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>
并呈现页面: