![在 tex4ht 中将显示方程保留为 tex 代码](https://linux22.com/image/351858/%E5%9C%A8%20tex4ht%20%E4%B8%AD%E5%B0%86%E6%98%BE%E7%A4%BA%E6%96%B9%E7%A8%8B%E4%BF%9D%E7%95%99%E4%B8%BA%20tex%20%E4%BB%A3%E7%A0%81.png)
我想保留方程不变(以供以后使用),我尝试借助Tex4ht 保持方程不变,它适用于内联方程,我需要保留显示方程,例如 $$...$$、\begin{equation}/\begin{align}.... 如何将这些环境配置为不变。
我的 MWE 是
\documentclass{book}
\usepackage{amsmath}
\begin{document}
text $a+b$ and \(a+b\alpha\beta\)
$$a+b$$
Sample text
\begin{equation}
\alpha+\beta
\end{equation}
Sample text
\begin{align}
&&\alpha+\beta\\
&&\gamma+\delta
\end{align}
Sample text
\end{document}
我的 cfg 文件是
\Preamble{html}
\newtoks\eqtoks
\def\AltMath#1${\eqtoks{$#1$}%
\HCode{\the\eqtoks}$}
\Configure{$}{}{}{\expandafter\AltMath}
\def\AltlMath#1\){\eqtoks{\(#1\)}%
\HCode{\the\eqtoks}}
\Configure{()}{\AltlMath}{}
\def\AltlDisplay#1\]{\eqtoks{\[#1\]}%
\HCode{\the\eqtoks}}
\Configure{[]}{\AltlDisplay}{}
\begin{document}
\EndPreamble
我通过调用命令进行编译htlatex filename "sample.cfg"
笔记:
当我使用选项时,xhtml
方程式htlatex filename "xhtml,sample.cfg"
会更改为 htmlcoding,而不使用 html/xhtml 选项时方程式不会发生变化。为什么当我使用选项 xhtml 时方程式会更改为 html 代码?
答案1
以下代码基于MathJax 支持包来自Helpers4ht捆:
\RequirePackage{verbatim,etoolbox}
\Preamble{xhtml}
\def\AltMathOne#1${\HCode{\detokenize{\(#1\)}}$}
\Configure{$}{}{}{\expandafter\AltMathOne}
\def\AltlMath#1\){\HCode{\detokenize{\(#1\)}}\)}
\Configure{()}{\AltlMath}{}
\def\AltlDisplay#1\]{\HCode{\detokenize{\[#1\]}}\]}
\Configure{[]}{\AltlDisplay}{}
\def\AltDisplayOne#1#2$${#1\HCode{\detokenize{$$#2$$}}$$}
\Configure{$$}{}{}{\AltDisplayOne}{}{}
\newcommand\VerbMath[1]{%
\ifcsdef{#1}{%
\renewenvironment{#1}{%
\NoFonts%
\Configure{verbatim}{}{} % suppress <br /> tags
\texttt{\string\begin\{#1\}}\HCode{\Hnewline}% we need to use \texttt to get all characters right
\verbatim}{\endverbatim\texttt{\string\end\{#1\}}\EndNoFonts}%
}{}%
}
\VerbMath{align}
\VerbMath{equation}
\VerbMath{equation*}
\begin{document}
\EndPreamble
\detokenize
用于逐字输出基本数学命令,而不是\toks
寄存器。似乎更容易处理。
对于数学环境,\VerbMath
引入了命令。它重新定义了环境以逐字打印其内容并\begin{env name} ... \end{...}
围绕它进行打印。它verbatim
为此使用了包。
这是您的代码的结果:
<!--l. 4--><p class="noindent" >text \(a+b\) and \(a+b\alpha \beta \)
$$a+b$$
Sample text \begin{equation}
\alpha+\beta
\end{equation}
Sample text \begin{align}
&&\alpha+\beta\\
&&\gamma+\delta
\end{align}
Sample text </p>