diff options
Diffstat (limited to 'Master/texmf-dist/source/latex/mandi/mandiexp.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/mandi/mandiexp.dtx | 787 |
1 files changed, 787 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/mandi/mandiexp.dtx b/Master/texmf-dist/source/latex/mandi/mandiexp.dtx new file mode 100644 index 00000000000..47c67458338 --- /dev/null +++ b/Master/texmf-dist/source/latex/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 |