% \iffalse meta-comment
% !TEX TS-program = dtxmk
%
% Copyright (C) 2011,2012 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
%
% and includes the derived files  README
%                                 mandi.ins
%                                 mandi.sty
%                                 vdemo.py and
%                                 mandi.pdf.
% ---------------------------------------------------------------------------
%
% \fi
%
% \iffalse
%
%<*internal>
\iffalse
%</internal>
%
%<*package>
\ProvidesPackage{mandi}[2012/12/31 2.0.0 Macros for intro physics and astronomy]
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
%</package>
%
%<*readme>
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. It must be
understood that mandi does  not do any  computations! It only provides commands
for typesetting.

Run  the  file  mandi.dtx  through (pdf)LaTeX  to  generate README (this file),
mandi.ins, mandi.sty,  vdemo.py,  and  mandi.pdf (user documentation). I assume
a TeXLive2011 or later distribution is installed.
%</readme>
%
%<*vdemo>
from __future__ import print_function, division
from visual import *

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 = 6.7e-11 * 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}
\ifx\fmtname\nameofplainTeX\else
  \expandafter\begingroup
\fi
%</internal>
%
%<*install>
\input docstrip.tex
\keepsilent
\askforoverwritefalse
\usedir{tex/latex/mandi}
\preamble

Copyright (C) 2011,2012 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

and includes the derived files  README
                                mandi.ins
                                mandi.sty
                                mandi.pdf and
                                vdemo.py.
---------------------------------------------------------------------------

\endpreamble

\generate{\file{\jobname.sty}{\from{\jobname.dtx}{package}}}
\generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}}}
\generate{\usepreamble\empty\usepostamble\empty
          \file{vdemo.py}{\from{\jobname.dtx}{vdemo}}}
\generate{\usepreamble\empty\usepostamble\empty
          \file{README.txt}{\from{\jobname.dtx}{readme}}}

\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 (pdf)LaTeX.                                       *}
\Msg{*                                                           *}
\Msg{*************************************************************}
%</install>
%<install>\endbatchfile
%
%<*internal>
\usedir{tex/latex/mandi}
\generate{\file{\jobname.ins}{\from{\jobname.dtx}{install}}}
\generate{\usepreamble\empty\usepostamble\empty
          \file{vdemo.py}{\from{\jobname.dtx}{vdemo}}}
\generate{\usepreamble\empty\usepostamble\empty
          \file{README.txt}{\from{\jobname.dtx}{readme}}}
\ifx\fmtname\nameofplainTeX
  \expandafter\endbatchfile
\else
  \expandafter\endgroup
\fi
%</internal>
%
%<*driver>
\ProvidesFile{mandi.dtx}
%</driver>
%
%<*driver>
\documentclass{ltxdoc}
\usepackage{\jobname}
\usepackage{array}
\usepackage[textwidth=1.0cm]{todonotes}
\setlength{\marginparwidth}{1.0in} % proper placement of todonotes in left margin
\usepackage{rotating}
\usepackage{listings}
\usepackage{microtype}
%\usepackage[noprint]{dox}
\usepackage{hypdoc}
\usepackage[left=1.75in,right=0.5in]{geometry}
\usepackage[listings]{tcolorbox}
\EnableCrossrefs
\PageIndex
\RecordChanges
\parindent 0.0mm
%\OnlyDescription % only print user documentation
\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}}}}
\tcbset{enlarge left by=1cm, enlarge right by=2cm,enlarge top by=-3mm, 
  enlarge bottom by=3mm,width=\linewidth-2cm}
\tcbset{coltitle=blue!50!black,colframe=blue!25,colback=blue!15}
%\DeclareMathSizes{10}{18}{12}{8}
%\DeclareMathSizes{11}{19}{13}{9}
%\DeclareMathSizes{12}{20}{14}{10}
\everymath{\displaystyle}
\begin{document}
  \DocInput{\jobname.dtx}
  \PrintIndex
\end{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}{\textit{baseunits}}
%  \newcommand{\drvdunits}{\textit{drvdunits}}
%  \newcommand{\tradunits}{\textit{tradunits}}
%
%  \IndexPrologue{\section{Index}Numbers written in italic refer to the page/codeline
%                 where the corresponding entry is described; numbers/codelines 
%                 underlined refer to the definition; numbers in roman refer to the 
%                 pages/codelines where the entry is used.}
% 
% \CheckSum{4386}
%
% \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         \~}
%
% \DoNotIndex{\,,\!,\;,\\,\{,\},\(,\),\[,
%   \active,\advance,\AtBeginOfPackageFile,\baselineskip,\begin,\begingroup,\Big,\Bigg,
%   \boolean,\bullet,\boldsymbol,\BODY,\box,\cancelto,\caption,\catcode,\cbcolor,\cbend,
%   \cbstart,\centerline,\color,\changebarsep,\changebarwidth,\char,\clist,\cr,\cs,
%   \csname,\csundef,
%   \DeclareFontShape,\DeclareGraphicsRule,\DeclareMathAlphabet,\DeclareMathOperator,
%   \DeclareOption,\def,\definecolor,\dimen,\displaystyle,\dp,\else,\end,\endcsname,
%   \endgroup,\ensuremath,\equal,\ExecuteOptions,\expandafter,\ExplSyntaxOff,
%   \ExplSyntaxOn,\fbox,\fcolorbox,\fi,\frac,\global,\halign,\hat,\hbox,\hfil,\hfill,
%   \hline,\hspace,\ht,\iffalse,\ifnum,\ifthenelse,\IfValueT,\ifx,\includegraphics,\l,
%   \label,\langle,\left,\let,\LetLtxMacro,\linewidth,\long,\lower,\lstinline,
%   \lstinputlisting,\lstnewenvironment,\lstset,\lVert,\lvert,\mathbf,\mathcal,
%   \mathchardef,\mathcode,\mathpzc,\mathrel,\mathrm,\mbox,\meaning,\mdfdefinestyle,
%   \mi,\mskip,\newboolean,\newcommand,\newcommandx,\newcount,\NewDocumentCommand,
%   \NewEnviron,\newenvironment,\newenvironmentx,\noalign,\noexpand,\nolimits,\odot,
%   \offinterlineskip,\parbox,\partial,\phantom,\ProcessOptions,\protect,\rangle,\relax,
%   \renewcommand,\right,\romannumeral,\RequirePackage,\rVert,\rvert,\scriptstyle,
%   \seq,\setboolean,\setbox,\setcounter,\setlength,\skipper,\smart,\space,\string,
%   \sqrt,\stackrel,\sum,\text,\textbf,\textfont,\textheight,\textsf,\texttt,\textwidth,
%   \the,\tiny,\tl,\typeout,\upshape,\usetikzlibrary,\usebox,\vcenter,\vector,\vrule,
%   \vskip,\vspace,\widehat,\WithSuffix,\xdef,\xLongleftarrow,\xLongleftrightarrow,
%   \xLongrightarrow,\xrightarrow,\xspace}
%
% \DoNotIndex{\activity@fbox,\@eolst,\@firstofone,\@firstoftwo,\Mathstrutbox@,\mi@delim,
%   \mi@exchangeargs,\mi@forkifnull,\mi@innername,\mi@name,\mi@vector,\oldr@@t,\rc@delim,
%   \rc@vector,\response@fbox,\resetMathstrut@,\r@@t,\@tempa,\@tempb,\@tempboxa,
%   \@secondoftwo,\z@}
%
% \DoNotIndex{\selectbaseunit,\selectdrvdunit,\selecttradunit,\selectunit,
%   \redefinephysicsquantity,\redefinephysicsconstant,\definephysicsquantity,
%   \definephysicsconstant,\innerdefinewhatsoeverquantity,
%   \innerdefinewhatsoeverquantityfork,}
%
% \DoNotIndex{\alpha,\beta,\chi,\delta,\Delta,\epsilon,\eta,\gamma,\Gamma,\iota,\kappa,
%   \lambda,\Lambda,\mu,\nu,\omega,\Omega,\phi,\Phi,\pi,\Pi,\psi,\Psi,\rho,\sigma,\Sigma,
%   \tau,\theta,\Theta,\upsilon,\Upsilon,\varepsilon,\varphi,\varpi,\varrho,\varsigma,
%   \vartheta\xi,\Xi,\zeta}
%
% \DoNotIndex{\approx,\bigint,\bigoint,\cos,\cosh,\cot,\coth,\csc,\csch,\ell,\hbar,\int,
%   \ldots,\ln,\log,\mathcalligra,\nabla,\oint,\oldsqrt,\prime,\pm,\sec,\sech,\sin,\sinh,
%   \sqrt,\star,\tan,\tanh,\times,\vec}
%
% \DoNotIndex{\ampere,\arcminute,\arcsecond,\candela,\coulomb,\coulombbase,\cubed,\cubic,
%   \degree,\derjoule,\electronvolt,\farad,\fourth,\henry,\hertz,\hertzbase,\hour,\joule,
%   \jouleperkelvin,\kelvin,\kilogram,\kilogrammetrepersecond,\kilogrampermetre,
%   \kilogrammetrepersecondnp,\kilogrammetrepersquaresecondnp,\kilogrampermetrenp,
%   \kilogrampersquaremetre,\kilogrampersquaremetrenp,\kilogrampercubicmetre,
%   \kilogrampercubicmetrenp,\kilogramsquaremetrepersecondnp,\kilogramsquaremetre,
%   \kilogramsquaremetrepersecond,\metre,\metrepersecond,\metrepersecondnp,
%   \metrepersquaresecond,\metrepersquaresecondnp,\mole,\nano,\newton,\newtonpermetre,
%   \newtonperkilogram,\newtonpersquaremetre,\newtonsecond,\pascal,\pascalbase,\per,
%   \radian,\radianpersecond,\radianpersecondnp,\radianpersquaresecond,
%   \radianpersquaresecondnp,\reciprocal,\rp,\rpsquare,\rpsquared,\rpcubed,\rpcubic,
%   \rpfourth,\second,\SIminus,\sipower,\square,\squared,\squaremetre,\steradian,\tesla,
%   \unit,\usk,\volt,\watt,\wattbase}
%
% \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}}}
% \date{Version \fileversion~dated \filedate}
%
% \maketitle
%
% ^^A \centerline{\textbf{PLEASE DO NOT DISTRIBUTE THIS VERSION.}}
%
% \changes{v2.0.0beta}{\today}{First public release}
% 
% \tableofcontents
% \newpage
% \PrintChanges
% \addcontentsline{toc}{section}{Change History}
% \addcontentsline{toc}{section}{Possible Future Enhancements}
% \listoftodos[Possible Future Enhancements]
% \newpage
%
% \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{http://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.\medskip
%
% There are other underlying philosophies and goals embedded within \mandi, all of
% which are summarized here. They are
% \begin{itemize}
%   \item to employ a \textit{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, which causes
%     confusion, 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.\ \textit{duration} vs.\ \textit{time})
%   \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.
% 
% \newpage
% \section{Loading the Package}
% To load the \mandi\ package, simply put the line \medskip
%
%  |\usepackage{mandi}| \medskip
%
% \noindent in your document's preamble to load \mandi\ with its default 
% options. To use the package's available options, write \medskip
%
%  |\usepackage|\textbf{[}\opt{options}\textbf{]}|{mandi}| \medskip
%
% There are five available options, with one option being based on the absence of two 
% of the others.
% \begin{itemize}
%   \item \opt{italicvectors} gives italic letters for the kernels of vector 
%     names. Otherwise, the letters are in Roman.
%   \item \opt{doubleabsbars} gives double bars in symbols for vector magnitudes. 
%     Otherwise, single bars are used. Double bars may be more familiar to 
%     students from their calculus courses.
%   \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 If neither \opt{baseunits} nor \opt{drvdunits} is specified (the 
%     default), units are displayed in what I call \tradunits\ form, which
%     is typically the way they would traditionally appear in textbooks. Units in this
%     form frequently hide the underlying physical meaning and are probably not best 
%     pedagogically but are familiar to students and teachers. In this document, the 
%     default is to use
%       \ifthenelse{\boolean{@optbaseunits}}
%        {base}
%        {\ifthenelse{\boolean{@optdrvdunits}}
%          {derived}
%          {traditional}}
%     units. As you will see later, there are ways to override these options either
%     temporarily or permanently.
% \end{itemize}
%
% \newpage
% \section{Usage}
% So what does \mandi\ allow you to do? Suppose you want to typeset a calculation of 
% a particle's kinetic energy (assume the magnitude of the particle's velocity is much 
% less than the magnitude of light's velocity). You could use
%
% \begin{center}
%   |K \approx \frac{1}{2}\left(\unit{2}{\kg}\right)\left(\unit{2}{\m\per\s}\right)^2|
% \end{center}
%
% but it is more logical and more readable to use
%
% \begin{center}
%   |K \approx \onehalf (\mass{2})(\velocity{2})^2|
% \end{center}
%
% given that they produce the same output. The second way is what \mandi\ lets you do.
% 
% \[ K \approx \onehalf (\mass{2})(\velocity{2})^2 \]
%
% The second way is more readable if you come back to the document, perhaps having
% not looked at the source code for a while. Suppose you want to use vectors quantities.
% That's no problem because \mandi\ handles vector quantities.
%
% \begin{center}
%    |Calculate the magnitude of \momentum{\mivector{3,2,5}}.|
% \end{center}
%
% produces
%
% \begin{center}
%  Calculate the magnitude of \momentum{\mivector{3,2,5}}.
% \end{center}
%
% The underlying strategy is to \textit{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.
%
% If you want to save time in writing out the energy principle, just use
%
% \begin{center}
%   |\energyprinciple|
% \end{center}
%
% which gives
%
% \[
%   \energyprinciple
% \]
%
% with fewer keystrokes, and it's easier to remember.
%
% This barely scratches the surface in describing \mandi\ so continue reading this
% document to see everything this package can do.
%
% \newpage
% \section{Features and Commands}
% \subsection{Autosized Parentheses}
% An experimental feature of \mandi\ is autosized parentheses in math mode. This means
% you need never use |\left(| or |\right)|. Just use unadorned parentheses and they will
% size correctly. Note that this only works in math mode, only works for parentheses and
% not for other delimiters.
% 
% To illustrate, |(\oofpezmathsymbol)| gives (\oofpezmathsymbol) but 
% |\((\oofpezmathsymbol)\)| gives \((\oofpezmathsymbol)\).
%
% \subsection{SI Base Units}
% 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:
% \textit{spatial displacement} (what others call \textit{length}), \textit{mass}, 
% \textit{temporal displacement} (what others call \textit{time}, but we will call 
% it \textit{duration} in most cases), \textit{electric current}, \textit
% {thermodynamic temperature}, \textit{amount}, and \textit{luminous intensity}. 
% These shortcuts are used internally and need not explicitly be invoked by the 
% user.\medskip
%
% \DescribeMacro{\m}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=metre or SI unit of spatial displacement (length)}
\m
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\kg}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=kilogram or SI unit of mass}
\kg
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\s}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=second or SI unit of temporal displacement (duration)}
\s
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\A}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=ampere or SI unit of electric current}
\A
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\K}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=kelvin or SI unit of thermodynamic temperature}
\K
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\mol}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=mole or SI unit of amount}
\mol
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\cd}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=candela or SI unit of luminous intensity}
\cd
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% If \mandi\ was invoked 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.\medskip
%
% Certain combinations of the SI base units have nicknames and each such 
% combination and nickname constitutes a \textit{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, specifically \newtonbase. 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 
% \textit{name} of the unit is \textbf{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.
%
% \newpage
% \subsection{Defining Physics Quantities}
%
% \DescribeMacro{\newphysicsquantity}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=define a physics quantity,listing only}
\newphysicsquantity\marg{foobar}\marg{\baseunits}\oarg{\drvdunits}
  \oarg{\tradunits}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% Using this command causes several things to happen.
% \begin{itemize}
%   \item A command |\yournewquantity|\marg{magnitude}, where |foobar| is the first 
%   argument passed to \\
%   |\newphysicsquantity|, is created that takes one mandatory 
%   argument, a numerical magnitude. Subsequent use of your defined scalar quantity 
%   can be invoked by typing \\ |\yournewquantity|\marg{magnitude} and the units will be 
%   typeset according to the options given when \mandi\ was loaded. Note that if the
%   \drvdunits\ and \tradunits\ forms are not specified, they will be
%   populated with the \baseunits\ form.
%   \item A command |\yournewquantitybaseunit|\marg{magnitude} is created that expresses 
%   the quantity and its units in \baseunits\ form.
%   \item A command |\yournewquantitydrvdunit|\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 |\yournewquantitytradunit|\marg{magnitude} is created that 
%   expresses the quantity and its units in \tradunits\ form. This command is 
%   created whether or not the first optional argument is provided.
%   \item A command |\yournewquantityonlybaseunit|\marg{magnitude} is created that
%   expresses 
%   \textbf{only} the quantity's units in \baseunits\ form.
%   \item A command |\yournewquantityonlydrvdunit|\marg{magnitude} is created that 
%   expresses \textbf{only} the quantity's units in \drvdunits\ form. 
%   \item A command |\yournewquantityonlytradunit|\marg{magnitude} is created that 
%   expresses \textbf{only} the quantity's units in \tradunits\ form. 
%   \item A command |\yournewquantityvalue|\marg{magnitude} is created that expresses
%   \textbf{only} the quantity's numerical value.
% \end{itemize}
%
% The following command defines the quantity |\displacement| and its
% associated commands containing its units.
% \begin{quotation}
% \begin{tabular}{l}
%   |\newphysicsquantity{displacement}{\m}[\m][\m]|    
% \end{tabular}
% \end{quotation}
%
% You would then invoke this quantity with |\displacement{3}|
% to get \displacement{3} in a calculation.
%
% \subsubsection{Defining Vector Quantities}
%
% Vector quantities are defined exactly like other quantities, except a formatted
% vector is used when invoking the value of that quantity. The following command defines 
% a vector |\displacementvector| and its associated commands containing its units.
%
% \begin{quotation}
% \begin{tabular}{l}
%   |\newphysicsquantity{displacementvector}{\m}[\m][\m]| 
% \end{tabular}
% \end{quotation}
%
% \newphysicsquantity{displacementvector}{\m}[\m][\m]
% 
% You would then invoke this quantity with |\displacementvector{\mivector{2,3,-5}}|
% to get \displacementvector{\mivector{2,3,-5}} in a calculation.
%
% \subsection{First Semester Physics}
% The first semester of \mi\ focuses on mechanics, dynamics, and statistical mechanics.
%
% \subsubsection{Predefined Quantities}
%
% The seven fundamental quantities are similarly defined and examples of their
% usage is given in the following table.
%
% \begin{center}
% \begin{tabular}{c c}
%   |\displacement{3.14}| & \displacement{3.14} \\
%   |\mass{2.81}|         & \mass{2.81}         \\
%   |\duration{4.32}|     & \duration{4.32}     \\
%   |\current{5.19}|      & \current{5.19}      \\
%   |\temperature{273}|   & \temperature{273}   \\
%   |\amount{2.87}|       & \amount{2.87}       \\
%   |\luminous{5.64}|     & \luminous{5.64}     \\
% \end{tabular}
% \end{center}
%
% Okay, so much for the base quantities. While we're at it, let's also go ahead and 
% define plane angle, solid angle, and a few non-SI units of angular measure, energy, 
% and distance.
%
% \begin{center}
% \begin{tabular}{c c}
%   |\planeangle{2.88}|   & \planeangle{2.88}   \\
%   |\solidangle{4\pi}|   & \solidangle{4\pi}   \\
%   |\indegrees{30.1}|    & \indegrees{30.1}    \\
%   |\inarcminutes{30.1}| & \inarcminutes{30.1} \\
%   |\inarcseconds{30.1}| & \inarcseconds{30.1} \\
%   |\ineV{10.2}|         & \ineV{10.2}         \\
%   |\inAU{5.2}|          & \inAU{5.2}
% \end{tabular}
% \end{center}
%
% 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.\medskip
%
% Now let us move on into first semester physics, defining quantities in the approximate 
% order in which they appear in \mi. Use |\scin[]{}| to get 
% scientific notation, with the mantissa as the optional first argument and the exponent 
% as the required second argument. An optional third argument specifies a unit, but that 
% is not needed in the following examples.
%
% \begin{center}
% \begin{tabular}{c c}
%   |\velocityc{0.24}|                   & \velocityc{0.24}               \\
%   |\velocity{2.99}|                    & \velocity{2.99}                \\
%   |\gamman{4.32}|                      & \gamman{4.32}                  \\
%   |\momentum{\scin[2.44]{4}}|          & \momentum{\scin[2.44]{4}}      \\
%   |\acceleration{9.81}|                & \acceleration{9.81}            \\
%   |\impulse{3.56}|                     & \impulse{3.56}                 \\
%   |\force{2.84}|                       & \force{2.84}                   \\
%   |\springstiffness{6.92}|             & \springstiffness{6.92}         \\
%   |\springstretch{0.212}|              & \springstretch{0.212}          \\
%   |\area{0.125}|                       & \area{0.125}                   \\
%   |\volume{5.33}|                      & \volume{5.33}                  \\
%   |\linearmassdensity{2.33}|           & \linearmassdensity{2.33}       \\
%   |\areamassdensity{3.60}|             & \areamassdensity{3.60}         \\
%   |\volumemassdensity{27.4}|           & \volumemassdensity{27.4}       \\
%   |\youngsmodulus{\scin[2.12]{9}}|     & \youngsmodulus{\scin[2.12]{9}} \\
%   |\work{4.04}|                        & \work{4.04}                    \\
%   |\energy{4.40}|                      & \energy{4.40}                  \\
%   |\power{100.2}|                      & \power{100.2}                  \\
%   |\angularvelocity{3.02}|             & \angularvelocity{3.02}         \\
%   |\angularacceleration{5.32}|         & \angularacceleration{5.32}     \\
%   |\angularmomentum{6.81}|             & \angularmomentum{6.81}         \\
%   |\momentofinertia{4.59}|             & \momentofinertia{4.59}         \\
%   |\torque{3.40}|                      & \torque{3.40}                  \\
%   |\entropy{5.95}|                     & \entropy{5.95}                 \\
%   |\wavelength{\scin[4.00]{-7}}|       & \wavelength{\scin[4.00]{-7}}   \\
%   |\wavenumber{\scin[2.50]{6}}|        & \wavenumber{\scin[2.50]{6}}    \\
%   |\frequency{\scin[7.50]{14}}|        & \frequency{\scin[7.50]{14}}    \\
%   |\angularfrequency{\scin[4.70]{15}}| & \angularfrequency{\scin[4.70]{15}}
% \end{tabular}
% \end{center}
%
% Two quick thoughts here. First, work and energy are similar to momentum and impulse 
% in that they come from two different concepts. Work comes from force acting through 
% a spatial displacement and energy is a fundamental property of matter. It is a 
% coincidence that they have the same dimensions and thus the same unit. Second, notice 
% that I didn't define speed. Velocity is the only quantity I can think of for which we 
% have different names for the vector and the magnitude of the vector. I decided to put 
% it on the same footing as momentum, acceleration, and force.
%
% \newpage
% \subsection{Second Semester Physics}
% The second semester of \mi\ focuses on electromagnetic theory, and there are many 
% primary and secondary quantities.
%
% \subsubsection{Predefined Quantities}
%
% \begin{center}
% \begin{tabular}{c c}
%   |\charge{\scin[2]{-9}}|             & \charge{\scin[2]{-9}}             \\
%   |\permittivity{\scin[9]{-12}}|      & \permittivity{\scin[9]{-12}}      \\
%   |\electricfield{\scin[2]{5}}|       & \electricfield{\scin[2]{5}}       \\
%   |\electricdipolemom{\scin[3]{-22}}| & \electricdipolemom{\scin[3]{-22}} \\
%   |\permeability{\scin[4\pi]{-7}}|    & \permeability{\scin[4\pi]{-7}}    \\
%   |\magneticfield{1.25}|              & \magneticfield{1.25}              \\
%   |\cmagneticfield{1.25}|             & \cmagneticfield{1.25}
% \end{tabular}
% \end{center}
%
% \newpage
% \subsection{Further Words on Units}
% As you recall, when a new scalar or vector is defined, a host of other commands
% is also automatically defined. Consider momentum. The following commands are
% defined:
%
% \begin{quotation}
% \begin{tabular}{c c c}
%   |\momentum{3}|          & \momentum{3}      & unit determined by global options\\
%   |\momentumbaseunit{3}|  & \momentumbaseunit{3}  & quantity with base unit \\
%   |\momentumdrvdunit{3}|  & \momentumdrvdunit{3}  & quantity with derived unit \\
%   |\momentumtradunit{3}|  & \momentumtradunit{3}  & quantity with traditional unit \\
%   |\momentumvalue{3}|     & \momentumvalue{3} & numerical value of quantity \\
%   |\momentumonlybaseunit| & \momentumonlybaseunit & selects only base unit \\
%   |\momentumonlydrvdunit| & \momentumonlydrvdunit & selects only derived unit \\
%   |\momentumonlytradunit| & \momentumonlytradunit & selects only traditional unit
% \end{tabular}
% \end{quotation}
%
% 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|, |tradunit| to the
% quantity's name, and this will override the global options for that instance.
%
% \DescribeMacro{\hereusebaseunit}
% \DescribeMacro{\hereusedrvdunit}
% \DescribeMacro{\hereusetradunit}
% A second way is to use the commands |\hereusebaseunit{}|, |\hereusedrvdunit{}|, or
% |\hereusetradunit{}| with the quantity as the argument.
%
% \begin{quotation}
% \begin{tabular}{c c}
%   |\hereusebaseunit{\momentum{3}}| & \hereusebaseunit{\momentum{3}} \\
%   |\hereusedrvdunit{\momentum{3}}| & \hereusedrvdunit{\momentum{3}} \\
%   |\hereusetradunit{\momentum{3}}| & \hereusetradunit{\momentum{3}}
% \end{tabular}
% \end{quotation}
%
% \DescribeEnv{usebaseunit}
% \DescribeEnv{usedrvdunit}
% \DescribeEnv{usetradunit}
% A third way is to use the |usebaseunit|, |usedrvdunit|, |usetradunit|
% environments. \\
%
% \begin{quotation}
% \begin{tabular}{c c}
%  |\begin{usebaseunit}| & \\
%  |  \momentum{3}     | & \begin{usebaseunit}\momentum{3}\end{usebaseunit}\\
%  |\end{usebaseunit}  | & \\
%  |\begin{usedrvdunit}| & \\
%  |  \momentum{3}     | & \begin{usedrvdunit}\momentum{3}\end{usedrvdunit}\\
%  |\end{usedrvdunit}  | & \\
%  |\begin{usetradunit}| & \\
%  |  \momentum{3}     | & \begin{usetradunit}\momentum{3}\end{usetradunit}\\
%  |\end{usetradunit}  | & \\
% \end{tabular}
% \end{quotation}
%
% \DescribeMacro{\perpusebaseunit}
% \DescribeMacro{\perpusedrvdunit}
% \DescribeMacro{\perpusetradunit}
% A fourth way is to use the global switches |\perpusebaseunit|, |\perpusedrvdunit|,
% and \\
% |\perpusetradunit| (think \textit{perpetually use\ldots}). \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.}
%
% \newpage
% \subsection{Expressions with Vectors}
% \subsubsection{Basic Vectors}
%
% \DescribeMacro{\vect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for a vector quantity\\
  \cs{vect}\marg{kernel}}
