summaryrefslogtreecommitdiff
path: root/macros/latex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex')
-rw-r--r--macros/latex/contrib/mandi/README10
-rw-r--r--macros/latex/contrib/mandi/README.md10
-rw-r--r--macros/latex/contrib/mandi/mandi.dtx14040
-rw-r--r--macros/latex/contrib/mandi/mandi.ins80
-rw-r--r--macros/latex/contrib/mandi/mandi.pdfbin1343851 -> 468489 bytes
-rw-r--r--macros/latex/contrib/mandi/mandiexp.dtx787
-rw-r--r--macros/latex/contrib/mandi/mandistudent.dtx1789
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin1510786 -> 1511547 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx137
-rw-r--r--macros/latex/contrib/siunitx/siunitx-unit.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin636202 -> 636196 bytes
13 files changed, 5100 insertions, 11768 deletions
diff --git a/macros/latex/contrib/mandi/README b/macros/latex/contrib/mandi/README
deleted file mode 100644
index cc3680da78..0000000000
--- a/macros/latex/contrib/mandi/README
+++ /dev/null
@@ -1,10 +0,0 @@
-The mandi package provides commands for typesetting symbols, expressions, and
-quantities used in introductory physics and astronomy. Many of the commands are
-inspired by Matter & Interactions by Ruth Chabay and Bruce Sherwood. Many of
-the astronomical commands were inspired by my own classroom needs. This package
-does not do computations. It only provides commands for typesetting.
-
-Run mandi.ins through pdfLaTeX to generate files mandi.sty and vdemo.py. Run
-mandi.dtx through pdfLaTeX to generate mandi.pdf (documentation). I assume a
-TeX Live 2011 or later distribution is installed.
-
diff --git a/macros/latex/contrib/mandi/README.md b/macros/latex/contrib/mandi/README.md
new file mode 100644
index 0000000000..66a938f5de
--- /dev/null
+++ b/macros/latex/contrib/mandi/README.md
@@ -0,0 +1,10 @@
+mandi provides commands for introductory physics. To install, open a command
+line and type the following, repeating 2-4 until there are no warnings:
+
+ 1. lualatex mandi.ins (can also use latex)
+ 2. lualatex mandi.dtx (lualatex is required)
+ 3. makeindex -s gind.ist -o mandi.ind mandi.idx
+ 4. makeindex -s gglo.ist -o mandi.gls mandi.glo
+
+Move the *.sty files into a directory searched by TeX.
+The vdemo.py file is not needed.
diff --git a/macros/latex/contrib/mandi/mandi.dtx b/macros/latex/contrib/mandi/mandi.dtx
index 7c2653c695..cff62807a8 100644
--- a/macros/latex/contrib/mandi/mandi.dtx
+++ b/macros/latex/contrib/mandi/mandi.dtx
@@ -1,11 +1,11 @@
% \iffalse meta-comment
-% !TEX TS-program = dtxmk
+% !TEX program = lualatexmk
%
-% Copyright (C) 2018 by Paul J. Heafner <heafnerj@gmail.com>
+% 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
+% 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.
@@ -15,12 +15,16 @@
% 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
+% README.md
%
% and includes the derived files mandi.sty
-% vdemo.py.
+% mandistudent.sty
+% mandiexp.sty
+% vdemo.py
% ---------------------------------------------------------------------------
%
% \fi
@@ -31,38 +35,6 @@
\iffalse
%</internal>
%
-%<*package>
-%%\ProvidesPackage{mandi}[2019/01/12 2.7.5 Macros for physics and astronomy]
-\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-%</package>
-%
-%<*vdemo>
-#
-from vpython import *
-
-G = 6.7e-11
-
-# create objects
-giant = sphere(pos=vector(-1e11,0,0),radius=2e10,mass=2e30,color=color.red)
-giant.p = vector(0,0,-1e4) * giant.mass
-dwarf = sphere(pos=vector(1.5e11,0,0),radius=1e10,mass=1e30,color=color.yellow)
-dwarf.p = -giant.p
-
-for a in [giant,dwarf]:
- a.orbit = curve(color=a.color,radius=2e9)
-
-dt = 86400
-while 1:
- rate(100)
- dist = dwarf.pos - giant.pos
- force = G * giant.mass * dwarf.mass * dist / mag(dist)**3
- giant.p = giant.p + force*dt
- dwarf.p = dwarf.p - force*dt
- for a in [giant,dwarf]:
- a.pos = a.pos + a.p/a.mass * dt
- a.orbit.append(pos=a.pos)
-%</vdemo>
-%
%<*internal>
\fi
\def\nameofplainTeX{plain}
@@ -81,63 +53,96 @@ while 1:
%
%<*driver>
\ProvidesFile{mandi.dtx}
-%</driver>
-%
-%<*driver>
\documentclass[10pt]{ltxdoc}
-\setlength{\marginparwidth}{0.50in} % placement of todonotes
-\usepackage{\jobname} % load mandi
-\usepackage{parskip} % no indents/space btwn paras
-\usepackage[textwidth=1.0cm]{todonotes} % allow for todonotes
-\usepackage[left=0.75in,right=1.00in]{geometry} % main documentation
-\usepackage{array,rotating,microtype} % accessory packages
-\usepackage[listings,documentation]{tcolorbox} % workhorse package
-\usepackage{anyfontsize}
-\usepackage{float}
-\usepackage{changepage} %%%%%%%%%%
-\usepackage{nameref}
-\hypersetup{colorlinks, linktoc=all}
-\tcbset{index german settings}
-\tcbset{color hyperlink=blue}
-\tcbset{doc head command={interior style={fill,left color=red!15!white}}}
-\tcbset{color command=red}
-\tcbset{doc head environment={interior style={fill,left color=red!15!white}}}
-\tcbset{color environment=red}
-\tcbset{lefthand ratio=0.70}
-\newcommandx{\ntodo}[2][1,usedefault]{%
- \ifthenelse{\equal{#1}{}}
- {\todo[size=\footnotesize,fancyline,caption={#2},color=yellow!40]
- {\begin{sideways}#2\end{sideways}}}
- {\todo[size=\footnotesize,fancyline,caption={#1},color=yellow!40]
- {\begin{sideways}#2\end{sideways}}}}
-\DisableCrossrefs % index descriptions only
-\PageIndex % index contains page numbers
-\CodelineNumbered % number source lines
-\RecordChanges % record changes
-\begin{document} % main document
- \DocInput{\jobname.dtx}
- \newgeometry{left=1.00in,right=1.00in,top=1.00in,bottom=1.00in}
- \PrintIndex
- \restoregeometry
-\end{document} % end main document
+\PassOptionsToPackage{listings,documentation}{tcolorbox} % prevent option clash
+\usepackage{\jobname} % load mandi.sty
+\usepackage{mandistudent} % load mandistudent.sty
+\usepackage{mandiexp} % load mandiexp.sty
+\usepackage{mwe} % provides test images
+\usepackage[left = 1.00in,% %
+ right = 1.00in,% %
+ marginparwidth = 0.70in]{geometry} % main documentation
+\usepackage[listings,documentation]{tcolorbox} % workhorse package
+\tcbset{% % tcolorbox options
+ index german settings,%
+ index colorize = false,%
+ lefthand ratio = 0.50,%
+ color hyperlink = blue,%
+ color command = purple,%
+ color environment = purple!65!black,%
+ doc left = 0.5in,%
+ doc marginnote = {colframe = blue!50!white,colback = blue!5!white},%
+ doc head command = {interior style = {fill,left color = blue!15!white}},%
+ doc head environment = {interior style = {fill,left color = blue!15!white}},%
+ doc head key = {interior style = {fill,left color = blue!15!white}},%
+ docexample/.style = {%
+ colback = gray!10!white,sidebyside,lefthand ratio = 0.5,center},%
+ listing style = vpython,%
+}%
+% Redefine tcolorbox's \tcbdocnew and \tcbdocupdated defaults.
+\renewcommand*{\tcbdocnew}[1]
+ {\textcolor{green!50!black}{\sffamily\bfseries N} #1}
+\renewcommand*{\tcbdocupdated}[1]
+ {\textcolor{blue!75!black}{\sffamily\bfseries U} #1}
+\hypersetup{colorlinks=true} % colored links; no borders
+
+% See https://tex.stackexchange.com/q/156383/218142
+\newcommand*{\pkg}[1]{\textsf{#1}} % typeset package names
+\newcommand*{\mandi}{\textsf{mandi}} % typeset mandi
+\newcommand*{\mandistudent}{\textsf{mandistudent}} % typeset mandistudent
+\newcommand*{\mandiexp}{\textsf{mandiexp}} % typeset mandiexp
+\newcommand*{\GlowScript}{\texttt{GlowScript}} % typeset GlowScript
+\newcommand*{\GlowScriptorg}{\texttt{GlowScript.org}} % typeset GlowScript.org
+\newcommand*{\VPython}{\texttt{VPython}} % typeset VPython
+\newcommand*{\VPythonorg}{\texttt{VPython.org}} % typeset VPython.org
+\newcommand*{\gsurl}{glowscript.org} % GlowScript URL
+\newcommand*{\vpurl}{vpython.org} % VPython URL
+\newcommand*{\lualatex}{Lua\LaTeX} % typeset LuaLaTeX
+
+% A customized internal hyperref tool to mimic that in tcolorbox.
+% In fact, I borrowed it from tcolorbox.
+\NewDocumentCommand{\setplace}{ s m }{%
+ \IfBooleanTF {#1}%
+ {\phantomsection}%
+ {}%
+ \label{#2}%
+}%
+\NewDocumentCommand{\linktoplace}{ m m }{%
+ \hyperref[#1]{\texttt{#2}%
+ \ifnum\getpagerefnumber{#1}=\thepage\relax%
+ \else%
+ %\textsuperscript{\ding{213}\,{P.}\,\pageref*{#1}}%
+ % Changed with tcolorbox 4.51
+ \textsuperscript{{\fontfamily{pzd}\fontencoding{U}\fontseries{m}\fontshape{n}\selectfont\char213}
+ \,{P.}\,\pageref*{#1}}%
+ \fi%
+ }%
+}%
+
+% We need a new command for in-line listings to prevent overfull boxes.
+% Anything in |...| will be in small plain text.
+% Previously used !...! but that conflicts with colors.
+\lstMakeShortInline[basicstyle=\normalfont\ttfamily\small]|
+
+\DisableCrossrefs % index descriptions only
+\PageIndex % index refers to page numbers
+\CodelineNumbered % number source lines
+\RecordChanges % record changes
+\begin{document} % main document
+ \DocInput{\jobname.dtx} %
+ \setcounter{CodelineNo}{0} % reset line numbers if desired
+ \DocInput{\jobname student.dtx} %
+ \setcounter{CodelineNo}{0} % reset line numbers if desired
+ \DocInput{\jobname exp.dtx} %
+ \PrintIndex %
+\end{document} % end main document
%</driver>
% \fi
%
-% \newcommand*{\pkgname}[1]{\texttt{#1}}
-% \newcommand*{\mandi}{\pkgname{mandi}}
-% \newcommand*{\mi}{\textit{Matter \& Interactions}}
-% \hyphenation{Matter Interactions}
-% \newcommand*{\opt}[1]{\textsf{\textbf{#1}}}
-% \newcommand*{\baseunits}{\emph{baseunits}}
-% \newcommand*{\drvdunits}{\emph{drvdunits}}
-% \newcommand*{\altnunits}{\emph{altnunits}}
-%
-% \IndexPrologue{\section{Index}Page numbers refer to page where the
-% corresponding entry is described. Not every command defined in the
-% package is indexed. There may be commands similar to indexed commands
-% described in relevant parts of the documentation.}
+% \IndexPrologue{\section{Index}Page numbers refer to page where the
+% corresponding entry is documented and/or referenced.}
%
-% \CheckSum{6558}
+% \CheckSum{2171}
%
% \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
@@ -155,1389 +160,190 @@ while 1:
% Grave accent \` Left brace \{ Vertical bar \|
% Right brace \} Tilde \~}
%
-% \providecommand*{\url}{\texttt}
-% \GetFileInfo{\jobname.sty}
-% \title{The \textsf{mandi} package}
-% \author{Paul J. Heafner
-% (\href{mailto:heafnerj@gmail.com?subject=[Heafner]\%20mandi}
-% {\nolinkurl{heafnerj@gmail.com}})}
-% ^^A \date{Version \fileversion~dated \filedate}
-% \date{Version \mandiversion}
+% \title{The \href{https://ctan.org/pkg/mandi}{\mandi} Bundle}
+% \author{^^A
+% Paul J. Heafner\thanks{^^A
+% Email: \href{mailto:heafnerj@gmail.com?subject=[Heafner]\%20mandi}
+% {heafnerj@gmail.com}^^A
+% }^^A
+% }^^A
+% \date{\today}
%
% \newgeometry{left=1.0in,right=1.0in,top=4.0in}
-% \pagenumbering{gobble}
-% \hypersetup{pageanchor=false}
-% \begin{titlepage}
% \maketitle
-% \end{titlepage}
-% \hypersetup{pageanchor=true}
-% \pagenumbering{arabic}
+% \thispagestyle{empty}
+% \centerline{\mandi\ version \mandiversion}
+% \centerline{\mandistudent\ version \mandistudentversion}
+% \centerline{\mandiexp\ version \mandiexpversion}
+% ^^A\centerline{\textbf{PLEASE DO NOT DISTRIBUTE THIS BUILD.}}
% \restoregeometry
%
-% ^^A \centerline{\textbf{PLEASE DO NOT DISTRIBUTE THIS VERSION.}}
-%
-% \newgeometry{left=1.0in,right=1.0in,top=1.0in,bottom=1.0in}
+% \newgeometry{left=1.0in,right=1.0in,top=0.5in,bottom=1.0in}
% \tableofcontents
% \newpage
% \phantomsection
+% \addcontentsline{toc}{section}{Acknowledgements}
+% \section*{Acknowledgements}
+% To all of the students who have learned \LaTeX\ in my introductory
+% physics courses over the years, I say a heartfelt thank you. You
+% have contributed directly to the state of this software and to its
+% use in introductory physics courses and to innovating how physics
+% is taught.
+%
+% I also acknowledge the \LaTeX\ developers who inhabit the
+% \href{https://tex.stackexchange.com/}{\TeX\ StackExchange} site.
+% Entering a new culture is daunting for anyone, especially for
+% newcomers. The \LaTeX\ development culture is no exception. We all
+% share a passion for creating beautiful documents and I have learned
+% much over the past year that improved my ability to do just that.
+% There are too many of you to list individually, and I would surely
+% accidentally omit some were I to try. Collectively, I thank you all
+% for your patience and advice.
+% \newpage
+% \phantomsection
% \addcontentsline{toc}{section}{Change History}
% \PrintChanges
% \newpage
% \phantomsection
-% \addcontentsline{toc}{section}{Program Listings}
-% \lstlistoflistings
-% \newpage
+% \addcontentsline{toc}{section}{List of \texttt{GlowScript} Programs}
+% \listofglowscriptprograms
+% \phantomsection
+% \addcontentsline{toc}{section}{List of \texttt{VPython} Programs}
+% \listofvpythonprograms
+% \phantomsection
+% \addcontentsline{toc}{section}{List of Figures}
+% \listoffigures
% \restoregeometry
%
-%\changes{v2.4.0}{2014/12/16}{Made option names consistent with default behavior.}
-%\changes{v2.4.0}{2014/12/16}{Added option for boldface vector kernels.}
-%\changes{v2.4.0}{2014/12/16}{Added option for approximate values of constants.}
-%\changes{v2.4.0}{2014/12/16}{Added magnetic charge.}
-%\changes{v2.4.0}{2014/12/16}{\cs{vpythonfile} now uses a uniform style.}
-%\changes{v2.4.0}{2014/12/16}{Added table of all predefined quantities with units.}
-%\changes{v2.4.0}{2014/12/16}{Added table of all predefined constants
-% with their symbols and units.}
-%\changes{v2.4.0}{2014/12/16}{Added Maxwell's equations in both integral
-% and differential forms, both with and without magnetic monopoles.}
-%\changes{v2.4.0}{2014/12/16}{Added Lorentz force, with and
-% without magnetic monopoles.}
-%\changes{v2.4.0}{2014/12/16}{\cs{vpythonline} now uses a uniform style.}
-%\changes{v2.4.0}{2014/12/16}{\texttt{vpythonblock} now uses a uniform style.}
-%\changes{v2.4.0}{2014/12/17}{Now coexists with the \pkgname{commath} package.}
-%\changes{v2.4.0}{2014/12/19}{Removed compatibility check for the \pkgname{physymb}
-% package.}
-%\changes{v2.4.1}{2015/02/11}{\texttt{vpythonblock} now accepts an optional caption.}
-%\changes{v2.4.1}{2015/02/11}{\cs{vpythonfile} now accepts an optional caption.}
-%\changes{v2.4.1}{2015/02/14}{Commands that use \pkgname{mdframed}
-% will not break over pages.}
-%\changes{v2.4.1}{2015/02/20}{Added \cs{scompsCvect} for superscripted
-% components.}
-%\changes{v2.4.1}{2015/02/20}{Added \cs{scompsRvect} for superscripted
-% components.}
-%\changes{v2.4.1}{2015/01/23}{Added more VPython keywords.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{smallanswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{mediumanswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{largeanswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{largeranswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{hugeanswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{hugeranswerform}.}
-%\changes{v2.4.2}{2015/06/08}{Added \cs{fullpageanswerform}.}
-%\changes{v2.5.0}{2016/01/26}{Added explicit mention of VPython and GlowScript.}
-%\changes{v2.5.0}{2016/01/26}{Added GlowScript keywords.}
-%\changes{v2.5.0}{2016/01/26}{Added example showing how to handle long
-% lines and suppressing numbers on broken lines.}
-%\changes{v2.5.0}{2016/01/26}{\cs{vpythonfile} now begins listings on a new page.}
-%\changes{v2.5.0}{2015/09/13}{Removed autosized parentheses in math mode.}
-%\changes{v2.5.0}{2015/09/13}{Removed compatibility check for the \pkgname{commath}
-% package.}
-%\changes{v2.5.0}{2015/09/13}{Renamed \cs{abs} to \cs{absof}.}
-%\changes{v2.5.0}{2015/09/13}{\cs{absof} now shows a placeholder for a
-% blank argument.}
-%\changes{v2.5.0}{2015/09/13}{\cs{magof} now shows a placeholder for a
-% blank argument.}
-%\changes{v2.5.0}{2015/09/13}{\cs{dimsof} now shows a placeholder for a
-% blank argument.}
-%\changes{v2.5.0}{2015/09/13}{\cs{unitsof} now shows a placeholder for a
-% blank argument.}
-%\changes{v2.5.0}{2015/09/13}{Added \cs{inparens} for grouping with
-% parentheses.}
-%\changes{v2.5.0}{2015/09/13}{Changed behavior of \cs{sneakyone}.}
-%\changes{v2.5.0}{2015/10/08}{Added \cs{eulerlagrange} command to
-% typeset the Euler-Lagrange equation.}
-%\changes{v2.5.0}{2015/10/08}{Added \cs{Lagr} to get symbol for
-% Lagrangian.}
-%\changes{v2.5.0}{2015/10/08}{Added color to \cs{checkpoint}.}
-%\changes{v2.5.0}{2015/10/08}{Added \cs{qed} symbol.}
-%\changes{v2.5.0}{2015/10/09}{Added \cs{ueuzero} and friends.}
-%\changes{v2.5.0}{2015/10/09}{Added commands for Dirac notation.}
-%\changes{v2.5.0}{2015/10/09}{Documented precise and approximate
-% constant values.}
-%\changes{v2.5.0}{2015/10/14}{\cs{miderivation} now prints line numbers.}
-%\changes{v2.5.0}{2015/10/14}{Added \cs{miderivation*} to suppress line
-% numbers.}
-%\changes{v2.5.0}{2015/10/14}{\cs{bwderivation} now shows line numbers.}
-%\changes{v2.5.0}{2015/10/14}{Added \cs{bwderivation*} to suppress line
-% numbers.}
-%\changes{v2.5.0}{2015/10/14}{\cs{mysolution} now prints line numbers.}
-%\changes{v2.5.0}{2015/10/14}{Added \cs{mysolution*} to suppress line numbers.}
-%\changes{v2.5.0}{2015/10/16}{Added \cs{taigrad} to get Tai's gradient symbol.}
-%\changes{v2.5.0}{2015/10/16}{Added \cs{taisvec} to get Tai's symbolic vector.}
-%\changes{v2.5.0}{2015/10/16}{Added \cs{taigrad} to get Tai's divergence symbol.}
-%\changes{v2.5.0}{2015/10/16}{Added \cs{taigrad} to get Tai's curl symbol.}
-%\changes{v2.5.0}{2015/10/20}{Added \cs{scompsdirvect}.}
-%\changes{v2.5.0}{2015/10/20}{Added \cs{compdirvect}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{componentalong}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{expcomponentalong}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{ucomponentalong}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{projectiononto}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{expprojectiononto}.}
-%\changes{v2.5.0}{2015/11/29}{Added \cs{uprojectiononto}.}
-%\changes{v2.5.0}{2015/11/29}{Fixed parentheses bug in \cs{magvectncomps}.}
-%\changes{v2.5.0}{2015/12/27}{Added option for radians in certain angular
-% quantities.}
-%\changes{v2.5.1}{2016/03/13}{Fixed errors in build for uploading to CTAN.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectormomentum}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectordisplacement}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorvelocityc}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorvelocity}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectoracceleration}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorgravitationalfield}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorimpulse}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorforce}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorangularvelocity}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorangularacceleration}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorangularmomentum}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorangularimpulse}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectortorque}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorwavenumber}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorelectricfield}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorelectricdipolemoment}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectormagneticfield}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectormagneticdipolemoment}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorcurrentdensity}.}
-%\changes{v2.6.0}{2016/04/30}{Added \cs{vectorcmagneticfield}.}
-%\changes{v2.6.0}{2016/05/02}{Created a student guide.}
-%\changes{v2.6.0}{2016/05/02}{Changed placeholder to underscore.}
-%\changes{v2.6.0}{2016/05/02}{Changed placeholder to underscore.}
-%\changes{v2.6.0}{2016/05/02}{Changed placeholder to underscore.}
-%\changes{v2.6.0}{2016/05/02}{Changed placeholder to underscore.}
-%\changes{v2.6.0}{2016/05/02}{Changed placeholder to underscore.}
-%\changes{v2.6.0}{2016/05/02}{Added \cs{problem} environment.}
-%\changes{v2.6.0}{2016/05/02}{Added \cs{reason}.}
-%\changes{v2.6.0}{2016/05/03}{Added \cs{energyflux}.}
-%\changes{v2.6.0}{2016/05/03}{Added \cs{momentumflux}.}
-%\changes{v2.6.0}{2016/05/03}{Added \cs{poyntingvector}.}
-%\changes{v2.6.0}{2016/05/03}{Added many new commands that format expressions
-% with placeholders for numerical quantities.}
-%\changes{v2.6.0}{2016/05/10}{Replaced \cs{evalfromto} with \cs{evaluatedfromto}.}
-%\changes{v2.6.0}{2016/05/10}{Replaced \cs{evalat} with new \cs{evaluatedat}.}
-%\changes{v2.6.0}{2016/05/10}{Removed deprecated commands.}
-%\changes{v2.6.0}{2016/05/11}{Added \cs{direction}.}
-%\changes{v2.6.0}{2016/05/11}{Added \cs{vectordirection}.}
-%\changes{v2.6.0}{2016/05/11}{Added \cs{vectorenergyflux}.}
-%\changes{v2.6.0}{2016/05/11}{Added \cs{vectormomentumflux}.}
-%\changes{v2.6.0}{2016/05/12}{Added \cs{glowscriptline}.}
-%\changes{v2.6.0}{2016/05/12}{Added \texttt{glowscriptblock}.}
-%\changes{v2.6.0}{2016/05/12}{Added \cs{glowscriptfile}.}
-%\changes{v2.6.0}{2016/05/16}{Extensive revisions to documentation.}
-%\changes{v2.6.0}{2016/05/18}{Option \opt{singleabsbars} renamed to
-% \opt{singlemagbars}.}
-%\changes{v2.6.0}{2016/05/20}{Documented \cs{chkquantity}.}
-%\changes{v2.6.0}{2016/05/20}{Documented \cs{chkconstant}.}
-%\changes{v2.6.0}{2016/05/20}{Documented \cs{mandiversion}.}
-%\changes{v2.6.0}{2016/05/23}{Loads the \pkgname{tensor} package for future use.}
-%\changes{v2.6.1}{2016/06/30}{Fixed \cs{mandiversion} so it displays correctly
-% in math mode.}
-%\changes{v2.6.1}{2016/06/30}{Fixed errors in Student Quick Guide documentation.}
-%\changes{v2.6.2}{2016/07/31}{Made minor changes to the documentation.}
-%\changes{v2.6.3}{2016/09/02}{Added \cs{mistandard} for standards.}
-%\changes{v2.6.3}{2016/09/02}{Added \cs{bwstandard} for standards.}
-%\changes{v2.6.3}{2016/09/07}{Added \cs{infeetpersecond}.}
-%\changes{v2.6.3}{2016/09/08}{Added scaling options to \cs{image}.}
-%\changes{v2.6.3}{2016/09/08}{Tweaked \cs{image} to work in documentation.}
-%\changes{v2.6.3}{2016/09/08}{Added \cs{infeet}.}
-%\changes{v2.6.3}{2016/09/08}{Added \cs{infeetpersecondsquared}.}
-%\changes{v2.6.3}{2016/09/11}{Loads the \pkgname{float} package for \cs{image}.}
-%\changes{v2.7.0}{2016/12/16}{Changed \cs{vectdotvect} to use \cs{cdot}.}
-%\changes{v2.7.0}{2016/12/16}{Added \cs{vectDotvect} to use \cs{bullet}.}
-%\changes{v2.7.0}{2017/02/02}{Made numerous internal changes to eliminate warnings.}
-%\changes{v2.7.0}{2017/02/02}{Added blank output lines around mandi messages
-% during compilation.}
-%\changes{v2.7.0}{2017/02/02}{Changed first line of VPython programs to match
-% Jupyter Notebook syntax.}
-%\changes{v2.7.0}{2017/02/02}{Changed \cs{reason} to use minipage.}
-%\changes{v2.7.0}{2017/02/02}{Added fourth argument to \cs{image} for a label.}
-%\changes{v2.7.0}{2017/03/17}{Added \cs{dslashx} for inexact differentials.}
-%\changes{v2.7.0}{2017/04/13}{Added \cs{factorvect}.}
-%\changes{v2.7.0}{2017/04/13}{Added \cs{circulation}.}
-%\changes{v2.7.0}{2017/09/01}{Added better looking parallel symbol.}
-%\changes{v2.7.0}{2017/09/01}{Added an alias for the perpendicular symbol.}
-%\changes{v2.7.0}{2018/01/11}{Added instructions for Overleaf users.}
-%\changes{v2.7.2}{2018/03/14}{Changed \emph{tradunits} to \opt{altnunits}.}
-%\changes{v2.7.2}{2018/03/16}{Documented the \cs{redefinephysicsquantity} command.}
-%\changes{v2.7.2}{2018/03/16}{Documented the \cs{redefinephysicsconstant} command.}
-%\changes{v2.7.2}{2018/03/18}{Changed \cs{lorentz} to \cs{lorentzfactor}.}
-%\changes{v2.7.2}{2018/03/19}{Made \opt{drvdunits} the default.}
-%\changes{v2.7.2}{2018/03/19}{Adjusted units of some predefined quantities and
-% constants.}
-%\changes{v2.7.2}{2018/03/20}{Added expanded instructions for Overleaf users.}
-%\changes{v2.7.3}{2018/04/06}{Reformatted source code to allow for better
-% documentation of changes.}
-%\changes{v2.7.3}{2018/11/10}{Added \cs{emptyunit}. Thanks to Dr. Brian Lane
-% for suggesting this implementation.}
-%\changes{v2.7.3}{2018/11/11}{Added \cs{anglebetween}.}
-%\changes{v2.7.3}{2018/11/13}{Made variable in series expansions a parameter
-% with \(x\) as the default.}
-%\changes{v2.7.3}{2018/12/27}{Modified \cs{vpythonfile} and \cs{vpythonblock} to
-% include both captions and labels.}
-%\changes{v2.7.4}{2019/01/12}{Revised Overleaf instructions to reflect new version.}
-%\changes{v.2.7.5}{2019/01/12}{Revised documentation for Overleaf yet again.}
+% \changes{v3.0.0}{2021-08-21}{\mandi\ initial release}
+% \changes{v3.0.0}{2021-08-21}{\mandistudent\ initial release}
+% \changes{v3.0.0}{2021-08-21}{\mandiexp\ initial release}
%
% \section{Introduction}
-% This package provides a collection of commands useful in introductory physics
-% and astronomy. The underlying philosophy is that the user, potentially an
-% introductory student, should just type the name of a physical quantity, with a
-% numerical value if needed, without having to think about the units. \mandi\
-% will typeset everything correctly. For symbolic quantities, the user should
-% type only what is necessary to get the desired result. What one types should
-% correspond as closely as possible to what one thinks when writing. The package
-% name derives from \mi
-% \footnote{See the \mi\ home page at \url{https://www.matterandinteractions.org/}
-% for more information about this innovative introductory calculus-based physics
-% curriculum.} by Ruth Chabay and Bruce Sherwood. The package certainly is rather
-% tightly tied to that textbook but can be used for typesetting any document that
-% requires consistent physics notation. With \mandi\ many complicated expressions
-% can be typeset with just a single command. Great thought has been given to
-% command names and I hope users find the conventions logical and easy to remember.
-%
-% There are other underlying philosophies and goals embedded within \mandi,
-% all of which are summarized here. These philosophies are
-% \begin{itemize}
-% \item to employ a \emph{type what you think} model for remembering commands,
-% \item to relieve the user of having to explicitly worry about typesetting SI
-% units,
-% \item to enforce certain concepts that are too frequently merged, such as the
-% distinction between a vector quantity and its magnitude (e.g.\ we often use
-% the same name for both),
-% \item to enforce consistent terminology in the naming of quantities, with names
-% that are both meaningful to introductory students and accurate
-% (e.g.\ \emph{duration} vs.\ \emph{time}), and
-% \item to enforce consistent notation, especially for vector quantities.
-% \end{itemize}
-%
-% I hope that using \mandi\ will cause users to form good habits that
-% benefit physics students.
-%
-% \section{Building From Source}
-% I am assuming the user will use pdf\LaTeX, which creates PDF files as output,
-% to build the documentation. I have not tested the build with with standard \LaTeX,
-% which creates DVI files.
-%
-% The latest useable version is always found on the \mandi\ home page at
-% \url{https://tensortime.sticksandshadows.com/mandi} and note that the version there
-% may not yet have been pushed to \href{https://ctan.org}{CTAN}.
-%
-% \newpage
-% \section{Loading the Package}\label{LoadingthePackage}
-% To load \mandi\ with its default options, simply put the line |\usepackage{mandi}|
-% in your document's preamble. To use the package's available options, put the line
-% |\usepackage|\textbf{[}\opt{options}\textbf{]}|{mandi}| in your document's
-% preamble. There are eight available options, all of which are described below.
-%
-% \begin{itemize}
-% \item \opt{boldvectors} gives bold letters for the kernels of vector names.
-% No arrows are used above the kernel.
-% \item \opt{romanvectors} gives Roman letters for the kernels of vectors names.
-% An arrow appears over the kernel.
-% \end{itemize}
-%
-% If neither \opt{boldvectors} nor \opt{romanvectors} is specified (the
-% default), vectors are displayed with italic letters for the kernels of vector
-% names and an arrow appears over the kernel.
-%
-% \begin{itemize}
-% \item \opt{singlemagbars} gives single bars in symbols for vector magnitudes
-% instead of the default double bars. Double bars may be more familiar to
-% students from their calculus courses.
-% \item \opt{approxconsts} gives approximate values of constants to one or two
-% significant figures, depending on how they appear in \mi, instead of the
-% default precise values.
-% \item \opt{useradians} gives radians in the units of angular momentum,
-% angular impulse, and torque. The default is to not use radians in the units
-% of these quantities.
-% \item \opt{baseunits} causes all units to be displayed in \baseunits\ form, with
-% SI base units. No solidi (slashes) are used. Positive and negative exponents
-% are used to denote powers of various base units.
-% \item \opt{drvdunits} causes all units to be displayed, when possible, in
-% \drvdunits\ form, with SI derived units. Students may already be familiar with
-% many of these derived units.
-% \item \opt{altnunits} causes all units to be displayed in \altnunits\ form,
-% which is intended to allow for custom units when desired. This is sometimes
-% helpful for enhancing conceptual understanding in some situations.
-% \end{itemize}
-%
-% If neither \opt{baseunits} nor \opt{altnunits} is specified, units are
-% displayed in \drvdunits\ form, which is typically the way they would usually
-% appear in textbooks. Units in this form may hide the underlying physical
-% meaning or indeed may do precisely the opposite and enhance conceptual
-% understanding. In this document, the default is to use
-% \ifthenelse{\boolean{@optbaseunits}}
-% {base}
-% {\ifthenelse{\boolean{@optaltnunits}}
-% {alternate}
-% {derived}}
-% units. As you will see later, there are ways to override these options either
-% temporarily or permanently.
-%
-% \mandi\ coexists with the \pkgname{siunitx} package. While there is some
-% functional overlap between the two packages, \mandi\ is completely independent of
-% \pkgname{siunitx}. The two are designed for different purposes and probably also
-% for different audiences, but can be used together if desired. \mandi\ coexists with
-% the \pkgname{commath} package. There is no longer a conflict because \mandi's
-% |\abs| command has been renamed to \refCom{absof}. \mandi\ no longer checks for the
-% presence of the \pkgname{physymb} package. That package now incorporates \mandi\
-% dependencies, and the two are completely compatible as far as I know.
-%
-%\mandi\ loads the \pkgname{tensor} for likely future use. See that package's
-% documentation for its commands and how to use them. There are no known conflicts
-% between \mandi\ and \pkgname{tensor}.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mandiversion}{}
-Gives the current package version number and build date.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\mandiversion
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \newpage
-% \section{Overleaf Users}
-% \href{https://www.overleaf.com}{Overleaf.com} is an online \LaTeX\ environment
-% with widespread use. It uses a full \TeX/\LaTeX\ installation but may not always
-% have the latest version of every package installed (for stability reasons).
-% Sometimes packages are updated more frequently than the large distributions are
-% updated. If you want to always be sure you're using the latest version of \mandi\
-% make sure the files \pkgname{mandi.sty} and \pkgname{mandi.pdf} are in your
-% Overleaf project folder. The package can now be used in your documents.
-%
-% If you are a student, here are detailed instructions on how to use \mandi\
-% in your Overleaf project.
-% \begin{enumerate}
-% \item Direct your browser to
-% \href{https://tensortime.sticksandshadows.com/mandi}
-% {https://tensortime.sticksandshadows.com/mandi} and fetch the file named
-% \texttt{overleaf-template.zip}. Download it and open the zip file into a
-% temporary folder on your computer.
-% \item Go to the \href{https://www.overleaf.com}{Overleaf.com} website and
-% create a free account and then sign into that account.
-% \item Upon signing in, you should see a list of your current projects. Look
-% for the New Project button on the left and click on it. Click on Blank Project.
-% You will be asked to name your new project. Choose this name very carefully
-% because it will also be the name of the compiled PDF file generated by compiling
-% the project's main file.
-% \item Once named, your new project will be created and you will be taken to its
-% new folder. You will see a file named \texttt{main.tex}. For now, just leave it
-% alone.
-% \item Click the user interface element resembling an upward arrow attached to
-% a tray (a popup labeled \texttt{Upload} appears when you hover over it) to open
-% the file upload dialog. Select all the files (there should be six) in the
-% temporary overleaf-template folder you previously created. Upload them
-% into your project's folder. You can now delete the \texttt{main.tex} file.
-% \item Click on the word \texttt{Menu} in the upper left corner of the window,
-% then scroll down and look for the Main document setting. Make sure
-% \texttt{NnnnnnnnCCPxx.tex} is selected as the project's main file.
-% \item From now on, to start a new project, begin by copying this master
-% project template and creating a new name for the new project. This way,
-% you will build a neatly organized collection of logically named projects
-% and the original Master Template will never have to be modified (but see
-% next step) and every project will have \mandi\ available for use.
-% \item If \mandi\ is updated by the developer, all you need to do is make
-% sure the new \texttt{mandi.sty} and \texttt{mandi.pdf} files, and perhaps
-% a few others if the developer has modified them, are uploaded to your project
-% folders.
-% \item You can now delete the \texttt{overleaf-template.zip} file and the
-% temporary folder you created on your computer.
-% \end{enumerate}
+% The \mandi \footnote{The bundle name can be pronounced either with two
+% syllables, to rhyme with \emph{candy}, or with three syllables, as
+% \emph{M and I}.} bundle consists of three packages: \mandi, \mandistudent,
+% and \mandiexp. Package \linktoplace{sec:mandipkg}{mandi} provides the
+% core functionality, namely correctly typesetting physical quantities
+% and constants with their correct SI units as either scalars or vectors,
+% depending on which is appropriate. Package
+% \linktoplace{sec:mandistudentpkg}{mandistudent} provides other typesetting
+% capability appropriate for written problem solutions. Finally, package
+% \linktoplace{sec:mandiexppkg}{mandiexp} provides commands for typesetting
+% expressions from \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.}
+%
+% \mandi\ has been completely rewritten from the ground up. It had gotten too
+% large and clumsy to use and maintain. It (unknowingly) used deprecated
+% packages. It had too many arcane ``features'' that were never used. It
+% did not support Unicode. It was not compatible with modern engines, like
+% \lualatex. It did not have a key-value interface. Options could not be
+% changed on the fly within a document. In short, it was a mess. I hope
+% this rewrite addresses all of the bad things and forms a better code base
+% for maintenance, useability, and future improvements.
+%
+% So many changes have been made that I think the best approach for former,
+% as well as new, users is to treat this as a brand new experience. I think
+% the most important thing to keep in mind is that I assume users,
+% expecially new users, will have a relatively recent TeX distribution
+% (like TeX Live) that includes a recently updated \LaTeX\ kernel. If users
+% report that this is a major problem, I can provide some degree of
+% backwards compatibility.
%
% \newpage
-% \section{Student Quick Guide}
-% Use \refCom{vect} to put an arrow over a symbol to make it the symbol for a vector.
-% Typing |\vect{p}| gives \vect{p}.
-%
-% Use \refCom{vectsub} if the symbol needs a subscript. Typing |\vectsub{p}{ball}|
-% gives \vectsub{p}{ball}.
-%
-% Use \refCom{magvect} or \refCom{magvectsub} to get the symbol for a vector's
-% magnitude. Typing |\magvect{p}| gives \magvect{p}. Typing |\magvectsub{p}{ball}|
-% gives \magvectsub{p}{ball}.
-%
-% Use \refCom{dirvect} or \refCom{dirvectsub} to get the symbol for a vector's
-% direction. Typing |\dirvect{p}| or |\dirvectsub{p}{ball}| gives \dirvect{p} or
-% \dirvectsub{p}{ball}.
-%
-% Use \refCom{compvect} to write the symbol for one of a vector's coordinate
-% components. Typing |\compvect{v}{z}| gives \compvect{v}{z}.
-%
-% Use a \hyperlink{target2}{physical quantity's} name followed by a numerical value
-% in curly braces to typeset that numerical value and an appropriate
-% \hyperlink{target1}{SI unit}.
-% Using \refCom{velocity} by typing |\velocity{2.5}| gives
-% \velocity{2.5}. Use \refCom{newphysicsquantity} to define any new quantity
-% you need.
-%
-% Many \hyperlink{target3}{physical constants} are defined in \mandi\ and are
-% well documented in the corresponding section.
-%
-% Use \refCom{mivector} to write the coordinate representation of a vector.
-% Typing |\mivector{3,2,-4}| gives \mivector{3,2,-4}. Typing |\mivector{a,b,c}|
-% gives \mivector{a,b,c}.
-%
-% Use \refCom{direction} to write the coordinate representation of a unit vector,
-% which some authors call a direction. Typing |\direction{1,0,0}| gives
-% \direction{1,0,0}. Directions have no units.
-%
-% To specify a vector quantity in terms of its coordinate components, you have two
-% options. One way is to type the vector quantity's name as above, but use
-% \refCom{mivector} to specify a list of three components separated by commas in
-% curly braces as in |\velocity{\mivector{3,2,-4}}| to get
-% \velocity{\mivector{3,2,-4}}. Another way is to prefix |\vector| to the quantity's
-% name (with no leading backslash) and specify a list of three components separated
-% by commas in curly braces as in |\vectorvelocity{3,2,-4}| to get
-% \vectorvelocity{3,2,-4}. The output is the same either way.
-%
-% Use \refCom{timestento} or \refCom{xtento} to get scientific notation.
-% Typing either |2.54\timestento{-4}| or |2.54\xtento{-4}| gives 2.54\timestento{-4}.
-%
-% Use \refCom{inparens} to surround quantities with nicely formatted parentheses.
-% Typing |\inparens{x^2 + 4}| gives \inparens{x^2 + 4}.
-%
-% Use \refCom{define} to create a variable that can be used in an intermediate
-% step in a solution. This is discussed \hyperlink{target5}{later in this section}.
-%
-% To typeset a matrix in parentheses, use the \cs{pmatrix} environment by putting
-% the rows, between |\begin{pmatrix}| and |\end{pmatrix}|. Each row, except the
-% last, must end with |\\|. Within each row, separate the columns with |&|. Note
-% that \cs{pmatrix} typesets the matrix in parentheses. Use \cs{bmatrix} to typeset
-% it in square brackets and \cs{vmatrix} to typeset it in single vertical bars
-% to indicate a determinant. Use \cs{Vmatrix} to typeset it in double vertical
-% bars.
-%
-%\iffalse
-%<*example>
-%\fi
- \begin{dispExample*}{sidebyside,colframe=white,colback=white, lefthand ratio=0.70}
- A second rank tensor represented as a matrix.
- \[\begin{pmatrix}
- \hphantom{-}T_{00} & T_{01} & -T_{02} \\
- -T_{10} & T_{11} & -T_{12} \\
- \hphantom{-}T_{20} & T_{21} & \hphantom{-}T_{22}
- \end{pmatrix}\]
- Alternate notation for a matrix.
- \[\begin{bmatrix}
- \hphantom{-}T_{00} & T_{01} & -T_{02} \\
- -T_{10} & T_{11} & -T_{12} \\
- \hphantom{-}T_{20} & T_{21} & \hphantom{-}T_{22}
- \end{bmatrix}\]
- The determinant of a matrix.
- \[\begin{vmatrix}
- \hphantom{-}T_{00} & T_{01} & -T_{02} \\
- -T_{10} & T_{11} & -T_{12} \\
- \hphantom{-}T_{20} & T_{21} & \hphantom{-}T_{22}
- \end{vmatrix}\]
- Alternate notation for the determinant of a matrix.
- \[\begin{Vmatrix}
- \hphantom{-}T_{00} & T_{01} & -T_{02} \\
- -T_{10} & T_{11} & -T_{12} \\
- \hphantom{-}T_{20} & T_{21} & \hphantom{-}T_{22}
- \end{Vmatrix}\]
- \end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% Encapsulate an entire problem solution in a \refEnv{problem} environment by
-% putting it between |\begin{problem}| and |\end{problem}|.
-%
-% Show the steps in a calculation in a \refEnv{mysolution} environment by putting
-% them between |\begin{mysolution}| and |\end{mysolution}|.
-%
-% Use \cs{href} from the \pkgname{hyperref} package to link to URLs.
-% |\href{http://glowscript.org}{GlowScript}| gives
-% \href{http://glowscript.org}{GlowScript}. You can link to a specific
-% \href{http://goo.gl/wPMqjp}{GlowScript program} when necessary. Links are
-% active.
-%
-% Use \refCom{image} to insert diagrams. The diagram should be a PDF file. You
-% \emph{must} remember to specify a meaningful caption for the diagram. You must
-% also provide a unique label for the image so you can easily refer back to it
-% elsewhere in your document.
-%
-% There are two main design goals behind this package. The first is to typeset
-% numerical values of scalar and vector physical quantities and their SI units. The
-% idea is to simply type a command corresponding to the quantity's name, specifying
-% as an argument a single scalar value or the numerical components of a traditional
-% Cartesian 3-vector, and let \mandi\ take care of the units. Every physical quantity
-% you are likely to encounter in an introductory course is probably already defined,
-% but there's a facility for defining new quantities if you need to.
-%
-% The second main design goal provides a similar approach to typesetting the most
-% frequently used symbolic expressions in introductory physics. If you want to save
-% time in writing out the expression for the electric field of a particle, just use
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Efieldofparticle
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% which, as you can see, takes fewer keystrokes and it's easier to remember. Correct
-% vector notation is automatically enforced, leading students to get used to seeing
-% it and, hopefully, using it in their own calculations. Yes, this is a bit of an
-% agenda on my part, but my experience has been that students don't recognize or
-% appreciate the utility of vector notation and thus their physical reasoning may
-% suffer as a result. So by using \mandi\ they use simple commands that mirror what
-% they're thinking, or what they're supposed to be thinking (yes, another agenda),
-% and in the process see the correct typeset output.
-%
-% There is another persistent problem with introductory physics textbooks, and that
-% is that many authors do not use consistent notation. Many authors define the
-% notation for a vector's magnitude to be either \magvect{a} or \absof{\vect{a}} in
-% an early chapter, but then completely ignore that notation and simply use \(a\)
-% later in the book. I have never understood the (lack of) logic behind this practice
-% and find it more than annoying. Textbooks authors should know better, and should
-% set a better example for introductory students. I propose that using \mandi\
-% would eliminate all last vestiges of all excuses for not setting this one good
-% example for introductory students.
-%
-% If you are a student, using this package will very likely begin with using a
-% pre-made document template supplied by your instructor. There will likely be a
-% lot about the document that you won't understand at first. Look for a line that
-% says |\begin{document}| and a corresponding line that says |\end{document}| You
-% will add content between these two lines. Most of your content will be within the
-% \refEnv{problem} environment. Each use of this environment is intended to
-% encapsulate one complete written solution to one physics problem. In this way,
-% you can build a library of problem solutions for your own convenience.
-%
-% Since students are this package's primary audience, nearly all of the commands
-% have been defined with students in mind. Writing a problem solution in \LaTeX\
-% can be tedious to the beginner and some of the commands have been designed to
-% minimize the tedium. For example, if you want to calculate something using an
-% equation, you typically must write the equation, substitute numerical quantities
-% with units if necessary, do the actual calculation, and then state the final
-% result.Sometimes it is necessary to show intermediate steps in a calculation.
-% \mandi\ can help with this.
-%
-% Here is a set of commands that typeset standard equations with placeholders where
-% numerical quantities must be eventually inserted. Note that all of these commands
-% end with the word |places| as a reminder that they generate placeholders.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{genericinteractionplaces}
-{\marg{const}\marg{thing1}\marg{thing2}\marg{dist}\marg{direction}}
-Command for generic expression for an inverse square interaction. The five
-required arguments are, from left to right, a constant of proportionality, a
-physical property of object 1, a physical property of object 2, the objects'
-mutual separation, and a vector direction. In practice, these should all be
-provided in numerical form. Note that negative signs must be placed manually.
-\end{docCommand}
-\begin{dispExample}
-\genericinteractionplaces{}{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{genericfieldofparticleplaces}
-{\marg{const}\marg{thing}\marg{dist}\marg{direction}}
-Command for generic expression for an inverse square field. The four required
-arguments are, from left to right, a constant of proportionality, a physical
-property, relative distance to field point, and a vector direction. In practice,
-these should all be provided in numerical form. Note that negative signs must be
-placed manually.
-\end{docCommand}
-\begin{dispExample}
-\genericfieldofparticleplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{genericpotentialenergyplaces}
-{\marg{const}\marg{thing1}\marg{thing2}\marg{dist}}
-Command for generic expression for an inverse square energy. The four required
-arguments are, from left to right, a constant of proportionality, a physical
-property of object 1, a physical property of object 2, and the objects' mutual
-separation. In practice, these should all be provided in numerical form. Note that
-negative signs must be placed manually.
-\end{docCommand}
-\begin{dispExample}
-\genericpotentialenergyplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gravitationalinteractionplaces}
-{\marg{mass1}\marg{mass2}\marg{distance}\marg{direction}}
-Command for gravitational interaction. The four required arguments are, from
-left to right, the first object's mass, the second object's mass, the objects'
-mutual separation, and a vector direction. In practice, these should all be
-provided in numerical form. Note that negative signs must be placed manually.
-\end{docCommand}
-\begin{dispExample}
-\gravitationalinteractionplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gfieldofparticleplaces}
-{\marg{mass}\marg{distance}\marg{direction}}
-Command for gravitational field of a particle. The three required arguments are,
-from left to right, the object's mass, the distance from the source to the field
-point, and a vector direction. In practice, these should all be provided in
-numerical form. Note that negative signs must be placed manually.
-\end{docCommand}
-\begin{dispExample}
-\gfieldofparticleplaces{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gravitationalpotentialenergyplaces}
-{\marg{mass1}\marg{mass2}\marg{distance}}
-Command for gravitational potential energy. The three required arguments are,
-from left to right, the first object's mass, the second object's mass, and
-the object's mutual distance. In practice, these should all be provided in
-numerical form. Note the inclusion of the leading negative sign.
-\end{docCommand}
-\begin{dispExample}
-\gravitationalpotentialenergyplaces{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springinteractionplaces}
-{\marg{stiffness}\marg{stretch}\marg{direction}}
-Command for a spring interaction. The three required arguments are, from left
-to right, the spring stiffness, the spring's stretch, and a vector direction.
-In practice, these should all be provided in numerical form. Note that negative
-signs must be placed manually or absorbed into the displacement vector.
-\end{docCommand}
-\begin{dispExample}
-\springinteractionplaces{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springpotentialenergyplaces}
-{\marg{stiffness}\marg{stretch}}
-Command for spring potential energy. The two required arguments are, from left
-to right, the spring stiffness and the spring stretch. In practice, these should
-be provided in numerical form.
-\end{docCommand}
-\begin{dispExample}
-\springpotentialenergyplaces{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{genericelectricdipoleonaxisplaces}
-{\marg{const}\marg{charge}\marg{separation}\marg{dist}\marg{direction}}
-Command for generic expression for dipole field on the dipole's axis. The five
-required arguments are, from left to right, a constant of proportionality, a charge,
-a dipole separation, the distance to the field point, and a vector direction. In
-practice, these should all be provided in numerical form.
-\end{docCommand}
-\begin{dispExample}
-\genericelectricdipoleonaxisplaces{}{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{genericelectricdipoleplaces}
-{\marg{const}\marg{charge}\marg{separation}\marg{dist}\marg{direction}}
-Command for generic expression for dipole field. The five required arguments are,
-from left to right, a constant of proportionality, a charge, a dipole separation,
-the distance to the field point, and a vector direction. In practice, these should
-all be provided in numerical form.
-\end{docCommand}
-\begin{dispExample}
-\genericelectricdipoleplaces{}{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricinteractionplaces}
-{\marg{charge1}\marg{charge2}\marg{distance}\marg{direction}}
-Command for electric interaction. The four required arguments are, from left to
-right, the first object's charge, the second object's charge, the objects' mutual
-separation, and a vector direction. In practice, these should all be provided in
-numerical form.
-\end{docCommand}
-\begin{dispExample}
-\electricinteractionplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Efieldofparticleplaces}
-{\marg{charge}\marg{distance}\marg{direction}}
-Command for electric field of a particle. The three required argument are, from
-left to right, the particle's charge, the distance form the source to the field
-point, and a vector direction. In practice, these should all be provided in
-numerical form.
-\end{docCommand}
-\begin{dispExample}
-\Efieldofparticleplaces{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Bfieldofparticleplaces}
-{\marg{charge}\marg{magvel}\marg{magr}\marg{vhat}\marg{rhat}}
-Command for magnetic field of a particle. The five required arguments are, from
-left to right, the particle's charge, the particle's velocity, the distance from
-the source to the field point, the velocity's direction, and a direction vector
-from the source to the field point. In practice, these should all be provided in
-numerical form.
-\end{docCommand}
-\begin{dispExample}
-\Bfieldofparticleplaces{}{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricpotentialenergyplaces}
-{\marg{charge1}\marg{charge2}\marg{distance}}
-Command for electric potential energy. The three required arguments are, from
-left to right, the first object's charge, the second object's charge, and the
-objects' mutual distance. In practice, these should all be provided in numerical
-form.
-\end{docCommand}
-\begin{dispExample}
-\electricpotentialenergyplaces{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricdipoleonaxisplaces}
-{\marg{charge}\marg{separation}\marg{dist}\marg{direction}}
-Command for dipole electric field on the dipole's axis. The four required arguments
-are, from left to right, a charge, a dipole separation, the distance to the field
-point, and a vector direction. In practice, these should all be provided in numerical
-form.
-\end{docCommand}
-\begin{dispExample}
-\electricdipoleonaxisplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricdipoleonbisectorplaces}
-{\marg{charge}\marg{separation}\marg{dist}\marg{direction}}
-Command for dipole electric field. The four required arguments are, from left
-to right, a charge, a dipole separation, the distance to the field point, and
-a vector direction. In practice, these should all be provided in numerical form.
-\end{docCommand}
-\begin{dispExample}
-\electricdipoleonbisectorplaces{}{}{}{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-% The underlying strategy is to \emph{think about how you would say what you want
-% to write and then write it the way you would say it}. With a few exceptions, this
-% is how \mandi\ works. You need not worry about units because \mandi\ knows what
-% SI units go with which physical quantities. You can define new quantities so that
-% \mandi\ knows about them and in doing so, you give the new quantities the same
-% names they would normally have.
-%
-% \hypertarget{target5}{So} now how to you go about getting numerical values (with
-% units) into the placeholders? Use the \refCom{define} command to define a variable
-% containing a desired quantity, and then pass that variable to the above commands
-% and that quantity will appear in the corresponding placeholder.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{define}{\marg{variablename}\marg{quantity}}
-Defines a variable, actually a new command, named \cs{variablename} and sets its
-value to \cs{quantity}. \textbf{Note that digits are not permitted in command names
-in \LaTeX.}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\define{\massone}{\mass{25}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% Suppose you want to calculate the gravitational force on one object due to
-% another. You need two masses, and their mutual distance, and a direction. You
-% can say, for example, |\define{\massone}{\mass{5}| to create a variable |\massone|
-% containing a mass of \mass{5}. Note that you don't have to worry about units
-% because the \refCom{mass} command handles that for you. Similarly, you can go on
-% and say |\define{\masstwo}{\mass{12}| and |\define{\myr}{\displacement{5}| and
-% |\define{\mydir}{\mivector{0,-1,0}|. Now just call the
-% \refCom{gravitationalinteractionplaces} command with these arguments (in the
-% correct order of course) and \LaTeX\ will do the rest when you compile your
-% document. The entire process would look like this:
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{dispExample}
-\define{\massone}{\mass{5}}
-\define{\masstwo}{\mass{12}}
-\define{\myr}{\displacement{5}}
-\define{\mydir}{\mivector{0,-1,0}}
-\gravitationalinteractionplaces{\massone}{\masstwo}{\myr}{\mydir} =
-\vectorforce{0,-1.60\xtento{-10},0}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-% Of course you must calculate the final numerical result yourself because \mandi\
-% doesn't (yet) do calculations. One very important restriction on variable names is
-% that \LaTeX\ doesn't allow digits in command or variable names and thus that
-% restriction applies here too.
-%
-% This barely scratches the surface in describing \mandi\ so continue reading this
-% document to see everything it can do. You will learn new commands as you need
-% them in your work. To start with, you should at least read the section on
-% \hyperlink{target1}{SI units} and the section on
-% \hyperlink{target2}{physical quantities}.
-%
-% \newpage
-% \section{Features and Commands}
-% \hypertarget{target1}{\subsection{SI Base Units and Dimensions}}
-% This is not a tutorial on SI units and the user is assumed
-% to be familiar with SI rules and usage. Begin by defining shortcuts for the units
-% for the seven SI base quantities:
-% \emph{spatial displacement} (what others call \emph{length}), \emph{mass},
-% \emph{temporal displacement} (what others call \emph{time}, but we will call
-% it \emph{duration} in most cases), \emph{electric current}, \emph
-% {thermodynamic temperature}, \emph{amount}, and \emph{luminous intensity}.
-% These shortcuts are used internally and need not explicitly be invoked by the
-% user.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{m}{}
- Command for \href{https://en.wikipedia.org/wiki/metre}{metre}, the SI unit of
- spatial displacement (length).
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{kg}{}
- Command for \href{https://en.wikipedia.org/wiki/kilogram}{kilogram}, the SI unit
- of mass.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{s}{}
- Command for \href{https://en.wikipedia.org/wiki/second}{second}, the SI unit
- of temporal displacement (duration).
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{A}{}
- Command for \href{https://en.wikipedia.org/wiki/ampere}{ampere}, the SI unit
- of electric current.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{K}{}
- Command for \href{https://en.wikipedia.org/wiki/kelvin}{kelvin}, the SI unit
- of thermodynamic temperature.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mol}{}
- Command for \href{https://en.wikipedia.org/wiki/mole}{mole}, the SI unit of
- amount.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{cd}{}
- Command for \href{https://en.wikipedia.org/wiki/candela}{candela}, the SI
- unit of luminous intensity.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-% If \mandi\ was loaded with \opt{baseunits}, then every physical quantity will
-% have a unit that is some product of powers of these seven base SI units.
-% Exceptions are angular quantities, which will include either degrees or radians
-% depending upon the application. Again, this is what we mean by \baseunits\ form.
-%
-% Certain combinations of the SI base units have nicknames and each such
-% combination and nickname constitutes a \emph{derived unit}. Derived units are
-% no more physically meaningful than the base units, they are merely nicknames for
-% particular combinations of base units. An example of a derived unit is the
-% newton, for which the symbol (it is not an abbreviation) is \newton. However,
-% the symbol \newton\ is merely a nickname for a particular combination of base
-% units. It is not the case that every unique combination of base units has a
-% nickname, but those that do are usually named in honor of a scientist.
-% Incidentally, in such cases, the symbol is capitalized but the \emph{name}
-% of the unit is \emph{never} capitalized. Thus we would write the name of the
-% derived unit of force as newton and not Newton. Again, using these select
-% nicknames for certain combinations of base units is what we mean by \drvdunits\
-% form.
-%
-% \subsection{SI Dimensions}
-% For each SI unit, there is at least one corresponding dimension. Every physical
-% quantity is some multiplicative product of each of the seven basic SI dimensions
-% raised to a power.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimddisplacement}{}
-Command for the symbol for the dimension of displacement.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-displacement has dimension of \dimdisplacement
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimmass}{}
-Command for the symbol for the dimension of mass.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-mass has dimension of \dimmass
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimduration}{}
-Command for the symbol for the dimension of duration.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-duration has dimension of \dimduration
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimcurrent}{}
-Command for the symbol for the dimension of current.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-current has dimension of \dimcurrent
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimtemperature}{}
-Command for the symbol for the dimension of temperature.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-temperature has dimension of \dimtemperature
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \section{Student/Instructor Quick Guide}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimamount}{}
-Command for the symbol for the dimension of amount.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-amount has dimension of \dimamount
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Use \refCom{vec} to typeset the symbol for a vector. Use \refCom{magnitude}
+% to typeset the symbol for a vector's magnitude. Use \refCom{dirvec} to
+% typeset the symbol for a vector's direction. Use \refCom{changein} to
+% typeset the symbol for the change in a vector or scalar. Use
+% \refCom{zerovec} to typeset the zero vector. Use \refCom{timestento} to
+% typeset scientific notation.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{dimluminous}{}
-Command for the symbol for the dimension of luminous intensity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-luminous has dimension of \dimluminous
+\begin{dispExample*}{lefthand ratio=0.80}
+ \( \vec{p} \) or \( \vec*{p} \) \\
+ \( \vec{p}_{\symup{final}} \) or \( \vec*{p}_{\symup{final}} \) \\
+ \( \magnitude{\vec{p}} \) or \( \magnitude*{\vec{p}_{\symup{final}}} \) \\
+ \( \dirvec{p} \) or \( \dirvec*{p} \) \\
+ \( \changein \vec{p} \) or \( \changein t \) \\
+ \( \zerovec \) or \( \zerovec* \) \\
+ \( 6.02\timestento{-19} \)
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-% \hypertarget{target2}{\subsection{Defining Physical Quantities}}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{newphysicsquantity}
-{\marg{newname}\marg{\baseunits}\oarg{\drvdunits}\oarg{\altnunits}}
-Defines a new physical quantity and its associated commands.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-% Using this command causes several things to happen.
-% \begin{itemize}
-% \item A command \colDef{\cs{newname}}\marg{magnitude}, where \colDef{newname}
-% is the first argument of \colDef{\cs{newphysicsquantity}}, is created that
-% takes one mandatory argument, a numerical magnitude. Subsequent use of your
-% defined scalar quantity can be invoked by typing \colDef{\cs{newname}}
-% \marg{magnitude} and the units will be typeset according to the options
-% given when \mandi\ was loaded. Note that if the \drvdunits\ and \altnunits\
-% forms are not specified, they will be populated with the \baseunits\ form.
-% \item A command \colDef{\cs{newnamebaseunit}}\marg{magnitude} is created that
-% expresses the quantity and its units in \baseunits\ form.
-% \item A command \colDef{\cs{newnamedrvdunit}}\marg{magnitude} is created that
-% expresses the quantity and its units in \drvdunits\ form. This command is
-% created whether or not the first optional argument is provided.
-% \item A command \colDef{\cs{newnamealtnunit}}\marg{magnitude} is created that
-% expresses the quantity and its units in \altnunits\ form. This command is
-% created whether or not the first optional argument is provided.
-% \item A command \colDef{\cs{newnameonlybaseunit}}\marg{magnitude} is created
-% that expresses \textbf{only} the quantity's units in \baseunits\ form.
-% \item A command \colDef{\cs{newnameonlydrvdunit}}\marg{magnitude} is created
-% that expresses \textbf{only} the quantity's units in \drvdunits\ form.
-% \item A command \colDef{\cs{newnameonlyaltnunit}}\marg{magnitude} is created
-% that expresses \textbf{only} the quantity's units in \altnunits\ form.
-% \item A command \colDef{\cs{newnamevalue}}\marg{magnitude} is created that
-% expresses \textbf{only} the quantity's numerical value.
-% \end{itemize}
-%
-% As an example, consider momentum. The following commands are defined:
-%
-% \begin{quotation}
-% \begin{tabular}{l l l}
-% |\momentum{3}| &\momentum{3} & unit set by global options \\
-% |\momentumbaseunit{3}| &\momentumbaseunit{3} & quantity with base unit \\
-% |\momentumdrvdunit{3}| &\momentumdrvdunit{3} & quantity with derived unit \\
-% |\momentumaltnunit{3}| &\momentumaltnunit{3} & quantity with alternate unit \\
-% |\momentumvalue{3}| &\momentumvalue{3} & selects only numerical value \\
-% |\momentumonlybaseunit|&\momentumonlybaseunit & selects only base unit \\
-% |\momentumonlydrvdunit|&\momentumonlydrvdunit & selects only derived unit \\
-% |\momentumonlyaltnunit|&\momentumonlyaltnunit & selects only alternate unit
-% \end{tabular}
-% \end{quotation}
-%
-% Momentum is a vector quantity, so obviously this command really refers to the
-% magnitude of a momentum vector. There is an interesting, and as far as I can
-% tell unwritten, convention in physics that we use the same name for a vector
-% and its magnitude with one exception, and that is for velocity, the magnitude
-% of which we sometimes call speed. Conceptually, however, velocity and speed are
-% different entities. Therefore, \mandi\ has different commands for them. Actually,
-% the \refCom{speed} command is just an alias for \refCom{velocity} and should only
-% be used for scalars and never for vectors. This convention means that the same
-% name is used for vector quantities and the corresponding magnitudes.
-%
-% \subsubsection{Defining Vector Quantities}
-%
-% All physical quantities are defined as in the momentum example above regardless
-% of whether the quantity is a scalar or a vector. To typeset a vector quantity
-% in terms of its components in some coordinate system (usually an orthonormal
-% cartesian system, either specify an argument consisting of a vector with components
-% as a comma separated list in a \refCom{mivector} command or prepend the quantity
-% name with |vector|. So specifying a momentum vector is as simple as
+% Use a \linktoplace{ssec:physquants}{physical quantity's} name to typeset
+% a magnitude and that quantity's units. If the quantity is a vector, you
+% can add |vector| either to the beginning or the end of the quantity's
+% name. For example, if you want momentum, use \refCom{momentum} and
+% its variants.
%
%\iffalse
%<*example>
%\fi
\begin{dispExample}
-\momentum{\mivector{3,2,-1}} \\
-\vectormomentum{3,2,-1}
+ \( \momentum{7.071} \) \\
+ \( \vectormomentum{3,-4,5} \) \\
+ \( \momentumvector{3,-4,5} \)
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-% where the notation corresponds to that used in \mi.
-%
-% \subsubsection{First Semester Physics}
-% The first semester of most introductory calculus-based physics courses focuses
-% on mechanics, dynamics, and statistical mechanics.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{displacement}{\marg{magnitude or vector}}
-Command for displacement.
-\end{docCommand}
-\begin{docCommand}{vectordisplacement}{\marg{commadelimitedlistofcomps}}
-Command for vector displacement.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\displacement{5} \\
-\displacement{\mivector{3,2,-1}} \\
-\vectordisplacement{1,2,3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mass}{\marg{magnitude}}
-Command for mass.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\mass{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{duration}{\marg{magnitude}}
-Command for duration.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\duration{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{current}{\marg{magnitude}}
-Command for current.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\current{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{temperature}{\marg{magnitude}}
-Command for temperature.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\temperature{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{amount}{\marg{magnitude}}
-Command for amount.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\amount{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{luminous}{\marg{magnitude}}
-Command for luminous intensity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\luminous{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% While we're at it, let's also go ahead and define a few non-SI units from
-% astronomy, astrophysics, and old school physics.
+% Use a \linktoplace{ssec:physconsts}{physical constant's} name
+% to typeset its numerical value and units. Append |mathsymbol|
+% to the constant's name to get its mathematical symbol. For
+% example, if you want to typeset the vacuum permittivity, use
+% \refCom{vacuumpermittivity} and its variant.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{infeet}{\marg{magnitude}}
-Command for magnitude of displacement in feet. This is still sometimes used
-in engineering applications and is frequently seen in older physics textbooks.
-\end{docCommand}
-\begin{docCommand}{infeetpersecond}{\marg{magnitude}}
-Command for magnitude of velocity in feet per second. This is still sometimes used
-in engineering applications and is frequently seen in older physics textbooks.
-\end{docCommand}
-\begin{docCommand}{infeetpersecondsquared}{\marg{magnitude}}
-Command for magnitude of acceleration in feet per second. This is still sometimes
-used in engineering applications and is frequently seen in older physics textbooks.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\infeet{5} \\
-\infeetpersecond{5} \\
-\infeetpersecondsquared{32}
+\begin{dispExample*}{lefthand ratio=0.70}
+ \( \vacuumpermittivitymathsymbol = \vacuumpermittivity \)
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
+% Use \refCom{mivector} to typeset symbolic vectors with components.
+% Use the aliases \refCom{direction} to typeset a direction or unit
+% vector.
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{planeangle}{\marg{magnitude}}
-Command for plane angle in radians.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\planeangle{5}
+\begin{dispExample*}{sidebyside=false}
+ \( \mivector{\slot,\slot,\slot} \) or \( \mivector{p_x,p_y,p_z} \) \\
+ \( \direction{\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}} \) or
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{solidangle}{\marg{magnitude}}
-Command for solidangle.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\solidangle{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Use \refEnv{physicsproblem} and \refEnv{parts} and \refCom{problempart}
+% for problems. For step-by-step mathematical solutions use
+% \refEnv{physicssolution}. Use \refEnv{glowscriptblock} to typeset
+% \href{https://\gsurl}{\GlowScript} programs. Use \refCom{vpythonfile} to
+% typeset \href{https://\vpurl}{VPython} program files.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{indegrees}{\marg{magnitude}}
-Command for plane angle in degrees.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\indegrees{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \newpage
+% \section{The \mandi\ Package}\setplace{sec:mandipkg}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inarcminutes}{\marg{magnitude}}
-Command for plane angle in minutes of arc.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inarcminutes{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Load \mandi\ as you would any package in your preamble.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{inarcseconds}{\marg{magnitude}}
-Command for plane angle in seconds of arc.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inarcseconds{5}
-\end{dispExample*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \usepackage[options]{mandi}
+\end{dispListing*}
%\iffalse
%</example>
%\fi
@@ -1545,1809 +351,881 @@ Command for plane angle in seconds of arc.
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{inFarenheit}{\marg{magnitude}}
-Command for temperature in degrees Farenheit.
+\begin{docCommand}{mandiversion}{}
+ Typesets the current version and build date.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inFarenheit{68}
+\begin{dispExample*}{sidebyside=false}
+ The version is \mandiversion\ and is a stable build.
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inCelsius}{\marg{magnitude}}
-Command for temperature in degrees Celsius.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inCelsius{20}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \subsection{Package Options}
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{ineV}{\marg{magnitude}}
-Command for energy in electron volts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ineV{10.2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ineVocs}{\marg{magnitude}}
-Command for mass in \(\mathrm{eV}\per c^2\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ineVocs{1.1}
-\end{dispExample*}
+\begin{docKeys}[%
+ doc new = 2021-01-30,%
+ doc keypath = {},%
+ ]%
+ {%
+ {%
+ doc name = units,%
+ doc parameter = {=\meta{type of unit}},%
+ doc description = {initially unspecified, set to \docValue{alternate}},%
+ },%
+ {%
+ doc name = preciseconstants,%
+ doc parameter = {=\meta{boolean}},%
+ doc description = {initially unspecified, set to \docValue{false}},%
+ },%
+ }%
+ Now \mandi\ uses a key-value interface for options.
+ The \refKey{units} key can be set to \docValue{base}, \docValue{derived},
+ or \docValue{alternate}. The \refKey{preciseconstants} key is always
+ either \docValue{true} or \docValue{false}.
+\end{docKeys}
%\iffalse
%</example>
%\fi
%
+% \subsection{The \texttt{mandisetup} Command}
+%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{ineVoc}{\marg{magnitude}}
-Command for momentum in \(\mathrm{eV}\per c\).
+\begin{docCommand}[doc new = 2021-02-17]{mandisetup}{\marg{options}}
+ Command to set package options on the fly after loadtime. This
+ can be done in the preamble or inside the
+ |\begin{document}...\end{document}| environment.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ineVoc{3.6}
-\end{dispExample*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \mandisetup{units=base}
+\end{dispListing*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \mandisetup{preciseconstants}
+\end{dispListing*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \mandisetup{preciseconstants=false}
+\end{dispListing*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inMeV}{\marg{magnitude}}
-Command for energy in millions of electron volts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inMeV{2.2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \subsection{\lualatex\ is Required}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inMeVocs}{\marg{magnitude}}
-Command for mass in \(\mathrm{MeV}\per c^2\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inMeVocs{0.511}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% In order to make use of better fonts and Unicode features, \mandi\ now
+% requires the \lualatex\ engine for processing documents. It will not
+% work with other engines.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inMeVoc}{\marg{magnitude}}
-Command for momentum in \(\mathrm{MeV}\per c\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inMeVoc{3.6}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \newpage
+% \subsection{Physical Quantities}
+% \subsubsection{Typesetting Physical Quantities}\setplace{ssec:physquants}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inGeV}{\marg{magnitude}}
-Command for energy in millions of electron volts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inGeV{2.2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Typesetting physical quantities and constants using semantically appropriate
+% names, along with the correct
+% \href{https://en.wikipedia.org/wiki/International_System_of_Units}{SI units},
+% is the core function of \mandi. Take momentum as the prototypical physical
+% quantity in an introductory physics course.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{inGeVocs}{\marg{magnitude}}
-Command for mass in \(\mathrm{GeV}\per c^2\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inGeVocs{0.511}
+\begin{docCommands}
+ {%
+ {%
+ doc name = momentum,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = momentumvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectormomentum,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+ Command for momentum and its vector variants. The default units will depend
+ on the options passed to \mandi\ at load time. Alternate units are the
+ default. Other units can be forced as demonstrated. The vector variants can
+ take more than three components. Note the other variants for the quantity's
+ value and units.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.60}
+ \( \momentum{5} \) \\
+ \( \momentumvalue{5} \) \\
+ \( \momentumbaseunits{5} \) \\
+ \( \momentumderivedunits{5} \) \\
+ \( \momentumalternateunits{5} \) \\
+ \( \momentumvector{2,3,4} \) \\
+ \( \vectormomentum{2,3,4} \) \\
+ \( \momentum{\mivector{2,3,4}} \) \\
+ \( \momentumonlybaseunits \) \\
+ \( \momentumonlyderivedunits \) \\
+ \( \momentumonlyalternateunits \) \\
+ \( \momentumvectorvalue{2,3,4} \) \\
+ \( \vectormomentumvalue{2,3,4} \) \\
+ \( \momentumvectorbaseunits{2,3,4} \) \\
+ \( \vectormomentumbaseunits{2,3,4} \) \\
+ \( \momentumvectorderivedunits{2,3,4} \) \\
+ \( \vectormomentumderivedunits{2,3,4} \) \\
+ \( \momentumvectoralternateunits{2,3,4} \) \\
+ \( \vectormomentumalternateunits{2,3,4} \) \\
+ \( \momentumvectoronlybaseunits \) \\
+ \( \vectormomentumonlybaseunits \) \\
+ \( \momentumvectoronlyderivedunits \) \\
+ \( \vectormomentumonlyderivedunits \) \\
+ \( \momentumvectoronlyalternateunits \) \\
+ \( \vectormomentumonlyalternateunits \)
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inGeVoc}{\marg{magnitude}}
-Command for momentum in \(\mathrm{GeV}\per c\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inGeVoc{3.6}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Commands that include the name of a physical quantity typeset units, so
+% they shouldn't be used for algebraic or symbolic values of components.
+% For example, one shouldn't use |\vectormomentum{mv_x,mv_y,mv_z}| but
+% instead the generic |\mivector{mv_x,mv_y,mv_z}| instead.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inamu}{\marg{magnitude}}
-Command for mass in atomic mass units.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inamu{4.002602}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Checking Physical Quantities}
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{inAU}{\marg{magnitude}}
-Command for displacement in astronomical units.
+\begin{docCommand}[doc new = 2021-02-16]{checkquantity}{\marg{name}}
+ Command to check and typeset the command, base units,
+ derived units, and alternate units of a defined physical
+ quantity.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inAU{5.2}
-\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inly}{\marg{magnitude}}
-Command for displacement in light years.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inly{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Predefined Physical Quantities}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{incyr}{\marg{magnitude}}
-Command for displacement in light years written differently.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\incyr{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Every other defined physical quantity can be treated similarly. Just replace
+% |momentum| with the quantity's name. Obviously, the variants that begin with
+% |\vector| will not be defined for scalar quantities. Here are all the
+% physical quantities, with all their units, defined in \mandi. Rememeber that
+% units are not present with symbolic (algebraic) quantities, so do not use
+% the |\vector| variants of these commands for symbolic components.
+% Use \refCom{mivector} instead.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{inpc}{\marg{magnitude}}
-Command for displacement in parsecs.
+\begin{docCommands}
+ {%
+ {%
+ doc name = acceleration,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = accelerationvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectoracceleration,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{acceleration}
+\begin{docCommand}{amount}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inpc{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarL}{\marg{magnitude}}
-Command for luminosity in solar multiples.
+\checkquantity{amount}
+\begin{docCommands}
+ {%
+ {%
+ doc name = angularacceleration,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = angularaccelerationvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorangularacceleration,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{angularacceleration}
+\begin{docCommand}{angularfrequency}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarL{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarT}{\marg{magnitude}}
-Command for temperature in solar multiples.
+\checkquantity{angularfrequency}
+\begin{docCommands}
+ {%
+ {%
+ doc name = angularimpulse,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = angularimpulsevector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorangularimpulse,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{angularimpulse}
+\begin{docCommands}
+ {%
+ {%
+ doc name = angularmomentum,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = angularmomentumvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorangularmomentum,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{angularmomentum}
+\begin{docCommands}
+ {%
+ {%
+ doc name = angularvelocity,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = angularvelocityvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorangularvelocity,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{angularvelocity}
+\begin{docCommand}{area}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarT{2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarR}{\marg{magnitude}}
-Command for radius in solar multiples.
+\checkquantity{area}
+\begin{docCommand}{areachargedensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarR{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarM}{\marg{magnitude}}
-Command for mass in solar multiples.
+\checkquantity{areachargedensity}
+\begin{docCommand}{areamassdensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarM{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarF}{\marg{magnitude}}
-Command for flux in solar multiples.
+\checkquantity{areamassdensity}
+\begin{docCommand}{capacitance}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarF{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarf}{\marg{magnitude}}
-Command for apparent flux in solar multiples.
+\checkquantity{capacitance}
+\begin{docCommand}{charge}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarf{4.3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarMag}{\marg{magnitude}}
-Command for absolute magnitude in solar multiples.
+\checkquantity{charge}
+\begin{docCommands}
+ {%
+ {%
+ doc name = cmagneticfield,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = cmagneticfieldvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorcmagneticfield,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{cmagneticfield}
+\begin{docCommand}{conductance}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarMag{2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarmag}{\marg{magnitude}}
-Command for apparent magnitude in solar multiples.
+\checkquantity{conductance}
+\begin{docCommand}{conductivity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarmag{2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{insolarD}{\marg{magnitude}}
-Command for distance in solar multiples.
+\checkquantity{conductivity}
+\begin{docCommand}{conventionalcurrent}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{insolard}{\marg{magnitude}}
-Identical to \refCom{insolarD} but uses \(d\).
+\checkquantity{conventionalcurrent}
+\begin{docCommand}{current}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\insolarD{2} \\
-\insolard{2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% Angles are confusing in introductory physics because sometimes we write
-% the unit and sometimes we do not. Some concepts, such as flux, are simplified
-% by introducing solid angle.
-%
-% Now let us continue into first semester physics, defining quantities in the
-% approximate order in which they appear in such a course. Use \refCom{timestento}
-% or \refCom{xtento} to get scientific notation, with the mantissa immediately
-% preceding the command and the power as the required argument. \refCom{timestento}
-% has an optional second argument that specifies a unit, but that is not needed or
-% used in the following examples.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{direction}{\marg{commadelimitedlistofcomps}}
-Command for coordinate representation of a vector direction. Direction has no unit.
+\checkquantity{current}
+\begin{docCommands}
+ {%
+ {%
+ doc name = currentdensity,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = currentdensityvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorcurrentdensity,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{currentdensity}
+\begin{docCommand}{dielectricconstant}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectordirection}{\marg{commadelimitedlistofcomps}}
-This is an alias for \refCom{direction}.
+\checkquantity{dielectricconstant}
+\begin{docCommands}
+ {%
+ {%
+ doc new = 2021-02-24,%
+ doc name = direction,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc name = directionvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectordirection,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{direction}
+\begin{docCommands}
+ {%
+ {%
+ doc name = displacement,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = displacementvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectordisplacement,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{displacement}
+\begin{docCommand}{duration}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample}
-\direction{a,b,c} \\
-\direction{\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}} \\
-\vectordirection{a,b,c} \\
-\vectordirection{\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{velocityc}{\marg{magnitude or vector}}
-Command for velocity as a fraction of \(c\).
+\checkquantity{duration}
+\begin{docCommands}
+ {%
+ {%
+ doc name = electricdipolemoment,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = electricdipolemomentvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ { doc name = vectorelectricdipolemoment,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{electricdipolemoment}
+\begin{docCommands}
+ {%
+ {%
+ doc name = electricfield,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = electricfieldvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorelectricfield,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{electricfield}
+\begin{docCommand}{electricflux}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectorvelocityc}{\marg{commadelimitedlistofcomps}}
-Command for vector velocity as a fraction of \(c\).
+\checkquantity{electricflux}
+\begin{docCommand}{electricpotential}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\velocityc{0.9987} \\
-\velocityc{\mivector{0,0.9987,0}} \\
-\mivector{\velocityc{\frac{1}{\sqrt{3}}} \\
-\velocityc{\frac{1}{\sqrt{3}}} \\
-\velocityc{\frac{1}{\sqrt{3}}}} \\
-\vectorvelocityc{0,0.9987,0}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{velocity}{\marg{magnitude or vector}}
-Command for velocity.
+\checkquantity{electricpotential}
+\begin{docCommand}[doc new = 2021-05-01]{electricpotentialdifference}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectorvelocity}{\marg{commadelimitedlistofcomps}}
-Command for vector velocity.
+\checkquantity{electricpotentialdifference}
+\begin{docCommand}{electroncurrent}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\velocity{2.34} \\
-\velocity{\mivector{3,2,-1}} \\
-\vectorvelocity{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{speed}{\marg{magnitude}}
-Command for speed. Technically, velocity is defined as the quotient of
-displacement and duration while speed is defined as the quotient of distance
-traveled and duration. They have the same dimension and unit, but are
-conceptually different so separate commands are provided. I've never seen speed
-used as anything other than a scalar.
+\checkquantity{electroncurrent}
+\begin{docCommand}{emf}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\velocity{8.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{lorentzfactor}{\marg{magnitude}}
-Command for relativistic Lorentz factor. Obviously this command doesn't do
-anything visually, but is included for thinking about calculations where this
-quantity is needed.
+\checkquantity{emf}
+\begin{docCommand}{energy}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\lorentzfactor{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{momentum}{\marg{magnitude or vector}}
-Command for momentum.
+\checkquantity{energy}
+\begin{docCommand}[doc new = 2021-04-15]{energyinev}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectormomentum}{\marg{commadelimitedlistofcomps}}
-Command for vector momentum.
+\checkquantity{energyinev}
+\begin{docCommand}[doc new = 2021-04-15]{energyinkev}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\momentum{2.34} \\
-\momentum{\mivector{3,2,-1}} \\
-\vectormomentum{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{acceleration}{\marg{magnitude or vector}}
-Command for acceleration.
+\checkquantity{energyinkev}
+\begin{docCommand}[doc new = 2021-04-15]{energyinmev}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectoracceleration}{\marg{commadelimitedlistofcomps}}
-Command for vector acceleration.
+\checkquantity{energyinmev}
+\begin{docCommand}{energydensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\acceleration{2.34} \\
-\acceleration{\mivector{3,2,-1}} \\
-\vectoracceleration{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gravitationalfield}{\marg{commadelimitedlistofcomps}}
-Command for gravitational field.
+\checkquantity{energydensity}
+\begin{docCommands}
+ {%
+ {%
+ doc name = energyflux,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = energyfluxvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorenergyflux,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{energyflux}
+\begin{docCommand}{entropy}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectorgravitationalfield}{\marg{magnitude or vector}}
-Command for vector gravitational field.
+\checkquantity{entropy}
+\begin{docCommands}
+ {%
+ {%
+ doc name = force,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = forcevector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorforce,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{force}
+\begin{docCommand}{frequency}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\gravitationalfield{2.34} \\
-\gravitationalfield{\mivector{3,2,-1}} \\
-\vectorgravitationalfield{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{frequency}
+\begin{docCommands}
+ {%
+ {%
+ doc name = gravitationalfield,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = gravitationalfieldvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorgravitationalfield,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{gravitationalfield}
\begin{docCommand}{gravitationalpotential}{\marg{magnitude}}
-Command for gravitational potential.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\gravitationalpotential{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{impulse}{\marg{magnitude or vector}}
-Command for impulse. Impulse and change in momentum are conceptually different
-and a case can be made for expressing the in different, but equivalent, units.
-\end{docCommand}
-\begin{docCommand}{vectorimpulse}{\marg{commadelimitedlistofcomps}}
-Command for vector impulse.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\impulse{2.34} \\
-\impulse{\mivector{3,2,-1}} \\
-\vectorimpulse{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{force}{\marg{magnitude or vector}}
-Command for force.
\end{docCommand}
-\begin{docCommand}{vectorforce}{\marg{commadelimitedlistofcomps}}
-Command for vector force.
+\checkquantity{gravitationalpotential}
+\begin{docCommand}[doc new = 2021-05-01]{gravitationalpotentialdifference}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\force{2.34} \\
-\force{\mivector{3,2,-1}} \\
-\vectorforce{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springstiffness}{\marg{magnitude}}
-Command for spring stiffness.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\springstiffness{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springstretch}{\marg{magnitude}}
-Command for spring stretch.
+\checkquantity{gravitationalpotentialdifference}
+\begin{docCommands}
+ {%
+ {%
+ doc name = impulse,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = impulsevector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorimpulse,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{impulse}
+\begin{docCommand}{indexofrefraction}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\springstretch{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{area}{\marg{magnitude}}
-Command for area.
+\checkquantity{indexofrefraction}
+\begin{docCommand}{inductance}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\area{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{volume}{\marg{magnitude}}
-Command for volume.
+\checkquantity{inductance}
+\begin{docCommand}{linearchargedensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\volume{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{linearchargedensity}
\begin{docCommand}{linearmassdensity}{\marg{magnitude}}
-Command for linear mass density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\linearmassdensity{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{areamassdensity}{\marg{magnitude}}
-Command for area mass density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\areamassdensity{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{volumemassdensity}{\marg{magnitude}}
-Command for volume mass density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\volumemassdensity{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{youngsmodulus}{\marg{magnitude}}
-Command for Young's modulus.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\youngsmodulus{2.34\timestento{9}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{work}{\marg{magnitude}}
-Command for work. Energy and work are conceptually different and a case can
-be made for expressing them in different, but equivalent, units.
+\checkquantity{linearmassdensity}
+\begin{docCommand}[doc updated = 2021-05-02]{luminousintensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\work{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{energy}{\marg{magnitude}}
-Command for energy. Work and energy are conceptually different and a case can
-be made for expressing them in different, but equivalent, units.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\energy{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{power}{\marg{magnitude}}
-Command for power.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\power{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{specificheatcapacity}{\marg{magnitude}}
-Command for specific heat capacity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\specificheatcapacity{4.18\xtento{3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularvelocity}{\marg{magnitude or vector}}
-Command for angular velocity.
-\end{docCommand}
-\begin{docCommand}{vectorangularvelocity}{\marg{commadelimitedlistofcomps}}
-Command for vector angular velocity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\angularvelocity{2.34} \\
-\angularvelocity{\mivector{3,2,-1}} \\
-\vectorangularvelocity{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularacceleration}{\marg{magnitude or vector}}
-Command for angular acceleration.
-\end{docCommand}
-\begin{docCommand}{vectorangularacceleration}{\marg{commadelimitedlistofcomps}}
-Command for vector angular acceleration.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\angularacceleration{2.34} \\
-\angularacceleration{\mivector{3,2,-1}} \\
-\vectorangularacceleration{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularmomentum}{\marg{magnitude or vector}}
-Command for angular momentum. Whether or not the units contain radians
-is determined by whether the \opt{useradians} option was used when
-\pkgname{mandi} was loaded.
-\end{docCommand}
-\begin{docCommand}{vectorangularmomentum}{\marg{commadelimitedlistofcomps}}
-Command for vector angular momentum.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\angularmomentum{2.34} \\
-\angularmomentum{\mivector{3,2,-1}} \\
-\vectorangularmomentum{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularimpulse}{\marg{magnitude or vector}}
-Command for angular impulse. Whether or not the units contain radians is
-determined by whether the \opt{useradians} option was used when
-\pkgname{mandi} was loaded.
+\checkquantity{luminousintensity}
+\begin{docCommand}{magneticcharge}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectorangularimpulse}{\marg{commadelimitedlistofcomps}}
-Command for vector angular impulse.
+\checkquantity{magneticcharge}
+\begin{docCommands}
+ {%
+ {%
+ doc name = magneticdipolemoment,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = magneticdipolemomentvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectormagneticdipolemoment,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{magneticdipolemoment}
+\begin{docCommands}
+ {%
+ {%
+ doc name = magneticfield,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = magneticfieldvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectormagneticfield,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{magneticfield}
+\begin{docCommand}{magneticflux}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\angularimpulse{2.34} \\
-\angularimpulse{\mivector{3,2,-1}} \\
-\vectorangularimpulse{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{torque}{\marg{magnitude or vector}}
-Command for torque. Whether or not the units contain radians is
-determined by whether the \opt{useradians} option was used when
-\pkgname{mandi} was loaded.
+\checkquantity{magneticflux}
+\begin{docCommand}{mass}{\marg{magnitude}}
\end{docCommand}
-\begin{docCommand}{vectortorque}{\marg{commadelimitedlistofcomps}}
-Command for vector torque.
+\checkquantity{mass}
+\begin{docCommand}{mobility}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\torque{2.34} \\
-\torque{\mivector{3,2,-1}} \\
-\vectortorque{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{mobility}
\begin{docCommand}{momentofinertia}{\marg{magnitude}}
-Command for moment of inertia.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\momentofinertia{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{entropy}{\marg{magnitude}}
-Command for entropy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\entropy{2.34}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{wavelength}{\marg{magnitude}}
-Command for wavelength.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\wavelength{4.00\timestento{-7}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{wavenumber}{\marg{magnitude or vector}}
-Command for wavenumber.
-\end{docCommand}
-\begin{docCommand}{vectorwavenumber}{\marg{commadelimitedlistofcomps}}
-Command for vector wavenumber.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\wavenumber{2.50\timestento{6}} \\
-\wavenumber{\mivector{3,2,-1}} \\
-\vectorwavenumber{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{frequency}{\marg{magnitude}}
-Command for frequency.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\frequency{7.50\timestento{14}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularfrequency}{\marg{magnitude}}
-Command for angularfrequency.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\angularfrequency{4.70\timestento{15}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Second Semester Physics}
-% The second semester of introductory physics focuses on electromagnetic theory,
-% and there are many primary and secondary quantities.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{charge}{\marg{magnitude}}
-Command for electric charge.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\charge{2\timestento{-9}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{permittivity}{\marg{magnitude}}
-Command for permittivity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\permittivity{9\timestento{-12}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricfield}{\marg{magnitude or vector}}
-Command for electric field.
-\end{docCommand}
-\begin{docCommand}{vectorelectricfield}{\marg{commadelimitedlistofcomps}}
-Command for vector electric field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\electricfield{2\timestento{5}} \\
-\electricfield{\mivector{3,2,-1}} \\
-\vectorelectricfield{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricdipolemoment}{\marg{magnitude or vector}}
-Command for electric dipole moment.
-\end{docCommand}
-\begin{docCommand}{vectorelectricdipolemoment}{\marg{commadelimitedlistofcomps}}
-Command for vector electric dipole moment.
+\checkquantity{momentofinertia}
+\begin{docCommands}
+ {%
+ {%
+ doc name = momentum,%
+ doc label = momentumdemo,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = momentumvector,%
+ doc label = momentumvectordemo,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectormomentum,%
+ doc label = vectormomentumdemo,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}} },%
+ }%
+\end{docCommands}
+\checkquantity{momentum}
+\begin{docCommands}
+ {%
+ {%
+ doc name = momentumflux,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = momentumfluxvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectormomentumflux,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{momentumflux}
+\begin{docCommand}{numberdensity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\electricdipolemoment{2\timestento{5}} \\
-\electricdipolemoment{\mivector{3,2,-1}} \\
-\vectorelectricdipolemoment{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{numberdensity}
\begin{docCommand}{permeability}{\marg{magnitude}}
-Command for permeability.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\permeability{4\pi\timestento{-7}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magneticfield}{\marg{magnitude or vector}}
-Command for magnetic field (also called magnetic induction).
-\end{docCommand}
-\begin{docCommand}{vectormagneticfield}{\marg{commadelimitedlistofcomps}}
-Command for vector magnetic field (also called magnetic induction).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magneticfield{1.25} \\
-\magneticfield{\mivector{3,2,-1}} \\
-\vectormagneticfield{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{cmagneticfield}{\marg{magnitude or vector}}
-Command for product of \(c\) and magnetic field. This quantity is
-convenient for symmetry.
-\end{docCommand}
-\begin{docCommand}{vectorcmagneticfield}{\marg{commadelimitedlistofcomps}}
-Command for product of \(c\) and magnetic field as a vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\cmagneticfield{1.25} \\
-\cmagneticfield{\mivector{3,2,-1}} \\
-\vectorcmagneticfield{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{linearchargedensity}{\marg{magnitude}}
-Command for linear charge density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\linearchargedensity{4.5\timestento{-3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{areachargedensity}{\marg{magnitude}}
-Command for area charge density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\areachargedensity{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{volumechargedensity}{\marg{magnitude}}
-Command for volume charge density.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\volumechargedensity{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mobility}{\marg{magnitude}}
-Command for electron mobility.
+\checkquantity{permeability}
+\begin{docCommand}{permittivity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\areachargedensity{4.5\timestento{-3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{numberdensity}{\marg{magnitude}}
-Command for electron number density.
+\checkquantity{permittivity}
+\begin{docCommand}{planeangle}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\numberdensity{2\timestento{18}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{planeangle}
\begin{docCommand}{polarizability}{\marg{magnitude}}
-Command for polarizability.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\polarizability{1.96\timestento{-40}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricpotential}{\marg{magnitude}}
-Command for electric potential.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\electricpotential{1.5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{emf}{\marg{magnitude}}
-Command for emf.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\emf{1.5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dielectricconstant}{\marg{magnitude}}
-Command for dielectric constant.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dielectricconstant{1.5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{indexofrefraction}{\marg{magnitude}}
-Command for index of refraction.
+\checkquantity{polarizability}
+\begin{docCommand}{power}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\indexofrefraction{1.5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{relativepermittivity}{\marg{magnitude}}
-Command for relative permittivity.
+\checkquantity{power}
+\begin{docCommands}
+ {%
+ {%
+ doc name = poynting,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = poyntingvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorpoynting,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{poynting}
+\begin{docCommand}{pressure}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\relativepermittivity{0.9}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{pressure}
\begin{docCommand}{relativepermeability}{\marg{magnitude}}
-Command for relative permeability.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\relativepermeability{0.9}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{poyntingvector}{\marg{commadelimitedlistofcomps}}
-Command for Poynting vector. This is an alias for \refCom{vectorenergyflux}.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\poyntingvector{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{energydensity}{\marg{magnitude}}
-Command for energy density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\energydensity{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{energyflux}{\marg{magnitude or vector}}
-Command for energy flux.
-\end{docCommand}
-\begin{docCommand}{vectorenergyflux}{\marg{commadelimitedlistofcomps}}
-Command for vector energy flux.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\energyflux{4\timestento{26}} \\
-\energyflux{\mivector{3,2,-1}} \\
-\vectorenergyflux{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{momentumflux}{\marg{magnitude or vector}}
-Command for momentum flux.
-\end{docCommand}
-\begin{docCommand}{vectormomentumflux}{\marg{commadelimitedlistofcomps}}
-Command for vector momentum flux.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\momentumflux{4\timestento{26}} \\
-\momentumflux{\mivector{3,2,-1}} \\
-\vectormomentumflux{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electroncurrent}{\marg{magnitude}}
-Command for electron current.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\electroncurrent{2\timestento{18}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{conventionalcurrent}{\marg{magnitude}}
-Command for conventional current.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\conventionalcurrent{0.003}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magneticdipolemoment}{\marg{magnitude or vector}}
-Command for magnetic dipole moment.
-\end{docCommand}
-\begin{docCommand}{vectormagneticdipolemoment}{\marg{commadelimitedlistofcomps}}
-Command for vector magnetic dipole moment.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magneticdipolemoment{1.25} \\
-\magneticdipolemoment{\mivector{3,2,-1}} \\
-\vectormagneticdipolemoment{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{currentdensity}{\marg{magnitude or vector}}
-Command for current density.
-\end{docCommand}
-\begin{docCommand}{vectorcurrentdensity}{\marg{commadelimitedlistofcomps}}
-Command for vector current density.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\currentdensity{1.25} \\
-\currentdensity{\mivector{3,2,-1}} \\
-\vectorcurrentdensity{3,2,-1}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricflux}{\marg{magnitude}}
-Command for electric flux.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\electricflux{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magneticflux}{\marg{magnitude}}
-Command for magnetic flux.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magneticflux{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{capacitance}{\marg{magnitude}}
-Command for capacitance.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\capacitance{1.00}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inductance}{\marg{magnitude}}
-Command for inductance.
+\checkquantity{relativepermeability}
+\begin{docCommand}{relativepermittivity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inductance{1.00}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{conductivity}{\marg{magnitude}}
-Command for conductivity.
+\checkquantity{relativepermittivity}
+\begin{docCommand}{resistance}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\conductivity{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkquantity{resistance}
\begin{docCommand}{resistivity}{\marg{magnitude}}
-Command for resistivity.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\resistivity{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{resistance}{\marg{magnitude}}
-Command for resistance.
+\checkquantity{resistivity}
+\begin{docCommand}{solidangle}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\resistance{1\timestento{6}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{conductance}{\marg{magnitude}}
-Command for conductance.
+\checkquantity{solidangle}
+\begin{docCommand}{specificheatcapacity}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\conductance{1\timestento{6}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magneticcharge}{\marg{magnitude}}
-Command for magnetic charge, in case it actually exists.
+\checkquantity{specificheatcapacity}
+\begin{docCommand}{springstiffness}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magneticcharge{1.25}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Further Words on Units}
-% The form of a quantity's unit can be changed on the fly regardless of the
-% global format determined by \opt{baseunits} and \opt{drvdunits}. One way,
-% as illustrated in the table above, is to append |baseunit|, |drvdunit|,
-% |altnunit| to the quantity's name, and this will override the global options
-% for that instance.
-%
-% A second way is to use the commands that change a quantity's unit on the fly.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hereusebaseunit}{\marg{magnitude}}
-Command for using base units in place.
+\checkquantity{springstiffness}
+\begin{docCommand}{springstretch}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\hereusebaseunit{\momentum{3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hereusedrvdunit}{\marg{magnitude}}
-Command for using derived units in place.
+\checkquantity{springstretch}
+\begin{docCommand}{stress}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\hereusedrvdunit{\momentum{3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hereusealtnunit}{\marg{magnitude}}
-Command for using alternate units in place.
+\checkquantity{stress}
+\begin{docCommand}{strain}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\hereusealtnunit{\momentum{3}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% A third way is to use the environments that change a quantity's unit
-% for the duration of the environment.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{usebaseunit}{}
-Environment for using base units.
-\end{docEnvironment}
-\begin{dispExample*}{sidebyside}
-\begin{usebaseunit}
- \momentum{3}
-\end{usebaseunit}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{usedrvdunit}{}
-Environment for using derived units.
-\end{docEnvironment}
-\begin{dispExample*}{sidebyside}
-\begin{usedrvdunit}
- \momentum{3}
-\end{usedrvdunit}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{usealtnunit}{}
-Environment for using alternate units.
-\end{docEnvironment}
-\begin{dispExample*}{sidebyside}
-\begin{usealtnunit}
- \momentum{3}
-\end{usealtnunit}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% A fourth way is to use the three global switches that perpetually change the
-% default unit. \textbf{It's important to remember that these switches override
-% the global options for the rest of the document or until overridden by one of
-% the other two switches.}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{perpusebaseunit}{}
-Command for perpetually using base units.
+\checkquantity{strain}
+\begin{docCommand}{temperature}{\marg{magnitude}}
\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{perpusedrvdunit}{}
-Command for perpetually using derived units.
+\checkquantity{temperature}
+\begin{docCommands}
+ {%
+ {%
+ doc name = torque,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = torquevector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectortorque,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{torque}
+\begin{docCommands}
+ {%
+ {%
+ doc name = velocity,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = velocityvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorvelocity,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = velocityc,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = velocitycvector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorvelocityc,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{velocity}
+\checkquantity{velocityc}
+\begin{docCommand}{volume}{\marg{magnitude}}
\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{perpusealtnunit}{}
-Command for perpetually using alternate units.
+\checkquantity{volume}
+\begin{docCommand}{volumechargedensity}{\marg{magnitude}}
\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\subsubsection{Using Alternate Units}
-% In some cases it may be helpful to use unconventional, but pedagogically
-% appropriate, units for certain physical quantities. As an example, consider
-% force. It is normally expressed in newtons, but it can also be expressed in
-% joules per meter. You can redefine a quantity's units on the fly with the
-% \cs{redefinephysicsquantity} command.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{redefinephysicsquantity}
-{\marg{newname}\marg{\baseunits}\oarg{\drvdunits}\oarg{\altnunits}}
-Redefines an existing physical quantity, allowing for new alternate units. You can
-also change the other units but it strongly discouraged. The new definition takes
-effect immediately.
+\checkquantity{volumechargedensity}
+\begin{docCommand}{volumemassdensity}{\marg{magnitude}}
\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-%\subsubsection{All Predefined Quantities}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{chkquantity}{\marg{quantityname}}
-Diagnostic command for all of the units for a defined physical quantity. See table
-below.
+\checkquantity{volumemassdensity}
+\begin{docCommand}{wavelength}{\marg{magnitude}}
\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-% Here are all the predefined quantities and their units.
-%\begin{adjustwidth}{-0.5in}{-0.5in}
-%
-%\chkquantity{displacement}
-%\chkquantity{mass}
-%\chkquantity{duration}
-%\chkquantity{current}
-%\chkquantity{temperature}
-%\chkquantity{amount}
-%\chkquantity{luminous}
-%\chkquantity{infeetpersecond}
-%\chkquantity{infeet}
-%\chkquantity{planeangle}
-%\chkquantity{solidangle}
-%\chkquantity{velocity}
-%\chkquantity{acceleration}
-%\chkquantity{gravitationalfield}
-%\chkquantity{gravitationalpotential}
-%\chkquantity{momentum}
-%\chkquantity{impulse}
-%\chkquantity{force}
-%\chkquantity{springstiffness}
-%\chkquantity{springstretch}
-%\chkquantity{area}
-%\chkquantity{volume}
-%\chkquantity{linearmassdensity}
-%\chkquantity{areamassdensity}
-%\chkquantity{volumemassdensity}
-%\chkquantity{youngsmodulus}
-%\chkquantity{stress}
-%\chkquantity{pressure}
-%\chkquantity{strain}
-%\chkquantity{work}
-%\chkquantity{energy}
-%\chkquantity{power}
-%\chkquantity{specificheatcapacity}
-%\chkquantity{angularvelocity}
-%\chkquantity{angularacceleration}
-%\chkquantity{momentofinertia}
-%\chkquantity{angularmomentum}
-%\chkquantity{angularimpulse}
-%\chkquantity{torque}
-%\chkquantity{entropy}
-%\chkquantity{wavelength}
-%\chkquantity{wavenumber}
-%\chkquantity{frequency}
-%\chkquantity{angularfrequency}
-%\chkquantity{charge}
-%\chkquantity{permittivity}
-%\chkquantity{permeability}
-%\chkquantity{linearchargedensity}
-%\chkquantity{areachargedensity}
-%\chkquantity{volumechargedensity}
-%\chkquantity{electricfield}
-%\chkquantity{electricdipolemoment}
-%\chkquantity{electricflux}
-%\chkquantity{magneticfield}
-%\chkquantity{magneticflux}
-%\chkquantity{cmagneticfield}
-%\chkquantity{mobility}
-%\chkquantity{numberdensity}
-%\chkquantity{polarizability}
-%\chkquantity{electricpotential}
-%\chkquantity{emf}
-%\chkquantity{dielectricconstant}
-%\chkquantity{indexofrefraction}
-%\chkquantity{relativepermittivity}
-%\chkquantity{relativepermeability}
-%\chkquantity{energydensity}
-%\chkquantity{momentumflux}
-%\chkquantity{energyflux}
-%\chkquantity{electroncurrent}
-%\chkquantity{conventionalcurrent}
-%\chkquantity{magneticdipolemoment}
-%\chkquantity{currentdensity}
-%\chkquantity{capacitance}
-%\chkquantity{inductance}
-%\chkquantity{conductivity}
-%\chkquantity{resistivity}
-%\chkquantity{resistance}
-%\chkquantity{conductance}
-%\chkquantity{magneticcharge}
-%\end{adjustwidth}
-%
-% \subsection{When to Write Radians}\label{WhentoWriteRadians}
-% A word of clarification is in order for plane angles, solid angles, and other
-% angular quantities. There is the perpetually confusing issue of when to explicitly
-% write radians as a unit and when to omit it. The answer is that if the numerical
-% value of a quantity explicitly depends on the angular unit, then the unit should
-% be written. An example would be angular displacement; the numerical value obviously
-% depends on the unit used. If the numerical value of a quantity does not explicitly
-% depend on the angular unit, then the unit is omitted. An example would be the linear,
-% or translational, velocity or a particle in circular motion. This quantity doesn't
-% explicitly depends on the angular unit, so the angular unit is not written.
-%
-% Torque, angular impulse, and angular momentum present special a special problem
-% in that it is sometimes pedagogically helpful to explicitly include angular units
-% in their operational definitions. While this may not be in strict accordance
-% with SI standards, loading \mandi\ with the \opt{useradians} option includes
-% angular units in these quantities. See \nameref{LoadingthePackage} for details.
-%
-% \subsection{The Empty Unit}
-% Sometimes, when discussing manipulation of units, it is helpful to have a generic
-% symbol that does not correspond to any particular existing unit. The
-% \cs{emptyunit} is provided for this purpose. It serves as a visual placeholder
-% for any unit.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{emptyunit}{}
-Command for a generic visual placeholder symbolizing any actual unit.
+\checkquantity{wavelength}
+\begin{docCommands}
+ {%
+ {%
+ doc name = wavenumber,%
+ doc parameter = \marg{magnitude},%
+ },%
+ {%
+ doc new = 2021-02-24,%
+ doc name = wavenumbervector,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ {%
+ doc name = vectorwavenumber,%
+ doc parameter = \marg{\ensuremath{c_1,\dots,c_n}},%
+ },%
+ }%
+\end{docCommands}
+\checkquantity{wavenumber}
+\begin{docCommand}{work}{\marg{magnitude}}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \frac{\emptyunit\squared}{\cubic\emptyunit} = \emptyunit^{-1} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \newpage
-% \hypertarget{target3}{\subsection{Physical Constants}}
-% \subsubsection{Defining Physical Constants}
-% \mandi\ has many predefined physical constants.
-% This section explains how to use them.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{newphysicsconstant}
-{\marg{name}\marg{symbol}{\{\cs{mi@p\marg{approx}\marg{precise}}\}}\marg{\baseunits}
-\\
-\oarg{\drvdunits}\oarg{\altnunits}%
-}%
-
-Defines a new physical constant with a name, a symbol, approximate and
-precise numerical values, required base units, optional derived units,
-and optional alternate units. The \cs{mi@p} command is defined
-internally and is not meant to be otherwise used.
+\checkquantity{work}
+\begin{docCommand}{youngsmodulus}{\marg{magnitude}}
\end{docCommand}
-\begin{dispListing}
-Here is how \planck (Planck's constant) is defined internally, showing
-each part of the definition on a separate line.
-\newphysicsconstant{planck}
- {\ensuremath{h}}
- {\mi@p{6.6}{6.626070040}\timestento{-34}}
- {\m\squared\usk\kg\usk\reciprocal\s}
- [\J\usk\s]
- [\J\usk\s]
-\end{dispListing}
+\checkquantity{youngsmodulus}
%\iffalse
%</example>
%\fi
%
-% Using this command causes several things to happen.
-% \begin{itemize}
-% \item A command \cs{name} is created and contains the constant and
-% units typeset according to the options given when \mandi\ was loaded.
-% \item A command \cs{namemathsymbol} is created that expresses
-% \textbf{only} the constant's mathematical symbol.
-% \item A command \cs{namevalue} is created that expresses
-% \textbf{only} the constant's approximate or precise numerical value.
-% Note that both values must be present when the constant is defined.
-% By default, precise values are always used but this can be changed
-% when \mandi\ is loaded. Note how the values are specified in the
-% definition of the constant.
-% \item A command \cs{namebaseunit} is created that expresses
-% the constant and its units in \baseunits\ form.
-% \item A command \cs{namedrvdunit} is created that expresses
-% the constant and its units in \drvdunits\ form.
-% \item A command \cs{namealtnunit} is created that
-% expresses the constant and its units in \altnunits\ form.
-% \item A command \cs{nameonlybaseunit} is created that expresses
-% \textbf{only} the constant's units in \baseunits\ form.
-% \item A command \cs{nameonlydrvdunit} is created that
-% expresses \textbf{only} the constant's units in \drvdunits\ form.
-% \item A command \cs{nameonlyaltnunit} is created that
-% expresses \textbf{only} the constant's units in \altnunits\ form.
-% \end{itemize}
-% None of these commands takes any arguments.
-%
-%
-% There is a command similar to \refCom{redefinephysicsquantity} that allows for
-% redefining physical constants.
+% \subsubsection{Defining and Redefining Physical Quantities}
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{redefinephysicsconstant}
-{\marg{name}\marg{symbol}{\{\cs{mi@p\marg{approx}\marg{precise}}\}}\marg{\baseunits}
-\\
-\oarg{\drvdunits}\oarg{\altnunits}%
-}%
-Redefines an existing physical constant.
-The new definition takes effect immediately.
-\end{docCommand}
+\begin{docCommands}[%
+ doc parameter = \marg{name}\marg{base units}\oarg{derived units}\oarg{alternate units},%
+ ]%
+ {%
+ {%
+ doc new = 2021-02-16,%
+ doc name = newscalarquantity,%
+ },%
+ {%
+ doc new=2021-02-21,%
+ doc name = renewscalarquantity,%
+ },%
+ }%
+ Command to (re)define a new/existing scalar quantity.
+ If the derived or alternate units are omitted, they are
+ defined to be the same as the base units. Do not use both
+ this command and
+ \refCom{newvectorquantity} or \refCom{renewvectorquantity}
+ to (re)define a quantity.
+\end{docCommands}
%\iffalse
%</example>
%\fi
%
-% \newpage
-% \subsubsection{Predefined Physical Constants}
-%
-% In this section, precise values of constants are used. Approximate
-% values are available as an option when the package is loaded. Precise values
-% are sourced as accurately as possible, beginning with Wikipedia and following
-% sources therein. I tried to use the most recent NIST or similarly authoritative
-% values. In no case did I make up any values.
-%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{oofpez}{}
-Coulomb constant.
-\end{docCommand}
-\begin{dispExample}
-\(\oofpezmathsymbol \approx \oofpez\)
-\end{dispExample}
+\begin{docCommands}[%
+ doc parameter = \marg{name}\marg{base units}\oarg{derived units}\oarg{alternate units},%
+ ]%
+ {%
+ {%
+ doc new = 2021-02-16,%
+ doc name = newvectorquantity,%
+ },%
+ {%
+ doc new=2021-02-21,%
+ doc name = renewvectorquantity,%
+ },%
+ }%
+ Command to (re)define a new/existing vector quantity.
+ If the derived or alternate units are omitted, they are
+ defined to be the same as the base units. Do not use both
+ this command and
+ \refCom{newscalarquantity} or \refCom{renewscalarquantity}
+ to (re)define a quantity.
+\end{docCommands}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{oofpezcs}{}
-Alternate form of Coulomb constant.
-\end{docCommand}
-\begin{dispExample}
-\(\oofpezcsmathsymbol \approx \oofpezcs\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Changing Units}\setplace{ssec:chgunits}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vacuumpermittivity}{}
-Vacuum permittivity.
-\end{docCommand}
-\begin{dispExample}
-\(\vacuumpermittivitymathsymbol \approx \vacuumpermittivity\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Units are set when \mandi\ is loaded, but the default setting
+% can be easily overridden in four ways: command variants that
+% are defined when a \linktoplace{ssec:physquants}{physical quantity}
+% or \linktoplace{ssec:physconsts}{physical constant} is
+% defined, a global modal command (switch), a
+% command that sets units for a single instance, and an
+% environment that sets units for its duration. All of these
+% methods work for both physical quantities and physical
+% constants.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{mzofp}{}
-Biot-Savart constant.
-\end{docCommand}
-\begin{dispExample}
-\(\mzofpmathsymbol \approx \mzofp\)
-\end{dispExample}
+\begin{docCommands}[%
+ doc updated = 2021-02-26,%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = alwaysusebaseunits,%
+ },%
+ {%
+ doc name = alwaysusederivedunits,%
+ },%
+ {%
+ doc name = alwaysusealternateunits,%
+ },%
+ }%
+ Modal commands (switches) for setting the default unit form for the entire
+ document. When \mandi\ is loaded, one of these three commands is executed
+ depending on whether the optional |units| key is provided. See the section
+ on loading the package for details. Alternate units are the default because
+ they are the most likely ones to be seen in introductory physics textbooks.
+\end{docCommands}
%\iffalse
%</example>
%\fi
@@ -3355,11 +1233,32 @@ Biot-Savart constant.
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{vacuumpermeability}{}
-Vacuum permeability.
-\end{docCommand}
+\begin{docCommands}[%
+ doc updated = 2021-02-26,%
+ doc parameter = \marg{content},%
+ ]%
+ {%
+ {%
+ doc name = hereusebaseunits,%
+ },%
+ {%
+ doc name = hereusederivedunits,%
+ },%
+ {%
+ doc name = hereusedalternateunits,%
+ },%
+ }%
+ Commands for setting the unit form on the fly for a single instance. The
+ example uses momentum and the Coulomb constant, but they work for any
+ defined quantity and constant.
+\end{docCommands}
\begin{dispExample}
-\(\vacuumpermeabilitymathsymbol \approx \vacuumpermeability\)
+ \( \hereusebaseunits{\momentum{5}} \) \\
+ \( \hereusederivedunits{\momentum{5}} \) \\
+ \( \hereusealternateunits{\momentum{5}} \) \\
+ \( \hereusebaseunits{\oofpez} \) \\
+ \( \hereusederivedunits{\oofpez} \) \\
+ \( \hereusealternateunits{\oofpez} \)
\end{dispExample}
%\iffalse
%</example>
@@ -3368,3953 +1267,281 @@ Vacuum permeability.
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{boltzmann}{}
-Boltzmann constant.
-\end{docCommand}
+\begin{docEnvironments}[%
+ doc updated = 2021-02-26,%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = usebaseunits,%
+ doc description = use base units,%
+ },%
+ {%
+ doc name = usederivedunits,%
+ doc description = use derived units,%
+ },%
+ {%
+ doc name = usealternateunits,%
+ doc description = use alternate units,%
+ },%
+ }%
+ Inside these environments units are changed for the duration
+ of the environment regardless of the global default setting.
+\end{docEnvironments}
\begin{dispExample}
-\(\boltzmannmathsymbol \approx \boltzmann\)
+ \( \momentum{5} \) \\
+ \( \oofpez \) \\
+ \begin{usebaseunits}
+ \( \momentum{5} \) \\
+ \( \oofpez \) \\
+ \end{usebaseunits}
+ \begin{usederivedunits}
+ \( \momentum{5} \) \\
+ \( \oofpez \) \\
+ \end{usederivedunits}
+ \begin{usealternateunits}
+ \( \momentum{5} \) \\
+ \( \oofpez \)
+ \end{usealternateunits}
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{boltzmannineV}{}
-Alternate form of Boltlzmann constant.
-\end{docCommand}
-\begin{dispExample}
-\(\boltzmannineVmathsymbol \approx \boltzmannineV\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsection{Physical Constants}
+% \subsubsection{Typesetting Physical Constants}\setplace{ssec:physconsts}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{stefan}{}
-Stefan-Boltzmann constant.
-\end{docCommand}
-\begin{dispExample}
-\(\stefanboltzmannmathsymbol \approx \stefanboltzmann\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Take the quantity \( \oofpezmathsymbol \), sometimes called the
+% \href{https://en.wikipedia.org/wiki/Coulomb_constant}{Coulomb constant},
+% as the prototypical
+% \href{https://en.wikipedia.org/wiki/Physical_constant}{physical constant}
+% in an introductory physics course. Here are all the ways to access this
+% quantity in \mandi. As you can see, these commands are almost identical
+% to the corresponding commands for physical quantities.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{planck}{}
-Planck constant.
+\begin{docCommand}[doc label = oofpezdemo]{oofpez}{}
+ Command for the Coulomb constant. The constant's numerical precision and
+ default units will depend on the options passed to \mandi\ at load time.
+ Alternate units and approximate numerical values are the defaults. Other
+ units can be forced as demonstrated.
\end{docCommand}
\begin{dispExample}
-\(\planckmathsymbol \approx \planck\)
+ \( \oofpez \) \\
+ \( \oofpezapproximatevalue \) \\
+ \( \oofpezprecisevalue \) \\
+ \( \oofpezmathsymbol \) \\
+ \( \oofpezbaseunits \) \\
+ \( \oofpezderivedunits \) \\
+ \( \oofpezalternateunits \) \\
+ \( \oofpezonlybaseunits \) \\
+ \( \oofpezonlyderivedunits \) \\
+ \( \oofpezonlyalternateunits \)
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{planckineV}{}
-Alternate form of Planck constant.
-\end{docCommand}
-\begin{dispExample}
-\(\planckmathsymbol \approx \planckineV\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Checking Physical Constants}
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{planckbar}{}
-Reduced Planck constant (Dirac constant).
+\begin{docCommand}[doc updated = 2021-02-26]{checkconstant}{\marg{name}}
+ Command to check and typeset the constant's name, base units, derived
+ units, alternate units, mathematical symbol, approximate value, and
+ precise value.
\end{docCommand}
-\begin{dispExample}
-\(\planckbarmathsymbol \approx \planckbar\)
-\end{dispExample}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{planckbarineV}{}
-Alternate form of reduced Planck constant (Dirac constant).
-\end{docCommand}
-\begin{dispExample}
-\(\planckbarmathsymbol \approx \planckbarineV\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Predefined Physical Constants}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{planckc}{}
-Planck constant times light speed.
-\end{docCommand}
-\begin{dispExample}
-\(\planckcmathsymbol \approx \planckc\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Every other defined physical constant can be treated similarly. Just
+% replace |oofpez| with the constant's name. Unfortunately, there is no
+% universal agreement on the names of every constant so don't fret if
+% the names used here vary from other sources. Here are all the physical
+% constants, with all their units, defined in \mandi.
+% The constants \refCom{coulombconstant} and \refCom{biotsavartconstant} are
+% defined as semantic aliases for, respectively, \refCom{oofpez} and
+% \refCom{mzofp}.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{planckcineV}{}
-Alternate form of Planck constant times light speed.
+\begin{docCommand}[doc description = exact]{avogadro}{}
\end{docCommand}
-\begin{dispExample}
-\(\planckcineVmathsymbol \approx \planckcineV\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{rydberg}{}
-Rydberg constant.
+\checkconstant{avogadro}
+\begin{docCommand}[doc new = 2021-02-02]{biotsavartconstant}{}
\end{docCommand}
-\begin{dispExample}
-\(\rydbergmathsymbol \approx \rydberg\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
+\checkconstant{biotsavartconstant}
\begin{docCommand}{bohrradius}{}
-Bohr radius.
-\end{docCommand}
-\begin{dispExample}
-\(\bohrradiusmathsymbol \approx \bohrradius\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{finestructure}{}
-Fine structure constant.
-\end{docCommand}
-\begin{dispExample}
-\(\finestructuremathsymbol \approx \finestructure\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{avogadro}{}
-Avogadro constant.
-\end{docCommand}
-\begin{dispExample}
-\(\avogadromathsymbol \approx \avogadro\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{universalgrav}{}
-Universal gravitational constant.
-\end{docCommand}
-\begin{dispExample}
-\(\universalgravmathsymbol \approx \universalgrav\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{surfacegravfield}{}
-Earth's surface gravitational field strength.
-\end{docCommand}
-\begin{dispExample}
-\(\surfacegravfieldmathsymbol \approx \surfacegravfield\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{clight}{}
-Magnitude of light's velocity (photon constant).
-\end{docCommand}
-\begin{dispExample}
-\(\clightmathsymbol \approx \clight\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{clightinfeet}{}
-Alternate of magnitude of light's velocity (photon constant).
-\end{docCommand}
-\begin{dispExample}
-\(\clightinfeetmathsymbol \approx \clightinfeet\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ratom}{}
-Approximate atomic radius.
-\end{docCommand}
-\begin{dispExample}
-\(\Ratommathsymbol \approx \Ratom\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Mproton}{}
-Proton mass.
-\end{docCommand}
-\begin{dispExample}
-\(\Mprotonmathsymbol \approx \Mproton\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Mneutron}{}
-Neutron mass.
-\end{docCommand}
-\begin{dispExample}
-\(\Mneutronmathsymbol \approx \Mneutron\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Mhydrogen}{}
-Hydrogen atom mass.
-\end{docCommand}
-\begin{dispExample}
-\(\Mhydrogenmathsymbol \approx \Mhydrogen\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Melectron}{}
-Electron mass.
-\end{docCommand}
-\begin{dispExample}
-\(\Melectronmathsymbol \approx \Melectron\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{echarge}{}
-Elementary charge quantum.
-\end{docCommand}
-\begin{dispExample}
-\(\echargemathsymbol \approx \echarge\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Qelectron}{}
-Electron charge.
-\end{docCommand}
-\begin{docCommand}{qelectron}{}
-Alias for \cs{Qelectron}.
-\end{docCommand}
-\begin{dispExample}
-\(\Qelectronmathsymbol \approx \Qelectron\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Qproton}{}
-Proton charge.
-\end{docCommand}
-\begin{docCommand}{qproton}{}
-Alias for \cs{Qproton}.
-\end{docCommand}
-\begin{dispExample}
-\(\Qprotonmathsymbol \approx \Qproton\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{MEarth}{}
-Earth's mass.
-\end{docCommand}
-\begin{dispExample}
-\(\MEarthmathsymbol \approx \MEarth\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{MMoon}{}
-Moon's mass.
-\end{docCommand}
-\begin{dispExample}
-\(\MMoonmathsymbol \approx \MMoon\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{MSun}{}
-Sun's mass.
-\end{docCommand}
-\begin{dispExample}
-\(\MSunmathsymbol \approx \MSun\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{REarth}{}
-Earth's radius.
-\end{docCommand}
-\begin{dispExample}
-\(\REarthmathsymbol \approx \REarth\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RMoon}{}
-Moon's radius.
-\end{docCommand}
-\begin{dispExample}
-\(\RMoonmathsymbol \approx \RMoon\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RSun}{}
-Sun's radius.
-\end{docCommand}
-\begin{dispExample}
-\(\RSunmathsymbol \approx \RSun\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ESdist}{}
-Earth-Sun distance.
-\end{docCommand}
-\begin{docCommand}{SEdist}{}
-Alias for \refCom{ESdist}.
-\end{docCommand}
-\begin{dispExample}
-\(\ESdistmathsymbol \approx \SEdist\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{EMdist}{}
-Earth-Moon distance.
-\end{docCommand}
-\begin{docCommand}{MEdist}{}
-Alias for \refCom{EMdist}.
-\end{docCommand}
-\begin{dispExample}
-\(\EMdistmathsymbol \approx \EMdist\)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\subsubsection{All Predefined Constants}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{chkconstant}{\marg{constantname}}
-Diagnostic command for the symbol, value (either approximate or precise depending
-on how the package was loaded), and units for a defined physical constant. See table
-below.
-\end{docCommand}
-%\iffalse
-%</example>
-%\fi
-%
-% Here are all the predefined constants and their units.
-%\begin{adjustwidth}{}{}
-%
-%\chkconstant{oofpez}
-%\chkconstant{oofpezcs}
-%\chkconstant{vacuumpermittivity}
-%\chkconstant{mzofp}
-%\chkconstant{vacuumpermeability}
-%\chkconstant{boltzmann}
-%\chkconstant{boltzmannineV}
-%\chkconstant{stefanboltzmann}
-%\chkconstant{planck}
-%\chkconstant{planckineV}
-%\chkconstant{planckbar}
-%\chkconstant{planckbarineV}
-%\chkconstant{planckc}
-%\chkconstant{planckcineV}
-%\chkconstant{rydberg}
-%\chkconstant{bohrradius}
-%\chkconstant{finestructure}
-%\chkconstant{avogadro}
-%\chkconstant{universalgrav}
-%\chkconstant{surfacegravfield}
-%\chkconstant{clight}
-%\chkconstant{clightinfeet}
-%\chkconstant{Ratom}
-%\chkconstant{Mproton}
-%\chkconstant{Mneutron}
-%\chkconstant{Mhydrogen}
-%\chkconstant{Melectron}
-%\chkconstant{echarge}
-%\chkconstant{Qelectron}
-%\chkconstant{qelectron}
-%\chkconstant{Qproton}
-%\chkconstant{qproton}
-%\chkconstant{MEarth}
-%\chkconstant{MMoon}
-%\chkconstant{MSun}
-%\chkconstant{REarth}
-%\chkconstant{RMoon}
-%\chkconstant{RSun}
-%\chkconstant{ESdist}
-%\chkconstant{EMdist}
-%\chkconstant{LSun}
-%\chkconstant{TSun}
-%\chkconstant{MagSun}
-%\chkconstant{magSun}
-%\end{adjustwidth}
-%
-% \subsection{Astronomical Constants and Quantities}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LSun}{}
-Sun's luminosity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\LSunmathsymbol \approx \LSun\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{TSun}{}
-Sun's effective temperature.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\TSunmathsymbol \approx \TSun\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{MagSun}{}
-Sun's absolute magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\MagSunmathsymbol \approx \MagSun\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magSun}{}
-Sun's apparent magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\magSunmathsymbol \approx \magSun\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Lstar}{\oarg{object}}
-Symbol for stellar luminosity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Lstar or \Lstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Lsolar}{}
-Symbol for solar luminosity as a unit. Really just an alias for
-|\Lstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Lsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Tstar}{\oarg{object}}
-Symbol for stellar temperature.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Tstar or \Tstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Tsolar}{}
-Symbol for solar temperature as a unit. Really just an alias for
-|\Tstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Tsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Rstar}{\oarg{object}}
-Symbol for stellar radius.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Rstar or \Rstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Rsolar}{}
-Symbol for solar radius as a unit. Really just an alias for
-|\Rstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Rsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Mstar}{\oarg{object}}
-Symbol for stellar mass.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Mstar or \Mstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Msolar}{}
-Symbol for solar mass as a unit. Really just an alias for
-|\Mstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Msolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Fstar}{\oarg{object}}
-Symbol for stellar flux.
-\end{docCommand}
-\begin{docCommand}{fstar}{}
-Alias for \refCom{Fstar}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Fstar or \Fstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Fsolar}{}
-Symbol for solar flux as a unit. Really just an alias for
-|\Fstar[\(\odot\)]|.
-\end{docCommand}
-\begin{docCommand}{fsolar}{}
-Alias for \refCom{fsolar}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Fsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Magstar}{\oarg{object}}
-Symbol for stellar absolute magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Magstar or \Magstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Magsolar}{}
-Symbol for solar absolute magnitude as a unit. Really just an alias for
-|\Magstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Magsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magstar}{\oarg{object}}
-Symbol for stellar apparent magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magstar or \magstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magsolar}{}
-Symbol for solar apparent magnitude as a unit. Really just an alias for
-|\magstar[\(\odot\)]|.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Dstar}{\oarg{object}}
-Symbol for stellar distance.
-\end{docCommand}
-\begin{docCommand}{dstar}{}
-Alias for \refCom{Dstar} that uses a lower case d.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Dstar or \Dstar[Sirius]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Dsolar}{}
-Symbol for solar distance as a unit. Really just an alias for
-|\Dstar[\(\odot\)]|.
-\end{docCommand}
-\begin{docCommand}{dsolar}{}
-Alias for \refCom{Dsolar} that uses a lower case d.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Dsolar
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{Symbolic Expressions with Vectors}
-% \subsubsection{Basic Vectors}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vect}{\marg{kernel}}
-Symbol for a vector quantity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vect{p}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magvect}{\marg{kernel}}
-Symbol for magnitude of a vector quantity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magvect{p}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magsquaredvect}{\marg{kernel}}
-Symbol for squared magnitude of a vector quantity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magsquaredvect{p}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magnvect}{\marg{kernel}\marg{exponent}}
-Symbol for magnitude of a vector quantity to arbitrary power.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magnvect{r}{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dirvect}{\marg{kernel}}
-Symbol for direction of a vector quantity.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dirvect{p}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{factorvect}{\marg{kernel}}
-Symbol for a vector factored into its magnitude and direction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\factorvect{E}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{componentalong}{\marg{alongvector}\marg{ofvector}}
-Symbol for the component along a vector of another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\componentalong{\vect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{expcomponentalong}{\marg{alongvector}\marg{ofvector}}
-Symbolic expression for the component along a vector of another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\expcomponentalong{\vect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ucomponentalong}{\marg{alongvector}\marg{ofvector}}
-Symbolic expression with unit vectors for the component along a vector of
-another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ucomponentalong{\dirvect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{projectiononto}{\marg{ontovector}\marg{ofvector}}
-Symbol for the projection onto a vector of another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\projectiononto{\vect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{expprojectiononto}{\marg{alongvector}\marg{ofvector}}
-Symbolic expression for the projection onto a vector of another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\expprojectiononto{\vect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{uprojectiononto}{\marg{alongvector}\marg{ofvector}}
-Symbolic expression with unit vectors for the projection onto a vector of
-another vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\uprojectiononto{\dirvect{v}}{\vect{u}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mivector}
- {\oarg{printeddelimiter}\marg{commadelimitedlistofcomps}\oarg{unit}}
-Generic workhorse command for vectors formatted as in \mi. Unless the first
-optional argument is specified, a comma is used in the output. Commas are
-always required in the mandatory argument.
-\end{docCommand}
-\begin{dispExample}
-\begin{mysolution*}
- \msub{u}{\mu} &= \mivector{\ezero,\eone,\etwo,\ethree} \\
- \msub{u}{\mu} &= \mivector[\quad]{\ezero,\eone,\etwo,\ethree} \\
- \vect{v} &= \mivector{1,3,5}[\velocityonlyaltnunit] \\
- \vect{E} &= \mivector{\oofpezmathsymbol \frac{Q}{x^2},0,0} \\
- \vect{E} &= \mivector[\quad]{\oofpezmathsymbol \frac{Q}{x^2},0,0}
-\end{mysolution*}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magvectncomps}{\marg{listofcomps}\oarg{unit}}
-Expression for a vector's magnitude with numerical components and an optional
-unit. The first example is the preferred and recommended way to handle units when
-they are needed. The second example requires explicitly picking out the desired
-unit form. The third example demonstrates components of a unit vector.
-\end{docCommand}
-\begin{dispExample}
-\magvectncomps{\velocity{3.12},\velocity{4.04},\velocity{6.73}} \\
-\magvectncomps{3.12,4.04,6.73}[\velocityonlyaltnunit] \\
-\magvectncomps{\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}},\frac{1}{\sqrt{3}}}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsvect}{\marg{kernel}}
-Expression for a vector's symbolic components.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scompsvect{E}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compvect}{\marg{kernel}\marg{component}}
-Isolates one of a vector's symbolic components.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\compvect{E}{y}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsdirvect}{\marg{kernel}}
-Expression for a direction's symbolic components. The hats are necessary to
-denote a direction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scompsdirvect{r}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compdirvect}{\marg{kernel}\marg{component}}
-Isolates one of a direction's symbolic components. The hat is necessary to
-denote a direction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\compdirvect{r}{z}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magvectscomps}{\marg{kernel}}
-Expression for a vector's magnitude in terms of its symbolic components.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magvectscomps{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Differentials and Derivatives of Vectors}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dvect}{\marg{kernel}}
-Symbol for the differential of a vector.
-\end{docCommand}
-\begin{docCommand}{Dvect}{\marg{kernel}}
-Identical to \refCom{dvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-a change \dvect{E} in electric field \\
-a change \Dvect{E} in electric field
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dirdvect}{\marg{kernel}}
-Symbol for the direction of a vector's differential.
-\end{docCommand}
-\begin{docCommand}{dirDvect}{\marg{kernel}}
-Identical to \refCom{dirdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the direction \dirdvect{E} of the change \\
-the direction \dirDvect{E} of the change
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ddirvect}{\marg{kernel}}
-Symbol for the differential of a vector's direction.
-\end{docCommand}
-\begin{docCommand}{Ddirvect}{\marg{kernel}}
-Identical to \refCom{ddirvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{docCommand}{ddirection}{\marg{kernel}}
-Alias for \refCom{ddirvect}.
-\end{docCommand}
-\begin{docCommand}{Ddirection}{\marg{kernel}}
-Alias for \refCom{Ddirvect}.
-\end{docCommand}
-\begin{dispExample}
-the change \ddirvect{E} or \ddirection{E} in the direction of \vect{E} \\
-the change \Ddirvect{E} or \Ddirection{E} in the direction of \vect{E}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magdvect}{\marg{kernel}}
-Symbol for the magnitude of a vector's differential.
-\end{docCommand}
-\begin{docCommand}{magDvect}{\marg{kernel}}
-Identical to \refCom{magdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the magnitude \magdvect{E} of the change \\
-the magnitude \magDvect{E} of the change
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dmagvect}{\marg{kernel}}
-Symbol for the differential of a vector's magnitude.
-\end{docCommand}
-\begin{docCommand}{Dmagvect}{\marg{kernel}}
-Identical to \refCom{dmagvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the change \dmagvect{E} in the magnitude \\
-the change \Dmagvect{E} in the magnitude
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsdvect}{\marg{kernel}}
-Symbolic components of a vector.
-\end{docCommand}
-\begin{docCommand}{scompsDvect}{\marg{kernel}}
-Identical to \refCom{scompsdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the vector \scompsdvect{E} \\
-the vector \scompsDvect{E}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compdvect}{\marg{kernel}\marg{component}}
-Isolates one symbolic component of a vector's differential.
-\end{docCommand}
-\begin{docCommand}{compDvect}{\marg{kernel}\marg{component}}
-Identical to \refCom{compdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the \compdvect{E}{y} component of the change \\
-the \compDvect{E}{y} component of the change
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervect}{\marg{kernel}\marg{indvar}}
-Symbol for a vector's derivative with respect to an independent variable.
-\end{docCommand}
-\begin{docCommand}{Dervect}{\marg{kernel}\marg{indvar}}
-Identical to \refCom{dervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the derivative \dervect{E}{t} \\
-the derivative \Dervect{E}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dermagvect}{\marg{kernel}\marg{indvar}}
-Symbol for the derivative of a vector's magnitude with respect to an
-independent variable.
-\end{docCommand}
-\begin{docCommand}{Dermagvect}{\marg{kernel}\marg{indvar}}
-Identical to \refCom{dermagvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the derivative \dermagvect{E}{t} \\
-the derivative \Dermagvect{E}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{derdirvect}{\marg{kernel}\marg{indvar}}
-Symbol for the derivative of a vector's direction with respect to an
-independent variable.
-\end{docCommand}
-\begin{docCommand}{derdirection}{\marg{kernel}\marg{indvar}}
-Alias for \refCom{derdirvect}.
-\end{docCommand}
-\begin{docCommand}{Derdirvect}{\marg{kernel}\marg{indvar}}
-Identical to \refCom{derdirvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{docCommand}{Derdirection}{\marg{kernel}\marg{indvar}}
-Alias for \refCom{Derdirvect}.
-\end{docCommand}
-\begin{dispExample}
-the derivative \derdirvect{E}{t} or \derdirection{E}{t} \\
-the derivative \Derdirvect{E}{t} or \Derdirection{E}{t}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsdervect}{\marg{kernel}\marg{indvar}}
-Symbolic components of a vector's derivative with respect to an independent
-variable.
-\end{docCommand}
-\begin{docCommand}{scompsDervect}{\marg{kernel}\marg{indvar}}
-Identical to \refCom{scompsdervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the derivative \scompsdervect{E}{t} \\
-the derivative \scompsdervect{E}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compdervect}{\marg{kernel}\marg{component}\marg{indvar}}
-Isolates one component of a vector's derivative with respect to an
-independent variable.
-\end{docCommand}
-\begin{docCommand}{compDervect}{\marg{kernel}\marg{component}\marg{indvar}}
-Identical to \refCom{compdervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the derivative \compdervect{E}{y}{t} \\
-the derivative \compDervect{E}{y}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magdervect}{\marg{kernel}\marg{indvar}}
-Symbol for the magnitude of a vector's derivative with respect to an
-independent variable.
-\end{docCommand}
-\begin{docCommand}{magDervect}{\marg{kernel}\marg{indvar}}
-Identical to \refCom{magdervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the derivative \magdervect{E}{t} \\
-the derivative \magDervect{E}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Naming Conventions You Have Seen}
-% By now you probably understand that commands are named as closely as
-% possible to the way you would say or write what you want. Every time you
-% see |comp| you should think of a single component. Every time you see
-% |scomps| you should think of a set of symbolic components. Every time you
-% see |der| you should think derivative. Every time you see |dir| you should
-% think direction. I have tried to make the names simple both logically and
-% lexically.
-%
-% \subsubsection{Subscripted or Indexed Vectors}
-% Now we have commands for vectors that carry subscripts or indices, usually
-% to identify an object or something similar. Basically, \refCom{vect} becomes
-% \refCom{vectsub}. Ideally, a subscript should not contain mathematical symbols.
-% However, if you wish to do so, just wrap the symbol with |\(|\(\ldots \)|\)|
-% as you normally would. All of the commands for non-subscripted vectors are
-% available for subscripted vectors.
-%
-% As a matter of convention, when the initial and final values of a quantity
-% are referenced, they should be labeled with subscripts |i| and |f| respectively
-% using the commands in this section and similarly named commands in other
-% sections. If the quantity also refers to a particular entity (e.g.\ a ball),
-% specify the |i| or |f| with a comma after the label
-% (e.g.\ |\vectsub{r}{ball,f}|).
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsub}{\marg{kernel}\marg{sub}}
-Symbol for a subscripted vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-the vector \vectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magvectsub}{\marg{kernel}\marg{sub}}
-Symbol for a subscripted vector's magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magsquaredvectsub}{\marg{kernel}\marg{sub}}
-Symbol for a subscripted vector's squared magnitude.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magsquaredvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magnvectsub}{\marg{kernel}\marg{sub}\marg{exponent}}
-Symbol for a subscripted vector's magnitude to an arbitrary power.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magnvectsub{r}{dipole}{5}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dirvectsub}{\marg{kernel}\marg{sub}}
-Symbol for a subscripted vector's direction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dirvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsvectsub}{\marg{kernel}\marg{sub}}
-Symbolic components of a subscripted vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scompsvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compvectsub}{\marg{kernel}\marg{sub}\marg{component}}
-Isolates one component of a subscripted vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\compvectsub{p}{ball}{z}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magvectsubscomps}{\marg{kernel}\marg{sub}}
-Expression for a subscripted vector's magnitude in terms of symbolic
-components.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magvectsubscomps{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dvectsub}{\marg{kernel}\marg{sub}}
-Differential of a subscripted vector.
-\end{docCommand}
-\begin{docCommand}{Dvectsub}{\marg{kernel}\marg{sub}}
-Identical to \refCom{dvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dvectsub{p}{ball} \\
-\Dvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsdvectsub}{\marg{kernel}\marg{sub}}
-Symbolic components of a subscripted vector's differential.
-\end{docCommand}
-\begin{docCommand}{scompsDvectsub}{\marg{kernel}\marg{sub}}
-Identical to \refCom{scompsdvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scompsdvectsub{p}{ball} \\
-\scompsDvectsub{p}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compdvectsub}{\marg{kernel}\marg{sub}\marg{component}}
-Isolates one component of a subscripted vector's differential.
-\end{docCommand}
-\begin{docCommand}{compDvectsub}{\marg{kernel}\marg{sub}\marg{component}}
-Identical to \refCom{compdvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\compdvectsub{p}{ball}{y} \\
-\compDvectsub{p}{ball}{y}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Symbol for derivative of a subscripted vector with respect to an
-independent variable.
-\end{docCommand}
-\begin{docCommand}{Dervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Identical to \refCom{dervectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dervectsub{p}{ball}{t} \\
-\Dervectsub{p}{ball}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dermagvectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Symbol for the derivative of a subscripted vector's magnitude with respect
-to an independent variable.
-\end{docCommand}
-\begin{docCommand}{Dermagvectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Identical to \refCom{dermagvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dermagvectsub{E}{ball}{t} \\
-\Dermagvectsub{E}{ball}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsdervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Symbolic components of a subscripted vector's derivative with respect to
-an independent variable.
-\end{docCommand}
-\begin{docCommand}{scompsDervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Identical to \refCom{scompsdervectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scompsdervectsub{p}{ball}{t} \\
-\scompsDervectsub{p}{ball}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{compdervectsub}{\marg{kernel}\marg{sub}\marg{component}
-\marg{indvar}}
-Isolates one component of a subscripted vector's derivative with respect
-to an independent variable.
-\end{docCommand}
-\begin{docCommand}{compDervectsub}{\marg{kernel}\marg{sub}\marg{component}
-\marg{indvar}}
-Identical to \refCom{compdervectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\compdervectsub{p}{ball}{y}{t} \\
-\compDervectsub{p}{ball}{y}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magdervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Symbol for magnitude of a subscripted vector's derivative with respect
-to an independent variable.
-\end{docCommand}
-\begin{docCommand}{magDervectsub}{\marg{kernel}\marg{sub}\marg{indvar}}
-Identical to \refCom{magdervectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magdervectsub{p}{ball}{t} \\
-\magDervectsub{p}{ball}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Expressions Containing Dots}
-% Now we get to commands that will save you many, many keystrokes. All of
-% the naming conventions documented in earlier commands still apply. There
-% are some new ones though. Every time you see |dot| you should think
-% \emph{dot product}. When you see |dots| you should think \emph{dot
-% product in terms of symbolic components}. When you see |dote| you should
-% think \emph{dot product expanded as a sum}. These, along with the previous
-% naming conventions, handle many dot product expressions.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotvect}{\marg{kernel1}\marg{kernel2}}
-Symbol for dot of two vectors as a single symbol.
-\end{docCommand}
-\begin{docCommand}{vectDotvect}{\marg{kernel1}\marg{kernel2}}
-Same as \cs{vectdotvect} but uses \cs{bullet}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotvect{\vect{F}}{\vect{v}} \\
-\vectDotvect{\vect{F}}{\vect{v}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotsvect}{\marg{kernel1}\marg{kernel2}}
-Symbol for dot of two vectors with symbolic components.
-\end{docCommand}
-\begin{docCommand}{vectDotsvect}{\marg{kernel1}\marg{kernel2}}
-Same as \cs{vectdotsvect} but uses \cs{bullet}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotsvect{F}{v} \\
-\vectDotsvect{F}{v}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotevect}{\marg{kernel1}\marg{kernel2}}
-Symbol for dot of two vectors as an expanded sum.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotevect{F}{v}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotsdvect}{\marg{kernel1}\marg{kernel2}}
-Dot of a vector a vector's differential with symbolic components.
-\end{docCommand}
-\begin{docCommand}{vectdotsDvect}{\marg{kernel1}\marg{kernel2}}
-Identical to \refCom{vectdotsdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotsdvect{F}{r} \\
-\vectdotsDvect{F}{r}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotedvect}{\marg{kernel1}\marg{kernel2}}
-Dot of a vector a vector's differential as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{vectdoteDvect}{\marg{kernel1}\marg{kernel2}}
-Identical to \refCom{vectdotedvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotedvect{F}{r} \\
-\vectdoteDvect{F}{r}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotsvectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Dot of two subscripted vectors with symbolic components.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotsvectsub{F}{grav}{r}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotevectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Dot of two subscripted vectors as an expanded sum.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotevectsub{F}{grav}{r}{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotsdvectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Dot of a subscripted vector and a subscripted vector's differential with
-symbolic components.
-\end{docCommand}
-\begin{docCommand}{vectsubdotsDvectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Identical to \refCom{vectsubdotsdvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotsdvectsub{A}{ball}{B}{car} \\
-\vectsubdotsDvectsub{A}{ball}{B}{car}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotedvectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Dot of a subscripted vector and a subscripted vector's differential
-as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{vectsubdoteDvectsub}
-{\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
-Identical to \refCom{vectsubdotedvectsub} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotedvectsub{A}{ball}{B}{car} \\
-\vectsubdoteDvectsub{A}{ball}{B}{car}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotsdvect}{\marg{kernel1}\marg{sub1}\marg{kernel2}}
-Dot of a subscripted vector and a vector's differential with symbolic
-components.
-\end{docCommand}
-\begin{docCommand}{vectsubdotsDvect}{\marg{kernel1}\marg{sub1}\marg{kernel2}}
-Identical to \refCom{vectsubdotsdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotsdvect{A}{ball}{B} \\
-\vectsubdotsDvect{A}{ball}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectsubdotedvect}{\marg{kernel1}\marg{sub1}\marg{kernel2}}
-Dot of a subscripted vector and a vector's differential as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{vectsubdoteDvect}{\marg{kernel1}\marg{sub1}\marg{kernel2}}
-Identical to \refCom{vectsubdotedvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\vectsubdotedvect{A}{ball}{B} \\
-\vectsubdoteDvect{A}{ball}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervectdotsvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Dot of a vector's derivative and a vector with symbolic components.
-\end{docCommand}
-\begin{docCommand}{Dervectdotsvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Identical to \refCom{dervectdotsvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dervectdotsvect{A}{t}{B} \\
-\Dervectdotsvect{A}{t}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervectdotevect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Dot of a vector's derivative and a vector as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{Dervectdotevect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Identical to \refCom{dervectdotevect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dervectdotevect{A}{t}{B} \\
-\Dervectdotevect{A}{t}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotsdervect}{\marg{kernel1}\marg{kernel2}\marg{indvar}}
-Dot of a vector and a vector's derivative with symbolic components.
-\end{docCommand}
-\begin{docCommand}{vectdotsDervect}{\marg{kernel1}\marg{kernel2}\marg{indvar}}
-Identical to \refCom{vectdotsdervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotsdervect{A}{B}{t} \\
-\vectdotsDervect{A}{B}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectdotedervect}{\marg{kernel1}\marg{kernel2}\marg{indvar}}
-Dot of a vector and a vector's derivative as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{vectdoteDervect}{\marg{kernel1}\marg{kernel2}\marg{indvar}}
-Identical to \cs{vectdotedervect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectdotedervect{A}{B}{t} \\
-\vectdoteDervect{A}{B}{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervectdotsdvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Dot of a vector's derivative and a vector's differential with symbolic
-components.
-\end{docCommand}
-\begin{docCommand}{DervectdotsDvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Identical to \refCom{dervectdotsdvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\dervectdotsdvect{A}{t}{B} \\
-\DervectdotsDvect{A}{t}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dervectdotedvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Dot of a vector's derivative and a vector's differential as an expanded sum.
-\end{docCommand}
-\begin{docCommand}{DervectdoteDvect}{\marg{kernel1}\marg{indvar}\marg{kernel2}}
-Identical to \refCom{dervectdotedvect} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dervectdotedvect{A}{t}{B} \\
-\DervectdoteDvect{A}{t}{B}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Expressions Containing Crosses}
-% All of the naming conventions documented in earlier commands still apply.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vectcrossvect}{\marg{kernel1}\marg{kernel2}}
-Cross of two vectors.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vectcrossvect{\vect{r}}{\vect{p}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ltriplecross}{\marg{kernel1}\marg{kernel2}\marg{kernel3}}
-Symbol for left associated triple cross product.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ltriplecross{\vect{A}}{\vect{B}}{\vect{C}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{rtriplecross}{\marg{kernel1}\marg{kernel2}\marg{kernel3}}
-Symbol for right associated triple cross product.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\rtriplecross{\vect{A}}{\vect{B}}{\vect{C}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ltriplescalar}{\marg{kernel1}\marg{kernel2}\marg{kernel3}}
-Symbol for left associated triple scalar product.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ltriplescalar{\vect{A}}{\vect{B}}{\vect{C}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{rtriplescalar}{\marg{kernel1}\marg{kernel2}\marg{kernel3}}
-Symbol for right associated triple scalar product.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\rtriplescalar{\vect{A}}{\vect{B}}{\vect{C}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Basis Vectors and Bivectors}
-% If you use geometric algebra or tensors, eventually you will need
-% symbols for basis vectors and basis bivectors.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ezero}{}
-Symbols for basis vectors with lower indices up to 4.
-\end{docCommand}
-\begin{docCommand}{eone}{}
\end{docCommand}
-\begin{docCommand}{etwo}{}
+\checkconstant{bohrradius}
+\begin{docCommand}[doc description = exact]{boltzmann}{}
\end{docCommand}
-\begin{docCommand}{ethree}{}
+\checkconstant{boltzmann}
+\begin{docCommand}[doc new = 2021-02-02]{coulombconstant}{}
\end{docCommand}
-\begin{docCommand}{efour}{}
+\checkconstant{coulombconstant}
+\begin{docCommand}{earthmass}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ezero, \eone, \etwo, \ethree, \efour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{uezero}{}
-Symbols for normalized basis vectors with lower indices up to 4.
-\end{docCommand}
-\begin{docCommand}{ueone}{}
-\end{docCommand}
-\begin{docCommand}{uetwo}{}
-\end{docCommand}
-\begin{docCommand}{uethree}{}
-\end{docCommand}
-\begin{docCommand}{uefour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\uezero, \ueone, \uetwo, \uethree, \uefour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ezerozero}{}
-Symbols for basis bivectors with lower indices up to 4.
-\end{docCommand}
-\begin{docCommand}{ezeroone}{}
-\end{docCommand}
-\begin{docCommand}{ezerotwo}{}
-\end{docCommand}
-\begin{docCommand}{ezerothree}{}
-\end{docCommand}
-\begin{docCommand}{ezerofour}{}
-\end{docCommand}
-\begin{docCommand}{eoneone}{}
-\end{docCommand}
-\begin{docCommand}{eonetwo}{}
-\end{docCommand}
-\begin{docCommand}{eonethree}{}
-\end{docCommand}
-\begin{docCommand}{eonefour}{}
-\end{docCommand}
-\begin{docCommand}{etwoeone}{}
-\end{docCommand}
-\begin{docCommand}{etwotwo}{}
-\end{docCommand}
-\begin{docCommand}{etwothree}{}
-\end{docCommand}
-\begin{docCommand}{etwofour}{}
-\end{docCommand}
-\begin{docCommand}{ethreeeone}{}
-\end{docCommand}
-\begin{docCommand}{ethreetwo}{}
-\end{docCommand}
-\begin{docCommand}{ethreethree}{}
-\end{docCommand}
-\begin{docCommand}{ethreefour}{}
-\end{docCommand}
-\begin{docCommand}{efoureone}{}
-\end{docCommand}
-\begin{docCommand}{efourtwo}{}
-\end{docCommand}
-\begin{docCommand}{efourthree}{}
-\end{docCommand}
-\begin{docCommand}{efourfour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ezerozero, \ezeroone, \ezerotwo, \ezerothree, \ezerofour, \\
-\eoneone, \eonetwo, \eonethree, \eonefour, \etwoone, \\
-\etwotwo, \etwothree, \etwofour, \ethreeone, \ethreetwo, \\
-\ethreethree, \ethreefour, \efourone, \efourtwo, \efourthree, \\
-\efourfour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{euzero}{}
-Symbols for basis vectors with upper indices up to 4.
-\end{docCommand}
-\begin{docCommand}{euone}{}
-\end{docCommand}
-\begin{docCommand}{eutwo}{}
-\end{docCommand}
-\begin{docCommand}{euthree}{}
-\end{docCommand}
-\begin{docCommand}{eufour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\euzero, \euone, \eutwo, \euthree, \eufour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ueuzero}{}
-Symbols for normalized basis vectors with upper indices up to 4.
-\end{docCommand}
-\begin{docCommand}{ueuone}{}
-\end{docCommand}
-\begin{docCommand}{ueutwo}{}
-\end{docCommand}
-\begin{docCommand}{ueuthree}{}
-\end{docCommand}
-\begin{docCommand}{ueufour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ueuzero, \ueuone, \ueutwo, \ueuthree, \ueufour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{euzerozero}{}
-Symbols for basis bivectors with upper indices up to 4.
-\end{docCommand}
-\begin{docCommand}{euzeroone}{}
-\end{docCommand}
-\begin{docCommand}{euzerotwo}{}
-\end{docCommand}
-\begin{docCommand}{euzerothree}{}
-\end{docCommand}
-\begin{docCommand}{euzerofour}{}
-\end{docCommand}
-\begin{docCommand}{euoneone}{}
-\end{docCommand}
-\begin{docCommand}{euonetwo}{}
-\end{docCommand}
-\begin{docCommand}{euonethree}{}
-\end{docCommand}
-\begin{docCommand}{euonefour}{}
-\end{docCommand}
-\begin{docCommand}{eutwoeone}{}
-\end{docCommand}
-\begin{docCommand}{eutwotwo}{}
-\end{docCommand}
-\begin{docCommand}{eutwothree}{}
-\end{docCommand}
-\begin{docCommand}{eutwofour}{}
-\end{docCommand}
-\begin{docCommand}{euthreeeone}{}
-\end{docCommand}
-\begin{docCommand}{euthreetwo}{}
-\end{docCommand}
-\begin{docCommand}{euthreethree}{}
-\end{docCommand}
-\begin{docCommand}{euthreefour}{}
-\end{docCommand}
-\begin{docCommand}{eufoureone}{}
-\end{docCommand}
-\begin{docCommand}{eufourtwo}{}
-\end{docCommand}
-\begin{docCommand}{eufourthree}{}
-\end{docCommand}
-\begin{docCommand}{eufourfour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\euzerozero, \euzeroone, \euzerotwo, \euzerothree, \euzerofour, \\
-\euoneone, \euonetwo, \euonethree, \euonefour, \eutwoone, \\
-\eutwotwo, \eutwothree, \eutwofour, \euthreeone, \euthreetwo, \\
-\euthreethree, \euthreefour, \eufourone, \eufourtwo, \eufourthree, \\
-\eufourfour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gzero}{}
-Symbols for basis vectors, with \(\gamma\) as the kernel, with lower indices
-up to 4.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\gzero, \gone, \gtwo, \gthree, \gfour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{guzero}{}
-Symbols for basis vectors, with \(\gamma\) as the kernel, with upper indices
-up to 4.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\guzero, \guone, \gutwo, \guthree, \gufour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gzerozero}{}
-Symbols for basis bivectors, with \(\gamma\) as the kernel, with lower indices
-up to 4.
-\end{docCommand}
-\begin{docCommand}{gzeroone}{}
-\end{docCommand}
-\begin{docCommand}{gzerotwo}{}
-\end{docCommand}
-\begin{docCommand}{gzerothree}{}
-\end{docCommand}
-\begin{docCommand}{gzerofour}{}
-\end{docCommand}
-\begin{docCommand}{goneone}{}
-\end{docCommand}
-\begin{docCommand}{gonetwo}{}
-\end{docCommand}
-\begin{docCommand}{gonethree}{}
-\end{docCommand}
-\begin{docCommand}{gonefour}{}
-\end{docCommand}
-\begin{docCommand}{gtwoeone}{}
-\end{docCommand}
-\begin{docCommand}{gtwotwo}{}
-\end{docCommand}
-\begin{docCommand}{gtwothree}{}
-\end{docCommand}
-\begin{docCommand}{gtwofour}{}
-\end{docCommand}
-\begin{docCommand}{gthreeeone}{}
-\end{docCommand}
-\begin{docCommand}{gthreetwo}{}
-\end{docCommand}
-\begin{docCommand}{gthreethree}{}
-\end{docCommand}
-\begin{docCommand}{gthreefour}{}
-\end{docCommand}
-\begin{docCommand}{gfoureone}{}
-\end{docCommand}
-\begin{docCommand}{gfourtwo}{}
-\end{docCommand}
-\begin{docCommand}{gfourthree}{}
-\end{docCommand}
-\begin{docCommand}{gfourfour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\gzerozero, \gzeroone, \gzerotwo, \gzerothree, \gzerofour, \\
-\goneone, \gonetwo, \gonethree, \gonefour, \gtwoone, \\
-\gtwotwo, \gtwothree, \gtwofour, \gthreeone, \gthreetwo, \\
-\gthreethree, \gthreefour, \gfourone, \gfourtwo, \gfourthree, \\
-\gfourfour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{guzerozero}{}
-Symbols for basis bivectors, with \(\gamma\) as the kernel, with upper indices
-up to 4.
-\end{docCommand}
-\begin{docCommand}{guzeroone}{}
-\end{docCommand}
-\begin{docCommand}{guzerotwo}{}
-\end{docCommand}
-\begin{docCommand}{guzerothree}{}
-\end{docCommand}
-\begin{docCommand}{guzerofour}{}
-\end{docCommand}
-\begin{docCommand}{guoneone}{}
-\end{docCommand}
-\begin{docCommand}{guonetwo}{}
-\end{docCommand}
-\begin{docCommand}{guonethree}{}
-\end{docCommand}
-\begin{docCommand}{guonefour}{}
-\end{docCommand}
-\begin{docCommand}{gutwoeone}{}
-\end{docCommand}
-\begin{docCommand}{gutwotwo}{}
-\end{docCommand}
-\begin{docCommand}{gutwothree}{}
-\end{docCommand}
-\begin{docCommand}{gutwofour}{}
-\end{docCommand}
-\begin{docCommand}{guthreeeone}{}
-\end{docCommand}
-\begin{docCommand}{guthreetwo}{}
-\end{docCommand}
-\begin{docCommand}{guthreethree}{}
-\end{docCommand}
-\begin{docCommand}{guthreefour}{}
-\end{docCommand}
-\begin{docCommand}{gufoureone}{}
-\end{docCommand}
-\begin{docCommand}{gufourtwo}{}
-\end{docCommand}
-\begin{docCommand}{gufourthree}{}
-\end{docCommand}
-\begin{docCommand}{gufourfour}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\guzerozero, \guzeroone, \guzerotwo, \guzerothree, \guzerofour, \\
-\guoneone, \guonetwo, \guonethree, \guonefour, \gutwoone, \\
-\gutwotwo, \gutwothree, \gutwofour, \guthreeone, \guthreetwo, \\
-\guthreethree, \guthreefour, \gufourone, \gufourtwo, \gufourthree, \\
-\gufourfour
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsubsection{Other Vector Related}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{colvector}{\marg{commadelimitedlistofcomps}}
-Typesets column vectors.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\colvector{x^0,x^1,x^2,x^3} \\
-\colvector{x_0,x_1,x_2,x_3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{rowvector}{\marg{commadelimitedlistofcomps}}
-Typesets row vectors.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\rowvector{x^0,x^1,x^2,x^3} \\
-\rowvector{x_0,x_1,x_2,x_3}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompscvect}{\oarg{anynonzero}\marg{kernel}}
-Typesets subscripted symbolic components of column 3- or 4-vectors
-(use any nonzero value for the optional argument to typeset a 4-vector).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\begin{mysolution*}
- \vect{p} &= \scompscvect{p} \\
- \vect{p} &= \scompscvect[4]{p}
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsCvect}{\oarg{anynonzero}\marg{kernel}}
-Typesets superscripted symbolic components of column 3- or 4-vectors
-(use any nonzero value for the optional argument to typeset a 4-vector).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\begin{mysolution*}
- \vect{p} &= \scompsCvect{p} \\
- \vect{p} &= \scompsCvect[4]{p}
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsrvect}{\oarg{anynonzero}\marg{kernel}}
-Typesets subscripted symbolic components of row 3- or 4-vectors
-(use any nonzero value for the optional argument to typeset a 4-vector).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\begin{mysolution*}
- \vect{p} &= \scompsrvect{p} \\
- \vect{p} &= \scompsrvect[4]{p}
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scompsRvect}{\oarg{anynonzero}\marg{kernel}}
-Typesets superscripted symbolic components of row 3- or 4-vectors
-(use any nonzero value for the optional argument to typeset a 4-vector).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\begin{mysolution*}
- \vect{p} &= \scompsRvect{p} \\
- \vect{p} &= \scompsRvect[4]{p}
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{anglebetween}{\marg{kernal}\marg{kernel}}
-Typesets the symbol for the angle between two vectors.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\anglebetween{a}{b}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{parallelto}{\marg{thing}}
-A better looking parallel symbol whose height is the same as the perpendicular
-symbol's height.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\vect{A}_{\parallelto\vect{B}}\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{perpendicularto}{\marg{thing}}
-An alias for the perpendicular symbol.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\vect{A}_{\perpendicularto\vect{B}}\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{bra}{\marg{bra}}
-Typesets a Dirac bra.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\bra{\Psi^*} or \bra{\frac{1}{a}\Psi^*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ket}{\marg{ket}}
-Typesets a Dirac ket.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ket{\Psi} or \ket{\frac{1}{b}\Psi^*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{bracket}{\marg{bra}\marg{ket}}
-Typesets a Dirac bracket.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\bracket{\Psi^*}{\Psi}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{Frequently Used Fractions}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{onehalf}{}
-Small fractions with numerator 1 and denominators up to 10.
-\end{docCommand}
-\begin{docCommand}{onethird}{}
-\end{docCommand}
-\begin{docCommand}{onefourth}{}
-\end{docCommand}
-\begin{docCommand}{onefifth}{}
-\end{docCommand}
-\begin{docCommand}{onesixth}{}
-\end{docCommand}
-\begin{docCommand}{oneseventh}{}
-\end{docCommand}
-\begin{docCommand}{oneeighth}{}
-\end{docCommand}
-\begin{docCommand}{onenineth}{}
-\end{docCommand}
-\begin{docCommand}{onetenth}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\onehalf, \onethird, \onefourth, \onefifth, \onesixth, \\
-\oneseventh, \oneeighth, \oneninth, \onetenth\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{twooneths}{}
-Small fractions with numerator 2 and denominators up to 10.
-\end{docCommand}
-\begin{docCommand}{twohalves}{}
-\end{docCommand}
-\begin{docCommand}{twothirds}{}
-\end{docCommand}
-\begin{docCommand}{twofourths}{}
-\end{docCommand}
-\begin{docCommand}{twofifths}{}
-\end{docCommand}
-\begin{docCommand}{twosixths}{}
-\end{docCommand}
-\begin{docCommand}{twosevenths}{}
-\end{docCommand}
-\begin{docCommand}{twoeighths}{}
-\end{docCommand}
-\begin{docCommand}{twonineths}{}
-\end{docCommand}
-\begin{docCommand}{twotenths}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\twooneths, \twohalves, \twothirds, \twofourths, \twofifths, \\
-\twosixths, \twosevenths, \twoeighths, \twoninths, \twotenths\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{threeoneths}{}
-Small fractions with numerator 3 and denominators up to 10.
-\end{docCommand}
-\begin{docCommand}{threehalves}{}
-\end{docCommand}
-\begin{docCommand}{threethirds}{}
-\end{docCommand}
-\begin{docCommand}{threefourths}{}
-\end{docCommand}
-\begin{docCommand}{threefifths}{}
-\end{docCommand}
-\begin{docCommand}{threesixths}{}
-\end{docCommand}
-\begin{docCommand}{threesevenths}{}
-\end{docCommand}
-\begin{docCommand}{threeeighths}{}
-\end{docCommand}
-\begin{docCommand}{threenineths}{}
-\end{docCommand}
-\begin{docCommand}{threetenths}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\threeoneths, \threehalves, \threethirds, \threefourths, \threefifths, \\
-\threesixths, \threesevenths, \threeeighths, \threeninths, \threetenths\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fouroneths}{\marg{magnitude}}
-Small fractions with numerator 4 and denominators up to 10.
-\end{docCommand}
-\begin{docCommand}{fourhalves}{}
-\end{docCommand}
-\begin{docCommand}{fourthirds}{}
-\end{docCommand}
-\begin{docCommand}{fourfourths}{}
-\end{docCommand}
-\begin{docCommand}{fourfifths}{}
-\end{docCommand}
-\begin{docCommand}{foursixths}{}
-\end{docCommand}
-\begin{docCommand}{foursevenths}{}
-\end{docCommand}
-\begin{docCommand}{foureighths}{}
-\end{docCommand}
-\begin{docCommand}{fournineths}{}
-\end{docCommand}
-\begin{docCommand}{fourtenths}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\fouroneths, \fourhalves, \fourthirds, \fourfourths, \fourfifths, \\
-\foursixths, \foursevenths, \foureighths, \fourninths, \fourtenths\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{Calculus}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{sumoverall}{\marg{variable}}
-Properly typesets summation over all of some user specified entities.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \sumoverall{particles} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dx}{\marg{variable}}
-Properly typesets variables of integration (the d should not be in
-italics and should be properly spaced relative to the integrand).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \dx{y} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dslashx}{\marg{variable}}
-Symbol indicating an inexact differential. Frequently used in physics.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \dslashx{Q} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{evaluatedfromto}{\marg{lower}\oarg{upper}}
-Properly typesets the evaluation of definite integrals. Note that the upper
-limit is optional.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( {\onethird y^3}\evaluatedfromto{0}[3] \) \\
-\( {\onethird y^3}\evaluatedfromto{0} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{evaluatedat}{\marg{evaluationpoint}}
-Properly indicates evaluation at a particular point or value without
-specifying the quantity. This is really just an alias for \cs{evaluatedfromto}
-with no optional upper limit.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \text{LMST}\evaluatedat{\longitude{0}} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{integral}{\oarg{lower}\oarg{upper}\marg{integrand}\marg{var}}
-Typesets indefinite and definite integrals.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \integral{y^2}{y} \]
-\[ \integral[0][3]{y^2}{y} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{opensurfaceintegral}{\marg{surfacename}\marg{vectorname}}
-Integral over an open surface of the normal component of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \opensurfaceintegral{S}{\vect{E}} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{closedsurfaceintegral}{\marg{surfacename}\marg{vectorname}}
-Integral over a closed surface of the normal component of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \closedsurfaceintegral{S}{\vect{E}} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{openlineintegral}{\marg{pathname}\marg{vectorname}}
-Integral over an open path of the tangential component of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \openlineintegral{C}{\vect{E}} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{closedlineintegral}{\marg{pathname}\marg{vectorname}}
-Integral over a closed path of the tangential component of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \closedlineintegral{C}{\vect{E}} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% For line integrals, I have not employed the common \dx{\vect{\ell}} symbol.
-% Instead, I use \(\hat{t}\dx{\ell}\) for two main reason. The first is that
-% line integrals require the component of a vector that is tangent to a curve,
-% and I use \(\hat{t}\) to denote a unit tangent. The second is that the new
-% notation looks more like that for surface integrals.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{volumeintegral}{\marg{volumename}\marg{integrand}}
-Integral over a volume.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\[ \volumeintegral{V}{\rho} \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dbydt}{\oarg{operand}}
-First time derivative operator.
-\end{docCommand}
-\begin{docCommand}{DbyDt}{\oarg{operand}}
-Identical to \refCom{dbydt} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \dbydt \) or \( \dbydt x \) or \dbydt[x] \\
-\( \DbyDt \) or \( \DbyDt x \) or \DbyDt[x]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ddbydt}{\oarg{operand}}
-Second time derivative operator.
-\end{docCommand}
-\begin{docCommand}{DDbyDt}{\oarg{operand}}
-Identical to \cs{ddbydt} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \ddbydt \) or \( \ddbydt x \) or \ddbydt[x] \\
-\( \DDbyDt \) or \( \DDbyDt x \) or \DDbyDt[x]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{pbypt}{\oarg{operand}}
-First partial time derivative operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \pbypt \) or \( \pbypt x \) or \pbypt[x]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ppbypt}{\oarg{operand}}
-Second partial time derivative operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \ppbypt \) or \( \ppbypt x \) or \ppbypt[x]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dbyd}{\marg{dependentvariable}\marg{indvar}}
-Generic first derivative operator.
-\end{docCommand}
-\begin{docCommand}{DbyD}{\marg{dependentvariable}\marg{indvar}}
-Identical to \refCom{dbyd} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \dbyd{f}{y} \) \\
-\( \DbyD{f}{y} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ddbyd}{\marg{dependentvariable}\marg{indvar}}
-Generic second derivative operator.
-\end{docCommand}
-\begin{docCommand}{DDbyD}{\marg{dependentvariable}\marg{indvar}}
-Identical to \refCom{ddbyd} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \ddbyd{f}{y} \) \\
-\( \DDbyD{f}{y} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{pbyp}{\marg{dependentvariable}\marg{indvar}}
-Generic first partial derivative operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \pbyp{f}{y} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ppbyp}{\marg{dependentvariable}\marg{indvar}}
-Generic second partial derivative operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \ppbyp{f}{y} \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gradient}{}
-Gibbs' gradient operator. It's just an alias for \cs{nabla}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\gradient
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{divergence}{}
-Gibbs' divergence operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\divergence
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{curl}{}
-Gibbs' curl operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\curl
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{taigrad}{}
-Tai's gradient operator. It's just an alias for \cs{nabla}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\taigrad
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{taisvec}{}
-Tai's symbol for symbolic vector.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\taisvec
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{taidivg}{}
-Tai's symbol for divergence operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\taidivg
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{taicurl}{}
-Tai's symbol for curl operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\taicurl
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{laplacian}{}
-Laplacian operator.
+\checkconstant{earthmass}
+\begin{docCommand}{earthmoondistance}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\laplacian
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dalembertian}{}
-D'Alembertian operator.
+\checkconstant{earthmoondistance}
+\begin{docCommand}{earthradius}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dalembertian
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriesfofx}{}
-Series expansion of \(f(x)\) around \(x=a\).
+\checkconstant{earthradius}
+\begin{docCommand}{earthsundistance}{}
\end{docCommand}
-\begin{dispExample}
-\seriesfofx \\
-\seriesfofx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriesexpx}{}
-Series expansion of \(e^x\).
+\checkconstant{earthsundistance}
+\begin{docCommand}{electroncharge}{}
\end{docCommand}
-\begin{dispExample}
-\seriesexpx \\
-\seriesexpx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriessinx}{}
-Series expansion of \(\sin x\).
+\checkconstant{electroncharge}
+\begin{docCommand}{electronCharge}{}
\end{docCommand}
-\begin{dispExample}
-\seriessinx \\
-\seriessinx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriescosx}{}
-Series expansion of \(\cos x\).
-\end{docCommand}
-\begin{dispExample}
-\seriescosx \\
-\seriescosx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriestanx}{}
-Series expansion of \(\tan x\).
-\end{docCommand}
-\begin{dispExample}
-\seriestanx \\
-\seriestanx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{seriesatox}{}
-Series expansion of \(a^x\).
+\checkconstant{electronCharge}
+\begin{docCommand}{electronmass}{}
\end{docCommand}
-\begin{dispExample}
-\seriesatox \\
-\seriesatox[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{serieslnoneplusx}{}
-Series expansion of \(\ln(1+x)\).
+\checkconstant{electronmass}
+\begin{docCommand}[doc description = exact]{elementarycharge}{}
\end{docCommand}
-\begin{dispExample}
-\serieslnoneplusx \\
-\serieslnoneplusx[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{binomialseries}{}
-Series expansion of \((1+x)^n\).
-\end{docCommand}
-\begin{dispExample}
-\binomialseries \\
-\binomialseries[z]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{diracdelta}{\marg{arg}}
-Dirac delta function.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\diracdelta{x}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{orderof}{\marg{arg}}
-Order of indicator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\orderof{x^2}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{eulerlagrange}{\oarg{operand}}
-Euler-Lagrange equation.
-\end{docCommand}
-\begin{docCommand}{Eulerlagrange}{\oarg{operand}}
-Like \refCom{eulerlagrange} but uses \(\Delta\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\( \eulerlagrange \) or \( \eulerlagrange[x] \) \\
-\( \Eulerlagrange \) or \( \Eulerlagrange[x] \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{Other Useful Commands}
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{asin}{}
-Symbol for inverse sine and other inverse circular trig functions.
-\end{docCommand}
-\begin{docCommand}{acos}{}
-\end{docCommand}
-\begin{docCommand}{atan}{}
-\end{docCommand}
-\begin{docCommand}{asec}{}
-\end{docCommand}
-\begin{docCommand}{acsc}{}
-\end{docCommand}
-\begin{docCommand}{acot}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \asin, \acos, \atan, \asec, \acsc, \acot \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{sech}{}
-Hyperbolic and inverse hyperbolic functions not defined in \LaTeX.
-\end{docCommand}
-\begin{docCommand}{csch}{}
-\end{docCommand}
-\begin{docCommand}{asinh}{}
-\end{docCommand}
-\begin{docCommand}{acosh}{}
-\end{docCommand}
-\begin{docCommand}{atanh}{}
-\end{docCommand}
-\begin{docCommand}{asech}{}
-\end{docCommand}
-\begin{docCommand}{acsch}{}
-\end{docCommand}
-\begin{docCommand}{acoth}{}
-\end{docCommand}
-\begin{dispExample}
-\( \sech, \csch, \asinh, \acosh, \atanh, \asech, \acsch, \acoth \)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{sgn}{\marg{arg}}
-Signum function.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \sgn \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dex}{}
-Decimal exponentiation function (used in astrophysics).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\( \dex \)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{logb}{\oarg{base}}
-Logarithm to an arbitrary base.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\logb 8, \logb[2] 8
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{cB}{}
-Alternate symbol for magnetic field inspired by Tom Moore.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\cB, \vect{\cB}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{newpi}{}
-Bob Palais' symbol for \(2\pi\).
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\newpi
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{scripty}{\marg{kernel}}
-Command to get fonts in Griffiths' electrodynamics textbook.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\scripty{r}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Lagr}{}
-Command to get symbol for Lagrangian.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Lagr
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{flux}{\oarg{label}}
-Symbol for flux of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\flux, \flux[E]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{circulation}{\oarg{label}}
-Symbol for circulation of a vector field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\circulation, \circulation[E]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inparens}{\marg{arg}}
-Surrounds with argument with parentneses. A blank argument generates a
-placeholder.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\inparens{\onehalf}, \inparens{-3}, \inparens{}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{absof}{\marg{arg}}
-Absolute value function. A blank argument generates a placeholder.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\absof{-4}, \absof{}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{magof}{\marg{arg}}
-Magnitude of a quantity (lets you selectively use double bars even
-when the \opt{singlemagbars} option is use when loading the package).
-A blank argument generates a placeholder.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\magof{\vect{E}}, \magof{}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dimsof}{\marg{arg}}
-Notation for showing the dimensions of a quantity. A blank argument
-generates a placeholder.
-\end{docCommand}
-\begin{dispExample}
-\( \dimsof{\vect{v}} = L \cdot T^{-1} \), \dimsof{}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{unitsof}{\marg{arg}}
-Notation for showing the units of a quantity. I propose this notation and
-hope to propagate it because I could not find any standard notation for
-this same idea in other sources. A blank argument generates a placeholder.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\unitsof{\vect{v}} = \velocityonlyaltnunit, \unitsof{}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Changein}{\marg{arg}}
-Notation for \emph{the change in a quantity}.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\Changein{\vect{E}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{xtento}{\marg{exponent}\oarg{unit}}
-Command for scientific notation with an optional unit.
-\end{docCommand}
-\begin{docCommand}{timestento}{\marg{exponent}\oarg{unit}}
-Another command for scientific notation with an optional unit.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-2.99\xtento{8}[\velocityonlyaltnunit] \\
-2.99\timestento{-4}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ee}{\marg{mantissa}\marg{exponent}}
-Command for scientific notation for computer code. Units are not used in computer
-code.
-\end{docCommand}
-\begin{docCommand}{EE}{\marg{mantissa}\marg{exponent}}
-Identical to \refCom{ee} but gives capital letters.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ee{2.99}{8} \\
-\EE{2.99}{8}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{dms}{\marg{deg}\marg{min}\marg{sec}}
-Command for formatting angles and time. Note that other packages may do
-this better.
-\end{docCommand}
-\begin{docCommand}{hms}{\marg{deg}\marg{min}\marg{sec}}
-Like \refCom{dms} but formats time.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\dms{23}{34}{10.27} \\
-\hms{23}{34}{10.27}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{clockreading}{\marg{hrs}\marg{min}\marg{sec}}
-Command for formatting a clock reading. Really an alias for \refCom{hms},
-but conceptually a very different idea that introductory textbooks don't
-do a good enough job at articulating.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\clockreading{23}{34}{10.27}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{latitude}{\marg{arg}}
-Command for formatting latitude, useful in astronomy.
-\end{docCommand}
-\begin{docCommand}{latitudeN}{\marg{arg}}
-Command for formatting latitude with an N for north.
-\end{docCommand}
-\begin{docCommand}{latitudeS}{\marg{arg}}
-Command for formatting latitude with an S for north.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\latitude{+35}, \latitudeN{35}, \latitudeS{35}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{longitude}{\marg{arg}}
-Command for formatting longitude, useful in astronomy.
-Use \refCom{longitudeE} or \refCom{longitudeW} to include a letter.
-\end{docCommand}
-\begin{docCommand}{longitudeE}{\marg{arg}}
-Command for formatting longitude with an E for east.
-\end{docCommand}
-\begin{docCommand}{longitudeW}{\marg{arg}}
-Command for formatting longitude with an W for east.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\longitude{-81}, \longitudeE{81}, \longitudeW{81}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ssup}{\marg{kernel}\marg{sup}}
-Command for typesetting text superscripts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ssup{N}{contact}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ssub}{\marg{kernel}\marg{sub}}
-Command for typesetting text subscripts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ssub{N}{AB}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ssud}{\marg{sup}\marg{sub}}
-Command for typesetting text superscripts and subscripts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\ssud{N}{contact}{AB}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{msub}{\marg{kernel}\marg{sub}}
-Command for typesetting mathematical subscripts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\msub{R}{\alpha\beta}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{msud}{\marg{kernel}\marg{sup}\marg{sub}}
-Command for typesetting mathematical superscripts and subscripts.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\msud{\Gamma}{\gamma}{\alpha\beta}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{levicivita}{\marg{indices}}
-Command for Levi-Civita symbol.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\levicivita{ijk}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{kronecker}{\marg{indices}}
-Command for Kronecker delta symbol.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\kronecker{ij}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{xaxis}{}
-Command for coordinate axes.
-\end{docCommand}
-\begin{docCommand}{yaxis}{}
-\end{docCommand}
-\begin{docCommand}{zaxis}{}
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
- \xaxis, \yaxis, \zaxis
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{naxis}{\oarg{axis}}
-Command for custom naming a coordinate axis.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\naxis{t}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{axis}{}
-Suffix command for custom naming a coordinate axis. You are responsible
-for using math mode if necessary for the thing to which you apply the
-suffix.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(t\axis\)
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{xyplane}{}
-Commands for naming coordinate planes. All combinations are defined.
-\end{docCommand}
-\begin{docCommand}{yzplane}{}
-\end{docCommand}
-\begin{docCommand}{zxplane}{}
-\end{docCommand}
-\begin{docCommand}{yxplane}{}
-\end{docCommand}
-\begin{docCommand}{zyplane}{}
-\end{docCommand}
-\begin{docCommand}{xzplane}{}
-\end{docCommand}
-\begin{dispExample}
-\xyplane, \yzplane, \zxplane, \yxplane, \zyplane, \xzplane
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{plane}{}
-Suffix command for custom naming a coordinate plane. You are responsible
-for using math mode if necessary for the thing to which you apply the suffix.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(xt\)\plane
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fsqrt}{\marg{arg}}
-Command for square root as a fractional exponent.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\fsqrt{x}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{cuberoot}{\marg{arg}}
-Command for cube root of an argument.
-\end{docCommand}
-\begin{docCommand}{fcuberoot}{\marg{arg}}
-Command for cube root of an argument as a fractional power.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\cuberoot{x} \\
-\fcuberoot{x}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fourthroot}{\marg{arg}}
-Command for fourth root of an argument.
-\end{docCommand}
-\begin{docCommand}{ffourthroot}{\marg{arg}}
-Command for fourth root of an argument as a fractional power.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\fourthroot{x} \\
-\ffourthroot{x}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fifthroot}{\marg{arg}}
-Command for fifth root of an argument.
+\checkconstant{elementarycharge}
+\begin{docCommand}{finestructure}{}
\end{docCommand}
-\begin{docCommand}{ffifthroot}{\marg{arg}}
-Command for fifth root of an argument as a fractional power.
+\checkconstant{finestructure}
+\begin{docCommand}{hydrogenmass}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\fifthroot{x} \\
-\ffifthroot{x}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{relgamma}{\marg{arg}}
-Expression for Lorentz factor.
+\checkconstant{hydrogenmass}
+\begin{docCommand}{moonearthdistance}{}
\end{docCommand}
-\begin{docCommand}{frelgamma}{\marg{arg}}
-Expression for Lorentz factor with a fractional power.
+\checkconstant{moonearthdistance}
+\begin{docCommand}{moonmass}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\begin{mysolution*}
- \gamma &= \relgamma{\magvect{v}} \\
- \gamma &= \frelgamma{\magvect{v}}
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{oosqrtomxs}{\marg{arg}}
-Commands for \textbf{o}ne \textbf{o}ver \textbf{s}quare root \textbf{o}f
-\textbf{o}ne \textbf{m}inus \textbf{x} \textbf{s}quared. Say that out loud and
-you will see where the name comes from.
+\checkconstant{moonmass}
+\begin{docCommand}{moonradius}{}
\end{docCommand}
-\begin{docCommand}{oosqrtomx}{\marg{arg}}
-Commands for \textbf{o}ne \textbf{o}ver \textbf{s}quare root \textbf{o}f
-\textbf{o}ne \textbf{m}inus \textbf{x}. Say that out loud and
-you will see where the name comes from.
+\checkconstant{moonradius}
+\begin{docCommand}{mzofp}{}
\end{docCommand}
-\begin{docCommand}{oomx}{\marg{arg}}
-Commands for \textbf{o}ne \textbf{o}ver \textbf{s}quare root \textbf{o}f
-\textbf{o}ne \textbf{m}inus \textbf{x}. Say that out loud and
-you will see where the name comes from.
+\checkconstant{mzofp}
+\begin{docCommand}{neutronmass}{}
\end{docCommand}
-\begin{docCommand}{oopx}{\marg{arg}}
-Commands for \textbf{o}ne \textbf{o}ver \textbf{s}quare root \textbf{o}f
-\textbf{o}ne \textbf{p}lus \textbf{x}. Say that out loud and
-you will see where the name comes from.
+\checkconstant{neutronmass}
+\begin{docCommand}{oofpez}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\oosqrtomxs{0.22} \\
-\oosqrtomx{0.22} \\
-\ooomx{0.22} \\
-\ooopx{0.11}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{Custom Operators}
-% The \(=\) operator is frequently misused. We need other operators
-% for other cases to express conceptual relationships other than, say,
-% mathematical equality. Some of these may seem strange to you but I have
-% found them helpful.
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{isequals}{}
-Command for \emph{test-for-equality} operator.
+\checkconstant{oofpez}
+\begin{docCommand}{oofpezcs}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-5 \isequals 3
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{wordoperator}{\marg{firstline}\marg{secondline}}
-Command for two lines of tiny text to be use as an operator without using
-mathematical symbols.
+\checkconstant{oofpezcs}
+\begin{docCommand}[doc description = exact]{planck}{}
\end{docCommand}
-\begin{docCommand}{pwordoperator}{\marg{firstline}\marg{secondline}}
-Like \refCom{wordoperator} but puts parentheses around the operator.
+\checkconstant{planck}
+\begin{docCommand}{planckbar}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\wordoperator{added}{to} \\
-\pwordoperator{added}{to}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{definedas}{}
-Operator representing a definition.
+\checkconstant{planckbar}
+\begin{docCommand}{planckc}{}
\end{docCommand}
-\begin{docCommand}{pdefinedas}{}
-Same as \refCom{definedas} but puts parentheses around the operator.
+\checkconstant{planckc}
+\begin{docCommand}{protoncharge}{}
\end{docCommand}
-\begin{docCommand}{earlierthan}{}
-Operator useful for comparing times and clock readings.
+\checkconstant{protoncharge}
+\begin{docCommand}{protonCharge}{}
\end{docCommand}
-\begin{docCommand}{pearlierthan}{}
-Same as \refCom{earlierthan} but puts parentheses around the operator.
+\checkconstant{protonCharge}
+\begin{docCommand}{protonmass}{}
\end{docCommand}
-\begin{docCommand}{laterthan}{}
-Operator useful for comparing times and clock readings.
+\checkconstant{protonmass}
+\begin{docCommand}{rydberg}{}
\end{docCommand}
-\begin{docCommand}{platerthan}{}
-Same as \refCom{laterthan} but puts parentheses around the operator.
+\checkconstant{rydberg}
+\begin{docCommand}[doc description = exact]{speedoflight}{}
\end{docCommand}
-\begin{docCommand}{adjustedby}{}
-Operator useful for comparing times and clock readings.
+\checkconstant{speedoflight}
+\begin{docCommand}{stefanboltzmann}{}
\end{docCommand}
-\begin{docCommand}{padjustedby}{}
-Same as \refCom{adjustedby} but puts parentheses around the operator.
+\checkconstant{stefanboltzmann}
+\begin{docCommand}{sunearthdistance}{}
\end{docCommand}
-\begin{docCommand}{forevery}{}
-Operator for conveying the idea of for every.
+\checkconstant{sunearthdistance}
+\begin{docCommand}{sunradius}{}
\end{docCommand}
-\begin{docCommand}{pforevery}{}
-Same as \refCom{forevery} but puts parentheses around the operator.
+\checkconstant{sunradius}
+\begin{docCommand}{surfacegravfield}{}
\end{docCommand}
-\begin{docCommand}{associated}{}
-Operator representing a conceptual association.
+\checkconstant{surfacegravfield}
+\begin{docCommand}{universalgrav}{}
\end{docCommand}
-\begin{docCommand}{passociated}{}
-Same as \refCom{associated} but puts parentheses around the operator.
+\checkconstant{universalgrav}
+\begin{docCommand}{vacuumpermeability}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\definedas \\
-\pdefinedas \\
-\earlierthan \\
-\pearlierthan \\
-\laterthan \\
-\platerthan \\
-\adjustedby \\
-\padjustedby \\
-\forevery \\
-\pforevery \\
-\associated \\
-\passociated
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{defines}{}
-Command for \emph{defines} or \emph{defined by} operator.
+\checkconstant{vacuumpermeability}
+\begin{docCommand}{vacuumpermittivity}{}
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\vect{p} \defines \(\gamma m\)\vect{v}
-\end{dispExample*}
+\checkconstant{vacuumpermittivity}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{inframe}{\oarg{frame}}
-Command for operator indicating the coordinate representation of a vector
-in a particular reference frame denoted by a capital letter.
-\end{docCommand}
-\begin{dispExample}
-\vect{p} \inframe[S] \momentum{\mivector{1,2,3}} \\
-\vect{p} \inframe[S'] \momentum{\mivector{\sqrt{14},0,0}}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Defining and Redefining Physical Constants}
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{associates}{}
-Command for \emph{associated with} or \emph{associates with} operator
-(for verbal concepts). This is conceptually different from the
-\refCom{associated} or \refCom{passociated} operators.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-kinetic energy \associates velocity
-\end{dispExample*}
+\begin{docCommands}[%
+ doc parameter = {%
+ \marg{name}\marg{symbol}\marg{approximate value}\marg{precise value}\marg{base units}\\
+ \oarg{derived units}\oarg{alternate units}%
+ },%
+ ]%
+ {%
+ {%
+ doc new = 2021-02-16,%
+ doc name = newphysicalconstant,%
+ },%
+ {%
+ doc new=2021-02-21,%
+ doc name = renewphysicalconstant,%
+ },%
+ }%
+ Command to define/redefine a new/existing physical constant.
+ If the derived or alternate units are omitted, they are
+ defined to be the same as the base units.
+\end{docCommands}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{becomes}{}
-Command for \emph{becomes} operator.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\(\gamma m\)\vect{v} \becomes \(m\)\vect{v}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% \subsubsection{Changing Precision}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{rrelatedto}{\marg{leftoperation}}
-Command for left-to-right relationship.
-\end{docCommand}
-\begin{dispExample}
-(flux ratio) \rrelatedto{taking logarithm} (mag diff)
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \linktoplace{ssec:chgunits}{Changing units} works for
+% physical constants just as it does for physical quantities.
+% A similar mechanism is provided for changing the precision
+% of physical constants' numerical values.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{lrelatedto}{\marg{roperation}}
-Command for right-to-left relationship.
-\end{docCommand}
-\begin{dispExample}
-(flux ratio) \lrelatedto{exponentiation} (mag diff)
-\end{dispExample}
+\begin{docCommands}[%
+ doc new = 2021-02-16,%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = alwaysuseapproximateconstants,%
+ },%
+ {%
+ doc name = alwaysusepreciseconstants,%
+ },%
+ }%
+ Modal commands (switches) for setting the default precision for the entire
+ document. The default when the package is loaded is set by the presence or
+ absence of the \refKey{preciseconstants} key.
+\end{docCommands}
%\iffalse
%</example>
%\fi
@@ -7322,3495 +1549,1327 @@ Command for right-to-left relationship.
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{brelatedto}{\marg{leftoperation}\marg{roperation}}
-Command for bidirectional relationship.
-\end{docCommand}
+\begin{docCommands}[%
+ doc new = 2021-02-16,%
+ doc parameter = \marg{content},%
+ ]%
+ {%
+ {%
+ doc name = hereuseapproximateconstants,%
+ },%
+ {%
+ doc name = hereusepreciseconstants,%
+ },%
+ }%
+ Commands for setting the precision on the fly for a single instance.
+\end{docCommands}
\begin{dispExample}
-(mag diff) \brelatedto{taking logarithm}{exponentiation}(flux ratio)
+ \( \hereuseapproximateconstants{\oofpez} \) \\
+ \( \hereusepreciseconstants{\oofpez} \)
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-% \subsection{Commands Specific to \mi}
-% While these commands were inspired by \mi, they can certainly be used in
-% any introductory physics course.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{momentumprinciple}{}
-Expression for the momentum principle.
-\end{docCommand}
-\begin{docCommand}{LHSmomentumprinciple}{}
-Just the left hand side.
-\end{docCommand}
-\begin{docCommand}{RHSmomentumprinciple}{}
-Just the right hand side.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\momentumprinciple \\
-\LHSmomentumprinciple \\
-\RHSmomentumprinciple
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{momentumprinciplediff}{}
-Expression for the momentum principle in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\momentumprinciplediff
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{energyprinciple}{}
-Expression for the energy principle. Processes other than work and
-thermal energy transfer (e.g.\ radiation) are neglected.
-\end{docCommand}
-\begin{docCommand}{LHSenergyprinciple}{}
-Just the left hand side.
-\end{docCommand}
-\begin{docCommand}{RHSenergyprinciple}{}
-Just the right hand side.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\energyprinciple \\
-\LHSenergyprinciple \\
-\RHSenergyprinciple
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{energyprinciplediff}{}
-Expression for the energy principle in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\energyprinciplediff
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularmomentumprinciple}{}
-Expression for the angular momentum principle.
-\end{docCommand}
-\begin{docCommand}{LHSangularmomentumprinciple}{}
-Just the left hand side.
-\end{docCommand}
-\begin{docCommand}{RHSangularmomentumprinciple}{}
-Just the right hand side.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\angularmomentumprinciple \\
-\LHSangularmomentumprinciple \\
-\RHSangularmomentumprinciple
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{angularmomentumprinciplediff}{}
-Expression for the angular momentum principle in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\angularmomentumprinciplediff
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gravitationalinteraction}{}
-Expression for gravitational interaction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\gravitationalinteraction
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricinteraction}{}
-Expression for electric interaction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\electricinteraction
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springinteraction}{}
-Expression for spring interaction.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\springinteraction
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gfieldofparticle}{}
-Expression for a particle's gravitational field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\gfieldofparticle
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Efieldofparticle}{}
-Expression for a particle's electric field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Efieldofparticle
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Bfieldofparticle}{}
-Expression for a particle's magnetic field.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Bfieldofparticle
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% In the commands that take an optional label, note how to specify
-% initial and final values of quantities.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Esys}{\oarg{label}}
-Symbol for system energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Esys, \Esys[final], \Esys[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Us}{\oarg{label}}
-Symbol for spring potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Us, \Us[final], \Us[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ug}{\oarg{label}}
-Symbol for gravitational potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Ug, \Ug[final], \Ug[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ue}{\oarg{label}}
-Symbol for electric potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Ue, \Ue[final], \Ue[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ktrans}{\oarg{label}}
-Symbol for translational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Ktrans, \Ktrans[final], \Ktrans[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Krot}{\oarg{label}}
-Symbol for rotational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Krot, \Krot[final], \Krot[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Kvib}{\oarg{label}}
-Symbol for vibrational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Kvib, \Evib[final], \Evib[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Eparticle}{\oarg{label}}
-Symbol for particle energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Eparticle, \Eparticle[final], \Eparticle[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Einternal}{\oarg{label}}
-Symbol for internal energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Einternal, \Einternal[final], \Einternal[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Erest}{\oarg{label}}
-Symbol for rest energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Erest, \Erest[final], \Erest[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Echem}{\oarg{label}}
-Symbol for chemical energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Echem, \Echem[final], \Echem[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Etherm}{\oarg{label}}
-Symbol for thermal energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Etherm, \Etherm[final], \Etherm[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Evib}{\oarg{label}}
-Symbol for vibrational energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Evib, \Evib[final], \Evib[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ephoton}{\oarg{label}}
-Symbol for photon energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Ephoton, \Ephoton[final], \Ephoton[initial]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEsys}{}
-Symbol for change in system energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEsys
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DUs}{}
-Symbol for change in spring potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DUs
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DUg}{}
-Symbol for change in gravitational potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DUg
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DUe}{}
-Symbol for change in electric potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DUe
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DKtrans}{}
-Symbol for change in translational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DKtrans
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DKrot}{}
-Symbol for change in rotational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DKrot
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DKvib}{}
-Symbol for change in vibrational kinetic energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DKvib
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEparticle}{}
-Symbol for change in particle energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEparticle
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEinternal}{}
-Symbol for change in internal energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEinternal
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DErest}{}
-Symbol for change in rest energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DErest
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEchem}{}
-Symbol for change in chemical energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEchem
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEtherm}{}
-Symbol for change in thermal energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEtherm
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEvib}{}
-Symbol for change in vibrational energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEvib
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{DEphoton}{}
-Symbol for change in photon energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\DEphoton
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{springpotentialenergy}{}
-Expression for spring potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\springpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{finalspringpotentnialenergy}{}
-Expression for final spring potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\finalspringpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{initialspringpotentialenergy}{}
-Expression for initial spring potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\initialspringpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{electricpotentialenergy}{}
-Expression for electric potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\electricpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{finalelectricpotentialenergy}{}
-Expression for final electric potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\finalelectricpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{initialelectricpotentialenergy}{}
-Expression for initial electric potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\initialelectricpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{gravitationalpotentialenergy}{}
-Expression for gravitational potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\gravitationalpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{finalgravitationalpotentialenergy}{}
-Expression for final gravitational potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\finalgravitationalpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{initialgravitationalpotentialenergy}{}
-Expression for initial gravitational potential energy.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\initialgravitationalpotentialenergy
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{ks}{}
-Symbol for spring stiffness.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\ks
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Fnet}{}
-Various symbols for net force.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Fnet, \Fnetext, \Fnetsys, \Fsub{ball,bat}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Tnet}{}
-Various symbols for net torque.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Tnet, \Tnetext, \Tnetsys, \Tsub{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{Ltotal}{}
-Various symbols for total angular momentum.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\Ltotal, \Lsys, \Lsub{ball}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwelliint}{\oarg{surfacename}}
-Left hand side of Maxwell's first equation in integral form. Note the
-default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\LHSmaxwelliint \\
- &\LHSmaxwelliint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliint}{}
-Right hand side of Maxwell's first equation in integral form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliint \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliinta}{\oarg{volumename}}
-Alternate form of right hand side of Maxwell's first equation in
-integral form. Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliinta \\
- &\RHSmaxwelliinta[\upsilon]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliintfree}{}
-Right hand side of Maxwell's first equation in integral form in
-free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliintfree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliint}{\oarg{surfacename}}
-Maxwell's first equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliint \\
- &\maxwelliint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliinta}{\oarg{surfacename}\oarg{volumename}}
-Alternate form of Maxwell's first equation in integral form.
-Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliinta \\
- &\maxwelliinta[S][\upsilon]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliintfree}{\oarg{surfacename}}
-Maxwell's first equation in integral form in free space.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliintfree \\
- &\maxwelliintfree[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwelliiint}{\oarg{surfacename}}
-Left hand side of Maxwell's second equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\LHSmaxwelliiint \\
- &\LHSmaxwelliiint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiint}{}
-Right hand side of Maxwell's second equation in integral form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiint \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiintm}{}
-Right hand side of Maxwell's second equation in integral form
-with magnetic monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiintm \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiintma}{\oarg{volumename}}
-Alternate form of right hand side of Maxwell's second equation in
-integral form with magnetic monopoles. Note the default value of
-the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliiintma \\
- &\RHSmaxwelliiintma[\upsilon]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiintfree}{}
-Right hand side of Maxwell's second equation in integral form in
-free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiintfree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiint}{\oarg{surfacename}}
-Maxwell's second equation in integral form. Note the default value
-of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiint \\
- &\maxwelliiint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiintm}{\oarg{surfacename}}
-Maxwell's second equation in integral form with magnetic monopoles.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiintm \\
- &\maxwelliiintm[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiintma}{\oarg{surfacename}\oarg{volumename}}
-Alternate form of Maxwell's second equation in integral form with
-magnetic monopoles. Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiintma \\
- &\maxwelliiintma[S][\upsilon]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiintfree}{\oarg{surfacename}}
-Maxwell's second equation in integral form in free space.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiintfree \\
- &\maxwelliiintfree[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwelliiiint}{\oarg{boundaryname}}
-Left hand side of Maxwell's third equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\LHSmaxwelliiiint \\
- &\LHSmaxwelliiiint[C]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiiint}{\oarg{surfacename}}
-Right hand side of Maxwell's third equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliiiint \\
- &\RHSmaxwelliiiint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiiintm}{\oarg{surfacename}}
-Right hand side of Maxwell's third equation in integral form with
-magnetic monopoles. Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliiiintm \\
- &\RHSmaxwelliiiintm[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiiintma}{\oarg{surfacename}}
-Alternate form of right hand side of Maxwell's third equation in
-integral form with magnetic monopoles. Note the default value of
-the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliiiintma \\
- &\RHSmaxwelliiiintma[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiiintfree}{\oarg{surfacename}}
-Right hand side of Maxwell's third equation in integral form in
-free space. Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwelliiiintfree \\
- &\RHSmaxwelliiiintfree[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiiint}{\oarg{boundaryname}\oarg{surfacename}}
-Maxwell's third equation in integral form. Note the default values of
-the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiiint \\
- &\maxwelliiiint[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiiintm}{\oarg{boundaryname}\oarg{surfacename}}
-Maxwell's third equation in integral form with magnetic monopoles.
-Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiiintm \\
- &\maxwelliiiintm[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiiintma}{\oarg{boundaryname}\oarg{surfacename}}
-Alternate form of Maxwell's third equation in integral form with magnetic
-monopoles. Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiiintma \\
- &\maxwelliiiintma[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiiintfree}{\oarg{boundaryname}\oarg{surfacename}}
-Maxwell's third equation in integral form in free space. Note the default
-values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwelliiiintfree \\
- &\maxwelliiiintfree[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwellivint}{\oarg{boundaryname}}
-Left hand side of Maxwell's fourth equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\LHSmaxwellivint \\
- &\LHSmaxwellivint[C]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellivint}{\oarg{surfacename}}
-Right hand side of Maxwell's fourth equation in integral form.
-Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwellivint \\
- &\RHSmaxwellivint[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellivinta}{\oarg{surfacename}}
-Alternate form of right hand side of Maxwell's fourth equation in
-integral form. Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwellivinta \\
- &\RHSmaxwellivinta[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellivintfree}{\oarg{surfacename}}
-Right hand side of Maxwell's fourth equation in integral form in
-free space. Note the default value of the optional argument.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\RHSmaxwellivintfree \\
- &\RHSmaxwellivintfree[S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellivint}{\oarg{boundaryname}\oarg{surfacename}}
-Maxwell's fourth equation in integral form. Note the default values of
-the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwellivint \\
- &\maxwellivint[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellivinta}{\oarg{boundaryname}\oarg{surfacename}}
-Alternate form of Maxwell's fourth equation in integral form.
-Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwellivinta \\
- &\maxwellivinta[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellivintfree}{\oarg{boundaryname}\oarg{surfacename}}
-Maxwell's fourth equation in integral form in free space.
-Note the default values of the optional arguments.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{mysolution*}
- &\maxwellivintfree \\
- &\maxwellivintfree[C][S]
-\end{mysolution*}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwellidif}{}
-Left hand side of Maxwell's first equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \LHSmaxwellidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellidif}{}
-Right hand side of Maxwell's first equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwellidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellidiffree}{}
-Right hand side of Maxwell's first equation in differential form
-in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwellidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellidif}{}
-Maxwell's first equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwellidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellidiffree}{}
-Maxwell's first equation in differential form in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwellidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwelliidif}{}
-Left hand side of Maxwell's second equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \LHSmaxwelliidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliidif}{}
-Right hand side of Maxwell's second equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliidifm}{}
-Right hand side of Maxwell's second equation in differential
-form with magnetic monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliidifm \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliidiffree}{}
-Right hand side of Maxwell's second equation in differential
-form in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliidif}{}
-Maxwell's second equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliidifm}{}
-Maxwell's second equation in differential form with magnetic
-monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliidifm \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellidiiffree}{}
-Maxwell's second equation in differential form in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwelliiidif}{}
-Left hand side of Maxwell's third equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \LHSmaxwelliiidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiidif}{}
-Right hand side of Maxwell's third equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiidifm}{}
-Right hand side of Maxwell's third equation in differential form
-with magnetic monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiidifm \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwelliiidiffree}{}
-Right hand side of Maxwell's third equation in differential form
-in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwelliiidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiidif}{}
-Maxwell's third equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliiidif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiidifm}{}
-Maxwell's third equation in differential form with magnetic
-monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliiidifm \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwelliiidiffree}{}
-Maxwell's third equation in differential form in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwelliiidiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{LHSmaxwellivdif}{}
-Left hand side of Maxwell's fourth equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \LHSmaxwellivdif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellivdif}{}
-Right hand side of Maxwell's fourth equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwellivdif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSmaxwellivdiffree}{}
-Right hand side of Maxwell's fourth equation in differential form
-in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSmaxwellivdiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellivdif}{}
-Maxwell's fourth equation in differential form.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwellivdif \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{maxwellivdiffree}{}
-Maxwell's fourth equation in differential form in free space.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \maxwellivdiffree \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSlorentzforce}{}
-Right hand side of Lorentz force.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSlorentzforce \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{RHSlorentzforcem}{}
-Right hand side of Lorentz force with magnetic monopoles.
-\end{docCommand}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\[ \RHSlorentzforcem \]
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-%
-% \subsection{VPython and GlowScript Code}
-% There are three ways to deal with VPython\footnote{See the VPython home page at
-% \url{https://vpython.org/} for more information.} and GlowScript\footnote{See the
-% GlowScript home page at \url{https://glowscript.org/} for more information.} code.
-% With very few exceptions, VPython code and GlowScript code are identical. The
-% commands with |vpython| in their names can handle both, but for semantic
-% completeness there are corresponding commands with |glowscript| in their names.
-% Because Classic VPython will no longer be developed, the first line of all
-% VPython programs not used in GlowScript will conform to Jupyter syntax.
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{vpythonline}{\marg{vpythoncode}}
-Command for a single line of VPython or GlowScript code used inline.
-\end{docCommand}
+\begin{docEnvironments}[%
+ doc new = 2021-02-16,%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = useapproximateconstants,%
+ doc description = use approximate constants,%
+ },%
+ {%
+ doc name = usepreciseconstants,%
+ doc description = use precise constants,%
+ },%
+ }%
+ Inside these environments precision is changed for the duration
+ of the environment regardless of the global default setting.
+\end{docEnvironments}
\begin{dispExample}
-\vpythonline{from vpython import *}
+ \( \oofpez \) \\
+ \begin{useapproximateconstants}
+ \( \oofpez \) \\
+ \end{useapproximateconstants}
+ \begin{usepreciseconstants}
+ \( \oofpez \) \\
+ \end{usepreciseconstants}
+ \( \oofpez \)
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{glowscriptline}{\marg{glowscriptcode}}
-Command for a single line of GlowScript code used inline. Note that with very
-few exceptions, GlowScript code is identical to VPython code.
-\end{docCommand}
-\begin{dispExample}
-\glowscriptline{xyplane = box(pos=vector(0,0,0),length=10,width=10,height=0.05)}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \subsection{Predefined Units and Constructs}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{vpythonblock}{\marg{caption}\marg{label}}
-Environment for a block of VPython code. A caption and label are
-required. The label can be used by \cs{ref} or \cs{hyperref}.
-\end{docEnvironment}
-\begin{docEnvironment}{glowscriptblock}{\marg{caption}\marg{label}}
-Functionally identical to \refEnv{vpythonblock}.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{vpythonblock}{Example VPython Listing}{listing1}
- from vpython import *
-
- sphere(pos=vector(1,2,3),color=color.green)
- # create a named arrow
- MyArrow=arrow(pos=earth.pos,axis=fscale*Fnet,color=color.green)
- print ("arrow.pos = "), arrow.pos
-\end{vpythonblock}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% These commands should be used only in defining or
+% redefining physical quantities or physical
+% constants. One exception is \refCom{emptyunit},
+% which may be used for explanatory purposes.
%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{vpythonfile}{\marg{caption}\marg{label}\meta{filename}}
-Typesets a file in the current directory containing VPython code. A caption and
-label are required. The label can be used by \cs{ref} and \cs{hyperref}.
-The listing will begin on a new page.
-\end{docCommand}
-\begin{docCommand}{glowscriptfile}{\marg{caption}\marg{label}\meta{filename}}
-Functionally identical to \refCom{vpythonfile}.
-\end{docCommand}
+\begin{docCommands}[%
+ doc parameter = {},%
+ ]%
+ {%
+ {%
+ doc name = per,%
+ },%
+ {%
+ doc name = usk,%
+ },%
+ {%
+ doc parameter = \marg{magnitude}\marg{unit},%
+ doc name = unit,%
+ },%
+ {%
+ doc name = emptyunit,%
+ },%
+ {%
+ doc name = ampere,%
+ },%
+ {%
+ doc name = atomicmassunit,%
+ },%
+ {%
+ doc name = candela,%
+ },%
+ {%
+ doc name = coulomb,%
+ },%
+ {%
+ doc name = degree,%
+ },%
+ {%
+ doc name = electronvolt,%
+ doc description = not SI but common in introductory physics,%
+ },%
+ {%
+ doc new = 2021-04-15,%
+ doc name = ev,%
+ doc description = alias,%
+ },%
+ {%
+ doc name = farad,%
+ },%
+ {%
+ doc name = henry,%
+ },%
+ {%
+ doc name = hertz,%
+ },%
+ {%
+ doc name = joule,%
+ },%
+ {%
+ doc name = kelvin,%
+ },%
+ {%
+ doc new = 2021-04-15,%
+ doc name = kev,%
+ doc description = alias,%
+ },%
+ {%
+ doc new = 2021-04-15,%
+ doc name = kiloelectronvolt,%
+ doc description = not SI but common in introductory physics,%
+ },%
+ {%
+ doc name = kilogram,%
+ },%
+ {%
+ doc name = lightspeed,%
+ doc description = not SI but common relativity,%
+ },%
+ {%
+ doc new = 2021-04-15,%
+ doc name = megaelectronvolt,%
+ doc description = not SI but common in introductory physics,%
+ },%
+ {%
+ doc name = meter,%
+ },%
+ {%
+ doc name = metre,%
+ doc description = alias,%
+ },%
+ {%
+ doc new = 2021-04-15,%
+ doc name = mev,%
+ doc description = alias,%
+ },%
+ {%
+ doc name = mole,%
+ },%
+ {%
+ doc name = newton,%
+ },%
+ {%
+ doc name = ohm,%
+ },%
+ {%
+ doc name = pascal,%
+ },%
+ {%
+ doc name = radian,%
+ },%
+ {%
+ doc name = second,%
+ },%
+ {%
+ doc name = siemens,%
+ },%
+ {%
+ doc name = steradian,%
+ },%
+ {%
+ doc name = tesla,%
+ },%
+ {%
+ doc name = volt,%
+ },%
+ {%
+ doc name = watt,%
+ },%
+ {%
+ doc name = weber,%
+ },%
+ {%
+ doc name = tothetwo,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = tothethree,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = tothefour,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = inverse,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = totheinversetwo,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = totheinversethree,%
+ doc description = postfix,%
+ },%
+ {%
+ doc name = totheinversefour,%
+ doc description = postfix,%
+ },%
+ }%
+\end{docCommands}
+\begin{dispExample}
+ \( \per \) \\
+ \( \usk \) \\
+ \( \unit{3}{\meter\per\second} \) \\
+ \( \emptyunit \) \\
+ \( \ampere \) \\
+ \( \atomicmassunit \) \\
+ \( \candela \) \\
+ \( \coulomb \) \\
+ \( \degree \) \\
+ \( \electronvolt \) \\
+ \( \farad \) \\
+ \( \henry \) \\
+ \( \hertz \) \\
+ \( \joule \) \\
+ \( \kelvin \) \\
+ \( \kev \) \\
+ \( \kilogram \) \\
+ \( \lightspeed \) \\
+ \( \meter \) \\
+ \( \metre \) \\
+ \( \mev \) \\
+ \( \mole \) \\
+ \( \newton \) \\
+ \( \ohm \) \\
+ \( \pascal \) \\
+ \( \radian \) \\
+ \( \second \) \\
+ \( \siemens \) \\
+ \( \steradian \) \\
+ \( \tesla \) \\
+ \( \volt \) \\
+ \( \watt \) \\
+ \( \weber \) \\
+ \( \emptyunit\tothetwo \) \\
+ \( \emptyunit\tothethree \) \\
+ \( \emptyunit\tothefour \) \\
+ \( \emptyunit\inverse \) \\
+ \( \emptyunit\totheinversetwo \) \\
+ \( \emptyunit\totheinversethree \) \\
+ \( \emptyunit\totheinversefour \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{number},%
+ ]%
+ {%
+ {%
+ doc name = tento,%
+ },%
+ {%
+ doc name = timestento,%
+ },%
+ {%
+ doc name = xtento,%
+ },%
+ }%
+ Commands for powers of ten and scientific notation.
+\end{docCommands}
\begin{dispExample}
-\vpythonfile{Program vdemo.py}{vlisting1}{vdemo.py}
+ \( \tento{-4} \) \\
+ \( 3\timestento{8} \) \\
+ \( 3\xtento{8} \)
\end{dispExample}
%\iffalse
%</example>
%\fi
%
-% \subsection{Boxes and Environments}
-%
%\iffalse
%<*example>
%\fi
-\begin{docCommand}{emptyanswer}{\oarg{wdth}\oarg{hght}}
-Typesets empty space for filling answer boxes, so there is nothing to see.
+\begin{docCommand}{mivector}{%
+ \oarg{delimiter}\marg{\ensuremath{c_1,\dots,c_n}}\oarg{units}
+ }%
+ Typesets a vector as either numeric or symbolic components with an
+ optional unit (for numerical components only). There can be more
+ than three components. The delimiter used in the list of components
+ can be specified; the default is a comma. The notation mirrors that of
+ \emph{Matter \& Interactions}.
\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\emptyanswer[0.75][0.2]
+\begin{dispExample*}{lefthand ratio=0.65}
+ \( \mivector{p_0,p_1,p_2,p_3} \) \\
+ \( \mivector{\gamma m v_x,\gamma m v_y,\gamma m v_z} \) \\
+ \( \mivector{\frac{Q_1Q_2}{x^2},0,0} \) \\
+ \( \mivector{-1,0,0} \) \\
+ \( \mivector{-1,0,0}[\velocityonlyderivedunits] \) \\
+ \( \mivector{-1,0,0}[\meter\per\second] \) \\
+ \( \velocity{\mivector{-1,0,0}} \)
\end{dispExample*}
%\iffalse
%</example>
%\fi
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{activityanswer}
- {\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Main environment for typesetting boxed answers.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{activityanswer}
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
- Morbi commodo, ipsum sed pharetra gravida, orci magna
- rhoncus neque, id pulvinar odio lorem non turpis. Nullam
- sit amet enim.
-\end{activityanswer}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{adjactivityanswer}
- {\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Like \refEnv{activityanswer} but adjusts vertically to tightly surround text.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{adjactivityanswer}
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi
- commodo, ipsum sed pharetra gravida, orci magna rhoncus neque,
- id pulvinar odio lorem non turpis. Nullam sit amet enim.
- Suspendisse id velit vitae ligula volutpat condimentum. Aliquam
- erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero.
- Vivamus pharetra posuere sapien. Nam consectetuer. Sed aliquam,
- nunc eget euismod ullamcorper, lectus nunc ullamcorper orci,
- fermentum bibendum enim nibh eget ipsum. Donec porttitor ligula
- eu dolor. Maecenas vitae nulla consequat libero cursus venenatis.
- Nam magna enim, accumsan eu, blandit sed, blandit a, eros.
-\end{adjactivityanswer}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{emptybox}
- {\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Provides a fixed-size box with optional text.
-\end{docCommand}
-\begin{dispExample}
-\emptybox[Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque,
-id pulvinar odio lorem non turpis. Nullam sit amet enim.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{adjemptybox}
- {\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Like \refCom{emptybox} but adjusts vertically to tightly surround text.
-\end{docCommand}
-\begin{dispExample}
-\adjemptybox[Lorem ipsum dolor sit amet, consectetuer adipiscing
-elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus
-neque, id pulvinar odio lorem non turpis. Nullam sit amet enim.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{answerbox}
- {\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Wrapper for \refCom{emptybox}.
-\end{docCommand}
-\begin{dispExample}
-\answerbox[Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
-Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus neque,
-id pulvinar odio lorem non turpis. Nullam sit amet enim.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{adjanswerbox}
- {\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
-Wrapper for \refCom{adjemptybox}.
-\end{docCommand}
-\begin{dispExample}
-\adjanswerbox[Lorem ipsum dolor sit amet, consectetuer adipiscing
-elit. Morbi commodo, ipsum sed pharetra gravida, orci magna rhoncus
-neque, id pulvinar odio lorem non turpis. Nullam sit amet enim.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{smallanswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.10 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth}.
-\end{docCommand}
-\begin{dispExample}
-\smallanswerbox[][red]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mediumanswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.20 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth}.
-\end{docCommand}
-\begin{dispExample}
-\mediumanswerbox[][lightgray]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{largeanswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.25 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\largeanswerbox[][lightgray]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{largeranswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.33 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\largeranswerbox[][lightgray]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hugeanswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.50 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\hugeanswerbox[][lightgray]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hugeranswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 0.75 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\hugeranswerbox[][lightgray]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% \StopEventually{}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fullpageanswerbox}{\oarg{txt}\oarg{bgclr}}
-Answer box with height 1.00 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\fullpageanswerbox[][lightgray]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% \newgeometry{left=0.50in,right=0.50in,top=1.00in,bottom=1.00in}
+% \subsection{\mandi\ Source Code}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{smallanswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.10 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth}. The first argument isn't
-really optional, and \emph{must} be different for each form used.
-Content can be typed in the box and saved with a PDF editor or viewer
-that supports PDF forms.
-\end{docCommand}
-\begin{dispExample}
-\smallanswerform[a1][Type your response here.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \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.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{mediumanswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.20 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth}. The first argument isn't
-really optional, and \textbf{must} be different for each form used.
-Content can be typed in the box and saved with a PDF editor or viewer
-that supports PDF forms.
-\end{docCommand}
-\begin{dispExample}
-\mediumanswerform[a1][Type your response here.]
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\def\mandi@version{3.0.0}
+\def\mandi@date{2021-08-21}
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+\DeclareRelease{v3.0.0}{2021-08-21}{mandi.sty}
+\DeclareCurrentRelease{v\mandi@version}{\mandi@date}
+\ProvidesPackage{mandi}
+ [\mandi@date\space v\mandi@version\space Macros for physical quantities]
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{largeanswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.25 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\largeanswerform[a1][Type your response here.]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% Define a convenient package version command.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{largeranswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.33 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\largeranswerform[a1][Type your response here.]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\newcommand*{\mandiversion}{v\mandi@version\space dated \mandi@date}
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hugeanswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.50 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\hugeanswerform[a1][Type your response here.]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% Load third party packages, documenting why each one is needed.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{hugeranswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 0.75 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\hugeranswerform[a1][Type your response here.]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\RequirePackage{pgfopts} % needed for key-value interface
+\RequirePackage{array} % needed for \checkquantity and \checkconstant
+\RequirePackage{iftex} % needed for requiring LuaLaTeX
+\RequirePackage{unicode-math} % needed for Unicode support
+\RequireLuaTeX % require this engine
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{fullpageanswerform}{\oarg{name}\oarg{prompt}}
-Editable answer form with height 1.00 that of current \cs{textheight}
-and width 0.90 that of current \cs{linewidth} (too large to show here).
-\end{docCommand}
-\begin{dispListing}
-\fullpageanswerform[a1][Type your response here.]
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% Parts of the unit engine have been rewritten with
+% \href{https://www.ctan.org/pkg/xparse}{\pkg{xparse}} for both clarity
+% and power. Note that \pkg{xparse} is now part of the \LaTeX\ kernel.
+% Other parts have been rewriten in
+% \href{https://www.ctan.org/pkg/expl}{\pkg{expl}} with a look to the
+% future.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{miinstructornote}{}
-Environment for highlighting notes to instructors.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{miinstructornote}
- Nunc auctor bibendum eros. Maecenas porta accumsan mauris. Etiam
- enim enim, elementum sed, bibendum quis, rhoncus non, metus. Fusce
- neque dolor, adipiscing sed, consectetuer et, lacinia sit amet,
- quam. Suspendisse wisi quam, consectetuer in, blandit sed,
- suscipit eu, eros. Etiam ligula enim, tempor ut, blandit nec,
- mollis eu, lectus. Nam cursus. Vivamus iaculis. Aenean risus
- purus, pharetra in, blandit quis, gravida a, turpis. Donec nisl.
- Aenean eget mi. Fusce mattis est id diam. Phasellus faucibus
- interdum sapien.
-\end{miinstructornote}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Generic internal selectors.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{mistudentnote}{}
-Environment for highlighting notes to students.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{mistudentnote}
- Nunc auctor bibendum eros. Maecenas porta accumsan mauris. Etiam
- enim enim, elementum sed, bibendum quis, rhoncus non, metus. Fusce
- neque dolor, adipiscing sed, consectetuer et, lacinia sit amet,
- quam. Suspendisse wisi quam, consectetuer in, blandit sed,
- suscipit eu, eros. Etiam ligula enim, tempor ut, blandit nec,
- mollis eu, lectus. Nam cursus. Vivamus iaculis. Aenean risus
- purus, pharetra in, blandit quis, gravida a, turpis. Donec nisl.
- Aenean eget mi. Fusce mattis est id diam. Phasellus faucibus
- interdum sapien.
-\end{mistudentnote}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
-%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{miderivation}{}
-Environment for mathematical derivations based on the |align| environment.
-See \refEnv{mysolution} for how to handle long lines in this environment.
-Note that using this environment resets the counter for equation numbering.
-If you want continuous numbering throughout your document, use the |align|
-environment.
-\end{docEnvironment}
-\begin{docEnvironment}{miderivation*}{}
-Like \refEnv{miderivation} but suppresses line numbers.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{miderivation}
- \gamma &= \relgamma{\magvect{v}} && \text{given} \\
- \gamma\squared &= \ooomx{\inparens{\frac{\magvect{v}}{c}}\squared}
- &&\text{square both sides} \\
- \frac{1}{\gamma\squared} &= 1-\inparens{\frac{\magvect{v}}{c}}\squared
- &&\text{reciprocal of both sides} \\
- \inparens{\frac{\magvect{v}}{c}}\squared &= 1-\frac{1}{\gamma\squared}
- &&\text{rearrange} \\
- \frac{\magvect{v}}{c} &= \sqrt{1-\frac{1}{\gamma\squared}}
- &&\text{square root of both sides}
-\end{miderivation}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\newcommand*{\mandi@selectunits}{}
+\newcommand*{\mandi@selectprecision}{}
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{mistandard}{}
-Environment for standards for standards-based grading.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{mistandard}
- I can create a standard which reflects deep student learning.
-\end{mistandard}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Specific internal selectors.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{bwinstructornote}{}
-Like \refEnv{miinstructornote} but in black and grey.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{bwinstructornote}
- Nunc auctor bibendum eros. Maecenas porta accumsan mauris. Etiam
- enim enim, elementum sed, bibendum quis, rhoncus non, metus. Fusce
- neque dolor, adipiscing sed, consectetuer et, lacinia sit amet,
- quam. Suspendisse wisi quam, consectetuer in, blandit sed,
- suscipit eu, eros. Etiam ligula enim, tempor ut, blandit nec,
- mollis eu, lectus. Nam cursus. Vivamus iaculis. Aenean risus
- purus, pharetra in, blandit quis, gravida a, turpis. Donec nisl.
- Aenean eget mi. Fusce mattis est id diam. Phasellus faucibus
- interdum sapien.
-\end{bwinstructornote}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\newcommand*{\mandi@selectapproximate}[2]{#1} % really \@firstoftwo
+\newcommand*{\mandi@selectprecise}[2]{#2} % really \@secondoftwo
+\newcommand*{\mandi@selectbaseunits}[3]{#1} % really \@firstofthree
+\newcommand*{\mandi@selectderivedunits}[3]{#2} % really \@secondofthree
+\newcommand*{\mandi@selectalternateunits}[3]{#3} % really \@thirdofthree
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{bwstudentnote}{}
-Like \refEnv{mistudentnote} but in black and grey.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{bwstudentnote}
- Nunc auctor bibendum eros. Maecenas porta accumsan mauris. Etiam
- enim enim, elementum sed, bibendum quis, rhoncus non, metus. Fusce
- neque dolor, adipiscing sed, consectetuer et, lacinia sit amet,
- quam. Suspendisse wisi quam, consectetuer in, blandit sed,
- suscipit eu, eros. Etiam ligula enim, tempor ut, blandit nec,
- mollis eu, lectus. Nam cursus. Vivamus iaculis. Aenean risus
- purus, pharetra in, blandit quis, gravida a, turpis. Donec nisl.
- Aenean eget mi. Fusce mattis est id diam. Phasellus faucibus
- interdum sapien.
-\end{bwstudentnote}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Document level global switches.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{bwderivation}{}
-Like \refEnv{miderivation} but in black and grey. See \refEnv{mysolution} for
-how to handle long lines in this environment.
-\end{docEnvironment}
-\begin{docEnvironment}{bwderivation*}{}
-Like \refEnv{bwderivation} but suppresses line numbers.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{bwderivation}
- \gamma &= \relgamma{\magvect{v}} && \text{given} \\
- \gamma\squared &= \ooomx{\inparens{\frac{\magvect{v}}{c}}\squared}
- &&\text{square both sides} \\
- \frac{1}{\gamma\squared} &= 1-\inparens{\frac{\magvect{v}}{c}}\squared
- &&\text{reciprocal of both sides} \\
- \inparens{\frac{\magvect{v}}{c}}\squared &= 1-\frac{1}{\gamma\squared}
- &&\text{rearrange} \\
- \frac{\magvect{v}}{c}&=\sqrt{1-\frac{1}{\gamma\squared}}
- &&\text{square root of both sides}
-\end{bwderivation}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\NewDocumentCommand{\alwaysusebaseunits}{}
+ {\renewcommand*{\mandi@selectunits}{\mandi@selectbaseunits}}%
+\NewDocumentCommand{\alwaysusederivedunits}{}
+ {\renewcommand*{\mandi@selectunits}{\mandi@selectderivedunits}}%
+\NewDocumentCommand{\alwaysusealternateunits}{}
+ {\renewcommand*{\mandi@selectunits}{\mandi@selectalternateunits}}%
+\NewDocumentCommand{\alwaysuseapproximateconstants}{}
+ {\renewcommand*{\mandi@selectprecision}{\mandi@selectapproximate}}%
+\NewDocumentCommand{\alwaysusepreciseconstants}{}
+ {\renewcommand*{\mandi@selectprecision}{\mandi@selectprecise}}%
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{bwstandard}{}
-Like \refEnv{mistandard} but in black and grey.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{bwstandard}
- I can create a standard which reflects deep student learning.
-\end{bwstandard}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% Document level localized variants.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{mysolution}{}
-Alias for simple environment for mathematical derivations based on the
-|align| environment. The second example shows how to handle long lines
-for this and the derivation environments.
-\end{docEnvironment}
-\begin{docEnvironment}{mysolution*}{}
-Like \refEnv{mysolution} but suppresses line numbers.
-\end{docEnvironment}
-\begin{dispExample}
-\begin{mysolution}
- \gamma &= \relgamma{\magvect{v}}
- && \text{given} \\
- \gamma\squared &= \ooomx{\inparens{\frac{\magvect{v}}{c}}\squared}
- &&\text{square both sides} \\
- \frac{1}{\gamma\squared} &= 1-\inparens{\frac{\magvect{v}}{c}}\squared
- &&\text{reciprocal of both sides} \\
- \inparens{\frac{\magvect{v}}{c}}\squared &= 1-\frac{1}{\gamma\squared}
- &&\text{rearrange} \\
- \frac{\magvect{v}}{c} &= \sqrt{1-\frac{1}{\gamma\squared}}
- &&\text{square root of both sides}
-\end{mysolution}
-\begin{mysolution*}
- \vect{E} &= \electricfield{\mivector{1,2,3}} + \electricfield{\mivector{2,4,6}}
- \nonumber \\
- &\hphantom{{}=\electricfield{\mivector{1,1,1}}}+\electricfield{\mivector{3,5,6}}
- &&\text{superposition} \\
- \vect{E} &= \electricfield{\mivector{2,3,4}} + \electricfield{\mivector{2,4,6}}
- \nonumber \\
- &+ \electricfield{\mivector{1,1,1}} +\electricfield{\mivector{3,5,6}}
- &&\text{superposition again} \\
- \vect{E} &= \electricfield{\mivector{2,3,4}} + \electricfield{\mivector{2,4,6}}
- \nonumber \\
- &\quad + \electricfield{\mivector{1,1,1}} +\electricfield{\mivector{3,5,6}}
- && \text{more superposition}
-\end{mysolution*}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\NewDocumentCommand{\hereusebaseunits}{ m }{\begingroup\alwaysusebaseunits#1\endgroup}%
+\NewDocumentCommand{\hereusederivedunits}{ m }{\begingroup\alwaysusederivedunits#1\endgroup}%
+\NewDocumentCommand{\hereusealternateunits}{ m }{\begingroup\alwaysusealternateunits#1\endgroup}%
+\NewDocumentCommand{\hereuseapproximateconstants}{ m }{\begingroup\alwaysuseapproximateconstants#1\endgroup}%
+\NewDocumentCommand{\hereusepreciseconstants}{ m }{\begingroup\alwaysusepreciseconstants#1\endgroup}%
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docEnvironment}{problem}{\marg{problemname}}
-Creates a simple environment for problem solutions. This
-environment is mainly for students. Each new problem starts on a new page in an
-effort to force organization upon students. The environment also creates a new
-|enumerate| environment called |parts| for which labels are alphabetic,
-reflecting the organization of multipart textbook problems. The \cs{item} command
-is renamed \cs{problempart} to, again, help with organization for newcomers to
-\LaTeX. A typical example would be structured as follows.
-\end{docEnvironment}
-\begin{dispExample*}{sidebyside, lefthand ratio=0.50}
-\begin{problem}{Chapter 2 Problem 1}
-This problem has two parts.
-\begin{parts}
- \problempart
- This is the first part
- \problempart
- This is the second part
-\end{parts}
-\end{problem}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Document level environments.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{reason}{\marg{text}}
-In a \refEnv{mysolution} environment, this aligns the text arguments with the
-end of the longest line and nicely handles line wrapping. Make sure your margins
-are narrow enough. You may need to experiment.
-\end{docCommand}
-\begin{dispExample}
-\begin{mysolution}
- c^2 &= a^2 + b^2 && \reason{given} \\
- a^2 &= c^2 - b^2 && \reason{Rearrange, and add some extra text just for fun.} \\
- a &= \sqrt{c^2 - b^2} && \reason{Take square root of both sides.}
-\end{mysolution}
-\end{dispExample}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\NewDocumentEnvironment{usebaseunits}{}{\alwaysusebaseunits}{}%
+\NewDocumentEnvironment{usederivedunits}{}{\alwaysusederivedunits}{}%
+\NewDocumentEnvironment{usealternateunits}{}{\alwaysusealternateunits}{}%
+\NewDocumentEnvironment{useapproximateconstants}{}{\alwaysuseapproximateconstants}{}%
+\NewDocumentEnvironment{usepreciseconstants}{}{\alwaysusepreciseconstants}{}%
+% \end{macrocode}
%
-% \newpage
-% \subsection{Miscellaneous Commands}
+% \mandi\ now has a key-value interface, implemented with
+% \href{https://www.ctan.org/pkg/pgfopts}{\pkg{pgfopts}} and
+% \href{https://www.ctan.org/pkg/pgfkeys}{\pkg{pgfkeys}}.
+% There are two options:\newline
+% \refKey{units}, with values \docValue{base}, \docValue{derived}, or
+% \docValue{alternate} selects the default form of units\newline
+% \refKey{preciseconstants}, with values \docValue{true} and
+% \docValue{false}, selects precise numerical values for constants
+% rather than approximate values.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{checkpoint}{}
-Centered checkpoint for student discussion.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\checkpoint
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% First, define the keys. The key handlers require certain commands defined
+% by the unit engine.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{image}{\oarg{scalesize}\marg{filename}\marg{caption}\marg{label}}
-Centered figure displayed actual size with caption. The optional argument can be
-a scale factor (with 1 being the original image size), explicit \texttt{width}
-and/or \texttt{height} parameters, or even an \texttt{angle} for rotating the
-image. Be sure to give each image a unique label. This allows you to refer back
-to the image subsequently just by using the label.
-\end{docCommand}
-\begin{dispListing}
- \image{sampleimage.pdf}{An image shown actual size.}{img-label1}
- \image[scale=1.5]{sampleimage.pdf}{An image scaled by 1.5 times.}{img-label2}
- \image[height=1cm,width=2cm]{sampleimage.pdf}{An image resized.}{img-label3}
- \image[width=0.8\textwidth]{sampleimage.pdf}{An image 80 percent the text width.}
- {img-label4}
- \image[angle=45]{sampleimage.pdf}{An image actual size, rotated.}{img-label5}
-\end{dispListing}
-%\iffalse
-%</example>
-%\fi
+% \begin{macrocode}
+\newif\ifusingpreciseconstants
+\pgfkeys{%
+ /mandi/options/.cd,
+ initial@setup/.style={%
+ /mandi/options/buffered@units/.initial=alternate,%
+ },%
+ initial@setup,%
+ preciseconstants/.is if=usingpreciseconstants,%
+ units/.is choice,%
+ units/.default=derived,%
+ units/alternate/.style={/mandi/options/buffered@units=alternate},%
+ units/base/.style={/mandi/options/buffered@units=base},%
+ units/derived/.style={/mandi/options/buffered@units=derived},%
+}%
+% \end{macrocode}
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{sneakyone}{\marg{thing}}
-Shows argument as a sneaky one.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\sneakyone{\frac{\m}{\m}}
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
+% Process the options.
%
-%\iffalse
-%<*example>
-%\fi
-\begin{docCommand}{qed}{}
-Command for QED symbol.
-\end{docCommand}
-\begin{dispExample*}{sidebyside}
-\qed
-\end{dispExample*}
-%\iffalse
-%</example>
-%\fi
-% \StopEventually{}
+% \begin{macrocode}
+\ProcessPgfPackageOptions{/mandi/options}
+% \end{macrocode}
%
-% \newpage
-% \section{Source Code}
+% Write a banner to the console showing the options in use.
%
-% \iffalse
-%<*package>
-% \fi
-% Note the packages that must be present.
% \begin{macrocode}
-\RequirePackage{amsmath}
-\RequirePackage{amssymb}
-\RequirePackage{array}
-\RequirePackage{cancel}
-\RequirePackage[dvipsnames]{xcolor}
-\RequirePackage{enumitem}
-\RequirePackage{environ}
-\RequirePackage{esint}
-\RequirePackage[g]{esvect}
-\RequirePackage{etoolbox}
-\RequirePackage{filehook}
-\RequirePackage{extarrows}
-\RequirePackage{float}
-\RequirePackage[T1]{fontenc}
-\RequirePackage{graphicx}
-\RequirePackage{epstopdf}
-\RequirePackage{textcomp}
-\RequirePackage{letltxmacro}
-\RequirePackage{listings}
-\RequirePackage{mathtools}
-\RequirePackage[framemethod=TikZ]{mdframed}
-\RequirePackage{stackengine}
-\RequirePackage{suffix}
-\RequirePackage{tensor}
-\RequirePackage{xargs}
-\RequirePackage{xparse}
-\RequirePackage{xspace}
-\RequirePackage{ifthen}
-\RequirePackage{calligra}
-\RequirePackage[hypertexnames=false]{hyperref}
-\hypersetup{colorlinks=true,urlcolor=blue}
-\DeclareMathAlphabet{\mathcalligra}{T1}{calligra}{m}{n}
-\DeclareFontShape{T1}{calligra}{m}{n}{<->s*[2.2]callig15}{}
-\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `basename #1 .tif`.png}
-\DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it}
-\usetikzlibrary{shadows}
-\definecolor{vbgcolor}{rgb}{1,1,1} % background for code listings
-\definecolor{vshadowcolor}{rgb}{0.5,0.5,0.5} % shadow for code listings
-\lstdefinestyle{vpython}{% % style for code listings
- language=Python,% % select language
- morekeywords={__future__,division,append, % VPython/GlowScript specific keywords
- arange,arrow,astuple,axis,background,black,blue,cyan,green,%
- magenta,orange,red,white,yellow,border,box,color,comp,%
- cone,convex,cross,curve,cylinder,degrees,diff_angle,dot,ellipsoid,extrusion,faces,%
- font,frame,graphs,headlength,height,headwidth,helix,index,interval,label,length,%
- line,linecolor,mag,mag2,make_trail,material,norm,normal,objects,opacity,points,pos,%
- print,print_function,proj,pyramid,radians,radius,rate,retain,ring,rotate,scene,%
- shaftwidth,shape,sign,size,space,sphere,text,trail_object,trail_type,True,twist,up,%
- vector,visual,width,offset,yoffset,GlowScript,VPython,vpython,trail_color,%
- trail_radius,pps,clear,False,CoffeeScript,graph,gdisplay,canvas,pause,vec,clone,%
- compound,vertex,triangle,quad,attach_trail,attach_arrow,textures,bumpmaps,%
- print_options,get_library,read_local_file},%
- captionpos=b,% % position caption
- frame=shadowbox,% % shadowbox around listing
- rulesepcolor=\color{vshadowcolor},% % shadow color
- basicstyle=\footnotesize,% % basic font for code listings
- commentstyle=\bfseries\color{red}, % font for comments
- keywordstyle=\bfseries\color{blue},% % font for keywords
- showstringspaces=true,% % show spaces in strings
- stringstyle=\bfseries\color{green},% % color for strings
- numbers=left,% % where to put line numbers
- numberstyle=\tiny,% % set to 'none' for no line numbers
- xleftmargin=20pt,% % extra left margin
- backgroundcolor=\color{vbgcolor},% % some people find this annoying
- upquote=true,% % how to typeset quotes
- breaklines=true}% % break long lines
-\definecolor{formcolor}{gray}{0.90} % color for form background
-\newcolumntype{C}[1]{>{\centering}m{#1}}
-\newboolean{@optromanvectors}
-\newboolean{@optboldvectors}
-\newboolean{@optsinglemagbars}
-\newboolean{@optbaseunits}
-\newboolean{@optdrvdunits}
-\newboolean{@optaltnunits}
-\newboolean{@optapproxconsts}
-\newboolean{@optuseradians}
-\setboolean{@optromanvectors}{false} % this is where you set the default option
-\setboolean{@optboldvectors}{false} % this is where you set the default option
-\setboolean{@optsinglemagbars}{false} % this is where you set the default option
-\setboolean{@optbaseunits}{false} % this is where you set the default option
-\setboolean{@optdrvdunits}{true} % this is where you set the default option
-\setboolean{@optaltnunits}{false} % this is where you set the default option
-\setboolean{@optapproxconsts}{false} % this is where you set the default option
-\setboolean{@optuseradians}{false} % this is where you set the default option
-\DeclareOption{romanvectors}{\setboolean{@optromanvectors}{true}}
-\DeclareOption{boldvectors}{\setboolean{@optboldvectors}{true}}
-\DeclareOption{singlemagbars}{\setboolean{@optsinglemagbars}{true}}
-\DeclareOption{baseunits}{\setboolean{@optbaseunits}{true}}
-\DeclareOption{drvdunits}{\setboolean{@optdrvdunits}{true}}
-\DeclareOption{approxconsts}{\setboolean{@optapproxconsts}{true}}
-\DeclareOption{useradians}{\setboolean{@optuseradians}{true}}
-\ProcessOptions\relax
+\typeout{}%
+\typeout{mandi: You are using mandi \mandiversion.}%
+\typeout{mandi: This package requires LuaLaTeX.}%
+\typeout{mandi: Loadtime options...}
% \end{macrocode}
%
+% Complete the banner by showing currently selected options.
+% The value of the \refKey{units} key is used in situ to set
+% the default units.
+%
% \begin{macrocode}
-\newcommand*{\mandiversion}{\ifmmode%
- 2.7.5\mbox{ dated }2019/01/12%
- \else%
- 2.7.5 dated 2019/01/12%
+\newcommand*{\mandi@do@setup}{%
+ \csname alwaysuse\pgfkeysvalueof{/mandi/options/buffered@units}units\endcsname%
+ \typeout{mandi: You will get \pgfkeysvalueof{/mandi/options/buffered@units}\space units.}%
+ \ifusingpreciseconstants
+ \alwaysusepreciseconstants
+ \typeout{mandi: You will get precise constants.}%
+ \else
+ \alwaysuseapproximateconstants
+ \typeout{mandi: You will get approximate constants.}%
\fi
- }%
-\typeout{ }
-\typeout{mandi: You're using mandi version \mandiversion.}
+ \typeout{}%
+}%
+\mandi@do@setup
% \end{macrocode}
%
-% \noindent This block of code fixes a conflict with the amssymb package.
+% Define a setup command that overrides the loadtime options
+% when called with new options. A new banner is written to the console.
+%
% \begin{macrocode}
-\@ifpackageloaded{amssymb}{%
- \csundef{square}
- \typeout{mandi: Package amssymb detected. Its \protect\square\space
- has been redefined.}
-}{%
- \typeout{mandi: Package amssymb not detected.}
+\NewDocumentCommand{\mandisetup}{ m }{%
+ \IfValueT{#1}{%
+ \pgfqkeys{/mandi/options}{#1}
+ \typeout{}%
+ \typeout{mandi: mandisetup options...}
+ \mandi@do@setup
+ }%
}%
% \end{macrocode}
%
-% \noindent This block of code defines unit names and symbols.
-% \begin{macrocode}
-\newcommand*{\per}{\ensuremath{/}}
-\newcommand*{\usk}{\ensuremath{\cdot}}
-\newcommand*{\unit}[2]{\ensuremath{{#1}\;{#2}}}
-\newcommand*{\ampere}{\ensuremath{\mathrm{A}}}
-\newcommand*{\arcminute}{\ensuremath{'}}
-\newcommand*{\arcsecond}{\ensuremath{''}}
-\newcommand*{\atomicmassunit}{\ensuremath{\mathrm{u}}}
-\newcommand*{\candela}{\ensuremath{\mathrm{cd}}}
-\newcommand*{\coulomb}{\ensuremath{\mathrm{C}}}
-\newcommand*{\degree}{\ensuremath{^{\circ}}}
-\newcommand*{\electronvolt}{\ensuremath{\mathrm{eV}}}
-\newcommand*{\eV}{\electronvolt}
-\newcommand*{\farad}{\ensuremath{\mathrm{F}}}
-\newcommand*{\henry}{\ensuremath{\mathrm{H}}}
-\newcommand*{\hertz}{\ensuremath{\mathrm{Hz}}}
-\newcommand*{\hour}{\ensuremath{\mathrm{h}}}
-\newcommand*{\joule}{\ensuremath{\mathrm{J}}}
-\newcommand*{\kelvin}{\ensuremath{\mathrm{K}}}
-\newcommand*{\kilogram}{\ensuremath{\mathrm{kg}}}
-\newcommand*{\metre}{\ensuremath{\mathrm{m}}}
-\newcommand*{\minute}{\ensuremath{\mathrm{min}}}
-\newcommand*{\mole}{\ensuremath{\mathrm{mol}}}
-\newcommand*{\newton}{\ensuremath{\mathrm{N}}}
-\newcommand*{\ohm}{\ensuremath{\Omega}}
-\newcommand*{\pascal}{\ensuremath{\mathrm{Pa}}}
-\newcommand*{\radian}{\ensuremath{\mathrm{rad}}}
-\newcommand*{\second}{\ensuremath{\mathrm{s}}}
-\newcommand*{\siemens}{\ensuremath{\mathrm{S}}}
-\newcommand*{\steradian}{\ensuremath{\mathrm{sr}}}
-\newcommand*{\tesla}{\ensuremath{\mathrm{T}}}
-\newcommand*{\volt}{\ensuremath{\mathrm{V}}}
-\newcommand*{\watt}{\ensuremath{\mathrm{W}}}
-\newcommand*{\weber}{\ensuremath{\mathrm{Wb}}}
-\newcommand*{\C}{\coulomb}
-\newcommand*{\F}{\farad}
-%\H is already defined as a LaTeX accent
-\newcommand*{\J}{\joule}
-\newcommand*{\N}{\newton}
-\newcommand*{\Pa}{\pascal}
-\newcommand*{\rad}{\radian}
-\newcommand*{\sr}{\steradian}
-%\S is already defined as a LaTeX symbol
-\newcommand*{\T}{\tesla}
-\newcommand*{\V}{\volt}
-\newcommand*{\W}{\watt}
-\newcommand*{\Wb}{\weber}
-\newcommand*{\square}[1]{\ensuremath{{#1}^2}} % prefix 2
-\newcommand*{\cubic}[1]{\ensuremath{{#1}^3}} % prefix 3
-\newcommand*{\quartic}[1]{\ensuremath{{#1}^4}} % prefix 4
-\newcommand*{\reciprocal}[1]{\ensuremath{{#1}^{-1}}} % prefix -1
-\newcommand*{\reciprocalsquare}[1]{\ensuremath{{#1}^{-2}}} % prefix -2
-\newcommand*{\reciprocalcubic}[1]{\ensuremath{{#1}^{-3}}} % prefix -3
-\newcommand*{\reciprocalquartic}[1]{\ensuremath{{#1}^{-4}}} % prefix -4
-\newcommand*{\squared}{\ensuremath{^2}} % postfix 2
-\newcommand*{\cubed}{\ensuremath{^3}} % postfix 3
-\newcommand*{\quarted}{\ensuremath{^4}} % postfix 4
-\newcommand*{\reciprocaled}{\ensuremath{^{-1}}} % postfix -1
-\newcommand*{\reciprocalsquared}{\ensuremath{^{-2}}} % postfix -2
-\newcommand*{\reciprocalcubed}{\ensuremath{^{-3}}} % postfix -3
-\newcommand*{\reciprocalquarted}{\ensuremath{^{-4}}} % postfix -4
-\newcommand*{\emptyunit}{\ensuremath{\Box}}
-% \end{macrocode}
+% Define units and related constructs to be used with the unit engine.
+% All single letter macros are now gone. We basically absorbed and
+% adapted the now outdated
+% \href{https://ctan.org/pkg/siunits}{\pkg{SIunits}} package.
+% We make use of |\symup{...}| from the \pkg{unicode-math} package.
%
-% \noindent Define a new named physics quantity or physical constant and
-% commands for selecting units. My thanks to Ulrich Diez for contributing
-% this code.
% \begin{macrocode}
-\newcommand*\mi@exchangeargs[2]{#2#1}%
-\newcommand*\mi@name{}%
-\long\def\mi@name#1#{\romannumeral0\mi@innername{#1}}%
-\newcommand*\mi@innername[2]{%
- \expandafter\mi@exchangeargs\expandafter{\csname#2\endcsname}{#1}}%
-\begingroup
-\@firstofone{%
- \endgroup
- \newcommand*\mi@forkifnull[3]{%
- \romannumeral\iffalse{\fi\expandafter\@secondoftwo\expandafter%
- {\expandafter{\string#1}\expandafter\@secondoftwo\string}%
- \expandafter\@firstoftwo\expandafter{\iffalse}\fi0 #3}{0 #2}}}%
-\newcommand*\selectbaseunit[3]{#1}
-\newcommand*\selectdrvdunit[3]{#2}
-\newcommand*\selectaltnunit[3]{#3}
-\newcommand*\selectunit{}
-\newcommand*\perpusebaseunit{\let\selectunit=\selectbaseunit}
-\newcommand*\perpusedrvdunit{\let\selectunit=\selectdrvdunit}
-\newcommand*\perpusealtnunit{\let\selectunit=\selectaltnunit}
-\newcommand*\hereusebaseunit[1]{%
- \begingroup\perpusebaseunit#1\endgroup}%
-\newcommand*\hereusedrvdunit[1]{%
- \begingroup\perpusedrvdunit#1\endgroup}%
-\newcommand*\hereusealtnunit[1]{%
- \begingroup\perpusealtnunit#1\endgroup}%
-\newenvironment{usebaseunit}{\perpusebaseunit}{}%
-\newenvironment{usedrvdunit}{\perpusedrvdunit}{}%
-\newenvironment{usealtnunit}{\perpusealtnunit}{}%
-\newcommand*\newphysicsquantity{\definephysicsquantity{\newcommand}}
-\newcommand*\redefinephysicsquantity{\definephysicsquantity{\renewcommand}}
-\newcommandx*\definephysicsquantity[5][4=,5=]{%
- \innerdefinewhatsoeverquantityfork{#3}{#4}{#5}{#1}{#2}{}{[1]}{##1}}%
-\newcommand*\newphysicsconstant{\definephysicsconstant{\newcommand}}
-\newcommand*\redefinephysicsconstant{\definephysicsconstant{\renewcommand}}
-\newcommandx*\definephysicsconstant[7][6=,7=]{%
- \innerdefinewhatsoeverquantityfork{#5}{#6}{#7}{#1}{#2}{#3}{}{#4}}%
-\newcommand*\innerdefinewhatsoeverquantityfork[3]{%
- \expandafter\innerdefinewhatsoeverquantity\romannumeral0%
- \mi@forkifnull{#3}{\mi@forkifnull{#2}{{#1}}{{#2}}{#1}}%
- {\mi@forkifnull{#2}{{#1}}{{#2}}{#3}}{#1}}%
-\newcommand*\innerdefinewhatsoeverquantity[8]{%
- \mi@name#4{#5}#7{\unit{#8}{\selectunit{#3}{#1}{#2}}}%
- \mi@name#4{#5baseunit}#7{\unit{#8}{#3}}%
- \mi@name#4{#5drvdunit}#7{\unit{#8}{#1}}%
- \mi@name#4{#5altnunit}#7{\unit{#8}{#2}}%
- \mi@name#4{#5onlyunit}{\selectunit{#3}{#1}{#2}}%
- \mi@name#4{#5onlybaseunit}{\ensuremath{#3}}%
- \mi@name#4{#5onlydrvdunit}{\ensuremath{#1}}%
- \mi@name#4{#5onlyaltnunit}{\ensuremath{#2}}%
- \mi@name#4{#5value}#7{\ensuremath{#8}}%
- \mi@forkifnull{#7}{%
- \ifx#4\renewcommand\mi@name\let{#5mathsymbol}=\relax\fi
- \mi@name\newcommand*{#5mathsymbol}{\ensuremath{#6}}}{}}%
+\NewDocumentCommand{\per}{}{/}
+\NewDocumentCommand{\usk}{}{\cdot}
+\NewDocumentCommand{\unit}{ m m }{{#1}{\,#2}}
+\NewDocumentCommand{\ampere}{}{\symup{A}}
+\NewDocumentCommand{\atomicmassunit}{}{\symup{u}}
+\NewDocumentCommand{\candela}{}{\symup{cd}}
+\NewDocumentCommand{\coulomb}{}{\symup{C}}
+\NewDocumentCommand{\degree}{}{^{\circ}}
+\NewDocumentCommand{\electronvolt}{}{\symup{eV}}
+\NewDocumentCommand{\ev}{}{\electronvolt}
+\NewDocumentCommand{\farad}{}{\symup{F}}
+\NewDocumentCommand{\henry}{}{\symup{H}}
+\NewDocumentCommand{\hertz}{}{\symup{Hz}}
+\NewDocumentCommand{\joule}{}{\symup{J}}
+\NewDocumentCommand{\kelvin}{}{\symup{K}}
+\NewDocumentCommand{\kev}{}{\kiloelectronvolt}
+\NewDocumentCommand{\kiloelectronvolt}{}{\symup{keV}}
+\NewDocumentCommand{\kilogram}{}{\symup{kg}}
+\NewDocumentCommand{\lightspeed}{}{\symup{c}}
+\NewDocumentCommand{\megaelectronvolt}{}{\symup{MeV}}
+\NewDocumentCommand{\meter}{}{\symup{m}}
+\NewDocumentCommand{\metre}{}{\meter}
+\NewDocumentCommand{\mev}{}{\megaelectronvolt}
+\NewDocumentCommand{\mole}{}{\symup{mol}}
+\NewDocumentCommand{\newton}{}{\symup{N}}
+\NewDocumentCommand{\ohm}{}{\symup\Omega}
+\NewDocumentCommand{\pascal}{}{\symup{Pa}}
+\NewDocumentCommand{\radian}{}{\symup{rad}}
+\NewDocumentCommand{\second}{}{\symup{s}}
+\NewDocumentCommand{\siemens}{}{\symup{S}}
+\NewDocumentCommand{\steradian}{}{\symup{sr}}
+\NewDocumentCommand{\tesla}{}{\symup{T}}
+\NewDocumentCommand{\volt}{}{\symup{V}}
+\NewDocumentCommand{\watt}{}{\symup{W}}
+\NewDocumentCommand{\weber}{}{\symup{Wb}}
+\NewDocumentCommand{\tothetwo}{}{^2} % postfix 2
+\NewDocumentCommand{\tothethree}{}{^3} % postfix 3
+\NewDocumentCommand{\tothefour}{}{^4} % postfix 4
+\NewDocumentCommand{\inverse}{}{^{-1}} % postfix -1
+\NewDocumentCommand{\totheinversetwo}{}{^{-2}} % postfix -2
+\NewDocumentCommand{\totheinversethree}{}{^{-3}} % postfix -3
+\NewDocumentCommand{\totheinversefour}{}{^{-4}} % postfix -4
+\NewDocumentCommand{\emptyunit}{}{\mdlgwhtsquare}
+\NewDocumentCommand{\tento}{ m }{10^{#1}}
+\NewDocumentCommand{\timestento}{ m }{\times\tento{#1}}
+\NewDocumentCommand{\xtento}{ m }{\times\tento{#1}}
% \end{macrocode}
%
-% \noindent This block of code processes the options.
% \begin{macrocode}
-\ifthenelse{\boolean{@optboldvectors}}
- {\typeout{mandi: You'll get bold vectors.}}
- {\ifthenelse{\boolean{@optromanvectors}}
- {\typeout{mandi: You'll get Roman vectors.}}
- {\typeout{mandi: You'll get italic vectors.}}}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\typeout{mandi: You'll get single magnitude bars.}}
- {\typeout{mandi: You'll get double magnitude bars.}}
-\ifthenelse{\boolean{@optbaseunits}}
- {\perpusebaseunit %
- \typeout{mandi: You'll get base units.}}
- {\ifthenelse{\boolean{@optdrvdunits}}
- {\perpusedrvdunit %
- \typeout{mandi: You'll get derived units.}}
- {\perpusealtnunit %
- \typeout{mandi: You'll get alternate units.}}}
-\ifthenelse{\boolean{@optapproxconsts}}
- {\typeout{mandi: You'll get approximate constants.}}
- {\typeout{mandi: You'll get precise constants.}}
-\ifthenelse{\boolean{@optuseradians}}
- {\typeout{mandi: You'll get radians in ang mom, ang impulse, and torque.}}
- {\typeout{mandi: You won't get radians in ang mom, ang impulse, and torque.}}
-\typeout{ }
+\ExplSyntaxOn
+\cs_new:Npn \mandi_newscalarquantity #1#2#3#4
+{%
+ \cs_new:cpn {#1} ##1 {\unit{##1}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1value} ##1 {##1}%
+ \cs_new:cpn {#1baseunits} ##1 {\unit{##1}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1derivedunits} ##1 {\unit{##1}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1alternateunits} ##1 {\unit{##1}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1onlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_new:cpn {#1onlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_new:cpn {#1onlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+}%
+\NewDocumentCommand{\newscalarquantity}{ m m O{#2} O{#2} }%
+{%
+ \mandi_newscalarquantity { #1 }{ #2 }{ #3 }{ #4 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
-% \noindent This is a utility command for picking constants. Do not use this
-% command manually.
-% \begin{macrocode}
-\ifthenelse{\boolean{@optapproxconsts}}
- {\newcommand*{\mi@p}[2]{#1}} % approximate value
- {\newcommand*{\mi@p}[2]{#2}} % precise value
-% \end{macrocode}
+% Redefining an existing scalar quantity.
%
-% \noindent SI base unit of length or spatial displacement
% \begin{macrocode}
-\newcommand*{\m}{\metre}
+\ExplSyntaxOn
+\cs_new:Npn \mandi_renewscalarquantity #1#2#3#4
+{%
+ \cs_set:cpn {#1} ##1 {\unit{##1}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1value} ##1 {##1}%
+ \cs_set:cpn {#1baseunits} ##1 {\unit{##1}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1derivedunits} ##1 {\unit{##1}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1alternateunits} ##1 {\unit{##1}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1onlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_set:cpn {#1onlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_set:cpn {#1onlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+}%
+\NewDocumentCommand{\renewscalarquantity}{ m m O{#2} O{#2} }%
+{%
+ \mandi_renewscalarquantity { #1 }{ #2 }{ #3 }{ #4 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
-% \noindent SI base unit of mass
-% \begin{macrocode}
-\newcommand*{\kg}{\kilogram}
-% \end{macrocode}
+% Defining a new vector quantity. Note that a corresponding scalar is also defined.
%
-% \noindent SI base unit of time or temporal displacement
% \begin{macrocode}
-\newcommand*{\s}{\second}
+\ExplSyntaxOn
+\cs_new:Npn \mandi_newvectorquantity #1#2#3#4
+{%
+ \mandi_newscalarquantity { #1 }{ #2 }{ #3 }{ #4 }%
+ \cs_new:cpn {vector#1} ##1 {\unit{\mivector{##1}}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1vector} ##1 {\unit{\mivector{##1}}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {vector#1value} ##1 {\mivector{##1}}%
+ \cs_new:cpn {#1vectorvalue} ##1 {\mivector{##1}}%
+ \cs_new:cpn {vector#1baseunits} ##1 {\unit{\mivector{##1}}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1vectorbaseunits} ##1 {\unit{\mivector{##1}}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {vector#1derivedunits} ##1 {\unit{\mivector{##1}}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1vectorderivedunits} ##1 {\unit{\mivector{##1}}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {vector#1alternateunits} ##1 {\unit{\mivector{##1}}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {#1vectoralternateunits} ##1 {\unit{\mivector{##1}}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_new:cpn {vector#1onlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_new:cpn {#1vectoronlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_new:cpn {vector#1onlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_new:cpn {#1vectoronlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_new:cpn {vector#1onlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+ \cs_new:cpn {#1vectoronlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+}%
+\NewDocumentCommand{\newvectorquantity}{ m m O{#2} O{#2} }%
+{%
+ \mandi_newvectorquantity { #1 }{ #2 }{ #3 }{ #4 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
-% \noindent SI base unit of electric current
-% \begin{macrocode}
-\newcommand*{\A}{\ampere}
-% \end{macrocode}
+% Redefining an existing vector quantity. Note that a corresponding scalar is also redefined.
%
-% \noindent SI base unit of thermodynamic temperature
% \begin{macrocode}
-\newcommand*{\K}{\kelvin}
+\ExplSyntaxOn
+\cs_new:Npn \mandi_renewvectorquantity #1#2#3#4
+{%
+ \mandi_renewscalarquantity { #1 }{ #2 }{ #3 }{ #4 }%
+ \cs_set:cpn {vector#1} ##1 {\unit{\mivector{##1}}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1vector} ##1 {\unit{\mivector{##1}}{\mandi@selectunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {vector#1value} ##1 {\mivector{##1}}%
+ \cs_set:cpn {#1vectorvalue} ##1 {\mivector{##1}}%
+ \cs_set:cpn {vector#1baseunits} ##1 {\unit{\mivector{##1}}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1vectorbaseunits} ##1 {\unit{\mivector{##1}}{\mandi@selectbaseunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {vector#1derivedunits} ##1 {\unit{\mivector{##1}}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1vectorderivedunits} ##1 {\unit{\mivector{##1}}{\mandi@selectderivedunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {vector#1alternateunits} ##1 {\unit{\mivector{##1}}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {#1vectoralternateunits} ##1 {\unit{\mivector{##1}}{\mandi@selectalternateunits{#2}{#3}{#4}}}%
+ \cs_set:cpn {vector#1onlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_set:cpn {#1vectoronlybaseunits} {\mandi@selectbaseunits{#2}{#3}{#4}}%
+ \cs_set:cpn {vector#1onlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_set:cpn {#1vectoronlyderivedunits} {\mandi@selectderivedunits{#2}{#3}{#4}}%
+ \cs_set:cpn {vector#1onlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+ \cs_set:cpn {#1vectoronlyalternateunits} {\mandi@selectalternateunits{#2}{#3}{#4}}%
+}%
+\NewDocumentCommand{\renewvectorquantity}{ m m O{#2} O{#2} }%
+{%
+ \mandi_renewvectorquantity { #1 }{ #2 }{ #3 }{ #4 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
-% \noindent SI base unit of amount
+% Defining a new physical constant.
+%
% \begin{macrocode}
-\newcommand*{\mol}{\mole}
+\ExplSyntaxOn
+\cs_new:Npn \mandi_newphysicalconstant #1#2#3#4#5#6#7
+{%
+ \cs_new:cpn {#1} {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectunits{#5}{#6}{#7}}}%
+ \cs_new:cpn {#1mathsymbol} {#2}%
+ \cs_new:cpn {#1approximatevalue} {#3}%
+ \cs_new:cpn {#1precisevalue} {#4}%
+ \cs_new:cpn {#1baseunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectbaseunits{#5}{#6}{#7}}}%
+ \cs_new:cpn {#1derivedunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectderivedunits{#5}{#6}{#7}}}%
+ \cs_new:cpn {#1alternateunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectalternateunits{#5}{#6}{#7}}}%
+ \cs_new:cpn {#1onlybaseunits} {\mandi@selectbaseunits{#5}{#6}{#7}}%
+ \cs_new:cpn {#1onlyderivedunits} {\mandi@selectderivedunits{#5}{#6}{#7}}%
+ \cs_new:cpn {#1onlyalternateunits} {\mandi@selectalternateunits{#5}{#6}{#7}}%
+}%
+\NewDocumentCommand{\newphysicalconstant}{ m m m m m O{#5} O{#5} }%
+{%
+ \mandi_newphysicalconstant { #1 }{ #2 }{ #3 }{ #4 }{ #5 }{ #6 }{ #7 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
-% \noindent SI base unit of luminous intensity
+% Redefining an existing physical constant.
+%
% \begin{macrocode}
-\newcommand*{\cd}{\candela}
+\ExplSyntaxOn
+\cs_new:Npn \mandi_renewphysicalconstant #1#2#3#4#5#6#7
+{%
+ \cs_set:cpn {#1} {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectunits{#5}{#6}{#7}}}%
+ \cs_set:cpn {#1mathsymbol} {#2}%
+ \cs_set:cpn {#1approximatevalue} {#3}%
+ \cs_set:cpn {#1precisevalue} {#4}%
+ \cs_set:cpn {#1baseunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectbaseunits{#5}{#6}{#7}}}%
+ \cs_set:cpn {#1derivedunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectderivedunits{#5}{#6}{#7}}}%
+ \cs_set:cpn {#1alternateunits}
+ {\unit{\mandi@selectprecision{#3}{#4}}{\mandi@selectalternateunits{#5}{#6}{#7}}}%
+ \cs_set:cpn {#1onlybaseunits} {\mandi@selectbaseunits{#5}{#6}{#7}}%
+ \cs_set:cpn {#1onlyderivedunits} {\mandi@selectderivedunits{#5}{#6}{#7}}%
+ \cs_set:cpn {#1onlyalternateunits} {\mandi@selectalternateunits{#5}{#6}{#7}}%
+}%
+\NewDocumentCommand{\renewphysicalconstant}{ m m m m m O{#5} O{#5} }%
+{%
+ \mandi_renewphysicalconstant { #1 }{ #2 }{ #3 }{ #4 }{ #5 }{ #6 }{ #7 }%
+}%
+\ExplSyntaxOff
% \end{macrocode}
%
+% Define every quantity we need in introductory physics, alphabetically
+% for convenience. This is really the core feature of \mandi\ that no other
+% package offers. There are commands for quantities that have no dimensions
+% or units, and these quantities are defined for semantic completeness.
+%
% \begin{macrocode}
-\newcommand*{\dimdisplacement}{\ensuremath{\mathrm{L}}}
-\newcommand*{\dimmass}{\ensuremath{\mathrm{M}}}
-\newcommand*{\dimduration}{\ensuremath{\mathrm{T}}}
-\newcommand*{\dimcurrent}{\ensuremath{\mathrm{I}}}
-\newcommand*{\dimtemperature}{\ensuremath{\mathrm{\Theta}}}
-\newcommand*{\dimamount}{\ensuremath{\mathrm{N}}}
-\newcommand*{\dimluminous}{\ensuremath{\mathrm{J}}}
-\newcommand*{\infeet}[1]{\unit{#1}{\mathrm{ft}}}
-\newcommand*{\infeetpersecond}[1]{\unit{#1}{\mathrm{ft}\per\s}}
-\newcommand*{\infeetpersecondsquared}[1]{\unit{#1}{\mathrm{ft}\per\s\squared}}
-\newcommand*{\indegrees}[1]{\unit{#1}{\mkern-\thickmuskip\degree}}
-\newcommand*{\inFarenheit}[1]{\unit{#1}{\mkern-\thickmuskip\degree\mathrm{F}}}
-\newcommand*{\inCelsius}[1]{\unit{#1}{\mkern-\thickmuskip\degree\mathrm{C}}}
-\newcommand*{\inarcminutes}[1]{\unit{#1}{\mkern-\thickmuskip\arcminute}}
-\newcommand*{\inarcseconds}[1]{\unit{#1}{\mkern-\thickmuskip\arcsecond}}
-\newcommand*{\ineV}[1]{\unit{#1}{\electronvolt}}
-\newcommand*{\ineVocs}[1]{\unit{#1}{\mathrm{eV}\per c^2}}
-\newcommand*{\ineVoc}[1]{\unit{#1}{\mathrm{eV}\per c}}
-\newcommand*{\inMeV}[1]{\unit{#1}{\mathrm{MeV}}}
-\newcommand*{\inMeVocs}[1]{\unit{#1}{\mathrm{MeV}\per c^2}}
-\newcommand*{\inMeVoc}[1]{\unit{#1}{\mathrm{MeV}\per c}}
-\newcommand*{\inGeV}[1]{\unit{#1}{\mathrm{GeV}}}
-\newcommand*{\inGeVocs}[1]{\unit{#1}{\mathrm{GeV}\per c^2}}
-\newcommand*{\inGeVoc}[1]{\unit{#1}{\mathrm{GeV}\per c}}
-\newcommand*{\inamu}[1]{\unit{#1}{\mathrm{u}}}
-\newcommand*{\ingram}[1]{\unit{#1}{\mathrm{g}}}
-\newcommand*{\ingrampercubiccm}[1]{\unit{#1}{\mathrm{g}\per\cubic\mathrm{cm}}}
-\newcommand*{\inAU}[1]{\unit{#1}{\mathrm{AU}}}
-\newcommand*{\inly}[1]{\unit{#1}{\mathrm{ly}}}
-\newcommand*{\incyr}[1]{\unit{#1}{c\usk\mathrm{year}}}
-\newcommand*{\inpc}[1]{\unit{#1}{\mathrm{pc}}}
-\newcommand*{\insolarL}[1]{\unit{#1}{\Lsolar}}
-\newcommand*{\insolarT}[1]{\unit{#1}{\Tsolar}}
-\newcommand*{\insolarR}[1]{\unit{#1}{\Rsolar}}
-\newcommand*{\insolarM}[1]{\unit{#1}{\Msolar}}
-\newcommand*{\insolarF}[1]{\unit{#1}{\Fsolar}}
-\newcommand*{\insolarf}[1]{\unit{#1}{\fsolar}}
-\newcommand*{\insolarMag}[1]{\unit{#1}{\Magsolar}}
-\newcommand*{\insolarmag}[1]{\unit{#1}{\magsolar}}
-\newcommand*{\insolarD}[1]{\unit{#1}{\Dsolar}}
-\newcommand*{\insolard}[1]{\unit{#1}{\dsolar}}
-\newcommand*{\velocityc}[1]{\ensuremath{#1c}}
-\newcommand*{\lorentzfactor}[1]{\ensuremath{#1}}
-\newcommand*{\speed}{\velocity}
-\newphysicsquantity{displacement}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsquantity{mass}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsquantity{duration}%
- {\s}%
- [\s]%
- [\s]
-\newphysicsquantity{current}%
- {\A}%
- [\A]%
- [\A]
-\newphysicsquantity{temperature}%
- {\K}%
- [\K]%
- [\K]
-\newphysicsquantity{amount}%
- {\mol}%
- [\mol]%
- [\mol]
-\newphysicsquantity{luminous}%
- {\cd}%
- [\cd]%
- [\cd]
-\newphysicsquantity{planeangle}%
- {\m\usk\reciprocal\m}%
- [\rad]%
- [\rad]
-\newphysicsquantity{solidangle}%
- {\m\squared\usk\reciprocalsquare\m}%
- [\sr]%
- [\sr]
-\newphysicsquantity{velocity}%
- {\m\usk\reciprocal\s}%
- [\m\usk\reciprocal\s]%
- [\m\per\s]
-\newphysicsquantity{acceleration}%
- {\m\usk\s\reciprocalsquared}%
- [\N\per\kg]%
- [\m\per\s\squared]
-\newphysicsquantity{gravitationalfield}%
- {\m\usk\s\reciprocalsquared}%
- [\N\per\kg]%
- [\N\per\kg]
-\newphysicsquantity{gravitationalpotential}%
- {\square\m\usk\reciprocalsquare\s}%
- [\J\per\kg]%
- [\J\per\kg]
-\newphysicsquantity{momentum}%
- {\m\usk\kg\usk\reciprocal\s}%
- [\N\usk\s]%
- [\kg\usk\m\per\s]
-\newphysicsquantity{impulse}%
- {\m\usk\kg\usk\reciprocal\s}%
- [\N\usk\s]%
- [\N\usk\s]
-\newphysicsquantity{force}%
- {\m\usk\kg\usk\s\reciprocalsquared}%
- [\N]%
- [\N]
-\newphysicsquantity{springstiffness}%
- {\kg\usk\s\reciprocalsquared}%
- [\N\per\m]%
- [\N\per\m]
-\newphysicsquantity{springstretch}%
- {\m}%
- []%
- []
-\newphysicsquantity{area}%
- {\m\squared}%
- []%
- []
-\newphysicsquantity{volume}%
- {\cubic\m}%
- []%
- []
-\newphysicsquantity{linearmassdensity}%
- {\reciprocal\m\usk\kg}%
- [\kg\per\m]%
- [\kg\per\m]
-\newphysicsquantity{areamassdensity}%
- {\m\reciprocalsquared\usk\kg}%
- [\kg\per\m\squared]%
- [\kg\per\m\squared]
-\newphysicsquantity{volumemassdensity}%
- {\m\reciprocalcubed\usk\kg}%
- [\kg\per\m\cubed]%
- [\kg\per\m\cubed]
-\newphysicsquantity{youngsmodulus}%
- {\reciprocal\m\usk\kg\usk\s\reciprocalsquared}%
- [\N\per\m\squared]%
- [\Pa]
-\newphysicsquantity{stress}%
- {\reciprocal\m\usk\kg\usk\s\reciprocalsquared}%
- [\N\per\m\squared]%
- [\Pa]
-\newphysicsquantity{pressure}%
- {\reciprocal\m\usk\kg\usk\s\reciprocalsquared}%
- [\N\per\m\squared]%
- [\Pa]
-\newphysicsquantity{strain}%
+\newvectorquantity{acceleration}%
+ {\meter\usk\second\totheinversetwo}%
+ [\newton\per\kilogram]%
+ [\meter\per\second\tothetwo]%
+\newscalarquantity{amount}%
+ {\mole}%
+\newvectorquantity{angularacceleration}%
+ {\radian\usk\second\totheinversetwo}%
+ [\radian\per\second\tothetwo]%
+ [\radian\per\second\tothetwo]%
+\newscalarquantity{angularfrequency}%
+ {\radian\usk\second\inverse}%
+ [\radian\per\second]%
+ [\radian\per\second]%
+%\ifmandi@rotradians
+% \newphysicalquantity{angularimpulse}%
+% {\meter\tothetwo\usk\kilogram\usk\second\inverse\usk\radian\inverse}%
+% [\joule\usk\second\per\radian]%
+% [\newton\usk\meter\usk\second\per\radian]%
+% \newphysicalquantity{angularmomentum}%
+% {\meter\tothetwo\usk\kilogram\usk\second\inverse\usk\radian\inverse}%
+% [\kilogram\usk\meter\tothetwo\per(\second\usk\radian)]%
+% [\newton\usk\meter\usk\second\per\radian]%
+%\else
+ \newvectorquantity{angularimpulse}%
+ {\kilogram\usk\meter\tothetwo\usk\second\inverse}%
+ [\kilogram\usk\meter\tothetwo\per\second]% % also \joule\usk\second
+ [\kilogram\usk\meter\tothetwo\per\second]% % also \newton\usk\meter\usk\second
+ \newvectorquantity{angularmomentum}%
+ {\kilogram\usk\meter\tothetwo\usk\second\inverse}%
+ [\kilogram\usk\meter\tothetwo\per\second]% % also \joule\usk\second
+ [\kilogram\usk\meter\tothetwo\per\second]% % also \newton\usk\meter\usk\second
+%\fi
+\newvectorquantity{angularvelocity}%
+ {\radian\usk\second\inverse}%
+ [\radian\per\second]%
+ [\radian\per\second]%
+\newscalarquantity{area}%
+ {\meter\tothetwo}%
+\newscalarquantity{areachargedensity}%
+ {\ampere\usk\second\usk\meter\totheinversetwo}%
+ [\coulomb\per\meter\tothetwo]%
+ [\coulomb\per\meter\tothetwo]%
+\newscalarquantity{areamassdensity}%
+ {\kilogram\usk\meter\totheinversetwo}%
+ [\kilogram\per\meter\tothetwo]%
+ [\kilogram\per\meter\tothetwo]%
+\newscalarquantity{capacitance}%
+ {\ampere\tothetwo\usk\second\tothefour\usk\kilogram\inverse\usk\meter\totheinversetwo}%
+ [\farad]%
+ [\coulomb\per\volt]% % also \coulomb\tothetwo\per\newton\usk\meter, \second\per\ohm
+\newscalarquantity{charge}%
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]% % also \farad\usk\volt
+\newvectorquantity{cmagneticfield}%
+ {\kilogram\usk\meter\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\newton\per\coulomb]% % also \volt\per\meter
+ [\newton\per\coulomb]%
+\newscalarquantity{conductance}%
+ {\ampere\tothetwo\usk\second\tothethree\usk\kilogram\inverse\usk\meter\totheinversetwo}%
+ [\siemens]%
+ [\ampere\per\volt]%
+\newscalarquantity{conductivity}%
+ {\ampere\tothetwo\usk\second\tothethree\usk\kilogram\inverse\usk\meter\totheinversethree}%
+ [\siemens\per\meter]%
+ [\ampere\per\volt\usk\meter]%
+\newscalarquantity{conventionalcurrent}%
+ {\ampere}%
+ [\coulomb\per\second]%
+ [\ampere]%
+\newscalarquantity{current}%
+ {\ampere}%
+\newscalarquantity{currentdensity}%
+ {\ampere\usk\meter\totheinversetwo}%
+ [\coulomb\per\second\usk\meter\tothetwo]%
+ [\ampere\per\meter\tothetwo]%
+\newscalarquantity{dielectricconstant}%
{}%
- []%
- []
-\newphysicsquantity{work}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared}%
- [\J]%
- [\N\usk\m]
-\newphysicsquantity{energy}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared}%
- [\J]%
- [\N\usk\m]
-\newphysicsquantity{power}%
- {\m\squared\usk\kg\usk\s\reciprocalcubed}%
- [\W]%
- [\J\per\s]
-\newphysicsquantity{specificheatcapacity}%
- {\J\per\K\usk\kg}%
- [\J\per\K\usk\kg]%
- [\J\per\K\usk\kg]
-\newphysicsquantity{angularvelocity}%
- {\rad\usk\reciprocal\s}%
- [\rad\per\s]%
- [\rad\per\s]
-\newphysicsquantity{angularacceleration}%
- {\rad\usk\s\reciprocalsquared}%
- [\rad\per\s\squared]%
- [\rad\per\s\squared]
-\newphysicsquantity{momentofinertia}%
- {\m\squared\usk\kg}%
- [\m\squared\usk\kg]%
- [\J\usk\s\squared]
-\ifthenelse{\boolean{@optuseradians}}
- {%
- \newphysicsquantity{angularmomentum}%
- {\m\squared\usk\kg\usk\reciprocal\s\usk\reciprocal\rad}%
- [\kg\usk\m\squared\per(\s\usk\rad)]%
- [\N\usk\m\usk\s\per\rad]
- \newphysicsquantity{angularimpulse}%
- {\m\squared\usk\kg\usk\reciprocal\s\usk\reciprocal\rad}%
- [\J\usk\s\per\rad]%
- [\N\usk\m\usk\s\per\rad]
- \newphysicsquantity{torque}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared\usk\reciprocal\rad}%
- [\N\usk\m\per\rad]%
- [\J\per\rad]
- }%
- {%
- \newphysicsquantity{angularmomentum}%
- {\m\squared\usk\kg\usk\reciprocal\s}%
- [\kg\usk\m\squared\per\s]%
- [\N\usk\m\usk\s]
- \newphysicsquantity{angularimpulse}%
- {\m\squared\usk\kg\usk\reciprocal\s}%
- [\J\usk\s]%
- [\N\usk\m\usk\s]
- \newphysicsquantity{torque}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared}%
- [\N\usk\m]%
- [\J]
- }%
-\newphysicsquantity{entropy}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared\usk\reciprocal\K}%
- [\J\per\K]%
- [\J\per\K]
-\newphysicsquantity{wavelength}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsquantity{wavenumber}%
- {\reciprocal\m}%
- [\per\m]%
- [\per\m]
-\newphysicsquantity{frequency}%
- {\reciprocal\s}%
- [\hertz]%
- [\hertz]
-\newphysicsquantity{angularfrequency}%
- {\rad\usk\reciprocal\s}%
- [\rad\per\s]%
- [\rad\per\s]
-\newphysicsquantity{charge}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsquantity{permittivity}%
- {\m\reciprocalcubed\usk\reciprocal\kg\usk\s\reciprocalquarted\usk\A\squared}%
- [\C\squared\per\N\usk\m\squared]%
- [\F\per\m]
-\newphysicsquantity{permeability}%
- {\m\usk\kg\usk\s\reciprocalsquared\usk\A\reciprocalsquared}%
- [\T\usk\m\per\A]%
- [\henry\per\m]
-\newphysicsquantity{electricfield}%
- {\m\usk\kg\usk\s\reciprocalcubed\usk\reciprocal\A}%
- [\N\per\C]%
- [\V\per\m]
-\newphysicsquantity{electricdipolemoment}%
- {\m\usk\s\usk\A}%
- [\C\usk\m]%
- [\C\usk\m]
-\newphysicsquantity{electricflux}%
- {\m\cubed\usk\kg\usk\s\reciprocalcubed\usk\reciprocal\A}%
- [\N\usk\m\squared\per\C]%
- [\V\usk\m]
-\newphysicsquantity{magneticfield}%
- {\kg\usk\s\reciprocalsquared\usk\reciprocal\A}%
- [\T]%
- [\N\per\C\usk(\m\per\s)] % also \Wb\per\m\squared
-\newphysicsquantity{magneticflux}%
- {\m\squared\usk\kg\usk\s\reciprocalsquared\usk\reciprocal\A}%
- [\T\usk\m\squared]%
- [\volt\usk\s] % also \Wb and \J\per\A
-\newphysicsquantity{cmagneticfield}%
- {\m\usk\kg\usk\s\reciprocalcubed\usk\reciprocal\A}%
- [\N\per\C]%
- [\V\per\m]
-\newphysicsquantity{linearchargedensity}%
- {\reciprocal\m\usk\s\usk\A}%
- [\C\per\m]%
- [\C\per\m]
-\newphysicsquantity{areachargedensity}%
- {\reciprocalsquare\m\usk\s\usk\A}%
- [\C\per\square\m]%
- [\C\per\square\m]
-\newphysicsquantity{volumechargedensity}%
- {\reciprocalcubic\m\usk\s\usk\A}%
- [\C\per\cubic\m]%
- [\C\per\cubic\m]
-\newphysicsquantity{mobility}%
- {\m\squared\usk\kg\usk\s\reciprocalquarted\usk\reciprocal\A}%
- [\m\squared\per\volt\usk\s]%
- [(\m\per\s)\per(\N\per\C)]
-\newphysicsquantity{numberdensity}%
- {\reciprocalcubic\m}%
- [\per\cubic\m]%
- [\per\cubic\m]
-\newphysicsquantity{polarizability}%
- {\reciprocal\kg\usk\s\quarted\usk\square\A}%
- [\C\usk\square\m\per\V]%
- [\C\usk\m\per(\N\per\C)]
-\newphysicsquantity{electricpotential}%
- {\square\m\usk\kg\usk\reciprocalcubic\s\usk\reciprocal\A}%
- [\V]%
- [\J\per\C]
-\newphysicsquantity{emf}%
- {\square\m\usk\kg\usk\reciprocalcubic\s\usk\reciprocal\A}%
- [\V]%
- [\J\per\C]
-\newphysicsquantity{dielectricconstant}%
+\newvectorquantity{direction}%
{}%
- []%
- []
-\newphysicsquantity{indexofrefraction}%
+\newvectorquantity{displacement}%
+ {\meter}
+\newscalarquantity{duration}%
+ {\second}%
+\newvectorquantity{electricdipolemoment}%
+ {\ampere\usk\second\usk\meter}%
+ [\coulomb\usk\meter]%
+ [\coulomb\usk\meter]%
+\newvectorquantity{electricfield}%
+ {\kilogram\usk\meter\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\volt\per\meter]%
+ [\newton\per\coulomb]%
+\newscalarquantity{electricflux}%
+ {\kilogram\usk\meter\tothethree\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\volt\usk\meter]%
+ [\newton\usk\meter\tothetwo\per\coulomb]%
+\newscalarquantity{electricpotential}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\volt]% % also \joule\per\coulomb
+ [\volt]%
+\newscalarquantity{electricpotentialdifference}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\volt]% % also \joule\per\coulomb
+ [\volt]%
+\newscalarquantity{electroncurrent}%
+ {\second\inverse}%
+ [\ensuremath{\symup{e}}\per\second]%
+ [\ensuremath{\symup{e}}\per\second]%
+\newscalarquantity{emf}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\inverse\usk\second\totheinversethree}%
+ [\volt]% % also \joule\per\coulomb
+ [\volt]%
+\newscalarquantity{energy}%
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo}%
+ [\joule]% % also \newton\usk\meter
+ [\joule]%
+\newscalarquantity{energyinev}%
+ {\electronvolt}%
+\newscalarquantity{energyinkev}%
+ {\kiloelectronvolt}%
+\newscalarquantity{energyinmev}%
+ {\megaelectronvolt}%
+\newscalarquantity{energydensity}%
+ {\kilogram\usk\meter\inverse\usk\second\totheinversetwo}%
+ [\joule\per\meter\tothethree]%
+ [\joule\per\meter\tothethree]%
+\newscalarquantity{energyflux}%
+ {\kilogram\usk\second\totheinversethree}%
+ [\watt\per\meter\tothetwo]%
+ [\watt\per\meter\tothetwo]%
+\newscalarquantity{entropy}%
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo\usk\kelvin\inverse}%
+ [\joule\per\kelvin]%
+ [\joule\per\kelvin]%
+\newvectorquantity{force}%
+ {\kilogram\usk\meter\usk\second\totheinversetwo}%
+ [\newton]%
+ [\newton]% % also \kilogram\usk\meter\per\second\tothetwo
+\newscalarquantity{frequency}%
+ {\second\inverse}%
+ [\hertz]%
+ [\hertz]%
+\newvectorquantity{gravitationalfield}%
+ {\meter\usk\second\totheinversetwo}%
+ [\newton\per\kilogram]%
+ [\newton\per\kilogram]%
+\newscalarquantity{gravitationalpotential}%
+ {\meter\tothetwo\usk\second\totheinversetwo}%
+ [\joule\per\kilogram]%
+ [\joule\per\kilogram]%
+\newscalarquantity{gravitationalpotentialdifference}%
+ {\meter\tothetwo\usk\second\totheinversetwo}%
+ [\joule\per\kilogram]%
+ [\joule\per\kilogram]%
+\newvectorquantity{impulse}%
+ {\kilogram\usk\meter\usk\second\inverse}%
+ [\newton\usk\second]%
+ [\newton\usk\second]%
+\newscalarquantity{indexofrefraction}%
{}%
- []%
- []
-\newphysicsquantity{relativepermittivity}%
+\newscalarquantity{inductance}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\henry]%
+ [\volt\usk\second\per\ampere]% % also \square\meter\usk\kilogram\per\coulomb\tothetwo, \Wb\per\ampere
+\newscalarquantity{linearchargedensity}%
+ {\ampere\usk\second\usk\meter\inverse}%
+ [\coulomb\per\meter]%
+ [\coulomb\per\meter]%
+\newscalarquantity{linearmassdensity}%
+ {\kilogram\usk\meter\inverse}%
+ [\kilogram\per\meter]%
+ [\kilogram\per\meter]%
+\newscalarquantity{luminousintensity}%
+ {\candela}%
+\newscalarquantity{magneticcharge}%
+ {\ampere\usk\meter}% % There is another convention. Be careful!
+\newvectorquantity{magneticdipolemoment}%
+ {\ampere\usk\meter\tothetwo}%
+ [\ampere\usk\meter\tothetwo]%
+ [\joule\per\tesla]%
+\newvectorquantity{magneticfield}%
+ {\kilogram\usk\ampere\inverse\usk\second\totheinversetwo}%
+ [\newton\per\ampere\usk\meter]% % also \Wb\per\meter\tothetwo
+ [\tesla]%
+\newscalarquantity{magneticflux}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\inverse\usk\second\totheinversetwo}%
+ [\tesla\usk\meter\tothetwo]%
+ [\volt\usk\second]% % also \Wb and \joule\per\ampere
+\newscalarquantity{mass}%
+ {\kilogram}%
+\newscalarquantity{mobility}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\inverse\usk\second\totheinversefour}%
+ [\meter\tothetwo\per\volt\usk\second]%
+ [\coulomb\usk\meter\per\newton\usk\second]%
+\newscalarquantity{momentofinertia}%
+ {\kilogram\usk\meter\tothetwo}%
+ [\joule\usk\second\tothetwo]%
+ [\kilogram\usk\meter\tothetwo]%
+\newvectorquantity{momentum}%
+ {\kilogram\usk\meter\usk\second\inverse}%
+ [\kilogram\usk\meter\per\second]%
+ [\kilogram\usk\meter\per\second]%
+\newvectorquantity{momentumflux}%
+ {\kilogram\usk\meter\inverse\usk\second\totheinversetwo}%
+ [\newton\per\meter\tothetwo]%
+ [\newton\per\meter\tothetwo]%
+\newscalarquantity{numberdensity}%
+ {\meter\totheinversethree}%
+ [\per\meter\tothethree]%
+ [\per\meter\tothethree]%
+\newscalarquantity{permeability}%
+ {\kilogram\usk\meter\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\henry\per\meter]%
+ [\tesla\usk\meter\per\ampere]%
+\newscalarquantity{permittivity}%
+ {\ampere\tothetwo\usk\second\tothefour\usk\kilogram\inverse\usk\meter\totheinversethree}%
+ [\farad\per\meter]%
+ [\coulomb\tothetwo\per\newton\usk\meter\tothetwo]%
+\newscalarquantity{planeangle}%
+ {\meter\usk\meter\inverse}%
+ [\radian]%
+ [\radian]%
+\newscalarquantity{polarizability}%
+ {\ampere\tothetwo\usk\second\tothefour\usk\kilogram\inverse}%
+ [\coulomb\usk\meter\tothetwo\per\volt]%
+ [\coulomb\tothetwo\usk\meter\per\newton]%
+\newscalarquantity{power}%
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversethree}%
+ [\watt]%
+ [\joule\per\second]%
+\newvectorquantity{poynting}%
+ {\kilogram\usk\second\totheinversethree}%
+ [\watt\per\meter\tothetwo]%
+ [\watt\per\meter\tothetwo]%
+\newscalarquantity{pressure}%
+ {\kilogram\usk\meter\inverse\usk\second\totheinversetwo}%
+ [\pascal]%
+ [\newton\per\meter\tothetwo]%
+\newscalarquantity{relativepermeability}
{}%
- []%
- []
-\newphysicsquantity{relativepermeability}
+\newscalarquantity{relativepermittivity}%
{}%
- []%
- []
-\newphysicsquantity{energydensity}%
- {\m\reciprocaled\usk\kg\usk\reciprocalsquare\s}%
- [\J\per\cubic\m]%
- [\J\per\cubic\m]
-\newphysicsquantity{energyflux}%
- {\kg\usk\s\reciprocalcubed}%
- [\W\per\m\squared]%
- [\W\per\m\squared]
-\newphysicsquantity{momentumflux}%
- {\reciprocal\m\usk\kg\usk\s\reciprocalsquared}%
- [\N\per\m\squared]%
- [\N\per\m\squared]
-\newphysicsquantity{electroncurrent}%
- {\reciprocal\s}%
- [\ensuremath{\mathrm{e}}\per\s]%
- [\ensuremath{\mathrm{e}}\per\s]
-\newphysicsquantity{conventionalcurrent}%
- {\A}%
- [\A]%
- [\C\per\s]
-\newphysicsquantity{magneticdipolemoment}%
- {\square\m\usk\A}%
- [\A\usk\square\m]%
- [\J\per\T]
-\newphysicsquantity{currentdensity}%
- {\reciprocalsquare\m\usk\A}%
- [\A\per\square\m]%
- [\C\usk\s\per\square\m]
-\newphysicsquantity{capacitance}%
- {\reciprocalsquare\m\usk\reciprocal\kg\usk\quartic\s\usk\square\A}%
- [\F]%
- [\C\per\V] % also \C\squared\per\N\usk\m, \s\per\ohm
-\newphysicsquantity{inductance}%
- {\square\m\usk\kg\usk\reciprocalsquare\s\usk\reciprocalsquare\A}%
- [\henry]%
- [\volt\usk\s\per\A] % also \square\m\usk\kg\per\C\squared, \Wb\per\A
-\newphysicsquantity{conductivity}%
- {\reciprocalcubic\m\usk\reciprocal\kg\usk\cubic\s\usk\square\A}%
- [(\A\per\square\m)\per(\V\per\m)]%
- [\siemens\per\m]
-\newphysicsquantity{resistivity}%
- {\cubic\m\usk\kg\usk\reciprocalcubic\s\usk\reciprocalsquare\A}%
- [\ohm\usk\m]%
- [(\V\per\m)\per(\A\per\square\m)]
-\newphysicsquantity{resistance}%
- {\square\m\usk\kg\usk\reciprocalcubic\s\usk\reciprocalsquare\A}%
+\newscalarquantity{resistance}%
+ {\kilogram\usk\meter\tothetwo\usk\ampere\totheinversetwo\usk\second\totheinversethree}%
+ [\ohm]% % also \volt\per\ampere
[\ohm]%
- [\V\per\A]
-\newphysicsquantity{conductance}%
- {\reciprocalsquare\m\usk\reciprocal\kg\usk\cubic\s\usk\square\A}%
- [\A\per\V]%
- [\siemens]
-\newphysicsquantity{magneticcharge}%
- {\m\usk\A}%
- [\m\usk\A]%
- [\m\usk\A]
-\newcommand*{\vectordisplacement}[1]{\ensuremath{\displacement{\mivector{#1}}}}
-\newcommand*{\vectorvelocity}[1]{\ensuremath{\velocity{\mivector{#1}}}}
-\newcommand*{\vectorvelocityc}[1]{\ensuremath{\velocityc{\mivector{#1}}}}
-\newcommand*{\vectoracceleration}[1]{\ensuremath{\acceleration{\mivector{#1}}}}
-\newcommand*{\vectormomentum}[1]{\ensuremath{\momentum{\mivector{#1}}}}
-\newcommand*{\vectorforce}[1]{\ensuremath{\force{\mivector{#1}}}}
-\newcommand*{\vectorgravitationalfield}[1]
- {\ensuremath{\gravitationalfield{\mivector{#1}}}}
-\newcommand*{\vectorimpulse}[1]{\ensuremath{\impulse{\mivector{#1}}}}
-\newcommand*{\vectorangularvelocity}[1]{\ensuremath{\angularvelocity{\mivector{#1}}}}
-\newcommand*{\vectorangularacceleration}[1]
- {\ensuremath{\angularacceleration{\mivector{#1}}}}
-\newcommand*{\vectorangularmomentum}[1]{\ensuremath{\angularmomentum{\mivector{#1}}}}
-\newcommand*{\vectorangularimpulse}[1]{\ensuremath{\angularimpulse{\mivector{#1}}}}
-\newcommand*{\vectortorque}[1]{\ensuremath{\torque{\mivector{#1}}}}
-\newcommand*{\vectorwavenumber}[1]{\ensuremath{\wavenumber{\mivector{#1}}}}
-\newcommand*{\vectorelectricfield}[1]{\ensuremath{\electricfield{\mivector{#1}}}}
-\newcommand*{\vectorelectricdipolemoment}[1]
- {\ensuremath{\electricdipolemoment{\mivector{#1}}}}
-\newcommand*{\vectormagneticfield}[1]{\ensuremath{\magneticfield{\mivector{#1}}}}
-\newcommand*{\vectorcmagneticfield}[1]{\ensuremath{\cmagneticfield{\mivector{#1}}}}
-\newcommand*{\vectormagneticdipolemoment}[1]
- {\ensuremath{\magneticdipolemoment{\mivector{#1}}}}
-\newcommand*{\vectorcurrentdensity}[1]{\ensuremath{\currentdensity{\mivector{#1}}}}
- \newcommand*{\lv}{\ensuremath{\left\langle}}
-\newcommand*{\vectorenergyflux}[1]{\ensuremath{\energyflux{\mivector{#1}}}}
-\newcommand*{\vectormomentumflux}[1]{\ensuremath{\momentumflux{\mivector{#1}}}}
-\newcommand*{\poyntingvector}{\vectorenergyflux}
-\newcommand*{\rv}{\ensuremath{\right\rangle}}
-\ExplSyntaxOn % Written in LaTeX3
-\NewDocumentCommand{\magvectncomps}{ m O{} }
- {%
- \sum_of_squares:nn { #1 }{ #2 }
- }%
-\cs_new:Npn \sum_of_squares:nn #1 #2
- {%
- \tl_if_empty:nTF { #2 }
- {%
- \clist_set:Nn \l_tmpa_clist { #1 }
- \ensuremath{%
- \sqrt{\left(\clist_use:Nnnn \l_tmpa_clist { \right)^2+\left( } { \right)^2+
- \left( } { \right)^2+\left( } \right)^2 }
- }%
+\newscalarquantity{resistivity}%
+ {\kilogram\usk\meter\tothethree\usk\ampere\totheinversetwo\usk\second\totheinversethree}%
+ [\ohm\usk\meter]%
+ [\volt\usk\meter\per\ampere]%
+\newscalarquantity{solidangle}%
+ {\meter\tothetwo\usk\meter\totheinversetwo}%
+ [\steradian]%
+ [\steradian]%
+\newscalarquantity{specificheatcapacity}%
+ {\meter\tothetwo\usk\second\totheinversetwo\usk\kelvin\inverse}%
+ [\joule\per\kelvin\usk\kilogram]%
+ [\joule\per\kelvin\usk\kilogram]
+\newscalarquantity{springstiffness}%
+ {\kilogram\usk\second\totheinversetwo}%
+ [\newton\per\meter]%
+ [\newton\per\meter]%
+\newscalarquantity{springstretch}% % This is really just a displacement.
+ {\meter}%
+\newscalarquantity{stress}%
+ {\kilogram\usk\meter\inverse\usk\second\totheinversetwo}%
+ [\pascal]%
+ [\newton\per\meter\tothetwo]%
+\newscalarquantity{strain}%
+ {}%
+\newscalarquantity{temperature}%
+ {\kelvin}%
+%\ifmandi@rotradians
+% \newphysicalquantity{torque}%
+% {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo\usk\radian\inverse}%
+% [\newton\usk\meter\per\radian]%
+% [\newton\usk\meter\per\radian]%
+%\else
+\newvectorquantity{torque}%
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo}%
+ [\newton\usk\meter]%
+ [\newton\usk\meter]%
+%\fi
+\newvectorquantity{velocity}%
+ {\meter\usk\second\inverse}%
+ [\meter\per\second]%
+ [\meter\per\second]%
+\newvectorquantity{velocityc}%
+ {\lightspeed}%
+ [\lightspeed]%
+ [\lightspeed]%
+\newscalarquantity{volume}%
+ {\meter\tothethree}%
+\newscalarquantity{volumechargedensity}%
+ {\ampere\usk\second\per\meter\totheinversethree}%
+ [\coulomb\per\meter\tothethree]%
+ [\coulomb\per\meter\tothethree]%
+\newscalarquantity{volumemassdensity}%
+ {\kilogram\usk\meter\totheinversethree}%
+ [\kilogram\per\meter\tothethree]%
+ [\kilogram\per\meter\tothethree]%
+\newscalarquantity{wavelength}% % This is really just a displacement.
+ {\meter}%
+\newvectorquantity{wavenumber}%
+ {\meter\inverse}%
+ [\per\meter]%
+ [\per\meter]%
+\newscalarquantity{work}%
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo}%
+ [\joule]% % also \newton\usk\meter but discouraged
+ [\joule]%
+\newscalarquantity{youngsmodulus}% % This is really just a stress.
+ {\kilogram\usk\meter\inverse\usk\second\totheinversetwo}%
+ [\pascal]%
+ [\newton\per\meter\tothetwo]%
+% \end{macrocode}
+%
+% Define physical constants for introductory physics, again alphabetically
+% for convenience.
+%
+% \begin{macrocode}
+\newphysicalconstant{avogadro}%
+ {\symup{N_A}}%
+ {6\timestento{23}}{6.02214076\timestento{23}}% % exact 2019 value
+ {\mole\inverse}%
+ [\per\mole]%
+ [\per\mole]%
+\newphysicalconstant{biotsavartconstant}% % alias for \mzofp
+ {\symup{\frac{\mu_o}{4\pi}}}%
+ {\tento{-7}}{\tento{-7}}%
+ {\kilogram\usk\meter\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\henry\per\meter]%
+ [\tesla\usk\meter\per\ampere]%
+\newphysicalconstant{bohrradius}%
+ {\symup{a_o}}%
+ {5.3\timestento{-11}}{5.29177210903\timestento{-11}}%
+ {\meter}%
+\newphysicalconstant{boltzmann}%
+ {\symup{k_B}}%
+ {1.4\timestento{-23}}{1.380649\timestento{-23}}% % exact 2019 value
+ {\kilogram\usk\meter\tothetwo\usk\second\totheinversetwo\usk\kelvin\inverse}%
+ [\joule\per\kelvin]%
+ [\joule\per\kelvin]%
+\newphysicalconstant{coulombconstant}% % alias for \oofpez
+ {\symup{\frac{1}{4\pi\epsilon_o}}}%
+ {9\timestento{9}}{8.9875517923\timestento{9}}%
+ {\kilogram\usk\meter\tothethree\usk\ampere\totheinversetwo\usk\second\totheinversefour}%
+ [\meter\per\farad]%
+ [\newton\usk\meter\tothetwo\per\coulomb\tothetwo]%
+\newphysicalconstant{earthmass}%
+ {\symup{M_{Earth}}}%
+ {6.0\timestento{24}}{5.9722\timestento{24}}%
+ {\kilogram}%
+\newphysicalconstant{earthmoondistance}%
+ {\symup{d_{EM}}}%
+ {3.8\timestento{8}}{3.81550\timestento{8}}%
+ {\meter}%
+\newphysicalconstant{earthradius}%
+ {\symup{R_{Earth}}}%
+ {6.4\timestento{6}}{6.3781\timestento{6}}%
+ {\meter}%
+\newphysicalconstant{earthsundistance}%
+ {\symup{d_{ES}}}%
+ {1.5\timestento{11}}{1.496\timestento{11}}%
+ {\meter}%
+\newphysicalconstant{electroncharge}%
+ {\symup{q_e}}%
+ {-\elementarychargeapproximatevalue}{-\elementarychargeprecisevalue}%
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]%
+\newphysicalconstant{electronCharge}%
+ {\symup{Q_e}}%
+ {-\elementarychargeapproximatevalue}{-\elementarychargeprecisevalue}%
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]%
+\newphysicalconstant{electronmass}%
+ {\symup{m_e}}%
+ {9.1\timestento{-31}}{9.1093837015\timestento{-31}}%
+ {\kilogram}%
+\newphysicalconstant{elementarycharge}%
+ {\symup{e}}%
+ {1.6\timestento{-19}}{1.602176634\timestento{-19}}% % exact 2019 value
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]%
+\newphysicalconstant{finestructure}%
+ {\symup{\alpha}}%
+ {\frac{1}{137}}{7.2973525693\timestento{-3}}%
+ {}%
+\newphysicalconstant{hydrogenmass}%
+ {\symup{m_H}}%
+ {1.7\timestento{-27}}{1.6737236\timestento{-27}}%
+ {\kilogram}%
+\newphysicalconstant{moonearthdistance}%
+ {\symup{d_{ME}}}%
+ {3.8\timestento{8}}{3.81550\timestento{8}}%
+ {\meter}%
+\newphysicalconstant{moonmass}%
+ {\symup{M_{Moon}}}%
+ {7.3\timestento{22}}{7.342\timestento{22}}%
+ {\kilogram}%
+\newphysicalconstant{moonradius}%
+ {\symup{R_{Moon}}}%
+ {1.7\timestento{6}}{1.7371\timestento{6}}%
+ {\meter}%
+\newphysicalconstant{mzofp}%
+ {\symup{\frac{\mu_o}{4\pi}}}%
+ {\tento{-7}}{\tento{-7}}%
+ {\kilogram\usk\meter\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\henry\per\meter]%
+ [\tesla\usk\meter\per\ampere]%
+\newphysicalconstant{neutronmass}%
+ {\symup{m_n}}%
+ {1.7\timestento{-27}}{1.67492749804\timestento{-27}}%
+ {\kilogram}%
+\newphysicalconstant{oofpez}%
+ {\symup{\frac{1}{4\pi\epsilon_o}}}%
+ {9\timestento{9}}{8.9875517923\timestento{9}}%
+ {\kilogram\usk\meter\tothethree\usk\ampere\totheinversetwo\usk\second\totheinversefour}%
+ [\meter\per\farad]%
+ [\newton\usk\meter\tothetwo\per\coulomb\tothetwo]%
+\newphysicalconstant{oofpezcs}%
+ {\symup{\frac{1}{4\pi\epsilon_o c^2}}}%
+ {\tento{-7}}{\tento{-7}}%
+ {\kilogram\usk\meter\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\tesla\usk\meter\tothetwo]%
+ [\newton\usk\second\tothetwo\per\coulomb\tothetwo]%
+\newphysicalconstant{planck}%
+ {\symup{h}}%
+ {6.6\timestento{-34}}{6.62607015\timestento{-34}}% % exact 2019 value
+ {\kilogram\usk\meter\tothetwo\usk\second\inverse}%
+ [\joule\usk\second]%
+ [\joule\usk\second]%
+% \end{macrocode}
+%
+% See \url{https://tex.stackexchange.com/a/448565/218142}.
+%
+%
+% \begin{macrocode}
+\newphysicalconstant{planckbar}%
+ {\symup{\lower0.18ex\hbox{\mathchar"AF}\mkern-7mu h}}%
+ {1.1\timestento{-34}}{1.054571817\timestento{-34}}%
+ {\kilogram\usk\meter\tothetwo\usk\second\inverse}%
+ [\joule\usk\second]%
+ [\joule\usk\second]
+\newphysicalconstant{planckc}%
+ {\symup{hc}}%
+ {2.0\timestento{-25}}{1.98644586\timestento{-25}}%
+ {\kilogram\usk\meter\tothethree\usk\second\totheinversetwo}%
+ [\joule\usk\meter]%
+ [\joule\usk\meter]%
+\newphysicalconstant{protoncharge}%
+ {\symup{q_p}}%
+ {+\elementarychargeapproximatevalue}{+\elementarychargeprecisevalue}%
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]%
+\newphysicalconstant{protonCharge}%
+ {\symup{Q_p}}%
+ {+\elementarychargeapproximatevalue}{+\elementarychargeprecisevalue}%
+ {\ampere\usk\second}%
+ [\coulomb]%
+ [\coulomb]%
+\newphysicalconstant{protonmass}%
+ {\symup{m_p}}%
+ {1.7\timestento{-27}}{1.672621898\timestento{-27}}%
+ {\kilogram}%
+\newphysicalconstant{rydberg}%
+ {\symup{R_{\infty}}}%
+ {1.1\timestento{7}}{1.0973731568160\timestento{7}}%
+ {\meter\inverse}%
+\newphysicalconstant{speedoflight}%
+ {\symup{c}}%
+ {3\timestento{8}}{2.99792458\timestento{8}}% % exact value
+ {\meter\usk\second\inverse}%
+ [\meter\per\second]%
+ [\meter\per\second]
+\newphysicalconstant{stefanboltzmann}%
+ {\symup{\sigma}}%
+ {5.7\timestento{-8}}{5.670374\timestento{-8}}%
+ {\kilogram\usk\second\totheinversethree\usk\kelvin\totheinversefour}%
+ [\watt\per\meter\tothetwo\usk\kelvin\tothefour]%
+ [\watt\per\meter\tothetwo\usk\kelvin\tothefour]
+\newphysicalconstant{sunearthdistance}%
+ {\symup{d_{SE}}}%
+ {1.5\timestento{11}}{1.496\timestento{11}}%
+ {\meter}%
+\newphysicalconstant{sunmass}%
+ {\symup{M_{Sun}}}%
+ {2.0\timestento{30}}{1.98855\timestento{30}}%
+ {\kilogram}%
+\newphysicalconstant{sunradius}%
+ {\symup{R_{Sun}}}%
+ {7.0\timestento{8}}{6.957\timestento{8}}%
+ {\meter}%
+\newphysicalconstant{surfacegravfield}%
+ {\symup{g}}%
+ {9.8}{9.807}%
+ {\meter\usk\second\totheinversetwo}%
+ [\newton\per\kilogram]%
+ [\newton\per\kilogram]%
+\newphysicalconstant{universalgrav}%
+ {\symup{G}}%
+ {6.7\timestento{-11}}{6.67430\timestento{-11}}%
+ {\meter\tothethree\usk\kilogram\inverse\usk\second\totheinversetwo}%
+ [\newton\usk\meter\tothetwo\per\kilogram\tothetwo]% % also \joule\usk\meter\per\kilogram\tothetwo
+ [\newton\usk\meter\tothetwo\per\kilogram\tothetwo]%
+\newphysicalconstant{vacuumpermeability}%
+ {\symup{\mu_o}}%
+ {4\pi\timestento{-7}}{4\pi\timestento{-7}}% % as of 2018 no longer 4\pi\timestento{-7}
+ {\kilogram\usk\meter\usk\ampere\totheinversetwo\usk\second\totheinversetwo}%
+ [\henry\per\meter]%
+ [\tesla\usk\meter\per\ampere]%
+\newphysicalconstant{vacuumpermittivity}%
+ {\symup{\epsilon_o}}%
+ {9\timestento{-12}}{8.854187817\timestento{-12}}%
+ {\ampere\tothetwo\usk\second\tothefour\usk\kilogram\inverse\usk\meter\totheinversethree}%
+ [\farad\per\meter]%
+ [\coulomb\tothetwo\per\newton\usk\meter\tothetwo]%
+% \end{macrocode}
+%
+% Diagnostic commands to provide sanity checks on commands that
+% represent physical quantities and constants.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\checkquantity}{ m }%
+{%
+ % Works for both scalar and vector quantities (without vector in the name!).
+ \begin{center}
+ \begin{tabular}{%
+ >{\bfseries\small}
+ p{0.5\linewidth}
+ p{0.1\linewidth}
+ p{0.1\linewidth}
+ p{0.1\linewidth}
}%
- {%
- \clist_set:Nn \l_tmpa_clist { #1 }
- \ensuremath{%
- \sqrt{\left(\clist_use:Nnnn \l_tmpa_clist {\;{ #2 }\right)^2+\left(} {\;
- { #2 }\right)^2+\left(} {\;{ #2 }\right)^2+\left(} \;{ #2 }\right)^2}
- }%
+ name & & & \tabularnewline
+ \ttfamily\footnotesize{\token_to_str:c {#1}} & & & \tabularnewline
+ \end{tabular}~ % This nonbreaking space is important!
+ \begin{tabular}{%
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
}%
- }%
+ base & derived & alternate \tabularnewline
+ \footnotesize{\( \use:c {#1onlybaseunits} \)} &
+ \footnotesize{\( \use:c {#1onlyderivedunits} \)} &
+ \footnotesize{\( \use:c {#1onlyalternateunits} \)}
+ \end{tabular}
+ \end{center}
+}%
+\NewDocumentCommand{\checkconstant}{ m }%
+{%
+ \begin{center}
+ \begin{tabular}{%
+ >{\bfseries\small}
+ p{0.5\linewidth}
+ p{0.1\linewidth}
+ p{0.1\linewidth}
+ p{0.1\linewidth}
+ }%
+ name & & & \tabularnewline
+ \ttfamily\footnotesize{\token_to_str:c {#1}} & & & \tabularnewline
+ \end{tabular}~ % This nonbreaking space is important!
+ \begin{tabular}{%
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
+ }%
+ symbol & approximate & precise \tabularnewline
+ \footnotesize{\( \use:c {#1mathsymbol} \)} &
+ \footnotesize{\( \use:c {#1approximatevalue} \)} &
+ \footnotesize{\( \use:c {#1precisevalue} \)}
+ \end{tabular}~ % This nonbreaking space is important!
+ \begin{tabular}{%
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
+ >{\bfseries\small}p{0.25\linewidth}
+ }%
+ base & derived & alternate \tabularnewline
+ \footnotesize{\( \use:c {#1onlybaseunits} \)} &
+ \footnotesize{\( \use:c {#1onlyderivedunits} \)} &
+ \footnotesize{\( \use:c {#1onlyalternateunits} \)}
+ \end{tabular}
+ \end{center}
+}%
\ExplSyntaxOff
+% \end{macrocode}
+%
+% \refCom{mivector} is a workhorse command.
+% Orginal code provided by |@egreg|.\newline
+% See \url{https://tex.stackexchange.com/a/39054/218142}.
+%
%
-\newcommand*{\zerovect}{\vect{0}}
-\ifthenelse{\boolean{@optboldvectors}}
- {\newcommand*{\vect}[1]{\ensuremath{\boldsymbol{#1}}}}
- {\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\vect}[1]{\ensuremath{\vv{\mathrm{#1}}}}}
- {\newcommand*{\vect}[1]{\ensuremath{\vv{#1}}}}}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\newcommand*{\magvect}[1]{\ensuremath{\absof{\vect{#1}}}}}
- {\newcommand*{\magvect}[1]{\ensuremath{\magof{\vect{#1}}}}}
-\newcommand*{\magsquaredvect}[1]{\ensuremath{\magvect{#1}\squared}}
-\newcommand*{\magnvect}[2]{\ensuremath{\magvect{#1}^{#2}}}
-\newcommand*{\dmagvect}[1]{\ensuremath{\dx{\magvect{#1}}}}
-\newcommand*{\Dmagvect}[1]{\ensuremath{\Delta\!\magvect{#1}}}
-\ifthenelse{\boolean{@optboldvectors}}
- {\newcommand*{\dirvect}[1]{\ensuremath{\widehat{\boldsymbol{#1}}}}}
- {\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\dirvect}[1]{\ensuremath{\widehat{\mathrm{#1}}}}}
- {\newcommand*{\dirvect}[1]{\ensuremath{\widehat{#1}}}}}
-\newcommand*{\direction}[1]{\ensuremath{\mivector{#1}}}
-\newcommand*{\vectordirection}{\direction}
-\newcommand*{\factorvect}[1]{\magvect{#1}\dirvect{#1}}
-\newcommand*{\componentalong}[2]{\ensuremath{\mathrm{comp}_{#1}{#2}}}
-\newcommand*{\expcomponentalong}[2]{\ensuremath{\frac{\vectdotvect{#2}{#1}}
-{\magof{#1}}}}
-\newcommand*{\ucomponentalong}[2]{\ensuremath{\vectdotvect{#2}{#1}}}
-\newcommand*{\projectiononto}[2]{\ensuremath{\mathrm{proj}_{#1}{#2}}}
-\newcommand*{\expprojectiononto}[2]{\ensuremath{%
- \inparens{\frac{\vectdotvect{#2}{#1}}{\magof{#1}}}\frac{#1}{\magof{#1}}}}
-\newcommand*{\uprojectiononto}[2]{\ensuremath{%
- \inparens{\vectdotvect{#2}{#1}}#1}}
-\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\compvect}[2]{\ensuremath{\ssub{\mathrm{#1}}{\(#2\)}}}}
- {\newcommand*{\compvect}[2]{\ensuremath{\ssub{#1}{\(#2\)}}}}
-\newcommand*{\scompsvect}[1]{\ensuremath{\lv%
- \compvect{#1}{x},%
- \compvect{#1}{y},%
- \compvect{#1}{z}\rv}}
-\newcommand*{\scompsdirvect}[1]{\ensuremath{\lv%
- \compvect{\widehat{#1}}{x},%
- \compvect{\widehat{#1}}{y},%
- \compvect{\widehat{#1}}{z}\rv}}
-\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\compdirvect}[2]{\ensuremath{%
- \ssub{\widehat{\mathrm{#1}}}{\(#2\)}}}}
- {\newcommand*{\compdirvect}[2]{\ensuremath{%
- \ssub{\widehat{#1}}{\(#2\)}}}}
-\newcommand*{\magvectscomps}[1]{\ensuremath{\sqrt{%
- \compvect{#1}{x}\squared +%
- \compvect{#1}{y}\squared +%
- \compvect{#1}{z}\squared}}}
-\newcommand*{\dvect}[1]{\ensuremath{\mathrm{d}\vect{#1}}}
-\newcommand*{\Dvect}[1]{\ensuremath{\Delta\vect{#1}}}
-\newcommand*{\dirdvect}[1]{\ensuremath{\widehat{\dvect{#1}}}}
-\newcommand*{\dirDvect}[1]{\ensuremath{\widehat{\Dvect{#1}}}}
-\newcommand*{\ddirvect}[1]{\ensuremath{\mathrm{d}\dirvect{#1}}}
-\newcommand*{\ddirection}{\ddirvect}
-\newcommand*{\Ddirvect}[1]{\ensuremath{\Delta\dirvect{#1}}}
-\newcommand*{\Ddirection}{\Ddirvect}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\newcommand*{\magdvect}[1]{\ensuremath{\absof{\dvect{#1}}}}
- \newcommand*{\magDvect}[1]{\ensuremath{\absof{\Dvect{#1}}}}}
- {\newcommand*{\magdvect}[1]{\ensuremath{\magof{\dvect{#1}}}}
- \newcommand*{\magDvect}[1]{\ensuremath{\magof{\Dvect{#1}}}}}
-\newcommand*{\compdvect}[2]{\ensuremath{\mathrm{d}\compvect{#1}{#2}}}
-\newcommand*{\compDvect}[2]{\ensuremath{\Delta\compvect{#1}{#2}}}
-\newcommand*{\scompsdvect}[1]{\ensuremath{\lv%
- \compdvect{#1}{x},%
- \compdvect{#1}{y},%
- \compdvect{#1}{z}\rv}}
-\newcommand*{\scompsDvect}[1]{\ensuremath{\lv%
- \compDvect{#1}{x},%
- \compDvect{#1}{y},%
- \compDvect{#1}{z}\rv}}
-\newcommand*{\dervect}[2]{\ensuremath{\frac{\dvect{#1}}{\mathrm{d}{#2}}}}
-\newcommand*{\Dervect}[2]{\ensuremath{\frac{\Dvect{#1}}{\Delta{#2}}}}
-\newcommand*{\compdervect}[3]{\ensuremath{\dbyd{\compvect{#1}{#2}}{#3}}}
-\newcommand*{\compDervect}[3]{\ensuremath{\DbyD{\compvect{#1}{#2}}{#3}}}
-\newcommand*{\scompsdervect}[2]{\ensuremath{\lv%
- \compdervect{#1}{x}{#2},%
- \compdervect{#1}{y}{#2},%
- \compdervect{#1}{z}{#2}\rv}}
-\newcommand*{\scompsDervect}[2]{\ensuremath{\lv%
- \compDervect{#1}{x}{#2},%
- \compDervect{#1}{y}{#2},%
- \compDervect{#1}{z}{#2}\rv}}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\newcommand*{\magdervect}[2]{\ensuremath{\absof{\dervect{#1}{#2}}}}
- \newcommand*{\magDervect}[2]{\ensuremath{\absof{\Dervect{#1}{#2}}}}}
- {\newcommand*{\magdervect}[2]{\ensuremath{\magof{\dervect{#1}{#2}}}}
- \newcommand*{\magDervect}[2]{\ensuremath{\magof{\Dervect{#1}{#2}}}}}
-\newcommand*{\dermagvect}[2]{\ensuremath{\dbyd{\magvect{#1}}{#2}}}
-\newcommand*{\Dermagvect}[2]{\ensuremath{\DbyD{\magvect{#1}}{#2}}}
-\newcommand*{\derdirvect}[2]{\ensuremath{\dbyd{\dirvect{#1}}{#2}}}
-\newcommand*{\derdirection}{\derdirvect}
-\newcommand*{\Derdirvect}[2]{\ensuremath{\DbyD{\dirvect{#1}}{#2}}}
-\newcommand*{\Derdirection}{\Derdirvect}
-\ifthenelse{\boolean{@optboldvectors}}
- {\newcommand*{\vectsub}[2]{\ensuremath{\boldsymbol{#1}_{\text{\tiny{}#2}}}}}
- {\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\vectsub}[2]{\ensuremath{\vv{\mathrm{#1}}_{\text{\tiny{#2}}}}}}
- {\newcommand*{\vectsub}[2]{\ensuremath{\vv{#1}_{\text{\tiny{#2}}}}}}}
-\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\compvectsub}[3]{\ensuremath{\ssub{\mathrm{#1}}{#2,\(#3\)}}}}
- {\newcommand*{\compvectsub}[3]{\ensuremath{\ssub{#1}{#2,\(#3\)}}}}
-\newcommand*{\scompsvectsub}[2]{\ensuremath{\lv%
- \compvectsub{#1}{#2}{x},%
- \compvectsub{#1}{#2}{y},%
- \compvectsub{#1}{#2}{z}\rv}}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\newcommand*{\magvectsub}[2]{\ensuremath{\absof{\vectsub{#1}{#2}}}}}
- {\newcommand*{\magvectsub}[2]{\ensuremath{\magof{\vectsub{#1}{#2}}}}}
-\newcommand*{\magsquaredvectsub}[2]{\ensuremath{\magvectsub{#1}{#2}\squared}}
-\newcommand*{\magnvectsub}[3]{\ensuremath{\magvectsub{#1}{#2}^{#3}}}
-\newcommand*{\magvectsubscomps}[2]{\ensuremath{\sqrt{%
- \compvectsub{#1}{#2}{x}\squared +%
- \compvectsub{#1}{#2}{y}\squared +%
- \compvectsub{#1}{#2}{z}\squared}}}
-\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\dirvectsub}[2]{\ensuremath{\ssub{\widehat{\mathrm{#1}}}{#2}}}}
- {\newcommand*{\dirvectsub}[2]{\ensuremath{\ssub{\widehat{#1}}{#2}}}}
-\newcommand*{\dvectsub}[2]{\ensuremath{\mathrm{d}\vectsub{#1}{#2}}}
-\newcommand*{\Dvectsub}[2]{\ensuremath{\Delta\vectsub{#1}{#2}}}
-\newcommand*{\compdvectsub}[3]{\ensuremath{\mathrm{d}\compvectsub{#1}{#2}{#3}}}
-\newcommand*{\compDvectsub}[3]{\ensuremath{\Delta\compvectsub{#1}{#2}{#3}}}
-\newcommand*{\scompsdvectsub}[2]{\ensuremath{\lv%
- \compdvectsub{#1}{#2}{x},%
- \compdvectsub{#1}{#2}{y},%
- \compdvectsub{#1}{#2}{z}\rv}}
-\newcommand*{\scompsDvectsub}[2]{\ensuremath{\lv%
- \compDvectsub{#1}{#2}{x},%
- \compDvectsub{#1}{#2}{y},%
- \compDvectsub{#1}{#2}{z}\rv}}
-\newcommand*{\dermagvectsub}[3]{\ensuremath{\dbyd{\magvectsub{#1}{#2}}{#3}}}
-\newcommand*{\Dermagvectsub}[3]{\ensuremath{\DbyD{\magvectsub{#1}{#2}}{#3}}}
-\newcommand*{\dervectsub}[3]{\ensuremath{\dbyd{\vectsub{#1}{#2}}{#3}}}
-\newcommand*{\Dervectsub}[3]{\ensuremath{\DbyD{\vectsub{#1}{#2}}{#3}}}
-\ifthenelse{\boolean{@optsinglemagbars}}
- {\newcommand*{\magdervectsub}[3]{\ensuremath{\absof{\dervectsub{#1}{#2}{#3}}}}
- \newcommand*{\magDervectsub}[3]{\ensuremath{\absof{\Dervectsub{#1}{#2}{#3}}}}}
- {\newcommand*{\magdervectsub}[3]{\ensuremath{\magof{\dervectsub{#1}{#2}{#3}}}}
- \newcommand*{\magDervectsub}[3]{\ensuremath{\magof{\Dervectsub{#1}{#2}{#3}}}}}
-\newcommand*{\compdervectsub}[4]{\ensuremath{\dbyd{\compvectsub{#1}{#2}{#3}}{#4}}}
-\newcommand*{\compDervectsub}[4]{\ensuremath{\DbyD{\compvectsub{#1}{#2}{#3}}{#4}}}
-\newcommand*{\scompsdervectsub}[3]{\ensuremath{\lv%
- \compdervectsub{#1}{#2}{x}{#3},%
- \compdervectsub{#1}{#2}{y}{#3},%
- \compdervectsub{#1}{#2}{z}{#3}\rv}}
-\newcommand*{\scompsDervectsub}[3]{\ensuremath{\lv%
- \compDervectsub{#1}{#2}{x}{#3},%
- \compDervectsub{#1}{#2}{y}{#3},%
- \compDervectsub{#1}{#2}{z}{#3}\rv}}
-\newcommand*{\vectdotvect}[2]{\ensuremath{{#1}\cdot{#2}}}
-\newcommand*{\vectDotvect}[2]{\ensuremath{{#1}\bullet{#2}}}
-\newcommand*{\vectdotsvect}[2]{\ensuremath{\scompsvect{#1}\cdot\scompsvect{#2}}}
-\newcommand*{\vectDotsvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsvect{#2}}}
-\newcommand*{\vectdotevect}[2]{\ensuremath{%
- \compvect{#1}{x}\compvect{#2}{x}+%
- \compvect{#1}{y}\compvect{#2}{y}+%
- \compvect{#1}{z}\compvect{#2}{z}}}
-\newcommand*{\vectdotsdvect}[2]{\ensuremath{\scompsvect{#1}\cdot\scompsdvect{#2}}}
-\newcommand*{\vectDotsdvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsdvect{#2}}}
-\newcommand*{\vectdotsDvect}[2]{\ensuremath{\scompsvect{#1}\cdot\scompsDvect{#2}}}
-\newcommand*{\vectDotsDvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsDvect{#2}}}
-\newcommand*{\vectdotedvect}[2]{\ensuremath{%
- \compvect{#1}{x}\compdvect{#2}{x}+%
- \compvect{#1}{y}\compdvect{#2}{y}+%
- \compvect{#1}{z}\compdvect{#2}{z}}}
-\newcommand*{\vectdoteDvect}[2]{\ensuremath{%
- \compvect{#1}{x}\compDvect{#2}{x}+%
- \compvect{#1}{y}\compDvect{#2}{y}+%
- \compvect{#1}{z}\compDvect{#2}{z}}}
-\newcommand*{\vectsubdotsvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\cdot\scompsvectsub{#3}{#4}}}
-\newcommand*{\vectsubDotsvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\bullet\scompsvectsub{#3}{#4}}}
-\newcommand*{\vectsubdotevectsub}[4]{\ensuremath{%
- \compvectsub{#1}{#2}{x}\compvectsub{#3}{#4}{x}+%
- \compvectsub{#1}{#2}{y}\compvectsub{#3}{#4}{y}+%
- \compvectsub{#1}{#2}{z}\compvectsub{#3}{#4}{z}}}
-\newcommand*{\vectsubdotsdvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\cdot\scompsdvectsub{#3}{#4}}}
-\newcommand*{\vectsubDotsdvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\bullet\scompsdvectsub{#3}{#4}}}
-\newcommand*{\vectsubdotsDvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\cdot\scompsDvectsub{#3}{#4}}}
-\newcommand*{\vectsubDotsDvectsub}[4]{\ensuremath{%
- \scompsvectsub{#1}{#2}\bullet\scompsDvectsub{#3}{#4}}}
-\newcommand*{\vectsubdotedvectsub}[4]{\ensuremath{%
- \compvectsub{#1}{#2}{x}\compdvectsub{#3}{#4}{x}+%
- \compvectsub{#1}{#2}{y}\compdvectsub{#3}{#4}{y}+%
- \compvectsub{#1}{#2}{z}\compdvectsub{#3}{#4}{z}}}
-\newcommand*{\vectsubdoteDvectsub}[4]{\ensuremath{%
- \compvectsub{#1}{#2}{x}\compDvectsub{#3}{#4}{x}+%
- \compvectsub{#1}{#2}{y}\compDvectsub{#3}{#4}{y}+%
- \compvectsub{#1}{#2}{z}\compDvectsub{#3}{#4}{z}}}
-\newcommand*{\vectsubdotsdvect}[3]{\ensuremath{%
- \scompsvectsub{#1}{#2}\cdot\scompsdvect{#3}}}
-\newcommand*{\vectsubDotsdvect}[3]{\ensuremath{%
- \scompsvectsub{#1}{#2}\bullet\scompsdvect{#3}}}
-\newcommand*{\vectsubdotsDvect}[3]{\ensuremath{%
- \scompsvectsub{#1}{#2}\cdot\scompsDvect{#3}}}
-\newcommand*{\vectsubDotsDvect}[3]{\ensuremath{%
- \scompsvectsub{#1}{#2}\bullet\scompsDvect{#3}}}
-\newcommand*{\vectsubdotedvect}[3]{\ensuremath{%
- \compvectsub{#1}{#2}{x}\compdvect{#3}{x}+%
- \compvectsub{#1}{#2}{y}\compdvect{#3}{y}+%
- \compvectsub{#1}{#2}{z}\compdvect{#3}{z}}}
-\newcommand*{\vectsubdoteDvect}[3]{\ensuremath{%
- \compvectsub{#1}{#2}{x}\compDvect{#3}{x}+%
- \compvectsub{#1}{#2}{y}\compDvect{#3}{y}+%
- \compvectsub{#1}{#2}{z}\compDvect{#3}{z}}}
-\newcommand*{\dervectdotsvect}[3]{\ensuremath{%
- \scompsdervect{#1}{#2}\cdot\scompsvect{#3}}}
-\newcommand*{\dervectDotsvect}[3]{\ensuremath{%
- \scompsdervect{#1}{#2}\bullet\scompsvect{#3}}}
-\newcommand*{\Dervectdotsvect}[3]{\ensuremath{%
- \scompsDervect{#1}{#2}\cdot\scompsvect{#3}}}
-\newcommand*{\DervectDotsvect}[3]{\ensuremath{%
- \scompsDervect{#1}{#2}\bullet\scompsvect{#3}}}
-\newcommand*{\dervectdotevect}[3]{\ensuremath{%
- \compdervect{#1}{x}{#2}\compvect{#3}{x}+%
- \compdervect{#1}{y}{#2}\compvect{#3}{y}+%
- \compdervect{#1}{z}{#2}\compvect{#3}{z}}}
-\newcommand*{\Dervectdotevect}[3]{\ensuremath{%
- \compDervect{#1}{x}{#2}\compvect{#3}{x}+%
- \compDervect{#1}{y}{#2}\compvect{#3}{y}+%
- \compDervect{#1}{z}{#2}\compvect{#3}{z}}}
-\newcommand*{\vectdotsdervect}[3]{\ensuremath{%
- \scompsvect{#1}\cdot\scompsdervect{#2}{#3}}}
-\newcommand*{\vectDotsdervect}[3]{\ensuremath{%
- \scompsvect{#1}\bullet\scompsdervect{#2}{#3}}}
-\newcommand*{\vectdotsDervect}[3]{\ensuremath{%
- \scompsvect{#1}\cdot\scompsDervect{#2}{#3}}}
-\newcommand*{\vectDotsDervect}[3]{\ensuremath{%
- \scompsvect{#1}\bullet\scompsDervect{#2}{#3}}}
-\newcommand*{\vectdotedervect}[3]{\ensuremath{%
- \compvect{#1}{x}\compdervect{#2}{x}{#3}+%
- \compvect{#1}{y}\compdervect{#2}{y}{#3}+%
- \compvect{#1}{z}\compdervect{#2}{z}{#3}}}
-\newcommand*{\vectdoteDervect}[3]{\ensuremath{%
- \compvect{#1}{x}\compDervect{#2}{x}{#3}+%
- \compvect{#1}{y}\compDervect{#2}{y}{#3}+%
- \compvect{#1}{z}\compDervect{#2}{z}{#3}}}
-\newcommand*{\dervectdotsdvect}[3]{\ensuremath{%
- \scompsdervect{#1}{#2}\cdot\scompsdvect{#3}}}
-\newcommand*{\dervectDotsdvect}[3]{\ensuremath{%
- \scompsdervect{#1}{#2}\bullet\scompsdvect{#3}}}
-\newcommand*{\DervectdotsDvect}[3]{\ensuremath{%
- \scompsDervect{#1}{#2}\cdot\scompsDvect{#3}}}
-\newcommand*{\DervectDotsDvect}[3]{\ensuremath{%
- \scompsDervect{#1}{#2}\bullet\scompsDvect{#3}}}
-\newcommand*{\dervectdotedvect}[3]{\ensuremath{%
- \compdervect{#1}{x}{#2}\compdvect{#3}{x}+%
- \compdervect{#1}{y}{#2}\compdvect{#3}{y}+%
- \compdervect{#1}{z}{#2}\compdvect{#3}{z}}}
-\newcommand*{\DervectdoteDvect}[3]{\ensuremath{%
- \compDervect{#1}{x}{#2}\compDvect{#3}{x}+%
- \compDervect{#1}{y}{#2}\compDvect{#3}{y}+%
- \compDervect{#1}{z}{#2}\compDvect{#3}{z}}}
-\newcommand*{\vectcrossvect}[2]{\ensuremath{%
- {#1}\boldsymbol{\times}{#2}}}
-\newcommand*{\ltriplecross}[3]{\ensuremath{%
- \inparens{{#1}\boldsymbol{\times}{#2}}\boldsymbol{\times}{#3}}}
-\newcommand*{\rtriplecross}[3]{\ensuremath{{#1}\boldsymbol{\times}%
- \inparens{{#2}\boldsymbol{\times}{#3}}}}
-\newcommand*{\ltriplescalar}[3]{\ensuremath{%
- {#1}\boldsymbol{\times}{#2}\cdot{#3}}}
-\newcommand*{\ltripleScalar}[3]{\ensuremath{%
- {#1}\boldsymbol{\times}{#2}\bullet{#3}}}
-\newcommand*{\rtriplescalar}[3]{\ensuremath{%
- {#1}\cdot{#2}\boldsymbol{\times}{#3}}}
-\newcommand*{\rtripleScalar}[3]{\ensuremath{%
- {#1}\bullet{#2}\boldsymbol{\times}{#3}}}
-\newcommand*{\ezero}{\ensuremath{\boldsymbol{e}_0}}
-\newcommand*{\eone}{\ensuremath{\boldsymbol{e}_1}}
-\newcommand*{\etwo}{\ensuremath{\boldsymbol{e}_2}}
-\newcommand*{\ethree}{\ensuremath{\boldsymbol{e}_3}}
-\newcommand*{\efour}{\ensuremath{\boldsymbol{e}_4}}
-\newcommand*{\ek}[1]{\ensuremath{\boldsymbol{e}_{#1}}}
-\newcommand*{\e}{\ek}
-\newcommand*{\uezero}{\ensuremath{\widehat{\boldsymbol{e}}_0}}
-\newcommand*{\ueone}{\ensuremath{\widehat{\boldsymbol{e}}_1}}
-\newcommand*{\uetwo}{\ensuremath{\widehat{\boldsymbol{e}}_2}}
-\newcommand*{\uethree}{\ensuremath{\widehat{\boldsymbol{e}}_3}}
-\newcommand*{\uefour}{\ensuremath{\widehat{\boldsymbol{e}}_4}}
-\newcommand*{\uek}[1]{\ensuremath{\widehat{\boldsymbol{e}}_{#1}}}
-\newcommand*{\ue}{\uek}
-\newcommand*{\ezerozero}{\ek{00}}
-\newcommand*{\ezeroone}{\ek{01}}
-\newcommand*{\ezerotwo}{\ek{02}}
-\newcommand*{\ezerothree}{\ek{03}}
-\newcommand*{\ezerofour}{\ek{04}}
-\newcommand*{\eoneone}{\ek{11}}
-\newcommand*{\eonetwo}{\ek{12}}
-\newcommand*{\eonethree}{\ek{13}}
-\newcommand*{\eonefour}{\ek{14}}
-\newcommand*{\etwoone}{\ek{21}}
-\newcommand*{\etwotwo}{\ek{22}}
-\newcommand*{\etwothree}{\ek{23}}
-\newcommand*{\etwofour}{\ek{24}}
-\newcommand*{\ethreeone}{\ek{31}}
-\newcommand*{\ethreetwo}{\ek{32}}
-\newcommand*{\ethreethree}{\ek{33}}
-\newcommand*{\ethreefour}{\ek{34}}
-\newcommand*{\efourone}{\ek{41}}
-\newcommand*{\efourtwo}{\ek{42}}
-\newcommand*{\efourthree}{\ek{43}}
-\newcommand*{\efourfour}{\ek{44}}
-\newcommand*{\euzero}{\ensuremath{\boldsymbol{e}^0}}
-\newcommand*{\euone}{\ensuremath{\boldsymbol{e}^1}}
-\newcommand*{\eutwo}{\ensuremath{\boldsymbol{e}^2}}
-\newcommand*{\euthree}{\ensuremath{\boldsymbol{e}^3}}
-\newcommand*{\eufour}{\ensuremath{\boldsymbol{e}^4}}
-\newcommand*{\euk}[1]{\ensuremath{\boldsymbol{e}^{#1}}}
-\newcommand*{\eu}{\euk}
-\newcommand*{\ueuzero}{\ensuremath{\widehat{\boldsymbol{e}}^0}}
-\newcommand*{\ueuone}{\ensuremath{\widehat{\boldsymbol{e}}^1}}
-\newcommand*{\ueutwo}{\ensuremath{\widehat{\boldsymbol{e}}^2}}
-\newcommand*{\ueuthree}{\ensuremath{\widehat{\boldsymbol{e}}^3}}
-\newcommand*{\ueufour}{\ensuremath{\widehat{\boldsymbol{e}}^4}}
-\newcommand*{\ueuk}[1]{\ensuremath{\widehat{\boldsymbol{e}}^{#1}}}
-\newcommand*{\ueu}{\ueuk}
-\newcommand*{\euzerozero}{\euk{00}}
-\newcommand*{\euzeroone}{\euk{01}}
-\newcommand*{\euzerotwo}{\euk{02}}
-\newcommand*{\euzerothree}{\euk{03}}
-\newcommand*{\euzerofour}{\euk{04}}
-\newcommand*{\euoneone}{\euk{11}}
-\newcommand*{\euonetwo}{\euk{12}}
-\newcommand*{\euonethree}{\euk{13}}
-\newcommand*{\euonefour}{\euk{14}}
-\newcommand*{\eutwoone}{\euk{21}}
-\newcommand*{\eutwotwo}{\euk{22}}
-\newcommand*{\eutwothree}{\euk{23}}
-\newcommand*{\eutwofour}{\euk{24}}
-\newcommand*{\euthreeone}{\euk{31}}
-\newcommand*{\euthreetwo}{\euk{32}}
-\newcommand*{\euthreethree}{\euk{33}}
-\newcommand*{\euthreefour}{\euk{34}}
-\newcommand*{\eufourone}{\euk{41}}
-\newcommand*{\eufourtwo}{\euk{42}}
-\newcommand*{\eufourthree}{\euk{43}}
-\newcommand*{\eufourfour}{\euk{44}}
-\newcommand*{\gzero}{\ensuremath{\boldsymbol{\gamma}_0}}
-\newcommand*{\gone}{\ensuremath{\boldsymbol{\gamma}_1}}
-\newcommand*{\gtwo}{\ensuremath{\boldsymbol{\gamma}_2}}
-\newcommand*{\gthree}{\ensuremath{\boldsymbol{\gamma}_3}}
-\newcommand*{\gfour}{\ensuremath{\boldsymbol{\gamma}_4}}
-\newcommand*{\gk}[1]{\ensuremath{\boldsymbol{\gamma}_{#1}}}
-\newcommand*{\g}{\gk}
-\newcommand*{\gzerozero}{\gk{00}}
-\newcommand*{\gzeroone}{\gk{01}}
-\newcommand*{\gzerotwo}{\gk{02}}
-\newcommand*{\gzerothree}{\gk{03}}
-\newcommand*{\gzerofour}{\gk{04}}
-\newcommand*{\goneone}{\gk{11}}
-\newcommand*{\gonetwo}{\gk{12}}
-\newcommand*{\gonethree}{\gk{13}}
-\newcommand*{\gonefour}{\gk{14}}
-\newcommand*{\gtwoone}{\gk{21}}
-\newcommand*{\gtwotwo}{\gk{22}}
-\newcommand*{\gtwothree}{\gk{23}}
-\newcommand*{\gtwofour}{\gk{24}}
-\newcommand*{\gthreeone}{\gk{31}}
-\newcommand*{\gthreetwo}{\gk{32}}
-\newcommand*{\gthreethree}{\gk{33}}
-\newcommand*{\gthreefour}{\gk{34}}
-\newcommand*{\gfourone}{\gk{41}}
-\newcommand*{\gfourtwo}{\gk{42}}
-\newcommand*{\gfourthree}{\gk{43}}
-\newcommand*{\gfourfour}{\gk{44}}
-\newcommand*{\guzero}{\ensuremath{\boldsymbol{\gamma}^0}}
-\newcommand*{\guone}{\ensuremath{\boldsymbol{\gamma}^1}}
-\newcommand*{\gutwo}{\ensuremath{\boldsymbol{\gamma}^2}}
-\newcommand*{\guthree}{\ensuremath{\boldsymbol{\gamma}^3}}
-\newcommand*{\gufour}{\ensuremath{\boldsymbol{\gamma}^4}}
-\newcommand*{\guk}[1]{\ensuremath{\boldsymbol{\gamma}^{#1}}}
-\newcommand*{\gu}{\guk}
-\newcommand*{\guzerozero}{\guk{00}}
-\newcommand*{\guzeroone}{\guk{01}}
-\newcommand*{\guzerotwo}{\guk{02}}
-\newcommand*{\guzerothree}{\guk{03}}
-\newcommand*{\guzerofour}{\guk{04}}
-\newcommand*{\guoneone}{\guk{11}}
-\newcommand*{\guonetwo}{\guk{12}}
-\newcommand*{\guonethree}{\guk{13}}
-\newcommand*{\guonefour}{\guk{14}}
-\newcommand*{\gutwoone}{\guk{21}}
-\newcommand*{\gutwotwo}{\guk{22}}
-\newcommand*{\gutwothree}{\guk{23}}
-\newcommand*{\gutwofour}{\guk{24}}
-\newcommand*{\guthreeone}{\guk{31}}
-\newcommand*{\guthreetwo}{\guk{32}}
-\newcommand*{\guthreethree}{\guk{33}}
-\newcommand*{\guthreefour}{\guk{34}}
-\newcommand*{\gufourone}{\guk{41}}
-\newcommand*{\gufourtwo}{\guk{42}}
-\newcommand*{\gufourthree}{\guk{43}}
-\newcommand*{\gufourfour}{\guk{44}}
-\ExplSyntaxOn % Vectors formated as in M\&I, written in LaTeX3
+% \begin{macrocode}
+\ExplSyntaxOn
\NewDocumentCommand{\mivector}{ O{,} m o }%
{%
- \mi_vector:nn { #1 } { #2 }
- \IfValueT{#3}{\;{#3}}
+ \mi_vector:nn { #1 } { #2 }%
+ \IfValueT{#3}{\,{#3}}%
}%
\seq_new:N \l__mi_list_seq
\cs_new_protected:Npn \mi_vector:nn #1 #2
@@ -10823,1355 +2882,8 @@ Command for QED symbol.
}%
}%
\ExplSyntaxOff
-\ExplSyntaxOn % Column and row vectors, written in LaTeX3
-\seq_new:N \l__vector_arg_seq
-\cs_new_protected:Npn \vector_main:nnnn #1 #2 #3 #4
- {%
- \seq_set_split:Nnn \l__vector_arg_seq { #3 } { #4 }
- \begin{#1matrix}
- \seq_use:Nnnn \l__vector_arg_seq { #2 } { #2 } { #2 }
- \end{#1matrix}
- }%
-\NewDocumentCommand{\rowvector}{ O{,} m }
- {%
- \ensuremath{
- \vector_main:nnnn { p } { \,\, } { #1 } { #2 }
- }%
- }%
-\NewDocumentCommand{\colvector}{ O{,} m }
- {%
- \ensuremath{
- \vector_main:nnnn { p } { \\ } { #1 } { #2 }
- }%
- }%
-\ExplSyntaxOff
-\newcommandx{\scompscvect}[2][1,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {%
- \colvector{\msub{#2}{1},\msub{#2}{2},\msub{#2}{3}}%
- }%
- {%
- \colvector{\msub{#2}{0},\msub{#2}{1},\msub{#2}{2},\msub{#2}{3}}%
- }%
-}%
-\newcommandx{\scompsCvect}[2][1,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {%
- \colvector{\msup{#2}{1},\msup{#2}{2},\msup{#2}{3}}%
- }%
- {%
- \colvector{\msup{#2}{0},\msup{#2}{1},\msup{#2}{2},\msup{#2}{3}}%
- }%
-}%
-\newcommandx{\scompsrvect}[2][1,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {%
- \rowvector[,]{\msub{#2}{1},\msub{#2}{2},\msub{#2}{3}}%
- }%
- {%
- \rowvector[,]{\msub{#2}{0},\msub{#2}{1},\msub{#2}{2},\msub{#2}{3}}%
- }%
-}%
-\newcommandx{\scompsRvect}[2][1,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {%
- \rowvector[,]{\msup{#2}{1},\msup{#2}{2},\msup{#2}{3}}%
- }%
- {%
- \rowvector[,]{\msup{#2}{0},\msup{#2}{1},\msup{#2}{2},\msup{#2}{3}}%
- }%
-}%
-\newcommand*{\anglebetween}[2]{\ensuremath{\theta_{\vect{#1},\vect{#2}}}}
-\newcommand*{\bra}[1]{\ensuremath{\left\langle{#1}\right\lvert}}
-\newcommand*{\ket}[1]{\ensuremath{\left\lvert{#1}\right\rangle}}
-\newcommand*{\bracket}[2]{\ensuremath{\left\langle{#1}\!\!\right.%
- \left\lvert{#2}\right\rangle}}
-\newphysicsconstant{oofpez}%
- {\ensuremath{\frac{1}{\phantom{_o}4\pi\epsilon_0}}}%
- {\mi@p{9}{8.9875517873681764}\timestento{9}}%
- {\m\cubed\usk\kg\usk\reciprocalquartic\s\usk\A\reciprocalsquared}%
- [\newton\usk\m\squared\per\coulomb\squared]%
- [\m\per\farad]
-\newphysicsconstant{oofpezcs}%
- {\ensuremath{\frac{1}{\phantom{_o}4\pi\epsilon_0 c^2\phantom{_o}}}}%
- {\tento{-7}}%
- {\m\usk\kg\usk\s\reciprocalsquared\usk\A\reciprocalsquared}%
- [\N\usk\s\squared\per\C\squared]%
- [\T\usk\m\squared]
-\newphysicsconstant{vacuumpermittivity}%
- {\ensuremath{\epsilon_0}}%
- {\mi@p{9.0}{8.854187817}\timestento{-12}}%
- {\m\reciprocalcubed\usk\reciprocal\kg\usk\s\quarted\usk\A\squared}%
- [\C\squared\per\N\usk\m\squared]%
- [\F\per\m]
-\newphysicsconstant{mzofp}%
- {\ensuremath{\frac{\phantom{_oo}\mu_0\phantom{_o}}{4\pi}}}%
- {\tento{-7}}%
- {\m\usk\kg\usk\s\reciprocalsquared\usk\A\reciprocalsquared}%
- [\tesla\usk\m\per\A]%
- [\henry\per\m]
-\newphysicsconstant{vacuumpermeability}%
- {\ensuremath{\mu_0}}%
- {4\pi\timestento{-7}}%
- {\m\usk\kg\usk\s\reciprocalsquared\usk\A\reciprocalsquared}%
- [\T\usk\m\per\A]%
- [\henry\per\m]
-\newphysicsconstant{boltzmann}%
- {\ensuremath{k_B}}%
- {\mi@p{1.4}{1.38064852}\timestento{-23}}%
- {\m\squared\usk\kg\usk\reciprocalsquare\s\usk\reciprocal\K}%
- [\J\per\K]%
- [\J\per\K]
-\newphysicsconstant{boltzmannineV}%
- {\ensuremath{k_B}}%
- {\mi@p{8.6}{8.6173303}\timestento{-5}}%
- {\eV\usk\reciprocal\K}%
- [\eV\per\K]%
- [\eV\per\K]
-\newphysicsconstant{stefanboltzmann}%
- {\ensuremath{\sigma}}%
- {\mi@p{5.7}{5.670367}\timestento{-8}}%
- {\kg\usk\s\reciprocalcubed\usk\K\reciprocalquarted}%
- [\W\per\m\squared\usk\K\quarted]%
- [\W\per\m\squared\usk\K\quarted]
-\newphysicsconstant{planck}%
- {\ensuremath{h}}%
- {\mi@p{6.6}{6.626070040}\timestento{-34}}%
- {\m\squared\usk\kg\usk\reciprocal\s}%
- [\J\usk\s]%
- [\J\usk\s]
-\newphysicsconstant{planckineV}%
- {\ensuremath{h}}%
- {\mi@p{4.1}{4.135667662}\timestento{-15}}%
- {\eV\usk\s}%
- [\eV\usk\s]%
- [\eV\usk\s]
-\newphysicsconstant{planckbar}%
- {\ensuremath{\hslash}}%
- {\mi@p{1.1}{1.054571800}\timestento{-34}}%
- {\m\squared\usk\kg\usk\reciprocal\s}%
- [\J\usk\s]%
- [\J\usk\s]
-\newphysicsconstant{planckbarineV}%
- {\ensuremath{\hslash}}%
- {\mi@p{6.6}{6.582119514}\timestento{-16}}%
- {\eV\usk\s}%
- [\eV\usk\s]%
- [\eV\usk\s]
-\newphysicsconstant{planckc}%
- {\ensuremath{hc}}%
- {\mi@p{2.0}{1.98644568}\timestento{-25}}%
- {\m\cubed\usk\kg\usk\reciprocalsquare\s}%
- [\J\usk\m]%
- [\J\usk\m]
-\newphysicsconstant{planckcineV}%
- {\ensuremath{hc}}%
- {\mi@p{1240}{1.23984193}\timestento{3}}%
- {\eV\usk\text{n}\m}%
- [\eV\usk\text{n}\m]%
- [\eV\usk\text{n}\m]
-\newphysicsconstant{rydberg}%
- {\ensuremath{\msub{R}{\infty}}}%
- {\mi@p{1.1}{1.0973731568508}\timestento{7}}%
- {\reciprocal\m}%
- [\reciprocal\m]%
- [\reciprocal\m]
-\newphysicsconstant{bohrradius}%
- {\ensuremath{a_0}}%
- {\mi@p{5.3}{5.2917721067}\timestento{-11}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{finestructure}%
- {\ensuremath{\alpha}}%
- {\mi@p{\frac{1}{137}}{7.2973525664\timestento{-3}}}%
- {}%
- []%
- []
-\newphysicsconstant{avogadro}%
- {\ensuremath{N_A}}%
- {\mi@p{6.0}{6.022140857}\timestento{23}}%
- {\reciprocal\mol}%
- [\reciprocal\mol]%
- [\reciprocal\mol]
-\newphysicsconstant{universalgrav}%
- {\ensuremath{G}}%
- {\mi@p{6.7}{6.67408}\timestento{-11}}%
- {\m\cubed\usk\reciprocal\kg\usk\s\reciprocalsquared}%
- [\N\usk\m\squared\per\kg\squared]%
- [\J\usk\m\per\kg\squared]
-\newphysicsconstant{surfacegravfield}%
- {\ensuremath{g}}%
- {\mi@p{9.8}{9.807}}%
- {\m\usk\s\reciprocalsquared}%
- [\N\per\kg]%
- [\N\per\kg]
-\newphysicsconstant{clight}%
- {\ensuremath{c}}%
- {\mi@p{3}{2.99792458}\timestento{8}}%
- {\m\usk\reciprocal\s}%
- [\m\per\s]%
- [\m\per\s]
-\newphysicsconstant{clightinfeet}%
- {\ensuremath{c}}%
- {\mi@p{1}{0.983571}}%
- {\text{ft}\usk\reciprocal{\text{n}\s}}%
- [\text{ft}\per\text{n}\s]%
- [\text{ft}\per\mathrm{n}\s]
-\newphysicsconstant{Ratom}%
- {\ensuremath{r_{\text{atom}}}}%
- {\tento{-10}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{Mproton}%
- {\ensuremath{m_p}}%
- {\mi@p{1.7}{1.672621898}\timestento{-27}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{Mneutron}%
- {\ensuremath{m_n}}%
- {\mi@p{1.7}{1.674927471}\timestento{-27}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{Mhydrogen}%
- {\ensuremath{m_H}}%
- {\mi@p{1.7}{1.6737236}\timestento{-27}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{Melectron}%
- {\ensuremath{m_e}}%
- {\mi@p{9.1}{9.10938356}\timestento{-31}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{echarge}%
- {\ensuremath{e}}%
- {\mi@p{1.6}{1.6021766208}\timestento{-19}}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsconstant{Qelectron}%
- {\ensuremath{Q_e}}%
- {-\echargevalue}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsconstant{qelectron}%
- {\ensuremath{q_e}}%
- {-\echargevalue}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsconstant{Qproton}%
- {\ensuremath{Q_p}}%
- {+\echargevalue}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsconstant{qproton}%
- {\ensuremath{q_p}}%
- {+\echargevalue}%
- {\A\usk\s}%
- [\C]%
- [\C]
-\newphysicsconstant{MEarth}%
- {\ensuremath{M_{\text{Earth}}}}%
- {\mi@p{6.0}{5.97237}\timestento{24}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{MMoon}%
- {\ensuremath{M_{\text{Moon}}}}%
- {\mi@p{7.3}{7.342}\timestento{22}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{MSun}%
- {\ensuremath{M_{\text{Sun}}}}%
- {\mi@p{2.0}{1.98855}\timestento{30}}%
- {\kg}%
- [\kg]%
- [\kg]
-\newphysicsconstant{REarth}%
- {\ensuremath{R_{\text{Earth}}}}%
- {\mi@p{6.4}{6.371}\timestento{6}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{RMoon}%
- {\ensuremath{R_{\text{Moon}}}}%
- {\mi@p{1.7}{1.7371}\timestento{6}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{RSun}%
- {\ensuremath{R_{\text{Sun}}}}%
- {\mi@p{7.0}{6.957}\timestento{8}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{ESdist}%
- {\magvectsub{r}{ES}}%
- {\mi@p{1.5}{1.496}\timestento{11}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{SEdist}%
- {\magvectsub{r}{SE}}%
- {\mi@p{1.5}{1.496}\timestento{11}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{EMdist}%
- {\magvectsub{r}{EM}}%
- {\mi@p{3.8}{3.81550}\timestento{8}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{MEdist}%
- {\magvectsub{r}{ME}}%
- {\mi@p{3.8}{3.81550}\timestento{8}}%
- {\m}%
- [\m]%
- [\m]
-\newphysicsconstant{LSun}%
- {\ensuremath{L_{\text{Sun}}}}%
- {\mi@p{3.8}{3.8460}\timestento{26}}%
- {\m\squared\usk\kg\usk\s\reciprocalcubed}%
- [\W]
- [\J\per\s]
-\newphysicsconstant{TSun}%
- {\ensuremath{T_{\text{Sun}}}}%
- {\mi@p{5800}{5778}}%
- {\K}%
- [\K]%
- [\K]
-\newphysicsconstant{MagSun}%
- {\ensuremath{M_{\text{Sun}}}}%
- {+4.83}%
- {}%
- []%
- []
-\newphysicsconstant{magSun}%
- {\ensuremath{m_{\text{Sun}}}}%
- {-26.74}%
- {}%
- []%
- []
-\newcommand*{\coulombconstant}{\oofpez}
-\newcommand*{\altcoulombconstant}{\oofpezcs}
-\newcommand*{\biotsavartconstant}{\mzofp}
-\newcommand*{\boltzmannconstant}{\boltzmann}
-\newcommand*{\stefanboltzmannconstant}{\stefanboltzmann}
-\newcommand*{\planckconstant}{\planck}
-\newcommand*{\reducedplanckconstant}{\planckbar}
-\newcommand*{\planckconstanttimesc}{\planckc}
-\newcommand*{\rydbergconstant}{\rydberg}
-\newcommand*{\finestructureconstant}{\finestructure}
-\newcommand*{\avogadroconstant}{\avogadro}
-\newcommand*{\universalgravitationalconstant}{\universalgrav}
-\newcommand*{\earthssurfacegravitationalfield}{\surfacegravfield}
-\newcommand*{\photonconstant}{\clight}
-\newcommand*{\elementarycharge}{\echarge}
-\newcommand*{\EarthSundistance}{\ESdist}
-\newcommand*{\SunEarthdistance}{\SEdist}
-\newcommand*{\EarthMoondistance}{\ESdist}
-\newcommand*{\MoonEarthdistance}{\SEdist}
-\newcommand*{\Lstar}[1][\(\star\)]{\ensuremath{L_{\text{#1}}}\xspace}
-\newcommand*{\Lsolar}{\ensuremath{\Lstar[\(\odot\)]}\xspace}
-\newcommand*{\Tstar}[1][\(\star\)]{\ensuremath{T_{\text{#1}}}\xspace}
-\newcommand*{\Tsolar}{\ensuremath{\Tstar[\(\odot\)]}\xspace}
-\newcommand*{\Rstar}[1][\(\star\)]{\ensuremath{R_{\text{#1}}}\xspace}
-\newcommand*{\Rsolar}{\ensuremath{\Rstar[\(\odot\)]}\xspace}
-\newcommand*{\Mstar}[1][\(\star\)]{\ensuremath{M_{\text{#1}}}\xspace}
-\newcommand*{\Msolar}{\ensuremath{\Mstar[\(\odot\)]}\xspace}
-\newcommand*{\Fstar}[1][\(\star\)]{\ensuremath{F_{\text{#1}}}\xspace}
-\newcommand*{\fstar}[1][\(\star\)]{\ensuremath{f_{\text{#1}}}\xspace}
-\newcommand*{\Fsolar}{\ensuremath{\Fstar[\(\odot\)]}\xspace}
-\newcommand*{\fsolar}{\ensuremath{\fstar[\(\odot\)]}\xspace}
-\newcommand*{\Magstar}[1][\(\star\)]{\ensuremath{M_{\text{#1}}}\xspace}
-\newcommand*{\magstar}[1][\(\star\)]{\ensuremath{m_{\text{#1}}}\xspace}
-\newcommand*{\Magsolar}{\ensuremath{\Magstar[\(\odot\)]}\xspace}
-\newcommand*{\magsolar}{\ensuremath{\magstar[\(\odot\)]}\xspace}
-\newcommand*{\Dstar}[1][\(\star\)]{\ensuremath{D_{\text{#1}}}\xspace}
-\newcommand*{\dstar}[1][\(\star\)]{\ensuremath{d_{\text{#1}}}\xspace}
-\newcommand*{\Dsolar}{\ensuremath{\Dstar[\(\odot\)]}\xspace}
-\newcommand*{\dsolar}{\ensuremath{\dstar[\(\odot\)]}\xspace}
-\newcommand*{\onehalf}{\ensuremath{\frac{1}{2}}\xspace}
-\newcommand*{\onethird}{\ensuremath{\frac{1}{3}}\xspace}
-\newcommand*{\onefourth}{\ensuremath{\frac{1}{4}}\xspace}
-\newcommand*{\onefifth}{\ensuremath{\frac{1}{5}}\xspace}
-\newcommand*{\onesixth}{\ensuremath{\frac{1}{6}}\xspace}
-\newcommand*{\oneseventh}{\ensuremath{\frac{1}{7}}\xspace}
-\newcommand*{\oneeighth}{\ensuremath{\frac{1}{8}}\xspace}
-\newcommand*{\oneninth}{\ensuremath{\frac{1}{9}}\xspace}
-\newcommand*{\onetenth}{\ensuremath{\frac{1}{10}}\xspace}
-\newcommand*{\twooneths}{\ensuremath{\frac{2}{1}}\xspace}
-\newcommand*{\twohalves}{\ensuremath{\frac{2}{2}}\xspace}
-\newcommand*{\twothirds}{\ensuremath{\frac{2}{3}}\xspace}
-\newcommand*{\twofourths}{\ensuremath{\frac{2}{4}}\xspace}
-\newcommand*{\twofifths}{\ensuremath{\frac{2}{5}}\xspace}
-\newcommand*{\twosixths}{\ensuremath{\frac{2}{6}}\xspace}
-\newcommand*{\twosevenths}{\ensuremath{\frac{2}{7}}\xspace}
-\newcommand*{\twoeighths}{\ensuremath{\frac{2}{8}}\xspace}
-\newcommand*{\twoninths}{\ensuremath{\frac{2}{9}}\xspace}
-\newcommand*{\twotenths}{\ensuremath{\frac{2}{10}}\xspace}
-\newcommand*{\threeoneths}{\ensuremath{\frac{3}{1}}\xspace}
-\newcommand*{\threehalves}{\ensuremath{\frac{3}{2}}\xspace}
-\newcommand*{\threethirds}{\ensuremath{\frac{3}{3}}\xspace}
-\newcommand*{\threefourths}{\ensuremath{\frac{3}{4}}\xspace}
-\newcommand*{\threefifths}{\ensuremath{\frac{3}{5}}\xspace}
-\newcommand*{\threesixths}{\ensuremath{\frac{3}{6}}\xspace}
-\newcommand*{\threesevenths}{\ensuremath{\frac{3}{7}}\xspace}
-\newcommand*{\threeeighths}{\ensuremath{\frac{3}{8}}\xspace}
-\newcommand*{\threeninths}{\ensuremath{\frac{3}{9}}\xspace}
-\newcommand*{\threetenths}{\ensuremath{\frac{3}{10}}\xspace}
-\newcommand*{\fouroneths}{\ensuremath{\frac{4}{1}}\xspace}
-\newcommand*{\fourhalves}{\ensuremath{\frac{4}{2}}\xspace}
-\newcommand*{\fourthirds}{\ensuremath{\frac{4}{3}}\xspace}
-\newcommand*{\fourfourths}{\ensuremath{\frac{4}{4}}\xspace}
-\newcommand*{\fourfifths}{\ensuremath{\frac{4}{5}}\xspace}
-\newcommand*{\foursixths}{\ensuremath{\frac{4}{6}}\xspace}
-\newcommand*{\foursevenths}{\ensuremath{\frac{4}{7}}\xspace}
-\newcommand*{\foureighths}{\ensuremath{\frac{4}{8}}\xspace}
-\newcommand*{\fourninths}{\ensuremath{\frac{4}{9}}\xspace}
-\newcommand*{\fourtenths}{\ensuremath{\frac{4}{10}}\xspace}
-\newcommand*{\sumoverall}[1]{\ensuremath{\displaystyle
- \sum_{\substack{\text{\tiny{all }}\text{\tiny{{#1}}}}}}}
-\newcommand*{\dx}[1]{\ensuremath{\,\mathrm{d}{#1}}}
-\newcommand*{\dslashx}[1]{\ensuremath{\,\mathchar'26\mkern-12mu \mathrm{d}{#1}}}
-\newcommandx{\evaluatedfromto}[2][2,usedefault]{\ensuremath{%
- \Bigg.\Bigg\rvert_{#1}^{#2}}}
-\newcommand*{\evaluatedat}{\evaluatedfromto}
-\newcommandx{\integral}[4][1,2,usedefault]{\ensuremath{%
- \int_{\ifthenelse{\equal{#1}{}}{}{#4=#1}}^{\ifthenelse{%
- \equal{#2}{}}{}{#4=#2}}}{#3}\dx{#4}}
-\newcommand*{\opensurfaceintegral}[2]{\ensuremath{%
- \iint\nolimits_{#1}\vectdotvect{#2}{\dirvect{n}}\dx{A}}}
-\newcommand*{\closedsurfaceintegral}[2]{\ensuremath{%
- \varoiint\nolimits_{#1}\vectdotvect{#2}{\dirvect{n}}\dx{A}}}
-\newcommand*{\openlineintegral}[2]{\ensuremath{%
- \int\nolimits_{#1}\vectdotvect{#2}{\dirvect{t}}\dx{\ell}}}
-\newcommand*{\closedlineintegral}[2]{\ensuremath{%
- \oint\nolimits_{#1}\vectdotvect{#2}{\dirvect{t}}\dx{\ell}}}
-\newcommand*{\volumeintegral}[2]{\ensuremath{%
- \iiint\nolimits_{#1}{#2}\dx{V}}}
-\newcommandx{\dbydt}[1][1]{\ensuremath{%
- \frac{\mathrm{d}{#1}}{\mathrm{d}t}}}
-\newcommandx{\DbyDt}[1][1]{\ensuremath{%
- \frac{\Delta{#1}}{\Delta t}}}
-\newcommandx{\ddbydt}[1][1]{\ensuremath{%
- \frac{\mathrm{d}^{2}{#1}}{\mathrm{d}t^{2}}}}
-\newcommandx{\DDbyDt}[1][1]{\ensuremath{%
- \frac{\Delta^{2}{#1}}{\Delta t^{2}}}}
-\newcommandx{\pbypt}[1][1]{\ensuremath{%
- \frac{\partial{#1}}{\partial t}}}
-\newcommandx{\ppbypt}[1][1]{\ensuremath{%
- \frac{\partial^{2}{#1}}{\partial t^{2}}}}
-\newcommand*{\dbyd}[2]{\ensuremath{\frac{%
- \mathrm{d}{#1}}{\mathrm{d}{#2}}}}
-\newcommand*{\DbyD}[2]{\ensuremath{\frac{%
- \Delta{#1}}{\Delta{#2}}}}
-\newcommand*{\ddbyd}[2]{\ensuremath{%
- \frac{\mathrm{d}^{2}{#1}}{\mathrm{d}{#2}^{2}}}}
-\newcommand*{\DDbyD}[2]{\ensuremath{%
- \frac{\Delta^{2}{#1}}{\Delta{#2}^{2}}}}
-\newcommand*{\pbyp}[2]{\ensuremath{%
- \frac{\partial{#1}}{\partial{#2}}}}
-\newcommand*{\ppbyp}[2]{\ensuremath{%
- \frac{\partial^{2}{#1}}{\partial{#2}^{2}}}}
-\newcommandx{\seriesfofx}[1][1=x,usedefault]{\ensuremath{%
- f({#1}) \approx f(a) + \frac{f^\prime (a)}{1!}({#1}-a) +
- \frac{f^{\prime\prime}(a)}{2!}({#1}-a)^2 +
- \frac{f^{\prime\prime\prime}(a)}{3!}({#1}-a)^3 + \ldots}\xspace}
-\newcommandx{\seriesexpx}[1][1=x,usedefault]{\ensuremath{%
- e^{#1} \approx 1 + {#1} + \frac{{#1}^2}{2!} + \frac{{#1}^3}{3!} + \ldots}\xspace}
-\newcommandx{\seriessinx}[1][1=x,usedefault]{\ensuremath{%
- \sin {#1} \approx {#1} - \frac{{#1}^3}{3!} + \frac{{#1}^5}{5!} - \ldots}\xspace}
-\newcommandx{\seriescosx}[1][1=x,usedefault]{\ensuremath{%
- \cos {#1} \approx 1 - \frac{{#1}^2}{2!} + \frac{{#1}^4}{4!} - \ldots}\xspace}
-\newcommandx{\seriestanx}[1][1=x,usedefault]{\ensuremath{%
- \tan {#1} \approx {#1} + \frac{{#1}^3}{3} + \frac{2{#1}^5}{15} + \ldots}\xspace}
-\newcommandx{\seriesatox}[1][1=x,usedefault]{\ensuremath{%
- a^{#1} \approx 1 + {#1} \ln{a} + \frac{({#1} \ln a)^2}{2!} +
- \frac{({#1} \ln a)^3}{3!} + \ldots}\xspace}
-\newcommandx{\serieslnoneplusx}[1][1=x,usedefault]{\ensuremath{%
- \ln(1 \pm {#1}) \approx \pm\; {#1} - \frac{{#1}^2}{2} \pm \frac{{#1}^3}{3} - %
- \frac{{#1}^4}{4} \pm \ldots}\xspace}
-\newcommandx{\binomialseries}[1][1=x,usedefault]{\ensuremath{%
- (1 + {#1})^n \approx 1 + n{#1} + \frac{n(n-1)}{2!}{#1}^2 + \ldots}\xspace}
-\newcommand*{\gradient}{\ensuremath{\boldsymbol{\nabla}}}
-\newcommand*{\divergence}{\ensuremath{\boldsymbol{\nabla}\bullet}}
-\newcommand*{\curl}{\ensuremath{\boldsymbol{\nabla\times}}}
-\newcommand{\taigrad}{\ensuremath{\nabla}}%
-\newcommand{\taisvec}{\ensuremath{%
- \stackinset{c}{0.07ex}{c}{0.1ex}{\tiny$-$}{$\nabla$}}
-}%
-\newcommand{\taidivg}{\ensuremath{%
- \stackinset{c}{0.07ex}{c}{0.1ex}{$\cdot$}{$\nabla$}}
-}%
-\newcommand{\taicurl}{\ensuremath{%
- \stackinset{c}{0.04ex}{c}{0.32ex}{\tiny$\times$}{$\nabla$}}
-}%
-\newcommand*{\laplacian}{\ensuremath{\boldsymbol{\nabla}^2}}
-\newcommand*{\dalembertian}{\ensuremath{\boldsymbol{\Box}}}
-\newcommand*{\diracdelta}[1]{\ensuremath{\delta}(#1)}
-\newcommand*{\orderof}[1]{\ensuremath{\mathcal{O}(#1)}}
-\DeclareMathOperator{\asin}{\sin^{-1}}
-\DeclareMathOperator{\acos}{\cos^{-1}}
-\DeclareMathOperator{\atan}{\tan^{-1}}
-\DeclareMathOperator{\asec}{\sec^{-1}}
-\DeclareMathOperator{\acsc}{\csc^{-1}}
-\DeclareMathOperator{\acot}{\cot^{-1}}
-\DeclareMathOperator{\sech}{sech}
-\DeclareMathOperator{\csch}{csch}
-\DeclareMathOperator{\asinh}{\sinh^{-1}}
-\DeclareMathOperator{\acosh}{\cosh^{-1}}
-\DeclareMathOperator{\atanh}{\tanh^{-1}}
-\DeclareMathOperator{\asech}{\sech^{-1}}
-\DeclareMathOperator{\acsch}{\csch^{-1}}
-\DeclareMathOperator{\acoth}{\coth^{-1}}
-\DeclareMathOperator{\sgn}{sgn}
-\DeclareMathOperator{\dex}{dex}
-\newcommand*{\logb}[1][\relax]{\ensuremath{\log_{#1}}}
-\ifthenelse{\boolean{@optboldvectors}}
- {\newcommand*{\cB}{\ensuremath{\boldsymbol{c\mskip -3.00mu B}}}}
- {\ifthenelse{\boolean{@optromanvectors}}
- {\newcommand*{\cB}{\ensuremath{\textsf{c}\mskip -3.00mu\mathrm{B}}}}
- {\newcommand*{\cB}{\ensuremath{c\mskip -3.00mu B}}}}
-\newcommand*{\newpi}{\ensuremath{\pi\mskip -7.8mu\pi}}
-\newcommand*{\scripty}[1]{\ensuremath{\mathcalligra{#1}}}
-\newcommand*{\Lagr}{\ensuremath{\mathcal{L}}}
-\newcommandx{\flux}[1][1]{\ensuremath{\ssub{\Phi}{#1}}}
-\newcommandx{\circulation}[1][1]{\ensuremath{\ssub{\Gamma}{#1}}}
-\newcommand*{\absof}[1]{\ensuremath{%
- \left\lvert{\ifblank{#1}{\:\_\:}{#1}}\right\rvert}}
-\newcommand*{\inparens}[1]{\ensuremath{%
- \left({\ifblank{#1}{\:\_\:}{#1}}\right)}}
-\newcommand*{\magof}[1]{\ensuremath{%
- \left\lVert{\ifblank{#1}{\:\_\:}{#1}}\right\rVert}}
-\newcommand*{\dimsof}[1]{\ensuremath{%
- \left[{\ifblank{#1}{\:\_\:}{#1}}\right]}}
-\newcommand*{\unitsof}[1]{\ensuremath{%
- \left[{\ifblank{#1}{\:\_\:}{#1}}\right]_u}}
-\newcommand*{\changein}[1]{\ensuremath{\delta{#1}}}
-\newcommand*{\Changein}[1]{\ensuremath{\Delta{#1}}}
-\newcommandx{\timestento}[2][2=\!\!,usedefault]{\ensuremath{%
- \ifthenelse{\equal{#2}{}}
- {\unit{\;\times\;10^{#1}}{}}
- {\unit{\;\times\;10^{#1}}{#2}}}}
-\newcommand*{\xtento}{\timestento}
-\newcommandx{\tento}[2][2=\!\!,usedefault]{\ensuremath{%
- \ifthenelse{\equal{#2}{}}
- {\unit{10^{#1}}{}}
- {\unit{10^{#1}}{#2}}}}
-\newcommand*{\ee}[2]{\texttt{{#1}e{#2}}}
-\newcommand*{\EE}[2]{\texttt{{#1}E{#2}}}
-\newcommand*{\dms}[3]{\ensuremath{%
- \indegrees{#1}\inarcminutes{#2}\inarcseconds{#3}}}
-\newcommand*{\hms}[3]{\ensuremath{%
- {#1}^{\hour}{#2}^{\mathrm{m}}{#3}^{\s}}}
-\newcommand*{\clockreading}{\hms}
-\newcommand*{\latitude}[1]{\unit{#1}{\mkern-\thickmuskip\degree}}
-\newcommand*{\latitudeN}[1]{\unit{#1}{\mkern-\thickmuskip\degree\;\mathrm{N}}}
-\newcommand*{\latitudeS}[1]{\unit{#1}{\mkern-\thickmuskip\degree\;\mathrm{S}}}
-\newcommand*{\longitude}[1]{\unit{#1}{\mkern-\thickmuskip\degree}}
-\newcommand*{\longitudeE}[1]{\unit{#1}{\mkern-\thickmuskip\degree\;\mathrm{E}}}
-\newcommand*{\longitudeW}[1]{\unit{#1}{\mkern-\thickmuskip\degree\;\mathrm{W}}}
-\newcommand*{\ssub}[2]{\ensuremath{#1_{\text{#2}}}}
-\newcommand*{\ssup}[2]{\ensuremath{#1^{\text{#2}}}}
-\newcommand*{\ssud}[3]{\ensuremath{#1^{\text{#2}}_{\text{#3}}}}
-\newcommand*{\msub}[2]{\ensuremath{#1_{#2}}}
-\newcommand*{\msup}[2]{\ensuremath{#1^{#2}}}
-\newcommand*{\msud}[3]{\ensuremath{#1^{#2}_{#3}}}
-\newcommand*{\levicivita}[1]{\ensuremath{%
- \varepsilon_{\scriptscriptstyle{#1}}}}
-\newcommand*{\kronecker}[1]{\ensuremath{%
- \delta_{\scriptscriptstyle{#1}}}}
-\newcommand*{\xaxis}{\ensuremath{x\text{-axis}}\xspace}
-\newcommand*{\yaxis}{\ensuremath{y\text{-axis}}\xspace}
-\newcommand*{\zaxis}{\ensuremath{z\text{-axis}}\xspace}
-\newcommand*{\naxis}[1]{\ensuremath{{#1}\text{-axis}}\xspace}
-\newcommand*{\axis}{\ensuremath{\text{-axis}}\xspace}
-\newcommand*{\xyplane}{\ensuremath{xy\text{-plane}}\xspace}
-\newcommand*{\yzplane}{\ensuremath{yz\text{-plane}}\xspace}
-\newcommand*{\zxplane}{\ensuremath{zx\text{-plane}}\xspace}
-\newcommand*{\yxplane}{\ensuremath{yx\text{-plane}}\xspace}
-\newcommand*{\zyplane}{\ensuremath{zy\text{-plane}}\xspace}
-\newcommand*{\xzplane}{\ensuremath{xz\text{-plane}}\xspace}
-\newcommand*{\plane}{\ensuremath{\text{-plane}}\xspace}
-% Frequently used roots. Prepend |f| for fractional exponents.
-\newcommand*{\cuberoot}[1]{\ensuremath{\sqrt[3]{#1}}}
-\newcommand*{\fourthroot}[1]{\ensuremath{\sqrt[4]{#1}}}
-\newcommand*{\fifthroot}[1]{\ensuremath{\sqrt[5]{#1}}}
-\newcommand*{\fsqrt}[1]{\ensuremath{{#1}^\onehalf}}
-\newcommand*{\fcuberoot}[1]{\ensuremath{{#1}^\onethird}}
-\newcommand*{\ffourthroot}[1]{\ensuremath{{#1}^\onefourth}}
-\newcommand*{\ffifthroot}[1]{\ensuremath{{#1}^\onefifth}}
-\newcommand*{\relgamma}[1]{\ensuremath{%
- \frac{1}{\sqrt{1-\inparens{\frac{#1}{c}}\squared}}}}
-\newcommand*{\frelgamma}[1]{\ensuremath{%
- \inparens{1-\frac{{#1}\squared}{c\squared}}^{-\onehalf}}}
-\newcommand*{\oosqrtomxs}[1]{\ensuremath{\frac{1}{\sqrt{1-{#1}\squared}}}}
-\newcommand*{\oosqrtomx}[1]{\ensuremath{\frac{1}{\sqrt{1-{#1}}}}}
-\newcommand*{\ooomx}[1]{\ensuremath{\frac{1}{1-{#1}}}}
-\newcommand*{\ooopx}[1]{\ensuremath{\frac{1}{1+{#1}}}}
-\newcommand*{\isequals}{\wordoperator{?}{=}\xspace}
-\newcommand*{\wordoperator}[2]{\ensuremath{%
- \mathrel{\vcenter{\offinterlineskip
- \halign{\hfil\tiny\upshape##\hfil\cr\noalign{\vskip-.5ex}
- {#1}\cr\noalign{\vskip.5ex}{#2}\cr}}}}}
-\newcommand*{\definedas}{\wordoperator{defined}{as}\xspace}
-\newcommand*{\associated}{\wordoperator{associated}{with}\xspace}
-\newcommand*{\adjustedby}{\wordoperator{adjusted}{by}\xspace}
-\newcommand*{\earlierthan}{\wordoperator{earlier}{than}\xspace}
-\newcommand*{\laterthan}{\wordoperator{later}{than}\xspace}
-\newcommand*{\forevery}{\wordoperator{for}{every}\xspace}
-\newcommand*{\pwordoperator}[2]{\ensuremath{\left(%
- \mathrel{\vcenter{\offinterlineskip%
- \halign{\hfil\tiny\upshape##\hfil\cr\noalign{\vskip-.5ex}%
- {#1}\cr\noalign{\vskip.5ex}{#2}\cr}}}\right)}}%
-\newcommand*{\pdefinedas}{\pwordoperator{defined}{as}\xspace}
-\newcommand*{\passociated}{\pwordoperator{associated}{with}\xspace}
-\newcommand*{\padjustedby}{\pwordoperator{adjusted}{by}\xspace}
-\newcommand*{\pearlierthan}{\pwordoperator{earlier}{than}\xspace}
-\newcommand*{\platerthan}{\pwordoperator{later}{than}\xspace}
-\newcommand*{\pforevery}{\pwordoperator{for}{every}\xspace}
-\newcommand*{\defines}{\ensuremath{\stackrel{\text{\tiny{def}}}{=}}\xspace}
-\newcommand*{\inframe}[1][\relax]{\ensuremath{%
- \xrightarrow[\text\tiny{\mathcal #1}]{}}\xspace}
-\newcommand*{\associates}{\ensuremath{%
- \xrightarrow{\text{\tiny{assoc}}}}\xspace}
-\newcommand*{\becomes}{\ensuremath{%
- \xrightarrow{\text{\tiny{becomes}}}}\xspace}
-\newcommand*{\rrelatedto}[1]{\ensuremath{%
- \xLongrightarrow{\text{\tiny{#1}}}}}
-\newcommand*{\lrelatedto}[1]{\ensuremath{%
- \xLongleftarrow[\text{\tiny{#1}}]{}}}
-\newcommand*{\brelatedto}[2]{\ensuremath{%
- \xLongleftrightarrow[\text{\tiny{#1}}]{\text{\tiny{#2}}}}}
-\newcommand*{\genericinteractionplaces}[5]{\ensuremath{\inparens{#1}
- \frac{\inparens{#2}\inparens{#3}}{\inparens{#4}^2}{{\ifblank{#5}{%
- \mivector{\_ , \_ , \_}}{#5}}}}}
-\newcommand*{\genericfieldofparticleplaces}[4]{\ensuremath{\inparens{#1}
- \frac{\inparens{#2}}{\inparens{#3}^2}{{\ifblank{#4}{\mivector{\_ , \_ , \_}}{#4}}}}}
-\newcommand*{\genericpotentialenergyplaces}[4]{\ensuremath{%
- \inparens{#1}\frac{\inparens{#2}\inparens{#3}}{\inparens{#4}}}}
-\newcommand*{\genericelectricdipoleplaces}[5]{%
- \ensuremath{\inparens{#1}\frac{\inparens{#2}\inparens{#3}}{\inparens{#4}^3}%
- {{\ifblank{#5}{\mivector{\_ , \_ , \_}}{#5}}}}}
-\newcommand*{\genericelectricdipoleonaxisplaces}[5]{%
- \ensuremath{\inparens{#1}\frac{2\inparens{#2}\inparens{#3}}{\inparens{#4}^3}%
- {{\ifblank{#5}{\mivector{\_ , \_ , \_}}{#5}}}}}
-\newcommand*{\gfieldofparticle}{\ensuremath{\universalgravmathsymbol\frac{M}%
- {\magsquaredvect{r}}\inparens{-\dirvect{r}}}}
-\newcommand*{\gravitationalinteractionplaces}[4]{%
- \genericinteractionplaces{\universalgrav}{#1}{#2}{#3}{#4}}
-\newcommand*{\gfieldofparticleplaces}[3]{%
- \genericfieldofparticleplaces{\universalgrav}{#1}{#2}{#3}}
-\newcommand*{\electricinteractionplaces}[4]{%
- \genericinteractionplaces{\oofpez}{#1}{#2}{#3}{#4}}
-\newcommand*{\Efieldofparticleplaces}[3]{%
- \genericfieldofparticleplaces{\oofpez}{#1}{#2}{#3}}
-\newcommand*{\Bfieldofparticleplaces}[5]{\ensuremath{\inparens{\mzofp}%
- \frac{\inparens{#1}\inparens{#2}}{\inparens{#3}^2}{{\ifblank{#4}{%
- \mivector{\_ , \_ , \_}}{#4}}}\times{{\ifblank{#5}{\mivector{\_ , \_ , \_}}{#5}}}}}
-\newcommand*{\springinteractionplaces}[3]{\ensuremath{\inparens{#1}
- \inparens{#2}{{\ifblank{#3}{\mivector{\_ , \_ , \_}}{#3}}}}}
-\newcommand*{\gravitationalpotentialenergyplaces}[3]{\ensuremath{%
- -\genericpotentialenergyplaces{\universalgrav}{#1}{#2}{#3}}}
-\newcommand*{\electricpotentialenergyplaces}[3]{%
- \genericpotentialenergyplaces{\oofpez}{#1}{#2}{#3}}
-\newcommand*{\springpotentialenergyplaces}[2]{\ensuremath{%
- \onehalf\inparens{#1}\inparens{#2}^2}}
-\newcommand*{\electricdipoleonaxisplaces}[4]{%
- \genericelectricdipoleonaxisplaces{\oofpez}{\absof{#1}}{#2}{#3}{{\ifblank{#4}{%
- \mivector{\_ , \_ , \_}}{#4}}}}
-\newcommand*{\electricdipoleonbisectorplaces}[4]{%
- \genericelectricdipoleplaces{\oofpez}{\absof{#1}}{#2}{#3}{{\ifblank{#4}{%
- \mivector{\_ , \_ , \_}}{#4}}}}
-\newcommand{\define}[2]{\newcommand{#1}{#2}}
-\newcommand*{\momentumprinciple}{\ensuremath{%
- \vectsub{p}{sys,final}=\vectsub{p}{sys,initial}+\Fnetsys\Delta t}}
-\newcommand*{\LHSmomentumprinciple}{\ensuremath{\vectsub{p}{sys,final}}}
-\newcommand*{\RHSmomentumprinciple}{\ensuremath{%
- \vectsub{p}{sys,initial}+\Fnetsys\Delta t}}
-\newcommand*{\momentumprinciplediff}{\ensuremath{%
- \Dvectsub{p}{sys}=\Fnetsys\Delta t}}
-\newcommand*{\energyprinciple}{\ensuremath{%
- \ssub{E}{sys,final}=\ssub{E}{sys,initial}+W+Q}}
-\newcommand*{\LHSenergyprinciple}{\ensuremath{\ssub{E}{sys,final}}}
-\newcommand*{\RHSenergyprinciple}{\ensuremath{\ssub{E}{sys,initial}+W+Q}}
-\newcommand*{\energyprinciplediff}{\ensuremath{\Delta\ssub{E}{sys}=W+Q}}
-\newcommand*{\angularmomentumprinciple}{\ensuremath{%
- \vectsub{L}{\(A\),sys,final}=\vectsub{L}{\(A\),sys,initial}+\Tsub{net}\Delta t}}
-\newcommand*{\LHSangularmomentumprinciple}{\ensuremath{%
- \vectsub{L}{\(A\),sys,final}}}
-\newcommand*{\RHSangularmomentumprinciple}{\ensuremath{%
- \vectsub{L}{\(A\),sys,initial}+\Tsub{net}\Delta t}}
-\newcommand*{\angularmomentumprinciplediff}{\ensuremath{%
- \Dvectsub{L}{\(A\),sys}=\Tsub{net}\Delta t}}
-\newcommand*{\gravitationalinteraction}{\ensuremath{%
- \universalgravmathsymbol\frac{\msub{M}{1}\msub{M}{2}}{%
- \magvectsub{r}{12}\squared}(-\dirvectsub{r}{12})}}
-\newcommand*{\electricinteraction}{\ensuremath{%
- \oofpezmathsymbol\frac{\msub{Q}{1}\msub{Q}{2}}{\magvectsub{r}{12}\squared}
- \dirvectsub{r}{12}}}
-\newcommand*{\springinteraction}{\ensuremath{\ks\magvect{s}(-\dirvect{s})}}
-\newcommand*{\Bfieldofparticle}{\ensuremath{%
- \mzofpmathsymbol\frac{Q\magvect{v}}{\magsquaredvect{r}}\dirvect{v}\times
- \dirvect{r}}}
-\newcommand*{\Efieldofparticle}{\ensuremath{%
- \oofpezmathsymbol\frac{Q}{\magsquaredvect{r}}\dirvect{r}}}
-\newcommandx{\Esys}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{E}{sys}}{\ssub{E}{sys,#1}}}
-\newcommandx{\Us}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{U}{\(s\)}}{\ssub{U}{\(s\),#1}}}
-\newcommandx{\Ug}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{U}{\(g\)}}{\ssub{U}{\(g\),#1}}}
-\newcommandx{\Ue}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{U}{\(e\)}}{\ssub{U}{\(e\),#1}}}
-\newcommandx{\Ktrans}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{K}{trans}}
- {\ssub{K}{trans,#1}}}
-\newcommandx{\Krot}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{K}{rot}}{\ssub{K}{rot,#1}}}
-\newcommandx{\Kvib}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{K}{vib}}{\ssub{K}{vib,#1}}}
-\newcommandx{\Eparticle}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{particle}}
- {\ssub{E}{particle,#1}}}
-\newcommandx{\Einternal}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{internal}}
- {\ssub{E}{internal,#1}}}
-\newcommandx{\Erest}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{rest}}{\ssub{E}
- {rest,#1}}}
-\newcommandx{\Echem}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{chem}}{\ssub{E}
- {chem,#1}}}
-\newcommandx{\Etherm}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{therm}}
- {\ssub{E}{therm,#1}}}
-\newcommandx{\Evib}[1][1]{\ifthenelse{%
- \equal{#1}{}}{\ssub{E}{vib}}{\ssub{E}{vib,#1}}}
-\newcommandx{\Ephoton}[1][1]{\ifthenelse{\equal{#1}{}}{\ssub{E}{photon}}
- {\ssub{E}{photon,#1}}}
-\newcommand*{\DEsys}{\Changein\Esys}
-\newcommand*{\DUs}{\Changein\Us}
-\newcommand*{\DUg}{\Changein\Ug}
-\newcommand*{\DUe}{\Changein\Ue}
-\newcommand*{\DKtrans}{\Changein\Ktrans}
-\newcommand*{\DKrot}{\Changein\Krot}
-\newcommand*{\DKvib}{\Changein\Kvib}
-\newcommand*{\DEparticle}{\Changein\Eparticle}
-\newcommand*{\DEinternal}{\Changein\Einternal}
-\newcommand*{\DErest}{\Changein\Erest}
-\newcommand*{\DEchem}{\Changein\Echem}
-\newcommand*{\DEtherm}{\Changein\Etherm}
-\newcommand*{\DEvib}{\Changein\Evib}
-\newcommand*{\DEphoton}{\Changein\Ephoton}
-\newcommand*{\springpotentialenergy}{\onehalf\ks\magsquaredvect{s}}
-\newcommand*{\finalspringpotentialenergy}
- {\ssub{\left(\springpotentialenergy\right)}{\!\!final}}
-\newcommand*{\initialspringpotentialenergy}
- {\ssub{\left(\springpotentialenergy\right)}{\!\!initial}}
-\newcommand*{\gravitationalpotentialenergy}{\ensuremath{%
- -G\frac{\msub{M}{1}\msub{M}{2}}{\magvectsub{r}{12}}}}
-\newcommand*{\finalgravitationalpotentialenergy}
- {\ssub{\left(\gravitationalpotentialenergy\right)}{\!\!final}}
-\newcommand*{\initialgravitationalpotentialenergy}
- {\ssub{\left(\gravitationalpotentialenergy\right)}{\!\!initial}}
-\newcommand*{\electricpotentialenergy}{\ensuremath{%
- \oofpezmathsymbol\frac{\ssub{Q}{1}\ssub{Q}{2}}{\magvectsub{r}{12}}}}
-\newcommand*{\finalelectricpotentialenergy}
- {\ssub{\left(\electricpotentialenergy\right)}{\!\!final}}
-\newcommand*{\initialelectricpotentialenergy}
- {\ssub{\left(\electricpotentialenergy\right)}{\!\!initial}}
-\newcommand*{\ks}{\msub{k}{s}}
-\newcommand*{\Fnet}{\ensuremath{\vectsub{F}{net}}}
-\newcommand*{\Fnetext}{\ensuremath{\vectsub{F}{net,ext}}}
-\newcommand*{\Fnetsys}{\ensuremath{\vectsub{F}{net,sys}}}
-\newcommand*{\Fsub}[1]{\ensuremath{\vectsub{F}{#1}}}
-\newcommand*{\Ltotal}{\ensuremath{\vectsub{L}{\(A\),total}}}
-\newcommand*{\Lsys}{\ensuremath{\vectsub{L}{\(A\),sys}}}
-\newcommand*{\Lsub}[1]{\ensuremath{\vectsub{L}{\(A\),{#1}}}}
-\newcommand*{\Tnet}{\ensuremath{\vectsub{\tau}{\(A\),net}}}
-\newcommand*{\Tnetext}{\ensuremath{\vectsub{\tau}{\(A\),net,ext}}}
-\newcommand*{\Tnetsys}{\ensuremath{\vectsub{\tau}{\(A\),net,sys}}}
-\newcommand*{\Tsub}[1]{\ensuremath{\vectsub{\tau}{\(A\),#1}}}
-\newcommand*{\LHSmaxwelliint}[1][\partial V]{\ensuremath{%
- \closedsurfaceintegral{#1}{\vect{E}}}}
-\newcommand*{\RHSmaxwelliint}{\ensuremath{\frac{\ssub{Q}{\(e\),net}}%
- {\vacuumpermittivitymathsymbol}}}
-\newcommand*{\RHSmaxwelliinta}[1][V]{\ensuremath{%
- \frac{1}{\vacuumpermittivitymathsymbol}\volumeintegral{#1}{\msub{\rho}{e}}}}
-\newcommand*{\RHSmaxwelliintfree}{\ensuremath{0}}
-\newcommand*{\maxwelliint}[1][\partial V]{\ensuremath{%
- \LHSmaxwelliint[#1]=\RHSmaxwelliint}}
-\newcommandx*{\maxwelliinta}[2][1={\partial V},2={V},usedefault]{\ensuremath{%
- \LHSmaxwelliint[#1]=\RHSmaxwelliinta[#2]}}
-\newcommand*{\maxwelliintfree}[1][\partial V]{\ensuremath{%
- \LHSmaxwelliint[#1]=\RHSmaxwelliintfree}}
-\newcommand*{\LHSmaxwelliiint}[1][\partial V]{\ensuremath{%
- \closedsurfaceintegral{#1}{\vect{B}}}}
-\newcommand*{\RHSmaxwelliiint}{\ensuremath{0}}
-\newcommand*{\RHSmaxwelliiintm}{\ensuremath{%
- \vacuumpermeabilitymathsymbol\ssub{Q}{\(m\),net}}}
-\newcommand*{\RHSmaxwelliiintma}[1][V]{\ensuremath{%
- \vacuumpermeabilitymathsymbol\volumeintegral{#1}{\msub{\rho}{m}}}}
-\newcommand*{\RHSmaxwelliiintfree}{\ensuremath{0}}
-\newcommand*{\maxwelliiint}[1][\partial V]{\ensuremath{%
- \LHSmaxwelliiint[#1]=\RHSmaxwelliiint}}
-\newcommand*{\maxwelliiintm}[1][\partial V]{\ensuremath{%
- \LHSmaxwelliiint[#1]=\RHSmaxwelliiintm}}
-\newcommandx*{\maxwelliiintma}[2][1={\partial V},2={V},usedefault]{\ensuremath{%
- \LHSmaxwelliiint[#1]=\RHSmaxwelliiintma[#2]}}
-\newcommand*{\maxwelliiintfree}[1][\partial V]{\ensuremath{%
- \LHSmaxwelliiint[#1]=\RHSmaxwelliiintfree}}
-\newcommand*{\LHSmaxwelliiiint}[1][\partial\Omega]{\ensuremath{%
- \closedlineintegral{#1}{\vect{E}}}}
-\newcommand*{\RHSmaxwelliiiint}[1][\Omega]{\ensuremath{%
- -\dbydt\opensurfaceintegral{#1}{\vect{B}}}}
-\newcommand*{\RHSmaxwelliiiintm}[1][\Omega]{\ensuremath{%
- -\dbydt\opensurfaceintegral{#1}{\vect{B}}%
- -\vacuumpermeabilitymathsymbol\ssub{I}{\(m\),net}}}
-\newcommand*{\RHSmaxwelliiiintma}[1][\Omega]{\ensuremath{%
- -\dbydt\opensurfaceintegral{#1}{\vect{B}}%
- -\vacuumpermeabilitymathsymbol\opensurfaceintegral{#1}{\vectsub{J}{\(m\)}}}}
-\newcommand*{\RHSmaxwelliiiintfree}{\RHSmaxwelliiiint}
-\newcommandx*{\maxwelliiiint}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwelliiiint[#1]=\RHSmaxwelliiiint[#2]}}
-\newcommandx*{\maxwelliiiintm}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwelliiiint[#1]=\RHSmaxwelliiiintm[#2]}}
-\newcommandx*{\maxwelliiiintma}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwelliiiint[#1]=\RHSmaxwelliiiintma[#2]}}
-\newcommand*{\maxwelliiiintfree}{\maxwelliiiint}
-\newcommand*{\LHSmaxwellivint}[1][\partial\Omega]{\ensuremath{%
- \closedlineintegral{#1}{\vect{B}}}}
-\newcommand*{\RHSmaxwellivint}[1][\Omega]{\ensuremath{%
- \vacuumpermeabilitymathsymbol\vacuumpermittivitymathsymbol%
- \dbydt\opensurfaceintegral{#1}{\vect{E}}+%
- \vacuumpermeabilitymathsymbol\ssub{I}{\(e\),net}}}
-\newcommand*{\RHSmaxwellivinta}[1][\Omega]{\ensuremath{%
- \vacuumpermeabilitymathsymbol\vacuumpermittivitymathsymbol%
- \dbydt\opensurfaceintegral{#1}{\vect{E}}+%
- \vacuumpermeabilitymathsymbol\opensurfaceintegral{#1}{\vectsub{J}{\(e\)}}}}
-\newcommand*{\RHSmaxwellivintfree}[1][\Omega]{\ensuremath{%
- \vacuumpermeabilitymathsymbol\vacuumpermittivitymathsymbol%
- \dbydt\opensurfaceintegral{#1}{\vect{E}}}}
-\newcommandx*{\maxwellivint}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwellivint[#1]=\RHSmaxwellivint[#2]}}
-\newcommandx*{\maxwellivinta}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwellivint[#1]=\RHSmaxwellivinta[#2]}}
-\newcommandx*{\maxwellivintfree}[2][1={\partial\Omega},2={\Omega},usedefault]%
- {\ensuremath{\LHSmaxwellivint[#1]=\RHSmaxwellivintfree[#2]}}
-\newcommand*{\LHSmaxwellidif}{\ensuremath{\divergence{\vect{E}}}}
-\newcommand*{\RHSmaxwellidif}{\ensuremath{\frac{\msub{\rho}{e}}
- {\vacuumpermittivitymathsymbol}}}
-\newcommand*{\RHSmaxwellidiffree}{\ensuremath{0}}
-\newcommand*{\maxwellidif}{\ensuremath{\LHSmaxwellidif=\RHSmaxwellidif}}
-\newcommand*{\maxwellidiffree}{\ensuremath{\LHSmaxwellidif=\RHSmaxwellidiffree}}
-\newcommand*{\LHSmaxwelliidif}{\ensuremath{\divergence{\vect{B}}}}
-\newcommand*{\RHSmaxwelliidif}{\ensuremath{0}}
-\newcommand*{\RHSmaxwelliidifm}{\ensuremath{\vacuumpermeabilitymathsymbol%
- \msub{\rho}{m}}}
-\newcommand*{\RHSmaxwelliidiffree}{\ensuremath{0}}
-\newcommand*{\maxwelliidif}{\ensuremath{\LHSmaxwelliidif=\RHSmaxwelliidif}}
-\newcommand*{\maxwelliidifm}{\ensuremath{\LHSmaxwelliidif=\RHSmaxwelliidifm}}
-\newcommand*{\maxwelliidiffree}{\ensuremath{\LHSmaxwelliidif=\RHSmaxwelliidiffree}}
-\newcommand*{\LHSmaxwelliiidif}{\ensuremath{\curl{\vect{E}}}}
-\newcommand*{\RHSmaxwelliiidif}{\ensuremath{-\pbypt[\vect{B}]}}
-\newcommand*{\RHSmaxwelliiidifm}{\ensuremath{-\pbypt[\vect{B}]-%
- \vacuumpermeabilitymathsymbol\vectsub{J}{\(m\)}}}
-\newcommand*{\RHSmaxwelliiidiffree}{\RHSmaxwelliiidif}
-\newcommand*{\maxwelliiidif}{\ensuremath{\LHSmaxwelliiidif=\RHSmaxwelliiidif}}
-\newcommand*{\maxwelliiidifm}{\ensuremath{\LHSmaxwelliiidif=\RHSmaxwelliiidifm}}
-\newcommand*{\maxwelliiidiffree}{\ensuremath{\LHSmaxwelliiidif=\RHSmaxwelliiidif}}
-\newcommand*{\LHSmaxwellivdif}{\ensuremath{\curl{\vect{B}}}}
-\newcommand*{\RHSmaxwellivdif}{\ensuremath{\vacuumpermeabilitymathsymbol%
- \vacuumpermittivitymathsymbol\pbypt[\vect{E}]+%
- \vacuumpermeabilitymathsymbol\vectsub{J}{\(e\)}}}
-\newcommand*{\RHSmaxwellivdiffree}{\ensuremath{\vacuumpermeabilitymathsymbol
- \vacuumpermittivitymathsymbol\pbypt[\vect{E}]}}
-\newcommand*{\maxwellivdif}{\ensuremath{\LHSmaxwellivdif=\RHSmaxwellivdif}}
-\newcommand*{\maxwellivdiffree}{\ensuremath{\LHSmaxwellivdif=\RHSmaxwellivdiffree}}
-\newcommand*{\RHSlorentzforce}{\ensuremath{\msub{q}{e}\left(\vect{E}+%
- \vectcrossvect{\vect{v}}{\vect{B}}\right)}}
-\newcommand*{\RHSlorentzforcem}{\ensuremath{\RHSlorentzforce+\msub{q}{m}\left(%
- \vect{B}-\vectcrossvect{\vect{v}}{\frac{\vect{E}}{c^2}}\right)}}
-\newcommandx{\eulerlagrange}[1][1={q_i},usedefault]{\ensuremath{%
- \pbyp{\mathcal{L}}{#1}-\dbydt\inparens{\pbyp{\mathcal{L}}{\dot{#1}}} = 0}}
-\newcommandx{\Eulerlagrange}[1][1={q_i},usedefault]{\ensuremath{%
- \DbyD{\mathcal{L}}{#1}-\DbyDt\inparens{\DbyD{\mathcal{L}}{\dot{#1}}} = 0}}
-\newcommand*{\vpythonline}{\lstinline[style=vpython]}
-\newcommand*{\glowscriptline}{\lstinline[style=vpython]}
-\lstnewenvironment{vpythonblock}[2]{%
- \lstset{style=vpython,caption={#1},label={#2}}}{}
-\lstnewenvironment{glowscriptblock}[2]{%
- \lstset{style=vpython,caption={#1},label={#2}}}{}
-\newcommand*{\vpythonfile}[3]{%
- \newpage\lstinputlisting[style=vpython,caption={#1},label={#2}]{#3}}
-\newcommand*{\glowscriptfile}[3]{%
- \newpage\lstinputlisting[style=vpython,caption={#1},label={#2}]{#3}}
-\newcommandx{\emptyanswer}[2][1=0.80,2=0.1,usedefault]
- {\begin{minipage}{#1\textwidth}\hfill\vspace{#2\textheight}\end{minipage}}
-\newenvironmentx{activityanswer}[5][1=white,2=black,3=black,4=0.90,%
- 5=0.10,usedefault]{%
- \def\skipper{#5}%
- \def\response@fbox{\fcolorbox{#2}{#1}}%
- \begin{center}%
- \begin{lrbox}{\@tempboxa}%
- \begin{minipage}[c][#5\textheight][c]{#4\textwidth}\color{#3}%
- \vspace{#5\textheight}}{%
- \vspace{\skipper\textheight}%
- \end{minipage}%
- \end{lrbox}%
- \response@fbox{\usebox{\@tempboxa}}%
- \end{center}%
-}%
-\newenvironmentx{adjactivityanswer}[5][1=white,2=black,3=black,4=0.90,5=0.00,%
- usedefault]{%
- \def\skipper{#5}%
- \def\response@fbox{\fcolorbox{#2}{#1}}%
- \begin{center}%
- \begin{lrbox}{\@tempboxa}%
- \begin{minipage}[c]{#4\textwidth}\color{#3}%
- \vspace{#5\textheight}}{%
- \vspace{\skipper\textheight}%
- \end{minipage}%
- \end{lrbox}%
- \response@fbox{\usebox{\@tempboxa}}%
- \end{center}%
-}%
-\newcommandx{\emptybox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.10,usedefault]%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \begin{minipage}[c][#6\textheight][c]{#5\textwidth}\color{#4}%
- {#1}%
- \end{minipage}}%
- \vspace{\baselineskip}%
- \end{center}%
-}%
-\newcommandx{\adjemptybox}[7][1=\hfill,2=white,3=black,4=black,5=0.90,6=,%
- 7=0.0,usedefault]
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \begin{minipage}[c]{#5\textwidth}\color{#4}%
- \vspace{#7\textheight}%
- {#1}%
- \vspace{#7\textheight}%
- \end{minipage}}%
- \vspace{\baselineskip}%
- \end{center}%
-}%
-\newcommandx{\answerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.1,usedefault]%
- {\ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\adjanswerbox}[7][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.1,7=0.0,usedefault]%
- {\ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\adjemptybox[#1][#2][#3][#4][#5][#6][#7]}%
-}%
-\newcommandx{\smallanswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.10,usedefault]%
- {\ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\smallanswerform}[4][1=q1,2=Response,3=0.10,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\mediumanswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.20,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\mediumanswerform}[4][1=q1,2=Response,3=0.20,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\largeanswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.25,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\largeanswerform}[4][1=q1,2=Response,3=0.25,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\largeranswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.33,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\largeranswerform}[4][1=q1,2=Response,3=0.33,4=0.90,%
- usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\hugeanswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.50,usedefault]{%
- \ifthenelse{\equal{#1}{}}
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\hugeanswerform}[4][1=q1,2=Response,3=0.50,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\hugeranswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=0.75,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\hugeranswerform}[4][1=q1,2=Response,3=0.75,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\newcommandx{\fullpageanswerbox}[6][1=\hfill,2=white,3=black,4=black,5=0.90,%
- 6=1.00,usedefault]{%
- \ifthenelse{\equal{#1}{}}%
- {\begin{center}%
- \fcolorbox{#3}{#2}{%
- \emptyanswer[#5][#6]}%
- \vspace{\baselineskip}%
- \end{center}}%
- {\emptybox[#1][#2][#3][#4][#5][#6]}%
-}%
-\newcommandx{\fullpageanswerform}[4][1=q1,2=Response,3=1.00,4=0.90,usedefault]{%
- \vspace{\baselineskip}%
- \begin{Form}
- \begin{center}%
- \TextField[value={#2},%
- name=#1,%
- width=#4\linewidth,%
- height=#3\textheight,%
- backgroundcolor=formcolor,%
- multiline=true,%
- charsize=10pt,%
- bordercolor=black]{}%
- \end{center}%
- \end{Form}%
- \vspace{\baselineskip}%
-}%
-\mdfdefinestyle{miinstructornotestyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={INSTRUCTOR NOTE},
- frametitlebackgroundcolor=cyan!60,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=cyan!25,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{miinstructornote}{%
- \begin{mdframed}[style=miinstructornotestyle]
- \begin{adjactivityanswer}[cyan!25][cyan!25][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\mdfdefinestyle{mistudentnotestyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={STUDENT NOTE},
- frametitlebackgroundcolor=cyan!60,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=cyan!25,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{mistudentnote}{%
- \begin{mdframed}[style=mistudentnotestyle]
- \begin{adjactivityanswer}[cyan!25][cyan!25][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\mdfdefinestyle{miderivationstyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=0pt,rightmargin=0pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={DERIVATION},
- frametitlebackgroundcolor=orange!60,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=orange!25,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{miderivation}{%
- \begin{mdframed}[style=miderivationstyle]
- \setcounter{equation}{0}
- \begin{align}
- \BODY
- \end{align}
- \end{mdframed}
-}%
-\NewEnviron{miderivation*}{%
- \begin{mdframed}[style=miderivationstyle]
- \setcounter{equation}{0}
- \begin{align*}
- \BODY
- \end{align*}
- \end{mdframed}
-}%
-\mdfdefinestyle{mistandardstyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={STANDARD},
- frametitlebackgroundcolor=cyan!60,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=cyan!25,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{mistandard}{%
- \begin{mdframed}[style=mistandardstyle]
- \begin{adjactivityanswer}[cyan!25][cyan!25][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\mdfdefinestyle{bwinstructornotestyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={INSTRUCTOR NOTE},
- frametitlebackgroundcolor=gray!50,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=gray!20,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{bwinstructornote}{%
- \begin{mdframed}[style=bwinstructornotestyle]
- \begin{adjactivityanswer}[gray!20][gray!20][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\mdfdefinestyle{bwstudentnotestyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={STUDENT NOTE},
- frametitlebackgroundcolor=gray!50,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=gray!20,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{bwstudentnote}{%
- \begin{mdframed}[style=bwstudentnotestyle]
- \begin{adjactivityanswer}[gray!20][gray!20][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\mdfdefinestyle{bwderivationstyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=0pt,rightmargin=0pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={DERIVATION},
- frametitlebackgroundcolor=gray!50,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=gray!20,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{bwderivation}{%
- \begin{mdframed}[style=bwderivationstyle]
- \setcounter{equation}{0}
- \begin{align}
- \BODY
- \end{align}
- \end{mdframed}
-}%
-\NewEnviron{bwderivation*}{%
- \begin{mdframed}[style=bwderivationstyle]
- \setcounter{equation}{0}
- \begin{align*}
- \BODY
- \end{align*}
- \end{mdframed}
-}%
-\mdfdefinestyle{bwstandardstyle}{%
- hidealllines=false,skipbelow=\baselineskip,skipabove=\baselineskip,
- leftmargin=40pt,rightmargin=40pt,linewidth=1,roundcorner=10,
- nobreak=true,
- frametitle={STANDARD},
- frametitlebackgroundcolor=gray!50,frametitlerule=true,frametitlerulewidth=1,
- backgroundcolor=gray!20,
- linecolor=black,fontcolor=black,shadow=true}
-\NewEnviron{bwstandard}{%
- \begin{mdframed}[style=bwstandardstyle]
- \begin{adjactivityanswer}[gray!20][gray!20][black]
- \BODY
- \end{adjactivityanswer}
- \end{mdframed}
-}%
-\NewEnviron{mysolution}{%
- \setcounter{equation}{0}
- \begin{align}
- \BODY
- \end{align}
-}%
-\NewEnviron{mysolution*}{%
- \setcounter{equation}{0}
- \begin{align*}
- \BODY
- \end{align*}
-}%
-\newenvironment{problem}[1]{%
- \newpage%
- \section*{#1}%
- \newlist{parts}{enumerate}{2}%
- \setlist[parts]{label=(\alph*)}}{\newpage}
-\newcommand{\problempart}{\item}%
-\newcommand{\reason}[1]{\begin{minipage}{5cm}{#1}\end{minipage}}
-\newcommand*{\checkpoint}{%
- \vspace{1cm}\begin{center}%
- \colorbox{yellow!80}{|--------- CHECKPOINT ---------|}%
- \end{center}}%
-\newcommandx*{\image}[4][1={scale=1},usedefault]{%
- \begin{figure}[H]
- \begin{center}%
- \includegraphics[#1]{#2}%
- \end{center}%
- \caption{#3}%
- \label{#4}%
- \end{figure}}
-\newcommand*{\sneakyone}[1]{\ensuremath{\cancelto{1}{#1}}}
-\newcommand*{\parallelto}{\ensuremath{{{\mkern3mu\vphantom{\perp}\vrule depth 0pt
- \mkern2mu\vrule depth 0pt\mkern3mu}}}}
-\newcommand*{\perpendicularto}{\ensuremath{\perp}}
-\newcommand*{\qed}{\ensuremath{\text{ Q.E.D.}}}
-\newcommand*{\chkquantity}[1]{%
- \begin{center}
- \begin{tabular}{C{4.5cm} C{4cm} C{4cm} C{4cm}}
- name & baseunit & drvdunit & altnunit \tabularnewline
- \cs{#1} & \csname #1onlybaseunit\endcsname & \csname #1onlydrvdunit\endcsname &
- \csname #1onlyaltnunit\endcsname
- \end{tabular}
- \end{center}
-}%
-\newcommand*{\chkconstant}[1]{%
- \begin{center}
- \begin{tabular}{C{4cm} C{4cm} C{4cm}}
- name & symbol & value \tabularnewline
- \cs{#1} & \csname #1mathsymbol\endcsname & \csname #1value\endcsname
- \tabularnewline
- baseunit & drvdunit & altnunit \tabularnewline
- \csname #1onlybaseunit\endcsname & \csname #1onlydrvdunit\endcsname &
- \csname #1onlyaltnunit\endcsname
- \end{tabular}
- \end{center}
-}%
% \end{macrocode}
-% \newpage
-% \section{Acknowledgements}
-% I thank Marcel Heldoorn, Joseph Wright, Scott Pakin, Thomas Sturm, Aaron Titus,
-% David Zaslavsky, Ruth Chabay, and Bruce Sherwood. Special thanks to Martin
-% Scharrer for his \texttt{sty2dtx.pl} utility, which saved me days of typing.
-% Special thanks also to Herbert Schulz for his custom \texttt{dtx} engine for
-% \texttt{TeXShop}. Very special thanks to Ulrich Diez for providing the mechanism
-% that defines physics quantities and constants. Also very special thanks to
-% students who helped test recent versions of this package.
+% \restoregeometry
%
% \iffalse
%</package>
diff --git a/macros/latex/contrib/mandi/mandi.ins b/macros/latex/contrib/mandi/mandi.ins
index 363aaa3520..522a62d88a 100644
--- a/macros/latex/contrib/mandi/mandi.ins
+++ b/macros/latex/contrib/mandi/mandi.ins
@@ -6,27 +6,31 @@
%%
%% mandi.dtx (with options: `install')
%%
-%% Copyright (C) 2018 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.
+%% 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'.
+%% This work has the LPPL maintenance status `maintained'.
%%
-%% The Current Maintainer of this work is Paul J. Heafner.
+%% 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
+%% README.md
%%
%% and includes the derived files mandi.sty
-%% vdemo.py.
-%% ---------------------------------------------------------------------------
+%% mandistudent.sty
+%% mandiexp.sty
+%% vdemo.py
+%% ---------------------------------------------------------------------------
%%
\input docstrip.tex
\keepsilent
@@ -34,48 +38,54 @@
\usedir{tex/latex/mandi}
\preamble
-Copyright (C) 2018 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.
+ 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'.
+ This work has the LPPL maintenance status `maintained'.
-The Current Maintainer of this work is Paul J. Heafner.
+ 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
+ README.md
and includes the derived files mandi.sty
- vdemo.py.
----------------------------------------------------------------------------
+ mandistudent.sty
+ mandiexp.sty
+ vdemo.py
+ ---------------------------------------------------------------------------
\endpreamble
\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
+\generate{\file{mandistudent.sty}{\from{mandistudent.dtx}{package}}}
+\generate{\file{mandiexp.sty}{\from{mandiexp.dtx}{package}}}
\generate{\usepreamble\empty\usepostamble\empty
- \file{vdemo.py}{\from{\jobname.dtx}{vdemo}}}
+ \file{vdemo.py}{\from{mandistudent.dtx}{vdemo}}}
\obeyspaces
\Msg{*************************************************************}
\Msg{* *}
-\Msg{* To finish the installation you have to move the following *}
-\Msg{* file into a directory searched by TeX: *}
-\Msg{* *}
-\Msg{* mandi.sty *}
-\Msg{* *}
-\Msg{* To produce the documentation run the file mandi.dtx *}
-\Msg{* through pdfLaTeX. *}
+\Msg{* To finish the installation, open a command line and *}
+\Msg{* type the following, repeating 2-4 until there are no *}
+\Msg{* warnings: *}
+\Msg{* 2. lualatex mandi.dtx (lualatex is required) *}
+\Msg{* 3. makeindex -s gind.ist -o mandi.ind mandi.idx *}
+\Msg{* 4. makeindex -s gglo.ist -o mandi.gls mandi.glo *}
+\Msg{* Move the *.sty files into a directory searched by TeX. *}
+\Msg{* The vdemo.py file is not needed. *}
\Msg{* *}
\Msg{*************************************************************}
\endbatchfile
-
\endinput
%%
%% End of file `mandi.ins'.
diff --git a/macros/latex/contrib/mandi/mandi.pdf b/macros/latex/contrib/mandi/mandi.pdf
index bb4f4fc947..f86fe84c06 100644
--- a/macros/latex/contrib/mandi/mandi.pdf
+++ b/macros/latex/contrib/mandi/mandi.pdf
Binary files differ
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
diff --git a/macros/latex/contrib/mandi/mandistudent.dtx b/macros/latex/contrib/mandi/mandistudent.dtx
new file mode 100644
index 0000000000..278725234c
--- /dev/null
+++ b/macros/latex/contrib/mandi/mandistudent.dtx
@@ -0,0 +1,1789 @@
+% \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>
+%
+%<*vdemo>
+from vpython import *
+
+scene.width = 400
+scene.height = 760
+# constants and data
+g = 9.8 # m/s^2
+mball = 0.03 # kg
+Lo = 0.26 # m
+ks = 1.8 # N/m
+deltat = 0.01 # s
+
+# objects (origin is at ceiling)
+ceiling = box(pos=vector(0,0,0), length=0.2, height=0.01,
+ width=0.2)
+ball = sphere(pos=vector(0,-0.3,0),radius=0.025,
+ color=color.orange)
+spring = helix(pos=ceiling.pos, axis=ball.pos-ceiling.pos,
+ color=color.cyan,thickness=0.003,coils=40,
+ radius=0.010)
+
+# initial values
+pball = mball * vector(0,0,0) # kg m/s
+Fgrav = mball * g * vector(0,-1,0) # N
+t = 0
+
+# improve the display
+scene.autoscale = False # turn off automatic camera zoom
+scene.center = vector(0,-Lo,0) # move camera down
+scene.waitfor('click') # wait for a mouse click
+
+# initial calculation loop
+# calculation loop
+while t < 10:
+ rate(100)
+ # we need the stretch
+ s = mag(ball.pos) - Lo
+ # we need the spring force
+ Fspring = ks * s * -norm(spring.axis)
+ Fnet = Fgrav + Fspring
+ pball = pball + Fnet * deltat
+ ball.pos = ball.pos + (pball / mball) * deltat
+ spring.axis = ball.pos - ceiling.pos
+ t = t + deltat
+%</vdemo>
+%
+%<*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{mandistudent.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{706}
+%
+% \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 \mandistudent\ Package}\setplace{sec:mandistudentpkg}
+%
+% \mandi\ comes with an accessory package \mandistudent,
+% which provides a collection of commands physics students can
+% use for writing problem solutions. This package focuses on
+% the most frequently needed tools. These commands should always
+% be used in math mode. Note that \mandistudent\ requires, and
+% loads, \mandi\ but \mandi\ doesn't require, and doesn't load,
+% \mandistudent.
+%
+% Load \mandistudent\ as you would any package in your preamble.
+% There are no package options.
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{dispListing*}{sidebyside=false,listing only}
+ \usepackage{mandistudent}
+\end{dispListing*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}{mandistudentversion}{}
+ Typesets the current version and build date.
+\end{docCommand}
+\begin{dispExample*}{sidebyside=false}
+ The version is \mandistudentversion\ and is a stable build.
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{Traditional Vector Notation}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{symbol}\oarg{labels},%
+ ]%
+ {%
+ {%
+ doc name = vec,%
+ doc description = use this variant for boldface notation,%
+ },%
+ {%
+ doc name = vec*,%
+ doc description = use this variant for arrow notation,%
+ }%
+ }%
+ Powerful and intelligent command for symbolic vector notation. The
+ mandatory argument is the symbol for the vector quantity. The optional
+ label(s) consists of superscripts and/or subscripts and can be
+ mathematical or textual in nature. If textual, be sure to wrap them in
+ |\symup{...}| for proper typesetting. The starred variant gives arrow
+ notation whereas without the star you get boldface notation. Subscript
+ and superscript labels can be arbitrarily mixed, and order doesn't matter.
+ This command redefines the default \LaTeX\ |\vec| command.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \vec{p} \) \\
+ \( \vec{p}_{2} \) \\
+ \( \vec{p}^{\symup{ball}} \) \\
+ \( \vec{p}_{\symup{final}} \) \\
+ \( \vec{p}^{\symup{ball}}_{\symup{final}} \) \\
+ \( \vec{p}^{\symup{final}}_{\symup{ball}} \) \\
+ \( \vec*{p} \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{symbol}\oarg{labels},%
+ ]%
+ {%
+ {%
+ doc name = dirvec,%
+ doc description = use this variant for boldface notation,%
+ },%
+ {%
+ doc name = dirvec*,%
+ doc description = use this variant for arrow notation,%
+ }%
+ }%
+ Powerful and intelligent command for typesetting the direction of
+ a vector. The options are the same as those for \refCom{vec}.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.65}
+ \( \dirvec{p} \) \\
+ \( \dirvec{p}_{2} \) \\
+ \( \dirvec{p}^{\symup{ball}} \) \\
+ \( \dirvec{p}_{\symup{final}} \) \\
+ \( \dirvec{p}^{\symup{ball}}_{\symup{final}} \) \\
+ \( \dirvec{p}^{\symup{final}}_{\symup{ball}} \) \\
+ \( \dirvec*{p} \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}
+ {%
+ {%
+ doc name = zerovec,%
+ doc description = use this variant for boldface notation,%
+ },%
+ {%
+ doc name = zerovec*,%
+ doc description = use this variant for arrow notation,%
+ },%
+ }%
+ Command for typesetting the zero vector. The starred variant gives
+ arrow notation. Without the star you get boldface notation.
+\end{docCommands}
+\begin{dispExample}
+ \( \zerovec \) \\
+ \( \zerovec* \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}{changein}{}%
+ Semantic alias for |\Delta|.
+\end{docCommand}
+\begin{dispExample}
+ \( \changein t \) \\
+ \( \changein \vec{p} \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new = 2021-02-21,%
+ doc parameter = \oarg{size}\marg{quantity},%
+ ]%
+ {%
+ {%
+ doc name = doublebars,%
+ doc description = double bars,%
+ },%
+ {%
+ doc name = doublebars*,%
+ doc description = double bars for fractions,%
+ },%
+ {%
+ doc name = singlebars,%
+ doc description = single bars,%
+ },%
+ {%
+ doc name = singlebars*,%
+ doc description = single bars for fractions,%
+ },%
+ {%
+ doc name = anglebrackets,%
+ doc description = angle brackets,%
+ },%
+ {%
+ doc name = anglebrackets*,%
+ doc description = angle brackets for fractions,%
+ },%
+ {%
+ doc name = parentheses,%
+ doc description = parentheses,%
+ },%
+ {%
+ doc name = parentheses*,%
+ doc description = parentheses for fractions,%
+ },%
+ {%
+ doc name = squarebrackets,%
+ doc description = square brackets,%
+ },%
+ {%
+ doc name = squarebrackets*,%
+ doc description = square brackets for fractions,%
+ },%
+ {%
+ doc name = curlybraces,%
+ doc description = curly braces,%
+ },%
+ {%
+ doc name = curlybraces*,%
+ doc description = curly braces for fractions,%
+ },%
+ }%
+ If no argument is given, a placeholder is provided.
+ Sizers like |\big|,|\Big|,|\bigg|, and |\Bigg| can
+ be optionally specified. Beginners are encouraged
+ not to use them. See the
+ \href{https://www.ctan.org/pkg/mathtools}{\pkg{mathtools}} package
+ documentation for details.
+\end{docCommands}
+\begin{dispExample}
+ \[ \doublebars{} \]
+ \[ \doublebars{\vec{a}} \]
+ \[ \doublebars*{\frac{\vec{a}}{3}} \]
+ \[ \doublebars[\Bigg]{\frac{\vec{a}}{3}} \]
+\end{dispExample}
+\begin{dispExample}
+ \[ \singlebars{} \]
+ \[ \singlebars{x} \]
+ \[ \singlebars*{\frac{x}{3}} \]
+ \[ \singlebars[\Bigg]{\frac{x}{3}} \]
+\end{dispExample}
+\begin{dispExample}
+ \[ \anglebrackets{} \]
+ \[ \anglebrackets{\vec{a}} \]
+ \[ \anglebrackets*{\frac{\vec{a}}{3}} \]
+ \[ \anglebrackets[\Bigg]{\frac{\vec{a}}{3}} \]
+\end{dispExample}
+\begin{dispExample}
+ \[ \parentheses{} \]
+ \[ \parentheses{x} \]
+ \[ \parentheses*{\frac{x}{3}} \]
+ \[ \parentheses[\Bigg]{\frac{x}{3}} \]
+\end{dispExample}
+\begin{dispExample}
+ \[ \squarebrackets{} \]
+ \[ \squarebrackets{x} \]
+ \[ \squarebrackets*{\frac{x}{3}} \]
+ \[ \squarebrackets[\Bigg]{\frac{x}{3}} \]
+\end{dispExample}
+\begin{dispExample}
+ \[ \curlybraces{} \]
+ \[ \curlybraces{x} \]
+ \[ \curlybraces*{\frac{x}{3}} \]
+ \[ \curlybraces[\Bigg]{\frac{x}{3}} \]
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new = 2021-02-21,%
+ doc parameter = \oarg{size}\marg{quantity},%
+ ]%
+ {%
+ {%
+ doc name = magnitude,%
+ doc description = alias for double bars,%
+ },%
+ {%
+ doc name = magnitude*,%
+ doc description = alias for double bars for fractions,%
+ },%
+ {%
+ doc name = norm,%
+ doc description = alias for double bars,%
+ },%
+ {%
+ doc name = norm*,%
+ doc description = alias for double bars for fractions,%
+ },%
+ {%
+ doc name = absolutevalue,%
+ doc description = alias for single bars,%
+ },%
+ {%
+ doc name = absolutevalue*,%
+ doc description = alias for single bars for fractions,%
+ },%
+ }%
+ Semantic aliases. Use \refCom{magnitude} or \refCom{magnitude*} to
+ typeset the magnitude of a vector.
+\end{docCommands}
+\begin{dispExample}
+ \[ \magnitude{\vec{p}} \]
+ \[ \magnitude{\vec*{p}} \]
+ \[ \magnitude*{\vec{p}_{\symup{final}}} \]
+ \[ \magnitude*{\vec*{p}_{\symup{final}}} \]
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc new = 2021-04-06,%
+ ]%
+ {%
+ {%
+ doc name = parallelto,%
+ },%
+ {%
+ doc name = perpendicularto,%
+ },%
+ }%
+ Commands for geometric relationships, mainly
+ intended for subscripts.
+\end{docCommands}
+\begin{dispExample*}{lefthand ratio=0.6}
+ \( \vec{F}_{\parallelto} + \vec{F}_{\perpendicularto} \)
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{Problems and Annotated Problem Solutions}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docEnvironments}[%
+ doc new = 2021-02-03,%
+ doc parameter = \marg{title},%
+ doclang/environment content = problem,%
+ ]%
+ {%
+ {%
+ doc name = physicsproblem,%
+ doc description = use this variant for vertical lists,%
+ },%
+ {%
+ doc name = physicsproblem*,%
+ doc description = use this variant for in-line lists,%
+ },%
+ {%
+ doc name = parts,%
+ doc description = provides problem parts,%
+ },%
+ }%
+ Provides an environment for stating physics problems. Each problem will
+ begin on a new page. See the examples for how to handle single and
+ multiple part problems.
+\end{docEnvironments}
+\begin{docCommand}[doc new = 2012-02-03]{problempart}{}
+ Denotes a part of a problem within a \refEnv{parts}
+ environment.
+\end{docCommand}
+\begin{dispExample*}{sidebyside=false}
+ \begin{physicsproblem}{Problem 1}
+ This is a physics problem with no parts.
+ \end{physicsproblem}
+\end{dispExample*}
+\begin{dispExample*}{sidebyside=false}
+ \begin{physicsproblem}{Problem 2}
+ This is a physics problem with multiple parts.
+ The list is vertical.
+ \begin{parts}
+ \problempart This is the first part.
+ \problempart This is the second part.
+ \problempart This is the third part.
+ \end{parts}
+ \end{physicsproblem}
+\end{dispExample*}
+\begin{dispExample*}{sidebyside=false}
+ \begin{physicsproblem*}{Problem 3}
+ This is a physics problem with multiple parts.
+ The list is in-line.
+ \begin{parts}
+ \problempart This is the first part.
+ \problempart This is the second part.
+ \problempart This is the third part.
+ \end{parts}
+ \end{physicsproblem*}
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docEnvironments}[%
+ doc updated = 2021-02-26,%
+ doc parameter = {},%
+ doclang/environment content = solution steps,%
+ ]%
+ {%
+ {%
+ doc name = physicssolution,%
+ doc description = use this variant for numbered steps,%
+ },%
+ {%
+ doc name = physicssolution*,%
+ doc description = use this variant for unnumbered steps,%
+ },%
+ }%
+ This environment is only for mathematical solutions. The starred
+ variant omits numbering of steps. See the examples.
+\end{docEnvironments}
+\begin{dispExample}
+ \begin{physicssolution}
+ x &= y + z \\
+ z &= x - y \\
+ y &= x - z
+ \end{physicssolution}
+ \begin{physicssolution*}
+ x &= y + z \\
+ z &= x - y \\
+ y &= x - z
+ \end{physicssolution*}
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc updated = 2012-02-26]{reason}{\marg{reason}}
+ Provides an annotation in a step-by-step solution.
+ Keep reasons short and to the point. Wrap mathematical
+ content in math mode.
+\end{docCommand}
+\begin{dispExample}
+ \begin{physicssolution}
+ x &= y + z \reason{This is a reason.} \\
+ z &= x - y \reason{This is a reason too.} \\
+ y &= x - z \reason{final answer}
+ \end{physicssolution}
+ \begin{physicssolution*}
+ x &= y + z \reason{This is a reason.} \\
+ z &= x - y \reason{This is a reason too.} \\
+ y &= x - z \reason{final answer}
+ \end{physicssolution*}
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+% When writing solutions, remember that the \refEnv{physicssolution}
+% environment is \emph{only} for mathematical content, not textual
+% content or explanations.
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{dispListing*}{sidebyside=false,listing only}
+ \begin{physicsproblem}{Combined Problem and Solution}
+ This is an interesting physics problem.
+ \begin{physicssolution}
+ The solution goes here.
+ \end{physicssolution}
+ \end{physicsproblem}
+\end{dispListing*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \begin{physicsproblem}{Combined Multipart Problem with Solutions}
+ This is a physics problem with multiple parts.
+ \begin{parts}
+ \problempart This is the first part.
+ \begin{physicssolution}
+ The solution goes here.
+ \end{physicssolution}
+ \problempart This is the second part.
+ \begin{physicssolution}
+ The solution goes here.
+ \end{physicssolution}
+ \problempart This is the third part.
+ \begin{physicssolution}
+ The solution goes here.
+ \end{physicssolution}
+ \end{parts}
+ \end{physicsproblem}
+\end{dispListing*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-02-06]{hilite}{%
+ \oarg{color}\marg{target}\oarg{shape}
+ }%
+ Hilites the desired target, which can be an entire mathematical expression
+ or a part thereof. The default color is magenta and the default shape is a
+ rectangle.
+\end{docCommand}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \begin{align*}
+ (\Delta s)^2 &= -(\Delta t)^2 + (\Delta x)^2 + (\Delta y)^2 +
+ (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[rounded rectangle] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[rectangle] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[ellipse] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^{\hilite{2}[circle]} &= \hilite[green]{-}[circle]
+ (\Delta t)^{\hilite[cyan]{2}[circle]}+
+ (\Delta x)^{\hilite[orange]{2}[circle]} +
+ (\Delta y)^{\hilite[blue!50]{2}[circle]} +
+ (\Delta z)^{\hilite[violet!45]{2}[circle]}
+ \end{align*}
+\end{dispListing*}
+ \begin{align*}
+ (\Delta s)^2 &= -(\Delta t)^2 + (\Delta x)^2 + (\Delta y)^2 +
+ (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[rounded rectangle] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[rectangle] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^2 &= \hilite{-(\Delta t)^2 + (\Delta x)^2}[ellipse] +
+ (\Delta y)^2 + (\Delta z)^2 \\
+ (\Delta s)^{\hilite{2}[circle]} &= \hilite[green]{-}[circle]
+ (\Delta t)^{\hilite[cyan]{2}[circle]}+
+ (\Delta x)^{\hilite[orange]{2}[circle]} +
+ (\Delta y)^{\hilite[blue!50]{2}[circle]} +
+ (\Delta z)^{\hilite[violet!45]{2}[circle]}
+ \end{align*}
+\begin{dispListing*}{sidebyside=false,listing only}
+ \begin{align*}
+ \Delta\vec{p} &= \vec{F}_{\sumup{net}}\Delta t \\
+ \hilite[orange]{\Delta\vec{p}}[circle] &= \vec{F}_{\symup{net}}\Delta t \\
+ \Delta\vec{p} &= \hilite[yellow!50]{\vec{F}_{\symup{net}}}
+ [rounded rectangle]\Delta t \\
+ \Delta\vec{p} &= \vec{F}_{\symup{net}}\hilite[olive!50]
+ {\Delta t}[rectangle] \\
+ \Delta\vec{p} &= \hilite[cyan!50]{\vec{F}_{\symup{net}}\Delta t}
+ [ellipse] \\
+ \hilite{\Delta\vec{p}}[rectangle] &= \vec{F}_{\symup{net}}\Delta t
+ \end{align*}
+\end{dispListing*}
+ \begin{align*}
+ \Delta\vec{p} &= \vec{F}_{\symup{net}}\Delta t \\
+ \hilite[orange]{\Delta\vec{p}}[circle] &= \vec{F}_{\symup{net}}
+ \Delta t \\
+ \Delta\vec{p} &= \hilite[yellow!50]{\vec{F}_{\symup{net}}}
+ [rounded rectangle]\Delta t \\
+ \Delta\vec{p} &= \vec{F}_{\symup{net}}\hilite[olive!50]{\Delta t}
+ [rectangle] \\
+ \Delta\vec{p} &= \hilite[cyan!50]{\vec{F}_{\symup{net}}\Delta t}
+ [ellipse] \\
+ \hilite{\Delta\vec{p}}[rectangle] &= \vec{F}_{\symup{net}}\Delta t
+ \end{align*}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc updated = 2021-02-26]{image}{%
+ \oarg{options}\marg{caption}\marg{label}\marg{image}
+ }%
+ Simplified interface for importing an image. The images are treated
+ as floats, so they may not appear at the most logically intuitive
+ place.
+\end{docCommand}
+\begin{dispListing*}{sidebyside=false,listing only,verbatim ignore percent}
+ \image[scale=0.20]{example-image-1x1}
+ {Image shown 20 percent actual size.}{reffig1}
+\end{dispListing*}
+\image[scale=0.20]{example-image-1x1}
+ {Image shown 20 percent actual size.}{reffig1}
+\begin{dispExample*}{sidebyside=false}
+ Figure \ref{reffig1} is nice.
+ It's captioned \nameref{reffig1} and is on page \pageref{reffig1}.
+\end{dispExample*}
+\begin{dispListing*}{sidebyside=false,listing only,verbatim ignore percent}
+ \image[scale=0.20,angle=45]{example-image-1x1}
+ {Image shown 20 percent actual size and rotated.}{reffig1}
+\end{dispListing*}
+\image[scale=0.20,angle=45]{example-image-1x1}
+{Image shown 20 percent actual size and rotated.}{reffig2}
+\begin{dispExample*}{sidebyside=false}
+ Figure \ref{reffig2} is nice.
+ It's captioned \nameref{reffig2} and is on page \pageref{reffig2}.
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{Coordinate-Free and Index Notation}
+%
+% Beyond the current level of introductory physics, we need intelligent
+% commands for typesetting vector and tensor symbols and components
+% suitable for both coordinate-free and index notations.
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \oarg{delimiter}\marg{\ensuremath{c_1,\dots,c_n}},%
+ ]%
+ {%
+ {%
+ doc name = colvec,%
+ },%
+ {%
+ doc name = rowvec,%
+ },%
+ }%
+ Typesets column vectors and row vectors as numeric or symbolic components.
+ There can be more than three components. The delimiter used in the list of
+ components can be specified; the default is a comma. Units are not
+ supported, so these are mainly for symbolic work.
+\end{docCommands}
+\begin{dispExample}
+ \[ \colvec{1,2,3} \]
+ \[ \rowvec{1,2,3} \]
+ \[ \colvec{x^0,x^1,x^2,x^3} \]
+ \[ \rowvec{x_0,x_1,x_2,x_3} \]
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{symbol},%
+ ]%
+ {%
+ {%
+ doc name = veccomp,%
+ doc description = use this variant for coordinate-free vector notation,%
+ },%
+ {%
+ doc name = veccomp*,%
+ doc description = use this variant for index vector notation,%
+ },%
+ {%
+ doc name = tencomp,%
+ doc description = use this variant for coordinate-free tensor notation,%
+ },%
+ {%
+ doc name = tencomp*,%
+ doc description = use this variant for index tensor notation,%
+ },%
+ }%
+ Conforms to ISO 80000-2 notation.
+\end{docCommands}
+\begin{dispExample}
+ \( \veccomp{r} \) \\
+ \( \veccomp*{r} \) \\
+ \( \tencomp{r} \) \\
+ \( \tencomp*{r} \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{index}\marg{index},%
+ ]%
+ {%
+ {%
+ doc name = valence,%
+ },%
+ {%
+ doc name = valence*,%
+ },%
+ }%
+ Typesets tensor valence. The starred variant typesets it horizontally.
+\end{docCommands}
+\begin{dispExample}
+ A vector is a \( \valence{1}{0} \) tensor. \\
+ A vector is a \( \valence*{1}{0} \) tensor.
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc parameter = \marg{slot,slot},%
+ ]%
+ {%
+ {%
+ doc name = contraction,%
+ },%
+ {%
+ doc name = contraction*,%
+ },%
+ }%
+ Typesets tensor contraction in coordinate-free notation. There
+ is no standard on this so we assert one here.
+\end{docCommands}
+\begin{dispExample}
+ \( \contraction{1,2} \) \\
+ \( \contraction*{1,2} \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}%
+ {%
+ {%
+ doc name = slot,%
+ doc parameter = \oarg{vector},%
+ },%
+ {%
+ doc name = slot*,%
+ doc parameter = \oarg{vector},%
+ },%
+ }%
+ An intelligent slot command for coordinate-free vector
+ and tensor notation. The starred variants suppress the
+ underscore.
+\end{docCommands}
+\begin{dispExample}
+ \( (\slot) \) \\
+ \( (\slot[\vec{a}]) \) \\
+ \( (\slot*) \) \\
+ \( (\slot*[\vec{a}]) \)
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc new=2021-04-06]{diff}{}%
+ Intelligent differential (exterior derivative)
+ operator.
+\end{docCommand}
+\begin{dispExample}
+ \[
+ \int x\,dx
+ \]
+ \[
+ \int x\,\diff{x}
+ \]
+ \[
+ \int x\,\diff*{x}
+ \]
+\end{dispExample}
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{\GlowScript\ and \VPython\ Program Listings}
+%
+% \href{https://\gsurl}{\GlowScript}\footnote{\href{https://\gsurl}{https://\gsurl}}
+% and
+% \href{https://\vpurl}{VPython}\footnote{\href{https://\vpurl}{https://\vpurl}}
+% are programming environments (both use \href{https://www.python.org}{Python})
+% frequently used in introductory physics to introduce students
+% for modeling physical systems. \mandi\ makes including code listings
+% very simple for students.
+%
+% \subsection{The \texttt{\small glowscriptblock} Environment}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docEnvironment}[%
+ doc updated = 2021-02-26,doclang/environment content=GlowScript code%
+ ]%
+ {glowscriptblock}{\oarg{options}(\meta{link})\marg{caption}}
+ Code placed here is nicely formatted and optionally linked to its source on
+ \href{https://\gsurl}{\GlowScriptorg}. Clicking anywhere in the code window
+ will open the link in the default browser. A caption is mandatory, and a
+ label is internally generated. The listing always begins on a new page. A
+ URL shortening utility is recommended to keep the URL from getting unruly.
+ For convenience, |https://| is automatically prepended to the URL and can
+ thus be omitted. The program must exist in a public, not private, folder.
+\end{docEnvironment}
+\begin{dispListing*}{sidebyside=false}
+\begin{glowscriptblock}(tinyurl.com/y3lnqyn3){A \texttt{GlowScript} Program}
+GlowScript 3.0 vpython
+
+scene.width = 400
+scene.height = 760
+# constants and data
+g = 9.8 # m/s^2
+mball = 0.03 # kg
+Lo = 0.26 # m
+ks = 1.8 # N/m
+deltat = 0.01 # s
+
+# objects (origin is at ceiling)
+ceiling = box(pos=vector(0,0,0), length=0.2, height=0.01,
+ width=0.2)
+ball = sphere(pos=vector(0,-0.3,0),radius=0.025,
+ color=color.orange)
+spring = helix(pos=ceiling.pos, axis=ball.pos-ceiling.pos,
+ color=color.cyan,thickness=0.003,coils=40,
+ radius=0.010)
+
+# initial values
+pball = mball * vector(0,0,0) # kg m/s
+Fgrav = mball * g * vector(0,-1,0) # N
+t = 0
+
+# improve the display
+scene.autoscale = False # turn off automatic camera zoom
+scene.center = vector(0,-Lo,0) # move camera down
+scene.waitfor('click') # wait for a mouse click
+
+# initial calculation loop
+# calculation loop
+while t < 10:
+ rate(100)
+ # we need the stretch
+ s = mag(ball.pos) - Lo
+ # we need the spring force
+ Fspring = ks * s * -norm(spring.axis)
+ Fnet = Fgrav + Fspring
+ pball = pball + Fnet * deltat
+ ball.pos = ball.pos + (pball / mball) * deltat
+ spring.axis = ball.pos - ceiling.pos
+ t = t + deltat
+\end{glowscriptblock}
+\end{dispListing*}
+\begin{glowscriptblock}(tinyurl.com/y3lnqyn3){A \texttt{GlowScript} Program}
+GlowScript 3.0 vpython
+
+scene.width = 400
+scene.height = 760
+# constants and data
+g = 9.8 # m/s^2
+mball = 0.03 # kg
+Lo = 0.26 # m
+ks = 1.8 # N/m
+deltat = 0.01 # s
+
+# objects (origin is at ceiling)
+ceiling = box(pos=vector(0,0,0), length=0.2, height=0.01,
+ width=0.2)
+ball = sphere(pos=vector(0,-0.3,0),radius=0.025,
+ color=color.orange)
+spring = helix(pos=ceiling.pos, axis=ball.pos-ceiling.pos,
+ color=color.cyan,thickness=0.003,coils=40,
+ radius=0.010)
+
+# initial values
+pball = mball * vector(0,0,0) # kg m/s
+Fgrav = mball * g * vector(0,-1,0) # N
+t = 0
+
+# improve the display
+scene.autoscale = False # turn off automatic camera zoom
+scene.center = vector(0,-Lo,0) # move camera down
+scene.waitfor('click') # wait for a mouse click
+
+# initial calculation loop
+# calculation loop
+while t < 10:
+ rate(100)
+ # we need the stretch
+ s = mag(ball.pos) - Lo
+ # we need the spring force
+ Fspring = ks * s * -norm(spring.axis)
+ Fnet = Fgrav + Fspring
+ pball = pball + Fnet * deltat
+ ball.pos = ball.pos + (pball / mball) * deltat
+ spring.axis = ball.pos - ceiling.pos
+ t = t + deltat
+\end{glowscriptblock}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{dispExample*}{sidebyside=false}
+ \GlowScript\ program \ref{gs:1} is nice.
+ It's called \nameref{gs:1} and is on page \pageref{gs:1}.
+\end{dispExample*}
+%
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{The \texttt{\small vpythonfile} Command}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommand}[doc updated = 2021-02-26]{vpythonfile}
+ {\oarg{options}\marg{file}\marg{caption}}
+ Command to load and typeset a \VPython\ program. The file is read from
+ \marg{file}. Clicking anywhere in the code window can optionally open
+ a link, passed as an option, in the default browser. A caption is mandatory,
+ and a label is internally generated. The listing always begins on a new page.
+ A URL shortening utility is recommended to keep the URL from getting unruly.
+ For convenience, |https://| is automatically prepended to the URL and can
+ thus be omitted.
+\end{docCommand}
+\begin{dispListing*}{sidebyside=false}
+\vpythonfile[hyperurl interior = https://vpython.org]{vdemo.py}
+ {A \VPython\ Program}
+\end{dispListing*}
+\vpythonfile[hyperurl interior = https://vpython.org]{vdemo.py}
+ {A \VPython\ Program}
+%\iffalse
+%</example>
+%\fi
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{dispExample*}{sidebyside=false}
+ \VPython\ program \ref{vp:1} is nice.
+ It's called \nameref{vp:1} and is on page \pageref{vp:1}.
+\end{dispExample*}
+%
+%\iffalse
+%</example>
+%\fi
+%
+% \subsection{The \texttt{\small glowscriptinline} and
+% \texttt{\small vpythoninline} Commands}
+%
+%\iffalse
+%<*example>
+%\fi
+\begin{docCommands}[%
+ doc updated = 2021-02-26,%
+ ]%
+ {%
+ {%
+ doc name = glowscriptinline,%
+ doc parameter = \marg{GlowScript code},%
+ },%
+ {%
+ doc name = vpythoninline,%
+ doc parameter = \marg{VPython code},%
+ },%
+ }%
+ Typesets a small, in-line snippet of code. The snippet should be
+ less than one line long.
+\end{docCommands}
+\begin{dispExample*}{sidebyside=false}
+ \GlowScript\ programs begin with \glowscriptinline{GlowScript 3.0 VPython}
+ and \VPython\ programs begin with \vpythoninline{from vpython import *}.
+\end{dispExample*}
+%\iffalse
+%</example>
+%\fi
+%
+% \StopEventually{}
+%
+% \newgeometry{left=0.50in,right=0.50in,top=1.00in,bottom=1.00in}
+% \subsection{\mandistudent\ 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\mandistudent@version{\mandi@version}
+\def\mandistudent@date{\mandi@date}
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+\DeclareRelease{v3.0.0}{2021-08-21}{mandistudent.sty}
+\DeclareCurrentRelease{v\mandi@version}{\mandi@date}
+\ProvidesPackage{mandistudent}
+ [\mandistudent@date\space v\mandistudent@version\space Macros for introductory physics]
+% \end{macrocode}
+%
+% Define a convenient package version command.
+%
+% \begin{macrocode}
+\newcommand*{\mandistudentversion}{v\mandistudent@version\space dated \mandistudent@date}
+% \end{macrocode}
+%
+% Load third party packages, documenting why each one is needed.
+%
+% \begin{macrocode}
+\RequirePackage{amsmath} % AMS goodness (don't load amssymb or amsfonts)
+\RequirePackage[inline]{enumitem} % needed for physicsproblem environment
+\RequirePackage{eso-pic} % needed for \hilite
+\RequirePackage[g]{esvect} % needed for nice vector arrow, style g
+\RequirePackage{pgfopts} % needed for key-value interface
+\RequirePackage{iftex} % needed for requiring LuaLaTeX
+\RequirePackage{makebox} % needed for consistent \dirvect; \makebox
+\RequirePackage{mandi}
+\RequirePackage{mathtools} % needed for paired delimiters; extends amsmath
+\RequirePackage{nicematrix} % needed for column and row vectors
+\RequirePackage[most]{tcolorbox} % needed for program listings
+\RequirePackage{tensor} % needed for index notation
+\RequirePackage{tikz} % needed for \hilite
+\usetikzlibrary{shapes,fit,tikzmark} % needed for \hilite
+\RequirePackage{unicode-math} % needed for Unicode support
+\RequirePackage{hyperref} % load last
+\RequireLuaTeX % require this engine
+% \end{macrocode}
+%
+% Set up the fonts to be consistent with ISO 80000-2 notation.
+% The \href{https://www.ctan.org/pkg/unicode-math}{\pkg{unicode-math}} package
+% loads the \href{https://www.ctan.org/pkg/fontspec}{\pkg{fontspec}} and
+% \href{https://www.ctan.org/pkg/xparse}{\pkg{xparse}}
+% packages. Note that \pkg{xparse} is now part of the \LaTeX\ kernel.
+% Because \pkg{unicode-math} is required, all documents using \mandi\ must
+% be compiled with an engine that supports Unicode. We recommend \lualatex.
+%
+% \begin{macrocode}
+\unimathsetup{math-style=ISO}
+\unimathsetup{warnings-off={mathtools-colon,mathtools-overbracket}}
+%
+% Use normal math letters from Latin Modern Math for familiarity with
+% textbooks.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase]
+ {Latin Modern Math} % default math font; better J
+% \end{macrocode}
+%
+% Borrow from GeX Gyre DejaVu Math for vectors and tensors to get single-storey g.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase,range={sfit/{latin},bfsfit/{latin}}]
+ {TeX Gyre DejaVu Math} % single-storey lowercase g
+% \end{macrocode}
+%
+% Borrow from GeX Gyre DejaVu Math to get single-storey g.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase,range={sfup/{latin},bfsfup/{latin}}]
+ {TeX Gyre DejaVu Math} % single-storey lowercase g
+% \end{macrocode}
+% Borrow |mathscr| and |mathbfscr| from XITS Math.\newline
+% See \url{https://tex.stackexchange.com/a/120073/218142}.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase,range={\mathscr,\mathbfscr}]{XITS Math}
+% \end{macrocode}
+%
+% Get original and bold |mathcal| fonts.\newline
+% See \url{https://tex.stackexchange.com/a/21742/218142}.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase,range={\mathcal,\mathbfcal},StylisticSet=1]{XITS Math}
+% \end{macrocode}
+%
+% Borrow Greek sfup and sfit letters from STIX Two Math.
+% Since this isn't officially supported in \pkg{unicode-math}
+% we have to manually set this up.
+%
+% \begin{macrocode}
+\setmathfont[Scale=MatchLowercase,range={"E17C-"E1F6}]{STIX Two Math}
+\newfontfamily{\symsfgreek}{STIX Two Math}
+% I don't understand why \text{...} is necessary.
+\newcommand{\symsfupalpha} {\text{\symsfgreek{^^^^e196}}}
+\newcommand{\symsfupbeta} {\text{\symsfgreek{^^^^e197}}}
+\newcommand{\symsfupgamma} {\text{\symsfgreek{^^^^e198}}}
+\newcommand{\symsfupdelta} {\text{\symsfgreek{^^^^e199}}}
+\newcommand{\symsfupepsilon} {\text{\symsfgreek{^^^^e1af}}}
+\newcommand{\symsfupvarepsilon} {\text{\symsfgreek{^^^^e19a}}}
+\newcommand{\symsfupzeta} {\text{\symsfgreek{^^^^e19b}}}
+\newcommand{\symsfupeta} {\text{\symsfgreek{^^^^e19c}}}
+\newcommand{\symsfuptheta} {\text{\symsfgreek{^^^^e19d}}}
+\newcommand{\symsfupvartheta} {\text{\symsfgreek{^^^^e1b0}}}
+\newcommand{\symsfupiota} {\text{\symsfgreek{^^^^e19e}}}
+\newcommand{\symsfupkappa} {\text{\symsfgreek{^^^^e19f}}}
+\newcommand{\symsfuplambda} {\text{\symsfgreek{^^^^e1a0}}}
+\newcommand{\symsfupmu} {\text{\symsfgreek{^^^^e1a1}}}
+\newcommand{\symsfupnu} {\text{\symsfgreek{^^^^e1a2}}}
+\newcommand{\symsfupxi} {\text{\symsfgreek{^^^^e1a3}}}
+\newcommand{\symsfupomicron} {\text{\symsfgreek{^^^^e1a4}}}
+\newcommand{\symsfuppi} {\text{\symsfgreek{^^^^e1a5}}}
+\newcommand{\symsfupvarpi} {\text{\symsfgreek{^^^^e1b3}}}
+\newcommand{\symsfuprho} {\text{\symsfgreek{^^^^e1a6}}}
+\newcommand{\symsfupvarrho} {\text{\symsfgreek{^^^^e1b2}}}
+\newcommand{\symsfupsigma} {\text{\symsfgreek{^^^^e1a8}}}
+\newcommand{\symsfupvarsigma} {\text{\symsfgreek{^^^^e1a7}}}
+\newcommand{\symsfuptau} {\text{\symsfgreek{^^^^e1a9}}}
+\newcommand{\symsfupupsilon} {\text{\symsfgreek{^^^^e1aa}}}
+\newcommand{\symsfupphi} {\text{\symsfgreek{^^^^e1b1}}}
+\newcommand{\symsfupvarphi} {\text{\symsfgreek{^^^^e1ab}}}
+\newcommand{\symsfupchi} {\text{\symsfgreek{^^^^e1ac}}}
+\newcommand{\symsfuppsi} {\text{\symsfgreek{^^^^e1ad}}}
+\newcommand{\symsfupomega} {\text{\symsfgreek{^^^^e1ae}}}
+\newcommand{\symsfupDelta} {\text{\symsfgreek{^^^^e180}}}
+\newcommand{\symsfupGamma} {\text{\symsfgreek{^^^^e17f}}}
+\newcommand{\symsfupTheta} {\text{\symsfgreek{^^^^e18e}}}
+\newcommand{\symsfupLambda} {\text{\symsfgreek{^^^^e187}}}
+\newcommand{\symsfupXi} {\text{\symsfgreek{^^^^e18a}}}
+\newcommand{\symsfupPi} {\text{\symsfgreek{^^^^e18c}}}
+\newcommand{\symsfupSigma} {\text{\symsfgreek{^^^^e18f}}}
+\newcommand{\symsfupUpsilon} {\text{\symsfgreek{^^^^e191}}}
+\newcommand{\symsfupPhi} {\text{\symsfgreek{^^^^e192}}}
+\newcommand{\symsfupPsi} {\text{\symsfgreek{^^^^e194}}}
+\newcommand{\symsfupOmega} {\text{\symsfgreek{^^^^e195}}}
+\newcommand{\symsfitalpha} {\text{\symsfgreek{^^^^e1d8}}}
+\newcommand{\symsfitbeta} {\text{\symsfgreek{^^^^e1d9}}}
+\newcommand{\symsfitgamma} {\text{\symsfgreek{^^^^e1da}}}
+\newcommand{\symsfitdelta} {\text{\symsfgreek{^^^^e1db}}}
+\newcommand{\symsfitepsilon} {\text{\symsfgreek{^^^^e1f1}}}
+\newcommand{\symsfitvarepsilon} {\text{\symsfgreek{^^^^e1dc}}}
+\newcommand{\symsfitzeta} {\text{\symsfgreek{^^^^e1dd}}}
+\newcommand{\symsfiteta} {\text{\symsfgreek{^^^^e1de}}}
+\newcommand{\symsfittheta} {\text{\symsfgreek{^^^^e1df}}}
+\newcommand{\symsfitvartheta} {\text{\symsfgreek{^^^^e1f2}}}
+\newcommand{\symsfitiota} {\text{\symsfgreek{^^^^e1e0}}}
+\newcommand{\symsfitkappa} {\text{\symsfgreek{^^^^e1e1}}}
+\newcommand{\symsfitlambda} {\text{\symsfgreek{^^^^e1e2}}}
+\newcommand{\symsfitmu} {\text{\symsfgreek{^^^^e1e3}}}
+\newcommand{\symsfitnu} {\text{\symsfgreek{^^^^e1e4}}}
+\newcommand{\symsfitxi} {\text{\symsfgreek{^^^^e1e5}}}
+\newcommand{\symsfitomicron} {\text{\symsfgreek{^^^^e1e6}}}
+\newcommand{\symsfitpi} {\text{\symsfgreek{^^^^e1e7}}}
+\newcommand{\symsfitvarpi} {\text{\symsfgreek{^^^^e1f5}}}
+\newcommand{\symsfitrho} {\text{\symsfgreek{^^^^e1e8}}}
+\newcommand{\symsfitvarrho} {\text{\symsfgreek{^^^^e1f4}}}
+\newcommand{\symsfitsigma} {\text{\symsfgreek{^^^^e1ea}}}
+\newcommand{\symsfitvarsigma} {\text{\symsfgreek{^^^^e1e9}}}
+\newcommand{\symsfittau} {\text{\symsfgreek{^^^^e1eb}}}
+\newcommand{\symsfitupsilon} {\text{\symsfgreek{^^^^e1ec}}}
+\newcommand{\symsfitphi} {\text{\symsfgreek{^^^^e1f3}}}
+\newcommand{\symsfitvarphi} {\text{\symsfgreek{^^^^e1ed}}}
+\newcommand{\symsfitchi} {\text{\symsfgreek{^^^^e1ee}}}
+\newcommand{\symsfitpsi} {\text{\symsfgreek{^^^^e1ef}}}
+\newcommand{\symsfitomega} {\text{\symsfgreek{^^^^e1f0}}}
+\newcommand{\symsfitDelta} {\text{\symsfgreek{^^^^e1c2}}}
+\newcommand{\symsfitGamma} {\text{\symsfgreek{^^^^e1c1}}}
+\newcommand{\symsfitTheta} {\text{\symsfgreek{^^^^e1d0}}}
+\newcommand{\symsfitLambda} {\text{\symsfgreek{^^^^e1c9}}}
+\newcommand{\symsfitXi} {\text{\symsfgreek{^^^^e1cc}}}
+\newcommand{\symsfitPi} {\text{\symsfgreek{^^^^e1ce}}}
+\newcommand{\symsfitSigma} {\text{\symsfgreek{^^^^e1d1}}}
+\newcommand{\symsfitUpsilon} {\text{\symsfgreek{^^^^e1d3}}}
+\newcommand{\symsfitPhi} {\text{\symsfgreek{^^^^e1d4}}}
+\newcommand{\symsfitPsi} {\text{\symsfgreek{^^^^e1d6}}}
+\newcommand{\symsfitOmega} {\text{\symsfgreek{^^^^e1d7}}}
+% \end{macrocode}
+%
+% Tweak the \href{https://www.ctan.org/pkg/esvect}{\pkg{esvect}} package
+% fonts to get the correct font size. Code provided by |@egreg|.\newline
+% See \url{https://tex.stackexchange.com/a/566676}.
+%
+% \begin{macrocode}
+\DeclareFontFamily{U}{esvect}{}
+\DeclareFontShape{U}{esvect}{m}{n}{%
+ <-5.5> vect5
+ <5.5-6.5> vect6
+ <6.5-7.5> vect7
+ <7.5-8.5> vect8
+ <8.5-9.5> vect9
+ <9.5-> vect10
+}{}%
+% \end{macrocode}
+%
+% Write a banner to the console showing the options in use.
+%
+% \begin{macrocode}
+\typeout{}%
+\typeout{mandistudent: You are using mandistudent \mandistudentversion.}%
+\typeout{mandistudent: This package requires LuaLaTeX.}%
+\typeout{mandistudent: This package changes the default math font(s).}%
+\typeout{mandistudent: This package redefines the \protect\vec\space command.}%
+\typeout{}%
+% \end{macrocode}
+%
+% A better, intelligent coordinate-free \refCom{vec} command. Note the use of
+% the |e{_^}| type of optional argument. This accounts for much of the
+% flexibility and power of this command. Also note the use of the \TeX\
+% primitives |\sb{}| and |\sp{}|. Why doesn't it work when I put spaces
+% around |#3| or |#4|? Because outside of |\ExplSyntaxOn...\ExplSyntaxOff|,
+% the |_| character has a different catcode and is treated as a mathematical
+% entity.\newline
+% See \url{https://tex.stackexchange.com/q/554706/218142}.\newline
+% See also \url{https://tex.stackexchange.com/a/531037/218142}.
+%
+% \begin{macrocode}
+\RenewDocumentCommand{\vec}{ s m e{_^} }{%
+ % Note the \, used to make superscript look better.
+ \IfBooleanTF {#1}
+ {\vv{#2}% % * gives an arrow
+ % Use \sp{} primitive for superscript.
+ % Adjust superscript for the arrow.
+ \sp{\IfValueT{#4}{\,#4}\vphantom{\smash[t]{\big|}}}
+ }%
+ {\symbfit{#2} % no * gives us bold
+ % Use \sp{} primitive for superscript.
+ % No superscript adjustment needed.
+ \sp{\IfValueT{#4}{#4}\vphantom{\smash[t]{\big|}}}
+ }%
+ % Use \sb{} primitive for subscript.
+ \sb{\IfValueT{#3}{#3}\vphantom{\smash[b]{|}}}
+}%
+% \end{macrocode}
+%
+% A command for the direction of a vector.
+% We use a slight tweak to get uniform hats that
+% requires the \href{https://www.ctan.org/pkg/makebox}{\pkg{makebox}}
+% package.\newline
+% See \url{https://tex.stackexchange.com/a/391204/218142}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\dirvec}{ s m e{_^} }{%
+ \widehat{\makebox*{\(w\)}{\ensuremath{%
+ \IfBooleanTF {#1}
+ {%
+ #2
+ }%
+ {%
+ \symbfit{#2}
+ }%
+ }%
+ }%
+ }%
+ \sb{\IfValueT{#3}{#3}\vphantom{\smash[b]{|}}}
+ \sp{\IfValueT{#4}{\,#4}\vphantom{\smash[t]{\big|}}}
+}%
+% \end{macrocode}
+%
+% The zero vector.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\zerovec}{ s }{%
+ \IfBooleanTF {#1}
+ {\vv{0}}%
+ {\symbfup{0}}%
+}%
+% \end{macrocode}
+%
+% Notation for column and row vectors.
+% Orginal code provided by |@egreg|.\newline
+% See \url{https://tex.stackexchange.com/a/39054/218142}.
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+\NewDocumentCommand{\colvec}{ O{,} m }{%
+ \vector_main:nnnn { p } { \\ } { #1 } { #2 }
+}%
+\NewDocumentCommand{\rowvec}{ O{,} m }{%
+ \vector_main:nnnn { p } { & } { #1 } { #2 }
+}%
+\seq_new:N \l__vector_arg_seq
+\cs_new_protected:Npn \vector_main:nnnn #1 #2 #3 #4 {%
+ \seq_set_split:Nnn \l__vector_arg_seq { #3 } { #4 }
+ \begin{#1NiceMatrix}[r]
+ \seq_use:Nnnn \l__vector_arg_seq { #2 } { #2 } { #2 }
+ \end{#1NiceMatrix}
+}%
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% Students always need this symbol.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\changein}{}{\Delta}
+% \end{macrocode}
+%
+% Intelligent delimiters provided via the
+% \href{https://www.ctan.org/pkg/mathtools}{\pkg{mathtools}} package.
+% Use the starred variants for fractions. You can supply optional sizes.
+% Note that default placeholders are used when the argument is empty.
+%
+% \begin{macrocode}
+\DeclarePairedDelimiterX{\doublebars}[1]{\lVert}{\rVert}{\ifblank{#1}{\:\cdot\:}{#1}}
+\DeclarePairedDelimiterX{\singlebars}[1]{\lvert}{\rvert}{\ifblank{#1}{\:\cdot\:}{#1}}
+\DeclarePairedDelimiterX{\anglebrackets}[1]{\langle}{\rangle}{\ifblank{#1}{\:\cdot\:}{#1}}
+\DeclarePairedDelimiterX{\parentheses}[1]{(}{)}{\ifblank{#1}{\:\cdot\:}{#1}}
+\DeclarePairedDelimiterX{\squarebrackets}[1]{\lbrack}{\rbrack}{\ifblank{#1}{\:\cdot\:}{#1}}
+\DeclarePairedDelimiterX{\curlybraces}[1]{\lbrace}{\rbrace}{\ifblank{#1}{\:\cdot\:}{#1}}
+% \end{macrocode}
+%
+% Some semantic aliases. Because of the way \refCom{vec} and
+% \refCom{dirvec} are defined, I reluctantly decided not to
+% implement a |\magvec| command. It would require accounting
+% for too mamy options. So \refCom{magnitude} is the new
+% solution.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\magnitude}{}{\doublebars}
+\NewDocumentCommand{\norm}{}{\doublebars}
+\NewDocumentCommand{\absolutevalue}{}{\singlebars}
+% \end{macrocode}
+%
+% Commands for two important geometric relationships. These are meant
+% mainly to be subscripts.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\parallelto}{}
+ {\mkern3mu\vphantom{\perp}\vrule depth 0pt\mkern2mu\vrule depth 0pt\mkern3mu}
+\NewDocumentCommand{\perpendicularto}{}{\perp}
+% \end{macrocode}
+%
+% An environment for problem statements. The starred variant gives
+% in-line lists.
+%
+% \begin{macrocode}
+\NewDocumentEnvironment{physicsproblem}{ m }{%
+ \newpage%
+ \section*{#1}%
+ \newlist{parts}{enumerate}{2}%
+ \setlist[parts]{label=\bfseries(\alph*)}}%
+ {}%
+\NewDocumentEnvironment{physicsproblem*}{ m }{%
+ \newpage%
+ \section*{#1}%
+ \newlist{parts}{enumerate*}{2}%
+ \setlist[parts]{label=\bfseries(\alph*)}}%
+ {}%
+\NewDocumentCommand{\problempart}{}{\item}%
+% \end{macrocode}
+%
+% An environment for problem solutions.
+%
+% \begin{macrocode}
+\NewDocumentEnvironment{physicssolution}{ +b }{%
+ % Make equation numbering consecutive through the document.
+ \begin{align}
+ #1
+ \end{align}
+}{}%
+\NewDocumentEnvironment{physicssolution*}{ +b }{%
+ % Make equation numbering consecutive through the document.
+ \begin{align*}
+ #1
+ \end{align*}
+}{}%
+% \end{macrocode}
+%
+% See \url{https://tex.stackexchange.com/q/570223/218142}.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\reason}{ O{4cm} m }
+ {&&\begin{minipage}{#1}\raggedright\small #2\end{minipage}}
+% \end{macrocode}
+%
+% Command for highlighting parts of, or entire, mathematical expressions.\newline
+% Original code by anonymous user |@abcdefg|, modified by me.\newline
+% See \url{https://texample.net/tikz/examples/beamer-arrows/}.\newline
+% See also \url{https://tex.stackexchange.com/a/406084/218142}.\newline
+% See also \url{https://tex.stackexchange.com/a/570858/218142}.\newline
+% See also \url{https://tex.stackexchange.com/a/570789/218142}.\newline
+% See also \url{https://tex.stackexchange.com/a/79659/218142}.\newline
+% See also \url{https://tex.stackexchange.com/q/375032/218142}.\newline
+% See also \url{https://tex.stackexchange.com/a/571744/218142}%
+%
+% \begin{macrocode}
+\newcounter{tikzhighlightnode}
+\NewDocumentCommand{\hilite}{ O{magenta!60} m O{rectangle} }{%
+ \stepcounter{tikzhighlightnode}%
+ \tikzmarknode{highlighted-node-\number\value{tikzhighlightnode}}{#2}%
+ \edef\temp{%
+ \noexpand\AddToShipoutPictureBG{%
+ \noexpand\begin{tikzpicture}[overlay,remember picture]%
+ \noexpand\iftikzmarkoncurrentpage{highlighted-node-\number\value{tikzhighlightnode}}%
+ \noexpand\node[inner sep=1.0pt,fill=#1,#3,fit=(highlighted-node-\number\value{tikzhighlightnode})]{};%
+ \noexpand\fi
+ \noexpand\end{tikzpicture}%
+ }%
+ }%
+ \temp%
+}%
+% \end{macrocode}
+%
+% A simplified command for importing images.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\image}{ O{scale=1} m m m }{%
+ \begin{figure}[ht!]
+ \begin{center}%
+ \includegraphics[#1]{#2}%
+ \end{center}%
+ \caption{#3}%
+ \label{#4}%
+ \end{figure}%
+}%
+% \end{macrocode}
+%
+% Intelligent commands for typesetting vector and tensor symbols and
+% components suitable for use with both coordinate-free and index
+% notations. Use starred form for index notation, unstarred form for
+% coordinate-free.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\veccomp}{ s m }{%
+ % Consider renaming this to \vectorsym.
+ \IfBooleanTF{#1}
+ {%
+ \symnormal{#2}%
+ }%
+ {%
+ \symbfit{#2}%
+ }%
+}%
+\NewDocumentCommand{\tencomp}{ s m }{%
+ % Consider renaming this to \tensororsym.
+ \IfBooleanTF{#1}
+ {%
+ \symsfit{#2}%
+ }%
+ {%
+ \symbfsfit{#2}
+ }%
+}%
+% \end{macrocode}
+%
+% Command to typeset tensor valence.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\valence}{ s m m }{%
+ \IfBooleanTF{#1}
+ {(#2,#3)}
+ {\binom{#2}{#3}}
+}%
+% \end{macrocode}
+%
+% Intelligent notation for contraction on pairs of slots.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\contraction}{ s m }{%
+ \IfBooleanTF{#1}
+ {\mathsf{C}}%
+ {\symbb{C}}%
+ _{#2}
+}%
+% \end{macrocode}
+%
+% Intelligent slot command for coordinate-free tensor notation.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\slot}{ s d[] }{%
+ % d[] must be used because of the way consecutive optional
+ % arguments are handled. See xparse docs for details.
+ \IfBooleanTF{#1}
+ {%
+ \IfValueTF{#2}
+ {% Insert a vector, but don't show the slot.
+ \smash{\makebox[1.5em]{\ensuremath{#2}}}
+ }%
+ {% No vector, no slot.
+ \smash{\makebox[1.5em]{\ensuremath{}}}
+ }%
+ }%
+ {%
+ \IfValueTF{#2}
+ {% Insert a vector and show the slot.
+ \underline{\smash{\makebox[1.5em]{\ensuremath{#2}}}}
+ }%
+ {% No vector; just show the slot.
+ \underline{\smash{\makebox[1.5em]{\ensuremath{}}}}
+ }%
+ }%
+}%
+% \end{macrocode}
+%
+% Intelligent differential (exterior derivative) operator.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\diff}{ s }{%
+ \mathop{}\!
+ \IfBooleanTF{#1}
+ {\symbfsfup{d}}%
+ {\symsfup{d}}%
+}%
+% \end{macrocode}
+%
+% Here is a clever way to color digits in program listsings thanks to
+% Ulrike Fischer.\newline
+% See \url{https://tex.stackexchange.com/a/570717/218142}.
+%
+% \begin{macrocode}
+\directlua{%
+ luaotfload.add_colorscheme("colordigits",
+ {["8000FF"] = {"one","two","three","four","five","six","seven","eight","nine","zero"}})
+}%
+\newfontfamily\colordigits{DejaVuSansMono}[RawFeature={color=colordigits}]
+% \end{macrocode}
+%
+% Set up a color scheme and a new code environment for listings. The new colors
+% are more restful on the eye. All listing commands now use
+% \href{https://www.ctan.org/pkg/tcolorbox}{\pkg{tcolorbox}}.\newline
+% See \url{https://tex.stackexchange.com/a/529421/218142}.
+%
+% \begin{macrocode}
+\newfontfamily{\gsfontfamily}{DejaVuSansMono} % new font for listings
+\definecolor{gsbggray} {rgb}{0.90,0.90,0.90} % background gray
+\definecolor{gsgray} {rgb}{0.30,0.30,0.30} % gray
+\definecolor{gsgreen} {rgb}{0.00,0.60,0.00} % green
+\definecolor{gsorange} {rgb}{0.80,0.45,0.12} % orange
+\definecolor{gspeach} {rgb}{1.00,0.90,0.71} % peach
+\definecolor{gspearl} {rgb}{0.94,0.92,0.84} % pearl
+\definecolor{gsplum} {rgb}{0.74,0.46,0.70} % plum
+\lstdefinestyle{vpython}{% % style for listings
+ backgroundcolor=\color{gsbggray},% % background color
+ basicstyle=\colordigits\footnotesize,% % default style
+ breakatwhitespace=true% % break at whitespace
+ breaklines=true,% % break long lines
+ captionpos=b,% % position caption
+ classoffset=1,% % STILL DON'T UNDERSTAND THIS
+ commentstyle=\color{gsgray},% % font for comments
+ deletekeywords={print},% % delete keywords from the given language
+ emph={self,cls,@classmethod,@property},% % words to emphasize
+ emphstyle=\color{gsorange}\itshape,% % font for emphasis
+ escapeinside={(*@}{@*)},% % add LaTeX within your code
+ frame=tb,% % frame style
+ framerule=2.0pt,% % frame thickness
+ framexleftmargin=5pt,% % extra frame left margin
+ %identifierstyle=\sffamily,% % style for identifiers
+ keywordstyle=\gsfontfamily\color{gsplum},% % color for keywords
+ language=Python,% % select language
+ linewidth=\linewidth,% % width of listings
+ morekeywords={% % VPython/GlowScript specific keywords
+ __future__,abs,acos,align,ambient,angle,append,append_to_caption,%
+ append_to_title,arange,arrow,asin,astuple,atan,atan2,attach_arrow,%
+ attach_trail,autoscale,axis,background,billboard,bind,black,blue,border,%
+ bounding_box,box,bumpaxis,bumpmap,bumpmaps,camera,canvas,caption,capture,%
+ ceil,center,clear,clear_trail,click,clone,CoffeeScript,coils,color,combin,%
+ comp,compound,cone,convex,cos,cross,curve,cyan,cylinder,data,degrees,del,%
+ delete,depth,descender,diff_angle,digits,division,dot,draw_complete,%
+ ellipsoid,emissive,end_face_color,equals,explog,extrusion,faces,factorial,%
+ False,floor,follow,font,format,forward,fov,frame,gcurve,gdisplay,gdots,%
+ get_library,get_selected,ghbars,global,GlowScript,graph,graphs,green,gvbars,%
+ hat,headlength,headwidth,height,helix,hsv_to_rgb,index,interval,keydown,%
+ keyup,label,length,lights,line,linecolor,linewidth,logx,logy,lower_left,%
+ lower_right,mag,mag2,magenta,make_trail,marker_color,markers,material,%
+ max,min,mouse,mousedown,mousemove,mouseup,newball,norm,normal,objects,%
+ offset,one,opacity,orange,origin,path,pause,pi,pixel_to_world,pixels,plot,%
+ points,pos,pow,pps,print,print_function,print_options,proj,purple,pyramid,%
+ quad,radians,radius,random,rate,ray,read_local_file,readonly,red,redraw,%
+ retain,rgb_to_hsv,ring,rotate,round,scene,scroll,shaftwidth,shape,shapes,%
+ shininess,show_end_face,show_start_face,sign,sin,size,size_units,sleep,%
+ smooth,space,sphere,sqrt,start,start_face_color,stop,tan,text,textpos,%
+ texture,textures,thickness,title,trail_color,trail_object,trail_radius,%
+ trail_type,triangle,trigger,True,twist,unbind,up,upper_left,upper_right,%
+ userpan,userspin,userzoom,vec,vector,vertex,vertical_spacing,visible,%
+ visual,vpython,VPython,waitfor,white,width,world,xtitle,yellow,yoffset,%
+ ytitle%
+ },%
+ morekeywords={print,None,TypeError},% % additional keywords
+ morestring=[b]{"""},% % treat triple quotes as strings
+ numbers=left,% % where to put line numbers
+ numbersep=10pt,% % how far line numbers are from code
+ numberstyle=\bfseries\tiny,% % set to 'none' for no line numbers
+ showstringspaces=false,% % show spaces in strings
+ showtabs=false,% % show tabs within strings
+ stringstyle=\gsfontfamily\color{gsgreen},% % color for strings
+ upquote=true,% % how to typeset quotes
+}%
+% \end{macrocode}
+%
+% Introduce a new, more intelligent \refEnv{glowscriptblock} environment.
+%
+% \begin{macrocode}
+\NewTCBListing[auto counter,list inside=gsprogs]{glowscriptblock}
+ { O{} D(){glowscript.org} m }{%
+ breakable,%
+ center,%
+ code = \newpage,%
+ %derivpeach,%
+ enhanced,%
+ hyperurl interior = https://#2,%
+ label = {gs:\thetcbcounter},%
+ left = 8mm,%
+ list entry = \thetcbcounter~~~~~#3,%
+ listing only,%
+ listing style = vpython,%
+ nameref = {#3},%
+ title = \texttt{GlowScript} Program \thetcbcounter: #3,%
+ width = 0.9\textwidth,%
+ {#1},
+}%
+% \end{macrocode}
+%
+% A new command for generating a list of \GlowScript\ programs.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\listofglowscriptprograms}{}{\tcblistof[\section*]{gsprogs}
+ {List of \texttt{GlowScript} Programs}}%
+% \end{macrocode}
+%
+% Introduce a new, more intelligent \refCom{vpythonfile} command.
+%
+% \begin{macrocode}
+\NewTCBInputListing[auto counter,list inside=vpprogs]{\vpythonfile}
+ { O{} m m }{%
+ breakable,%
+ center,%
+ code = \newpage,%
+ %derivgray,%
+ enhanced,%
+ hyperurl interior = https://,%
+ label = {vp:\thetcbcounter},%
+ left = 8mm,%
+ list entry = \thetcbcounter~~~~~#3,%
+ listing file = {#2},%
+ listing only,%
+ listing style = vpython,%
+ nameref = {#3},%
+ title = \texttt{VPython} Program \thetcbcounter: #3,%
+ width = 0.9\textwidth,%
+ {#1},%
+}%
+% \end{macrocode}
+%
+% A new command for generating a list of \VPython\ programs.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\listofvpythonprograms}{}{\tcblistof[\section*]{vpprogs}
+ {List of \texttt{VPython} Programs}}%
+% \end{macrocode}
+%
+% Introduce a new \refCom{glowscriptinline} command.
+%
+% \begin{macrocode}
+\DeclareTotalTCBox{\glowscriptinline}{ m }{%
+ bottom = 0pt,%
+ bottomrule = 0.0mm,%
+ boxsep = 1.0mm,%
+ colback = gsbggray,%
+ colframe = gsbggray,%
+ left = 0pt,%
+ leftrule = 0.0mm,%
+ nobeforeafter,%
+ right = 0pt,%
+ rightrule = 0.0mm,%
+ sharp corners,%
+ tcbox raise base,%
+ top = 0pt,%
+ toprule = 0.0mm,%
+}{\lstinline[style = vpython]{#1}}%
+% \end{macrocode}
+%
+% Define \refCom{vpythoninline}, a semantic alias for \VPython\
+% in-line listings.
+%
+% \begin{macrocode}
+\NewDocumentCommand{\vpythoninline}{}{\glowscriptinline}%
+% \end{macrocode}
+%
+% \restoregeometry
+%
+% \iffalse
+%</package>
+% \fi
+%
+% \Finale
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index d02f959416..5be9f750f6 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,6 +7,12 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
+## [v3.0.26]
+
+### Fixed
+- Accidental printing of `T@TS1` with `beamer` (issue
+ [#534](https://github.com/josephwright/siunitx/issues/534))
+
## [v3.0.25]
### Changed
@@ -361,6 +367,7 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Option `table-alignment-mode`
- Option `table-column-type`
- Option `text-family-to-math`
+- Option `text-font-command`
- Option `text-series-to-math`
- Option `uncertainty-mode`
- Option `unit-font-command`
@@ -423,7 +430,6 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
- Option `table-sign-mantissa`
- Option `table-space-text-post`
- Option `table-space-text-pre`
-- Option `text-font-command`
- Option `zero-decimal-to-integer`
- Option setting `list-units = brackets`
- Option setting `per-mode = reciprocal`
@@ -1539,7 +1545,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.25...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.26...HEAD
+[v3.0.26]: https://github.com/josephwright/siunitx/compare/v3.0.25...v3.0.26
[v3.0.25]: https://github.com/josephwright/siunitx/compare/v3.0.24...v3.0.25
[v3.0.24]: https://github.com/josephwright/siunitx/compare/v3.0.23...v3.0.24
[v3.0.23]: https://github.com/josephwright/siunitx/compare/v3.0.22...v3.0.23
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index 6e575cff02..779c0c26b6 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 924aaa3b0f..25e15ca4bb 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -2765,11 +2765,16 @@
% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnnnn}
% \begin{macro}[EXP]{\@@_round_uncertainty_end:nn}
% \begin{macro}[EXP]{\@@_round_uncertainty:nnn}
-% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnn, \@@_round_uncertainty_aux:nnnnn}
-% \begin{macro}[EXP]{\@@_round_uncertainty_aux:nnnnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty:nnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty:nnnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_round_uncertainty_simple:nnnnnn ,
+% \@@_round_uncertainty_shift:nnnnnn
+% }
% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nn}
% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nnnw}
-% \begin{macro}[EXP]{\@@_round_uncertainty_shift:nnnn}
+% \begin{macro}[EXP]{\@@_round_uncertainty_shift_aux:nnnnn}
% \begin{macro}[EXP]
% {
% \@@_round_uncertainty_engineering:nnn ,
@@ -2808,66 +2813,73 @@
{ \exp_not:n { {#1} {#2} } }
% \end{macrocode}
% Round the uncertainty first: this is needed to get the number of places
-% correct (for the case where the uncertainty rounds up to |1...|). Once that
-% is done, it's just a question of working out the digits in the main part.
+% correct. Once that is done, it's just a question of working out the digits
+% in the main part.
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty:nnn #1#2#3
{
- \exp_last_unbraced:Nf \@@_round_uncertainty:nnnnn
+ \exp_args:Nf \@@_round_uncertainty:nnnn
{
- \@@_round:fnn
- {
- \int_eval:n
- { \tl_count:n {#3} - \l_@@_round_precision_int }
- }
- { } {#3}
+ \int_eval:n
+ { \tl_count:n {#3} - \l_@@_round_precision_int }
}
{#1} {#2} {#3}
}
-\cs_new:Npn \@@_round_uncertainty:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_round_uncertainty:nnnn #1#2#3#4
{
- \exp_args:Nff \@@_round_uncertainty_aux:nnnnn
- { \int_eval:n { \tl_count:n {#5} - \tl_count:n {#2} } }
- {#1} {#2} {#3} {#4}
+ \exp_last_unbraced:Nf \@@_round_uncertainty:nnnnn
+ { \@@_round:nnn {#1} { } {#4} }
+ {#2} {#3} {#1}
}
% \end{macrocode}
-% The first argument here deals with the case where we've lost digits
-% in the uncertainty and it's purely located in the integer part.
+% Here, we need to work out how many digits to zero-fill the uncertainty, for
+% the case where it crosses into the integer part. This depends on whether
+% the uncertainty rounded up, which also links to additional treatment. We
+% therefore split paths here.
% \begin{macrocode}
-\cs_new:Npn \@@_round_uncertainty_aux:nnnnn #1#2#3#4#5
+\cs_new:Npn \@@_round_uncertainty:nnnnn #1#2#3#4#5
{
- \exp_args:Nf \@@_round_uncertainty_aux:nnnnnn
+ \tl_if_blank:nTF {#1}
{
- \prg_replicate:nn
- { \int_max:nn { #1 - \tl_count:n {#5} } { 0 } }
- { 0 }
+ \exp_args:Nf \@@_round_uncertainty_simple:nnnnn
+ {
+ \prg_replicate:nn
+ {
+ \int_max:nn
+ { 0 - ( \tl_count:n {#4} - \tl_count:n {#2} - #5 + 1 ) }
+ { 0 }
+ }
+ { 0 }
+ }
+ {#3} {#4} {#2} {#5}
}
- {#1} {#2} {#3} {#4} {#5}
+ { \@@_round_uncertainty_shift:nnnnn {#3} {#4} {#1} {#2} {#5} }
+
}
-\cs_new:Npn \@@_round_uncertainty_aux:nnnnnn #1#2#3#4#5#6
+% \end{macrocode}
+% The simple case: round and pad out the uncertainty as required.
+% \begin{macrocode}
+\cs_new:Npn \@@_round_uncertainty_simple:nnnnn #1#2#3#4#5
{
- \tl_if_blank:nTF {#3}
- {
- \@@_round:nnn
- {#2}
- {#5} {#6}
- { { S } { #4 #1 } }
- }
- {
- \exp_args:Ne \@@_round_uncertainty_shift:nn
- {
- \@@_round:fnn
- { \int_eval:n { #2 + 1 } }
- {#5} {#6}
- }
- { { S } { #3 #1 } }
- }
+ \@@_round:nnn
+ {#5}
+ {#2} {#3}
+ { { S } { #4 #1 } }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+\cs_new:Npn \@@_round_uncertainty_shift:nnnnn #1#2#3#4#5
+ {
+ \exp_args:Ne \@@_round_uncertainty_shift:nn
+ { \@@_round:fnn { \int_eval:n { #5 + 1 } } {#1} {#2} }
+ {#5}
}
% \end{macrocode}
-% We now have to clear up the exponent, plus deal with the case where
-% rounding has resulted in the entire value being uncertain (|1(1)| with
-% some exponent). The latter shows up if the uncertainty is too long or if
-% we match a specific pattern.
+% If the padding length is the same as the number of integer digits, then
+% we have a pathological case and need to filter out. They show up as they
+% have the either the precision greater than the length of the integer
+% part, or have a value of exactly $10$ when the exponent mode is
+% scientific.
% \begin{macrocode}
\cs_new:Npn \@@_round_uncertainty_shift:nn #1#2
{ \@@_round_uncertainty_shift:nnnw #1 {#2} }
@@ -2876,24 +2888,38 @@
{
#4
\bool_lazy_and:nnTF
+ { \int_compare_p:nNn {#3} > { \tl_count:n {#1} } }
{
- \int_compare_p:nNn
- { \tl_count:o { \use_ii:nn #3 } } = \l_@@_round_precision_int
- }
- {
- ! \str_if_eq_p:nn { {#1} {#2} {#3} } { { 10 } { } { { S } { 1 } } }
+ ! \bool_lazy_and_p:nn
+ { \str_if_eq_p:Vn \l_@@_exponent_mode_tl { scientific } }
+ { \str_if_eq_p:nn { #1.#2 } { 10. } }
}
{
- \use:c
- { @@_round_ \l_@@_exponent_mode_tl :nn }
- {#1} {#2}
- \@@_round_places_end:nnn {#3} {#5} {#6}
+ \exp_args:Nf \@@_round_uncertainty_shift_aux:nnnnn
+ {
+ \prg_replicate:nn
+ {
+ \tl_if_blank:nTF {#2}
+ { \int_min:nn {#3} { \tl_count:n {#1} - 1 } }
+ { 0 }
+ }
+ { 0 }
+ }
+ {#1} {#2}
}
{
\use:c
{ @@_round_uncertainty_ \l_@@_exponent_mode_tl :nnn }
- {#1} {#5} {#6}
+ {#1}
}
+ {#5} {#6}
+ }
+\cs_new:Npn \@@_round_uncertainty_shift_aux:nnnnn #1#2#3#4#5
+ {
+ \use:c
+ { @@_round_ \l_@@_exponent_mode_tl :nn }
+ {#2} {#3}
+ \@@_round_places_end:nnn { { S } { 1 #1 } } {#4} {#5}
}
% \end{macrocode}
% With the data available, adjust the output such that the uncertainty
@@ -2949,6 +2975,7 @@
% \end{macro}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_zero_decimal:NN}
% \begin{macro}[EXP]{\@@_zero_decimal:nnnnnnn}
diff --git a/macros/latex/contrib/siunitx/siunitx-unit.dtx b/macros/latex/contrib/siunitx/siunitx-unit.dtx
index 2c76156563..677e05f750 100644
--- a/macros/latex/contrib/siunitx/siunitx-unit.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-unit.dtx
@@ -2830,7 +2830,7 @@
% \begin{macrocode}
\AtBeginDocument
{
- \str_if_eq:eeTF
+ \str_if_eq:eeT
{ \exp_not:o { \familydefault } }
{ \exp_not:n { \sfdefault } }
{ \keys_set:nn { siunitx } { unit-font-command = \mathsf } }
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index d0d855e92a..0acd9a6c46 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2021-08-16} {3.0.25}
+\ProvidesExplPackage {siunitx} {2021-08-21} {3.0.26}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 5d7777db9c..fe5b448e15 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