重新定义方程环境以呈现逐字源而不是数学

重新定义方程环境以呈现逐字源而不是数学

语境:我正在尝试编写一个包,它将重新定义各种 (Xe)LaTeX 宏,以便自动从呈现的 PDF 文档中复制文本并将其粘贴到纯文本文档中(只需进行最少的修改),以便在 git repo 中进行包含/版本控制。多年来,我一直尝试使用pandocet al。但这不符合要求,因为我严重依赖biber+ biblatex。事实证明,一旦您将字体更改为没有连字符的“愚蠢”字体并将页面尺寸更改为使用非常大的宽度,从 macOS Preview 复制和粘贴的效果就会出奇地好。

我的问题与(编号)方程有关。我想以equation某种方式重新定义环境,以便它不渲染数学,而是显示源代码,使用类似\verb/ 的东西verbatim。理想情况下,这不需要以任何方式修改原始源代码(重新定义应该在包中进行,以便源代码仍然使用正常\begin{equation}...\end{equation}

更新:

我尝试过这个:

\let\oldequation\equation
\let\endoldequation\endequation
\renewenvironment{equation}{%
\begin{oldequation}%
\begin{verbatim}%
}{%
\end{verbatim}%
\end{oldequation}%
}

但我收到以下错误:

./manuscript.tex:414: Missing $ inserted.
<inserted text> 
                $
l.414 \begin{equation}

不确定如何解决这个问题?我对底层 TeX 的了解很少。

答案1

下面的代码足以满足我的目的。它首先对方程的内容进行去标记化,以可重现的方式将其显示为纯文本,然后创建一个包含原始内容的编号方程,隐藏在虚拟框中。

\usepackage{environ}

\let\oldequation\equation
\let\endoldequation\endequation

\NewEnviron{newequation}{%
\noindent%
-- BEGIN EQUATION --\\%
\detokenize\expandafter{\BODY}\\%
-- END EQUATION --%
\begin{oldequation}%
\setbox0\vbox{\ensuremath{\BODY}}%
\end{oldequation}%
}

\let\equation\newequation
\let\endequation\endnewequation

相关内容