\vect{p}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for a vector quantity's magnitude\\
  \cs{magvect}\marg{kernel}}
\magvect{p}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dirvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for a vector quantity's direction\\
  \cs{dirvect}\marg{kernel}}
\dirvect{p}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ncompszerovect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the zero vector expressed in components \\
  Deprecated. Use \cs{mivector} instead.\\
  \cs{ncompszerovect}}
\ncompszerovect
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
%\newpage
% \DescribeMacro{\symvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for vector with expressions as components\\
  Deprecated. Use \cs{mivector} instead.\\
  \cs{symvect}\marg{listofcomps}}
\symvect{\magvect{E}\cos\theta,\magvect{E}\sin\theta,0}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ncompsvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=vector with numerical components and an
  Deprecated. Use \cs{mivector} instead.\\
  optional unit\\ \cs{ncompsvect}\marg{listofcomps}\oarg{unit}}
\ncompsvect{3,4,6}[\m\per\s]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magvectncomps}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for a vector's magnitude with numerical
  components and an optional unit\\
  \cs{magvectncomps}\marg{listofcomps}\oarg{unit}}
\magvectncomps{3.12,4.04,6.73}[\m\per\s]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of a vector\\
  \cs{scompsvect}\marg{kernel}}
\scompsvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic component of a vector\\
  \cs{compvect}\marg{kernel}\marg{comp}}
\compvect{E}{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magvectscomps}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for a vector's magnitude in 
  terms of its symbolic components\\ \cs{magvectscomps}\marg{kernel}}
\magvectscomps{B}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsubsection{Position Vectors}
%
% \DescribeMacro{\scompspos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of a position vector\\
  \cs{scompspos}}
\scompspos
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\comppos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of a position vector\\
  \cs{comppos}\marg{comp}}
\comppos{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsubsection{Differentials and Derivatives of Vectors}
% \DescribeMacro{\dvect}
% \DescribeMacro{\Dvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the differential of a vector\\
  \cs{dvect}\marg{kernel} or \cs{Dvect}\marg{kernel}}
\dvect{E} or \Dvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dirdvect}
% \DescribeMacro{\dirDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the direction of the differential 
  of a vector\\ \cs{dirdvect}\marg{kernel} or \cs{dirDvect}\marg{kernel}}
\dirdvect{E} or \dirDvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ddirvect}
% \DescribeMacro{\Ddirvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the differential of a vector's
  direction\\ \cs{ddirvect}\marg{kernel} or \cs{Ddirvect}\marg{kernel}}
\ddirvect{E} or \Ddirvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magdvect}
% \DescribeMacro{\magDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of the differential of a vector\\
  \cs{magdvect}\marg{kernel} or \cs{magDvect}\marg{kernel}}
\magdvect{E} or \magDvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dmagvect}
% \DescribeMacro{\Dmagvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=differential of the magnitude of a vector\\
  \cs{dmagvect}\marg{kernel} or \cs{Dmagvect}\marg{kernel}}
\dmagvect{E} or \Dmagvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\scompsdvect}
% \DescribeMacro{\scompsDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the differential
  of a vector\\ \cs{scompsdvect}\marg{kernel} or \cs{scompsDvect}\marg{kernel}}
\scompsdvect{E} or \scompsDvect{E}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compdvect}
% \DescribeMacro{\compDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one symbolic component of the differential of
  a vector\\ \cs{compdvect}\marg{kernel}\marg{comp} or \cs{compDvect}\marg{kernel}
  \marg{comp}}
\compdvect{E}{z} or \compDvect{E}{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsdpos}
% \DescribeMacro{\scompsDpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the differential of a
  position vector\\ \cs{scompsdpos} or \cs{scompsDpos}}
\scompsdpos\ or \scompsDpos
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compdpos}
% \DescribeMacro{\compDpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the differential of a
  position vector\\ \cs{compdpos}\marg{comp} or \cs{compDpos}\marg{comp}}
\compdpos{z} or \compDpos{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dervect}
% \DescribeMacro{\Dervect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the derivative of a vector\\
  \cs{dervect}\marg{kernel}\marg{indvar} or \cs{Dervect}\marg{kernel}\marg{indvar}}
\dervect{E}{t} or \Dervect{E}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dermagvect}
% \DescribeMacro{\Dermagvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the derivative of the magnitude of a
  vector\\ \cs{dermagvect}\marg{kernel}\marg{indvar} or 
  \cs{Dermagvect}\marg{kernel}\marg{indvar}}
\dermagvect{E}{t} or \Dermagvect{E}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsdervect}
% \DescribeMacro{\scompsDervect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the derivative of a
  vector\\ \cs{scompsdervect}\marg{kernel}\marg{indvar} or\\
  \cs{scompsDervect}\marg{kernel}\marg{indvar}}
\scompsdervect{E}{t} or \scompsDervect{E}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compdervect}
% \DescribeMacro{\compDervect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the derivative of a vector\\
  \cs{compdervect}\marg{kernel}\marg{indvar}\marg{comp} or\\
  \cs{compDervect}\marg{kernel}\marg{indvar}\marg{comp}}
\compdervect{E}{t}{y} or \compDervect{E}{t}{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magdervect}
% \DescribeMacro{\magDervect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of the derivative of a vector\\
  \cs{magdervect}\marg{kernel}\marg{indvar} or \cs{magDervect}\marg{kernel}\marg{indvar}}
\magdervect{E}{t} or \magDervect{E}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\scompsderpos}
% \DescribeMacro{\scompsDerpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the derivative of a
  position vector\\ \cs{scompsderpos}\marg{indvar} or \cs{scompsDerpos}\marg{indvar}}
\scompsderpos{t} or \scompsDerpos{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
% 
% \DescribeMacro{\compderpos}
% \DescribeMacro{\compDerpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the derivative of a position
  vector\\ \cs{compderpos}\marg{comp}\marg{indvar} or\\
  \cs{compDerpos}\marg{comp}\marg{indvar}}
\compderpos{z}{t} or \compDerpos{z}{t}
\end{tcblisting}
%\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. \\
%
% \newpage
% \subsubsection{Subscripted Vectors}
% Now we have commands for vectors that carry subscripts, usually to identify an
% object or something similar. Basically, |vect| becomes |vectsub| and |pos| 
% becomes |possub|. 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. \\
%
% \DescribeMacro{\vectsub}
% \DescribeMacro{\magvectsub}
% \DescribeMacro{\dirvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=name magnitude and direction of a subscripted
  vector\\ \cs{vectsub}\marg{kernel}\marg{sub}\\
  \cs{dirvectsub}\marg{kernel}\marg{sub}\\
  \cs{magvectsub}\marg{kernel}\marg{sub}}
\vectsub{p}{ball} and \magvectsub{p}{ball} and \dirvectsub{p}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of a subscripted vector\\
  \cs{scompsvectsub}\marg{kernel}\marg{sub}}
\scompsvectsub{p}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of a subscripted vector\\
  \cs{compvectsub}\marg{kernel}\marg{sub}\marg{comp}}
\compvectsub{p}{ball}{z}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\magvectsubscomps}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of a subscripted vector in terms of its
  symbolic components\\ \cs{magvectsubscomps}\marg{kernel}\marg{sub}}
\magvectsubscomps{p}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
% 
% \DescribeMacro{\scompspossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of a subscripted position
  vector\\ \cs{scompspossub}\marg{sub}}
\scompspossub{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\comppossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of a subscripted position vector\\
  \cs{comppossub}\marg{sub}\marg{comp}}
\comppossub{ball}{x}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dvectsub}
% \DescribeMacro{\Dvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=differential of a subscripted vector\\
  \cs{dvectsub}\marg{kernel}\marg{sub} or \cs{Dvectsub}\marg{kernel}\marg{sub}}
\dvectsub{p}{ball} or \Dvectsub{p}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsdvectsub}
% \DescribeMacro{\scompsDvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components the differential of a
  subscripted vector\\ \cs{scompsdvectsub}\marg{kernel}\marg{sub} or\\
  \cs{scompsDvectsub}\marg{kernel}\marg{sub}}
\scompsdvectsub{p}{ball} or \scompsDvectsub{p}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\compdvectsub}
% \DescribeMacro{\compDvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the differential of a
  subscripted vector\\ \cs{compdvectsub}\marg{kernel}\marg{sub}\marg{comp} or\\
  \cs{compDvectsub}\marg{kernel}\marg{sub}\marg{comp}}
\compdvectsub{p}{ball}{y} or \compDvectsub{p}{ball}{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsdpossub}
% \DescribeMacro{\scompsDpossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the differential of a
  subscripted position vector\\ \cs{scompsdpossub}\marg{sub} or\\
  \cs{scompsDpossub}\marg{sub}}
\scompsdpossub{ball} or \scompsDpossub{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compdpossub}
% \DescribeMacro{\compDpossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the differential of a
  subscripted position vector\\ \cs{compdpossub}\marg{sub}\marg{comp} or\\
  \cs{compDpossub}\marg{sub}\marg{comp}}
\compdpossub{ball}{x} or \compDpossub{ball}{x}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dervectsub}
% \DescribeMacro{\Dervectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=derivative of a subscripted vector\\
  \cs{dervectsub}\marg{kernel}\marg{sub}\marg{indvar} or\\
  \cs{Dervectsub}\marg{kernel}\marg{sub}\marg{indvar}}
\dervectsub{p}{ball}{t} or \Dervectsub{p}{ball}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dermagvectsub}
% \DescribeMacro{\Dermagvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for the derivative of the magnitude of a
  subscripted vector\\ \cs{dermagvectsub}\marg{kernel}\marg{sub}\marg{indvar} or\\
  \cs{Dermagvectsub}\marg{kernel}\marg{sub}\marg{indvar}}
\dermagvectsub{E}{ball}{t} or \Dermagvectsub{E}{ball}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsdervectsub}
% \DescribeMacro{\scompsDervectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the derivative of a
  subscripted vector\\ \cs{scompsdervectsub}\marg{kernel}\marg{sub}\marg{indvar} or\\
  \cs{scompsDervectsub}\marg{kernel}\marg{sub}\marg{indvar}}
\scompsdervectsub{p}{ball}{t} or \scompsDervectsub{p}{ball}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compdervectsub}
% \DescribeMacro{\compDervectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the derivative of a subscripted
  vector\\ \cs{compdervectsub}\marg{kernel}\marg{sub}\marg{indvar}\marg{comp} or\\
  \cs{compDervectsub}\marg{kernel}\marg{sub}\marg{indvar}\marg{comp}}
\compdervectsub{p}{ball}{t}{y} or \compDervectsub{p}{ball}{t}{y}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magdervectsub}
% \DescribeMacro{\magDervectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of the derivative of a subscripted
  vector\\ \cs{magdervectsub}\marg{kernel}\marg{sub}\marg{indvar} or\\
  \cs{magDervectsub}\marg{kernel}\marg{sub}\marg{indvar}}
\magdervectsub{p}{ball}{t} or \magDervectsub{p}{ball}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\scompsderpossub}
% \DescribeMacro{\scompsDerpossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbolic components of the derivative of an indexed
  position vector\\ \cs{scompsderpossub}\marg{sub}\marg{indvar} or\\
  \cs{scompsDerpossub}\marg{sub}\marg{indvar}}
\scompsderpossub{ball}{t} or \scompsDerpossub{ball}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\compderpossub}
% \DescribeMacro{\compDerpossub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=one component of the derivative of a subscripted
  position vector\\ \cs{compderpossub}\marg{sub}\marg{indvar}\marg{comp} or\\
  \cs{compDerpossub}\marg{sub}\marg{indvar}\marg{comp}}
\compderpossub{ball}{t}{z} or \compDerpossub{ball}{t}{z}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsubsection{Relative Vectors}
% Sometimes we need the position, velocity, momentum, or force of/on one thing 
% relative to/due to another thing. \\
%
% \DescribeMacro{\relpos}
% \DescribeMacro{\relvel}
% \DescribeMacro{\relmom}
% \DescribeMacro{\relfor}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=relative position or velocity or 
  momentum or force vectors for two objects\\
  \cs{relpos}\marg{sub} and \cs{relvel}\marg{sub} and \cs{relmom}\marg{sub}\\
   and \cs{relfor}\marg{sub}}
\relpos{12} and \relvel{12} and \relmom{12} and \relfor{12}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsubsection{Expressions Containing Dot Products}
% 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 \textit{dot product}.
% When you see |dots| you should think \textit{dot product in terms of symbolic
% components}. When you see |dote| you should think \textit{dot product
% expanded as a sum}. These, along with the previous naming conventions, handle
% many dot product expressions. \\
%
% \newpage
% \DescribeMacro{\vectdotvect}
% \DescribeMacro{\vectdotsvect}
% \DescribeMacro{\vectdotevect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of two vectors as a single symbol or with
  symbolic components or as an expanded sum\\
  \cs{vectdotvect}\marg{vector1}\marg{vector2}\\
  \cs{vectdotsvect}\marg{kernel1}\marg{kernel2}\\
  \cs{vectdotevect}\marg{kernel1}\marg{kernel2}}
\vectdotvect{\vect{F}}{\vect{v}} \\
\vectdotsvect{F}{v} \\
\vectdotevect{F}{v}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectdotspos}
% \DescribeMacro{\vectdotepos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a vector and a position vector with symbolic
  components or as an expanded sum\\
  \cs{vectdotspos}\marg{kernel} or \cs{vectdotepos}\marg{kernel}}
\vectdotspos{F} \\
\vectdotepos{F}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectdotsdvect}
% \DescribeMacro{\vectdotsDvect}
% \DescribeMacro{\vectdotedvect}
% \DescribeMacro{\vectdoteDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a vector and the differential of a vector
  with symbolic components or expanded as a sum \\
  \cs{vectdotsdvect}\marg{kernel1}\marg{kernel2}\\
  \cs{vectdotsDvect}\marg{kernel1}\marg{kernel2}\\
  \cs{vectdotedvect}\marg{kernel1}\marg{kernel2}\\
  \cs{vectdoteDvect}\marg{kernel1}\marg{kernel2}}
\vectdotsdvect{F}{r} or \vectdotsDvect{F}{r} \\
\vectdotedvect{F}{r} or \vectdoteDvect{F}{r} \\
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\vectdotsdpos}
% \DescribeMacro{\vectdotsDpos}
% \DescribeMacro{\vectdotedpos}
% \DescribeMacro{\vectdoteDpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a vector and the differential position
  vector with symbolic components or expanded as a sum \\
  \cs{vectdotsdpos}\marg{kernel} or \cs{vectdotsDpos}\marg{kernel}\\
  \cs{vectdotedpos}\marg{kernel} or \cs{vectdoteDpos}\marg{kernel}}
\vectdotsdpos{F} or \vectdotsDpos{F} \\
\vectdotedpos{F} or \vectdoteDpos{F}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectsubdotsvectsub}
% \DescribeMacro{\vectsubdotevectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of two subscripted vectors with symbolic 
  components or expanded as a sum \\
  \cs{vectsubdotsvectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}\\
  \cs{vectsubdotevectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
\vectsubdotsvectsub{F}{grav}{r}{ball} \\
\vectsubdotevectsub{F}{grav}{r}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectsubdotsdvectsub}
% \DescribeMacro{\vectsubdotsDvectsub}
% \DescribeMacro{\vectsubdotedvectsub}
% \DescribeMacro{\vectsubdoteDvectsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a subscripted vector and the differential
  of a subscripted vector with symbolic components or expanded as a sum \\
  \cs{vectsubdotsdvectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2} \\
  \cs{vectsubdotsDvectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2} \\
  \cs{vectsubdotedvectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2} \\
  \cs{vectsubdoteDvectsub}\marg{kernel1}\marg{sub1}\marg{kernel2}\marg{sub2}}
\vectsubdotsdvectsub{A}{ball}{B}{car} \\
\vectsubdotsDvectsub{A}{ball}{B}{car} \\
\vectsubdotedvectsub{A}{ball}{B}{car} \\
\vectsubdoteDvectsub{A}{ball}{B}{car}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\vectsubdotsdvect}
% \DescribeMacro{\vectsubdotsDvect}
% \DescribeMacro{\vectsubdotedvect}
% \DescribeMacro{\vectsubdoteDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a subscripted vector and the differential
  of a vector with symbolic components or expanded as a sum \\
  \cs{vectsubdotsdvect}\marg{kernel1}\marg{sub1}\marg{kernel2}\\
  \cs{vectsubdotsDvect}\marg{kernel1}\marg{sub1}\marg{kernel2}\\
  \cs{vectsubdotedvect}\marg{kernel1}\marg{sub1}\marg{kernel2}\\
  \cs{vectsubdoteDvect}\marg{kernel1}\marg{sub1}\marg{kernel2}}
\vectsubdotsdvect{A}{ball}{B} \\
\vectsubdotsDvect{A}{ball}{B} \\
\vectsubdotedvect{A}{ball}{B} \\
\vectsubdoteDvect{A}{ball}{B}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectsubdotsdpos}
% \DescribeMacro{\vectsubdotsDpos}
% \DescribeMacro{\vectsubdotedpos}
% \DescribeMacro{\vectsubdoteDpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a subscripted vector and a differential
  position vector with symbolic components or expanded as a sum \\
  \cs{vectsubdotsdpos}\marg{kernel}\marg{sub} \\
  \cs{vectsubdotsDpos}\marg{kernel}\marg{sub} \\
  \cs{vectsubdotedpos}\marg{kernel}\marg{sub} \\
  \cs{vectsubdoteDpos}\marg{kernel}\marg{sub}}
\vectsubdotsdpos{A}{ball}\\
\vectsubdotsDpos{A}{ball}\\
\vectsubdotedpos{A}{ball}\\
\vectsubdoteDpos{A}{ball}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dervectdotsvect}
% \DescribeMacro{\Dervectdotsvect}
% \DescribeMacro{\dervectdotevect}
% \DescribeMacro{\Dervectdotevect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of the derivative of a vector and a vector
  with symbolic components or expanded as a sum\\
  \cs{dervectdotsvect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{Dervectdotsvect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{dervectdotevect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{Dervectdotevect}\marg{kernel1}\marg{indvar}\marg{kernel2}}
\dervectdotsvect{A}{t}{B} \\
\Dervectdotsvect{A}{t}{B} \\
\dervectdotevect{A}{t}{B} \\
\Dervectdotevect{A}{t}{B}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vectdotsdervect}
% \DescribeMacro{\vectdotsDervect}
% \DescribeMacro{\vectdotedervect}
% \DescribeMacro{\vectdoteDervect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of a vector and the derivative of a vector with \\
  symbolic components or expanded as a sum \\
  \cs{vectdotsdervect}\marg{kernel1}\marg{kernel2}\marg{indvar}\\
  \cs{vectdotsDervect}\marg{kernel1}\marg{kernel2}\marg{indvar}\\
  \cs{vectdotedervect}\marg{kernel1}\marg{kernel2}\marg{indvar}\\
  \cs{vectdoteDervect}\marg{kernel1}\marg{kernel2}\marg{indvar}}
\vectdotsdervect{A}{B}{t} \\
\vectdotsDervect{A}{B}{t} \\
\vectdotedervect{A}{B}{t} \\
\vectdoteDervect{A}{B}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dervectdotspos}
% \DescribeMacro{\Dervectdotspos}
% \DescribeMacro{\dervectdotepos}
% \DescribeMacro{\Dervectdotepos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of the derivative of a vector and a position
  vector using symbolic components or expanded as a sum \\
  \cs{dervectdotspos}\marg{kernel}\marg{indvar}\\
  \cs{Dervectdotspos}\marg{kernel}\marg{indvar}\\
  \cs{dervectdotepos}\marg{kernel}\marg{indvar}\\
  \cs{Dervectdotepos}\marg{kernel}\marg{indvar}}
\dervectdotspos{A}{t} \\
\Dervectdotspos{A}{t} \\
\dervectdotepos{A}{t} \\
\Dervectdotepos{A}{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dervectdotsdvect}
% \DescribeMacro{\DervectdotsDvect}
% \DescribeMacro{\dervectdotedvect}
% \DescribeMacro{\DervectdoteDvect}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of the derivative of a vector and the
  differential of a vector using symbolic components or expanded as a sum \\
  \cs{dervectdotsdvect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{DervectdotsDvect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{dervectdotedvect}\marg{kernel1}\marg{indvar}\marg{kernel2}\\
  \cs{DervectdoteDvect}\marg{kernel1}\marg{indvar}\marg{kernel2}}
\dervectdotsdvect{A}{t}{B} \\
\DervectdotsDvect{A}{t}{B} \\
\dervectdotedvect{A}{t}{B} \\
\DervectdoteDvect{A}{t}{B}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dervectdotsdpos}
% \DescribeMacro{\DervectdotsDpos}
% \DescribeMacro{\dervectdotedpos}
% \DescribeMacro{\DervectdoteDpos}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=dot product of the derivative of a vector and the
  differential of a position vector using symbolic components or expanded as a sum \\
  \cs{dervectdotsdpos}\marg{kernel}\marg{indvar}\\
  \cs{DervectdotsDpos}\marg{kernel}\marg{indvar}\\
  \cs{dervectdotedpos}\marg{kernel}\marg{indvar}\\
  \cs{DervectdoteDpos}\marg{kernel}\marg{indvar}}
