summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md2
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdfbin440064 -> 437456 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdfbin443920 -> 441677 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdfbin438208 -> 435717 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx12
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdfbin533468 -> 532782 bytes
-rw-r--r--macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdfbin443921 -> 441421 bytes
-rw-r--r--macros/latex/contrib/knowledge/README.md4
-rw-r--r--macros/latex/contrib/knowledge/knowledge-code.dtx44
-rw-r--r--macros/latex/contrib/knowledge/knowledge.pdfbin702619 -> 721136 bytes
-rw-r--r--macros/latex/contrib/knowledge/knowledge.tex173
-rw-r--r--macros/latex/contrib/media9/ChangeLog6
-rw-r--r--macros/latex/contrib/media9/doc/media9.pdfbin3735158 -> 3735214 bytes
-rw-r--r--macros/latex/contrib/media9/doc/media9.tex4
-rw-r--r--macros/latex/contrib/media9/media9.sty64
-rw-r--r--macros/latex/contrib/media9/pdfbase.sty16
-rw-r--r--macros/latex/contrib/physconst/CHANGELOG.md13
-rw-r--r--macros/latex/contrib/physconst/README.md80
-rw-r--r--macros/latex/contrib/physconst/makefile122
-rw-r--r--macros/latex/contrib/physconst/physconst.dtx6227
-rw-r--r--macros/latex/contrib/physconst/physconst.ins56
-rw-r--r--macros/latex/contrib/physconst/physconst.pdfbin135381 -> 135843 bytes
-rw-r--r--macros/latex/contrib/physconst/physconst.sty1235
-rw-r--r--macros/latex/contrib/physunits/CHANGELOG.md39
-rw-r--r--macros/latex/contrib/physunits/README.md81
-rw-r--r--macros/latex/contrib/physunits/makefile122
-rw-r--r--macros/latex/contrib/physunits/physunits.dtx1882
-rw-r--r--macros/latex/contrib/physunits/physunits.ins56
-rw-r--r--macros/latex/contrib/physunits/physunits.pdfbin0 -> 100908 bytes
-rw-r--r--macros/luatex/generic/luatexja/README14
-rw-r--r--macros/luatex/generic/luatexja/doc/lltjp-geometry.pdfbin140622 -> 164326 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/lltjp-geometry.tex22
-rw-r--r--macros/luatex/generic/luatexja/doc/ltjclasses.pdfbin408500 -> 392691 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/ltjltxdoc.pdfbin68494 -> 69351 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/ltjsclasses.pdfbin504115 -> 455647 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-en.pdfbin530396 -> 531845 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ja.pdfbin935894 -> 939105 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ruby.pdfbin394907 -> 485933 bytes
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja-ruby.tex53
-rw-r--r--macros/luatex/generic/luatexja/doc/luatexja.dtx194
-rw-r--r--macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty15
-rw-r--r--macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty136
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-jfmglue.lua126
-rw-r--r--macros/luatex/generic/luatexja/src/ltj-math.lua32
-rw-r--r--macros/luatex/generic/luatexja/src/ltjclasses.dtx39
-rw-r--r--macros/luatex/generic/luatexja/src/ltjltxdoc.dtx19
-rw-r--r--macros/luatex/generic/luatexja/src/ltjsclasses.dtx12
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja-core.sty18
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.lua24
-rw-r--r--macros/luatex/generic/luatexja/src/luatexja.sty4
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjcore.sty1
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjdefs.sty72
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjfont.sty185
-rw-r--r--macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty100
54 files changed, 9496 insertions, 1808 deletions
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md
index 09191692d9..ed2a550642 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/README.md
@@ -140,7 +140,7 @@ first two steps.
## Licence
-Copyright 2016–2019 Alex Ball.
+Copyright 2016–2020 Alex Ball.
This work consists of the documented LaTeX file oxref.dtx and a Makefile.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf
index 9fe3522df5..3f59e63e6f 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxalph-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf
index c96c75b863..bd6be94579 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnotes-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf
index f03686a680..b9eb7e4649 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxnum-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx
index 780f797327..5677b16828 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.dtx
@@ -1,6 +1,6 @@
% \iffalse
%<*internal|bbx|cbx|dbx|lbx|doc>
-\def\Version{2019/09/20 v2.0}
+\def\Version{2020/01/27 v2.0.1}
%</internal|bbx|cbx|dbx|lbx|doc>
%<*internal>
\iffalse
@@ -166,7 +166,7 @@ See: http://www.latex-project.org/lppl.txt
\endpreamble
\postamble
-Copyright (C) 2016–2019 Alex Ball
+Copyright (C) 2016–2020 Alex Ball
\endpostamble
\usedir{tex/latex/\jobname}
@@ -842,7 +842,7 @@ first two steps.
## Licence
-Copyright 2016–2019 Alex Ball.
+Copyright 2016–2020 Alex Ball.
This work consists of the documented LaTeX file oxref.dtx and a Makefile.
@@ -14158,6 +14158,12 @@ reference,mvreference,inreference]{volume}{%
\DeclareDatamodelFields[type=field,datatype=literal]{datetype,origdatetype}
% \end{macrocode}
%
+% We add the |inaudio| entry type and friends.
+%
+% \begin{macrocode}
+\DeclareDatamodelEntrytypes{inaudio,inmusic,inmovie,invideo}
+% \end{macrocode}
+%
% The |authoraddon| and |editoraddon| fields are used for handling
% pseudonyms. The |serieseditor| field is used for the editor of a book series,
% as opposed to the editor of the particular cited work.
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf
index c11d4bcf46..cd64e650b9 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxref.pdf
Binary files differ
diff --git a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf
index 50b1d7d856..35e89356a7 100644
--- a/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf
+++ b/macros/latex/contrib/biblatex-contrib/biblatex-oxref/oxyear-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/knowledge/README.md b/macros/latex/contrib/knowledge/README.md
index 81a9ddf7f8..398b3d74bf 100644
--- a/macros/latex/contrib/knowledge/README.md
+++ b/macros/latex/contrib/knowledge/README.md
@@ -3,8 +3,8 @@ This directory contains the package
name: knowledge
license: LaTeX Project Public License version 1.2 or above
- version: v1.20
- date: 2019/12/03
+ version: v1.21
+ date: 2020/01/26
author: Thomas Colcombet
mail: thomas.colcombet@irif.fr
web: https://www.irif.fr/~colcombe/knowledge_en.html
diff --git a/macros/latex/contrib/knowledge/knowledge-code.dtx b/macros/latex/contrib/knowledge/knowledge-code.dtx
index d97ed2143a..92725e4d58 100644
--- a/macros/latex/contrib/knowledge/knowledge-code.dtx
+++ b/macros/latex/contrib/knowledge/knowledge-code.dtx
@@ -6,7 +6,7 @@
%
% meta-comment
%
-% Copyright (C) 2017-2019 by Thomas Colcombet
+% Copyright (C) 2017-2020 by Thomas Colcombet
% -----------------------------------
%
% This file may be distributed and/or modified under the
@@ -23,7 +23,7 @@
%
% \iffalse
%<head>\usepackage{expl3}
-%<head>\ProvidesExplPackage{knowledge}{2019/12/03}{1.20}{}
+%<head>\ProvidesExplPackage{knowledge}{2020/01/26}{1.21}{}
%<*driver>
\def\knowledgecode{active}
\input{knowledge.tex}
@@ -53,6 +53,7 @@
% \changes{1.18}{2019/10/03}{bug fix/improvement} %
% \changes{1.19}{2019/11/19}{bug fix} %
% \changes{1.20}{2019/12/03}{bug fix} %
+% \changes{1.21}{2020/01/26}{bug fix} %
% \GetFileInfo{knowledge.sty} %
% \DoNotIndex{}
%
@@ -72,8 +73,8 @@ This directory contains the package
name: knowledge
license: LaTeX Project Public License version 1.2 or above
- version: v1.20
- date: 2019/12/03
+ version: v1.21
+ date: 2020/01/26
author: Thomas Colcombet
mail: thomas.colcombet@irif.fr
web: https://www.irif.fr/~colcombe/knowledge_en.html
@@ -1291,8 +1292,8 @@ Content of the file knowledge-sources.zip:
\knowledge_scopetag_ensure:n{#1}
\bool_if:cTF{\knowledge_scopetag_tl[#1]_bool}
{}
- {\KAuxWriteX*{\exp_not:N\KAuxDeclaredScopeTag{#1}}
- \bool_gset_true:c{\knowledge_scopetag_tl[#1]_bool}}
+ {\bool_gset_true:c{\knowledge_scopetag_tl[#1]_bool}}
+ \KAuxWriteX*{\exp_not:N\KAuxDeclaredScopeTag{#1}}
}
% \end{macrocode}
% \AP The command \csintro{\knowledgescope} associates an "instance" to one or more "scopetags":
@@ -1321,22 +1322,22 @@ Content of the file knowledge-sources.zip:
\KnowledgeConfigureBooleanOption[\knowledge_configuration_label_autoscope_bool]{patch~label}
\KnowledgeConfigureBooleanOption[\knowledge_configuration_label_autoscope_bool]{label~scope}
% \end{macrocode}
-% \noindent\AP\csintro{\knowledgelabel} implicitly adds a call to \cs{\knowledgescope} (if \cs{\knowledge_configuration_label_autoscope_bool} is set to true), and then calls the original \cs{\label} code.
+% One first changes the behavior of \cs\label\ in the preamble.
% \begin{macrocode}
-\NewDocumentCommand\knowledgelabel{m}{
- \kl_hide_begin:
- \bool_if:NTF
+\global\let\knowledge_label_before_loading_package:n\label
+\cs_gset:Npn\label{
+ \mode_if_preamble:TF
+ \knowledge_label_in_preamble:n
+ \knowledge_label_before_loading_package:n
+}
+\cs_new:Npn\knowledge_label_in_preamble:n{
+ \bool_if:NTF
\knowledge_configuration_label_autoscope_bool
\knowledge_knowledgescope_one:n
\use_none:n
- {#1}
- \kl_hide_end:
- \cs_if_exist:NTF\LaTeXlabel\LaTeXlabel\use_none:n{#1}
}
-\let\scopeLabel\knowledgelabel%for backward compatibility
-\let\label\knowledgelabel
% \end{macrocode}
-% \AP In order to cicumvent this overloading, the normal \cs{\label} command
+% \AP In order to circumvent this overloading, the normal \cs{\label} command
% can be used using \csintro{\knowledge_latex_label:n}:
% \begin{macrocode}
\cs_new:Npn\knowledge_latex_label:n{
@@ -1443,8 +1444,13 @@ Content of the file knowledge-sources.zip:
\scope_if_triggers_area:nTF{##1}
{\scope_area_pop:n{##1}}
{}}
- \kutils_secure_latex_command:N\label
- \let\label\knowledgelabel
+}
+\AtBeginDocument{
+ \kutils_secure_latex_command:N\label
+ \def\label#1{\bool_if:NT
+ \knowledge_configuration_label_autoscope_bool
+ {\knowledge_knowledgescope_one:n{#1}}
+ \LaTeXlabel{#1}}
}
% \end{macrocode}
%
@@ -1516,7 +1522,7 @@ Content of the file knowledge-sources.zip:
{\scope_area_pop:n{knowledge~import~internal}}
\NewDocumentEnvironment{knowledge~context}{m}
{\ScopeActivate\scope_area_push:n{knowledge~context~internal}
- \knowledgelabel{#1}}
+ \knowledgescope{#1}}
{\scope_area_pop:n{knowledge~context~internal}}
% \end{macrocode}
% \subsection{Files}
diff --git a/macros/latex/contrib/knowledge/knowledge.pdf b/macros/latex/contrib/knowledge/knowledge.pdf
index b2e551fbb9..f9d20e3e27 100644
--- a/macros/latex/contrib/knowledge/knowledge.pdf
+++ b/macros/latex/contrib/knowledge/knowledge.pdf
Binary files differ
diff --git a/macros/latex/contrib/knowledge/knowledge.tex b/macros/latex/contrib/knowledge/knowledge.tex
index d65b26a459..13b4240663 100644
--- a/macros/latex/contrib/knowledge/knowledge.tex
+++ b/macros/latex/contrib/knowledge/knowledge.tex
@@ -391,6 +391,7 @@
\knowledge{xparse}{package,url={https://www.ctan.org/pkg/xparse}}
\knowledge{amsmath}{package,url={https://www.ctan.org/pkg/amsmath}}
\knowledge{amssymb}{package,url={https://www.ctan.org/pkg/amssymb}}
+ \knowledge{mathcommand}{package,url={https://www.ctan.org/pkg/mathcommand}}
\end{scope}
@@ -599,11 +600,8 @@
\maketitle
\begin{abstract}\phantomintro(package){knowledge}%
-The "knowledge@@package" package offers automatic tools and commands
-for helping the writer of a (scientific) document to have all notions (hyper)linked
-to places where these are defined. Using the standard tools of \LaTeX{} for doing
-that would be extremely tedious.
-Eventually, it is intended to use the package for producing scientific semantic aware documents.
+The "knowledge@@package" package offers commands and notations for handling semantical notions in a (scientific) document.
+This allows to link the use of a notion to its definition, to add it to the index automatically, etc.
\end{abstract}
\ifcodeTF{\begin{quote}This version of the documentation includes a good part of the code. A casual user should \textit{a priori} not use this version of the documentation.\end{quote}}{}
@@ -636,8 +634,7 @@ This is essentially a list for personal referencing of what has to be done.
\begin{asparaitem}
\item deactivate quotation by default in the preamble in particular for avoiding clashes with commands such as \cs\DeclareMathDelimiter.
\item make knowledge compatible with beamer (request of Patrick Aiyao He), probably use hypertarget and hyperlink instead of hyperlabel and hyperref. Seems complicated because I do not know how to know if some material is going to be displayed, and this is necessary for a complete working solution.
-I have seen Till Tantau who explained me how to test whether a material is displayed. For this, one has to check that the material is displayed.
-This involves testing the counter |beamer@coveringdepth| which if higher than one when 'not displayed'.
+I have seen Till Tantau who explained me how to test whether a material is displayed. This involves testing the counter |beamer@coveringdepth| which if higher than one when 'not displayed'.
|beamer@slideinframe| could also be intersting.
\item make quotation work properly in the titles of section...,
\item allow to protect quotation in commands, and not only environments (for instance xymatrix)
@@ -739,8 +736,10 @@ This involves testing the counter |beamer@coveringdepth| which if higher than o
\item[2019-10-27] Bug correction and added the `\textbf{patch label}' configuration directive (thanks to \href{https://becca.ooo/}{Rebecca Turner}). V1.18.
\item[2019-11-19] Now the labels are evaluated before being written to the "kaux file" in a \cs\KAuxNewLinkScopetagInstance\ command (bug fix). V1.19.
\item[2019-11-29] Help added in the "diagnose file". \textbf{bar suggestion} (still working) renamed to "diagnose bar", and activated by default. \textbf{patch label} is renamed into "label scope".
-\item[2019-12-02] The "kaux file" is now checked for completeness befre being used. This should avoid errors when the previous compilation failed.
-\item[2019-12-03] Corrected bug in the scope access. V1.20
+\item[2019-12-02] The "kaux file" is now checked for completeness befor being used. This should avoid errors when the previous compilation failed.
+\item[2019-12-03] Corrected bug in the scope access. V1.20.
+\item[2020-01-25] Corrected bug when "knowledge@@package" is used without "hyperref@@package" (thanks to Rémi Nollet).
+\item[2020-01-25] Corrected bug that made the kaux file not stabilize (thanks to Rémi Nollet). V1.21 on CTAN.
\end{compactdesc}
\normalsize
%\restoregeometry
@@ -791,7 +790,7 @@ You may use other options like \kl(option){xcolor} for allowing debugging with c
\noindent or even better:
\begin{code}[8cm]
\cs\usepackage["hidelinks"]\{\kl(package){hyperref}\}\\
-\cs\usepackage[\kl(option){quotation}\footnote{If you want to use the \kl{"}$\cdots$\kl{"} notation.}]\{"knowledge@@package"\}
+\cs\usepackage[\kl(option){quotation}\footnote{If you want to use the \kl{"..."} notation.}]\{"knowledge@@package"\}
\end{code}
Then, in the preamble (or in an external file), one uses commands of the form:
@@ -804,8 +803,8 @@ which means an hyperreference to this address.
Finally in the body of the paper, the sole extra command \cs{\kl} (or the \kl"-symbol if the \kl(option){quotation} option is activated) is used,
with as parameter a text. This text is searched for, and the directives attached to it (here "url="),
-are used for formatting its printing\footnote{This resembles a lot a macro so far. It nevertheless differs in that: (a) if not defined, it does not make the compilation fail as a macro would, and thus does not interfere with the writing process, (b) any text can be used and not only alphabetic letters as in \TeX, (c) you do not have to care about the space after, and (d)
-in fact the machinery for resolving the meaning of a knowledge is much more powerful than simple macro execution.}.
+are used for formatting its printing\footnote{This resembles a lot a macro so far. It nevertheless differs in that: (a) if not defined, it does not make the compilation fail as a macro would, and thus does not interfere with the writing process, (b) any text can be used and not only alphabetic letters as in default \TeX, (c) you do not have to care about the space after, and (d)
+in fact the machinery for resolving the meaning of a knowledge is much more powerful than simple macro expansion.}.
Hence:
\marginpar{\begin{hint}
If the knowledge is not defined, this does not make the compilation fail.
@@ -914,10 +913,8 @@ makes it possible to use the notions in many contexts:
\begin{problem}
-I am writing a long scientific document with many notions tied together
-(typically, I have made all my best for clarifying but nevertheless
-it remains obscure,
-or it is a long survey involving many subfields, or a book, or a PhD thesis\footnote{Reviewers should appreciate...}).
+I am writing a scientific document with many different definitions, typically a journal article, a PhD thesis\footnote{Reviewers should appreciate...}, or a book.
+
I would like all the notions to be linked inside the document for being able
in one click, whenever something is used, to jump to its definition. I also want to easily write an index.
However, I do not want it to be a hassle when writing.
@@ -934,10 +931,10 @@ A solution is as follows. First load the "knowledge@@package" package in the pre
%
%
-Then write the document using \cs{\intro} (or \kl{""}$\cdots$\kl{""} if \kl(option){quotation} is activated) when a notion is defined/introduced, and
+Then write the document using \cs{\intro} (or \kl{""...""} if \kl(option){quotation} is activated) when a notion is defined/introduced, and
\marginpar{\begin{hint} Using an \cs{\AP} command is strongly advised,
and allows to control more precisely where the target of hyperreferences is: at the beginning of a paragraph is better than the beginning of the section several pages before...\end{hint}}
-\cs{\kl} (or \kl{"}$\cdots$\kl{"} if \kl(option){quotation} is activated) when it is used. For instance:
+\cs{\kl} (or \kl{"..."} if \kl(option){quotation} is activated) when it is used. For instance:
\begin{code}[12cm]
\cs\AP{}
A \cs\intro\{semigroup\} is an ordered pair \verb|$(S,\cdot)$| where \verb|$\cdot$| is an
@@ -998,7 +995,7 @@ with a neutral element~$1$.
\end{PDFoutput}
\knowledgeconfigure{visible anchor points=false}%
%
-Clicking on `semigroup' now jumps to the place it was introduced, and very precisely at the
+Clicking on `semigroup' now jumps to the place where it was introduced, and very precisely at the
location of the red corner depicting the presence of the \cs{\AP}-command.
If now one adds the option \kl{electronic} while loading the package, then the red corners disappear as well as the brownish undefined knowledges which become black. When using the option \kl{paper}, the links are still there, but all texts are in black.
@@ -1010,7 +1007,7 @@ So usually the lines added to the file look more like:
\cs\knowledge\{monoid\}[monoid\vbar Monoids]\{\kl{notion}\}
\end{code}
\noindent
-or, using the modre readable "`\vbar'-notation":
+or, using the more readable "`\vbar'-notation":
\begin{code}[10.7cm]
\cs\knowledge\{\kl{notion}\}\\
\indent~~~\klbn|~~semigroup\\
@@ -1040,6 +1037,9 @@ Then use it normally: putting \cs{\makeindex} in the preamble and \cs{\printinde
\indent~~~\vbar~~monoids\\
\indent~~~\vbar~~Monoids
\end{code}
+\noindent
+Now, the index (after running \texttt{makeidx}) contains all entries and references to the use of semigroups and monoids.
+
See Section~\ref{subsection:makeidx option} for more details on making an index.
%
%\subsection{Managing an index}
@@ -1141,7 +1141,7 @@ There are three ""writing modes"" usable when loading the package "knowledge@@pa
\begin{itemize}
\itemAP In ""paper"" mode, the paper is rendered as for printing: in particular, no informative colors are visible. Hyperlinks are nevertheless present.
\itemAP In ""electronic"" mode, the document has some colors witnessing the existence of the links for the reader to know that clicking is available.
-\itemAP In ""composition"" mode, the document has colors helping the writing: "undefined knowledges" appear explicitly, "anchor points" are displayed, and so on.
+\itemAP In ""composition"" mode (the default), the document has colors helping the writing: "undefined knowledges" appear explicitly, "anchor points" are displayed, and so on.
\end{itemize}
Activating the modes is obtained either at load time using one of:\\
\begin{tabular}[t]{ll}
@@ -1205,7 +1205,7 @@ In fact, the syntax when a package is loaded as an option of "knowledge@@package
\itemAP[\intro{active}] The package will be loaded, and all the capabilities that it triggers are activated.
This is the implicit meaning when nothing more is specified.
\item[\intro{inactive}] The package is not loaded, and no capabilities are activated (even if it had been loaded previously by another |\usepackage| command).
-\item[\intro{compatibility}] The package is not loaded. The directives it used do not cause any error, but have no effect.
+\item[\intro{compatibility}] The package is not loaded. The directives it uses do not cause any error, but have no effect.
\item[\intro{auto}] If the package was loaded before, then the associated capabilities are activated. This is the default behavior when the package is not named while loading.
\end{description}
Currently, the packages that can be loaded are:
@@ -1629,7 +1629,7 @@ For instance, one expects `\cs{\intro}*\cs{\kl}' to reduce to `\cs{\intro}'. For
\end{center}\AP
in which the ""stared sequence@@variant"" is of the form `\cs{variant1}*\cs{variant2}*\dots*\cs{variantk}'.
This sequence is declared to reduce to \cs{\variant}.
-For instance, \smallcode{\cs{\knowledgevariantmodifier}\{\cs\intro*\cs\kl\}\cs\intro} declares `\cs{\intro}*\cs{\kl}' to reduce to `\cs{\intro}'.
+For instance, \smallcode{\cs{\knowledgevariantmodifier}\{\cs{\intro*}\cs\kl\}\cs\intro} declares `\cs{\intro}*\cs{\kl}' to reduce to `\cs{\intro}'.
\subsubsection{Examples of \kl{variants of \cs{\kl}}}
@@ -1657,7 +1657,7 @@ and \cs{\csintro}.
~~~~"unknown style cont=@@variant" "intro unknown cont@@style",\par
~~~~"style directive=@@variant" "intro style@intro style="\par
\}\par
-\cs\knowledgevariantmodifier\{\cs\intro*\cs\kl\}\cs\intro
+\cs\knowledgevariantmodifier\{\cs{\intro*}\cs\kl\}\cs\intro
\end{code}
Note that \cs{\reintro} and \cs{\phantomintro} are defined using similar code.
@@ -1699,7 +1699,7 @@ following semantics:
~~~~"unknown style=@@variant"csintro unknown,\par
~~~~"unknown style cont=@@variant"csintro unknown,\par
\}\par
-\cs\knowledgevariantmodifier\{\cs\intro*\cs\cs\}\cs\csintro\par
+\cs\knowledgevariantmodifier\{\cs{\intro*}\cs\cs\}\cs\csintro\par
\cs\knowledgevariantmodifier\{\cs\csintro*\cs\cs\}\cs\csintro\par
\cs\knowledgevariantmodifier\{\cs\cs*\cs\kl\}\cs\cs\par
\cs\knowledgevariantmodifier\{\cs\csintro*\cs\kl\}\cs\csintro
@@ -2138,6 +2138,7 @@ hyperlink to this location.
than simply the \kl{autoref} directive. Its use it already configured. \end{hint}}
\phantomintro{""}
The \intro{autoref} \kl[\knowledge directives]{directive} is among the most useful offered by the "knowledge@@package" package.
+It is very often used indirectly through directives like "notion".
When set, the \kl{knowledge} should be used with both \csintro{\intro} (exactly once) --
or the \kl{""...""} and \kl{""...@...""} notations (and variants) if \kl(option){quotation} is active -- and \cs{\kl} (possibly several times) -- or the \kl{"..."} notation if \kl(option){quotation} is active. The use of \cs{\kl}
will hyperlink to the location of the \cs{\intro}. The syntax of \cs{\intro} is the same as
@@ -2356,9 +2357,115 @@ The following \kl[\knowledge directives]{directives} are to be used:
\subsection{Dealing with math}
\label{subsection:math}
-This part is under development.
+There are essentially two ways in which one would like to use "knowledge@@package" with mathematics:
+\begin{description}
+\item[Single introduction] Some mathematical objects are introduced once and for all in the paper. In this case, all the use of the object
+should point to the same introduction location.
+\item[Variables] The more advanced case is when one wants to track variables. For instance, a macro variable~\cs\x\ could have a different meaning in two distinct theorems. This case is more similar to variables in a programming language, that have a scope.
+Here the situation is slightly more complicated since a variable could be introduced in a theorem, and then used many pages later in a proof section for instance.
+\end{description}
+The first use is fairly easy. The second one requires a bit more care. We review them one after the other.
+
+\subsubsection{Defining macros for math}
+
+Defining macros is standard in \TeX, and it should be used systematically in writing scientific documents, in particular
+when using the "knowledge@@package" package.
+The standard way in \LaTeX\ for defining macros is to use \cs\newcommand. However, the resulting macro, if it has
+no optional parameters, is then expandable, and it is better to avoid it using instead \cs\newrobustcmd\ from the "etoolbox@@package"
+package (it has the same syntax).
+
+Another package "mathcommand@@package" has been designed to be used in conjunction with "knowledge@@package".
+We shall use it in the advanced examples below
+It allows:
+\begin{itemize}
+\item to define/redefine commands to be used in math mode only. This allows for instance to use the macro \cs\c\ for producing as usual a cedilla in text mode, and at the same time some variable $\mathbf c$ in math mode. This is achieved using for instance:
+ \smallcode{\cs\renewmathcommand\cs\c\{\cs\mathbf\{c\}\}}.
+\item When redefining a command, it automatically stores the original command \cs\macro\ as \cs\LaTeXmacro. So for instance, if one wants to introduce the constant~$\pi$ in a document and have it linked, one can use:
+ \begin{code}
+ \cs\renewmathcommand\cs\pi\{\cs\kl[\cs\pi]\{\cs\LaTeXpi\}\}\\
+ \cs\knowledge\cs\pi\{notion\}\\
+ {[...]}\\
+ \cs\AP\ Let \$\cs{\intro*}\cs\pi=3.1415\$.\\
+ {[...]}\\
+ Now \$\cs\pi\$ points to the above sentence.
+ \end{code}
+ This code works because a different name \cs\LaTeXpi\ stores the original macro. Using~\cs\pi\ instead would yield an infinite loop.
+\item The package also gives access to the exponents and indices as well as primes that follow a command (see the documentation).
+\item It also has some facilities for disabling \LaTeX\ commands and provide suggestions of replacement (useful for remembering the macros and working with colleagues).
+\end{itemize}
+
+\subsubsection{Mathematical objects that are singly introduced}
+
+In this case, this is essentially as in text mode.
+Four points have to be kept in mind:
+\begin{itemize}
+\item Do not use the "quotation notation" in math mode and in macros. Indeed,
+ some packages, like "tikzcd@@package" use the double-quote symbol in their
+ (math) syntax. In this context, quotes have to be deactivated, and hence macros
+ that would use the "quotation notation" would suddenly not have the expected result.
+\item Do not mix the "knowledge" concerning math commands and normal text. It is in practice
+ difficult to maintain.
+\item Use the control sequence of the macro itself as the "knowledge" name.
+ This does not cause problems and is easier to maintain.
+\item Use the \cs{\intro*} notation for introducing macros.
+\end{itemize}
+These four points are illustrated in the following code:
+\begin{code}
+\cs\newrobustcmd\cs\myFunction\{\cs\kl[\cs\myFunction]\{\cs\rho\}\}\\
+\cs\knowledge\cs\myFunction\{notion\}\\
+{[...]}\\
+\AP Let \$\cs{\intro*}\cs\myFunction(x)=[...]\$\\
+{[...]}\\
+Now, each use of \$\cs\myFunction\$ points to its introduction.
+\end{code}
+
+Two variation may be comfortable to use.
+
+\paragraph{Disabling commands}
+When writing a paper, in particular with coauthors, one may be tempted to not always use the macros designed for each case.
+For helping to remember the macro, one can use instead (using the "mathcommand@@package" package):
+\begin{code}
+\cs\disablecommand\cs\rho\\
+\cs\suggestcommand\cs\rho\{Use \cs\myFunction.\}\\
+\cs\newrobustcmd\cs\myFunction\{\cs\kl[\cs\myFunction]\{\cs\LaTeXrho\}\}\\
+\cs\knowledge\cs\myFunction\{notion\}\\
+{[...]}\\
+\AP Let \$\cs{\intro*}\cs\myFunction(x)=[...]\$\\
+{[...]}\\
+Now, each use of \$\cs\myFunction\$ points to its introduction.
+\end{code}
+\noindent The result is that if one uses \cs\rho\ in the code, an error will be issued, and \cs\myFunction\ be suggested as a replacement.
+Note that more than one suggestions can be attached to the macro (if several macros use the symbol~$\rho$). Note also
+that in the definition of \cs\myFunction, \cs\LaTeXrho\ is used instead of~\cs\rho. Indeed, \cs\rho\ has been deactivated,
+but~\cs\LaTeXrho\ gives access to its original meaning.
+
+\paragraph{Redefining the original \TeX\ macro}
+Another situation is that one would like to use the \cs\rho\ control sequence for accessing our function instead \cs\myFunction. Smply because this is more convenient and easy to remember.
+In this case, the "mathcommand@@package" package can also be of some help:
+\begin{code}
+\cs\renewmathcommand\cs\rho\{\cs\kl[\cs\rho]\{\cs\LaTeXrho\}\}\\
+\cs\knowledge\cs\rho\{notion\}\\
+{[...]}\\
+\AP Let \$\cs{\intro*}\cs\rho(x)=[...]\$\\
+{[...]}\\
+Now, each use of \$\cs\rho\$ points to its introduction.
+\end{code}
+\noindent
+The effect of \cs\renewmathcommand\ is that it sets~\cs\LaTeXrho\ to have the same effect as the original \cs\rho\ command,
+and then redefines~\cs\rho.
+
+\subsection{Context dependent variables}
+
+We enter now a more advanced situation. We want to track all the variables in a mathematic document...
+the first thing to do is to give access to the "knowledge@@package" package to the scope of the document.
+The easiest way to do that is to declare in the preamble what are the environments that we want to use.
+\begin{code}
+\cs\knowledgeconfigureenvironment\{theorem,lemma,proof\}\{\}\par\noindent
+\end{code}
\iffalse
+
+%\iffalse
The "knowledge@@package" package offers several tools for dealing with mathematics. It is mostly still experimental.
The essential goal is to be able to track the identity variables and to point each of them to its introduction.
For obtaining this, this requires:
@@ -2389,7 +2496,7 @@ I do not know to which extend it is compatible with various classes...
\smallcode{\cs\knowledgeconfigure\{\kl(option){notion}\}}
\end{center}\noindent
\AP It automatically configures a \kl[\knowledge directives]{directive} \intro{notion}
-which is an \kl{autoref} displayed properly:
+which is an \kl{autoref} configured to be displayed in a configurable way:
\begin{itemize}
\item In \kl{paper mode}, the \cs{\intro} commands (not in math mode) are emphasized, while the \cs{\kl} commands are displayed as normal. It has the aspect of a normal paper.
\item In "electronic mode" and \kl{composition mode} (with the "xcolor@@package" package), notions are furthermore typeset in blue when introduced, and in dark blue when used. Without the \kl(package){xcolor} package, underlining draw the attention to the knowledges (not in math mode).
@@ -2454,7 +2561,7 @@ The notation \kl{"..."} does not have this issue.
\cs\end\{document\}
\end{code}\end{center}\noindent
will result in that both \kl{knowledges} are considered unknown in the table of contents.
-For the first one, this is due to the expansion of~$\texttt{\robustdisplay\Ltwo}$. For the second, this is due to an implicit translation of the accentuated letter into an internal sequence of commands (for instance `\'e' is translated into the internal sequence `\verb|\IeC {\'e}|'). Some solutions are as follows:
+For the first one, this is due to the expansion of~\cs\Ltwo. For the second, this is due to an implicit translation of the accentuated letter into an internal sequence of commands (for instance `\'e' is translated into the internal sequence `\verb|\IeC {\'e}|'). Some solutions are as follows:
\begin{itemize}
\item Make the macros non-expandable, for instance using \cs{\newrobustcmd} (of the \kl(package){etoolbox} package) or \cs{\NewDocumentCommand} (of the \kl(package){xparse} package, with a different handling of arguments) instead of \cs{\newcommand}. Hence:
\begin{code}
@@ -2500,7 +2607,7 @@ Do not use \cs{\intro} in titles, but rather \cs{\reintro}. If you want the sect
\label{section:tikzcd}
The package "tikzcd@@package" uses (heavily) the quotes. Thus, it conflicts with the "quotation notation".
-Some other packages may do the same. For solving this issue, the only thingd to do are:
+Some other packages may do the same. For solving this issue, the only things to do are:
\begin{itemize}
\item be sure to load these packages before "knowledge@@package", or at least be sure that the "quotation notation" is not
active when you do so, and
@@ -2536,7 +2643,7 @@ the incriminated environment using \cs\phantomsection, and then use \cs{\reintro
does not work&&works\\
\begin{code}[5cm]
\cs\begin\{\kl{align*}\}\\
- \cs\intro*\texttt{\robustdisplay{\SomeCommand}}\\
+ \cs{\intro*}\texttt{\robustdisplay{\SomeCommand}}\\
\cs\end\{\kl{align*}\}\\
\end{code}
&&
@@ -2578,7 +2685,11 @@ This is an annoying feature of the "hyperref@@package" package to surround all l
\cs\usepackage{["hidelinks"]}\{"hyperref@@package"\}\par\noindent
\cs\usepackage\{\kl(package){knowledge}\}\par\noindent
\end{code}
-
+If the package "hyperref@@package" is loaded indirectly (maybe by the class), then the "hidelinks" option can be activated
+at any moment, as soon as "hyperref@@package" is loaded, using \cs\hypersetup:
+\begin{code}[9cm]
+\cs\hypersetup\{"hidelinks"\}
+\end{code}
\subsection{Problems with scope}
\subsubsection{Problems in combination with \cs{\bibitem} and "thebibliography@@env"}
diff --git a/macros/latex/contrib/media9/ChangeLog b/macros/latex/contrib/media9/ChangeLog
index e82b6ab017..e69d741450 100644
--- a/macros/latex/contrib/media9/ChangeLog
+++ b/macros/latex/contrib/media9/ChangeLog
@@ -1,3 +1,9 @@
+2020-01-27
+ * v1.05 : media9.sty
+ * v0.36 : pdfbase.sty
+ * fix : dependency on pdftexcmds.sty removed; deprecated l3 functions
+ replaced
+
2019-11-04
* v1.04 : media9.sty
* v0.35 : pdfbase.sty
diff --git a/macros/latex/contrib/media9/doc/media9.pdf b/macros/latex/contrib/media9/doc/media9.pdf
index 691819ce4b..982d811758 100644
--- a/macros/latex/contrib/media9/doc/media9.pdf
+++ b/macros/latex/contrib/media9/doc/media9.pdf
Binary files differ
diff --git a/macros/latex/contrib/media9/doc/media9.tex b/macros/latex/contrib/media9/doc/media9.tex
index 715faca371..202fc0bd58 100644
--- a/macros/latex/contrib/media9/doc/media9.tex
+++ b/macros/latex/contrib/media9/doc/media9.tex
@@ -17,7 +17,7 @@
\usepackage{fancyvrb}
\usepackage{float}
\usepackage{amssymb}
-\usepackage[UKenglish]{babel}
+\usepackage[main=UKenglish,nil]{babel}
\usepackage{graphicx}
\usepackage{color}
\usepackage[T1]{fontenc}
@@ -90,7 +90,7 @@
\begin{abstract}\noindent
A \LaTeX{} package for embedding interactive Adobe Flash (SWF) and 3D files (Adobe U3D \& PRC) as well as video and sound files or streams (FLV, MP4/H.246, MP3) into PDF documents with Adobe Reader-9/X compatibility.\\[0.2\baselineskip]
-\begin{sloppypar}\foreignlanguage{nohyphenation}{\noindent\emph{Keywords}: \keywords}\end{sloppypar}
+\begin{sloppypar}\foreignlanguage{nil}{\noindent\emph{Keywords}: \keywords}\end{sloppypar}
\end{abstract}
\tableofcontents
diff --git a/macros/latex/contrib/media9/media9.sty b/macros/latex/contrib/media9/media9.sty
index 7d34986484..14ba62ef41 100644
--- a/macros/latex/contrib/media9/media9.sty
+++ b/macros/latex/contrib/media9/media9.sty
@@ -37,8 +37,8 @@
\RequirePackage{xparse}
\RequirePackage{atbegshi}
-\def\g@mix@date@tl{2019/11/04}
-\def\g@mix@version@tl{1.04}
+\def\g@mix@date@tl{2020/01/27}
+\def\g@mix@version@tl{1.05}
\ProvidesExplPackage{media9}{\g@mix@date@tl}{\g@mix@version@tl}
{acrobat-9/X compatible media}
@@ -339,25 +339,6 @@
Line~\msg_line_number: :~
File~`#1'~not~found.}{Make~sure~file~`#1'~exists~and~is~readable!}
-\sys_if_engine_pdftex:TF{
- %\pdfmdfivesum is used for hashing object references of embedded files
- \cs_new:Nn\mix_filemdfivesum:n{\pdfmdfivesum~file~{#1}}
- \cs_new:Nn\mix_unescapehex:n{(\pdfunescapehex{#1})}
-}{
- \sys_if_engine_luatex:TF{
- \RequirePackage{pdftexcmds}
- \cs_new_nopar:Nn\mix_filemdfivesum:n{\pdf@filemdfivesum{#1}}
- %\cs_new:Nn\mix_unescapehex:n{<#1>}
- \cs_new_nopar:Nn\mix_unescapehex:n{(\pdf@unescapehex{#1})}
- }{
- \cs_if_exist:NTF\mdfivesum{
- \cs_new_nopar:Nn\mix_filemdfivesum:n{\mdfivesum file {#1}}
- }{
- \cs_new_nopar:Nn\mix_filemdfivesum:n{#1}
- }
- }
-}
-
%creating global definitions
\cs_new:Npn\mix@newkey#1#2{\tl_gset:cx{#1}{#2}}
\AtBeginDocument{
@@ -503,23 +484,22 @@
\tl_gset:Nx\g_mix_btnocg_tl{\ocgbase_last_ocg:}
}
-%output mode dependent command definitions
-\sys_if_output_pdf:TF{
- \cs_new:Nn\mix_ndname:n{%#1:HEX encoded string
- %converted to binary UTF16BE using \pdfunescapehex (pdfTeX only)
- \tl_set:Nn\l_mix_ndname_tl{\mix_unescapehex:n{#1}}
- }
-}{
- \bool_if:NTF\g_mix_dvipdfmx_bool{ %dvipdfmx/XeTeX
- \cs_new:Nn\mix_ndname:n{%#1:HEX encoded UTF16BE string
- \tl_set:Nn\l_mix_ndname_tl{<#1>}
+%output mode/engine dependent command definitions
+\cs_new:Nn\mix_ndname:n{%#1:HEX encoded UTF16BE string
+ \sys_if_output_pdf:TF{
+ \sys_if_engine_pdftex:TF{ %convert to binary UTF16BE as by \pdfunescapehex
+ \str_set_convert:Nnnn\l_mix_ndname_tl{feff#1}{utf16/hex}{utf16}
+ \tl_set:Nx\l_mix_ndname_tl{(\l_mix_ndname_tl)}
+ }{ %luatex
+ \tl_set:Nn\l_mix_ndname_tl{<feff#1>}
}
}{
- %3DNode name
- \cs_new:Nn\mix_ndname:n{%#1:HEX encoded unicode string
+ \bool_if:NTF\g_mix_dvipdfmx_bool{ %dvipdfmx/XeTeX
+ \tl_set:Nn\l_mix_ndname_tl{<feff#1>}
+ }{ %dvips
\special{ps:~
/mix@unicode~65535~string~def~
- (#1)~/ASCIIHexDecode~filter~mix@unicode~readstring~pop~
+ (feff#1)~/ASCIIHexDecode~filter~mix@unicode~readstring~pop~
/mix@unicode~exch~def~
}
%converted to binary UTF16BE by ps2pdf
@@ -536,7 +516,7 @@
}
\filename@parse{#1}
\tl_set:Nx\l_mix_base_tl{\filename@base}
- \tl_set:Nx\l_mix_ext_tl{\tl_lower_case:n{\filename@ext}}
+ \tl_set:Nx\l_mix_ext_tl{\text_lowercase:n{\filename@ext}}
\bool_if:NTF\l_mix_url_bool{
\cs_if_exist:cF{url_#1}{
\mix_pdfobj:nnn{}{dict}{/FS/URL/F(#1)}
@@ -568,16 +548,16 @@
|| \str_if_eq_p:Vn\l_mix_ext_tl{pdf}
)
}{
- \cs_if_exist:cF{imgXobj_\mix_filemdfivesum:n{\l_mix_file_tl}}{
+ \cs_if_exist:cF{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}}{
\mix_pdfximage:n{\l_mix_file_tl}
- \tl_gset:cx{imgXobj_\mix_filemdfivesum:n{\l_mix_file_tl}}{
+ \tl_gset:cx{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}}{
\mix_pdflastximage:
}
}
%create fake FileSpec for current file name if not yet existent
\cs_if_exist:cF{ImgFileSpecFor3D_#1}{
\tl_gset:cx{ImgFileSpecFor3D_#1}{
- \tl_use:c{imgXobj_\mix_filemdfivesum:n{\l_mix_file_tl}}
+ \tl_use:c{imgXobj_\file_mdfive_hash:n{\l_mix_file_tl}}
}
}
%add FileSpec to assets tree of current annot
@@ -589,9 +569,9 @@
}{
%remaining file types in 3D context and any file type in case of Flash
%context will be embedded as ordinary fstreams;
- \cs_if_exist:cF{fileEmb_\mix_filemdfivesum:n{\l_mix_file_tl}}{
+ \cs_if_exist:cF{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}{
\mix_pdfobj:nnn{}{fstream}{{}{\l_mix_file_tl}}
- \tl_gset:cx{fileEmb_\mix_filemdfivesum:n{\l_mix_file_tl}}{
+ \tl_gset:cx{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}{
\mix_pdflastobj:
}
}
@@ -599,7 +579,7 @@
\cs_if_exist:cF{fileSpec_#1}{
\mix_pdfobj:nnn{}{dict}{
/Type/Filespec/F~(#1)%/UF~(#1)
- /EF~<</F~\tl_use:c{fileEmb_\mix_filemdfivesum:n{\l_mix_file_tl}}>>
+ /EF~<</F~\tl_use:c{fileEmb_\file_mdfive_hash:n{\l_mix_file_tl}}>>
}
\tl_gset:cx{fileSpec_#1}{\mix_pdflastobj:}
\bool_if:NT\g_mix_usrattach_bool{
@@ -1913,7 +1893,7 @@
{\g_mix_vfile_tl}{\int_use:N\l_mix_lineno_int}
}
\bool_set_false:N\l_mix_blankndname_bool
- \mix_ndname:n{feff#1}
+ \mix_ndname:n{#1}
},
UTFNAME .default:n = {},
diff --git a/macros/latex/contrib/media9/pdfbase.sty b/macros/latex/contrib/media9/pdfbase.sty
index 6e84cf4f91..a791da1eee 100644
--- a/macros/latex/contrib/media9/pdfbase.sty
+++ b/macros/latex/contrib/media9/pdfbase.sty
@@ -159,8 +159,8 @@
\RequirePackage{expl3}
\RequirePackage{l3keys2e}
-\def\g@pbs@date@tl{2019/11/04}
-\def\g@pbs@version@tl{0.35}
+\def\g@pbs@date@tl{2020/01/27}
+\def\g@pbs@version@tl{0.36}
\ProvidesExplPackage{pdfbase}{\g@pbs@date@tl}{\g@pbs@version@tl}
{driver independent access to low-level PDF features}
@@ -171,7 +171,7 @@
Get~an~up~to~date~version~of~`#1'.\\
Aborting.
}
-\@ifpackagelater{expl3}{2019/05/09}{}{
+\@ifpackagelater{expl3}{2019/09/03}{}{
\msg_error:nnn{pdfbase}{support~outdated}{expl3.sty}
\tex_endinput:D
}
@@ -434,7 +434,7 @@
\cs_new_protected_nopar:Nn\pbs_pdfximage:n{
\filename@parse{#1}
- \tl_set:Nx\l_pbs_ext_tl{\tl_lower_case:n{\filename@ext}}
+ \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}}
\bool_if:nTF{
\str_if_eq_p:Vn\l_pbs_ext_tl{png}
||\str_if_eq_p:Vn\l_pbs_ext_tl{jpg}
@@ -676,7 +676,7 @@
\cs_new_protected_nopar:Nn\pbs_pdfximage:n{
\filename@parse{#1}
- \tl_set:Nx\l_pbs_ext_tl{\tl_lower_case:n{\filename@ext}}
+ \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}}
\bool_if:nTF{
\str_if_eq_p:Vn\l_pbs_ext_tl{png}
||\str_if_eq_p:Vn\l_pbs_ext_tl{jpg}
@@ -768,12 +768,10 @@
\@ifclassloaded{powerdot}{\bool_gset_true:N\g_pbs_powerdot_bool}{}
\sys_if_engine_pdftex:TF{
- \cs_new_nopar:Nn\pbs_filesize:n{\pdffilesize{#1}}
\cs_new_nopar:Nn\pbs_filedump:nnn{\pdffiledump~offset~#1~length~#2~{#3}}
}{
\sys_if_engine_luatex:T{
\RequirePackage{pdftexcmds}
- \cs_new_nopar:Nn\pbs_filesize:n{\pdf@filesize{#1}}
\cs_new_nopar:Nn\pbs_filedump:nnn{\pdf@filedump{#1}{#2}{#3}}
}
}
@@ -893,7 +891,7 @@
}}
{fstream}{
\tl_set:Nn\l_pbs_offset_tl{0}
- \tl_set:Nx\l_pbs_fsize_tl{\pbs_filesize:n{\use_ii:nn#3}}
+ \tl_set:Nx\l_pbs_fsize_tl{\file_size:n{\use_ii:nn#3}}
\message{<\use_ii:nn#3}
%embed file in chunks of 32768 Bytes into PS as chunks of
%65536 Bytes of HEX code
@@ -1221,7 +1219,7 @@
\cs_new_protected_nopar:Nn\pbs_pdfximage:n{
\filename@parse{#1}
- \tl_set:Nx\l_pbs_ext_tl{\tl_lower_case:n{\filename@ext}}
+ \tl_set:Nx\l_pbs_ext_tl{\text_lowercase:n{\filename@ext}}
\bool_if:nTF{
\str_if_eq_p:Vn\l_pbs_ext_tl{ps}
||\str_if_eq_p:Vn\l_pbs_ext_tl{eps}
diff --git a/macros/latex/contrib/physconst/CHANGELOG.md b/macros/latex/contrib/physconst/CHANGELOG.md
index 964bf35aa6..059256090c 100644
--- a/macros/latex/contrib/physconst/CHANGELOG.md
+++ b/macros/latex/contrib/physconst/CHANGELOG.md
@@ -23,5 +23,18 @@
## [1.0.2] - 2020/01/25
### Changed
- Switch compression of tarball to gzip to match requirement for CTAN
+## [1.0.2.a] - 2020/01/25
+- Same as 1.0.2
+## [1.0.2.b] - 2020/01/25
+### Added
+- Add changelog to distribution
+- Add disribution specific readme
+- Add disribution specific makefile
+### Changed
+- Update README to have clearer build, distribute, install, and uninstall instructions.
+- Distribute with .dtx instead of .sty
+- Reordered build, install, distribute, and uninstall sections of the README
+- Pulled build up one level of headings in the README
+- fix some typos in README
diff --git a/macros/latex/contrib/physconst/README.md b/macros/latex/contrib/physconst/README.md
index 67dd9a8073..8a43c78f49 100644
--- a/macros/latex/contrib/physconst/README.md
+++ b/macros/latex/contrib/physconst/README.md
@@ -16,57 +16,69 @@ and version 1.3c or later is part of all distributions of LaTeX
version 2006/05/20 or later.
# Dependencies
-- [`physunits` package](https://github.com/astrobit/physunits)
+- [`physunits` package](https://github.com/astrobit/physunits) also available at [CTAN](https://ctan.org)
# Build Dependencies
-- the `xastro-1` library (part of [xlibs][https://github.com/astrobit/xlibs])
-- some LaTeX distribution with `xelatex`. The makefile assumes you have texlive.
-- `pkg-config`
-- GNU c++ compiler (`g++`) with at least c++11
+- some LaTeX distribution.
- `hyperref` package for LaTeX
- `xcolor` package for LaTeX
- `mdframed` package for LaTeX
- `imakeidx` package for LaTeX
-- GNU `make`
# Files
```
+ makefile GNU makefile to simplify building and installation on linux
README.md This file.
CHANGELOG.md List of changes
physconst.ins The installer file
- makefile GNU makefile to create and install the package
- generator/makefile GNU makefile to create the generator
- generator/physconst.cpp c++ source code that will generate the .dtx for the
- package
+ physconst.dtx The package code and documentation
+ physconst.pdf The package user manual
```
-# Distributable Files
-The following distributable files can be created as described below.
-```
- physconst.sty The actual package
- physconst.pdf Usage documentation
- physconst.tar.bz2 Tarball containing package, documentation, and
- this README
- physconst.zip Zip file containing package, documentation, and
- this README
-```
-To create a disribution on linux (or mac?)
-- `make dist`
+# Building the Package
+## Linux / Mac using make and xelatex
+1. `make`
+
+## Otherwise
+1. Run `latex` on `physconst.ins` to create the `.sty` file. e.g. `latex physconst.ins`.
+1. The following steps apply only if you want the documentation (recommended).
+ 1. Run `latex` on `physconst.dtx` to create the `.pdf` file. e.g. `xelatex physconst.pdf`.
+ 1. Run `makeindex` to create the index, e.g. `makeindex -s gind.ist -o physconst.ind physconst.idx`.
+ 1. Run `makeindex` to create the change log, e.g. `makeindex -s gglo.ist -o physconst.gls physconst.glo`.
+ 1. Run `latex` on `physconst.dtx` to create the `.pdf` file with index and change log. e.g. `xelatex physconst.pdf`.
+ 1. Run `latex` on `physconst.dtx` to get the labels sorted out. e.g. `xelatex physconst.pdf`.
+
+Instructions that might help can be for windows can be found at [this post on StackExchange](https://tex.stackexchange.com/questions/369921/loading-packages-with-ins-and-dtx-files).
# Installation
-For linux, run `make` to generate the package (.sty file) and documentation.
-If you are using texlive (most modern linux distributions use texlive), you may
-then run `sudo make localinstall` to install the package to your latex
-distribution. If you are not using texlive, you will need to manually
-copy the .sty file into either the folder where your .tex files reside that
-require the package, or manually install the package in your latex distribution.
+First build the project as described above.
+
+## For a single project
+1. Copy the `physconst.sty` into your project where your `.tex` files are located.
+
+## for all users and projects
+### Linux / Mac using make and xelatex
+1. `make localinstall`
+
+### Otherwise
+Instructions that might help can be for windows can be found at [this post on StackExchange](https://tex.stackexchange.com/questions/369921/loading-packages-with-ins-and-dtx-files).
+1. Figure out where your LaTeX local packages are installed.
+1. Create a directory named `physconst` in that location.
+1. Copy the `.sty` file into the directory you just created.
+1. Figure out where your LaTeX local package documentation is installed.
+1. Create a directory named `physconst` in that location.
+1. Copy the `.pdf` file into the directory you just created.
+1. Run `texhash` or the equivalent to let LaTeX know the package is there.
-For mac, the instructions above for linux might work. Otherwise you're sort of
-on your own. Most likely your latex disrubution is somewhere in /usr/share.
-You will need to figure out the name and where the package files are stored,
-then run `texhash` so that latex knows that they are there.
-For windows, you're kind of on your own. Instructions that might help can be
-found at [this post on StackExchange](https://tex.stackexchange.com/questions/369921/loading-packages-with-ins-and-dtx-files).
+# Uninstallation
+### Linux / Mac using make
+1. `make localuninstall`
+### Otherwise
+1. Figure out where your LaTeX local packages are installed.
+1. Delete the directory named `physconst` in that location.
+1. Figure out where your LaTeX local package documentation is installed.
+1. Delete the directory named `physconst` in that location.
+1. Run `texhash` or the equivalent to let LaTeX know the package is gone.
diff --git a/macros/latex/contrib/physconst/makefile b/macros/latex/contrib/physconst/makefile
new file mode 100644
index 0000000000..ca48c701ec
--- /dev/null
+++ b/macros/latex/contrib/physconst/makefile
@@ -0,0 +1,122 @@
+pkgname=$(patsubst %.ins,%,$(wildcard *.ins))
+TEXMFLOCAL = $(shell kpsewhich -var-value TEXMFLOCAL)
+TEXMFDIST = $(shell kpsewhich -var-value TEXMFDIST)
+
+.PHONY: all clean localinstall localuninstall localinstallcheck distinstall distuninstall distinstallcheck installcheck
+
+all: $(pkgname).pdf
+
+.PRECIOUS: %.sty %.dtx %.pdf
+.DELETE_ON_ERROR:
+.NOTPARALLEL:
+
+%.sty: %.dtx %.ins
+ latex $(pkgname).ins
+
+%.pdf: %.sty
+ xelatex $(pkgname).dtx
+ makeindex -s gind.ist -o $(pkgname).ind $(pkgname).idx
+ makeindex -s gglo.ist -o $(pkgname).gls $(pkgname).glo
+ xelatex $(pkgname).dtx
+ xelatex $(pkgname).dtx
+
+clean:
+ -rm *.pdf
+ -rm *.log
+ -rm *.out
+ -rm *.aux
+ -rm *.bib
+ -rm *.snm
+ -rm *.toc
+ -rm *.nav
+ -rm *.idx
+ -rm *.sty
+ -rm *.gls
+ -rm *.ilg
+ -rm *.ind
+ -rm *.glo
+ -rm $(pkgname).zip
+ -rm $(pkgname).tar
+ -rm $(pkgname).tar.gz
+ -rm -r $(pkgname)
+ -rm -r tmptar
+ -rm -r tmpzip
+
+$(TEXMFLOCAL)/tex/latex/$(pkgname):
+ mkdir -p $(TEXMFLOCAL)/tex/latex/$(pkgname)
+
+$(TEXMFLOCAL)/doc/latex/$(pkgname):
+ mkdir -p $(TEXMFLOCAL)/doc/latex/$(pkgname)
+
+$(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ cp $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)/.
+
+$(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)
+ cp $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)/.
+
+localinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname) $(TEXMFLOCAL)/doc/latex/$(pkgname) $(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf
+ @echo Installing to $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ texhash
+ make localinstallcheck
+
+localuninstall:
+ @echo Removing from $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFLOCAL)/doc/latex/$(pkgname)
+ texhash
+
+
+$(TEXMFDIST)/tex/latex/$(pkgname):
+ mkdir -p $(TEXMFDIST)/tex/latex/$(pkgname)
+
+$(TEXMFDIST)/doc/latex/$(pkgname):
+ mkdir -p $(TEXMFDIST)/doc/latex/$(pkgname)
+
+$(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)
+ cp $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)/.
+
+$(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)
+ cp $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)/.
+
+distinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname) $(TEXMFDIST)/doc/latex/$(pkgname) $(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf
+ @echo Installing to $(TEXMFDIST)/tex/latex/$(pkgname)
+ texhash
+ make distinstallcheck
+
+distuninstall:
+ @echo Removing from $(TEXMFDIST)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFDIST)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFDIST)/doc/latex/$(pkgname)
+ texhash
+
+#######################################################
+# checks - will be called recursively
+#######################################################
+
+localinstallcheck:
+ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed as local)
+endif
+
+distinstallcheck:
+ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed as dist)
+endif
+
+installcheck:
+ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
+else
+ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed)
+endif
+endif
+
+
+
diff --git a/macros/latex/contrib/physconst/physconst.dtx b/macros/latex/contrib/physconst/physconst.dtx
new file mode 100644
index 0000000000..691a5fd901
--- /dev/null
+++ b/macros/latex/contrib/physconst/physconst.dtx
@@ -0,0 +1,6227 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+% -----------------------------------------------------------
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, either version 1.3c of this license
+% or (at your option) any later version. The latest version of this
+% license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2006/05/20 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{physconst.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package> \ProvidesPackage{physconst}
+%<*package>
+ [2020/01/26 v1.0.2 physconst package]
+%</package>
+%<package>\RequirePackage{physunits}
+%<package>\DeclareOption{shortconst}{ \typeout{physconst: reduced precision}%
+%<package> \DeclareRobustCommand{\shortconst}{1} }
+%<package>\DeclareOption{cgs}{ \typeout{physconst: using cgs instead of SI}%
+%<package> \DeclareRobustCommand{\cgsunits}{1} }
+%<package>\DeclareOption{unseparatedecimals}{ \typeout{physconst:%
+%<package> long decimals are printed as x.xxxxxx instead of x.xxx~xxx}%
+%<package> \DeclareRobustCommand{\unseparatedecimals}{1} }
+%<package>\ProcessOptions\relax
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{xcolor}
+\usepackage{mdframed}
+\usepackage{physconst}
+\usepackage{imakeidx}
+\makeindex[columns=2]
+\usepackage[backref]{hyperref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\OnlyDescription
+\begin{document}
+\DocInput{physconst.dtx}
+\PrintChanges
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \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 \~}
+%
+% \changes{v1.0.0}{2020/01/25}{Initial version.}
+% \changes{v1.0.1}{2020/01/25}{Add options section and fix formatting.}
+% \changes{v1.0.2}{2020/01/26}{External changes for distribution.}
+%
+% \GetFileInfo{physconst.dtx}
+% \DeclareRobustCommand{\fileversion}{v1.0.2}
+% \DeclareRobustCommand{\filedate}{2020/01/26}
+%
+% \DoNotIndex{\DeclareRobustCommand,\newenvironment,\DeclareRobustCommand%
+% ,\left,\right,\textbf,\mathrm}
+%
+% \title{The \textsf{physconst} package\thanks{This document corresponds to %
+% \textsf{physconst}~\fileversion, dated \filedate.}}
+% \author{Brian W. Mulligan \\ \texttt{bwmulligan@astronaos.com}}
+%
+% \maketitle
+% \setlength{\parindent}{0em}
+% \setlength{\parskip}{1em}
+%
+% \section{Introduction}
+%
+%
+% This package consists of several macros that are shorthand for a variety of
+% physical constants, e.g. the speed of light.
+% The package developed out of physics and astronomy classes that I have
+% taught and wanted to ensure that I had correct values for each constant
+% and did not wish to retype them every time I use them.
+% The constants can be used in two forms, the most accurate available values,
+% or versions that are rounded to 3 significant digits for use in typical
+% classroom settings, homework assignments, etc.
+%
+% Most constants are taken from CODATA 2018, with the exception of the
+% astronomical objects, whose values are taken from their current wikipedia
+% entries. If you have an interest and/or need for more reliable data,
+% please contact me.
+%
+%\subsection{Options}
+%
+% There are three options available: |shortconst|, |cgs|, and
+% |unseparatedecimals|.
+% They can be invoked when the package is declared, e.g.\\
+% |\usepackage[shortconst]{physconst}|.
+%
+% |shortconst| will reduce the precision to 3 digits for all constants. This
+% is intended when you don't want to have the details of the constants, just
+% the general value (e.g. $1.60\times10^{-19}\Coulomb$ instead of
+% $1.602\,176\,634\times10^{-19}\Coulomb$).
+%
+% |cgs| will provide all constants in cgs, i.e. the units used in astronomy.
+%
+% |unseparatedecimals| is for situations when you don't want spaces in the
+% decimal portion of full precision constants. E.g. the elementary charge
+% would appear as $1.602176634\times10^{-19}\Coulomb$ instead of
+% $1.602\,176\,634\times10^{-19}\Coulomb$. (notice the gaps between digits
+% in the latter.
+%
+%\subsection{Macros}
+%
+%
+%\subsection{Normal Macros}
+%
+% The normal macros are the ones that you will typically use, whose values are
+% determined by the choice of options when the package is invoked.
+%
+% \subsection{Naming Convention}
+%
+% Each macro starts with a lower case `k' to indicate that it is a constant.
+% If the macro is of special units, e.g. eV, those units will be specified next.
+% If the macro is part of a fundamental unit group, it then gets the name of the
+% group, e.g. Mass, Charge, etc.
+% Finally is the details or name of the constants, e.g. Proton, Planck, etc.
+%
+%\subsubsection{Mass}
+%
+%
+%\index{Mass|usage}
+%
+% \DescribeMacro{\kMassElectron}
+% \index{Mass>Electron|usage}
+% |\kMassElectron| is the mass of an electron.
+%
+% \DescribeMacro{\keVMassElectron}
+% \index{Mass>Electron>in eV|usage}
+% |\keVMassElectron| is the mass of an electron.
+%
+% \DescribeMacro{\kMassProton}
+% \index{Mass>Proton|usage}
+% |\kMassProton| is the mass of a proton.
+%
+% \DescribeMacro{\keVMassProton}
+% \index{Mass>Proton>in eV|usage}
+% |\keVMassProton| is the mass of a proton.
+%
+% \DescribeMacro{\kMassHydrogen}
+% \index{Mass>Hydrogen atom|usage}
+% |\kMassHydrogen| is the mass of a neutral hydrogen atom.
+%
+% \DescribeMacro{\keVMassHydrogen}
+% \index{Mass>Hydrogen atom>in eV|usage}
+% |\keVMassHydrogen| is the mass of a neutral hydrogen atom.
+%
+% \DescribeMacro{\kMassSun}
+% \index{Mass>Sun|usage}
+% |\kMassSun| is the mass of the Sun.
+%
+% \DescribeMacro{\kMassAMU}
+% \index{Mass>amu|usage}
+% |\kMassAMU| is the mass of an atomic mass unit.
+%
+% \DescribeMacro{\keVMassAMU}
+% \index{Mass>amu>in eV|usage}
+% |\keVMassAMU| is the mass of an atomic mass unit.
+%
+%
+%\subsubsection{Charge}
+%
+%
+%\index{Charge|usage}
+%
+% \DescribeMacro{\kChargeFundamental}
+% \index{Charge>Elementary|usage}
+% |\kChargeFundamental| is the fundamental charge.
+%
+% \DescribeMacro{\kChargeElectron}
+% \index{Charge>Electron|usage}
+% |\kChargeElectron| is the charge of an electron.
+%
+% \DescribeMacro{\kChargeProton}
+% \index{Charge>Proton|usage}
+% |\kChargeProton| is the charge of a proton.
+%
+%
+%\subsubsection{Distances and Lengths}
+%
+%
+%\index{Distances and Lengths|usage}
+%
+% \DescribeMacro{\kRadiusBohr}
+% \index{Distances and Lengths>Bohr Radius|usage}
+% |\kRadiusBohr| is Bohr radius of an atom.
+%
+% \DescribeMacro{\kAstronomicalUnit}
+% \index{Distances and Lengths>Astronomical Unit|usage}
+% |\kAstronomicalUnit| is the astronomical unit (the average distance between
+% the Earth and the Sun).
+%
+% \DescribeMacro{\kParsec}
+% \index{Distances and Lengths>Parsec|usage}
+% |\kParsec| is the length of a parsec ($\frac{648000\au}{\pi}$).
+%
+% \DescribeMacro{\kRadiusSun}
+% \index{Distances and Lengths>Solar Radius|usage}
+% |\kRadiusSun| is the mean radius of the Sun.
+%
+%
+%\subsubsection{Energy, Power, and Luminosity}
+%
+%
+%\index{Energy, Power, and Luminosity|usage}
+%
+% \DescribeMacro{\kRydberg}
+% \index{Energy, Power, and Luminosity>Rydberg|usage}
+% |\kRydberg| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \DescribeMacro{\keVRydberg}
+% \index{Energy, Power, and Luminosity>Rydberg>in eV|usage}
+% |\keVRydberg| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \DescribeMacro{\kLuminositySun}
+% \index{Energy, Power, and Luminosity>Solar Luminosity|usage}
+% |\kLuminositySun| is the luminosity of the Sun.
+%
+%
+%\subsubsection{Pressure}
+%
+%
+%\index{Pressure|usage}
+%
+% \DescribeMacro{\kPressureAtmosphere}
+% \index{Pressure>Standard Atmosphere|usage}
+% |\kPressureAtmosphere| is the standard atmospheric pressure.
+%
+% \DescribeMacro{\kPressureStandard}
+% \index{Pressure>Standard Pressure|usage}
+% |\kPressureStandard| is the standard atmospheric pressure.
+%
+%
+%\subsubsection{Velocity, Speed and Acceleration}
+%
+%
+%\index{Velocity, Speed and Acceleration|usage}
+%
+% \DescribeMacro{\kSpeedLight}
+% \index{Velocity, Speed and Acceleration>Speed of Light|usage}
+% |\kSpeedLight| is the speed of light.
+%
+% \DescribeMacro{\kAccelGravity}
+% \index{Velocity, Speed and Acceleration>Acceleration due to Gravity|usage}
+% |\kAccelGravity| is the accelertion due to gravity at the surface of the
+% Earth.
+%
+%
+%\subsubsection{Other Constants}
+%
+%
+%\index{Other Constants|usage}
+%
+% \DescribeMacro{\kCoulomb}
+% \index{Other Constants>Coulomb Constant|usage}
+% |\kCoulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$).
+%
+% \DescribeMacro{\kVacuumPermittivity}
+% \index{Other Constants>Vacuum Permittivity|usage}
+% |\kVacuumPermittivity| is the electric permittivity of the vacuum.
+%
+% \DescribeMacro{\kVacuumPermeability}
+% \index{Other Constants>Vacuum Permeability|usage}
+% |\kVacuumPermeability| is the magnetic permeability of the vacuum.
+%
+% \DescribeMacro{\kVacuumImpedance}
+% \index{Other Constants>Vacuum Impedance|usage}
+% |\kVacuumImpedance| is the characteristic impedance of the vacuum.
+%
+% \DescribeMacro{\kBoltzmann}
+% \index{Other Constants>Boltzmann|usage}
+% |\kBoltzmann| is the Boltzmann constant.
+%
+% \DescribeMacro{\keVBoltzmann}
+% \index{Other Constants>Boltzmann>in eV|usage}
+% |\keVBoltzmann| is the Boltzmann constant.
+%
+% \DescribeMacro{\kPlanck}
+% \index{Other Constants>Planck|usage}
+% |\kPlanck| is the Planck constant.
+%
+% \DescribeMacro{\keVPlanck}
+% \index{Other Constants>Planck>in eV|usage}
+% |\keVPlanck| is the Planck constant.
+%
+% \DescribeMacro{\kPlanckReduced}
+% \index{Other Constants>Reduced Planck|usage}
+% |\kPlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \DescribeMacro{\keVPlanckReduced}
+% \index{Other Constants>Reduced Planck>in eV|usage}
+% |\keVPlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \DescribeMacro{\kGravity}
+% \index{Other Constants>Newton's Gravitational Constant|usage}
+% |\kGravity| is Newton's gravitational constant.
+%
+% \DescribeMacro{\kStefanBoltzmann}
+% \index{Other Constants>Stefan-Boltzmann|usage}
+% |\kStefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$.
+%
+% \DescribeMacro{\kRadiation}
+% \index{Other Constants>Radiation|usage}
+% |\kRadiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$.
+%
+% \DescribeMacro{\kFineStructure}
+% \index{Other Constants>Fine Structure|usage}
+% |\kFineStructure| is the fine structure constant.
+%
+% \DescribeMacro{\kFineStructureReciprocal}
+% \index{Other Constants>Fine Structure>Reciprocal|usage}
+% |\kFineStructureReciprocal| is the reciprocal of the fine structure constant.
+%
+% \DescribeMacro{\kAvogadro}
+% \index{Other Constants>Avogadro's Number|usage}
+% |\kAvogadro| is Avogadro's Number (the number of particles in a mole).
+%
+%
+%\subsection{Detailed Macros}
+%
+% These macros are used to access the constants with specific units and
+% precision. They require use of \textbackslash makeatletter and
+% \textbackslash makeatother in order to be used. They are used internally
+% by physconst to define the macros that are normally used (those described
+% above.
+%
+% \subsection{NamingConvention}
+% The detailed macros are named like \k@units@precision@name. The units
+% specify which units the constant is in (SI, cgs, or eV). For constants that
+% are independent of the unit system (e.g. Avogadro's number and the fine
+% structure constant), the units are omitted. The precision is either `short'
+% or `full' to indicate how much precision is included in the number. All short
+% precision constants have 3 significant figures. The precision of full
+% precision constants vary by their definition and/or inputs. Finally, the
+% name or description of the constant appears.
+%
+%\subsubsection{Mass}
+%
+% \DescribeMacro{\k@SI@short@MassElectron}
+% |\k@SI@short@MassElectron| is the mass of an electron in SI units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassElectron}
+% |\k@SI@full@MassElectron| is the mass of an electron in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassElectron}
+% |\k@cgs@short@MassElectron| is the mass of an electron in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassElectron}
+% |\k@cgs@full@MassElectron| is the mass of an electron in cgs units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassElectron}
+% |\k@eV@short@MassElectron| is the mass of an electron in eV with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassElectron}
+% |\k@eV@full@MassElectron| is the mass of an electron in eV with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@MassElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@MassProton}
+% |\k@SI@short@MassProton| is the mass of a proton in SI units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassProton}
+% |\k@SI@full@MassProton| is the mass of a proton in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassProton}
+% |\k@cgs@short@MassProton| is the mass of a proton in cgs units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassProton}
+% |\k@cgs@full@MassProton| is the mass of a proton in cgs units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassProton}
+% |\k@eV@short@MassProton| is the mass of a proton in eV with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassProton}
+% |\k@eV@full@MassProton| is the mass of a proton in eV with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@MassProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@MassHydrogen}
+% |\k@SI@short@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
+% with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassHydrogen}
+% |\k@SI@full@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
+% with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassHydrogen}
+% |\k@cgs@short@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
+% units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassHydrogen}
+% |\k@cgs@full@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
+% units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassHydrogen}
+% |\k@eV@short@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassHydrogen}
+% |\k@eV@full@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@MassHydrogen\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassHydrogen}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@MassSun}
+% |\k@SI@short@MassSun| is the mass of the Sun in SI units with reduced
+% precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@MassSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassSun}
+% |\k@SI@full@MassSun| is the mass of the Sun in SI units with full precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@MassSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassSun}
+% |\k@cgs@short@MassSun| is the mass of the Sun in cgs units with reduced
+% precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@MassSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassSun}
+% |\k@cgs@full@MassSun| is the mass of the Sun in cgs units with full precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@MassSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@MassAMU}
+% |\k@SI@short@MassAMU| is the mass of an atomic mass unit in SI units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassAMU}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassAMU}
+% |\k@SI@full@MassAMU| is the mass of an atomic mass unit in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassAMU}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassAMU}
+% |\k@cgs@short@MassAMU| is the mass of an atomic mass unit in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassAMU}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassAMU}
+% |\k@cgs@full@MassAMU| is the mass of an atomic mass unit in cgs units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassAMU}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassAMU}
+% |\k@eV@short@MassAMU| is the mass of an atomic mass unit in eV with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassAMU}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassAMU}
+% |\k@eV@full@MassAMU| is the mass of an atomic mass unit in eV with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@MassAMU\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassAMU}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Charge}
+%
+% \DescribeMacro{\k@SI@short@ChargeFundamental}
+% |\k@SI@short@ChargeFundamental| is the fundamental charge in SI units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@ChargeFundamental\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeFundamental}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeFundamental}
+% |\k@SI@full@ChargeFundamental| is the fundamental charge in SI units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@ChargeFundamental\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeFundamental}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeFundamental}
+% |\k@cgs@short@ChargeFundamental| is the fundamental charge in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@ChargeFundamental\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeFundamental}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeFundamental}
+% |\k@cgs@full@ChargeFundamental| is the fundamental charge in cgs units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@ChargeFundamental\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeFundamental}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@ChargeElectron}
+% |\k@SI@short@ChargeElectron| is the charge of an electron in SI units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@ChargeElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeElectron}
+% |\k@SI@full@ChargeElectron| is the charge of an electron in SI units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@ChargeElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeElectron}
+% |\k@cgs@short@ChargeElectron| is the charge of an electron in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@ChargeElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeElectron}
+% |\k@cgs@full@ChargeElectron| is the charge of an electron in cgs units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@ChargeElectron\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeElectron}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@ChargeProton}
+% |\k@SI@short@ChargeProton| is the charge of a proton in SI units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@ChargeProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeProton}
+% |\k@SI@full@ChargeProton| is the charge of a proton in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@ChargeProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeProton}
+% |\k@cgs@short@ChargeProton| is the charge of a proton in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@ChargeProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeProton}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeProton}
+% |\k@cgs@full@ChargeProton| is the charge of a proton in cgs units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@ChargeProton\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeProton}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Distances and Lengths}
+%
+% \DescribeMacro{\k@SI@short@RadiusBohr}
+% |\k@SI@short@RadiusBohr| is Bohr radius of an atom in SI units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@RadiusBohr\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RadiusBohr}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RadiusBohr}
+% |\k@SI@full@RadiusBohr| is Bohr radius of an atom in SI units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@RadiusBohr\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RadiusBohr}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RadiusBohr}
+% |\k@cgs@short@RadiusBohr| is Bohr radius of an atom in cgs units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@RadiusBohr\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RadiusBohr}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RadiusBohr}
+% |\k@cgs@full@RadiusBohr| is Bohr radius of an atom in cgs units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@RadiusBohr\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RadiusBohr}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@AstronomicalUnit}
+% |\k@SI@short@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in SI units with reduced precision.
+% (IAU~Resolution~B2~2012)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@AstronomicalUnit\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@AstronomicalUnit}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@AstronomicalUnit}
+% |\k@SI@full@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in SI units with full precision.
+% (IAU~Resolution~B2~2012)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@AstronomicalUnit\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@AstronomicalUnit}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@AstronomicalUnit}
+% |\k@cgs@short@AstronomicalUnit| is the astronomical unit (the average
+% distance between the Earth and the Sun) in cgs units with reduced precision.
+% (IAU~Resolution~B2~2012)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@AstronomicalUnit\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@AstronomicalUnit}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@AstronomicalUnit}
+% |\k@cgs@full@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in cgs units with full precision.
+% (IAU~Resolution~B2~2012)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@AstronomicalUnit\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@AstronomicalUnit}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@Parsec}
+% |\k@SI@short@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% SI units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Parsec\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Parsec}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Parsec}
+% |\k@SI@full@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in SI
+% units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Parsec\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Parsec}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Parsec}
+% |\k@cgs@short@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Parsec\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Parsec}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Parsec}
+% |\k@cgs@full@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Parsec\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Parsec}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@RadiusSun}
+% |\k@SI@short@RadiusSun| is the mean radius of the Sun in SI units with
+% reduced precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@RadiusSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RadiusSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RadiusSun}
+% |\k@SI@full@RadiusSun| is the mean radius of the Sun in SI units with full
+% precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@RadiusSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RadiusSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RadiusSun}
+% |\k@cgs@short@RadiusSun| is the mean radius of the Sun in cgs units with
+% reduced precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@RadiusSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RadiusSun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RadiusSun}
+% |\k@cgs@full@RadiusSun| is the mean radius of the Sun in cgs units with full
+% precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@RadiusSun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RadiusSun}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Energy, Power, and Luminosity}
+%
+% \DescribeMacro{\k@SI@short@Rydberg}
+% |\k@SI@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Rydberg}
+% |\k@SI@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Rydberg}
+% |\k@cgs@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Rydberg}
+% |\k@cgs@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@Rydberg}
+% |\k@eV@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@Rydberg}
+% |\k@eV@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@Rydberg\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@Rydberg}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@LuminositySun}
+% |\k@SI@short@LuminositySun| is the luminosity of the Sun in SI units with
+% reduced precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@LuminositySun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@LuminositySun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@LuminositySun}
+% |\k@SI@full@LuminositySun| is the luminosity of the Sun in SI units with full
+% precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@LuminositySun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@LuminositySun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@LuminositySun}
+% |\k@cgs@short@LuminositySun| is the luminosity of the Sun in cgs units with
+% reduced precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@LuminositySun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@LuminositySun}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@LuminositySun}
+% |\k@cgs@full@LuminositySun| is the luminosity of the Sun in cgs units with
+% full precision.
+% (IAU~Resolution~B3~2015)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@LuminositySun\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@LuminositySun}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Pressure}
+%
+% \DescribeMacro{\k@SI@short@PressureAtmosphere}
+% |\k@SI@short@PressureAtmosphere| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@PressureAtmosphere\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PressureAtmosphere}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PressureAtmosphere}
+% |\k@SI@full@PressureAtmosphere| is the standard atmospheric pressure in SI
+% units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@PressureAtmosphere\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PressureAtmosphere}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PressureAtmosphere}
+% |\k@cgs@short@PressureAtmosphere| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@PressureAtmosphere\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PressureAtmosphere}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PressureAtmosphere}
+% |\k@cgs@full@PressureAtmosphere| is the standard atmospheric pressure in cgs
+% units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@PressureAtmosphere\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PressureAtmosphere}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@PressureStandard}
+% |\k@SI@short@PressureStandard| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@PressureStandard\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PressureStandard}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PressureStandard}
+% |\k@SI@full@PressureStandard| is the standard atmospheric pressure in SI
+% units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@PressureStandard\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PressureStandard}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PressureStandard}
+% |\k@cgs@short@PressureStandard| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@PressureStandard\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PressureStandard}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PressureStandard}
+% |\k@cgs@full@PressureStandard| is the standard atmospheric pressure in cgs
+% units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@PressureStandard\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PressureStandard}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Velocity, Speed and Acceleration}
+%
+% \DescribeMacro{\k@SI@short@SpeedLight}
+% |\k@SI@short@SpeedLight| is the speed of light in SI units with reduced
+% precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@SpeedLight\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@SpeedLight}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@SpeedLight}
+% |\k@SI@full@SpeedLight| is the speed of light in SI units with full precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@SpeedLight\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@SpeedLight}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@SpeedLight}
+% |\k@cgs@short@SpeedLight| is the speed of light in cgs units with reduced
+% precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@SpeedLight\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@SpeedLight}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@SpeedLight}
+% |\k@cgs@full@SpeedLight| is the speed of light in cgs units with full
+% precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@SpeedLight\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@SpeedLight}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@AccelGravity}
+% |\k@SI@short@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in SI units with reduced precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@AccelGravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@AccelGravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@AccelGravity}
+% |\k@SI@full@AccelGravity| is the accelertion due to gravity at the surface of
+% the Earth in SI units with full precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@AccelGravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@AccelGravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@AccelGravity}
+% |\k@cgs@short@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in cgs units with reduced precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@AccelGravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@AccelGravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@AccelGravity}
+% |\k@cgs@full@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in cgs units with full precision.
+% (CODATA 2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@AccelGravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@AccelGravity}\end{mdframed}
+% \makeatother
+%
+%
+%\subsubsection{Other Constants}
+%
+% \DescribeMacro{\k@SI@short@Coulomb}
+% |\k@SI@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Coulomb\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Coulomb}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Coulomb}
+% |\k@SI@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Coulomb\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Coulomb}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Coulomb}
+% |\k@cgs@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$)
+% in cgs units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Coulomb\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Coulomb}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Coulomb}
+% |\k@cgs@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% cgs units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Coulomb\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Coulomb}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@VacuumPermittivity}
+% |\k@SI@short@VacuumPermittivity| is the electric permittivity of the vacuum
+% in SI units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@VacuumPermittivity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@VacuumPermittivity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@VacuumPermittivity}
+% |\k@SI@full@VacuumPermittivity| is the electric permittivity of the vacuum in
+% SI units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@VacuumPermittivity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@VacuumPermittivity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@VacuumPermittivity}
+% |\k@cgs@short@VacuumPermittivity| is the electric permittivity of the vacuum
+% in cgs units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@VacuumPermittivity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@VacuumPermittivity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@VacuumPermittivity}
+% |\k@cgs@full@VacuumPermittivity| is the electric permittivity of the vacuum
+% in cgs units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@VacuumPermittivity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@VacuumPermittivity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@VacuumPermeability}
+% |\k@SI@short@VacuumPermeability| is the magnetic permeability of the vacuum
+% in SI units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@VacuumPermeability\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@VacuumPermeability}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@VacuumPermeability}
+% |\k@SI@full@VacuumPermeability| is the magnetic permeability of the vacuum in
+% SI units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@VacuumPermeability\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@VacuumPermeability}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@VacuumPermeability}
+% |\k@cgs@short@VacuumPermeability| is the magnetic permeability of the vacuum
+% in cgs units with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@VacuumPermeability\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@VacuumPermeability}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@VacuumPermeability}
+% |\k@cgs@full@VacuumPermeability| is the magnetic permeability of the vacuum
+% in cgs units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@VacuumPermeability\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@VacuumPermeability}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@VacuumImpedance}
+% |\k@short@VacuumImpedance| is the characteristic impedance of the vacuum with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@short@VacuumImpedance\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@VacuumImpedance}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@VacuumImpedance}
+% |\k@full@VacuumImpedance| is the characteristic impedance of the vacuum with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@full@VacuumImpedance\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@VacuumImpedance}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@Boltzmann}
+% |\k@SI@short@Boltzmann| is the Boltzmann constant in SI units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Boltzmann}
+% |\k@SI@full@Boltzmann| is the Boltzmann constant in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Boltzmann}
+% |\k@cgs@short@Boltzmann| is the Boltzmann constant in cgs units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Boltzmann}
+% |\k@cgs@full@Boltzmann| is the Boltzmann constant in cgs units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@Boltzmann}
+% |\k@eV@short@Boltzmann| is the Boltzmann constant in eV with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@Boltzmann}
+% |\k@eV@full@Boltzmann| is the Boltzmann constant in eV with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@Boltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@Boltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@Planck}
+% |\k@SI@short@Planck| is the Planck constant in SI units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Planck}
+% |\k@SI@full@Planck| is the Planck constant in SI units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Planck}
+% |\k@cgs@short@Planck| is the Planck constant in cgs units with reduced
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Planck}
+% |\k@cgs@full@Planck| is the Planck constant in cgs units with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@Planck}
+% |\k@eV@short@Planck| is the Planck constant in eV with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@Planck}
+% |\k@eV@full@Planck| is the Planck constant in eV with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@Planck\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@Planck}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@PlanckReduced}
+% |\k@SI@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in SI units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PlanckReduced}
+% |\k@SI@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in SI units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PlanckReduced}
+% |\k@cgs@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in cgs units with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PlanckReduced}
+% |\k@cgs@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in cgs units with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@PlanckReduced}
+% |\k@eV@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@short@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@PlanckReduced}
+% |\k@eV@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@eV@full@PlanckReduced\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@PlanckReduced}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@Gravity}
+% |\k@SI@short@Gravity| is Newton's gravitational constant in SI units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Gravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Gravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Gravity}
+% |\k@SI@full@Gravity| is Newton's gravitational constant in SI units with full
+% precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Gravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Gravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Gravity}
+% |\k@cgs@short@Gravity| is Newton's gravitational constant in cgs units with
+% reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Gravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Gravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Gravity}
+% |\k@cgs@full@Gravity| is Newton's gravitational constant in cgs units with
+% full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Gravity\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Gravity}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@StefanBoltzmann}
+% |\k@SI@short@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in SI units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@StefanBoltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@StefanBoltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@StefanBoltzmann}
+% |\k@SI@full@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in SI units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@StefanBoltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@StefanBoltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@StefanBoltzmann}
+% |\k@cgs@short@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in cgs units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@StefanBoltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@StefanBoltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@StefanBoltzmann}
+% |\k@cgs@full@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in cgs units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@StefanBoltzmann\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@StefanBoltzmann}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@short@Radiation}
+% |\k@SI@short@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in SI units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@short@Radiation\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@Radiation}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@Radiation}
+% |\k@SI@full@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in SI units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@SI@full@Radiation\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@Radiation}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@Radiation}
+% |\k@cgs@short@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in cgs units with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@short@Radiation\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@Radiation}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@Radiation}
+% |\k@cgs@full@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in cgs units with full
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@cgs@full@Radiation\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@Radiation}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@FineStructure}
+% |\k@short@FineStructure| is the fine structure constant with reduced
+% precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@short@FineStructure\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@FineStructure}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@FineStructure}
+% |\k@full@FineStructure| is the fine structure constant with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@full@FineStructure\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@FineStructure}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@FineStructureReciprocal}
+% |\k@short@FineStructureReciprocal| is the reciprocal of the fine structure
+% constant with reduced precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@short@FineStructureReciprocal\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@FineStructureReciprocal}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@FineStructureReciprocal}
+% |\k@full@FineStructureReciprocal| is the reciprocal of the fine structure
+% constant with full precision.
+% (Calculated)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@full@FineStructureReciprocal\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@FineStructureReciprocal}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@Avogadro}
+% |\k@short@Avogadro| is Avogadro's Number (the number of particles in a mole)
+% with reduced precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@short@Avogadro\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@Avogadro}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@Avogadro}
+% |\k@full@Avogadro| is Avogadro's Number (the number of particles in a mole)
+% with full precision.
+% (CODATA~2018)
+%
+% The macro can be invoked by (e.g.)
+% \begin{mdframed}[backgroundcolor=orange!25]%
+% {\small\texttt{\textbackslash makeatletter\\ The value is
+% \textbackslash k@full@Avogadro\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@Avogadro}\end{mdframed}
+% \makeatother
+%
+\makeatletter
+% \StopEventually{}
+%
+% \section{Implementation}
+%
+% \subsection{Special}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\physconst@decimalsseparator}
+% |\physconst@decimalsseparator| is the a special macro used to separate digits
+% in the decimal portion of the constants. If the option unseparatedecimals is
+% not specified, decimals will be printed as 1.234\,567\,890. If the option
+% is specified, decimals will be printed as 1.234567890. This macro should
+% note be used outside of this package.
+%
+% \begin{macrocode}
+\ifx\unseparatedecimals\undefined
+\DeclareRobustCommand{\physconst@decimalsseparator}{\,}
+\else
+\DeclareRobustCommand{\physconst@decimalsseparator}{ }
+\fi
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Mass}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassElectron}
+% |\k@SI@short@MassElectron| is the mass of an electron in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassElectron}{%
+\ensuremath{%
+9.11%
+\times 10^{-34}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassElectron}
+% |\k@SI@full@MassElectron| is the mass of an electron in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassElectron}{%
+\ensuremath{%
+9.108\expandafter\physconst@decimalsseparator%
+980\expandafter\physconst@decimalsseparator%
+087\expandafter\physconst@decimalsseparator%
+382%
+\times 10^{-34}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassElectron}
+% |\k@cgs@short@MassElectron| is the mass of an electron in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassElectron}{%
+\ensuremath{%
+9.11%
+\times 10^{-31}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassElectron}
+% |\k@cgs@full@MassElectron| is the mass of an electron in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassElectron}{%
+\ensuremath{%
+9.108\expandafter\physconst@decimalsseparator%
+980\expandafter\physconst@decimalsseparator%
+087\expandafter\physconst@decimalsseparator%
+382%
+\times 10^{-31}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassElectron}
+% |\k@eV@short@MassElectron| is the mass of an electron in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassElectron}{%
+\ensuremath{%
+5.69%
+\times 10^{-19}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassElectron}
+% |\k@eV@full@MassElectron| is the mass of an electron in eV with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassElectron}{%
+\ensuremath{%
+5.685\expandafter\physconst@decimalsseparator%
+378\expandafter\physconst@decimalsseparator%
+187\expandafter\physconst@decimalsseparator%
+448%
+\times 10^{-19}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassElectron}
+% |\kMassElectron| is the mass of an electron.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassElectron}{%
+\k@SI@short@MassElectron}
+\else
+\DeclareRobustCommand {\kMassElectron}{%
+\k@SI@full@MassElectron}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassElectron}{%
+\k@cgs@short@MassElectron}
+\else
+\DeclareRobustCommand {\kMassElectron}{%
+\k@cgs@full@MassElectron}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassElectron}
+% |\keVMassElectron| is the mass of an electron.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassElectron}{%
+\k@eV@short@MassElectron}
+\else
+\DeclareRobustCommand {\keVMassElectron}{%
+\k@eV@full@MassElectron}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassProton}
+% |\k@SI@short@MassProton| is the mass of a proton in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassProton}{%
+\ensuremath{%
+1.67%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassProton}
+% |\k@SI@full@MassProton| is the mass of a proton in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassProton}{%
+\ensuremath{%
+1.672\expandafter\physconst@decimalsseparator%
+547\expandafter\physconst@decimalsseparator%
+813\expandafter\physconst@decimalsseparator%
+969%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassProton}
+% |\k@cgs@short@MassProton| is the mass of a proton in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassProton}{%
+\ensuremath{%
+1.67%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassProton}
+% |\k@cgs@full@MassProton| is the mass of a proton in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassProton}{%
+\ensuremath{%
+1.672\expandafter\physconst@decimalsseparator%
+547\expandafter\physconst@decimalsseparator%
+813\expandafter\physconst@decimalsseparator%
+969%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassProton}
+% |\k@eV@short@MassProton| is the mass of a proton in eV with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassProton}{%
+\ensuremath{%
+1.04%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassProton}
+% |\k@eV@full@MassProton| is the mass of a proton in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassProton}{%
+\ensuremath{%
+1.043\expandafter\physconst@decimalsseparator%
+922\expandafter\physconst@decimalsseparator%
+235\expandafter\physconst@decimalsseparator%
+836%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassProton}
+% |\kMassProton| is the mass of a proton.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassProton}{%
+\k@SI@short@MassProton}
+\else
+\DeclareRobustCommand {\kMassProton}{%
+\k@SI@full@MassProton}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassProton}{%
+\k@cgs@short@MassProton}
+\else
+\DeclareRobustCommand {\kMassProton}{%
+\k@cgs@full@MassProton}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassProton}
+% |\keVMassProton| is the mass of a proton.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassProton}{%
+\k@eV@short@MassProton}
+\else
+\DeclareRobustCommand {\keVMassProton}{%
+\k@eV@full@MassProton}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassHydrogen}
+% |\k@SI@short@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
+% with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassHydrogen}{%
+\ensuremath{%
+1.67%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassHydrogen}
+% |\k@SI@full@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
+% with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassHydrogen}{%
+\ensuremath{%
+1.673\expandafter\physconst@decimalsseparator%
+458\expandafter\physconst@decimalsseparator%
+687\expandafter\physconst@decimalsseparator%
+724%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassHydrogen}
+% |\k@cgs@short@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassHydrogen}{%
+\ensuremath{%
+1.67%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassHydrogen}
+% |\k@cgs@full@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassHydrogen}{%
+\ensuremath{%
+1.673\expandafter\physconst@decimalsseparator%
+458\expandafter\physconst@decimalsseparator%
+687\expandafter\physconst@decimalsseparator%
+724%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassHydrogen}
+% |\k@eV@short@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassHydrogen}{%
+\ensuremath{%
+1.04%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassHydrogen}
+% |\k@eV@full@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassHydrogen}{%
+\ensuremath{%
+1.044\expandafter\physconst@decimalsseparator%
+490\expandafter\physconst@decimalsseparator%
+758\expandafter\physconst@decimalsseparator%
+517%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassHydrogen}
+% |\kMassHydrogen| is the mass of a neutral hydrogen atom.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassHydrogen}{%
+\k@SI@short@MassHydrogen}
+\else
+\DeclareRobustCommand {\kMassHydrogen}{%
+\k@SI@full@MassHydrogen}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassHydrogen}{%
+\k@cgs@short@MassHydrogen}
+\else
+\DeclareRobustCommand {\kMassHydrogen}{%
+\k@cgs@full@MassHydrogen}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassHydrogen}
+% |\keVMassHydrogen| is the mass of a neutral hydrogen atom.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassHydrogen}{%
+\k@eV@short@MassHydrogen}
+\else
+\DeclareRobustCommand {\keVMassHydrogen}{%
+\k@eV@full@MassHydrogen}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassSun}
+% |\k@SI@short@MassSun| is the mass of the Sun in SI units with reduced
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassSun}{%
+\ensuremath{%
+1.99%
+\times 10^{30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassSun}
+% |\k@SI@full@MassSun| is the mass of the Sun in SI units with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassSun}{%
+\ensuremath{%
+1.988\expandafter\physconst@decimalsseparator%
+409\expandafter\physconst@decimalsseparator%
+9%
+\times 10^{30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassSun}
+% |\k@cgs@short@MassSun| is the mass of the Sun in cgs units with reduced
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassSun}{%
+\ensuremath{%
+1.99%
+\times 10^{33}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassSun}
+% |\k@cgs@full@MassSun| is the mass of the Sun in cgs units with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassSun}{%
+\ensuremath{%
+1.988\expandafter\physconst@decimalsseparator%
+409\expandafter\physconst@decimalsseparator%
+9%
+\times 10^{33}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassSun}
+% |\kMassSun| is the mass of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassSun}{%
+\k@SI@short@MassSun}
+\else
+\DeclareRobustCommand {\kMassSun}{%
+\k@SI@full@MassSun}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassSun}{%
+\k@cgs@short@MassSun}
+\else
+\DeclareRobustCommand {\kMassSun}{%
+\k@cgs@full@MassSun}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassAMU}
+% |\k@SI@short@MassAMU| is the mass of an atomic mass unit in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassAMU}{%
+\ensuremath{%
+1.66%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassAMU}
+% |\k@SI@full@MassAMU| is the mass of an atomic mass unit in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassAMU}{%
+\ensuremath{%
+1.660\expandafter\physconst@decimalsseparator%
+465\expandafter\physconst@decimalsseparator%
+492\expandafter\physconst@decimalsseparator%
+239%
+\times 10^{-30}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassAMU}
+% |\k@cgs@short@MassAMU| is the mass of an atomic mass unit in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassAMU}{%
+\ensuremath{%
+1.66%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassAMU}
+% |\k@cgs@full@MassAMU| is the mass of an atomic mass unit in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassAMU}{%
+\ensuremath{%
+1.660\expandafter\physconst@decimalsseparator%
+465\expandafter\physconst@decimalsseparator%
+492\expandafter\physconst@decimalsseparator%
+239%
+\times 10^{-27}\gm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassAMU}
+% |\k@eV@short@MassAMU| is the mass of an atomic mass unit in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassAMU}{%
+\ensuremath{%
+1.04%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassAMU}
+% |\k@eV@full@MassAMU| is the mass of an atomic mass unit in eV with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassAMU}{%
+\ensuremath{%
+1.036\expandafter\physconst@decimalsseparator%
+381\expandafter\physconst@decimalsseparator%
+043\expandafter\physconst@decimalsseparator%
+764%
+\times 10^{-15}\eV\,c^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassAMU}
+% |\kMassAMU| is the mass of an atomic mass unit.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassAMU}{%
+\k@SI@short@MassAMU}
+\else
+\DeclareRobustCommand {\kMassAMU}{%
+\k@SI@full@MassAMU}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassAMU}{%
+\k@cgs@short@MassAMU}
+\else
+\DeclareRobustCommand {\kMassAMU}{%
+\k@cgs@full@MassAMU}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassAMU}
+% |\keVMassAMU| is the mass of an atomic mass unit.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassAMU}{%
+\k@eV@short@MassAMU}
+\else
+\DeclareRobustCommand {\keVMassAMU}{%
+\k@eV@full@MassAMU}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Charge}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@ChargeFundamental}
+% |\k@SI@short@ChargeFundamental| is the fundamental charge in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeFundamental}{%
+\ensuremath{%
+1.60%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeFundamental}
+% |\k@SI@full@ChargeFundamental| is the fundamental charge in SI units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeFundamental}{%
+\ensuremath{%
+1.602\expandafter\physconst@decimalsseparator%
+176\expandafter\physconst@decimalsseparator%
+634%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeFundamental}
+% |\k@cgs@short@ChargeFundamental| is the fundamental charge in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeFundamental}{%
+\ensuremath{%
+4.80%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeFundamental}
+% |\k@cgs@full@ChargeFundamental| is the fundamental charge in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeFundamental}{%
+\ensuremath{%
+4.803\expandafter\physconst@decimalsseparator%
+204\expandafter\physconst@decimalsseparator%
+713%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeFundamental}
+% |\kChargeFundamental| is the fundamental charge.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeFundamental}{%
+\k@SI@short@ChargeFundamental}
+\else
+\DeclareRobustCommand {\kChargeFundamental}{%
+\k@SI@full@ChargeFundamental}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeFundamental}{%
+\k@cgs@short@ChargeFundamental}
+\else
+\DeclareRobustCommand {\kChargeFundamental}{%
+\k@cgs@full@ChargeFundamental}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@ChargeElectron}
+% |\k@SI@short@ChargeElectron| is the charge of an electron in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeElectron}{%
+\ensuremath{%
+-1.60%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeElectron}
+% |\k@SI@full@ChargeElectron| is the charge of an electron in SI units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeElectron}{%
+\ensuremath{%
+-1.602\expandafter\physconst@decimalsseparator%
+176\expandafter\physconst@decimalsseparator%
+634%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeElectron}
+% |\k@cgs@short@ChargeElectron| is the charge of an electron in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeElectron}{%
+\ensuremath{%
+-4.80%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeElectron}
+% |\k@cgs@full@ChargeElectron| is the charge of an electron in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeElectron}{%
+\ensuremath{%
+-4.803\expandafter\physconst@decimalsseparator%
+204\expandafter\physconst@decimalsseparator%
+713%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeElectron}
+% |\kChargeElectron| is the charge of an electron.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeElectron}{%
+\k@SI@short@ChargeElectron}
+\else
+\DeclareRobustCommand {\kChargeElectron}{%
+\k@SI@full@ChargeElectron}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeElectron}{%
+\k@cgs@short@ChargeElectron}
+\else
+\DeclareRobustCommand {\kChargeElectron}{%
+\k@cgs@full@ChargeElectron}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@ChargeProton}
+% |\k@SI@short@ChargeProton| is the charge of a proton in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeProton}{%
+\ensuremath{%
+1.60%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeProton}
+% |\k@SI@full@ChargeProton| is the charge of a proton in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeProton}{%
+\ensuremath{%
+1.602\expandafter\physconst@decimalsseparator%
+176\expandafter\physconst@decimalsseparator%
+634%
+\times 10^{-19}\Coulomb}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeProton}
+% |\k@cgs@short@ChargeProton| is the charge of a proton in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeProton}{%
+\ensuremath{%
+4.80%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeProton}
+% |\k@cgs@full@ChargeProton| is the charge of a proton in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeProton}{%
+\ensuremath{%
+4.803\expandafter\physconst@decimalsseparator%
+204\expandafter\physconst@decimalsseparator%
+713%
+\times 10^{-10}\esu}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeProton}
+% |\kChargeProton| is the charge of a proton.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeProton}{%
+\k@SI@short@ChargeProton}
+\else
+\DeclareRobustCommand {\kChargeProton}{%
+\k@SI@full@ChargeProton}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeProton}{%
+\k@cgs@short@ChargeProton}
+\else
+\DeclareRobustCommand {\kChargeProton}{%
+\k@cgs@full@ChargeProton}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Distances and Lengths}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@RadiusBohr}
+% |\k@SI@short@RadiusBohr| is Bohr radius of an atom in SI units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@RadiusBohr}{%
+\ensuremath{%
+5.29%
+\times 10^{-8}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RadiusBohr}
+% |\k@SI@full@RadiusBohr| is Bohr radius of an atom in SI units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@RadiusBohr}{%
+\ensuremath{%
+5.292\expandafter\physconst@decimalsseparator%
+006\expandafter\physconst@decimalsseparator%
+59%
+\times 10^{-8}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RadiusBohr}
+% |\k@cgs@short@RadiusBohr| is Bohr radius of an atom in cgs units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@RadiusBohr}{%
+\ensuremath{%
+5.29%
+\times 10^{-6}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RadiusBohr}
+% |\k@cgs@full@RadiusBohr| is Bohr radius of an atom in cgs units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@RadiusBohr}{%
+\ensuremath{%
+5.292\expandafter\physconst@decimalsseparator%
+006\expandafter\physconst@decimalsseparator%
+59%
+\times 10^{-6}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusBohr}
+% |\kRadiusBohr| is Bohr radius of an atom.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusBohr}{%
+\k@SI@short@RadiusBohr}
+\else
+\DeclareRobustCommand {\kRadiusBohr}{%
+\k@SI@full@RadiusBohr}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusBohr}{%
+\k@cgs@short@RadiusBohr}
+\else
+\DeclareRobustCommand {\kRadiusBohr}{%
+\k@cgs@full@RadiusBohr}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@AstronomicalUnit}
+% |\k@SI@short@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in SI units with reduced precision.
+% Source: IAU~Resolution~B2~2012
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@AstronomicalUnit}{%
+\ensuremath{%
+1.50%
+\times 10^{11}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@AstronomicalUnit}
+% |\k@SI@full@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in SI units with full precision.
+% Source: IAU~Resolution~B2~2012
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@AstronomicalUnit}{%
+\ensuremath{%
+1.495\expandafter\physconst@decimalsseparator%
+978\expandafter\physconst@decimalsseparator%
+707%
+\times 10^{11}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@AstronomicalUnit}
+% |\k@cgs@short@AstronomicalUnit| is the astronomical unit (the average
+% distance between the Earth and the Sun) in cgs units with reduced precision.
+% Source: IAU~Resolution~B2~2012
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@AstronomicalUnit}{%
+\ensuremath{%
+1.50%
+\times 10^{13}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@AstronomicalUnit}
+% |\k@cgs@full@AstronomicalUnit| is the astronomical unit (the average distance
+% between the Earth and the Sun) in cgs units with full precision.
+% Source: IAU~Resolution~B2~2012
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@AstronomicalUnit}{%
+\ensuremath{%
+1.495\expandafter\physconst@decimalsseparator%
+978\expandafter\physconst@decimalsseparator%
+707%
+\times 10^{13}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAstronomicalUnit}
+% |\kAstronomicalUnit| is the astronomical unit (the average distance between
+% the Earth and the Sun).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAstronomicalUnit}{%
+\k@SI@short@AstronomicalUnit}
+\else
+\DeclareRobustCommand {\kAstronomicalUnit}{%
+\k@SI@full@AstronomicalUnit}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAstronomicalUnit}{%
+\k@cgs@short@AstronomicalUnit}
+\else
+\DeclareRobustCommand {\kAstronomicalUnit}{%
+\k@cgs@full@AstronomicalUnit}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Parsec}
+% |\k@SI@short@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Parsec}{%
+\ensuremath{%
+3.09%
+\times 10^{16}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Parsec}
+% |\k@SI@full@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in SI
+% units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Parsec}{%
+\ensuremath{%
+3.085\expandafter\physconst@decimalsseparator%
+677\expandafter\physconst@decimalsseparator%
+581%
+\times 10^{16}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Parsec}
+% |\k@cgs@short@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Parsec}{%
+\ensuremath{%
+3.09%
+\times 10^{18}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Parsec}
+% |\k@cgs@full@Parsec| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Parsec}{%
+\ensuremath{%
+3.085\expandafter\physconst@decimalsseparator%
+677\expandafter\physconst@decimalsseparator%
+581%
+\times 10^{18}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kParsec}
+% |\kParsec| is the length of a parsec ($\frac{648000\au}{\pi}$).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kParsec}{%
+\k@SI@short@Parsec}
+\else
+\DeclareRobustCommand {\kParsec}{%
+\k@SI@full@Parsec}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kParsec}{%
+\k@cgs@short@Parsec}
+\else
+\DeclareRobustCommand {\kParsec}{%
+\k@cgs@full@Parsec}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@RadiusSun}
+% |\k@SI@short@RadiusSun| is the mean radius of the Sun in SI units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@RadiusSun}{%
+\ensuremath{%
+6.96%
+\times 10^{8}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RadiusSun}
+% |\k@SI@full@RadiusSun| is the mean radius of the Sun in SI units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@RadiusSun}{%
+\ensuremath{%
+6.957%
+\times 10^{8}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RadiusSun}
+% |\k@cgs@short@RadiusSun| is the mean radius of the Sun in cgs units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@RadiusSun}{%
+\ensuremath{%
+6.96%
+\times 10^{10}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RadiusSun}
+% |\k@cgs@full@RadiusSun| is the mean radius of the Sun in cgs units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@RadiusSun}{%
+\ensuremath{%
+6.957%
+\times 10^{10}\cm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusSun}
+% |\kRadiusSun| is the mean radius of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusSun}{%
+\k@SI@short@RadiusSun}
+\else
+\DeclareRobustCommand {\kRadiusSun}{%
+\k@SI@full@RadiusSun}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusSun}{%
+\k@cgs@short@RadiusSun}
+\else
+\DeclareRobustCommand {\kRadiusSun}{%
+\k@cgs@full@RadiusSun}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Energy, Power, and Luminosity}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Rydberg}
+% |\k@SI@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Rydberg}{%
+\ensuremath{%
+2.18%
+\times 10^{-21}\Joule}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Rydberg}
+% |\k@SI@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Rydberg}{%
+\ensuremath{%
+2.179\expandafter\physconst@decimalsseparator%
+775\expandafter\physconst@decimalsseparator%
+77%
+\times 10^{-21}\Joule}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Rydberg}
+% |\k@cgs@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Rydberg}{%
+\ensuremath{%
+2.18%
+\times 10^{-14}\erg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Rydberg}
+% |\k@cgs@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Rydberg}{%
+\ensuremath{%
+2.179\expandafter\physconst@decimalsseparator%
+775\expandafter\physconst@decimalsseparator%
+77%
+\times 10^{-14}\erg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@Rydberg}
+% |\k@eV@short@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@Rydberg}{%
+\ensuremath{%
+1.36%
+\times 10^{-2}\eV}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@Rydberg}
+% |\k@eV@full@Rydberg| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@Rydberg}{%
+\ensuremath{%
+1.360\expandafter\physconst@decimalsseparator%
+509\expandafter\physconst@decimalsseparator%
+03%
+\times 10^{-2}\eV}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRydberg}
+% |\kRydberg| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRydberg}{%
+\k@SI@short@Rydberg}
+\else
+\DeclareRobustCommand {\kRydberg}{%
+\k@SI@full@Rydberg}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRydberg}{%
+\k@cgs@short@Rydberg}
+\else
+\DeclareRobustCommand {\kRydberg}{%
+\k@cgs@full@Rydberg}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVRydberg}
+% |\keVRydberg| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVRydberg}{%
+\k@eV@short@Rydberg}
+\else
+\DeclareRobustCommand {\keVRydberg}{%
+\k@eV@full@Rydberg}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@LuminositySun}
+% |\k@SI@short@LuminositySun| is the luminosity of the Sun in SI units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@LuminositySun}{%
+\ensuremath{%
+3.83%
+\times 10^{26}\Watt}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@LuminositySun}
+% |\k@SI@full@LuminositySun| is the luminosity of the Sun in SI units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@LuminositySun}{%
+\ensuremath{%
+3.828%
+\times 10^{26}\Watt}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@LuminositySun}
+% |\k@cgs@short@LuminositySun| is the luminosity of the Sun in cgs units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@LuminositySun}{%
+\ensuremath{%
+3.83%
+\times 10^{33}\erg\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@LuminositySun}
+% |\k@cgs@full@LuminositySun| is the luminosity of the Sun in cgs units with
+% full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@LuminositySun}{%
+\ensuremath{%
+3.828%
+\times 10^{33}\erg\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kLuminositySun}
+% |\kLuminositySun| is the luminosity of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kLuminositySun}{%
+\k@SI@short@LuminositySun}
+\else
+\DeclareRobustCommand {\kLuminositySun}{%
+\k@SI@full@LuminositySun}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kLuminositySun}{%
+\k@cgs@short@LuminositySun}
+\else
+\DeclareRobustCommand {\kLuminositySun}{%
+\k@cgs@full@LuminositySun}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Pressure}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@PressureAtmosphere}
+% |\k@SI@short@PressureAtmosphere| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PressureAtmosphere}{%
+\ensuremath{%
+1.01%
+\times 10^{5}\Pa}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PressureAtmosphere}
+% |\k@SI@full@PressureAtmosphere| is the standard atmospheric pressure in SI
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PressureAtmosphere}{%
+\ensuremath{%
+1.013\expandafter\physconst@decimalsseparator%
+25%
+\times 10^{5}\Pa}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PressureAtmosphere}
+% |\k@cgs@short@PressureAtmosphere| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PressureAtmosphere}{%
+\ensuremath{%
+1.01\barP[m]}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PressureAtmosphere}
+% |\k@cgs@full@PressureAtmosphere| is the standard atmospheric pressure in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PressureAtmosphere}{%
+\ensuremath{%
+1.013\expandafter\physconst@decimalsseparator%
+25\barP[m]}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPressureAtmosphere}
+% |\kPressureAtmosphere| is the standard atmospheric pressure.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureAtmosphere}{%
+\k@SI@short@PressureAtmosphere}
+\else
+\DeclareRobustCommand {\kPressureAtmosphere}{%
+\k@SI@full@PressureAtmosphere}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureAtmosphere}{%
+\k@cgs@short@PressureAtmosphere}
+\else
+\DeclareRobustCommand {\kPressureAtmosphere}{%
+\k@cgs@full@PressureAtmosphere}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@PressureStandard}
+% |\k@SI@short@PressureStandard| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PressureStandard}{%
+\ensuremath{%
+1.00%
+\times 10^{5}\Pa}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PressureStandard}
+% |\k@SI@full@PressureStandard| is the standard atmospheric pressure in SI
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PressureStandard}{%
+\ensuremath{%
+1.000\expandafter\physconst@decimalsseparator%
+00%
+\times 10^{5}\Pa}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PressureStandard}
+% |\k@cgs@short@PressureStandard| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PressureStandard}{%
+\ensuremath{%
+1.00\barP[m]}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PressureStandard}
+% |\k@cgs@full@PressureStandard| is the standard atmospheric pressure in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PressureStandard}{%
+\ensuremath{%
+1.000\expandafter\physconst@decimalsseparator%
+00\barP[m]}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPressureStandard}
+% |\kPressureStandard| is the standard atmospheric pressure.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureStandard}{%
+\k@SI@short@PressureStandard}
+\else
+\DeclareRobustCommand {\kPressureStandard}{%
+\k@SI@full@PressureStandard}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureStandard}{%
+\k@cgs@short@PressureStandard}
+\else
+\DeclareRobustCommand {\kPressureStandard}{%
+\k@cgs@full@PressureStandard}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Velocity, Speed and Acceleration}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@SpeedLight}
+% |\k@SI@short@SpeedLight| is the speed of light in SI units with reduced
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@SpeedLight}{%
+\ensuremath{%
+3.00%
+\times 10^{8}\m\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@SpeedLight}
+% |\k@SI@full@SpeedLight| is the speed of light in SI units with full precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@SpeedLight}{%
+\ensuremath{%
+2.997\expandafter\physconst@decimalsseparator%
+924\expandafter\physconst@decimalsseparator%
+58%
+\times 10^{8}\m\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@SpeedLight}
+% |\k@cgs@short@SpeedLight| is the speed of light in cgs units with reduced
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@SpeedLight}{%
+\ensuremath{%
+3.00%
+\times 10^{10}\cm\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@SpeedLight}
+% |\k@cgs@full@SpeedLight| is the speed of light in cgs units with full
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@SpeedLight}{%
+\ensuremath{%
+2.997\expandafter\physconst@decimalsseparator%
+924\expandafter\physconst@decimalsseparator%
+58%
+\times 10^{10}\cm\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kSpeedLight}
+% |\kSpeedLight| is the speed of light.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kSpeedLight}{%
+\k@SI@short@SpeedLight}
+\else
+\DeclareRobustCommand {\kSpeedLight}{%
+\k@SI@full@SpeedLight}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kSpeedLight}{%
+\k@cgs@short@SpeedLight}
+\else
+\DeclareRobustCommand {\kSpeedLight}{%
+\k@cgs@full@SpeedLight}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@AccelGravity}
+% |\k@SI@short@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in SI units with reduced precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@AccelGravity}{%
+\ensuremath{%
+6.67%
+\times 10^{-11}\N\kg^{-2}\m^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@AccelGravity}
+% |\k@SI@full@AccelGravity| is the accelertion due to gravity at the surface of
+% the Earth in SI units with full precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@AccelGravity}{%
+\ensuremath{%
+6.674\expandafter\physconst@decimalsseparator%
+30%
+\times 10^{-11}\N\kg^{-2}\m^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@AccelGravity}
+% |\k@cgs@short@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in cgs units with reduced precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@AccelGravity}{%
+\ensuremath{%
+6.67%
+\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@AccelGravity}
+% |\k@cgs@full@AccelGravity| is the accelertion due to gravity at the surface
+% of the Earth in cgs units with full precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@AccelGravity}{%
+\ensuremath{%
+6.674\expandafter\physconst@decimalsseparator%
+30%
+\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAccelGravity}
+% |\kAccelGravity| is the accelertion due to gravity at the surface of the
+% Earth.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAccelGravity}{%
+\k@SI@short@AccelGravity}
+\else
+\DeclareRobustCommand {\kAccelGravity}{%
+\k@SI@full@AccelGravity}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAccelGravity}{%
+\k@cgs@short@AccelGravity}
+\else
+\DeclareRobustCommand {\kAccelGravity}{%
+\k@cgs@full@AccelGravity}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%
+%\subsection{Other Constants}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Coulomb}
+% |\k@SI@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Coulomb}{%
+\ensuremath{%
+8.99%
+\times 10^{13}\N\m^2\Coulomb^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Coulomb}
+% |\k@SI@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Coulomb}{%
+\ensuremath{%
+8.987\expandafter\physconst@decimalsseparator%
+551\expandafter\physconst@decimalsseparator%
+79%
+\times 10^{13}\N\m^2\Coulomb^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Coulomb}
+% |\k@cgs@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$)
+% in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Coulomb}{%
+\ensuremath{%
+1.00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Coulomb}
+% |\k@cgs@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Coulomb}{%
+\ensuremath{%
+1.000\expandafter\physconst@decimalsseparator%
+000\expandafter\physconst@decimalsseparator%
+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kCoulomb}
+% |\kCoulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kCoulomb}{%
+\k@SI@short@Coulomb}
+\else
+\DeclareRobustCommand {\kCoulomb}{%
+\k@SI@full@Coulomb}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kCoulomb}{%
+\k@cgs@short@Coulomb}
+\else
+\DeclareRobustCommand {\kCoulomb}{%
+\k@cgs@full@Coulomb}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@VacuumPermittivity}
+% |\k@SI@short@VacuumPermittivity| is the electric permittivity of the vacuum
+% in SI units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@VacuumPermittivity}{%
+\ensuremath{%
+8.85%
+\times 10^{-12}\Farad\m^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@VacuumPermittivity}
+% |\k@SI@full@VacuumPermittivity| is the electric permittivity of the vacuum in
+% SI units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@VacuumPermittivity}{%
+\ensuremath{%
+8.854\expandafter\physconst@decimalsseparator%
+187\expandafter\physconst@decimalsseparator%
+812\expandafter\physconst@decimalsseparator%
+8%
+\times 10^{-12}\Farad\m^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@VacuumPermittivity}
+% |\k@cgs@short@VacuumPermittivity| is the electric permittivity of the vacuum
+% in cgs units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@VacuumPermittivity}{%
+\ensuremath{%
+7.96%
+\times 10^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@VacuumPermittivity}
+% |\k@cgs@full@VacuumPermittivity| is the electric permittivity of the vacuum
+% in cgs units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@VacuumPermittivity}{%
+\ensuremath{%
+7.957\expandafter\physconst@decimalsseparator%
+747\expandafter\physconst@decimalsseparator%
+154\expandafter\physconst@decimalsseparator%
+6%
+\times 10^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumPermittivity}
+% |\kVacuumPermittivity| is the electric permittivity of the vacuum.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermittivity}{%
+\k@SI@short@VacuumPermittivity}
+\else
+\DeclareRobustCommand {\kVacuumPermittivity}{%
+\k@SI@full@VacuumPermittivity}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermittivity}{%
+\k@cgs@short@VacuumPermittivity}
+\else
+\DeclareRobustCommand {\kVacuumPermittivity}{%
+\k@cgs@full@VacuumPermittivity}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@VacuumPermeability}
+% |\k@SI@short@VacuumPermeability| is the magnetic permeability of the vacuum
+% in SI units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@VacuumPermeability}{%
+\ensuremath{%
+8.85%
+\times 10^{-12}\N\Amp^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@VacuumPermeability}
+% |\k@SI@full@VacuumPermeability| is the magnetic permeability of the vacuum in
+% SI units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@VacuumPermeability}{%
+\ensuremath{%
+8.854\expandafter\physconst@decimalsseparator%
+187\expandafter\physconst@decimalsseparator%
+812\expandafter\physconst@decimalsseparator%
+8%
+\times 10^{-12}\N\Amp^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@VacuumPermeability}
+% |\k@cgs@short@VacuumPermeability| is the magnetic permeability of the vacuum
+% in cgs units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@VacuumPermeability}{%
+\ensuremath{%
+1.26%
+\times 10^{1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@VacuumPermeability}
+% |\k@cgs@full@VacuumPermeability| is the magnetic permeability of the vacuum
+% in cgs units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@VacuumPermeability}{%
+\ensuremath{%
+1.256\expandafter\physconst@decimalsseparator%
+637\expandafter\physconst@decimalsseparator%
+061\expandafter\physconst@decimalsseparator%
+4%
+\times 10^{1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumPermeability}
+% |\kVacuumPermeability| is the magnetic permeability of the vacuum.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermeability}{%
+\k@SI@short@VacuumPermeability}
+\else
+\DeclareRobustCommand {\kVacuumPermeability}{%
+\k@SI@full@VacuumPermeability}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermeability}{%
+\k@cgs@short@VacuumPermeability}
+\else
+\DeclareRobustCommand {\kVacuumPermeability}{%
+\k@cgs@full@VacuumPermeability}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@VacuumImpedance}
+% |\k@short@VacuumImpedance| is the characteristic impedance of the vacuum with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@VacuumImpedance}{%
+\ensuremath{%
+3.77%
+\times 10^{2}\Ohm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@VacuumImpedance}
+% |\k@full@VacuumImpedance| is the characteristic impedance of the vacuum with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@VacuumImpedance}{%
+\ensuremath{%
+3.767\expandafter\physconst@decimalsseparator%
+303\expandafter\physconst@decimalsseparator%
+136\expandafter\physconst@decimalsseparator%
+68%
+\times 10^{2}\Ohm}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumImpedance}
+% |\kVacuumImpedance| is the characteristic impedance of the vacuum.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumImpedance}{%
+\k@short@VacuumImpedance}
+\else
+\DeclareRobustCommand {\kVacuumImpedance}{%
+\k@full@VacuumImpedance}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Boltzmann}
+% |\k@SI@short@Boltzmann| is the Boltzmann constant in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Boltzmann}{%
+\ensuremath{%
+1.38%
+\times 10^{-23}\J\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Boltzmann}
+% |\k@SI@full@Boltzmann| is the Boltzmann constant in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Boltzmann}{%
+\ensuremath{%
+1.380\expandafter\physconst@decimalsseparator%
+649%
+\times 10^{-23}\J\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Boltzmann}
+% |\k@cgs@short@Boltzmann| is the Boltzmann constant in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Boltzmann}{%
+\ensuremath{%
+1.38%
+\times 10^{-16}\erg\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Boltzmann}
+% |\k@cgs@full@Boltzmann| is the Boltzmann constant in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Boltzmann}{%
+\ensuremath{%
+1.380\expandafter\physconst@decimalsseparator%
+649%
+\times 10^{-16}\erg\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@Boltzmann}
+% |\k@eV@short@Boltzmann| is the Boltzmann constant in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@Boltzmann}{%
+\ensuremath{%
+8.62%
+\times 10^{-5}\eV\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@Boltzmann}
+% |\k@eV@full@Boltzmann| is the Boltzmann constant in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@Boltzmann}{%
+\ensuremath{%
+8.617\expandafter\physconst@decimalsseparator%
+333%
+\times 10^{-5}\eV\K^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kBoltzmann}
+% |\kBoltzmann| is the Boltzmann constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kBoltzmann}{%
+\k@SI@short@Boltzmann}
+\else
+\DeclareRobustCommand {\kBoltzmann}{%
+\k@SI@full@Boltzmann}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kBoltzmann}{%
+\k@cgs@short@Boltzmann}
+\else
+\DeclareRobustCommand {\kBoltzmann}{%
+\k@cgs@full@Boltzmann}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVBoltzmann}
+% |\keVBoltzmann| is the Boltzmann constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVBoltzmann}{%
+\k@eV@short@Boltzmann}
+\else
+\DeclareRobustCommand {\keVBoltzmann}{%
+\k@eV@full@Boltzmann}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Planck}
+% |\k@SI@short@Planck| is the Planck constant in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Planck}{%
+\ensuremath{%
+6.63%
+\times 10^{-34}\J\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Planck}
+% |\k@SI@full@Planck| is the Planck constant in SI units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Planck}{%
+\ensuremath{%
+6.626\expandafter\physconst@decimalsseparator%
+070\expandafter\physconst@decimalsseparator%
+15%
+\times 10^{-34}\J\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Planck}
+% |\k@cgs@short@Planck| is the Planck constant in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Planck}{%
+\ensuremath{%
+6.63%
+\times 10^{-27}\erg\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Planck}
+% |\k@cgs@full@Planck| is the Planck constant in cgs units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Planck}{%
+\ensuremath{%
+6.626\expandafter\physconst@decimalsseparator%
+070\expandafter\physconst@decimalsseparator%
+15%
+\times 10^{-27}\erg\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@Planck}
+% |\k@eV@short@Planck| is the Planck constant in eV with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@Planck}{%
+\ensuremath{%
+4.14%
+\times 10^{-15}\eV\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@Planck}
+% |\k@eV@full@Planck| is the Planck constant in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@Planck}{%
+\ensuremath{%
+4.135\expandafter\physconst@decimalsseparator%
+667\expandafter\physconst@decimalsseparator%
+70%
+\times 10^{-15}\eV\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPlanck}
+% |\kPlanck| is the Planck constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanck}{%
+\k@SI@short@Planck}
+\else
+\DeclareRobustCommand {\kPlanck}{%
+\k@SI@full@Planck}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanck}{%
+\k@cgs@short@Planck}
+\else
+\DeclareRobustCommand {\kPlanck}{%
+\k@cgs@full@Planck}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVPlanck}
+% |\keVPlanck| is the Planck constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVPlanck}{%
+\k@eV@short@Planck}
+\else
+\DeclareRobustCommand {\keVPlanck}{%
+\k@eV@full@Planck}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@PlanckReduced}
+% |\k@SI@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PlanckReduced}{%
+\ensuremath{%
+1.05%
+\times 10^{-34}\J\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PlanckReduced}
+% |\k@SI@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PlanckReduced}{%
+\ensuremath{%
+1.054\expandafter\physconst@decimalsseparator%
+571\expandafter\physconst@decimalsseparator%
+82%
+\times 10^{-34}\J\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PlanckReduced}
+% |\k@cgs@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PlanckReduced}{%
+\ensuremath{%
+1.05%
+\times 10^{-27}\erg\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PlanckReduced}
+% |\k@cgs@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PlanckReduced}{%
+\ensuremath{%
+1.054\expandafter\physconst@decimalsseparator%
+571\expandafter\physconst@decimalsseparator%
+82%
+\times 10^{-27}\erg\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@PlanckReduced}
+% |\k@eV@short@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@PlanckReduced}{%
+\ensuremath{%
+6.58%
+\times 10^{-16}\eV\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@PlanckReduced}
+% |\k@eV@full@PlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@PlanckReduced}{%
+\ensuremath{%
+6.582\expandafter\physconst@decimalsseparator%
+119\expandafter\physconst@decimalsseparator%
+57%
+\times 10^{-16}\eV\Sec}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPlanckReduced}
+% |\kPlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckReduced}{%
+\k@SI@short@PlanckReduced}
+\else
+\DeclareRobustCommand {\kPlanckReduced}{%
+\k@SI@full@PlanckReduced}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckReduced}{%
+\k@cgs@short@PlanckReduced}
+\else
+\DeclareRobustCommand {\kPlanckReduced}{%
+\k@cgs@full@PlanckReduced}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVPlanckReduced}
+% |\keVPlanckReduced| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVPlanckReduced}{%
+\k@eV@short@PlanckReduced}
+\else
+\DeclareRobustCommand {\keVPlanckReduced}{%
+\k@eV@full@PlanckReduced}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Gravity}
+% |\k@SI@short@Gravity| is Newton's gravitational constant in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Gravity}{%
+\ensuremath{%
+6.67%
+\times 10^{-15}\N\kg^{-2}\m^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Gravity}
+% |\k@SI@full@Gravity| is Newton's gravitational constant in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Gravity}{%
+\ensuremath{%
+6.674\expandafter\physconst@decimalsseparator%
+30%
+\times 10^{-15}\N\kg^{-2}\m^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Gravity}
+% |\k@cgs@short@Gravity| is Newton's gravitational constant in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Gravity}{%
+\ensuremath{%
+6.67%
+\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Gravity}
+% |\k@cgs@full@Gravity| is Newton's gravitational constant in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Gravity}{%
+\ensuremath{%
+6.674\expandafter\physconst@decimalsseparator%
+30%
+\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kGravity}
+% |\kGravity| is Newton's gravitational constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kGravity}{%
+\k@SI@short@Gravity}
+\else
+\DeclareRobustCommand {\kGravity}{%
+\k@SI@full@Gravity}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kGravity}{%
+\k@cgs@short@Gravity}
+\else
+\DeclareRobustCommand {\kGravity}{%
+\k@cgs@full@Gravity}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@StefanBoltzmann}
+% |\k@SI@short@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in SI units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@StefanBoltzmann}{%
+\ensuremath{%
+5.67%
+\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@StefanBoltzmann}
+% |\k@SI@full@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in SI units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@StefanBoltzmann}{%
+\ensuremath{%
+5.670\expandafter\physconst@decimalsseparator%
+374%
+\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@StefanBoltzmann}
+% |\k@cgs@short@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in cgs units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@StefanBoltzmann}{%
+\ensuremath{%
+5.67%
+\times 10^{-5}\erg\Kelvin^{-4}\cm^{-2}\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@StefanBoltzmann}
+% |\k@cgs@full@StefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$ in cgs units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@StefanBoltzmann}{%
+\ensuremath{%
+5.670\expandafter\physconst@decimalsseparator%
+374%
+\times 10^{-5}\erg\Kelvin^{-4}\cm^{-2}\Sec^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kStefanBoltzmann}
+% |\kStefanBoltzmann| is the Stefan-Boltzmann blackbody constant
+% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kStefanBoltzmann}{%
+\k@SI@short@StefanBoltzmann}
+\else
+\DeclareRobustCommand {\kStefanBoltzmann}{%
+\k@SI@full@StefanBoltzmann}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kStefanBoltzmann}{%
+\k@cgs@short@StefanBoltzmann}
+\else
+\DeclareRobustCommand {\kStefanBoltzmann}{%
+\k@cgs@full@StefanBoltzmann}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@Radiation}
+% |\k@SI@short@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in SI units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@Radiation}{%
+\ensuremath{%
+7.57%
+\times 10^{-16}\Joule\m^{-3}\Kelvin^{-4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@Radiation}
+% |\k@SI@full@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in SI units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@Radiation}{%
+\ensuremath{%
+7.565\expandafter\physconst@decimalsseparator%
+733%
+\times 10^{-16}\Joule\m^{-3}\Kelvin^{-4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@Radiation}
+% |\k@cgs@short@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in cgs units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@Radiation}{%
+\ensuremath{%
+7.57%
+\times 10^{-15}\erg\cm^{-3}\Kelvin^{-4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@Radiation}
+% |\k@cgs@full@Radiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$ in cgs units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@Radiation}{%
+\ensuremath{%
+7.565\expandafter\physconst@decimalsseparator%
+733%
+\times 10^{-15}\erg\cm^{-3}\Kelvin^{-4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiation}
+% |\kRadiation| is the radiation constant, $a
+% \left(\frac{8\pi^5k_\mathrm{B}^4}{15c^3h^3}\right)$.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiation}{%
+\k@SI@short@Radiation}
+\else
+\DeclareRobustCommand {\kRadiation}{%
+\k@SI@full@Radiation}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiation}{%
+\k@cgs@short@Radiation}
+\else
+\DeclareRobustCommand {\kRadiation}{%
+\k@cgs@full@Radiation}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@FineStructure}
+% |\k@short@FineStructure| is the fine structure constant with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@FineStructure}{%
+\ensuremath{%
+7.30%
+\times 10^{-3}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@FineStructure}
+% |\k@full@FineStructure| is the fine structure constant with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@FineStructure}{%
+\ensuremath{%
+7.297\expandafter\physconst@decimalsseparator%
+352\expandafter\physconst@decimalsseparator%
+57%
+\times 10^{-3}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kFineStructure}
+% |\kFineStructure| is the fine structure constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kFineStructure}{%
+\k@short@FineStructure}
+\else
+\DeclareRobustCommand {\kFineStructure}{%
+\k@full@FineStructure}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@FineStructureReciprocal}
+% |\k@short@FineStructureReciprocal| is the reciprocal of the fine structure
+% constant with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@FineStructureReciprocal}{%
+\ensuremath{%
+1.37%
+\times 10^{2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@FineStructureReciprocal}
+% |\k@full@FineStructureReciprocal| is the reciprocal of the fine structure
+% constant with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@FineStructureReciprocal}{%
+\ensuremath{%
+1.370\expandafter\physconst@decimalsseparator%
+359\expandafter\physconst@decimalsseparator%
+99%
+\times 10^{2}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kFineStructureReciprocal}
+% |\kFineStructureReciprocal| is the reciprocal of the fine structure constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kFineStructureReciprocal}{%
+\k@short@FineStructureReciprocal}
+\else
+\DeclareRobustCommand {\kFineStructureReciprocal}{%
+\k@full@FineStructureReciprocal}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@Avogadro}
+% |\k@short@Avogadro| is Avogadro's Number (the number of particles in a mole)
+% with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@Avogadro}{%
+\ensuremath{%
+6.02%
+\times 10^{23}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@Avogadro}
+% |\k@full@Avogadro| is Avogadro's Number (the number of particles in a mole)
+% with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@Avogadro}{%
+\ensuremath{%
+6.022\expandafter\physconst@decimalsseparator%
+407\expandafter\physconst@decimalsseparator%
+60%
+\times 10^{23}}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAvogadro}
+% |\kAvogadro| is Avogadro's Number (the number of particles in a mole).
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAvogadro}{%
+\k@short@Avogadro}
+\else
+\DeclareRobustCommand {\kAvogadro}{%
+\k@full@Avogadro}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+% \CheckSum{0}
+% \Finale
+\makeatother
diff --git a/macros/latex/contrib/physconst/physconst.ins b/macros/latex/contrib/physconst/physconst.ins
new file mode 100644
index 0000000000..a35d6f42eb
--- /dev/null
+++ b/macros/latex/contrib/physconst/physconst.ins
@@ -0,0 +1,56 @@
+%%
+%% Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+%% -----------------------------------------------------------
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/physconst}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2006/05/20 or later.
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{physconst.sty}{\from{physconst.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* physconst.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file physconst.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/physconst/physconst.pdf b/macros/latex/contrib/physconst/physconst.pdf
index b894900528..67867850bc 100644
--- a/macros/latex/contrib/physconst/physconst.pdf
+++ b/macros/latex/contrib/physconst/physconst.pdf
Binary files differ
diff --git a/macros/latex/contrib/physconst/physconst.sty b/macros/latex/contrib/physconst/physconst.sty
deleted file mode 100644
index 062d4927eb..0000000000
--- a/macros/latex/contrib/physconst/physconst.sty
+++ /dev/null
@@ -1,1235 +0,0 @@
-%%
-%% This is file `physconst.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% physconst.dtx (with options: `package')
-%%
-%% This is a generated file.
-%%
-%% Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
-%%
-%% This file may be distributed and/or modified under the conditions of
-%% the LaTeX Project Public License, either version 1.3c of this license
-%% or (at your option) any later version. The latest version of this
-%% license is in:
-%%
-%% http://www.latex-project.org/lppl.txt
-%%
-%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2006/05/20 or later.
-%%
-\NeedsTeXFormat{LaTeX2e}[1994/06/01]
- \ProvidesPackage{physconst}
- [2020/01/25 v1.0.1 physconst package]
-\RequirePackage{physunits}
-\DeclareOption{shortconst}{ \typeout{physconst: reduced precision}%
- \DeclareRobustCommand{\shortconst}{1} }
-\DeclareOption{cgs}{ \typeout{physconst: using cgs instead of SI}%
- \DeclareRobustCommand{\cgsunits}{1} }
-\DeclareOption{unseparatedecimals}{ \typeout{physconst:%
- long decimals are printed as x.xxxxxx instead of x.xxx~xxx}%
- \DeclareRobustCommand{\unseparatedecimals}{1} }
-\ProcessOptions\relax
-\makeatletter
-\ifx\unseparatedecimals\undefined
-\DeclareRobustCommand{\physconst@decimalsseparator}{\,}
-\else
-\DeclareRobustCommand{\physconst@decimalsseparator}{ }
-\fi
-\DeclareRobustCommand{\k@SI@short@MassElectron}{%
-\ensuremath{%
-9.11%
-\times 10^{-34}\kg}}
-\DeclareRobustCommand{\k@SI@full@MassElectron}{%
-\ensuremath{%
-9.108\expandafter\physconst@decimalsseparator%
-980\expandafter\physconst@decimalsseparator%
-087\expandafter\physconst@decimalsseparator%
-382%
-\times 10^{-34}\kg}}
-\DeclareRobustCommand{\k@cgs@short@MassElectron}{%
-\ensuremath{%
-9.11%
-\times 10^{-31}\gm}}
-\DeclareRobustCommand{\k@cgs@full@MassElectron}{%
-\ensuremath{%
-9.108\expandafter\physconst@decimalsseparator%
-980\expandafter\physconst@decimalsseparator%
-087\expandafter\physconst@decimalsseparator%
-382%
-\times 10^{-31}\gm}}
-\DeclareRobustCommand{\k@eV@short@MassElectron}{%
-\ensuremath{%
-5.69%
-\times 10^{-19}\eV\,c^{-2}}}
-\DeclareRobustCommand{\k@eV@full@MassElectron}{%
-\ensuremath{%
-5.685\expandafter\physconst@decimalsseparator%
-378\expandafter\physconst@decimalsseparator%
-187\expandafter\physconst@decimalsseparator%
-448%
-\times 10^{-19}\eV\,c^{-2}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassElectron}{%
-\k@SI@short@MassElectron}
-\else
-\DeclareRobustCommand {\kMassElectron}{%
-\k@SI@full@MassElectron}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassElectron}{%
-\k@cgs@short@MassElectron}
-\else
-\DeclareRobustCommand {\kMassElectron}{%
-\k@cgs@full@MassElectron}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVMassElectron}{%
-\k@eV@short@MassElectron}
-\else
-\DeclareRobustCommand {\keVMassElectron}{%
-\k@eV@full@MassElectron}
-\fi
-\DeclareRobustCommand{\k@SI@short@MassProton}{%
-\ensuremath{%
-1.67%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@SI@full@MassProton}{%
-\ensuremath{%
-1.672\expandafter\physconst@decimalsseparator%
-547\expandafter\physconst@decimalsseparator%
-813\expandafter\physconst@decimalsseparator%
-969%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@cgs@short@MassProton}{%
-\ensuremath{%
-1.67%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@cgs@full@MassProton}{%
-\ensuremath{%
-1.672\expandafter\physconst@decimalsseparator%
-547\expandafter\physconst@decimalsseparator%
-813\expandafter\physconst@decimalsseparator%
-969%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@eV@short@MassProton}{%
-\ensuremath{%
-1.04%
-\times 10^{-15}\eV\,c^{-2}}}
-\DeclareRobustCommand{\k@eV@full@MassProton}{%
-\ensuremath{%
-1.043\expandafter\physconst@decimalsseparator%
-922\expandafter\physconst@decimalsseparator%
-235\expandafter\physconst@decimalsseparator%
-836%
-\times 10^{-15}\eV\,c^{-2}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassProton}{%
-\k@SI@short@MassProton}
-\else
-\DeclareRobustCommand {\kMassProton}{%
-\k@SI@full@MassProton}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassProton}{%
-\k@cgs@short@MassProton}
-\else
-\DeclareRobustCommand {\kMassProton}{%
-\k@cgs@full@MassProton}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVMassProton}{%
-\k@eV@short@MassProton}
-\else
-\DeclareRobustCommand {\keVMassProton}{%
-\k@eV@full@MassProton}
-\fi
-\DeclareRobustCommand{\k@SI@short@MassHydrogen}{%
-\ensuremath{%
-1.67%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@SI@full@MassHydrogen}{%
-\ensuremath{%
-1.673\expandafter\physconst@decimalsseparator%
-458\expandafter\physconst@decimalsseparator%
-687\expandafter\physconst@decimalsseparator%
-724%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@cgs@short@MassHydrogen}{%
-\ensuremath{%
-1.67%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@cgs@full@MassHydrogen}{%
-\ensuremath{%
-1.673\expandafter\physconst@decimalsseparator%
-458\expandafter\physconst@decimalsseparator%
-687\expandafter\physconst@decimalsseparator%
-724%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@eV@short@MassHydrogen}{%
-\ensuremath{%
-1.04%
-\times 10^{-15}\eV\,c^{-2}}}
-\DeclareRobustCommand{\k@eV@full@MassHydrogen}{%
-\ensuremath{%
-1.044\expandafter\physconst@decimalsseparator%
-490\expandafter\physconst@decimalsseparator%
-758\expandafter\physconst@decimalsseparator%
-517%
-\times 10^{-15}\eV\,c^{-2}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassHydrogen}{%
-\k@SI@short@MassHydrogen}
-\else
-\DeclareRobustCommand {\kMassHydrogen}{%
-\k@SI@full@MassHydrogen}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassHydrogen}{%
-\k@cgs@short@MassHydrogen}
-\else
-\DeclareRobustCommand {\kMassHydrogen}{%
-\k@cgs@full@MassHydrogen}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVMassHydrogen}{%
-\k@eV@short@MassHydrogen}
-\else
-\DeclareRobustCommand {\keVMassHydrogen}{%
-\k@eV@full@MassHydrogen}
-\fi
-\DeclareRobustCommand{\k@SI@short@MassSun}{%
-\ensuremath{%
-1.99%
-\times 10^{30}\kg}}
-\DeclareRobustCommand{\k@SI@full@MassSun}{%
-\ensuremath{%
-1.988\expandafter\physconst@decimalsseparator%
-409\expandafter\physconst@decimalsseparator%
-9%
-\times 10^{30}\kg}}
-\DeclareRobustCommand{\k@cgs@short@MassSun}{%
-\ensuremath{%
-1.99%
-\times 10^{33}\gm}}
-\DeclareRobustCommand{\k@cgs@full@MassSun}{%
-\ensuremath{%
-1.988\expandafter\physconst@decimalsseparator%
-409\expandafter\physconst@decimalsseparator%
-9%
-\times 10^{33}\gm}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassSun}{%
-\k@SI@short@MassSun}
-\else
-\DeclareRobustCommand {\kMassSun}{%
-\k@SI@full@MassSun}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassSun}{%
-\k@cgs@short@MassSun}
-\else
-\DeclareRobustCommand {\kMassSun}{%
-\k@cgs@full@MassSun}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@MassAMU}{%
-\ensuremath{%
-1.66%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@SI@full@MassAMU}{%
-\ensuremath{%
-1.660\expandafter\physconst@decimalsseparator%
-465\expandafter\physconst@decimalsseparator%
-492\expandafter\physconst@decimalsseparator%
-239%
-\times 10^{-30}\kg}}
-\DeclareRobustCommand{\k@cgs@short@MassAMU}{%
-\ensuremath{%
-1.66%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@cgs@full@MassAMU}{%
-\ensuremath{%
-1.660\expandafter\physconst@decimalsseparator%
-465\expandafter\physconst@decimalsseparator%
-492\expandafter\physconst@decimalsseparator%
-239%
-\times 10^{-27}\gm}}
-\DeclareRobustCommand{\k@eV@short@MassAMU}{%
-\ensuremath{%
-1.04%
-\times 10^{-15}\eV\,c^{-2}}}
-\DeclareRobustCommand{\k@eV@full@MassAMU}{%
-\ensuremath{%
-1.036\expandafter\physconst@decimalsseparator%
-381\expandafter\physconst@decimalsseparator%
-043\expandafter\physconst@decimalsseparator%
-764%
-\times 10^{-15}\eV\,c^{-2}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassAMU}{%
-\k@SI@short@MassAMU}
-\else
-\DeclareRobustCommand {\kMassAMU}{%
-\k@SI@full@MassAMU}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kMassAMU}{%
-\k@cgs@short@MassAMU}
-\else
-\DeclareRobustCommand {\kMassAMU}{%
-\k@cgs@full@MassAMU}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVMassAMU}{%
-\k@eV@short@MassAMU}
-\else
-\DeclareRobustCommand {\keVMassAMU}{%
-\k@eV@full@MassAMU}
-\fi
-\DeclareRobustCommand{\k@SI@short@ChargeFundamental}{%
-\ensuremath{%
-1.60%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@SI@full@ChargeFundamental}{%
-\ensuremath{%
-1.602\expandafter\physconst@decimalsseparator%
-176\expandafter\physconst@decimalsseparator%
-634%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@cgs@short@ChargeFundamental}{%
-\ensuremath{%
-4.80%
-\times 10^{-10}\esu}}
-\DeclareRobustCommand{\k@cgs@full@ChargeFundamental}{%
-\ensuremath{%
-4.803\expandafter\physconst@decimalsseparator%
-204\expandafter\physconst@decimalsseparator%
-713%
-\times 10^{-10}\esu}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeFundamental}{%
-\k@SI@short@ChargeFundamental}
-\else
-\DeclareRobustCommand {\kChargeFundamental}{%
-\k@SI@full@ChargeFundamental}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeFundamental}{%
-\k@cgs@short@ChargeFundamental}
-\else
-\DeclareRobustCommand {\kChargeFundamental}{%
-\k@cgs@full@ChargeFundamental}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@ChargeElectron}{%
-\ensuremath{%
--1.60%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@SI@full@ChargeElectron}{%
-\ensuremath{%
--1.602\expandafter\physconst@decimalsseparator%
-176\expandafter\physconst@decimalsseparator%
-634%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@cgs@short@ChargeElectron}{%
-\ensuremath{%
--4.80%
-\times 10^{-10}\esu}}
-\DeclareRobustCommand{\k@cgs@full@ChargeElectron}{%
-\ensuremath{%
--4.803\expandafter\physconst@decimalsseparator%
-204\expandafter\physconst@decimalsseparator%
-713%
-\times 10^{-10}\esu}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeElectron}{%
-\k@SI@short@ChargeElectron}
-\else
-\DeclareRobustCommand {\kChargeElectron}{%
-\k@SI@full@ChargeElectron}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeElectron}{%
-\k@cgs@short@ChargeElectron}
-\else
-\DeclareRobustCommand {\kChargeElectron}{%
-\k@cgs@full@ChargeElectron}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@ChargeProton}{%
-\ensuremath{%
-1.60%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@SI@full@ChargeProton}{%
-\ensuremath{%
-1.602\expandafter\physconst@decimalsseparator%
-176\expandafter\physconst@decimalsseparator%
-634%
-\times 10^{-19}\Coulomb}}
-\DeclareRobustCommand{\k@cgs@short@ChargeProton}{%
-\ensuremath{%
-4.80%
-\times 10^{-10}\esu}}
-\DeclareRobustCommand{\k@cgs@full@ChargeProton}{%
-\ensuremath{%
-4.803\expandafter\physconst@decimalsseparator%
-204\expandafter\physconst@decimalsseparator%
-713%
-\times 10^{-10}\esu}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeProton}{%
-\k@SI@short@ChargeProton}
-\else
-\DeclareRobustCommand {\kChargeProton}{%
-\k@SI@full@ChargeProton}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kChargeProton}{%
-\k@cgs@short@ChargeProton}
-\else
-\DeclareRobustCommand {\kChargeProton}{%
-\k@cgs@full@ChargeProton}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@RadiusBohr}{%
-\ensuremath{%
-5.29%
-\times 10^{-8}\m}}
-\DeclareRobustCommand{\k@SI@full@RadiusBohr}{%
-\ensuremath{%
-5.292\expandafter\physconst@decimalsseparator%
-006\expandafter\physconst@decimalsseparator%
-59%
-\times 10^{-8}\m}}
-\DeclareRobustCommand{\k@cgs@short@RadiusBohr}{%
-\ensuremath{%
-5.29%
-\times 10^{-6}\cm}}
-\DeclareRobustCommand{\k@cgs@full@RadiusBohr}{%
-\ensuremath{%
-5.292\expandafter\physconst@decimalsseparator%
-006\expandafter\physconst@decimalsseparator%
-59%
-\times 10^{-6}\cm}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiusBohr}{%
-\k@SI@short@RadiusBohr}
-\else
-\DeclareRobustCommand {\kRadiusBohr}{%
-\k@SI@full@RadiusBohr}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiusBohr}{%
-\k@cgs@short@RadiusBohr}
-\else
-\DeclareRobustCommand {\kRadiusBohr}{%
-\k@cgs@full@RadiusBohr}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@AstronomicalUnit}{%
-\ensuremath{%
-1.50%
-\times 10^{11}\m}}
-\DeclareRobustCommand{\k@SI@full@AstronomicalUnit}{%
-\ensuremath{%
-1.495\expandafter\physconst@decimalsseparator%
-978\expandafter\physconst@decimalsseparator%
-707%
-\times 10^{11}\m}}
-\DeclareRobustCommand{\k@cgs@short@AstronomicalUnit}{%
-\ensuremath{%
-1.50%
-\times 10^{13}\cm}}
-\DeclareRobustCommand{\k@cgs@full@AstronomicalUnit}{%
-\ensuremath{%
-1.495\expandafter\physconst@decimalsseparator%
-978\expandafter\physconst@decimalsseparator%
-707%
-\times 10^{13}\cm}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@SI@short@AstronomicalUnit}
-\else
-\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@SI@full@AstronomicalUnit}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@cgs@short@AstronomicalUnit}
-\else
-\DeclareRobustCommand {\kAstronomicalUnit}{%
-\k@cgs@full@AstronomicalUnit}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@Parsec}{%
-\ensuremath{%
-3.09%
-\times 10^{16}\m}}
-\DeclareRobustCommand{\k@SI@full@Parsec}{%
-\ensuremath{%
-3.085\expandafter\physconst@decimalsseparator%
-677\expandafter\physconst@decimalsseparator%
-581%
-\times 10^{16}\m}}
-\DeclareRobustCommand{\k@cgs@short@Parsec}{%
-\ensuremath{%
-3.09%
-\times 10^{18}\cm}}
-\DeclareRobustCommand{\k@cgs@full@Parsec}{%
-\ensuremath{%
-3.085\expandafter\physconst@decimalsseparator%
-677\expandafter\physconst@decimalsseparator%
-581%
-\times 10^{18}\cm}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kParsec}{%
-\k@SI@short@Parsec}
-\else
-\DeclareRobustCommand {\kParsec}{%
-\k@SI@full@Parsec}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kParsec}{%
-\k@cgs@short@Parsec}
-\else
-\DeclareRobustCommand {\kParsec}{%
-\k@cgs@full@Parsec}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@RadiusSun}{%
-\ensuremath{%
-6.96%
-\times 10^{8}\m}}
-\DeclareRobustCommand{\k@SI@full@RadiusSun}{%
-\ensuremath{%
-6.957%
-\times 10^{8}\m}}
-\DeclareRobustCommand{\k@cgs@short@RadiusSun}{%
-\ensuremath{%
-6.96%
-\times 10^{10}\cm}}
-\DeclareRobustCommand{\k@cgs@full@RadiusSun}{%
-\ensuremath{%
-6.957%
-\times 10^{10}\cm}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiusSun}{%
-\k@SI@short@RadiusSun}
-\else
-\DeclareRobustCommand {\kRadiusSun}{%
-\k@SI@full@RadiusSun}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiusSun}{%
-\k@cgs@short@RadiusSun}
-\else
-\DeclareRobustCommand {\kRadiusSun}{%
-\k@cgs@full@RadiusSun}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@Rydberg}{%
-\ensuremath{%
-2.18%
-\times 10^{-21}\Joule}}
-\DeclareRobustCommand{\k@SI@full@Rydberg}{%
-\ensuremath{%
-2.179\expandafter\physconst@decimalsseparator%
-775\expandafter\physconst@decimalsseparator%
-77%
-\times 10^{-21}\Joule}}
-\DeclareRobustCommand{\k@cgs@short@Rydberg}{%
-\ensuremath{%
-2.18%
-\times 10^{-14}\erg}}
-\DeclareRobustCommand{\k@cgs@full@Rydberg}{%
-\ensuremath{%
-2.179\expandafter\physconst@decimalsseparator%
-775\expandafter\physconst@decimalsseparator%
-77%
-\times 10^{-14}\erg}}
-\DeclareRobustCommand{\k@eV@short@Rydberg}{%
-\ensuremath{%
-1.36%
-\times 10^{-2}\eV}}
-\DeclareRobustCommand{\k@eV@full@Rydberg}{%
-\ensuremath{%
-1.360\expandafter\physconst@decimalsseparator%
-509\expandafter\physconst@decimalsseparator%
-03%
-\times 10^{-2}\eV}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRydberg}{%
-\k@SI@short@Rydberg}
-\else
-\DeclareRobustCommand {\kRydberg}{%
-\k@SI@full@Rydberg}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRydberg}{%
-\k@cgs@short@Rydberg}
-\else
-\DeclareRobustCommand {\kRydberg}{%
-\k@cgs@full@Rydberg}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVRydberg}{%
-\k@eV@short@Rydberg}
-\else
-\DeclareRobustCommand {\keVRydberg}{%
-\k@eV@full@Rydberg}
-\fi
-\DeclareRobustCommand{\k@SI@short@LuminositySun}{%
-\ensuremath{%
-3.83%
-\times 10^{26}\Watt}}
-\DeclareRobustCommand{\k@SI@full@LuminositySun}{%
-\ensuremath{%
-3.828%
-\times 10^{26}\Watt}}
-\DeclareRobustCommand{\k@cgs@short@LuminositySun}{%
-\ensuremath{%
-3.83%
-\times 10^{33}\erg\Sec^{-1}}}
-\DeclareRobustCommand{\k@cgs@full@LuminositySun}{%
-\ensuremath{%
-3.828%
-\times 10^{33}\erg\Sec^{-1}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kLuminositySun}{%
-\k@SI@short@LuminositySun}
-\else
-\DeclareRobustCommand {\kLuminositySun}{%
-\k@SI@full@LuminositySun}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kLuminositySun}{%
-\k@cgs@short@LuminositySun}
-\else
-\DeclareRobustCommand {\kLuminositySun}{%
-\k@cgs@full@LuminositySun}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@PressureAtmosphere}{%
-\ensuremath{%
-1.01%
-\times 10^{5}\Pa}}
-\DeclareRobustCommand{\k@SI@full@PressureAtmosphere}{%
-\ensuremath{%
-1.013\expandafter\physconst@decimalsseparator%
-25%
-\times 10^{5}\Pa}}
-\DeclareRobustCommand{\k@cgs@short@PressureAtmosphere}{%
-\ensuremath{%
-1.01\barP[m]}}
-\DeclareRobustCommand{\k@cgs@full@PressureAtmosphere}{%
-\ensuremath{%
-1.013\expandafter\physconst@decimalsseparator%
-25\barP[m]}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@SI@short@PressureAtmosphere}
-\else
-\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@SI@full@PressureAtmosphere}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@cgs@short@PressureAtmosphere}
-\else
-\DeclareRobustCommand {\kPressureAtmosphere}{%
-\k@cgs@full@PressureAtmosphere}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@PressureStandard}{%
-\ensuremath{%
-1.00%
-\times 10^{5}\Pa}}
-\DeclareRobustCommand{\k@SI@full@PressureStandard}{%
-\ensuremath{%
-1.000\expandafter\physconst@decimalsseparator%
-00%
-\times 10^{5}\Pa}}
-\DeclareRobustCommand{\k@cgs@short@PressureStandard}{%
-\ensuremath{%
-1.00\barP[m]}}
-\DeclareRobustCommand{\k@cgs@full@PressureStandard}{%
-\ensuremath{%
-1.000\expandafter\physconst@decimalsseparator%
-00\barP[m]}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPressureStandard}{%
-\k@SI@short@PressureStandard}
-\else
-\DeclareRobustCommand {\kPressureStandard}{%
-\k@SI@full@PressureStandard}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPressureStandard}{%
-\k@cgs@short@PressureStandard}
-\else
-\DeclareRobustCommand {\kPressureStandard}{%
-\k@cgs@full@PressureStandard}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@SpeedLight}{%
-\ensuremath{%
-3.00%
-\times 10^{8}\m\Sec^{-1}}}
-\DeclareRobustCommand{\k@SI@full@SpeedLight}{%
-\ensuremath{%
-2.997\expandafter\physconst@decimalsseparator%
-924\expandafter\physconst@decimalsseparator%
-58%
-\times 10^{8}\m\Sec^{-1}}}
-\DeclareRobustCommand{\k@cgs@short@SpeedLight}{%
-\ensuremath{%
-3.00%
-\times 10^{10}\cm\Sec^{-1}}}
-\DeclareRobustCommand{\k@cgs@full@SpeedLight}{%
-\ensuremath{%
-2.997\expandafter\physconst@decimalsseparator%
-924\expandafter\physconst@decimalsseparator%
-58%
-\times 10^{10}\cm\Sec^{-1}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kSpeedLight}{%
-\k@SI@short@SpeedLight}
-\else
-\DeclareRobustCommand {\kSpeedLight}{%
-\k@SI@full@SpeedLight}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kSpeedLight}{%
-\k@cgs@short@SpeedLight}
-\else
-\DeclareRobustCommand {\kSpeedLight}{%
-\k@cgs@full@SpeedLight}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@AccelGravity}{%
-\ensuremath{%
-6.67%
-\times 10^{-11}\N\kg^{-2}\m^2}}
-\DeclareRobustCommand{\k@SI@full@AccelGravity}{%
-\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-11}\N\kg^{-2}\m^2}}
-\DeclareRobustCommand{\k@cgs@short@AccelGravity}{%
-\ensuremath{%
-6.67%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
-\DeclareRobustCommand{\k@cgs@full@AccelGravity}{%
-\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kAccelGravity}{%
-\k@SI@short@AccelGravity}
-\else
-\DeclareRobustCommand {\kAccelGravity}{%
-\k@SI@full@AccelGravity}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kAccelGravity}{%
-\k@cgs@short@AccelGravity}
-\else
-\DeclareRobustCommand {\kAccelGravity}{%
-\k@cgs@full@AccelGravity}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@Coulomb}{%
-\ensuremath{%
-8.99%
-\times 10^{13}\N\m^2\Coulomb^{-2}}}
-\DeclareRobustCommand{\k@SI@full@Coulomb}{%
-\ensuremath{%
-8.987\expandafter\physconst@decimalsseparator%
-551\expandafter\physconst@decimalsseparator%
-79%
-\times 10^{13}\N\m^2\Coulomb^{-2}}}
-\DeclareRobustCommand{\k@cgs@short@Coulomb}{%
-\ensuremath{%
-1.00}}
-\DeclareRobustCommand{\k@cgs@full@Coulomb}{%
-\ensuremath{%
-1.000\expandafter\physconst@decimalsseparator%
-000\expandafter\physconst@decimalsseparator%
-00}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kCoulomb}{%
-\k@SI@short@Coulomb}
-\else
-\DeclareRobustCommand {\kCoulomb}{%
-\k@SI@full@Coulomb}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kCoulomb}{%
-\k@cgs@short@Coulomb}
-\else
-\DeclareRobustCommand {\kCoulomb}{%
-\k@cgs@full@Coulomb}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@VacuumPermittivity}{%
-\ensuremath{%
-8.85%
-\times 10^{-12}\Farad\m^{-1}}}
-\DeclareRobustCommand{\k@SI@full@VacuumPermittivity}{%
-\ensuremath{%
-8.854\expandafter\physconst@decimalsseparator%
-187\expandafter\physconst@decimalsseparator%
-812\expandafter\physconst@decimalsseparator%
-8%
-\times 10^{-12}\Farad\m^{-1}}}
-\DeclareRobustCommand{\k@cgs@short@VacuumPermittivity}{%
-\ensuremath{%
-7.96%
-\times 10^{-2}}}
-\DeclareRobustCommand{\k@cgs@full@VacuumPermittivity}{%
-\ensuremath{%
-7.957\expandafter\physconst@decimalsseparator%
-747\expandafter\physconst@decimalsseparator%
-154\expandafter\physconst@decimalsseparator%
-6%
-\times 10^{-2}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@SI@short@VacuumPermittivity}
-\else
-\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@SI@full@VacuumPermittivity}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@cgs@short@VacuumPermittivity}
-\else
-\DeclareRobustCommand {\kVacuumPermittivity}{%
-\k@cgs@full@VacuumPermittivity}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@VacuumPermeability}{%
-\ensuremath{%
-8.85%
-\times 10^{-12}\N\Amp^{-2}}}
-\DeclareRobustCommand{\k@SI@full@VacuumPermeability}{%
-\ensuremath{%
-8.854\expandafter\physconst@decimalsseparator%
-187\expandafter\physconst@decimalsseparator%
-812\expandafter\physconst@decimalsseparator%
-8%
-\times 10^{-12}\N\Amp^{-2}}}
-\DeclareRobustCommand{\k@cgs@short@VacuumPermeability}{%
-\ensuremath{%
-1.26%
-\times 10^{1}}}
-\DeclareRobustCommand{\k@cgs@full@VacuumPermeability}{%
-\ensuremath{%
-1.256\expandafter\physconst@decimalsseparator%
-637\expandafter\physconst@decimalsseparator%
-061\expandafter\physconst@decimalsseparator%
-4%
-\times 10^{1}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@SI@short@VacuumPermeability}
-\else
-\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@SI@full@VacuumPermeability}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@cgs@short@VacuumPermeability}
-\else
-\DeclareRobustCommand {\kVacuumPermeability}{%
-\k@cgs@full@VacuumPermeability}
-\fi
-\fi
-\DeclareRobustCommand{\k@short@VacuumImpedance}{%
-\ensuremath{%
-3.77%
-\times 10^{2}\Ohm}}
-\DeclareRobustCommand{\k@full@VacuumImpedance}{%
-\ensuremath{%
-3.767\expandafter\physconst@decimalsseparator%
-303\expandafter\physconst@decimalsseparator%
-136\expandafter\physconst@decimalsseparator%
-68%
-\times 10^{2}\Ohm}}
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kVacuumImpedance}{%
-\k@short@VacuumImpedance}
-\else
-\DeclareRobustCommand {\kVacuumImpedance}{%
-\k@full@VacuumImpedance}
-\fi
-\DeclareRobustCommand{\k@SI@short@Boltzmann}{%
-\ensuremath{%
-1.38%
-\times 10^{-23}\J\K^{-1}}}
-\DeclareRobustCommand{\k@SI@full@Boltzmann}{%
-\ensuremath{%
-1.380\expandafter\physconst@decimalsseparator%
-649%
-\times 10^{-23}\J\K^{-1}}}
-\DeclareRobustCommand{\k@cgs@short@Boltzmann}{%
-\ensuremath{%
-1.38%
-\times 10^{-16}\erg\K^{-1}}}
-\DeclareRobustCommand{\k@cgs@full@Boltzmann}{%
-\ensuremath{%
-1.380\expandafter\physconst@decimalsseparator%
-649%
-\times 10^{-16}\erg\K^{-1}}}
-\DeclareRobustCommand{\k@eV@short@Boltzmann}{%
-\ensuremath{%
-8.62%
-\times 10^{-5}\eV\K^{-1}}}
-\DeclareRobustCommand{\k@eV@full@Boltzmann}{%
-\ensuremath{%
-8.617\expandafter\physconst@decimalsseparator%
-333%
-\times 10^{-5}\eV\K^{-1}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kBoltzmann}{%
-\k@SI@short@Boltzmann}
-\else
-\DeclareRobustCommand {\kBoltzmann}{%
-\k@SI@full@Boltzmann}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kBoltzmann}{%
-\k@cgs@short@Boltzmann}
-\else
-\DeclareRobustCommand {\kBoltzmann}{%
-\k@cgs@full@Boltzmann}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVBoltzmann}{%
-\k@eV@short@Boltzmann}
-\else
-\DeclareRobustCommand {\keVBoltzmann}{%
-\k@eV@full@Boltzmann}
-\fi
-\DeclareRobustCommand{\k@SI@short@Planck}{%
-\ensuremath{%
-6.63%
-\times 10^{-34}\J\Sec}}
-\DeclareRobustCommand{\k@SI@full@Planck}{%
-\ensuremath{%
-6.626\expandafter\physconst@decimalsseparator%
-070\expandafter\physconst@decimalsseparator%
-15%
-\times 10^{-34}\J\Sec}}
-\DeclareRobustCommand{\k@cgs@short@Planck}{%
-\ensuremath{%
-6.63%
-\times 10^{-27}\erg\Sec}}
-\DeclareRobustCommand{\k@cgs@full@Planck}{%
-\ensuremath{%
-6.626\expandafter\physconst@decimalsseparator%
-070\expandafter\physconst@decimalsseparator%
-15%
-\times 10^{-27}\erg\Sec}}
-\DeclareRobustCommand{\k@eV@short@Planck}{%
-\ensuremath{%
-4.14%
-\times 10^{-15}\eV\Sec}}
-\DeclareRobustCommand{\k@eV@full@Planck}{%
-\ensuremath{%
-4.135\expandafter\physconst@decimalsseparator%
-667\expandafter\physconst@decimalsseparator%
-70%
-\times 10^{-15}\eV\Sec}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPlanck}{%
-\k@SI@short@Planck}
-\else
-\DeclareRobustCommand {\kPlanck}{%
-\k@SI@full@Planck}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPlanck}{%
-\k@cgs@short@Planck}
-\else
-\DeclareRobustCommand {\kPlanck}{%
-\k@cgs@full@Planck}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVPlanck}{%
-\k@eV@short@Planck}
-\else
-\DeclareRobustCommand {\keVPlanck}{%
-\k@eV@full@Planck}
-\fi
-\DeclareRobustCommand{\k@SI@short@PlanckReduced}{%
-\ensuremath{%
-1.05%
-\times 10^{-34}\J\Sec}}
-\DeclareRobustCommand{\k@SI@full@PlanckReduced}{%
-\ensuremath{%
-1.054\expandafter\physconst@decimalsseparator%
-571\expandafter\physconst@decimalsseparator%
-82%
-\times 10^{-34}\J\Sec}}
-\DeclareRobustCommand{\k@cgs@short@PlanckReduced}{%
-\ensuremath{%
-1.05%
-\times 10^{-27}\erg\Sec}}
-\DeclareRobustCommand{\k@cgs@full@PlanckReduced}{%
-\ensuremath{%
-1.054\expandafter\physconst@decimalsseparator%
-571\expandafter\physconst@decimalsseparator%
-82%
-\times 10^{-27}\erg\Sec}}
-\DeclareRobustCommand{\k@eV@short@PlanckReduced}{%
-\ensuremath{%
-6.58%
-\times 10^{-16}\eV\Sec}}
-\DeclareRobustCommand{\k@eV@full@PlanckReduced}{%
-\ensuremath{%
-6.582\expandafter\physconst@decimalsseparator%
-119\expandafter\physconst@decimalsseparator%
-57%
-\times 10^{-16}\eV\Sec}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPlanckReduced}{%
-\k@SI@short@PlanckReduced}
-\else
-\DeclareRobustCommand {\kPlanckReduced}{%
-\k@SI@full@PlanckReduced}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kPlanckReduced}{%
-\k@cgs@short@PlanckReduced}
-\else
-\DeclareRobustCommand {\kPlanckReduced}{%
-\k@cgs@full@PlanckReduced}
-\fi
-\fi
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\keVPlanckReduced}{%
-\k@eV@short@PlanckReduced}
-\else
-\DeclareRobustCommand {\keVPlanckReduced}{%
-\k@eV@full@PlanckReduced}
-\fi
-\DeclareRobustCommand{\k@SI@short@Gravity}{%
-\ensuremath{%
-6.67%
-\times 10^{-15}\N\kg^{-2}\m^2}}
-\DeclareRobustCommand{\k@SI@full@Gravity}{%
-\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-15}\N\kg^{-2}\m^2}}
-\DeclareRobustCommand{\k@cgs@short@Gravity}{%
-\ensuremath{%
-6.67%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
-\DeclareRobustCommand{\k@cgs@full@Gravity}{%
-\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kGravity}{%
-\k@SI@short@Gravity}
-\else
-\DeclareRobustCommand {\kGravity}{%
-\k@SI@full@Gravity}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kGravity}{%
-\k@cgs@short@Gravity}
-\else
-\DeclareRobustCommand {\kGravity}{%
-\k@cgs@full@Gravity}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@StefanBoltzmann}{%
-\ensuremath{%
-5.67%
-\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
-\DeclareRobustCommand{\k@SI@full@StefanBoltzmann}{%
-\ensuremath{%
-5.670\expandafter\physconst@decimalsseparator%
-374%
-\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
-\DeclareRobustCommand{\k@cgs@short@StefanBoltzmann}{%
-\ensuremath{%
-5.67%
-\times 10^{-5}\erg\Kelvin^{-4}\cm^{-2}\Sec^{-1}}}
-\DeclareRobustCommand{\k@cgs@full@StefanBoltzmann}{%
-\ensuremath{%
-5.670\expandafter\physconst@decimalsseparator%
-374%
-\times 10^{-5}\erg\Kelvin^{-4}\cm^{-2}\Sec^{-1}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@SI@short@StefanBoltzmann}
-\else
-\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@SI@full@StefanBoltzmann}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@cgs@short@StefanBoltzmann}
-\else
-\DeclareRobustCommand {\kStefanBoltzmann}{%
-\k@cgs@full@StefanBoltzmann}
-\fi
-\fi
-\DeclareRobustCommand{\k@SI@short@Radiation}{%
-\ensuremath{%
-7.57%
-\times 10^{-16}\Joule\m^{-3}\Kelvin^{-4}}}
-\DeclareRobustCommand{\k@SI@full@Radiation}{%
-\ensuremath{%
-7.565\expandafter\physconst@decimalsseparator%
-733%
-\times 10^{-16}\Joule\m^{-3}\Kelvin^{-4}}}
-\DeclareRobustCommand{\k@cgs@short@Radiation}{%
-\ensuremath{%
-7.57%
-\times 10^{-15}\erg\cm^{-3}\Kelvin^{-4}}}
-\DeclareRobustCommand{\k@cgs@full@Radiation}{%
-\ensuremath{%
-7.565\expandafter\physconst@decimalsseparator%
-733%
-\times 10^{-15}\erg\cm^{-3}\Kelvin^{-4}}}
-\ifx\cgsunits\undefined
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiation}{%
-\k@SI@short@Radiation}
-\else
-\DeclareRobustCommand {\kRadiation}{%
-\k@SI@full@Radiation}
-\fi
-\else
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kRadiation}{%
-\k@cgs@short@Radiation}
-\else
-\DeclareRobustCommand {\kRadiation}{%
-\k@cgs@full@Radiation}
-\fi
-\fi
-\DeclareRobustCommand{\k@short@FineStructure}{%
-\ensuremath{%
-7.30%
-\times 10^{-3}}}
-\DeclareRobustCommand{\k@full@FineStructure}{%
-\ensuremath{%
-7.297\expandafter\physconst@decimalsseparator%
-352\expandafter\physconst@decimalsseparator%
-57%
-\times 10^{-3}}}
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kFineStructure}{%
-\k@short@FineStructure}
-\else
-\DeclareRobustCommand {\kFineStructure}{%
-\k@full@FineStructure}
-\fi
-\DeclareRobustCommand{\k@short@FineStructureReciprocal}{%
-\ensuremath{%
-1.37%
-\times 10^{2}}}
-\DeclareRobustCommand{\k@full@FineStructureReciprocal}{%
-\ensuremath{%
-1.370\expandafter\physconst@decimalsseparator%
-359\expandafter\physconst@decimalsseparator%
-99%
-\times 10^{2}}}
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kFineStructureReciprocal}{%
-\k@short@FineStructureReciprocal}
-\else
-\DeclareRobustCommand {\kFineStructureReciprocal}{%
-\k@full@FineStructureReciprocal}
-\fi
-\DeclareRobustCommand{\k@short@Avogadro}{%
-\ensuremath{%
-6.02%
-\times 10^{23}}}
-\DeclareRobustCommand{\k@full@Avogadro}{%
-\ensuremath{%
-6.022\expandafter\physconst@decimalsseparator%
-407\expandafter\physconst@decimalsseparator%
-60%
-\times 10^{23}}}
-\ifx\shortconst\undefined
-\DeclareRobustCommand {\kAvogadro}{%
-\k@short@Avogadro}
-\else
-\DeclareRobustCommand {\kAvogadro}{%
-\k@full@Avogadro}
-\fi
-\makeatother
-\endinput
-%%
-%% End of file `physconst.sty'.
diff --git a/macros/latex/contrib/physunits/CHANGELOG.md b/macros/latex/contrib/physunits/CHANGELOG.md
new file mode 100644
index 0000000000..5ccb30dc10
--- /dev/null
+++ b/macros/latex/contrib/physunits/CHANGELOG.md
@@ -0,0 +1,39 @@
+# Changes
+## [1.0.0] - 2020/01/22
+- Initial version
+## [1.0.1] - 2020/01/25
+### Added
+- A changelog
+- A readme
+- Code for changelog into physconst.cpp
+- `make dist` to create distributable tarball and zip
+- line in .ins to force generation of the .sty
+- nicer index entries (and some associated code in .cpp to generate them)
+- added localuninstall and distuninstall targets to the makefile
+### Changed
+- Modified the makefile to split up generation of the .sty, and .pdf
+- Added a newline in the middle of the title declaration (in .cpp)
+- Added a newline in the middle of the \DoNotIndex declaration (in .cpp)
+- fixed makefile install options to correctly find TEXMF path
+## [1.0.2] - 2020/01/25
+### Changed
+- Switch compression of tarball to gzip to match requirement for CTAN
+## [1.0.3] - 2020/01/26
+### Added
+- uninstall instructions in README.md
+- installcheck in makefile
+- force makefile to be run serial
+### Changed
+- Switch tarball/zip to include .dtx instead of .sty per CTAN requirement
+- Clean up installation instructions in README.md
+- Made some changes in the makefile to take better advantage of make
+## [1.0.3a] - 2020/01/26
+### Added
+- Created a separate readme for the distribution
+- Created a separate makefile for the distribution
+### Changed
+- modify the makefile to include .ins in the package files
+- modify the makefile to include the new distrubution readme and makefile
+- give instructions on using makefile for distribution
+- Did a little more reformatting in the README.
+
diff --git a/macros/latex/contrib/physunits/README.md b/macros/latex/contrib/physunits/README.md
new file mode 100644
index 0000000000..ce400e3487
--- /dev/null
+++ b/macros/latex/contrib/physunits/README.md
@@ -0,0 +1,81 @@
+# physunits
+A LaTeX package that includes macros for SI, cgs, and some imperial units.
+
+# License
+Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+-----------------------------------------------------------
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2006/05/20 or later.
+
+# Dependencies
+None.
+
+# Build Dependencies
+- some LaTeX distribution.
+- `hyperref` package for LaTeX
+
+# Files
+```
+ makefile GNU makefile to simplify building and installation on linux
+ README.md This file.
+ CHANGELOG.md List of changes
+ physunits.ins The installer file
+ physunits.dtx The package code and documentation
+ physunits.pdf The package user manual
+```
+
+# Building the Package
+## Linux / Mac using make and xelatex
+1. `make`
+
+## Otherwise
+1. Run `latex` on `physunits.ins` to create the `.sty` file. e.g. `latex physunits.ins`.
+1. The following steps apply only if you want the documentation (recommended).
+ 1. Run `latex` on `physunits.dtx` to create the `.pdf` file. e.g. `xelatex physunits.pdf`.
+ 1. Run `makeindex` to create the index, e.g. `makeindex -s gind.ist -o physunits.ind physunits.idx`.
+ 1. Run `makeindex` to create the change log, e.g. `makeindex -s gglo.ist -o physunits.gls physunits.glo`.
+ 1. Run `latex` on `physunits.dtx` to create the `.pdf` file with index and change log. e.g. `xelatex physunits.pdf`.
+ 1. Run `latex` on `physunits.dtx` to get the labels sorted out. e.g. `xelatex physunits.pdf`.
+
+Instructions that might help can be for windows can be found at [this post on StackExchange](https://tex.stackexchange.com/questions/369921/loading-packages-with-ins-and-dtx-files).
+
+# Installation
+First build the project as described above.
+
+## For a single project
+1. Copy the `physunits.sty` into your project where your `.tex` files are located.
+
+## for all users and projects
+### Linux / Mac using make and xelatex
+1. `make localinstall`
+
+### Otherwise
+Instructions that might help can be for windows can be found at [this post on StackExchange](https://tex.stackexchange.com/questions/369921/loading-packages-with-ins-and-dtx-files).
+1. Figure out where your LaTeX local packages are installed.
+1. Create a directory named `physunits` in that location.
+1. Copy the `.sty` file into the directory you just created.
+1. Figure out where your LaTeX local package documentation is installed.
+1. Create a directory named `physunits` in that location.
+1. Copy the `.pdf` file into the directory you just created.
+1. Run `texhash` or the equivalent to let LaTeX know the package is there.
+
+
+# Uninstallation
+
+### Linux / Mac using make
+1. `make localuninstall`
+### Otherwise
+1. Figure out where your LaTeX local packages are installed.
+1. Delete the directory named `physunits` in that location.
+1. Figure out where your LaTeX local package documentation is installed.
+1. Delete the directory named `physunits` in that location.
+1. Run `texhash` or the equivalent to let LaTeX know the package is gone.
+
diff --git a/macros/latex/contrib/physunits/makefile b/macros/latex/contrib/physunits/makefile
new file mode 100644
index 0000000000..ca48c701ec
--- /dev/null
+++ b/macros/latex/contrib/physunits/makefile
@@ -0,0 +1,122 @@
+pkgname=$(patsubst %.ins,%,$(wildcard *.ins))
+TEXMFLOCAL = $(shell kpsewhich -var-value TEXMFLOCAL)
+TEXMFDIST = $(shell kpsewhich -var-value TEXMFDIST)
+
+.PHONY: all clean localinstall localuninstall localinstallcheck distinstall distuninstall distinstallcheck installcheck
+
+all: $(pkgname).pdf
+
+.PRECIOUS: %.sty %.dtx %.pdf
+.DELETE_ON_ERROR:
+.NOTPARALLEL:
+
+%.sty: %.dtx %.ins
+ latex $(pkgname).ins
+
+%.pdf: %.sty
+ xelatex $(pkgname).dtx
+ makeindex -s gind.ist -o $(pkgname).ind $(pkgname).idx
+ makeindex -s gglo.ist -o $(pkgname).gls $(pkgname).glo
+ xelatex $(pkgname).dtx
+ xelatex $(pkgname).dtx
+
+clean:
+ -rm *.pdf
+ -rm *.log
+ -rm *.out
+ -rm *.aux
+ -rm *.bib
+ -rm *.snm
+ -rm *.toc
+ -rm *.nav
+ -rm *.idx
+ -rm *.sty
+ -rm *.gls
+ -rm *.ilg
+ -rm *.ind
+ -rm *.glo
+ -rm $(pkgname).zip
+ -rm $(pkgname).tar
+ -rm $(pkgname).tar.gz
+ -rm -r $(pkgname)
+ -rm -r tmptar
+ -rm -r tmpzip
+
+$(TEXMFLOCAL)/tex/latex/$(pkgname):
+ mkdir -p $(TEXMFLOCAL)/tex/latex/$(pkgname)
+
+$(TEXMFLOCAL)/doc/latex/$(pkgname):
+ mkdir -p $(TEXMFLOCAL)/doc/latex/$(pkgname)
+
+$(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ cp $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname)/.
+
+$(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)
+ cp $(pkgname).pdf $(TEXMFLOCAL)/doc/latex/$(pkgname)/.
+
+localinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFLOCAL)/tex/latex/$(pkgname) $(TEXMFLOCAL)/doc/latex/$(pkgname) $(TEXMFLOCAL)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFLOCAL)/doc/latex/$(pkgname)/$(pkgname).pdf
+ @echo Installing to $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ texhash
+ make localinstallcheck
+
+localuninstall:
+ @echo Removing from $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFLOCAL)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFLOCAL)/doc/latex/$(pkgname)
+ texhash
+
+
+$(TEXMFDIST)/tex/latex/$(pkgname):
+ mkdir -p $(TEXMFDIST)/tex/latex/$(pkgname)
+
+$(TEXMFDIST)/doc/latex/$(pkgname):
+ mkdir -p $(TEXMFDIST)/doc/latex/$(pkgname)
+
+$(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty: $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)
+ cp $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname)/.
+
+$(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf: $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)
+ cp $(pkgname).pdf $(TEXMFDIST)/doc/latex/$(pkgname)/.
+
+distinstall: $(pkgname).pdf $(pkgname).sty $(TEXMFDIST)/tex/latex/$(pkgname) $(TEXMFDIST)/doc/latex/$(pkgname) $(TEXMFDIST)/tex/latex/$(pkgname)/$(pkgname).sty $(TEXMFDIST)/doc/latex/$(pkgname)/$(pkgname).pdf
+ @echo Installing to $(TEXMFDIST)/tex/latex/$(pkgname)
+ texhash
+ make distinstallcheck
+
+distuninstall:
+ @echo Removing from $(TEXMFDIST)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFDIST)/tex/latex/$(pkgname)
+ -rm -r $(TEXMFDIST)/doc/latex/$(pkgname)
+ texhash
+
+#######################################################
+# checks - will be called recursively
+#######################################################
+
+localinstallcheck:
+ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed as local)
+endif
+
+distinstallcheck:
+ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed as dist)
+endif
+
+installcheck:
+ifeq (0,$(shell test -d $(TEXMFDIST)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as dist: $(TEXMFDIST)/tex/latex/$(pkgname)
+else
+ifeq (0,$(shell test -d $(TEXMFLOCAL)/tex/latex/$(pkgname); echo $$?))
+ @echo $(pkgname) installed as local: $(TEXMFLOCAL)/tex/latex/$(pkgname)
+else
+ $(error $(pkgname) is not installed)
+endif
+endif
+
+
+
diff --git a/macros/latex/contrib/physunits/physunits.dtx b/macros/latex/contrib/physunits/physunits.dtx
new file mode 100644
index 0000000000..103f97c0c8
--- /dev/null
+++ b/macros/latex/contrib/physunits/physunits.dtx
@@ -0,0 +1,1882 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+% -----------------------------------------------------------
+%
+% This file may be distributed and/or modified under the conditions of
+% the LaTeX Project Public License, either version 1.3c of this license
+% or (at your option) any later version. The latest version of this
+% license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2006/05/20 or later.
+%
+% \fi
+%
+% \iffalse
+%<*driver>
+\ProvidesFile{physunits.dtx}
+%</driver>
+%<package>\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+%<package> \ProvidesPackage{physunits}
+%<*package>
+ [2020/01/26 v1.0.3 Physical units package]
+%</package>
+%<package>\ProcessOptions\relax
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{physunits}
+\usepackage[backref]{hyperref}
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+%\OnlyDescription
+\begin{document}
+\DocInput{physunits.dtx}
+\PrintChanges
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{486}
+%
+% \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 \~}
+%
+% \changes{v1.0}{2020/01/23}{Initial version}
+% \changes{v1.0.1}{2020/01/25}{Clean up formatting, fix index}
+% \changes{v1.0.2}{2020/01/25}{External changes in makefile}
+% \changes{v1.0.3}{2020/01/26}{External changes in makefile}
+%
+% \GetFileInfo{physunits.dtx}
+% \DeclareRobustCommand{\fileversion}{v1.0}
+% \DeclareRobustCommand{\filedate}{2020/01/26}
+%
+% \DoNotIndex{\DeclareRobustCommand,\newenvironment,\DeclareRobustCommand,
+% \left,\right,\textbf,\mathrm,\ensuremath,\units@separator,\expandafter,\,}
+%
+% \title{The \textsf{physunits} package\thanks{This document corresponds to%
+% \textsf{physunits}~\fileversion, dated \filedate.}}
+% \author{Brian W. Mulligan \\ \texttt{bwmulligan@astronaos.com}}
+%
+% \maketitle
+% \setlength{\parindent}{0em}
+% \setlength{\parskip}{1em}
+%
+% \section{Introduction}
+%
+%
+% This package consists of several macros that are shorthand for a variety of
+% physical units that are commonly used in introductory level physics and
+% astronomy classes.
+%
+% \section{Naming Convention}
+%
+% most macros consist of just the commonly used letter or unit, e.g.
+% \textbackslash m for
+% meters. In cases where the simple form of the unit conflicts with an existing
+% \LaTeX~macro, then the full word is used, starting with a upper-case letter,
+% e.g. \textbackslash Coulomb.
+%
+% One notable exception to the above naming convention is the use of
+% \textbackslash gm for
+% grams, instead of \textbackslash g or \textbackslash Gram.
+%
+% \section{Base and Prefixes}
+%
+% Most units are in the base unit only, but some very commonly used prefixes
+% are available as part of the macro, e.g. \textbackslash kg for kilogram,
+% \textbackslash cm for centimeter.
+% For base units, each macro accepts one option that can be used to specify
+% the prefix, for example \textbackslash m[n] will result in nm. The macros
+% enforce math
+% mode, so \textbackslash m[\textbackslash micro] will result in
+% $\mathrm{\mu m}$.
+%
+%
+% \section{Macro Usage}
+%
+%
+% \subsection{Special Macros}
+%
+%
+% \DescribeMacro{\units@separator}
+% |\units@separator| is a special macro used to set the spacing between a
+% quantity and the associated units.
+%
+% \DescribeMacro{\micro}
+% |\micro| is a special macro that can be used for the prefix $\mathrm{\mu}$
+% (micro-). Internally it just uses \textbackslash mu.
+%
+% \subsection{Electricity \& Magnetism}
+% \index{Electricity \& Magnetism|usage(}
+%
+% \DescribeMacro{\V}
+% \index{Electricity \& Magnetism>Volts|usage}
+% |\V| is a macro for Volts (V).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Volt}
+% \index{Electricity \& Magnetism>Volts|usage}
+% |\Volt| is a macro for Volts (V).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Coulomb}
+% \index{Electricity \& Magnetism>Coulomb|usage}
+% |\Coulomb| is a macro for Coulombs (C).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\esu}
+% \index{Electricity \& Magnetism>esu|usage}
+% |\esu| is a macro for electrostatic units (esu), the units of charge in
+% Gaussian cgs.
+%
+% \DescribeMacro{\Ohm}
+% \index{Electricity \& Magnetism>Ohm|usage}
+% |\Ohm| is a macro for Ohms ($\Omega$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Amp}
+% \index{Electricity \& Magnetism>Amperes|usage}
+% |\Amp| is a macro for Amperes (A).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Farad}
+% \index{Electricity \& Magnetism>Farad|usage}
+% |\Farad| is a macro for Farads (F).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Tesla}
+% \index{Electricity \& Magnetism>Tesla|usage}
+% |\Tesla| is a macro for Teslas (T).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Gauss}
+% \index{Electricity \& Magnetism>Gauss|usage}
+% |\Gauss| is a macro for Gauss (G), the units for magnetic field strength in
+% Gaussian cgs.
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Henry}
+% \index{Electricity \& Magnetism>Henry|usage}
+% |\Henry| is a macro for Henrys (H).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+% \index{Electricity \& Magnetism|usage)}
+%
+% \subsection{Energy}
+% \index{Energy|usage(}
+%
+% \DescribeMacro{\eV}
+% \index{Energy>eV|usage}
+% |\eV| is a macro for electron Volts (eV).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\keV}
+% \index{Energy>eV|usage}
+% |\keV| is a macro for kilo-electron Volts (keV).
+%
+% \DescribeMacro{\MeV}
+% \index{Energy>eV|usage}
+% |\MeV| is a macro for mega-electron Volts (MeV).
+%
+% \DescribeMacro{\J}
+% \index{Energy>Joules|usage}
+% |\J| is a macro for Joules (J).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Joule}
+% \index{Energy>Joules|usage}
+% |\Joule| is a macro for Joules (J).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\erg}
+% \index{Energy>erg|usage}
+% |\erg| is a macro for ergs (erg), the unit of energy in cgs.
+%
+% \DescribeMacro{\kcal}
+% \index{Energy>kcal|usage}
+% \index{Energy>Calories|usage}
+% \index{Energy>calories|usage}
+% |\kcal| is a macro for kilo-calories (kcal).
+%
+% \DescribeMacro{\Cal}
+% \index{Energy>kcal|usage}
+% \index{Energy>Calories|usage}
+% \index{Energy>calories|usage}
+% |\Cal| is a macro for kilo=calories (Cal).
+%
+% \DescribeMacro{\calorie}
+% \index{Energy>kcal|usage}
+% \index{Energy>Calories|usage}
+% \index{Energy>calories|usage}
+% |\calorie| is a macro for calories (cal).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\BTU}
+% \index{Energy>BTU|usage}
+% |\BTU| is a macro for British Thermal Units (BTU).
+%
+% \DescribeMacro{\tnt}
+% \index{Energy>TNT|usage}
+% |\tnt| is a macro for tons of TNT.
+% \index{Energy|usage)}
+%
+% \subsection{Power}
+% \index{Power|usage(}
+%
+% \DescribeMacro{\Watt}
+% \index{Power>Watts|usage}
+% |\Watt| is a macro for Watts (W).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\hpi}
+% \index{Power>Horsepower|usage}
+% \index{Power>Horsepower>Imperial|usage}
+% |\hpi| is a macro for Imperial Horsepower (hp(I)).
+%
+% \DescribeMacro{\hpi}
+% \index{Power>Horsepower|usage}
+% \index{Power>Horsepower>Metric|usage}
+% |\hpi| is a macro for Metric Horsepower (hp(M)).
+%
+% \DescribeMacro{\hp}
+% \index{Power>Horsepower|usage}
+% |\hp| is a macro for Horsepower (hp).
+% \index{Power|usage)}
+%
+% \subsection{Distance}
+% \index{Distance|usage)}
+%
+% \DescribeMacro{\meter}
+% \index{Distance>Meter|usage}
+% |\meter| is a macro for meters (m).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\m}
+% \index{Distance>Meter|usage}
+% |\m| is a macro for meters (m).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\km}
+% \index{Distance>Meter>Kilometer|usage}
+% |\km| is a macro for kilometers (km).
+%
+% \DescribeMacro{\au}
+% \index{Distance>Astronomical Unit|usage}
+% |\au| is a macro for astronmical units (au).
+%
+% \DescribeMacro{\pc}
+% \index{Distance>Parsec|usage}
+% |\pc| is a macro for parsecs (pc).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\ly}
+% \index{Distance>Light Years|usage}
+% |\ly| is a macro for light-years (ly).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\cm}
+% \index{Distance>Meter>Centimeter|usage}
+% |\cm| is a macro for centimeters (cm).
+%
+% \DescribeMacro{\nm}
+% \index{Distance>Meter>Nanometer|usage}
+% |\nm| is a macro for nanometers (nm).
+%
+% \DescribeMacro{\ft}
+% \index{Distance>Imperial>Feet|usage}
+% |\ft| is a macro for feet (ft).
+%
+% \DescribeMacro{\inch}
+% \index{Distance>Imperial>Inch|usage}
+% |\inch| is a macro for inches (in).
+%
+% \DescribeMacro{\mi}
+% \index{Distance>Imperial>Mile|usage}
+% |\mi| is a macro for miles (mi).
+%
+% \index{Distance|usage)}
+%
+% \subsection{Time}
+% \index{Time|usage(}
+%
+% \DescribeMacro{\s}
+% \index{Time>Seconds|usage}
+% |\s| is a macro for seconds (s).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Sec}
+% \index{Time>Seconds|usage}
+% |\Sec| is a macro for seconds (s).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Min}
+% \index{Time>Minutes|usage}
+% |\Min| is a macro for minutes (m).
+%
+% \DescribeMacro{\h}
+% \index{Time>Hours|usage}
+% |\h| is a macro for hours (h).
+%
+% \DescribeMacro{\y}
+% \index{Time>Years|usage}
+% |\y| is a macro for years (y).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Day}
+% \index{Time>Days|usage}
+% |\Day| is a macro for days (d).
+%
+% \index{Time|usage)}
+%
+% \subsection{Mass}
+%
+% \index{Mass|usage(}
+%
+% \DescribeMacro{\gm}
+% \index{Mass>Grams|usage}
+% |\gm| is a macro for grams (g).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\kg}
+% \index{Mass>Gram>Kilograms|usage}
+% |\kg| is a macro for kilograms (kg).
+%
+% \DescribeMacro{\lb}
+% \index{Mass>Pounds|usage}
+% |\lb| is a macro for pounds (weight) (lb).
+%
+% \DescribeMacro{\amu}
+% \index{Mass>AMU|usage}
+% \index{Mass>Dalton|usage}
+% |\amu| is a macro for atomic mass units (amu).
+%
+% \index{Mass|usage)}
+%
+% \subsection{Force}
+%
+% \index{Force|usage(}
+%
+% \DescribeMacro{\N}
+% \index{Force>Newton|usage}
+% |\N| is a macro for Newtons (N).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Newton}
+% \index{Force>Newton|usage}
+% |\Newton| is a macro for Newtons (N).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\dyne}
+% \index{Force>Dyne|usage}
+% |\dyne| is a macro for dynes (dyn).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\lbf}
+% \index{Force>Pounds|usage}
+% |\lbf| is a macro for pounds of force (lbf).
+%
+% \index{Force|usage)}
+%
+% \subsection{Velocity}
+%
+% \index{Velocity|usage(}
+%
+% \DescribeMacro{\kmps}
+% \index{Velocity>Kilometers per Second|usage}
+% |\kmps| is a macro for kilometers per second ($\kmps$).
+%
+% \DescribeMacro{\kmph}
+% \index{Velocity>Kilometers per Hour|usage}
+% |\kmph| is a macro for kilometers per hour ($\kmph$).
+%
+% \DescribeMacro{\mps}
+% \index{Velocity>Meters per Second|usage}
+% |\mps| is a macro for meters per second ($\mps$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\miph}
+% \index{Velocity>Miles per Hour|usage}
+% |\miph| is a macro for miles per hour ($\miph$).
+%
+% \DescribeMacro{\kts}
+% \index{Velocity>Knots|usage}
+% \index{Velocity>Nautical Miles per Hour|usage}
+% |\kts| is a macro for knots ($\kts$)., i.e. nautical miles per hour
+%
+% \index{Velocity|usage)}
+%
+% \subsection{Acceleration}
+%
+% \index{Acceleration|usage(}
+%
+% \DescribeMacro{\mpss}
+% \index{Acceleration>Meters per Second squared|usage}
+% |\mpss| is a macro for acceleration in meters per second squared ($\mpss$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\gacc}
+% \index{Acceleration>Gravity|usage}
+% |\gacc| is a macro for acceleration due to gravity ($\gacc$).
+%
+% \DescribeMacro{\ftpss}
+% \index{Acceleration>Feet per Second squared|usage}
+% |\ftpss| is a macro for acceleration in feet per second squared ($\ftpss$).
+%
+% \index{Velocity|usage)}
+%
+%
+% \subsection{Temperature}
+%
+% \index{Temperature|usage(}
+%
+% \DescribeMacro{\K}
+% \index{Temperature>Kelvin|usage}
+% |\K| is a macro for Kelvin (K).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Kelvin}
+% \index{Temperature>Kelvin|usage}
+% |\Kelvin| is a macro for Kelvin (K).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Celcius}
+% \index{Temperature>Celcius|usage}
+% |\Celcius| is a macro for degrees Celcius $(\Celcius)$.
+%
+% \DescribeMacro{\Rankine}
+% \index{Temperature>Rankine|usage}
+% |\Rankine| is a macro for degrees Rankine $(\Rankine)$.
+%
+% \DescribeMacro{\Fahrenheit}
+% \index{Temperature>Fahrenheit|usage}
+% |\Fahrenheit| is a macro for degrees Fahrenheit $(\Fahrenheit)$.
+%
+% \index{Temperature|usage)}
+%
+% \subsection{Angular Velocity}
+%
+% \index{Angular Velocity|usage(}
+%
+% \DescribeMacro{\rpm}
+% \index{Angular Velocity>RPM|usage}
+% |\rpm| is a macro for revolutions per minute $(\rpm)$.
+%
+% \index{Angular Velocity|usage)}
+%
+% \subsection{Frequency}
+%
+% \index{Frequency|usage(}
+%
+% \DescribeMacro{\Hz}
+% \index{Frequency>Hertz|usage}
+% |\Hz| is a macro for Hertz (Hz).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \index{Frequency|usage)}
+%
+%
+% \subsection{Pressure}
+%
+% \index{Pressure|usage(}
+%
+% \DescribeMacro{\barP}
+% \index{Pressure>bar|usage}
+% |\barP| is a macro for bar (bar). (The use of barP instead of just bar is due
+% the \LaTeX~command \textbackslash bar.)
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\atm}
+% \index{Pressure>atmosphere|usage}
+% |\atm| is a macro for atmosphere (atm).
+%
+% \DescribeMacro{\Pa}
+% \index{Pressure>Pascal|usage}
+% |\Pa| is a macro for Pascals (Pa).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\mmHg}
+% \index{Pressure>mm Hg|usage}
+% |\mmHg| is a macro for millimeters of mercury (mmHg).
+%
+% \DescribeMacro{\inHg}
+% \index{Pressure>in Hg|usage}
+% |\inHg| is a macro for inches of mercury (inHg).
+%
+% \DescribeMacro{\lbsi}
+% \index{Pressure>psi|usage}
+% \index{Pressure>Pound per square inch|usage}
+% |\lbsi| is a macro for pounds per square inch (psi). (Note that \textbackslash
+% psi is a latex command for the greek letter $\psi$).
+%
+% \DescribeMacro{\lbsf}
+% \index{Pressure>psf|usage}
+% \index{Pressure>Pound per square foot|usage}
+% |\lbsf| is a macro for pounds per square foot (psf).
+%
+% \DescribeMacro{\Ba}
+% \index{Pressure>Barre|usage}
+% |\Ba| is a macro for Barre (Ba).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \DescribeMacro{\Torr}
+% \index{Pressure>Torr|usage}
+% |\Torr| is a macro for Torr (Torr).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \index{Pressure|usage)}
+%
+% \subsection{Other}
+%
+% \index{Other|usage(}
+%
+% \DescribeMacro{\mol}
+% \index{Other>mole|usage(}
+% \index{mole|usage(}
+% |\mol| is a macro for moles (mol).
+%
+% \index{Other|usage)}
+
+% \StopEventually{}
+%
+
+\makeatletter
+% \section{Implementation}
+%
+% \subsection{Special}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\units@separator}
+% |\units@separator| is a special macro used to set the spacing between a
+% quantity and the associated units.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\units@separator}{\,}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\units@separator}
+% |\units@separator| is a special macro used to set the spacing between a
+% quantity and the associated units.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\micro}{\ensuremath{%
+\mu}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Electricity \& Magnetism}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\V}
+% |\V| is a macro for Volts (V).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\V}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1V}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Volt}
+% |\Volt| is a macro for Volts (V).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Volt}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1V}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Coulomb}
+% |\Coulomb| is a macro for Coulombs (C).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Coulomb}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1C}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\esu}
+% |\esu| is a macro for electrostatic units (esu).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\esu}{\ensuremath{%
+\expandafter\units@separator\mathrm{esu}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Ohm}
+% |\Ohm| is a macro for Ohms ($\Omega$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Ohm}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1\Omega}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Amp}
+% |\Amp| is a macro for Amperes (A).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Amp}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1A}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Farad}
+% |\Farad| is a macro for Farads (F).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Farad}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1F}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Tesla}
+% |\Tesla| is a macro for Teslas (T).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Tesla}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1T}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Gauss}
+% |\Gauss| is a macro for Gauss (G).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Gauss}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1G}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Henry}
+% |\Henry| is a macro for Henrys (H).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Henry}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1H}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+% \subsection{Energy}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\eV}
+% |\eV| is a macro for electron Volts (eV).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\eV}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1eV}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keV}
+% |\keV| is a macro for kilo-electron Volts (keV).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\keV}{\ensuremath{%
+\expandafter\units@separator\mathrm{keV}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\MeV}
+% |\MeV| is a macro for mega-electron Volts (MeV).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\MeV}{\ensuremath{%
+\expandafter\units@separator\mathrm{MeV}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\J}
+% |\J| is a macro for Joules (J).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\J}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1J}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Joule}
+% |\Joule| is a macro for Joules (J).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Joule}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1J}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\erg}
+% |\erg| is a macro for ergs (erg).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\erg}{\ensuremath{%
+\expandafter\units@separator\mathrm{erg}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kcal}
+% |\kcal| is a macro for kilo-calories (kcal).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\kcal}[1]{\ensuremath{%
+\expandafter\units@separator\mathrm{kcal}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Cal}
+% |\Cal| is a macro for kilo=calories (Cal).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Cal}{\ensuremath{%
+\expandafter\units@separator\mathrm{Cal}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\calorie}
+% |\calorie| is a macro for calories (cal).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\calorie}[1][ ]{%
+\ensuremath{%
+\expandafter\units@separator\mathrm{#1cal}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\BTU}
+% |\BTU| is a macro for British Thermal Units (BTU).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\BTU}{\ensuremath{%
+\expandafter\units@separator\mathrm{BTU}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\tnt}
+% |\tnt| is a macro for tons of TNT).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\tnt}{\ensuremath{%
+\expandafter\units@separator\mathrm{ton%
+\expandafter\units@separator of%
+\expandafter\units@separator TNT}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Power}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Watt}
+% |\Watt| is a macro for Watts (W).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Watt}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1W}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\hpi}
+% |\hpi| is a macro for Imperial Horsepower (hp(I)).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\hpi}{\ensuremath{%
+\expandafter\units@separator\mathrm{hp(I)}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\hpi}
+% |\hpi| is a macro for Metric Horsepower (hp(M)).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\hpm}{\ensuremath{%
+\expandafter\units@separator\mathrm{hp(M)}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\hp}
+% |\hp| is a macro for Horsepower (hp).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\hp}{\ensuremath{%
+\expandafter\units@separator\mathrm{hp}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Distance}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\meter}
+% |\meter| is a macro for meters (m).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\meter}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1m}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\m}
+% |\m| is a macro for meters (m).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\m}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1m}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\km}
+% |\km| is a macro for kilometers (km).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\km}{\ensuremath{%
+\expandafter\units@separator\mathrm{km}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\au}
+% |\au| is a macro for astronmical units (au).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\au}{\ensuremath{%
+\expandafter\units@separator\mathrm{au}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\pc}
+% |\pc| is a macro for parsecs (pc).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\pc}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1pc}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\ly}
+% |\ly| is a macro for light-years (ly).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\ly}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1ly}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\cm}
+% |\cm| is a macro for centimeters (cm).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\cm}{\ensuremath{%
+\expandafter\units@separator\mathrm{cm}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\nm}
+% |\nm| is a macro for nanometers (nm).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\nm}{\ensuremath{%
+\expandafter\units@separator\mathrm{nm}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\ft}
+% |\ft| is a macro for feet (ft).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\ft}{\ensuremath{%
+\expandafter\units@separator\mathrm{ft}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\inch}
+% |\inch| is a macro for inches (in).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\inch}{\ensuremath{%
+\expandafter\units@separator\mathrm{in}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\mi}
+% |\mi| is a macro for miles (mi).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\mi}{\ensuremath{%
+\expandafter\units@separator\mathrm{mi}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Time}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\s}
+% |\s| is a macro for seconds (s).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\s}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1s}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Sec}
+% |\Sec| is a macro for seconds (s).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Sec}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1s}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Min}
+% |\Min| is a macro for minutes (m).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Min}{\ensuremath{%
+\expandafter\units@separator\mathrm{min}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\h}
+% |\h| is a macro for hours (h).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\h}{\ensuremath{%
+\expandafter\units@separator\mathrm{h}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\y}
+% |\y| is a macro for years (y).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\y}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1y}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Day}
+% |\Day| is a macro for days (d).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Day}{\ensuremath{%
+\expandafter\units@separator\mathrm{d}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Mass}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\gm}
+% |\gm| is a macro for grams (g).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+
+\DeclareRobustCommand{\gm}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1g}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kg}
+% |\kg| is a macro for kilograms (kg).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\kg}{\ensuremath{%
+\expandafter\units@separator\mathrm{kg}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\lb}
+% |\lb| is a macro for pounds (weight) (lb).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\lb}{\ensuremath{%
+\expandafter\units@separator\mathrm{lb}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\amu}
+% |\amu| is a macro for atomic mass units (amu).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\amu}{\ensuremath{%
+\expandafter\units@separator\mathrm{amu}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Force}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\N}
+% |\N| is a macro for Newtons (N).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\N}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1N}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Newton}
+% |\Newton| is a macro for Newtons (N).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Newton}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1N}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\dyne}
+% |\dyne| is a macro for dynes (dyn).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\dyne}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1dyn}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\lbf}
+% |\lbf| is a macro for pounds of force (lbf).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\lbf}{\ensuremath{%
+\expandafter\units@separator\mathrm{lbf}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Velocity}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kmps}
+% |\kmps| is a macro for kilometers per second ($\kmps$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\kmps}{\ensuremath{%
+\expandafter\units@separator\mathrm{km}%
+\expandafter\units@separator\mathrm{s}^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kmph}
+% |\kmph| is a macro for kilometers per hour ($\kmph$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\kmph}{\ensuremath{%
+\expandafter\units@separator\mathrm{km}%
+\expandafter\units@separator\mathrm{h}^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\mps}
+% |\mps| is a macro for meters per second ($\mps$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\mps}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1m}%
+\expandafter\units@separator\mathrm{s}^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\miph}
+% |\miph| is a macro for miles per hour ($\miph$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\miph}{\ensuremath{%
+\expandafter\units@separator\mathrm{mi}%
+\expandafter\units@separator\mathrm{h}^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kts}
+% |\kts| is a macro for knots ($\kts$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\kts}{\ensuremath{%
+\expandafter\units@separator\mathrm{kts}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Acceleration}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\mpss}
+% |\mpss| is a macro for acceleration in meters per second squared ($\mpss$).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+
+\DeclareRobustCommand{\mpss}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1m}%
+\expandafter\units@separator\mathrm{s}^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\gacc}
+% |\gacc| is a macro for acceleration due to gravity ($\gacc$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\gacc}{\ensuremath{%
+\expandafter\units@separator\mathrm{g}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\ftpss}
+% |\ftpss| is a macro for acceleration in feet per second squared ($\ftpss$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\ftpss}{\ensuremath{%
+\expandafter\units@separator\mathrm{ft}%
+\expandafter\units@separator\mathrm{s}^{-2}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Temperature}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\K}
+% |\K| is a macro for Kelvin (K).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\K}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1K}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Kelvin}
+% |\Kelvin| is a macro for Kelvin (K).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Kelvin}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1K}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Celcius}
+% |\Celcius| is a macro for degrees Celcius $(\Celcius)$.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Celcius}{^\circ\ensuremath{%
+\expandafter\units@separator\mathrm{C}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Rankine}
+% |\Rankine| is a macro for degrees Rankine $(\Rankine)$.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Rankine}{^\circ\ensuremath{%
+\expandafter\units@separator\mathrm{R}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Fahrenheit}
+% |\Fahrenheit| is a macro for degrees Fahrenheit $(\Fahrenheit)$.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Fahrenheit}{^\circ\ensuremath{%
+\expandafter\units@separator\mathrm{F}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Angular Velocity}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\rpm}
+% |\rpm| is a macro for revolutions per minute $(\rpm)$.
+%
+% \begin{macrocode}
+
+\DeclareRobustCommand{\rpm}{\ensuremath{%
+\expandafter\units@separator\mathrm{rev}%
+\expandafter\units@separator\Min^{-1}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+% \subsection{Frequency}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Hz}
+% |\Hz| is a macro for Hertz (Hz).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+
+\DeclareRobustCommand{\Hz}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1Hz}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Pressure}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\barP}
+% |\barP| is a macro for bar (bar). (The use of barP instead of just bar is due
+% the \LaTeX~command \textbackslash bar.)
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\barP}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1bar}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\atm}
+% |\atm| is a macro for atmosphere (atm).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\atm}{\ensuremath{%
+\expandafter\units@separator\mathrm{atm}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Pa}
+% |\Pa| is a macro for Pascals (Pa).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Pa}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1Pa}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\mmHg}
+% |\mmHg| is a macro for millimeters of mercury (mmHg).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\mmHg}{\ensuremath{%
+\expandafter\units@separator\mathrm{mmHg}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\inHg}
+% |\inHg| is a macro for inches of mercury (inHg).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\inHg}{\ensuremath{%
+\expandafter\units@separator\mathrm{inHg}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\lbsi}
+% |\lbsi| is a macro for pounds per square inch (psi). (Note that \textbackslash
+% psi is a latex command for the greek letter $\psi$).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\lbsi}{\ensuremath{%
+\expandafter\units@separator\mathrm{psi}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\lbsf}
+% |\lbsf| is a macro for pounds per square foot (psf).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\lbsf}{\ensuremath{%
+\expandafter\units@separator\mathrm{psf}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Ba}
+% |\Ba| is a macro for Barre (Ba).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Ba}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1Ba}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\Torr}
+% |\Torr| is a macro for Torr (Torr).
+% This macro accepts an optional argument for a prefix. If no option is
+% supplied, no prefix will be prepended.
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\Torr}[1][ ]{\ensuremath{%
+\expandafter\units@separator\mathrm{#1Torr}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+%
+% \subsection{Other}
+%
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\mol}
+% |\mol| is a macro for moles (mol).
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\mol}{\ensuremath{%
+\expandafter\units@separator\mathrm{mol}}}
+% \end{macrocode}
+% \end{macro}
+%\iffalse
+%</package>
+%\fi
+%
+\makeatother
+
+%
+% \Finale
+%
diff --git a/macros/latex/contrib/physunits/physunits.ins b/macros/latex/contrib/physunits/physunits.ins
new file mode 100644
index 0000000000..36b01a112d
--- /dev/null
+++ b/macros/latex/contrib/physunits/physunits.ins
@@ -0,0 +1,56 @@
+%%
+%% Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+%% -----------------------------------------------------------
+%%
+%% This file may be distributed and/or modified under the conditions of
+%% the LaTeX Project Public License, either version 1.3c of this license
+%% or (at your option) any later version. The latest version of this
+%% license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2006/05/20 or later.
+%%
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/physunits}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2020 by Brian W. Mulligan <bwmulligan@astronaos.com>
+
+This file may be distributed and/or modified under the conditions of
+the LaTeX Project Public License, either version 1.3c of this license
+or (at your option) any later version. The latest version of this
+license is in:
+
+http://www.latex-project.org/lppl.txt
+
+and version 1.3c or later is part of all distributions of LaTeX
+version 2006/05/20 or later.
+
+\endpreamble
+\askforoverwritefalse
+\generate{\file{physunits.sty}{\from{physunits.dtx}{package}}}
+
+\obeyspaces
+\Msg{*************************************************************}
+\Msg{* *}
+\Msg{* To finish the installation you have to move the following *}
+\Msg{* file into a directory searched by TeX: *}
+\Msg{* *}
+\Msg{* physunits.sty *}
+\Msg{* *}
+\Msg{* To produce the documentation run the file physunits.dtx *}
+\Msg{* through LaTeX. *}
+\Msg{* *}
+\Msg{* Happy TeXing! *}
+\Msg{* *}
+\Msg{*************************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/physunits/physunits.pdf b/macros/latex/contrib/physunits/physunits.pdf
new file mode 100644
index 0000000000..090dfa7d83
--- /dev/null
+++ b/macros/latex/contrib/physunits/physunits.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/README b/macros/luatex/generic/luatexja/README
index ecd65df1e4..f0d4a0e9b4 100644
--- a/macros/luatex/generic/luatexja/README
+++ b/macros/luatex/generic/luatexja/README
@@ -1,6 +1,6 @@
-The LuaTeX-ja Package 20191118.0
+The LuaTeX-ja Package 20200127.0
--------------------------------
-Copyright (c) 2011--2019 The LuaTeX-ja project
+Copyright (c) 2011--2020 The LuaTeX-ja project
License: modified BSD (see COPYING)
LuaTeX-ja is a macro package for typesetting Japanese documents with LuaTeX.
@@ -22,7 +22,7 @@ Installation
0. Please make sure that your TeX distribution is up-to-date.
This version of LuaTeX-ja requires
- - LuaTeX 1.0.0 or later
+ - LuaTeX 1.07.0 (or later)
- luaotfload (v3.1 or later recommended)
- adobemapping (Adobe CMap files)
- everysel package
@@ -38,14 +38,14 @@ Installation
One might be able to typeset documents without an error, but with
some unwanted results.
-1. If you are using TeX Live 2019 or later, you can install LuaTeX-ja via tlmgr.
+1. If you are using TeX Live 2019, you can install LuaTeX-ja via tlmgr.
2. If you must/want to install manually:
a. Download the source archive from CTAN,
- or tagged as 20191118.0 in the Git repository by
+ or tagged as 20200127.0 in the Git repository by
<http://git.osdn.jp/view?p=luatex-ja/luatexja.git
- ;a=snapshot;h=refs/tags/20191118.0;sf=tgz>
+ ;a=snapshot;h=refs/tags/20200127.0;sf=tgz>
b. Extract the archive and process following three files by LuaLaTeX
to generate classes for Japanese typesetting:
@@ -93,4 +93,4 @@ Notes
* src/*.{ins.dtx} and src/ltj-kinsoku_make.tex are not needed in regular use.
-Last commit date: Mon Nov 18 21:38:16 2019 +0900
+Last commit date: Mon Jan 27 16:16:24 2020 +0900
diff --git a/macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf b/macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
index 2f0d74960c..1ff22ae348 100644
--- a/macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
+++ b/macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/lltjp-geometry.tex b/macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
index 2006e4994e..1b2aa5ed59 100644
--- a/macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
+++ b/macros/luatex/generic/luatexja/doc/lltjp-geometry.tex
@@ -1,17 +1,17 @@
-%#! luajitlatex
+%#! lualatex
\documentclass[a4paper,10pt]{ltjsarticle}
\usepackage[textwidth=45\zw, lines=45, footskip=2\zh, verbose]{geometry}
-\usepackage{listings,amsmath,booktabs,lltjext}
-\usepackage[match]{luatexja-fontspec}
+\usepackage{listings,amsmath,booktabs,lltjext,bxghost}
\usepackage{unicode-math}
-\setmathfont{XITS Math}
-\setmainfont{TeX Gyre Termes}
-\setsansfont[Scale=0.95]{TeX Gyre Heros}
-\usepackage[kozuka-pr6n]{luatexja-preset}\normalsize
+\setmathfont{Latin Modern Math}
+\usepackage[match]{luatexja-fontspec}
+\usepackage[haranoaji]{luatexja-preset}
+\setmonojfont{HaranoAjiGothic-Regular}
+\normalsize
\def\emph#1{\textbf{\textgt{\mathversion{bold}#1}}}
\def\headfont{\normalfont\bfseries\gtfamily}
\def\pTeX{p\kern-.05em\TeX}
-\def\cs#1{\text{\texttt{\char`\\#1}}}
+\def\cs#1{\text{\eghostguarded{\texttt{\char`\\#1}}}}
\protected\def\Pkg#1{\textsf{#1}}
\protected\def\>{\hskip\ltjgetparameter{xkanjiskip}}
\lstset{
@@ -244,7 +244,7 @@ $5\,\textrm{pt} + 3.41666\,\textrm{pt}=8.41666\,\textrm{pt}$である.}
\Pkg{lltjp-geometry}では
\begin{quote}
\texttt{lines}オプション指定時,\cs{topskip}の値を最低でも
- \emph{\cs{tstrutbox}の高さ($\cs{baselineskip}/2$)}まで引き上げる
+ \emph{\cs{tstrutbox}の高さ}($\cs{baselineskip}/2$)まで引き上げる
\end{quote}
という挙動にした.見かけ上は\cs{topskip}の値制限が緩くなったが,前節で述べたように
欧文フォントのベースラインは和文に合うように下にずらされるので,
@@ -278,8 +278,8 @@ $5\,\textrm{pt} + 3.41666\,\textrm{pt}=8.41666\,\textrm{pt}$である.}
\cs{topskip}だけ左にずれたところにあり,
一方ページの最終行のベースラインは本文領域の左端にある.
縦組和文フォントのベースラインは文字の左右中央を通ることから,
-従って,\emph{見た目で言えば,右余白の方が$\cs{topskip}=8.5\,\textrm{pt}$だけ
-大きい}ということになってしまう\footnote{%
+従って,\emph{見た目で言えば,右余白の方が\cs{topskip}}~($=8.5\,\textrm{pt}$)%
+\emph{だけ大きい}ということになってしまう\footnote{%
同様に,横組で \texttt{vcentering}を指定すると,見かけでは
$\cs{topskip}-\cs{Cht}+\cs{Cdp}$だけ上余白が大きいように見える.
}.
diff --git a/macros/luatex/generic/luatexja/doc/ltjclasses.pdf b/macros/luatex/generic/luatexja/doc/ltjclasses.pdf
index d2ba59b005..82b5a12e8a 100644
--- a/macros/luatex/generic/luatexja/doc/ltjclasses.pdf
+++ b/macros/luatex/generic/luatexja/doc/ltjclasses.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf b/macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
index f963ecb767..2fbbb67664 100644
--- a/macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
+++ b/macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf b/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
index 43d9e9b1c3..e7b415f52b 100644
--- a/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
+++ b/macros/luatex/generic/luatexja/doc/ltjsclasses.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
index eb9e2513e3..5a23c46595 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-en.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
index 4be46efdc5..15bf08d241 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ja.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf b/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
index 935ed02930..2c11e1f774 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ruby.pdf
Binary files differ
diff --git a/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex b/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
index 4d4be4f4f1..40657a363f 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
+++ b/macros/luatex/generic/luatexja/doc/luatexja-ruby.tex
@@ -1,16 +1,20 @@
-%#! luajitlatex
+%#! lualatex
%%% a test of ruby.
\documentclass[a4paper,10pt]{ltjsarticle}
-\usepackage{luatexja-otf,amsmath}
+\usepackage{luatexja-otf,amsmath,bxghost}
+\usepackage[no-math]{fontspec}
\usepackage[match]{luatexja-fontspec}
-\usepackage[kozuka-pr6n]{luatexja-preset}\normalsize
+\usepackage[haranoaji]{luatexja-preset}\normalsize
+\setmonojfont{HaranoAjiGothic-Regular.otf}
+\usepackage{unicode-math}
+\setmathfont{Latin Modern Math}
+
\def\emph#1{\textbf{\textgt{#1}}}
\def\headfont{\normalfont\bfseries\gtfamily}
-\setmonojfont{KozGoPr6N-Regular.otf}
-
-\usepackage[textwidth=45\zw, lines=45, footskip=6mm]{geometry}
+\def\cs#1{\eghostguarded{\texttt{\textbackslash#1}}}
+\usepackage[textwidth=45\zw, lines=45, footskip=2\zh]{geometry}
\advance\leftmargini-1\zw\advance\leftmarginii-1\zw
-\protected\def\Param#1{\underline{\smash{\textsf{\mdseries #1}}}}
+\protected\def\Param#1{\eghostguarded{\underline{\smash{\textsf{\mdseries #1}}}}}
\usepackage{luatexja-ruby,showexpl,booktabs}
\lstset{
@@ -30,17 +34,17 @@
}
\def\Node#1#2{\,\vcenter{\hbox{\fboxsep=1pt\fbox{\vbox{\small\halign{\hfil##\hfil\cr
- #1\mathstrut\cr\noalign{\hrule height.4pt}\strut#2\cr}}}}\,}}
+ #1\mathstrut\cr\noalign{\smallskip\hrule height.4pt\smallskip}\strut\<#2\cr}}}}}\,}
\def\LuaTeX{Lua\TeX}
% 三分ルビ用
\DeclareFontShape{JY3}{mc}{mc}{n}{<-> [0.92487]
- KozMinPr6N-Regular:extend=0.67;jfm=ujisc33}{}
+ HaranoAjiMincho-Regular:extend=0.67;jfm=ujisc33}{}
\title{\textsf{luatexja-ruby}パッケージ}
\begin{document}
\catcode`\<=13
-\def<#1>{{\normalfont\rm\itshape$\langle$#1\/$\rangle$}}
+\def<#1>{{\rmfamily\mdseries\itshape$\langle$#1\/$\rangle$}}
%\fontsize{13.19873}{15}\selectfont%
\maketitle
@@ -76,17 +80,17 @@ plain \LuaTeX でのロードはまだサポートしておらず,
\end{quotation}
\subsection{\ruby{命|令}{めい|れい}}
-\paragraph{\tt\textbackslash ltjruby}
+\paragraph{\cs{ltjruby}}
ルビ出力用命令の本体.\verb+\ruby+ という別名を定義している.
\begin{quote}
-\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
+\ttfamily \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
\end{quote}
のように使用する.
第2・第3引数内の「\verb+|+」はグループの区切りを表す.詳細は\ref{ssec:grp}\nobreak 小節を参照.
<option>には以下の内容をkey-valueリストで指定可能である:
\begin{description}
-\def\makelabel#1{\tt#1}
+\def\makelabel#1{\ttfamily\bfseries #1}
\item[pre=<real>] 前進入許容量をルビ全角単位で指定.
負の長さを指定した場合は,ルビの状況や直前の文字に応じた自動指定を意味する.
既定値は負(つまり,自動指定).
@@ -102,13 +106,13 @@ plain \LuaTeX でのロードはまだサポートしておらず,
\item[bit 2--3] ルビ文字の突出量$x$から実際の前進入量$b$,後進入量$a$の計算方法を指定する.
親文字の文字数が$k+1$,親文字の前に入る空白量・間の空白量・後ろの空白量の比が$p:q:r$のとき,
\begin{description}
- \item[00] $b=\min\{B, xp/[p+kq+r]\}$, \ $a=\min\{A, xr/[p+kq+r]\}$
- \item[01] $b=\min(B, x)$, \ $a=\min[A, \max(x-b,0)]$
- \item[10] $a=\min(A, x)$, \ $b=\min[B, \max(x-a,0)]$
+ \item[00] $b=\min(B, xp/(p+kq+r))$, \ $a=\min(A, xr/(p+kq+r))$
+ \item[01] $b=\min(B, x)$, \ $a=\min(A, \max(x-b,0))$
+ \item[10] $a=\min(A, x)$, \ $b=\min(B, \max(x-a,0))$
\item[11] $M=\min(B,A)$とおく.もし$x\le 2M$ならば$b=a=x/2$.そうでなければ
\[
- b=\min\left(B, M + \frac{(x-2M)p}{p+kp+r}\right),\qquad
- a=\min\left(A, M + \frac{(x-2M)r}{p+kp+r}\right)
+ b=\min\left(B, M + \frac{(x-2M)p}{p+kq+r}\right),\qquad
+ a=\min\left(A, M + \frac{(x-2M)r}{p+kq+r}\right)
\]
\end{description}
@@ -208,7 +212,7 @@ plain \LuaTeX でのロードはまだサポートしておらず,
普通はこの2つのうちいずれかを設定するだけで足りるだろう.
\begin{description}
-\def\makelabel#1{\tt#1}
+\def\makelabel#1{\ttfamily\bfseries #1}
\item[naka] 以下のオプションを同時に設定する.主に中付きルビを組むときに用いる.
\begin{verbatim}
mode=1, stretch={1}{2}{1}, stretchruby={1}{2}{1}
@@ -219,7 +223,7 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
\end{verbatim}
\end{description}
-\paragraph{\tt\textbackslash ltjsetruby\{<option>\}}
+\paragraph{\cs{ltjsetruby}\{<option>\}}
<option>の既定値を指定する.\textsf{luatexja-ruby}読み込み時の値は
各項目の所で既に説明してあるが,次のようになっている.
\begin{verbatim}
@@ -232,9 +236,9 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
\paragraph{\texttt{\textbackslash ltjsetparamater} に追加されるキー}
\begin{description}
-\item[\Param{rubypreintrusion}\tt =\{<chr\_code>, <pre\_int>\}]
+\item[\Param{rubypreintrusion}\ttfamily =\{<chr\_code>, <pre\_int>\}]
文字<chr\_code> に,その\textbf{直後}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
-\item[\Param{rubypostintrusion}\tt =\{<chr\_code>, <post\_int>\}]
+\item[\Param{rubypostintrusion}\ttfamily =\{<chr\_code>, <post\_int>\}]
文字<chr\_code> に,その\textbf{直前}のルビによって掛けられるルビ文字列の最大長をルビ全角単位で指定.
\end{description}
既定値は,\Param{rubypreintrusion},~\Param{rubypostintrusion}とも
@@ -249,7 +253,7 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
\paragraph{\texttt{\textbackslash ltjkenten}}
圏点を出力する命令で,\verb+\kenten+ という別名を定義している.
\begin{quote}
- \tt \textbackslash ltjkenten[<option>]\{親文字\}
+ \ttfamily\cs{ltjkenten}[<option>]\{親文字\}
\end{quote}
のように使用する.複数文字に圏点をつける場合でも,\verb+\ltjruby+ のように「\texttt{|}」を使って
文字を区切る\textbf{必要はない}ことに注意してほしい.
@@ -260,7 +264,7 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
\subsection{グループの\ruby{指|定}{し|てい}}
\label{ssec:grp}
\begin{quote}
-\tt \textbackslash ltjruby[<option>]\{親|文|字\}\{おや|も|じ\}
+\ttfamily\cs{ltjruby}[<option>]\{親|文|字\}\{おや|も|じ\}
\end{quote}
のように,\verb+\ltjruby+\ の第2・第3引数内の「\verb+|+」はグループの区切りを表す.
グループの数は両者で一致しなければならず,
@@ -279,7 +283,6 @@ mode=9, stretch={1}{2}{1}, stretchruby={0}{0}{1}
\ltjruby{普}{ふ}\ltjruby{通}{つう}\ltjruby{車}{しや}
\end{verbatim}
-\newpage
複数グループかつ上記の条件を満たさない場合は,
所謂「可動グループルビ」であり,ルビの前後や各グループの切れ目で行分割が可能となる.
例えば
diff --git a/macros/luatex/generic/luatexja/doc/luatexja.dtx b/macros/luatex/generic/luatexja/doc/luatexja.dtx
index 19332cfb06..7b6f8fe5f5 100644
--- a/macros/luatex/generic/luatexja/doc/luatexja.dtx
+++ b/macros/luatex/generic/luatexja/doc/luatexja.dtx
@@ -31,8 +31,7 @@
%<ja> Scale=MatchLowercase, FakeStretch=1.137121,
ItalicFont=iosevka-slab-oblique,
BoldFont=iosevka-slab-bold, BoldItalicFont=iosevka-slab-bolditalic,
-%<en> ]{iosevka-slab-regular}
-%<ja> ]{iosevka-slab-light}
+]{iosevka-slab-regular}
\setsansfont[Scale=MatchLowercase,Ligatures=TeX,RawFeature=-notdef]{Linux Biolinum O}
\usepackage[match]{luatexja-fontspec}
\usepackage[kozuka-pr6n]{luatexja-preset}
@@ -368,15 +367,22 @@ For more detailed information, see Part~\ref{part-imp} or other sections of this
\ltjsetparameter{talbaselineshift=0.1\zw}
\dimen0=\ltjgetparameter{talbaselineshift}
\ltjsetparameter{prebreakpenalty={`ぁ,100}}
-\ifnum\ltjgetparemeter{direction}=4 ... \fi
+\ifnum\ltjgetparameter{direction}=4 ... \fi
\end{lstlisting}
%<*en>
Note that \pTeX\ adds new two useful units, namely \texttt{zw}~and~\texttt{zh}.
-As shown above, they are changed by \cs{zw}~and~\cs{zh} respectively, in \LuaTeX-ja.
+As shown above, \emph{they are changed to \cs{zw}~and~\cs{zh} respectively} in \LuaTeX-ja.%
+\footnote{\LuaTeX-ja 20200127.0 introduces \cs{ltj@zw}~and~\cs{ltj@zh}, which are copy of
+ \cs{zw}~and~\cs{zh}.}
%</en>
%<*ja>
-特に注意してほしいのは,\pTeX で追加された \texttt{zw} と \texttt{zh} という単位は
-\LuaTeX-ja では使用できず,\cs{zw}, \cs{zh} と制御綴の形にしないといけないという点である.
+特に注意してほしいのは,\pTeX で追加された\texttt{zw}と\texttt{zh}という単位は
+\LuaTeX-ja では使用できず,\emph{\cs{zw}, \cs{zh} と制御綴の形にしないといけない}という点である
+\footnote{%
+ 別のパッケージやユーザが\cs{zw},~\cs{zh}を書き換えてしまうことに対応するため,
+ \LuaTeX-ja 20200127.0以降では,\cs{ltj@zw},~\cs{ltj@zh}がそれぞれ\cs{zw},~\cs{zh}の
+ コピーとして定義されている.
+}.
%</ja>
%<*en>
@@ -646,7 +652,7 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
%<en>The following packages are needed for the \LuaTeX-ja\ package.
%<ja>\LuaTeX-jaパッケージの動作には次のパッケージ類が必要である.
\begin{itemize}
-\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.0.0 (or later)
+\item \href{http://www.luatex.org/}{\LuaTeX}\ 1.07.0 (or later)
\item recent \href{https://github.com/latex3/luaotfload}{\Pkg{luaotfload}} (v3.1 or later recommended)
\item \Pkg{adobemapping} (Adobe cmap and pdfmapping files)
\item \href{https://github.com/josephwright/etoolbox/}{\Pkg{etoolbox}},
@@ -657,7 +663,6 @@ and \emph{Japanese fonts} for fonts used in \textbf{JAchar}.
%<ja>\item \emph{IPAexフォント(\url{http://ipafont.ipa.go.jp/})}
\end{itemize}
-
%<*en>
Now \LuaTeX-ja is available from
CTAN (in the \texttt{macros/luatex/generic/luatexja} directory), and
@@ -871,6 +876,31 @@ and finally delete the temporary directory.
コピーし,その中で\LuaTeX-jaの初回起動を行い,作業用ディレクトリを消す作業をしている.
%</ja>
+\item
+%<*en>
+Note that when \LuaTeX-ja is loaded in plain \LuaTeX~nor \LaTeX~2019-10-01,
+we cannot use color specification on font loading, such as
+\begin{lstlisting}
+ \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive
+ \DeclareFontShape{TU}{...}{...}{...}{<-> lmsans10-boldoblique:color=005599}{} % NFSS
+ \setmainfont{texgyretermes}[Color=220022] % fontspec
+\end{lstlisting}
+This is because codes for shifting baseline in math mode (\LuaTeX-ja) collide with and prevents loading
+codes for font color (\Pkg{luaotfload}) in these environments.
+\emph{We recommend to use \LaTeX\ 2020-02-02}, since we can avoid this collision in \LaTeX\ 2020-02-02.
+%</en>
+%<*ja>
+なお,\LuaTeX-jaをplain~\LuaTeX や\LaTeX\ 2019-10-01以前の環境下で用いる場合,
+以下のような\emph{フォント読み込み時の色指定}(\cs{textcolor}命令ではなく!)\emph{は利用できない}.
+\begin{lstlisting}
+ \font\hoge=lmroman10-regular.otf:color=FF0000 % \font primitive
+ \DeclareFontShape{TU}{...}{...}{...}{<-> lmsans10-boldoblique:color=005599}{} % NFSS
+ \setmainfont{texgyretermes}[Color=220022] % fontspec
+\end{lstlisting}
+これは,\LuaTeX-jaによる数式内のベースライン補正(\ref{ssec:baseline}節)のコードが
+\Pkg{luaotfload}パッケージのフォント色処理のコードと衝突するためである.
+\LaTeX\ 2020-02-02以降では衝突回避のための仕組みが備わっているので.\emph{\LaTeX\ 2020-02-02以降での使用を勧める}.
+%</ja>
\end{itemize}
%<en>\subsection{Using in plain \TeX}
@@ -1002,12 +1032,24 @@ plfonts.dtx} and \texttt{pldefs.ltx}).
\begin{center}\small
\begin{tabular}{lllc}
\toprule
-\textbf{classification}&&&\textbf{commands}\\\midrule
+\textbf{classification}&\textbf{commands}&&\textbf{family}\\\midrule
\emph{mincho} (明朝体)&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
\emph{gothic} (\textgt{ゴシック体})&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
+(Japanese counterpart for typewriter font)&---&---&\cs{jttdefault}\\
\bottomrule
\end{tabular}
\end{center}
+ Here \cs{jttdefault} specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim}
+ environment, and its default value is \cs{mcdefault} (mincho family).%
+ \footnote{%
+ When \Pkg{ltjsclasses} classes are used, or
+ \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
+ \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
+ These classes and packages also redefine \cs{jttdefault} to
+ \cs{gtdefault} (\emph{gothic}~family).
+ } \LuaTeX-ja does not define commands to only switch current Japanese font family to
+ \cs{jttdefault}.
+
\item
By default, the following fonts are used for these two families.
\begin{center}\small
@@ -1024,17 +1066,26 @@ By default, the following fonts are used for these two families.
There is no italic nor slanted shape for these \texttt{mc}~and~\texttt{gt}.
%</en>
%<*ja>
-\item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる:
+\item \pLaTeX と同様に,標準では「明朝体」「ゴシック体」の2種類を用いる.
\begin{center}\small
\begin{tabular}{llll}
\toprule
-\emph{字体}&&&\emph{ファミリ名}\\\midrule
+\emph{字体}&\emph{命令}&&\emph{ファミリ名}\\\midrule
明朝体&\verb+\textmc{...}+&\verb+{\mcfamily ...}+&\cs{mcdefault}\\
\textgt{ゴシック体}&\verb+\textgt{...}+&\verb+{\gtfamily ...}+&\cs{gtdefault}\\
+(タイプライタ体と合わせる和文)&---&&\cs{jttdefault}\\
\bottomrule
\end{tabular}
\end{center}
- \newpage
+ \cs{jttdefault}は\cs{verb}や\texttt{verbatim}環境中の和文文字に使われる和文フォントファミリであり,
+ 標準値は\cs{mcdefault},つまり明朝体である
+ \footnote{%
+ \Pkg{ltjsclasses}を使用したり,また\Pkg{luatexja-fontspec}や\Pkg{luatexja-preset}パッケージを
+ \texttt{match}オプションを指定して読み込んだときは,単なる\cs{ttfamily}によっても和文フォントが
+ \cs{jttdefault}に変更される.また,これらのクラスファイルやパッケージは
+ \cs{jttdefault}を \cs{gtdefault}(ゴシック体)に再定義する.
+ }.和文フォントファミリ(のみ)を\cs{jttdefault}に切り替える命令は準備していない.
+
\item 標準では,次のフォントが用いられる:
\begin{center}\small
\begin{tabular}{lllll}
@@ -1074,28 +1125,6 @@ By default, the following fonts are used for these two families.
直に書くことができる(但し\autoref{para:jachar_in_math}ページの記述も参照).
その際には明朝体(\texttt{mc})で出力される.
%</ja>
-%<*en>
- \item \cs{jttdefault}%
- \footnote{%
- When \Pkg{ltjsclasses} classes are used, or
- \Pkg{luatexja-fontspec} (or \Pkg{luatexja-preset}) is loaded with \texttt{match} option,
- \cs{ttfamily} changes the current Japanese font amily to \cs{jttdefault}.
- These classes and packages also redefine \cs{jttdefault} to
- \cs{gtdefault} (\emph{gothic}~family).
- } specifies the Japanese font family in \cs{verb}~or~\texttt{verbatim} environment.
- The default value of \cs{jttdefault} is \cs{mcdefault}, so the mincho family is used.
-%</en>
-%<*ja>
- \item \cs{verb} や \texttt{verbatim} 環境中の和文文字に使われる和文フォントファミリは
- \ \cs{jttdefault} で指定する%
- \footnote{%
- \Pkg{ltjsclasses}を使用したり,あるいは \texttt{match} オプションを指定して\Pkg{luatexja-fontspec}%
- や\Pkg{luatexja-preset}パッケージを読み込んだときは,単なる \cs{ttfamily} によっても和文フォントが
- \ \cs{jttdefault}\ に変更される.また,これらのクラスファイルやパッケージは
- \ \cs{jttdefault}\ を \cs{gtdefault}(ゴシック体)に再定義する.
- }.標準値は \cs{mcdefault},つまり明朝体として用いるのと
- 同じフォントファミリである.
-%</ja>
%<*en>
\item If you use the \Pkg{beamer} class with the default font theme (which uses sans serif
@@ -1345,7 +1374,7 @@ auto select&\cs{fontencoding}&\cs{fontfamily}&---&---&\cs{usefont}\\
\item 和文フォントのシェイプを定義するには,通常の \cs{DeclareFontShape} を使えば良い:
%</ja>
\begin{lstlisting}
-\DeclareFontShape{JY3}{mc}{bx}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
+\DeclareFontShape{JY3}{mc}{b}{n}{<-> s*KozMinPr6N-Bold:jfm=ujis;-kern}{}
% Kozuka Mincho Pr6N Bold
\end{lstlisting}
%<*ja>
@@ -1479,14 +1508,14 @@ counterparts of original commands in the \Pkg{fontspec} package
\begin{tabular}{>{\bfseries}lllll}
\toprule
Japanese fonts
-&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}\\
Alphabetic fonts
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
Japanese fonts
-&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\
Alphabetic fonts
-&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\
\midrule
Japanese fonts
&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
@@ -1494,15 +1523,6 @@ Alphabetic fonts
&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}\par}
-\medskip
-\fakefn{$^*$}{%
- \cs{setmonojfont} is defined if and only if \texttt{match} option is specified.}
-\fakefn{$^{**}$}{%
- \cs{renewfontfamily}~and~\cs{setfontfamily} are new commands
- in \Pkg{fontspec}~v2.6h (2018/7/30).
- Hence, \Pkg{luatexja-fontspec} define \cs{renewjfontfamily}~and~\cs{setjfontfamily}
- only when \Pkg{fontspec}~v2.6h (or later) is used.
-}
\end{table}
%</en>
%<*ja>
@@ -1513,14 +1533,14 @@ Alphabetic fonts
\begin{tabular}{lllll}
\toprule
\emph{和文}
-&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}$^*$\\
+&\cs{jfontspec}&\cs{setmainjfont}&\cs{setsansjfont}&\cs{setmonojfont}\\
\emph{欧文}
&\cs{fontspec}&\cs{setmainfont}&\cs{setsansfont}&\cs{setmonofont}\\
\midrule
\emph{和文}
-&\cs{newjfontfamily}&\cs{renewjfontfamily}$^{**}$&\cs{setjfontfamily}$^{**}$\\
+&\cs{newjfontfamily}&\cs{renewjfontfamily}&\cs{setjfontfamily}\\
\emph{欧文}
-&\cs{newfontfamily}&\cs{renewfontfamily}$^{**}$&\cs{setfontfamily}$^{**}$\\
+&\cs{newfontfamily}&\cs{renewfontfamily}&\cs{setfontfamily}\\
\midrule
\emph{和文}
&\cs{newjfontface}&\cs{defaultjfontfeatures}&\cs{addjfontfeatures}\\
@@ -1528,17 +1548,6 @@ Alphabetic fonts
&\cs{newfontface}&\cs{defaultfontfeatures}&\cs{addfontfeatures}\\
\bottomrule
\end{tabular}\par}
-
-\medskip
-\fakefn{$^*$}{\cs{setmonojfont} は \texttt{match} オプションが
-指定された時のみ定義される.}
-\fakefn{$^{**}$}{%
- \cs{renewfontfamily} と \cs{setfontfamily} は
- \Pkg{fontspec}~v2.6h (2018/7/30)で新たに追加された命令である.
- そのため,\Pkg{luatexja-fontspec}が \cs{renewjfontfamily} と \cs{setjfontfamily} を
- 定義するのはv2.6h以降の\Pkg{fontspec}を使用した時のみになっている.
-}
-
\end{table}
%</ja>
@@ -1549,18 +1558,12 @@ Alphabetic fonts
%<*en>
If this option is specified, usual family-changing commands such as
\cs{rmfamily},~\cs{textrm}, \cs{sffamily},~\dots\ also change Japanese font family.
-
-Note that \emph{\cs{setmonojfont} is defined
-if and only if this \texttt{\textup{match}} option is specified}.
%</en>
%<*ja>
このオプションが指定されると,「\pLaTeXe 新ドキュメントクラス」のように\
\cs{rmfamily}, \verb+\textrm{...}+, \cs{sffamily} 等が
欧文フォントだけでなく和文フォントも変更するようになる.
-
-\emph{なお,\cs{setmonojfont} はこの \texttt{match} オプションが
-指定された時のみ定義される.}この命令は標準の「タイプライタ体に対応する和文フォント」を指定する.
%</ja>
\item[pass=<opts>]
@@ -1602,12 +1605,8 @@ This means that two lines below are equivalent, for example.
\usepackage[no-math]{fontspec}\usepackage{luatexja-fontspec}
\usepackage[no-math]{luatexja-fontspec}
\end{lstlisting}
-
-
%<*en>
-The reason that \cs{setmonojfont} is not defined by default is that
-it is popular for Japanese fonts that nearly all Japanese glyphs have same
-widths. Also note that kerning information in a font is not used
+Note that kerning information in a font is not used
(that is, \texttt{kern} feature is set off) by default in these seven (or~eight) commands.
This is because of the compatibility with previous versions of \LuaTeX-ja
(see \ref{para-kern}).
@@ -1615,9 +1614,7 @@ This is because of the compatibility with previous versions of \LuaTeX-ja
Below is an example of \cs{jfontspec}.
%</en>
%<*ja>
-標準で \cs{setmonojfont} コマンドが定義されないのは,
-和文フォントではほぼ全ての和文文字のグリフが等幅であるのが伝統的であったことによる.
-また,これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
+これらの和文用のコマンドではフォント内のペアカーニング情報は標準では使用されない,
言い換えれば \texttt{kern} featureは標準では無効化となっている.
これは以前のバージョンの\LuaTeX-jaとの互換性のためである(\ref{para-kern}節を参照).
@@ -2328,6 +2325,7 @@ parameters to \texttt{true}/\texttt{false}, respectively.
%<en>\subsection{Shifting the baseline}
%<ja>\subsection{ベースラインの移動}
+\label{ssec:baseline}
%<*en>
To make a match between a Japanese font and an alphabetic font, sometimes
shifting of the baseline of one of the pair is needed. In \pTeX, this is achieved
@@ -8463,42 +8461,44 @@ and use them by \cs{ltjapplypreset}. These two commands can only be used in the
新たに<name>という名称のプリセットを定義する.この名称は,
すでに定義されているプリセット名や,
\ref{sssec:ltjpreset-general}で定義されているオプション,さらに
- 次の9つと重複してはならない.
+ 次の11個と重複してはならない.
\begin{quote}
\ttfamily
- mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ mc mc-l mc-m mc-b mc-bx gt gt-m gt-b gt-bx gt-eb mg-m
\end{quote}
<specification>は,プリセット名や以下のキー達のコンマ区切りリストを指定する:
\begin{description}
\item[\ttfamily mc-l=<font>] 明朝体細字(\cs{mcfamily}\cs{ltseries})
\item[\ttfamily mc-m=<font>] 明朝体中字(\cs{mcfamily}\cs{mdseries})
- \item[\ttfamily mc-bx=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+ \item[\ttfamily mc-b=<font>] 明朝体太字(\cs{mcfamily}\cs{bfseries})
+ \item[\ttfamily mc-bx=<font>] \texttt{mc-b=<font>}と同義.
\item[\ttfamily gt-m=<font>] ゴシック体中字(\cs{gtfamily}\cs{mdseries})
- \item[\ttfamily gt-bx=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+ \item[\ttfamily gt-b=<font>] ゴシック体太字(\cs{gtfamily}\cs{bfseries})
+ \item[\ttfamily gt-bx=<font>] \texttt{gt-b=<font>}と同義.
\item[\ttfamily gt-eb=<font>] ゴシック体太字(\cs{gtfamily}\cs{ebseries})
\item[\ttfamily mg-m=<font>] 丸ゴシック体(\cs{mgfamily})
\item[\ttfamily mc=<font>] 明朝体の細字・中字・太字全部を設定.
以下を指定したことと同じである:
\begin{quote}
- \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-b=<font>
\end{quote}
\item[\ttfamily gt=<font>] ゴシック体の中字・太字・極太全部を設定.
以下を指定したことと同じである:
\begin{quote}
- \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \ttfamily gt-m=<font>, gt-b=<font>, gt-eb=<font>
\end{quote}
\end{description}
なお,パッケージ読み込み時に \texttt{deluxe} が有効でない場合は,
- 上記9キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.
+ 上記11キーのうち\texttt{mc}, \texttt{gt}しか実質的に意味を持たない.
%</ja>
%<*en>
Define new preset~<name>. This <name> cannot be same as other presets,
options described in Subsubsection~\ref{sssec:ltjpreset-general}, nor
- following nine strings:
+ following 11~strings:
\begin{quote}
- \ttfamily
- mc mc-l mc-m mc-bx gt gt-m gt-bx gt-eb mg-m
+ \ttfamily
+ mc mc-l mc-m mc-b mc-bx gt gt-m gt-b gt-bx gt-eb mg-m
\end{quote}
<specification> is a comma-separated list which consists of
@@ -8506,22 +8506,24 @@ and use them by \cs{ltjapplypreset}. These two commands can only be used in the
\begin{description}
\item[\ttfamily mc-l=<font>] mincho light
\item[\ttfamily mc-m=<font>] mincho medium
- \item[\ttfamily mc-bx=<font>] mincho bold
+ \item[\ttfamily mc-b=<font>] mincho bold
+ \item[\ttfamily mc-bx=<font>] synonym for \texttt{mc-b=<font>}
\item[\ttfamily gt-m=<font>] gothic medium
- \item[\ttfamily gt-bx=<font>] gothic bold
+ \item[\ttfamily gt-b=<font>] gothic bold
+ \item[\ttfamily gt-bx=<font>] synonym for \texttt{gt-b=<font>}
\item[\ttfamily gt-eb=<font>] gothic extra~bold
\item[\ttfamily mg-m=<font>] rounded gothic
\item[\ttfamily mc=<font>] Same as
\begin{quote}
- \ttfamily mc-l=<font>, mc-m=<font>, mc-bx=<font>
+ \ttfamily mc-l=<font>, mc-m=<font>, mc-b=<font>
\end{quote}
\item[\ttfamily gt=<font>] Same as
\begin{quote}
- \ttfamily gt-m=<font>, gt-bx=<font>, gt-eb=<font>
+ \ttfamily gt-m=<font>, gt-b=<font>, gt-eb=<font>
\end{quote}
\end{description}
If \texttt{deluxe} is not specified at loading the package,
- only \texttt{mc}~and~\texttt{gt} keys (among above 9~keys) have a meaning.
+ only \texttt{mc}~and~\texttt{gt} keys (among above 11~keys) have a meaning.
%</en>
\item[\cs{ltjnewpreset}*\{<name>\}\{<specification>\}]
%<*ja>
@@ -8543,7 +8545,7 @@ and use them by \cs{ltjapplypreset}. These two commands can only be used in the
\cs{ltjapplypreset}で実際に使うときに定義されていれば良い.
そのため,次のような記述も可能である:
\begin{lstlisting}
- \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+ \ltjnewpreset{hoge}{piyo,mc-b=HiraMinProN-W6}
\ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
\ltjapplypreset{hoge}
\end{lstlisting}
@@ -8562,7 +8564,7 @@ and use them by \cs{ltjapplypreset}. These two commands can only be used in the
Note that \cs{ltjnewpreset} does not ``expand'' the definition to define a preset.
This means that one can write as the following:
\begin{lstlisting}
- \ltjnewpreset{hoge}{piyo,mc-bx=HiraMinProN-W6}
+ \ltjnewpreset{hoge}{piyo,mc-b=HiraMinProN-W6}
\ltjnewpreset{piyo}{mg-m=HiraMaruProN-W4}
\ltjapplypreset{hoge}
\end{lstlisting}
@@ -8626,7 +8628,7 @@ This \cs{jH} is the same \cs{dimen} register as \cs{jQ}.
等しい.この \cs{jH} は \cs{jQ} と同じ寸法レジスタを指す.
%</ja>
-\dim{ltj@zw}
+\dim{ltj@dimen@zw}
%<*en>
A temporal register for the ``full-width'' of current Japanese font.
The command \cs{zw} sets this register to the correct value, and
@@ -8638,7 +8640,7 @@ The command \cs{zw} sets this register to the correct value, and
「このレジスタ自体を返す」.
%</ja>
-\dim{ltj@zh}
+\dim{ltj@dimen@zh}
%<*en>
A temporal register for the ``full-height'' (usually the sum of height of imaginary body and its depth) of current Japanese font.
The command \cs{zh} sets this register to the correct value, and
@@ -9939,6 +9941,10 @@ x+y&($\Param{diffrentjfm}=\texttt{both}$).
という3ノードを考える(それぞれ単独でクラスタをなす).
この場合,$p$と$q$の間は,実フォントが異なるにもかかわらず2.の状況となる一方で,
$q$と$r$の間は(実フォントが同じなのに)\texttt{jfmvar} キーの内容が異なるので3.の状況となる.
+
+ なお,JFMで\texttt{kanjiskip\_natural}, \texttt{kanjiskip\_stretch},\
+\texttt{kanjiskip\_shrink}キーが指定されていた場合は,……
+
\item[\Param{kanjiskip}~{[K]}] 上の[M]において空白が定まらなかった場合,
以下で定めた量「右空白」として採用する.
この段階においては,\cs{inhibitglue} は効力を持たないため,
diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
index bb6b5f0bd1..0c44c62e2a 100644
--- a/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
+++ b/macros/luatex/generic/luatexja/src/addons/luatexja-fontspec-27c.sty
@@ -3,21 +3,15 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{luatexja-fontspec-27c}[2019/11/15 fontspec support of LuaTeX-ja]
+\ProvidesPackage{luatexja-fontspec-27c}[2020/01/26 fontspec support of LuaTeX-ja]
\RequirePackage{l3keys2e}
\ExplSyntaxOn
%%%%%%%% Change Japanese font family by \rmfamily or not
-\cs_new:Npn \__ltj_fontspec_match_cmd {
+\bool_if:NT \__ltj_fontspec_match_bool {
\renewcommand\jttdefault{\gtdefault}
\@ltj@match@familytrue
- \DeclareDocumentCommand \setmonojfont { O{} m O{} } {
- \__ltj_fontspec_set_family:Nnn \jttdefault {##1,##3}{##2}
- \normalfont
- }
}
-\bool_if:NT \__ltj_fontspec_match_bool \__ltj_fontspec_match_cmd
-
%%%%%%%% Messages
\msg_new:nnn {luatexja-fontspec} {addjfontfeatures-ignored}
{
@@ -336,6 +330,11 @@
\normalfont
}
+\DeclareDocumentCommand \setmonojfont { O{} m O{} } {
+ \__ltj_fontspec_set_family:Nnn \jttdefault {#1,#3}{#2}
+ \normalfont
+}
+
\DeclareDocumentCommand \newjfontfamily { m O{} m O{} } {
\cs_set_eq:NN \fontspec_set_family:Nnn \__ltj_fontspec_set_family:Nnn
\newfontfamily #1 [#2,#4] {#3}
diff --git a/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty b/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
index e126f6f90f..050f78e915 100644
--- a/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
+++ b/macros/luatex/generic/luatexja/src/addons/luatexja-preset.sty
@@ -1,5 +1,5 @@
% luatexja-preset.sty
-\ProvidesPackage{luatexja-preset}[2019/03/26 Japanese font presets]
+\ProvidesPackage{luatexja-preset}[2020/01/26 Japanese font presets]
\RequirePackage{expl3,l3keys2e}
\RequirePackage{luatexja}
@@ -98,13 +98,17 @@
mc .code:n =
\prop_put:Nnn \g__ltjpreset_font_prop { mc-l } {#1}
\prop_put:Nnn \g__ltjpreset_font_prop { mc-m } {#1}
- \prop_put:Nnn \g__ltjpreset_font_prop { mc-bx } {#1},
+ \prop_put:Nnn \g__ltjpreset_font_prop { mc-b } {#1},
mc .groups:n = { preset }, mc .value_required:n = true,
+ mc-bx .code:n =
+ \prop_put:Nnn \g__ltjpreset_font_prop { mc-b } {#1},
gt .code:n =
\prop_put:Nnn \g__ltjpreset_font_prop { gt-u } {#1}
\prop_put:Nnn \g__ltjpreset_font_prop { gt-d } {#1}
- \prop_put:Nnn \g__ltjpreset_font_prop { gt-bx } {#1}
+ \prop_put:Nnn \g__ltjpreset_font_prop { gt-b } {#1}
\prop_put:Nnn \g__ltjpreset_font_prop { gt-eb } {#1},
+ gt-bx .code:n =
+ \prop_put:Nnn \g__ltjpreset_font_prop { gt-b } {#1},
gt-m .code:n = % gtfamily , medium series
\prop_put:Nnn \g__ltjpreset_font_prop { gt-u } {#1}
\prop_put:Nnn \g__ltjpreset_font_prop { gt-d } {#1},
@@ -120,20 +124,20 @@
}
\ltjpreset_define_preset_prop:n { mc-l }
\ltjpreset_define_preset_prop:n { mc-m }
-\ltjpreset_define_preset_prop:n { mc-bx }
+\ltjpreset_define_preset_prop:n { mc-b }
\ltjpreset_define_preset_prop:n { gt-u }
\ltjpreset_define_preset_prop:n { gt-d }
-\ltjpreset_define_preset_prop:n { gt-bx }
+\ltjpreset_define_preset_prop:n { gt-b }
\ltjpreset_define_preset_prop:n { gt-eb}
\ltjpreset_define_preset_prop:n { mg-m }
\cs_new:Nn \__ltjpreset_set_uni:nn {
- mc = #1, gt = #2, mc-bx = #2, mg-m = #2,
+ mc = #1, gt = #2, mc-b = #2, mg-m = #2,
__custom = false, __office = false, __noembed = false,
}
\cs_new:Npn \__ltjpreset_set_office:nn #1 #2{
- mc = #1, mc-bx = HGMinchoE ,
- gt-d = HGGothicM , gt-bx = HGGothicE ,
+ mc = #1, mc-b = HGMinchoE ,
+ gt-d = HGGothicM , gt-b = HGGothicE ,
gt-u = #2 , gt-eb = HGSoeiKakugothicUB ,
mg-m = HGMaruGothicMPRO,
__custom = false, __office = true, __noembed = false,
@@ -152,24 +156,24 @@
% 小塚 (Adobe)
%% Pro
\ltjpreset_declare_preset:nx{kozuka-pro}{
- mc-m = KozMinPro-Regular, mc-bx = KozMinPro-Bold,
- gt-d = KozGoPro-Regular, gt-bx = KozGoPro-Bold,
+ mc-m = KozMinPro-Regular, mc-b = KozMinPro-Bold,
+ gt-d = KozGoPro-Regular, gt-b = KozGoPro-Bold,
gt-u = KozGoPro-Medium, gt-eb = KozGoPro-Heavy,
mg-m = KozGoPro-Heavy, mc-l = KozMinPro-Light,
__custom = false, __office = false, __noembed = false,
}
%% Pr6
\ltjpreset_declare_preset:nx{kozuka-pr6}{
- mc-m = KozMinProVI-Regular, mc-bx = KozMinProVI-Bold,
- gt-d = KozGoProVI-Regular, gt-bx = KozGoProVI-Bold,
+ mc-m = KozMinProVI-Regular, mc-b = KozMinProVI-Bold,
+ gt-d = KozGoProVI-Regular, gt-b = KozGoProVI-Bold,
gt-u = KozGoProVI-Medium, gt-eb = KozGoProVI-Heavy,
mg-m = KozGoProVI-Heavy, mc-l = KozMinProVI-Light,
__custom = false, __office = false, __noembed = false,
}
%% Pr6N
\ltjpreset_declare_preset:nx{kozuka-pr6n}{
- mc-m = KozMinPr6N-Regular, mc-bx = KozMinPr6N-Bold,
- gt-d = KozGoPr6N-Regular, gt-bx = KozGoPr6N-Bold,
+ mc-m = KozMinPr6N-Regular, mc-b = KozMinPr6N-Bold,
+ gt-d = KozGoPr6N-Regular, gt-b = KozGoPr6N-Bold,
gt-u = KozGoPr6N-Medium, gt-eb = KozGoPr6N-Heavy,
mg-m = KozGoPr6N-Heavy, mc-l = KozMinPr6N-Light,
__custom = false, __office = false, __noembed = false,
@@ -177,15 +181,15 @@
% ヒラギノ (OSX)
\ltjpreset_declare_preset:nx{hiragino-pro}{
- mc-m = HiraMinPro-W3, mc-bx = HiraMinPro-W6,
- gt-d = HiraKakuPro-W3, gt-bx = HiraKakuPro-W6,
+ mc-m = HiraMinPro-W3, mc-b = HiraMinPro-W6,
+ gt-d = HiraKakuPro-W3, gt-b = HiraKakuPro-W6,
gt-u = HiraKakuPro-W6, gt-eb = HiraKakuStd-W8,
mg-m = HiraMaruPro-W4, mc-l = HiraMinPro-W2,
__custom = false, __office = false, __noembed = false,
}
\ltjpreset_declare_preset:nx{hiragino-pron}{
- mc-m = HiraMinProN-W3, mc-bx = HiraMinProN-W6,
- gt-d = HiraKakuProN-W3, gt-bx = HiraKakuProN-W6,
+ mc-m = HiraMinProN-W3, mc-b = HiraMinProN-W6,
+ gt-d = HiraKakuProN-W3, gt-b = HiraKakuProN-W6,
gt-u = HiraKakuProN-W6, gt-eb = HiraKakuStdN-W8,
mg-m = HiraMaruProN-W4, mc-l = HiraMinProN-W2,
__custom = false, __office = false, __noembed = false,
@@ -194,21 +198,21 @@
% モリサワ
\ltjpreset_declare_preset:nx{bizud}{
mc = BIZ-UDMinchoM.ttc,
- gt-d = BIZ-UDGothicR.ttc, gt-bx = BIZ-UDGothicB.ttc,
+ gt-d = BIZ-UDGothicR.ttc, gt-b = BIZ-UDGothicB.ttc,
gt-u = BIZ-UDGothicR.ttc, gt-eb = BIZ-UDGothicB.ttc,
mg-m = BIZ-UDGothicB.ttc,
__custom = false, __office = false, __noembed = false,
}
\ltjpreset_declare_preset:nx{morisawa-pro}{
- mc = A-OTF-RyuminPro-Light.otf, mc-bx = A-OTF-FutoMinA101Pro-Bold.otf,
- gt-d = A-OTF-GothicBBBPro-Medium.otf , gt-bx = A-OTF-FutoGoB101Pro-Bold.otf,
+ mc = A-OTF-RyuminPro-Light.otf, mc-b = A-OTF-FutoMinA101Pro-Bold.otf,
+ gt-d = A-OTF-GothicBBBPro-Medium.otf , gt-b = A-OTF-FutoGoB101Pro-Bold.otf,
gt-u = A-OTF-GothicBBBPro-Medium.otf , gt-eb = A-OTF-MidashiGoPro-MB31.otf,
mg-m = A-OTF-Jun101Pro-Light.otf,
__custom = false, __office = false, __noembed = false,
}
\ltjpreset_declare_preset:nx{morisawa-pr6n}{
- mc = A-OTF-RyuminPr6N-Light.otf, mc-bx = A-OTF-FutoMinA101Pr6N-Bold.otf,
- gt-d = A-OTF-GothicBBBPr6N-Medium.otf , gt-bx = A-OTF-FutoGoB101Pr6N-Bold.otf,
+ mc = A-OTF-RyuminPr6N-Light.otf, mc-b = A-OTF-FutoMinA101Pr6N-Bold.otf,
+ gt-d = A-OTF-GothicBBBPr6N-Medium.otf , gt-b = A-OTF-FutoGoB101Pr6N-Bold.otf,
gt-u = A-OTF-GothicBBBPr6N-Medium.otf , gt-eb = A-OTF-MidashiGoPr6N-MB31.otf,
mg-m = A-OTF-Jun101Pr6N-Light.otf,
__custom = false, __office = false, __noembed = false,
@@ -216,16 +220,16 @@
% 游明朝/游ゴシック (Win8.1)
\ltjpreset_declare_preset:nx{yu-win}{
- mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold,
- gt-d = YuGothic-Regular, gt-bx = YuGothic-Bold,
+ mc-m = YuMincho-Regular, mc-b = YuMincho-Demibold,
+ gt-d = YuGothic-Regular, gt-b = YuGothic-Bold,
gt-u = YuGothic-Regular, gt-eb = YuGothic-Bold,
mg-m = YuGothic-Bold, mc-l = YuMincho-Light,
__custom = false, __office = false, __noembed = false,
}
% Win10
\ltjpreset_declare_preset:nx{yu-win10}{
- mc-m = YuMincho-Regular, mc-bx = YuMincho-Demibold,
- gt-d = YuGothic-Regular, gt-bx = YuGothic-Bold,
+ mc-m = YuMincho-Regular, mc-b = YuMincho-Demibold,
+ gt-d = YuGothic-Regular, gt-b = YuGothic-Bold,
gt-u = YuGothic-Medium, gt-eb = YuGothic-Bold,
mg-m = YuGothic-Bold, mc-l = YuMincho-Light,
__custom = false, __office = false, __noembed = false,
@@ -234,24 +238,24 @@
% Yu fonts in OSX
% according to http://support.apple.com/kb/HT5944
\ltjpreset_declare_preset:nx{yu-osx}{
- mc = YuMincho~Medium, mc-bx = YuMincho~Demibold,
+ mc = YuMincho~Medium, mc-b = YuMincho~Demibold,
gt-d = YuGothic~Medium, gt-u = YuGothic~Medium,
- gt-bx = YuGothic~Bold, gt-eb = YuGothic~Bold,
+ gt-b = YuGothic~Bold, gt-eb = YuGothic~Bold,
mg-m = YuGothic~Bold,
__custom = false, __office = false, __noembed = false,
}
% moga-mobo
\ltjpreset_declare_preset:nx{moga-mobo}{
- mc = Moga90Mincho, mc-bx = Moga90Mincho~Bold,
- gt-d = Moga90Gothic, gt-bx = Moga90Gothic~Bold,
+ mc = Moga90Mincho, mc-b = Moga90Mincho~Bold,
+ gt-d = Moga90Gothic, gt-b = Moga90Gothic~Bold,
gt-u = Moga90Gothic, gt-eb = Moga90Gothic~Bold,
mg-m = Mobo90Gothic,
__custom = false, __office = false, __noembed = false,
}
\ltjpreset_declare_preset:nx{moga-mobo-ex}{
- mc = MogaEx90Mincho, mc-bx = MogaEx90Mincho~Bold,
- gt-d = MogaEx90Gothic, gt-bx = MogaEx90Gothic~Bold,
+ mc = MogaEx90Mincho, mc-b = MogaEx90Mincho~Bold,
+ gt-d = MogaEx90Gothic, gt-b = MogaEx90Gothic~Bold,
gt-u = MogaEx90Gothic, gt-eb = MogaEx90Gothic~Bold,
mg-m = MoboEx90Gothic,
__custom = false, __office = false, __noembed = false,
@@ -260,7 +264,7 @@
% Ume fones
\ltjpreset_declare_preset:nx{ume}{
mc = Ume~Mincho,
- gt-d = Ume~Gothic, gt-bx = Ume~Gothic~O5,
+ gt-d = Ume~Gothic, gt-b = Ume~Gothic~O5,
gt-u = Ume~Gothic~O5, gt-eb = Ume~Gothic~O5,
mg-m = Ume~Gothic~O4,
__custom = false, __office = false, __noembed = false,
@@ -269,9 +273,9 @@
% Source Han {Serif,Sans}
\ltjpreset_declare_preset:nx{sourcehan}{
mc-m = Source~Han~Serif~Regular,
- mc-bx = Source~Han~Serif~Bold,
+ mc-b = Source~Han~Serif~Bold,
gt-d = Source~Han~Sans~Regular,
- gt-bx = Source~Han~Sans~Bold,
+ gt-b = Source~Han~Sans~Bold,
gt-u = Source~Han~Sans~Medium,
gt-eb = Source~Han~Sans~Heavy,
mg-m = Source~Han~Sans~Heavy,
@@ -280,9 +284,9 @@
}
\ltjpreset_declare_preset:nx{sourcehan-jp}{
mc-m = Source~Han~Serif~JP~Regular,
- mc-bx = Source~Han~Serif~JP~Bold,
+ mc-b = Source~Han~Serif~JP~Bold,
gt-d = Source~Han~Sans~JP~Regular,
- gt-bx = Source~Han~Sans~JP~Bold,
+ gt-b = Source~Han~Sans~JP~Bold,
gt-u = Source~Han~Sans~JP~Medium,
gt-eb = Source~Han~Sans~JP~Heavy,
mg-m = Source~Han~Sans~JP~Heavy,
@@ -291,9 +295,9 @@
}
\ltjpreset_declare_preset:nx{noto-otc}{
mc-m = Noto~Serif~CJK~Regular,
- mc-bx = Noto~Serif~CJK~Bold,
+ mc-b = Noto~Serif~CJK~Bold,
gt-d = Noto~Sans~CJK~Regular,
- gt-bx = Noto~Sans~CJK~Bold,
+ gt-b = Noto~Sans~CJK~Bold,
gt-u = Noto~Sans~CJK~Medium,
gt-eb = Noto~Sans~CJK~Black,
mg-m = Noto~Sans~CJK~Black,
@@ -302,9 +306,9 @@
}
\ltjpreset_declare_preset:nx{noto-otf}{
mc-m = Noto~Serif~CJK~JP~Regular,
- mc-bx = Noto~Serif~CJK~JP~Bold,
+ mc-b = Noto~Serif~CJK~JP~Bold,
gt-d = Noto~Sans~CJK~JP~Regular,
- gt-bx = Noto~Sans~CJK~JP~Bold,
+ gt-b = Noto~Sans~CJK~JP~Bold,
gt-u = Noto~Sans~CJK~JP~Medium,
gt-eb = Noto~Sans~CJK~JP~Black,
mg-m = Noto~Sans~CJK~JP~Black,
@@ -315,9 +319,9 @@
% HaranoAji {Mincho, Gothic}
\ltjpreset_declare_preset:nx{haranoaji}{
mc-m = HaranoAjiMincho-Regular.otf,
- mc-bx = HaranoAjiMincho-Bold.otf,
+ mc-b = HaranoAjiMincho-Bold.otf,
gt-d = HaranoAjiGothic-Regular.otf,
- gt-bx = HaranoAjiGothic-Bold.otf,
+ gt-b = HaranoAjiGothic-Bold.otf,
gt-u = HaranoAjiGothic-Medium.otf,
gt-eb = HaranoAjiGothic-Heavy.otf,
mg-m = HaranoAjiGothic-Heavy.otf,
@@ -392,18 +396,18 @@
%%%% リストからの展開
\cs_set:Nx \__ltjpreset_font_mc_l: { \prop_item:Nn \g__ltjpreset_font_prop { mc-l } }
\cs_set:Nx \__ltjpreset_font_mc_m: { \prop_item:Nn \g__ltjpreset_font_prop { mc-m } }
- \cs_set:Nx \__ltjpreset_font_mc_bx: { \prop_item:Nn \g__ltjpreset_font_prop { mc-bx } }
+ \cs_set:Nx \__ltjpreset_font_mc_b: { \prop_item:Nn \g__ltjpreset_font_prop { mc-b } }
\cs_set:Nx \__ltjpreset_font_gt_m: { \prop_item:Nn \g__ltjpreset_font_prop { gt-d } }
\cs_set:Nx \__ltjpreset_font_gt_u: { \prop_item:Nn \g__ltjpreset_font_prop { gt-u } }
- \cs_set:Nx \__ltjpreset_font_gt_bx: { \prop_item:Nn \g__ltjpreset_font_prop { gt-bx } }
+ \cs_set:Nx \__ltjpreset_font_gt_b: { \prop_item:Nn \g__ltjpreset_font_prop { gt-b } }
\cs_set:Nx \__ltjpreset_font_gt_eb: { \prop_item:Nn \g__ltjpreset_font_prop { gt-eb } }
\cs_set:Nx \__ltjpreset_font_mg_m: { \prop_item:Nn \g__ltjpreset_font_prop { mg-m } }
%% HG 系フォント + JIS2004/90JIS のときはフォント名を置換
\bool_if:nT { !\g__ltjpreset_custom_bool && \g__ltjpreset_office_bool } {
\tl_set:Nn \l_tmpa_tl {, CJKShape=JIS2004 }
\tl_if_eq:NNT \l__ltjpreset_kanji_shape_tl \l_tmpa_tl {
- \cs_set:Nx \__ltjpreset_font_mc_bx: { hgrme04.ttc }
- \cs_set:Nx \__ltjpreset_font_gt_bx: { hgrge04.ttc }
+ \cs_set:Nx \__ltjpreset_font_mc_b: { hgrme04.ttc }
+ \cs_set:Nx \__ltjpreset_font_gt_b: { hgrge04.ttc }
\cs_set:Nx \__ltjpreset_font_gt_eb: { hgrsgu04.ttc }
\cs_set:Nx \__ltjpreset_font_mg_m: { hgrsmp04.ttf }
\cs_set_eq:NN \__ltjpreset_font_gt_m: \__ltjpreset_font_gt_u:
@@ -411,8 +415,8 @@
}
\tl_set:Nn \l_tmpa_tl {, CJKShape=JIS1990 }
\tl_if_eq:NNT \l__ltjpreset_kanji_shape_tl \l_tmpa_tl {
- \cs_set:Nx \__ltjpreset_font_mc_bx: { hgrme.ttc }
- \cs_set:Nx \__ltjpreset_font_gt_bx: { hgrge.ttc }
+ \cs_set:Nx \__ltjpreset_font_mc_b: { hgrme.ttc }
+ \cs_set:Nx \__ltjpreset_font_gt_b: { hgrge.ttc }
\cs_set:Nx \__ltjpreset_font_gt_eb: { hgrsgu.ttc }
\cs_set:Nx \__ltjpreset_font_mg_m: { hgrsmp.ttf }
}
@@ -426,14 +430,14 @@
%% bold オプションの処理
\bool_if:NTF \g__ltjpreset_deluxe_bool {
\bool_if:NT \g__ltjpreset_bold_bool {
- \cs_set_eq:NN \__ltjpreset_font_mc_bx: \__ltjpreset_font_gt_bx:
+ \cs_set_eq:NN \__ltjpreset_font_mc_b: \__ltjpreset_font_gt_b:
}
}{
\bool_if:NTF \g__ltjpreset_bold_bool
- { \cs_set_eq:NN \__ltjpreset_font_gt_m: \__ltjpreset_font_gt_bx: }
+ { \cs_set_eq:NN \__ltjpreset_font_gt_m: \__ltjpreset_font_gt_b: }
{ \cs_set_eq:NN \__ltjpreset_font_gt_m: \__ltjpreset_font_gt_u: }
- \cs_set_eq:NN \__ltjpreset_font_gt_bx: \__ltjpreset_font_gt_m:
- \cs_set_eq:NN \__ltjpreset_font_mc_bx: \__ltjpreset_font_gt_m:
+ \cs_set_eq:NN \__ltjpreset_font_gt_b: \__ltjpreset_font_gt_m:
+ \cs_set_eq:NN \__ltjpreset_font_mc_b: \__ltjpreset_font_gt_m:
}
}
@@ -475,9 +479,9 @@
%%%%%%%% deluxe (\mgfamily はあとで定義)
\bool_if:NTF \g__ltjpreset_deluxe_bool {
\cs_new:Nn \__ltjpreset_check_deluxe_existence: {
- \__ltjpreset_substitute:nnnn { gt } { eb } { gt } { bx }
- \__ltjpreset_substitute:nnnn { mg } { m } { gt } { bx }
- \__ltjpreset_substitute:nnnn { mc } { l } { mc } { m }
+ \__ltjpreset_substitute:nnnn { gt } { eb } { gt } { b }
+ \__ltjpreset_substitute:nnnn { mg } { m } { gt } { b }
+ \__ltjpreset_substitute:nnnn { mc } { l } { mc } { m }
}
\def\ltdefault{l}
\DeclareRobustCommand\ltseries { \not@math@alphabet\ltseries\relax\fontseries\ltdefault\selectfont }
@@ -555,7 +559,7 @@
\DeclareKanjiFamily{JT3}{\gtdefault}{}
\unless\ifltj@disablejfam
\SetSymbolFont{mincho}{normal}{JY3}{\mcdefault}{m}{n}
- \SetSymbolFont{mincho}{bold}{JY3}{\mcdefault}{bx}{n}
+ \SetSymbolFont{mincho}{bold}{JY3}{\mcdefault}{b}{n}
\DeclareMathAlphabet{\mathgt}{JY3}{\gtdefault}{m}{n}
\fi
\bool_if:NT \g__ltjpreset_deluxe_bool {
@@ -572,11 +576,11 @@
\tl_set:Nx \l__ltjpreset_kanji_shape_tl { ;+jp04 }
}
\__ltjpreset_define_family:nnn {mc} {m} {\__ltjpreset_font_mc_m:}
- \__ltjpreset_define_family:nnn {mc} {bx} {\__ltjpreset_font_mc_bx:}
- \__ltjpreset_define_family:nnn {mc} {b} {\__ltjpreset_font_mc_bx:}
+ \__ltjpreset_define_family:nnn {mc} {bx} {\__ltjpreset_font_mc_b:}
+ \__ltjpreset_define_family:nnn {mc} {b} {\__ltjpreset_font_mc_b:}
\__ltjpreset_define_family:nnn {gt} {m} {\__ltjpreset_font_gt_m:}
- \__ltjpreset_define_family:nnn {gt} {bx} {\__ltjpreset_font_gt_bx:}
- \__ltjpreset_define_family:nnn {gt} {b} {\__ltjpreset_font_gt_bx:}
+ \__ltjpreset_define_family:nnn {gt} {bx} {\__ltjpreset_font_gt_b:}
+ \__ltjpreset_define_family:nnn {gt} {b} {\__ltjpreset_font_gt_b:}
\normalfont
\bool_if:NT \g__ltjpreset_deluxe_bool {
\__ltjpreset_define_family:nnn {mc} {l} {\__ltjpreset_font_mc_l:}
@@ -622,12 +626,12 @@
}
},
}
- BoldFont = \__ltjpreset_font_mc_bx: \tl_use:N \l__ltjpreset_add_features_tl,
+ BoldFont = \__ltjpreset_font_mc_b: \tl_use:N \l__ltjpreset_add_features_tl,
\cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
UprightFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
{ mc } { m } { \__ltjpreset_font_mc_m: } },
BoldFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
- { mc } { bx } { \__ltjpreset_font_mc_bx: } },
+ { mc } { b } { \__ltjpreset_font_mc_b: } },
}
] { \__ltjpreset_font_mc_m: }
\setsansjfont [
@@ -639,12 +643,12 @@
}
},
}
- BoldFont = \__ltjpreset_font_gt_bx: \tl_use:N \l__ltjpreset_add_features_tl,
+ BoldFont = \__ltjpreset_font_gt_b: \tl_use:N \l__ltjpreset_add_features_tl,
\cs_if_exist:NT \ltjpreset_define_family_hook_fontspec:nnn {
UprightFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
{ gt } { m } { \__ltjpreset_font_gt_m: } },
BoldFeatures = { \ltjpreset_define_family_hook_fontspec:nnn
- { gt } { bx } { \__ltjpreset_font_gt_bx: } },
+ { gt } { b } { \__ltjpreset_font_gt_b: } },
}
] { \__ltjpreset_font_gt_m: }
\bool_if:NT \g__ltjpreset_deluxe_bool {
diff --git a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
index 685cea7191..d3f9d99aa2 100644
--- a/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-jfmglue.lua
@@ -3,7 +3,7 @@
--
luatexbase.provides_module({
name = 'luatexja.jfmglue',
- date = '2019/09/26',
+ date = '2020/01/23',
description = 'Insertion process of JFM glues, [x]kanjiskip and others',
})
luatexja.jfmglue = luatexja.jfmglue or {}
@@ -557,6 +557,8 @@ function calc_np(last, lp)
Np.post, Np.pre, Np.xspc = nil, nil, nil
Np.first, Np.id, Np.last, Np.met, Np.class= nil, nil, nil, nil
Np.auto_kspc, Np.auto_xspc, Np.char, Np.nuc = nil, nil, nil, nil
+ -- auto_kspc, auto_xspc: normally true/false,
+ -- but the number 0 when Np is ''the beginning of the box/paragraph''.
for k in pairs(Np) do Np[k] = nil end
for k = 1,#Bp do Bp[k] = nil end
@@ -782,56 +784,50 @@ do
local function blend_diffmet(b, a, rb, ra)
return round(luatexja.jfmglue.diffmet_rule((1-rb)*b+rb*a, (1-ra)*b+ra*a))
end
+ local blend_diffmet_inf
+ do
+ local abs, log, log264, floor = math.abs, math.log, math.log(2)*64, math.floor
+ blend_diffmet_inf = function (b, a, bo, ao, rb, ra)
+ local nb, na = (bo and b*2.0^(64*bo) or 0), (ao and a*2.0^(64*ao) or 0)
+ local r = luatexja.jfmglue.diffmet_rule((1-rb)*nb+rb*na, (1-ra)*nb+ra*na)
+ local ro = (r~=0) and floor(log(abs(r))/log264+0.0625) or 0
+ return round(r/2.^(64*ro)), ro
+ end
+ end
+ local getglue = luatexja.getglue
calc_ja_ja_aux = function (gb, ga, db, da)
if luatexja.jfmglue.diffmet_rule ~= math.two_pleft and diffmet_rule ~= math.two_pright
and luatexja.jfmglue.diffmet_rule ~= math.two_paverage then
db, da = 0, 1
end
if not gb then
- if ga then
- gb = node_new(id_kern, 1); setfield(gb, 'kern', 0)
+ if ga then gb = node_new(id_kern, 1); setfield(gb, 'kern', 0)
else return nil end
elseif not ga then
ga = node_new(id_kern, 1); setfield(ga, 'kern', 0)
end
-
- local k = 2*getid(gb) - getid(ga)
- if k == bg_ag then
- -- 両方とも glue.
- setglue(gb, blend_diffmet(
- getfield(gb, 'width'), getfield(ga, 'width'), db, da),
- blend_diffmet(
- getfield(gb, 'stretch'), getfield(ga, 'stretch'), db, da),
- -blend_diffmet(
- -getfield(gb, 'shrink'), -getfield(ga, 'shrink'), db, da))
- node_free(ga)
- return gb
- elseif k == bk_ak then
- -- 両方とも kern.
- setfield(gb, 'kern', blend_diffmet(
- getfield(gb, 'kern'), getfield(ga, 'kern'), db, da))
- node_free(ga)
- return gb
- elseif k == bk_ag then
- -- gb: kern, ga: glue
- setglue(ga, blend_diffmet(
- getfield(gb, 'kern'), getfield(ga, 'width'), db, da),
- blend_diffmet(
- 0, getfield(ga, 'stretch'), db, da),
- -blend_diffmet(
- 0, -getfield(ga, 'shrink'), db, da))
- node_free(gb)
- return ga, 0, 0, 0
+ local gbw, gaw, gbst, gast, gbsto, gasto, gbsh, gash, gbsho, gasho
+ if getid(gb)==id_glue then
+ gbw, gbst, gbsh, gbsto, gbsho = getglue(gb)
+ else
+ gbw = getfield(gb, 'kern')
+ end
+ if getid(ga)==id_glue then
+ gaw, gast, gash, gasto, gasho = getglue(ga)
+ else
+ gaw = getfield(ga, 'kern')
+ end
+ if not (gbst or gast) then -- 両方とも kern
+ setfield(gb, 'kern', blend_diffmet(gbw, gaw, db, da))
+ node_free(ga); return gb
else
- -- gb: glue, ga: kern
- setglue(gb, blend_diffmet(
- getfield(gb, 'width'), getfield(ga, 'kern'), db, da),
- blend_diffmet(
- getfield(gb, 'stretch'), 0, db, da),
- -blend_diffmet(
- -getfield(gb, 'shrink'), 0, db, da))
- node_free(ga)
- return gb
+ local gr = gb
+ if not gbst then gr = ga; node_free(gb) else node_free(ga) end
+ gbw = blend_diffmet(gbw or 0, gaw or 0, db, da) -- 結果の自然長
+ gbst, gbsto = blend_diffmet_inf(gbst, gast, gbsto, gasto, db, da) -- 伸び
+ gbsh, gbsho = blend_diffmet_inf(-(gbsh or 0), -(gash or 0), gbsho, gasho, db, da) -- -(縮み)
+ setglue(gr, gbw, gbst, -gbsh, gbsto, gbsho)
+ return gr
end
end
end
@@ -846,7 +842,10 @@ do
local KANJI_SKIP_JFM = luatexja.icflag_table.KANJI_SKIP_JFM
get_kanjiskip_low = function(flag, qm, bn, bp, bh)
- if flag or (qm.with_kanjiskip and (bn or bp or bh)) then
+ -- flag = false: kanjiskip そのもの(パラメータ or JFM)
+ -- ノード kanji_skip のコピーで良い場合は nil が帰る
+ -- flag = true: JFM グルーに付随する kanjiskip 自然長/伸び/縮み分
+ if qm.with_kanjiskip and (bn or bp or bh) then
if kanjiskip_jfm_flag then
local g = node_new(id_glue);
local bk = qm.kanjiskip or null_skip_table
@@ -856,14 +855,14 @@ do
set_attr(g, attr_icflag, KANJI_SKIP_JFM)
return g
elseif flag then
- return node_copy(kanji_skip)
- else
- local g = node_new(id_glue);
+ local g = node_new(id_glue)
+ local st = bp and (bp*getfield(kanji_skip, 'stretch')) or 0
+ local sh = bh and (bh*getfield(kanji_skip, 'shrink')) or 0
setglue(g,
bn and (bn*getfield(kanji_skip, 'width')) or 0,
- bp and (bp*getfield(kanji_skip, 'stretch')) or 0,
- bh and (bh*getfield(kanji_skip, 'shrink')) or 0,
- 0, 0)
+ st, sh,
+ (st==0) and 0 or getfield(kanji_skip, 'stretch_order'),
+ (sh==0) and 0 or getfield(kanji_skip, 'shrink_order'))
set_attr(g, attr_icflag, KANJI_SKIP_JFM)
return g
end
@@ -876,11 +875,17 @@ do
elseif Np.auto_kspc or Nq.auto_kspc then
local pm, qm = Np.met, Nq.met
if (pm.char_type==qm.char_type) and (qm.var==pm.var) then
- return get_kanjiskip_low(true, qm, 1, 1, 1)
+ return get_kanjiskip_low(false, qm, 1, 1, 1) or node_copy(kanji_skip)
else
- local gb = get_kanjiskip_low(true, qm, 1, 1, 1)
- local ga = get_kanjiskip_low(true, pm, 1, 1, 1)
- return calc_ja_ja_aux(gb, ga, 0, 1)
+ local gb = get_kanjiskip_low(false, qm, 1, 1, 1)
+ if gb then
+ return calc_ja_ja_aux(gb,
+ get_kanjiskip_low(false, pm, 1, 1, 1) or node_copy(kanji_skip), 0, 1)
+ else
+ local ga = get_kanjiskip_low(false, pm, 1, 1, 1)
+ return (ga and calc_ja_ja_aux(node_copy(kanji_skip), ga, 0, 1))
+ or node_copy(kanji_skip)
+ end
end
else
local g = node_new(id_glue)
@@ -894,7 +899,7 @@ do
local qmc, pmc = qm.char_type, pm.char_type
if (qmc==pmc) and (qm.var==pm.var) then
local g, _, kn, kp, kh = new_jfm_glue(qmc, Nq.class, Np.class)
- return g, (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(false, qm, kn, kp, kh)
+ return g, (Np.auto_kspc or Nq.auto_kspc) and get_kanjiskip_low(true, qm, kn, kp, kh)
else
local npn, nqn = Np.nuc, Nq.nuc
local gb, db, bn, bp, bh
@@ -908,11 +913,11 @@ do
Np.class)
local g = calc_ja_ja_aux(gb, ga, db, da)
local k
- if (pmc==qmc) and (qm.var==pm.var) then
- gb = get_kanjiskip_low(false, qm, bn, bp, bh)
- ga = get_kanjiskip_low(false, pm, an, ap, ah)
- k = calc_ja_ja_aux(gb, ga, db, da)
- end
+ --if (pmc==qmc) and (qm.var==pm.var) then
+ gb = get_kanjiskip_low(true, qm, bn, bp, bh)
+ ga = get_kanjiskip_low(true, pm, an, ap, ah)
+ k = calc_ja_ja_aux(gb, ga, db, da)
+ --end
return g, k
end
end
@@ -946,7 +951,8 @@ do
bn and (bn*getfield(xkanji_skip, 'width')) or 0,
bp and (bp*getfield(xkanji_skip, 'stretch')) or 0,
bh and (bh*getfield(xkanji_skip, 'shrink')) or 0,
- 0, 0)
+ bp and getfield(xkanji_skip, 'stretch_order') or 0,
+ bh and getfield(xkanji_skip, 'shrink_order') or 0)
set_attr(g, attr_icflag, XKANJI_SKIP_JFM)
return g
end
@@ -1005,7 +1011,7 @@ local function get_OA_skip(is_kanji)
Np.class)
local k
if is_kanji==0 then
- k = combine_spc('auto_kspc') and get_kanjiskip_low(false, pm, kn, kp, kh)
+ k = combine_spc('auto_kspc') and get_kanjiskip_low(true, pm, kn, kp, kh)
end
return g, k
end
@@ -1017,7 +1023,7 @@ local function get_OB_skip(is_kanji)
(((Np.id==id_glue)or(Np.id==id_kern)) and 'glue' or 'jcharbdd'), qm))
local k
if is_kanji==0 then
- k = combine_spc('auto_kspc') and get_kanjiskip_low(false, qm, kn, kp, kh)
+ k = combine_spc('auto_kspc') and get_kanjiskip_low(true, qm, kn, kp, kh)
end
return g, k
end
diff --git a/macros/luatex/generic/luatexja/src/ltj-math.lua b/macros/luatex/generic/luatexja/src/ltj-math.lua
index cd24e2294a..b6ef1a9dd3 100644
--- a/macros/luatex/generic/luatexja/src/ltj-math.lua
+++ b/macros/luatex/generic/luatexja/src/ltj-math.lua
@@ -165,17 +165,27 @@ function (p, sty)
return p
end
-luatexbase.add_to_callback('mlist_to_hlist',
- function (n, display_type, penalties)
- n = to_direct(n); list_dir = ltjd_get_dir_count()
- if getid(n)==id_whatsit and getsubtype(n)==sid_user and
+do
+ local function mlist_callback_ltja(n)
+ local n = to_direct(n); list_dir = ltjd_get_dir_count()
+ if getid(n)==id_whatsit and getsubtype(n)==sid_user and
getfield(n, 'user_id') == DIR then
- local old_n = n; n = node_remove(n, n)
- node_free(old_n); if not n then return nil end
- end
- return node.mlist_to_hlist(
- to_node(conv_jchar_to_hbox(n, 0)),
- display_type, penalties)
- end,'ltj.mlist_to_hlist', 1)
+ local old_n = n; n = node_remove(n, n)
+ node_free(old_n); if not n then return nil end
+ end
+ return to_node(conv_jchar_to_hbox(n, 0))
+ end
+ -- LaTeX 2020-02-02 seems to have pre_mlist_to_hlist_filter callback
+ if luatexbase.callbacktypes['pre_mlist_to_hlist_filter'] then
+ luatexbase.add_to_callback('pre_mlist_to_hlist_filter',
+ mlist_callback_ltja, 'ltj.mlist_to_hlist_pre', 1)
+ else
+ local mlist_to_hlist = node.mlist_to_hlist
+ luatexbase.add_to_callback('mlist_to_hlist',
+ function (n, display_type, penalties)
+ return mlist_to_hlist(mlist_callback_ltja(n),display_type, penalties)
+ end,'ltj.mlist_to_hlist', 1)
+ end
+end
luatexja.math = { is_math_letters = is_math_letters }
diff --git a/macros/luatex/generic/luatexja/src/ltjclasses.dtx b/macros/luatex/generic/luatexja/src/ltjclasses.dtx
index 590ff597a2..9da4e2b748 100644
--- a/macros/luatex/generic/luatexja/src/ltjclasses.dtx
+++ b/macros/luatex/generic/luatexja/src/ltjclasses.dtx
@@ -5,7 +5,7 @@
%
% Copyright 1995-2001 ASCII Corporation.
% Copyright (c) 2010 ASCII MEDIA WORKS
-% Copyright (c) 2016-2018 Japanese TeX Development Community
+% Copyright (c) 2016-2020 Japanese TeX Development Community
%
% This file is part of the pLaTeX2e system (community edition).
% -------------------------------------------------------------
@@ -123,6 +123,11 @@
% \changes{v1.8b-ltj-17}{2019/08/12}{disablejfamの``Unused global option(s)''警告を出さないようにした}
% \changes{v1.8c}{2019/10/17}{フォントサイズ変更命令をrobustに
% (sync with classes.dtx 2019/08/27 v1.4j)}
+% \changes{v1.8d}{2019/10/25}{Don't use \cs{MakeRobust} if
+% in rollback prior to 2015
+% (sync with classes.dtx 2019/10/25 v1.4k)}
+% \changes{v1.8e}{2020/01/03}{Normalize label fonts
+% (sync with classes.dtx 2019/12/20 v1.4l)}
% \fi
%
% \iffalse
@@ -152,7 +157,7 @@
%<11pt&bk>\ProvidesFile{ltjtbk11.clo}
%<12pt&bk>\ProvidesFile{ltjtbk12.clo}
%</tate>
- [2019/10/17 v1.8c-ltj-17
+ [2020/01/13 v1.8e-ltj-17
%<article|report|book> Standard LuaLaTeX-ja class]
%<10pt|11pt|12pt> Standard LuaLaTeX-ja file (size option)]
%<*driver>
@@ -162,12 +167,18 @@
\begingroup
\suppressfontnotfounderror=1
\global\font\testfont=file:KozMinPr6N-Regular.otf
+ \global\font\testfonta=file:HaranoAjiMincho-Regular.otf
\endgroup
-\ifx\testfont\nullfont
+\ifx\testfonta\nullfont\ifx\testfont\nullfont
\usepackage[ipaex,nfssonly]{luatexja-preset}
\else
\usepackage[kozuka-pr6n,nfssonly]{luatexja-preset}
+\fi\else
+ \usepackage[haranoaji,nfssonly]{luatexja-preset}
\fi
+\let\testfont\undefined\let\testfonta\undefined
+\usepackage{unicode-math}
+\setmathfont{Latin Modern Math}
\def\pLaTeX{p\kern-.05em\LaTeX}
\usepackage[unicode]{hyperref}
\title{Lua\LaTeX-ja用\texttt{jclasses}互換クラス}
@@ -725,10 +736,17 @@
% カーネルの定義を|\renewcommand|した後に|\MakeRobust|を使っている理由は、
% ログに |LaTeX Info: Redefining \normalsize on input line ...| という
% メッセージを出したくないからです。
+% ただし、\textsf{latexrelease}パッケージで2015/01/01より
+% 昔の日付に巻き戻っている場合は|\MakeRobust|が定義されていません。
% \changes{v1.8c}{2019/10/17}{フォントサイズ変更命令をrobustに
% (sync with classes.dtx 2019/08/27 v1.4j)}
+% \changes{v1.8d}{2019/10/25}{Don't use \cs{MakeRobust} if
+% in rollback prior to 2015
+% (sync with classes.dtx 2019/10/25 v1.4k)}
% \begin{macrocode}
-\MakeRobust\normalsize
+\ifx\MakeRobust\@undefined \else
+ \MakeRobust\normalsize
+\fi
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -3485,17 +3503,20 @@
% itemize環境のそれぞれの項目のラベルは、
% |\labelenumi| \ldots\ |\labelenumiv|で生成されます。
% \changes{v1.1a}{1997/01/28}{Bug fix: \cs{labelitemii}.}
+% \changes{v1.8e}{2020/01/03}{Normalize label fonts
+% (sync with classes.dtx 2019/12/20 v1.4l)}
% \begin{macrocode}
-\newcommand{\labelitemi}{\textbullet}
+\newcommand{\labelitemi}{\labelitemfont \textbullet}
\newcommand{\labelitemii}{%
\ifnum\ltjgetparameter{direction}=3
- {\textcircled{~}}
+ {\labelitemfont \textcircled{~}}
\else
- {\normalfont\bfseries\textendash}
+ {\labelitemfont \bfseries\textendash}
\fi
}
-\newcommand{\labelitemiii}{\textasteriskcentered}
-\newcommand{\labelitemiv}{\textperiodcentered}
+\newcommand{\labelitemiii}{\labelitemfont \textasteriskcentered}
+\newcommand{\labelitemiv}{\labelitemfont \textperiodcentered}
+\newcommand\labelitemfont{\normalfont}
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/luatex/generic/luatexja/src/ltjltxdoc.dtx b/macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
index 0a5c2b370f..9d4bf2114a 100644
--- a/macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
+++ b/macros/luatex/generic/luatexja/src/ltjltxdoc.dtx
@@ -4,8 +4,11 @@
% Original: jltxdoc.dtx
%
% Copyright 1995,1996,1997 ASCII Corporation.
+% Copyright (c) 2010 ASCII MEDIA WORKS
+% Copyright (c) 2016 Japanese TeX Development Community
+% Copyright (c) 2016-2017 Japanese TeX Development Community
%
-% This file is part of pLaTeX2e system.
+% This file is part of the pLaTeX2e system (community edition).
% -------------------------------------
%
% \fi
@@ -31,7 +34,19 @@
%<*driver>
\documentclass{ltjltxdoc}
\GetFileInfo{ltjltxdoc.cls}
-\usepackage[kozuka-pr6n]{luatexja-preset}
+\begingroup
+ \suppressfontnotfounderror=1
+ \global\font\testfont=file:KozMinPr6N-Regular.otf
+ \global\font\testfonta=file:HaranoAjiMincho-Regular.otf
+\endgroup
+\ifx\testfonta\nullfont\ifx\testfont\nullfont
+ \usepackage[ipaex,nfssonly]{luatexja-preset}
+\else
+ \usepackage[kozuka-pr6n,nfssonly]{luatexja-preset}
+\fi\else
+ \usepackage[haranoaji,nfssonly]{luatexja-preset}
+\fi
+\let\testfont\undefined\let\testfonta\undefined
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\title{Lua\LaTeX-jaドキュメント記述用クラス}
diff --git a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
index be67a2f68e..f00552dfd8 100644
--- a/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
+++ b/macros/luatex/generic/luatexja/src/ltjsclasses.dtx
@@ -44,7 +44,7 @@
%<*driver>
\ProvidesFile{ltjsclasses.dtx}
%</driver>
- [2019/08/12 ltjsclasses ]
+ [2019/11/23 ltjsclasses ]
%<*driver>
\IfFileExists{luatex85.sty}{\RequirePackage{luatex85}}{}
\documentclass[disablejfam]{ltjsarticle}
@@ -53,12 +53,18 @@
\begingroup
\suppressfontnotfounderror=1
\global\font\testfont=file:KozMinPr6N-Regular.otf
+ \global\font\testfonta=file:HaranoAjiMincho-Regular.otf
\endgroup
-\ifx\testfont\nullfont
+\ifx\testfonta\nullfont\ifx\testfont\nullfont
\usepackage[ipaex,nfssonly]{luatexja-preset}
\else
\usepackage[kozuka-pr6n,nfssonly]{luatexja-preset}
-\fi
+\fi\else
+ \usepackage[haranoaji,nfssonly]{luatexja-preset}
+\fi
+\let\testfont\undefined\let\testfonta\undefined
+\usepackage{unicode-math}
+\setmathfont{Latin Modern Math}
\ltjsetparameter{alxspmode={`\*,allow}}
\ltjsetparameter{alxspmode={`\\,allow}}
%%%%\usepackage{unicode-math}
diff --git a/macros/luatex/generic/luatexja/src/luatexja-core.sty b/macros/luatex/generic/luatexja/src/luatexja-core.sty
index ba13695352..d870df0e28 100644
--- a/macros/luatex/generic/luatexja/src/luatexja-core.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja-core.sty
@@ -124,10 +124,10 @@
\def\ltj@loaded{hoge}
-\newdimen\ltj@zw
-\newdimen\ltj@zh
-\newdimen\jQ \jQ=0.25mm
-\let\jH=\jQ
+\newdimen\ltj@dimen@zw
+\newdimen\ltj@dimen@zh
+\newdimen\ltj@dimen@jQ \ltj@dimen@jQ=0.25mm
+\let\jQ=\ltj@dimen@jQ \let\jH=\jQ
%%%%%%%% error message
\def\ltj@defnum{0}
@@ -229,11 +229,13 @@
\newluafunction\ltj@zh@inner
\directlua{
local t, setdimen, ltjf = lua.get_functions_table(), tex.setdimen, luatexja.jfont
- t[\the\ltj@zw@inner] = function() setdimen('ltj@zw', ltjf.get_zw()) end
- t[\the\ltj@zh@inner] = function() setdimen('ltj@zh', ltjf.get_zh()) end
+ t[\the\ltj@zw@inner] = function() setdimen('ltj@dimen@zw', ltjf.get_zw()) end
+ t[\the\ltj@zh@inner] = function() setdimen('ltj@dimen@zh', ltjf.get_zh()) end
}
-\protected\def\zw{\luafunction\ltj@zw@inner\ltj@zw}
-\protected\def\zh{\luafunction\ltj@zh@inner\ltj@zh}
+\protected\def\ltj@zw{\luafunction\ltj@zw@inner\ltj@dimen@zw}
+\protected\def\ltj@zh{\luafunction\ltj@zh@inner\ltj@dimen@zh}
+\let\zw=\ltj@zw
+\let\zh=\ltj@zh
%%%%%%%% \inhibitglue
\newluafunction\ltj@reset@globaldefs@inner
diff --git a/macros/luatex/generic/luatexja/src/luatexja.lua b/macros/luatex/generic/luatexja/src/luatexja.lua
index 5ad31b3a6f..767659a1c3 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.lua
+++ b/macros/luatex/generic/luatexja/src/luatexja.lua
@@ -402,7 +402,7 @@ end
local prefix, inner_depth
local utfchar = utf.char
-local function debug_show_node_X(p,print_fn, limit)
+local function debug_show_node_X(p,print_fn, limit, inner_depth)
local k = prefix
local s
local pt=node_type(p.id)
@@ -451,7 +451,7 @@ local function debug_show_node_X(p,print_fn, limit)
prefix, inner_depth = prefix.. '.', inner_depth + 1
if inner_depth < limit then
for q in node.traverse(p.head) do
- debug_show_node_X(q, print_fn, limit)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
end
prefix=k
@@ -466,15 +466,15 @@ local function debug_show_node_X(p,print_fn, limit)
if inner_depth < limit then
prefix, inner_depth = k.. 'p.', inner_depth + 1
for q in node.traverse(p.pre) do
- debug_show_node_X(q, print_fn, limit)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
prefix = k.. 'P.'
for q in node.traverse(p.post) do
- debug_show_node_X(q, print_fn, limit)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
prefix = k.. 'R.'
for q in node.traverse(p.replace) do
- debug_show_node_X(q, print_fn, limit)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
end
prefix=k
@@ -532,7 +532,7 @@ local function debug_show_node_X(p,print_fn, limit)
prefix, inner_depth =prefix.. '.', inner_depth + 1
if inner_depth < limit then
for q in node.traverse(p.value) do
- debug_show_node_X(q, print_fn, limit)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
end
prefix, inner_depth = k, bid
@@ -553,13 +553,13 @@ local function debug_show_node_X(p,print_fn, limit)
elseif pt=='noad' then
s = base ; print_fn(s)
if p.nucleus then
- prefix = k .. 'N'; debug_show_node_X(p.nucleus, print_fn, limit);
+ prefix = k .. 'N'; debug_show_node_X(p.nucleus, print_fn, limit, inner_depth);
end
if p.sup then
- prefix = k .. '^'; debug_show_node_X(p.sup, print_fn, limit);
+ prefix = k .. '^'; debug_show_node_X(p.sup, print_fn, limit, inner_depth);
end
if p.sub then
- prefix = k .. '_'; debug_show_node_X(p.sub, print_fn, limit);
+ prefix = k .. '_'; debug_show_node_X(p.sub, print_fn, limit, inner_depth);
end
prefix = k;
elseif pt=='math_char' then
@@ -570,7 +570,7 @@ local function debug_show_node_X(p,print_fn, limit)
if p.head then
prefix = k .. '.';
for q in node.traverse(p.head) do
- debug_show_node_X(q, print_fn)
+ debug_show_node_X(q, print_fn, limit, inner_depth)
end
end
else
@@ -583,7 +583,7 @@ function luatexja.ext_show_node_list(head,depth,print_fn, lim)
inner_depth = 0
if head then
while head do
- debug_show_node_X(head, print_fn, lim or 1/0); head = node_next(head)
+ debug_show_node_X(head, print_fn, lim or 1/0, inner_depth); head = node_next(head)
end
else
print_fn(prefix .. ' (null list)')
@@ -593,7 +593,7 @@ function luatexja.ext_show_node(head,depth,print_fn, lim)
prefix = depth
inner_depth = 0
if head then
- debug_show_node_X(head, print_fn, lim or 1/0)
+ debug_show_node_X(head, print_fn, lim or 1/0, inner_depth)
else
print_fn(prefix .. ' (null list)')
end
diff --git a/macros/luatex/generic/luatexja/src/luatexja.sty b/macros/luatex/generic/luatexja/src/luatexja.sty
index 82a5615306..5b53dcabae 100644
--- a/macros/luatex/generic/luatexja/src/luatexja.sty
+++ b/macros/luatex/generic/luatexja/src/luatexja.sty
@@ -35,13 +35,13 @@
\expandafter\let\csname ifltj@in@latex\expandafter\endcsname
\csname iftrue\endcsname
\NeedsTeXFormat{LaTeX2e}
- \ProvidesPackage{luatexja}[2019/09/26 Japanese Typesetting with Lua(La)TeX]
+ \ProvidesPackage{luatexja}[2020/01/27 Japanese Typesetting with Lua(La)TeX]
\DeclareOption{disablejfam}{\ltj@disablejfamtrue}
\DeclareOption*{}
\ProcessOptions\relax
\fi %</LaTeX>
%%%% VERSION
-\def\LuaTeXjaversion{20191118.0}
+\def\LuaTeXjaversion{20200127.0}
\directlua{require('ltj-unicode-ccfix.lua')}% catcode of ideographs
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
index 13bbc63ce1..a6b71f3b6a 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjcore.sty
@@ -205,6 +205,7 @@
\language\l@nohyphenation
\@ifstar\@sverb\@verb}
\fi
+\patchcmd{\do@noligs}{\kern\z@}{\vadjust{}}{}{} % reported by p_typo
\gdef\@stopfield{%
\inhibitglue\@tempskipa\lastskip\unskip
\hskip\@tempskipa\color@endgroup\egroup}
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
index 204adbc62e..347f66b468 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjdefs.sty
@@ -32,7 +32,13 @@
\newcommand\kanjiencodingdefault{JY3}
\newcommand\kanjifamilydefault{\mcdefault}
\newcommand\kanjiseriesdefault{\mddefault}
-\newcommand\kanjishapedefault{\updefault}
+\ifdefined\shapedefault
+ %% LaTeX 2020-02-02
+ \newcommand\kanjishapedefault{\shapedefault}
+\else
+ %% LaTeX 2019-10-01
+ \newcommand\kanjishapedefault{\updefault}
+\fi
\DeclareKanjiFamily{JY3}{mc}{}
\DeclareFontShape{JY3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdmcfont:jfm=\ltj@stdyokojfm}{}
@@ -40,8 +46,8 @@
\DeclareFontShape{JY3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdyokojfm}{}
\DeclareFontShape{JY3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
\DeclareFontShape{JY3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
-\DeclareFontShape{JY3}{mc}{b}{n}{<-> ssub*mc/bx/n}{}
-\DeclareFontShape{JY3}{gt}{b}{n}{<-> ssub*gt/bx/n}{}
+\DeclareFontShape{JY3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JY3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
\DeclareKanjiFamily{JT3}{mc}{}
\DeclareFontShape{JT3}{mc}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdmcfont:jfm=\ltj@stdtatejfm}{}
@@ -49,8 +55,8 @@
\DeclareFontShape{JT3}{gt}{m}{n}{<-> s*[\ifdefined\Cjascale\Cjascale\else 0.962216\fi] \ltj@stdgtfont:jfm=\ltj@stdtatejfm}{}
\DeclareFontShape{JT3}{mc}{bx}{n}{<-> ssub*gt/m/n}{}
\DeclareFontShape{JT3}{gt}{bx}{n}{<-> ssub*gt/m/n}{}
-\DeclareFontShape{JT3}{mc}{b}{n}{<-> ssub*mc/bx/n}{}
-\DeclareFontShape{JT3}{gt}{b}{n}{<-> ssub*gt/bx/n}{}
+\DeclareFontShape{JT3}{mc}{b}{n}{<-> ssub*gt/m/n}{}
+\DeclareFontShape{JT3}{gt}{b}{n}{<-> ssub*gt/m/n}{}
\KanjiEncodingPair{JY3}{JT3}
\DeclareRelationFont{JY3}{gt}{m}{}{TU}{lmr}{bx}{}
@@ -77,25 +83,51 @@
\DeclareMathAlphabet{\mathgt}{JY3}{gt}{m}{n}
\fi
+\ifdefined\@rmfamilyhook
+%%%% LaTeX 2020-02-02
+\edef\bfseries@mc{\bfdefault}
+\edef\bfseries@gt{\bfdefault}
+\def\bfseries@jtt{\bfseries@mc}
+\edef\mdseries@mc{\mddefault}
+\edef\mdseries@gt{\mddefault}
+\def\mdseries@jtt{\mdseries@mc}
+\fi
+
\newif\if@ltj@match@family
\@ltj@match@familyfalse
\def\verbatim@font{\normalfont\ttfamily\kanjifamily\jttdefault\selectfont}
-\DeclareRobustCommand\rmfamily
- {\not@math@alphabet\rmfamily\mathrm
- \romanfamily\rmdefault
- \if@ltj@match@family\kanjifamily\mcdefault\fi\selectfont}
-\DeclareRobustCommand\sffamily
- {\not@math@alphabet\sffamily\mathsf
- \romanfamily\sfdefault
- \if@ltj@match@family\kanjifamily\gtdefault\fi\selectfont}
-\DeclareRobustCommand\ttfamily
- {\not@math@alphabet\ttfamily\mathtt
- \romanfamily\ttdefault
- \if@ltj@match@family\kanjifamily\jttdefault\fi\selectfont}
+
+\def\@ltj@hook@family#1#2{ % #1: csname #2: contents
+ \ifcsname @#1hook\endcsname % LaTeX 2020-02-02
+ \csappto{@#1hook}{#2}%
+ \else % LaTeX 2019-10-01
+ \ifcsname #1 \endcsname
+ \expandafter\patchcmd\csname #1 \endcsname{\selectfont}{#2\selectfont}{}{}%
+ \else
+ \PackageWarningNoLine{luatexja}{%
+ Patching to \expandafter\string\csname #1\endcsname\space failed
+ }%
+ \fi
+ \fi
+}
+\@ltj@hook@family{rmfamily}{%
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{mc}\mcdefault
+ \fi
+}
+\@ltj@hook@family{sffamily}{%
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{gt}\gtdefault
+ \fi
+}
+\@ltj@hook@family{ttfamily}{%
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{jtt}\jttdefault
+ \fi
+}
+
%%% \eminnershape
-\DeclareRobustCommand\em
- {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
- \eminnershape \else \gtfamily \itshape \fi}
+\expandafter\patchcmd\csname em \endcsname{\itshape}{\gtfamily\itshape}{}{}
\def\eminnershape{\mcfamily \upshape}
\ltjdefcharrange{1}{"80-"36F, "1E00-"1EFF}
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty
index 0f572b52fc..f2d78fb653 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjfont.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjfont.sty
@@ -3,8 +3,9 @@
%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesPackage{lltjfont}[2019/09/25 Patch to NFSS2 for LuaTeX-ja]
+\ProvidesPackage{lltjfont}[2020/01/26 Patch to NFSS2 for LuaTeX-ja]
+%% patching \DeclareTextComposite
\def\ltj@chardef@text@cmd#1{%
\let\@ifdefinable\@@ifdefinable%
\edef\ltj@chardef@text@cmd@name{\expandafter\@gobble\string#1}%
@@ -23,13 +24,11 @@
\@dec@text@cmd\ltj@chardef@text@cmd#1{#2}#3\relax
}
-\ifdefined\UnicodeEncodingName
- \let\ltj@temp@DeclareTextComposite=\DeclareTextComposite
- \def\DeclareTextComposite#1#2#3#4{}%
- \input{tuenc.def}
- \let\DeclareTextComposite=\ltj@temp@DeclareTextComposite
- \expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{}
-\fi
+\let\ltj@temp@DeclareTextComposite=\DeclareTextComposite
+\def\DeclareTextComposite#1#2#3#4{}%
+\input{tuenc.def}
+\let\DeclareTextComposite=\ltj@temp@DeclareTextComposite
+\expandafter\patchcmd\csname TU\string\textasteriskcentered\endcsname{\char}{\ltjalchar}{}{}
\let\k@encoding\@empty
@@ -568,12 +567,93 @@
\edef\k@family{#1}\edef\f@family{#1}%
\fi\fi
}
+
+\ifdefined\@rmfamilyhook
+%%%% LaTeX 2020-02-02
+\DeclareRobustCommand\romanseriesforce[1]{\edef\f@series{#1}}
+\DeclareRobustCommand\kanjiseriesforce[1]{\edef\k@series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\kanjiseries{#1}\romanseries{#1}}
+\DeclareRobustCommand\romanshapeforce[1]{\edef\f@shape{#1}}
+\DeclareRobustCommand\kanjishapeforce[1]{\edef\k@shape{#1}}
+\DeclareRobustCommand\fontshapeforce[1]{\kanjishape{#1}\romanshape{#1}}
+
+\def\merge@font@kanji@series#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@kanji@series@
+ \csname series@\k@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\set@target@kanji@series#1{%
+ \edef\k@series{#1}%
+ \edef\k@series{\expandafter\series@drop@one@m\k@series mm\series@drop@one@m}%
+}
+\def\merge@font@kanji@series@#1#2#3\@nil{%
+ \def\@reserveda{#3}%
+ \ifx\@reserveda\@empty
+ \set@target@kanji@series{#2}%
+ \else
+ \begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+ \maybe@load@fontshape\endgroup
+ \edef\@reserveda{\k@encoding /\k@family /#1/\k@shape}%
+ \ifcsname \@reserveda \endcsname
+ \set@target@kanji@series{#1}%
+ \else
+ \ifcsname \k@encoding /\k@family /#2/\k@shape \endcsname
+ \set@target@kanji@series{#2}%
+ {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+ \else
+ \set@target@kanji@series{#3}%
+ {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+ \fi
+ \fi
+ \fi
+}
+\def\merge@font@kanji@shape#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@kanji@shape@
+ \csname shape@\k@shape @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\merge@font@kanji@shape@#1#2#3\@nil{%
+ \def\@reserveda{#3}%
+ \ifx\@reserveda\@empty
+ \edef\k@shape{#2}%
+ \else
+ \maybe@load@fontshape
+ \edef\@reserveda{\k@encoding /\k@family /\k@series/#1}%
+ \ifcsname \@reserveda\endcsname
+ \edef\k@shape{#1}%
+ \else
+ \ifcsname \k@encoding /\k@family /\k@series/#2\endcsname
+ \edef\k@shape{#2}%
+ {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+ \else
+ \edef\k@shape{#3}%
+ {\let\curr@fontshape\curr@kfontshape\@font@shape@subst@warning}%
+ \fi
+ \fi
+ \fi
+}
+\DeclareRobustCommand\romanseries[1]{\merge@font@series{#1}}
+\DeclareRobustCommand\kanjiseries[1]{\merge@font@kanji@series{#1}}
+\DeclareRobustCommand\fontseries[1]{%
+ \merge@font@series{#1}\merge@font@kanji@series{#1}}
+\DeclareRobustCommand\romanshape[1]{\merge@font@shape{#1}}
+\DeclareRobustCommand\kanjishape[1]{\merge@font@kanji@shape{#1}}
+\DeclareRobustCommand\fontshape[1]{%
+ \merge@font@shape{#1}\merge@font@kanji@shape{#1}}
+\else
+%%%% LaTeX 2019-10-01
\DeclareRobustCommand\romanseries[1]{\edef\f@series{#1}}
\DeclareRobustCommand\kanjiseries[1]{\edef\k@series{#1}}
\DeclareRobustCommand\fontseries[1]{\kanjiseries{#1}\romanseries{#1}}
\DeclareRobustCommand\romanshape[1]{\edef\f@shape{#1}}
\DeclareRobustCommand\kanjishape[1]{\edef\k@shape{#1}}
\DeclareRobustCommand\fontshape[1]{\kanjishape{#1}\romanshape{#1}}
+\fi
+%%%%
\DeclareRobustCommand\usekanji[4]{%
\kanjiencoding{#1}\kanjifamily{#2}\kanjiseries{#3}\kanjishape{#4}%
\selectfont\ignorespaces}
@@ -586,22 +666,89 @@
\else\useroman{#1}{#2}{#3}{#4}%
\fi}
\DeclareRobustCommand\normalfont{%
- \kanjiencoding{\kanjiencodingdefault}%
- \kanjifamily{\kanjifamilydefault}%
- \kanjiseries{\kanjiseriesdefault}%
- \kanjishape{\kanjishapedefault}%
- \romanencoding{\encodingdefault}%
- \romanfamily{\familydefault}%
- \romanseries{\seriesdefault}%
- \romanshape{\shapedefault}%
- \selectfont\ignorespaces}
+ \useroman\encodingdefault\familydefault\seriesdefault\shapedefault
+ \usekanji\kanjiencodingdefault\kanjifamilydefault\kanjiseriesdefault\kanjishapedefault
+ \ignorespaces}
\let\reset@font\normalfont
+
+\ifdefined\@rmfamilyhook
+%%%% LaTeX 2020-02-02
+\let\prepare@family@series@update@kanji=\prepare@family@series@update
+\patchcmd\prepare@family@series@update{\fontfamily}{\romanfamily}{}{}
+\patchcmd\prepare@family@series@update@kanji{\fontfamily}{\kanjifamily}{}{}
+\patchcmd\prepare@family@series@update@kanji{\f@series}{\k@series}{}{}
+\patchcmd\prepare@family@series@update@kanji{\maybe@load@fontshape}
+ {\begingroup\let\f@encoding\k@encoding\let\f@family\k@family
+ \maybe@load@fontshape\endgroup}{}{}
+\patchcmd\prepare@family@series@update@kanji{\@meta@family@list}{\@meta@family@kanji@list}{}{}
+\def\@meta@family@kanji@list{\@elt{mc}\@elt{gt}\@elt{jtt}}
+\DeclareRobustCommand\bfseries{%
+ \not@math@alphabet\bfseries\mathbf
+ \expand@font@defaults
+ \romanseries{%
+ \ifx\f@family\rmdef@ult \bfseries@rm
+ \else\ifx\f@family\sfdef@ult \bfseries@sf
+ \else\ifx\f@family\ttdef@ult \bfseries@tt
+ \else \bfdefault
+ \fi\fi\fi
+ }%
+ \kanjiseries{%
+ \ifx\k@family\mcdef@ult \bfseries@mc
+ \else\ifx\k@family\gtdef@ult \bfseries@gt
+ \else\ifx\k@family\jttdef@ult\bfseries@jtt
+ \else \bfdefault
+ \fi\fi\fi
+ }%
+ \selectfont
+}
+\DeclareRobustCommand\mdseries{%
+ \not@math@alphabet\mdseries\relax
+ \expand@font@defaults
+ \romanseries{%
+ \ifx\f@family\rmdef@ult \mdseries@rm
+ \else\ifx\f@family\sfdef@ult \mdseries@sf
+ \else\ifx\f@family\ttdef@ult \mdseries@tt
+ \else \mddefault
+ \fi\fi\fi
+ }%
+ \kanjiseries{%
+ \ifx\k@family\mcdef@ult \mdseries@mc
+ \else\ifx\k@family\gtdef@ult \mdseries@gt
+ \else\ifx\k@family\jttdef@ult\mdseries@jtt
+ \else \mddefault
+ \fi\fi\fi
+ }%
+ \selectfont
+}
+\appto\expand@font@defaults{%
+ \edef\mcdef@ult{\mcdefault}%
+ \edef\gtdef@ult{\gtdefault}%
+ \edef\jttdef@ult{\jttdefault}%
+ \edef\kanjidef@ult{\kanjifamilydefault}%
+}
+\appto\init@series@setup{%
+ \ifx\kanjidef@ult\mcdef@ult \mcfamily
+ \else\ifx\kanjidef@ult\gtdef@ult \gtfamily
+ \else\ifx\kanjidef@ult\jttdef@ult \jttfamily
+ \fi\fi\fi
+}
+\fi
+\ifdefined\prepare@family@series@update@kanji\else
+%%%% LaTeX 2019-10-01
+\def\prepare@family@series@update@kanji#1{\kanjifamily}
+\fi
+
\DeclareRobustCommand\mcfamily{%
\unless\ifltj@disablejfam\not@math@alphabet\mcfamily\mathmc\fi
- \kanjifamily\mcdefault\selectfont}
+ \prepare@family@series@update@kanji{mc}\mcdefault
+ \selectfont}
\DeclareRobustCommand\gtfamily{%
\unless\ifltj@disablejfam\not@math@alphabet\gtfamily\mathgt\fi
- \kanjifamily\gtdefault\selectfont}
+ \prepare@family@series@update@kanji{gt}\gtdefault
+ \selectfont}
+
+
+
\let\romanprocess@table\process@table
\def\kanjiprocess@table{%
\kanjiencoding{\kanjiencodingdefault}%
diff --git a/macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty b/macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
index 9f630754bd..617eedaf9d 100644
--- a/macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
+++ b/macros/luatex/generic/luatexja/src/patches/lltjp-fontspec.sty
@@ -1,5 +1,5 @@
%
-% lltjp-fontspec.sty 2019-10-21
+% lltjp-fontspec.sty 2020-01-13
%
\NeedsTeXFormat{LaTeX2e}
@@ -7,13 +7,30 @@
\RequirePackage{fontspec}
\ExplSyntaxOn
-% <= v2.6g uses \l__fontspec_nfss_enc_tl instead of \g__fontspec_nfss_enc_tl
-\ifdefined \g__fontspec_nfss_enc_tl \else
- \def \g__fontspec_nfss_enc_tl { \l__fontspec_nfss_enc_tl }
-\fi
-
%%%%%%%% fontspec v2.5c overwrites \rmfamily etc. in \setmainfont
-\@ifpackagelater{fontspec}{2019/10/19}{ %% 2.7d or later
+\@ifpackagelater{fontspec}{2020/01/09}{ %% 2.7e or later
+ \tl_replace_all:cnn { rmfamily~ } { \fontfamily }{ \romanfamily }
+ \tl_replace_all:cnn { sffamily~ } { \fontfamily }{ \romanfamily }
+ \tl_replace_all:cnn { ttfamily~ } { \fontfamily }{ \romanfamily }
+ \cs_if_exist:NF \@rmfamilyhook {
+ \tl_replace_all:cnn { rmfamily~ } { \selectfont } {
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{mc}\mcdefault
+ \fi\selectfont
+ }
+ \tl_replace_all:cnn { sffamily~ } { \selectfont } {
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{gt}\gtdefault
+ \fi\selectfont
+ }
+ \tl_replace_all:cnn { ttfamily~ } { \selectfont } {
+ \if@ltj@match@family
+ \prepare@family@series@update@kanji{jtt}\jttdefault
+ \fi\selectfont
+ }
+ }
+%% end of 2.7e (or later)
+}{\@ifpackagelater{fontspec}{2019/10/19}{ %% 2.7d
\cs_set:Nn \__fontspec_main_setmainfont:nn
{
\fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
@@ -71,7 +88,8 @@
\__fontspec_setmonofont_hook:nn {#1} {#2}
\normalfont
}
-}{\@ifpackagelater{fontspec}{2018/07/29}{ %% 2.6h <= and <= 2.7c
+%% end of 2.7d
+}{%% 2.7c
\cs_set:Nn \__fontspec_main_setmainfont:nn
{
\fontspec_set_family:Nnn \l__fontspec_rmfamily_family_tl {#1} {#2}
@@ -129,58 +147,7 @@
\__fontspec_setmonofont_hook:nn {#1} {#2}
\normalfont
}
-}{ %% <= 2.6g
-\DeclareDocumentCommand \setmainfont { O{} m O{} }
- {
- \fontspec_set_family:Nnn \g__fontspec_rmfamily_family {#1,#3} {#2}
- \tl_set_eq:NN \rmdefault \g__fontspec_rmfamily_family
- \use:x { \exp_not:n { \DeclareRobustCommand \rmfamily }
- {
- \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
- \exp_not:N \fontfamily { \g__fontspec_rmfamily_family }
- \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\mcdefault\exp_not:N\fi%%%
- \exp_not:N \selectfont
- }
- }
- \str_if_eq:eeT {\familydefault} {\rmdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \normalfont
- \ignorespaces
- }
-\DeclareDocumentCommand \setsansfont { O{} m O{} }
- {
- \fontspec_set_family:Nnn \g__fontspec_sffamily_family {#1,#3} {#2}
- \tl_set_eq:NN \sfdefault \g__fontspec_sffamily_family
- \use:x { \exp_not:n { \DeclareRobustCommand \sffamily }
- {
- \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
- \exp_not:N \fontfamily { \g__fontspec_sffamily_family }
- \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\gtdefault\exp_not:N\fi%%%
- \exp_not:N \selectfont
- }
- }
- \str_if_eq:eeT {\familydefault} {\sfdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \normalfont
- \ignorespaces
- }
-\DeclareDocumentCommand \setmonofont { O{} m O{} }
- {
- \fontspec_set_family:Nnn \g__fontspec_ttfamily_family {#1,#3} {#2}
- \tl_set_eq:NN \ttdefault \g__fontspec_ttfamily_family
- \use:x { \exp_not:n { \DeclareRobustCommand \ttfamily }
- {
- \exp_not:N \fontencoding { \g__fontspec_nfss_enc_tl }
- \exp_not:N \fontfamily { \g__fontspec_ttfamily_family }
- \exp_not:N\if@ltj@match@family\exp_not:N\kanjifamily\exp_not:N\jttdefault\exp_not:N\fi%%%
- \exp_not:N \selectfont
- }
- }
- \str_if_eq:eeT {\familydefault} {\ttdefault}
- { \tl_set_eq:NN \encodingdefault \g__fontspec_nfss_enc_tl }
- \normalfont
- \ignorespaces
- }
+%% end of 2.7d
}}
\cs_set:Nn \fontspec_visible_space:
@@ -190,19 +157,6 @@
{ \fontspec_visible_space_fallback: }
}
-\AtBeginDocument{
- \cs_if_exist:NF \verbvisiblespace {
- % >= LaTeX2e <2018-12-01> does not need the following patch
- \def\verb
- {
- \relax\ifmmode\hbox\else\leavevmode\fi % same as lltjcore
- \bgroup
- \verb@eol@error \let\do\@makeother \dospecials
- \verbatim@font\@noligs
- \@ifstar\__fontspecsverb\@verb
- }
- }
-}
\cs_set:Npn \emshape { \gtfamily \itshape }
\cs_set:Npn \eminnershape { \mcfamily \upshape }