在 tex4ht 中将显示方程保留为 tex 代码

在 tex4ht 中将显示方程保留为 tex 代码

我想保留方程不变(以供以后使用),我尝试借助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} 

&#x0026;&#x0026;\alpha+\beta\\
&#x0026;&#x0026;\gamma+\delta
\end{align}
Sample text </p> 

相关内容