语境:我正在尝试编写一个包,它将重新定义各种 (Xe)LaTeX 宏,以便自动从呈现的 PDF 文档中复制文本并将其粘贴到纯文本文档中(只需进行最少的修改),以便在 git repo 中进行包含/版本控制。多年来,我一直尝试使用pandoc
et 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