\dervectdotsdpos{A}{t} \\
\DervectdotsDpos{A}{t} \\
\dervectdotedpos{A}{t} \\
\DervectdoteDpos{A}{t}
\end{tcblisting}
%\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. \\
%
% \DescribeMacro{\ezero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis vectors with lower indices 0 to 4
  (use \cs{ek} or \cs{e} for indices > 4)\\ \cs{zero}}
\ezero \(\cdots\) \efour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\uezero}
%\if false
%<*example>
%\fi
\begin{tcblisting}{title=normalized basis vectors with lower 
  indices 0 to 4 (use \cs{uek} or \cs{ue} for indices > 4)\\ \cs{uezero}}
\uezero \(\cdots\) \uefour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\ezerozero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis bivectors with lower indices 
  (use \cs{ek} or \cs{e} for indices > 4)\\ \cs{ezerozero}}
\ezerozero \(\cdots\) \efourfour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\euzero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis vectors with upper indices 0 to 4
  (use \cs{euk} or \cs{eu} for indices > 4)\\ \cs{euzero}}
\euzero \(\cdots\) \eufour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\euzerozero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis bivectors with upper indices
  (use \cs{euk} or \cs{eu} for indices > 4)\\ \cs{euzerozero}}
\euzerozero \(\cdots\) \eufourfour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\gzero}
% \DescribeMacro{\guzero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis vectors with \(\gamma\) as the kernel
  (use \cs{guk} or \cs{gu} for indices > 4)\\ \cs{gzero} or \cs{guzero}}
\gzero \(\cdots\) \gfour \\
\guzero \(\cdots\) \gufour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\gzerozero}
% \DescribeMacro{\guzerozero}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=basis bivectors with \(\gamma\) as the kernel
  (use \cs{guk} or \cs{gu} for indices > 4)\\ \cs{gzerozero} or \cs{guzerozero}}
\gzerozero \(\cdots\) \gfourfour \\
\guzerozero \(\cdots\) \gufourfour
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\mivector}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=generic command for vectors formatted as in \mi \\
  \cs{mivector}\oarg{printeddelimiter}\marg{commadelimitedlistofcomps}\oarg{unit}}
\begin{align*}
  \msub{u}{\mu} &= \mivector{\ezero,\eone,\etwo,\ethree} \\
  \vect{v} &= \mivector{1,3,5}[\m\per\s] \\
  \vect{E} &= \mivector{\oofpezmathsymbol \frac{Q}{\msup{x}{2}},0,0}
\end{align*}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\colvector}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets column vectors\\
  \cs{colvect}\marg{commadelimitedlistofcomps}}
\colvector{\msup{x}{0},\msup{x}{1},\msup{x}{2},\msup{x}{3}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\rowvector}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets row vectors\\
  \cs{rowvect}\marg{commadelimitedlistofcomps}}
\rowvector{\msup{x}{0},\msup{x}{1},\msup{x}{2},\msup{x}{3}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompscvect}
% \ntodo[Suggestion]{Allow for superscripts.}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets symbolic components of column 3- or 4-vectors 
(use any nonzero value for the optional argument to typeset a 4-vector\\
  \cs{scompscvect}\oarg{anynonzero}\marg{kernel}}
\begin{align*}
  \vect{p} &= \scompscvect{p} \\
  \vect{p} &= \scompscvect[4]{p}
\end{align*}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scompsrvect}
% \ntodo[Suggestion]{Allow for superscripts.}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets symbolic components of row 3- or 4-vectors 
(use any nonzero value for the optional argument to typeset a 4-vector\\
  \cs{scompscvect}\oarg{anynonzero}\marg{kernel}}
\begin{align*}
  \vect{p} &= \scompsrvect{p} \\
  \vect{p} &= \scompsrvect[4]{p}
\end{align*}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Physical Constants}
% \subsubsection{Defining Physical Constants}
% \DescribeMacro{\newphysicsconstant}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=define a physical constant\\
  \cs{newphysicsconstant}\marg{symbol}\marg{value}\marg{foobar}\marg{\baseunits}
  \oarg{\drvdunits}\oarg{\tradunits}}
Here is how \oofpez (the Coulomb constant) is defined internally.
\newphysicsconstant{oofpez}
{\ensuremath{\frac{1}{\phantom{_o}4\pi\ssub{\epsilon}{o}}}}
{\scin[9]{9}}
{\ensuremath{\m\cubed\usk\kg\usk\s^{-4}\usk\A\rpsquared}}
[\m\per\farad]
[\newton\usk\m\squared\per\coulomb\squared]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% Using this command causes several things to happen.
% \begin{itemize}
%   \item A command |\physconstantmathsymbol| is created that expresses
%   \textbf{only} the constant's mathematical symbol.
%   \item A command |\physconstantvalue| is created that expresses
%   \textbf{only} the constant's numerical value.
%   \item A command |\physconstant| is created and contains the constant and units  
%   typeset according to the options given when \mandi\ was loaded.
%   \item A command |\physconstantbaseunit| is created that expresses 
%   the constant and its units in \baseunits\ form.
%   \item A command |\physconstantdrvdunit| is created that expresses 
%   the constant and its units in \drvdunits\ form.
%   \item A command |\physconstanttradunit| is created that 
%   expresses the constant and its units in \tradunits\ form.
%   \item A command |\physconstantonlybaseunit| is created that expresses 
%   \textbf{only} the constant's units in \baseunits\ form.
%   \item A command |\physconstantonlydrvdunit| is created that 
%   expresses \textbf{only} the constant's units in \drvdunits\ form. 
%   \item A command |\physconstantonlytradunit| is created that 
%   expresses \textbf{only} the constant's units in \tradunits\ form. 
% \end{itemize}
% None of these commands takes any arguments.
%
% \subsubsection{Predefined Physical Constants}
% \DescribeMacro{\oofpez}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Coulomb constant\\ \cs{oofpez}}
\(\oofpezmathsymbol \approx \oofpez\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\oofpezcs}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=alternate form for Coulomb constant\\ \cs{oofpezcs}}
\(\oofpezcsmathsymbol = \oofpezcs\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\epsz}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=vacuum permittivity\\ \cs{epsz}}
\(\epszmathsymbol = \epsz\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\mzofp}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Biot-Savart constant\\ \cs{mzofp}}
\(\mzofpmathsymbol = \mzofp\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\muz}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=vacuum permeability\\ \cs{muz}}
\(\muzmathsymbol = \muz\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\kboltz}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Boltzmann constant\\ \cs{kboltz}}
\(\kboltzmathsymbol \approx \kboltz\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\kboltznev}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=anternate Boltzmann constant\\ \cs{kboltznev}}
\(\kboltzmathsymbol \approx \kboltznev\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\stefan}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Stefan-Boltzmann constant\\ \cs{stefan}}
\(\stefanmathsymbol \approx \stefan\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\planck}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Planck constant\\ \cs{planck}}
\(\planckmathsymbol \approx \planck\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\plancknev}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=alternate Planck constant\\ \cs{plancknev}}
\(\planckmathsymbol \approx \plancknev\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\planckbar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=reduced Planck constant (Dirac constant)\\ \cs{planckbar}}
\(\planckbarmathsymbol \approx \planckbar\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\planckbarnev}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=alternate reduced Planck constant (Dirac constant)\\
  \cs{planckbarnev}}
\(\planckbarmathsymbol \approx \planckbarnev\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Navogadro}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Avogadro constant\\ \cs{Navogadro}}
\(\planckbarmathsymbol \approx \Navogadro\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\bigG}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=gravitational constant\\ \cs{bigG}}
\(\bigGmathsymbol \approx \bigG\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\littleg}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Earth's surface gravitational field strength\\ \cs{littleg}}
\(\littlegmathsymbol \approx \littleg\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\clight}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of light's velocity\\ \cs{clight}}
\(\clightmathsymbol \approx \clight\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\clightnfn}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of light's velocity (alternate)\\ \cs{clightnfn}}
\(\clightnfn\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ratom}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=approximate atomic radius\\ \cs{Ratom}}
\(\Ratommathsymbol \approx \Ratom\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Mproton}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=proton's mass\\ \cs{Mproton}}
\(\Mprotonmathsymbol \approx \Mproton\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Mneutron}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=neutron's mass\\ \cs{Mneutron}}
\(\Mneutronmathsymbol \approx \Mneutron\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Mhydrogen}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=hydrogen atom's mass\\ \cs{Mhydrogen}}
\(\Mhydrogenmathsymbol \approx \Mhydrogen\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Melectron}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=electron's mass\\ \cs{Melectron}}
\(\Melectronmathsymbol \approx \Melectron\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\echarge}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=elementary charge quantum\\ \cs{echarge}}
\(\echargemathsymbol \approx \echarge\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Qelectron}
% \DescribeMacro{\qelectron}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=electron's charge\\ \cs{Qelectron} or \cs{qelectron}}
\(\qelectronmathsymbol \approx \qelectron\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Qproton}
% \DescribeMacro{\qproton}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=proton's charge\\ \cs{Qproton} or \cs{qproton}}
\(\qprotonmathsymbol \approx \qproton\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\MEarth}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Earth's mass\\ \cs{MEarth}}
\(\MEarthmathsymbol \approx \MEarth\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\MMoon}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Moon's mass\\ \cs{MMoon}}
\(\MMoonmathsymbol \approx \MMoon\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\MSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's mass\\ \cs{MSun}}
\(\MSunmathsymbol \approx \MSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\REarth}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Earth's radius\\ \cs{REarth}}
\(\REarthmathsymbol \approx \REarth\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\RMoon}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Moon's radius\\ \cs{RMoon}}
\(\RMoonmathsymbol \approx \RMoon\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\RSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's radius\\ \cs{RSun}}
\(\RSunmathsymbol \approx \RSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ESdist}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun-Earth distance or Earth-Sun distance\\ \cs{ESdist} or
 \cs{SEdist}}
\(\ESdistmathsymbol \approx \SEdist\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\EMdist}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Earth-Moon distance or Moon-Earth distance\\ \cs{EMdist} or
 \cs{MEdist}}
\(\EMdistmathsymbol \approx \EMdist\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Astronomical Constants and Quantities}
% \DescribeMacro{\lightyear}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=various ways of denoting light years and years and parsecs
  as units}
\lightyear\ or \Lightyear\ or \cyear\ or \cyr\ or \yyear\ or \yr \\
\parsec
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\LSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's luminosity\\
  \cs{LSun}}
\(\LSunmathsymbol \approx \LSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\TSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's effective temperature\\
  \cs{TSun}}
\(\TSunmathsymbol \approx \TSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\MagSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's absolute magnitude\\
  \cs{MagSun}}
\(\MagSunmathsymbol \approx \MagSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magSun}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Sun's apparent magnitude\\
  \cs{magSun}}
\(\magSunmathsymbol \approx \magSun\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Lstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar luminosity\\
  \cs{Lstar}\oarg{object}}
\Lstar or \Lstar[Sirius] or \Lsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Tstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar temperature\\
  \cs{Tstar}\oarg{object}}
\Tstar or \Tstar[Sirius] or \Tsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Rstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar radius\\
  \cs{Rstar}\oarg{object}}
\Rstar or \Rstar[Sirius] or \Rsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Mstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar mass\\
  \cs{Mstar}\oarg{object}}
\Mstar or \Mstar[Sirius] or \Msolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Fstar}
% \DescribeMacro{\fstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar flux\\
  \cs{Fstar}\oarg{object} or \cs{fstar}\oarg{object}}
\Fstar or \Fstar[Sirius] or \FSun or \Fsolar or \fstar or
\fstar[Sirius] or \fSun or \fsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Magstar}
% \DescribeMacro{\magstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar magnitude\\
  \cs{Magstar}\oarg{object} or \cs{magstar}\oarg{object}}
\Magstar or \Magstar[Sirius] or \magstar or \magstar[Sirius] or
\Magsolar or \magsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Dstar}
% \DescribeMacro{\dstar}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=stellar and solar distance (or diameter)\\
  \cs{Dstar}\oarg{object} or \cs{dstar}\oarg{object}}
\Dstar or \Dstar[Sirius] or \Dsolar or \dstar or \dstar[Sirius] or
\dsolar
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsection{Frequently Used Fractions}
% 
% \DescribeMacro{\onehalf}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=small fractions with numerator 1\\
  \cs{onehalf}}
\(\onehalf \cdots \onetenth\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\twothirds}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=small fractions with numerator 2\\
  \cs{twothirds}}
\(\twothirds \cdots \twoninths\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\threehalves}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=small fractions with numerator 3\\
  \cs{threehalves}}
\(\threehalves \cdots \threetenths\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\fourthirds}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=small fractions with numerator 4\\
  \cs{fourthirds}}
\fourthirds
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Calculus}
%
% \DescribeMacro{\dx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=properly typesets variables of integration (the d should
  not be in italics and should be properly spaced relative to the integrand)\\
  \cs{dx}\marg{integrationvariable}}
\[ \int y^{2}\dx{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\evalfromto}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=properly typesets evaluation of definite integrals\\
  \cs{evalfromto}\marg{antiderivative}\marg{lowerlimit}\marg{upperlimit}}
\[ \evalfromto{\onethird y^3}{0}{3} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\evalat}
% \ntodo[Suggestion]{Combine with \cs{evaluatedat}?}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=properly typesets quantities evaluated at a 
  particular point or value\\ \cs{evalat}\marg{expression}\marg{evaluationpoint}}
\[ \evalat{\dbydt[x]}{t=1} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\evaluatedat}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=properly indicates evaluation at a particular point or 
  value without specifying the quantity\\
  \cs{evaluatedat}\marg{evaluationpoint}}
\[ \mbox{LMST}\evaluatedat{\longitude{0}} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\integral}
% \DescribeMacro{\Integral}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets indefinite and definite integrals\\
  \cs{integral}\oarg{lowerlimit}\oarg{upperlimit}\marg{integrand}\marg{variable}\\
  \cs{Integral}\oarg{lowerlimit}\oarg{upperlimit}\marg{integrand}\marg{variable}}
\[ \integral{y^2}{y} \]
\[ \integral[0][3]{y^2}{y} \]
\[ \Integral{y^2}{y} \]
\[ \Integral[0][3]{y^2}{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\opensurfintegral}
% \DescribeMacro{\opensurfIntegral}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=integral over an open surface of the normal component of 
  a vector field\\
  \cs{opensurfintegral}\marg{surfacename}\marg{vectorname}\\
  \cs{opensurfIntegral}\marg{surfacename}\marg{vectorname}}
\[ \opensurfintegral{S}{E} \]
\[ \opensurfIntegral{S}{E} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\closedsurfintegral}
% \DescribeMacro{\closedsurfIntegral}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=integral over a closed surface of the normal component of
  a vector field\\
  \cs{closedsurfintegral}\marg{surfacename}\marg{vectorname}\\
  \cs{closedsurfIntegral}\marg{surfacename}\marg{vectorname}}
\[ \closedsurfintegral{S}{E} \]
\[ \closedsurfIntegral{S}{E} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\openlineintegral}
% \DescribeMacro{\openlineIntegral}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=integral over an open path of the tangential component of
  a vector field\\
  \cs{openlineintegral}\marg{pathname}\marg{vectorname}\\
  \cs{openlineIntegral}\marg{pathname}\marg{vectorname}}
\[ \openlineintegral{C}{E} \]
\[ \openlineIntegral{C}{E} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\closedlineintegral}
% \DescribeMacro{\closedlineIntegral}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=integral over a closed path of the tangential component of
  a vector field\\
  \cs{closedlineintegral}\marg{pathname}\marg{vectorname}\\
  \cs{closedlineIntegral}\marg{pathname}\marg{vectorname}}
\[ \closedlineintegral{C}{E} \]
\[ \closedlineIntegral{C}{E} \]
\end{tcblisting}
%\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. \\
%
% \newpage
% \DescribeMacro{\dbydt}
% \DescribeMacro{\DbyDt}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=first time derivative operator with optional operand\\
  \cs{dbydt}\oarg{operand} or \cs{DbyDt}\oarg{operand}}
\[ \dbydt \]
\[ \dbydt x \]
\[ \dbydt[x] \]
\[ \DbyDt \]
\[ \DbyDt x \]
\[ \DbyDt[x] \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\ddbydt}
% \DescribeMacro{\DDbyDt}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=second time derivative operator with optional operand\\
  \cs{ddbydt}\oarg{operand} or \cs{DDbyDt}\oarg{operand}}
\[ \ddbydt \]
\[ \ddbydt x \]
\[ \ddbydt[x] \]
\[ \DDbyDt \]
\[ \DDbyDt x \]
\[ \DDbyDt[x] \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\pbypt}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=first time partial derivative operator with optional operand\\
  \cs{pbypt}\oarg{operand}}
\[ \pbypt \]
\[ \pbypt x \]
\[ \pbypt[x] \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\ppbypt}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=second time partial derivative operator with optional operand\\
  \cs{ppbypt}\oarg{operand}}
\[ \ppbypt \]
\[ \ppbypt x \]
\[ \ppbypt[x] \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dbyd}
% \DescribeMacro{\DbyD}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=generic first derivative operator\\
  \cs{dbyd}\marg{dependentvariable}\marg{indvar} or \cs{dbyd}\marg{dependentvariable}
  \marg{indvar}}
\[ \dbyd{f}{y} \]
\[ \DbyD{f}{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ddbyd}
% \DescribeMacro{\DDbyD}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=generic second derivative operator\\
  \cs{ddbyd}\marg{dependentvariable}\marg{indvar} or \cs{ddbyd}\marg{dependentvariable}
  \marg{indvar}}
\[ \ddbyd{f}{y} \]
\[ \DDbyD{f}{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\pbyp}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=generic first partial derivative operator\\
  \cs{pbyp}\marg{dependentvariable}\marg{indvar}}
\[ \pbyp{f}{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ppbyp}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=generic second partial derivative operator\\
  \cs{ppbyp}\marg{dependentvariable}\marg{indvar}}
\[ \ppbyp{f}{y} \]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\divergence}
% \DescribeMacro{\curl}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=divergence and curl of a quantity (you must explicitly
  provide an arrow with \cs{vect} if you want one)\\
  \cs{divergence}\marg{vector} and \cs{curl}\marg{vector}}
\divergence{\vect{E}} and \curl{\vect{E}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\seriesfofx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \(f(x)\) \\
  \cs{seriesfofx}}
\seriesfofx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\seriesexpx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \msup{e}{x} \\
  \cs{seriesexpx}}
\seriesexpx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\seriessinx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \(\sin x\) \\
  \cs{seriessinx}}
\seriessinx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\seriescosx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \(\cos x\) \\
  \cs{seriescosx}}
\seriescosx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\seriestanx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \(\tan x\) \\
  \cs{seriestanx}}
\seriestanx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\seriesatox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \msup{a}{x} \\
  \cs{seriesatox}}
\seriesatox
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\serieslnoneplusx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \(\ln\quant{1+x}\) \\
  \cs{serieslnoneplusx}}
\serieslnoneplusx
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\binomialseries}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=series expansion of \msup{\quant{1+x}}{n} \\
  \cs{binomialseries}}
\binomialseries
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\diracdelta}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Dirac delta function\\
  \cs{diracdelta}\marg{arg}}
\diracdelta{x}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsection{Other Useful Commands}
%
% \DescribeMacro{\asin}
% \DescribeMacro{\acos}
% \DescribeMacro{\atan}
% \DescribeMacro{\asec}
% \DescribeMacro{\acsc}
% \DescribeMacro{\acot}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=trigonometric and inverse trigonometric functions
  not defined in \LaTeX\\
  \cs{asin} and \cs{acos} and \cs{atan} and \cs{asec} and \cs{acsc} and \cs{acot}}
\(\asin\) and \(\acos\) and \(\atan\) and \(\asec\) and \(\acsc\) and \(\acot\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\sech}
% \DescribeMacro{\csch}
% \DescribeMacro{\asinh}
% \DescribeMacro{\acosh}
% \DescribeMacro{\atanh}
% \DescribeMacro{\asech}
% \DescribeMacro{\acsch}
% \DescribeMacro{\acoth}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=hyperbolic and inverse hyperbolic functions
 not defined in \LaTeX\\
 \cs{sech} and \cs{csch} and \cs{asinh} and \cs{acosh} \\
 \cs{atanh} and \cs{asech} and \cs{acsch} and \cs{acoth}}
\(\sech\) and \(\csch\) and \(\asinh\) and \(\acosh\) \\
\(\atanh\) and \(\asech\) and \(\acsch\) and \(\acoth\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\sgn}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=signum function\\
  \cs{sgn}}
\(\sgn\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dex}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=decimal exponentiation function (used in astrophysics)\\
  \cs{dex}}
\(\dex\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\eV}
% \DescribeMacro{\ev}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=shortcuts for \cs{electronvolt}\\
  \cs{eV} or \cs{ev}}
\eV\ or \eV
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\emf}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for electromotive force\\
  \cs{emf}}
\emf
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\logb}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=logarithms to arbitrary bases \\
  \cs{logb}\oarg{base}}
\logb 8 or \logb[2] 8
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\cB}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=alternate symbol for magnetic field inspired by 
  Tom Moore \\
  \cs{cB}}
\cB\ or \vect{\cB}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\newpi}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Bob Palais' symbol for \(2\pi\) \\
  \cs{newpi}}
\newpi
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scripty}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=use to get fonts in Griffith's electrodynamics textbook \\
  \cs{scripty}\marg{kernel}}
\scripty{r}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\flux}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for flux of a vector field\\
  \cs{flux}\oarg{label}}
\flux or \flux[E]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\abs}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=absolute value function\\
  \cs{abs}\marg{arg}}
\abs{-4}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\magof}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=magnitude of a quantity (lets you selectively use 
  double bars without setting the \opt{doubleabsbars} option)\\
  \cs{magof}\marg{arg}}
\magof{\vect{E}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\dimsof}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=notation for showing the dimensions of a quantity\\
  \cs{dimsof}\marg{arg}}
\(\dimsof{\vect{v}} = L \cdot T^{-1}\)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\unitsof}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=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)\\
  \cs{unitsof}\marg{arg}}
\unitsof{\vect{v}} = \m\per\s
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\quant}
% \DescribeMacro{\bquant}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=surrounds the argument with variable sized parentheses 
  (use \cs{bquant} to get square brackets)\\
  \cs{quant}\marg{arg} or \cs{bquant}\marg{arg}}
\quant{\oofpez} or \bquant{\oofpez}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Changein}
% \DescribeMacro{\changein}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=notation for \textit{the change in a quantity}\\
  \cs{Changein}\marg{quantity} or \cs{changein}\marg{quantity}}
\Changein{\vect{E}} or \changein{\vect{E}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\scin}
% \DescribeMacro{\ee}
% \DescribeMacro{\EE}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=scientific notation (use \cs{ee} or \cs{EE} for computer code)\\
  \cs{scin}\oarg{mantissa}\marg{exponent}\oarg{unit}\\
  \cs{ee}\marg{mantissa}\marg{exponent}\\
  \cs{EE}\marg{mantissa}\marg{exponent}}
