将文档中使用的方程式编译到方程式表中?

将文档中使用的方程式编译到方程式表中?

我正在尝试找到一种方法,获取文档中所有编号的方程式(即环境内的任何内容equation),并自动生成附加到文档末尾的方程式表。

我找到了几个已回答的问题(例如这里这里) 其中该tocloft包用于生成文档中使用的方程式的目录样式参考列表。这不是我想要做的。我希望在文档末尾附加一个新页面,其中排版有实际的方程式,旁边还有相应的方程式编号,最好可以选择将工作表放入 2 列或 3 列格式。

答案1

\equationpage 仅使用方程式环境列出方程式。您可以应用所需的任何列或字体格式。

注意:方程式* 环境不会保存在列表中。

\documentclass{article}
\usepackage{mathtools}
\usepackage{environ}

\newcounter{eqsaved}
\newcounter{eqused}

\let\oldequation=\equation% save original equation environment
\let\oldendequation=\endequation

\NewEnviron{myequation}{%
  \oldequation\BODY\oldendequation
  \stepcounter{eqsaved}%
  \global\expandafter\edef\csname myequationnumber\theeqsaved\endcsname{\theequation}%
  \global\expandafter\edef\csname myequation\theeqsaved\endcsname{\BODY}}

\let\equation=\myequation% replace equation environment
\let\endequation=\endmyequation

\newcommand{\equationpage}%
{\ifnum\value{eqused}<\value{eqsaved}\relax
  \loop\stepcounter{eqused}%
    \oldequation{\csname myequation\theeqused\endcsname}
    \tag{\csname myequationnumber\theeqused\endcsname}\oldendequation
  \ifnum\value{eqused}<\value{eqsaved}\relax\repeat
\fi}

\begin{document}
\begin{equation} x=a \end{equation}
\begin{equation} y=b \end{equation}

\newpage\equationpage
\end{document}

相关内容