我正在用 LateX 写课本笔记。我在写段落时,会边写边插入方程式。
我想以某种方式将所有编号的方程式按照编号的顺序显示在文档末尾。有没有办法在 LaTex 中使用我可能不知道的未知命令轻松完成此操作???
答案1
这个解决方案大量借鉴了 David Carlisle 的解决方案将框的内容写入文件
这个想法是更新equation
环境,以便它不仅输出到页面,而且其内容也被写入到vbox
文档末尾输出的页面。
您可以轻松地将这个想法扩展到其他环境(例如align
)。
\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}
% to store the contents of a SINGLE equation
\newsavebox{\mybox}
% to store the contents of ALL of the equations
\newbox\savedqns
\setbox\savedqns\vbox{}
% we're going to renew the equation environment
% using the original definition as a base
\let\oldeqn\equation
\let\oldendeqn\endequation
% renew the equation environment
\renewenvironment{equation}{%
\begin{lrbox}{\mybox}%
\begin{minipage}{\linewidth}%
\oldeqn%\begin{equation*}
}
{%
\oldendeqn%\end{equation*}
\end{minipage}%
\end{lrbox}%
% output the box to the page
\vspace{\abovedisplayskip}%
\noindent\usebox{\mybox}%
\vspace{\belowdisplayskip}%
% save the equations for later
\global\setbox\savedqns\vbox{%
\unvbox\savedqns
\bigskip
\filbreak
\noindent\usebox{\mybox}}
}
\begin{document}
\lipsum[1]
\begin{equation}
y=mx+b
\end{equation}
\lipsum[2]
\begin{equation}
y=ax^2+bx+c
\end{equation}
\lipsum[1]
\begin{equation*}
y=mx+b
\end{equation*}
\lipsum[1]
\section*{Copied equations}
\unvbox\savedqns
\end{document}