\scin[2.99]{8}[\m\per\s] \\
\ee{2.99}{8} \\
\EE{2.99}{8}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\dms}
% \DescribeMacro{\hms}
% \DescribeMacro{\clockreading}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=formatted angles and times\\
  \cs{dms}\marg{deg}\marg{min}\marg{sec}\\
  \cs{hms}\marg{hour}\marg{min}\marg{sec}\\
  \cs{clock reading}\marg{hour}\marg{minute}\marg{second}}
\dms{23}{34}{10.27} \\
\hms{23}{34}{10.27} \\
\clockreading{23}{34}{10.27}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\latitude}
% \DescribeMacro{\latitudeN}
% \DescribeMacro{\latitudeS}
% \DescribeMacro{\longitude}
% \DescribeMacro{\longitudeE}
% \DescribeMacro{\longitudeW}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=formatted latitude and longitude}
\latitude{+35} or \latitudeN{35} or \latitudeS{35} \\
\longitude{-81} or \longitudeE{81} or \longitudeW{81}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ssub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=text subscripts\\
  \cs{ssub}\marg{kernel}\marg{sub}}
\ssub{N}{AB}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ssup}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=text superscripts\\
  \cs{ssup}\marg{kernel}\marg{sup}}
\ssup{N}{contact}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\ssud}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=text superscripts and subscripts\\
  \cs{ssud}\marg{kernel}\marg{sup}\marg{sub}}
\ssud{N}{contact}{AB}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\msub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=mathematical subscripts\\
  \cs{msub}\marg{kernel}\marg{sub}}
\msub{R}{\alpha\beta}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\msup}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=mathematical superscripts\\
  \cs{msup}\marg{kernel}\marg{sup}}
\msup{R}{\gamma}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\msud}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=mathematical superscripts and subscripts\\
  \cs{msud}\marg{kernel}\marg{sup}\marg{sub}}
\msud{\Gamma}{\gamma}{\alpha\beta}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\levicivita}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=Levi-Civita symbol\\
  \cs{levicivita}\marg{indices}}
\levicivita{ijk}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\xaxis}
% \DescribeMacro{\yaxis}
% \DescribeMacro{\zaxis}
% \DescribeMacro{\naxis}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=shortcuts for coordinate axes\\
  \cs{xaxis} or \cs{yaxis} or \cs{zaxis} or \cs{naxis}\marg{axis}}
\xaxis or \yaxis or \zaxis or \naxis{t}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\xyplane}
% \DescribeMacro{\yzplane}
% \DescribeMacro{\zxplane}
% \DescribeMacro{\yxplane}
% \DescribeMacro{\zyplane}
% \DescribeMacro{\xzplane}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=shortcuts for coordinate planes\\
  \cs{xyplane} or \cs{yzplane} or \cs{zxplane} or \cs{yzplane} or \cs{zyplane}
  or \cs{xzplane}}
\xyplane or \yzplane or \zxplane or \yxplane or \zyplane or \xzplane
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\cuberoot}
% \DescribeMacro{\fourthroot}
% \DescribeMacro{\fifthroot}
% \DescribeMacro{\fsqrt}
% \DescribeMacro{\fcuberoot}
% \DescribeMacro{\ffourthroot}
% \DescribeMacro{\ffifthroot}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=frequently used roots as radicals\\
  \cs{cuberoot}\marg{arg} or \cs{fourthroot}\marg{arg} or \cs{fifthroot}\marg{arg}
  or \cs{fsqrt}\marg{arg} or \cs{fcuberoot}\marg{arg} or \cs{ffourthroot}\marg{arg}
  or \cs{ffifthroot}\marg{arg}}
\cuberoot{x} or \fourthroot{x} or \fifthroot{x} or \fsqrt{x}
or \fcuberoot{x} or \ffourthroot{x} or \ffifthroot{x}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\relgamma}
% \DescribeMacro{\frelgamma}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expressions for relativistic gamma factor\\
  \cs{relgamma}\marg{arg} or \cs{frelgamma}\marg{arg}}
\relgamma{\magvect{v}} or \relgamma{(0.5c)} \\
\frelgamma{\magvect{v}} or \frelgamma{(0.5c)}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\oosqrtomxs}
% \DescribeMacro{\oosqrtomx}
% \DescribeMacro{\ooomx}
% \DescribeMacro{\ooopx}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expressions convenient for numerically evaluating \(\gamma\)\\
  \cs{oosqrtomxs}\marg{arg} (\textit{one over square root of one minus x squared})\\
  \cs{oosqrtomx}\marg{arg} (\textit{one over square root of one minus x})\\
  \cs{ooomx}\marg{arg} (\textit{one over one minus x})\\
  \cs{ooopx}\marg{arg} (\textit{one over one plus x})}
\oosqrtomxs{0.22} \\
\oosqrtomx{0.22}  \\
\ooomx{0.22} \\
\ooopx{0.11}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \subsection{Custom Operators}
%
% \DescribeMacro{\isequals}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets \textit{test-for-equality} operator \\
  \cs{isequals}}
5 \isequals 3
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\wordoperator}
% \DescribeMacro{\pwordoperator}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=typesets two lines of tiny text to be use as an 
  operator without using mathematical symbols\\
  \cs{wordoperator}\marg{firstline}\marg{secondline}\\
  \cs{pwordoperator}\marg{firstline}\marg{secondline}}
\wordoperator{added}{to} \\
\pwordoperator{added}{to}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\definedas}
% \DescribeMacro{\associated}
% \DescribeMacro{\adjustedby}
% \DescribeMacro{\earlierthan}
% \DescribeMacro{\laterthan}
% \DescribeMacro{\forevery}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=frequently used word operators \\
  \cs{definedas} or \cs{associated} or \cs{adjustedby} or \cs{earlierthan} or
  \cs{laterthan} or \cs{forevery}}
\definedas or \associated or \adjustedby \\
\earlierthan or \laterthan or \forevery
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\pdefinedas}
% \DescribeMacro{\passociated}
% \DescribeMacro{\padjustedby}
% \DescribeMacro{\pearlierthan}
% \DescribeMacro{\platerthan}
% \DescribeMacro{\pforevery}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=frequently used word operators with parentheses \\
  \cs{pdefinedas} or \cs{passociated} or \cs{padjustedby} or \cs{pearlierthan} or
  \cs{platerthan} or \cs{pforevery}}
\pdefinedas or \passociated or \padjustedby \\
\pearlierthan or \platerthan or \pforevery
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\defines}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=\textit{defines} or \textit{defined by} operator \\
  \cs{defines}}
\vect{p} \defines \(\gamma m\)\vect{v}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\inframe}
% \ntodo[Suggestion]{Make the arrow's length fixed.}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=operator for indicating the coordinate representation of
  a vector in a particular reference frame denoted by a capital letter\\
  \cs{inframe}\oarg{frame}}
\vect{p} \inframe[S] \momentum{\mivector{1,2,3}} \\
\vect{p} \inframe[S'] \momentum{\mivector{\sqrt{14},0,0}}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\associates}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=\textit{associated with} or \textit{associates with} 
  operator (for verbal concepts) \\
  \cs{associates}}
kinetic energy \associates velocity
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\becomes}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=\textit{becomes} operator \\
  \cs{becomes}}
\(\gamma m\)\vect{v} \becomes \(m\)\vect{v}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\rrelatedto}
% \DescribeMacro{\lrelatedto}
% \DescribeMacro{\brelatedto}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=operators for directional mathematical relationships
  without mathematical notation \\
  \cs{rrelatedto}\marg{loperation} \\
  \cs{lrelatedto}\marg{roperation} \\
  \cs{brelatedto}\marg{loperation}\marg{roperation}}
(flux ratio) \rrelatedto{taking logarithm} (mag diff) \\
(flux ratio) \lrelatedto{exponentiation} (mag diff) \\
(mag diff) \brelatedto{taking logarithm}{exponentiation}(flux ratio)
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Commands Specific to \mi}
%
% \DescribeMacro{\momprinciple}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=momentum principle \\
  \cs{LHSmomprinciple} or \cs{RHSmomprinciple} or \cs{momprinciple}}
\LHSmomprinciple \\
\RHSmomprinciple \\
\momprinciple
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\energyprinciple}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=energy principle \\
  \cs{LHSenergyprinciple} or \cs{RHSenergyprinciple} or \cs{energyprinciple}}
\LHSenergyprinciple \\
\RHSenergyprinciple \\
\energyprinciple
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\angularmomprinciple}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=angular momentum principle \\
  \cs{LHSangularmomprinciple} or \cs{RHSangularmomprinciple} or \cs{angularmomprinciple}}
\LHSangularmomprinciple \\
\RHSangularmomprinciple \\
\angularmomprinciple
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\gravinteraction}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for gravitational interaction \\
  \cs{gravinteraction}}
\gravinteraction
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\elecinteraction}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=xxpression for electric interaction \\
  \cs{elecinteraction}}
\elecinteraction
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Efieldofparticle}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for electric field of a particle \\
  \cs{Efieldofparticle}}
\Efieldofparticle
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Bfieldofparticle}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for magnetic field of a particle \\
  \cs{Bfieldofparticle}}
\Bfieldofparticle
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Esys}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for energy of system \\
  \cs{Esys}}
\Esys
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Us}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for spring potential energy \\
  \cs{Us}}
\Us
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ug}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for gravitational potential energy \\
  \cs{Ug}}
\Ug
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ue}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for electric potential energy \\
  \cs{Ue}}
\Ue
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ktrans}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for translational kinetic energy \\
  \cs{Ktrans}}
\Ktrans
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Krot}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for rotational kinetic energy \\
  \cs{Krot}}
\Krot
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Eparticle}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for particle energy \\
  \cs{Eparticle}}
\Eparticle
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Einternal}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for internal energy \\
  \cs{Einternal}}
\Einternal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Erest}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for rest energy \\
  \cs{Erest}}
\Erest
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Echem}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for chemical energy \\
  \cs{Echem}}
\Echem
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Etherm}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for thermal energy \\
  \cs{Etherm}}
\Etherm
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Evib}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for vibrational energy \\
  \cs{Evib}}
\Evib
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ephoton}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for photon energy \\
  \cs{Ephoton}}
\Ephoton
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DUs}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in spring potential energy \\
  \cs{DUs}}
\DUs
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DUg}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in gravitational potential energy \\
  \cs{DUg}}
\DUg
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\DUe}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in electric potential energy \\
  \cs{DUe}}
\DUe
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DKtrans}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in translational kinetic energy \\
  \cs{DKtrans}}
\DKtrans
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DKrot}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in rotational kinetic energy \\
  \cs{DKrot}}
\DKrot
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEparticle}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in particle energy \\
  \cs{DEparticle}}
\DEparticle
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEinternal}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in internal energy \\
  \cs{DEinternal}}
\DEinternal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\DErest}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in rest energy \\
  \cs{DErest}}
\DErest
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEchem}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in chemical energy \\
  \cs{DEchem}}
\DEchem
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEtherm}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in thermal energy \\
  \cs{DEtherm}}
\DEtherm
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEvib}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in vibrational energy \\
  \cs{DEvib}}
\DEvib
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\DEphoton}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for change in photon energy \\
  \cs{DEphoton}}
\DEphoton
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Usfinal}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for final spring potential energy \\
  \cs{Usfinal}}
\Usfinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Usinitial}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for initial spring potential energy \\
  \cs{Usinitial}}
\Usfinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ugfinal}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for final gravitational potential energy \\
  \cs{Ugfinal}}
\Ugfinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Uginitial}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for initial gravitational potential energy \\
  \cs{Uginitial}}
\Ugfinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\Uefinal}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for final electric potential energy \\
  \cs{Uefinal}}
\Uefinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Ueinitial}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=expression for initial electric potential energy \\
  \cs{Ueinitial}}
\Uefinal
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\ks}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=symbol for spring stiffness \\
  \cs{ks}}
\ks
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\Fnet}
% \DescribeMacro{\Fnetext}
% \DescribeMacro{\Fnetsys}
% \DescribeMacro{\Fsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=various symbols for net force \\
  \cs{Fnet} or \cs{Fnetext} or \cs{Fnetsys} or \cs{Fsub}\marg{label}}
\Fnet or \Fnetext or \Fnetsys or \Fsub{ball,bat}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% 
% \DescribeMacro{\Tnet}
% \DescribeMacro{\Tnetext}
% \DescribeMacro{\Tnetsys}
% \DescribeMacro{\Tsub}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=various symbols for net torque \\
  \cs{Tnet} or \cs{Tnetext} or \cs{Tnetsys} or \cs{Tsub}\marg{label}}
\Tnet or \Tnetext or \Tnetsys or \Tsub{ball,bat}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\vpythonline}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=single line of VPython code used inline\\
  \cs{vpythonline}\marg{vpythoncode}}
\vpythonline{from visual import *}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeEnv{vpythonblock}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=environment for a block of VPython code\\
  \cs{begin\{vpythonblock\}}\\
  \meta{vpythoncode}\\
  \cs{end\{vpythonblock\}}}
\begin{vpythonblock}
  from visual import *
  sphere(center=pos(1,2,3),color=color.green)
  MyArrow=arrow(pos=earth.pos, axis=fscale*Fnet, color=color.green)
  print ("arrow.pos = "), arrow.pos
\end{vpythonblock}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\vpythonfile}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=file in the current directory containing VPython code\\
  \cs{vpythonfile}\meta{filename}}
\vpythonfile{vdemo.py}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Boxes and Environments}
%
% \DescribeMacro{\emptyanswer}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only, title=empty space for filling answer boxes so
  there is nothing to see\\ \cs{emptyanswer}\oarg{wdth}\oarg{hght}}
\emptyanswer[0.75][0.2]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeEnv{activityanswer}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=main environment for typesetting boxed answers\\
  \cs{begin\{activityanswer\}}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}
  \\
  \meta{content}\\
  \cs{end\{activityanswer\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{adjactivityanswer}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=like \cs{activityanswer} but adjusts vertically to
  tightly surround text\\
\cs{begin\{adjactivityanswer\}}
\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght} \\
  \meta{content}\\
  \cs{end\{adjactivityanswer\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\emptybox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=provides a fixed-size box with optional text\\
  \cs{emptybox}\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\adjemptybox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=like \cs{emptybox} but adjusts vertically to tightly surround
  text\\
\cs{adjemptybox}\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\answerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=wrapper for \cs{emptybox}\\
\cs{answerbox}\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\adjanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=wrapper for \cs{adjemptybox}\\
\cs{adjanswerbox}\oarg{txt}\oarg{bgclr}\oarg{frmclr}\oarg{txtclr}\oarg{wdth}\oarg{hght}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\smallanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=answer box with height 0.10 that of current \cs{textheight}
  and width 0.90 that of current \cs{linewidth}\\
  \cs{smallanswerbox}\oarg{txt}\oarg{bgclr}}
\smallanswerbox[][red]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\mediumanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=answer box with height 0.20 that of current \cs{textheight}
  and width 0.90 that of current \cs{linewidth}\\
  \cs{mediumanswerbox}\oarg{txt}\oarg{bgclr}}
\mediumanswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\largeanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=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)\\
  \cs{largeanswerbox}\oarg{txt}\oarg{bgclr}}
\largeanswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeMacro{\largeranswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=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)\\
  \cs{largreanswerbox}\oarg{txt}\oarg{bgclr}}
\largreanswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\hugeanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=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)\\
  \cs{hugeanswerbox}\oarg{txt}\oarg{bgclr}}
\hugeanswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\hugeranswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=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)\\
  \cs{hugeranswerbox}\oarg{txt}\oarg{bgclr}}
\hugeranswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\fullpageanswerbox}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=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)\\
  \cs{fullpageanswerbox}\oarg{txt}\oarg{bgclr}}
