% \iffalse meta-comment % !TEX program = lualatexmk % % Copyright (C) 2021-2024 by Paul J. Heafner % --------------------------------------------------------------------------- % This work may be distributed and/or modified under the conditions of the % LaTeX Project Public License, either version 1.3c of this license or (at % your option) any later version. The latest version of this license is in % https://www.latex-project.org/lppl.txt % and version 1.3c 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 (not needed) % --------------------------------------------------------------------------- % %<*internal> \iffalse % % %<*internal> \fi \def\nameofplainTeX{plain} \ifx\fmtname\nameofplainTeX\else \expandafter\begingroup \fi % % %<*internal> \usedir{tex/latex/mandi} \ifx\fmtname\nameofplainTeX \expandafter\endbatchfile \else \expandafter\endgroup \fi % % %<*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 % % \fi % % ^^A DO NOT TRY TO COMPILE THIS DTX FILE BY ITSELF. IT WILL FAIL. % % \section{The \mandiexp{} Package}\setplace{sec:mandic} % % \mandi{} comes with an accessory package \mandiexp{} % which extends \mandi{} with 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. \mandiexp{} % requires, and loads, \mandi{} but \mandi{} doesn't require, % and doesn't load, \mandiexp. \mandiexp{} requires the \cs{vec*} % command and so loads \mandistudent{} if it has not already been % loaded. % % 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 % %\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 % %\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 % %\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 % %\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 angular momentum 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 % %\fi % % \subsection{Other Symbols} % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\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 % %\fi % % \MaybeStop{} % % \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. % % \changes{v3.1.0}{2022-01-27} % {\linktoplace{sec:mandic}{mandiexp} Version number works} % \begin{macrocode} \def\mandiexp@version{3.2.2} \def\mandiexp@date{2024-02-27} \NeedsTeXFormat{LaTeX2e}[2020-02-02] \DeclareRelease{v3.2.2}{2024-02-27}{mandiexp.sty} \DeclareCurrentRelease{v\mandiexp@version}{\mandiexp@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} % % We need \mandi{} to load \pkg{mathtools} and \pkg{unicode-math}. % % \begin{macrocode} \IfPackageLoadedTF{mandi}% {}% {% \RequirePackage{mandi}% }% % \end{macrocode} % % \changes{v3.2.0}{2023-08-01} % {\linktoplace{sec:mandic}{mandiexp} \pkg{mandistudent} is loaded for \cs{vec*}} % % We need \mandistudent{} for the new \cs{vec*} command. % % \begin{macrocode} \IfPackageLoadedTF{mandistudent}% {}% {% \RequirePackage{mandistudent}% }% % \end{macrocode} % % Load \pkg{xparse} if necessary. % % \begin{macrocode} \IfFormatAtLeastTF{2020-10-01}% {}% {\RequirePackage{xparse}}% % \end{macrocode} % % We require the \lualatex{} engine. % % \begin{macrocode} \RequireLuaTeX % \end{macrocode} % % \begin{macrocode} \typeout{}% \typeout{mandiexp: You are using mandiexp \mandiexpversion.} \typeout{mandiexp: This package requires LuaLaTeX.}% \typeout{}% % \end{macrocode} % % The momentum principle's lefthand and righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsmomentumprinciple}{ s }% {% \Delta \IfBooleanTF{#1}% {% \vec*{p} }% {% \vec{p}% }% \sb{\symup{sys}}% }% \NewDocumentCommand{\rhsmomentumprinciple}{ s }% {% \IfBooleanTF{#1}% {% \vec*{F}% }% {% \vec{F}% }% \sb{\symup{sys,net}}\,\Delta t% }% % \end{macrocode} % % The momentum principle in update form, lefthand and % righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsmomentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \vec*{p}% }% {% \vec{p}% }% \sb{\symup{sys,final}}% }% \NewDocumentCommand{\rhsmomentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \vec*{p}% }% {% \vec{p}% }% \sb{\symup{sys,initial}}+% \IfBooleanTF{#1}% {% \vec*{F}% }% {% \vec{F}% }% \sb{\symup{sys,net}}\,\Delta t% }% % \end{macrocode} % % The full momentum principle as an expression. % % \begin{macrocode} \NewDocumentCommand{\momentumprinciple}{ s }% {% \IfBooleanTF{#1}% {% \lhsmomentumprinciple* = \rhsmomentumprinciple*% }% {% \lhsmomentumprinciple = \rhsmomentumprinciple% }% }% % \end{macrocode} % % The full momentum principle in update form as an expression. % % \begin{macrocode} \NewDocumentCommand{\momentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \lhsmomentumprincipleupdate* = \rhsmomentumprincipleupdate*% }% {% \lhsmomentumprincipleupdate = \rhsmomentumprincipleupdate% }% }% % \end{macrocode} % % The energy principle's lefthand and righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsenergyprinciple}{}% {% \Delta E_{\symup{sys}}% }% \NewDocumentCommand{\rhsenergyprinciple}{ O{} }% {% W_{\symup{ext}}#1% }% % \end{macrocode} % % The energy principle in update form, lefthand and % righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsenergyprincipleupdate}{}% {% E_{\symup{sys,final}}% }% \NewDocumentCommand{\rhsenergyprincipleupdate}{ O{} }% {% E_{\symup{sys,initial}}+% W_{\symup{ext}}#1% }% % \end{macrocode} % % The full energy principle as an expression. % % \begin{macrocode} \NewDocumentCommand{\energyprinciple}{ O{} }% {% \lhsenergyprinciple = \rhsenergyprinciple[#1]% }% % \end{macrocode} % % The full energy principle in update form as an expression. % % \begin{macrocode} \NewDocumentCommand{\energyprincipleupdate}{ O{} }% {% \lhsenergyprincipleupdate = \rhsenergyprincipleupdate[#1]% }% % \end{macrocode} % % The angular momentum principle's lefthand and righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsangularmomentumprinciple}{ s }% {% \Delta% \IfBooleanTF{#1}% {% \vec*{L}% }% {% \vec{L}% }% \sb{A\symup{,sys,net}}% }% \NewDocumentCommand{\rhsangularmomentumprinciple}{ s }% {% \IfBooleanTF{#1}% {% \vec*{\tau}% }% {% \vec{\tau}% }% \sb{A\symup{,sys,net}}\,\Delta t% }% % \end{macrocode} % % The energy principle in update form, lefthand and % righthand sides. % % \begin{macrocode} \NewDocumentCommand{\lhsangularmomentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \vec*{L}% }% {% \vec{L}% }% \sb{A,\symup{sys,final}}% }% \NewDocumentCommand{\rhsangularmomentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \vec*{L}% }% {% \vec{L}% }% \sb{A\symup{,sys,initial}}+% \IfBooleanTF{#1}% {% \vec*{\tau}% }% {% \vec{\tau}% }% \sb{A\symup{,sys,net}}\,\Delta t% }% % \end{macrocode} % % The full angular momentum principle as an expression. % % \begin{macrocode} \NewDocumentCommand{\angularmomentumprinciple}{ s }% {% \IfBooleanTF{#1}% {% \lhsangularmomentumprinciple* = \rhsangularmomentumprinciple*% }% {% \lhsangularmomentumprinciple = \rhsangularmomentumprinciple% }% }% % \end{macrocode} % % The full angular momentum principle in update form as an expression. % % \begin{macrocode} \NewDocumentCommand{\angularmomentumprincipleupdate}{ s }% {% \IfBooleanTF{#1}% {% \lhsangularmomentumprincipleupdate* = \rhsangularmomentumprincipleupdate*% }% {% \lhsangularmomentumprincipleupdate = \rhsangularmomentumprincipleupdate% }% }% % \end{macrocode} % % The symbol for an arbitrary entity. % % \begin{macrocode} \NewDocumentCommand{\energyof}{ m o }% {% E_{#1% \IfValueT{#2}% {,#2}% }% }% % \end{macrocode} % % The symbol for a system's energy. % % \begin{macrocode} \NewDocumentCommand{\systemenergy}{ o }% {% E_{\symup{sys}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % % % \begin{macrocode} \NewDocumentCommand{\particleenergy}{ o }% {% E_{\symup{particle}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a particle's rest energy. % % \begin{macrocode} \NewDocumentCommand{\restenergy}{ o }% {% E_{\symup{rest}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a system's internal energy. % % \begin{macrocode} \NewDocumentCommand{\internalenergy}{ o }% {% E_{\symup{internal}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a system's chemical energy. % % \begin{macrocode} \NewDocumentCommand{\chemicalenergy}{ o }% {% E_{\symup{chem}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a system's thermal energy. % % \begin{macrocode} \NewDocumentCommand{\thermalenergy}{ o }% {% E_{\symup{therm}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a photon's energy. % % \begin{macrocode} \NewDocumentCommand{\photonenergy}{ o }% {% E_{\symup{photon}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for translational kinetic energy. % |d[]| must be used because of the way consecutive optional % arguments are handled. See \pkg{xparse} docs for details.\newline % See \url{https://tex.stackexchange.com/a/569011/218142}. % % \begin{macrocode} \NewDocumentCommand{\translationalkineticenergy}{ s d[] }% {% \IfBooleanTF{#1}% {% E_\bgroup \symup{K}% }% {% K_\bgroup\symup{trans}% }% \IfValueT{#2}{,#2}% \egroup% }% % \end{macrocode} % % The symbol for rotational kinetic energy. % % \begin{macrocode} \NewDocumentCommand{\rotationalkineticenergy}{ s d[] }% {% \IfBooleanTF{#1}% {% E_\bgroup% }% {% K_\bgroup% }% \symup{rot}\IfValueT{#2}{,#2}% \egroup% }% % \end{macrocode} % % The symbol for vibrational kinetic energy. % % \begin{macrocode} \NewDocumentCommand{\vibrationalkineticenergy}{ s d[] }% {% \IfBooleanTF{#1}% {% E_\bgroup% }% {% K_\bgroup% }% \symup{vib}\IfValueT{#2}{,#2}% \egroup% }% % \end{macrocode} % % The symbol for a system's gravitational potential energy. % % \begin{macrocode} \NewDocumentCommand{\gravitationalpotentialenergy}{ o }% {% U_{\symup{g}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a system's electric potential energy. % % \begin{macrocode} \NewDocumentCommand{\electricpotentialenergy}{ o }% {% U_{\symup{e}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % The symbol for a system's spring potential energy. % % \begin{macrocode} \NewDocumentCommand{\springpotentialenergy}{ o }% {% U_{\symup{s}% \IfValueT{#1}% {,#1}% }% }% % \end{macrocode} % % \restoregeometry % % \iffalse % % \fi % % \Finale