![总结我的文档中所有方程式的表格](https://linux22.com/image/408570/%E6%80%BB%E7%BB%93%E6%88%91%E7%9A%84%E6%96%87%E6%A1%A3%E4%B8%AD%E6%89%80%E6%9C%89%E6%96%B9%E7%A8%8B%E5%BC%8F%E7%9A%84%E8%A1%A8%E6%A0%BC.png)
我该如何自动制作一个包含我的文档中的所有方程式及其标签的表格?
假设我得到了这个代码:
\documentclass[11pt,german,a4paper]{article}
\usepackage{german}
\newcommand{\tu}[1]{\textsuperscript{#1}}
\newcommand{\td}[1]{\textsubscript{#1}}
\newcommand{\nl}{\newline}
\begin{document}
\tableofcontents % Inhaltsverzeichnis erzeugen für jede Section
\newpage
\section{Die Maxwell'schen Gleichungen}
\subsection{Maxwellgleichung 1}
Elektrische Feldlinien beginnen an positiven und enden an negativen Ladungen. Deshalb wird ein B-Feld als Quellenfeld bezeichnet.
\begin{equation}
\label{eqn:Maxwell-1}
\epsilon\td{0} = \Sigma Q
\end{equation}
\subsection{Maxwellgleichung 2}
Es gibt keine magnetischen Ladungen/ Monopole; magnetische Felder sind deshalb immer Wirbelfelder mit in sich geschlossenen Feldlinien (auch quellenfrei genannt).
Auch das magnetische Feld eines Permanentmagneten ist ein Wirbelfeld. Es ist im Inneren des Magneten längs der Feldlinien von S nach N und außerhalb von N nach S gerichtet.
\begin{equation}
\label{eqn:Maxwell-2}
\oint \! BdA = 0
\end{equation}
\subsection{Maxwellgleichung 3}
Ein sich zeitlich änderndes magnetisches Feld generiert ein elektrisches Wirbelfeld, dessen geschlossene Feldlinien ringförmig die Feldlinien des sich ändernden magnetischen Feldes umgeben. \nl
Die zeitliche Änderung eines B-Feldes durch eine Fläche A hindurch ist gleich der Stärke des E-Feldes entlang des Randes der Fläche A.
\begin{equation}
\label{eqn:Maxwell-3}
\oint \! Eds = \frac{d}{dt} \oint \! BdA
\end{equation}
\subsection{Maxwellgleichung 4}
Ein sich änderndes elektrisches Feld oder ein Strom erzeugt ein magnetisches Wirbelfeld.
\begin{equation}
\label{eqn:Maxwell-4}
\oint \! Bds = \mu\td{0}\Sigma I + \mu\td{0} \epsilon\td{0} \frac{d}{dt} \oint \! EdA
\end{equation}
\end{document}
我偶然发现了一些看起来像的例子\tableofcontents
,但它们并不包含方程式。
谢谢 :)
答案1
这是基于我的回答根据标签调用/重复/复制方程式。编辑以自动构建表格行,并且可以选择指定计数器范围(不一定与标签号相等)。
提供\literallabel{}
将参数保存到已保存的方程式列表的功能,并假定您已处于数学模式。提供\literaleq
环境作为环境的一个版本equation
,其中的内容保存到已保存的方程式列表。
它允许从摘要中省略方程式。
\documentclass{article}
\usepackage{environ,pgffor}
\newcounter{literaleqctr}
\newcommand\literallabel[1]{%
\stepcounter{literaleqctr}%
\label{litlbl_\theliteraleqctr}
\expandafter\gdef\csname literaleq_\theliteraleqctr\endcsname{#1}
#1
}
\NewEnviron{literaleq}{%
\stepcounter{literaleqctr}%
\begin{equation}
\label{litlbl_\theliteraleqctr}%
\expandafter\gdef\csname
literaleq_\theliteraleqctr\expandafter\endcsname\expandafter{\BODY}
\BODY
\end{equation}%
}
\newcommand\theliteraleq[1]{$\csname literaleq_#1\endcsname$}
\newcommand\literalref[1]{\ref{litlbl_#1}}
\newtoks\eqsumtoks
\newcommand{\addtotoks}[2]{#1\expandafter{\the#1#2}}
\newcommand{\xaddtotoks}[2]{\expandafter\addtotoks\expandafter#1\expandafter{#2}}
\newcommand\eqsummarytoks[1][1,...,\theliteraleqctr]{%
\eqsumtoks{}%
\foreach\z in {#1}{%
\global\addtotoks\eqsumtoks{\theliteraleq}%
\global\xaddtotoks\eqsumtoks{\expandafter{\z} & \literalref}%
\global\xaddtotoks\eqsumtoks{\expandafter{\z}\\}%
}%
\the\eqsumtoks
}
\begin{document}
\begin{equation}
\literallabel{a + b = c} \quad\textrm{, explanatory text}
\end{equation}
Omit this next equation from the save list
\begin{equation}
y = Ax + by + C
\end{equation}
Now another
\begin{literaleq}
E = mc^2
\end{literaleq}
A third
\begin{literaleq}
F=ma
\end{literaleq}
\begin{table}[ht]
\caption{Equation Summary}\medskip
\centering
\begin{tabular}{cr}
\hline
Equation & Label \\
\hline
\eqsummarytoks[1,...,2]
\end{tabular}
\end{table}
\begin{table}[ht]
\caption{Equation Summary (cont.)}\medskip
\centering
\begin{tabular}{cr}
\hline
Equation & Label \\
\hline
\eqsummarytoks[3,...,3]
\end{tabular}
\end{table}
\end{document}
答案2
我希望这能回答你的问题,但不是以一种优雅的方式。这是你的 MWE 的修订版,谢谢你。
% listofeqprob.tex SE 529655 List of equations??
\documentclass[11pt,german,a4paper]{article}
\usepackage{german}
% setup a new listof Equations
\usepackage{tocloft}
\newcommand{\listequationname}{List of Equations}
\newlistof{eqnum}{leq}{\listequationname}
\newcommand{\tu}[1]{\textsuperscript{#1}}
\newcommand{\td}[1]{\textsubscript{#1}}
\newcommand{\nl}{\newline}
\begin{document}
\tableofcontents % Inhaltsverzeichnis erzeugen für jede Section
\newpage
\listofeqnum
\newpage
\section{Die Maxwell'schen Gleichungen}
\subsection{Maxwellgleichung 1}
Elektrische Feldlinien beginnen an positiven und enden an negativen Ladungen. Deshalb wird ein B-Feld als Quellenfeld bezeichnet.
% create a macro of the equation
\newcommand{\Maxwella}{\epsilon\td{0} = \Sigma Q}
% and print it just to show how it can be used
\par
\(\Maxwella\)
\par
\begin{equation}
\label{eqn:Maxwell-1}
% here is the equation text
\Maxwella
\end{equation}
% add the equation to the List of Ewuations
\addcontentsline{leq}{eqnum}%
{\protect\numberline{\ref{eqn:Maxwell-1}}\(\Maxwella\)}
\subsection{Maxwellgleichung 2}
Es gibt keine magnetischen Ladungen/ Monopole; magnetische Felder sind deshalb immer Wirbelfelder mit in sich geschlossenen Feldlinien (auch quellenfrei genannt).
Auch das magnetische Feld eines Permanentmagneten ist ein Wirbelfeld. Es ist im Inneren des Magneten längs der Feldlinien von S nach N und außerhalb von N nach S gerichtet.
\begin{equation}
\label{eqn:Maxwell-2}
\oint \! BdA = 0
\end{equation}
\subsection{Maxwellgleichung 3}
Ein sich zeitlich änderndes magnetisches Feld generiert ein elektrisches Wirbelfeld, dessen geschlossene Feldlinien ringförmig die Feldlinien des sich ändernden magnetischen Feldes umgeben. \nl
Die zeitliche Änderung eines B-Feldes durch eine Fläche A hindurch ist gleich der Stärke des E-Feldes entlang des Randes der Fläche A.
% and similarly for the third equation
\newcommand{\Maxwellc}{\oint \! Eds = \frac{d}{dt} \oint \! BdA}
\begin{equation}
\label{eqn:Maxwell-3}
\oint \! Eds = \frac{d}{dt} \oint \! BdA
\end{equation}
\addcontentsline{leq}{eqnum}%
{\protect\numberline{\ref{eqn:Maxwell-3}}\(\Maxwellc\)}%\par}
\subsection{Maxwellgleichung 4}
Ein sich änderndes elektrisches Feld oder ein Strom erzeugt ein magnetisches Wirbelfeld.
\begin{equation}
\label{eqn:Maxwell-4}
\oint \! Bds = \mu\td{0}\Sigma I + \mu\td{0} \epsilon\td{0} \frac{d}{dt} \oint \! EdA
\end{equation}
\end{document}
我希望这能有所帮助(请阅读tocloft
软件包文档以获取有关我所做工作的更多信息)。也许其他人会想出更有效的解决方案。
** 更高效/更优雅的答案 **
经过对这个问题的更多思考,我想到了一个我认为更好的答案。
\documentclass[11pt,a4paper]{article}
% setup a new listof Equations
\usepackage{tocloft}
\newcommand{\listequationname}{List of Equations}
\newlistof{equations}{leq}{\listequationname}
% \lequation{<label>}{<the maths>}
% typesets a labelled equation and adds it to the list of equations
\newcommand{\lequation}[2]{%
\begin{equation} \label{#1} #2 \end{equation}%
\addcontentsline{leq}{equations}{\protect\numberline{\ref{#1}}\(#2\)}%
% extra space between leq entries, if needed
\addtocontents{leq}{\protect\addvspace{10pt}}%
}
\newcommand{\tu}[1]{\textsuperscript{#1}}
\newcommand{\td}[1]{\textsubscript{#1}}
\newcommand{\nl}{\newline}
\begin{document}
\listofequations
\newpage
\lequation{eqn:Maxwell-1}{\epsilon\td{0} = \Sigma Q}
\lequation{eqn:Maxwell-3}{\oint \! Eds = \frac{d}{dt} \oint \! BdA}
\newpage
\lequation{eqn:Maxwell-5}%
{ \oint \! Bds = \mu\td{0}\Sigma I + \mu\td{0} \epsilon\td{0} \frac{d}{dt} \oint \! EdA}
The first equation is \ref{eqn:Maxwell-1}.
\end{document}
建立了方程式列表(我现在明白您要求的是表格,但我心里把它转换成了表格(内容)。lequation
定义了一个宏,它以 alabel
和 anequation
作为参数。它排版方程式,并将标签引用、方程式和页码添加到方程式列表中。在我看来,结果条目有点太近了,所以也有代码可以在方程式列表条目之间留出更多空间(明智使用)。正常环境equation
不变。
答案3
效果很好:
\documentclass[11pt,a4paper]{article}
% setup a new listof Equations
\usepackage{tocloft}
\usepackage{xstring}
\usepackage{amsmath}
\newcommand{\listequationname}{List of Equations}
\newlistof{equations}{leq}{\listequationname}
\renewcommand{\cftleqtitlefont}{\Large\bfseries} %\Large controls font size
% \lequation{<label>}{<the maths>}
% typesets a labelled equation and adds it to the list of equations
\newcommand{\lequation}[2]{%
\begin{equation} \label{#1} #2 \end{equation}%
\addcontentsline{leq}{equations}{\protect\numberline{\ref{#1}}\($#1$:#2\)} %$#1$ so that label is not printed in italics and spaces are now kept
% extra space between leq entries, if needed
\addtocontents{leq}{\protect\addvspace{10pt}}%
}
\newcommand{\tu}[1]{\textsuperscript{#1}} %just for comfort
\newcommand{\td}[1]{\textsubscript{#1}}
\newcommand{\nl}{\newline}
\begin{document}
\listofequations
\newpage
\lequation{Maxwell 1}{\epsilon\td{0} = \Sigma Q}
\lequation{Maxwell 3}{\oint \! Eds = \frac{d}{dt} \oint \! BdA}
\lequation{Maxwell-5}%
{ \oint \! Bds = \mu\td{0}\Sigma I + \mu\td{0} \epsilon\td{0} \frac{d}{dt} \oint \! EdA}
\end{document}