\fullpageanswerbox[][lightgray]
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{miinstructornote}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=environment for highlighting notes to instructors\\
  \cs{begin\{miinstructornote\}}\\
  \meta{content}\\
  \cs{end\{{miinstructornote}\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{mistudentnote}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=environment for highlighting notes to students\\
  \cs{begin\{studentnote\}}\\
  \meta{content}\\
  \cs{end\{{studentnote}\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{miderivation}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=fancy environment for mathematical derivations based on
  |align| environment\\
  \cs{begin\{miderivation\}}\\
    \meta{content}\\
  \cs{end\{miderivation\}}}
\begin{miderivation}
  \gamma &= \relgamma{\magvect{v}} 
    && \text{given} \\
  \msup{\gamma}{2}&= \ooomx{\msup{(\frac{\magvect{v}}{c})}{2}}
    &&\text{square both sides}\\
  \frac{1}{\msup{\gamma}{2}}&=1-\msup{(\frac{\magvect{v}}{c})}{2}
    &&\text{reciprocal of
    both sides} \\
  \msup{(\frac{\magvect{v}}{c})}{2}&=1-\frac{1}{\msup{\gamma}{2}}
    &&\text{rearrange} \\
  \frac{\magvect{v}}{c}&=\sqrt{1-\frac{1}{\msup{\gamma}{2}}}
    &&\text{square root of both sides}
\end{miderivation}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{bwinstructornote}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=environment for highlighting notes to instructors\\
  \cs{begin\{bwinstructornote\}}\\
  \meta{content}\\
  \cs{end\{{bwinstructornote}\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{bwstudentnote}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=environment for highlighting notes to students\\
  \cs{begin\{bwstudentnote\}}\\
  \meta{content}\\
  \cs{end\{{bwstudentnote}\}}}
\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{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \DescribeEnv{bwderivation}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=fancy environment for mathematical derivations based on
  |align| environment\\
  \cs{begin\{bwderivation\}}\\
    \meta{content}\\
  \cs{end\{bwderivation\}}}
\begin{bwderivation}
  \gamma &= \relgamma{\magvect{v}} 
    && \text{given} \\
  \msup{\gamma}{2}&= \ooomx{\msup{(\frac{\magvect{v}}{c})}{2}}
    &&\text{square both sides}\\
  \frac{1}{\msup{\gamma}{2}}&=1-\msup{(\frac{\magvect{v}}{c})}{2}
    &&\text{reciprocal of
    both sides} \\
  \msup{(\frac{\magvect{v}}{c})}{2}&=1-\frac{1}{\msup{\gamma}{2}}
    &&\text{rearrange} \\
  \frac{\magvect{v}}{c}&=\sqrt{1-\frac{1}{\msup{\gamma}{2}}}
    &&\text{square root of both sides}
\end{bwderivation}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Miscellaneous Commands}
%
% \DescribeMacro{\checkpoint}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=centered checkpoint for student discussion\\
  \cs{checkpoint}}
\checkpoint
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\image}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{listing only,title=centered figure displayed actual size with
  caption\\ \cs{image}\marg{imagefilename}\marg{caption}}
\image{satellite.pdf}{Photograph of satellite}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \DescribeMacro{\sneakyone}
%\iffalse
%<*example>
%\fi
\begin{tcblisting}{title=shows factors dividing to a sneaky one\\
  \cs{sneakyone}\marg{thing}}
\sneakyone{\m}
\end{tcblisting}
%\iffalse
%</example>
%\fi
%
% \newpage
% \subsection{Experimental Commands}
% Commands defined in this section are not guaranteed to work consistently and are
% included for experimental uses only. They may or may not exist in future releases.
% Most are an attempt to simplify existing commands 
% \ntodo[Question]{Should the subscript or component come first?} 
% for subscripted vectors.
%
%\begin{center}
%\begin{tabular}{ccc}
%  \multicolumn{2}{l}{Experimental Syntax} & Existing Syntax \\
%  \hline \\
%  \verb|\vecto{E}| & \vecto{E} & \verb|\vect{E}| \\
%  \verb|\vecto{E}[ball]| & \vecto{E}[ball] & \verb|\vectsub{E}{ball}| \\
%  \verb|\compvecto{E}{y}| & \compvecto{E}{y} & \verb|\compvect{E}{y}| \\
%  \verb|\compvecto{E}[ball]{x}|&\compvecto{E}[ball]{x}&\verb|\compvectsub{E}{ball}{x}| \\
%  \verb|\scompsvecto{E}| & \scompsvecto{E} & \verb|\scompsvect{E}| \\
%  \verb|\scompsvecto{E}[ball]|&\scompsvecto{E}[ball] & \verb|\scompsvectsub{E}{ball}| \\
%  \verb|\compposo{y}| & \compposo{y} & \verb|\comppos{y}| \\
%  \verb|\compposo[ball]{y}| & \compposo[ball]{y} & \verb|\comppossub{ball}{y}| \\
%  \verb|\scompsposo| & \scompsposo & \verb|\scompspos| \\
%  \verb|\scompsposo[ball]| & \scompsposo[ball] & \verb|\scompspossub{ball}|
%\end{tabular}
%\end{center}
%
% \StopEventually{}
%
% \newpage
% \section{Source Code}
%
% \iffalse
%<*package>
% \fi
% Note the packages that must be present.
%    \begin{macrocode}
\RequirePackage[intlimits]{amsmath}
\RequirePackage{amssymb}
\RequirePackage{bigints}
\RequirePackage{cancel}
\RequirePackage[leftbars,color]{changebar}
\RequirePackage[dvipsnames]{xcolor}
\RequirePackage{environ}
\RequirePackage{etoolbox}
\RequirePackage{extarrows}
\RequirePackage{filehook}
\RequirePackage[T1]{fontenc}
\RequirePackage{graphicx}
\RequirePackage{epstopdf}
\RequirePackage{textcomp}
\RequirePackage{letltxmacro}
\RequirePackage{listings}
\RequirePackage[framemethod=TikZ]{mdframed}
\RequirePackage[amssymb,cdot,derivedinbase,derived,thickqspace]{SIunits}
\RequirePackage{suffix}
\RequirePackage{xargs}
\RequirePackage{xparse}
\RequirePackage{xspace}
\RequirePackage{ifthen}
\RequirePackage{calligra}
\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{vpythoncolor}{rgb}{0.95,0.95,0.95}
\newcommand{\lstvpython}{\lstset{language=Python,numbers=left,numberstyle=\tiny,
  backgroundcolor=\color{vpythoncolor},upquote=true,breaklines}}
\newboolean{@optitalicvectors}
\newboolean{@optdoubleabsbars}
\newboolean{@optbaseunits}
\newboolean{@optdrvdunits}
\setboolean{@optitalicvectors}{false}
\setboolean{@optdoubleabsbars}{false}
\setboolean{@optbaseunits}{false}
\setboolean{@optdrvdunits}{false}
\DeclareOption{italicvectors}{\setboolean{@optitalicvectors}{true}}
\DeclareOption{doubleabsbars}{\setboolean{@optdoubleabsbars}{true}}
\DeclareOption{baseunits}{\setboolean{@optbaseunits}{true}}
\DeclareOption{drvdunits}{\setboolean{@optdrvdunits}{true}}
\ProcessOptions\relax
%    \end{macrocode}
%
% \newpage
% \noindent This block of code corrects conflicts with SIunits.
%    \begin{macrocode}
\AtBeginOfPackageFile*{SIunits}{%
	\csundef{power}
  \csundef{square}
  \newcommand*{\square}[1]{\ensuremath{\mathrm{#1}^{2}}}
  \renewcommand*{\squared}{\ensuremath{^{\mathrm{2}}}}
  \renewcommand*{\cubic}[1]{\ensuremath{\mathrm{#1}^{3}}}
  \renewcommand*{\cubed}{\ensuremath{^{\mathrm{3}}}}
	\renewcommand*{\fourth}[1]{\ensuremath{\mathrm{#1}^{4}}}
	\renewcommand*{\reciprocal}[1]{\ensuremath{\mathrm{#1}^{\SIminus1}}}
	\renewcommand*{\rp}{\ensuremath{^{\mathrm{\SIminus1}}}}
	\renewcommand*{\rpsquare}[1]{\ensuremath{\mathrm{#1}^{\SIminus2}}}
	\renewcommand*{\rpsquared}{\ensuremath{^{\mathrm{\SIminus2}}}}
	\renewcommand*{\rpcubic}[1]{\ensuremath{\mathrm{#1}^{\SIminus3}}}
	\renewcommand*{\rpcubed}{\ensuremath{^{\mathrm{\SIminus3}}}}
	\renewcommand*{\rpfourth}[1]{\ensuremath{\mathrm{#1}^{\SIminus4}}}
	\typeout{mandi: SIunits conflicts fixed, but don't use \protect\square\space.}
}%
%    \end{macrocode}
%
% \begin{macro}{\newphysicsquantity}
% \begin{macro}{\newphysicsconstant}
% \begin{macro}{\hereusebaseunit}
% \begin{macro}{\hereusedrvdunit}
% \begin{macro}{\hereusetradunit}
% \begin{macro}{\usebaseunit}
% \begin{macro}{\usedrvdunit}
% \begin{macro}{\usetradunit}
% \begin{macro}{\perpusebaseunit}
% \begin{macro}{\perpusedrvdunit}
% \begin{macro}{\perpusetradunit}
% 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\selecttradunit[3]{#3}
\newcommand\selectunit{}
\newcommand\perpusebaseunit{\let\selectunit=\selectbaseunit}
\newcommand\perpusedrvdunit{\let\selectunit=\selectdrvdunit}
\newcommand\perpusetradunit{\let\selectunit=\selecttradunit}
\newcommand\hereusebaseunit[1]{%
  \begingroup\perpusebaseunit#1\endgroup}%
\newcommand\hereusedrvdunit[1]{%
  \begingroup\perpusedrvdunit#1\endgroup}%
\newcommand\hereusetradunit[1]{%
  \begingroup\perpusetradunit#1\endgroup}%
\newenvironment{usebaseunit}{\perpusebaseunit}{}%
\newenvironment{usedrvdunit}{\perpusedrvdunit}{}%
\newenvironment{usetradunit}{\perpusetradunit}{}%
\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{\ensuremath{\unit{#8}{\selectunit{#3}{#1}{#2}}}}%
  \mi@name#4{#5baseunit}#7{\ensuremath{\unit{#8}{#3}}}%
  \mi@name#4{#5drvdunit}#7{\ensuremath{\unit{#8}{#1}}}%
  \mi@name#4{#5tradunit}#7{\ensuremath{\unit{#8}{#2}}}%
  \mi@name#4{#5onlyunit}{\ensuremath{\selectunit{#3}{#1}{#2}}}%
  \mi@name#4{#5onlybaseunit}{\ensuremath{#3}}%
  \mi@name#4{#5onlydrvdunit}{\ensuremath{#1}}%
  \mi@name#4{#5onlytradunit}{\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}}}{}}%
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \noindent This block of code processes the options.
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\typeout{mandi: You'll get italic vector kernels.}}
  {\typeout{mandi: You'll get Roman vector kernels.}}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\typeout{mandi: You'll get double absolute value bars.}}
  {\typeout{mandi: You'll get single absolute value bars.}}
\ifthenelse{\boolean{@optbaseunits}}
  {\perpusebaseunit %
   \typeout{mandi: You'll get base units.}}
  {\ifthenelse{\boolean{@optdrvdunits}}
     {\perpusedrvdunit %
      \typeout{mandi: You'll get derived units.}}
     {\perpusetradunit %
      \typeout{mandi: You'll get traditional units.}}}
%    \end{macrocode}
%
% \noindent This block of code makes parentheses adjustable.
%    \begin{macrocode}
\def\resetMathstrut@{%
  \setbox\z@\hbox{%
    \mathchardef\@tempa\mathcode`\[\relax
    \def\@tempb##1"##2##3{\the\textfont"##3\char"}%
    \expandafter\@tempb\meaning\@tempa \relax
  }%
  \ht\Mathstrutbox@\ht\z@ \dp\Mathstrutbox@\dp\z@}
\begingroup
  \catcode`(\active \xdef({\left\string(}
  \catcode`)\active \xdef){\right\string)}
\endgroup
\mathcode`(="8000 \mathcode`)="8000
\typeout{mandi: parentheses made adjustable in math mode.}
%    \end{macrocode}
%
% \noindent This block of code fixes square root symbol.
%    \begin{macrocode}
\let\oldr@@t\r@@t
\def\r@@t#1#2{%
\setbox0=\hbox{\(\oldr@@t#1{#2\,}\)}\dimen0=\ht0
\advance\dimen0-0.2\ht0
\setbox2=\hbox{\vrule height\ht0 depth -\dimen0}%
{\box0\lower0.4pt\box2}}
\LetLtxMacro{\oldsqrt}{\sqrt}
\renewcommand*{\sqrt}[2][\relax]{\oldsqrt[#1]{#2}}
\typeout{mandi: square root symbol fixed.}
%    \end{macrocode}
%
% \begin{macro}{\m}
% SI base unit of length or spatial displacement
%    \begin{macrocode}
\newcommand{\m}{\metre}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\kg}
% SI base unit of mass
%    \begin{macrocode}
\newcommand{\kg}{\kilogram}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\s}
% SI base unit of time or temporal displacement
%    \begin{macrocode}
\newcommand{\s}{\second}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\A}
% SI base unit of electric current
%    \begin{macrocode}
\newcommand{\A}{\ampere}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\K}
% SI base unit of thermodynamic temperature
%    \begin{macrocode}
\newcommand{\K}{\kelvin}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mol}
% SI base unit of amount
%    \begin{macrocode}
\newcommand{\mol}{\mole}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cd}
% SI base unit of luminous intensity
%    \begin{macrocode}
\newcommand{\cd}{\candela}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\displacement}
%    \begin{macrocode}
\newphysicsquantity{displacement}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mass}
%    \begin{macrocode}
\newphysicsquantity{mass}{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\duration}
%    \begin{macrocode}
\newphysicsquantity{duration}{\s}[\s][\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\current}
%    \begin{macrocode}
\newphysicsquantity{current}{\A}[\A][\A]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\temperature}
%    \begin{macrocode}
\newphysicsquantity{temperature}{\K}[\K][\K]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\amount}
%    \begin{macrocode}
\newphysicsquantity{amount}{\mol}[\mol][\mol]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\luminous}
%    \begin{macrocode}
\newphysicsquantity{luminous}{\cd}[\cd][\cd]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\planeangle}
%    \begin{macrocode}
\newphysicsquantity{planeangle}{\m\usk\reciprocal\m}[\radian][\radian]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\solidangle}
%    \begin{macrocode}
\newphysicsquantity{solidangle}{\m\squared\usk\rpsquare\m}[\steradian][\steradian]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\indegrees}
%    \begin{macrocode}
\newcommand{\indegrees}[1]{\ensuremath{\unit{#1}{\degree}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\inarcminutes}
%    \begin{macrocode}
\newcommand{\inarcminutes}[1]{\ensuremath{\unit{#1}{\arcminute}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\inarcseconds}
%    \begin{macrocode}
\newcommand{\inarcseconds}[1]{\ensuremath{\unit{#1}{\arcsecond}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ineV}
%    \begin{macrocode}
\newcommand{\ineV}[1]{\ensuremath{\unit{#1}{\electronvolt}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\inAU}
%    \begin{macrocode}
\newcommand{\inAU}[1]{\ensuremath{\unit{#1}{AU}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\velocityc}
%    \begin{macrocode}
\newcommand{\velocityc}[1]{\ensuremath{#1c}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\velocity}
%    \begin{macrocode}
\newphysicsquantity{velocity}{\m\usk\reciprocal\s}[\m\usk\reciprocal\s][\m\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acceleration}
%    \begin{macrocode}
\newphysicsquantity{acceleration}{\m\usk\s\rpsquared}[\newton\per\kg][\m\per\s\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\gamman}
%    \begin{macrocode}
\newcommand{\gamman}[1]{\ensuremath{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\momentum}
%    \begin{macrocode}
\newphysicsquantity{momentum}{\m\usk\kg\usk\reciprocal\s}[\newton\usk\s][\kg\usk\m\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\impulse}
%    \begin{macrocode}
\newphysicsquantity{impulse}{\m\usk\kg\usk\reciprocal\s}[\newton\usk\s][\kg\usk\m\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\force}
%    \begin{macrocode}
\newphysicsquantity{force}{\m\usk\kg\usk\s\rpsquared}[\newton][\newton]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\springstiffness}
%    \begin{macrocode}
\newphysicsquantity{springstiffness}{\kg\usk\s\rpsquared}[\newton\per\m][\newton\per\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\springstretch}
%    \begin{macrocode}
\newphysicsquantity{springstretch}{\m}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\area}
%    \begin{macrocode}
\newphysicsquantity{area}{\m\squared}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\volume}
%    \begin{macrocode}
\newphysicsquantity{volume}{\cubic\m}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\linearmassdensity}
%    \begin{macrocode}
\newphysicsquantity{linearmassdensity}{\reciprocal\m\usk\kg}[\kg\per\m][\kg\per\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\areamassdensity}
%    \begin{macrocode}
\newphysicsquantity{areamassdensity}{\m\rpsquared\usk\kg}[\kg\per\m\squared]
[\kg\per\m\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\volumemassdensity}
%    \begin{macrocode}
\newphysicsquantity{volumemassdensity}{\m\rpcubed\usk\kg}[\kg\per\m\cubed]
[\kg\per\m\cubed]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\youngsmodulus}
%    \begin{macrocode}
\newphysicsquantity{youngsmodulus}{\reciprocal\m\usk\kg\usk\s\rpsquared}
[\newton\per\m\squared][\pascal]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\work}
%    \begin{macrocode}
\newphysicsquantity{work}{\m\squared\usk\kilogram\usk\s\rpsquared}[\joule]
[\newton\usk\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\energy}
%    \begin{macrocode}
\newphysicsquantity{energy}{\m\squared\usk\kilogram\usk\s\rpsquared}[\joule]
[\newton\usk\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\power}
%    \begin{macrocode}
\newphysicsquantity{power}{\m\squared\usk\kg\usk\s\rpcubed}[\watt][\joule\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\angularvelocity}
%    \begin{macrocode}
\newphysicsquantity{angularvelocity}{\radian\usk\reciprocal\s}[\radian\per\s]
[\radian\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\angularacceleration}
%    \begin{macrocode}
\newphysicsquantity{angularacceleration}{\radian\usk\s\rpsquared}[\radian\per\s\squared]
[\radian\per\s\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\angularmomentum}
%    \begin{macrocode}
\newphysicsquantity{angularmomentum}{\m\squared\usk\kg\usk\reciprocal\s}[\joule\usk\s]
[\kg\usk\m\squared\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\momentofinertia}
%    \begin{macrocode}
\newphysicsquantity{momentofinertia}{\m\squared\usk\kg}[\joule\usk\s\squared]
[\kg\usk\m\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\torque}
%    \begin{macrocode}
\newphysicsquantity{torque}{\m\squared\usk\kg\usk\s\rpsquared}[\joule\per\radian]
[\newton\usk\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\entropy}
%    \begin{macrocode}
\newphysicsquantity{entropy}{\m\squared\usk\kilogram\usk\s\rpsquared\usk\reciprocal\K}
[\joule\per\K][\joule\per\K]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wavelength}
%    \begin{macrocode}
\newphysicsquantity{wavelength}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wavenumber}
%    \begin{macrocode}
\newphysicsquantity{wavenumber}{\reciprocal\m}[\per\m][\per\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\frequency}
%    \begin{macrocode}
\newphysicsquantity{frequency}{\reciprocal\s}[\hertz][\hertz]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\angularfrequency}
%    \begin{macrocode}
\newphysicsquantity{angularfrequency}{\radian\usk\reciprocal\s}[\radian\per\s]
[\radian\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\charge}
%    \begin{macrocode}
\newphysicsquantity{charge}{\A\usk\s}[\coulomb][\coulomb]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\permittivity}
%    \begin{macrocode}
\newphysicsquantity{permittivity}{\m\rpcubed\usk\reciprocal\kg\usk\s^{4}\usk\A\squared}
[\farad\per\m][\coulomb\squared\per\newton\usk\m\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\permeability}
%    \begin{macrocode}
\newphysicsquantity{permeability}{\m\usk\kg\usk\s\rpsquared\usk\A\rpsquared}
[\henry\per\m][\tesla\usk\m\per\A]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\electricfield}
%    \begin{macrocode}
\newphysicsquantity{electricfield}{\m\usk\kg\usk\s\rpcubed\usk\reciprocal\A}[\volt\per\m]
[\newton\per\coulomb]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\electricdipolemom}
%    \begin{macrocode}
\newphysicsquantity{electricdipolemom}{\m\usk\s\usk\A}[\coulomb\usk\m][\coulomb\usk\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magneticfield}
%    \begin{macrocode}
\newphysicsquantity{magneticfield}{\kg\usk\s\rpsquared\usk\reciprocal\A}[\tesla]
[\newton\per\coulomb\usk(\m\per\s)]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cmagneticfield}
%    \begin{macrocode}
\newphysicsquantity{cmagneticfield}{\m\usk\kg\usk\s\rpcubed\usk\reciprocal\A}[\volt\per\m]
[\newton\per\coulomb]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\lv}
% \begin{macro}{\rv}
%    \begin{macrocode}
\newcommand{\lv}{\ensuremath{\left\langle}}
\newcommand{\rv}{\ensuremath{\right\rangle}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\symvect}
%    \begin{macrocode}
\newcommand{\symvect}{\mivector}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ncompsvect}
%    \begin{macrocode}
\newcommand{\ncompsvect}{\mivector}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magvectncomps}
% Written in LaTeX3
%    \begin{macrocode}
\ExplSyntaxOn
\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{(\clist_use:Nnnn \l_tmpa_clist { )^2+( } { )^2+( } { )^2+( } )^2 }
        }%
      }%
      {%
        \clist_set:Nn \l_tmpa_clist { #1 }
        \ensuremath{%
          \sqrt{(\clist_use:Nnnn \l_tmpa_clist {\;{ #2 })^2+(} {\;{ #2 })^2+(}
          {\;{ #2 })^2+(} \;{ #2 })^2}
        }%
      }%
  }%
\ExplSyntaxOff
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\zerovect}
% \begin{macro}{\ncompszerovect}
%    \begin{macrocode}
\newcommand{\zerovect}{\vect{0}}
\newcommand{\ncompszerovect}{\mivector{0,0,0}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\vect}[1]{\ensuremath{\vec{#1}}}}
  {\newcommand{\vect}[1]{\ensuremath{\vec{\mathrm{#1}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magvect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\newcommand{\magvect}[1]{\ensuremath{\magof{\vect{#1}}}}}
  {\newcommand{\magvect}[1]{\ensuremath{\abs{\vect{#1}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dmagvect}
% \begin{macro}{\Dmagvect}
%    \begin{macrocode}
\newcommand{\dmagvect}[1]{\ensuremath{\dx{\magvect{#1}}}}
\newcommand{\Dmagvect}[1]{\ensuremath{\Delta\!\magvect{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dirvect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\dirvect}[1]{\ensuremath{\widehat{{#1}}}}}
  {\newcommand{\dirvect}[1]{\ensuremath{\widehat{\mathrm{#1}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\compvect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\compvect}[2]{\ensuremath{\ssub{#1}{\(#2\)}}}}
  {\newcommand{\compvect}[2]{\ensuremath{\ssub{\mathrm{#1}}{\(#2\)}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsvect}
%    \begin{macrocode}
\newcommand{\scompsvect}[1]{\ensuremath{\lv
  \compvect{#1}{x},
  \compvect{#1}{y},
  \compvect{#1}{z}\rv}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magvectscomps}
%    \begin{macrocode}
\newcommand{\magvectscomps}[1]{\ensuremath{\sqrt{
  \msup{\compvect{#1}{x}}{2}+
  \msup{\compvect{#1}{y}}{2}+
  \msup{\compvect{#1}{z}}{2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dvect}
% \begin{macro}{\Dvect}
%    \begin{macrocode}
\newcommand{\dvect}[1]{\ensuremath{\mathrm{d}\vect{#1}}}
\newcommand{\Dvect}[1]{\ensuremath{\Delta\vect{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dirdvect}
% \begin{macro}{\dirDvect}
%    \begin{macrocode}
\newcommand{\dirdvect}[1]{\ensuremath{\widehat{\dvect{#1}}}}
\newcommand{\dirDvect}[1]{\ensuremath{\widehat{\Dvect{#1}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ddirvect}
% \begin{macro}{\Ddirvect}
%    \begin{macrocode}
\newcommand{\ddirvect}[1]{\ensuremath{\mathrm{d}\dirvect{E}}}
\newcommand{\Ddirvect}[1]{\ensuremath{\Delta\dirvect{E}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\magdvect}
% \begin{macro}{\magDvect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\newcommand{\magdvect}[1]{\ensuremath{\magof{\dvect{#1}}}}
   \newcommand{\magDvect}[1]{\ensuremath{\magof{\Dvect{#1}}}}}
  {\newcommand{\magdvect}[1]{\ensuremath{\abs{\dvect{#1}}}}
   \newcommand{\magDvect}[1]{\ensuremath{\abs{\Dvect{#1}}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compdvect}
% \begin{macro}{\compDvect}
%    \begin{macrocode}
\newcommand{\compdvect}[2]{\ensuremath{\mathrm{d}\compvect{#1}{#2}}}
\newcommand{\compDvect}[2]{\ensuremath{\Delta\compvect{#1}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsdvect}
% \begin{macro}{\scompsDvect}
%    \begin{macrocode}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervect}
% \begin{macro}{\Dervect}
%    \begin{macrocode}
\newcommand{\dervect}[2]{\ensuremath{\frac{\dvect{#1}}{\mathrm{d}{#2}}}}
\newcommand{\Dervect}[2]{\ensuremath{\frac{\Dvect{#1}}{\Delta{#2}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compdervect}
% \begin{macro}{\compDervect}
%    \begin{macrocode}
\newcommand{\compdervect}[3]{\ensuremath{\dbyd{\compvect{#1}{#3}}{#2}}}
\newcommand{\compDervect}[3]{\ensuremath{\DbyD{\compvect{#1}{#3}}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsdervect}
% \begin{macro}{\scompsDervect}
%    \begin{macrocode}
\newcommand{\scompsdervect}[2]{\ensuremath{\lv
  \compdervect{#1}{#2}{x},
  \compdervect{#1}{#2}{y},
  \compdervect{#1}{#2}{z}\rv}}
\newcommand{\scompsDervect}[2]{\ensuremath{\lv
  \compDervect{#1}{#2}{x},
  \compDervect{#1}{#2}{y},
  \compDervect{#1}{#2}{z}\rv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\magdervect}
% \begin{macro}{\magDervect}
%    \begin{macrocode}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\newcommand{\magdervect}[2]{\ensuremath{\magof{\dervect{#1}{#2}}}}
   \newcommand{\magDervect}[2]{\ensuremath{\magof{\Dervect{#1}{#2}}}}}
  {\newcommand{\magdervect}[2]{\ensuremath{\abs{\dervect{#1}{#2}}}}
   \newcommand{\magDervect}[2]{\ensuremath{\abs{\Dervect{#1}{#2}}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dermagvect}
% \begin{macro}{\Dermagvect}
%    \begin{macrocode}
\newcommand{\dermagvect}[2]{\ensuremath{\dbyd{\magvect{#1}}{#2}}}
\newcommand{\Dermagvect}[2]{\ensuremath{\DbyD{\magvect{#1}}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompspos}
%    \begin{macrocode}
\newcommand{\scompspos}{\mivector{x,y,z}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\comppos}
%    \begin{macrocode}
\newcommand{\comppos}[1]{\ensuremath{{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsdpos}
% \begin{macro}{\scompsDpos}
%    \begin{macrocode}
\newcommand{\scompsdpos}{\mivector{\mathrm{d}x,\mathrm{d}y,\mathrm{d}z}}
\newcommand{\scompsDpos}{\mivector{\Delta x,\Delta y,\Delta z}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compdpos}
% \begin{macro}{\compDpos}
%    \begin{macrocode}
\newcommand{\compdpos}[1]{\ensuremath{\mathrm{d}{#1}}}
\newcommand{\compDpos}[1]{\ensuremath{\Delta{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsderpos}
% \begin{macro}{\scompsDerpos}
%    \begin{macrocode}
\newcommand{\scompsderpos}[1]{\ensuremath{\lv
  \frac{\mathrm{d}x}{\mathrm{d}{#1}},\frac{\mathrm{d}y}{\mathrm{d}{#1}},
    \frac{\mathrm{d}z}{\mathrm{d}{#1}}\rv}}
\newcommand{\scompsDerpos}[1]{\ensuremath{\lv
  \frac{\Delta x}{\Delta{#1}},\frac{\Delta y}{\Delta{#1}},
    \frac{\Delta z}{\Delta{#1}}\rv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compderpos}
% \begin{macro}{\compDerpos}
%    \begin{macrocode}
\newcommand{\compderpos}[2]{\ensuremath{\frac{\mathrm{d}{#1}}{\mathrm{d}{#2}}}}
\newcommand{\compDerpos}[2]{\ensuremath{\frac{\Delta{#1}}{\Delta{#2}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsub}
%    \begin{macrocode}
\newcommand{\vectsub}[2]{\ensuremath{\ssub{\vect{#1}}{#2}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\compvectsub}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\compvectsub}[3]{\ensuremath{\ssub{#1}{#2,\(#3\)}}}}
  {\newcommand{\compvectsub}[3]{\ensuremath{\ssub{\mathrm{#1}}{#2,\(#3\)}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsvectsub}
%    \begin{macrocode}
\newcommand{\scompsvectsub}[2]{\ensuremath{\lv
  \compvectsub{#1}{#2}{x},
  \compvectsub{#1}{#2}{y},
  \compvectsub{#1}{#2}{z}\rv}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magvectsub}
%    \begin{macrocode}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\newcommand{\magvectsub}[2]{\ensuremath{\magof{\vectsub{#1}{#2}}}}}
  {\newcommand{\magvectsub}[2]{\ensuremath{\abs{\vectsub{#1}{#2}}}}}
%    \end{macrocode}
% \end{macro}  
%
% \begin{macro}{\magvectsubscomps}
%    \begin{macrocode}
\newcommand{\magvectsubscomps}[2]{\ensuremath{\sqrt{
    \msup{\compvectsub{#1}{#2}{x}}{2}+
    \msup{\compvectsub{#1}{#2}{y}}{2}+
    \msup{\compvectsub{#1}{#2}{z}}{2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dirvectsub}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\dirvectsub}[2]{\ensuremath{\ssub{\widehat{#1}}{#2}}}}
  {\newcommand{\dirvectsub}[2]{\ensuremath{\ssub{\widehat{\mathrm{#1}}}{#2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dvectsub}
% \begin{macro}{\Dvectsub}
%    \begin{macrocode}
\newcommand{\dvectsub}[2]{\ensuremath{\mathrm{d}\vectsub{#1}{#2}}}
\newcommand{\Dvectsub}[2]{\ensuremath{\Delta\vectsub{#1}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compdvectsub}
% \begin{macro}{\compDvectsub}
%    \begin{macrocode}
\newcommand{\compdvectsub}[3]{\ensuremath{\mathrm{d}\compvectsub{#1}{#2}{#3}}}
\newcommand{\compDvectsub}[3]{\ensuremath{\Delta\compvectsub{#1}{#2}{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsdvectsub}
% \begin{macro}{\scompsDvectsub}
%    \begin{macrocode}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dermagvectsub}
% \begin{macro}{\Dermagvectsub}
%    \begin{macrocode}
\newcommand{\dermagvectsub}[3]{\ensuremath{\dbyd{\magvectsub{#1}{#2}}{#3}}}
\newcommand{\Dermagvectsub}[3]{\ensuremath{\DbyD{\magvectsub{#1}{#2}}{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectsub}
% \begin{macro}{\Dervectsub}
%    \begin{macrocode}
\newcommand{\dervectsub}[3]{\ensuremath{\dbyd{\vectsub{#1}{#2}}{#3}}}
\newcommand{\Dervectsub}[3]{\ensuremath{\DbyD{\vectsub{#1}{#2}}{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\magdervectsub}
% \begin{macro}{\magDervectsub}
%    \begin{macrocode}
\ifthenelse{\boolean{@optdoubleabsbars}}
  {\newcommand{\magdervectsub}[3]{\ensuremath{\magof{\dervectsub{#1}{#2}{#3}}}}
   \newcommand{\magDervectsub}[3]{\ensuremath{\magof{\Dervectsub{#1}{#2}{#3}}}}}
  {\newcommand{\magdervectsub}[3]{\ensuremath{\abs{\dervectsub{#1}{#2}{#3}}}}
   \newcommand{\magDervectsub}[3]{\ensuremath{\abs{\Dervectsub{#1}{#2}{#3}}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compdervectsub}
% \begin{macro}{\compDervectsub}
%    \begin{macrocode}
\newcommand{\compdervectsub}[4]{\ensuremath{\dbyd{\compvectsub{#1}{#2}{#4}}{#3}}}
\newcommand{\compDervectsub}[4]{\ensuremath{\DbyD{\compvectsub{#1}{#2}{#4}}{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsdervectsub}
% \begin{macro}{\scompsDervectsub}
%    \begin{macrocode}
\newcommand{\scompsdervectsub}[3]{\ensuremath{\lv
  \compdervectsub{#1}{#2}{#3}{x},
  \compdervectsub{#1}{#2}{#3}{y},
  \compdervectsub{#1}{#2}{#3}{z}\rv}}
\newcommand{\scompsDervectsub}[3]{\ensuremath{\lv
  \compDervectsub{#1}{#2}{#3}{x},
  \compDervectsub{#1}{#2}{#3}{y},
  \compDervectsub{#1}{#2}{#3}{z}\rv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\comppossub}
%    \begin{macrocode}
\newcommand{\comppossub}[2]{\ensuremath{\ssub{#2}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompspossub}
%    \begin{macrocode}
\newcommand{\scompspossub}[1]{\ensuremath{\lv 
  \comppossub{#1}{x},
  \comppossub{#1}{y},
  \comppossub{#1}{z}\rv}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\compdpossub}
% \begin{macro}{\compDpossub}
%    \begin{macrocode}
\newcommand{\compdpossub}[2]{\ensuremath{\mathrm{d}\comppossub{#1}{#2}}}
\newcommand{\compDpossub}[2]{\ensuremath{\Delta\comppossub{#1}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsdpossub}
% \begin{macro}{\scompsDpossub}
%    \begin{macrocode}
\newcommand{\scompsdpossub}[1]{\ensuremath{\lv 
  \compdpossub{#1}{x},
  \compdpossub{#1}{y},
  \compdpossub{#1}{z}\rv}}
\newcommand{\scompsDpossub}[1]{\ensuremath{\lv 
  \compDpossub{#1}{x},
  \compDpossub{#1}{y},
  \compDpossub{#1}{z}\rv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\compderpossub}
% \begin{macro}{\compDerpossub}
%    \begin{macrocode}
\newcommand{\compderpossub}[3]{\ensuremath{\dbyd{\comppossub{#1}{#3}}{#2}}}
\newcommand{\compDerpossub}[3]{\ensuremath{\DbyD{\comppossub{#1}{#3}}{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompsderpossub}
% \begin{macro}{\scompsDerpossub}
%    \begin{macrocode}
\newcommand{\scompsderpossub}[2]{\ensuremath{\lv
  \compderpossub{#1}{#2}{x},
  \compderpossub{#1}{#2}{y},
  \compderpossub{#1}{#2}{z}\rv}}
\newcommand{\scompsDerpossub}[2]{\ensuremath{\lv
  \compDerpossub{#1}{#2}{x},
  \compDerpossub{#1}{#2}{y},
  \compDerpossub{#1}{#2}{z}\rv}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\relpos}
%    \begin{macrocode}
\newcommand{\relpos}[1]{\ensuremath{\vectsub{r}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\relvel}
%    \begin{macrocode}
\newcommand{\relvel}[1]{\ensuremath{\vectsub{v}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\relmom}
%    \begin{macrocode}
\newcommand{\relmom}[1]{\ensuremath{\vectsub{p}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\relfor}
%    \begin{macrocode}
\newcommand{\relfor}[1]{\ensuremath{\vectsub{F}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotvect}
%    \begin{macrocode}
\newcommand{\vectdotvect}[2]{\ensuremath{{#1}\bullet{#2}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotsvect}
%    \begin{macrocode}
\newcommand{\vectdotsvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsvect{#2}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotevect}
%    \begin{macrocode}
\newcommand{\vectdotevect}[2]{\ensuremath{
  \compvect{#1}{x}\compvect{#2}{x}+
  \compvect{#1}{y}\compvect{#2}{y}+
  \compvect{#1}{z}\compvect{#2}{z}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotspos}
%    \begin{macrocode}
\newcommand{\vectdotspos}[1]{\ensuremath{\scompsvect{#1}\bullet\scompspos}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotepos}
%    \begin{macrocode}
\newcommand{\vectdotepos}[1]{\ensuremath{
  \compvect{#1}{x}\comppos{x}+
  \compvect{#1}{y}\comppos{y}+
  \compvect{#1}{z}\comppos{z}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectdotsdvect}
% \begin{macro}{\vectdotsDvect}
%    \begin{macrocode}
\newcommand{\vectdotsdvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsdvect{#2}}}
\newcommand{\vectdotsDvect}[2]{\ensuremath{\scompsvect{#1}\bullet\scompsDvect{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectdotedvect}
% \begin{macro}{\vectdoteDvect}
%    \begin{macrocode}
\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}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectdotsdpos}
% \begin{macro}{\vectdotsDpos}
%    \begin{macrocode}
\newcommand{\vectdotsdpos}[1]{\ensuremath{\scompsvect{#1}\bullet\scompsdpos}}
\newcommand{\vectdotsDpos}[1]{\ensuremath{\scompsvect{#1}\bullet\scompsDpos}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectdotedpos}
% \begin{macro}{\vectdoteDpos}
%    \begin{macrocode}
\newcommand{\vectdotedpos}[1]{\ensuremath{
  \compvect{#1}{x}\compdpos{x}+
  \compvect{#1}{y}\compdpos{y}+
  \compvect{#1}{z}\compdpos{z}}}
\newcommand{\vectdoteDpos}[1]{\ensuremath{
  \compvect{#1}{x}\compDpos{x}+
  \compvect{#1}{y}\compDpos{y}+
  \compvect{#1}{z}\compDpos{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotsvectsub}
%    \begin{macrocode}
\newcommand{\vectsubdotsvectsub}[4]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsvectsub{#3}{#4}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectsubdotevectsub}
%    \begin{macrocode}
\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}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vectsubdotsdvectsub}
% \begin{macro}{\vectsubdotsDvectsub}
%    \begin{macrocode}
\newcommand{\vectsubdotsdvectsub}[4]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsdvectsub{#3}{#4}}}
\newcommand{\vectsubdotsDvectsub}[4]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsDvectsub{#3}{#4}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotedvectsub}
% \begin{macro}{\vectsubdoteDvectsub}
%    \begin{macrocode}
\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}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotsdvect}
% \begin{macro}{\vectsubdotsDvect}
%    \begin{macrocode}
\newcommand{\vectsubdotsdvect}[3]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsdvect{#3}}}
\newcommand{\vectsubdotsDvect}[3]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsDvect{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotedvect}
% \begin{macro}{\vectsubdoteDvect}
%    \begin{macrocode}
\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}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotsdpos}
% \begin{macro}{\vectsubdotsDpos}
%    \begin{macrocode}
\newcommand{\vectsubdotsdpos}[2]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsdpos}}
\newcommand{\vectsubdotsDpos}[2]{\ensuremath{
  \scompsvectsub{#1}{#2}\bullet\scompsDpos}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectsubdotedpos}
% \begin{macro}{\vectsubdoteDpos}
%    \begin{macrocode}
\newcommand{\vectsubdotedpos}[2]{\ensuremath{
  \compvectsub{#1}{#2}{x}\compdpos{x}+
  \compvectsub{#1}{#2}{y}\compdpos{y}+
  \compvectsub{#1}{#2}{z}\compdpos{z}}}
\newcommand{\vectsubdoteDpos}[2]{\ensuremath{
  \compvectsub{#1}{#2}{x}\compDpos{x}+
  \compvectsub{#1}{#2}{y}\compDpos{y}+
  \compvectsub{#1}{#2}{z}\compDpos{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotsvect}
% \begin{macro}{\Dervectdotsvect}
%    \begin{macrocode}
\newcommand{\dervectdotsvect}[3]{\ensuremath{
  \scompsdervect{#1}{#2}\bullet\scompsvect{#3}}}
\newcommand{\Dervectdotsvect}[3]{\ensuremath{
  \scompsDervect{#1}{#2}\bullet\scompsvect{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotevect}
% \begin{macro}{\Dervectdotevect}
%    \begin{macrocode}
\newcommand{\dervectdotevect}[3]{\ensuremath{
  \compdervect{#1}{#2}{x}\compvect{#3}{x}+
  \compdervect{#1}{#2}{y}\compvect{#3}{y}+
  \compdervect{#1}{#2}{z}\compvect{#3}{z}}}
\newcommand{\Dervectdotevect}[3]{\ensuremath{
  \compDervect{#1}{#2}{x}\compvect{#3}{x}+
  \compDervect{#1}{#2}{y}\compvect{#3}{y}+
  \compDervect{#1}{#2}{z}\compvect{#3}{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectdotsdervect}
% \begin{macro}{\vectdotsDervect}
%    \begin{macrocode}
\newcommand{\vectdotsdervect}[3]{\ensuremath{
  \scompsvect{#1}\bullet\scompsdervect{#2}{#3}}}
\newcommand{\vectdotsDervect}[3]{\ensuremath{
  \scompsvect{#1}\bullet\scompsDervect{#2}{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vectdotedervect}
% \begin{macro}{\vectdoteDervect}
%    \begin{macrocode}
\newcommand{\vectdotedervect}[3]{\ensuremath{
  \compvect{#1}{x}\compdervect{#2}{#3}{x}+
  \compvect{#1}{y}\compdervect{#2}{#3}{y}+
  \compvect{#1}{z}\compdervect{#2}{#3}{z}}}
\newcommand{\vectdoteDervect}[3]{\ensuremath{
  \compvect{#1}{x}\compDervect{#2}{#3}{x}+
  \compvect{#1}{y}\compDervect{#2}{#3}{y}+
  \compvect{#1}{z}\compDervect{#2}{#3}{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotspos}
% \begin{macro}{\Dervectdotspos}
%    \begin{macrocode}
\newcommand{\dervectdotspos}[2]{\ensuremath{
  \scompsdervect{#1}{#2}\bullet\scompspos}}
\newcommand{\Dervectdotspos}[2]{\ensuremath{
  \scompsDervect{#1}{#2}\bullet\scompspos}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotepos}
% \begin{macro}{\Dervectdotepos}
%    \begin{macrocode}
\newcommand{\dervectdotepos}[2]{\ensuremath{
  \compdervect{#1}{#2}{x}\comppos{x}+
  \compdervect{#1}{#2}{y}\comppos{y}+
  \compdervect{#1}{#2}{z}\comppos{z}}}
\newcommand{\Dervectdotepos}[2]{\ensuremath{
  \compDervect{#1}{#2}{x}\comppos{x}+
  \compDervect{#1}{#2}{y}\comppos{y}+
  \compDervect{#1}{#2}{z}\comppos{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotsdvect}
% \begin{macro}{\DervectdotsDvect}
%    \begin{macrocode}
\newcommand{\dervectdotsdvect}[3]{\ensuremath{
  \scompsdervect{#1}{#2}\bullet\scompsdvect{#3}}}
\newcommand{\DervectdotsDvect}[3]{\ensuremath{
  \scompsDervect{#1}{#2}\bullet\scompsDvect{#3}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotedvect}
% \begin{macro}{\DervectdoteDvect}
%    \begin{macrocode}
\newcommand{\dervectdotedvect}[3]{\ensuremath{
  \compdervect{#1}{#2}{x}\compdvect{#3}{x}+
  \compdervect{#1}{#2}{y}\compdvect{#3}{y}+
  \compdervect{#1}{#2}{z}\compdvect{#3}{z}}}
\newcommand{\DervectdoteDvect}[3]{\ensuremath{
  \compDervect{#1}{#2}{x}\compDvect{#3}{x}+
  \compDervect{#1}{#2}{y}\compDvect{#3}{y}+
  \compDervect{#1}{#2}{z}\compDvect{#3}{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotsdpos}
% \begin{macro}{\DervectdotsDpos}
%    \begin{macrocode}
\newcommand{\dervectdotsdpos}[2]{\ensuremath{
  \scompsdervect{#1}{#2}\bullet\scompsdpos}}
\newcommand{\DervectdotsDpos}[2]{\ensuremath{
  \scompsDervect{#1}{#2}\bullet\scompsDpos}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dervectdotedpos}
% \begin{macro}{\DervectdoteDpos}
%    \begin{macrocode}
\newcommand{\dervectdotedpos}[2]{\ensuremath{
  \compdervect{#1}{#2}{x}\compdpos{x}+
  \compdervect{#1}{#2}{y}\compdpos{y}+
  \compdervect{#1}{#2}{z}\compdpos{z}}}
\newcommand{\DervectdoteDpos}[2]{\ensuremath{
  \compDervect{#1}{#2}{x}\compDpos{x}+
  \compDervect{#1}{#2}{y}\compDpos{y}+
  \compDervect{#1}{#2}{z}\compDpos{z}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ezero}
% \begin{macro}{\eone}
% \begin{macro}{\etwo}
% \begin{macro}{\ethree}
% \begin{macro}{\efour}
% \begin{macro}{\ek}
% \begin{macro}{\e}
%    \begin{macrocode}
\newcommand{\ezero}{\ensuremath{\msub{\mathbf{e}}{0}}}
\newcommand{\eone}{\ensuremath{\msub{\mathbf{e}}{1}}}
\newcommand{\etwo}{\ensuremath{\msub{\mathbf{e}}{2}}}
\newcommand{\ethree}{\ensuremath{\msub{\mathbf{e}}{3}}}
\newcommand{\efour}{\ensuremath{\msub{\mathbf{e}}{4}}}
\newcommand{\ek}[1]{\ensuremath{\msub{\mathbf{e}}{#1}}}
\newcommand{\e}{\ek}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\uezero}
% \begin{macro}{\ueone}
% \begin{macro}{\uetwo}
% \begin{macro}{\uethree}
% \begin{macro}{\uefour}
% \begin{macro}{\uek}
% \begin{macro}{\ue}
%    \begin{macrocode}
\newcommand{\uezero}{\ensuremath{\msub{\widehat{\mathbf{e}}}{0}}}
\newcommand{\ueone}{\ensuremath{\msub{\widehat{\mathbf{e}}}{1}}}
\newcommand{\uetwo}{\ensuremath{\msub{\widehat{\mathbf{e}}}{2}}}
\newcommand{\uethree}{\ensuremath{\msub{\widehat{\mathbf{e}}}{3}}}
\newcommand{\uefour}{\ensuremath{\msub{\widehat{\mathbf{e}}}{4}}}
\newcommand{\uek}[1]{\ensuremath{\msub{\widehat{\mathbf{e}}}{#1}}}
\newcommand{\ue}{\uek}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ezerozero}
% \begin{macro}{\eoneone}
% \begin{macro}{\eonetwo}
% \begin{macro}{\eonethree}
% \begin{macro}{\eonefour}
% \begin{macro}{\etwoone}
% \begin{macro}{\etwotwo}
% \begin{macro}{\etwothree}
% \begin{macro}{\etwofour}
% \begin{macro}{\ethreeone}
% \begin{macro}{\ethreetwo}
% \begin{macro}{\ethreethree}
% \begin{macro}{\ethreefour}
% \begin{macro}{\efourone}
% \begin{macro}{\efourtwo}
% \begin{macro}{\efourthree}
% \begin{macro}{\efourfour}
%    \begin{macrocode}
\newcommand{\ezerozero}{\ek{00}}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\euzero}
% \begin{macro}{\euone}
% \begin{macro}{\eutwo}
% \begin{macro}{\euthree}
% \begin{macro}{\eufour}
% \begin{macro}{\euk}
% \begin{macro}{\eu}
%    \begin{macrocode}
\newcommand{\euzero}{\ensuremath{\msup{\mathbf{e}}{0}}}
\newcommand{\euone}{\ensuremath{\msup{\mathbf{e}}{1}}}
\newcommand{\eutwo}{\ensuremath{\msup{\mathbf{e}}{2}}}
\newcommand{\euthree}{\ensuremath{\msup{\mathbf{e}}{3}}}
\newcommand{\eufour}{\ensuremath{\msup{\mathbf{e}}{4}}}
\newcommand{\euk}[1]{\ensuremath{\msup{\mathbf{e}}{#1}}}
\newcommand{\eu}{\euk}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \newpage
% \begin{macro}{\euzerozero}
% \begin{macro}{\euoneone}
% \begin{macro}{\euonetwo}
% \begin{macro}{\euonethree}
% \begin{macro}{\euonefour}
% \begin{macro}{\eutwoone}
% \begin{macro}{\eutwotwo}
% \begin{macro}{\eutwothree}
% \begin{macro}{\eutwofour}
% \begin{macro}{\euthreeone}
% \begin{macro}{\euthreetwo}
% \begin{macro}{\euthreethree}
% \begin{macro}{\euthreefour}
% \begin{macro}{\eufourone}
% \begin{macro}{\eufourtwo}
% \begin{macro}{\eufourthree}
% \begin{macro}{\eufourfour}
%    \begin{macrocode}
\newcommand{\euzerozero}{\euk{00}}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\gzero}
% \begin{macro}{\gone}
% \begin{macro}{\gtwo}
% \begin{macro}{\gthree}
% \begin{macro}{\gfour}
% \begin{macro}{\gk}
% \begin{macro}{\g}
%    \begin{macrocode}
\newcommand{\gzero}{\ensuremath{\msub{\mathbf{\gamma}}{0}}}
\newcommand{\gone}{\ensuremath{\msub{\mathbf{\gamma}}{1}}}
\newcommand{\gtwo}{\ensuremath{\msub{\mathbf{\gamma}}{2}}}
\newcommand{\gthree}{\ensuremath{\msub{\mathbf{\gamma}}{3}}}
\newcommand{\gfour}{\ensuremath{\msub{\mathbf{\gamma}}{4}}}
\newcommand{\gk}[1]{\ensuremath{\msub{\mathbf{\gamma}}{#1}}}
\newcommand{\g}{\gk}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\gzerozero}
% \begin{macro}{\goneone}
% \begin{macro}{\gonetwo}
% \begin{macro}{\gonethree}
% \begin{macro}{\gonefour}
% \begin{macro}{\gtwoone}
% \begin{macro}{\gtwotwo}
% \begin{macro}{\gtwothree}
% \begin{macro}{\gtwofour}
% \begin{macro}{\gthreeone}
% \begin{macro}{\gthreetwo}
% \begin{macro}{\gthreethree}
% \begin{macro}{\gthreefour}
% \begin{macro}{\gfourone}
% \begin{macro}{\gfourtwo}
% \begin{macro}{\gfourthree}
% \begin{macro}{\gfourfour}
%    \begin{macrocode}
\newcommand{\gzerozero}{\gk{00}}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \newpage
% \begin{macro}{\guzero}
% \begin{macro}{\guone}
% \begin{macro}{\gutwo}
% \begin{macro}{\guthree}
% \begin{macro}{\gufour}
% \begin{macro}{\guk}
% \begin{macro}{\gu}
%    \begin{macrocode}
\newcommand{\guzero}{\ensuremath{\msup{\mathbf{\gamma}}{0}}}
\newcommand{\guone}{\ensuremath{\msup{\mathbf{\gamma}}{1}}}
\newcommand{\gutwo}{\ensuremath{\msup{\mathbf{\gamma}}{2}}}
\newcommand{\guthree}{\ensuremath{\msup{\mathbf{\gamma}}{3}}}
\newcommand{\gufour}{\ensuremath{\msup{\mathbf{\gamma}}{4}}}
\newcommand{\guk}[1]{\ensuremath{\msup{\mathbf{\gamma}}{#1}}}
\newcommand{\gu}{\guk}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\guzerozero}
% \begin{macro}{\guoneone}
% \begin{macro}{\guonetwo}
% \begin{macro}{\guonethree}
% \begin{macro}{\guonefour}
% \begin{macro}{\gutwoone}
% \begin{macro}{\gutwotwo}
% \begin{macro}{\gutwothree}
% \begin{macro}{\gutwofour}
% \begin{macro}{\guthreeone}
% \begin{macro}{\guthreetwo}
% \begin{macro}{\guthreethree}
% \begin{macro}{\guthreefour}
% \begin{macro}{\gufourone}
% \begin{macro}{\gufourtwo}
% \begin{macro}{\gufourthree}
% \begin{macro}{\gufourfour}
%    \begin{macrocode}
\newcommand{\guzerozero}{\guk{00}}
\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}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\mivector}
% 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}}
 }%
\seq_new:N \l__mi_list_seq
\cs_new_protected:Npn \mi_vector:nn #1 #2
{%
  \ensuremath{%
    \seq_set_split:Nnn \l__mi_list_seq { , } { #2 }
    \int_compare:nF { \seq_count:N \l__mi_list_seq = 1 } { \left\langle }
    \seq_use:Nnnn \l__mi_list_seq { #1 } { #1 } { #1 }
    \int_compare:nF { \seq_count:N \l__mi_list_seq = 1 } { \right\rangle }
  }%
}%
\ExplSyntaxOff
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\colvector}
% \begin{macro}{\rowvector}
% Column and row vectors, written in LaTeX3
%    \begin{macrocode}
\ExplSyntaxOn
\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
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scompscvect}
%    \begin{macrocode}
\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}}%
  }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsrvect}
%    \begin{macrocode}
\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}}%
  }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\oofpez}
% Coulomb constant
%    \begin{macrocode}
\newphysicsconstant{oofpez}{\ensuremath{\frac{1}{\phantom{_o}4\pi\ssub{\epsilon}{o}}}}
{\scin[9]{9}}{\ensuremath{\m\cubed\usk\kg\usk\s^{-4}\usk\A\rpsquared}}[\m\per\farad]
[\newton\usk\m\squared\per\coulomb\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\oofpezcs}
% Coulomb constant (alternate)
%    \begin{macrocode}
\newphysicsconstant{oofpezcs}{\ensuremath{\frac{1}{\phantom{_o}4\pi\ssub{\epsilon}{o}
c^2\phantom{_o}}}}{\scin{-7}}{\m\usk\kg\usk\s\rpsquared\usk\A\rpsquared}[\tesla\usk\m
\squared][\newton\usk\s\squared\per\coulomb\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\epsz}
% vacuum permittivity
%    \begin{macrocode}
\newphysicsconstant{epsz}{\ensuremath{\ssub{\epsilon}{o}}}{\scin[9]{-12}}
{\m\rpcubed\usk\reciprocal\kg\usk\s^{4}\usk\A\squared}[\farad\per\m]
[\coulomb\squared\per\newton\usk\m\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mzofp}
% Biot-Savart constant
%    \begin{macrocode}
\newphysicsconstant{mzofp}{\ensuremath{\frac{\phantom{_oo}\ssub{\mu}{o}\phantom{_o}}
{4\pi}}}{\scin{-7}}{\m\usk\kg\usk\s\rpsquared\usk\A\rpsquared}[\henry\per\m]
[\tesla\usk\m\per\A]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\muz}
% vacuum permeability
%    \begin{macrocode}
\newphysicsconstant{muz}{\ensuremath{\ssub{\mu}{o}}}{\scin[4\pi]{-7}}
{\m\usk\kg\usk\s\rpsquared\usk\A\rpsquared}[\henry\per\m][\tesla\usk\m\per\A]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\kboltz}
% Boltzmann constant
%    \begin{macrocode}
\newphysicsconstant{kboltz}{\ensuremath{\ssub{k}{B}}}{\scin[1.38]{-23}}
{\kg\usk\m\squared\usk\rpsquare\s\usk\reciprocal\K}[\joule\per\K][\joule\per\K]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\kboltznev}
% Boltzmann constant (alternate)
%    \begin{macrocode}
\newcommand{\kboltznev}{\ensuremath{\scin[8.62]{-5}{\eV\per\K}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\stefan}
% Stefan-Boltzmann constant
%    \begin{macrocode}
\newphysicsconstant{stefan}{\ensuremath{\sigma}}{\scin[5.67]{-8}}{\kg\usk\s\rpcubed\usk
\K^{-4}}[\watt\per\m\squared\usk\K^4][\watt\per\m\squared\usk\K^4]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\planck}
% Planck constant
%    \begin{macrocode}
\newphysicsconstant{planck}{\ensuremath{h}}{\scin[6.62]{-34}}
{\m\squared\usk\kg\usk\reciprocal\s}[\joule\usk\s][\kg\usk\m\squared\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\plancknev}
% Planck constant (alternate)
%    \begin{macrocode}
\newcommand{\plancknev}{\ensuremath{\scin[4.136]{-15}{\eV\usk\s}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\planckbar}
% reduced Planck constant (Dirac constant)
%    \begin{macrocode}
\newphysicsconstant{planckbar}{\ensuremath{\hbar}}{\scin[1.05]{-34}}
{\m\squared\usk\kg\usk\reciprocal\s}[\joule\usk\s][\kg\usk\m\squared\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\planckbarnev}
% reduced Planck constant (alternate)
%    \begin{macrocode}
\newcommand{\planckbarnev}{\ensuremath{\scin[4.136]{-15}{\eV\usk\s}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Navogadro}
% Avogadro constant
%    \begin{macrocode}
\newphysicsconstant{Navogadro}{\ensuremath{\ssub{N}{A}}}{\scin[6.022]{23}}{\reciprocal
\mol}[\reciprocal\mol][\reciprocal\mol]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\bigG}
% universal gravitational constant
%    \begin{macrocode}
\newphysicsconstant{bigG}{\ensuremath{G}}{\scin[6.67]{-11}}
{\m\cubed\usk\reciprocal\kg\usk\s\rpsquared}[\joule\usk\m\per\kg\squared]
[\newton\usk\m\squared\per\kg\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\littleg}
% gravitational field strength at Earth's surface
%    \begin{macrocode}
\newphysicsconstant{littleg}{\ensuremath{g}}{9.80}{\m\usk\s\rpsquared}[\newton\per\kg]
[\m\per\s\squared]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\clight}
% light's speed
%    \begin{macrocode}
\newphysicsconstant{clight}{\ensuremath{c}}{\scin[3.00]{8}}{\m\usk\reciprocal\s}
[\m\usk\reciprocal\s][\m\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\clightnfn}
% light's speed (alternate)
%    \begin{macrocode}
\newcommand{\clightnfn}{\ensuremath{\unit{1}{ft\per\nano\s}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ratom}
% approximate atomic radius
%    \begin{macrocode}
\newphysicsconstant{Ratom}{\ensuremath{\ssub{r}{atom}}}{\scin{-10}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Mproton}
% proton's mass
%    \begin{macrocode}
\newphysicsconstant{Mproton}{\ensuremath{\ssub{m}{proton}}}{\scin[1.673]{-27}}{\kg}
[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Mneutron}
% neutron's mass
%    \begin{macrocode}
\newphysicsconstant{Mneutron}{\ensuremath{\ssub{m}{neutron}}}{\scin[1.675]{-27}}
{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Mhydrogen}
% hydrogen atom's mass
%    \begin{macrocode}
\newphysicsconstant{Mhydrogen}{\ensuremath{\ssub{m}{hydrogen}}}{\scin[1.673]{-27}}
{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Melectron}
% electron's mass
%    \begin{macrocode}
\newphysicsconstant{Melectron}{\ensuremath{\ssub{m}{electron}}}{\scin[9.109]{-31}}
{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\echarge}
% charge quantum
%    \begin{macrocode}
\newphysicsconstant{echarge}{\ensuremath{e}}{\scin[1.602]{-19}}{\A\usk\s}[\coulomb]
[\coulomb]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Qelectron}
% \begin{macro}{\qelectron}
% electron's charge
%    \begin{macrocode}
\newphysicsconstant{Qelectron}{\ensuremath{\ssub{Q}{electron}}}{-\echargevalue}
{\A\usk\s}[\coulomb][\coulomb]
\newphysicsconstant{qelectron}{\ensuremath{\ssub{q}{electron}}}{-\echargevalue}
{\A\usk\s}[\coulomb][\coulomb]
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Qproton}
% \begin{macro}{\qproton}
% proton's charge
%    \begin{macrocode}
\newphysicsconstant{Qproton}{\ensuremath{\ssub{Q}{proton}}}{+\echargevalue}
{\A\usk\s}[\coulomb][\coulomb]
\newphysicsconstant{qproton}{\ensuremath{\ssub{q}{proton}}}{+\echargevalue}
{\A\usk\s}[\coulomb][\coulomb]
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\MEarth}
% Earth's mass
%    \begin{macrocode}
\newphysicsconstant{MEarth}{\ensuremath{\ssub{M}{Earth}}}{\scin[6]{24}}{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\MMoon}
% Moon's mass
%    \begin{macrocode}
\newphysicsconstant{MMoon}{\ensuremath{\ssub{M}{Moon}}}{\scin[7]{22}}{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\MSun}
% Sun's mass
%    \begin{macrocode}
\newphysicsconstant{MSun}{\ensuremath{\ssub{M}{Sun}}}{\scin[2]{30}}{\kg}[\kg][\kg]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\REarth}
% Earth's radius
%    \begin{macrocode}
\newphysicsconstant{REarth}{\ensuremath{\ssub{R}{Earth}}}{\scin[6.4]{6}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\RMoon}
% Moon's radius
%    \begin{macrocode}
\newphysicsconstant{RMoon}{\ensuremath{\ssub{R}{Moon}}}{\scin[1.75]{6}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\RSun}
% Sun's radius
%    \begin{macrocode}
\newphysicsconstant{RSun}{\ensuremath{\ssub{R}{Sun}}}{\scin[7]{8}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ESdist}
% \begin{macro}{\SEdist}
% Earth-Sun distance (Sun-Earth distance)
%    \begin{macrocode}
\newphysicsconstant{ESdist}{\magvectsub{r}{ES}}{\scin[1.5]{11}}{\m}[\m][\m]
\newphysicsconstant{SEdist}{\magvectsub{r}{SE}}{\scin[1.5]{11}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\EMdist}
% \begin{macro}{\MEdist}
% Earth-Moon distance (Moon-Earth distance)
%    \begin{macrocode}
\newphysicsconstant{EMdist}{\magvectsub{r}{EM}}{\scin[4]{8}}{\m}[\m][\m]
\newphysicsconstant{MEdist}{\magvectsub{r}{ME}}{\scin[4]{8}}{\m}[\m][\m]
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\lightyear}
% \begin{macro}{\Lightyear}
% \begin{macro}{\cyear}
% \begin{macro}{\cyr}
% \begin{macro}{\yyear}
% \begin{macro}{\yr}
% \begin{macro}{\parsec}
% light year, year, and parsec
%    \begin{macrocode}
\newcommand{\lightyear}{\ensuremath{\mathrm{ly}}}
\newcommand{\Lightyear}{\ensuremath{\mathrm{LY}}}
\newcommand{\cyear}{\ensuremath{c\usk\mathrm{year}}}
\newcommand{\cyr}{\ensuremath{c\usk\mathrm{yr}}}
\newcommand{\yyear}{\ensuremath{\mathrm{year}}}
\newcommand{\yr}{\ensuremath{\mathrm{yr}}}
\newcommand{\parsec}{\ensuremath{\mathrm{pc}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\LSun}
% Sun's luminosity
%    \begin{macrocode}
\newphysicsconstant{LSun}{\ensuremath{\ssub{L}{Sun}}}{\scin[4]{26}}
  {\m\squared\usk\kg\usk\s\rpcubed}[\watt][\joule\per\s]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\TSun}
% Sun's effective temperature
%    \begin{macrocode}
\newphysicsconstant{TSun}{\ensuremath{\ssub{T}{Sun}}}{5800}{\K}[\K][\K]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\MagSun}
% Sun's absolute magnitude
%    \begin{macrocode}
\newphysicsconstant{MagSun}{\ensuremath{\ssub{M}{Sun}}}{+4.83}{}[][]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magSun}
% Sun's apparent magnitude
%    \begin{macrocode}
\newphysicsconstant{magSun}{\ensuremath{\ssub{m}{Sun}}}{-26.74}{}[][]
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Lstar}
% \begin{macro}{\Lsolar}
% stellar and solar luminosity
%    \begin{macrocode}
\newcommand{\Lstar}[1][\(\star\)]{\ensuremath{\ssub{L}{#1}}}
\newcommand{\Lsolar}{\ensuremath{\Lstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Tstar}
% \begin{macro}{\Tsolar}
% stellar and solar temperature
%    \begin{macrocode}
\newcommand{\Tstar}[1][\(\star\)]{\ensuremath{\ssub{T}{#1}}}
\newcommand{\Tsolar}{\ensuremath{\Tstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Rstar}
% \begin{macro}{\Rsolar}
% stellar and solar radius
%    \begin{macrocode}
\newcommand{\Rstar}[1][\(\star\)]{\ensuremath{\ssub{R}{#1}}}
\newcommand{\Rsolar}{\ensuremath{\Rstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Mstar}
% \begin{macro}{\Msolar}
% stellar and solar mass
%    \begin{macrocode}
\newcommand{\Mstar}[1][\(\star\)]{\ensuremath{\ssub{M}{#1}}}
\newcommand{\Msolar}{\ensuremath{\Mstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Fstar}
% \begin{macro}{\fstar}
% \begin{macro}{\FSun}
% \begin{macro}{\fSun}
% \begin{macro}{\Fsolar}
% \begin{macro}{\fsolar}
% stellar and solar fluxes
%    \begin{macrocode}
\newcommand{\Fstar}[1][\(\star\)]{\ensuremath{\ssub{F}{#1}}}
\newcommand{\fstar}[1][\(\star\)]{\ensuremath{\ssub{f}{#1}}}
\newcommand{\FSun}{\ensuremath{\Fstar[Sun]}}
\newcommand{\fSun}{\ensuremath{\fstar[Sun]}}
\newcommand{\Fsolar}{\ensuremath{\Fstar[\(\odot\)]}}
\newcommand{\fsolar}{\ensuremath{\fstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Magstar}
% \begin{macro}{\magstar}
% \begin{macro}{\Magsolar}
% \begin{macro}{\magsolar}
% stellar and solar magnitudes
%    \begin{macrocode}
\newcommand{\Magstar}[1][\(\star\)]{\ensuremath{\ssub{M}{#1}}}
\newcommand{\magstar}[1][\(\star\)]{\ensuremath{\ssub{m}{#1}}}
\newcommand{\Magsolar}{\ensuremath{\Magstar[\(\odot\)]}}
\newcommand{\magsolar}{\ensuremath{\magstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Dstar}
% \begin{macro}{\dstar}
% \begin{macro}{\Dsolar}
% \begin{macro}{\dsolar}
% stellar and solar distance
%    \begin{macrocode}
\newcommand{\Dstar}[1][\(\star\)]{\ensuremath{\ssub{D}{#1}}}
\newcommand{\dstar}[1][\(\star\)]{\ensuremath{\ssub{d}{#1}}}
\newcommand{\Dsolar}{\ensuremath{\Dstar[\(\odot\)]}}
\newcommand{\dsolar}{\ensuremath{\dstar[\(\odot\)]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\onehalf}
% \begin{macro}{\onethird}
% \begin{macro}{\onefourth}
% \begin{macro}{\onefifth}
% \begin{macro}{\onesixth}
% \begin{macro}{\oneseventh}
% \begin{macro}{\oneeighth}
% \begin{macro}{\oneninth}
% \begin{macro}{\onetenth}
% \begin{macro}{\twothirds}
% \begin{macro}{\twofifths}
% \begin{macro}{\twosevenths}
% \begin{macro}{\twoninths}
% \begin{macro}{\threehalves}
% \begin{macro}{\threefourths}
% \begin{macro}{\threefifths}
% \begin{macro}{\threesevenths}
% \begin{macro}{\threeeighths}
% \begin{macro}{\threetenths}
% \begin{macro}{\fourthirds}
% frequently used fractions
%    \begin{macrocode}
\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{\twothirds}{\ensuremath{\frac{2}{3}}\xspace}
\newcommand{\twofifths}{\ensuremath{\frac{2}{5}}\xspace}
\newcommand{\twosevenths}{\ensuremath{\frac{2}{7}}\xspace}
\newcommand{\twoninths}{\ensuremath{\frac{2}{9}}\xspace}
\newcommand{\threehalves}{\ensuremath{\frac{3}{2}}\xspace}
\newcommand{\threefourths}{\ensuremath{\frac{3}{4}}\xspace}
\newcommand{\threefifths}{\ensuremath{\frac{3}{5}}\xspace}
\newcommand{\threesevenths}{\ensuremath{\frac{3}{7}}\xspace}
\newcommand{\threeeighths}{\ensuremath{\frac{3}{8}}\xspace}
\newcommand{\threetenths}{\ensuremath{\frac{3}{10}}\xspace}
\newcommand{\fourthirds}{\ensuremath{\frac{4}{3}}\xspace}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dx}
% variable of integration
%    \begin{macrocode}
\newcommand{\dx}[1]{\ensuremath{\,\mathrm{d}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\evalfromto}
%    \begin{macrocode}
\newcommand{\evalfromto}[3]{\ensuremath{\Bigg.{#1}\Bigg\rvert_{#2}^{#3}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\evalat}
%    \begin{macrocode}
\newcommand{\evalat}[2]{\ensuremath{\Bigg.{#1}\Bigg\rvert_{#2}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\evaluatedat}
%    \begin{macrocode}
\newcommand{\evaluatedat}[1]{\ensuremath{\Bigg.\Bigg\rvert_{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\integral}
% \begin{macro}{\Integral}
%    \begin{macrocode}
\newcommandx{\integral}[4][1,2,usedefault]{\ensuremath{
  \int_{\ifthenelse{\equal{#1}{}}{}{#4=#1}}^{\ifthenelse{\equal{#2}{}}{}{#4=#2}}}
  {#3}\dx{#4}}
\newcommandx{\Integral}[4][1,2,usedefault]{\ensuremath{
  \bigint_{\ifthenelse{\equal{#1}{}}{}{#4=#1}}^{\ifthenelse{\equal{#2}{}}{}
  {#4=#2}}}{#3}\dx{#4}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\opensurfintegral}
% \begin{macro}{\opensurfIntegral}
%    \begin{macrocode}
\newcommand{\opensurfintegral}[2]{\ensuremath{
  \int\nolimits_{#1}\vectdotvect{\vect{#2}}{\dirvect{n}}\dx{A}}}
\newcommand{\opensurfIntegral}[2]{\ensuremath{
  \bigint\nolimits_{\mskip -25.00mu\displaystyle\mathbf{#1}}
  \vectdotvect{\vect{#2}}{\dirvect{n}}
  \dx{A}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\closedsurfintegral}
% \begin{macro}{\closedsurfIntegral}
%    \begin{macrocode}
\newcommand{\closedsurfintegral}[2]{\ensuremath{
  \oint\nolimits_{#1}\vectdotvect{\vect{#2}}{\dirvect{n}}\dx{A}}}
\newcommand{\closedsurfIntegral}[2]{\ensuremath{
  \bigoint\nolimits_{\mskip -25.00mu\displaystyle\mathbf{#1}}\;\;
  \vectdotvect{\vect{#2}}{\dirvect{n}}\dx{A}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\openlineintegral}
% \begin{macro}{\openlineIntegral}
%    \begin{macrocode}
\newcommand{\openlineintegral}[2]{\ensuremath{
  \int\nolimits_{#1}\vectdotvect{\vect{#2}}{\dirvect{t}}
  \dx{\ell}}}
\newcommand{\openlineIntegral}[2]{\ensuremath{
  \bigint\nolimits_{\mskip -25.00mu\displaystyle\mathbf{#1}}
  \vectdotvect{\vect{#2}}{\dirvect{t}}\dx{\ell}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\closedlineintegral}
% \begin{macro}{\closedlineIntegral}
%    \begin{macrocode}
\newcommand{\closedlineintegral}[2]{\ensuremath{
  \oint\nolimits_{#1}\vectdotvect{\vect{#2}}{\dirvect{t}}\dx{\ell}}}
\newcommand{\closedlineIntegral}[2]{\ensuremath{
  \bigoint\nolimits_{\mskip -25.00mu\displaystyle\mathbf {#1}}\;\;
  \vectdotvect{\vect{#2}}{\dirvect{t}}\dx{\ell}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dbydt}
% \begin{macro}{\DbyDt}
%    \begin{macrocode}
\newcommandx{\dbydt}[1][1]{\ensuremath{\frac{\mathrm{d}{#1}}{\mathrm{d}t}}}
\newcommandx{\DbyDt}[1][1]{\ensuremath{\frac{\Delta{#1}}{\Delta t}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ddbydt}
% \begin{macro}{\DDbyDt}
%    \begin{macrocode}
\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}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\pbypt}
%    \begin{macrocode}
\newcommandx{\pbypt}[1][1]{\ensuremath{\frac{\partial{#1}}{\partial t}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ppbypt}
%    \begin{macrocode}
\newcommandx{\ppbypt}[1][1]{\ensuremath{\frac{\partial^{2}{#1}}{\partial t^{2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dbyd}
% \begin{macro}{\DbyD}
%    \begin{macrocode}
\newcommand{\dbyd}[2]{\ensuremath{\frac{\mathrm{d}{#1}}{\mathrm{d}{#2}}}}
\newcommand{\DbyD}[2]{\ensuremath{\frac{\Delta{#1}}{\Delta{#2}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ddbyd}
% \begin{macro}{\DDbyD}
%    \begin{macrocode}
\newcommand{\ddbyd}[2]{\ensuremath{\frac{\mathrm{d}^{2}{#1}}{\mathrm{d}{#2}^{2}}}}
\newcommand{\DDbyD}[2]{\ensuremath{\frac{\Delta^{2}{#1}}{\Delta{#2}^{2}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\pbyp}
%    \begin{macrocode}
\newcommand{\pbyp}[2]{\ensuremath{\frac{\partial{#1}}{\partial{#2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ppbyp}
%    \begin{macrocode}
\newcommand{\ppbyp}[2]{\ensuremath{\frac{\partial^{2}{#1}}{\partial{#2}^{2}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\seriesfofx}
% \begin{macro}{\seriesexpx}
% \begin{macro}{\seriessinx}
% \begin{macro}{\seriescosx}
% \begin{macro}{\seriestanx}
% \begin{macro}{\seriesatox}
% \begin{macro}{\serieslnoneplusx}
% \begin{macro}{\binomialseries}
%    \begin{macrocode}
\newcommand{\seriesfofx}{\ensuremath{%
f(x) \approx f(a) + \frac{f^\prime (a)}{1!}(x-a) + \frac{f^{\prime\prime}(a)}{2!}(x-a)^2
+ \frac{f^{\prime\prime\prime}(a)}{3!}(x-a)^3 + \ldots}\xspace}
\newcommand{\seriesexpx}{\ensuremath{%
e^x \approx 1 + x + \frac{x^2}{2!} + \frac{x^3}{3!} + \ldots}\xspace}
\newcommand{\seriessinx}{\ensuremath{%
\sin x \approx x - \frac{x^3}{3!} + \frac{x^5}{5!} - \ldots}\xspace}
\newcommand{\seriescosx}{\ensuremath{%
\cos x \approx 1 - \frac{x^2}{2!} + \frac{x^4}{4!} - \ldots}\xspace}
\newcommand{\seriestanx}{\ensuremath{%
\tan x \approx x + \frac{x^3}{3} + \frac{2x^5}{15} + \ldots}\xspace}
\newcommand{\seriesatox}{\ensuremath{%
a^x \approx 1 + x \ln{a} + \frac{(x \ln a)^2}{2!} + \frac{(x \ln a)^3}{3!} + \ldots}
\xspace}
\newcommand{\serieslnoneplusx}{\ensuremath{%
\ln(1 \pm x) \approx \pm\; x - \frac{x^2}{2} \pm \frac{x^3}{3} - \frac{x^4}{4} \pm \ldots}
\xspace}
\newcommand{\binomialseries}{\ensuremath{%
(1 + x)^n \approx 1 + nx + \frac{n(n-1)}{2!}x^2 + \ldots}\xspace}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\divergence}
% \begin{macro}{\curl}
% user must specify |\vect{}| around the argument to get arrows
%    \begin{macrocode}
\newcommand{\divergence}[1]{\ensuremath{\vectdotvect{\nabla}{#1}}}
\newcommand{\curl}[1]{\ensuremath{\nabla\times{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\diracdelta}
%    \begin{macrocode}
\newcommand{\diracdelta}[1]{\ensuremath{\boldsymbol{\delta}\quant{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\asin}
%    \begin{macrocode}
\DeclareMathOperator{\asin}{\sin^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acos}
%    \begin{macrocode}
\DeclareMathOperator{\acos}{\cos^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\atan}
%    \begin{macrocode}
\DeclareMathOperator{\atan}{\tan^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\asec}
%    \begin{macrocode}
\DeclareMathOperator{\asec}{\sec^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acsc}
%    \begin{macrocode}
\DeclareMathOperator{\acsc}{\csc^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acot}
%    \begin{macrocode}
\DeclareMathOperator{\acot}{\cot^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sech}
%    \begin{macrocode}
\DeclareMathOperator{\sech}{sech}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\csch}
%    \begin{macrocode}
\DeclareMathOperator{\csch}{csch}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\asinh}
%    \begin{macrocode}
\DeclareMathOperator{\asinh}{\sinh^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acosh}
%    \begin{macrocode}
\DeclareMathOperator{\acosh}{\cosh^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\atanh}
%    \begin{macrocode}
\DeclareMathOperator{\atanh}{\tanh^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\asech}
%    \begin{macrocode}
\DeclareMathOperator{\asech}{\sech^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acsch}
%    \begin{macrocode}
\DeclareMathOperator{\acsch}{\csch^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\acoth}
%    \begin{macrocode}
\DeclareMathOperator{\acoth}{\coth^{-1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sgn}
%    \begin{macrocode}
\DeclareMathOperator{\sgn}{sgn}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dex}
%    \begin{macrocode}
\DeclareMathOperator{\dex}{dex}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\eV}
% \begin{macro}{\ev}
%    \begin{macrocode}
\newcommand{\eV}{\electronvolt}
\newcommand{\ev}{\electronvolt}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\emf}
%    \begin{macrocode}
\newcommand{\emf}{\ensuremath{\mathrm{emf}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\logb}
%    \begin{macrocode}
\newcommand{\logb}[1][\relax]{\ensuremath{\log_{_{#1}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\cB}
%    \begin{macrocode}
\ifthenelse{\boolean{@optitalicvectors}}
  {\newcommand{\cB}{\ensuremath{c\mskip -5.00mu B}}}
  {\newcommand{\cB}{\ensuremath{\textsf{c}\mskip -3.00mu\mathrm{B}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\newpi}
%    \begin{macrocode}
\newcommand{\newpi}{\ensuremath{\pi\mskip -7.8mu\pi}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scripty}
%    \begin{macrocode}
\newcommand{\scripty}[1]{\ensuremath{\mathcalligra{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\flux}
%    \begin{macrocode}
\newcommandx{\flux}[1][1]{\ensuremath{\ssub{\Phi}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\abs}
%    \begin{macrocode}
\newcommand{\abs}[1]{\ensuremath{\left\lvert{#1}\right\rvert}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\magof}
%    \begin{macrocode}
\newcommand{\magof}[1]{\ensuremath{\left\lVert{#1}\right\rVert}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\dimsof}
%    \begin{macrocode}
\newcommand{\dimsof}[1]{\ensuremath{\left[{#1}\right]}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\unitsof}
%    \begin{macrocode}
\newcommand{\unitsof}[1]{\ensuremath{\left[{#1}\right]_{_{u}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\quant}
% \begin{macro}{\bquant}
%    \begin{macrocode}
\newcommand{\quant}[1]{\ensuremath{\left({#1}\right)}}
\newcommand{\bquant}[1]{\ensuremath{\left[{#1}\right]}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\changein}
% \begin{macro}{\Changein}
%    \begin{macrocode}
\newcommand{\changein}[1]{\ensuremath{\delta{#1}}}
\newcommand{\Changein}[1]{\ensuremath{\Delta{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\scin}
% \begin{macro}{\ee}
% \begin{macro}{\EE}
%    \begin{macrocode}
\newcommandx{\scin}[3][1,3=\!\!,usedefault]{\ensuremath{
  \ifthenelse{\equal{#1}{}}
    {\unit{\msup{10}{#2}}{#3}}
    {\unit{\msup{{#1}\times 10}{#2}}{#3}}}}
\newcommand{\ee}[2]{\texttt{{#1}e{#2}}}
\newcommand{\EE}[2]{\texttt{{#1}E{#2}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\dms}
% \begin{macro}{\hms}
% \begin{macro}{\clockreading}
%    \begin{macrocode}
\newcommand{\dms}[3]{\ensuremath{\indegrees{#1}\inarcminutes{#2}\inarcseconds{#3}}}
\newcommand{\hms}[3]{\ensuremath{{#1}^{\hour}{#2}^{\mathrm{m}}{#3}^{\s}}}
\newcommand{\clockreading}{\hms}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\latitude}
% \begin{macro}{\latitudeN}
% \begin{macro}{\latitudeS}
% \begin{macro}{\longitude}
% \begin{macro}{\longitudeE}
% \begin{macro}{\longitudeW}
%    \begin{macrocode}
\newcommand{\latitude}[1]{\ensuremath{\unit{#1}{\degree}}}
\newcommand{\latitudeN}[1]{\ensuremath{\unit{#1}{\degree\; N}}}
\newcommand{\latitudeS}[1]{\ensuremath{\unit{#1}{\degree\; S}}}
\newcommand{\longitude}[1]{\ensuremath{\unit{#1}{\degree}}}
\newcommand{\longitudeE}[1]{\ensuremath{\unit{#1}{\degree\; E}}}
\newcommand{\longitudeW}[1]{\ensuremath{\unit{#1}{\degree\; W}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\ssub}
% I have never liked \LaTeX's default subscript positioning, so I have this
% command instead. There may be a better way of doing this.
%    \begin{macrocode}
\newcommand{\ssub}[2]{\ensuremath{{#1}_{_{_{\mbox{\tiny{#2}}}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ssup}
% I have never liked \LaTeX's default superscript positioning, so I have this
% command instead. There may be a better way of doing this.
%    \begin{macrocode}
\newcommand{\ssup}[2]{\ensuremath{{#1}^{^{^{\mbox{\tiny{#2}}}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ssud}
%    \begin{macrocode}
\newcommand{\ssud}[3]{\ensuremath{{#1}^{^{^{\mbox{\tiny{#2}}}}}_{_{_{\mbox{\tiny{#3}}}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\msub}
% I have never liked \LaTeX's default subscript positioning, so I have this
% command instead. There may be a better way of doing this.
%    \begin{macrocode}
\newcommand{\msub}[2]{\ensuremath{#1^{^{\scriptstyle{{}}}}_{_{_{\scriptstyle{#2}}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\msup}
% I have never liked \LaTeX's default superscript positioning, so I have this
% command instead. There may be a better way of doing this.
%    \begin{macrocode}
\newcommand{\msup}[2]{\ensuremath{#1^{^{\scriptstyle{#2}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\msud}
%    \begin{macrocode}
\newcommand{\msud}[3]{\ensuremath{#1^{^{\scriptstyle{#2}}}_{_{_{\scriptstyle{#3}}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\levicivita}
%    \begin{macrocode}
\newcommand{\levicivita}[1]{\ensuremath{\msub{\varepsilon}{#1}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\xaxis}
% \begin{macro}{\yaxis}
% \begin{macro}{\zaxis}
% \begin{macro}{\naxis}
% Coordinate axes.
%    \begin{macrocode}
\newcommand{\xaxis}{\ensuremath{x\mbox{-axis }}}
\newcommand{\yaxis}{\ensuremath{y\mbox{-axis }}}
\newcommand{\zaxis}{\ensuremath{z\mbox{-axis }}}
\newcommand{\naxis}[1]{\ensuremath{{#1}\mbox{-axis}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\xyplane}
% \begin{macro}{\yzplane}
% \begin{macro}{\zxplane}
% \begin{macro}{\yxplane}
% \begin{macro}{\zyplane}
% \begin{macro}{\xzplane}
% All permutations of planes formed by cartesian axes.
%    \begin{macrocode}
\newcommand{\xyplane}{\ensuremath{xy\mbox{-plane }}}
\newcommand{\yzplane}{\ensuremath{yz\mbox{-plane }}}
\newcommand{\zxplane}{\ensuremath{zx\mbox{-plane }}}
\newcommand{\yxplane}{\ensuremath{yx\mbox{-plane }}}
\newcommand{\zyplane}{\ensuremath{zy\mbox{-plane }}}
\newcommand{\xzplane}{\ensuremath{xz\mbox{-plane }}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\cuberoot}
% \begin{macro}{\fourthroot}
% \begin{macro}{\fifthroot}
% \begin{macro}{\fsqrt}
% \begin{macro}{\fcuberoot}
% \begin{macro}{\ffourthroot}
% \begin{macro}{\ffifthroot}
% Frequently used roots. Prepend |f| for fractional exponents.
%    \begin{macrocode}
\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{\msup{#1}{\onehalf}}}
\newcommand{\fcuberoot}[1]{\ensuremath{\msup{#1}{\onethird}}}
\newcommand{\ffourthroot}[1]{\ensuremath{\msup{#1}{\onefourth}}}
\newcommand{\ffifthroot}[1]{\ensuremath{\msup{#1}{\onefifth}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\relgamma}
% \begin{macro}{\frelgamma}
%    \begin{macrocode}
\newcommand{\relgamma}[1]{\ensuremath{
  \frac{1}{\sqrt{1-\msup{\quant{\frac{#1}{c}}}{2}}}}}
\newcommand{\frelgamma}[1]{\ensuremath{
  \msup{\quant{1-\frac{\msup{{#1}}{2}}{\msup{c}{2}}}}{-\onehalf}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\oosqrtomxs}
%    \begin{macrocode}
\newcommand{\oosqrtomxs}[1]{\ensuremath{\frac{1}{\sqrt{1-\msup{#1}{2}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\oosqrtomx}
%    \begin{macrocode}
\newcommand{\oosqrtomx}[1]{\ensuremath{\frac{1}{\sqrt{1-{#1}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ooomx}
%    \begin{macrocode}
\newcommand{\ooomx}[1]{\ensuremath{\frac{1}{1-{#1}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ooopx}
%    \begin{macrocode}
\newcommand{\ooopx}[1]{\ensuremath{\frac{1}{1+{#1}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\isequals}
%    \begin{macrocode}
\newcommand{\isequals}{\wordoperator{?}{=}\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\wordoperator}
%    \begin{macrocode}
\newcommand{\wordoperator}[2]{\ensuremath{%
  \mathrel{\vcenter{\offinterlineskip
  \halign{\hfil\tiny\upshape##\hfil\cr\noalign{\vskip-.5ex}
    {#1}\cr\noalign{\vskip.5ex}{#2}\cr}}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\definedas}
% \begin{macro}{\associated}
% \begin{macro}{\adjustedby}
% \begin{macro}{\earlierthan}
% \begin{macro}{\laterthan}
% \begin{macro}{\forevery}
%    \begin{macrocode}
\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}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\pwordoperator}
%    \begin{macrocode}
\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)}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\pdefinedas}
% \begin{macro}{\passociated}
% \begin{macro}{\padjustedby}
% \begin{macro}{\pearlierthan}
% \begin{macro}{\platerthan}
% \begin{macro}{\pforevery}
%    \begin{macrocode}
\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}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\defines}
%    \begin{macrocode}
\newcommand{\defines}{\ensuremath{\stackrel{\text{\tiny{def}}}{=}}\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\inframe}
%    \begin{macrocode}
\newcommand{\inframe}[1][\relax]{\ensuremath{\xrightarrow[\tiny{\mathcal #1}]{}}\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\associates}
%    \begin{macrocode}
\newcommand{\associates}{\ensuremath{\xrightarrow{\text{\tiny{assoc}}}}\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\becomes}
%    \begin{macrocode}
\newcommand{\becomes}{\ensuremath{\xrightarrow{\text{\tiny{becomes}}}}\xspace}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\lrelatedto}
% \begin{macro}{\rrelatedto}
% \begin{macro}{\brelatedto}
%    \begin{macrocode}
\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}}}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\momprinciple}
% \begin{macro}{\LHSmomprinciple}
% \begin{macro}{\RHSmomprinciple}
%    \begin{macrocode}
\newcommand{\momprinciple}{\ensuremath{
  \vectsub{p}{sys,f}=\vectsub{p}{sys,i}+\Fnetsys\Delta t}}
\newcommand{\LHSmomprinciple}{\ensuremath{
  \vectsub{p}{sys,f}}}
\newcommand{\RHSmomprinciple}{\ensuremath{
  \vectsub{p}{sys,i}+\Fnetsys\Delta t}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\energyprinciple}
% \begin{macro}{\LHSenergyprinciple}
% \begin{macro}{\RHSenergyprinciple}
%    \begin{macrocode}
\newcommand{\energyprinciple}{\ensuremath{\ssub{E}{sys,f}=\ssub{E}{sys,i}+
  \ssub{W}{ext}+Q}}
\newcommand{\LHSenergyprinciple}{\ensuremath{\ssub{E}{sys,f}}}
\newcommand{\RHSenergyprinciple}{\ensuremath{\ssub{E}{sys,i}+\ssub{W}{ext}+Q}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\angularmomprinciple}
% \begin{macro}{\LHSangularmomprinciple}
% \begin{macro}{\RHSangularmomprinciple}
%    \begin{macrocode}
\newcommand{\angularmomprinciple}{\ensuremath{\vectsub{L}{sys,A,f}=\vectsub{L}{sys,A,i}+
  \Tnetsys\Delta t}}
\newcommand{\LHSangularmomprinciple}{\ensuremath{\vectsub{L}{sys,A,f}}}
\newcommand{\RHSangularmomprinciple}{\ensuremath{\vectsub{L}{sys,A,i}+\Tnetsys\Delta t}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\gravinteraction}
%    \begin{macrocode}
\newcommand{\gravinteraction}{\ensuremath{
  \bigGmathsymbol\frac{\msub{M}{1}\msub{M}{2}}{\msup{\magvectsub{r}{12}}{2}}
  \quant{-\dirvectsub{r}{12}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\elecinteraction}
%    \begin{macrocode}
\newcommand{\elecinteraction}{\ensuremath{
  \oofpezmathsymbol\frac{\msub{Q}{1}\msub{Q}{2}}{\msup{\magvectsub{r}{12}}{2}}
  \dirvectsub{r}{12}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Bfieldofparticle}
%    \begin{macrocode}
\newcommand{\Bfieldofparticle}{\ensuremath{
  \mzofpmathsymbol\frac{Q\magvect{v}}{\msup{\magvect{r}}{2}}\dirvect{v}\times\dirvect{r}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Efieldofparticle}
%    \begin{macrocode}
\newcommand{\Efieldofparticle}{\ensuremath{
  \oofpezmathsymbol\frac{Q}{\msup{\magvect{r}}{2}}\dirvect{r}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Esys}
%    \begin{macrocode}
\newcommand{\Esys}{\ssub{E}{sys}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Us}
%    \begin{macrocode}
\newcommandx{\Us}[1][1]{\ssub{\ssub{U}{s}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ug}
%    \begin{macrocode}
\newcommandx{\Ug}[1][1]{\ssub{\ssub{U}{g}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ue}
%    \begin{macrocode}
\newcommandx{\Ue}[1][1]{\ssub{\ssub{U}{e}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ktrans}
%    \begin{macrocode}
\newcommandx{\Ktrans}[1][1]{\ssub{\ssub{K}{trans}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Krot}
%    \begin{macrocode}
\newcommandx{\Krot}[1][1]{\ssub{\ssub{K}{rot}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Eparticle}
%    \begin{macrocode}
\newcommandx{\Eparticle}[1][1]{\ssub{\ssub{E}{particle}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Einternal}
%    \begin{macrocode}
\newcommandx{\Einternal}[1][1]{\ssub{\ssub{E}{internal}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Erest}
%    \begin{macrocode}
\newcommandx{\Erest}[1][1]{\ssub{\ssub{E}{rest}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Echem}
%    \begin{macrocode}
\newcommandx{\Echem}[1][1]{\ssub{\ssub{E}{chem}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Etherm}
%    \begin{macrocode}
\newcommandx{\Etherm}[1][1]{\ssub{\ssub{E}{therm}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Evib}
%    \begin{macrocode}
\newcommandx{\Evib}[1][1]{\ssub{\ssub{E}{vib}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ephoton}
%    \begin{macrocode}
\newcommandx{\Ephoton}[1][1]{\ssub{\ssub{E}{photon}}{#1}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEsys}
%    \begin{macrocode}
\newcommand{\DEsys}{\Changein\Esys}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DUs}
%    \begin{macrocode}
\newcommand{\DUs}{\Changein\Us}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DUg}
%    \begin{macrocode}
\newcommand{\DUg}{\Changein\Ug}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DUe}
%    \begin{macrocode}
\newcommand{\DUe}{\Changein\Ue}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DKtrans}
%    \begin{macrocode}
\newcommand{\DKtrans}{\Changein\Ktrans}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DKrot}
%    \begin{macrocode}
\newcommand{\DKrot}{\Changein\Krot}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEparticle}
%    \begin{macrocode}
\newcommand{\DEparticle}{\Changein\Eparticle}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEinternal}
%    \begin{macrocode}
\newcommand{\DEinternal}{\Changein\Einternal}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DErest}
%    \begin{macrocode}
\newcommand{\DErest}{\Changein\Erest}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEchem}
%    \begin{macrocode}
\newcommand{\DEchem}{\Changein\Echem}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEtherm}
%    \begin{macrocode}
\newcommand{\DEtherm}{\Changein\Etherm}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEvib}
%    \begin{macrocode}
\newcommand{\DEvib}{\Changein\Evib}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\DEphoton}
%    \begin{macrocode}
\newcommand{\DEphoton}{\Changein\Ephoton}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Usfinal}
%    \begin{macrocode}
\newcommand{\Usfinal}{\ssub{\left(\onehalf\ks \msup{s}{2}\right)}{f}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Usinitial}
%    \begin{macrocode}
\newcommand{\Usinitial}{\ssub{\left(\onehalf\ks \msup{s}{2}\right)}{i}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ugfinal}
%    \begin{macrocode}
\newcommand{\Ugfinal}{\ssub{\left(-G\frac{\msub{M}{1}\msub{M}{2}}
  {\magvectsub{r}{12}}\right)}{f}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Uginitial}
%    \begin{macrocode}
\newcommand{\Uginitial}{\ssub{\left(-G\frac{\msub{M}{1}\msub{M}{2}}
  {\magvectsub{r}{12}}\right)}{i}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Uefinal}
%    \begin{macrocode}
\newcommand{\Uefinal}{\ssub{\left(\oofpezmathsymbol\frac{\ssub{Q}{1}\ssub{Q}{2}}
  {\magvectsub{r}{12}}\right)}{f}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Ueinitial}
%    \begin{macrocode}
\newcommand{\Ueinitial}{\ssub{\left(\oofpezmathsymbol\frac{\ssub{Q}{1}\ssub{Q}{2}}
  {\magvectsub{r}{12}}\right)}{i}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\ks}
%    \begin{macrocode}
\newcommand{\ks}{\ssub{k}{s}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\Fnet}
% \begin{macro}{\Fnetext}
% \begin{macro}{\Fnetsys}
% \begin{macro}{\Fsub}
%    \begin{macrocode}
\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}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\Tnet}
% \begin{macro}{\Tnetext}
% \begin{macro}{\Tnetsys}
% \begin{macro}{\Tsub}
%    \begin{macrocode}
\newcommand{\Tnet}{\ensuremath{\vectsub{T}{net}}}
\newcommand{\Tnetext}{\ensuremath{\vectsub{T}{net,ext}}}
\newcommand{\Tnetsys}{\ensuremath{\vectsub{T}{net,sys}}}
\newcommand{\Tsub}[1]{\ensuremath{\vectsub{T}{#1}}}
%    \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
% \begin{macro}{\vpythonline}
%    \begin{macrocode}
\newcommand{\vpythonline}{\lstinline[language=Python,numbers=left,numberstyle=\tiny,
  upquote=true,breaklines]}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{vpythonblock}
%    \begin{macrocode}
\lstnewenvironment{vpythonblock}{\lstvpython}{}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\vpythonfile}
%    \begin{macrocode}
\newcommand{\vpythonfile}{\lstinputlisting[language=Python,numbers=left,
  numberstyle=\tiny,upquote=true,breaklines]}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\emptyanswer}
%    \begin{macrocode}
\newcommandx{\emptyanswer}[2][1=0.80,2=0.1,usedefault]
  {\begin{minipage}{#1\textwidth}\hfill\vspace{#2\textheight}\end{minipage}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{activityanswer}
%    \begin{macrocode}
\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}%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{adjactivityanswer}
%    \begin{macrocode}
\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}%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\emptybox}
%    \begin{macrocode}
\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}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\adjemptybox}
%    \begin{macrocode}
\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}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\answerbox}
%    \begin{macrocode}
\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]}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\adjanswerbox}
%    \begin{macrocode}
\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]}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\smallanswerbox}
% box that takes up ten percent of text height
%    \begin{macrocode}
\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]}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\mediumanswerbox}
% box that takes up twenty percent of text height
%    \begin{macrocode}
\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]
    }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\largeanswerbox}
% box that takes up twenty-five percent of text height
%    \begin{macrocode}
\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]
    }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\largeranswerbox}
% box that takes up thirty-three percent of text height
%    \begin{macrocode}
\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]
    }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\hugeanswerbox}
% box that takes up fifty percent of text height
%    \begin{macrocode}
\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]
    }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\hugeranswerbox}
% box that takes up seventy-five percent of text height
%    \begin{macrocode}
\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]
    }%
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\fullpageanswerbox}
% box that takes up one hundred percent of text height
%    \begin{macrocode}
\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]}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{miinstructornote}
%    \begin{macrocode}
\mdfdefinestyle{miinstructornotestyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=40pt, rightmargin=40pt, linewidth=1, roundcorner=10,
    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}
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{mistudentnote}
%    \begin{macrocode}
\mdfdefinestyle{mistudentnotestyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=40pt, rightmargin=40pt, linewidth=1, roundcorner=10,
    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}
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{miderivation}
% This definition requires the mdframed package.
%    \begin{macrocode}
\mdfdefinestyle{miderivationstyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=0pt, rightmargin=0pt, linewidth=1, roundcorner=10,
    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}
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{bwinstructornote}
%    \begin{macrocode}
\mdfdefinestyle{bwinstructornotestyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=40pt, rightmargin=40pt, linewidth=1, roundcorner=10,
    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}
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{bwstudentnote}
%    \begin{macrocode}
\mdfdefinestyle{bwstudentnotestyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=40pt, rightmargin=40pt, linewidth=1, roundcorner=10,
    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}
}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{bwderivation}
% This definition requires the mdframed package.
%    \begin{macrocode}
\mdfdefinestyle{bwderivationstyle}{%
    hidealllines=false, skipbelow=\baselineskip, skipabove=\baselineskip,
    leftmargin=0pt, rightmargin=0pt, linewidth=1, roundcorner=10,
    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}
}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\checkpoint}
%    \begin{macrocode}
\newcommand{\checkpoint}{%
  \vspace{1cm}\begin{center}|--------- CHECKPOINT ---------|\end{center}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\image}
%    \begin{macrocode}
\newcommand{\image}[2]{%
  \begin{figure}[h!]
    \begin{center}%
      \includegraphics[scale=1]{#1}%
      \caption{#2}%
      \label{#1}%
    \end{center}%
  \end{figure}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\sneakyone}
%    \begin{macrocode}
\newcommand{\sneakyone}[1]{\ensuremath{\cancelto{1}{\frac{#1}{#1}}}}
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\chkphysicsquantity}
% undocumented diagnostic command
%    \begin{macrocode}
\newcommand{\chkphysicsquantity}[1]{%
  \cs{#1}
}%
%    \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\vecto}
% new |\vect| that allows for subscripts
%    \begin{macrocode}
\newcommandx{\vecto}[2][2,usedefault]{\ensuremath{%
  \ifthenelse{\equal{#2}{}}%
    {\vec{\mathrm #1}}%
    {\ssub{\vec{\mathrm #1}}{#2}}}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\compvecto}
% new |\compvect| that allows for subscripts
%    \begin{macrocode}
\newcommandx{\compvecto}[3][2,usedefault]{\ensuremath{%
  \ifthenelse{\equal{#2}{}}%
    {\ssub{\mathrm #1}{\(#3\)}}%
    {\ssub{\mathrm #1}{#2,\(#3\)}}}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsvecto}
% new |\scompsvect| that allows for subscripts
%    \begin{macrocode}
\newcommandx{\scompsvecto}[2][2,usedefault]{\ensuremath{%
  \ifthenelse{\equal{#2}{}}%
    {\lv\compvecto{#1}{x},\compvecto{#1}{y},\compvecto{#1}{z}\rv}%
    {\lv\compvecto{#1}[#2]{x},\compvecto{#1}[#2]{y},\compvecto{#1}[#2]{z}\rv}}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\compposo}
% new |\comppos| that allows for subscripts
%    \begin{macrocode}
\newcommandx{\compposo}[2][1,usedefault]{\ensuremath{%
  \ifthenelse{\equal{#1}{}}%
    {#2}%
    {\ssub{#2}{#1}}}}%
%    \end{macrocode}
% \end{macro}
%
% \begin{macro}{\scompsposo}
% new |\scompspos| that allows for subscripts
%    \begin{macrocode}
\newcommandx{\scompsposo}[1][1,usedefault]{\ensuremath{%
  \ifthenelse{\equal{#1}{}}%
    {\lv\compposo{x},\compposo{y},\compposo{z}\rv}%
    {\lv\compposo[#1]{x},\compposo[#1]{y},\compposo[#1]{z}\rv}}}%
%    \end{macrocode}
% \end{macro}
%
% \newpage
% \section{Acknowledgements}
% I thank Marcel Heldoorn, Joseph Wright, Scott Pakin, Aaron Titus, 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 scalar
% and vector quantities.
%
% \iffalse
%</package>
% \fi
%
% \Finale
