Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- begin{align}
- T(x) &= ae^{-frac{(x-b)^2}{2c^2}} \
- frac{1}{2} < a &leq 1 label{eq:m1va} \
- b &= SI{25}{degreeCelsius} label{eq:m1vb} \
- c &= frac{5}{sqrt{2 ln{2a}}} > 0 label{eq:m1vc}
- end{align}
- aligneqs{Model 1: Condition 1}{eq:m1va}
- aligneqs{Model 1: Condition 2}{eq:m1vb}
- aligneqs{Model 1: Condition 3}{eq:m1vc}
- usepackage{tocloft}
- newcommand{loename}{List of equations}
- newlistof{equations}{equ}{loename}
- newcommand{aligneqs}[2]% <=== HERE
- {addcontentsline{equ}{equations}{protectnumberline{ref{#2}}#1}}
- InsertEquation{T(x) &= ae^{-frac{(x-b)^2}{2c^2}}}{Model 1: Base formula}{eq:m1gauss}
- InsertEquation{frac{1}{2} < a &leq 1}{Model 1: Condition 1}{eq:m1va}
- InsertEquation{b &= SI{25}{degreeCelsius}}{Model 1: Condition 2}{eq:m1vb}
- InsertEquation{c &= frac{5}{sqrt{2 ln{2a}}} > 0}{Model 1: Condition 3}{eq:m1vc}
- GenerateAlign
- documentclass{article}
- usepackage{xparse}
- usepackage{etoolbox}
- usepackage{amsmath}
- usepackage{tocloft}
- usepackage{blindtext}
- % Add a new list for equations
- newcommand{loename}{List of equations}
- newlistof{equations}{equ}{loename}
- newcommand{aligneqs}[2]%
- {addcontentsline{equ}{equations}{protectnumberline{ref{#2}}#1}}
- setlength{cftequationsnumwidth}{2.5em}
- % https://tex.stackexchange.com/q/451/53787
- % https://tex.stackexchange.com/q/16883/53787
- makeatletter
- % Temporary lists: store equations, references, and deferred commands
- gdeflisteqs{}
- gdeflistrefs{}
- gdeflistdefers{}
- newcounter{DeferredCommands}
- % Converts a number to Roman notation
- % https://tex.stackexchange.com/q/9718/53787
- % https://tex.stackexchange.com/q/23487/53787
- newcommand*{rom}[1]{expandafter@slowromancapromannumeral #1@}
- % Add an element to a list
- defaddtolist#1#2{%
- g@addto@macro{#1}{#2,}
- }
- % Add an element to a list, expanding it first
- % https://tex.stackexchange.com/q/67367/53787
- defaddexpandedtolist#1#2{%
- edefATL@temp{noexpandg@addto@macronoexpand#1{noexpand#2,}}
- ATL@temp
- }
- % Defers the execution of a command, storing it in a list
- DeclareDocumentCommand{DeferCommand}{mm}{%
- stepcounter{DeferredCommands}
- expandafterdefcsname DC@rom{arabic{DeferredCommands}}endcsname{#2}
- addexpandedtolist{#1}{DC@rom{arabic{DeferredCommands}}}
- }
- % Inserts an equation, its reference, and its TOC line to their
- % respective lists
- DeclareDocumentCommand{InsertEquation}{mmm}{%
- addtolist{listeqs}{#1}
- addtolist{listrefs}{#3}
- DeferCommand{listdefers}{aligneqs{#2}{#3}}
- }
- % Execute all the deferred commands of the given list
- % https://tex.stackexchange.com/q/28787/53787
- DeclareDocumentCommand{DeferredExecute}{m}{%
- @for i:=#1 do{@nameuse{i}}
- setcounter{DeferredCommands}{0}
- let#1@empty
- }
- % http://handyfloss.net/2007.08/latex-programming-how-to-implement-conditionals/
- newcounter{GArepnum}
- newififGA@first
- % Put all the equations inside a macro (first traversal) along
- % with placeholders for labels, substitute the placeholders with
- % their respective labels (second traversal), and show everything
- % inside an "align". After it, execute all the deferred commands
- % (stored when inserting an equation) that add the corresponding
- % lines to the list of equations.
- DeclareDocumentCommand{GenerateAlign}{}{%
- defGA@ans{}
- setcounter{GArepnum}{1}
- GA@firsttrue
- @for i:=listeqs do{%
- % https://tex.stackexchange.com/q/53068/53787
- ifxiemptyelse
- ifGA@first
- GA@firstfalse
- else
- % https://tex.stackexchange.com/q/74707/53787
- edefGA@temp{noexpandg@addto@macronoexpandGA@ans{noexpand\}}
- GA@temp
- fi
- edefGA@temp{noexpandg@addto@macronoexpandGA@ans{i ???}}
- GA@temp
- stepcounter{GArepnum}
- fi
- }
- @for j:=listrefs do{%
- ifxjemptyelse
- % https://tex.stackexchange.com/q/104506/53787
- begingroupedefGA@perform{endgroup
- noexpandpatchcmd
- {noexpandGA@ans}%
- {noexpand ???}%
- {noexpandlabel{unexpandedexpandafter{j}}}%
- {}%
- {}%
- }%
- GA@perform
- fi
- }
- begin{align}
- GA@ans
- end{align}
- DeferredExecute{listdefers}
- letlisteqs@empty
- letlistrefs@empty
- }
- makeatother
- begin{document}
- listofequations
- clearpage
- section*{Important formulas}
- blindtext
- InsertEquation{a^2 + b^2 &= c^2}{Pythagorean theorem}{eq:first}
- Following is eq.~ref{eq:first}, depicting Pythagora's theorem:
- GenerateAlign
- Blindtext
- InsertEquation{e &= mc^2}{Einstein Relativity theory}{eq:second}
- Following is eq.~ref{eq:second}, depicting Einstein's relativity theory:
- GenerateAlign
- blindtext
- end{document}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement