summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/mandi/mandiexp.dtx
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2021-08-22 03:00:40 +0000
committerNorbert Preining <norbert@preining.info>2021-08-22 03:00:40 +0000
commit285f2e662f6dc37d227660aeb7624cac13004686 (patch)
treeb93624aed9f5c57b812296aa714763e9ef87fab6 /macros/latex/contrib/mandi/mandiexp.dtx
parentdd302372d8cdbe867c55bbea51f1f2a4842c3353 (diff)
CTAN sync 202108220300
Diffstat (limited to 'macros/latex/contrib/mandi/mandiexp.dtx')
-rw-r--r--macros/latex/contrib/mandi/mandiexp.dtx787
1 files changed, 787 insertions, 0 deletions
diff --git a/macros/latex/contrib/mandi/mandiexp.dtx b/macros/latex/contrib/mandi/mandiexp.dtx
new file mode 100644
index 0000000000..47c6745833
--- /dev/null
+++ b/macros/latex/contrib/mandi/mandiexp.dtx
@@ -0,0 +1,787 @@
+% \iffalse meta-comment
+% !TEX program = lualatexmk
+%
+% Copyright (C) 2021 by Paul J. Heafner <heafnerj@gmail.com>
+% ---------------------------------------------------------------------------
+% This work may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License, either version 1.3 of this license or (at
+% your option) any later version. The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX version
+% 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Paul J. Heafner.
+%
+% This work consists of the files mandi.dtx
+% mandistudent.dtx
+% mandiexp.dtx
+% mandi.ins
+% mandi.pdf
+% README.md
+%
+% and includes the derived files mandi.sty
+% mandistudent.sty
+% mandiexp.sty
+% vdemo.py
+% ---------------------------------------------------------------------------
+%
+% \fi
+%
+% \iffalse
+%
+%<*internal>
+\iffalse
+%</internal>
+%
+%<*internal>
+\fi
+\def\nameofplainTeX{plain}
+\ifx\fmtname\nameofplainTeX\else
+ \expandafter\begingroup
+\fi
+%</internal>
+%
+%<*internal>
+\usedir{tex/latex/mandi}
+\ifx\fmtname\nameofplainTeX
+ \expandafter\endbatchfile
+\else
+ \expandafter\endgroup
+\fi
+%</internal>
+%
+%<*driver>
+\ProvidesFile{mandiexp.dtx}
+\DisableCrossrefs % index descriptions only
+\PageIndex % index refers to page numbers
+\CodelineNumbered % number source lines
+\RecordChanges % record changes
+\begin{document} % main document
+ \DocInput{\jobname.dtx} %
+ \PrintIndex %
+\end{document} % end main document
+%</driver>
+% \fi
+%
+% \CheckSum{215}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+% ^^A DO NOT TRY TO COMPILE THIS DTX FILE BY ITSELF. IT WILL FAIL.
+%
+% \section{The \mandiexp\ Package}\setplace{sec:mandiexppkg}
+%
+% \mandi\ comes with an accessory package \mandiexp\
+% which includes commands specific to
+% \emph{Matter \& Interactions}.\footnote{See
+% \href{https://www.wiley.com/en-us/Matter+and+Interactions%2C+4th+Edition-p-9781118875865}
+% {\emph{Matter \& Interactions}} and
+% \url{https://matterandinteractions.org/} for details.}
+% The commands are primarily for typesetting
+% mathematical expressions used in that text. Note that \mandiexp\
+% requires, and loads, \mandi\ but \mandi\ doesn't require,
+% and doesn't load, \mandiexp.
+%
+% Load \mandiexp\ as you would any package in your preamble.
+% There are no package options.
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{dispListing*}{sidebyside=false,listing only}
+ \usepackage{mandiexp}
+\end{dispListing*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}{mandiexpversion}{}
+ Typesets the current version and build date.
+\end{docCommand}
+\begin{dispExample*}{sidebyside=false}
+ The version is \mandiexpversion\ and is a stable build.
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{The Fundamenal Principles}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = lhsmomentumprinciple,%
+ doc description = {LHS of delta form, bold vectors},%
+ },%
+ {%
+ doc name = rhsmomentumprinciple,%
+ doc description = {RHS of delta form, bold vectors},%
+ },%
+ {%
+ doc name = lhsmomentumprincipleupdate,%
+ doc description = {LHS of update form, bold vectors},%
+ },%
+ {%
+ doc name = rhsmomentumprincipleupdate,%
+ doc description = {RHS of update form, bold vectors},%
+ },%
+ {%
+ doc name = momentumprinciple,%
+ doc description = {delta form, bold vectors},%
+ },%
+ {%
+ doc name = momentumprincipleupdate,%
+ doc description = {update form, bold vectors},%
+ },%
+ {%
+ doc name = lhsmomentumprinciple*,%
+ doc description = {LHS of delta form, arrow vectors},%
+ },%
+ {%
+ doc name = rhsmomentumprinciple*,%
+ doc description = {RHS of delta form, arrow vectors},%
+ },%
+ {%
+ doc name = lhsmomentumprincipleupdate*,%
+ doc description = {LHS of update form, arrow vectors},%
+ },%
+ {%
+ doc name = rhsmomentumprincipleupdate*,%
+ doc description = {RHS of update form, arrow vectors},%
+ },%
+ {%
+ doc name = momentumprinciple*,%
+ doc description = {delta form, arrow vectors},%
+ },%
+ {%
+ doc name = momentumprincipleupdate*,%
+ doc description = {update form, arrow vectors},%
+ },%
+ }%
+ Variants of command for typesetting the momentum principle.
+ Use starred variants to get arrow notation for vectors.
+\end{docCommands}
+\begin{dispExample}
+ \( \lhsmomentumprinciple \) \\
+ \( \rhsmomentumprinciple \) \\
+ \( \lhsmomentumprincipleupdate \) \\
+ \( \rhsmomentumprincipleupdate \) \\
+ \( \momentumprinciple \) \\
+ \( \momentumprincipleupdate \) \\
+ \( \lhsmomentumprinciple* \) \\
+ \( \rhsmomentumprinciple* \) \\
+ \( \lhsmomentumprincipleupdate* \) \\
+ \( \rhsmomentumprincipleupdate* \) \\
+ \( \momentumprinciple* \) \\
+ \( \momentumprincipleupdate* \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = lhsenergyprinciple,%
+ doc description = {LHS of delta form},%
+ },%
+ {%
+ doc name = rhsenergyprinciple,%
+ doc parameter = \oarg{\(+\)process...},%
+ doc description = {RHS of delta form},%
+ },%
+ {%
+ doc name = lhsenergyprincipleupdate,%
+ doc description = {LHS of update form},%
+ },%
+ {%
+ doc name = rhsenergyprincipleupdate,%
+ doc parameter = \oarg{\(+\)process...},%
+ doc description = {RHS of update form},%
+ },%
+ {%
+ doc name = energyprinciple,%
+ doc parameter = \oarg{\(+\)process...},%
+ doc description = {delta form},%
+ },%
+ {%
+ doc name = energyprincipleupdate,%
+ doc parameter = \oarg{\(+\)process...},%
+ doc description = {update form},%
+ },%
+ }%
+ Variants of command for typesetting the energy principle.
+\end{docCommands}
+\begin{dispExample}
+ \( \lhsenergyprinciple \) \\
+ \( \rhsenergyprinciple \) \\
+ \( \rhsenergyprinciple[+Q] \) \\
+ \( \energyprinciple \) \\
+ \( \energyprinciple[+Q] \) \\
+ \( \lhsenergyprincipleupdate \) \\
+ \( \rhsenergyprincipleupdate \) \\
+ \( \rhsenergyprincipleupdate[+Q] \) \\
+ \( \energyprincipleupdate \) \\
+ \( \energyprincipleupdate[+Q] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = lhsangularmomentumprinciple,%
+ doc description = {LHS of delta form, bold vectors},%
+ },%
+ {%
+ doc name = rhsangularmomentumprinciple,%
+ doc description = {RHS of delta form, bold vectors},%
+ },%
+ {%
+ doc name = lhsangularmomentumprincipleupdate,%
+ doc description = {LHS of update form, bold vectors},%
+ },%
+ {%
+ doc name = rhsangularmomentumprincipleupdate,%
+ doc description = {RHS of update form, bold vectors},%
+ },%
+ {%
+ doc name = angularmomentumprinciple,%
+ doc description = {delta form, bold vectors},%
+ },%
+ {%
+ doc name = angularmomentumprincipleupdate,%
+ doc description = {update form, bold vectors},%
+ },%
+ {%
+ doc name = lhsangularmomentumprinciple*,%
+ doc description = {LHS of delta form, arrow vectors},%
+ },%
+ {%
+ doc name = rhsangularmomentumprinciple*,%
+ doc description = {RHS of delta form, arrow vectors},%
+ },%
+ {%
+ doc name = lhsangularmomentumprincipleupdate*,%
+ doc description = {LHS of update form, arrow vectors},%
+ },%
+ {%
+ doc name = rhsangularmomentumprincipleupdate*,%
+ doc description = {RHS of update form, arrow vectors},%
+ },%
+ {%
+ doc name = angularmomentumprinciple*,%
+ doc description = {delta form, arrow vectors},%
+ },%
+ {%
+ doc name = angularmomentumprincipleupdate*,%
+ doc description = {update form, arrow vectors},%
+ },%
+ }%
+ Variants of command for typesetting the angularmomentum principle.
+ Use starred variants to get arrow notation for vectors.
+\end{docCommands}
+\begin{dispExample}
+ \( \lhsangularmomentumprinciple \) \\
+ \( \rhsangularmomentumprinciple \) \\
+ \( \lhsangularmomentumprincipleupdate \) \\
+ \( \rhsangularmomentumprincipleupdate \) \\
+ \( \angularmomentumprinciple \) \\
+ \( \angularmomentumprincipleupdate \) \\
+ \( \lhsangularmomentumprinciple* \) \\
+ \( \rhsangularmomentumprinciple* \) \\
+ \( \lhsangularmomentumprincipleupdate* \) \\
+ \( \rhsangularmomentumprincipleupdate* \) \\
+ \( \angularmomentumprinciple* \) \\
+ \( \angularmomentumprincipleupdate* \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{Other Expressions}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{energyof}{\marg{label}\oarg{label}}
+ Generic symbol for the energy of some entity.
+\end{docCommand}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \energyof{\symup{electron}} \) \\
+ \( \energyof{\symup{electron}}[\symup{final}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{systemenergy}{\oarg{label}}
+ Symbol for system energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \systemenergy \) \\
+ \( \systemenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{particleenergy}{\oarg{label}}
+ Symbol for particle energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \particleenergy \) \\
+ \( \particleenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{restenergy}{\oarg{label}}
+ Symbol for rest energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \restenergy \) \\
+ \( \restenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{internalenergy}{\oarg{label}}
+ Symbol for internal energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \internalenergy \) \\
+ \( \internalenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{chemicalenergy}{\oarg{label}}
+ Symbol for chemical energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \chemicalenergy \) \\
+ \( \chemicalenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{thermalenergy}{\oarg{label}}
+ Symbol for thermal energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \thermalenergy \) \\
+ \( \thermalenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{photonenergy}{\oarg{label}}
+ Symbol for photon energy.
+\end{docCommand}
+\begin{dispExample}
+ \( \photonenergy \) \\
+ \( \photonenergy[\symup{final}] \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new=2021-02-13,%
+ doc parameter = \oarg{label},%
+ ]%
+ {%
+ {%
+ doc name = translationalkineticenergy,%
+ },%
+ {%
+ doc name = translationalkineticenergy*,%
+ },%
+ }%
+ Symbol for translational kinetic energy.
+ The starred variant gives \(E\) notation.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \translationalkineticenergy \) \\
+ \( \translationalkineticenergy[\symup{initial}] \) \\
+ \( \translationalkineticenergy* \) \\
+ \( \translationalkineticenergy*[\symup{initial}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new=2021-02-13,%
+ doc parameter = \oarg{label},%
+ ]%
+ {%
+ {%
+ doc name = rotationalkineticenergy,%
+ },%
+ {%
+ doc name = rotationalkineticenergy*,%
+ },%
+ }%
+ Symbol for rotational kinetic energy.
+ The starred variant gives \(E\) notation.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \rotationalkineticenergy \) \\
+ \( \rotationalkineticenergy[\symup{initial}] \) \\
+ \( \rotationalkineticenergy* \) \\
+ \( \rotationalkineticenergy*[\symup{initial}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new=2021-02-13,%
+ doc parameter = \oarg{label},%
+ ]%
+ {%
+ {%
+ doc name = vibrationalkineticenergy,%
+ },%
+ {%
+ doc name = vibrationalkineticenergy*,%
+ },%
+ }%
+ Symbol for vibrational kinetic energy.
+ The starred variant gives \(E\) notation.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \vibrationalkineticenergy \) \\
+ \( \vibrationalkineticenergy[\symup{initial}] \) \\
+ \( \vibrationalkineticenergy* \) \\
+ \( \vibrationalkineticenergy*[\symup{initial}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{gravitationalpotentialenergy}
+ {\oarg{label}}
+ Symbol for gravitational potential energy.
+\end{docCommand}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \gravitationalpotentialenergy \) \\
+ \( \gravitationalpotentialenergy[\symup{final}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{electricpotentialenergy}{\oarg{label}}
+ Symbol for electric potential energy.
+\end{docCommand}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \electricpotentialenergy \) \\
+ \( \electricpotentialenergy[\symup{final}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-13]{springpotentialenergy}{\oarg{label}}
+ Symbol for spring potential energy.
+\end{docCommand}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \springpotentialenergy \) \\
+ \( \springpotentialenergy[\symup{final}] \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \StopEventually{}
+%
+% \newgeometry{left=0.50in,right=0.50in,top=1.00in,bottom=1.00in}
+% \subsection{\mandiexp\ Source Code}
+%
+% \iffalse
+%<*package>
+% \fi
+% Definine the package version and date for global use, exploiting the fact
+% that in a \pkg{.sty} file there is now no need for |\makeatletter| and
+% |\makeatother|. This simplifies defining internal commands, with |@|
+% in the name, that are not for the user to know about.
+%
+% \begin{macrocode}
+\def\mandiexp@version{\mandi@version}
+\def\mandiexp@date{\mandi@date}
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+\DeclareRelease{v3.0.0}{2021-08-21}{mandiexp.sty}
+\DeclareCurrentRelease{v\mandi@version}{\mandi@date}
+\ProvidesPackage{mandiexp}
+ [\mandiexp@date\space v\mandiexp@version\space Macros for Matter & Interactions]
+% \end{macrocode}
+%
+% Define a convenient package version command.
+%
+% \begin{macrocode}
+\newcommand*{\mandiexpversion}{v\mandiexp@version\space dated \mandiexp@date}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{mandi}
+%
+\typeout{}%
+\typeout{mandiexp: You are using mandiexp \mandiexpversion.}
+\typeout{mandiexp: This package requires LuaLaTeX.}%
+\typeout{}%
+%
+% Commands specific to Matter & Interactions
+% The momentum principle
+\NewDocumentCommand{\lhsmomentumprinciple}{ s }{%
+ \Delta
+ \IfBooleanTF{#1}%
+ {\vec*{p}}%
+ {\vec{p}}%
+ _{\symup{sys}}%
+}%
+\NewDocumentCommand{\rhsmomentumprinciple}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{F}}%
+ {\vec{F}}%
+ _{\symup{sys,net}}\,\Delta t%
+}%
+\NewDocumentCommand{\lhsmomentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{p}}%
+ {\vec{p}}%
+ _{\symup{sys,final}}%
+}%
+\NewDocumentCommand{\rhsmomentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{p}}%
+ {\vec{p}}%
+ _{\symup{sys,initial}}+%
+ \IfBooleanTF{#1}%
+ {\vec*{F}}%
+ {\vec{F}}%
+ _{\symup{sys,net}}\,\Delta t%
+}%
+\NewDocumentCommand{\momentumprinciple}{ s }{%
+ \IfBooleanTF{#1}%
+ {\lhsmomentumprinciple* = \rhsmomentumprinciple*}%
+ {\lhsmomentumprinciple = \rhsmomentumprinciple}%
+}%
+\NewDocumentCommand{\momentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\lhsmomentumprincipleupdate* = \rhsmomentumprincipleupdate*}%
+ {\lhsmomentumprincipleupdate = \rhsmomentumprincipleupdate}%
+}%
+% The momentum principle
+\NewDocumentCommand{\lhsenergyprinciple}{}{%
+ \Delta E_{\symup{sys}}%
+}%
+\NewDocumentCommand{\rhsenergyprinciple}{ O{} }{%
+ W_{\symup{ext}}#1%
+}%
+\NewDocumentCommand{\lhsenergyprincipleupdate}{}{%
+ E_{\symup{sys,final}}%
+}%
+\NewDocumentCommand{\rhsenergyprincipleupdate}{ O{} }{%
+ E_{\symup{sys,initial}}+%
+ W_{\symup{ext}}#1%
+}%
+\NewDocumentCommand{\energyprinciple}{ O{} }{%
+ \lhsenergyprinciple = \rhsenergyprinciple[#1]%
+}%
+\NewDocumentCommand{\energyprincipleupdate}{ O{} }{%
+ \lhsenergyprincipleupdate = \rhsenergyprincipleupdate[#1]%
+}%
+% The angular momentum principle
+\NewDocumentCommand{\lhsangularmomentumprinciple}{ s }{%
+ \Delta
+ \IfBooleanTF{#1}%
+ {\vec*{L}}%
+ {\vec{L}}%
+ _{A\symup{,sys,net}}%
+}%
+\NewDocumentCommand{\rhsangularmomentumprinciple}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{\tau}}%
+ {\vec{\tau}}%
+ _{A\symup{,sys,net}}\,\Delta t%
+}%
+\NewDocumentCommand{\lhsangularmomentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{L}}%
+ {\vec{L}}%
+ _{A,\symup{sys,final}}%
+}%
+\NewDocumentCommand{\rhsangularmomentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\vec*{L}}%
+ {\vec{L}}%
+ _{A\symup{,sys,initial}}+%
+ \IfBooleanTF{#1}%
+ {\vec*{\tau}}%
+ {\vec{\tau}}%
+ _{A\symup{,sys,net}}\,\Delta t%
+}%
+\NewDocumentCommand{\angularmomentumprinciple}{ s }{%
+ \IfBooleanTF{#1}%
+ {\lhsangularmomentumprinciple* = \rhsangularmomentumprinciple*}%
+ {\lhsangularmomentumprinciple = \rhsangularmomentumprinciple}%
+}%
+\NewDocumentCommand{\angularmomentumprincipleupdate}{ s }{%
+ \IfBooleanTF{#1}%
+ {\lhsangularmomentumprincipleupdate* = \rhsangularmomentumprincipleupdate*}%
+ {\lhsangularmomentumprincipleupdate = \rhsangularmomentumprincipleupdate}%
+}%
+\NewDocumentCommand{\energyof}{ m o }{%
+ E_{#1\IfValueT{#2}{,#2}}%
+}%
+\NewDocumentCommand{\systemenergy}{ o }{%
+ E_{\symup{sys}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\particleenergy}{ o }{%
+ E_{\symup{particle}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\restenergy}{ o }{%
+ E_{\symup{rest}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\internalenergy}{ o }{%
+ E_{\symup{internal}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\chemicalenergy}{ o }{%
+ E_{\symup{chem}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\thermalenergy}{ o }{%
+ E_{\symup{therm}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\photonenergy}{ o }{%
+ E_{\symup{photon}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\translationalkineticenergy}{ s d[] }{%
+% d[] must be used because of the way consecutive optional
+% arguments are handled. See xparse docs for details.
+% See https://tex.stackexchange.com/a/569011/218142
+ \IfBooleanTF{#1}%
+ {E_\bgroup \symup{K}}%
+ {K_\bgroup\symup{trans}}%
+ \IfValueT{#2}{,#2}%
+ \egroup%
+}%
+\NewDocumentCommand{\rotationalkineticenergy}{ s d[] }{%
+% d[] must be used because of the way consecutive optional
+% arguments are handled. See xparse docs for details.
+% See https://tex.stackexchange.com/a/569011/218142
+ \IfBooleanTF{#1}%
+ {E_\bgroup}%
+ {K_\bgroup}%
+ \symup{rot}\IfValueT{#2}{,#2}%
+ \egroup%
+}%
+\NewDocumentCommand{\vibrationalkineticenergy}{ s d[] }{%
+% d[] must be used because of the way consecutive optional
+% arguments are handled. See xparse docs for details.
+% See https://tex.stackexchange.com/a/569011/218142
+ \IfBooleanTF{#1}%
+ {E_\bgroup}%
+ {K_\bgroup}%
+ \symup{vib}\IfValueT{#2}{,#2}%
+ \egroup%
+}%
+\NewDocumentCommand{\gravitationalpotentialenergy}{ o }{%
+ U_{\symup{g}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\electricpotentialenergy}{ o }{%
+ U_{\symup{e}\IfValueT{#1}{,#1}}%
+}%
+\NewDocumentCommand{\springpotentialenergy}{ o }{%
+ U_{\symup{s}\IfValueT{#1}{,#1}}%
+}%
+% \end{macrocode}
+%
+% \restoregeometry
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale