summaryrefslogtreecommitdiff
path: root/macros
diff options
context:
space:
mode:
Diffstat (limited to 'macros')
-rw-r--r--macros/latex/contrib/acro/README2
-rw-r--r--macros/latex/contrib/acro/acro-manual.cls4
-rw-r--r--macros/latex/contrib/acro/acro-manual.pdfbin577602 -> 576935 bytes
-rw-r--r--macros/latex/contrib/acro/acro.history1
-rw-r--r--macros/latex/contrib/acro/acro.sty6
-rw-r--r--macros/latex/contrib/chemmacros/README7
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros-manual.cls382
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros-manual.pdf (renamed from macros/latex/contrib/chemmacros/chemmacros_en.pdf)bin947206 -> 970626 bytes
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros-manual.tex (renamed from macros/latex/contrib/chemmacros/chemmacros_en.tex)137
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.history4
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex31
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.chemformula.code.tex18
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.greek.code.tex18
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.mechanisms.code.tex28
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.nomenclature.code.tex143
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.phases.code.tex2
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.reactions.code.tex11
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.redox.code.tex45
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex39
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.spectroscopy.code.tex23
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.module.units.code.tex17
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros.sty20
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros4.sty4
-rw-r--r--macros/latex/contrib/chemmacros/chemmacros5.sty31
-rw-r--r--macros/latex/contrib/derivative/README.md4
-rw-r--r--macros/latex/contrib/derivative/derivative.pdfbin184657 -> 184454 bytes
-rw-r--r--macros/latex/contrib/derivative/derivative.sty8
-rw-r--r--macros/latex/contrib/derivative/derivative.tex9
-rw-r--r--macros/latex/contrib/filehook/README3
-rw-r--r--macros/latex/contrib/filehook/filehook.dtx352
-rw-r--r--macros/latex/contrib/filehook/filehook.pdfbin267294 -> 266229 bytes
-rw-r--r--macros/latex/contrib/fontspec/CHANGES.md8
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-enc.dtx1
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx4
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-internal.dtx18
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-keyval.dtx3
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code-opentype.dtx32
-rw-r--r--macros/latex/contrib/fontspec/fontspec-code.pdfbin627145 -> 626791 bytes
-rw-r--r--macros/latex/contrib/fontspec/fontspec.dtx6
-rw-r--r--macros/latex/contrib/fontspec/fontspec.pdfbin610857 -> 610880 bytes
-rw-r--r--macros/latex/contrib/physconst/CHANGELOG.md29
-rw-r--r--macros/latex/contrib/physconst/README.md35
-rw-r--r--macros/latex/contrib/physconst/physconst.dtx7281
-rw-r--r--macros/latex/contrib/physconst/physconst.pdfbin135843 -> 208326 bytes
-rw-r--r--macros/latex/contrib/thuthesis/README.md24
-rw-r--r--macros/latex/contrib/thuthesis/data/denotation.tex4
-rw-r--r--macros/latex/contrib/thuthesis/main.pdfbin768081 -> 771605 bytes
-rw-r--r--macros/latex/contrib/thuthesis/main.tex2
-rw-r--r--macros/latex/contrib/thuthesis/ref/appendix.bib18
-rw-r--r--macros/latex/contrib/thuthesis/ref/refs.bib247
-rw-r--r--macros/latex/contrib/thuthesis/spine.pdfbin20221 -> 20300 bytes
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.dtx36
-rw-r--r--macros/latex/contrib/thuthesis/thuthesis.pdfbin937163 -> 938283 bytes
-rw-r--r--macros/latex/required/babel/base/README.md34
-rw-r--r--macros/latex/required/babel/base/babel.dtx578
-rw-r--r--macros/latex/required/babel/base/babel.ins2
-rw-r--r--macros/latex/required/babel/base/babel.pdfbin748353 -> 754441 bytes
-rw-r--r--macros/latex/required/babel/base/bbcompat.dtx2
-rw-r--r--macros/luatex/generic/lualibs/NEWS3
-rw-r--r--macros/luatex/generic/lualibs/README.md6
-rw-r--r--macros/luatex/generic/lualibs/lualibs-basic-merged.lua145
-rw-r--r--macros/luatex/generic/lualibs/lualibs-extended-merged.lua9
-rw-r--r--macros/luatex/generic/lualibs/lualibs-file.lua20
-rw-r--r--macros/luatex/generic/lualibs/lualibs-gzip.lua191
-rw-r--r--macros/luatex/generic/lualibs/lualibs-io.lua2
-rw-r--r--macros/luatex/generic/lualibs/lualibs-lua.lua6
-rw-r--r--macros/luatex/generic/lualibs/lualibs-md5.lua28
-rw-r--r--macros/luatex/generic/lualibs/lualibs-os.lua2
-rw-r--r--macros/luatex/generic/lualibs/lualibs-table.lua2
-rw-r--r--macros/luatex/generic/lualibs/lualibs-util-sta.lua9
-rw-r--r--macros/luatex/generic/lualibs/lualibs-util-str.lua2
-rw-r--r--macros/luatex/generic/lualibs/lualibs.dtx18
-rw-r--r--macros/luatex/generic/lualibs/lualibs.pdfbin81170 -> 80955 bytes
-rw-r--r--macros/luatex/generic/luaotfload/NEWS6
-rw-r--r--macros/luatex/generic/luaotfload/README.md4
-rw-r--r--macros/luatex/generic/luaotfload/filegraph.pdfbin39841 -> 39847 bytes
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-2020-01-26.lua (renamed from macros/luatex/generic/luaotfload/fontloader-2019-10-29.lua)502
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-basics-gen.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-basics-nod.lua11
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-data-con.lua55
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-cff.lua264
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-con.lua28
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-def.lua10
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-ini.lua4
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-ocl.lua5
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-onr.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-oto.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-otr.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-font-ots.lua74
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-l-file.lua20
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-l-io.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-l-lua.lua6
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-l-table.lua2
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-reference.lua374
-rw-r--r--macros/luatex/generic/luaotfload/fontloader-util-str.lua2
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua19
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-colors.lua80
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-conf.pdfbin77676 -> 77323 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-configuration.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-database.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-embolden.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-fallback.lua134
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-features.lua42
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-filelist.lua5
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-define.lua34
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua17
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-init.lua23
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-latex.pdfbin394746 -> 443581 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-latex.tex33
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-letterspace.lua24
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-loaders.lua31
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-log.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-main.lua51
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-main.tex195
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-multiscript.lua200
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-notdef.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-parsers.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-resolvers.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-scripts.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-status.lua94
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.110
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.lua20
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.pdfbin76928 -> 76686 bytes
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tool.rst10
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-tounicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload-unicode.lua4
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.58
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.conf.rst10
-rw-r--r--macros/luatex/generic/luaotfload/luaotfload.sty2
-rw-r--r--macros/luatex/generic/luaotfload/scripts-demo.pdfbin21422 -> 21523 bytes
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo-graphite.pdfbin8487 -> 8487 bytes
-rw-r--r--macros/luatex/generic/luaotfload/shaper-demo.pdfbin8411 -> 8411 bytes
134 files changed, 10707 insertions, 1916 deletions
diff --git a/macros/latex/contrib/acro/README b/macros/latex/contrib/acro/README
index 9235273498..221ded70e3 100644
--- a/macros/latex/contrib/acro/README
+++ b/macros/latex/contrib/acro/README
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------
-the ACRO package v2.11b 2020/01/24
+the ACRO package v2.11c 2020/02/03
Typeset Acronyms
diff --git a/macros/latex/contrib/acro/acro-manual.cls b/macros/latex/contrib/acro/acro-manual.cls
index 89f2fb286f..e0a35f4781 100644
--- a/macros/latex/contrib/acro/acro-manual.cls
+++ b/macros/latex/contrib/acro/acro-manual.cls
@@ -215,6 +215,7 @@
\begingroup
\catcode`\^^M=13
\gdef\acroman@read@options#1#2^^M{%
+ \endgroup
\ifblank{#2}{}{\acroman@read@options@#2}%
#1%
\XSIMfilewritestart*{\jobname.tmp}%
@@ -226,7 +227,6 @@
{%
\begingroup
\acroman@readoptions{%
- \endgroup
\setlength\cnltx@sidebysidewidth
{\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}%
\expanded{%
@@ -251,7 +251,6 @@
{%
\begingroup
\acroman@readoptions{%
- \endgroup
\setlength\cnltx@sidebysidewidth
{\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}%
\expanded{%
@@ -387,5 +386,6 @@
\acro@add@version{2020-01-11}{2.11}
\acro@add@version{2020-01-16}{2.11a}
\acro@add@version{2020-01-24}{2.11b}
+\acro@add@version{2020-02-03}{2.11c}
\endinput
diff --git a/macros/latex/contrib/acro/acro-manual.pdf b/macros/latex/contrib/acro/acro-manual.pdf
index 2209e26891..4fea1ccc17 100644
--- a/macros/latex/contrib/acro/acro-manual.pdf
+++ b/macros/latex/contrib/acro/acro-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/acro/acro.history b/macros/latex/contrib/acro/acro.history
index 7fc23c120e..d719448f3e 100644
--- a/macros/latex/contrib/acro/acro.history
+++ b/macros/latex/contrib/acro/acro.history
@@ -282,3 +282,4 @@ feel free to contact me.
- prefer lazy boolean evaluation when possible
2020/01/16 v2.11a - adapt to new l3text module
2020/01/24 v2.11b - fix issue #147
+2020/02/03 v2.11c - fix issue #76
diff --git a/macros/latex/contrib/acro/acro.sty b/macros/latex/contrib/acro/acro.sty
index 3bf03df4d0..7346367aff 100644
--- a/macros/latex/contrib/acro/acro.sty
+++ b/macros/latex/contrib/acro/acro.sty
@@ -35,10 +35,10 @@
\ExplSyntaxOn
-\tl_const:Nn \c_acro_date_tl {2020/01/24}
+\tl_const:Nn \c_acro_date_tl {2020/02/03}
\tl_const:Nn \c_acro_version_major_number_tl {2}
\tl_const:Nn \c_acro_version_minor_number_tl {11}
-\tl_const:Nn \c_acro_version_subrelease_tl {b}
+\tl_const:Nn \c_acro_version_subrelease_tl {c}
\tl_const:Nx \c_acro_version_number_tl
{
\c_acro_version_major_number_tl .
@@ -716,7 +716,7 @@
\sys_if_engine_xetex:TF
{
\cs_set:Npn \acro_hyper_link:nn ##1##2
- { \hyperlink { \XeTeXLinkBox {##1} } {##2} }
+ { \hyperlink {##1} { \XeTeXLinkBox {##2} } }
}
{ \cs_set_eq:NN \acro_hyper_link:nn \hyperlink }
\cs_set:Npn \acro_hyper_target:nn ##1##2
diff --git a/macros/latex/contrib/chemmacros/README b/macros/latex/contrib/chemmacros/README
index 7483ec9d3f..6153319d53 100644
--- a/macros/latex/contrib/chemmacros/README
+++ b/macros/latex/contrib/chemmacros/README
@@ -1,5 +1,5 @@
--------------------------------------------------------------------------
-the CHEMMACROS package v5.9 2019/11/17
+the CHEMMACROS package v5.10 2020/02/03
comprehensive support for typesetting chemistry documents
@@ -28,8 +28,9 @@ The chemmacros package consists of the following files
chemmacros4.sty
chemmacros5.sty,
== DOCUMENTATION FILES ==
- chemmacros_en.tex
- chemmacros_en.pdf,
+ chemmacros-manual.tex
+ chemmacros-manual.pdf
+ chemmacros-manual.cls
README
chemmacros.history
== MODULE CODE FILES ==
diff --git a/macros/latex/contrib/chemmacros/chemmacros-manual.cls b/macros/latex/contrib/chemmacros/chemmacros-manual.cls
new file mode 100644
index 0000000000..179e588d55
--- /dev/null
+++ b/macros/latex/contrib/chemmacros/chemmacros-manual.cls
@@ -0,0 +1,382 @@
+% --------------------------------------------------------------------------
+% the CHEMFORMULA package
+%
+% typeset chemical compounds and reactions
+%
+% --------------------------------------------------------------------------
+% Clemens Niederberger
+% --------------------------------------------------------------------------
+% https://github.com/cgnieder/chemformula/
+% contact@mychemistry.eu
+% --------------------------------------------------------------------------
+% If you have any ideas, questions, suggestions or bugs to report, please
+% feel free to contact me.
+% --------------------------------------------------------------------------
+% Copyright 2011--2020 Clemens Niederberger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Clemens Niederberger.
+% --------------------------------------------------------------------------
+\ProvidesClass{chemmacros-manual}[2020/02/03]
+
+\LoadClass[load-preamble,add-index]{cnltx-doc}
+\RequirePackage{imakeidx}
+\RequirePackage[utf8]{inputenc}
+
+\RequirePackage[compatibility=newest]{chemmacros}
+\setcnltx{
+ package = {chemmacros},
+ info = {comprehensive support for typesetting chemistry documents},
+ url = https://github.com/cgnieder/chemmacros ,
+ authors = Clemens Niederberger ,
+ email = contact@mychemistry.eu ,
+ abstract = {%
+ \centering
+ \includegraphics{chemmacros-logo.pdf}
+ \par
+ } ,
+ quote-format = \small\biolinumLF ,
+ add-cmds = {
+ abinitio, activatechemgreekmapping, AddRxnDesc, anti, aq, aqi,
+ ba, bond, bridge,
+ cd, ch, changechemgreeksymbol, charrow, chcpd, chemabove, chemalpha,
+ chembeta, ChemCleverefSupport, chemdelta, chemDelta,
+ ChemFancyrefSupport, chemformula@bondlength, chemgamma, ChemModule,
+ chemomega, chemphi, chemPhi, chemsetup, chlewis, chname , cip, cis, ch,
+ CNMR,
+ data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias,
+ DeclareChemCharge, DeclareChemEqConstant, declarechemgreekmapping,
+ DeclareChemIUPAC, DeclareChemIUPACShorthand, DeclareChemLatin,
+ DeclareChemNMR, DeclareChemNucleophile, DeclareChemPartialCharge,
+ DeclareChemParticle, DeclareChemPhase, DeclareChemReaction,
+ DeclareChemState,
+ delm, delp, Delta, dexter, Dfi,
+ el, ElPot, endo, entgegen, Enthalpy, enthalpy, entropy,
+ fdelm, fdelp, fmch, fminus, fpch, fplus, fscrm, fscrp,
+ gas, ghs, ghslistall, ghspic, gibbs, gram,
+ hapto, HNMR, Helmholtz, hydrogen,
+ IfChemCompatibilityF, IfChemCompatibilityT, IfChemCompatibilityTF, insitu,
+ invacuo, isotope, iupac,
+ Ka, Kb, Kw,
+ laevus, Lfi, listofreactions, lqd,
+ makepolymerdelims, mch, mega, meta, mhName,
+ NewChemArrow, NewChemBond, NewChemBondAlias,
+ NewChemCharge, NewChemEqConstant, newchemgreekmapping, NewChemIUPAC,
+ NewChemIUPACShorthand, NewChemLatin, NewChemMacroset, NewChemNMR,
+ NewChemNucleophile, NewChemPartialCharge, NewChemParticle, NewChemPhase,
+ NewChemReaction, NewChemState,
+ newman, nitrogen, NMR, Nu, Nuc,
+ orbital, ortho, ox, OX, oxygen,
+ para, pch, per, pH, phase, phosphorus, photon, pKa, pKb, pOH, pos,
+ positron, Pot, ProvideChemArrow, ProvideChemBond, ProvideChemCharge,
+ ProvideChemEqConstant, ProvideChemIUPAC, ProvideChemIUPACShorthand,
+ ProvideChemLatin, ProvideChemNMR, ProvideChemNucleophile,
+ ProvideChemPartialCharge, ProvideChemParticle, ProvideChemPhase,
+ ProvideChemReaction,
+ ProvideChemState, prt,
+ Rad, redox, RemoveChemIUPACShorthand, RenewChemArrow, RenewChemBond,
+ RenewChemCharge, RenewChemEqConstant, renewchemgreekmapping,
+ RenewChemIUPAC, RenewChemIUPACShorthand, RenewChemLatin, RenewChemNMR,
+ RenewChemNucleophile, RenewChemPartialCharge, RenewChemParticle,
+ RenewChemPhase, RenewChemState,
+ Sf, scrm, scrp, second, selectchemgreekmapping, setchemformula,
+ ShowChemArrow, ShowChemBond, sld, Sod, state, sulfur,
+ trans,
+ usechemmodule,
+ val,
+ zusammen
+ } ,
+ add-silent-cmds = {
+ addplot,
+ bottomrule,
+ cancel, cdot, ce, cee, celsius, centering, chemfig, chemname, clap,
+ cnsetup, code, color, cstack, cstsetup,
+ DeclareInstance, DeclareSIUnit, definecolor, draw,
+ electronvolt, endtikzpicture,
+ footnotesize,
+ glqq, grqq,
+ hertz, hspace,
+ includegraphics, intertext, IUPAC,
+ joule,
+ kelvin, kilo,
+ latin, lc, lewis, Lewis, liquid, ltn,
+ metre, midrule, milli, mmHg, mole,
+ nano, nicefrac, num, numrange,
+ ominus, oplus,
+ percent, pgfarrowsdeclarealias, pgfarrowsrenewalias,
+ renewtagform, rightarrow,
+ sample, scriptscriptstyle, setchemfig, sfrac, shade,
+ shadedraw, shorthandoff, si, SI, sisetup, square, subsection,
+ textcolor, textendash, textsuperscript, tikz, tikzpicture, tiny, toprule,
+ upbeta, upeta, upgamma, usetikzlibrary,
+ volt, vphantom, vspave,
+ xspace,
+ z@, z@skip
+ } ,
+ index-setup = { othercode = \footnotesize , level = \section } ,
+ makeindex-setup = { columns = 2 , columnsep = 1em }
+}
+
+\RequirePackage{booktabs,array,longtable}
+
+\RequirePackage{chemfig,cancel,varioref,csquotes}
+
+\RequirePackage[
+ a4paper,
+ top = .1\paperheight,
+ bottom = .1\paperheight,
+ left = .2\paperwidth,
+ right = .1\paperwidth
+]{geometry}
+
+\def\libertine@figurestyle{LF}
+\RequirePackage{amsmath}
+\undef\lvert \undef\lVert
+\undef\rvert \undef\rVert
+\RequirePackage[libertine]{newtxmath}
+\def\libertine@figurestyle{OsF}
+
+\RequirePackage[biblatex]{embrac}
+\ChangeEmph{[}[,.02em]{]}[.055em,-.08em]
+\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
+
+\RequirePackage[accsupp]{acro}
+\acsetup{
+ long-format = \scshape ,
+ short-format = \scshape
+}
+
+\RequirePackage{fontawesome}
+\RequirePackage{datetime2}
+\DTMsetup{useregional=numeric,datesep=/}
+\newrobustcmd*\chemmacros@add@version[2]{%
+ \csdef{chemmacros@ver@#2}{%
+ \DTMdate{#1}%
+ \csgdef{chemmacros@ver@#2used}{}%
+ \csdef{chemmacros@ver@#2}{\DTMdate{#1}}%
+ }%
+}
+
+\newrobustcmd*\chemmacros@date[1]{%
+ \ifcsdef{chemmacros@ver@#1used}{}{ (\csuse{chemmacros@ver@#1})}}
+\newrobustcmd*\chemmacros@ifnew[1]{\ifcsstring{c_chemmacros_version_tl}{#1}}
+\newrobustcmd*\chemmacros@NEW{\faStarO\ New}
+
+\renewrobustcmd*\sinceversion[1]{%
+ \chemmacros@ifnew{#1}%
+ {\cnltx@version@note{\textcolor{red}{\chemmacros@NEW}}}%
+ {\cnltx@version@note{\GetTranslation{cnltx-introduced}~#1\chemmacros@date{#1}}}%
+}
+\renewrobustcmd*\changedversion[1]{%
+ \cnltx@version@note{\GetTranslation{cnltx-changed}~#1\chemmacros@date{#1}}%
+}
+
+\newnote*\sincechanged[2]{%
+ \GetTranslation{cnltx-introduced}~#1\chemmacros@date{#1},
+ changed with version~#2\chemmacros@date{#2}\chemmacros@ifnew{#2}{ \chemmacros@NEW}{}%
+}
+
+\RenewDocumentEnvironment{commands}{}
+ {%
+ \cnltx@set@catcode_{12}%
+ \let\command\cnltx@command
+ \cnltxlist
+ }
+ {\endcnltxlist}
+
+\RequirePackage{tcolorbox,xsimverb}
+\tcbuselibrary{skins,breakable}
+\tcbset{enhanced,enhanced jigsaw}
+
+\newtcolorbox{bewareofthedog}{
+ colback = white ,
+ colframe = red ,
+ underlay={%
+ \path[draw=none]
+ (interior.south west)
+ rectangle node[red]{\Huge\bfseries !}
+ ([xshift=-4mm]interior.north west);
+ }%
+}
+
+\newtcolorbox{cnltxcode}[1][]{
+ boxrule = 1pt ,
+ colback = cnltxbg ,
+ colframe = cnltx ,
+ arc = 5pt ,
+ beforeafter skip = .5\baselineskip ,%
+ #1%
+}
+
+\newcommand*\chemmacros@readoptions[1]{%
+ \catcode`\^^M=13
+ \chemmacros@read@options{#1}%
+}
+
+\begingroup
+\catcode`\^^M=13
+\gdef\chemmacros@read@options#1#2^^M{%
+ \endgroup
+ \ifblank{#2}{}{\chemmacros@read@options@#2}%
+ #1%
+ \XSIMfilewritestart*{\jobname.tmp}%
+}%
+\endgroup
+\def\chemmacros@read@options@[#1]{\pgfqkeys{/cnltx}{#1}}
+
+\RenewDocumentEnvironment{sourcecode}{}
+ {%
+ \begingroup
+ \chemmacros@readoptions{%
+ \setlength\cnltx@sidebysidewidth
+ {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}%
+ \expanded{%
+ \noexpand\lstset{
+ style=cnltx,
+ \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} }
+ {linewidth=\cnltx@sidebysidewidth,}{}%
+ \expandonce\cnltx@local@listings@options
+ }%
+ }%
+ \XSIMgobblechars{2}%
+ }%
+ }
+ {%
+ \XSIMfilewritestop
+ \cnltxcode[breakable]%
+ \lstinputlisting[style=cnltx]{\jobname.tmp}%
+ \endcnltxcode
+ }
+
+\RenewDocumentEnvironment{example}{}
+ {%
+ \begingroup
+ \chemmacros@readoptions{%
+ \setlength\cnltx@sidebysidewidth
+ {\dimexpr .45\columnwidth -\lst@xleftmargin -\lst@xrightmargin\relax}%
+ \expanded{%
+ \noexpand\lstset{
+ style=cnltx,
+ \ifboolexpe{ bool {cnltx@sidebyside} and not bool {cnltx@codeonly} }
+ {linewidth=\cnltx@sidebysidewidth,}{}%
+ \expandonce\cnltx@local@listings@options
+ }%
+ }%
+ \XSIMgobblechars{2}%
+ }%
+ }
+ {%
+ \XSIMfilewritestop
+ \ifbool{cnltx@sidebyside}
+ {%
+ \cnltxcode
+ \noindent
+ \minipage[c]{\cnltx@sidebysidewidth}%
+ \cnltx@pre@source@hook
+ \lstinputlisting[style=cnltx] {\jobname.tmp}%
+ \cnltx@after@source@hook
+ \endminipage\hfill
+ \minipage[c]{\cnltx@sidebysidewidth}%
+ \cnltx@pre@example@hook
+ \input {\jobname.tmp}%
+ \cnltx@after@example@hook
+ \endminipage
+ }
+ {%
+ \cnltxcode[breakable]%
+ \cnltx@pre@source@hook
+ \lstinputlisting{\jobname.tmp}%
+ \cnltx@after@source@hook
+ \tcblower
+ \cnltx@pre@example@hook
+ \input {\jobname.tmp}%
+ \cnltx@after@example@hook
+ }%
+ \endcnltxcode
+ }
+
+\RequirePackage[
+ backend=biber,
+ style=cnltx,
+ sortlocale=en_US,
+ indexing=cite]{biblatex}
+\RequirePackage{csquotes,varioref}
+\defbibheading{bibliography}{\section{References}}
+
+\RequirePackage[biblatex]{embrac}[2012/06/29]
+\ChangeEmph{[}[,.02em]{]}[.055em,-.08em]
+\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
+
+\chemmacros@add@version{2012-01-28}{3.0}
+\chemmacros@add@version{2012-01-30}{3.0a}
+\chemmacros@add@version{2012-02-03}{3.0b}
+\chemmacros@add@version{2012-02-05}{3.0c}
+\chemmacros@add@version{2012-02-10}{3.0d}
+\chemmacros@add@version{2012-02-19}{3.1}
+\chemmacros@add@version{2012-02-26}{3.1a}
+\chemmacros@add@version{2012-03-03}{3.1b}
+\chemmacros@add@version{2012-03-14}{3.1c}
+\chemmacros@add@version{2012-03-20}{3.2}
+\chemmacros@add@version{2012-05-07}{3.3}
+\chemmacros@add@version{2012-05-13}{3.3a}
+\chemmacros@add@version{2012-05-18}{3.3b}
+\chemmacros@add@version{2012-05-18}{3.3c}
+\chemmacros@add@version{2012-07-24}{3.3d}
+\chemmacros@add@version{2012-08-21}{3.3e}
+\chemmacros@add@version{2012-09-11}{3.4}
+\chemmacros@add@version{2012-10-03}{3.4a}
+\chemmacros@add@version{2013-01-04}{3.4b}
+\chemmacros@add@version{2013-01-28}{3.5}
+\chemmacros@add@version{2013-02-19}{3.5a}
+\chemmacros@add@version{2013-02-26}{3.6}
+\chemmacros@add@version{2013-02-27}{3.6a}
+\chemmacros@add@version{2013-04-19}{3.6b}
+\chemmacros@add@version{2013-07-06}{4.0}
+\chemmacros@add@version{2013-08-07}{4.0a}
+\chemmacros@add@version{2013-08-24}{4.1}
+\chemmacros@add@version{2013-10-28}{4.2}
+\chemmacros@add@version{2013-10-31}{4.2a}
+\chemmacros@add@version{2013-11-04}{4.2b}
+\chemmacros@add@version{2013-11-20}{4.2c}
+\chemmacros@add@version{2013-12-15}{4.2d}
+\chemmacros@add@version{2014-01-09}{4.2e}
+\chemmacros@add@version{2014-01-24}{4.3}
+\chemmacros@add@version{2014-01-29}{4.4}
+\chemmacros@add@version{2014-04-08}{4.5}
+\chemmacros@add@version{2014-06-30}{4.5a}
+\chemmacros@add@version{2014-08-08}{4.6}
+\chemmacros@add@version{2015-02-08}{4.7}
+\chemmacros@add@version{2015-09-11}{5.0}
+\chemmacros@add@version{2015-09-23}{5.1}
+\chemmacros@add@version{2015-10-14}{5.2}
+\chemmacros@add@version{2016-01-13}{5.3}
+\chemmacros@add@version{2016-01-23}{5.3a}
+\chemmacros@add@version{2016-02-10}{5.4}
+\chemmacros@add@version{2016-03-08}{5.5}
+\chemmacros@add@version{2016-05-02}{5.6}
+\chemmacros@add@version{2016-05-04}{5.6a}
+\chemmacros@add@version{2016-06-07}{5.7}
+\chemmacros@add@version{2016-06-08}{5.7a}
+\chemmacros@add@version{2016-10-05}{5.7b}
+\chemmacros@add@version{2016-12-28}{5.7c}
+\chemmacros@add@version{2017-04-17}{5.8}
+\chemmacros@add@version{2017-06-13}{5.8a}
+\chemmacros@add@version{2017-08-28}{5.8b}
+\chemmacros@add@version{2018-03-02}{5.8c}
+\chemmacros@add@version{2019-09-23}{5.8d}
+\chemmacros@add@version{2019-09-27}{5.8e}
+\chemmacros@add@version{2019-09-30}{5.8f}
+\chemmacros@add@version{2019-11-17}{5.9}
+\chemmacros@add@version{2020-01-16}{5.9a}
+\chemmacros@add@version{2020-02-03}{5.10}
+
+\endinput
diff --git a/macros/latex/contrib/chemmacros/chemmacros_en.pdf b/macros/latex/contrib/chemmacros/chemmacros-manual.pdf
index 5619833757..02badca256 100644
--- a/macros/latex/contrib/chemmacros/chemmacros_en.pdf
+++ b/macros/latex/contrib/chemmacros/chemmacros-manual.pdf
Binary files differ
diff --git a/macros/latex/contrib/chemmacros/chemmacros_en.tex b/macros/latex/contrib/chemmacros/chemmacros-manual.tex
index 9bf20e8789..991742a710 100644
--- a/macros/latex/contrib/chemmacros/chemmacros_en.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros-manual.tex
@@ -30,133 +30,8 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\documentclass[load-preamble+]{cnltx-doc}
-\usepackage[utf8]{inputenc}
-\usepackage[compatibility=newest]{chemmacros}
-\setcnltx{
- package = {chemmacros},
- info = {comprehensive support for typesetting chemistry documents},
- url = https://github.com/cgnieder/chemmacros ,
- authors = Clemens Niederberger ,
- email = contact@mychemistry.eu ,
- abstract = {%
- \centering
- \includegraphics{chemmacros-logo.pdf}
- \par
- } ,
- quote-format = \small\biolinumLF ,
- add-cmds = {
- abinitio, activatechemgreekmapping, AddRxnDesc, anti, aq, aqi,
- ba, bond, bridge,
- cd, ch, changechemgreeksymbol, charrow, chcpd, chemabove, chemalpha,
- chembeta, ChemCleverefSupport, chemdelta, chemDelta,
- ChemFancyrefSupport, chemformula@bondlength, chemgamma, ChemModule,
- chemomega, chemphi, chemPhi, chemsetup, chlewis, chname , cip, cis, ch,
- CNMR,
- data, DeclareChemArrow, DeclareChemBond, DeclareChemBondAlias,
- DeclareChemCharge, DeclareChemEqConstant, declarechemgreekmapping,
- DeclareChemIUPAC, DeclareChemIUPACShorthand, DeclareChemLatin,
- DeclareChemNMR, DeclareChemNucleophile, DeclareChemPartialCharge,
- DeclareChemParticle, DeclareChemPhase, DeclareChemReaction,
- DeclareChemState,
- delm, delp, Delta, dexter, Dfi,
- el, ElPot, endo, entgegen, Enthalpy, enthalpy, entropy,
- fdelm, fdelp, fmch, fminus, fpch, fplus, fscrm, fscrp,
- gas, ghs, ghslistall, ghspic, gibbs, gram,
- hapto, HNMR, Helmholtz, hydrogen,
- IfChemCompatibilityF, IfChemCompatibilityT, IfChemCompatibilityTF, insitu,
- invacuo, isotope, iupac,
- Ka, Kb, Kw,
- laevus, Lfi, listofreactions, lqd,
- makepolymerdelims, mch, mega, meta, mhName,
- NewChemArrow, NewChemBond, NewChemBondAlias,
- NewChemCharge, NewChemEqConstant, newchemgreekmapping, NewChemIUPAC,
- NewChemIUPACShorthand, NewChemLatin, NewChemMacroset, NewChemNMR,
- NewChemNucleophile, NewChemPartialCharge, NewChemParticle, NewChemPhase,
- NewChemReaction, NewChemState,
- newman, nitrogen, NMR, Nu, Nuc,
- orbital, ortho, ox, OX, oxygen,
- para, pch, per, pH, phase, phosphorus, photon, pKa, pKb, pOH, pos,
- positron, Pot, ProvideChemArrow, ProvideChemBond, ProvideChemCharge,
- ProvideChemEqConstant, ProvideChemIUPAC, ProvideChemIUPACShorthand,
- ProvideChemLatin, ProvideChemNMR, ProvideChemNucleophile,
- ProvideChemPartialCharge, ProvideChemParticle, ProvideChemPhase,
- ProvideChemReaction,
- ProvideChemState, prt,
- Rad, redox, RemoveChemIUPACShorthand, RenewChemArrow, RenewChemBond,
- RenewChemCharge, RenewChemEqConstant, renewchemgreekmapping,
- RenewChemIUPAC, RenewChemIUPACShorthand, RenewChemLatin, RenewChemNMR,
- RenewChemNucleophile, RenewChemPartialCharge, RenewChemParticle,
- RenewChemPhase, RenewChemState,
- Sf, scrm, scrp, second, selectchemgreekmapping, setchemformula,
- ShowChemArrow, ShowChemBond, sld, Sod, state, sulfur,
- trans,
- usechemmodule,
- val,
- zusammen
- } ,
- add-silent-cmds = {
- addplot,
- bottomrule,
- cancel, cdot, ce, cee, celsius, centering, chemfig, chemname, clap,
- cnsetup, code, color, cstack, cstsetup,
- DeclareInstance, DeclareSIUnit, definecolor, draw,
- electronvolt, endtikzpicture,
- footnotesize,
- glqq, grqq,
- hertz, hspace,
- includegraphics, intertext, IUPAC,
- joule,
- kelvin, kilo,
- latin, lc, lewis, Lewis, liquid, ltn,
- metre, midrule, milli, mmHg, mole,
- nano, nicefrac, num, numrange,
- ominus, oplus,
- percent, pgfarrowsdeclarealias, pgfarrowsrenewalias,
- renewtagform, rightarrow,
- sample, scriptscriptstyle, setchemfig, sfrac, shade,
- shadedraw, shorthandoff, si, SI, sisetup, square, subsection,
- textcolor, textendash, textsuperscript, tikz, tikzpicture, tiny, toprule,
- upbeta, upeta, upgamma, usetikzlibrary,
- volt, vphantom, vspave,
- xspace,
- z@, z@skip
- } ,
- index-setup = { othercode = \footnotesize , level = \section } ,
- makeindex-setup = { columns = 2 , columnsep = 1em }
-}
-
-\usepackage{booktabs,array,longtable}
-
-\usepackage{chemfig,cancel,varioref,csquotes}
-
-\usepackage[
- a4paper,
- top = .1\paperheight,
- bottom = .1\paperheight,
- left = .2\paperwidth,
- right = .1\paperwidth
-]{geometry}
+\documentclass{chemmacros-manual}
-
-\makeatletter
-\def\libertine@figurestyle{LF}
-\usepackage{amsmath}
-\undef\lvert \undef\lVert
-\undef\rvert \undef\rVert
-\usepackage[libertine]{newtxmath}
-\def\libertine@figurestyle{OsF}
-\makeatother
-
-\usepackage[biblatex]{embrac}
-\ChangeEmph{[}[,.02em]{]}[.055em,-.08em]
-\ChangeEmph{(}[-.01em,.04em]{)}[.04em,-.05em]
-
-\usepackage[accsupp]{acro}
-\acsetup{
- long-format = \scshape ,
- short-format = \scshape
-}
\DeclareAcronym{ghs}{
short = ghs ,
long = Globally Harmonized System of Classification and Labelling of
@@ -208,19 +83,17 @@
chemformula/format = \libertineLF
}
-\usepackage{siunitx}
-
\sisetup{
detect-mode=false,
mode=text,
text-rm=\libertineLF
}
-\usepackage{filecontents}
-
\defbibheading{bibliography}{\section{References}}
\addbibresource{\jobname.bib}
-\begin{filecontents*}{\jobname.bib}
+\addbibresource{cnltx.bib}
+
+\begin{filecontents*}[overwrite]{\jobname.bib}
@book{iupac:greenbook,
author = {E. Richard Cohan and Tomislav Cvita\v{s} and Jeremy G. Frey and
Bertil Holmstr\"om and Kozo Kuchitsu and Roberto Marquardt and Ian Mills and
@@ -1647,8 +1520,6 @@ modules. In the macro descriptions below \TF\ denotes that a \code{T}, an
\marg{true} \marg{false}]
Checks if class \meta{name} has been loaded. Also works after begin
document.
- \explcommand{chemmacros_leave_vmode:}
- Equivalent of \cs*{leavevmode}.
\explcommand{chemmacros_nobreak:}
Inserts a penalty of \num{10000}.
\explcommand{chemmacros_allow_break:}
diff --git a/macros/latex/contrib/chemmacros/chemmacros.history b/macros/latex/contrib/chemmacros/chemmacros.history
index fc78d0e120..694c1039ce 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.history
+++ b/macros/latex/contrib/chemmacros/chemmacros.history
@@ -386,3 +386,7 @@ Version history
- define latin phrases on the go instead of at begin
document
2020/01/16 - version 5.9a - adapt to renaming of string case changing functions
+2020/02/03 - version 5.10 - define \torr as well as \Torr (units)
+ - prefer lazy boolean evaluation
+ - prefer the kernel commands to
+ \chemmacros_leave_vmode: and \chemmacros_tex_if:
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
index 3f84c9097b..ed85a205e5 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.base.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{base}{2020/01/16 basic chemmacros module}
+\ChemModule{base}{2020/02/02 basic chemmacros module}
% for the document hooks
\ChemCompatibilityFrom{5.1}
@@ -117,21 +117,27 @@
{
\exp_args:Nc \NewDocumentCommand {NewChem#1} {#2}
{
- \bool_if:nTF { \cs_if_free_p:c {##1} && \cs_if_free_p:c {end##1} }
- { #3 }
+ \bool_lazy_and:nnTF
+ { \cs_if_free_p:c {##1} }
+ { \cs_if_free_p:c {end##1} }
+ {#3}
{ \msg_error:nnn {chemmacros} {new-#1} {##1} }
}
\exp_args:Nc \NewDocumentCommand {RenewChem#1} {#2}
{
- \bool_if:nTF { \cs_if_free_p:c {##1} || \cs_if_free_p:c {end##1} }
+ \bool_lazy_or:nnTF
+ { \cs_if_free_p:c {##1} }
+ { \cs_if_free_p:c {end##1} }
{ \msg_error:nnn {chemmacros} {renew-#1} {##1} }
- { #3 }
+ {#3}
}
\exp_args:Nc \NewDocumentCommand {DeclareChem#1} {#2} {#3}
\exp_args:Nc \NewDocumentCommand {ProvideChem#1} {#2}
{
- \bool_if:nT { \cs_if_free_p:c {##1} && \cs_if_free_p:c {end##1} }
- { #3 }
+ \bool_lazy_and:nT
+ { \cs_if_free_p:c {##1} }
+ { \cs_if_free_p:c {end##1} }
+ {#3}
}
\msg_new:nnn {chemmacros} {new-#1}
{
@@ -178,7 +184,6 @@
\cs_new_eq:NN \chemmacros_ignore_spaces: \tex_ignorespaces:D
-\cs_new_protected:Npn \chemmacros_leave_vmode: { \hbox_unpack:N \c_empty_box }
\cs_new_protected:Npn \chemmacros_nobreak: { \tex_penalty:D 10000 \scan_stop: }
\cs_new_protected:Npn \chemmacros_allow_break: { \tex_penalty:D \c_zero_int }
\cs_new_protected:Npn \chemmacros_skip_nobreak:N #1
@@ -188,13 +193,6 @@
\chemmacros_nobreak:
}
-% do I use those at all?
-\prg_new_conditional:Npnn \chemmacros_tex_if:nn #1#2 {p,T,F,TF}
- { \use:c { if #1 } #2 \prg_return_true: \else: \prg_return_false: \fi: }
-
-\prg_new_conditional:Npnn \chemmacros_latex_if:n #1 {p,T,F,TF}
- { #1 { \prg_return_true: } { \prg_return_false: } }
-
% this is used at least in the `isotope' module
\prg_new_conditional:Npnn \chemmacros_if_is_int:n #1 {p,T,F,TF}
{
@@ -272,7 +270,7 @@
{
\cs_if_exist:cF {cref@#1@name}
{
- \chemmacros_tex_if:nnTF {@cref@capitalise} {}
+ \legacy_if:nTF {@cref@capitalise}
{ \crefname {#1} {#4} {#5} }
{ \crefname {#1} {#2} {#3} }
\Crefname {#1} {#4} {#5}
@@ -485,3 +483,4 @@
2016/05/04 - fix \ChemCleverefSupport
2017/08/28 - add missing hyperref check
2020/01/16 - adapt to renaming of string case changing functions
+2020/02/02 - lazy boolean evaluation
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.chemformula.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.chemformula.code.tex
index 292b90747a..7bc4be0b0a 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.chemformula.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.chemformula.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{chemformula}{2016/05/03 integration of chemical formulas}
+\ChemModule{chemformula}{2020/02/02 integration of chemical formulas}
\RequirePackage{amstext}
\chemmacros_load_module:n {charges}
@@ -209,17 +209,12 @@
\AtEndPreamble
{
- \bool_if:nTF
- {
- !\l__chemmacros_formula_method_set_bool
- &&
- \chemmacros_if_compatibility_p:nn {>=} {5.2}
- &&
- \chemmacros_if_compatibility_p:nn {<} {5.6}
- }
- { \chemmacros_check_formula_method: }
+ \bool_if:NF \l__chemmacros_formula_method_set_bool
{
- \bool_if:NF \l__chemmacros_formula_method_set_bool
+ \bool_lazy_and:nnTF
+ { \chemmacros_if_compatibility_p:nn {>=} {5.2} }
+ { \chemmacros_if_compatibility_p:nn {<} {5.6} }
+ { \chemmacros_check_formula_method: }
{
\chemmacros_if_compatibility:nnTF {>=} {5.6}
{ \msg_info:nn {chemmacros} {default-formula-method} }
@@ -242,3 +237,4 @@
- don't automatically load an available method: load `chemformula'
if the users haven't decided for themselves and issue a warning
2016/05/03 - correct wrong method check
+2020/02/02 - lazy boolean evaluation
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.greek.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.greek.code.tex
index afe973899d..ef9f8568e2 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.greek.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.greek.code.tex
@@ -25,9 +25,9 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{greek}{2015/06/09 upright greek symbols}
+\ChemModule{greek}{2020/02/02 upright greek symbols}
-\RequirePackage{chemgreek}[2015/04/09]
+\RequirePackage{chemgreek}[2020/01/16]
\msg_new:nnn {chemmacros} {no-greek}
{
@@ -45,19 +45,15 @@
% chemgreek selects a mapping if an unambiguous choice is possible, otherwise
% selects `default'. Warn the user in this case:
\AtBeginDocument{
- \bool_if:nT
- {
- \chemgreek_if_mapping_active_p:n {default} ||
- \chemgreek_if_mapping_active_p:n {var-default}
- }
+ \bool_lazy_or:nnT
+ { \chemgreek_if_mapping_active_p:n {default} }
+ { \chemgreek_if_mapping_active_p:n {var-default} }
{ \msg_warning:nn {chemmacros} {no-greek} }
}
% an option for manual selection:
\chemmacros_define_global_keys:n
- {
- greek .code:n = \chemmacros_choose_chemgreek_mapping:n {#1}
- }
+ { greek .code:n = \chemmacros_choose_chemgreek_mapping:n {#1} }
\cs_new_protected:Npn \chemmacros_choose_chemgreek_mapping:n #1
{
@@ -70,3 +66,5 @@
}
% --------------------------------------------------------------------------
+\file_input_stop:
+2020/02/02 - lazy boolean evaluation
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.mechanisms.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.mechanisms.code.tex
index 2f272bb740..812dede658 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.mechanisms.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.mechanisms.code.tex
@@ -40,9 +40,9 @@
\cs_new_protected:Npn \__chemmacros_set_mechanisms:nnn #1#2#3
{
- \tl_set:Nn \l__chemmacros_mechanisms_type_tl { #1 }
- \tl_set:Nn \l__chemmacros_mechanisms_mol_tl { #2 }
- \tl_set:Nn \l__chemmacros_mechanisms_ar_tl { #3 }
+ \tl_set:Nn \l__chemmacros_mechanisms_type_tl {#1}
+ \tl_set:Nn \l__chemmacros_mechanisms_mol_tl {#2}
+ \tl_set:Nn \l__chemmacros_mechanisms_ar_tl {#3}
}
\chemmacros_define_keys:nn {mechanisms}
@@ -50,7 +50,7 @@
type .choice: ,
type / .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {N} }
@@ -60,7 +60,7 @@
} ,
type / 1 .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {N} }
@@ -71,7 +71,7 @@
} ,
type / 2 .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {N} }
@@ -82,7 +82,7 @@
} ,
type / se .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {E} }
@@ -92,7 +92,7 @@
} ,
type / 1e .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {E} }
@@ -103,7 +103,7 @@
} ,
type / 2e .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {E} }
@@ -114,7 +114,7 @@
} ,
type / ar .code:n =
{
- \__chemmacros_set_mechanisms:nnn { S }
+ \__chemmacros_set_mechanisms:nnn {S}
{
\c_math_toggle_token
\c_math_subscript_token { \text {E} }
@@ -123,14 +123,14 @@
{ Ar - }
} ,
type / e .code:n =
- { \__chemmacros_set_mechanisms:nnn { E } { } { } } ,
+ { \__chemmacros_set_mechanisms:nnn {E} { } { } } ,
type / e1 .code:n =
- { \__chemmacros_set_mechanisms:nnn { E } { 1 } { } } ,
+ { \__chemmacros_set_mechanisms:nnn {E} {1} { } } ,
type / e2 .code:n =
- { \__chemmacros_set_mechanisms:nnn { E } { 2 } { } } ,
+ { \__chemmacros_set_mechanisms:nnn {E} {2} { } } ,
type / cb .code:n =
{
- \__chemmacros_set_mechanisms:nnn { E }
+ \__chemmacros_set_mechanisms:nnn {E}
{
1
\c_math_toggle_token
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.nomenclature.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.nomenclature.code.tex
index 1175b3151e..3e5b6b616d 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.nomenclature.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.nomenclature.code.tex
@@ -51,10 +51,10 @@
\msg_new:nnn {chemmacros} {let-iupac}
{
- You've~ tried~ to~ let~ the~ iupac~ command~ \token_to_str:N #1 ~ to~ the~
- iupac~ command~ \token_to_str:N #2 ,~ but~ the~ latter~ doesn't~ exist.~
- Use~ \token_to_str:N \NewChemIUPAC \c_space_tl instead~ or~declare~
- \token_to_str:N #2 \c_space_tl first.
+ You've~ tried~ to~ let~ the~ iupac~ command~ \token_to_str:N #1
+ \c_space_tl to~ the~ iupac~ command~ \token_to_str:N #2 ,~ but~ the~
+ latter~ doesn't~ exist.~ Use~ \token_to_str:N \NewChemIUPAC \c_space_tl
+ instead~ or~declare~ \token_to_str:N #2 \c_space_tl first.
}
\msg_new:nnn {chemmacros} {new-iupac-shorthand}
@@ -70,75 +70,87 @@
but~ this~ shorthand~ doesn't~ exist,~ yet.
}
+\msg_new:nnn {chemmacros} {show-iupac}
+ { \\ >~ \token_to_str:N #1=iupac~macro: \\ -> #2 }
+
+\msg_new:nnn {chemmacros} {no-iupac-command}
+ { \\ >~ \token_to_str:N #1=not~ defined~ as~ iupac~ macro }
+
+\cs_generate_variant:Nn \msg_show:nnnn {nnnV}
+
+% --------------------------------------------------------------------------
\prop_new:N \l__chemmacros_iupac_prop
-\cs_new_protected:Npn \chemmacros_new_iupac:Nn #1#2
+\cs_new_protected:Npn \__chemmacros_iupac_name:NN #1#2
+ { \str_set:Nx #2 { \chemmacros_remove_backslash:N #1 } }
+
+\cs_new_protected:Npn \__chemmacros_define_iupac:Nn #1#2
{
- \tl_set:Nx \l__chemmacros_tmpa_tl
- { \chemmacros_remove_backslash:N #1 }
- \prop_if_in:NVTF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_tl
- { \msg_error:nnn {chemmacros} {new-iupac} {#1} }
- {
- \prop_put:NVn \l__chemmacros_iupac_prop
- \l__chemmacros_tmpa_tl
- {#2}
- }
+ \__chemmacros_iupac_name:NN #1 \l__chemmacros_tmpa_str
+ \prop_put:NVn \l__chemmacros_iupac_prop
+ \l__chemmacros_tmpa_str
+ {#2}
\chemmacros_make_iupac:
}
+\cs_generate_variant:Nn \__chemmacros_define_iupac:Nn {NV}
-\cs_new_protected:Npn \chemmacros_provide_iupac:Nn #1#2
+\cs_new_protected:Npn \__chemmacros_let_iupac:NN #1#2
{
+ \__chemmacros_iupac_name:NN #1 \l__chemmacros_tmpa_str
+ \__chemmacros_iupac_name:NN #2 \l__chemmacros_tmpb_str
\tl_set:Nx \l__chemmacros_tmpa_tl
- { \chemmacros_remove_backslash:N #1 }
- \prop_if_in:NVF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_tl
- {
- \prop_put:NVn \l__chemmacros_iupac_prop
- \l__chemmacros_tmpa_tl
- {#2}
- }
- \chemmacros_make_iupac:
+ { \prop_item:NV \l__chemmacros_iupac_prop \l__chemmacros_tmpb_str }
+ \__chemmacros_define_iupac:NV #1 \l__chemmacros_tmpa_tl
}
-\cs_new_protected:Npn \chemmacros_define_iupac:Nn #1#2
+\cs_new_protected:Npn \chemmacros_show_iupac:N #1
{
- \tl_set:Nx \l__chemmacros_tmpa_tl
- { \chemmacros_remove_backslash:N #1 }
- \prop_put:NVn \l__chemmacros_iupac_prop
- \l__chemmacros_tmpa_tl
- {#2}
- \chemmacros_make_iupac:
+ \group_begin:
+ \__chemmacros_iupac_name:NN #1 \l__chemmacros_tmpa_str
+ \tl_set:Nx \l__chemmacros_tmpa_tl
+ { \prop_item:NV \l__chemmacros_iupac_prop \l__chemmacros_tmpa_str }
+ \tl_if_empty:NTF \l__chemmacros_tmpa_tl
+ { \msg_show:nnn {chemmacros} {no-iupac-command} {#1} }
+ { \msg_show:nnnV {chemmacros} {show-iupac} {#1} \l__chemmacros_tmpa_tl }
+ \group_end:
+ }
+
+\prg_new_protected_conditional:Npnn \chemmacros_if_iupac:N #1 {T,F,TF}
+ {
+ \__chemmacros_iupac_name:NN #1 \l__chemmacros_tmpa_str
+ \prop_if_in:NVTF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_str
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+
+\cs_new_protected:Npn \chemmacros_new_iupac:Nn #1#2
+ {
+ \chemmacros_if_iupac:NTF #1
+ { \msg_error:nnn {chemmacros} {new-iupac} {#1} }
+ { \__chemmacros_define_iupac:Nn #1 {#2} }
}
+\cs_new_protected:Npn \chemmacros_provide_iupac:Nn #1#2
+ {
+ \chemmacros_if_iupac:NF #1
+ { \__chemmacros_define_iupac:Nn #1 {#2} }
+ }
+
+\cs_new_protected:Npn \chemmacros_define_iupac:Nn #1#2
+ { \__chemmacros_define_iupac:Nn #1 {#2} }
+
\cs_new_protected:Npn \chemmacros_renew_iupac:Nn #1#2
{
- \tl_set:Nx \l__chemmacros_tmpa_tl
- { \chemmacros_remove_backslash:N #1 }
- \prop_if_in:NVTF \l__chemmacros_iupac_prop \l__chemmacros_tmpa_tl
- {
- \prop_put:NVn \l__chemmacros_iupac_prop
- \l__chemmacros_tmpa_tl
- {#2}
- }
+ \chemmacros_if_iupac:NTF #1
+ { \__chemmacros_define_iupac:Nn #1 {#2} }
{ \msg_error:nnn {chemmacros} {renew-iupac} {#1} }
- \chemmacros_make_iupac:
}
\cs_new_protected:Npn \chemmacros_let_iupac:NN #1#2
{
- \tl_set:Nx \l__chemmacros_tmpa_tl
- { \chemmacros_remove_backslash:N #1 }
- \tl_set:Nx \l__chemmacros_tmpb_tl
- { \chemmacros_remove_backslash:N #2 }
- \prop_get:NVNTF \l__chemmacros_iupac_prop
- \l__chemmacros_tmpb_tl
- \l__chemmacros_tmpc_tl
- {
- \prop_put:NVV \l__chemmacros_iupac_prop
- \l__chemmacros_tmpa_tl
- \l__chemmacros_tmpc_tl
- }
+ \chemmacros_if_iupac:NTF #2
+ { \__chemmacros_let_iupac:NN #1#2 }
{ \msg_error:nnnn {chemmacros} {let-iupac} {#1} {#2} }
- \chemmacros_make_iupac:
}
\ChemCompatibilityTo{5.2}
@@ -220,6 +232,7 @@
\NewDocumentCommand \LetChemIUPAC {mm}
{ \chemmacros_let_iupac:NN #1 #2 }
+% --------------------------------------------------------------------------
\chemmacros_define_keys:nn {nomenclature}
{
iupac .choice: ,
@@ -234,6 +247,7 @@
\bool_set_true:N \l__chemmacros_iupac_strict_bool ,
}
+% --------------------------------------------------------------------------
% stereo descriptors and other nomenclature commands
% Cahn-Ingold-Prelog
\dim_new:N \l__chemmacros_cip_kern_dim
@@ -643,6 +657,9 @@
}
}
+\NewDocumentCommand \ChemMakeIupacShorthands {}
+ { \chemmacros_make_shorthands: }
+
\NewDocumentCommand \DeclareChemIUPACShorthand {mm}
{ \chemmacros_define_iupac_shorthand:NN #1#2 }
@@ -674,20 +691,20 @@
\NewChemIUPACShorthand - \chemmacros_break_point_hyphen:
\ChemCompatibilityFrom{5.1}
-\NewChemIUPACShorthand ( \chemmacros_break_point_opening_paren:
-\NewChemIUPACShorthand ) \chemmacros_break_point_closing_paren:
-\NewChemIUPACShorthand [ \chemmacros_break_point_opening_bracket:
-\NewChemIUPACShorthand ] \chemmacros_break_point_closing_bracket:
+ \NewChemIUPACShorthand ( \chemmacros_break_point_opening_paren:
+ \NewChemIUPACShorthand ) \chemmacros_break_point_closing_paren:
+ \NewChemIUPACShorthand [ \chemmacros_break_point_opening_bracket:
+ \NewChemIUPACShorthand ] \chemmacros_break_point_closing_bracket:
\EndChemCompatibility
\ChemCompatibilityFrom{5.3}
-\NewChemIUPAC \chemprime { \ensuremath {{}^{\prime}} }
-\NewChemIUPACShorthand ' \chemprime
+ \NewChemIUPAC \chemprime { \ensuremath {{}^{\prime}} }
+ \NewChemIUPACShorthand ' \chemprime
\EndChemCompatibility
\ChemCompatibilityFrom{5.8c}
-\NewChemIUPAC \nonbreakinghyphen { \mbox{-} \nobreak \hspace{0pt} }
-\NewChemIUPACShorthand = \nonbreakinghyphen
+ \NewChemIUPAC \nonbreakinghyphen { \mbox{-} \nobreak \hspace{0pt} }
+ \NewChemIUPACShorthand = \nonbreakinghyphen
\EndChemCompatibility
\cs_new_protected:Npn \chemmacros_iupac:nn #1#2
@@ -697,13 +714,13 @@
\chemmacros_set_keys:nn {nomenclature} {#1}
\chemmacros_make_iupac:
\chemmacros_make_shorthands:
- % what's this vvv in here for?
- \chemmacros_ignore_spaces:
+ % \prop_show:N \l__chemmacros_iupac_shorthands_prop
\chemmacros_if_compatibility:nnT {<=} {5.2}
{ \chemmacros_define_deprecated:NN \- - }
\tl_set_rescan:Nnn \l__chemmacros_tmpa_tl
{ \chemmacros_activate_all_iupac_shorthands: }
{#2}
+ % \tl_analysis_show:N
\l__chemmacros_tmpa_tl
\group_end:
}
@@ -953,3 +970,5 @@
`cip-number-format'
2017/06/11 - change behaviour of \__chemmacros_break_point_insert:nnn so
it does nothing as last token in \iupac
+2020/01/02 - \chemmacros_show_iupac:N
+ - \chemmacros_if_iupac:NTF
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.phases.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.phases.code.tex
index 1ddcc094bb..d305470efa 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.phases.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.phases.code.tex
@@ -80,7 +80,7 @@
\cs_new_protected:Npn \chemmacros_phase:n #1
{
- \chemmacros_leave_vmode:
+ \mode_leave_vertical:
\bool_if:NTF \l__chemmacros_phases_sub_bool
{ \chemformula_subscript:n { (#1) } }
{
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.reactions.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.reactions.code.tex
index c30c5fac89..0d2161cc2b 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.reactions.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.reactions.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{reactions}{2019/09/27 reaction environments}
+\ChemModule{reactions}{2020/02/02 reaction environments}
\chemmacros_load_module:n {chemformula}
@@ -167,11 +167,9 @@
\AtEndPreamble
{
- \bool_if:nT
- {
- \chemmacros_if_package_loaded_p:n {tocbasic} ||
- \l__chemmacros_reactions_tocbasic_bool
- }
+ \bool_lazy_or:nnT
+ { \chemmacros_if_package_loaded_p:n {tocbasic} }
+ { \l__chemmacros_reactions_tocbasic_bool }
{
\RequirePackage {tocbasic}
\addtotoclist [float] {lor}
@@ -444,3 +442,4 @@
2016/05/04 - options `tag-open', `tag-close' and `before-tag'
2019/09/23 - added Norwegian translations
2019/09/27 - change `O{}' argument of reactions into `!O{}'
+2020/02/02 - lazy boolean evaluation
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.redox.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.redox.code.tex
index cbc0b2e242..2c0421b470 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.redox.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.redox.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{redox}{2015/09/30 oxidation numbers, redox reactions}
+\ChemModule{redox}{2020/02/02 oxidation numbers, redox reactions}
\chemmacros_load_modules:n {tikz,xfrac}
@@ -85,18 +85,14 @@
\ChemCompatibilityTo{5.4}
\cs_new_protected:Npn \__chemmacros_ox_sign:n #1
{
- \bool_if:nT
- {
- \fp_compare_p:n { #1 > 0 } &&
- \l__chemmacros_ox_explicit_sign_bool
- }
+ \bool_lazy_and:nnT
+ { \fp_compare_p:n { #1 > 0 } }
+ { \l__chemmacros_ox_explicit_sign_bool }
{ \c_math_toggle_token + \c_math_toggle_token }
- \bool_if:nT
- {
- \fp_compare_p:n { #1 = 0 } &&
- \l__chemmacros_ox_explicit_sign_bool
- }
- { \c_math_toggle_token \pm \c_math_toggle_token }
+ \bool_lazy_and:nnT
+ { \fp_compare_p:n { #1 = 0 } }
+ { \l__chemmacros_ox_explicit_sign_bool }
+ { \c_math_toggle_token \pm \c_math_toggle_token }
\fp_compare:nT { #1 < 0 }
{ \c_math_toggle_token - \c_math_toggle_token }
}
@@ -104,19 +100,17 @@
\ChemCompatibilityFrom{5.4}
\cs_new_protected:Npn \__chemmacros_ox_sign:n #1
{
- \bool_if:nT
+ \bool_lazy_and:nnT
+ { \fp_compare_p:n { #1 > 0 } }
+ { \l__chemmacros_ox_explicit_sign_bool }
+ { \c_math_toggle_token + \c_math_toggle_token }
+ \bool_lazy_all:nT
{
- \fp_compare_p:n { #1 > 0 } &&
- \l__chemmacros_ox_explicit_sign_bool
+ { \fp_compare_p:n { #1 = 0 } }
+ { \l__chemmacros_ox_explicit_sign_bool }
+ { \l__chemmacros_ox_explicit_zero_sign_bool }
}
- { \c_math_toggle_token + \c_math_toggle_token }
- \bool_if:nT
- {
- \fp_compare_p:n { #1 = 0 } &&
- \l__chemmacros_ox_explicit_sign_bool &&
- \l__chemmacros_ox_explicit_zero_sign_bool
- }
- { \c_math_toggle_token \pm \c_math_toggle_token }
+ { \c_math_toggle_token \pm \c_math_toggle_token }
\fp_compare:nT { #1 < 0 }
{ \c_math_toggle_token - \c_math_toggle_token }
}
@@ -334,7 +328,7 @@
% TODO: add option to make `#2' be parsed as chem formula
\cs_new_protected:Npn \chemmacros_redox_partner:nn #1#2
{
- \chemmacros_tex_if:nnTF {measuring@} {}
+ \legacy_if:nTF {measuring@}
{
\group_begin:
\tikz[baseline=(#1.base)] { \node [inner~sep=0pt] (#1) {#2} ; }
@@ -437,4 +431,5 @@
% --------------------------------------------------------------------------
\file_input_stop:
2015/09/30 - new option `explicit-zero-sign'
-
+2020/02/02 - lazy boolean evaluation
+ - prefer \legacy_if:nTF over \chemmacros_if_tex:nnTF
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
index 057acbf70c..97e1a11cb0 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.scheme.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{scheme}{2019/09/23 a scheme floating environment}
+\ChemModule{scheme}{2020/02/02 a scheme floating environment}
\RequirePackage {chemnum}
@@ -80,7 +80,7 @@
\counterwithin {#1} {chapter}
\setcounter {#1} {0}
}
- \chemmacros_tex_if:nnT {artopt} {}
+ \legacy_if:nT {artopt}
{ \counterwithout {#1} {chapter} }
}
@@ -136,12 +136,15 @@
{
\prop_get:NnNT \l__chemmacros_float_methods_prop {#1}
\l__chemmacros_tmpa_tl
- \bool_if:nT
- { !\l__chemmacros_float_def_bool && \l__chemmacros_tmpa_tl }
{
- \bool_set_true:N \l__chemmacros_float_def_bool
- \tl_set:Nn \l__chemmacros_float_method_tl {#1}
- \msg_info:nnn {chemmacros} {float-method} {#1}
+ \bool_lazy_and:nnT
+ { !\l__chemmacros_float_def_bool }
+ { \l__chemmacros_tmpa_tl }
+ {
+ \bool_set_true:N \l__chemmacros_float_def_bool
+ \tl_set:Nn \l__chemmacros_float_method_tl {#1}
+ \msg_info:nnn {chemmacros} {float-method} {#1}
+ }
}
}
@@ -180,8 +183,9 @@
% #1: env name
\cs_new_protected:Npn \chemmacros_define_float:nn #1#2
{
- \bool_if:nT
- { !\cs_if_exist_p:c {#1} && !\cs_if_exist_p:c {end#1} }
+ \bool_lazy_and:nnT
+ { !\cs_if_exist_p:c {#1} }
+ { !\cs_if_exist_p:c {end#1} }
{
\bool_if:NTF \l__chemmacros_float_def_bool
{
@@ -209,15 +213,13 @@
\newenvironment {#1*}
{\@dblfloat{#1}}
{\end@dblfloat}
- \bool_if:nTF
- {
- \chemmacros_if_class_loaded_p:n {book} ||
- \chemmacros_if_class_loaded_p:n {report}
- }
+ \bool_lazy_or:nnTF
+ { \chemmacros_if_class_loaded_p:n {book} }
+ { \chemmacros_if_class_loaded_p:n {report} }
{
\cs_new_protected:cpn {listof#1s}
{
- \chemmacros_tex_if:nnTF {@twocolumn} {}
+ \legacy_if:nTF {@twocolumn}
{ \@restonecoltrue\onecolumn }
{ \@restonecolfalse }
\exp_args:NNx \chapter* {\exp_not:c {list#1name}}
@@ -225,8 +227,7 @@
{ \MakeUppercase \use:c {list#1name} }
{ \MakeUppercase \use:c {list#1name} }
\@starttoc {#2}
- \chemmacros_tex_if:nnT {@restonecol} {}
- { \twocolumn }
+ \legacy_if:nT {@restonecol} { \twocolumn }
}
}
{
@@ -319,5 +320,7 @@
2015/10/23 - add info message to float method detection
2016/01/23 - make the module compatible with chemscheme
2016/04/25 - cleveref and fancyref support
-2016/12/28 - bug fix: typo in \chemmacros_tex_if:nnTF usage
+2016/12/28 - bug fix: typo in \chemmacros_if_tex:nnTF usage
2019/03/23 - added Norwegian translations
+2020/02/03 - lazy boolean evaluation
+ - prefer \legacy_if:nTF over \chemmacros_if_tex:nnTF
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.spectroscopy.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.spectroscopy.code.tex
index a1be3187aa..c7e7037829 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.spectroscopy.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.spectroscopy.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{spectroscopy}{2015/12/31 environment for spectroscopic data}
+\ChemModule{spectroscopy}{2020/02/02 environment for spectroscopic data}
\chemmacros_load_modules:n {chemformula}
\RequirePackage{siunitx}
@@ -268,26 +268,20 @@
{
\bool_if:NT \l__chemmacros_nmr_list_bool { \item \scan_stop: }
\group_begin:
- \chemmacros_leave_vmode:
+ \mode_leave_vertical:
\bool_set_false:N \l__chemmacros_nmr_frequency_bool
\bool_set_false:N \l__chemmacros_nmr_solvent_bool
\tl_if_empty:nF {#3}
{ \bool_set_true:N \l__chemmacros_nmr_frequency_bool }
\tl_if_empty:nF {#4}
{ \bool_set_true:N \l__chemmacros_nmr_solvent_bool }
- \bool_if:nT
- {
- \l__chemmacros_nmr_frequency_bool
- ||
- \l__chemmacros_nmr_solvent_bool
- }
+ \bool_lazy_or:nnT
+ { \l__chemmacros_nmr_frequency_bool }
+ { \l__chemmacros_nmr_solvent_bool }
{ \bool_set_true:N \l__chemmacros_nmr_delimiters_bool }
- \bool_if:nT
- {
- \l__chemmacros_nmr_frequency_bool
- &&
- \l__chemmacros_nmr_solvent_bool
- }
+ \bool_lazy_and:nnT
+ { \l__chemmacros_nmr_frequency_bool }
+ { \l__chemmacros_nmr_solvent_bool }
{ \bool_set_true:N \l__chemmacros_nmr_comma_bool }
\tl_if_empty:nTF {#2}
{
@@ -516,3 +510,4 @@
\file_input_stop:
2015/12/31 - new option `atom-number-space'
2017/01/27 - new option `nmr-base-format'
+2020/02/02 - lazy boolean evaluation
diff --git a/macros/latex/contrib/chemmacros/chemmacros.module.units.code.tex b/macros/latex/contrib/chemmacros/chemmacros.module.units.code.tex
index 7b90faad3a..e8c4595af8 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.module.units.code.tex
+++ b/macros/latex/contrib/chemmacros/chemmacros.module.units.code.tex
@@ -25,7 +25,7 @@
%
% The Current Maintainer of this work is Clemens Niederberger.
% --------------------------------------------------------------------------
-\ChemModule{units}{2019/11/07 chemical units}
+\ChemModule{units}{2020/02/02 chemical units}
\RequirePackage{siunitx}
@@ -37,9 +37,18 @@
\DeclareSIUnit \moLar {\mole\per\liter}
\DeclareSIUnit \MolMass {\gram\per\mole}
\DeclareSIUnit \normal {\textsc{n}}
-\chemmacros_if_compatibility:nnTF {<} {5.8g}
- { \DeclareSIUnit \torr {torr} }
- { \DeclareSIUnit \Torr {Torr} }
+
+\ChemCompatibilityTo{5.8g}
+ \DeclareSIUnit \torr {torr}
+\EndChemCompatibility
+
+\ChemCompatibilityFrom{5.8h}
+ \DeclareSIUnit \Torr {Torr}
+\EndChemCompatibility
+
+\ChemCompatibilityFrom{5.10}
+ \DeclareSIUnit \torr {Torr}
+\EndChemCompatibility
\AtEndPreamble
{
diff --git a/macros/latex/contrib/chemmacros/chemmacros.sty b/macros/latex/contrib/chemmacros/chemmacros.sty
index e18a84fe95..ca76b8ab2c 100644
--- a/macros/latex/contrib/chemmacros/chemmacros.sty
+++ b/macros/latex/contrib/chemmacros/chemmacros.sty
@@ -31,10 +31,10 @@
% --------------------------------------------------------------------------
% package information:
-\tl_const:Nn \c_chemmacros_date_tl {2020/01/16}
+\tl_const:Nn \c_chemmacros_date_tl {2020/02/03}
\tl_const:Nn \c_chemmacros_version_major_number_tl {5}
-\tl_const:Nn \c_chemmacros_version_minor_number_tl {9}
-\tl_const:Nn \c_chemmacros_version_subrelease_tl {a}
+\tl_const:Nn \c_chemmacros_version_minor_number_tl {10}
+\tl_const:Nn \c_chemmacros_version_subrelease_tl {}
\tl_const:Nx \c_chemmacros_version_number_tl
{
\c_chemmacros_version_major_number_tl .
@@ -208,11 +208,9 @@
\cs_new_protected:Npn \ChemCompatibilityBetween #1#2#3 \EndChemCompatibility
{
- \bool_if:nT
- {
- \chemmacros_if_compatibility_p:nn {>=} {#1} &&
- \chemmacros_if_compatibility_p:nn {<} {#2}
- }
+ \bool_lazy_and:nnT
+ { \chemmacros_if_compatibility_p:nn {>=} {#1} }
+ { \chemmacros_if_compatibility_p:nn {<} {#2} }
{#3}
}
@@ -267,6 +265,8 @@
{ \RequirePackage{chemmacros4} }
{ \RequirePackage{chemmacros5} }
-% --------------------------------------------------------------------------
\file_input_stop:
-
+% --------------------------------------------------------------------------
+2020/02/03 - lazy boolean evaluation
+ - prefer the kernel commands to \chemmacros_leave_vmode: and
+ \chemmacros_tex_if:
diff --git a/macros/latex/contrib/chemmacros/chemmacros4.sty b/macros/latex/contrib/chemmacros/chemmacros4.sty
index a9f6b2dfd3..bb392f5afd 100644
--- a/macros/latex/contrib/chemmacros/chemmacros4.sty
+++ b/macros/latex/contrib/chemmacros/chemmacros4.sty
@@ -606,7 +606,7 @@
% --------------------------------------------------------------------------
% a few general functions:
-\cs_new_eq:NN \chemmacros_leave_vmode: \chemformula_leave_vmode:
+\cs_new_eq:NN \mode_leave_vertical: \chemformula_leave_vmode:
\cs_new_eq:NN \chemmacros_ignore_spaces: \tex_ignorespaces:D
\cs_new_eq:NN \chemmacros_nobreak: \chemformula_nobreak:
\cs_new_eq:NN \chemmacros_allow_break: \chemformula_allow_break:
@@ -2295,7 +2295,7 @@
{
\bool_if:NT \l__chemmacros_nmr_list_bool { \item \scan_stop: }
\group_begin:
- \chemmacros_leave_vmode:
+ \mode_leave_vertical:
\bool_set_false:N \l__chemmacros_nmr_frequency_bool
\bool_set_false:N \l__chemmacros_nmr_solvent_bool
\tl_if_empty:nF { #3 }
diff --git a/macros/latex/contrib/chemmacros/chemmacros5.sty b/macros/latex/contrib/chemmacros/chemmacros5.sty
index 1f5ecbc939..e82088aa27 100644
--- a/macros/latex/contrib/chemmacros/chemmacros5.sty
+++ b/macros/latex/contrib/chemmacros/chemmacros5.sty
@@ -85,19 +85,19 @@
% --------------------------------------------------------------------------
% variants of kernel functions:
-\cs_generate_variant:Nn \tl_if_eq:nnTF { xx , V }
-\cs_generate_variant:Nn \seq_set_split:Nnn { Nnx }
-\cs_generate_variant:Nn \prop_item:Nn { NV }
-\cs_generate_variant:Nn \seq_item:Nn { cV }
-\cs_generate_variant:Nn \int_to_arabic:n { V }
-\cs_generate_variant:Nn \tl_replace_once:Nnn { NnV }
-\cs_generate_variant:Nn \prop_gput:Nnn { cxx , NVf }
-\cs_generate_variant:Nn \msg_error:nnn { nnV }
-\cs_generate_variant:Nn \msg_warning:nnn { nnV }
-\cs_generate_variant:Nn \msg_warning:nnnn { nnV }
-\cs_generate_variant:Nn \vbox_set:Nn { NV }
-\cs_generate_variant:Nn \keys_define:nn { x }
-\cs_generate_variant:Nn \keys_set:nn { x , nx }
+\cs_generate_variant:Nn \tl_if_eq:nnTF {xx,V}
+\cs_generate_variant:Nn \seq_set_split:Nnn {Nnx}
+\cs_generate_variant:Nn \prop_item:Nn {NV}
+\cs_generate_variant:Nn \seq_item:Nn {cV}
+\cs_generate_variant:Nn \int_to_arabic:n {V}
+\cs_generate_variant:Nn \tl_replace_once:Nnn {NnV}
+\cs_generate_variant:Nn \prop_gput:Nnn {cxx,NVf}
+\cs_generate_variant:Nn \msg_error:nnn {nnV}
+\cs_generate_variant:Nn \msg_warning:nnn {nnV}
+\cs_generate_variant:Nn \msg_warning:nnnn {nnV}
+\cs_generate_variant:Nn \vbox_set:Nn {NV}
+\cs_generate_variant:Nn \keys_define:nn {x}
+\cs_generate_variant:Nn \keys_set:nn {x,nx}
% --------------------------------------------------------------------------
% temporary variables:
@@ -130,6 +130,10 @@
\clist_new:N \l__chemmacros_tmpb_clist
\clist_new:N \l__chemmacros_tmpc_clist
+\str_new:N \l__chemmacros_tmpa_str
+\str_new:N \l__chemmacros_tmpb_str
+\str_new:N \l__chemmacros_tmpc_str
+
% --------------------------------------------------------------------------
% module mechanism:
\tl_const:Nn \c__chemmacros_module_extension_tl {code.tex}
@@ -323,3 +327,4 @@ Version history
2015/10/14 - bug fix in the module hook mechanism
- bug fix in \chemmacros_if_module_loaded:n
- new `errorcheck' module
+2020/02/03 - add temporary string variables
diff --git a/macros/latex/contrib/derivative/README.md b/macros/latex/contrib/derivative/README.md
index 1ecac42f09..308e79be32 100644
--- a/macros/latex/contrib/derivative/README.md
+++ b/macros/latex/contrib/derivative/README.md
@@ -1,4 +1,4 @@
-## README for derivative package v0.96 dated 2019-12-22
+## README for derivative package v0.97 dated 2019-02-03
The package provides a set of commands `\NewOdvVariant`, `\NewPdvVariant` etc. that can be used to define a variant of a derivative. The package have already defined several derivatives:
@@ -11,7 +11,7 @@ The package provides a set of commands `\NewOdvVariant`, `\NewPdvVariant` etc. t
### Copyright and license
-Copyright 2019 Simon Jensen
+Copyright 2019-2020 Simon Jensen
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3
diff --git a/macros/latex/contrib/derivative/derivative.pdf b/macros/latex/contrib/derivative/derivative.pdf
index 39592e3c9d..dae8b7dede 100644
--- a/macros/latex/contrib/derivative/derivative.pdf
+++ b/macros/latex/contrib/derivative/derivative.pdf
Binary files differ
diff --git a/macros/latex/contrib/derivative/derivative.sty b/macros/latex/contrib/derivative/derivative.sty
index f805cbbf86..d410254931 100644
--- a/macros/latex/contrib/derivative/derivative.sty
+++ b/macros/latex/contrib/derivative/derivative.sty
@@ -1,5 +1,5 @@
% derivative.sty
-% Copyright 2019 Simon Jensen
+% Copyright 2019-2020 Simon Jensen
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -16,7 +16,7 @@
\NeedsTeXFormat{LaTeX2e}
\RequirePackage{xparse}[2018/05/09]
-\ProvidesExplPackage{derivative}{2019/12/22}{0.96}{Nice and easy derivatives}
+\ProvidesExplPackage{derivative}{2020/02/03}{0.97}{Nice and easy derivatives}
%%%%% Useful conditionals %%%%%
@@ -924,7 +924,7 @@
{ auto } { \__deriv_scale_auto:Nnnn \__deriv_auto_left:n {#1} {#2} { 1 } }
{ none } { \__deriv_scale_none:nnn {#1} {#2} { 1 } }
}
- { \__deriv_scale_big:nnnm {#1} {#2} { 1 } { l } }
+ { \__deriv_scale_big:nnnn {#1} {#2} { 1 } { l } }
}
% dv , name
\cs_new:Npn \__deriv_scale_right:nn #1 #2
@@ -934,7 +934,7 @@
{ auto } { \__deriv_scale_auto:Nnnn \__deriv_auto_right:n {#1} {#2} { 2 } }
{ none } { \__deriv_scale_none:nnn {#1} {#2} { 2 } }
}
- { \__deriv_scale_big:nnnm {#1} {#2} { 2 } { r } }
+ { \__deriv_scale_big:nnnn {#1} {#2} { 2 } { r } }
}
% left/right , dv , name, number
\cs_new:Npn \__deriv_scale_auto:Nnnn #1 #2 #3 #4
diff --git a/macros/latex/contrib/derivative/derivative.tex b/macros/latex/contrib/derivative/derivative.tex
index 0bc1772615..30eaab1bee 100644
--- a/macros/latex/contrib/derivative/derivative.tex
+++ b/macros/latex/contrib/derivative/derivative.tex
@@ -1,5 +1,5 @@
% derivative.tex
-% Copyright 2019 Simon Jensen
+% Copyright 2019-2020 Simon Jensen
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -1082,8 +1082,8 @@
\Titel{The \pakkenavn{} package}
\Forfatter{Simon Jensen}
\Email{sjelatex@gmail.com}
-\Dato{2019/12/22}
-\Version{0.96}
+\Dato{2019/02/03}
+\Version{0.97}
\RequirePackage{derivative}[\dato]
\derivset{all}[scale-auto = mleftmright]
@@ -2316,5 +2316,8 @@
\begin{change}[version = 0.96, date = 2019-12-22, beta = true]
\item Fixed the double superscript issue for higher order derivative when the variable contained a superscript.
\end{change}
+ \begin{change}[version = 0.97, date = 2020-02-03, beta = true]
+ \item Fixed the argument specifier of {\small\verb|\__deriv_scale_big:nnnn|} when it was used (it was used with \texttt{:nnnm}).
+ \end{change}
\end{changelog}
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/filehook/README b/macros/latex/contrib/filehook/README
index a521e4f062..25cc0e39b1 100644
--- a/macros/latex/contrib/filehook/README
+++ b/macros/latex/contrib/filehook/README
@@ -1,7 +1,6 @@
LaTeX package 'filehook'
~~~~~~~~~~~~~~~~~~~~~~~~
-Copyright (c) 2010-2019 by Martin Scharrer <martin@scharrer-online.de>
-WWW: http://latex.scharrer-online.de/
+Copyright (c) 2010-2020 by Martin Scharrer <martin@scharrer-online.de>
Code repository: https://bitbucket.org/martin_scharrer/filehook
Provides several file hooks for files read by \input, \include and \InputIfFileExists.
diff --git a/macros/latex/contrib/filehook/filehook.dtx b/macros/latex/contrib/filehook/filehook.dtx
index efaeb3d5a8..0cd0f63354 100644
--- a/macros/latex/contrib/filehook/filehook.dtx
+++ b/macros/latex/contrib/filehook/filehook.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%<=*COPYRIGHT>
-%% Copyright (C) 2011-2019 by Martin Scharrer <martin@scharrer-online.de>
+%% Copyright (C) 2011-2020 by Martin Scharrer <martin@scharrer-online.de>
%% ----------------------------------------------------------------------
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3
@@ -26,10 +26,10 @@
%<*driver>
\ProvidesFile{filehook.dtx}[%
%<=*DATE>
- 2019/10/03
+ 2020/02/03
%<=/DATE>
%<=*VERSION>
- v0.6
+ v0.7
%<=/VERSION>
Hooks for input files]
\documentclass{ydoc}
@@ -55,7 +55,7 @@
%</driver>
% \fi
%
-% \CheckSum{1093}
+% \CheckSum{1011}
%
% \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
@@ -97,6 +97,7 @@
% \changes{v0.5d}{2011/10/12}{Fix for fall-back code.}
% \changes{v0.5e}{2019/08/19}{Fix for new LaTeX format.}
% \changes{v0.6}{2019/10/03}{Fix for InputIfFileExists for LaTeX format 2019/10/01.}
+% \changes{v0.7}{2020/02/03}{Further fixes for InputIfFileExists for LaTeX format 2019/10/01.}
%
% \GetFileInfo{filehook.dtx}
%
@@ -530,11 +531,67 @@
\ProcessOptions\relax
% \end{macrocode}
%
+% \subsection{General stuff}
+%
+% \begin{macro}{\iffilehook@newfmt}
+% \begin{macrocode}
+\newif\iffilehook@newfmt
+\@ifl@t@r\fmtversion{2019/10/01}{\filehook@newfmttrue}{\filehook@newfmtfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@let}[2]{<macro name 1>}{<macro name 2>}
+% \begin{macrocode}
+\def\filehook@let#1#2{%
+ \expandafter\ifx\csname #2\space\endcsname\relax
+ \expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+ \else
+ \expandafter\def\csname #1\expandafter\endcsname\expandafter{\expandafter\protect\csname #1\space\endcsname}%
+ \expandafter\let\csname #1\space\expandafter\endcsname\csname #2\space\endcsname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\filehook@glet}[2]{<macro name 1>}{<macro name 2>}
+% \begin{macrocode}
+\def\filehook@glet#1#2{%
+ \expandafter\ifx\csname #2\space\endcsname\relax
+ \expandafter\global\expandafter\let\csname #1\expandafter\endcsname\csname #2\endcsname
+ \else
+ \expandafter\global\expandafter\def\csname #1\expandafter\endcsname\expandafter{\expandafter\protect\csname #1\space\endcsname}%
+ \expandafter\global\expandafter\let\csname #1\space\expandafter\endcsname\csname #2\space\endcsname
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\filehook@cmp}[2]{<macro name 1>}{<macro name 2>}
+% Compare two macros definition including its space form in case of robust macros.
+% \begin{macrocode}
+\def\filehook@cmp#1#2{%
+ \expandafter\ifx\csname #2\space\endcsname\relax
+ \expandafter\ifx\csname #1\expandafter\endcsname\csname #2\endcsname
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \else
+ \expandafter\ifx\csname #1\space\expandafter\endcsname\csname #2\space\endcsname
+ \expandafter\expandafter\expandafter\@firstoftwo
+ \else
+ \expandafter\expandafter\expandafter\@secondoftwo
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{Initialisation of Hooks}
% The general hooks are initialised to call the file specific hooks.
%
-%
% \begin{macro}{\filehook@csuse}
% \begin{macrocode}
\begingroup
@@ -553,7 +610,7 @@
% \begin{macro}{\filehook@include@atbegin}
% \begin{macrocode}
\def\filehook@include@atbegin#1{%
- \let\InputIfFileExists\filehook@@InputIfFileExists
+ \filehook@let{InputIfFileExists}{filehook@@InputIfFileExists}%
\filehook@csuse{\filehook@include@atbegin@#1}%
\filehook@include@@atbegin
}
@@ -599,7 +656,7 @@
% \begin{macro}{\filehook@input@atbegin}
% \begin{macrocode}
\def\filehook@input@atbegin#1{%
- \let\InputIfFileExists\filehook@@InputIfFileExists
+ \filehook@let{InputIfFileExists}{filehook@@InputIfFileExists}%
\filehook@csuse{\filehook@input@atbegin@\filehook@ensureext{#1}}%
\filehook@input@@atbegin
}
@@ -1108,16 +1165,14 @@
% This is always done inside a group to keep them temporary only.
% The token register is used to avoid doubling of macro argument characters.
%
-% \begin{macrocode}
-\newif\iffilehook@newfmt
-\@ifl@t@r\fmtversion{2019/10/01}{\filehook@newfmttrue}{\filehook@newfmtfalse}
-% \end{macrocode}
-%
% \begin{macro}{\latex@InputIfFileExists}
% Standard \LaTeX\ definition of \Macro\InputIfFileExists.
% \begin{macrocode}
\iffilehook@newfmt
-\DeclareRobustCommand \latex@InputIfFileExists[2]{%
+\expandafter\def\expandafter\latex@InputIfFileExists\expandafter{%
+ \expandafter\protect\csname InputIfFileExists\space\endcsname
+}
+\expandafter\long\expandafter\def\csname latex@InputIfFileExists\space\endcsname#1#2{%
\IfFileExists{#1}%
{%
\expandafter\@swaptwoargs\expandafter
@@ -1136,7 +1191,7 @@
%
% \begin{macro}{\filehook@default@InputIfFileExists}
% \begin{macrocode}
-\long\gdef\filehook@default@InputIfFileExists#1#2{%
+\DeclareRobustCommand\filehook@default@InputIfFileExists[2]{%
\IfFileExists{#1}%
{\expandafter\filehook@swap
\expandafter{\@filef@und}%
@@ -1149,12 +1204,16 @@
}%
}
% \end{macrocode}
+% Make sure definition is global:
+% \begin{macrocode}
+\filehook@glet{filehook@default@InputIfFileExists}{filehook@default@InputIfFileExists}%
+% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\filehook@@default@InputIfFileExists}
% \begin{macrocode}
-\long\gdef\filehook@@default@InputIfFileExists#1#2{%
- \let\InputIfFileExists\filehook@InputIfFileExists
+\DeclareRobustCommand\filehook@@default@InputIfFileExists[2]{%
+ \filehook@let{InputIfFileExists}{filehook@InputIfFileExists}%
\IfFileExists{#1}%
{\expandafter\filehook@swap
\expandafter{\@filef@und}%
@@ -1165,88 +1224,9 @@
}%
}
% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\scrlfile@InputIfFileExists}
-% \begin{macrocode}
-\long\def\scrlfile@InputIfFileExists#1#2{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1-@alias\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
- \expandafter\@firstoftwo
- \fi
- {%
- \expandafter\InputIfFileExists\expandafter{\csname
- #1-@alias\endcsname}{#2}%
- }%
- {\IfFileExists{#1}{%
- \scr@load@hook{before}{#1}%
- #2\@addtofilelist{#1}%
- \@@input \@filef@und
- \scr@load@hook{after}{#1}%
- }}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\filehook@scrlfile@InputIfFileExists}
-% \begin{macrocode}
-\long\def\filehook@scrlfile@InputIfFileExists#1#2{%
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1-@alias\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
- \expandafter\@firstoftwo
- \fi
- {%
- \expandafter\InputIfFileExists\expandafter{\csname
- #1-@alias\endcsname}{#2}%
- }%
- {\IfFileExists{#1}{%
- \expandafter\filehook@swap
- \expandafter{\@filef@und}%
- {\scr@load@hook{before}{#1}%
- #2\@addtofilelist{#1}%
- \filehook@every@atbegin{#1}%
- \filehook@atbegin{#1}%
- \@@input}%
- \filehook@atend{#1}%
- \filehook@every@atend{#1}%
- \scr@load@hook{after}{#1}%
- }}%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\filehook@@scrlfile@InputIfFileExists}
+% Make sure definition is global:
% \begin{macrocode}
-\long\def\filehook@@scrlfile@InputIfFileExists#1#2{%
- \let\InputIfFileExists\filehook@InputIfFileExists
- \begingroup\expandafter\expandafter\expandafter\endgroup
- \expandafter\ifx\csname #1-@alias\endcsname\relax
- \expandafter\@secondoftwo
- \else
- \scr@replacefile@msg{\csname #1-@alias\endcsname}{#1}%
- \expandafter\@firstoftwo
- \fi
- {%
- \expandafter\InputIfFileExists\expandafter{\csname
- #1-@alias\endcsname}{#2}%
- }%
- {\IfFileExists{#1}{%
- \expandafter\filehook@swap
- \expandafter{\@filef@und}%
- {\scr@load@hook{before}{#1}%
- #2\@addtofilelist{#1}%
- \filehook@atbegin{#1}%
- \@@input}%
- \filehook@atend{#1}%
- \scr@load@hook{after}{#1}%
- }}%
-}
+\filehook@glet{filehook@@default@InputIfFileExists}{filehook@@default@InputIfFileExists}%
% \end{macrocode}
% \end{macro}
%
@@ -1256,8 +1236,8 @@
% In order to also support it when it is loaded afterwards the two hooks below are used to revert the definition
% before the package and patch it afterwards.
% \begin{macrocode}
-\AtBeginOfPackageFile*{scrlfile}{%
- \let\InputIfFileExists\latex@InputIfFileExists
+\AtBeginOfPackageFile{scrlfile}{%
+ \filehook@glet{InputIfFileExists}{latex@InputIfFileExists}%
}%
\AtEndOfPackageFile*{scrlfile}{%
\RequirePackage{filehook-scrlfile}%
@@ -1268,7 +1248,7 @@
\AtBeginOfPackageFile*{fink}{%
\RequirePackage{kvoptions}%
\begingroup
- \let\InputIfFileExists\latex@InputIfFileExists
+ \filehook@let{InputIfFileExists}{latex@InputIfFileExists}%
}%
\AtEndOfPackageFile*{fink}{%
\edef\@tempa{\noexpand\PassOptionsToPackage{mainext=\fnk@mainext,maindir=\fnk@maindir}{currfile}}%
@@ -1281,9 +1261,8 @@
% exact same position. Please note that the case when |memoir| is used together with |scrlfile| is not explicitly covered.
% In this case the |scrlfile| package will overwrite |memoir|s definition.
% \begin{macrocode}
-\AtBeginOfClassFile*{memoir}{%
- \let\filehook@@InputIfFileExists\latex@InputIfFileExists
- \let\InputIfFileExists\latex@InputIfFileExists
+\AtBeginOfClassFile{memoir}{%
+ \filehook@let{InputIfFileExists}{latex@InputIfFileExists}%
\let\@iinput\filehook@orig@@iinput
}%
\AtEndOfClassFile*{memoir}{%
@@ -1295,45 +1274,28 @@
% error is given if any other unknown definition is detected.
% The \opt{force} option will change the error into a warning and overwrite the macro with the default.
% \begin{macrocode}
-\def\@tempa{9}%
-\ifx\InputIfFileExists\filehook@InputIfFileExists
- \def\@tempa{0}%
-\else
- \iffilehook@force
- \def\@tempa{1}%
- \else
- \iffilehook@newfmt
- % check if both the robust \InputIfFileExist and its internal macro match the default LaTeX definition
- \edef\@tempb{\noexpand\protect\expandafter\noexpand\csname InputIfFileExists\space\endcsname}%
- \ifx\InputIfFileExists\@tempb
- \expandafter\ifx\csname InputIfFileExists\space\expandafter\endcsname\csname latex@InputIfFileExists\space\endcsname
- \def\@tempa{1}%
- \fi
- \fi
- \else\ifx\InputIfFileExists\latex@InputIfFileExists
- \def\@tempa{1}%
- \fi\fi
- \fi
-\fi
-%
-\ifcase\@tempa
-\relax% 0
-\or% 1
- \let\filehook@InputIfFileExists\filehook@default@InputIfFileExists
- \let\filehook@@InputIfFileExists\filehook@@default@InputIfFileExists
- \iffilehook@newfmt
- \expandafter\let\csname InputIfFileExists\space\endcsname\filehook@InputIfFileExists
- \else
- \let\InputIfFileExists\filehook@InputIfFileExists
- \fi
- \iffilehook@force
- \PackageWarning{filehook}{Detected unknown definition of \string\InputIfFileExists.^^J%
- The 'force' option of 'filehook' is in effect. Macro is overwritten with default!}%
- \fi
-\else
- \PackageError{filehook}{Detected unknown definition of \string\InputIfFileExists.^^J%
- Use the 'force' option of 'filehook' to overwrite it.}{}%
-\fi
+\filehook@cmp{InputIfFileExists}{filehook@InputIfFileExists}%
+ {}% already set up
+ {%
+ \filehook@cmp{InputIfFileExists}{latex@InputIfFileExists}%
+ {%
+ \filehook@let{filehook@InputIfFileExists}{filehook@default@InputIfFileExists}%
+ \filehook@let{filehook@@InputIfFileExists}{filehook@@default@InputIfFileExists}%
+ \filehook@let{InputIfFileExists}{filehook@InputIfFileExists}%
+ }%
+ {%
+ \iffilehook@force
+ \filehook@let{filehook@InputIfFileExists}{filehook@default@InputIfFileExists}%
+ \filehook@let{filehook@@InputIfFileExists}{filehook@@default@InputIfFileExists}%
+ \filehook@let{InputIfFileExists}{filehook@InputIfFileExists}%
+ \PackageWarning{filehook}{Detected unknown definition of \string\InputIfFileExists.^^J%
+ The 'force' option of 'filehook' is in effect. Macro is overwritten with default!}%
+ \else
+ \PackageError{filehook}{Detected unknown definition of \string\InputIfFileExists.^^J%
+ Use the 'force' option of 'filehook' to overwrite it.}{}%
+ \fi
+ }%
+ }%
% \end{macrocode}
% \end{macro}
%
@@ -1341,10 +1303,10 @@
\AtBeginDocument{%
% Check if definition got changed again. For the new LaTeX format we check again \InputIfFileExists<space>,
% for the old format to \InputIfFileExists directly.
- \expandafter\ifx\csname InputIfFileExists\iffilehook@newfmt\space\fi\endcsname\filehook@InputIfFileExists\else
+ \filehook@cmp{InputIfFileExists}{filehook@InputIfFileExists}{}{%
\PackageWarning{filehook}{Macro \string\InputIfFileExists\space got redefined after 'filehook' was loaded.^^J%
- Certain file hooks might now be dysfunctional!}
- \fi
+ Certain file hooks might now be dysfunctional!}%
+ }%
}
% \end{macrocode}
%
@@ -1358,7 +1320,7 @@
% \begin{macrocode}
%<!COPYRIGHT>
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{filehook-memoir}[2011/01/03 v0.1 filehook patch for memoir class]
+\ProvidesPackage{filehook-memoir}[2020/02/02 v0.2 filehook patch for memoir class]
% \end{macrocode}
%
% \begin{macrocode}
@@ -1367,35 +1329,53 @@
% \end{macrocode}
%
% \begin{macro}{\memoir@InputIfFileExists}
+% The definition taken from memoir.cls. Copyright see there.
% \begin{macrocode}
-\long\def\memoir@InputIfFileExists#1#2{%
+\ifcsname InputIfFileExists\space\endcsname
+ \DeclareRobustCommand \memoir@InputIfFileExists[2]{%
+ \IfFileExists{#1}%
+ {%
+ \expandafter\@swaptwoargs\expandafter
+ {\@filef@und\m@matendf{#1}\killm@matf{#1}}{%
+ #2\@addtofilelist{#1}\m@matbeginf{#1}\@@input%
+ }%
+ }%
+ }
+\else
+ % Old definition
+\renewcommand{\memoir@InputIfFileExists}[2]{%
\IfFileExists{#1}%
{#2\@addtofilelist{#1}\m@matbeginf{#1}%
\@@input \@filef@und
\m@matendf{#1}%
\killm@matf{#1}}%
}
+\fi
% \end{macrocode}
% \end{macro}
%
% \begin{macrocode}
-\ifcase
- \ifx\InputIfFileExists\latex@InputIfFileExists 0\else
- \ifx\InputIfFileExists\memoir@InputIfFileExists 0\else
- 1%
- \fi\fi
-\relax
- \global\let\filehook@InputIfFileExists\filehook@default@InputIfFileExists
- \global\let\filehook@@InputIfFileExists\filehook@@default@InputIfFileExists
- \global\let\InputIfFileExists\filehook@InputIfFileExists
+\@tempswafalse
+\filehook@cmp{InputIfFileExists}{filehook@InputIfFileExists}%
+ {\@tempswatrue}%
+ {%
+ \filehook@cmp{InputIfFileExists}{memoir@InputIfFileExists}%
+ {\@tempswatrue}%
+ {}%
+ }%
+
+\if@tempswa
+ \filehook@glet{filehook@InputIfFileExists}{filehook@default@InputIfFileExists}%
+ \filehook@glet{filehook@@InputIfFileExists}{filehook@@default@InputIfFileExists}%
+ \filehook@glet{InputIfFileExists}{filehook@InputIfFileExists}%
\filehook@appendwarg\filehook@atbegin{\m@matbeginf{#1}}%
\filehook@prefixwarg\filehook@atend{\m@matendf{#1}\killm@matf{#1}}%
\PackageInfo{filehook}{Detected 'memoir' class: the memoir hooks will be moved to the `At...OfFiles' hooks}
\else
\iffilehook@force
- \global\let\filehook@InputIfFileExists\filehook@default@InputIfFileExists
- \global\let\filehook@@InputIfFileExists\filehook@@default@InputIfFileExists
- \global\let\InputIfFileExists\filehook@InputIfFileExists
+ \filehook@glet{filehook@InputIfFileExists}{filehook@default@InputIfFileExists}%
+ \filehook@glet{filehook@@InputIfFileExists}{filehook@@default@InputIfFileExists}%
+ \filehook@glet{InputIfFileExists}{filehook@InputIfFileExists}%
\PackageWarning{filehook}{Detected 'memoir' class with unknown definition of \string\InputIfFileExists.^^J%
The 'force' option of 'filehook' is in effect. Macro is overwritten with default!}%
\else
@@ -1455,14 +1435,17 @@
% \begin{macrocode}
%<!COPYRIGHT>
\NeedsTeXFormat{LaTeX2e}[1999/12/01]
-\ProvidesPackage{filehook-scrlfile}[2011/01/03 v0.1 filehook patch for scrlfile package]
+\ProvidesPackage{filehook-scrlfile}[2020/02/02 v0.2 filehook patch for scrlfile package]
\RequirePackage{filehook}
\begingroup
% \end{macrocode}
%
% \begin{macro}{\scrlfile@InputIfFileExists}
% \begin{macrocode}
-\long\def\scrlfile@InputIfFileExists#1#2{%
+\expandafter\def\expandafter\sclrfile@InputIfFileExists\expandafter{%
+ \expandafter\protect\csname InputIfFileExists\space\endcsname
+}
+\expandafter\long\expandafter\def\csname scrlfile@InputIfFileExists\space\endcsname#1#2{%
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname #1-@alias\endcsname\relax
\expandafter\@secondoftwo
@@ -1472,21 +1455,19 @@
\fi
{%
\expandafter\InputIfFileExists\expandafter{\csname
- #1-@alias\endcsname}{#2}%
+#1-@alias\endcsname}{#2}%
}%
{\IfFileExists{#1}{%
- \scr@load@hook{before}{#1}%
- #2\@addtofilelist{#1}%
- \@@input \@filef@und
- \scr@load@hook{after}{#1}%
- }}%
+ \expandafter\scr@input@withhook\expandafter{\@filef@und}{#1}{#2}}%
+ }%
}
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\filehook@scrlfile@InputIfFileExists}
% \begin{macrocode}
-\long\def\filehook@scrlfile@InputIfFileExists#1#2{%
+\DeclareRobustCommand\filehook@scrlfile@InputIfFileExists[2]{%
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname #1-@alias\endcsname\relax
\expandafter\@secondoftwo
@@ -1511,13 +1492,15 @@
\scr@load@hook{after}{#1}%
}}%
}
+\filehook@glet{filehook@scrlfile@InputIfFileExists}{filehook@scrlfile@InputIfFileExists}%
% \end{macrocode}
% \end{macro}
%
+%
% \begin{macro}{\filehook@@scrlfile@InputIfFileExists}
% \begin{macrocode}
-\long\def\filehook@@scrlfile@InputIfFileExists#1#2{%
- \let\InputIfFileExists\filehook@InputIfFileExists
+\DeclareRobustCommand\filehook@@scrlfile@InputIfFileExists[2]{%
+ \filehook@let{InputIfFileExists}{filehook@InputIfFileExists}%
\begingroup\expandafter\expandafter\expandafter\endgroup
\expandafter\ifx\csname #1-@alias\endcsname\relax
\expandafter\@secondoftwo
@@ -1540,6 +1523,7 @@
\scr@load@hook{after}{#1}%
}}%
}
+\filehook@glet{filehook@@scrlfile@InputIfFileExists}{filehook@@scrlfile@InputIfFileExists}%
% \end{macrocode}
% \end{macro}
%
@@ -1548,21 +1532,25 @@
% not after the |#2\@addtofilelist{#1}| code. Otherwise the |filehook|s could simply be added to these hooks.
% Note that this will stop working if |scrlfile| ever changes its definition of the \Macro\InputIfFileExists macro.
% \begin{macrocode}
-\ifcase
- \ifx\InputIfFileExists\latex@InputIfFileExists 0\else
- \ifx\InputIfFileExists\scrlfile@InputIfFileExists 0\else
- 1%
- \fi\fi
-\relax
- \global\let\filehook@InputIfFileExists\filehook@scrlfile@InputIfFileExists
- \global\let\filehook@@InputIfFileExists\filehook@@scrlfile@InputIfFileExists
- \global\let\InputIfFileExists\filehook@InputIfFileExists
+\@tempswafalse
+\filehook@cmp{InputIfFileExists}{filehook@InputIfFileExists}%
+ {\@tempswatrue}%
+ {%
+ \filehook@cmp{InputIfFileExists}{scrlfile@InputIfFileExists}%
+ {\@tempswatrue}%
+ {}%
+ }%
+
+\if@tempswa
+ \filehook@glet{filehook@InputIfFileExists}{filehook@scrlfile@InputIfFileExists}%
+ \filehook@glet{filehook@@InputIfFileExists}{filehook@@scrlfile@InputIfFileExists}%
+ \filehook@glet{InputIfFileExists}{filehook@InputIfFileExists}%
\PackageInfo{filehook}{Package 'scrlfile' detected and compensated for}%
\else
\iffilehook@force
- \global\let\filehook@InputIfFileExists\filehook@default@InputIfFileExists
- \global\let\filehook@@InputIfFileExists\filehook@@default@InputIfFileExists
- \global\let\InputIfFileExists\filehook@InputIfFileExists
+ \filehook@glet{filehook@InputIfFileExists}{filehook@scrlfile@InputIfFileExists}%
+ \filehook@glet{filehook@@InputIfFileExists}{filehook@@scrlfile@InputIfFileExists}%
+ \filehook@glet{InputIfFileExists}{filehook@InputIfFileExists}%
\PackageWarning{filehook}{Detected 'scrlfile' package with unknown definition of \string\InputIfFileExists.^^J%
The 'force' option of 'filehook' is in effect. Macro is overwritten with default!}%
\else
diff --git a/macros/latex/contrib/filehook/filehook.pdf b/macros/latex/contrib/filehook/filehook.pdf
index ce6afd430f..4d3462623b 100644
--- a/macros/latex/contrib/filehook/filehook.pdf
+++ b/macros/latex/contrib/filehook/filehook.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontspec/CHANGES.md b/macros/latex/contrib/fontspec/CHANGES.md
index d65a8b1c01..176a83b6c8 100644
--- a/macros/latex/contrib/fontspec/CHANGES.md
+++ b/macros/latex/contrib/fontspec/CHANGES.md
@@ -1,6 +1,14 @@
Change history
==============
+## v2.7h (2020/02/03)
+
+ * Eroneous uses of `language=DFLT` changed to `language=dflt`.
+ * Fix spurious error in some cases of `SlantedFont` and `BoldSlantedFont`
+ being specified in a `.fontspec` file.
+ * Fix regression with `unicode-math` related log files showing the wrong
+ NFSS-based font ‘identifier’.
+
## v2.7g (2020/01/26)
* Fix regression that broke changing the default encoding after `fontspec` was loaded
diff --git a/macros/latex/contrib/fontspec/fontspec-code-enc.dtx b/macros/latex/contrib/fontspec/fontspec-code-enc.dtx
index 8969c1be9c..7d30448002 100644
--- a/macros/latex/contrib/fontspec/fontspec-code-enc.dtx
+++ b/macros/latex/contrib/fontspec/fontspec-code-enc.dtx
@@ -69,7 +69,6 @@
\DeclareDocumentCommand \DeclareUnicodeEncoding {mm}
{
\DeclareFontEncoding{#1}{}{}
- \DeclareErrorFont{#1}{lmr}{m}{n}{10}
\DeclareFontSubstitution{#1}{lmr}{m}{n}
\DeclareFontFamily{#1}{lmr}{}
diff --git a/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx b/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx
index 935cf81a70..77d431ccf8 100644
--- a/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx
+++ b/macros/latex/contrib/fontspec/fontspec-code-feat-opentype.dtx
@@ -525,9 +525,9 @@
% \begin{macrocode}
\@@_keys_define_code:nnn {fontspec-opentype} { Language / Default }
{
- \tl_set:Nn \l_@@_lang_tl {DFLT}
+ \tl_set:Nn \l_@@_lang_tl {dflt}
\int_zero:N \l_@@_language_int
- \tl_gset:Nn \g_@@_single_feat_tl { language=DFLT }
+ \tl_gset:Nn \g_@@_single_feat_tl { language=dflt }
}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/fontspec/fontspec-code-internal.dtx b/macros/latex/contrib/fontspec/fontspec-code-internal.dtx
index 432ae803f6..6282569a6f 100644
--- a/macros/latex/contrib/fontspec/fontspec-code-internal.dtx
+++ b/macros/latex/contrib/fontspec/fontspec-code-internal.dtx
@@ -241,7 +241,7 @@
\@@_set_font_type:N \l_@@_test_font
\@@_primitive_font_gset:Onn \l_@@_fontface_cs_tl
{ \@@_construct_font_call:nn { \l_@@_fontname_up_tl } { \l_@@_pre_feat_sclist } }
- { \f@size pt }
+ { \f@size pt + 2sp }
\l_@@_fontface_cs_tl % this is necessary for LuaLaTeX to check the scripts properly
@@ -682,7 +682,7 @@
{ \clist_clear:N \l_@@_fontopts_clist }
\keys_set_groups:nnV {fontspec/fontname} {getfontname} \l_@@_fontopts_clist
\@@_primitive_font_set:OnnF \l_@@_fontface_cs_tl
- { \@@_construct_font_call:nn {#1} { \l_@@_pre_feat_sclist } } { \f@size pt }
+ { \@@_construct_font_call:nn {#1} { \l_@@_pre_feat_sclist } } { \f@size pt + 2sp }
{ \@@_error:nx {font-not-found} {#2} }
}
% \end{macrocode}
@@ -1146,20 +1146,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_lang_dflt_correct:N}
-% \begin{macrocode}
-%<*XE>
-\cs_new_protected:Nn \@@_lang_dflt_correct:N
- {
- \int_compare:nNnT {#1} = {1145457748} % "DFLT"
- {
- \int_zero:N #1
- }
- }
-%</XE>
-% \end{macrocode}
-% \end{macro}
-%
%
% \iffalse
% \begin{macrocode}
diff --git a/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx b/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx
index b7e660da0c..87a93c176b 100644
--- a/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx
+++ b/macros/latex/contrib/fontspec/fontspec-code-keyval.dtx
@@ -383,10 +383,11 @@
% \begin{macrocode}
\@@_keys_define_code:nnn {fontspec-opentype} {UprightFont} {}
\@@_keys_define_code:nnn {fontspec-opentype} {ItalicFont} {}
+\@@_keys_define_code:nnn {fontspec-opentype} {SlantedFont} {}
\@@_keys_define_code:nnn {fontspec-opentype} {BoldFont} {}
\@@_keys_define_code:nnn {fontspec-opentype} {BoldItalicFont} {}
+\@@_keys_define_code:nnn {fontspec-opentype} {BoldSlantedFont} {}
% \end{macrocode}
-
%
%
%
diff --git a/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx b/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx
index ad9413eca4..be0b8be768 100644
--- a/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx
+++ b/macros/latex/contrib/fontspec/fontspec-code-opentype.dtx
@@ -283,27 +283,27 @@
%<*XE>
%<debug>\typeout{::~ fontspec_check_ot_feat:nnn~ {#2}{#3}{#4}}
\@@_iv_str_to_num:Nx \l_@@_strnum_int {#2}
- \@@_iv_str_to_num:Nx \l_@@_language_int {#3}
- \@@_lang_dflt_correct:N \l_@@_language_int
+
+ \str_if_eq:eeTF {#3} {dflt}
+ { \int_zero:N \l_@@_language_int }
+ { \@@_iv_str_to_num:Nx \l_@@_language_int {#3} }
\@@_iv_str_to_num:Nx \l_@@_script_int {#4}
+
\int_set:Nn \l_tmpb_int
- {
- \XeTeXOTcountfeatures #1
- \l_@@_script_int
- \l_@@_language_int
- }
+ { \XeTeXOTcountfeatures #1 \l_@@_script_int \l_@@_language_int }
+
\int_zero:N \l_tmpa_int
\bool_set_false:N \l_@@_check_bool
\bool_until_do:nn { \int_compare_p:nNn \l_tmpa_int = \l_tmpb_int }
- {
- \ifnum\XeTeXOTfeaturetag #1 \l_@@_script_int \l_@@_language_int
- \l_tmpa_int =\l_@@_strnum_int
- \bool_set_true:N \l_@@_check_bool
- \int_set:Nn \l_tmpa_int {\l_tmpb_int}
- \else
- \int_incr:N \l_tmpa_int
- \fi
- }
+ {
+ \ifnum\XeTeXOTfeaturetag #1 \l_@@_script_int \l_@@_language_int
+ \l_tmpa_int =\l_@@_strnum_int
+ \bool_set_true:N \l_@@_check_bool
+ \int_set:Nn \l_tmpa_int {\l_tmpb_int}
+ \else
+ \int_incr:N \l_tmpa_int
+ \fi
+ }
\bool_if:NTF \l_@@_check_bool \prg_return_true: \prg_return_false:
%</XE>
%<*LU>
diff --git a/macros/latex/contrib/fontspec/fontspec-code.pdf b/macros/latex/contrib/fontspec/fontspec-code.pdf
index 8982d35be2..9ca1bd3430 100644
--- a/macros/latex/contrib/fontspec/fontspec-code.pdf
+++ b/macros/latex/contrib/fontspec/fontspec-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/fontspec/fontspec.dtx b/macros/latex/contrib/fontspec/fontspec.dtx
index 826ad41cce..e5a6f2f111 100644
--- a/macros/latex/contrib/fontspec/fontspec.dtx
+++ b/macros/latex/contrib/fontspec/fontspec.dtx
@@ -70,7 +70,7 @@
\ProvidesExplFile{fontspec.dtx}
%</dtx>
%<*fontspec>
- {2020/01/26}{2.7g}{Font selection for XeLaTeX and LuaLaTeX}
+ {2020/02/03}{2.7h}{Font selection for XeLaTeX and LuaLaTeX}
%</fontspec>
% \end{macrocode}
%
@@ -89,8 +89,8 @@
%<lua>local fontspec = fontspec
%<lua>fontspec.module = {
%<lua> name = "fontspec",
-%<lua> version = "2.7g",
-%<lua> date = "2020/01/26",
+%<lua> version = "2.7h",
+%<lua> date = "2020/02/03",
%<lua> description = "Font selection for XeLaTeX and LuaLaTeX",
%<lua> author = "Khaled Hosny, Philipp Gesang, Will Robertson",
%<lua> copyright = "Khaled Hosny, Philipp Gesang, Will Robertson",
diff --git a/macros/latex/contrib/fontspec/fontspec.pdf b/macros/latex/contrib/fontspec/fontspec.pdf
index b64f441771..2003bddf9c 100644
--- a/macros/latex/contrib/fontspec/fontspec.pdf
+++ b/macros/latex/contrib/fontspec/fontspec.pdf
Binary files differ
diff --git a/macros/latex/contrib/physconst/CHANGELOG.md b/macros/latex/contrib/physconst/CHANGELOG.md
index 059256090c..c765c612a0 100644
--- a/macros/latex/contrib/physconst/CHANGELOG.md
+++ b/macros/latex/contrib/physconst/CHANGELOG.md
@@ -13,7 +13,8 @@
- added localuninstall and distuninstall targets to the makefile
### Changed
- Modified the makefile to split up generation of the .sty, .dtx, and .pdf
-- Modified the .cpp so that every \DeclareRobustCommand starts a new line right away
+- Modified the .cpp so that every \DeclareRobustCommand starts a new line right
+away
- Added a newline in the middle of the title declaration (in .cpp)
- Added a newline in the middle of the \DoNotIndex declaration (in .cpp)
- Added dependency on imakeidx and changed the index to 2 column.
@@ -31,10 +32,30 @@
- Add disribution specific readme
- Add disribution specific makefile
### Changed
-- Update README to have clearer build, distribute, install, and uninstall instructions.
+- 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
-
-
+## [1.1.0] - 2020/02/03
+### Added
+- macro for Earth's mass
+- macro for Jupiter's mass
+- macro for Earth's radius
+- macro for Jupiter's radius
+- distribution specific change log
+- Numeric variant of each constant for use with e.g. tikz
+### Changes
+- Colomb constant in SI units had an incorrect magnitude; fixed to 10^9 instead
+of 10^14
+- Vacuum permeability was incorrectly a duplicate of the permittivity.
+Premeability is now the correct value.
+- Mass of particles in eV was being computed incorrectly. Fixed values.
+- Order of magnitude of Newton's Gravity, Boltzmann, Planck, and
+Stefan-Boltzmann constants were incorrect.
+- Acceleration due to gravity on Earth was accidentally a copy of G instead of g
+- Acceleration due to gravity on Earth had the wrong units
+- Corrected formatting of README file.
+- Fixed sections of macros - the individual macros were unintentionally
+subsections of the Naming Conversion
diff --git a/macros/latex/contrib/physconst/README.md b/macros/latex/contrib/physconst/README.md
index 8a43c78f49..8727bf5e43 100644
--- a/macros/latex/contrib/physconst/README.md
+++ b/macros/latex/contrib/physconst/README.md
@@ -16,7 +16,8 @@ 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) also available at [CTAN](https://ctan.org)
+- [`physunits` package](https://github.com/astrobit/physunits) also available
+at [CTAN](https://ctan.org)
# Build Dependencies
- some LaTeX distribution.
@@ -27,7 +28,8 @@ version 2006/05/20 or later.
# Files
```
- makefile GNU makefile to simplify building and installation on linux
+ makefile GNU makefile to simplify building and installation
+ on linux
README.md This file.
CHANGELOG.md List of changes
physconst.ins The installer file
@@ -40,28 +42,37 @@ version 2006/05/20 or later.
1. `make`
## Otherwise
-1. Run `latex` on `physconst.ins` to create the `.sty` file. e.g. `latex physconst.ins`.
+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).
+ 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
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.
+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).
+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.
diff --git a/macros/latex/contrib/physconst/physconst.dtx b/macros/latex/contrib/physconst/physconst.dtx
index 691a5fd901..7ade189381 100644
--- a/macros/latex/contrib/physconst/physconst.dtx
+++ b/macros/latex/contrib/physconst/physconst.dtx
@@ -133,7 +133,7 @@
% 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}
+% \subsubsection{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.
@@ -147,41 +147,136 @@
%\index{Mass|usage}
%
% \DescribeMacro{\kMassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Electron|usage}
% |\kMassElectron| is the mass of an electron.
%
% \DescribeMacro{\keVMassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Electron>in eV|usage}
% |\keVMassElectron| is the mass of an electron.
%
+% \DescribeMacro{\kMassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Electron|usage}
+% |\kMassElectronNumeric| is the numeric value of
+% the mass of an electron.
+%
+% \DescribeMacro{\keVMassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Electron>in eV|usage}
+% |\keVMassElectronNumeric| is the numeric value of
+% the mass of an electron.
+%
% \DescribeMacro{\kMassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Proton|usage}
% |\kMassProton| is the mass of a proton.
%
% \DescribeMacro{\keVMassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Proton>in eV|usage}
% |\keVMassProton| is the mass of a proton.
%
+% \DescribeMacro{\kMassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Proton|usage}
+% |\kMassProtonNumeric| is the numeric value of
+% the mass of a proton.
+%
+% \DescribeMacro{\keVMassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Proton>in eV|usage}
+% |\keVMassProtonNumeric| is the numeric value of
+% the mass of a proton.
+%
% \DescribeMacro{\kMassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Hydrogen atom|usage}
% |\kMassHydrogen| is the mass of a neutral hydrogen atom.
%
% \DescribeMacro{\keVMassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>Hydrogen atom>in eV|usage}
% |\keVMassHydrogen| is the mass of a neutral hydrogen atom.
%
+% \DescribeMacro{\kMassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Hydrogen atom|usage}
+% |\kMassHydrogenNumeric| is the numeric value of
+% the mass of a neutral hydrogen atom.
+%
+% \DescribeMacro{\keVMassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>Hydrogen atom>in eV|usage}
+% |\keVMassHydrogenNumeric| is the numeric value of
+% the mass of a neutral hydrogen atom.
+%
% \DescribeMacro{\kMassSun}
% \index{Mass>Sun|usage}
% |\kMassSun| is the mass of the Sun.
%
+% \DescribeMacro{\kMassSunNumeric}
+% \index{Mass>Sun|usage}
+% |\kMassSunNumeric| is the numeric value of
+% the mass of the Sun.
+%
+% \DescribeMacro{\kMassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\kMassEarth| is the mass of the Earth.
+%
+% \DescribeMacro{\kMassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\kMassEarthNumeric| is the numeric value of
+% the mass of the Earth.
+%
+% \DescribeMacro{\kMassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\kMassJupiter| is the mass of Jupiter.
+%
+% \DescribeMacro{\kMassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\kMassJupiterNumeric| is the numeric value of
+% the mass of Jupiter.
+%
% \DescribeMacro{\kMassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>amu|usage}
% |\kMassAMU| is the mass of an atomic mass unit.
%
% \DescribeMacro{\keVMassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% \index{Mass>amu>in eV|usage}
% |\keVMassAMU| is the mass of an atomic mass unit.
%
+% \DescribeMacro{\kMassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>amu|usage}
+% |\kMassAMUNumeric| is the numeric value of
+% the mass of an atomic mass unit.
+%
+% \DescribeMacro{\keVMassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% \index{Mass>amu>in eV|usage}
+% |\keVMassAMUNumeric| is the numeric value of
+% the mass of an atomic mass unit.
+%
%
%\subsubsection{Charge}
%
@@ -192,14 +287,29 @@
% \index{Charge>Elementary|usage}
% |\kChargeFundamental| is the fundamental charge.
%
+% \DescribeMacro{\kChargeFundamentalNumeric}
+% \index{Charge>Elementary|usage}
+% |\kChargeFundamentalNumeric| is the numeric value of
+% the fundamental charge.
+%
% \DescribeMacro{\kChargeElectron}
% \index{Charge>Electron|usage}
% |\kChargeElectron| is the charge of an electron.
%
+% \DescribeMacro{\kChargeElectronNumeric}
+% \index{Charge>Electron|usage}
+% |\kChargeElectronNumeric| is the numeric value of
+% the charge of an electron.
+%
% \DescribeMacro{\kChargeProton}
% \index{Charge>Proton|usage}
% |\kChargeProton| is the charge of a proton.
%
+% \DescribeMacro{\kChargeProtonNumeric}
+% \index{Charge>Proton|usage}
+% |\kChargeProtonNumeric| is the numeric value of
+% the charge of a proton.
+%
%
%\subsubsection{Distances and Lengths}
%
@@ -210,19 +320,58 @@
% \index{Distances and Lengths>Bohr Radius|usage}
% |\kRadiusBohr| is Bohr radius of an atom.
%
+% \DescribeMacro{\kRadiusBohrNumeric}
+% \index{Distances and Lengths>Bohr Radius|usage}
+% |\kRadiusBohrNumeric| is the numeric value of
+% 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{\kAstronomicalUnitNumeric}
+% \index{Distances and Lengths>Astronomical Unit|usage}
+% |\kAstronomicalUnitNumeric| is the numeric value of
+% 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{\kParsecNumeric}
+% \index{Distances and Lengths>Parsec|usage}
+% |\kParsecNumeric| is the numeric value of
+% 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.
%
+% \DescribeMacro{\kRadiusSunNumeric}
+% \index{Distances and Lengths>Solar Radius|usage}
+% |\kRadiusSunNumeric| is the numeric value of
+% the mean radius of the Sun.
+%
+% \DescribeMacro{\kRadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\kRadiusEarth| is the mean radius of the Earth.
+%
+% \DescribeMacro{\kRadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\kRadiusEarthNumeric| is the numeric value of
+% the mean radius of the Earth.
+%
+% \DescribeMacro{\kRadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\kRadiusJupiter| is the mean radius of Jupiter.
+%
+% \DescribeMacro{\kRadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\kRadiusJupiterNumeric| is the numeric value of
+% the mean radius of Jupiter.
+%
%
%\subsubsection{Energy, Power, and Luminosity}
%
@@ -237,10 +386,25 @@
% \index{Energy, Power, and Luminosity>Rydberg>in eV|usage}
% |\keVRydberg| is the Rydberg energy (the binding energy of Hydrogen).
%
+% \DescribeMacro{\kRydbergNumeric}
+% \index{Energy, Power, and Luminosity>Rydberg|usage}
+% |\kRydbergNumeric| is the numeric value of
+% the Rydberg energy (the binding energy of Hydrogen).
+%
+% \DescribeMacro{\keVRydbergNumeric}
+% \index{Energy, Power, and Luminosity>Rydberg>in eV|usage}
+% |\keVRydbergNumeric| is the numeric value of
+% 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.
%
+% \DescribeMacro{\kLuminositySunNumeric}
+% \index{Energy, Power, and Luminosity>Solar Luminosity|usage}
+% |\kLuminositySunNumeric| is the numeric value of
+% the luminosity of the Sun.
+%
%
%\subsubsection{Pressure}
%
@@ -248,13 +412,27 @@
%\index{Pressure|usage}
%
% \DescribeMacro{\kPressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% \index{Pressure>Standard Atmosphere|usage}
% |\kPressureAtmosphere| is the standard atmospheric pressure.
%
+% \DescribeMacro{\kPressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% \index{Pressure>Standard Atmosphere|usage}
+% |\kPressureAtmosphereNumeric| is the numeric value of
+% the standard atmospheric pressure.
+%
% \DescribeMacro{\kPressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% \index{Pressure>Standard Pressure|usage}
% |\kPressureStandard| is the standard atmospheric pressure.
%
+% \DescribeMacro{\kPressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% \index{Pressure>Standard Pressure|usage}
+% |\kPressureStandardNumeric| is the numeric value of
+% the standard atmospheric pressure.
+%
%
%\subsubsection{Velocity, Speed and Acceleration}
%
@@ -265,11 +443,25 @@
% \index{Velocity, Speed and Acceleration>Speed of Light|usage}
% |\kSpeedLight| is the speed of light.
%
+% \DescribeMacro{\kSpeedLightNumeric}
+% \index{Velocity, Speed and Acceleration>Speed of Light|usage}
+% |\kSpeedLightNumeric| is the numeric value of
+% the speed of light.
+%
% \DescribeMacro{\kAccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% \index{Velocity, Speed and Acceleration>Acceleration due to Gravity|usage}
% |\kAccelGravity| is the accelertion due to gravity at the surface of the
% Earth.
%
+% \DescribeMacro{\kAccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% \index{Velocity, Speed and Acceleration>Acceleration due to Gravity|usage}
+% |\kAccelGravityNumeric| is the numeric value of
+% the accelertion due to gravity at the surface of the Earth.
+%
%
%\subsubsection{Other Constants}
%
@@ -277,21 +469,45 @@
%\index{Other Constants|usage}
%
% \DescribeMacro{\kCoulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \index{Other Constants>Coulomb Constant|usage}
% |\kCoulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$).
%
+% \DescribeMacro{\kCoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Coulomb Constant|usage}
+% |\kCoulombNumeric| is the numeric value of
+% 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{\kVacuumPermittivityNumeric}
+% \index{Other Constants>Vacuum Permittivity|usage}
+% |\kVacuumPermittivityNumeric| is the numeric value of
+% the electric permittivity of the vacuum.
+%
% \DescribeMacro{\kVacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% \index{Other Constants>Vacuum Permeability|usage}
% |\kVacuumPermeability| is the magnetic permeability of the vacuum.
%
+% \DescribeMacro{\kVacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% \index{Other Constants>Vacuum Permeability|usage}
+% |\kVacuumPermeabilityNumeric| is the numeric value of
+% the magnetic permeability of the vacuum.
+%
% \DescribeMacro{\kVacuumImpedance}
% \index{Other Constants>Vacuum Impedance|usage}
% |\kVacuumImpedance| is the characteristic impedance of the vacuum.
%
+% \DescribeMacro{\kVacuumImpedanceNumeric}
+% \index{Other Constants>Vacuum Impedance|usage}
+% |\kVacuumImpedanceNumeric| is the numeric value of
+% the characteristic impedance of the vacuum.
+%
% \DescribeMacro{\kBoltzmann}
% \index{Other Constants>Boltzmann|usage}
% |\kBoltzmann| is the Boltzmann constant.
@@ -300,50 +516,124 @@
% \index{Other Constants>Boltzmann>in eV|usage}
% |\keVBoltzmann| is the Boltzmann constant.
%
+% \DescribeMacro{\kBoltzmannNumeric}
+% \index{Other Constants>Boltzmann|usage}
+% |\kBoltzmannNumeric| is the numeric value of
+% the Boltzmann constant.
+%
+% \DescribeMacro{\keVBoltzmannNumeric}
+% \index{Other Constants>Boltzmann>in eV|usage}
+% |\keVBoltzmannNumeric| is the numeric value of
+% the Boltzmann constant.
+%
% \DescribeMacro{\kPlanck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \index{Other Constants>Planck|usage}
% |\kPlanck| is the Planck constant.
%
% \DescribeMacro{\keVPlanck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \index{Other Constants>Planck>in eV|usage}
% |\keVPlanck| is the Planck constant.
%
+% \DescribeMacro{\kPlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Planck|usage}
+% |\kPlanckNumeric| is the numeric value of
+% the Planck constant.
+%
+% \DescribeMacro{\keVPlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Planck>in eV|usage}
+% |\keVPlanckNumeric| is the numeric value of
+% the Planck constant.
+%
% \DescribeMacro{\kPlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \index{Other Constants>Reduced Planck|usage}
% |\kPlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$.
%
% \DescribeMacro{\keVPlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \index{Other Constants>Reduced Planck>in eV|usage}
% |\keVPlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$.
%
+% \DescribeMacro{\kPlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Reduced Planck|usage}
+% |\kPlanckReducedNumeric| is the numeric value of
+% the Reduced Planck constant $\left(\frac{h}{2\pi}\right)$.
+%
+% \DescribeMacro{\keVPlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Reduced Planck>in eV|usage}
+% |\keVPlanckReducedNumeric| is the numeric value of
+% the Reduced Planck constant $\left(\frac{h}{2\pi}\right)$.
+%
% \DescribeMacro{\kGravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% \index{Other Constants>Newton's Gravitational Constant|usage}
% |\kGravity| is Newton's gravitational constant.
%
+% \DescribeMacro{\kGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% \index{Other Constants>Newton's Gravitational Constant|usage}
+% |\kGravityNumeric| is the numeric value of
+% Newton's gravitational constant.
+%
% \DescribeMacro{\kStefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% \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{\kStefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \index{Other Constants>Stefan-Boltzmann|usage}
+% |\kStefanBoltzmannNumeric| is the numeric value of
+% 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{\kRadiationNumeric}
+% \index{Other Constants>Radiation|usage}
+% |\kRadiationNumeric| is the numeric value of
+% 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{\kFineStructureNumeric}
+% \index{Other Constants>Fine Structure|usage}
+% |\kFineStructureNumeric| is the numeric value of
+% the fine structure constant.
+%
% \DescribeMacro{\kFineStructureReciprocal}
% \index{Other Constants>Fine Structure>Reciprocal|usage}
% |\kFineStructureReciprocal| is the reciprocal of the fine structure constant.
%
+% \DescribeMacro{\kFineStructureReciprocalNumeric}
+% \index{Other Constants>Fine Structure>Reciprocal|usage}
+% |\kFineStructureReciprocalNumeric| is the numeric value of
+% 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).
%
+% \DescribeMacro{\kAvogadroNumeric}
+% \index{Other Constants>Avogadro's Number|usage}
+% |\kAvogadroNumeric| is the numeric value of
+% Avogadro's Number (the number of particles in a mole).
+%
%
%\subsection{Detailed Macros}
%
@@ -353,7 +643,7 @@
% by physconst to define the macros that are normally used (those described
% above.
%
-% \subsection{NamingConvention}
+% \subsubsection{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
@@ -366,6 +656,8 @@
%\subsubsection{Mass}
%
% \DescribeMacro{\k@SI@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassElectron| is the mass of an electron in SI units with
% reduced precision.
% (CODATA~2018)
@@ -382,6 +674,8 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassElectron| is the mass of an electron in SI units with full
% precision.
% (CODATA~2018)
@@ -398,6 +692,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassElectron| is the mass of an electron in cgs units with
% reduced precision.
% (CODATA~2018)
@@ -414,6 +710,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassElectron| is the mass of an electron in cgs units with full
% precision.
% (CODATA~2018)
@@ -430,6 +728,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassElectron| is the mass of an electron in eV with reduced
% precision.
% (CODATA~2018)
@@ -446,6 +746,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassElectron| is the mass of an electron in eV with full
% precision.
% (CODATA~2018)
@@ -461,7 +763,121 @@
% {The value is \k@eV@full@MassElectron}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassElectronNumeric| is a mathematical value of
+% 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@MassElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassElectronNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassProton| is the mass of a proton in SI units with reduced
% precision.
% (CODATA~2018)
@@ -478,6 +894,8 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassProton| is the mass of a proton in SI units with full
% precision.
% (CODATA~2018)
@@ -494,6 +912,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassProton| is the mass of a proton in cgs units with reduced
% precision.
% (CODATA~2018)
@@ -510,6 +930,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassProton| is the mass of a proton in cgs units with full
% precision.
% (CODATA~2018)
@@ -526,6 +948,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassProton| is the mass of a proton in eV with reduced precision.
% (CODATA~2018)
%
@@ -541,6 +965,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassProton| is the mass of a proton in eV with full precision.
% (CODATA~2018)
%
@@ -555,7 +981,119 @@
% {The value is \k@eV@full@MassProton}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassProtonNumeric| is a mathematical value of
+% 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@MassProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassProtonNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
% with reduced precision.
% (CODATA~2018)
@@ -572,6 +1110,8 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
% with full precision.
% (CODATA~2018)
@@ -588,6 +1128,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
% units with reduced precision.
% (CODATA~2018)
@@ -604,6 +1146,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
% units with full precision.
% (CODATA~2018)
@@ -620,6 +1164,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
% reduced precision.
% (CODATA~2018)
@@ -636,6 +1182,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
% full precision.
% (CODATA~2018)
@@ -651,6 +1199,120 @@
% {The value is \k@eV@full@MassHydrogen}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassHydrogenNumeric| is a mathematical value of
+% 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@MassHydrogenNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassHydrogenNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@MassSun}
% |\k@SI@short@MassSun| is the mass of the Sun in SI units with reduced
% precision.
@@ -713,7 +1375,205 @@
% {The value is \k@cgs@full@MassSun}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@MassSunNumeric}
+% |\k@SI@short@MassSunNumeric| is a mathematical value of
+% 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@MassSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassSunNumeric}
+% |\k@SI@full@MassSunNumeric| is a mathematical value of
+% 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@MassSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassSunNumeric}
+% |\k@cgs@short@MassSunNumeric| is a mathematical value of
+% 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@MassSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassSunNumeric}
+% |\k@cgs@full@MassSunNumeric| is a mathematical value of
+% 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@MassSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@MassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@short@MassEarth| is the mass of the Earth 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@short@MassEarth\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@MassEarth}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@MassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@full@MassEarth| is the mass of the Earth 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@full@MassEarth\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@MassEarth}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@MassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@short@MassEarthNumeric| is a mathematical value of
+% the mass of the Earth 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@short@MassEarthNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@MassEarthNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@MassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@full@MassEarthNumeric| is a mathematical value of
+% the mass of the Earth 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@full@MassEarthNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@MassEarthNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@MassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@short@MassJupiter| is the mass of Jupiter 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@short@MassJupiter\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@MassJupiter}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@MassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@full@MassJupiter| is the mass of Jupiter 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@full@MassJupiter\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@MassJupiter}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@MassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@short@MassJupiterNumeric| is a mathematical value of
+% the mass of Jupiter 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@short@MassJupiterNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@MassJupiterNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@MassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@full@MassJupiterNumeric| is a mathematical value of
+% the mass of Jupiter 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@full@MassJupiterNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@MassJupiterNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassAMU| is the mass of an atomic mass unit in SI units with
% reduced precision.
% (CODATA~2018)
@@ -730,6 +1590,8 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassAMU| is the mass of an atomic mass unit in SI units with full
% precision.
% (CODATA~2018)
@@ -746,6 +1608,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassAMU| is the mass of an atomic mass unit in cgs units with
% reduced precision.
% (CODATA~2018)
@@ -762,6 +1626,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassAMU| is the mass of an atomic mass unit in cgs units with
% full precision.
% (CODATA~2018)
@@ -778,6 +1644,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassAMU| is the mass of an atomic mass unit in eV with reduced
% precision.
% (CODATA~2018)
@@ -794,6 +1662,8 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassAMU| is the mass of an atomic mass unit in eV with full
% precision.
% (CODATA~2018)
@@ -809,6 +1679,119 @@
% {The value is \k@eV@full@MassAMU}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassAMUNumeric| is a mathematical value of
+% 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@MassAMUNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@MassAMUNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Charge}
%
@@ -876,6 +1859,74 @@
% {The value is \k@cgs@full@ChargeFundamental}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@ChargeFundamentalNumeric}
+% |\k@SI@short@ChargeFundamentalNumeric| is a mathematical value of
+% 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@ChargeFundamentalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeFundamentalNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeFundamentalNumeric}
+% |\k@SI@full@ChargeFundamentalNumeric| is a mathematical value of
+% 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@ChargeFundamentalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeFundamentalNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeFundamentalNumeric}
+% |\k@cgs@short@ChargeFundamentalNumeric| is a mathematical value of
+% 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@ChargeFundamentalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeFundamentalNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeFundamentalNumeric}
+% |\k@cgs@full@ChargeFundamentalNumeric| is a mathematical value of
+% 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@ChargeFundamentalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeFundamentalNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@ChargeElectron}
% |\k@SI@short@ChargeElectron| is the charge of an electron in SI units with
% reduced precision.
@@ -940,6 +1991,74 @@
% {The value is \k@cgs@full@ChargeElectron}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@ChargeElectronNumeric}
+% |\k@SI@short@ChargeElectronNumeric| is a mathematical value of
+% 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@ChargeElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeElectronNumeric}
+% |\k@SI@full@ChargeElectronNumeric| is a mathematical value of
+% 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@ChargeElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeElectronNumeric}
+% |\k@cgs@short@ChargeElectronNumeric| is a mathematical value of
+% 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@ChargeElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeElectronNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeElectronNumeric}
+% |\k@cgs@full@ChargeElectronNumeric| is a mathematical value of
+% 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@ChargeElectronNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeElectronNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@ChargeProton}
% |\k@SI@short@ChargeProton| is the charge of a proton in SI units with reduced
% precision.
@@ -1004,6 +2123,74 @@
% {The value is \k@cgs@full@ChargeProton}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@ChargeProtonNumeric}
+% |\k@SI@short@ChargeProtonNumeric| is a mathematical value of
+% 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@ChargeProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ChargeProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ChargeProtonNumeric}
+% |\k@SI@full@ChargeProtonNumeric| is a mathematical value of
+% 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@ChargeProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ChargeProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ChargeProtonNumeric}
+% |\k@cgs@short@ChargeProtonNumeric| is a mathematical value of
+% 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@ChargeProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ChargeProtonNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ChargeProtonNumeric}
+% |\k@cgs@full@ChargeProtonNumeric| is a mathematical value of
+% 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@ChargeProtonNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ChargeProtonNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Distances and Lengths}
%
@@ -1071,6 +2258,73 @@
% {The value is \k@cgs@full@RadiusBohr}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@RadiusBohrNumeric}
+% |\k@SI@short@RadiusBohrNumeric| is a mathematical value of
+% 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@RadiusBohrNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RadiusBohrNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RadiusBohrNumeric}
+% |\k@SI@full@RadiusBohrNumeric| is a mathematical value of
+% 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@RadiusBohrNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RadiusBohrNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RadiusBohrNumeric}
+% |\k@cgs@short@RadiusBohrNumeric| is a mathematical value of
+% 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@RadiusBohrNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RadiusBohrNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RadiusBohrNumeric}
+% |\k@cgs@full@RadiusBohrNumeric| is a mathematical value of
+% 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@RadiusBohrNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RadiusBohrNumeric}\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.
@@ -1135,6 +2389,74 @@
% {The value is \k@cgs@full@AstronomicalUnit}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@AstronomicalUnitNumeric}
+% |\k@SI@short@AstronomicalUnitNumeric| is a mathematical value of
+% 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@AstronomicalUnitNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@AstronomicalUnitNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@AstronomicalUnitNumeric}
+% |\k@SI@full@AstronomicalUnitNumeric| is a mathematical value of
+% 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@AstronomicalUnitNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@AstronomicalUnitNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@AstronomicalUnitNumeric}
+% |\k@cgs@short@AstronomicalUnitNumeric| is a mathematical value of
+% 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@AstronomicalUnitNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@AstronomicalUnitNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@AstronomicalUnitNumeric}
+% |\k@cgs@full@AstronomicalUnitNumeric| is a mathematical value of
+% 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@AstronomicalUnitNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@AstronomicalUnitNumeric}\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.
@@ -1199,6 +2521,74 @@
% {The value is \k@cgs@full@Parsec}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@ParsecNumeric}
+% |\k@SI@short@ParsecNumeric| is a mathematical value of
+% 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@ParsecNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@ParsecNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@ParsecNumeric}
+% |\k@SI@full@ParsecNumeric| is a mathematical value of
+% 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@ParsecNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@ParsecNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@ParsecNumeric}
+% |\k@cgs@short@ParsecNumeric| is a mathematical value of
+% 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@ParsecNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@ParsecNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@ParsecNumeric}
+% |\k@cgs@full@ParsecNumeric| is a mathematical value of
+% 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@ParsecNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@ParsecNumeric}\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.
@@ -1263,6 +2653,206 @@
% {The value is \k@cgs@full@RadiusSun}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@RadiusSunNumeric}
+% |\k@SI@short@RadiusSunNumeric| is a mathematical value of
+% 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@RadiusSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RadiusSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RadiusSunNumeric}
+% |\k@SI@full@RadiusSunNumeric| is a mathematical value of
+% 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@RadiusSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RadiusSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RadiusSunNumeric}
+% |\k@cgs@short@RadiusSunNumeric| is a mathematical value of
+% 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@RadiusSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RadiusSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RadiusSunNumeric}
+% |\k@cgs@full@RadiusSunNumeric| is a mathematical value of
+% 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@RadiusSunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RadiusSunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@RadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@short@RadiusEarth| is the mean radius of the Earth 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@short@RadiusEarth\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@RadiusEarth}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@RadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@full@RadiusEarth| is the mean radius of the Earth 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@full@RadiusEarth\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@RadiusEarth}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@RadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@short@RadiusEarthNumeric| is a mathematical value of
+% the mean radius of the Earth 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@short@RadiusEarthNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@RadiusEarthNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@RadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@full@RadiusEarthNumeric| is a mathematical value of
+% the mean radius of the Earth 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@full@RadiusEarthNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@RadiusEarthNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@RadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@short@RadiusJupiter| is the mean radius of Jupiter 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@short@RadiusJupiter\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@RadiusJupiter}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@RadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@full@RadiusJupiter| is the mean radius of Jupiter 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@full@RadiusJupiter\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@RadiusJupiter}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@short@RadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@short@RadiusJupiterNumeric| is a mathematical value of
+% the mean radius of Jupiter 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@short@RadiusJupiterNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@RadiusJupiterNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@RadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@full@RadiusJupiterNumeric| is a mathematical value of
+% the mean radius of Jupiter 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@full@RadiusJupiterNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@RadiusJupiterNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Energy, Power, and Luminosity}
%
@@ -1362,6 +2952,108 @@
% {The value is \k@eV@full@Rydberg}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@RydbergNumeric}
+% |\k@SI@short@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RydbergNumeric}
+% |\k@SI@full@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RydbergNumeric}
+% |\k@cgs@short@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RydbergNumeric}
+% |\k@cgs@full@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@RydbergNumeric}
+% |\k@eV@short@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@RydbergNumeric}
+% |\k@eV@full@RydbergNumeric| is a mathematical value of
+% 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@RydbergNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@RydbergNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@LuminositySun}
% |\k@SI@short@LuminositySun| is the luminosity of the Sun in SI units with
% reduced precision.
@@ -1426,10 +3118,79 @@
% {The value is \k@cgs@full@LuminositySun}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@LuminositySunNumeric}
+% |\k@SI@short@LuminositySunNumeric| is a mathematical value of
+% 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@LuminositySunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@LuminositySunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@LuminositySunNumeric}
+% |\k@SI@full@LuminositySunNumeric| is a mathematical value of
+% 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@LuminositySunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@LuminositySunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@LuminositySunNumeric}
+% |\k@cgs@short@LuminositySunNumeric| is a mathematical value of
+% 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@LuminositySunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@LuminositySunNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@LuminositySunNumeric}
+% |\k@cgs@full@LuminositySunNumeric| is a mathematical value of
+% 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@LuminositySunNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@LuminositySunNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Pressure}
%
% \DescribeMacro{\k@SI@short@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@short@PressureAtmosphere| is the standard atmospheric pressure in SI
% units with reduced precision.
% (CODATA~2018)
@@ -1446,6 +3207,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@full@PressureAtmosphere| is the standard atmospheric pressure in SI
% units with full precision.
% (CODATA~2018)
@@ -1462,6 +3224,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@short@PressureAtmosphere| is the standard atmospheric pressure in cgs
% units with reduced precision.
% (CODATA~2018)
@@ -1478,6 +3241,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@full@PressureAtmosphere| is the standard atmospheric pressure in cgs
% units with full precision.
% (CODATA~2018)
@@ -1493,7 +3257,80 @@
% {The value is \k@cgs@full@PressureAtmosphere}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@short@PressureAtmosphereNumeric| is a mathematical value of
+% 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@PressureAtmosphereNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PressureAtmosphereNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@full@PressureAtmosphereNumeric| is a mathematical value of
+% 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@PressureAtmosphereNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PressureAtmosphereNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@short@PressureAtmosphereNumeric| is a mathematical value of
+% 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@PressureAtmosphereNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PressureAtmosphereNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@full@PressureAtmosphereNumeric| is a mathematical value of
+% 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@PressureAtmosphereNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PressureAtmosphereNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@short@PressureStandard| is the standard atmospheric pressure in SI
% units with reduced precision.
% (CODATA~2018)
@@ -1510,6 +3347,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@full@PressureStandard| is the standard atmospheric pressure in SI
% units with full precision.
% (CODATA~2018)
@@ -1526,6 +3364,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@short@PressureStandard| is the standard atmospheric pressure in cgs
% units with reduced precision.
% (CODATA~2018)
@@ -1542,6 +3381,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@full@PressureStandard| is the standard atmospheric pressure in cgs
% units with full precision.
% (CODATA~2018)
@@ -1557,6 +3397,78 @@
% {The value is \k@cgs@full@PressureStandard}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@short@PressureStandardNumeric| is a mathematical value of
+% 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@PressureStandardNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PressureStandardNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@full@PressureStandardNumeric| is a mathematical value of
+% 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@PressureStandardNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PressureStandardNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@short@PressureStandardNumeric| is a mathematical value of
+% 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@PressureStandardNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PressureStandardNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@full@PressureStandardNumeric| is a mathematical value of
+% 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@PressureStandardNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PressureStandardNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Velocity, Speed and Acceleration}
%
@@ -1623,7 +3535,74 @@
% {The value is \k@cgs@full@SpeedLight}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@SpeedLightNumeric}
+% |\k@SI@short@SpeedLightNumeric| is a mathematical value of
+% 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@SpeedLightNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@SpeedLightNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@SpeedLightNumeric}
+% |\k@SI@full@SpeedLightNumeric| is a mathematical value of
+% 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@SpeedLightNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@SpeedLightNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@SpeedLightNumeric}
+% |\k@cgs@short@SpeedLightNumeric| is a mathematical value of
+% 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@SpeedLightNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@SpeedLightNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@SpeedLightNumeric}
+% |\k@cgs@full@SpeedLightNumeric| is a mathematical value of
+% 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@SpeedLightNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@SpeedLightNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\k@SI@short@AccelGravity| is the accelertion due to gravity at the surface
% of the Earth in SI units with reduced precision.
% (CODATA 2018)
@@ -1640,6 +3619,8 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\k@SI@full@AccelGravity| is the accelertion due to gravity at the surface of
% the Earth in SI units with full precision.
% (CODATA 2018)
@@ -1656,6 +3637,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\k@cgs@short@AccelGravity| is the accelertion due to gravity at the surface
% of the Earth in cgs units with reduced precision.
% (CODATA 2018)
@@ -1672,6 +3655,8 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\k@cgs@full@AccelGravity| is the accelertion due to gravity at the surface
% of the Earth in cgs units with full precision.
% (CODATA 2018)
@@ -1687,10 +3672,87 @@
% {The value is \k@cgs@full@AccelGravity}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@SI@short@AccelGravityNumeric| is a mathematical value of
+% 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@AccelGravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@AccelGravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@SI@full@AccelGravityNumeric| is a mathematical value of
+% 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@AccelGravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@AccelGravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@cgs@short@AccelGravityNumeric| is a mathematical value of
+% 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@AccelGravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@AccelGravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@cgs@full@AccelGravityNumeric| is a mathematical value of
+% 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@AccelGravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@AccelGravityNumeric}\end{mdframed}
+% \makeatother
+%
%
%\subsubsection{Other Constants}
%
% \DescribeMacro{\k@SI@short@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% SI units with reduced precision.
% (Calculated)
@@ -1707,6 +3769,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% SI units with full precision.
% (Calculated)
@@ -1723,6 +3786,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$)
% in cgs units with reduced precision.
% (Calculated)
@@ -1739,6 +3803,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% cgs units with full precision.
% (Calculated)
@@ -1754,6 +3819,78 @@
% {The value is \k@cgs@full@Coulomb}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@CoulombNumeric| is a mathematical value of
+% 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@CoulombNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@CoulombNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@CoulombNumeric| is a mathematical value of
+% 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@CoulombNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@CoulombNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@CoulombNumeric| is a mathematical value of
+% 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@CoulombNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@CoulombNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@CoulombNumeric| is a mathematical value of
+% 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@CoulombNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@CoulombNumeric}\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.
@@ -1818,10 +3955,79 @@
% {The value is \k@cgs@full@VacuumPermittivity}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@VacuumPermittivityNumeric}
+% |\k@SI@short@VacuumPermittivityNumeric| is a mathematical value of
+% 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@VacuumPermittivityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@VacuumPermittivityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@VacuumPermittivityNumeric}
+% |\k@SI@full@VacuumPermittivityNumeric| is a mathematical value of
+% 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@VacuumPermittivityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@VacuumPermittivityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@VacuumPermittivityNumeric}
+% |\k@cgs@short@VacuumPermittivityNumeric| is a mathematical value of
+% 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@VacuumPermittivityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@VacuumPermittivityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@VacuumPermittivityNumeric}
+% |\k@cgs@full@VacuumPermittivityNumeric| is a mathematical value of
+% 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@VacuumPermittivityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@VacuumPermittivityNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@short@VacuumPermeability| is the magnetic permeability of the vacuum
% in SI units with reduced precision.
-% (CODATA~2018)
+% (Calculated)
%
% The macro can be invoked by (e.g.)
% \begin{mdframed}[backgroundcolor=orange!25]%
@@ -1835,9 +4041,10 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@full@VacuumPermeability| is the magnetic permeability of the vacuum in
% SI units with full precision.
-% (CODATA~2018)
+% (Calculated)
%
% The macro can be invoked by (e.g.)
% \begin{mdframed}[backgroundcolor=orange!25]%
@@ -1851,9 +4058,10 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@short@VacuumPermeability| is the magnetic permeability of the vacuum
% in cgs units with reduced precision.
-% (CODATA~2018)
+% (Calculated)
%
% The macro can be invoked by (e.g.)
% \begin{mdframed}[backgroundcolor=orange!25]%
@@ -1867,9 +4075,10 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@full@VacuumPermeability| is the magnetic permeability of the vacuum
% in cgs units with full precision.
-% (CODATA~2018)
+% (Calculated)
%
% The macro can be invoked by (e.g.)
% \begin{mdframed}[backgroundcolor=orange!25]%
@@ -1882,6 +4091,78 @@
% {The value is \k@cgs@full@VacuumPermeability}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@short@VacuumPermeabilityNumeric| is a mathematical value of
+% the magnetic permeability of the vacuum 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@VacuumPermeabilityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@VacuumPermeabilityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@full@VacuumPermeabilityNumeric| is a mathematical value of
+% the magnetic permeability of the vacuum 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@VacuumPermeabilityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@VacuumPermeabilityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@short@VacuumPermeabilityNumeric| is a mathematical value of
+% the magnetic permeability of the vacuum 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@VacuumPermeabilityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@VacuumPermeabilityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@full@VacuumPermeabilityNumeric| is a mathematical value of
+% the magnetic permeability of the vacuum 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@VacuumPermeabilityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@VacuumPermeabilityNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@short@VacuumImpedance}
% |\k@short@VacuumImpedance| is the characteristic impedance of the vacuum with
% reduced precision.
@@ -1914,6 +4195,40 @@
% {The value is \k@full@VacuumImpedance}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@short@VacuumImpedanceNumeric}
+% |\k@short@VacuumImpedanceNumeric| is a mathematical value of
+% 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@VacuumImpedanceNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@VacuumImpedanceNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@VacuumImpedanceNumeric}
+% |\k@full@VacuumImpedanceNumeric| is a mathematical value of
+% 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@VacuumImpedanceNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@VacuumImpedanceNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@Boltzmann}
% |\k@SI@short@Boltzmann| is the Boltzmann constant in SI units with reduced
% precision.
@@ -2009,7 +4324,106 @@
% {The value is \k@eV@full@Boltzmann}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@BoltzmannNumeric}
+% |\k@SI@short@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@BoltzmannNumeric}
+% |\k@SI@full@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@BoltzmannNumeric}
+% |\k@cgs@short@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@BoltzmannNumeric}
+% |\k@cgs@full@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@BoltzmannNumeric}
+% |\k@eV@short@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@BoltzmannNumeric}
+% |\k@eV@full@BoltzmannNumeric| is a mathematical value of
+% 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@BoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@BoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@Planck| is the Planck constant in SI units with reduced
% precision.
% (CODATA~2018)
@@ -2026,6 +4440,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@Planck| is the Planck constant in SI units with full precision.
% (CODATA~2018)
%
@@ -2041,6 +4456,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@Planck| is the Planck constant in cgs units with reduced
% precision.
% (CODATA~2018)
@@ -2057,6 +4473,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@Planck| is the Planck constant in cgs units with full precision.
% (CODATA~2018)
%
@@ -2072,6 +4489,7 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@short@Planck| is the Planck constant in eV with reduced precision.
% (CODATA~2018)
%
@@ -2087,6 +4505,7 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@full@Planck| is the Planck constant in eV with full precision.
% (CODATA~2018)
%
@@ -2101,7 +4520,110 @@
% {The value is \k@eV@full@Planck}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@short@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@full@PlanckNumeric| is a mathematical value of
+% 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@PlanckNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@PlanckNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in SI units with reduced precision.
% (Calculated)
@@ -2118,6 +4640,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in SI units with full precision.
% (Calculated)
@@ -2134,6 +4657,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in cgs units with reduced precision.
% (Calculated)
@@ -2150,6 +4674,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in cgs units with full precision.
% (Calculated)
@@ -2166,6 +4691,7 @@
% \makeatother
%
% \DescribeMacro{\k@eV@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in eV with reduced precision.
% (Calculated)
@@ -2182,6 +4708,7 @@
% \makeatother
%
% \DescribeMacro{\k@eV@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in eV with full precision.
% (Calculated)
@@ -2197,7 +4724,116 @@
% {The value is \k@eV@full@PlanckReduced}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@short@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@short@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@eV@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@full@PlanckReducedNumeric| is a mathematical value of
+% 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@PlanckReducedNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@eV@full@PlanckReducedNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@short@Gravity| is Newton's gravitational constant in SI units with
% reduced precision.
% (CODATA~2018)
@@ -2214,6 +4850,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@full@Gravity| is Newton's gravitational constant in SI units with full
% precision.
% (CODATA~2018)
@@ -2230,6 +4867,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@short@Gravity| is Newton's gravitational constant in cgs units with
% reduced precision.
% (CODATA~2018)
@@ -2246,6 +4884,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@full@Gravity| is Newton's gravitational constant in cgs units with
% full precision.
% (CODATA~2018)
@@ -2261,7 +4900,80 @@
% {The value is \k@cgs@full@Gravity}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@short@GravityNumeric| is a mathematical value of
+% 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@GravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@GravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@full@GravityNumeric| is a mathematical value of
+% 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@GravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@GravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@short@GravityNumeric| is a mathematical value of
+% 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@GravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@GravityNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@full@GravityNumeric| is a mathematical value of
+% 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@GravityNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@GravityNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@SI@short@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -2279,6 +4991,7 @@
% \makeatother
%
% \DescribeMacro{\k@SI@full@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -2296,6 +5009,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@short@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -2313,6 +5027,7 @@
% \makeatother
%
% \DescribeMacro{\k@cgs@full@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -2329,6 +5044,82 @@
% {The value is \k@cgs@full@StefanBoltzmann}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@StefanBoltzmannNumeric| is a mathematical value of
+% 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@StefanBoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@StefanBoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@StefanBoltzmannNumeric| is a mathematical value of
+% 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@StefanBoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@StefanBoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@StefanBoltzmannNumeric| is a mathematical value of
+% 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@StefanBoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@StefanBoltzmannNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@StefanBoltzmannNumeric| is a mathematical value of
+% 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@StefanBoltzmannNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@StefanBoltzmannNumeric}\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
@@ -2397,6 +5188,78 @@
% {The value is \k@cgs@full@Radiation}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@SI@short@RadiationNumeric}
+% |\k@SI@short@RadiationNumeric| is a mathematical value of
+% 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@RadiationNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@short@RadiationNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@SI@full@RadiationNumeric}
+% |\k@SI@full@RadiationNumeric| is a mathematical value of
+% 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@RadiationNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@SI@full@RadiationNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@short@RadiationNumeric}
+% |\k@cgs@short@RadiationNumeric| is a mathematical value of
+% 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@RadiationNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@short@RadiationNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@cgs@full@RadiationNumeric}
+% |\k@cgs@full@RadiationNumeric| is a mathematical value of
+% 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@RadiationNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@cgs@full@RadiationNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@short@FineStructure}
% |\k@short@FineStructure| is the fine structure constant with reduced
% precision.
@@ -2428,6 +5291,38 @@
% {The value is \k@full@FineStructure}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@short@FineStructureNumeric}
+% |\k@short@FineStructureNumeric| is a mathematical value 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@FineStructureNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@FineStructureNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@FineStructureNumeric}
+% |\k@full@FineStructureNumeric| is a mathematical value 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@FineStructureNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@FineStructureNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@short@FineStructureReciprocal}
% |\k@short@FineStructureReciprocal| is the reciprocal of the fine structure
% constant with reduced precision.
@@ -2460,6 +5355,40 @@
% {The value is \k@full@FineStructureReciprocal}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@short@FineStructureReciprocalNumeric}
+% |\k@short@FineStructureReciprocalNumeric| is a mathematical value of
+% 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@FineStructureReciprocalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@FineStructureReciprocalNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@FineStructureReciprocalNumeric}
+% |\k@full@FineStructureReciprocalNumeric| is a mathematical value of
+% 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@FineStructureReciprocalNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@FineStructureReciprocalNumeric}\end{mdframed}
+% \makeatother
+%
% \DescribeMacro{\k@short@Avogadro}
% |\k@short@Avogadro| is Avogadro's Number (the number of particles in a mole)
% with reduced precision.
@@ -2492,6 +5421,40 @@
% {The value is \k@full@Avogadro}\end{mdframed}
% \makeatother
%
+% \DescribeMacro{\k@short@AvogadroNumeric}
+% |\k@short@AvogadroNumeric| is a mathematical value of
+% 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@AvogadroNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@short@AvogadroNumeric}\end{mdframed}
+% \makeatother
+%
+% \DescribeMacro{\k@full@AvogadroNumeric}
+% |\k@full@AvogadroNumeric| is a mathematical value of
+% 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@AvogadroNumeric\\
+% \textbackslash makeatother}}\end{mdframed}
+% \makeatletter
+% Resulting in
+% \begin{mdframed}[backgroundcolor=blue!25]%
+% {The value is \k@full@AvogadroNumeric}\end{mdframed}
+% \makeatother
+%
\makeatletter
% \StopEventually{}
%
@@ -2527,6 +5490,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassElectron| is the mass of an electron in SI units with
% reduced precision.
% Source: CODATA~2018
@@ -2535,7 +5500,7 @@
\DeclareRobustCommand{\k@SI@short@MassElectron}{%
\ensuremath{%
9.11%
-\times 10^{-34}\kg}}
+\times 10^{-31}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2546,6 +5511,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassElectron| is the mass of an electron in SI units with full
% precision.
% Source: CODATA~2018
@@ -2557,7 +5524,7 @@
980\expandafter\physconst@decimalsseparator%
087\expandafter\physconst@decimalsseparator%
382%
-\times 10^{-34}\kg}}
+\times 10^{-31}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2568,6 +5535,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassElectron| is the mass of an electron in cgs units with
% reduced precision.
% Source: CODATA~2018
@@ -2576,7 +5545,7 @@
\DeclareRobustCommand{\k@cgs@short@MassElectron}{%
\ensuremath{%
9.11%
-\times 10^{-31}\gm}}
+\times 10^{-28}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2587,6 +5556,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassElectron| is the mass of an electron in cgs units with full
% precision.
% Source: CODATA~2018
@@ -2598,7 +5569,7 @@
980\expandafter\physconst@decimalsseparator%
087\expandafter\physconst@decimalsseparator%
382%
-\times 10^{-31}\gm}}
+\times 10^{-28}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2609,6 +5580,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassElectron| is the mass of an electron in eV with reduced
% precision.
% Source: CODATA~2018
@@ -2616,8 +5589,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@eV@short@MassElectron}{%
\ensuremath{%
-5.69%
-\times 10^{-19}\eV\,c^{-2}}}
+5.11%
+\times 10^{5}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2628,6 +5601,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@MassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassElectron| is the mass of an electron in eV with full
% precision.
% Source: CODATA~2018
@@ -2635,11 +5610,11 @@
% \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}}}
+5.109\expandafter\physconst@decimalsseparator%
+763\expandafter\physconst@decimalsseparator%
+089\expandafter\physconst@decimalsseparator%
+046%
+\times 10^{5}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2650,6 +5625,8 @@
%<*package>
%\fi
% \begin{macro}{\kMassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\kMassElectron| is the mass of an electron.
%
% \begin{macrocode}
@@ -2680,6 +5657,8 @@
%<*package>
%\fi
% \begin{macro}{\keVMassElectron}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\keVMassElectron| is the mass of an electron.
%
% \begin{macrocode}
@@ -2699,7 +5678,183 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassElectronNumeric| is the mass of an electron in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassElectronNumeric}{%
+\ensuremath{%
+9.11e-31}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassElectronNumeric| is the mass of an electron in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassElectronNumeric}{%
+\ensuremath{%
+9.108980087382e-31}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassElectronNumeric| is the mass of an electron in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassElectronNumeric}{%
+\ensuremath{%
+9.11e-28}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassElectronNumeric| is the mass of an electron in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassElectronNumeric}{%
+\ensuremath{%
+9.108980087382e-28}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassElectronNumeric| is the mass of an electron in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassElectronNumeric}{%
+\ensuremath{%
+5.11e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassElectronNumeric| is the mass of an electron in eV with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassElectronNumeric}{%
+\ensuremath{%
+5.109763089046e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\kMassElectronNumeric| is the mass of an electron.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassElectronNumeric}{%
+\k@SI@short@MassElectronNumeric}
+\else
+\DeclareRobustCommand {\kMassElectronNumeric}{%
+\k@SI@full@MassElectronNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassElectronNumeric}{%
+\k@cgs@short@MassElectronNumeric}
+\else
+\DeclareRobustCommand {\kMassElectronNumeric}{%
+\k@cgs@full@MassElectronNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassElectronNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\keVMassElectronNumeric| is the mass of an electron.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassElectronNumeric}{%
+\k@eV@short@MassElectronNumeric}
+\else
+\DeclareRobustCommand {\keVMassElectronNumeric}{%
+\k@eV@full@MassElectronNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassProton| is the mass of a proton in SI units with reduced
% precision.
% Source: CODATA~2018
@@ -2708,7 +5863,7 @@
\DeclareRobustCommand{\k@SI@short@MassProton}{%
\ensuremath{%
1.67%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2719,6 +5874,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassProton| is the mass of a proton in SI units with full
% precision.
% Source: CODATA~2018
@@ -2730,7 +5887,7 @@
547\expandafter\physconst@decimalsseparator%
813\expandafter\physconst@decimalsseparator%
969%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2741,6 +5898,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassProton| is the mass of a proton in cgs units with reduced
% precision.
% Source: CODATA~2018
@@ -2749,7 +5908,7 @@
\DeclareRobustCommand{\k@cgs@short@MassProton}{%
\ensuremath{%
1.67%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2760,6 +5919,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassProton| is the mass of a proton in cgs units with full
% precision.
% Source: CODATA~2018
@@ -2771,7 +5932,7 @@
547\expandafter\physconst@decimalsseparator%
813\expandafter\physconst@decimalsseparator%
969%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2782,14 +5943,16 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\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}}}
+9.38%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2800,17 +5963,19 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@MassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\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}}}
+9.382\expandafter\physconst@decimalsseparator%
+305\expandafter\physconst@decimalsseparator%
+156\expandafter\physconst@decimalsseparator%
+558%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2821,6 +5986,8 @@
%<*package>
%\fi
% \begin{macro}{\kMassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\kMassProton| is the mass of a proton.
%
% \begin{macrocode}
@@ -2851,6 +6018,8 @@
%<*package>
%\fi
% \begin{macro}{\keVMassProton}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\keVMassProton| is the mass of a proton.
%
% \begin{macrocode}
@@ -2870,7 +6039,181 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassProtonNumeric| is the mass of a proton in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassProtonNumeric}{%
+\ensuremath{%
+1.67e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassProtonNumeric| is the mass of a proton in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassProtonNumeric}{%
+\ensuremath{%
+1.672547813969e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassProtonNumeric| is the mass of a proton in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassProtonNumeric}{%
+\ensuremath{%
+1.67e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassProtonNumeric| is the mass of a proton in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassProtonNumeric}{%
+\ensuremath{%
+1.672547813969e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassProtonNumeric| is the mass of a proton in eV with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassProtonNumeric}{%
+\ensuremath{%
+9.38e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassProtonNumeric| is the mass of a proton in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassProtonNumeric}{%
+\ensuremath{%
+9.382305156558e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\kMassProtonNumeric| is the mass of a proton.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassProtonNumeric}{%
+\k@SI@short@MassProtonNumeric}
+\else
+\DeclareRobustCommand {\kMassProtonNumeric}{%
+\k@SI@full@MassProtonNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassProtonNumeric}{%
+\k@cgs@short@MassProtonNumeric}
+\else
+\DeclareRobustCommand {\kMassProtonNumeric}{%
+\k@cgs@full@MassProtonNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassProtonNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\keVMassProtonNumeric| is the mass of a proton.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassProtonNumeric}{%
+\k@eV@short@MassProtonNumeric}
+\else
+\DeclareRobustCommand {\keVMassProtonNumeric}{%
+\k@eV@full@MassProtonNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
% with reduced precision.
% Source: CODATA~2018
@@ -2879,7 +6222,7 @@
\DeclareRobustCommand{\k@SI@short@MassHydrogen}{%
\ensuremath{%
1.67%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2890,6 +6233,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassHydrogen| is the mass of a neutral hydrogen atom in SI units
% with full precision.
% Source: CODATA~2018
@@ -2901,7 +6246,7 @@
458\expandafter\physconst@decimalsseparator%
687\expandafter\physconst@decimalsseparator%
724%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -2912,6 +6257,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
% units with reduced precision.
% Source: CODATA~2018
@@ -2920,7 +6267,7 @@
\DeclareRobustCommand{\k@cgs@short@MassHydrogen}{%
\ensuremath{%
1.67%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2931,6 +6278,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassHydrogen| is the mass of a neutral hydrogen atom in cgs
% units with full precision.
% Source: CODATA~2018
@@ -2942,7 +6291,7 @@
458\expandafter\physconst@decimalsseparator%
687\expandafter\physconst@decimalsseparator%
724%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -2953,6 +6302,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
% reduced precision.
% Source: CODATA~2018
@@ -2960,8 +6311,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@eV@short@MassHydrogen}{%
\ensuremath{%
-1.04%
-\times 10^{-15}\eV\,c^{-2}}}
+9.39%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2972,6 +6323,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@MassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassHydrogen| is the mass of a neutral hydrogen atom in eV with
% full precision.
% Source: CODATA~2018
@@ -2979,11 +6332,11 @@
% \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}}}
+9.387\expandafter\physconst@decimalsseparator%
+414\expandafter\physconst@decimalsseparator%
+783\expandafter\physconst@decimalsseparator%
+596%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -2994,6 +6347,8 @@
%<*package>
%\fi
% \begin{macro}{\kMassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\kMassHydrogen| is the mass of a neutral hydrogen atom.
%
% \begin{macrocode}
@@ -3024,6 +6379,8 @@
%<*package>
%\fi
% \begin{macro}{\keVMassHydrogen}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\keVMassHydrogen| is the mass of a neutral hydrogen atom.
%
% \begin{macrocode}
@@ -3043,6 +6400,180 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in SI units
+% with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassHydrogenNumeric}{%
+\ensuremath{%
+1.67e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in SI units
+% with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassHydrogenNumeric}{%
+\ensuremath{%
+1.673458687724e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassHydrogenNumeric}{%
+\ensuremath{%
+1.67e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassHydrogenNumeric}{%
+\ensuremath{%
+1.673458687724e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in eV with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassHydrogenNumeric}{%
+\ensuremath{%
+9.39e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassHydrogenNumeric| is the mass of a neutral hydrogen atom in eV with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassHydrogenNumeric}{%
+\ensuremath{%
+9.387414783596e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\kMassHydrogenNumeric| is the mass of a neutral hydrogen atom.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassHydrogenNumeric}{%
+\k@SI@short@MassHydrogenNumeric}
+\else
+\DeclareRobustCommand {\kMassHydrogenNumeric}{%
+\k@SI@full@MassHydrogenNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassHydrogenNumeric}{%
+\k@cgs@short@MassHydrogenNumeric}
+\else
+\DeclareRobustCommand {\kMassHydrogenNumeric}{%
+\k@cgs@full@MassHydrogenNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassHydrogenNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\keVMassHydrogenNumeric| is the mass of a neutral hydrogen atom.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassHydrogenNumeric}{%
+\k@eV@short@MassHydrogenNumeric}
+\else
+\DeclareRobustCommand {\keVMassHydrogenNumeric}{%
+\k@eV@full@MassHydrogenNumeric}
+\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.
@@ -3151,7 +6682,344 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@MassSunNumeric}
+% |\k@SI@short@MassSunNumeric| is the mass of the Sun in SI units with reduced
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassSunNumeric}{%
+\ensuremath{%
+1.99e+30}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassSunNumeric}
+% |\k@SI@full@MassSunNumeric| is the mass of the Sun in SI units with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassSunNumeric}{%
+\ensuremath{%
+1.9884099e+30}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassSunNumeric}
+% |\k@cgs@short@MassSunNumeric| is the mass of the Sun in cgs units with reduced
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassSunNumeric}{%
+\ensuremath{%
+1.99e+33}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassSunNumeric}
+% |\k@cgs@full@MassSunNumeric| is the mass of the Sun in cgs units with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassSunNumeric}{%
+\ensuremath{%
+1.9884099e+33}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassSunNumeric}
+% |\kMassSunNumeric| is the mass of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassSunNumeric}{%
+\k@SI@short@MassSunNumeric}
+\else
+\DeclareRobustCommand {\kMassSunNumeric}{%
+\k@SI@full@MassSunNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassSunNumeric}{%
+\k@cgs@short@MassSunNumeric}
+\else
+\DeclareRobustCommand {\kMassSunNumeric}{%
+\k@cgs@full@MassSunNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@MassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@short@MassEarth| is the mass of the Earth with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@MassEarth}{%
+\ensuremath{%
+5.97%
+\times 10^{24}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@MassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@full@MassEarth| is the mass of the Earth with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@MassEarth}{%
+\ensuremath{%
+5.972\expandafter\physconst@decimalsseparator%
+168%
+\times 10^{24}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassEarth}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\kMassEarth| is the mass of the Earth.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassEarth}{%
+\k@short@MassEarth}
+\else
+\DeclareRobustCommand {\kMassEarth}{%
+\k@full@MassEarth}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@MassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@short@MassEarthNumeric| is the mass of the Earth with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@MassEarthNumeric}{%
+\ensuremath{%
+5.97e+24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@MassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\k@full@MassEarthNumeric| is the mass of the Earth with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@MassEarthNumeric}{%
+\ensuremath{%
+5.972168e+24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Earth}
+% |\kMassEarthNumeric| is the mass of the Earth.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassEarthNumeric}{%
+\k@short@MassEarthNumeric}
+\else
+\DeclareRobustCommand {\kMassEarthNumeric}{%
+\k@full@MassEarthNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@MassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@short@MassJupiter| is the mass of Jupiter with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@MassJupiter}{%
+\ensuremath{%
+1.90%
+\times 10^{27}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@MassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@full@MassJupiter| is the mass of Jupiter with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@MassJupiter}{%
+\ensuremath{%
+1.898\expandafter\physconst@decimalsseparator%
+124\expandafter\physconst@decimalsseparator%
+6%
+\times 10^{27}\kg}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\kMassJupiter| is the mass of Jupiter.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassJupiter}{%
+\k@short@MassJupiter}
+\else
+\DeclareRobustCommand {\kMassJupiter}{%
+\k@full@MassJupiter}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@MassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@short@MassJupiterNumeric| is the mass of Jupiter with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@MassJupiterNumeric}{%
+\ensuremath{%
+1.90e+27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@MassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\k@full@MassJupiterNumeric| is the mass of Jupiter with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@MassJupiterNumeric}{%
+\ensuremath{%
+1.8981246e+27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add mass of Jupiter}
+% |\kMassJupiterNumeric| is the mass of Jupiter.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassJupiterNumeric}{%
+\k@short@MassJupiterNumeric}
+\else
+\DeclareRobustCommand {\kMassJupiterNumeric}{%
+\k@full@MassJupiterNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@short@MassAMU| is the mass of an atomic mass unit in SI units with
% reduced precision.
% Source: CODATA~2018
@@ -3160,7 +7028,7 @@
\DeclareRobustCommand{\k@SI@short@MassAMU}{%
\ensuremath{%
1.66%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -3171,6 +7039,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@SI@full@MassAMU| is the mass of an atomic mass unit in SI units with full
% precision.
% Source: CODATA~2018
@@ -3182,7 +7052,7 @@
465\expandafter\physconst@decimalsseparator%
492\expandafter\physconst@decimalsseparator%
239%
-\times 10^{-30}\kg}}
+\times 10^{-27}\kg}}
% \end{macrocode}
% \end{macro}
%
@@ -3193,6 +7063,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@short@MassAMU| is the mass of an atomic mass unit in cgs units with
% reduced precision.
% Source: CODATA~2018
@@ -3201,7 +7073,7 @@
\DeclareRobustCommand{\k@cgs@short@MassAMU}{%
\ensuremath{%
1.66%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -3212,6 +7084,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@cgs@full@MassAMU| is the mass of an atomic mass unit in cgs units with
% full precision.
% Source: CODATA~2018
@@ -3223,7 +7097,7 @@
465\expandafter\physconst@decimalsseparator%
492\expandafter\physconst@decimalsseparator%
239%
-\times 10^{-27}\gm}}
+\times 10^{-24}\gm}}
% \end{macrocode}
% \end{macro}
%
@@ -3234,6 +7108,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@short@MassAMU| is the mass of an atomic mass unit in eV with reduced
% precision.
% Source: CODATA~2018
@@ -3241,8 +7117,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@eV@short@MassAMU}{%
\ensuremath{%
-1.04%
-\times 10^{-15}\eV\,c^{-2}}}
+9.31%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -3253,6 +7129,8 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@MassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\k@eV@full@MassAMU| is the mass of an atomic mass unit in eV with full
% precision.
% Source: CODATA~2018
@@ -3260,11 +7138,11 @@
% \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}}}
+9.314\expandafter\physconst@decimalsseparator%
+528\expandafter\physconst@decimalsseparator%
+302\expandafter\physconst@decimalsseparator%
+276%
+\times 10^{8}\eV\,c^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -3275,6 +7153,8 @@
%<*package>
%\fi
% \begin{macro}{\kMassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\kMassAMU| is the mass of an atomic mass unit.
%
% \begin{macrocode}
@@ -3305,6 +7185,8 @@
%<*package>
%\fi
% \begin{macro}{\keVMassAMU}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
% |\keVMassAMU| is the mass of an atomic mass unit.
%
% \begin{macrocode}
@@ -3321,6 +7203,180 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@short@MassAMUNumeric| is the mass of an atomic mass unit in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@MassAMUNumeric}{%
+\ensuremath{%
+1.66e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@SI@full@MassAMUNumeric| is the mass of an atomic mass unit in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@MassAMUNumeric}{%
+\ensuremath{%
+1.660465492239e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@short@MassAMUNumeric| is the mass of an atomic mass unit in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@MassAMUNumeric}{%
+\ensuremath{%
+1.66e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@cgs@full@MassAMUNumeric| is the mass of an atomic mass unit in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@MassAMUNumeric}{%
+\ensuremath{%
+1.660465492239e-24}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@short@MassAMUNumeric| is the mass of an atomic mass unit in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@MassAMUNumeric}{%
+\ensuremath{%
+9.31e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@MassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\k@eV@full@MassAMUNumeric| is the mass of an atomic mass unit in eV with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@MassAMUNumeric}{%
+\ensuremath{%
+9.314528302276e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kMassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\kMassAMUNumeric| is the mass of an atomic mass unit.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassAMUNumeric}{%
+\k@SI@short@MassAMUNumeric}
+\else
+\DeclareRobustCommand {\kMassAMUNumeric}{%
+\k@SI@full@MassAMUNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kMassAMUNumeric}{%
+\k@cgs@short@MassAMUNumeric}
+\else
+\DeclareRobustCommand {\kMassAMUNumeric}{%
+\k@cgs@full@MassAMUNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVMassAMUNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% \changes{v1.1.0}{2020/02/03}{Correct value in eV.}
+% |\keVMassAMUNumeric| is the mass of an atomic mass unit.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVMassAMUNumeric}{%
+\k@eV@short@MassAMUNumeric}
+\else
+\DeclareRobustCommand {\keVMassAMUNumeric}{%
+\k@eV@full@MassAMUNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Charge}
%
@@ -3437,6 +7493,108 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@ChargeFundamentalNumeric}
+% |\k@SI@short@ChargeFundamentalNumeric| is the fundamental charge in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeFundamentalNumeric}{%
+\ensuremath{%
+1.60e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeFundamentalNumeric}
+% |\k@SI@full@ChargeFundamentalNumeric| is the fundamental charge in SI units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeFundamentalNumeric}{%
+\ensuremath{%
+1.602176634e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeFundamentalNumeric}
+% |\k@cgs@short@ChargeFundamentalNumeric| is the fundamental charge in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeFundamentalNumeric}{%
+\ensuremath{%
+4.80e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeFundamentalNumeric}
+% |\k@cgs@full@ChargeFundamentalNumeric| is the fundamental charge in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeFundamentalNumeric}{%
+\ensuremath{%
+4.803204713e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeFundamentalNumeric}
+% |\kChargeFundamentalNumeric| is the fundamental charge.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
+\k@SI@short@ChargeFundamentalNumeric}
+\else
+\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
+\k@SI@full@ChargeFundamentalNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
+\k@cgs@short@ChargeFundamentalNumeric}
+\else
+\DeclareRobustCommand {\kChargeFundamentalNumeric}{%
+\k@cgs@full@ChargeFundamentalNumeric}
+\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.
@@ -3547,6 +7705,108 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@ChargeElectronNumeric}
+% |\k@SI@short@ChargeElectronNumeric| is the charge of an electron in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeElectronNumeric}{%
+\ensuremath{%
+-1.60e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeElectronNumeric}
+% |\k@SI@full@ChargeElectronNumeric| is the charge of an electron in SI units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeElectronNumeric}{%
+\ensuremath{%
+-1.602176634e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeElectronNumeric}
+% |\k@cgs@short@ChargeElectronNumeric| is the charge of an electron in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeElectronNumeric}{%
+\ensuremath{%
+-4.80e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeElectronNumeric}
+% |\k@cgs@full@ChargeElectronNumeric| is the charge of an electron in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeElectronNumeric}{%
+\ensuremath{%
+-4.803204713e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeElectronNumeric}
+% |\kChargeElectronNumeric| is the charge of an electron.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeElectronNumeric}{%
+\k@SI@short@ChargeElectronNumeric}
+\else
+\DeclareRobustCommand {\kChargeElectronNumeric}{%
+\k@SI@full@ChargeElectronNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeElectronNumeric}{%
+\k@cgs@short@ChargeElectronNumeric}
+\else
+\DeclareRobustCommand {\kChargeElectronNumeric}{%
+\k@cgs@full@ChargeElectronNumeric}
+\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.
@@ -3654,6 +7914,108 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@ChargeProtonNumeric}
+% |\k@SI@short@ChargeProtonNumeric| is the charge of a proton in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ChargeProtonNumeric}{%
+\ensuremath{%
+1.60e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ChargeProtonNumeric}
+% |\k@SI@full@ChargeProtonNumeric| is the charge of a proton in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ChargeProtonNumeric}{%
+\ensuremath{%
+1.602176634e-19}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ChargeProtonNumeric}
+% |\k@cgs@short@ChargeProtonNumeric| is the charge of a proton in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ChargeProtonNumeric}{%
+\ensuremath{%
+4.80e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ChargeProtonNumeric}
+% |\k@cgs@full@ChargeProtonNumeric| is the charge of a proton in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ChargeProtonNumeric}{%
+\ensuremath{%
+4.803204713e-10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kChargeProtonNumeric}
+% |\kChargeProtonNumeric| is the charge of a proton.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeProtonNumeric}{%
+\k@SI@short@ChargeProtonNumeric}
+\else
+\DeclareRobustCommand {\kChargeProtonNumeric}{%
+\k@SI@full@ChargeProtonNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kChargeProtonNumeric}{%
+\k@cgs@short@ChargeProtonNumeric}
+\else
+\DeclareRobustCommand {\kChargeProtonNumeric}{%
+\k@cgs@full@ChargeProtonNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Distances and Lengths}
%
@@ -3669,7 +8031,7 @@
\DeclareRobustCommand{\k@SI@short@RadiusBohr}{%
\ensuremath{%
5.29%
-\times 10^{-8}\m}}
+\times 10^{-11}\m}}
% \end{macrocode}
% \end{macro}
%
@@ -3690,7 +8052,7 @@
5.292\expandafter\physconst@decimalsseparator%
006\expandafter\physconst@decimalsseparator%
59%
-\times 10^{-8}\m}}
+\times 10^{-11}\m}}
% \end{macrocode}
% \end{macro}
%
@@ -3709,7 +8071,7 @@
\DeclareRobustCommand{\k@cgs@short@RadiusBohr}{%
\ensuremath{%
5.29%
-\times 10^{-6}\cm}}
+\times 10^{-9}\cm}}
% \end{macrocode}
% \end{macro}
%
@@ -3730,7 +8092,7 @@
5.292\expandafter\physconst@decimalsseparator%
006\expandafter\physconst@decimalsseparator%
59%
-\times 10^{-6}\cm}}
+\times 10^{-9}\cm}}
% \end{macrocode}
% \end{macro}
%
@@ -3770,6 +8132,108 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@RadiusBohrNumeric}
+% |\k@SI@short@RadiusBohrNumeric| is Bohr radius of an atom in SI units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@RadiusBohrNumeric}{%
+\ensuremath{%
+5.29e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RadiusBohrNumeric}
+% |\k@SI@full@RadiusBohrNumeric| is Bohr radius of an atom in SI units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@RadiusBohrNumeric}{%
+\ensuremath{%
+5.29200659e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RadiusBohrNumeric}
+% |\k@cgs@short@RadiusBohrNumeric| is Bohr radius of an atom in cgs units with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@RadiusBohrNumeric}{%
+\ensuremath{%
+5.29e-09}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RadiusBohrNumeric}
+% |\k@cgs@full@RadiusBohrNumeric| is Bohr radius of an atom in cgs units with full
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@RadiusBohrNumeric}{%
+\ensuremath{%
+5.29200659e-09}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusBohrNumeric}
+% |\kRadiusBohrNumeric| is Bohr radius of an atom.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusBohrNumeric}{%
+\k@SI@short@RadiusBohrNumeric}
+\else
+\DeclareRobustCommand {\kRadiusBohrNumeric}{%
+\k@SI@full@RadiusBohrNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusBohrNumeric}{%
+\k@cgs@short@RadiusBohrNumeric}
+\else
+\DeclareRobustCommand {\kRadiusBohrNumeric}{%
+\k@cgs@full@RadiusBohrNumeric}
+\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.
@@ -3881,6 +8345,109 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@AstronomicalUnitNumeric}
+% |\k@SI@short@AstronomicalUnitNumeric| 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@AstronomicalUnitNumeric}{%
+\ensuremath{%
+1.50e+11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@AstronomicalUnitNumeric}
+% |\k@SI@full@AstronomicalUnitNumeric| 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@AstronomicalUnitNumeric}{%
+\ensuremath{%
+1.495978707e+11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@AstronomicalUnitNumeric}
+% |\k@cgs@short@AstronomicalUnitNumeric| 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@AstronomicalUnitNumeric}{%
+\ensuremath{%
+1.50e+13}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@AstronomicalUnitNumeric}
+% |\k@cgs@full@AstronomicalUnitNumeric| 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@AstronomicalUnitNumeric}{%
+\ensuremath{%
+1.495978707e+13}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAstronomicalUnitNumeric}
+% |\kAstronomicalUnitNumeric| is the astronomical unit (the average distance between
+% the Earth and the Sun).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
+\k@SI@short@AstronomicalUnitNumeric}
+\else
+\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
+\k@SI@full@AstronomicalUnitNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
+\k@cgs@short@AstronomicalUnitNumeric}
+\else
+\DeclareRobustCommand {\kAstronomicalUnitNumeric}{%
+\k@cgs@full@AstronomicalUnitNumeric}
+\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.
@@ -3991,6 +8558,108 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@ParsecNumeric}
+% |\k@SI@short@ParsecNumeric| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@ParsecNumeric}{%
+\ensuremath{%
+3.09e+16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@ParsecNumeric}
+% |\k@SI@full@ParsecNumeric| is the length of a parsec ($\frac{648000\au}{\pi}$) in SI
+% units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@ParsecNumeric}{%
+\ensuremath{%
+3.085677581e+16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@ParsecNumeric}
+% |\k@cgs@short@ParsecNumeric| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@ParsecNumeric}{%
+\ensuremath{%
+3.09e+18}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@ParsecNumeric}
+% |\k@cgs@full@ParsecNumeric| is the length of a parsec ($\frac{648000\au}{\pi}$) in
+% cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@ParsecNumeric}{%
+\ensuremath{%
+3.085677581e+18}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kParsecNumeric}
+% |\kParsecNumeric| is the length of a parsec ($\frac{648000\au}{\pi}$).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kParsecNumeric}{%
+\k@SI@short@ParsecNumeric}
+\else
+\DeclareRobustCommand {\kParsecNumeric}{%
+\k@SI@full@ParsecNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kParsecNumeric}{%
+\k@cgs@short@ParsecNumeric}
+\else
+\DeclareRobustCommand {\kParsecNumeric}{%
+\k@cgs@full@ParsecNumeric}
+\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.
@@ -4094,6 +8763,342 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@RadiusSunNumeric}
+% |\k@SI@short@RadiusSunNumeric| is the mean radius of the Sun in SI units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@RadiusSunNumeric}{%
+\ensuremath{%
+6.96e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RadiusSunNumeric}
+% |\k@SI@full@RadiusSunNumeric| is the mean radius of the Sun in SI units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@RadiusSunNumeric}{%
+\ensuremath{%
+6.957e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RadiusSunNumeric}
+% |\k@cgs@short@RadiusSunNumeric| is the mean radius of the Sun in cgs units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@RadiusSunNumeric}{%
+\ensuremath{%
+6.96e+10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RadiusSunNumeric}
+% |\k@cgs@full@RadiusSunNumeric| is the mean radius of the Sun in cgs units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@RadiusSunNumeric}{%
+\ensuremath{%
+6.957e+10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusSunNumeric}
+% |\kRadiusSunNumeric| is the mean radius of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusSunNumeric}{%
+\k@SI@short@RadiusSunNumeric}
+\else
+\DeclareRobustCommand {\kRadiusSunNumeric}{%
+\k@SI@full@RadiusSunNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusSunNumeric}{%
+\k@cgs@short@RadiusSunNumeric}
+\else
+\DeclareRobustCommand {\kRadiusSunNumeric}{%
+\k@cgs@full@RadiusSunNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@RadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@short@RadiusEarth| is the mean radius of the Earth with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@RadiusEarth}{%
+\ensuremath{%
+6.37%
+\times 10^{6}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@RadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@full@RadiusEarth| is the mean radius of the Earth with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@RadiusEarth}{%
+\ensuremath{%
+6.371\expandafter\physconst@decimalsseparator%
+0%
+\times 10^{6}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusEarth}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\kRadiusEarth| is the mean radius of the Earth.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusEarth}{%
+\k@short@RadiusEarth}
+\else
+\DeclareRobustCommand {\kRadiusEarth}{%
+\k@full@RadiusEarth}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@RadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@short@RadiusEarthNumeric| is the mean radius of the Earth with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@RadiusEarthNumeric}{%
+\ensuremath{%
+6.37e+06}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@RadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\k@full@RadiusEarthNumeric| is the mean radius of the Earth with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@RadiusEarthNumeric}{%
+\ensuremath{%
+6.3710e+06}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusEarthNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Earth}
+% |\kRadiusEarthNumeric| is the mean radius of the Earth.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusEarthNumeric}{%
+\k@short@RadiusEarthNumeric}
+\else
+\DeclareRobustCommand {\kRadiusEarthNumeric}{%
+\k@full@RadiusEarthNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@RadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@short@RadiusJupiter| is the mean radius of Jupiter with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@RadiusJupiter}{%
+\ensuremath{%
+6.99%
+\times 10^{7}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@RadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@full@RadiusJupiter| is the mean radius of Jupiter with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@RadiusJupiter}{%
+\ensuremath{%
+6.991\expandafter\physconst@decimalsseparator%
+1%
+\times 10^{7}\m}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusJupiter}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\kRadiusJupiter| is the mean radius of Jupiter.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusJupiter}{%
+\k@short@RadiusJupiter}
+\else
+\DeclareRobustCommand {\kRadiusJupiter}{%
+\k@full@RadiusJupiter}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@RadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@short@RadiusJupiterNumeric| is the mean radius of Jupiter with reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@RadiusJupiterNumeric}{%
+\ensuremath{%
+6.99e+07}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@RadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\k@full@RadiusJupiterNumeric| is the mean radius of Jupiter with full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@RadiusJupiterNumeric}{%
+\ensuremath{%
+6.9911e+07}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiusJupiterNumeric}
+% \changes{v1.1.0}{2020/02/03}{Add radius of Jupiter}
+% |\kRadiusJupiterNumeric| is the mean radius of Jupiter.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiusJupiterNumeric}{%
+\k@short@RadiusJupiterNumeric}
+\else
+\DeclareRobustCommand {\kRadiusJupiterNumeric}{%
+\k@full@RadiusJupiterNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Energy, Power, and Luminosity}
%
@@ -4109,7 +9114,7 @@
\DeclareRobustCommand{\k@SI@short@Rydberg}{%
\ensuremath{%
2.18%
-\times 10^{-21}\Joule}}
+\times 10^{-18}\Joule}}
% \end{macrocode}
% \end{macro}
%
@@ -4130,7 +9135,7 @@
2.179\expandafter\physconst@decimalsseparator%
775\expandafter\physconst@decimalsseparator%
77%
-\times 10^{-21}\Joule}}
+\times 10^{-18}\Joule}}
% \end{macrocode}
% \end{macro}
%
@@ -4149,7 +9154,7 @@
\DeclareRobustCommand{\k@cgs@short@Rydberg}{%
\ensuremath{%
2.18%
-\times 10^{-14}\erg}}
+\times 10^{-11}\erg}}
% \end{macrocode}
% \end{macro}
%
@@ -4170,7 +9175,7 @@
2.179\expandafter\physconst@decimalsseparator%
775\expandafter\physconst@decimalsseparator%
77%
-\times 10^{-14}\erg}}
+\times 10^{-11}\erg}}
% \end{macrocode}
% \end{macro}
%
@@ -4189,7 +9194,7 @@
\DeclareRobustCommand{\k@eV@short@Rydberg}{%
\ensuremath{%
1.36%
-\times 10^{-2}\eV}}
+\times 10^{1}\eV}}
% \end{macrocode}
% \end{macro}
%
@@ -4210,7 +9215,7 @@
1.360\expandafter\physconst@decimalsseparator%
509\expandafter\physconst@decimalsseparator%
03%
-\times 10^{-2}\eV}}
+\times 10^{1}\eV}}
% \end{macrocode}
% \end{macro}
%
@@ -4270,6 +9275,164 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@RydbergNumeric}
+% |\k@SI@short@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@RydbergNumeric}{%
+\ensuremath{%
+2.18e-18}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RydbergNumeric}
+% |\k@SI@full@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@RydbergNumeric}{%
+\ensuremath{%
+2.17977577e-18}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RydbergNumeric}
+% |\k@cgs@short@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@RydbergNumeric}{%
+\ensuremath{%
+2.18e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RydbergNumeric}
+% |\k@cgs@full@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@RydbergNumeric}{%
+\ensuremath{%
+2.17977577e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@RydbergNumeric}
+% |\k@eV@short@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@RydbergNumeric}{%
+\ensuremath{%
+1.36e+01}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@RydbergNumeric}
+% |\k@eV@full@RydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen)
+% in eV with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@RydbergNumeric}{%
+\ensuremath{%
+1.36050903e+01}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRydbergNumeric}
+% |\kRydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRydbergNumeric}{%
+\k@SI@short@RydbergNumeric}
+\else
+\DeclareRobustCommand {\kRydbergNumeric}{%
+\k@SI@full@RydbergNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRydbergNumeric}{%
+\k@cgs@short@RydbergNumeric}
+\else
+\DeclareRobustCommand {\kRydbergNumeric}{%
+\k@cgs@full@RydbergNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVRydbergNumeric}
+% |\keVRydbergNumeric| is the Rydberg energy (the binding energy of Hydrogen).
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVRydbergNumeric}{%
+\k@eV@short@RydbergNumeric}
+\else
+\DeclareRobustCommand {\keVRydbergNumeric}{%
+\k@eV@full@RydbergNumeric}
+\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.
@@ -4373,6 +9536,108 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@LuminositySunNumeric}
+% |\k@SI@short@LuminositySunNumeric| is the luminosity of the Sun in SI units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@LuminositySunNumeric}{%
+\ensuremath{%
+3.83e+26}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@LuminositySunNumeric}
+% |\k@SI@full@LuminositySunNumeric| is the luminosity of the Sun in SI units with full
+% precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@LuminositySunNumeric}{%
+\ensuremath{%
+3.828e+26}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@LuminositySunNumeric}
+% |\k@cgs@short@LuminositySunNumeric| is the luminosity of the Sun in cgs units with
+% reduced precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@LuminositySunNumeric}{%
+\ensuremath{%
+3.83e+33}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@LuminositySunNumeric}
+% |\k@cgs@full@LuminositySunNumeric| is the luminosity of the Sun in cgs units with
+% full precision.
+% Source: IAU~Resolution~B3~2015
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@LuminositySunNumeric}{%
+\ensuremath{%
+3.828e+33}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kLuminositySunNumeric}
+% |\kLuminositySunNumeric| is the luminosity of the Sun.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kLuminositySunNumeric}{%
+\k@SI@short@LuminositySunNumeric}
+\else
+\DeclareRobustCommand {\kLuminositySunNumeric}{%
+\k@SI@full@LuminositySunNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kLuminositySunNumeric}{%
+\k@cgs@short@LuminositySunNumeric}
+\else
+\DeclareRobustCommand {\kLuminositySunNumeric}{%
+\k@cgs@full@LuminositySunNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Pressure}
%
@@ -4380,6 +9645,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@short@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@short@PressureAtmosphere| is the standard atmospheric pressure in SI
% units with reduced precision.
% Source: CODATA~2018
@@ -4399,6 +9665,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@full@PressureAtmosphere| is the standard atmospheric pressure in SI
% units with full precision.
% Source: CODATA~2018
@@ -4419,6 +9686,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@short@PressureAtmosphere| is the standard atmospheric pressure in cgs
% units with reduced precision.
% Source: CODATA~2018
@@ -4426,7 +9694,7 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@short@PressureAtmosphere}{%
\ensuremath{%
-1.01\barP[m]}}
+1.01\barP}}
% \end{macrocode}
% \end{macro}
%
@@ -4437,6 +9705,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@PressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@full@PressureAtmosphere| is the standard atmospheric pressure in cgs
% units with full precision.
% Source: CODATA~2018
@@ -4445,7 +9714,7 @@
\DeclareRobustCommand{\k@cgs@full@PressureAtmosphere}{%
\ensuremath{%
1.013\expandafter\physconst@decimalsseparator%
-25\barP[m]}}
+25\barP}}
% \end{macrocode}
% \end{macro}
%
@@ -4456,6 +9725,7 @@
%<*package>
%\fi
% \begin{macro}{\kPressureAtmosphere}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\kPressureAtmosphere| is the standard atmospheric pressure.
%
% \begin{macrocode}
@@ -4485,7 +9755,115 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@short@PressureAtmosphereNumeric| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PressureAtmosphereNumeric}{%
+\ensuremath{%
+1.01e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@full@PressureAtmosphereNumeric| is the standard atmospheric pressure in SI
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PressureAtmosphereNumeric}{%
+\ensuremath{%
+1.01325e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@short@PressureAtmosphereNumeric| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PressureAtmosphereNumeric}{%
+\ensuremath{%
+1.01e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@full@PressureAtmosphereNumeric| is the standard atmospheric pressure in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PressureAtmosphereNumeric}{%
+\ensuremath{%
+1.01325e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPressureAtmosphereNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\kPressureAtmosphereNumeric| is the standard atmospheric pressure.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
+\k@SI@short@PressureAtmosphereNumeric}
+\else
+\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
+\k@SI@full@PressureAtmosphereNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
+\k@cgs@short@PressureAtmosphereNumeric}
+\else
+\DeclareRobustCommand {\kPressureAtmosphereNumeric}{%
+\k@cgs@full@PressureAtmosphereNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@short@PressureStandard| is the standard atmospheric pressure in SI
% units with reduced precision.
% Source: CODATA~2018
@@ -4505,6 +9883,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@SI@full@PressureStandard| is the standard atmospheric pressure in SI
% units with full precision.
% Source: CODATA~2018
@@ -4525,6 +9904,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@short@PressureStandard| is the standard atmospheric pressure in cgs
% units with reduced precision.
% Source: CODATA~2018
@@ -4532,7 +9912,7 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@short@PressureStandard}{%
\ensuremath{%
-1.00\barP[m]}}
+1.00\barP}}
% \end{macrocode}
% \end{macro}
%
@@ -4543,6 +9923,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@PressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\k@cgs@full@PressureStandard| is the standard atmospheric pressure in cgs
% units with full precision.
% Source: CODATA~2018
@@ -4551,7 +9932,7 @@
\DeclareRobustCommand{\k@cgs@full@PressureStandard}{%
\ensuremath{%
1.000\expandafter\physconst@decimalsseparator%
-00\barP[m]}}
+00\barP}}
% \end{macrocode}
% \end{macro}
%
@@ -4562,6 +9943,7 @@
%<*package>
%\fi
% \begin{macro}{\kPressureStandard}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
% |\kPressureStandard| is the standard atmospheric pressure.
%
% \begin{macrocode}
@@ -4588,6 +9970,113 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@short@PressureStandardNumeric| is the standard atmospheric pressure in SI
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PressureStandardNumeric}{%
+\ensuremath{%
+1.00e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@SI@full@PressureStandardNumeric| is the standard atmospheric pressure in SI
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PressureStandardNumeric}{%
+\ensuremath{%
+1.00000e+05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@short@PressureStandardNumeric| is the standard atmospheric pressure in cgs
+% units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PressureStandardNumeric}{%
+\ensuremath{%
+1.00e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\k@cgs@full@PressureStandardNumeric| is the standard atmospheric pressure in cgs
+% units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PressureStandardNumeric}{%
+\ensuremath{%
+1.00000e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPressureStandardNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix prefix of units.}
+% |\kPressureStandardNumeric| is the standard atmospheric pressure.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureStandardNumeric}{%
+\k@SI@short@PressureStandardNumeric}
+\else
+\DeclareRobustCommand {\kPressureStandardNumeric}{%
+\k@SI@full@PressureStandardNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPressureStandardNumeric}{%
+\k@cgs@short@PressureStandardNumeric}
+\else
+\DeclareRobustCommand {\kPressureStandardNumeric}{%
+\k@cgs@full@PressureStandardNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Velocity, Speed and Acceleration}
%
@@ -4703,7 +10192,110 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@SpeedLightNumeric}
+% |\k@SI@short@SpeedLightNumeric| is the speed of light in SI units with reduced
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@SpeedLightNumeric}{%
+\ensuremath{%
+3.00e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@SpeedLightNumeric}
+% |\k@SI@full@SpeedLightNumeric| is the speed of light in SI units with full precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@SpeedLightNumeric}{%
+\ensuremath{%
+2.99792458e+08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@SpeedLightNumeric}
+% |\k@cgs@short@SpeedLightNumeric| is the speed of light in cgs units with reduced
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@SpeedLightNumeric}{%
+\ensuremath{%
+3.00e+10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@SpeedLightNumeric}
+% |\k@cgs@full@SpeedLightNumeric| is the speed of light in cgs units with full
+% precision.
+% Source: CODATA 2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@SpeedLightNumeric}{%
+\ensuremath{%
+2.99792458e+10}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kSpeedLightNumeric}
+% |\kSpeedLightNumeric| is the speed of light.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kSpeedLightNumeric}{%
+\k@SI@short@SpeedLightNumeric}
+\else
+\DeclareRobustCommand {\kSpeedLightNumeric}{%
+\k@SI@full@SpeedLightNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kSpeedLightNumeric}{%
+\k@cgs@short@SpeedLightNumeric}
+\else
+\DeclareRobustCommand {\kSpeedLightNumeric}{%
+\k@cgs@full@SpeedLightNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\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
@@ -4711,8 +10303,7 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@SI@short@AccelGravity}{%
\ensuremath{%
-6.67%
-\times 10^{-11}\N\kg^{-2}\m^2}}
+9.81\m\Sec^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4723,6 +10314,8 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\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
@@ -4730,9 +10323,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@SI@full@AccelGravity}{%
\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-11}\N\kg^{-2}\m^2}}
+9.806\expandafter\physconst@decimalsseparator%
+65\m\Sec^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4743,6 +10335,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\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
@@ -4750,8 +10344,8 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@short@AccelGravity}{%
\ensuremath{%
-6.67%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+9.81%
+\times 10^{2}\cm\Sec^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4762,6 +10356,8 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@AccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\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
@@ -4769,9 +10365,9 @@
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@full@AccelGravity}{%
\ensuremath{%
-6.674\expandafter\physconst@decimalsseparator%
-30%
-\times 10^{-8}\dyne\gm^{-2}\cm^2}}
+9.806\expandafter\physconst@decimalsseparator%
+65%
+\times 10^{2}\cm\Sec^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4782,6 +10378,8 @@
%<*package>
%\fi
% \begin{macro}{\kAccelGravity}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
% |\kAccelGravity| is the accelertion due to gravity at the surface of the
% Earth.
%
@@ -4809,6 +10407,119 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@short@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@SI@short@AccelGravityNumeric| 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@AccelGravityNumeric}{%
+\ensuremath{%
+9.81e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@SI@full@AccelGravityNumeric| 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@AccelGravityNumeric}{%
+\ensuremath{%
+9.80665e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@cgs@short@AccelGravityNumeric| 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@AccelGravityNumeric}{%
+\ensuremath{%
+9.81e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@AccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\k@cgs@full@AccelGravityNumeric| 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@AccelGravityNumeric}{%
+\ensuremath{%
+9.80665e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAccelGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Correct value.}
+% \changes{v1.1.0}{2020/02/03}{Fix units.}
+% |\kAccelGravityNumeric| is the accelertion due to gravity at the surface of the
+% Earth.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAccelGravityNumeric}{%
+\k@SI@short@AccelGravityNumeric}
+\else
+\DeclareRobustCommand {\kAccelGravityNumeric}{%
+\k@SI@full@AccelGravityNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAccelGravityNumeric}{%
+\k@cgs@short@AccelGravityNumeric}
+\else
+\DeclareRobustCommand {\kAccelGravityNumeric}{%
+\k@cgs@full@AccelGravityNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
%
%\subsection{Other Constants}
%
@@ -4816,6 +10527,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@short@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% SI units with reduced precision.
% Source: Calculated
@@ -4824,7 +10536,7 @@
\DeclareRobustCommand{\k@SI@short@Coulomb}{%
\ensuremath{%
8.99%
-\times 10^{13}\N\m^2\Coulomb^{-2}}}
+\times 10^{9}\N\m^2\Coulomb^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4835,6 +10547,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% SI units with full precision.
% Source: Calculated
@@ -4845,7 +10558,7 @@
8.987\expandafter\physconst@decimalsseparator%
551\expandafter\physconst@decimalsseparator%
79%
-\times 10^{13}\N\m^2\Coulomb^{-2}}}
+\times 10^{9}\N\m^2\Coulomb^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -4856,6 +10569,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$)
% in cgs units with reduced precision.
% Source: Calculated
@@ -4874,6 +10588,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@Coulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@Coulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
% cgs units with full precision.
% Source: Calculated
@@ -4894,6 +10609,7 @@
%<*package>
%\fi
% \begin{macro}{\kCoulomb}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\kCoulomb| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$).
%
% \begin{macrocode}
@@ -4923,6 +10639,113 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@CoulombNumeric| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@CoulombNumeric}{%
+\ensuremath{%
+8.99e+09}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@CoulombNumeric| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@CoulombNumeric}{%
+\ensuremath{%
+8.98755179e+09}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@CoulombNumeric| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$)
+% in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@CoulombNumeric}{%
+\ensuremath{%
+1.00e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@CoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@CoulombNumeric| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$) in
+% cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@CoulombNumeric}{%
+\ensuremath{%
+1.00000000e+00}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kCoulombNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\kCoulombNumeric| is the Coulomb constant ($\frac{1}{4\pi\epsilon_0}$).
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kCoulombNumeric}{%
+\k@SI@short@CoulombNumeric}
+\else
+\DeclareRobustCommand {\kCoulombNumeric}{%
+\k@SI@full@CoulombNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kCoulombNumeric}{%
+\k@cgs@short@CoulombNumeric}
+\else
+\DeclareRobustCommand {\kCoulombNumeric}{%
+\k@cgs@full@CoulombNumeric}
+\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.
@@ -5035,16 +10858,119 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@VacuumPermittivityNumeric}
+% |\k@SI@short@VacuumPermittivityNumeric| is the electric permittivity of the vacuum
+% in SI units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@VacuumPermittivityNumeric}{%
+\ensuremath{%
+8.85e-12}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@VacuumPermittivityNumeric}
+% |\k@SI@full@VacuumPermittivityNumeric| is the electric permittivity of the vacuum in
+% SI units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@VacuumPermittivityNumeric}{%
+\ensuremath{%
+8.8541878128e-12}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@VacuumPermittivityNumeric}
+% |\k@cgs@short@VacuumPermittivityNumeric| is the electric permittivity of the vacuum
+% in cgs units with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@VacuumPermittivityNumeric}{%
+\ensuremath{%
+7.96e-02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@VacuumPermittivityNumeric}
+% |\k@cgs@full@VacuumPermittivityNumeric| is the electric permittivity of the vacuum
+% in cgs units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@VacuumPermittivityNumeric}{%
+\ensuremath{%
+7.9577471546e-02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumPermittivityNumeric}
+% |\kVacuumPermittivityNumeric| is the electric permittivity of the vacuum.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
+\k@SI@short@VacuumPermittivityNumeric}
+\else
+\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
+\k@SI@full@VacuumPermittivityNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
+\k@cgs@short@VacuumPermittivityNumeric}
+\else
+\DeclareRobustCommand {\kVacuumPermittivityNumeric}{%
+\k@cgs@full@VacuumPermittivityNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@short@VacuumPermeability| is the magnetic permeability of the vacuum
% in SI units with reduced precision.
-% Source: CODATA~2018
+% Source: Calculated
%
% \begin{macrocode}
\DeclareRobustCommand{\k@SI@short@VacuumPermeability}{%
\ensuremath{%
-8.85%
-\times 10^{-12}\N\Amp^{-2}}}
+1.26%
+\times 10^{-6}\N\Amp^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -5055,18 +10981,19 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@full@VacuumPermeability| is the magnetic permeability of the vacuum in
% SI units with full precision.
-% Source: CODATA~2018
+% Source: Calculated
%
% \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}}}
+1.256\expandafter\physconst@decimalsseparator%
+637\expandafter\physconst@decimalsseparator%
+062\expandafter\physconst@decimalsseparator%
+1%
+\times 10^{-6}\N\Amp^{-2}}}
% \end{macrocode}
% \end{macro}
%
@@ -5077,9 +11004,10 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@short@VacuumPermeability| is the magnetic permeability of the vacuum
% in cgs units with reduced precision.
-% Source: CODATA~2018
+% Source: Calculated
%
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@short@VacuumPermeability}{%
@@ -5096,9 +11024,10 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@VacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@full@VacuumPermeability| is the magnetic permeability of the vacuum
% in cgs units with full precision.
-% Source: CODATA~2018
+% Source: Calculated
%
% \begin{macrocode}
\DeclareRobustCommand{\k@cgs@full@VacuumPermeability}{%
@@ -5118,6 +11047,7 @@
%<*package>
%\fi
% \begin{macro}{\kVacuumPermeability}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\kVacuumPermeability| is the magnetic permeability of the vacuum.
%
% \begin{macrocode}
@@ -5147,6 +11077,113 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@short@VacuumPermeabilityNumeric| is the magnetic permeability of the vacuum
+% in SI units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@VacuumPermeabilityNumeric}{%
+\ensuremath{%
+1.26e-06}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@full@VacuumPermeabilityNumeric| is the magnetic permeability of the vacuum in
+% SI units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@VacuumPermeabilityNumeric}{%
+\ensuremath{%
+1.2566370621e-06}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@short@VacuumPermeabilityNumeric| is the magnetic permeability of the vacuum
+% in cgs units with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@VacuumPermeabilityNumeric}{%
+\ensuremath{%
+1.26e+01}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@VacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@full@VacuumPermeabilityNumeric| is the magnetic permeability of the vacuum
+% in cgs units with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@VacuumPermeabilityNumeric}{%
+\ensuremath{%
+1.2566370614e+01}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumPermeabilityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\kVacuumPermeabilityNumeric| is the magnetic permeability of the vacuum.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
+\k@SI@short@VacuumPermeabilityNumeric}
+\else
+\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
+\k@SI@full@VacuumPermeabilityNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
+\k@cgs@short@VacuumPermeabilityNumeric}
+\else
+\DeclareRobustCommand {\kVacuumPermeabilityNumeric}{%
+\k@cgs@full@VacuumPermeabilityNumeric}
+\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.
@@ -5208,6 +11245,62 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@short@VacuumImpedanceNumeric}
+% |\k@short@VacuumImpedanceNumeric| is the characteristic impedance of the vacuum with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@VacuumImpedanceNumeric}{%
+\ensuremath{%
+3.77e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@VacuumImpedanceNumeric}
+% |\k@full@VacuumImpedanceNumeric| is the characteristic impedance of the vacuum with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@VacuumImpedanceNumeric}{%
+\ensuremath{%
+3.76730313668e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kVacuumImpedanceNumeric}
+% |\kVacuumImpedanceNumeric| is the characteristic impedance of the vacuum.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kVacuumImpedanceNumeric}{%
+\k@short@VacuumImpedanceNumeric}
+\else
+\DeclareRobustCommand {\kVacuumImpedanceNumeric}{%
+\k@full@VacuumImpedanceNumeric}
+\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.
@@ -5374,7 +11467,165 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@BoltzmannNumeric}
+% |\k@SI@short@BoltzmannNumeric| is the Boltzmann constant in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@BoltzmannNumeric}{%
+\ensuremath{%
+1.38e-23}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@BoltzmannNumeric}
+% |\k@SI@full@BoltzmannNumeric| is the Boltzmann constant in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@BoltzmannNumeric}{%
+\ensuremath{%
+1.380649e-23}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@BoltzmannNumeric}
+% |\k@cgs@short@BoltzmannNumeric| is the Boltzmann constant in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@BoltzmannNumeric}{%
+\ensuremath{%
+1.38e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@BoltzmannNumeric}
+% |\k@cgs@full@BoltzmannNumeric| is the Boltzmann constant in cgs units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@BoltzmannNumeric}{%
+\ensuremath{%
+1.380649e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@BoltzmannNumeric}
+% |\k@eV@short@BoltzmannNumeric| is the Boltzmann constant in eV with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@BoltzmannNumeric}{%
+\ensuremath{%
+8.62e-05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@BoltzmannNumeric}
+% |\k@eV@full@BoltzmannNumeric| is the Boltzmann constant in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@BoltzmannNumeric}{%
+\ensuremath{%
+8.617333e-05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kBoltzmannNumeric}
+% |\kBoltzmannNumeric| is the Boltzmann constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kBoltzmannNumeric}{%
+\k@SI@short@BoltzmannNumeric}
+\else
+\DeclareRobustCommand {\kBoltzmannNumeric}{%
+\k@SI@full@BoltzmannNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kBoltzmannNumeric}{%
+\k@cgs@short@BoltzmannNumeric}
+\else
+\DeclareRobustCommand {\kBoltzmannNumeric}{%
+\k@cgs@full@BoltzmannNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVBoltzmannNumeric}
+% |\keVBoltzmannNumeric| is the Boltzmann constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVBoltzmannNumeric}{%
+\k@eV@short@BoltzmannNumeric}
+\else
+\DeclareRobustCommand {\keVBoltzmannNumeric}{%
+\k@eV@full@BoltzmannNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@Planck| is the Planck constant in SI units with reduced
% precision.
% Source: CODATA~2018
@@ -5394,6 +11645,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@Planck| is the Planck constant in SI units with full precision.
% Source: CODATA~2018
%
@@ -5414,6 +11666,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@Planck| is the Planck constant in cgs units with reduced
% precision.
% Source: CODATA~2018
@@ -5433,6 +11686,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@Planck| is the Planck constant in cgs units with full precision.
% Source: CODATA~2018
%
@@ -5453,6 +11707,7 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@short@Planck| is the Planck constant in eV with reduced precision.
% Source: CODATA~2018
%
@@ -5471,6 +11726,7 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@Planck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@full@Planck| is the Planck constant in eV with full precision.
% Source: CODATA~2018
%
@@ -5491,6 +11747,7 @@
%<*package>
%\fi
% \begin{macro}{\kPlanck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\kPlanck| is the Planck constant.
%
% \begin{macrocode}
@@ -5521,6 +11778,7 @@
%<*package>
%\fi
% \begin{macro}{\keVPlanck}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\keVPlanck| is the Planck constant.
%
% \begin{macrocode}
@@ -5540,7 +11798,170 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@PlanckNumeric| is the Planck constant in SI units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@PlanckNumeric}{%
+\ensuremath{%
+6.63e-34}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@PlanckNumeric| is the Planck constant in SI units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@PlanckNumeric}{%
+\ensuremath{%
+6.62607015e-34}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@PlanckNumeric| is the Planck constant in cgs units with reduced
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@PlanckNumeric}{%
+\ensuremath{%
+6.63e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@PlanckNumeric| is the Planck constant in cgs units with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@PlanckNumeric}{%
+\ensuremath{%
+6.62607015e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@short@PlanckNumeric| is the Planck constant in eV with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@PlanckNumeric}{%
+\ensuremath{%
+4.14e-15}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@PlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@full@PlanckNumeric| is the Planck constant in eV with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@PlanckNumeric}{%
+\ensuremath{%
+4.13566770e-15}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\kPlanckNumeric| is the Planck constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckNumeric}{%
+\k@SI@short@PlanckNumeric}
+\else
+\DeclareRobustCommand {\kPlanckNumeric}{%
+\k@SI@full@PlanckNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckNumeric}{%
+\k@cgs@short@PlanckNumeric}
+\else
+\DeclareRobustCommand {\kPlanckNumeric}{%
+\k@cgs@full@PlanckNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVPlanckNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\keVPlanckNumeric| is the Planck constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVPlanckNumeric}{%
+\k@eV@short@PlanckNumeric}
+\else
+\DeclareRobustCommand {\keVPlanckNumeric}{%
+\k@eV@full@PlanckNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in SI units with reduced precision.
% Source: Calculated
@@ -5560,6 +11981,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@SI@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in SI units with full precision.
% Source: Calculated
@@ -5581,6 +12003,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in cgs units with reduced precision.
% Source: Calculated
@@ -5600,6 +12023,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@cgs@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in cgs units with full precision.
% Source: Calculated
@@ -5621,6 +12045,7 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@short@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@short@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in eV with reduced precision.
% Source: Calculated
@@ -5640,6 +12065,7 @@
%<*package>
%\fi
% \begin{macro}{\k@eV@full@PlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\k@eV@full@PlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$ in eV with full precision.
% Source: Calculated
@@ -5661,6 +12087,7 @@
%<*package>
%\fi
% \begin{macro}{\kPlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\kPlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$.
%
@@ -5692,6 +12119,7 @@
%<*package>
%\fi
% \begin{macro}{\keVPlanckReduced}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\keVPlanckReduced| is the Reduced Planck constant
% $\left(\frac{h}{2\pi}\right)$.
%
@@ -5712,7 +12140,176 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@PlanckReducedNumeric| 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@PlanckReducedNumeric}{%
+\ensuremath{%
+1.05e-34}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@PlanckReducedNumeric| 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@PlanckReducedNumeric}{%
+\ensuremath{%
+1.05457182e-34}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@PlanckReducedNumeric| 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@PlanckReducedNumeric}{%
+\ensuremath{%
+1.05e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@PlanckReducedNumeric| 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@PlanckReducedNumeric}{%
+\ensuremath{%
+1.05457182e-27}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@short@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@short@PlanckReducedNumeric| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@short@PlanckReducedNumeric}{%
+\ensuremath{%
+6.58e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@eV@full@PlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@eV@full@PlanckReducedNumeric| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$ in eV with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@eV@full@PlanckReducedNumeric}{%
+\ensuremath{%
+6.58211957e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kPlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\kPlanckReducedNumeric| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckReducedNumeric}{%
+\k@SI@short@PlanckReducedNumeric}
+\else
+\DeclareRobustCommand {\kPlanckReducedNumeric}{%
+\k@SI@full@PlanckReducedNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kPlanckReducedNumeric}{%
+\k@cgs@short@PlanckReducedNumeric}
+\else
+\DeclareRobustCommand {\kPlanckReducedNumeric}{%
+\k@cgs@full@PlanckReducedNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\keVPlanckReducedNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\keVPlanckReducedNumeric| is the Reduced Planck constant
+% $\left(\frac{h}{2\pi}\right)$.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\keVPlanckReducedNumeric}{%
+\k@eV@short@PlanckReducedNumeric}
+\else
+\DeclareRobustCommand {\keVPlanckReducedNumeric}{%
+\k@eV@full@PlanckReducedNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@short@Gravity| is Newton's gravitational constant in SI units with
% reduced precision.
% Source: CODATA~2018
@@ -5721,7 +12318,7 @@
\DeclareRobustCommand{\k@SI@short@Gravity}{%
\ensuremath{%
6.67%
-\times 10^{-15}\N\kg^{-2}\m^2}}
+\times 10^{-11}\N\kg^{-2}\m^2}}
% \end{macrocode}
% \end{macro}
%
@@ -5732,6 +12329,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@SI@full@Gravity| is Newton's gravitational constant in SI units with full
% precision.
% Source: CODATA~2018
@@ -5741,7 +12339,7 @@
\ensuremath{%
6.674\expandafter\physconst@decimalsseparator%
30%
-\times 10^{-15}\N\kg^{-2}\m^2}}
+\times 10^{-11}\N\kg^{-2}\m^2}}
% \end{macrocode}
% \end{macro}
%
@@ -5752,6 +12350,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@short@Gravity| is Newton's gravitational constant in cgs units with
% reduced precision.
% Source: CODATA~2018
@@ -5771,6 +12370,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@Gravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\k@cgs@full@Gravity| is Newton's gravitational constant in cgs units with
% full precision.
% Source: CODATA~2018
@@ -5791,6 +12391,7 @@
%<*package>
%\fi
% \begin{macro}{\kGravity}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
% |\kGravity| is Newton's gravitational constant.
%
% \begin{macrocode}
@@ -5820,7 +12421,115 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@short@GravityNumeric| is Newton's gravitational constant in SI units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@short@GravityNumeric}{%
+\ensuremath{%
+6.67e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@SI@full@GravityNumeric| is Newton's gravitational constant in SI units with full
+% precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@SI@full@GravityNumeric}{%
+\ensuremath{%
+6.67430e-11}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@short@GravityNumeric| is Newton's gravitational constant in cgs units with
+% reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@short@GravityNumeric}{%
+\ensuremath{%
+6.67e-08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@GravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\k@cgs@full@GravityNumeric| is Newton's gravitational constant in cgs units with
+% full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@cgs@full@GravityNumeric}{%
+\ensuremath{%
+6.67430e-08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kGravityNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix value of constant.}
+% |\kGravityNumeric| is Newton's gravitational constant.
+%
+% \begin{macrocode}
+\ifx\cgsunits\undefined
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kGravityNumeric}{%
+\k@SI@short@GravityNumeric}
+\else
+\DeclareRobustCommand {\kGravityNumeric}{%
+\k@SI@full@GravityNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kGravityNumeric}{%
+\k@cgs@short@GravityNumeric}
+\else
+\DeclareRobustCommand {\kGravityNumeric}{%
+\k@cgs@full@GravityNumeric}
+\fi
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
% \begin{macro}{\k@SI@short@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -5830,7 +12539,7 @@
\DeclareRobustCommand{\k@SI@short@StefanBoltzmann}{%
\ensuremath{%
5.67%
-\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
+\times 10^{-8}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
% \end{macrocode}
% \end{macro}
%
@@ -5841,6 +12550,7 @@
%<*package>
%\fi
% \begin{macro}{\k@SI@full@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -5851,7 +12561,7 @@
\ensuremath{%
5.670\expandafter\physconst@decimalsseparator%
374%
-\times 10^{-6}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
+\times 10^{-8}\J\Kelvin^{-4}\m^{-2}\Sec^{-1}}}
% \end{macrocode}
% \end{macro}
%
@@ -5862,6 +12572,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@short@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -5882,6 +12593,7 @@
%<*package>
%\fi
% \begin{macro}{\k@cgs@full@StefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\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.
@@ -5903,6 +12615,7 @@
%<*package>
%\fi
% \begin{macro}{\kStefanBoltzmann}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
% |\kStefanBoltzmann| is the Stefan-Boltzmann blackbody constant
% $\left(\frac{2\pi^5k_\mathrm{B}}{15h^3c^2}\right)$.
%
@@ -5933,6 +12646,118 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@short@StefanBoltzmannNumeric| 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@StefanBoltzmannNumeric}{%
+\ensuremath{%
+5.67e-08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@SI@full@StefanBoltzmannNumeric| 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@StefanBoltzmannNumeric}{%
+\ensuremath{%
+5.670374e-08}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@short@StefanBoltzmannNumeric| 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@StefanBoltzmannNumeric}{%
+\ensuremath{%
+5.67e-05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@StefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\k@cgs@full@StefanBoltzmannNumeric| 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@StefanBoltzmannNumeric}{%
+\ensuremath{%
+5.670374e-05}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kStefanBoltzmannNumeric}
+% \changes{v1.1.0}{2020/02/03}{Fix order of magnitude of constant.}
+% |\kStefanBoltzmannNumeric| 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 {\kStefanBoltzmannNumeric}{%
+\k@SI@short@StefanBoltzmannNumeric}
+\else
+\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
+\k@SI@full@StefanBoltzmannNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
+\k@cgs@short@StefanBoltzmannNumeric}
+\else
+\DeclareRobustCommand {\kStefanBoltzmannNumeric}{%
+\k@cgs@full@StefanBoltzmannNumeric}
+\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
@@ -6046,6 +12871,113 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@SI@short@RadiationNumeric}
+% |\k@SI@short@RadiationNumeric| 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@RadiationNumeric}{%
+\ensuremath{%
+7.57e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@SI@full@RadiationNumeric}
+% |\k@SI@full@RadiationNumeric| 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@RadiationNumeric}{%
+\ensuremath{%
+7.565733e-16}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@short@RadiationNumeric}
+% |\k@cgs@short@RadiationNumeric| 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@RadiationNumeric}{%
+\ensuremath{%
+7.57e-15}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@cgs@full@RadiationNumeric}
+% |\k@cgs@full@RadiationNumeric| 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@RadiationNumeric}{%
+\ensuremath{%
+7.565733e-15}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kRadiationNumeric}
+% |\kRadiationNumeric| 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 {\kRadiationNumeric}{%
+\k@SI@short@RadiationNumeric}
+\else
+\DeclareRobustCommand {\kRadiationNumeric}{%
+\k@SI@full@RadiationNumeric}
+\fi
+\else
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kRadiationNumeric}{%
+\k@cgs@short@RadiationNumeric}
+\else
+\DeclareRobustCommand {\kRadiationNumeric}{%
+\k@cgs@full@RadiationNumeric}
+\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.
@@ -6105,6 +13037,61 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@short@FineStructureNumeric}
+% |\k@short@FineStructureNumeric| is the fine structure constant with reduced
+% precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@FineStructureNumeric}{%
+\ensuremath{%
+7.30e-03}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@FineStructureNumeric}
+% |\k@full@FineStructureNumeric| is the fine structure constant with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@FineStructureNumeric}{%
+\ensuremath{%
+7.29735257e-03}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kFineStructureNumeric}
+% |\kFineStructureNumeric| is the fine structure constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kFineStructureNumeric}{%
+\k@short@FineStructureNumeric}
+\else
+\DeclareRobustCommand {\kFineStructureNumeric}{%
+\k@full@FineStructureNumeric}
+\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.
@@ -6165,6 +13152,62 @@
%\iffalse
%<*package>
%\fi
+% \begin{macro}{\k@short@FineStructureReciprocalNumeric}
+% |\k@short@FineStructureReciprocalNumeric| is the reciprocal of the fine structure
+% constant with reduced precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@FineStructureReciprocalNumeric}{%
+\ensuremath{%
+1.37e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@FineStructureReciprocalNumeric}
+% |\k@full@FineStructureReciprocalNumeric| is the reciprocal of the fine structure
+% constant with full precision.
+% Source: Calculated
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@FineStructureReciprocalNumeric}{%
+\ensuremath{%
+1.37035999e+02}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kFineStructureReciprocalNumeric}
+% |\kFineStructureReciprocalNumeric| is the reciprocal of the fine structure constant.
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kFineStructureReciprocalNumeric}{%
+\k@short@FineStructureReciprocalNumeric}
+\else
+\DeclareRobustCommand {\kFineStructureReciprocalNumeric}{%
+\k@full@FineStructureReciprocalNumeric}
+\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.
@@ -6222,6 +13265,62 @@
%\iffalse
%</package>
%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@short@AvogadroNumeric}
+% |\k@short@AvogadroNumeric| is Avogadro's Number (the number of particles in a mole)
+% with reduced precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@short@AvogadroNumeric}{%
+\ensuremath{%
+6.02e+23}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\k@full@AvogadroNumeric}
+% |\k@full@AvogadroNumeric| is Avogadro's Number (the number of particles in a mole)
+% with full precision.
+% Source: CODATA~2018
+%
+% \begin{macrocode}
+\DeclareRobustCommand{\k@full@AvogadroNumeric}{%
+\ensuremath{%
+6.02240760e+23}}
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
+%\iffalse
+%<*package>
+%\fi
+% \begin{macro}{\kAvogadroNumeric}
+% |\kAvogadroNumeric| is Avogadro's Number (the number of particles in a mole).
+%
+% \begin{macrocode}
+\ifx\shortconst\undefined
+\DeclareRobustCommand {\kAvogadroNumeric}{%
+\k@short@AvogadroNumeric}
+\else
+\DeclareRobustCommand {\kAvogadroNumeric}{%
+\k@full@AvogadroNumeric}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%\iffalse
+%</package>
+%\fi
% \CheckSum{0}
% \Finale
\makeatother
diff --git a/macros/latex/contrib/physconst/physconst.pdf b/macros/latex/contrib/physconst/physconst.pdf
index 67867850bc..ead2ea8bc7 100644
--- a/macros/latex/contrib/physconst/physconst.pdf
+++ b/macros/latex/contrib/physconst/physconst.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/README.md b/macros/latex/contrib/thuthesis/README.md
index 3691ac56b6..7c09042602 100644
--- a/macros/latex/contrib/thuthesis/README.md
+++ b/macros/latex/contrib/thuthesis/README.md
@@ -6,15 +6,15 @@
[![CTAN](https://img.shields.io/ctan/v/thuthesis)](https://www.ctan.org/pkg/thuthesis)
# What's ThuThesis?
-ThuThesis is an abbreviation of <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template.
+**ThuThesis** is an abbreviation of **T**sing**h**ua **U**niversity **Thesis** LaTeX Template.
This package establishes a simple and easy-to-use LaTeX template for Tsinghua dissertations, including general undergraduate research papers, masters theses, doctoral dissertations, and postdoctoral reports. An English translation of this README follows the Chinese below.
-# ThuThesis是什么?
-ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Template之缩写。
+# ThuThesis 是什么?
+**ThuThesis** 是 **T**sing**h**ua **U**niversity **Thesis** LaTeX Template 的缩写。
-此宏包旨在建立一个简单易用的清华大学学位论文LaTeX模板,包括本科综合论文训练、硕士论文、博士论文以及博士后出站报告。
+此宏包旨在建立一个简单易用的清华大学学位论文 LaTeX 模板,包括本科综合论文训练、硕士论文、博士论文以及博士后出站报告。
# 文档
请[下载](https://github.com/xueruini/thuthesis/releases)模板,里面包括具体使用说明以及示例文档:
@@ -31,9 +31,11 @@ ThuThesis为 <b>T</b>sing<b>h</b>ua <b>U</b>niversity <b>Thesis</b> LaTeX Templa
通过 TeX 发行版工具自动从 [CTAN](https://www.ctan.org/pkg/thuthesis) 更新。
## 手动更新
-从 [GitHub](https://github.com/xueruini/thuthesis) 下载放入论文目录,执行命令(Windows 用户在文件夹空白处按`Shift+鼠标右键`,点击“在此处打开命令行窗口”):
+从 [GitHub](https://github.com/xueruini/thuthesis) 下载放入论文目录,执行命令(Windows 用户在文件夹空白处按 `Shift + 鼠标右键`,点击“在此处打开命令行窗口”):
- xetex thuthesis.ins
+```shell
+xetex thuthesis.ins
+```
即可得到 `thuthesis.cls` 等模板文件。
@@ -58,6 +60,8 @@ make [{all|thesis|spine|doc|clean|cleanall|distclean}]
* `make cleanall` 删除示例文件的中间文件和 main.pdf;
* `make distclean` 删除示例文件和模板的所有中间文件和 PDF。
+---
+
# Documentation
Download and unzip the template. Specific usage documentation and examples can be found in the files below. At present, these documents are <b>only available in Chinese</b>:
* Template usage (thuthesis.pdf)
@@ -69,12 +73,14 @@ Download and unzip the template. Specific usage documentation and examples can b
# Updates
## Automatic
-Get the most up-to-date published version of the TeX tools from [CTAN](https://www.ctan.org/pkg/thuthesis).
+Get the most up-to-date published version with your TeX distribution from [CTAN](https://www.ctan.org/pkg/thuthesis).
## Manual
-Download the package from [GitHub](https://github.com/xueruini/thuthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here from the popup menu"):
+Download the package from [GitHub](https://github.com/xueruini/thuthesis) to the root directory of your thesis, then execute the command (Windows users `Shift + right click` white area in the file window and click "Open command line window here" from the popup menu):
- xetex thuthesis.ins
+```shell
+xetex thuthesis.ins
+```
You'll get `thuthesis.cls` along with other template files.
diff --git a/macros/latex/contrib/thuthesis/data/denotation.tex b/macros/latex/contrib/thuthesis/data/denotation.tex
index aeefccbf9a..962c6bb444 100644
--- a/macros/latex/contrib/thuthesis/data/denotation.tex
+++ b/macros/latex/contrib/thuthesis/data/denotation.tex
@@ -12,7 +12,7 @@
\item[MPBI] 聚苯并咪唑模型化合物,N-苯基苯并咪唑
\item[PY] 聚吡咙
\item[PMDA-BDA] 均苯四酸二酐与联苯四胺合成的聚吡咙薄膜
-\item[$\Delta G$] 活化自由能 (Activation Free Energy)
+\item[$\increment G$] 活化自由能 (Activation Free Energy)
\item[$\chi$] 传输系数 (Transmission Coefficient)
\item[$E$] 能量
\item[$m$] 质量
@@ -49,7 +49,7 @@
% \nomenclature{MPBI}{聚苯并咪唑模型化合物,N-苯基苯并咪唑}
% \nomenclature{PY}{聚吡咙}
% \nomenclature{PMDA-BDA}{均苯四酸二酐与联苯四胺合成的聚吡咙薄膜}
-% \nomenclature{$\Delta G$}{活化自由能 (Activation Free Energy)}
+% \nomenclature{$\increment G$}{活化自由能 (Activation Free Energy)}
% \nomenclature{$\chi$}{传输系数 (Transmission Coefficient)}
% \nomenclature{$E$}{能量}
% \nomenclature{$m$}{质量}
diff --git a/macros/latex/contrib/thuthesis/main.pdf b/macros/latex/contrib/thuthesis/main.pdf
index 25ebfc5702..9ed6f02a7a 100644
--- a/macros/latex/contrib/thuthesis/main.pdf
+++ b/macros/latex/contrib/thuthesis/main.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/main.tex b/macros/latex/contrib/thuthesis/main.tex
index aa45220054..a84e0b479e 100644
--- a/macros/latex/contrib/thuthesis/main.tex
+++ b/macros/latex/contrib/thuthesis/main.tex
@@ -2,7 +2,7 @@
% !TeX program = xelatex
% !TeX spellcheck = en_US
-\documentclass[fontset=windows,degree=master]{thuthesis}
+\documentclass[degree=master,fontset=windows]{thuthesis}
% 学位 degree:
% doctor | master | bachelor | postdoc
% 学位类型 degree-type:
diff --git a/macros/latex/contrib/thuthesis/ref/appendix.bib b/macros/latex/contrib/thuthesis/ref/appendix.bib
index 4fbfb750fc..1e4cc0daef 100644
--- a/macros/latex/contrib/thuthesis/ref/appendix.bib
+++ b/macros/latex/contrib/thuthesis/ref/appendix.bib
@@ -1,14 +1,14 @@
@book{abrahams99tex,
- author = {Paul W. Abrahams and Karl Berry and Kathryn A. Hargreaves},
- title = {{\TeX} for the Impatient},
- publisher = {Addison-Wesley},
- year = {1990},
+ author = {Paul W. Abrahams and Karl Berry and Kathryn A. Hargreaves},
+ title = {{\TeX} for the Impatient},
+ publisher = {Addison-Wesley},
+ year = 1990,
}
@incollection{salomon1995advanced,
- author = {David Salomon},
- title = {The advanced {\TeX}book},
- address = {New York},
- publisher = {Springer},
- year = {1995},
+ author = {David Salomon},
+ title = {The advanced {\TeX}book},
+ address = {New York},
+ publisher = {Springer},
+ year = 1995,
}
diff --git a/macros/latex/contrib/thuthesis/ref/refs.bib b/macros/latex/contrib/thuthesis/ref/refs.bib
index f9d99381e7..120569caab 100644
--- a/macros/latex/contrib/thuthesis/ref/refs.bib
+++ b/macros/latex/contrib/thuthesis/ref/refs.bib
@@ -1,113 +1,113 @@
@book{IEEE-1363,
- author = {{IEEE Std 1363-2000}},
- title = {{IEEE} Standard Specifications for Public-Key Cryptography},
- address = {New York},
- publisher = {IEEE},
- year = 2000
+ author = {{IEEE Std 1363-2000}},
+ title = {{IEEE} Standard Specifications for Public-Key Cryptography},
+ address = {New York},
+ publisher = {IEEE},
+ year = 2000
}
@inproceedings{kocher99,
- author = {C. Kocher and J. Jaffe and B. Jun},
- title = {Differential Power Analysis},
- editor = {M. Wiener},
- booktitle = {Advances in Cryptology ({CRYPTO}~'99)},
- series = {Lecture Notes in Computer Science},
- volume = 1666,
- pages = {388-397},
- publisher = {Springer-Verlag},
- address = {Germany},
- month = {August},
- year = 1999
+ author = {C. Kocher and J. Jaffe and B. Jun},
+ title = {Differential Power Analysis},
+ editor = {M. Wiener},
+ booktitle = {Advances in Cryptology ({CRYPTO}~'99)},
+ series = {Lecture Notes in Computer Science},
+ volume = 1666,
+ pages = {388-397},
+ publisher = {Springer-Verlag},
+ address = {Germany},
+ month = {August},
+ year = 1999
}
@incollection{Krasnogor2004e,
- author = {N. Krasnogor},
- title = {Towards robust memetic algorithms},
- booktitle = {Recent Advances in Memetic Algorithms},
- publisher = {Springer Berlin Heidelberg},
- year = 2004,
- pages = {185-207},
- editor = {W.E. Hart and N. Krasnogor and J.E. Smith},
- volume = 166,
- series = {Studies in Fuzziness and Soft Computing},
- address = {New York},
+ author = {N. Krasnogor},
+ title = {Towards robust memetic algorithms},
+ booktitle = {Recent Advances in Memetic Algorithms},
+ publisher = {Springer Berlin Heidelberg},
+ year = 2004,
+ pages = {185-207},
+ editor = {W.E. Hart and N. Krasnogor and J.E. Smith},
+ volume = 166,
+ series = {Studies in Fuzziness and Soft Computing},
+ address = {New York},
}
@incollection{zjsw,
- author = {班固},
- title = {苏武传},
- booktitle = {传记散文英华},
- publisher = {湖北人民出版社},
- year = 1998,
- pages = {65-69},
- editor = {郑在瀛 and 汪超宏 and 周文复},
- volume = 2,
- series = {新古文观止丛书},
- address = {武汉},
+ author = {班固},
+ title = {苏武传},
+ booktitle = {传记散文英华},
+ publisher = {湖北人民出版社},
+ year = 1998,
+ pages = {65-69},
+ editor = {郑在瀛 and 汪超宏 and 周文复},
+ volume = 2,
+ series = {新古文观止丛书},
+ address = {武汉},
}
@inbook{clzs,
- author = {阎真},
- title = {沧浪之水},
- chapter = {大人物还是讲人情的},
- pages = {185-207},
- publisher = {人民文学出版社},
- address = {北京},
- year = 2001,
+ author = {阎真},
+ title = {沧浪之水},
+ chapter = {大人物还是讲人情的},
+ pages = {185-207},
+ publisher = {人民文学出版社},
+ address = {北京},
+ year = 2001,
}
@book{tex,
- author = "Donald E. Knuth",
- title = "The {\TeX}book",
- publisher = "Addison-Wesley Publishing Company",
- address = "Reading, MA",
- year = 1989,
- edition = "15th",
+ author = "Donald E. Knuth",
+ title = "The {\TeX}book",
+ publisher = "Addison-Wesley Publishing Company",
+ address = "Reading, MA",
+ year = 1989,
+ edition = "15th",
}
@book{companion,
- author = "Michel Goosens and Frank Mittelbach and Alexander Samarin",
- title = "The {\LaTeX} Companion",
- publisher = "Addison-Wesley Publishing Company",
- address = "Reading, MA",
- PAGES = "112--125",
- year = 1994,
+ author = "Michel Goosens and Frank Mittelbach and Alexander Samarin",
+ title = "The {\LaTeX} Companion",
+ publisher = "Addison-Wesley Publishing Company",
+ address = "Reading, MA",
+ PAGES = "112--125",
+ year = 1994,
}
@article{ELIDRISSI94,
- author = "{Chafik El Idrissi}, M. and {Roney}, A. and {Frigon}, C. and
- {Larzilli{\`e}re}, M.",
- title = "Measurements of total kinetic-energy released to the {$N=2$}
- dissociation limit of {H}$_2$ --- evidence of the dissociation
- of very high vibrational {R}ydberg states of {H}$_2$ by
- doubly-excited states",
- journal = "Chemical Physics Letters",
- pages = "260-266",
- volume = 224,
- number = 10,
- year = 1994,
+ author = "{Chafik El Idrissi}, M. and {Roney}, A. and {Frigon}, C.
+ and {Larzilli{\`e}re}, M.",
+ title = "Measurements of total kinetic-energy released to the
+ {$N=2$} dissociation limit of {H}$_2$ --- evidence of the
+ dissociation of very high vibrational {R}ydberg states of
+ {H}$_2$ by doubly-excited states",
+ journal = "Chemical Physics Letters",
+ pages = "260-266",
+ volume = 224,
+ number = 10,
+ year = 1994,
}
@article{MELLINGER96,
- author = "Mellinger, A. and Vidal, C. R. and Jungen, Ch.",
- title = "Laser reduced fluorescence study of the carbon-monoxide nd
+ author = "Mellinger, A. and Vidal, C. R. and Jungen, Ch.",
+ title = "Laser reduced fluorescence study of the carbon-monoxide nd
triplet {R}ydberg series-experimental results and multichannel
quantum-defect analysis",
- journal = "J. Chem. Phys.",
- pages = "8913-8921",
- volume = 104,
- number = 5,
- year = 1996,
+ journal = "J. Chem. Phys.",
+ pages = "8913-8921",
+ volume = 104,
+ number = 5,
+ year = 1996,
}
@article{SHELL02,
- author = "Michael Shell",
- title = "How to Use the {IEEEtran \LaTeX} Class",
- journal = "Journal of {\LaTeX} Class Files",
- year = 2002,
- volume = 12,
- number = 4,
- pages = "100--120"
+ author = "Michael Shell",
+ title = "How to Use the {IEEEtran \LaTeX} Class",
+ journal = "Journal of {\LaTeX} Class Files",
+ year = 2002,
+ volume = 12,
+ number = 4,
+ pages = "100--120"
}
@TechReport{NPB2,
@@ -121,35 +121,35 @@
}
@inproceedings{DPMG,
- author = {Kim, Sangbum and Woo, Namyoon and Yeom, Heon Y. and Park,
+ author = {Kim, Sangbum and Woo, Namyoon and Yeom, Heon Y. and Park,
Taesoon and Park, Hyoungwoo},
- title = {Design and {I}mplementation of {D}ynamic {P}rocess
+ title = {Design and {I}mplementation of {D}ynamic {P}rocess
{M}anagement for {G}rid-enabled {MPICH}},
- booktitle = {the 10th European PVM/MPI Users' Group Conference},
- editor = {Jack Dongarra and Domenico Laforenza and Salvatore Orlando},
- publisher = {Springer-Verlag},
- year = 2003,
- address = {Venice, Italy},
- month = sep,
+ booktitle = {the 10th European PVM/MPI Users' Group Conference},
+ editor = {Jack Dongarra and Domenico Laforenza and Salvatore Orlando},
+ publisher = {Springer-Verlag},
+ year = 2003,
+ address = {Venice, Italy},
+ month = sep,
}
@inproceedings{cnproceed,
- author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
- publisher = {金大庸},
- title = {武林高手从入门到精通},
- booktitle = {第~$N$~次华山论剑},
- year = 2006,
- address = {西安, 中国},
- month = sep,
+ author = {王重阳 and 黄药师 and 欧阳峰 and 洪七公 and 段皇帝},
+ publisher = {金大庸},
+ title = {武林高手从入门到精通},
+ booktitle = {第~$N$~次华山论剑},
+ year = 2006,
+ address = {西安, 中国},
+ month = sep,
}
@article{cnarticle,
- author = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
- title = "论刘姥姥食量大如牛之现实意义",
- journal = "红楼梦杂谈",
- pages = "260--266",
- volume = 224,
- year = 1800,
+ author = "贾宝玉 and 林黛玉 and 薛宝钗 and 贾探春",
+ title = "论刘姥姥食量大如牛之现实意义",
+ journal = "红楼梦杂谈",
+ pages = "260--266",
+ volume = 224,
+ year = 1800,
}
@mastersthesis{zhubajie,
@@ -187,37 +187,36 @@
}
@inbook{ColdSources,
- author = {P. Gr{\"o}ning and L. Nilsson and P. Ruffieux and R.
+ author = {P. Gr{\"o}ning and L. Nilsson and P. Ruffieux and R.
Clergereaux and O. Gr{\"o}ning},
- title = {Encyclopedia of Nanoscience and Nanotechnology},
- pages = {547--579},
- publisher = {American Scientific Publishers},
- year = 2004,
- volume = 1,
- address = {USA},
+ title = {Encyclopedia of Nanoscience and Nanotechnology},
+ pages = {547--579},
+ publisher = {American Scientific Publishers},
+ year = 2004,
+ volume = 1,
+ address = {USA},
}
@online{chuban2001,
- author = {萧钰},
- title = {出版业信息化迈入快车道},
- date = {2001-12-19},
- urldate = {2002-04-15},
- url = {http://www.creader.com/news/200112190019.htm},
+ author = {萧钰},
+ title = {出版业信息化迈入快车道},
+ date = {2001-12-19},
+ urldate = {2002-04-15},
+ url = {http://www.creader.com/news/200112190019.htm},
}
@online{oclc2000,
- author = {{Online Computer Library Center, Inc.}},
- title = {History of {OCLC}},
- year = 2000,
- urldate = {2000-01-08},
- url = {http://www.oclc.org/about/history/default.htm},
+ author = {{Online Computer Library Center, Inc.}},
+ title = {History of {OCLC}},
+ year = 2000,
+ urldate = {2000-01-08},
+ url = {http://www.oclc.org/about/history/default.htm},
}
-
@online{thuthesis,
- author = {薛瑞尼},
- title = {ThuThesis: 清华大学学位论文模板},
- urldate = {2019-04-27},
- url = {https://github.com/xueruini/thuthesis},
- year = 2017,
+ author = {薛瑞尼},
+ title = {ThuThesis: 清华大学学位论文模板},
+ urldate = {2019-04-27},
+ url = {https://github.com/xueruini/thuthesis},
+ year = 2017,
}
diff --git a/macros/latex/contrib/thuthesis/spine.pdf b/macros/latex/contrib/thuthesis/spine.pdf
index 714858ee1d..c8f7d1468c 100644
--- a/macros/latex/contrib/thuthesis/spine.pdf
+++ b/macros/latex/contrib/thuthesis/spine.pdf
Binary files differ
diff --git a/macros/latex/contrib/thuthesis/thuthesis.dtx b/macros/latex/contrib/thuthesis/thuthesis.dtx
index 231655c9da..df09334781 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.dtx
+++ b/macros/latex/contrib/thuthesis/thuthesis.dtx
@@ -16,7 +16,7 @@
%
% \iffalse
%<*driver>
-\ProvidesFile{thuthesis.dtx}[2020/01/06 6.0.0 Tsinghua University Thesis Template]
+\ProvidesFile{thuthesis.dtx}[2020/02/03 6.0.1 Tsinghua University Thesis Template]
\documentclass{ltxdoc}
\usepackage{dtx-style}
@@ -150,6 +150,7 @@
% thuthesis.cls & 模板类文件\\
% thuthesis-numeric.bst & 参考文献样式文件\\
% thuthesis-author-year.bst & 参考文献样式文件\\
+% thuthesis-bachelor.bst & 参考文献样式文件\\
% tsinghua.pdf & 校名 logo,系统无隶书字体时使用 \\\midrule
% main.tex & 示例文档主文件\\
% spine.tex & 书脊示例文档\\
@@ -929,7 +930,7 @@
% \begin{macrocode}
%<cls>\NeedsTeXFormat{LaTeX2e}
%<cls>\ProvidesClass{thuthesis}
-%<cls>[2020/01/06 6.0.0 Tsinghua University Thesis Template]
+%<cls>[2020/02/03 6.0.1 Tsinghua University Thesis Template]
% \end{macrocode}
%
% 检查编译引擎,要求使用 \XeLaTeX。
@@ -945,7 +946,7 @@
%<*cls>
\hyphenation{Thu-Thesis}
\def\thuthesis{ThuThesis}
-\def\version{6.0.0}
+\def\version{6.0.1}
\RequirePackage{kvdefinekeys}
\RequirePackage{kvsetkeys}
\RequirePackage{kvoptions}
@@ -2071,6 +2072,7 @@
% 正体会到 \TeX{} macro 的力量!
% \begin{macrocode}
\newcommand\thu@pdfbookmark[2]{}
+\newcommand\thu@phantomsection{}
\NewDocumentCommand\thu@chapter{s o m o}{
\IfBooleanF{#1}{%
\ClassError{thuthesis}{You have to use the star form: \string\thu@chapter*}{}
@@ -2080,21 +2082,25 @@
\ifthenelse{\equal{#2}{}}{%
\thu@pdfbookmark{0}{#3}%
}{%
- \addcontentsline{toc}{chapter}{#3}
- }
+ \thu@phantomsection
+ \addcontentsline{toc}{chapter}{#3}%
+ }%
}{%
- \addcontentsline{toc}{chapter}{#3}
+ \thu@phantomsection
+ \addcontentsline{toc}{chapter}{#3}%
}%
- \ifthu@degree@bachelor \ctexset{chapter/beforeskip=25bp} \fi
+ \ifthu@degree@bachelor\ctexset{chapter/beforeskip=25bp}\fi
\chapter*{#3}%
- \ifthu@degree@bachelor \ctexset{chapter/beforeskip=15bp} \fi
+ \ifthu@degree@bachelor\ctexset{chapter/beforeskip=15bp}\fi
\IfValueTF{#4}{%
- \ifthenelse{\equal{#4}{}}
- {\@mkboth{}{}}
- {\@mkboth{#4}{#4}}
+ \ifthenelse{\equal{#4}{}}{%
+ \@mkboth{}{}%
+ }{%
+ \@mkboth{#4}{#4}%
+ }%
}{%
- \@mkboth{#3}{#3}
- }
+ \@mkboth{#3}{#3}%
+ }%
}
% \end{macrocode}
% \end{macro}
@@ -3378,6 +3384,7 @@
\thu@atendpackage{hyperref}{
\hypersetup{
linktoc = all,
+ bookmarksdepth = 2,
bookmarksnumbered = true,
bookmarksopen = true,
bookmarksopenlevel = 1,
@@ -3393,6 +3400,9 @@
\stepcounter{thu@bookmark}%
\pdfbookmark[#1]{#2}{thuchapter.\thethu@bookmark}%
}
+ \renewcommand\thu@phantomsection{%
+ \phantomsection
+ }
\pdfstringdefDisableCommands{
\let\\\@empty
\let\hspace\@gobble
diff --git a/macros/latex/contrib/thuthesis/thuthesis.pdf b/macros/latex/contrib/thuthesis/thuthesis.pdf
index 6be654adc5..7e7cf172cc 100644
--- a/macros/latex/contrib/thuthesis/thuthesis.pdf
+++ b/macros/latex/contrib/thuthesis/thuthesis.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/README.md b/macros/latex/required/babel/base/README.md
index f312923fba..897bbee2be 100644
--- a/macros/latex/required/babel/base/README.md
+++ b/macros/latex/required/babel/base/README.md
@@ -1,4 +1,4 @@
-## Babel 3.38
+## Babel 3.39
This package manages culturally-determined typographical (and other)
rules, and hyphenation patterns for a wide range of languages. Many
@@ -7,22 +7,15 @@ lualatex out of the box. A few even work with plain formats.
The latest stable version is available on <https://ctan.org/pkg/babel>.
-Languages are not part of the Babel core any more; in particular, it
-shall be no longer necessary to synchronize Babel core releases with
-releases of Babel language files. See CONTRIB for further details
-about contributing a language. You may also create an ini file or
-improve the existing ones -- it's a trivial task (no programming
-skills required at all), but don't hesitate to ask for help.
+Changes in version 3.39 are described in:
+
+https://github.com/latex3/babel/wiki/What's-new-in-babel-3.39
Included is a set of ini files for about 200 languages.
The best way to install and/or update it is with the help of package
managers.
-Changes are described in babel.pdf with the label "New <version>". The
-manual has been expanded to include some tips and tricks, but it will
-be improved in next releases.
-
### Reporting Bugs
If you wish to report a problem or bug in any of these packages please
@@ -51,14 +44,27 @@ respective authors.
### Latest changes
```
+3.39 2020-02-03
+ - Languages can now be loaded on the fly (via \babelprovide).
+ - With \babelposthyphenation captured chars can now be mapped in
+ the replacement (lua).
+ - \babelcharproperty can be used to assign specific chars to a
+ locale (lua).
+ - Fixes:
+ - Sichuan Yi: line breaking was not activated (lua).
+ - Hyphenation was not always applied with onchar (lua).
+ - bidi=basic-l/basic-r where not activated correctly (xe).
+ - Thai and turkish raised and error without import in
+ \babelprovide.
+ - Cleaned up some ini/tex locale files (de, zh, sa).
+
3.38 2020-01-15
- Automatic switching of ids (\language and \localeid), and fonts
- based on script blocks (lua).s
+ based on script blocks (lua).
- New macro - \localeinfo, to access the basic data in the ini
file loaded by languages.
See https://github.com/latex3/babel/wiki/What's-new-in-babel-3.38
-
-
+
3.37 2019-12-08
- Preliminary code for non-standard hyphenation, like ff ->
ff-f (lua).
diff --git a/macros/latex/required/babel/base/babel.dtx b/macros/latex/required/babel/base/babel.dtx
index 0d4360f493..d0a6314f27 100644
--- a/macros/latex/required/babel/base/babel.dtx
+++ b/macros/latex/required/babel/base/babel.dtx
@@ -1,7 +1,7 @@
% \iffalse
% This document requires lualatex
%%
-%% Copyright (C) 2012-2019 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2020 Javier Bezos and Johannes L. Braams.
%% Copyright (C) 1989-2012 Johannes L. Braams and
%% any individual authors listed elsewhere in this file.
%% All rights reserved.
@@ -31,7 +31,7 @@
%
% \iffalse
%<*filedriver>
-\ProvidesFile{babel.dtx}[2020/01/15 v3.38 The Babel package]
+\ProvidesFile{babel.dtx}[2020/02/03 v3.39 The Babel package]
\documentclass{ltxdoc}
\GetFileInfo{babel.dtx}
\usepackage{fontspec}
@@ -235,21 +235,25 @@ Xe\largetex
\part{User guide}
\begin{itemize}
-\item This user guide focuses on \LaTeX. There are also some notes on
- its use with Plain \TeX.
+\item This user guide focuses on internationalization and localization
+ with \LaTeX. There are also some notes on its use with Plain \TeX.
\item Changes and new features with relation to version 3.8 are
- highlighted with \New{X.XX}\hspace{-.5em}. The most recent features
+ highlighted with \New{X.XX}\hspace{-.5em}, and there are some notes
+ for the latest versions in
+ \href{https://github.com/latex3/babel/wiki}{the \babel{} wiki}.
+ The most recent features
could be still unstable. Please, report any issues you find in
- \texttt{https://github.com/latex3/babel/issues}, which is better
+ \href{https://github.com/latex3/babel/issues}{GitHub}, which is better
than just complaining on an e-mail list or a web forum.
\item If you are interested in the \TeX{} multilingual support, please
- join the \textsf{kadingira} list on
- \texttt{http://tug.org/mailman/listinfo/kadingira}. You can follow
+ join the \href{http://tug.org/mailman/listinfo/kadingira}{kadingira
+ mail list}. You can follow
the development of \babel{} in
- \texttt{https://github.com/latex3/babel} (which provides some sample
- files, too).
+ \href{https://github.com/latex3/babel}{GitHub} (which provides many
+ \href{https://github.com/latex3/babel/tree/master/samples}{sample
+ files}, too).
\item See section \ref{contribute} for contributing a language.
@@ -492,6 +496,40 @@ _\usepackage[vietnamese,danish]{babel}_
\end{verbatim}
\end{example}
+\subsection{Mostly monolingual documents}
+
+\New{3.39} Very often, multilingual documents consist of a main
+language with small pieces of text in another languages (words, idioms,
+short sentences). Typically, all you need is to set the line breaking
+rules and, perhaps, the font. In such a case, \babel{} now does not
+require declaring these secondary languages explicitly, because the
+basic settings are loaded on the fly when the language is selected (and
+also when provided in the optional argument of |\babelfont|, if used.)
+
+This is particularly useful, too, when there are short texts of this
+kind coming from an external source whose contents are not known on
+beforehand (for example, titles in a bibliography). At this regard, it
+is worth remembering that |\babelfont| does not load any font until
+required, so that it can be used just in case.
+
+\begin{example}
+ A trivial document is:
+\setengine{luatex/xetex}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[english]{babel}
+
+\babelfont[russian]{rm}{FreeSerif}
+
+\begin{document}
+
+English. \foreignlanguage{russian}{Русский}.
+\foreignlanguage{spanish}{Español}
+
+\end{document}
+\end{verbatim}
+\end{example}
+
\subsection{Modifiers}
\New{3.9c} The basic behavior of some languages can be modified when
@@ -541,6 +579,7 @@ modifiers are a more general mechanism.
cases, the error vanishes when the document is typeset again, but in
more severe ones you will need to remove the |aux| file.
\end{itemize}
+
\subsection{Plain}
In Plain, load languages styles with |\input| and then use
@@ -1188,9 +1227,17 @@ be the same as the option name as set in |\usepackage|!).
\subsection{\texttt{ini} files}
-An alternative approach to define a language is by means of an
-\texttt{ini} file. Currently \babel{} provides about 200 of these
-files containing the basic data required for a language.
+An alternative approach to define a language (or, more precisely, a
+\textit{locale}) is by means of an \texttt{ini} file. Currently
+\babel{} provides about 200 of these files containing the basic data
+required for a locale.
+
+|ini| files are not meant only for \babel, and they has been devised as
+a resource for other packages. To easy interoperability between \TeX{}
+and other systems, they are identified with the BCP 47 codes as
+preferred by the Unicode Common Language Data Repository, which was
+used as source for most of the data provided by these files, too (the
+main exception being the |\...name| strings).
Most of them set the date, and many also the captions (Unicode and
LICR). They will be evolving with the time to add more features
@@ -1280,6 +1327,19 @@ loads \textsf{luatexja}:
\end{description}
\end{note}
+\begin{note}
+ Wikipedia defines a \textit{locale} as follows: “In computing, a
+ locale is a set of parameters that defines the user’s language,
+ region and any special variant preferences that the user wants to see
+ in their user interface. Usually a locale identifier consists of at
+ least a language code and a country/region code.” \Babel{} is moving
+ gradually from the old and fuzzy concept of \textit{language} to the
+ more modern of \textit{locale}. Note each locale is by itself a
+ separate “language”, which explains why there are so many files. This
+ is on purpose, so that possible variants can be created and/or
+ redefined easily.
+\end{note}
+
Here is the list (u means Unicode captions, and l means LICR
captions):
@@ -1891,6 +1951,26 @@ zulu
\endgroup
\hrule
+\bigskip
+
+\textbf{Modifying and adding values to |ini| files}
+
+\New{3.39} There is a way to modify the values of |ini| files when they
+get loaded with |\babelprovide| and |import|. To set, say,
+|digits.native| in the |numbers| section, use something like
+|numbers/digits.native=abcdefghij|. Keys may be added, too. Without
+|import| you may modify the identification keys.
+
+This can be used to create private variants easily. All you need is to
+import the same |ini| file with a different locale name and different
+parameters.
+
+% \begin{example}
+% Let's assume you need only the basic features of `spanish`, so that
+% the |ini| file is enough, and also a variant with your own
+% hyphenation with
+% \end{example}
+
\subsection{Selecting fonts}
\New{3.15} Babel provides a high level interface on top of |fontspec|
@@ -1988,22 +2068,18 @@ to select fonts in addition to the three basic families.
\babelfont[hindi]{rm}{Shobhika}
\end{verbatim}
This makes sure the OpenType script for Devanagari is |deva| and not
- |dev2| (\luatex{} does not detect automatically the correct
- script\footnote{And even with the correct code some fonts could be
- rendered incorrectly by \textsf{fontspec}, so double-check the
- results. \xetex{} fares better, but some fonts are still
- problematic.}). You may also pass some options to \textsf{fontspec}:
- with |silent|, the warnings about unavailable scripts or languages
- are not shown (they are only really useful when the document format
- is being set up).
+ |dev2|, in case it is not detected correctly. You may also pass some
+ options to \textsf{fontspec}: with |silent|, the warnings about
+ unavailable scripts or languages are not shown (they are only really
+ useful when the document format is being set up).
\end{note}
\begin{note}
Directionality is a property affecting margins, indentation, column
- order, etc., not just text. Therefore, it is under the direct
- control of the language, which applies both the script and the
- direction to the text. As a consequence, there is no need to set
- \texttt{Script} when declaring a font (nor \texttt{Language}). In
+ order, etc., not just text. Therefore, it is under the direct control
+ of the language, which applies both the script and the direction to
+ the text. As a consequence, there is no need to set \texttt{Script}
+ when declaring a font with |\babelfont| (nor \texttt{Language}). In
fact, it is even discouraged.
\end{note}
@@ -2012,10 +2088,10 @@ to select fonts in addition to the three basic families.
(|rm|, |sf|, |tt|, and the like). If a language is switched when an
\textit{ad hoc} font is active, or you select the font with this
command, neither the script nor the language is passed. You must
- add them by hand. This is by design, for several reasons (for
+ add them by hand. This is by design, for several reasons —for
example, each font has its own set of features and a generic setting
for several of them could be problematic, and also a “lower-level”
- font selection is useful).
+ font selection is useful.
\end{note}
\begin{note}
@@ -2028,53 +2104,45 @@ to select fonts in addition to the three basic families.
\end{note}
\begin{warning}
- Do not use |\set|\textit{xxxx}|font| and |\babelfont| at the same
- time. |\babelfont| follows the standard \LaTeX{} conventions to set
- the basic families -- define |\|\textit{xx}|default|, and activate
- it with |\|\textit{xx}|family|. On the other hand,
- |\set|\textit{xxxx}|font| in \textsf{fontspec} takes a different
- approach, because |\|\textit{xx}|family| is redefined with the
- family name hardcoded (so that |\|\textit{xx}|default| becomes
- no-op). Of course, both methods are incompatible, and if you use
- |\set|\textit{xxxx}|font|, font switching with |\babelfont| just
- does \textit{not} work (nor the standard |\|\textit{xx}|default|,
- for that matter). As of \New{3.34} there is an attempt to make them
- compatible, but the language system will not be set by \babel and
- should be set with |fontspec| if necessary.
+ Using |\set|\textit{xxxx}|font| and |\babelfont| at the same time is
+ discouraged, but very often works as expected. However, be aware with
+ |\set|\textit{xxxx}|font| the language system will not be set by
+ \babel{} and should be set with |fontspec| if necessary.
\end{warning}
\begin{troubleshooting}
-\trouble{Package fontspec Warning: 'Language 'LANG' not available for
-font 'FONT' with script 'SCRIPT' 'Default' language used instead'}
-\textit{Package fontspec Warning: 'Language 'LANG' not available for
-font 'FONT' with script 'SCRIPT' 'Default' language used instead'}.
-\textbf{This is \textit{not} and error.}
-This warning is shown by \textsf{fontspec}, not by \babel. It could be
-irrelevant for English, but not for many other languages, including
-Urdu and Turkish. This is a useful and harmless warning, and if
-everything is fine with your document the best thing you can do is just
-to ignore it altogether.
+ \trouble{Package fontspec Warning: 'Language 'LANG' not available for
+ font 'FONT' with script 'SCRIPT' 'Default' language used instead'}
+ \textit{Package fontspec Warning: 'Language 'LANG' not available for
+ font 'FONT' with script 'SCRIPT' 'Default' language used instead'}.
+
+ \textbf{This is \textit{not} and error.} This warning is shown by
+ \textsf{fontspec}, not by \babel. It could be irrelevant for English,
+ but not for many other languages, including Urdu and Turkish. This is
+ a useful and harmless warning, and if everything is fine with your
+ document the best thing you can do is just to ignore it altogether.
\end{troubleshooting}
\begin{troubleshooting}
-\trouble{Package babel Info: The following fonts are not babel standard families}
-\textit{Package babel Info: The following fonts are not babel
-standard families}.
-
-\textbf{This is \textit{not} and error.} \babel{} assumes that if you
-are using |\babelfont| for a family, very likely you want to define the
-rest of them. If you don't, you can find some inconsistencies between
-families. This checking is done at the beginning of the document, at a
-point where we cannot know which families will be used.
-
-Actually, there is no real need to use |\babelfont| in a monolingual
-document, if you set the language system in |\setmainfont| (or not,
-depending on what you want).
-
-As the message explains, \textit{there is nothing intrinsically wrong}
-with not defining all the families. In fact, there is nothing
-intrinsically wrong with not using |\babelfont| at all. But you must be
-aware that this may lead to some problems.
+ \trouble{Package babel Info: The following fonts are not babel
+ standard families} \textit{Package babel Info: The following fonts
+ are not babel standard families}.
+
+ \textbf{This is \textit{not} and error.} \babel{} assumes that if you
+ are using |\babelfont| for a family, very likely you want to define
+ the rest of them. If you don't, you can find some inconsistencies
+ between families. This checking is done at the beginning of the
+ document, at a point where we cannot know which families will be
+ used.
+
+ Actually, there is no real need to use |\babelfont| in a monolingual
+ document, if you set the language system in |\setmainfont| (or not,
+ depending on what you want).
+
+ As the message explains, \textit{there is nothing intrinsically
+ wrong} with not defining all the families. In fact, there is nothing
+ intrinsically wrong with not using |\babelfont| at all. But you must
+ be aware that this may lead to some problems.
\end{troubleshooting}
\subsection{Modifying a language}
@@ -2090,7 +2158,7 @@ sometimes necessary, but not always trivial.
}
\end{verbatim}
As of 3.15, there is no need to hide spaces with \texttt{\%%
-} (\babel{} removes them), but it is advisable to do it.
+} (\babel{} removes them), but it is advisable to do so.
\item The new way, which is found in |bulgarian|, |azerbaijani|,
|spanish|, |french|, |turkish|, |icelandic|, |vietnamese| and a few
more, as well as in languages created with |\babelprovide| and its
@@ -2177,6 +2245,17 @@ In most cases, you will only need to define a few macros.
\end{verbatim}
\end{example}
+\begin{example}
+ Locales with names based on BCP 47 codes can be created with
+ something like:
+\begin{verbatim}
+ \babelprovide[import=en-US]{enUS}
+\end{verbatim}
+ Note, however, mixing ways to identify locales can lead to problems.
+ For example, is \verb|yi| the name of the language spoken by the Yi
+ people or is it the code for Yiddish?
+\end{example}
+
The main language is not changed (\texttt{danish} in this example).
So, you must add |\selectlanguage{arhinish}| or other selectors where
necessary.
@@ -2206,8 +2285,7 @@ There are about 200 |ini| files, with data taken from the |ldf| files
and the CLDR provided by Unicode. Not all languages in the latter are
complete, and therefore neither are the |ini| files. A few languages
will show a warning about the current lack of suitability of the date
-format (\textsf{hindi}, \textsf{french}, \textsf{breton}, and
-\textsf{occitan}).
+format (\textsf{french}, \textsf{breton}, and \textsf{occitan}).
Besides |\today|, this option defines an additional command for dates:
|\<language>date|, which takes three arguments, namely, year, month and
@@ -2267,23 +2345,25 @@ the script, no matter which language is active. Although somewhat
inconsistent, this makes setting a language up easier in most typical
cases.
+\Describe{onchar=}{\texttt{ids} $\string|$ \texttt{fonts}}
+\New{3.38} This option is much like an ‘event’ called with a character
+belonging to the script of this locale is found. There are currently
+two ‘actions’, which can be used at the same time (separated by a
+space): with |ids| the |\language| and the |\localeid| are set to the
+values of this locale; with |fonts|, the fonts are changed to those of
+the this locale (as set with |\babelfont|). This option is not
+compatible with |mapfont|. Characters can be added with
+|\babelcharproperty|.
+
\Describe{mapfont=}{\texttt{direction}}
Assigns the font for the writing direction of this language (only with
-|bidi=basic|). More precisely, what |mapfont=direction| means is, ‘when
-a character has the same direction as the script for the “provided”
-language, then change its font to that set for this language’. There
-are 3 directions, following the bidi Unicode algorithm, namely,
-Arabic-like, Hebrew-like and left to right. So, there should be at most
-3 directives of this kind.
-
-\Describe{onchar=}{\texttt{ids} $\string|$ \texttt{fonts}}
-\New{3.38} This options is much like an ‘event’ called with a character
-belonging to the script of the current locale is found. There are two
-action, which can be used at the same time (separated by a space): with
-|ids| the |\language| and the |\localeid| are set to the values of this
-locale; with |fonts|, the fonts are changed to those of the current
-locale (as set with |\babelfont|). This option is not compatible with
-|mapfont|.
+|bidi=basic|). Whenever possible, instead of this option use |onchar|,
+based on the script, which usually makes more sense. More precisely,
+what |mapfont=direction| means is, ‘when a character has the same
+direction as the script for the “provided” language, then change its
+font to that set for this language’. There are 3 directions, following
+the bidi Unicode algorithm, namely, Arabic-like, Hebrew-like and left
+to right. So, there should be at most 3 directives of this kind.
\Describe{intraspace=}{\meta{base} \meta{shrink} \meta{stretch}}
Sets the interword space for the writing system of the language, in em
@@ -2393,6 +2473,12 @@ conditions are not met, write |\BabelEnsureInfo|.
\subsection{Hyphenation and line breaking}
+\Babel{} deals with three kinds of line breaking rules: Western,
+typically the LGC group, South East Asian, like Thai, and CJK, but
+support depends on the engine: \textsf{pdftex} only deals with the
+former, \xetex{} also with the second one, while \luatex{} provides
+basic rules for the latter, too.
+
\Describe{\babelhyphen}{%
\colorbox{thegrey}{\ttfamily\hskip-.2em*\hskip-.2em}\marg{type}}
\DescribeOther\babelhyphen{%
@@ -2515,6 +2601,55 @@ Unicode engines, spacing is based on the ``current'' em unit (the size
of the previous char in \luatex, and the font size set by the last
|\selectfont| in \xetex).
+\Describe{\babelposthyphenation}{\marg{hyphenrules-name}%
+ \marg{lua-pattern}\marg{replacement}}
+
+\New{3.37-3.39} With \luatex{} it is now possible to define
+non-standard hyphenation rules, like |f-f| $\to$ |ff-f|, repeated
+hyphens, ranked ruled (or more precisely, ‘penalized’ hyphenation
+points), and so on. No rules are currently provided by default, but
+they can be defined as shown in the following example, where |{1}| is
+the first captured char (between |()| in the pattern):
+\begin{verbatim}
+\babelposthyphenation{german}{([fmtrp]) | {1}}
+{
+ { no = {1}, pre = {1}{1}- }, % Replace first char with disc
+ remove, % Remove automatic disc (2nd node)
+ {} % Keep last char, untouched
+}
+\end{verbatim}
+
+In the replacements, a captured char may be mapped to another, too. For
+example, if the first capture reads |([ΐΰ])|, the replacement could be
+\verb+{1|ΐΰ|ίύ}+, which maps \textit{ΐ} to \textit{ί}, and \textit{ΰ}
+to \textit{ύ}, so that the diaeresis is removed.
+
+This feature is activated with the first |\babelposthyphenation|.
+
+See the \href{https://github.com/latex3/babel/wiki}{\babel\ wiki} for a
+more detailed description and some examples. It also describes an
+additional replacement type with the key |string|.
+
+\begin{example}
+ Although the main purpose of this command is non-standard
+ hyphenation, it may actually be used for other transformations (after
+ hyphenation is applied, so you must take discretionaries into
+ account). For example, you can use the |string| replacement to
+ replace a character (or series of them) by another character (or
+ series of them). Thus, to enter \textit{ž} as |zh| and \textit{š} as
+ |sh| in a newly created locale for transliterated Russian:
+\begin{verbatim}
+\babelprovide[hyphenrules=+]{russian-latin} % Create locale
+\babelposthyphenation{russian-latin}{([sz])h} % Create rule
+{
+ { string = {1|sz|šž} },
+ remove
+}
+\end{verbatim}
+ In other words, it is a quite general tool. (A counterpart
+ |\babelprehyphenation| is on the way.)
+\end{example}
+
\subsection{Selecting scripts}
Currently \babel{} provides no standard interface to select
@@ -2589,6 +2724,14 @@ differ in the way `weak' numeric characters are ordered (eg, Arabic
options described below).
\end{warning}
+\begin{warning}
+ If characters to be mirrored are shown without changes with \luatex,
+ try with the following line:
+\begin{verbatim}
+\babeladjust{bidi.mirroring=off}
+\end{verbatim}
+\end{warning}
+
There are some package options controlling bidi writing.
\Describe{bidi=}{\texttt{default} $\string|$ \texttt{basic}
@@ -2612,20 +2755,13 @@ consider the intrinsic direction of scripts and weak directionality.)
tentative, but it mostly works. For RL documents use the former, and
for LR ones use the latter.
-\New{3.37} There is some experimental support for \textsf{luahbtex}
-(with |lualatex-dev|) and the latest releases of \textsf{luaotfload}
-(3.11), with |Renderer = Harfbuzz| in \textsf{fontspec}. Since it is
-based on \luatex, the option |basic| mostly works (You may need
-deactivate the |rtlm| or the |rtla| font features, or alternatively
-deactive mirroring in \babel{} with |\babeladjust|.)
-
There are samples on GitHub, under \texttt{/required/babel/samples}.
See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
\begin{example}
The following text comes from the Arabic Wikipedia (article about
Arabia). Copy-pasting some text from the Wikipedia is a good way to
- test this feature. Remember |basic-r| is available in \luatex{}
+ test this feature. Remember |basic| is available in \luatex{}
only.
\begingroup
% If you are looking at the code to see how it has been written, you
@@ -2638,7 +2774,7 @@ See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
\begin{verbatim}
\documentclass{article}
-\usepackage[_bidi=basic-r_]{babel}
+\usepackage[_bidi=basic_]{babel}
_\babelprovide[import, main]{arabic}_
@@ -2676,7 +2812,7 @@ _\babelprovide[import, main]{arabic}_
\usepackage[english, _bidi=basic_]{babel}
-\babelprovide[_mapfont=direction_]{arabic}
+\babelprovide[_onchar=ids fonts_]{arabic}
\babelfont{rm}{Crimson}
\babelfont[*arabic]{rm}{FreeSerif}
@@ -2691,7 +2827,7 @@ Arabic as @1فصحى العصر@0 \textit{fuṣḥā l-ʻaṣr} (MSA) and
\end{document}
\end{verbatim}
\endgroup
- In this example, and thanks to |mapfont=direction|, any Arabic letter
+ In this example, and thanks to |onchar=ids fonts|, any Arabic letter
(because the language is |arabic|) changes its font to that set for
this language (here defined via |*arabic|, because Crimson does not
provide Arabic letters).
@@ -2892,6 +3028,7 @@ command is available always in bidi documents, even without
\subsection{Language attributes}
\DescribeMacro{\languageattribute}
+
This is a user-level command, to be used in the preamble of a
document (after |\usepackage[...]{babel}|), that declares which
attributes are to be used for a given language. It takes two
@@ -3088,12 +3225,14 @@ tables, which you can modify with the following macro (for example,
to set them for glyphs in the PUA).
\Describe{\babelcharproperty}{\marg{char-code}\oarg{to-char-code}%
- \marg{propertry}\marg{value}}
+ \marg{property}\marg{value}}
\New{3.32} Here, \marg{char-code} is a number (with \TeX{} syntax).
With the optional argument, you can set a range of values. There are
three properties (with a short name, taken from Unicode): |direction|
-(|bc|), |mirror| (|bmg|), |linebreak| (|lb|). The settings are global.
+(|bc|), |mirror| (|bmg|), |linebreak| (|lb|). The settings are global,
+and this command is allowed only in vertical mode (the preamble or
+between paragraphs).
For example:
\begin{verbatim}
@@ -3102,8 +3241,12 @@ For example:
\babelcharproperty{`)}{linebreak}{cl} % or id, op, cl, ns, ex, in, hy
\end{verbatim}
-This command is allowed only in vertical mode (the preamble or between
-paragraphs).
+\New{3.39} Another property is |locale|, which adds characters to the
+list used by |onchar| in |\babelprovide|, or, if the last argument is
+empty, removes them. The last argument is the locale name:
+\begin{verbatim}
+\babelcharproperty{`,}{locale}{english}
+\end{verbatim}
\subsection{Tweaking some features}
@@ -3243,41 +3386,6 @@ See the code section for |\foreignlanguage*| (a new starred
version of |\foreignlanguage|).
\medskip
-\textbf{Modifying, and adding, values of |ini| files}
-
-\New{3.37} There is a way to modify the values of |ini| files when they
-get loaded with |\babelprovide|. To set, say, |digits.native| in the
-|numbers| section, use something like
-|numbers..digits.native=abcdefghij| (note the double dot between the
-section and the key name). New keys may be added, too.
-
-\medskip
-\textbf{Non-standard hyphenation}
-
-\New{3.37} With \luatex{} it is now possible to define non-standard
-hyohenation rules, like |f-f| $\to$ |ff-f|. No rules are currently
-provided by default, but they can be defined as shown in the following
-example:
-\begin{verbatim}
-\babelposthyphenation{ngerman}{([fmtrp]) | {1}}
-{
- { no = {1}, pre = {1}{1}-}, % Replace first char with disc
- remove, % Remove automatic disc
- {} % Keep last char, untouched
-}
-\end{verbatim}
-
-This feature must be explicitly activated with:
-\begin{verbatim}
-\babeladjust{ hyphenation.extra = on }
-\end{verbatim}
-
-See the \babel{} wiki for a more detailed description and some examples:
-\begin{verbatim}
-https://github.com/latex3/babel/wiki
-\end{verbatim}
-
-\medskip
\textbf{Old and deprecated stuff}
A couple of tentative macros were provided by \babel{} ($\ge$3.9g) with
@@ -4222,8 +4330,8 @@ help from Bernd Raichle, for which I am grateful.
% \section{Tools}
%
% \begin{macrocode}
-%<<version=3.38>>
-%<<date=2020/01/15>>
+%<<version=3.39>>
+%<<date=2020/02/03>>
% \end{macrocode}
%
% \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -4715,7 +4823,6 @@ help from Bernd Raichle, for which I am grateful.
%
% \changes{babel~3.30}{2019/04/22}{Callbacks aren't specific to
% bidi any more, so they are moved.}
-% \changes{babel~3.32}{2019/05/30}{Consider Harf.}
%
% \begin{macrocode}
\ifx\bbl@languages\@undefined\else
@@ -4737,8 +4844,6 @@ help from Bernd Raichle, for which I am grateful.
\bbl@languages
\fi
\ifodd\bbl@engine
- % Harftex is evolving, so the callback is not harcoded, just in case
- \def\bbl@harfpreline{Harf pre_linebreak_filter callback}%
\def\bbl@activate@preotf{%
\let\bbl@activate@preotf\relax % only once
\directlua{
@@ -4768,23 +4873,14 @@ help from Bernd Raichle, for which I am grateful.
Babel.pre_otfload_v,
'Babel.pre_otfload_v',
luatexbase.priority_in_callback('pre_linebreak_filter',
- '\bbl@harfpreline')
- or luatexbase.priority_in_callback('pre_linebreak_filter',
- 'luaotfload.node_processor')
- or nil)
+ 'luaotfload.node_processor') or nil)
%
luatexbase.add_to_callback('hpack_filter',
Babel.pre_otfload_h,
'Babel.pre_otfload_h',
luatexbase.priority_in_callback('hpack_filter',
- '\bbl@harfpreline')
- or luatexbase.priority_in_callback('hpack_filter',
- 'luaotfload.node_processor')
- or nil)
- }%
- \@ifpackageloaded{harfload}%
- {\directlua{ Babel.mirroring_enabled = false }}%
- {}}
+ 'luaotfload.node_processor') or nil)
+ }}
\let\bbl@tempa\relax
\@ifpackagewith{babel}{bidi=basic}%
{\def\bbl@tempa{basic}}%
@@ -6771,20 +6867,8 @@ help from Bernd Raichle, for which I am grateful.
\ifx\bbl@known@attribs\@undefined
\in@false
\else
-% \end{macrocode}
-%
-% Now we need to see if the attribute occurs in the list of
-% already selected attributes.
-%
-% \begin{macrocode}
\bbl@xin@{,\bbl@tempc-##1,}{,\bbl@known@attribs,}%
\fi
-% \end{macrocode}
-%
-% When the attribute was in the list we issue a warning; this might
-% not be the users intention.
-%
-% \begin{macrocode}
\ifin@
\bbl@warning{%
You have more than once selected the attribute '##1'\\%
@@ -7349,6 +7433,7 @@ help from Bernd Raichle, for which I am grateful.
\edef\bbl@L{\zap@space#1 \@empty}%
\edef\bbl@G{\zap@space#2 \@empty}%
\bbl@startcmds@ii}
+\let\bbl@startcommands\StartBabelCommands
% \end{macrocode}
%
% Parse the encoding info to get the label, input, and font parts.
@@ -7474,6 +7559,7 @@ help from Bernd Raichle, for which I am grateful.
\endgroup
\endgroup
\bbl@scafter}
+\let\bbl@endcommands\EndBabelCommands
% \end{macrocode}
%
% Now we define commands to be used inside |\StartBabelCommands|.
@@ -7602,7 +7688,7 @@ help from Bernd Raichle, for which I am grateful.
\newcommand\SetHyphenMap[1]{%
\bbl@forlang\bbl@tempa{%
\expandafter\bbl@stringdef
- \csname\bbl@tempa @bbl@hyphenmap\endcsname{##1}}}
+ \csname\bbl@tempa @bbl@hyphenmap\endcsname{##1}}}%
%<</Macros local to BabelCommands>>
% \end{macrocode}
%
@@ -8213,7 +8299,7 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@savelangname\languagename
\edef\bbl@savelocaleid{\the\localeid}%
% Set name and locale id
- \def\languagename{#2}%
+ \edef\languagename{#2}%
% \global\@namedef{bbl@lcname@#2}{#2}%
\bbl@id@assign
\let\bbl@KVP@captions\@nil
@@ -8230,7 +8316,7 @@ help from Bernd Raichle, for which I am grateful.
\let\bbl@KVP@onchar\@nil
\let\bbl@KVP@chargroups\@nil
\bbl@forkv{#1}{% TODO - error handling
- \in@{..}{##1}%
+ \in@{/}{##1}%
\ifin@
\bbl@renewinikey##1\@@{##2}%
\else
@@ -8279,8 +8365,10 @@ help from Bernd Raichle, for which I am grateful.
\bbl@read@ini{##1}{basic data}%
\bbl@exportkey{chrng}{characters.ranges}{}%
\bbl@exportkey{dgnat}{numbers.digits.native}{}%
+ \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
\bbl@exportkey{hyphr}{typography.hyphenrules}{}%
\bbl@exportkey{intsp}{typography.intraspace}{}%
+ \endinput
\endgroup}% boxed, to avoid extra spaces:
{\setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}}}%
{}%
@@ -8301,10 +8389,15 @@ help from Bernd Raichle, for which I am grateful.
Babel.locale_mapped = true
Babel.linebreaking.add_before(Babel.locale_map)
Babel.loc_to_scr = {}
- Babel.chr_to_loc = {}
+ Babel.chr_to_loc = Babel.chr_to_loc or {}
end}%
\bbl@xin@{ ids }{ \bbl@KVP@onchar\space}%
\ifin@
+ \ifx\bbl@starthyphens\@undefined % Needed if no explicit selection
+ \AddBabelHook{babel-onchar}{beforestart}{{\bbl@starthyphens}}%
+ \fi
+ \bbl@exp{\\\bbl@add\\\bbl@starthyphens
+ {\\\bbl@patterns@lua{\languagename}}}%
% TODO - error/warning if no script
\directlua{
if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then
@@ -8323,7 +8416,7 @@ help from Bernd Raichle, for which I am grateful.
if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then
Babel.loc_to_scr[\the\localeid] =
Babel.script_blocks['\bbl@cs{sbcp@\languagename}']
- end}
+ end}%
\ifx\bbl@mapselect\@undefined
\AtBeginDocument{%
\expandafter\bbl@add\csname selectfont \endcsname{{\bbl@mapselect}}%
@@ -8343,9 +8436,6 @@ help from Bernd Raichle, for which I am grateful.
\fi
% TODO - catch non-valid values
\fi
-% \ifx\bbl@KVP@chargroups\@nil\else
-% \bbl@chargroups
-% \fi
% == mapfont ==
% For bidi texts, to switch the font based on direction
\ifx\bbl@KVP@mapfont\@nil\else
@@ -8430,7 +8520,7 @@ help from Bernd Raichle, for which I am grateful.
return head
end
end
- }}
+ }}%
\fi
\fi
% == require.babel in ini ==
@@ -8497,7 +8587,7 @@ help from Bernd Raichle, for which I am grateful.
\@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
\@namedef{extras#1}{}%
\@namedef{noextras#1}{}%
- \StartBabelCommands*{#1}{captions}%
+ \bbl@startcommands*{#1}{captions}%
\ifx\bbl@KVP@captions\@nil % and also if import, implicit
\def\bbl@tempb##1{% elt for \bbl@captionslist
\ifx##1\@empty\else
@@ -8520,7 +8610,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@savetoday
\bbl@savedate
\fi
- \EndBabelCommands
+ \bbl@endcommands
\bbl@exp{%
\def\<#1hyphenmins>{%
{\bbl@ifunset{bbl@lfthm@#1}{2}{\@nameuse{bbl@lfthm@#1}}}%
@@ -8620,7 +8710,7 @@ help from Bernd Raichle, for which I am grateful.
\def\bbl@inipreread##1=##2\@@{%
\bbl@trim@def\bbl@tempa{##1}% Redundant below !!
% Move trims here ??
- \bbl@ifunset{bbl@KVP@\bbl@section..\bbl@tempa}%
+ \bbl@ifunset{bbl@KVP@\bbl@section/\bbl@tempa}%
{\expandafter\bbl@inireader\bbl@tempa=##2\@@}%
{}}%
\let\bbl@inireader\bbl@iniskip
@@ -8643,6 +8733,7 @@ help from Bernd Raichle, for which I am grateful.
\@nameuse{bbl@renew@\bbl@section}%
\global\bbl@csarg\let{renew@\bbl@section}\relax
\@nameuse{bbl@secpost@\bbl@section}%
+% \bbl@csarg\bbl@toglobal{inikeys@\languagename}%
\fi}
\def\bbl@iniline#1\bbl@iniline{%
\@ifnextchar[\bbl@inisec{\@ifnextchar;\bbl@iniskip\bbl@inipreread}#1\@@}% ]
@@ -8665,14 +8756,14 @@ help from Bernd Raichle, for which I am grateful.
\@nameuse{bbl@secpost@\bbl@section}% ends previous section
\def\bbl@section{#1}% starts current section
\def\bbl@elt##1##2{%
- \@namedef{bbl@KVP@#1..##1}{}}%
+ \@namedef{bbl@KVP@#1/##1}{}}%
\@nameuse{bbl@renew@#1}%
\@nameuse{bbl@secpre@#1}% pre-section `hook'
\bbl@ifunset{bbl@inikv@#1}%
{\let\bbl@inireader\bbl@iniskip}%
{\bbl@exp{\let\\\bbl@inireader\<bbl@inikv@#1>}}}
\let\bbl@renewlist\@empty
-\def\bbl@renewinikey#1..#2\@@#3{%
+\def\bbl@renewinikey#1/#2\@@#3{%
\bbl@ifunset{bbl@renew@#1}%
{\bbl@add@list\bbl@renewlist{#1}}%
{}%
@@ -8732,6 +8823,7 @@ help from Bernd Raichle, for which I am grateful.
\bbl@exportkey{lfthm}{typography.lefthyphenmin}{2}%
\bbl@exportkey{rgthm}{typography.righthyphenmin}{3}%
\bbl@exportkey{prehc}{typography.prehyphenchar}{}%
+ \bbl@exportkey{lnbrk}{typography.linebreaking}{h}%
\bbl@exportkey{hyphr}{typography.hyphenrules}{}%
\bbl@exportkey{intsp}{typography.intraspace}{}%
\bbl@exportkey{jstfy}{typography.justify}{w}%
@@ -9016,9 +9108,7 @@ help from Bernd Raichle, for which I am grateful.
\@namedef{bbl@ADJ@layout.lists@on}{%
\bbl@adjust@layout{\let\list\bbl@OL@list}}
\@namedef{bbl@ADJ@hyphenation.extra@on}{%
- \directlua{
- Babel.linebreaking.add_after(Babel.post_hyphenate_replace)
- }}
+ \bbl@activateposthyphen}
% \end{macrocode}
%
% \section{The kernel of Babel (\texttt{babel.def} for \LaTeX only)}
@@ -9851,11 +9941,7 @@ help from Bernd Raichle, for which I am grateful.
% and so on, but bidi text does not work out of the box and some
% development is necessary. It also provides tools to properly
% set left-to-right and right-to-left page layouts. As Lua\TeX-ja
-% shows, vertical typesetting is possible, too. Its main drawback
-% is font handling is often considered to be less mature than
-% \xetex{}, mainly in Indic scripts (but there are steps to make
-% HarfBuzz, the \xetex{} font engine, available in \luatex{}; see
-% <https://github.com/tatzetwerk/luatex-harfbuzz>).
+% shows, vertical typesetting is possible, too.
% \end{itemize}
%
% \changes{babel~3.15}{2017/10/30}{Use an attribute instead of tex language
@@ -10014,18 +10100,20 @@ help from Bernd Raichle, for which I am grateful.
\newtoks\everypar
\everypar=\bbl@severypar
\bbl@severypar{\bbl@xeeverypar\the\everypar}}
- \@ifpackagewith{babel}{bidi=bidi}%
- {\let\bbl@textdir@i\@gobbletwo
- \let\bbl@xebidipar\@empty
- \AddBabelHook{bidi}{foreign}{%
- \def\bbl@tempa{\def\BabelText####1}%
- \ifcase\bbl@thetextdir
- \expandafter\bbl@tempa\expandafter{\BabelText{\LR{##1}}}%
- \else
- \expandafter\bbl@tempa\expandafter{\BabelText{\RL{##1}}}%
- \fi}
- \def\bbl@pardir#1{\ifcase#1\relax\setLR\else\setRL\fi}}
- {}%
+ \def\bbl@tempb{%
+ \let\bbl@textdir@i\@gobbletwo
+ \let\bbl@xebidipar\@empty
+ \AddBabelHook{bidi}{foreign}{%
+ \def\bbl@tempa{\def\BabelText########1}%
+ \ifcase\bbl@thetextdir
+ \expandafter\bbl@tempa\expandafter{\BabelText{\LR{####1}}}%
+ \else
+ \expandafter\bbl@tempa\expandafter{\BabelText{\RL{####1}}}%
+ \fi}
+ \def\bbl@pardir##1{\ifcase##1\relax\setLR\else\setRL\fi}}
+ \@ifpackagewith{babel}{bidi=bidi}{\bbl@tempb}{}%
+ \@ifpackagewith{babel}{bidi=bidi-l}{\bbl@tempb}{}%
+ \@ifpackagewith{babel}{bidi=bidi-r}{\bbl@tempb}{}%
\fi
% \end{macrocode}
%
@@ -10406,7 +10494,6 @@ help from Bernd Raichle, for which I am grateful.
\edef\languagename{%
\ifnum\escapechar=\expandafter`\string#1\@empty
\else\string#1\@empty\fi}%
- % \@namedef{bbl@lcname@#1}{#1}%
\select@language{\languagename}%
% write to auxs
\expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -10423,8 +10510,13 @@ help from Bernd Raichle, for which I am grateful.
% set name
\edef\languagename{#1}%
\bbl@fixname\languagename
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \IfFileExists{babel-\languagename.tex}%
+ {\babelprovide{\languagename}}%
+ {}%
+ \fi
\bbl@iflanguage\languagename{%
- \expandafter\ifx\csname date\languagename\endcsname\relax
+ \expandafter\ifx\csname date\languagename\endcsname\relax
\bbl@error
{Unknown language `#1'. Either you have\\%
misspelled its name, it has not been installed,\\%
@@ -10725,8 +10817,12 @@ help from Bernd Raichle, for which I am grateful.
\def\foreign@language#1{%
% set name
\edef\languagename{#1}%
- % \@namedef{bbl@lcname@#1}{#1}%
\bbl@fixname\languagename
+ \expandafter\ifx\csname date\languagename\endcsname\relax
+ \IfFileExists{babel-\languagename.tex}%
+ {\babelprovide{\languagename}}%
+ {}%
+ \fi
\bbl@iflanguage\languagename{%
\expandafter\ifx\csname date\languagename\endcsname\relax
\bbl@warning % TODO - why a warning, not an error?
@@ -10945,6 +11041,7 @@ help from Bernd Raichle, for which I am grateful.
\let\uselocale\setlocale
\let\locale\setlocale
\let\selectlocale\setlocale
+\let\localename\setlocale
\let\textlocale\setlocale
\let\textlanguage\setlocale
\let\languagetext\setlocale
@@ -11570,6 +11667,12 @@ help from Bernd Raichle, for which I am grateful.
\bbl@trace{Font handling with fontspec}
\@onlypreamble\babelfont
\newcommand\babelfont[2][]{% 1=langs/scripts 2=fam
+ \bbl@foreach{#1}{%
+ \expandafter\ifx\csname date##1\endcsname\relax
+ \IfFileExists{babel-##1.tex}%
+ {\babelprovide{##1}}%
+ {}%
+ \fi}%
\edef\bbl@tempa{#1}%
\def\bbl@tempb{#2}% Used by \bbl@bblfont
\ifx\fontspec\@undefined
@@ -12457,6 +12560,9 @@ help from Bernd Raichle, for which I am grateful.
% \changes{babel~3.37}{2019/12/07}{Added code for non-standard
% hyphenation.}
%
+% First, some general code for line breaking, used by
+% |\babelposthyphenation|.
+%
% \textit{In progress.} Replace regular (ie, implicit) discretionaries
% by spaceskips, based on the previous glyph (which I think makes
% sense, because the hyphen and the previous char go always together).
@@ -12641,7 +12747,7 @@ help from Bernd Raichle, for which I am grateful.
\def\bbl@provide@intraspace{%
\bbl@ifunset{bbl@intsp@\languagename}{}%
{\expandafter\ifx\csname bbl@intsp@\languagename\endcsname\@empty\else
- \bbl@xin@{\bbl@cs{sbcp@\languagename}}{Hant,Hans,Jpan,Kore,Kana}%
+ \bbl@xin@{\bbl@cs{lnbrk@\languagename}}{c}%
\ifin@ % cjk
\bbl@cjkintraspace
\directlua{
@@ -12738,7 +12844,7 @@ Babel.script_blocks = {
{0x2B740, 0x2B81F}, {0x2B820, 0x2CEAF},
{0x2CEB0, 0x2EBEF}, {0x2F800, 0x2FA1F}},
['Hebr'] = {{0x0590, 0x05FF}},
- ['Japa'] = {{0x3000, 0x303F}, {0x3040, 0x309F}, {0x30A0, 0x30FF},
+ ['Jpan'] = {{0x3000, 0x303F}, {0x3040, 0x309F}, {0x30A0, 0x30FF},
{0x4E00, 0x9FAF}, {0xFF00, 0xFFEF}},
['Khmr'] = {{0x1780, 0x17FF}, {0x19E0, 0x19FF}},
['Knda'] = {{0x0C80, 0x0CFF}},
@@ -12760,10 +12866,11 @@ Babel.script_blocks = {
['Thai'] = {{0x0E00, 0x0E7F}},
['Tibt'] = {{0x0F00, 0x0FFF}},
['Vaii'] = {{0xA500, 0xA63F}},
- ['Yiii']= {{0xA490, 0xA4CF}, {0xA000, 0xA48F}}
+ ['Yiii'] = {{0xA000, 0xA48F}, {0xA490, 0xA4CF}}
}
Babel.script_blocks.Hant = Babel.script_blocks.Hans
+Babel.script_blocks.Kana = Babel.script_blocks.Jpan
function Babel.locale_map(head)
if not Babel.locale_mapped then return head end
@@ -12789,7 +12896,7 @@ function Babel.locale_map(head)
end
end
% Now, take action
- if toloc then
+ if toloc and toloc > -1 then
if Babel.locale_props[toloc].lg then
item.lang = Babel.locale_props[toloc].lg
node.set_attribute(item, LOCALE, toloc)
@@ -12856,6 +12963,12 @@ end
Babel.Babel.cjk_characters[\the\count@]['c'] = '#1'
}}
\let\bbl@chprop@lb\bbl@chprop@linebreak
+\def\bbl@chprop@locale#1{%
+ \directlua{
+ Babel.chr_to_loc = Babel.chr_to_loc or {}
+ Babel.chr_to_loc[\the\count@] =
+ \bbl@ifblank{#1}{-1000}{\the\@nameuse{bbl@id@@#1}}\space
+ }}
% \end{macrocode}
%
% Post-handling hyphenation patterns for non-standard rules, like |ff|
@@ -13050,13 +13163,40 @@ end
return head
end
- &% Used below
+ &% The following functions belong to the next macro
+
+ &% This table stores capture maps, numbered consecutively
+ Babel.capture_maps = {}
+
function Babel.capture_func(key, cap)
local ret = "[[" .. cap:gsub('{([0-9])}', "]]..m[%1]..[[") .. "]]"
+ ret = ret:gsub('{([0-9])|([^|]+)|(.-)}', Babel.capture_func_map)
ret = ret:gsub("%[%[%]%]%.%.", '')
ret = ret:gsub("%.%.%[%[%]%]", '')
return key .. [[=function(m) return ]] .. ret .. [[ end]]
end
+
+ function Babel.capt_map(from, mapno)
+ return Babel.capture_maps[mapno][from] or from
+ end
+
+ &% Handle the {n|abc|ABC} syntax in captures
+ function Babel.capture_func_map(capno, from, to)
+ local froms = {}
+ for s in string.utfcharacters(from) do
+ table.insert(froms, s)
+ end
+ local cnt = 1
+ table.insert(Babel.capture_maps, {})
+ local mlen = table.getn(Babel.capture_maps)
+ for s in string.utfcharacters(to) do
+ Babel.capture_maps[mlen][froms[cnt]] = s
+ cnt = cnt + 1
+ end
+ return "]]..Babel.capt_map(m[" .. capno .. "]," ..
+ (mlen) .. ").." .. "[["
+ end
+
}
% \end{macrocode}
%
@@ -13064,7 +13204,10 @@ end
% defined above for converting strings to functions returning a string.
% These functions handle the |{|\textit{n}|}| syntax. For example,
% |pre={1}{1}-| becomes |function(m) return m[1]..m[1]..'-' end|, where
-% |m| are the matches returned after applying the pattern. The way it
+% |m| are the matches returned after applying the pattern. With a
+% mapped capture the functions are similar to
+% |function(m) return Babel.capt_map(m[1],1) end|, where the last
+% argument identifies the mapping to be applied to |m[1]|. The way it
% is carried out is somewhat tricky, but the effect in not dissimilar
% to lua |load| – save the code as string in a TeX macro, and expand
% this macro at the appropriate place. As |\directlua| does not take
@@ -13074,6 +13217,7 @@ end
% \begin{macrocode}
\catcode`\#=6
\gdef\babelposthyphenation#1#2#3{&%
+ \bbl@activateposthyphen
\begingroup
\def\babeltempa{\bbl@add@list\babeltempb}&%
\let\babeltempb\@empty
@@ -13106,6 +13250,11 @@ end
}&%
\endgroup}
\endgroup
+\def\bbl@activateposthyphen{%
+ \let\bbl@activateposthyphen\relax
+ \directlua{
+ Babel.linebreaking.add_after(Babel.post_hyphenate_replace)
+ }}
% \end{macrocode}
%
% \subsection{Layout}
@@ -19714,12 +19863,6 @@ Babel.fontmap[2] = {} -- al/an
Babel.bidi_enabled = true
Babel.mirroring_enabled = true
--- Temporary:
-
-if harf then
- Babel.mirroring_enabled = false
-end
-
require('babel-data-bidi.lua')
local characters = Babel.characters
@@ -20010,7 +20153,10 @@ function Babel.bidi(head, ispar, hdir)
item = nodes[r][1] -- MIRRORING
if Babel.mirroring_enabled and item.id == GLYPH
and temp == 'r' and characters[item.char] then
- item.char = characters[item.char].m or item.char
+ local font_mode = font.fonts[item.font].properties.mode
+ if font_mode ~= 'harf' and font_mode ~= 'plug' then
+ item.char = characters[item.char].m or item.char
+ end
end
end
first_on = nil
@@ -20321,6 +20467,8 @@ Babel.cjk_class = setmetatable ( Babel.cjk_characters, {
__index = function(_, k)
if (k >= 0xAC00 and k <= 0xD7A3) -- H2/H3
or (k >= 0x2E80 and k <= 0x9FFF)
+ or (k >= 0xA000 and k <= 0xA48F) -- Yi
+ or (k >= 0xA490 and k <= 0xA4CF) -- Yi
or (k >= 0xF900 and k <= 0xFAFF)
or (k >= 0xFE10 and k <= 0xFE1F)
or (k >= 0xFE30 and k <= 0xFE6F)
diff --git a/macros/latex/required/babel/base/babel.ins b/macros/latex/required/babel/base/babel.ins
index dc9587f35c..86e70a5fc6 100644
--- a/macros/latex/required/babel/base/babel.ins
+++ b/macros/latex/required/babel/base/babel.ins
@@ -26,7 +26,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-\def\filedate{2020/01/15}
+\def\filedate{2020/02/03}
\def\batchfile{babel.ins}
\input docstrip.tex
diff --git a/macros/latex/required/babel/base/babel.pdf b/macros/latex/required/babel/base/babel.pdf
index ee377662eb..fd66d129fc 100644
--- a/macros/latex/required/babel/base/babel.pdf
+++ b/macros/latex/required/babel/base/babel.pdf
Binary files differ
diff --git a/macros/latex/required/babel/base/bbcompat.dtx b/macros/latex/required/babel/base/bbcompat.dtx
index b9ca5b9d88..610eb84045 100644
--- a/macros/latex/required/babel/base/bbcompat.dtx
+++ b/macros/latex/required/babel/base/bbcompat.dtx
@@ -30,7 +30,7 @@
%
% \iffalse
%<*dtx>
-\ProvidesFile{bbcompat.dtx}[2020/01/15 v3.38]
+\ProvidesFile{bbcompat.dtx}[2020/02/03 v3.39]
%</dtx>
%
%% File 'bbcompat.dtx'
diff --git a/macros/luatex/generic/lualibs/NEWS b/macros/luatex/generic/lualibs/NEWS
index 075b7ce05e..42846f767a 100644
--- a/macros/luatex/generic/lualibs/NEWS
+++ b/macros/luatex/generic/lualibs/NEWS
@@ -1,4 +1,7 @@
History of the lualibs package
+2020/02/02 v2.70/
+ * sync with Context current as of 2020/01/26.
+
2019/11/06 v2.69/
* corrected github address and version info.
diff --git a/macros/luatex/generic/lualibs/README.md b/macros/luatex/generic/lualibs/README.md
index b4b8fa774c..3a7d760a94 100644
--- a/macros/luatex/generic/lualibs/README.md
+++ b/macros/luatex/generic/lualibs/README.md
@@ -1,10 +1,10 @@
# The Lualibs Package
-VERSION: 2.69
+VERSION: 2.70
-DATE: 2019-11-06
+DATE: 2020-02-02
-FONTLOADERDATE: 2019-10-29
+FONTLOADERDATE: 2020-01-26
Lualibs is a collection of Lua modules useful for general programming.
diff --git a/macros/luatex/generic/lualibs/lualibs-basic-merged.lua b/macros/luatex/generic/lualibs/lualibs-basic-merged.lua
index bee6c7de54..38c4debd9b 100644
--- a/macros/luatex/generic/lualibs/lualibs-basic-merged.lua
+++ b/macros/luatex/generic/lualibs/lualibs-basic-merged.lua
@@ -1,6 +1,6 @@
-- merged file : lualibs-basic-merged.lua
-- parent file : lualibs-basic.lua
--- merge date : Tue Oct 29 16:47:31 2019
+-- merge date : Sun Feb 2 22:31:00 2020
do -- begin closure to overcome local limits and interference
@@ -20,9 +20,6 @@ if LUAVERSION<5.2 and jit then
MINORVERSION=2
LUAVERSION=5.2
end
-if lua and lua.openfile then
- io.open=lua.openfile
-end
if not lpeg then
lpeg=require("lpeg")
end
@@ -1369,7 +1366,7 @@ if not modules then modules={} end modules ['l-table']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local type,next,tostring,tonumber,select=type,next,tostring,tonumber,select
+local type,next,tostring,tonumber,select,rawget=type,next,tostring,tonumber,select,rawget
local table,string=table,string
local concat,sort=table.concat,table.sort
local format,lower,dump=string.format,string.lower,string.dump
@@ -2774,7 +2771,7 @@ local open,flush,write,read=io.open,io.flush,io.write,io.read
local byte,find,gsub,format=string.byte,string.find,string.gsub,string.format
local concat=table.concat
local type=type
-if string.find(os.getenv("PATH"),";",1,true) then
+if string.find(os.getenv("PATH") or "",";",1,true) then
io.fileseparator,io.pathseparator="\\",";"
else
io.fileseparator,io.pathseparator="/",":"
@@ -3121,7 +3118,7 @@ local date,time=os.date,os.time
local find,format,gsub,upper,gmatch=string.find,string.format,string.gsub,string.upper,string.gmatch
local concat=table.concat
local random,ceil,randomseed=math.random,math.ceil,math.randomseed
-local rawget,rawset,type,getmetatable,setmetatable,tonumber,tostring=rawget,rawset,type,getmetatable,setmetatable,tonumber,tostring
+local type,setmetatable,tonumber,tostring=type,setmetatable,tonumber,tostring
do
local selfdir=os.selfdir
if selfdir=="" then
@@ -3567,15 +3564,24 @@ local checkedsplit=string.checkedsplit
local P,R,S,C,Cs,Cp,Cc,Ct=lpeg.P,lpeg.R,lpeg.S,lpeg.C,lpeg.Cs,lpeg.Cp,lpeg.Cc,lpeg.Ct
local attributes=lfs.attributes
function lfs.isdir(name)
- return attributes(name,"mode")=="directory"
+ if name then
+ return attributes(name,"mode")=="directory"
+ end
end
function lfs.isfile(name)
- local a=attributes(name,"mode")
- return a=="file" or a=="link" or nil
+ if name then
+ local a=attributes(name,"mode")
+ return a=="file" or a=="link" or nil
+ end
end
function lfs.isfound(name)
- local a=attributes(name,"mode")
- return (a=="file" or a=="link") and name or nil
+ if name then
+ local a=attributes(name,"mode")
+ return (a=="file" or a=="link") and name or nil
+ end
+end
+function lfs.modification(name)
+ return name and attributes(name,"modification") or nil
end
if sandbox then
sandbox.redefine(lfs.isfile,"lfs.isfile")
@@ -3957,35 +3963,46 @@ if not modules then modules={} end modules ['l-gzip']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-if gzip then
- local suffix,suffixes=file.suffix,file.suffixes
+gzip=gzip or {}
+if not zlib then
+ zlib=xzip
+elseif not xzip then
+ xzip=zlib
+end
+if zlib then
+ local suffix=file.suffix
+ local suffixes=file.suffixes
+ local find=string.find
+ local openfile=io.open
+ local gzipwindow=15+16
+ local gziplevel=3
+ local identifier="^\x1F\x8B\x08"
+ local compress=zlib.compress
+ local decompress=zlib.decompress
function gzip.load(filename)
- local f=io.open(filename,"rb")
+ local f=openfile(filename,"rb")
if not f then
- elseif suffix(filename)=="gz" then
- f:close()
- local g=gzip.open(filename,"rb")
- if g then
- local str=g:read("*all")
- g:close()
- return str
- end
else
- local str=f:read("*all")
+ local data=f:read("*all")
f:close()
- return str
+ if data and data~="" then
+ if suffix(filename)=="gz" then
+ data=decompress(data,gzipwindow)
+ end
+ return data
+ end
end
end
- function gzip.save(filename,data)
+ function gzip.save(filename,data,level)
if suffix(filename)~="gz" then
filename=filename..".gz"
end
- local f=io.open(filename,"wb")
+ local f=openfile(filename,"wb")
if f then
- local s=zlib.compress(data or "",9,nil,15+16)
- f:write(s)
+ data=compress(data or "",level or gziplevel,nil,gzipwindow)
+ f:write(data)
f:close()
- return #s
+ return #data
end
end
function gzip.suffix(filename)
@@ -3993,58 +4010,24 @@ if gzip then
local gzipped=extra=="gz"
return suffix,gzipped
end
-else
-end
-if flate then
- local type=type
- local find=string.find
- local compress=flate.gz_compress
- local decompress=flate.gz_decompress
- local absmax=128*1024*1024
- local initial=64*1024
- local identifier="^\x1F\x8B\x08"
function gzip.compressed(s)
return s and find(s,identifier)
end
function gzip.compress(s,level)
if s and not find(s,identifier) then
if not level then
- level=3
+ level=gziplevel
elseif level<=0 then
return s
elseif level>9 then
level=9
end
- return compress(s,level) or s
+ return compress(s,level or gziplevel,nil,gzipwindow) or s
end
end
- function gzip.decompress(s,size,iterate)
+ function gzip.decompress(s)
if s and find(s,identifier) then
- if type(size)~="number" then
- size=initial
- end
- if size>absmax then
- size=absmax
- end
- if type(iterate)=="number" then
- max=size*iterate
- elseif iterate==nil or iterate==true then
- iterate=true
- max=absmax
- end
- if max>absmax then
- max=absmax
- end
- while true do
- local d=decompress(s,size)
- if d then
- return d
- end
- size=2*size
- if not iterate or size>max then
- return false
- end
- end
+ return decompress(s,gzipwindow)
else
return s
end
@@ -4072,6 +4055,8 @@ if not md5 then
end
local md5,file=md5,file
local gsub=string.gsub
+local modification,isfile,touch=lfs.modification,lfs.isfile,lfs.touch
+local loaddata,savedata=io.loaddata,io.savedata
do
local patterns=lpeg and lpeg.patterns
if patterns then
@@ -4087,10 +4072,11 @@ do
md5.sumHEXA=md5.HEX
end
end
+local md5HEX=md5.HEX
function file.needsupdating(oldname,newname,threshold)
- local oldtime=lfs.attributes(oldname,"modification")
+ local oldtime=modification(oldname)
if oldtime then
- local newtime=lfs.attributes(newname,"modification")
+ local newtime=modification(newname)
if not newtime then
return true
elseif newtime>=oldtime then
@@ -4106,31 +4092,32 @@ function file.needsupdating(oldname,newname,threshold)
end
file.needs_updating=file.needsupdating
function file.syncmtimes(oldname,newname)
- local oldtime=lfs.attributes(oldname,"modification")
- if oldtime and lfs.isfile(newname) then
- lfs.touch(newname,oldtime,oldtime)
+ local oldtime=modification(oldname)
+ if oldtime and isfile(newname) then
+ touch(newname,oldtime,oldtime)
end
end
-function file.checksum(name)
+local function checksum(name)
if md5 then
- local data=io.loaddata(name)
+ local data=loaddata(name)
if data then
- return md5.HEX(data)
+ return md5HEX(data)
end
end
return nil
end
+file.checksum=checksum
function file.loadchecksum(name)
if md5 then
- local data=io.loaddata(name..".md5")
+ local data=loaddata(name..".md5")
return data and (gsub(data,"%s",""))
end
return nil
end
function file.savechecksum(name,checksum)
- if not checksum then checksum=file.checksum(name) end
+ if not checksum then checksum=checksum(name) end
if checksum then
- io.savedata(name..".md5",checksum)
+ savedata(name..".md5",checksum)
return checksum
end
return nil
diff --git a/macros/luatex/generic/lualibs/lualibs-extended-merged.lua b/macros/luatex/generic/lualibs/lualibs-extended-merged.lua
index c2502401af..acf7c5a0c5 100644
--- a/macros/luatex/generic/lualibs/lualibs-extended-merged.lua
+++ b/macros/luatex/generic/lualibs/lualibs-extended-merged.lua
@@ -1,6 +1,6 @@
-- merged file : lualibs-extended-merged.lua
-- parent file : lualibs-extended.lua
--- merge date : Tue Oct 29 16:47:22 2019
+-- merge date : Sun Feb 2 22:30:49 2020
do -- begin closure to overcome local limits and interference
@@ -579,7 +579,7 @@ local format_N if environment.FORMAT then
n=n+1
if not f or f=="" then
return format("FORMAT(a%s,'%%.9f')",n)
- elseif f==".6" then
+ elseif f==".6" or f=="0.6" then
return format("FORMAT(a%s)",n)
else
return format("FORMAT(a%s,'%%%sf')",n,f)
@@ -4134,8 +4134,11 @@ function stacker.new(name)
insert(tops,top)
end
local function resolve_step(ti)
+ if not top then
+ return
+ end
local result=nil
- local noftop=top and #top or 0
+ local noftop=#top
if ti>0 then
local current=list[ti]
if current then
diff --git a/macros/luatex/generic/lualibs/lualibs-file.lua b/macros/luatex/generic/lualibs/lualibs-file.lua
index 1b039a4386..d0af94f09d 100644
--- a/macros/luatex/generic/lualibs/lualibs-file.lua
+++ b/macros/luatex/generic/lualibs/lualibs-file.lua
@@ -76,17 +76,27 @@ local P, R, S, C, Cs, Cp, Cc, Ct = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cs, lpeg
local attributes = lfs.attributes
function lfs.isdir(name)
- return attributes(name,"mode") == "directory"
+ if name then
+ return attributes(name,"mode") == "directory"
+ end
end
function lfs.isfile(name)
- local a = attributes(name,"mode")
- return a == "file" or a == "link" or nil
+ if name then
+ local a = attributes(name,"mode")
+ return a == "file" or a == "link" or nil
+ end
end
function lfs.isfound(name)
- local a = attributes(name,"mode")
- return (a == "file" or a == "link") and name or nil
+ if name then
+ local a = attributes(name,"mode")
+ return (a == "file" or a == "link") and name or nil
+ end
+end
+
+function lfs.modification(name)
+ return name and attributes(name,"modification") or nil
end
if sandbox then
diff --git a/macros/luatex/generic/lualibs/lualibs-gzip.lua b/macros/luatex/generic/lualibs/lualibs-gzip.lua
index 31466bde8f..f141b5ebbb 100644
--- a/macros/luatex/generic/lualibs/lualibs-gzip.lua
+++ b/macros/luatex/generic/lualibs/lualibs-gzip.lua
@@ -5,39 +5,77 @@ if not modules then modules = { } end modules ['l-gzip'] = {
license = "see context related readme files"
}
-if gzip then
+-- We only have a few official methods here:
+--
+-- local decompressed = gzip.load (filename)
+-- local resultsize = gzip.save (filename,compresslevel)
+-- local compressed = gzip.compress (str,compresslevel)
+-- local decompressed = gzip.decompress (str)
+-- local iscompressed = gzip.compressed (str)
+-- local suffix, okay = gzip.suffix (filename)
+--
+-- In LuaMetaTeX we have only xzip which implements a very few methods:
+--
+-- compress (str,level,method,window,memory,strategy)
+-- decompress (str,window)
+-- adler32 (str,checksum)
+-- crc32 (str,checksum)
+--
+-- Special window values are:
+--
+-- flate : - 15
+-- zlib : 15
+-- gzip : 15 | 16
+-- auto : 15 | 32
+
+gzip = gzip or { } -- so in luatex we keep the old ones too
+
+if not zlib then
+ zlib = xzip -- in luametatex we shadow the old one
+elseif not xzip then
+ xzip = zlib
+end
+
+if zlib then
- local suffix, suffixes = file.suffix, file.suffixes
+ local suffix = file.suffix
+ local suffixes = file.suffixes
+ local find = string.find
+ local openfile = io.open
+
+ local gzipwindow = 15 + 16 -- +16: gzip, +32: gzip|zlib
+ local gziplevel = 3
+ local identifier = "^\x1F\x8B\x08"
+
+ local compress = zlib.compress
+ local decompress = zlib.decompress
function gzip.load(filename)
- local f = io.open(filename,"rb")
+ local f = openfile(filename,"rb")
if not f then
-- invalid file
- elseif suffix(filename) == "gz" then
- f:close()
- local g = gzip.open(filename,"rb")
- if g then
- local str = g:read("*all")
- g:close()
- return str
- end
else
- local str = f:read("*all")
+ local data = f:read("*all")
f:close()
- return str
+ if data and data ~= "" then
+ if suffix(filename) == "gz" then
+ data = decompress(data,gzipwindow)
+ end
+ return data
+ end
end
end
- function gzip.save(filename,data)
+ function gzip.save(filename,data,level)
if suffix(filename) ~= "gz" then
filename = filename .. ".gz"
end
- local f = io.open(filename,"wb")
+ local f = openfile(filename,"wb")
if f then
- local s = zlib.compress(data or "",9,nil,15+16)
- f:write(s)
+ data = compress(data or "",level or gziplevel,nil,gzipwindow)
+ f:write(data)
f:close()
- return #s
+ return #data
end
end
@@ -47,24 +85,6 @@ if gzip then
return suffix, gzipped
end
-else
-
- -- todo: fallback on flate
-
-end
-
-if flate then
-
- local type = type
- local find = string.find
-
- local compress = flate.gz_compress
- local decompress = flate.gz_decompress
-
- local absmax = 128*1024*1024
- local initial = 64*1024
- local identifier = "^\x1F\x8B\x08"
-
function gzip.compressed(s)
return s and find(s,identifier)
end
@@ -72,46 +92,89 @@ if flate then
function gzip.compress(s,level)
if s and not find(s,identifier) then -- the find check might go away
if not level then
- level = 3
+ level = gziplevel
elseif level <= 0 then
return s
elseif level > 9 then
level = 9
end
- return compress(s,level) or s
+ return compress(s,level or gziplevel,nil,gzipwindow) or s
end
end
- function gzip.decompress(s,size,iterate)
+ function gzip.decompress(s)
if s and find(s,identifier) then
- if type(size) ~= "number" then
- size = initial
- end
- if size > absmax then
- size = absmax
- end
- if type(iterate) == "number" then
- max = size * iterate
- elseif iterate == nil or iterate == true then
- iterate = true
- max = absmax
- end
- if max > absmax then
- max = absmax
- end
- while true do
- local d = decompress(s,size)
- if d then
- return d
- end
- size = 2 * size
- if not iterate or size > max then
- return false
- end
- end
+ return decompress(s,gzipwindow)
else
return s
end
end
end
+
+-- In luametatex we can use this one but it doesn't look like there wil be stream
+-- support so for now we still use zlib (the performance difference is not that
+-- spectacular in our usage.
+
+-- if flate then
+--
+-- local type = type
+-- local find = string.find
+--
+-- local compress = flate.gz_compress
+-- local decompress = flate.gz_decompress
+--
+-- local absmax = 128*1024*1024
+-- local initial = 64*1024
+-- local identifier = "^\x1F\x8B\x08"
+--
+-- function gzip.compressed(s)
+-- return s and find(s,identifier)
+-- end
+--
+-- function gzip.compress(s,level)
+-- if s and not find(s,identifier) then -- the find check might go away
+-- if not level then
+-- level = 3
+-- elseif level <= 0 then
+-- return s
+-- elseif level > 9 then
+-- level = 9
+-- end
+-- return compress(s,level) or s
+-- end
+-- end
+--
+-- function gzip.decompress(s,size,iterate)
+-- if s and find(s,identifier) then
+-- if type(size) ~= "number" then
+-- size = initial
+-- end
+-- if size > absmax then
+-- size = absmax
+-- end
+-- if type(iterate) == "number" then
+-- max = size * iterate
+-- elseif iterate == nil or iterate == true then
+-- iterate = true
+-- max = absmax
+-- end
+-- if max > absmax then
+-- max = absmax
+-- end
+-- while true do
+-- local d = decompress(s,size)
+-- if d then
+-- return d
+-- end
+-- size = 2 * size
+-- if not iterate or size > max then
+-- return false
+-- end
+-- end
+-- else
+-- return s
+-- end
+-- end
+--
+-- end
diff --git a/macros/luatex/generic/lualibs/lualibs-io.lua b/macros/luatex/generic/lualibs/lualibs-io.lua
index fa3ad3c4cd..a955262a31 100644
--- a/macros/luatex/generic/lualibs/lualibs-io.lua
+++ b/macros/luatex/generic/lualibs/lualibs-io.lua
@@ -13,7 +13,7 @@ local concat = table.concat
----- floor = math.floor
local type = type
-if string.find(os.getenv("PATH"),";",1,true) then
+if string.find(os.getenv("PATH") or "",";",1,true) then
io.fileseparator, io.pathseparator = "\\", ";"
else
io.fileseparator, io.pathseparator = "/" , ":"
diff --git a/macros/luatex/generic/lualibs/lualibs-lua.lua b/macros/luatex/generic/lualibs/lualibs-lua.lua
index 51399216cc..f411230d4a 100644
--- a/macros/luatex/generic/lualibs/lualibs-lua.lua
+++ b/macros/luatex/generic/lualibs/lualibs-lua.lua
@@ -37,9 +37,9 @@ end
-- this is lmtx only:
-if lua and lua.openfile then
- io.open = lua.openfile
-end
+-- if lua and lua.openfile then
+-- io.open = lua.openfile
+-- end
-- lpeg
diff --git a/macros/luatex/generic/lualibs/lualibs-md5.lua b/macros/luatex/generic/lualibs/lualibs-md5.lua
index 6758fa4444..9e3f7672d6 100644
--- a/macros/luatex/generic/lualibs/lualibs-md5.lua
+++ b/macros/luatex/generic/lualibs/lualibs-md5.lua
@@ -20,6 +20,8 @@ end
local md5, file = md5, file
local gsub = string.gsub
+local modification, isfile, touch = lfs.modification, lfs.isfile, lfs.touch
+local loaddata, savedata = io.loaddata, io.savedata
-- local gsub, format, byte = string.gsub, string.format, string.byte
--
@@ -55,10 +57,12 @@ do
end
+local md5HEX = md5.HEX
+
function file.needsupdating(oldname,newname,threshold) -- size modification access change
- local oldtime = lfs.attributes(oldname,"modification")
+ local oldtime = modification(oldname)
if oldtime then
- local newtime = lfs.attributes(newname,"modification")
+ local newtime = modification(newname)
if not newtime then
return true -- no new file, so no updating needed
elseif newtime >= oldtime then
@@ -76,34 +80,36 @@ end
file.needs_updating = file.needsupdating
function file.syncmtimes(oldname,newname)
- local oldtime = lfs.attributes(oldname,"modification")
- if oldtime and lfs.isfile(newname) then
- lfs.touch(newname,oldtime,oldtime)
+ local oldtime = modification(oldname)
+ if oldtime and isfile(newname) then
+ touch(newname,oldtime,oldtime)
end
end
-function file.checksum(name)
+local function checksum(name)
if md5 then
- local data = io.loaddata(name)
+ local data = loaddata(name)
if data then
- return md5.HEX(data)
+ return md5HEX(data)
end
end
return nil
end
+file.checksum = checksum
+
function file.loadchecksum(name)
if md5 then
- local data = io.loaddata(name .. ".md5")
+ local data = loaddata(name .. ".md5")
return data and (gsub(data,"%s",""))
end
return nil
end
function file.savechecksum(name,checksum)
- if not checksum then checksum = file.checksum(name) end
+ if not checksum then checksum = checksum(name) end
if checksum then
- io.savedata(name .. ".md5",checksum)
+ savedata(name .. ".md5",checksum)
return checksum
end
return nil
diff --git a/macros/luatex/generic/lualibs/lualibs-os.lua b/macros/luatex/generic/lualibs/lualibs-os.lua
index aa04e254df..8394d19e7c 100644
--- a/macros/luatex/generic/lualibs/lualibs-os.lua
+++ b/macros/luatex/generic/lualibs/lualibs-os.lua
@@ -30,7 +30,7 @@ local date, time = os.date, os.time
local find, format, gsub, upper, gmatch = string.find, string.format, string.gsub, string.upper, string.gmatch
local concat = table.concat
local random, ceil, randomseed = math.random, math.ceil, math.randomseed
-local rawget, rawset, type, getmetatable, setmetatable, tonumber, tostring = rawget, rawset, type, getmetatable, setmetatable, tonumber, tostring
+local type, setmetatable, tonumber, tostring = type, setmetatable, tonumber, tostring
-- This check needs to happen real early on. Todo: we can pick it up from the commandline
-- if we pass --binpath= (which is useful anyway)
diff --git a/macros/luatex/generic/lualibs/lualibs-table.lua b/macros/luatex/generic/lualibs/lualibs-table.lua
index e828203867..98b377bdc1 100644
--- a/macros/luatex/generic/lualibs/lualibs-table.lua
+++ b/macros/luatex/generic/lualibs/lualibs-table.lua
@@ -6,7 +6,7 @@ if not modules then modules = { } end modules ['l-table'] = {
license = "see context related readme files"
}
-local type, next, tostring, tonumber, select = type, next, tostring, tonumber, select
+local type, next, tostring, tonumber, select, rawget = type, next, tostring, tonumber, select, rawget
local table, string = table, string
local concat, sort = table.concat, table.sort
local format, lower, dump = string.format, string.lower, string.dump
diff --git a/macros/luatex/generic/lualibs/lualibs-util-sta.lua b/macros/luatex/generic/lualibs/lualibs-util-sta.lua
index 7819395f69..9ca1c67e9a 100644
--- a/macros/luatex/generic/lualibs/lualibs-util-sta.lua
+++ b/macros/luatex/generic/lualibs/lualibs-util-sta.lua
@@ -81,6 +81,8 @@ end
function stacker.new(name)
+ -- to be sped up, mmaybe foo:bar syntax here but then quite some access
+
local report = logs.reporter("stacker",name or nil)
local s
@@ -93,6 +95,7 @@ function stacker.new(name)
local hashing = true
local function push(...)
+ -- todo check if more than 1 argument
for i=1,select("#",...) do
insert(stack,(select(i,...))) -- watch the ()
end
@@ -153,8 +156,12 @@ function stacker.new(name)
local function resolve_step(ti) -- keep track of changes outside function !
-- todo: optimize for n=1 etc
+ if not top then
+ -- report("messed op stacker %a",name)
+ return
+ end
local result = nil
- local noftop = top and #top or 0
+ local noftop = #top
if ti > 0 then
local current = list[ti]
if current then
diff --git a/macros/luatex/generic/lualibs/lualibs-util-str.lua b/macros/luatex/generic/lualibs/lualibs-util-str.lua
index 432b39ec5a..68c9be5860 100644
--- a/macros/luatex/generic/lualibs/lualibs-util-str.lua
+++ b/macros/luatex/generic/lualibs/lualibs-util-str.lua
@@ -944,7 +944,7 @@ local format_N if environment.FORMAT then
n = n + 1
if not f or f == "" then
return format("FORMAT(a%s,'%%.9f')",n)
- elseif f == ".6" then
+ elseif f == ".6" or f == "0.6" then
return format("FORMAT(a%s)",n)
else
return format("FORMAT(a%s,'%%%sf')",n,f)
diff --git a/macros/luatex/generic/lualibs/lualibs.dtx b/macros/luatex/generic/lualibs/lualibs.dtx
index 66e40a1a6f..579982e542 100644
--- a/macros/luatex/generic/lualibs/lualibs.dtx
+++ b/macros/luatex/generic/lualibs/lualibs.dtx
@@ -37,7 +37,7 @@
\input docstrip.tex
\Msg{************************************************************************}
\Msg{* Installation}
-\Msg{* Package: lualibs 2019-11-06 v2.69 Lua additional functions.}
+\Msg{* Package: lualibs 2020-02-02 v2.70 Lua additional functions.}
\Msg{************************************************************************}
\keepsilent
@@ -107,7 +107,7 @@ and lualibs-extended.lua.
%<*driver>
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{lualibs.drv}
- [2019/11/06 v2.69 Lua Libraries.]
+ [2020/02/02 v2.70 Lua Libraries.]
\documentclass{ltxdoc}
\usepackage{fancyvrb,xspace}
\usepackage[x11names]{xcolor}
@@ -208,7 +208,7 @@ and lualibs-extended.lua.
% \GetFileInfo{lualibs.drv}
%
% \title{The \identifier{lualibs} package}
-% \date{2019/11/06 v2.69}
+% \date{2020/02/02 v2.70}
% \author{Élie Roux · \email{elie.roux@telecom-bretagne.eu}\\
% Philipp Gesang · \email{phg@phi-gamma.net}\\
% The \LaTeX3 Project · \email{https://github.com/latex3/lualibs/}\\
@@ -429,8 +429,8 @@ lualibs = lualibs or { }
lualibs.module_info = {
name = "lualibs",
- version = "2.69", --TAGVERSION
- date = "2019-11-06", --TAGDATE
+ version = "2.70", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "ConTeXt Lua standard libraries.",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
copyright = "PRAGMA ADE / ConTeXt Development Team",
@@ -583,8 +583,8 @@ local loadmodule = lualibs.loadmodule
local lualibs_basic_module = {
name = "lualibs-basic",
- version = "2.69", --TAGVERSION
- date = "2019-11-06", --TAGDATE
+ version = "2.70", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "ConTeXt Lua libraries -- basic collection.",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
copyright = "PRAGMA ADE / ConTeXt Development Team",
@@ -665,8 +665,8 @@ lualibs = lualibs or { }
local lualibs_extended_module = {
name = "lualibs-extended",
- version = "2.69", --TAGVERSION
- date = "2019-11-06", --TAGDATE
+ version = "2.70", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "ConTeXt Lua libraries -- extended collection.",
author = "Hans Hagen, PRAGMA-ADE, Hasselt NL & Elie Roux & Philipp Gesang",
copyright = "PRAGMA ADE / ConTeXt Development Team",
diff --git a/macros/luatex/generic/lualibs/lualibs.pdf b/macros/luatex/generic/lualibs/lualibs.pdf
index 725e3cd14b..721f42266f 100644
--- a/macros/luatex/generic/lualibs/lualibs.pdf
+++ b/macros/luatex/generic/lualibs/lualibs.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/NEWS b/macros/luatex/generic/luaotfload/NEWS
index d8c05e500a..07855af501 100644
--- a/macros/luatex/generic/luaotfload/NEWS
+++ b/macros/luatex/generic/luaotfload/NEWS
@@ -1,5 +1,11 @@
Change History
--------------
+2020-02-02 luaotfload v3.12
+ * new experimental feature multiscript
+ * new experimental feature fallback
+ * extension of the color feature to color output glyphs
+ * Small bug correction
+
2019-11-10 luaotfload v3.11
* Changed the handling of the script key in harf mode to be more compatible with behaviour of the node mode.
It now expects the name of a script that is actually in the font instead of a ISO 15924 script tag. See issue 117.
diff --git a/macros/luatex/generic/luaotfload/README.md b/macros/luatex/generic/luaotfload/README.md
index 57cae2d99b..94a315839b 100644
--- a/macros/luatex/generic/luaotfload/README.md
+++ b/macros/luatex/generic/luaotfload/README.md
@@ -1,8 +1,8 @@
# The Luaotfload Package
-VERSION: 3.11
+VERSION: 3.12
-DATE: 2019-11-10
+DATE: 2020-02-02
## Description
diff --git a/macros/luatex/generic/luaotfload/filegraph.pdf b/macros/luatex/generic/luaotfload/filegraph.pdf
index 9fc854a941..d6202804f9 100644
--- a/macros/luatex/generic/luaotfload/filegraph.pdf
+++ b/macros/luatex/generic/luaotfload/filegraph.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/fontloader-2019-10-29.lua b/macros/luatex/generic/luaotfload/fontloader-2020-01-26.lua
index dc98bd5696..be8fefacfe 100644
--- a/macros/luatex/generic/luaotfload/fontloader-2019-10-29.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-2020-01-26.lua
@@ -1,9 +1,9 @@
--[[info-----------------------------------------------------------------------
Luaotfload fontloader package
- build 2019-10-29 22:02:47
+ build 2020-02-02 22:46:14
-------------------------------------------------------------------------------
- © 2019 PRAGMA ADE / ConTeXt Development Team
+ © 2020 PRAGMA ADE / ConTeXt Development Team
The code in this file is provided under the GPL v2.0 license. See the
file COPYING in the Luaotfload repository for details.
@@ -62,7 +62,7 @@
--info]]-----------------------------------------------------------------------
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “data-con” 7ce546725b1550f655c78ac9d69419ca] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “data-con” de6ae0997b0e70a23bcc9afff5d8b072] ---
if not modules then modules={} end modules ['data-con']={
version=1.100,
@@ -71,6 +71,7 @@ if not modules then modules={} end modules ['data-con']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
+local setmetatable=setmetatable
local format,lower,gsub=string.format,string.lower,string.gsub
local trace_cache=false trackers.register("resolvers.cache",function(v) trace_cache=v end)
local trace_containers=false trackers.register("resolvers.containers",function(v) trace_containers=v end)
@@ -78,16 +79,21 @@ local trace_storage=false trackers.register("resolvers.storage",function(v) tra
containers=containers or {}
local containers=containers
containers.usecache=true
+local getwritablepath=caches.getwritablepath
+local getreadablepaths=caches.getreadablepaths
+local cacheiswritable=caches.is_writable
+local loaddatafromcache=caches.loaddata
+local savedataincache=caches.savedata
local report_containers=logs.reporter("resolvers","containers")
local allocated={}
local mt={
__index=function(t,k)
if k=="writable" then
- local writable=caches.getwritablepath(t.category,t.subcategory) or { "." }
+ local writable=getwritablepath(t.category,t.subcategory) or { "." }
t.writable=writable
return writable
elseif k=="readables" then
- local readables=caches.getreadablepaths(t.category,t.subcategory) or { "." }
+ local readables=getreadablepaths(t.category,t.subcategory) or { "." }
t.readables=readables
return readables
end
@@ -118,7 +124,7 @@ function containers.define(category,subcategory,version,enabled)
end
end
function containers.is_usable(container,name)
- return container.enabled and caches and caches.is_writable(container.writable,name)
+ return container.enabled and caches and cacheiswritable(container.writable,name)
end
function containers.is_valid(container,name)
if name and name~="" then
@@ -132,7 +138,7 @@ function containers.read(container,name)
local storage=container.storage
local stored=storage[name]
if not stored and container.enabled and caches and containers.usecache then
- stored=caches.loaddata(container.readables,name,container.writable)
+ stored=loaddatafromcache(container.readables,name,container.writable)
if stored and stored.cache_version==container.version then
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","load",container.subcategory,name)
@@ -148,17 +154,20 @@ function containers.read(container,name)
end
return stored
end
-function containers.write(container,name,data)
+function containers.write(container,name,data,fast)
if data then
data.cache_version=container.version
if container.enabled and caches then
- local unique,shared=data.unique,data.shared
- data.unique,data.shared=nil,nil
- caches.savedata(container.writable,name,data)
+ local unique=data.unique
+ local shared=data.shared
+ data.unique=nil
+ data.shared=nil
+ savedataincache(container.writable,name,data,fast)
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","save",container.subcategory,name)
end
- data.unique,data.shared=unique,shared
+ data.unique=unique
+ data.shared=shared
end
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","store",container.subcategory,name)
@@ -174,10 +183,10 @@ function containers.cleanname(name)
return (gsub(lower(name),"[^%w\128-\255]+","-"))
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “data-con”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “data-con”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “basics-nod” c05f47077c709bbf12a8758852dc4e06] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “basics-nod” 4ce2f7c752fdc4c1d6d9f74e8cd50be8] ---
if not modules then modules={} end modules ['luatex-fonts-nod']={
version=1.001,
@@ -393,11 +402,18 @@ if not nuts.setreplace then
setfield(n,"replace",h)
end
end
+do
+ local getsubtype=nuts.getsubtype
+ function nuts.start_of_par(n)
+ local s=getsubtype(n)
+ return s==0 or s==2
+ end
+end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “basics-nod”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “basics-nod”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “basics-chr” 58b7ef0c486e06090b362971b9f85e27] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “basics-chr” 58b7ef0c486e06090b362971b9f85e27] ---
characters=characters or {}
@@ -4007,10 +4023,10 @@ characters.indicgroups={
},
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “basics-chr”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “basics-chr”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ini” 4299a02110bbd7c0d27e131235c5319d] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ini” 4dee96e1e1474d324dd126bd5d375df8] ---
if not modules then modules={} end modules ['font-ini']={
version=1.001,
@@ -4047,11 +4063,14 @@ fonts.privateoffsets={
mathbase=0xFF000,
keepnames=false,
}
+if node and not tex.getfontoffamily then
+ tex.getfontoffamily=node.family_font
+end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ini”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ini”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-mis” bc9eb43c27f63ce9d0fff67e104fe1c6] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-mis” bc9eb43c27f63ce9d0fff67e104fe1c6] ---
if not modules then modules={} end modules ['luatex-font-mis']={
version=1.001,
@@ -4083,10 +4102,10 @@ function font.each()
return table.sortedhash(fonts.hashes.identifiers)
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-mis”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-mis”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-con” 8b35e7c2203d5b57c61942e07cee2c0a] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-con” b436bf6880a56216445779ac68fee877] ---
if not modules then modules={} end modules ['font-con']={
version=1.001,
@@ -4114,13 +4133,13 @@ fonts.handlers=handlers
local allocate=utilities.storage.allocate
local setmetatableindex=table.setmetatableindex
constructors.dontembed=allocate()
-constructors.autocleanup=true
constructors.namemode="fullpath"
constructors.version=1.01
constructors.cache=containers.define("fonts","constructors",constructors.version,false)
constructors.privateoffset=fonts.privateoffsets.textbase or 0xF0000
constructors.cacheintex=true
constructors.addtounicode=true
+constructors.fixprotrusion=true
local designsizes=allocate()
constructors.designsizes=designsizes
local loadedfonts=allocate()
@@ -4172,11 +4191,6 @@ function constructors.getmathparameter(tfmdata,name)
end
end
function constructors.cleanuptable(tfmdata)
- if constructors.autocleanup and tfmdata.properties.virtualized then
- for k,v in next,tfmdata.characters do
- if v.commands then v.commands=nil end
- end
- end
end
function constructors.calculatescale(tfmdata,scaledpoints)
local parameters=tfmdata.parameters
@@ -4403,6 +4417,7 @@ function constructors.scale(tfmdata,specification)
properties.direction=direction
target.size=scaledpoints
target.encodingbytes=properties.encodingbytes or 1
+ target.subfont=properties.subfont
target.embedding=properties.embedding or "subset"
target.tounicode=1
target.cidinfo=properties.cidinfo
@@ -4512,7 +4527,7 @@ function constructors.scale(tfmdata,specification)
targetparameters.descender=delta*descender
end
constructors.enhanceparameters(targetparameters)
- local protrusionfactor=(targetquad~=0 and 1000/targetquad) or 0
+ local protrusionfactor=constructors.fixprotrusion and ((targetquad~=0 and 1000/targetquad) or 1) or 1
local scaledwidth=defaultwidth*hdelta
local scaledheight=defaultheight*vdelta
local scaleddepth=defaultdepth*vdelta
@@ -4895,6 +4910,7 @@ function constructors.finalize(tfmdata)
properties.name=properties.name or tfmdata.name
properties.psname=properties.psname or tfmdata.psname
properties.encodingbytes=tfmdata.encodingbytes or 1
+ properties.subfont=tfmdata.subfont or nil
properties.embedding=tfmdata.embedding or "subset"
properties.tounicode=tfmdata.tounicode or 1
properties.cidinfo=tfmdata.cidinfo or nil
@@ -4920,6 +4936,7 @@ function constructors.finalize(tfmdata)
tfmdata.name=nil
tfmdata.psname=nil
tfmdata.encodingbytes=nil
+ tfmdata.subfont=nil
tfmdata.embedding=nil
tfmdata.tounicode=nil
tfmdata.cidinfo=nil
@@ -5430,10 +5447,10 @@ function constructors.addcoreunicodes(unicodes)
return unicodes
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-con”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-con”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-enc” 3e71a54297e8f85a1ac438bb0f20dd79] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-enc” 3e71a54297e8f85a1ac438bb0f20dd79] ---
if not modules then modules={} end modules ['luatex-font-enc']={
version=1.001,
@@ -5502,10 +5519,10 @@ function encodings.load(filename)
return containers.write(encodings.cache,name,data)
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-enc”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-enc”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-cid” 4d87988efa86020a14708ee03c23415f] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-cid” 4d87988efa86020a14708ee03c23415f] ---
if not modules then modules={} end modules ['font-cid']={
version=1.001,
@@ -5656,10 +5673,10 @@ function cid.getmap(specification)
return found
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-cid”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-cid”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-map” f486746e90fe972de4b73e208ac7cbb2] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-map” f486746e90fe972de4b73e208ac7cbb2] ---
if not modules then modules={} end modules ['font-map']={
version=1.001,
@@ -6047,10 +6064,10 @@ function mappings.addtounicode(data,filename,checklookups,forceligatures)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-map”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-map”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-vfc” 94937140f2c909e9c831ba021f1ab303] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-vfc” 94937140f2c909e9c831ba021f1ab303] ---
if not modules then modules={} end modules ['font-vfc']={
version=1.001,
@@ -6148,10 +6165,10 @@ helpers.commands=utilities.storage.allocate {
dummy=dummy,
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-vfc”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-vfc”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otr” b1c03925c949027c86f781785fa7a208] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otr” d96724dcb40c673ac294df7044a39925] ---
if not modules then modules={} end modules ['font-otr']={
version=1.001,
@@ -6160,7 +6177,7 @@ if not modules then modules={} end modules ['font-otr']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local next,type,tonumber=next,type,tonumber
+local next,type,tonumber,rawget=next,type,tonumber,rawget
local byte,lower,char,gsub=string.byte,string.lower,string.char,string.gsub
local fullstrip=string.fullstrip
local floor,round=math.floor,math.round
@@ -8001,10 +8018,10 @@ function readers.extend(fontdata)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otr”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otr”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oti” dbae7722baae24d917a17176553825cf] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oti” dbae7722baae24d917a17176553825cf] ---
if not modules then modules={} end modules ['font-oti']={
version=1.001,
@@ -8147,10 +8164,10 @@ function otffeatures.checkeddefaultlanguage(featuretype,autolanguage,languages)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oti”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oti”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ott” aba6d8335a5f38a5a62d3631492f3392] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ott” aba6d8335a5f38a5a62d3631492f3392] ---
if not modules then modules={} end modules ["font-ott"]={
version=1.001,
@@ -9269,10 +9286,10 @@ function otffeatures.normalize(features,wrap)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ott”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ott”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-cff” 98d5a660ea803b65cb883c009ecf3c0b] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-cff” c769020b41b39418f703347f3d328bc7] ---
if not modules then modules={} end modules ['font-cff']={
version=1.001,
@@ -9282,7 +9299,7 @@ if not modules then modules={} end modules ['font-cff']={
license="see context related readme files"
}
local next,type,tonumber,rawget=next,type,tonumber,rawget
-local byte,char,gmatch=string.byte,string.char,string.gmatch
+local byte,char,gmatch,sub=string.byte,string.char,string.gmatch,string.sub
local concat,remove,unpack=table.concat,table.remove,table.unpack
local floor,abs,round,ceil,min,max=math.floor,math.abs,math.round,math.ceil,math.min,math.max
local P,C,R,S,C,Cs,Ct=lpeg.P,lpeg.C,lpeg.R,lpeg.S,lpeg.C,lpeg.Cs,lpeg.Ct
@@ -9389,6 +9406,37 @@ local defaultstrings={ [0]=
"Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003",
"Black","Bold","Book","Light","Medium","Regular","Roman","Semibold",
}
+local standardnames={ [0]=
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,
+ "space","exclam","quotedbl","numbersign","dollar","percent",
+ "ampersand","quoteright","parenleft","parenright","asterisk","plus",
+ "comma","hyphen","period","slash","zero","one","two","three","four",
+ "five","six","seven","eight","nine","colon","semicolon","less",
+ "equal","greater","question","at","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","bracketleft","backslash","bracketright","asciicircum",
+ "underscore","quoteleft","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","braceleft","bar","braceright","asciitilde",false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,"exclamdown",
+ "cent","sterling","fraction","yen","florin","section","currency",
+ "quotesingle","quotedblleft","guillemotleft","guilsinglleft",
+ "guilsinglright","fi","fl",false,"endash","dagger","daggerdbl",
+ "periodcentered",false,"paragraph","bullet","quotesinglbase",
+ "quotedblbase","quotedblright","guillemotright","ellipsis","perthousand",
+ false,"questiondown",false,"grave","acute","circumflex","tilde",
+ "macron","breve","dotaccent","dieresis",false,"ring","cedilla",false,
+ "hungarumlaut","ogonek","caron","emdash",false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,"AE",false,"ordfeminine",false,false,false,false,"Lslash",
+ "Oslash","OE","ordmasculine",false,false,false,false,false,"ae",
+ false,false,false,"dotlessi",false,false,"lslash","oslash","oe",
+ "germandbls",false,false,false,false
+}
local cffreaders={
readbyte,
readushort,
@@ -9750,6 +9798,7 @@ do
local x=0
local y=0
local width=false
+ local lsb=0
local r=0
local stems=0
local globalbias=0
@@ -9773,6 +9822,9 @@ do
local factors=false
local axis=false
local vsindex=0
+ local justpass=false
+ local seacs={}
+ local procidx=nil
local function showstate(where)
report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
end
@@ -10312,14 +10364,14 @@ do
top=0
end
local function divide()
- if version==1 then
+ if version=="cff" then
local d=stack[top]
top=top-1
stack[top]=stack[top]/d
end
end
local function closepath()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
showstate("closepath")
end
@@ -10327,54 +10379,73 @@ do
top=0
end
local function hsbw()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
showstate("hsbw")
end
+ lsb=stack[top-1] or 0
width=stack[top]
end
top=0
end
- local function seac()
- if version==1 then
+ local function sbw()
+ if version=="cff" then
if trace_charstrings then
- showstate("seac")
+ showstate("sbw")
end
+ lsb=stack[top-3]
+ width=stack[top-1]
end
top=0
end
- local function sbw()
- if version==1 then
+ local function seac()
+ if version=="cff" then
if trace_charstrings then
- showstate("sbw")
+ showstate("seac")
end
- width=stack[top-1]
end
top=0
end
+ local popped=3
+ local hints=3
local function callothersubr()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("callothersubr (unsupported)")
+ showstate("callothersubr")
+ end
+ if stack[top]==hints then
+ popped=stack[top-2]
+ else
+ popped=3
+ end
+ local t=stack[top-1]
+ if t then
+ top=top-(t+2)
+ if top<0 then
+ top=0
+ end
+ else
+ top=0
end
+ else
+ top=0
end
- top=0
end
local function pop()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("pop")
end
top=top+1
- stack[top]=0
+ stack[top]=popped
else
top=0
end
end
local function setcurrentpoint()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("setcurrentpoint (unsupported)")
end
x=x+stack[top-1]
y=y+stack[top]
@@ -10500,6 +10571,39 @@ do
vhcurveto,
hvcurveto,
}
+ local reverse={ [0]="unsupported",
+ "getstem",
+ "unsupported",
+ "getstem",
+ "vmoveto",
+ "rlineto",
+ "hlineto",
+ "vlineto",
+ "rrcurveto",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "hsbw",
+ "unsupported",
+ "setvsindex",
+ "blend",
+ "unsupported",
+ "getstem",
+ "getmask",
+ "getmask",
+ "rmoveto",
+ "hmoveto",
+ "getstem",
+ "rcurveline",
+ "rlinecurve",
+ "vvcurveto",
+ "hhcurveto",
+ "unsupported",
+ "unsupported",
+ "vhcurveto",
+ "hvcurveto",
+ }
local subactions={
[000]=dotsection,
[001]=getstem3,
@@ -10613,7 +10717,7 @@ do
local function call(scope,list,bias)
depth=depth+1
if top==0 then
- showstate(formatters["unknown %s call %s"](scope,"?"))
+ showstate(formatters["unknown %s call %s, case %s"](scope,"?",1))
top=0
else
local index=stack[top]+bias
@@ -10625,13 +10729,12 @@ do
if tab then
process(tab)
else
- showstate(formatters["unknown %s call %s"](scope,index))
+ showstate(formatters["unknown %s call %s, case %s"](scope,index,2))
top=0
end
end
depth=depth-1
end
- local justpass=false
process=function(tab)
local i=1
local n=#tab
@@ -10702,6 +10805,17 @@ do
r=r+1;result[r]=chars[12]
r=r+1;result[r]=chars[t]
top=0
+ elseif t==6 then
+ seacs[procidx]={
+ asb=stack[1],
+ adx=stack[2],
+ ady=stack[3],
+ base=stack[4],
+ accent=stack[5],
+ width=width,
+ lsb=lsb,
+ }
+ top=0
else
local a=subactions[t]
if a then
@@ -10731,44 +10845,52 @@ do
i=i+s+1
elseif t==1 or t==3 or t==18 or operation==23 then
p_getstem()
-if true then
- if top>0 then
- for i=1,top do
- r=r+1;result[r]=encode[stack[i]]
+ if true then
+ if top>0 then
+ for i=1,top do
+ r=r+1;result[r]=encode[stack[i]]
+ end
+ top=0
end
+ r=r+1;result[r]=chars[t]
+ else
top=0
end
- r=r+1;result[r]=chars[t]
-else
- top=0
-end
i=i+1
elseif t==19 or t==20 then
local s=p_getmask() or 0
-if true then
- if top>0 then
- for i=1,top do
- r=r+1;result[r]=encode[stack[i]]
+ if true then
+ if top>0 then
+ for i=1,top do
+ r=r+1;result[r]=encode[stack[i]]
+ end
+ top=0
end
+ r=r+1;result[r]=chars[t]
+ for j=1,s do
+ i=i+1
+ r=r+1;result[r]=chars[tab[i]]
+ end
+ else
+ i=i+s
top=0
end
- r=r+1;result[r]=chars[t]
- for j=1,s do
- i=i+1
- r=r+1;result[r]=chars[tab[i]]
- end
-else
- i=i+s
- top=0
-end
i=i+1
elseif t==9 then
top=0
i=i+1
elseif t==13 then
- local s=hsbw() or 0
- i=i+s+1
+ hsbw()
+ if version=="cff" then
+ r=r+1;result[r]=encode[lsb]
+ r=r+1;result[r]=chars[22]
+ else
+ end
+ i=i+1
else
+ if trace_charstrings then
+ showstate(reverse[t] or "<action>")
+ end
if top>0 then
for i=1,top do
r=r+1;result[r]=encode[stack[i]]
@@ -10789,7 +10911,7 @@ end
end
else
if trace_charstrings then
- showvalue("<action>",t)
+ showstate(reverse[t] or "<action>")
end
top=0
i=i+1
@@ -10808,7 +10930,7 @@ end
((l<1240 and 107) or (l<33900 and 1131) or 32768)+1
end
end
- local function processshape(tab,index)
+ local function processshape(tab,index,hack)
if not tab then
glyphs[index]={
boundingbox={ 0,0,0,0 },
@@ -10821,10 +10943,13 @@ end
x=0
y=0
width=false
+ lsb=0
r=0
top=0
stems=0
result={}
+ popped=3
+ procidx=index
xmin=0
xmax=0
ymin=0
@@ -10838,6 +10963,9 @@ end
updateregions(vsindex)
end
process(tab)
+ if hack then
+ return x,y
+ end
local boundingbox={
round(xmin),
round(ymin),
@@ -10892,6 +11020,8 @@ end
axis=false
regions=data.regions
justpass=streams==true
+ popped=3
+ seacs={}
if regions then
regions={ regions }
axis=data.factors or false
@@ -10905,6 +11035,8 @@ end
locals=false
globals=false
strings=false
+ popped=3
+ seacs={}
end
local function setwidths(private)
if not private then
@@ -10934,6 +11066,29 @@ end
for index=1,#charstrings do
processshape(charstrings[index],index-1)
end
+ if justpass and next(seacs) then
+ local charset=data.dictionaries[1].charset
+ if charset then
+ local lookup=table.swapped(charset)
+ for index,v in next,seacs do
+ local bindex=lookup[standardnames[v.base]]
+ local aindex=lookup[standardnames[v.accent]]
+ local bglyph=bindex and glyphs[bindex]
+ local aglyph=aindex and glyphs[aindex]
+ if bglyph and aglyph then
+ local jp=justpass
+ justpass=false
+ local x,y=processshape(charstrings[bindex+1],bindex,true)
+ justpass=jp
+ local base=bglyph.stream
+ local accent=aglyph.stream
+ local moveto=encode[-x-v.asb+v.adx]..chars[22]..encode[-y+v.ady]..chars[ 4]
+ base=sub(base,1,#base-1)
+ glyphs[index].stream=base..moveto..accent
+ end
+ end
+ end
+ end
stopparsing(fontdata,data)
else
report("no charstrings")
@@ -10950,6 +11105,7 @@ end
vsindex=dictionary.vsindex or 0
glyphs=glphs or {}
justpass=streams==true
+ seacs={}
globalbias,localbias=setbias(globals,locals,nobias)
nominalwidth,defaultwidth=setwidths(dictionary.private)
processshape(tab,index-1)
@@ -11296,10 +11452,10 @@ function readers.cffcheck(filename)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-cff”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-cff”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ttf” 44e61cef50dab9b1aaf48130f9367c34] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ttf” 44e61cef50dab9b1aaf48130f9367c34] ---
if not modules then modules={} end modules ['font-ttf']={
version=1.001,
@@ -12469,10 +12625,10 @@ function readers.gvar(f,fontdata,specification,glyphdata,shapedata)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ttf”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ttf”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-dsp” 5d3db0184c903829b2c5bddcb8cdb14c] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-dsp” 5d3db0184c903829b2c5bddcb8cdb14c] ---
if not modules then modules={} end modules ['font-dsp']={
version=1.001,
@@ -15719,10 +15875,10 @@ function readers.mvar(f,fontdata,specification)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-dsp”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-dsp”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oup” 0cef35af01739f52fd09feb5401192ae] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oup” 0cef35af01739f52fd09feb5401192ae] ---
if not modules then modules={} end modules ['font-oup']={
version=1.001,
@@ -18363,10 +18519,10 @@ function readers.expand(data)
expandlookups(sublookups)
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oup”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oup”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otl” ec0241b7465a7713e53c246e8e9fb2a8] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otl” ec0241b7465a7713e53c246e8e9fb2a8] ---
if not modules then modules={} end modules ['font-otl']={
version=1.001,
@@ -19070,10 +19226,10 @@ otf.coverup={
end
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otl”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otl”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oto” 52804afd96f4be005f513a012b874668] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oto” 24238a7c600d090a8ee88312321dd9b3] ---
if not modules then modules={} end modules ['font-oto']={
version=1.001,
@@ -19085,7 +19241,7 @@ if not modules then modules={} end modules ['font-oto']={
local concat,unpack=table.concat,table.unpack
local insert,remove=table.insert,table.remove
local format,gmatch,gsub,find,match,lower,strip=string.format,string.gmatch,string.gsub,string.find,string.match,string.lower,string.strip
-local type,next,tonumber,tostring,rawget=type,next,tonumber,tostring,rawget
+local type,next,tonumber,tostring=type,next,tonumber,tostring
local trace_baseinit=false trackers.register("otf.baseinit",function(v) trace_baseinit=v end)
local trace_singles=false trackers.register("otf.singles",function(v) trace_singles=v end)
local trace_multiples=false trackers.register("otf.multiples",function(v) trace_multiples=v end)
@@ -19531,10 +19687,10 @@ registerotffeature {
}
otf.basemodeinitializer=featuresinitializer
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-oto”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-oto”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otj” 66c7a910d95d4a52b81061de776898e1] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otj” 66c7a910d95d4a52b81061de776898e1] ---
if not modules then modules={} end modules ['font-otj']={
version=1.001,
@@ -20991,10 +21147,10 @@ function injections.handler(head,where)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otj”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otj”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ota” d6dfb94563d6a52675e274b2e673e4a6] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ota” d6dfb94563d6a52675e274b2e673e4a6] ---
if not modules then modules={} end modules ['font-ota']={
version=1.001,
@@ -21371,10 +21527,10 @@ directives.register("otf.analyze.useunicodemarks",function(v)
analyzers.useunicodemarks=v
end)
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ota”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ota”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ots” d6a0ce4b40cd4ee1895e2248dcf87d37] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ots” d0107799ec82da7f96dafe9626c5ee7f] ---
if not modules then modules={} end modules ['font-ots']={
version=1.001,
@@ -21466,6 +21622,7 @@ local find_node_tail=nuts.tail
local flush_node_list=nuts.flush_list
local flush_node=nuts.flush_node
local end_of_math=nuts.end_of_math
+local start_of_par=nuts.start_of_par
local setmetatable=setmetatable
local setmetatableindex=table.setmetatableindex
local nextnode=nuts.traversers.node
@@ -24436,7 +24593,7 @@ do
checkstep(head)
end
local initialrl=0
- if getid(head)==localpar_code and getsubtype(head)==0 then
+ if getid(head)==localpar_code and start_of_par(head) then
initialrl=pardirstate(head)
elseif direction==1 or direction=="TRT" then
initialrl=-1
@@ -24768,19 +24925,25 @@ registerotffeature {
plug=otf.pluginprocessor,
}
}
+local function markinitializer(tfmdata,value)
+ local properties=tfmdata.properties
+ properties.checkmarks=value
+end
+registerotffeature {
+ name="checkmarks",
+ description="check mark widths",
+ default=true,
+ initializers={
+ node=markinitializer,
+ },
+}
otf.handlers=handlers
+if context then
+ return
+else
+end
local setspacekerns=nodes.injections.setspacekerns if not setspacekerns then os.exit() end
-local tag="kern"
-if fontfeatures then
- function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
- local features=fontfeatures[font]
- local enabled=features and features.spacekern and features[tag]
- if enabled then
- setspacekerns(font,sequence)
- end
- return head,enabled
- end
-else
+local tag="kern"
function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
local shared=fontdata[font].shared
local features=shared and shared.features
@@ -24790,7 +24953,6 @@ else
end
return head,enabled
end
-end
local function hasspacekerns(data)
local resources=data.resources
local sequences=resources.sequences
@@ -24975,23 +25137,11 @@ registerotffeature {
node=spaceinitializer,
},
}
-local function markinitializer(tfmdata,value)
- local properties=tfmdata.properties
- properties.checkmarks=value
-end
-registerotffeature {
- name="checkmarks",
- description="check mark widths",
- default=true,
- initializers={
- node=markinitializer,
- },
-}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ots”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ots”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-osd” 39e92f6e575741646d75ea79e3be87f3] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-osd” 39e92f6e575741646d75ea79e3be87f3] ---
if not modules then modules={} end modules ['font-osd']={
version=1.001,
@@ -27423,10 +27573,10 @@ for i=1,nofscripts do
methods[scripts_two[i]]=method_two
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-osd”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-osd”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ocl” ba40df1a92b9b42a5c70d20c28f44759] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ocl” c1f4cbea3c4ec5002a04fc637b135711] ---
if not modules then modules={} end modules ['font-ocl']={
version=1.001,
@@ -27740,7 +27890,6 @@ do
local pdfshapes={}
local inkscape=runner()
if inkscape then
- local indices=fonts.getindices(tfmdata)
local descriptions=tfmdata.descriptions
local nofshapes=#svgshapes
local f_svgfile=formatters["temp-otf-svg-shape-%i.svg"]
@@ -27964,10 +28113,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-ocl”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-ocl”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otc” 1204a2fdc436e644127c0aa38ab69607] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otc” 1204a2fdc436e644127c0aa38ab69607] ---
if not modules then modules={} end modules ['font-otc']={
version=1.001,
@@ -28724,10 +28873,10 @@ end
otf.enhancers.enhance=enhance
otf.enhancers.register("check extra features",enhance)
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-otc”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-otc”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-onr” d4d2449b4084e6afb1837ae5835082cc] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-onr” 22572ec0f86f53631e14b6d1ed43ee51] ---
if not modules then modules={} end modules ['font-onr']={
version=1.001,
@@ -28737,7 +28886,7 @@ if not modules then modules={} end modules ['font-onr']={
license="see context related readme files"
}
local fonts,logs,trackers,resolvers=fonts,logs,trackers,resolvers
-local next,type,tonumber,rawget,rawset=next,type,tonumber,rawget,rawset
+local next,type,tonumber,rawset=next,type,tonumber,rawset
local match,lower,gsub,strip,find=string.match,string.lower,string.gsub,string.strip,string.find
local char,byte,sub=string.char,string.byte,string.sub
local abs=math.abs
@@ -29099,10 +29248,10 @@ function readers.getinfo(filename)
end
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-onr”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-onr”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-one” 987c5c5ed3754ad2feab80985067d59e] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-one” 987c5c5ed3754ad2feab80985067d59e] ---
if not modules then modules={} end modules ['font-one']={
version=1.001,
@@ -29813,10 +29962,10 @@ registerafmenhancer("normalize features",enhance_normalize_features)
registerafmenhancer("check extra features",otfenhancers.enhance)
registerafmenhancer("fix names",enhance_fix_names)
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-one”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-one”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-afk” 54d554530e75c57c56ee76234724e26d] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-afk” 54d554530e75c57c56ee76234724e26d] ---
if not modules then modules={} end modules ['font-afk']={
version=1.001,
@@ -29983,10 +30132,10 @@ fonts.handlers.afm.helpdata={
}
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-afk”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-afk”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-tfm” 3bbba3214fd0b8c6f35ad85592fc2917] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-tfm” 3bbba3214fd0b8c6f35ad85592fc2917] ---
if not modules then modules={} end modules ['luatex-fonts-tfm']={
version=1.001,
@@ -30501,10 +30650,10 @@ registertfmfeature {
}
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-tfm”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-tfm”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-lua” 55b281fb98f7bd848fc19928f376f647] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-lua” 55b281fb98f7bd848fc19928f376f647] ---
if not modules then modules={} end modules ['font-lua']={
version=1.001,
@@ -30544,10 +30693,10 @@ function readers.lua(specification)
return check_lua(specification,fullname)
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-lua”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-lua”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-def” f66c365dae4499f982d8bf16e5d37de3] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-def” c525b9f55da1c736a1f6939c0a6f8f00] ---
if not modules then modules={} end modules ['font-def']={
version=1.001,
@@ -30579,7 +30728,6 @@ local variants=allocate()
specifiers.variants=variants
definers.methods=definers.methods or {}
local internalized=allocate()
-local lastdefined=nil
local loadedfonts=constructors.loadedfonts
local designsizes=constructors.designsizes
local resolvefile=fontgoodies and fontgoodies.filenames and fontgoodies.filenames.resolve or function(s) return s end
@@ -30878,9 +31026,6 @@ function constructors.readanddefine(name,size)
end
return fontdata[id],id
end
-function definers.current()
- return lastdefined
-end
function definers.registered(hash)
local id=internalized[hash]
return id,id and fontdata[id]
@@ -30931,7 +31076,6 @@ function definers.read(specification,size,id)
end
end
end
- lastdefined=tfmdata or id
if not tfmdata then
report_defining("unknown font %a, loading aborted",specification.name)
elseif trace_defining and type(tfmdata)=="table" then
@@ -30947,12 +31091,14 @@ end
function font.getfont(id)
return fontdata[id]
end
-callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
+if not context then
+ callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
+end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-def”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-def”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-def” 5ad79120ebc5e60f4d322fb3ee13bffe] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-def” 5ad79120ebc5e60f4d322fb3ee13bffe] ---
if not modules then modules={} end modules ['luatex-fonts-def']={
version=1.001,
@@ -31033,10 +31179,10 @@ function fonts.definers.applypostprocessors(tfmdata)
return tfmdata
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-def”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-def”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-ext” 01015ab3758cdc2af29394e6d502a91a] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-ext” 01015ab3758cdc2af29394e6d502a91a] ---
if not modules then modules={} end modules ['luatex-fonts-ext']={
version=1.001,
@@ -31222,10 +31368,10 @@ registerotffeature {
}
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-ext”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-ext”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-tex” 77c374b0ef00c2fb12188ec42beb4257] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-tex” 77c374b0ef00c2fb12188ec42beb4257] ---
if not modules then modules={} end modules ['font-imp-tex']={
version=1.001,
@@ -31324,10 +31470,10 @@ registerotffeature {
description="arabic digits",
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-tex”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-tex”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-ligatures” 043daa4fcccf2560868da359d71d3a4a] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-ligatures” 043daa4fcccf2560868da359d71d3a4a] ---
if not modules then modules={} end modules ['font-imp-ligatures']={
version=1.001,
@@ -31441,10 +31587,10 @@ if context then
}
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-ligatures”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-ligatures”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-italics” fe1ca80fb5ea4a2f8d2d5c484e7ba913] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-italics” fe1ca80fb5ea4a2f8d2d5c484e7ba913] ---
if not modules then modules={} end modules ['font-imp-italics']={
version=1.001,
@@ -31550,10 +31696,10 @@ if context then
registerafmfeature(dimensions_specification)
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-italics”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-italics”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-effects” 73a660359a0ec71e44cc2b7225a715ac] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-effects” 73a660359a0ec71e44cc2b7225a715ac] ---
if not modules then modules={} end modules ['font-imp-effects']={
version=1.001,
@@ -31910,10 +32056,10 @@ local specification={
registerotffeature(specification)
registerafmfeature(specification)
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “font-imp-effects”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “font-imp-effects”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-lig” b9dbe77ce747d4c35bb2a20ffbe5aa51] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-lig” b9dbe77ce747d4c35bb2a20ffbe5aa51] ---
fonts.handlers.otf.addfeature {
@@ -33982,10 +34128,10 @@ fonts.handlers.otf.addfeature {
["type"]="ligature",
}
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-lig”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-lig”] ---
-do --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-gbn” d25472d54c4841db43a745764a63533e] ---
+do --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-gbn” d25472d54c4841db43a745764a63533e] ---
if not modules then modules={} end modules ['luatex-fonts-gbn']={
version=1.001,
@@ -34250,7 +34396,7 @@ function nodes.simple_font_handler(head,groupcode,size,packtype,direction)
return head
end
-end --- [luaotfload, fontloader-2019-10-29.lua scope for “fonts-gbn”] ---
+end --- [luaotfload, fontloader-2020-02-02.lua scope for “fonts-gbn”] ---
--- vim:ft=lua:sw=2:ts=8:et:tw=79
diff --git a/macros/luatex/generic/luaotfload/fontloader-basics-gen.lua b/macros/luatex/generic/luaotfload/fontloader-basics-gen.lua
index 3959ca0222..f52fec6967 100644
--- a/macros/luatex/generic/luaotfload/fontloader-basics-gen.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-basics-gen.lua
@@ -189,7 +189,7 @@ local readables = { }
local usingjit = jit
if not caches.namespace or caches.namespace == "" or caches.namespace == "context" then
- caches.namespace = 'generic'
+ caches.namespace = 'generic-dev'
end
do
diff --git a/macros/luatex/generic/luaotfload/fontloader-basics-nod.lua b/macros/luatex/generic/luaotfload/fontloader-basics-nod.lua
index 172fcc7f7e..be82277bd4 100644
--- a/macros/luatex/generic/luaotfload/fontloader-basics-nod.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-basics-nod.lua
@@ -279,3 +279,14 @@ if not nuts.setreplace then
end
end
+
+do
+
+ local getsubtype = nuts.getsubtype
+
+ function nuts.start_of_par(n)
+ local s = getsubtype(n)
+ return s == 0 or s == 2 -- sorry, hardcoded, won't change anyway
+ end
+
+end
diff --git a/macros/luatex/generic/luaotfload/fontloader-data-con.lua b/macros/luatex/generic/luaotfload/fontloader-data-con.lua
index c79fca7c5c..ec2251b353 100644
--- a/macros/luatex/generic/luaotfload/fontloader-data-con.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-data-con.lua
@@ -6,6 +6,7 @@ if not modules then modules = { } end modules ['data-con'] = {
license = "see context related readme files"
}
+local setmetatable = setmetatable
local format, lower, gsub = string.format, string.lower, string.gsub
local trace_cache = false trackers.register("resolvers.cache", function(v) trace_cache = v end)
@@ -13,21 +14,28 @@ local trace_containers = false trackers.register("resolvers.containers", functi
local trace_storage = false trackers.register("resolvers.storage", function(v) trace_storage = v end)
--[[ldx--
-<p>Once we found ourselves defining similar cache constructs
-several times, containers were introduced. Containers are used
-to collect tables in memory and reuse them when possible based
-on (unique) hashes (to be provided by the calling function).</p>
+<p>Once we found ourselves defining similar cache constructs several times,
+containers were introduced. Containers are used to collect tables in memory and
+reuse them when possible based on (unique) hashes (to be provided by the calling
+function).</p>
-<p>Caching to disk is disabled by default. Version numbers are
-stored in the saved table which makes it possible to change the
-table structures without bothering about the disk cache.</p>
+<p>Caching to disk is disabled by default. Version numbers are stored in the
+saved table which makes it possible to change the table structures without
+bothering about the disk cache.</p>
-<p>Examples of usage can be found in the font related code.</p>
+<p>Examples of usage can be found in the font related code. This code is not
+ideal but we need it in generic too so we compromise.</p>
--ldx]]--
-containers = containers or { }
-local containers = containers
-containers.usecache = true
+containers = containers or { }
+local containers = containers
+containers.usecache = true
+
+local getwritablepath = caches.getwritablepath
+local getreadablepaths = caches.getreadablepaths
+local cacheiswritable = caches.is_writable
+local loaddatafromcache = caches.loaddata
+local savedataincache = caches.savedata
local report_containers = logs.reporter("resolvers","containers")
@@ -36,11 +44,11 @@ local allocated = { }
local mt = {
__index = function(t,k)
if k == "writable" then
- local writable = caches.getwritablepath(t.category,t.subcategory) or { "." }
+ local writable = getwritablepath(t.category,t.subcategory) or { "." }
t.writable = writable
return writable
elseif k == "readables" then
- local readables = caches.getreadablepaths(t.category,t.subcategory) or { "." }
+ local readables = getreadablepaths(t.category,t.subcategory) or { "." }
t.readables = readables
return readables
end
@@ -64,8 +72,8 @@ function containers.define(category, subcategory, version, enabled)
enabled = enabled,
version = version or math.pi, -- after all, this is TeX
trace = false,
- -- writable = caches.getwritablepath and caches.getwritablepath (category,subcategory) or { "." },
- -- readables = caches.getreadablepaths and caches.getreadablepaths(category,subcategory) or { "." },
+ -- writable = getwritablepath and getwritablepath (category,subcategory) or { "." },
+ -- readables = getreadablepaths and getreadablepaths(category,subcategory) or { "." },
}
setmetatable(s,mt)
c[subcategory] = s
@@ -75,7 +83,7 @@ function containers.define(category, subcategory, version, enabled)
end
function containers.is_usable(container,name)
- return container.enabled and caches and caches.is_writable(container.writable, name)
+ return container.enabled and caches and cacheiswritable(container.writable, name)
end
function containers.is_valid(container,name)
@@ -91,7 +99,7 @@ function containers.read(container,name)
local storage = container.storage
local stored = storage[name]
if not stored and container.enabled and caches and containers.usecache then
- stored = caches.loaddata(container.readables,name,container.writable)
+ stored = loaddatafromcache(container.readables,name,container.writable)
if stored and stored.cache_version == container.version then
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","load",container.subcategory,name)
@@ -108,17 +116,20 @@ function containers.read(container,name)
return stored
end
-function containers.write(container, name, data)
+function containers.write(container, name, data, fast)
if data then
data.cache_version = container.version
if container.enabled and caches then
- local unique, shared = data.unique, data.shared
- data.unique, data.shared = nil, nil
- caches.savedata(container.writable, name, data)
+ local unique = data.unique
+ local shared = data.shared
+ data.unique = nil
+ data.shared = nil
+ savedataincache(container.writable, name, data, fast)
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","save",container.subcategory,name)
end
- data.unique, data.shared = unique, shared
+ data.unique = unique
+ data.shared = shared
end
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","store",container.subcategory,name)
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-cff.lua b/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
index a19acc1a1d..5f79ba7a33 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-cff.lua
@@ -27,7 +27,7 @@ if not modules then modules = { } end modules ['font-cff'] = {
-- the other hand, we can now feed back cff2 stuff.
local next, type, tonumber, rawget = next, type, tonumber, rawget
-local byte, char, gmatch = string.byte, string.char, string.gmatch
+local byte, char, gmatch, sub = string.byte, string.char, string.gmatch, string.sub
local concat, remove, unpack = table.concat, table.remove, table.unpack
local floor, abs, round, ceil, min, max = math.floor, math.abs, math.round, math.ceil, math.min, math.max
local P, C, R, S, C, Cs, Ct = lpeg.P, lpeg.C, lpeg.R, lpeg.S, lpeg.C, lpeg.Cs, lpeg.Ct
@@ -145,6 +145,38 @@ local defaultstrings = { [0] = -- taken from ff
"Black", "Bold", "Book", "Light", "Medium", "Regular", "Roman", "Semibold",
}
+local standardnames = { [0] = -- needed for seac
+ false, false, false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false, false,
+ "space", "exclam", "quotedbl", "numbersign", "dollar", "percent",
+ "ampersand", "quoteright", "parenleft", "parenright", "asterisk", "plus",
+ "comma", "hyphen", "period", "slash", "zero", "one", "two", "three", "four",
+ "five", "six", "seven", "eight", "nine", "colon", "semicolon", "less",
+ "equal", "greater", "question", "at", "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", "bracketleft", "backslash", "bracketright", "asciicircum",
+ "underscore", "quoteleft", "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", "braceleft", "bar", "braceright", "asciitilde", false, false, false,
+ false, false, false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false, false, false,
+ false, false, false, false, false, false, false, false, false, "exclamdown",
+ "cent", "sterling", "fraction", "yen", "florin", "section", "currency",
+ "quotesingle", "quotedblleft", "guillemotleft", "guilsinglleft",
+ "guilsinglright", "fi", "fl", false, "endash", "dagger", "daggerdbl",
+ "periodcentered", false, "paragraph", "bullet", "quotesinglbase",
+ "quotedblbase", "quotedblright", "guillemotright", "ellipsis", "perthousand",
+ false, "questiondown", false, "grave", "acute", "circumflex", "tilde",
+ "macron", "breve", "dotaccent", "dieresis", false, "ring", "cedilla", false,
+ "hungarumlaut", "ogonek", "caron", "emdash", false, false, false, false,
+ false, false, false, false, false, false, false, false, false, false, false,
+ false, "AE", false, "ordfeminine", false, false, false, false, "Lslash",
+ "Oslash", "OE", "ordmasculine", false, false, false, false, false, "ae",
+ false, false, false, "dotlessi", false, false, "lslash", "oslash", "oe",
+ "germandbls", false, false, false, false
+}
+
local cffreaders = {
readbyte,
readushort,
@@ -655,6 +687,7 @@ do
local x = 0
local y = 0
local width = false
+ local lsb = 0
local r = 0
local stems = 0
local globalbias = 0
@@ -678,6 +711,9 @@ do
local factors = false
local axis = false
local vsindex = 0
+ local justpass = false
+ local seacs = { }
+ local procidx = nil
local function showstate(where)
report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
@@ -1264,7 +1300,7 @@ do
end
local function divide()
- if version == 1 then
+ if version == "cff" then
local d = stack[top]
top = top - 1
stack[top] = stack[top] / d
@@ -1272,7 +1308,7 @@ do
end
local function closepath()
- if version == 1 then
+ if version == "cff" then
if trace_charstrings then
showstate("closepath")
end
@@ -1281,65 +1317,90 @@ do
end
local function hsbw()
- if version == 1 then
+ if version == "cff" then
if trace_charstrings then
showstate("hsbw")
end
- -- lsb = stack[top-1]
+ lsb = stack[top-1] or 0
width = stack[top]
end
top = 0
end
- local function seac()
- if version == 1 then
+ local function sbw()
+ if version == "cff" then
if trace_charstrings then
- showstate("seac")
+ showstate("sbw")
end
+ lsb = stack[top-3]
+ width = stack[top-1]
end
top = 0
end
- local function sbw()
- if version == 1 then
+ -- asb adx ady bchar achar seac (accented characters)
+
+ local function seac()
+ if version == "cff" then
if trace_charstrings then
- showstate("sbw")
+ showstate("seac")
end
- width = stack[top-1]
end
top = 0
end
- -- these are probably used for special cases i.e. call out to postscript
+ -- These are probably used for special cases i.e. call out to the
+ -- postscript interpreter (p 61 of the spec as well as chapter 8).
+ --
+ -- This needs checking (I have to ask Taco next time we meet.)
+
+ local popped = 3
+ local hints = 3
+
+ -- arg1 ... argn n othersubr# <callothersubr> (on postscript stack)
local function callothersubr()
- if version == 1 then
- -- we don't support this (ok, we could mimick these othersubs)
+ if version == "cff" then
if trace_charstrings then
- showstate("callothersubr (unsupported)")
+ showstate("callothersubr")
+ end
+ if stack[top] == hints then
+ popped = stack[top-2]
+ else
+ popped = 3
end
+ local t = stack[top-1]
+ if t then
+ top = top - (t + 2)
+ if top < 0 then
+ top = 0
+ end
+ else
+ top = 0
+ end
+ else
+ top = 0
end
- top = 0
end
+ -- <pop> number (from postscript stack)
+
local function pop()
- if version == 1 then
- -- we don't support this
+ if version == "cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("pop")
end
top = top + 1
- stack[top] = 0 -- a dummy
+ stack[top] = popped
else
top = 0
end
end
local function setcurrentpoint()
- if version == 1 then
- -- we don't support this
+ if version == "cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("setcurrentpoint (unsupported)")
end
x = x + stack[top-1]
y = y + stack[top]
@@ -1489,6 +1550,41 @@ do
hvcurveto, -- 31
}
+ local reverse = { [0] =
+ "unsupported",
+ "getstem",
+ "unsupported",
+ "getstem",
+ "vmoveto",
+ "rlineto",
+ "hlineto",
+ "vlineto",
+ "rrcurveto",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "hsbw",
+ "unsupported",
+ "setvsindex",
+ "blend",
+ "unsupported",
+ "getstem",
+ "getmask",
+ "getmask",
+ "rmoveto",
+ "hmoveto",
+ "getstem",
+ "rcurveline",
+ "rlinecurve",
+ "vvcurveto",
+ "hhcurveto",
+ "unsupported",
+ "unsupported",
+ "vhcurveto",
+ "hvcurveto",
+ }
+
local subactions = {
-- cff 1
[000] = dotsection,
@@ -1540,6 +1636,7 @@ do
for i=1132,2048 do
t[i] = char(28,band(rshift(i,8),0xFF),band(i,0xFF))
end
+ -- we could inline some ...
setmetatableindex(encode,function(t,k)
-- 16.16-bit signed fixed value
local r = round(k)
@@ -1625,7 +1722,7 @@ do
local function call(scope,list,bias) -- ,process)
depth = depth + 1
if top == 0 then
- showstate(formatters["unknown %s call %s"](scope,"?"))
+ showstate(formatters["unknown %s call %s, case %s"](scope,"?",1))
top = 0
else
local index = stack[top] + bias
@@ -1637,7 +1734,7 @@ do
if tab then
process(tab)
else
- showstate(formatters["unknown %s call %s"](scope,index))
+ showstate(formatters["unknown %s call %s, case %s"](scope,index,2))
top = 0
end
end
@@ -1646,8 +1743,6 @@ do
-- precompiling and reuse is much slower than redoing the calls
- local justpass = false
-
-- local function decode(str)
-- local a, b, c, d, e = byte(str,1,5)
-- if a == 28 then
@@ -1765,6 +1860,17 @@ do
r = r + 1 ; result[r] = chars[12]
r = r + 1 ; result[r] = chars[t]
top = 0
+ elseif t == 6 then
+ seacs[procidx] = {
+ asb = stack[1],
+ adx = stack[2],
+ ady = stack[3],
+ base = stack[4],
+ accent = stack[5],
+ width = width,
+ lsb = lsb,
+ }
+ top = 0
else
local a = subactions[t]
if a then
@@ -1796,46 +1902,56 @@ do
-- cff 1: (when cff2 strip them)
elseif t == 1 or t == 3 or t == 18 or operation == 23 then
p_getstem() -- at the start
-if true then
- if top > 0 then
- for i=1,top do
- r = r + 1 ; result[r] = encode[stack[i]]
+ if true then
+ if top > 0 then
+ for i=1,top do
+ r = r + 1 ; result[r] = encode[stack[i]]
+ end
+ top = 0
end
+ r = r + 1 ; result[r] = chars[t]
+ else
top = 0
end
- r = r + 1 ; result[r] = chars[t]
-else
- top = 0
-end
i = i + 1
-- cff 1: (when cff2 strip them)
elseif t == 19 or t == 20 then
local s = p_getmask() or 0 -- after the stems
-if true then
- if top > 0 then
- for i=1,top do
- r = r + 1 ; result[r] = encode[stack[i]]
+ if true then
+ if top > 0 then
+ for i=1,top do
+ r = r + 1 ; result[r] = encode[stack[i]]
+ end
+ top = 0
+ end
+ r = r + 1 ; result[r] = chars[t]
+ for j=1,s do
+ i = i + 1
+ r = r + 1 ; result[r] = chars[tab[i]]
end
+ else
+ i = i + s
top = 0
end
- r = r + 1 ; result[r] = chars[t]
- for j=1,s do
- i = i + 1
- r = r + 1 ; result[r] = chars[tab[i]]
- end
-else
- i = i + s
- top = 0
-end
i = i + 1
-- cff 1: closepath
elseif t == 9 then
top = 0
i = i + 1
elseif t == 13 then
- local s = hsbw() or 0
- i = i + s + 1
+ hsbw()
+ if version == "cff" then
+ -- we do a moveto over lsb
+ r = r + 1 ; result[r] = encode[lsb]
+ r = r + 1 ; result[r] = chars[22]
+ else
+ -- lsb is supposed to be zero
+ end
+ i = i + 1
else
+ if trace_charstrings then
+ showstate(reverse[t] or "<action>")
+ end
if top > 0 then
for i=1,top do
r = r + 1 ; result[r] = encode[stack[i]]
@@ -1856,7 +1972,7 @@ end
end
else
if trace_charstrings then
- showvalue("<action>",t)
+ showstate(reverse[t] or "<action>")
end
top = 0
i = i + 1
@@ -1915,7 +2031,7 @@ end
end
end
- local function processshape(tab,index)
+ local function processshape(tab,index,hack)
if not tab then
glyphs[index] = {
@@ -1931,10 +2047,13 @@ end
x = 0
y = 0
width = false
+ lsb = 0
r = 0
top = 0
stems = 0
result = { } -- we could reuse it when only boundingbox calculations are needed
+ popped = 3
+ procidx = index
xmin = 0
xmax = 0
@@ -1952,6 +2071,10 @@ end
process(tab)
+ if hack then
+ return x, y
+ end
+
local boundingbox = {
round(xmin),
round(ymin),
@@ -2016,6 +2139,8 @@ end
axis = false
regions = data.regions
justpass = streams == true
+ popped = 3
+ seacs = { }
if regions then
regions = { regions } -- needs checking
axis = data.factors or false
@@ -2030,6 +2155,8 @@ end
locals = false
globals = false
strings = false
+ popped = 3
+ seacs = { }
end
local function setwidths(private)
@@ -2064,7 +2191,35 @@ end
startparsing(fontdata,data,streams)
for index=1,#charstrings do
processshape(charstrings[index],index-1)
--- charstrings[index] = nil -- free memory (what if used more often?)
+ end
+ if justpass and next(seacs) then
+ -- old type 1 stuff ... seacs
+ local charset = data.dictionaries[1].charset
+ if charset then
+ local lookup = table.swapped(charset)
+ for index, v in next, seacs do
+ local bindex = lookup[standardnames[v.base]]
+ local aindex = lookup[standardnames[v.accent]]
+ local bglyph = bindex and glyphs[bindex]
+ local aglyph = aindex and glyphs[aindex]
+ if bglyph and aglyph then
+ -- this is a real ugly hack but we seldom enter this branch (e.g. old lbr)
+ local jp = justpass
+ justpass = false
+ local x, y = processshape(charstrings[bindex+1],bindex,true)
+ justpass = jp
+ --
+ local base = bglyph.stream
+ local accent = aglyph.stream
+ local moveto = encode[-x-v.asb+v.adx] .. chars[22]
+ .. encode[-y +v.ady] .. chars[ 4]
+ -- prune an endchar
+ base = sub(base,1,#base-1)
+ -- combine them
+ glyphs[index].stream = base .. moveto .. accent
+ end
+ end
+ end
end
stopparsing(fontdata,data)
else
@@ -2085,6 +2240,7 @@ end
glyphs = glphs or { }
justpass = streams == true
+ seacs = { }
globalbias, localbias = setbias(globals,locals,nobias)
nominalwidth, defaultwidth = setwidths(dictionary.private)
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-con.lua b/macros/luatex/generic/luaotfload/fontloader-font-con.lua
index 652794142b..e42d20d4e1 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-con.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-con.lua
@@ -40,7 +40,6 @@ local setmetatableindex = table.setmetatableindex
-- will be directives
constructors.dontembed = allocate()
-constructors.autocleanup = true
constructors.namemode = "fullpath" -- will be a function
constructors.version = 1.01
@@ -51,6 +50,8 @@ constructors.cacheintex = true -- so we see the original table in fonts.fon
constructors.addtounicode = true
+constructors.fixprotrusion = true
+
-- This might become an interface:
local designsizes = allocate()
@@ -134,21 +135,10 @@ make this profitable and the <l n='lua'/> based variant was just faster. A days
wasted day but an experience richer.</p>
--ldx]]--
--- we can get rid of the tfm instance when we have fast access to the
--- scaled character dimensions at the tex end, e.g. a fontobject.width
--- actually we already have some of that now as virtual keys in glyphs
---
--- flushing the kern and ligature tables from memory saves a lot (only
--- base mode) but it complicates vf building where the new characters
--- demand this data .. solution: functions that access them
-
function constructors.cleanuptable(tfmdata)
- if constructors.autocleanup and tfmdata.properties.virtualized then
- for k, v in next, tfmdata.characters do
- if v.commands then v.commands = nil end
- -- if v.kerns then v.kerns = nil end
- end
- end
+ -- This no longer makes sense because the addition of font.getcopy and its
+ -- possible usage in generic implicates that we need to return the whole
+ -- lot now.
end
-- experimental, sharing kerns (unscaled and scaled) saves memory
@@ -466,6 +456,7 @@ function constructors.scale(tfmdata,specification)
target.size = scaledpoints
--
target.encodingbytes = properties.encodingbytes or 1
+ target.subfont = properties.subfont
target.embedding = properties.embedding or "subset"
target.tounicode = 1
target.cidinfo = properties.cidinfo
@@ -598,7 +589,10 @@ function constructors.scale(tfmdata,specification)
--
constructors.enhanceparameters(targetparameters) -- official copies for us, now virtual
--
- local protrusionfactor = (targetquad ~= 0 and 1000/targetquad) or 0
+ -- I need to fix this in luatex ... get rid of quad there so that we can omit this here.
+ --
+ local protrusionfactor = constructors.fixprotrusion and ((targetquad ~= 0 and 1000/targetquad) or 1) or 1
+ --
local scaledwidth = defaultwidth * hdelta
local scaledheight = defaultheight * vdelta
local scaleddepth = defaultdepth * vdelta
@@ -1034,6 +1028,7 @@ function constructors.finalize(tfmdata)
properties.psname = properties.psname or tfmdata.psname
--
properties.encodingbytes = tfmdata.encodingbytes or 1
+ properties.subfont = tfmdata.subfont or nil
properties.embedding = tfmdata.embedding or "subset"
properties.tounicode = tfmdata.tounicode or 1
properties.cidinfo = tfmdata.cidinfo or nil
@@ -1067,6 +1062,7 @@ function constructors.finalize(tfmdata)
tfmdata.psname = nil
--
tfmdata.encodingbytes = nil
+ tfmdata.subfont = nil
tfmdata.embedding = nil
tfmdata.tounicode = nil
tfmdata.cidinfo = nil
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-def.lua b/macros/luatex/generic/luaotfload/fontloader-font-def.lua
index f3d0f81871..e287bf79ce 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-def.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-def.lua
@@ -45,7 +45,6 @@ specifiers.variants = variants
definers.methods = definers.methods or { }
local internalized = allocate() -- internal tex numbers (private)
-local lastdefined = nil -- we don't want this one to end up in s-tra-02
local loadedfonts = constructors.loadedfonts
local designsizes = constructors.designsizes
@@ -455,10 +454,6 @@ not gain much. By the way, passing id's back to in the callback was
introduced later in the development.</p>
--ldx]]--
-function definers.current() -- or maybe current
- return lastdefined
-end
-
function definers.registered(hash)
local id = internalized[hash]
return id, id and fontdata[id]
@@ -511,7 +506,6 @@ function definers.read(specification,size,id) -- id can be optional, name can al
end
end
end
- lastdefined = tfmdata or id -- todo ! ! ! ! !
if not tfmdata then -- or id?
report_defining( "unknown font %a, loading aborted",specification.name)
elseif trace_defining and type(tfmdata) == "table" then
@@ -533,4 +527,6 @@ end
<p>We overload the <l n='tfm'/> reader.</p>
--ldx]]--
-callbacks.register('define_font', definers.read, "definition of fonts (tfmdata preparation)")
+if not context then
+ callbacks.register('define_font', definers.read, "definition of fonts (tfmdata preparation)")
+end
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-ini.lua b/macros/luatex/generic/luaotfload/fontloader-font-ini.lua
index 462e30bf90..8bab6d9029 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-ini.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-ini.lua
@@ -52,3 +52,7 @@ fonts.privateoffsets = {
mathbase = 0xFF000, -- used for hidden (virtual math)
keepnames = false, -- when set to true names are always kept (not for context)
}
+
+if node and not tex.getfontoffamily then
+ tex.getfontoffamily = node.family_font -- we moved this
+end
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-ocl.lua b/macros/luatex/generic/luaotfload/fontloader-font-ocl.lua
index 3752203fa2..77e1538f94 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-ocl.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-ocl.lua
@@ -363,7 +363,6 @@ local function pdftovirtual(tfmdata,pdfshapes,kind) -- kind = png|svg
local actuale = { "pdf", "page", e } -- saves tables
--
local vfimage = lpdf and lpdf.vfimage or function(wd,ht,dp,data,name)
- -- needed for generic (if used there at all)
local name = storepdfdata(data)
return { "image", { filename = name, width = wd, height = ht, depth = dp } }
end
@@ -439,6 +438,8 @@ do
local xmlfirst = xml.first
function otfsvg.filterglyph(entry,index)
+ -- we only support decompression in lmtx, so one needs to wipe the
+ -- cache when invalid xml is reported
local svg = xmlconvert(entry.data)
local root = svg and xmlfirst(svg,"/svg[@id='glyph"..index.."']")
local data = root and tostring(root)
@@ -483,7 +484,7 @@ do
local pdfshapes = { }
local inkscape = runner()
if inkscape then
- local indices = fonts.getindices(tfmdata)
+ -- local indices = fonts.getindices(tfmdata)
local descriptions = tfmdata.descriptions
local nofshapes = #svgshapes
local f_svgfile = formatters["temp-otf-svg-shape-%i.svg"]
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-onr.lua b/macros/luatex/generic/luaotfload/fontloader-font-onr.lua
index 188aaf6449..fc6bead588 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-onr.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-onr.lua
@@ -21,7 +21,7 @@ add features.</p>
local fonts, logs, trackers, resolvers = fonts, logs, trackers, resolvers
-local next, type, tonumber, rawget, rawset = next, type, tonumber, rawget, rawset
+local next, type, tonumber, rawset = next, type, tonumber, rawset
local match, lower, gsub, strip, find = string.match, string.lower, string.gsub, string.strip, string.find
local char, byte, sub = string.char, string.byte, string.sub
local abs = math.abs
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-oto.lua b/macros/luatex/generic/luaotfload/fontloader-font-oto.lua
index 4d112ac316..6f5f2fb418 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-oto.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-oto.lua
@@ -9,7 +9,7 @@ if not modules then modules = { } end modules ['font-oto'] = { -- original tex
local concat, unpack = table.concat, table.unpack
local insert, remove = table.insert, table.remove
local format, gmatch, gsub, find, match, lower, strip = string.format, string.gmatch, string.gsub, string.find, string.match, string.lower, string.strip
-local type, next, tonumber, tostring, rawget = type, next, tonumber, tostring, rawget
+local type, next, tonumber, tostring = type, next, tonumber, tostring
local trace_baseinit = false trackers.register("otf.baseinit", function(v) trace_baseinit = v end)
local trace_singles = false trackers.register("otf.singles", function(v) trace_singles = v end)
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-otr.lua b/macros/luatex/generic/luaotfload/fontloader-font-otr.lua
index 4fe0a6a976..e726053202 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-otr.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-otr.lua
@@ -65,7 +65,7 @@ if not modules then modules = { } end modules ['font-otr'] = {
-- require("char-ini")
-- end
-local next, type, tonumber = next, type, tonumber
+local next, type, tonumber, rawget = next, type, tonumber, rawget
local byte, lower, char, gsub = string.byte, string.lower, string.char, string.gsub
local fullstrip = string.fullstrip
local floor, round = math.floor, math.round
diff --git a/macros/luatex/generic/luaotfload/fontloader-font-ots.lua b/macros/luatex/generic/luaotfload/fontloader-font-ots.lua
index 5091fd7657..c4f89c156b 100644
--- a/macros/luatex/generic/luaotfload/fontloader-font-ots.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-font-ots.lua
@@ -213,6 +213,7 @@ local find_node_tail = nuts.tail
local flush_node_list = nuts.flush_list
local flush_node = nuts.flush_node
local end_of_math = nuts.end_of_math
+local start_of_par = nuts.start_of_par
local setmetatable = setmetatable
local setmetatableindex = table.setmetatableindex
@@ -3804,7 +3805,7 @@ do
local initialrl = 0
- if getid(head) == localpar_code and getsubtype(head) == 0 then
+ if getid(head) == localpar_code and start_of_par(head) then
initialrl = pardirstate(head)
elseif direction == 1 or direction == "TRT" then
initialrl = -1
@@ -3958,7 +3959,7 @@ do
elseif id == dir_code then
topstack, rlmode = txtdirstate(start,dirstack,topstack,rlparmode)
start = getnext(start)
- -- elseif id == localpar_code then
+ -- elseif id == localpar_code and start_of_par(start) then
-- rlparmode, rlmode = pardirstate(start)
-- start = getnext(start)
else
@@ -4042,7 +4043,7 @@ do
elseif id == dir_code then
topstack, rlmode = txtdirstate(start,dirstack,topstack,rlparmode)
start = getnext(start)
- -- elseif id == localpar_code then
+ -- elseif id == localpar_code and start_of_par(start) then
-- rlparmode, rlmode = pardirstate(start)
-- start = getnext(start)
else
@@ -4153,7 +4154,7 @@ do
elseif id == dir_code then
topstack, rlmode = txtdirstate(start,dirstack,topstack,rlparmode)
start = getnext(start)
- -- elseif id == localpar_code then
+ -- elseif id == localpar_code and start_of_par(start) then
-- rlparmode, rlmode = pardirstate(start)
-- start = getnext(start)
else
@@ -4234,9 +4235,26 @@ registerotffeature {
}
}
+-- Moved here (up) a bit. This doesn't really belong in generic so it will
+-- move to a context module some day.
+
+local function markinitializer(tfmdata,value)
+ local properties = tfmdata.properties
+ properties.checkmarks = value
+end
+
+registerotffeature {
+ name = "checkmarks",
+ description = "check mark widths",
+ default = true,
+ initializers = {
+ node = markinitializer,
+ },
+}
+
-- This can be used for extra handlers, but should be used with care! We implement one
-- here but some more can be found in the osd (script devanagary) file. Now watch out:
--- when a handlers has steps, it is called as the other ones, but when we have no steps,
+-- when a handler has steps, it is called as the other ones, but when we have no steps,
-- we use a different call:
--
-- function(head,dataset,sequence,initialrl,font,attr)
@@ -4247,22 +4265,28 @@ registerotffeature {
otf.handlers = handlers
+if context then
+ return
+else
+ -- todo: move the following code someplace else
+end
+
local setspacekerns = nodes.injections.setspacekerns if not setspacekerns then os.exit() end
-local tag = "kern" -- maybe some day a merge
+local tag = "kern"
-if fontfeatures then
+-- if fontfeatures then
- function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
- local features = fontfeatures[font]
- local enabled = features and features.spacekern and features[tag]
- if enabled then
- setspacekerns(font,sequence)
- end
- return head, enabled
- end
+-- function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
+-- local features = fontfeatures[font]
+-- local enabled = features and features.spacekern and features[tag]
+-- if enabled then
+-- setspacekerns(font,sequence)
+-- end
+-- return head, enabled
+-- end
-else -- generic (no hashes)
+-- else -- generic (no hashes)
function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
local shared = fontdata[font].shared
@@ -4274,7 +4298,7 @@ else -- generic (no hashes)
return head, enabled
end
-end
+-- end
-- There are fonts out there that change the space but we don't do that kind of
-- things in TeX.
@@ -4392,7 +4416,7 @@ local function spaceinitializer(tfmdata,value) -- attr
if rules then
-- not now: analyze (simple) rules
elseif not coverage then
- -- nothng to do
+ -- nothing to do
elseif kind == "gpos_single" then
-- makes no sense in TeX
elseif kind == "gpos_pair" then
@@ -4476,17 +4500,3 @@ registerotffeature {
node = spaceinitializer,
},
}
-
-local function markinitializer(tfmdata,value)
- local properties = tfmdata.properties
- properties.checkmarks = value
-end
-
-registerotffeature {
- name = "checkmarks",
- description = "check mark widths",
- default = true,
- initializers = {
- node = markinitializer,
- },
-}
diff --git a/macros/luatex/generic/luaotfload/fontloader-l-file.lua b/macros/luatex/generic/luaotfload/fontloader-l-file.lua
index 1b039a4386..d0af94f09d 100644
--- a/macros/luatex/generic/luaotfload/fontloader-l-file.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-l-file.lua
@@ -76,17 +76,27 @@ local P, R, S, C, Cs, Cp, Cc, Ct = lpeg.P, lpeg.R, lpeg.S, lpeg.C, lpeg.Cs, lpeg
local attributes = lfs.attributes
function lfs.isdir(name)
- return attributes(name,"mode") == "directory"
+ if name then
+ return attributes(name,"mode") == "directory"
+ end
end
function lfs.isfile(name)
- local a = attributes(name,"mode")
- return a == "file" or a == "link" or nil
+ if name then
+ local a = attributes(name,"mode")
+ return a == "file" or a == "link" or nil
+ end
end
function lfs.isfound(name)
- local a = attributes(name,"mode")
- return (a == "file" or a == "link") and name or nil
+ if name then
+ local a = attributes(name,"mode")
+ return (a == "file" or a == "link") and name or nil
+ end
+end
+
+function lfs.modification(name)
+ return name and attributes(name,"modification") or nil
end
if sandbox then
diff --git a/macros/luatex/generic/luaotfload/fontloader-l-io.lua b/macros/luatex/generic/luaotfload/fontloader-l-io.lua
index fa3ad3c4cd..a955262a31 100644
--- a/macros/luatex/generic/luaotfload/fontloader-l-io.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-l-io.lua
@@ -13,7 +13,7 @@ local concat = table.concat
----- floor = math.floor
local type = type
-if string.find(os.getenv("PATH"),";",1,true) then
+if string.find(os.getenv("PATH") or "",";",1,true) then
io.fileseparator, io.pathseparator = "\\", ";"
else
io.fileseparator, io.pathseparator = "/" , ":"
diff --git a/macros/luatex/generic/luaotfload/fontloader-l-lua.lua b/macros/luatex/generic/luaotfload/fontloader-l-lua.lua
index 51399216cc..f411230d4a 100644
--- a/macros/luatex/generic/luaotfload/fontloader-l-lua.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-l-lua.lua
@@ -37,9 +37,9 @@ end
-- this is lmtx only:
-if lua and lua.openfile then
- io.open = lua.openfile
-end
+-- if lua and lua.openfile then
+-- io.open = lua.openfile
+-- end
-- lpeg
diff --git a/macros/luatex/generic/luaotfload/fontloader-l-table.lua b/macros/luatex/generic/luaotfload/fontloader-l-table.lua
index e828203867..98b377bdc1 100644
--- a/macros/luatex/generic/luaotfload/fontloader-l-table.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-l-table.lua
@@ -6,7 +6,7 @@ if not modules then modules = { } end modules ['l-table'] = {
license = "see context related readme files"
}
-local type, next, tostring, tonumber, select = type, next, tostring, tonumber, select
+local type, next, tostring, tonumber, select, rawget = type, next, tostring, tonumber, select, rawget
local table, string = table, string
local concat, sort = table.concat, table.sort
local format, lower, dump = string.format, string.lower, string.dump
diff --git a/macros/luatex/generic/luaotfload/fontloader-reference.lua b/macros/luatex/generic/luaotfload/fontloader-reference.lua
index b8a21fc937..ce2794cf36 100644
--- a/macros/luatex/generic/luaotfload/fontloader-reference.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-reference.lua
@@ -1,6 +1,6 @@
-- merged file : c:/data/develop/context/sources/luatex-fonts-merged.lua
-- parent file : c:/data/develop/context/sources/luatex-fonts.lua
--- merge date : 10/29/19 15:00:00
+-- merge date : 01/26/20 18:34:44
do -- begin closure to overcome local limits and interference
@@ -20,9 +20,6 @@ if LUAVERSION<5.2 and jit then
MINORVERSION=2
LUAVERSION=5.2
end
-if lua and lua.openfile then
- io.open=lua.openfile
-end
if not lpeg then
lpeg=require("lpeg")
end
@@ -1052,7 +1049,7 @@ if not modules then modules={} end modules ['l-table']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local type,next,tostring,tonumber,select=type,next,tostring,tonumber,select
+local type,next,tostring,tonumber,select,rawget=type,next,tostring,tonumber,select,rawget
local table,string=table,string
local concat,sort=table.concat,table.sort
local format,lower,dump=string.format,string.lower,string.dump
@@ -2177,7 +2174,7 @@ local open,flush,write,read=io.open,io.flush,io.write,io.read
local byte,find,gsub,format=string.byte,string.find,string.gsub,string.format
local concat=table.concat
local type=type
-if string.find(os.getenv("PATH"),";",1,true) then
+if string.find(os.getenv("PATH") or "",";",1,true) then
io.fileseparator,io.pathseparator="\\",";"
else
io.fileseparator,io.pathseparator="/",":"
@@ -2532,15 +2529,24 @@ local checkedsplit=string.checkedsplit
local P,R,S,C,Cs,Cp,Cc,Ct=lpeg.P,lpeg.R,lpeg.S,lpeg.C,lpeg.Cs,lpeg.Cp,lpeg.Cc,lpeg.Ct
local attributes=lfs.attributes
function lfs.isdir(name)
- return attributes(name,"mode")=="directory"
+ if name then
+ return attributes(name,"mode")=="directory"
+ end
end
function lfs.isfile(name)
- local a=attributes(name,"mode")
- return a=="file" or a=="link" or nil
+ if name then
+ local a=attributes(name,"mode")
+ return a=="file" or a=="link" or nil
+ end
end
function lfs.isfound(name)
- local a=attributes(name,"mode")
- return (a=="file" or a=="link") and name or nil
+ if name then
+ local a=attributes(name,"mode")
+ return (a=="file" or a=="link") and name or nil
+ end
+end
+function lfs.modification(name)
+ return name and attributes(name,"modification") or nil
end
if sandbox then
sandbox.redefine(lfs.isfile,"lfs.isfile")
@@ -3649,7 +3655,7 @@ local format_N if environment.FORMAT then
n=n+1
if not f or f=="" then
return format("FORMAT(a%s,'%%.9f')",n)
- elseif f==".6" then
+ elseif f==".6" or f=="0.6" then
return format("FORMAT(a%s)",n)
else
return format("FORMAT(a%s,'%%%sf')",n,f)
@@ -4705,6 +4711,7 @@ if not modules then modules={} end modules ['data-con']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
+local setmetatable=setmetatable
local format,lower,gsub=string.format,string.lower,string.gsub
local trace_cache=false trackers.register("resolvers.cache",function(v) trace_cache=v end)
local trace_containers=false trackers.register("resolvers.containers",function(v) trace_containers=v end)
@@ -4712,16 +4719,21 @@ local trace_storage=false trackers.register("resolvers.storage",function(v) tra
containers=containers or {}
local containers=containers
containers.usecache=true
+local getwritablepath=caches.getwritablepath
+local getreadablepaths=caches.getreadablepaths
+local cacheiswritable=caches.is_writable
+local loaddatafromcache=caches.loaddata
+local savedataincache=caches.savedata
local report_containers=logs.reporter("resolvers","containers")
local allocated={}
local mt={
__index=function(t,k)
if k=="writable" then
- local writable=caches.getwritablepath(t.category,t.subcategory) or { "." }
+ local writable=getwritablepath(t.category,t.subcategory) or { "." }
t.writable=writable
return writable
elseif k=="readables" then
- local readables=caches.getreadablepaths(t.category,t.subcategory) or { "." }
+ local readables=getreadablepaths(t.category,t.subcategory) or { "." }
t.readables=readables
return readables
end
@@ -4752,7 +4764,7 @@ function containers.define(category,subcategory,version,enabled)
end
end
function containers.is_usable(container,name)
- return container.enabled and caches and caches.is_writable(container.writable,name)
+ return container.enabled and caches and cacheiswritable(container.writable,name)
end
function containers.is_valid(container,name)
if name and name~="" then
@@ -4766,7 +4778,7 @@ function containers.read(container,name)
local storage=container.storage
local stored=storage[name]
if not stored and container.enabled and caches and containers.usecache then
- stored=caches.loaddata(container.readables,name,container.writable)
+ stored=loaddatafromcache(container.readables,name,container.writable)
if stored and stored.cache_version==container.version then
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","load",container.subcategory,name)
@@ -4782,17 +4794,20 @@ function containers.read(container,name)
end
return stored
end
-function containers.write(container,name,data)
+function containers.write(container,name,data,fast)
if data then
data.cache_version=container.version
if container.enabled and caches then
- local unique,shared=data.unique,data.shared
- data.unique,data.shared=nil,nil
- caches.savedata(container.writable,name,data)
+ local unique=data.unique
+ local shared=data.shared
+ data.unique=nil
+ data.shared=nil
+ savedataincache(container.writable,name,data,fast)
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","save",container.subcategory,name)
end
- data.unique,data.shared=unique,shared
+ data.unique=unique
+ data.shared=shared
end
if trace_cache or trace_containers then
report_containers("action %a, category %a, name %a","store",container.subcategory,name)
@@ -5027,6 +5042,13 @@ if not nuts.setreplace then
setfield(n,"replace",h)
end
end
+do
+ local getsubtype=nuts.getsubtype
+ function nuts.start_of_par(n)
+ local s=getsubtype(n)
+ return s==0 or s==2
+ end
+end
end -- closure
@@ -8677,6 +8699,9 @@ fonts.privateoffsets={
mathbase=0xFF000,
keepnames=false,
}
+if node and not tex.getfontoffamily then
+ tex.getfontoffamily=node.family_font
+end
end -- closure
@@ -8743,13 +8768,13 @@ fonts.handlers=handlers
local allocate=utilities.storage.allocate
local setmetatableindex=table.setmetatableindex
constructors.dontembed=allocate()
-constructors.autocleanup=true
constructors.namemode="fullpath"
constructors.version=1.01
constructors.cache=containers.define("fonts","constructors",constructors.version,false)
constructors.privateoffset=fonts.privateoffsets.textbase or 0xF0000
constructors.cacheintex=true
constructors.addtounicode=true
+constructors.fixprotrusion=true
local designsizes=allocate()
constructors.designsizes=designsizes
local loadedfonts=allocate()
@@ -8801,11 +8826,6 @@ function constructors.getmathparameter(tfmdata,name)
end
end
function constructors.cleanuptable(tfmdata)
- if constructors.autocleanup and tfmdata.properties.virtualized then
- for k,v in next,tfmdata.characters do
- if v.commands then v.commands=nil end
- end
- end
end
function constructors.calculatescale(tfmdata,scaledpoints)
local parameters=tfmdata.parameters
@@ -9032,6 +9052,7 @@ function constructors.scale(tfmdata,specification)
properties.direction=direction
target.size=scaledpoints
target.encodingbytes=properties.encodingbytes or 1
+ target.subfont=properties.subfont
target.embedding=properties.embedding or "subset"
target.tounicode=1
target.cidinfo=properties.cidinfo
@@ -9141,7 +9162,7 @@ function constructors.scale(tfmdata,specification)
targetparameters.descender=delta*descender
end
constructors.enhanceparameters(targetparameters)
- local protrusionfactor=(targetquad~=0 and 1000/targetquad) or 0
+ local protrusionfactor=constructors.fixprotrusion and ((targetquad~=0 and 1000/targetquad) or 1) or 1
local scaledwidth=defaultwidth*hdelta
local scaledheight=defaultheight*vdelta
local scaleddepth=defaultdepth*vdelta
@@ -9524,6 +9545,7 @@ function constructors.finalize(tfmdata)
properties.name=properties.name or tfmdata.name
properties.psname=properties.psname or tfmdata.psname
properties.encodingbytes=tfmdata.encodingbytes or 1
+ properties.subfont=tfmdata.subfont or nil
properties.embedding=tfmdata.embedding or "subset"
properties.tounicode=tfmdata.tounicode or 1
properties.cidinfo=tfmdata.cidinfo or nil
@@ -9549,6 +9571,7 @@ function constructors.finalize(tfmdata)
tfmdata.name=nil
tfmdata.psname=nil
tfmdata.encodingbytes=nil
+ tfmdata.subfont=nil
tfmdata.embedding=nil
tfmdata.tounicode=nil
tfmdata.cidinfo=nil
@@ -10862,7 +10885,7 @@ if not modules then modules={} end modules ['font-otr']={
copyright="PRAGMA ADE / ConTeXt Development Team",
license="see context related readme files"
}
-local next,type,tonumber=next,type,tonumber
+local next,type,tonumber,rawget=next,type,tonumber,rawget
local byte,lower,char,gsub=string.byte,string.lower,string.char,string.gsub
local fullstrip=string.fullstrip
local floor,round=math.floor,math.round
@@ -13981,7 +14004,7 @@ if not modules then modules={} end modules ['font-cff']={
license="see context related readme files"
}
local next,type,tonumber,rawget=next,type,tonumber,rawget
-local byte,char,gmatch=string.byte,string.char,string.gmatch
+local byte,char,gmatch,sub=string.byte,string.char,string.gmatch,string.sub
local concat,remove,unpack=table.concat,table.remove,table.unpack
local floor,abs,round,ceil,min,max=math.floor,math.abs,math.round,math.ceil,math.min,math.max
local P,C,R,S,C,Cs,Ct=lpeg.P,lpeg.C,lpeg.R,lpeg.S,lpeg.C,lpeg.Cs,lpeg.Ct
@@ -14088,6 +14111,37 @@ local defaultstrings={ [0]=
"Thornsmall","Ydieresissmall","001.000","001.001","001.002","001.003",
"Black","Bold","Book","Light","Medium","Regular","Roman","Semibold",
}
+local standardnames={ [0]=
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,
+ "space","exclam","quotedbl","numbersign","dollar","percent",
+ "ampersand","quoteright","parenleft","parenright","asterisk","plus",
+ "comma","hyphen","period","slash","zero","one","two","three","four",
+ "five","six","seven","eight","nine","colon","semicolon","less",
+ "equal","greater","question","at","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","bracketleft","backslash","bracketright","asciicircum",
+ "underscore","quoteleft","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","braceleft","bar","braceright","asciitilde",false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,false,false,false,false,false,false,false,false,"exclamdown",
+ "cent","sterling","fraction","yen","florin","section","currency",
+ "quotesingle","quotedblleft","guillemotleft","guilsinglleft",
+ "guilsinglright","fi","fl",false,"endash","dagger","daggerdbl",
+ "periodcentered",false,"paragraph","bullet","quotesinglbase",
+ "quotedblbase","quotedblright","guillemotright","ellipsis","perthousand",
+ false,"questiondown",false,"grave","acute","circumflex","tilde",
+ "macron","breve","dotaccent","dieresis",false,"ring","cedilla",false,
+ "hungarumlaut","ogonek","caron","emdash",false,false,false,false,
+ false,false,false,false,false,false,false,false,false,false,false,
+ false,"AE",false,"ordfeminine",false,false,false,false,"Lslash",
+ "Oslash","OE","ordmasculine",false,false,false,false,false,"ae",
+ false,false,false,"dotlessi",false,false,"lslash","oslash","oe",
+ "germandbls",false,false,false,false
+}
local cffreaders={
readbyte,
readushort,
@@ -14449,6 +14503,7 @@ do
local x=0
local y=0
local width=false
+ local lsb=0
local r=0
local stems=0
local globalbias=0
@@ -14472,6 +14527,9 @@ do
local factors=false
local axis=false
local vsindex=0
+ local justpass=false
+ local seacs={}
+ local procidx=nil
local function showstate(where)
report("%w%-10s : [%s] n=%i",depth*2,where,concat(stack," ",1,top),top)
end
@@ -15011,14 +15069,14 @@ do
top=0
end
local function divide()
- if version==1 then
+ if version=="cff" then
local d=stack[top]
top=top-1
stack[top]=stack[top]/d
end
end
local function closepath()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
showstate("closepath")
end
@@ -15026,54 +15084,73 @@ do
top=0
end
local function hsbw()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
showstate("hsbw")
end
+ lsb=stack[top-1] or 0
width=stack[top]
end
top=0
end
- local function seac()
- if version==1 then
+ local function sbw()
+ if version=="cff" then
if trace_charstrings then
- showstate("seac")
+ showstate("sbw")
end
+ lsb=stack[top-3]
+ width=stack[top-1]
end
top=0
end
- local function sbw()
- if version==1 then
+ local function seac()
+ if version=="cff" then
if trace_charstrings then
- showstate("sbw")
+ showstate("seac")
end
- width=stack[top-1]
end
top=0
end
+ local popped=3
+ local hints=3
local function callothersubr()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("callothersubr (unsupported)")
+ showstate("callothersubr")
+ end
+ if stack[top]==hints then
+ popped=stack[top-2]
+ else
+ popped=3
+ end
+ local t=stack[top-1]
+ if t then
+ top=top-(t+2)
+ if top<0 then
+ top=0
+ end
+ else
+ top=0
end
+ else
+ top=0
end
- top=0
end
local function pop()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("pop")
end
top=top+1
- stack[top]=0
+ stack[top]=popped
else
top=0
end
end
local function setcurrentpoint()
- if version==1 then
+ if version=="cff" then
if trace_charstrings then
- showstate("pop (unsupported)")
+ showstate("setcurrentpoint (unsupported)")
end
x=x+stack[top-1]
y=y+stack[top]
@@ -15199,6 +15276,39 @@ do
vhcurveto,
hvcurveto,
}
+ local reverse={ [0]="unsupported",
+ "getstem",
+ "unsupported",
+ "getstem",
+ "vmoveto",
+ "rlineto",
+ "hlineto",
+ "vlineto",
+ "rrcurveto",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "unsupported",
+ "hsbw",
+ "unsupported",
+ "setvsindex",
+ "blend",
+ "unsupported",
+ "getstem",
+ "getmask",
+ "getmask",
+ "rmoveto",
+ "hmoveto",
+ "getstem",
+ "rcurveline",
+ "rlinecurve",
+ "vvcurveto",
+ "hhcurveto",
+ "unsupported",
+ "unsupported",
+ "vhcurveto",
+ "hvcurveto",
+ }
local subactions={
[000]=dotsection,
[001]=getstem3,
@@ -15312,7 +15422,7 @@ do
local function call(scope,list,bias)
depth=depth+1
if top==0 then
- showstate(formatters["unknown %s call %s"](scope,"?"))
+ showstate(formatters["unknown %s call %s, case %s"](scope,"?",1))
top=0
else
local index=stack[top]+bias
@@ -15324,13 +15434,12 @@ do
if tab then
process(tab)
else
- showstate(formatters["unknown %s call %s"](scope,index))
+ showstate(formatters["unknown %s call %s, case %s"](scope,index,2))
top=0
end
end
depth=depth-1
end
- local justpass=false
process=function(tab)
local i=1
local n=#tab
@@ -15401,6 +15510,17 @@ do
r=r+1;result[r]=chars[12]
r=r+1;result[r]=chars[t]
top=0
+ elseif t==6 then
+ seacs[procidx]={
+ asb=stack[1],
+ adx=stack[2],
+ ady=stack[3],
+ base=stack[4],
+ accent=stack[5],
+ width=width,
+ lsb=lsb,
+ }
+ top=0
else
local a=subactions[t]
if a then
@@ -15430,44 +15550,52 @@ do
i=i+s+1
elseif t==1 or t==3 or t==18 or operation==23 then
p_getstem()
-if true then
- if top>0 then
- for i=1,top do
- r=r+1;result[r]=encode[stack[i]]
+ if true then
+ if top>0 then
+ for i=1,top do
+ r=r+1;result[r]=encode[stack[i]]
+ end
+ top=0
end
+ r=r+1;result[r]=chars[t]
+ else
top=0
end
- r=r+1;result[r]=chars[t]
-else
- top=0
-end
i=i+1
elseif t==19 or t==20 then
local s=p_getmask() or 0
-if true then
- if top>0 then
- for i=1,top do
- r=r+1;result[r]=encode[stack[i]]
+ if true then
+ if top>0 then
+ for i=1,top do
+ r=r+1;result[r]=encode[stack[i]]
+ end
+ top=0
end
+ r=r+1;result[r]=chars[t]
+ for j=1,s do
+ i=i+1
+ r=r+1;result[r]=chars[tab[i]]
+ end
+ else
+ i=i+s
top=0
end
- r=r+1;result[r]=chars[t]
- for j=1,s do
- i=i+1
- r=r+1;result[r]=chars[tab[i]]
- end
-else
- i=i+s
- top=0
-end
i=i+1
elseif t==9 then
top=0
i=i+1
elseif t==13 then
- local s=hsbw() or 0
- i=i+s+1
+ hsbw()
+ if version=="cff" then
+ r=r+1;result[r]=encode[lsb]
+ r=r+1;result[r]=chars[22]
+ else
+ end
+ i=i+1
else
+ if trace_charstrings then
+ showstate(reverse[t] or "<action>")
+ end
if top>0 then
for i=1,top do
r=r+1;result[r]=encode[stack[i]]
@@ -15488,7 +15616,7 @@ end
end
else
if trace_charstrings then
- showvalue("<action>",t)
+ showstate(reverse[t] or "<action>")
end
top=0
i=i+1
@@ -15507,7 +15635,7 @@ end
((l<1240 and 107) or (l<33900 and 1131) or 32768)+1
end
end
- local function processshape(tab,index)
+ local function processshape(tab,index,hack)
if not tab then
glyphs[index]={
boundingbox={ 0,0,0,0 },
@@ -15520,10 +15648,13 @@ end
x=0
y=0
width=false
+ lsb=0
r=0
top=0
stems=0
result={}
+ popped=3
+ procidx=index
xmin=0
xmax=0
ymin=0
@@ -15537,6 +15668,9 @@ end
updateregions(vsindex)
end
process(tab)
+ if hack then
+ return x,y
+ end
local boundingbox={
round(xmin),
round(ymin),
@@ -15591,6 +15725,8 @@ end
axis=false
regions=data.regions
justpass=streams==true
+ popped=3
+ seacs={}
if regions then
regions={ regions }
axis=data.factors or false
@@ -15604,6 +15740,8 @@ end
locals=false
globals=false
strings=false
+ popped=3
+ seacs={}
end
local function setwidths(private)
if not private then
@@ -15633,6 +15771,29 @@ end
for index=1,#charstrings do
processshape(charstrings[index],index-1)
end
+ if justpass and next(seacs) then
+ local charset=data.dictionaries[1].charset
+ if charset then
+ local lookup=table.swapped(charset)
+ for index,v in next,seacs do
+ local bindex=lookup[standardnames[v.base]]
+ local aindex=lookup[standardnames[v.accent]]
+ local bglyph=bindex and glyphs[bindex]
+ local aglyph=aindex and glyphs[aindex]
+ if bglyph and aglyph then
+ local jp=justpass
+ justpass=false
+ local x,y=processshape(charstrings[bindex+1],bindex,true)
+ justpass=jp
+ local base=bglyph.stream
+ local accent=aglyph.stream
+ local moveto=encode[-x-v.asb+v.adx]..chars[22]..encode[-y+v.ady]..chars[ 4]
+ base=sub(base,1,#base-1)
+ glyphs[index].stream=base..moveto..accent
+ end
+ end
+ end
+ end
stopparsing(fontdata,data)
else
report("no charstrings")
@@ -15649,6 +15810,7 @@ end
vsindex=dictionary.vsindex or 0
glyphs=glphs or {}
justpass=streams==true
+ seacs={}
globalbias,localbias=setbias(globals,locals,nobias)
nominalwidth,defaultwidth=setwidths(dictionary.private)
processshape(tab,index-1)
@@ -23779,7 +23941,7 @@ if not modules then modules={} end modules ['font-oto']={
local concat,unpack=table.concat,table.unpack
local insert,remove=table.insert,table.remove
local format,gmatch,gsub,find,match,lower,strip=string.format,string.gmatch,string.gsub,string.find,string.match,string.lower,string.strip
-local type,next,tonumber,tostring,rawget=type,next,tonumber,tostring,rawget
+local type,next,tonumber,tostring=type,next,tonumber,tostring
local trace_baseinit=false trackers.register("otf.baseinit",function(v) trace_baseinit=v end)
local trace_singles=false trackers.register("otf.singles",function(v) trace_singles=v end)
local trace_multiples=false trackers.register("otf.multiples",function(v) trace_multiples=v end)
@@ -26150,6 +26312,7 @@ local find_node_tail=nuts.tail
local flush_node_list=nuts.flush_list
local flush_node=nuts.flush_node
local end_of_math=nuts.end_of_math
+local start_of_par=nuts.start_of_par
local setmetatable=setmetatable
local setmetatableindex=table.setmetatableindex
local nextnode=nuts.traversers.node
@@ -29120,7 +29283,7 @@ do
checkstep(head)
end
local initialrl=0
- if getid(head)==localpar_code and getsubtype(head)==0 then
+ if getid(head)==localpar_code and start_of_par(head) then
initialrl=pardirstate(head)
elseif direction==1 or direction=="TRT" then
initialrl=-1
@@ -29452,19 +29615,27 @@ registerotffeature {
plug=otf.pluginprocessor,
}
}
+local function markinitializer(tfmdata,value)
+ local properties=tfmdata.properties
+ properties.checkmarks=value
+end
+registerotffeature {
+ name="checkmarks",
+ description="check mark widths",
+ default=true,
+ initializers={
+ node=markinitializer,
+ },
+}
otf.handlers=handlers
+if context then
+
+--removed
+
+else
+end
local setspacekerns=nodes.injections.setspacekerns if not setspacekerns then os.exit() end
-local tag="kern"
-if fontfeatures then
- function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
- local features=fontfeatures[font]
- local enabled=features and features.spacekern and features[tag]
- if enabled then
- setspacekerns(font,sequence)
- end
- return head,enabled
- end
-else
+local tag="kern"
function handlers.trigger_space_kerns(head,dataset,sequence,initialrl,font,attr)
local shared=fontdata[font].shared
local features=shared and shared.features
@@ -29474,7 +29645,6 @@ else
end
return head,enabled
end
-end
local function hasspacekerns(data)
local resources=data.resources
local sequences=resources.sequences
@@ -29659,18 +29829,6 @@ registerotffeature {
node=spaceinitializer,
},
}
-local function markinitializer(tfmdata,value)
- local properties=tfmdata.properties
- properties.checkmarks=value
-end
-registerotffeature {
- name="checkmarks",
- description="check mark widths",
- default=true,
- initializers={
- node=markinitializer,
- },
-}
end -- closure
@@ -32380,7 +32538,6 @@ do
local pdfshapes={}
local inkscape=runner()
if inkscape then
- local indices=fonts.getindices(tfmdata)
local descriptions=tfmdata.descriptions
local nofshapes=#svgshapes
local f_svgfile=formatters["temp-otf-svg-shape-%i.svg"]
@@ -33355,7 +33512,7 @@ if not modules then modules={} end modules ['font-onr']={
license="see context related readme files"
}
local fonts,logs,trackers,resolvers=fonts,logs,trackers,resolvers
-local next,type,tonumber,rawget,rawset=next,type,tonumber,rawget,rawset
+local next,type,tonumber,rawset=next,type,tonumber,rawset
local match,lower,gsub,strip,find=string.match,string.lower,string.gsub,string.strip,string.find
local char,byte,sub=string.char,string.byte,string.sub
local abs=math.abs
@@ -35192,7 +35349,6 @@ local variants=allocate()
specifiers.variants=variants
definers.methods=definers.methods or {}
local internalized=allocate()
-local lastdefined=nil
local loadedfonts=constructors.loadedfonts
local designsizes=constructors.designsizes
local resolvefile=fontgoodies and fontgoodies.filenames and fontgoodies.filenames.resolve or function(s) return s end
@@ -35453,9 +35609,6 @@ function constructors.readanddefine(name,size)
end
return fontdata[id],id
end
-function definers.current()
- return lastdefined
-end
function definers.registered(hash)
local id=internalized[hash]
return id,id and fontdata[id]
@@ -35506,7 +35659,6 @@ function definers.read(specification,size,id)
end
end
end
- lastdefined=tfmdata or id
if not tfmdata then
report_defining("unknown font %a, loading aborted",specification.name)
elseif trace_defining and type(tfmdata)=="table" then
@@ -35522,7 +35674,9 @@ end
function font.getfont(id)
return fontdata[id]
end
-callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
+if not context then
+ callbacks.register('define_font',definers.read,"definition of fonts (tfmdata preparation)")
+end
end -- closure
diff --git a/macros/luatex/generic/luaotfload/fontloader-util-str.lua b/macros/luatex/generic/luaotfload/fontloader-util-str.lua
index 432b39ec5a..68c9be5860 100644
--- a/macros/luatex/generic/luaotfload/fontloader-util-str.lua
+++ b/macros/luatex/generic/luaotfload/fontloader-util-str.lua
@@ -944,7 +944,7 @@ local format_N if environment.FORMAT then
n = n + 1
if not f or f == "" then
return format("FORMAT(a%s,'%%.9f')",n)
- elseif f == ".6" then
+ elseif f == ".6" or f == "0.6" then
return format("FORMAT(a%s)",n)
else
return format("FORMAT(a%s,'%%%sf')",n,f)
diff --git a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
index fd4291f67c..f6539dca8d 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-auxiliary.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-auxiliary",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / auxiliary functions",
license = "GPL v2.0"
}
@@ -429,6 +429,19 @@ function aux.name_of_slot(codepoint)
return false
end
+--[[doc--
+
+ Get the GID of the glyph associated with a given name.
+
+--doc]]--
+function aux.gid_of_name(font_id, glyphname)
+ local slot = aux.slot_of_name(font_id, glyphname)
+ if not slot then return end
+ local tfmdata = identifiers[font_id] or font.fonts[font_id]
+ -- assert(tfmdata) -- Otherwise slot_of_name would have failed already
+ return tfmdata.characters[slot].index or slot
+end
+
-----------------------------------------------------------------------
--- features / scripts / languages
-----------------------------------------------------------------------
@@ -638,7 +651,7 @@ function aux.provides_feature(font_id, asked_script,
or asked_script)
local language = harf.Tag.new(asked_language == "DFLT" and "dflt"
or asked_language)
- local feature = harf.Tag.new(feature)
+ local feature = harf.Tag.new(asked_feature)
for _, tag in next, { GSUBtag, GPOStag } do
local _, script_idx = hbface:ot_layout_find_script(tag, script)
diff --git a/macros/luatex/generic/luaotfload/luaotfload-colors.lua b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
index ddc564b05b..2569eb1b48 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-colors.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-colors.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-colors",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Dohyun Kim, David Carlisle",
@@ -40,9 +40,13 @@ local insert_node_after = nodedirect.insert_after
local todirect = nodedirect.todirect
local tonode = nodedirect.tonode
local setfield = nodedirect.setfield
+local setdisc = nodedirect.setdisc
+local setreplace = nodedirect.setreplace
local getid = nodedirect.getid
local getfont = nodedirect.getfont
+local getchar = nodedirect.getchar
local getlist = nodedirect.getlist
+local getdisc = nodedirect.getdisc
local getsubtype = nodedirect.getsubtype
local getnext = nodedirect.getnext
local nodetail = nodedirect.tail
@@ -198,9 +202,14 @@ color_whatsit = function (head, curr, color, push, tail)
end
-- number -> string | nil
-local get_font_color = function (font_id)
+local get_glyph_color = function (font_id, char)
local tfmdata = identifiers[font_id]
local font_color = tfmdata and tfmdata.properties and tfmdata.properties.color
+ if type(font_color) == "table" then
+ local char_tbl = tfmdata.characters[char]
+ char = char_tbl and (char_tbl.index or char)
+ return char and font_color[char] or font_color.default
+ end
return font_color
end
@@ -231,25 +240,30 @@ node_colorize = function (head, toplevel, current_color)
setfield(n, "head", n_list)
end
+ elseif n_id == disc_t then
+ local n_pre, n_post, n_replace = getdisc(n)
+ n_replace, current_color = node_colorize(n_replace, false, current_color)
+ setdisc(n, n_pre, n_post, n_replace)
+
elseif n_id == glyph_t then
--- colorization is restricted to those fonts
--- that received the “color” property upon
--- loading (see ``setcolor()`` above)
- local font_color = get_font_color(getfont(n))
- if font_color ~= current_color then
+ local glyph_color = get_glyph_color(getfont(n), getchar(n))
+ if glyph_color ~= current_color then
if current_color then
head, n, current_color = color_whatsit(head, n, current_color, false)
end
- if font_color then
- head, n, current_color = color_whatsit(head, n, font_color, true)
+ if glyph_color then
+ head, n, current_color = color_whatsit(head, n, glyph_color, true)
end
end
if current_color and color_callback == "pre_linebreak_filter" then
local nn = getnext(n)
while nn and getid(nn) == glyph_t do
- local font_color = get_font_color(getfont(nn))
- if font_color == current_color then
+ local glyph_color = get_glyph_color(getfont(nn), getchar(nn))
+ if glyph_color == current_color then
n = nn
else
break
@@ -381,8 +395,41 @@ end
--- hexadecimal, with an optional fourth transparency
--- value)
---
-local setcolor = function (tfmdata, value)
- local sanitized = sanitize_color_expression(value)
+local glyph_color_tables = { }
+-- Currently this either sets a common color for the whole font or
+-- builds a GID lookup table. This might change later to replace the
+-- lookup table with color information in the character hash. The
+-- problem with that approach right now are differences between harf
+-- and node and difficulties with getting the mapped unicode value for
+-- a GID.
+local function setcolor (tfmdata, value)
+ local sanitized
+ local color_table = glyph_color_tables[tonumber(value) or value]
+ if color_table then
+ sanitized = {}
+ local unicodes = tfmdata.resources.unicodes
+ local gid_mapping = {}
+ local descriptions = tfmdata.descriptions or tfmdata.characters
+ for color, glyphs in next, color_table do
+ for _, glyph in ipairs(glyphs) do
+ local gid = glyph == "default" and "default" or tonumber(glyph)
+ if not gid then
+ local unicode = unicodes[glyph]
+ local desc = unicode and descriptions[unicode]
+ gid = desc and (desc.index or unicode)
+ end
+ if gid then
+ sanitized[gid] = sanitize_color_expression(color)
+ else
+ -- TODO: ??? Error out, warn or just ignore? Ignore
+ -- makes sense because we have to ignore for GIDs
+ -- anyway.
+ end
+ end
+ end
+ else
+ sanitized = sanitize_color_expression(value)
+ end
local properties = tfmdata.properties
if sanitized then
@@ -391,6 +438,17 @@ local setcolor = function (tfmdata, value)
end
end
+function luaotfload.add_colorscheme(name, colortable)
+ if fonts == nil then
+ fonts = name
+ name = #glyph_color_tables + 1
+ else
+ name = name:lower()
+ end
+ glyph_color_tables[name] = colortable
+ return name
+end
+
return function ()
logreport = luaotfload.log.report
if not fonts then
diff --git a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
index 0515095402..0bc208e735 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
index b9ee9a6c7a..b6b214c249 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-configuration.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-configuration",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / config file reader",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-database.lua b/macros/luatex/generic/luaotfload/luaotfload-database.lua
index ad00bb26f7..f4bace8b44 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-database.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-database.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-database",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
index 0df0be7ff5..c6bb5c9371 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-diagnostics.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-diagnostics",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload-tool submodule / diagnostics",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
index 4e16a992d0..eec5ffde15 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-embolden.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-embolden",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-fallback.lua b/macros/luatex/generic/luaotfload/luaotfload-fallback.lua
new file mode 100644
index 0000000000..e07b3c726a
--- /dev/null
+++ b/macros/luatex/generic/luaotfload/luaotfload-fallback.lua
@@ -0,0 +1,134 @@
+-----------------------------------------------------------------------
+-- FILE: luaotfload-fallback.lua
+-- DESCRIPTION: part of luaotfload / fallback
+-----------------------------------------------------------------------
+
+local ProvidesLuaModule = {
+ name = "luaotfload-fallback",
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
+ description = "luaotfload submodule / fallback",
+ license = "GPL v2.0",
+ author = "Marcel Krüger"
+}
+
+if luatexbase and luatexbase.provides_module then
+ luatexbase.provides_module (ProvidesLuaModule)
+end
+
+local nodenew = node.direct.new
+local getfont = font.getfont
+local setfont = node.direct.setfont
+local getwhd = node.direct.getwhd
+local insert_after = node.direct.insert_after
+local traverse_char = node.direct.traverse_char
+local protect_glyph = node.direct.protect_glyph
+local otffeatures = fonts.constructors.newfeatures "otf"
+-- local normalize = fonts.handlers.otf.features.normalize
+local definers = fonts.definers
+local define_font = luaotfload.define_font
+
+local fallback_table_fontnames = {}
+
+local fallback_table = setmetatable({}, {
+ __index = function(t, name)
+ local names = fallback_table_fontnames[name]
+ if not names then
+ t[name] = false
+ return false
+ end
+ local res = setmetatable({}, {
+ __index = function(tt, size)
+ local lookup = {}
+ for i=#names,1,-1 do
+ local f = define_font(names[i] .. ';-fallback', size)
+ local fid
+ if type(f) == 'table' then
+ fid = font.define(f)
+ definers.register(f, fid)
+ elseif f then
+ fid = f
+ f = font.getfont(fid)
+ end
+ lookup[-i] = f -- Needed for multiscript interactions
+ for uni, _ in next, f.characters do
+ rawset(lookup, uni, fid)
+ end
+ end
+ tt[size] = lookup
+ return lookup
+ end,
+ })
+ t[name] = res
+ return res
+ end,
+})
+
+local fallback_lookups = setmetatable({}, {
+ __index = function(t, fid)
+ local f = font.getfont(fid)
+ -- table.tofile('myfont2', f)
+ local res = f and f.fallback_lookup or false
+ if res then
+ res = table.merged(res)
+ for uni in next, f.characters do
+ rawset(res, uni, nil)
+ end
+ end
+ t[fid] = res
+ return res
+ end,
+})
+
+local function makefallbackfont(tfmdata, _, fallback)
+ local t = fallback_table[fallback]
+ if not t then error(string.format("Unknown fallback table %s", fallback)) end
+ fallback = t[tfmdata.size]
+ local fallback_lookup = {}
+ tfmdata.fallback_lookup = fallback
+end
+
+local glyph_id = node.id'glyph'
+-- TODO: unset last_script, matching parentheses etc
+function dofallback(head, _, _, _, direction)
+ head = node.direct.todirect(head)
+ local last_fid, last_fallbacks
+ for cur, cid, fid in traverse_char(head) do
+ if fid ~= last_fid then
+ last_fid, last_fallbacks = fid, fallback_lookups[fid]
+ end
+ if last_fallbacks then
+ local new_fid = last_fallbacks[cid]
+ if new_fid then
+ setfont(cur, new_fid)
+ end
+ end
+ end
+end
+
+function luaotfload.add_fallback(name, fonts)
+ if fonts == nil then
+ fonts = name
+ name = #fallback_table_fontnames + 1
+ else
+ name = name:lower()
+ end
+ fallback_table_fontnames[name] = fonts
+ fallback_table[name] = nil
+ return name
+end
+
+otffeatures.register {
+ name = "fallback",
+ description = "Fill in missing glyphs from other fonts",
+ manipulators = {
+ node = makefallbackfont,
+ plug = makefallbackfont,
+ },
+ -- processors = { -- processors would be nice, but they are applied
+ -- -- too late for our purposes
+ -- node = donotdef,
+ -- }
+}
+
+--- vim:sw=2:ts=2:expandtab:tw=71
diff --git a/macros/luatex/generic/luaotfload/luaotfload-features.lua b/macros/luatex/generic/luaotfload/luaotfload-features.lua
index de129891e3..0fe8a281c6 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-features.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-features.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-features",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / features",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
@@ -29,6 +29,8 @@ local R = lpeg.R
local S = lpeg.S
local C = lpeg.C
+local lower = string.lower
+
local table = table
local tabletohash = table.tohash
local tablesort = table.sort
@@ -240,7 +242,14 @@ local support_incomplete = tabletohash({
--doc]]--
--- (string, string) dict -> (string, string) dict
-local apply_default_features = function (speclist)
+local apply_default_features = function (rawlist)
+ local speclist = {}
+ for k, v in pairs(rawlist) do
+ if type(v) == 'string' then
+ v = ({['true'] = true, ['false'] = false})[lower(v)] or v
+ end
+ speclist[k] = v
+ end
local default_features = luaotfload.features
speclist = speclist or { }
@@ -248,8 +257,8 @@ local apply_default_features = function (speclist)
--- handle language tag
local language = speclist.language
- if language then --- already lowercase at this point
- language = stringgsub(language, "[^a-z0-9]", "")
+ if language then
+ language = stringgsub(lower(language), "[^a-z0-9]", "")
language = rawget(verboselanguages, language) -- srsly, rawget?
or (languages[language] and language)
or "dflt"
@@ -261,7 +270,7 @@ local apply_default_features = function (speclist)
--- handle script tag
local script = speclist.script
if script then
- script = stringgsub(script, "[^a-z0-9]","")
+ script = stringgsub(lower(script), "[^a-z0-9]","")
script = rawget(verbosescripts, script)
or (scripts[script] and script)
or "dflt"
@@ -392,15 +401,7 @@ local handle_request = function (specification)
end
features.raw = request.features or {}
- request.features = {}
- for k, v in pairs(features.raw) do
- if type(v) == 'string' then
- v = string.lower(v)
- v = ({['true'] = true, ['false'] = false})[v] or v
- end
- request.features[k] = v
- end
- request.features = apply_default_features(request.features)
+ request.features = apply_default_features(features.raw)
if name then
specification.name = name
@@ -430,9 +431,12 @@ local handle_request = function (specification)
features.normal = normalize (request.features)
specification.sub = request.sub or specification.sub or false
- if request.features and request.features.mode
- and fonts.readers[request.features.mode] then
- specification.forced = request.features.mode
+ local forced_mode = request.features and request.features.mode
+ if forced_mode then
+ forced_mode = lower(forced_mode)
+ if fonts.readers[forced_mode] then
+ specification.forced = forced_mode
+ end
end
return specification
@@ -576,6 +580,8 @@ local add_auto_features = function ()
end
end
+luaotfload.apply_default_features = apply_default_features
+
return function ()
if not fonts and fonts.handlers then
report ("log", 0, "features",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
index 4a1348b5f0..11bc525547 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-filelist.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-filelist",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
@@ -252,6 +252,7 @@ luaotfload.filelist.data =
{ name = "harf-plug" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "loaders" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "multiscript" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
+ { name = "fallback" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "parsers" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "resolvers" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
{ name = "unicode" ,kind = kind_library, ext =".lua", gitdir=gitdirsrc, texdir=texdirtex, gitpref = "luaotfload-" },
diff --git a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
index 8e0a2dec5f..50f1b4d590 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-glyphlist.lua
@@ -1,7 +1,7 @@
local ProvidesLuaModule = {
name = "luaotfload-glyphlist",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / autogenerated glyphlist",
copyright = "derived from https://raw.githubusercontent.com/adobe-type-tools/agl-aglfn/master/glyphlist.txt",
original = "Adobe Glyph List, version 2.0, September 20, 2002",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
index ad02cdb99a..555180435a 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-define.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-harf-define",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -46,6 +46,7 @@ local function loadfont(spec)
local key = string.format("%s:%d", gsub(path, "[/\\]", ":"), sub)
local attributes = lfs.attributes(path)
+ if not attributes then return end
local size, date = attributes.size or 0, attributes.modification or 0
local cached = containers.read(facecache, key)
@@ -193,6 +194,17 @@ local function loadfont(spec)
end
cached.face = hbface
cached.font = hbfont
+ do
+ local nominals = cached.nominals
+ local gid_offset = cached.gid_offset
+ cached.name_to_char = setmetatable({}, {__index = function(t, name)
+ local gid = hbfont:get_glyph_from_name(name)
+ local char = gid and (nominals[gid] or gid_offset + gid)
+ t[name] = char -- ? Do we want this
+ return char
+ end})
+ end
+
return cached
end
@@ -217,11 +229,11 @@ local tlig ={
}
local function scalefont(data, spec)
+ if not data then return data, spec end
local size = spec.size
- local features = spec.features.normal
+ local features = fonts.constructors.checkedfeatures("otf", spec.features.normal)
features.mode = 'plug'
features.features = 'harf'
- fonts.constructors.checkedfeatures("otf", features)
local hbface = data.face
local hbfont = data.font
local upem = data.upem
@@ -316,7 +328,7 @@ local function scalefont(data, spec)
local tfmdata = {
name = spec.specification,
- filename = spec.resolved,
+ filename = 'harfloaded:' .. spec.resolved,
subfont = spec.sub or 1,
designsize = size,
psname = sanitize(data.psname),
@@ -356,8 +368,12 @@ local function scalefont(data, spec)
specification = spec,
shared = {},
properties = {},
+ resources = {
+ unicodes = data.name_to_char,
+ },
}
tfmdata.shared.processes = fonts.handlers.otf.setfeatures(tfmdata, features)
+ fonts.constructors.applymanipulators("otf", tfmdata, features, false)
return tfmdata
end
@@ -404,3 +420,11 @@ fonts.readers.harf = function(spec)
end
return scalefont(loadfont(spec), spec)
end
+
+luatexbase.add_to_callback('find_opentype_file', function(name)
+ return name:gsub('^harfloaded:', '')
+end, 'luaotfload.harf.strip_prefix')
+
+luatexbase.add_to_callback('find_truetype_file', function(name)
+ return name:gsub('^harfloaded:', '')
+end, 'luaotfload.harf.strip_prefix')
diff --git a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
index 528d8c1e60..c1d87de312 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-harf-plug.lua
@@ -5,8 +5,8 @@
do -- block to avoid to many local variables error
local ProvidesLuaModule = {
name = "luaotfload-harf-plug",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / database",
license = "GPL v2.0",
author = "Khaled Hosny, Marcel Krüger",
@@ -565,8 +565,17 @@ end
local push_cmd = { "push" }
local pop_cmd = { "pop" }
local nop_cmd = { "nop" }
-local save_cmd = { "pdf", "page", "q" }
-local restore_cmd = { "pdf", "page", "Q" }
+--[[
+ In the following, "text" actually refers to "font" mode and not to "text"
+ mode. "font" mode is called "text" inside of virtual font commands (don't
+ ask me why, but the LuaTeX source does make it clear that this is intentional)
+ and behaves mostly like "page" (especially it does not enter a "BT" "ET"
+ block) except that it always resets the current position to the origin.
+ This is necessary to ensure that the q/Q pair does not interfere with TeX's
+ position tracking.
+ ]]
+local save_cmd = { "pdf", "text", "q" }
+local restore_cmd = { "pdf", "text", "Q" }
-- Convert glyphs to nodes and collect font characters.
local function tonodes(head, node, run, glyphs)
diff --git a/macros/luatex/generic/luaotfload/luaotfload-init.lua b/macros/luatex/generic/luaotfload/luaotfload-init.lua
index e136d6cf63..0f8d7b3206 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-init.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-init.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-init",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / initialization",
license = "GPL v2.0"
}
@@ -192,6 +192,22 @@ local load_context_modules = function (pth)
end
+local function verify_context_dir (pth)
+ if lfsisdir(file.join(pth, ltx)) then
+ return true
+ end
+ for _, d in ipairs(ctx) do
+ if lfsisdir(file.join(pth, d)) then
+ return true
+ end
+ end
+ logreport("both", 0, "init", "A directory name has been passed as \z
+ fontloader name but this directory does not acutally seem to contain \z
+ a font loader. I will try to interpret your fontloader name in another \z
+ way for now, but please fix your settings.")
+ return false
+end
+
local function init_main(early_hook)
config = config or { } --- global
config.luaotfload = config.luaotfload or { }
@@ -374,7 +390,7 @@ local function init_main(early_hook)
"Loading Context modules in lookup path.")
load_context_modules ()
- elseif lfsisdir (fontloader) then
+ elseif lfsisdir (fontloader) and verify_context_dir (fontloader) then
logreport ("log", 0, "init",
"Loading Context files under prefix “%s”.",
fontloader)
@@ -439,6 +455,7 @@ local init_post_install_callbacks = function ()
direction = tex.get'textdir'
end
domultiscript(head, nil, nil, nil, direction)
+ dofallback(head, nil, nil, nil, direction)
return handler(head, groupcode, nil, nil, direction)
end
luatexbase.add_to_callback("pre_linebreak_filter",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
index 815d215d6b..f374e6db89 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-latex.tex b/macros/luatex/generic/luaotfload/luaotfload-latex.tex
index 8a68efd035..cdcb26e26e 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-latex.tex
+++ b/macros/luatex/generic/luaotfload/luaotfload-latex.tex
@@ -208,6 +208,7 @@
%% one that we could map directly onto Latex’s \verb|…|.
\usepackage{pdfpages}
\usepackage {listings}
+\usepackage{csquotes}
\usepackage {luatexbase}
\lstset {
basicstyle=\ttfamily,
@@ -280,7 +281,37 @@
end
end
}
-
+\directlua{
+ luaotfload.add_colorscheme("myscheme",
+ {
+ ["00FFFF30"] = {"default"},
+ ["FF0000"] = {"kabeng"},
+ ["00FF00"] = {"ivowelsignbeng"},
+ ["0000FF"] = {369} %% 369 is the GID of "nadarabeng"
+ })
+ }
+
+ \directlua{
+ luaotfload.add_multiscript
+ ("cyrlgrekbeng",
+ {
+ cyrl = "DejaVuSans:mode=node;script=cyrl;color=FF0000;",
+ grek = "texgyreheros:mode=harf;script=grek;color=0000FF;",
+ beng = "NotoSansBengali:mode=harf;script=bng2;color=00FF00"
+ }
+ )
+ }
+ \directlua
+ {luaotfload.add_fallback
+ ("myfallback",
+ {
+ "DejaVuSans:mode=harf;script=grek;color=FF0000;",
+ "cmuserif:mode=node;script=cyrl;color=00FF00;",
+ "NotoSansBengali:mode=harf;script=bng2;color=0000FF;",
+ "NotoColorEmoji:mode=harf;"
+ }
+ )
+ }
\def \listingpar {\endgraf}
\let \endlistingline \relax
diff --git a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
index 905fc6acce..ce7d6fcd56 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-letterspace.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-letterspace",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
copyright = "PRAGMA ADE / ConTeXt Development Team",
@@ -82,6 +82,7 @@ local fonthashes = fonts.hashes
local identifiers = fonthashes.identifiers
local chardata = fonthashes.characters
local otffeatures = fonts.constructors.newfeatures "otf"
+local markdata
local function getprevreal(n)
repeat
@@ -144,6 +145,21 @@ if not chardata then
fonthashes.characters = chardata
end
+if not markdata then
+ markdata = setmetatable({}, {__index = function(t, k)
+ if k == true then
+ return t[currentfont()]
+ else
+ local tfmdata = font.getfont(k) or font.fonts[k]
+ if tfmdata then
+ local marks = tfmdata.resources.marks or {}
+ t[k] = marks
+ return marks
+ end
+ end
+ end})
+end
+
---=================================================================---
--- character kerning functionality
---=================================================================---
@@ -334,7 +350,7 @@ kerncharacters = function (head)
local kern = 0
local kerns = prevchardata.kerns
if kerns then kern = kerns[lastchar] or kern end
- krn = kern + krn -- here
+ krn = kern + (markdata[lastfont][lastchar] and 0 or krn) -- here
insert_node_before(head,start,kern_injector(fillup,krn))
end
end
@@ -409,7 +425,7 @@ kerncharacters = function (head)
if kerns then kern = kerns[lastchar] or kern end
end
end
- krn = kern + krn -- here
+ krn = kern + (markdata[lastfont][lastchar] and 0 or krn) -- here
end
setfield(disc, "replace", kern_injector(false, krn))
end --[[if replace and prv and nxt]]
diff --git a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
index 2865bf5516..0f24e4542e 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-loaders.lua
@@ -8,8 +8,8 @@
local ProvidesLuaModule = {
name = "luaotfload-loaders",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / callback handling",
license = "GPL v2.0"
}
@@ -120,10 +120,20 @@ end
local definers --- (string, spec -> size -> id -> tmfdata) hash_t
do
- local read = fonts.definers.read
+ local ctx_read = fonts.definers.read
+ local register = fonts.definers.register
+ local function read(specification, size, id)
+ local tfmdata = ctx_read(specification, size, id)
+ if not tfmdata or id or tonumber(tfmdata) then
+ return tfmdata
+ end
+ id = font.define(tfmdata)
+ register(tfmdata, id)
+ return id
+ end
local patch = function (specification, size, id)
- local fontdata = read (specification, size, id)
+ local fontdata = ctx_read (specification, size, id)
----if not fontdata then not_found_msg (specification, size, id) end
if type (fontdata) == "table" and fontdata.encodingbytes == 2 then
--- We need to test for `encodingbytes` to avoid passing
@@ -133,7 +143,12 @@ do
else
luatexbase.call_callback ("luaotfload.patch_font_unsafe", fontdata, specification, id)
end
- return fontdata
+ if not fontdata or id or tonumber(fontdata) then
+ return fontdata
+ end
+ id = font.define(fontdata)
+ register(fontdata, id)
+ return id
end
local mk_info = function (name)
@@ -209,9 +224,11 @@ local install_callbacks = function ()
create_callback ("luaotfload.patch_font", "simple", dummy_function)
create_callback ("luaotfload.patch_font_unsafe", "simple", dummy_function)
purge_define_font ()
- local definer = config.luaotfload.run.definer
+ local definer = config.luaotfload.run.definer or "patch"
+ local selected_definer = definers[definer]
+ luaotfload.define_font = selected_definer
luatexbase.add_to_callback ("define_font",
- definers[definer or "patch"],
+ selected_definer,
"luaotfload.define_font",
1)
return true
diff --git a/macros/luatex/generic/luaotfload/luaotfload-log.lua b/macros/luatex/generic/luaotfload/luaotfload-log.lua
index 9532877127..2cbacd597f 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-log.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-log.lua
@@ -6,8 +6,8 @@
local ProvidesLuaModule = {
name = "luaotfload-log",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / logging",
license = "GPL v2.0",
author = "Khaled Hosny, Elie Roux, Philipp Gesang",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-main.lua b/macros/luatex/generic/luaotfload/luaotfload-main.lua
index 65fdc9fc00..35378d91cb 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-main.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-main.lua
@@ -20,8 +20,8 @@ local authors = "\z
-- version number is used below!
local ProvidesLuaModule = {
name = "luaotfload-main",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload entry point",
author = authors,
copyright = authors,
@@ -44,25 +44,35 @@ luaotfload.fontloader_package = "reference" --- default: from current Con
if not tex or not tex.luatexversion then
error "this program must be run in TeX mode" --- or call tex.initialize() =)
-else
- --- version check
- local major = tex.luatexversion / 100
- local minor = tex.luatexversion % 100
- local revision = tex.luatexrevision --[[ : string ]]
- local revno = tonumber (revision)
- local minimum = luaotfload.min_luatex_version
- local actual = { major, minor, revno or 0 }
- if actual [1] < minimum [1]
+end
+
+--- version check
+local major = tex.luatexversion / 100
+local minor = tex.luatexversion % 100
+local revision = tex.luatexrevision --[[ : string ]]
+local revno = tonumber (revision)
+local minimum = luaotfload.min_luatex_version
+local actual = { major, minor, revno or 0 }
+if actual [1] < minimum [1]
or actual == minimum and actual [2] < minimum [2]
or actual == minimum and actual [2] == minimum [2] and actual [3] < minimum [3]
- then
- texio.write_nl ("term and log",
- string.format ("\tFATAL ERROR\n\z
- \tLuaotfload requires a Luatex version >= %d.%d.%d.\n\z
- \tPlease update your TeX distribution!\n\n",
- (unpack or table.unpack) (minimum)))
- error "version check failed"
- end
+then
+ texio.write_nl ("term and log",
+ string.format ("\tFATAL ERROR\n\z
+ \tLuaotfload requires a Luatex version >= %d.%d.%d.\n\z
+ \tPlease update your TeX distribution!\n\n",
+ (unpack or table.unpack) (minimum)))
+ error "version check failed"
+end
+
+if not utf8 then
+ texio.write_nl("term and log", string.format("\z
+ \tluaotfload: module utf8 is unavailable\n\z
+ \tutf8 is available in Lua 5.3+; engine\'s _VERSION is '%s'\n\z
+ \tThis probably means that the engine is not supported\n\z
+ \n",
+ _VERSION))
+ error "module utf8 is unavailable"
end
if status.safer_option ~= 0 then
@@ -316,12 +326,13 @@ luaotfload.main = function ()
loadmodule "harf-plug"
end
initialize "auxiliary" --- additional high-level functionality
+ loadmodule "fallback" --- ...
loadmodule "multiscript" --- ...
loadmodule "tounicode"
luaotfload.aux.start_rewrite_fontname () --- to be migrated to fontspec
- logreport ("both", 0, "main",
+ logreport ("log", 1, "main",
"initialization completed in %0.3f seconds\n",
osgettimeofday() - starttime)
----inspect (timing_info)
diff --git a/macros/luatex/generic/luaotfload/luaotfload-main.tex b/macros/luatex/generic/luaotfload/luaotfload-main.tex
index 9fe9060695..79d7411b20 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-main.tex
+++ b/macros/luatex/generic/luaotfload/luaotfload-main.tex
@@ -32,7 +32,7 @@
\beginfrontmatter
\setdocumenttitle {The \identifier{luaotfload} package}
- \setdocumentdate {2019-11-10 v3.11}
+ \setdocumentdate {2020-02-02 v3.12}
\setdocumentauthor {LaTeX3 Project\\
Elie Roux · Khaled Hosny · Philipp Gesang · Ulrike Fischer · Marcel Krüger\\
Home: \hyperlink {https://github.com/latex3/luaotfload}}
@@ -62,10 +62,20 @@ Supported is the \identifier{luatex} versions of a current TeXLive 2019 (and a c
\endsection
\beginsection{Changes}
+\beginsubsection {New in version 3.12 (by Ulrike Fischer/Marcel Krüger)}
+\begin{itemize}
+\item Corrected a number of small bugs in harf mode.
+\item Extension\marginpar{Experimental!} of the \identifier{color} key to allow
+coloring of specific output glyphs, see page~\pageref{color-glyphs}
+\item A\marginpar{Experimental!} new \identifier{fallback} key to allow to define fallback fonts, see page~\pageref{fallback}
+\item A\marginpar{Experimental!} new \identifier{multiscript} key to allow to use a font
+for more than one script, see page~\pageref{multiscript}
+\end{itemize}
+
\beginsubsection {New in version 3.11 (by Ulrike Fischer/Marcel Krüger)}
\begin{itemize}
\item Changed the handling of the \identifier{script} key in harf mode to be more compatible with behaviour of the node mode. It now expects the name of a script that is actually in the font instead of a ISO 15924 script tag. See issue 117.
-\item Corrected a number of small typos and bugs in harf mode.
+\item Corrected a number of small typos and bugs in harf mode.
\end{itemize}
\beginsubsection {New in version 3.1 (by Ulrike Fischer/Marcel Krüger)}
\begin{itemize}
@@ -771,7 +781,7 @@ obviously, \inlinecode{random}.
\identifier{harf} mode is new in version 3.1 and needs the new \identifier{luahbtex} engine (the mode is ignored if \identifier{luahbtex} is not used). With it is possible to render a font using the harfbuzz library in-built in the new engine. \identifier{harf} mode improves greatly the rendering of indic and arabic scripts and is highly recommended for such scripts.
- When using \identifier{harf} mode it is required to set also the script correctly.
+ When using \identifier{harf} mode it is required to set also the script correctly.
\beginlisting
@@ -787,7 +797,7 @@ obviously, \inlinecode{random}.
It is possible to call other font renderers with the mode key. A simple example with a plain reader can be found at \url{https://github.com/latex3/luaotfload/pull/26#issuecomment-437716326}.
\endaltitem
- \beginaltitem {shaper} \label{shaper-tag}
+ \beginaltitem {shaper} \phantomsection\label{shaper-tag}
If \identifier{luahbtex} and \identifier{harf} mode are used it is possible to specify a shaper, like \identifier{graphite2} or \identifier{ot} (open type).
\beginlisting
@@ -805,7 +815,7 @@ obviously, \inlinecode{random}.
\includegraphics{shaper-demo-graphite}
\endaltitem
- \beginaltitem {script} \label{script-tag}
+ \beginaltitem {script} \phantomsection\label{script-tag}
An \OpenType script tag;\footnote{%
See \hyperlink {http://www.microsoft.com/typography/otspec/scripttags.htm}
for a list of valid values.
@@ -839,6 +849,42 @@ obviously, \inlinecode{random}.
\beginlisting
\font \test = "Latin Modern Roman:color=FF0000BB"
\endlisting
+
+ Experimental!\marginpar{\mbox{}\hfill NEW in v3.12!}\phantomsection\label{color-glyphs} The \identifier{color} key has been
+ extended to accept a table with color declarations of (output) glyphs. For example
+
+ \beginlisting
+ \directlua{
+ luaotfload.add_colorscheme("myscheme",
+ {
+ ["00FFFF30"] = {"default"},
+ ["FF0000"] = {"kabeng","ebeng"},
+ ["00FF00"] = {"ivowelsignbeng"},
+ ["0000FF"] = {369} %% 369 is the GID of "nadarabeng"
+ })
+ }
+ \endlisting
+
+ The keys in such a table are like above RGB colors with an optional transparency setting.
+ The values are either lists of glyph names or GID numbers.
+ Both types are font dependant! Not every font use the same
+ glyph names (or even glyph names at all). GID number are font specific anyway. The GID can be found
+ by looking up the \verb+["index"]+ entry in the lua file of a font.
+
+ Such a colorscheme can then be used like this:
+ \beginlisting
+ \font\test={name:Noto Sans Bengali:mode=harf;script=bng2;color=myscheme}
+ \endlisting
+
+ and then would give this output:
+
+
+ {\font\test={name:Noto Sans Bengali:mode=harf;script=bng2;color=myscheme}\test
+ কণ্যা এখন কি করিবে
+ \char"0995 \char"09BF
+ \char"09A8 \char"09CD \char"09A6
+ \char"09CD \char"09B0}
+
\endaltitem
@@ -856,7 +902,7 @@ obviously, \inlinecode{random}.
\endaltitem
- \beginaltitem {kernfactor \& letterspace}\label{p:letterspace}
+ \beginaltitem {kernfactor \& letterspace}\phantomsection\label{p:letterspace}
Define a font with letterspacing (tracking) enabled.
%
In \identifier{luaotfload}, letterspacing is implemented by
@@ -1025,6 +1071,117 @@ obviously, \inlinecode{random}.
\endaltitem
+
+ \beginaltitem {multiscript}\phantomsection\label{multiscript}
+ In\marginpar{New in 3.12 -- experimental} fonts many shaping rules are implemented only for specific scripts and so you get correct typesetting only if the \identifier{script} feature is correctly set. This means that to write a text which uses more than one script you have to declare a font for each script and switch fonts even if the font contains glyphs for all scripts.
+ \identifier{multiscript} tries to help here. The feature is experimental and bound to change. Feedback is welcome but you use it at your risk.
+
+ \identifier{multiscript} allows you to declare fonts for various script. The value is either \identifier{auto} described below, or a name which has been previously declared or a combination of both. An example for such a named multiscript could look like this (the colors are only for demonstration):
+
+ \beginlisting
+ \directlua{
+ luaotfload.add_multiscript
+ ("cyrlgrekbeng",
+ {
+ Cyrl = "DejaVuSans:mode=node;script=cyrl;color=FF0000;",
+ Grek = "texgyreheros:mode=harf;script=grek;color=0000FF;",
+ Beng = "NotoSansBengali:mode=harf;script=bng2;color=00FF00;"
+ }
+ )
+ }
+ \endlisting
+
+ \identifier{cyrlgrekbeng} is the name of the multiscript (the name is case insensitive). The keys are ISO language tags (not open type tags!). They are case insensitive too: the example uses an uppercase letter for ISO tags to differentiate them from script tags. The values are font declarations.
+
+ The multiscript can then be used in a font like this:
+
+ \beginlisting
+ \font\test={name:DejaVuSans:mode=node;multiscript=cyrlgrekbeng;}
+ \endlisting
+
+ This would lead to this output:
+
+ {\Large \font\test={name:DejaVuSans:mode=node;multiscript=cyrlgrekbeng;}\test
+ „a^^^^0301123!?“ „π^^^^0301123!?“ „a!?“ „Б123!?“ a „\char"0995\char"09BF 123“
+ }
+
+ It shows that fonts are switched with the scripts.
+
+ Be aware of the following drawbacks:
+
+ \begin{itemize}
+ \item Quite a lot chars can and should be used with more than one script, they belong to the Common or Inherited class. Examples are punctuation chars, digits, accents but also emoji. Currently these chars follow the active script. That's why the digits are all typeset with a different font, the accent over the pi is different to the one over the a, and why the opening quote is sometimes different to the closing quote. It is clear that some tools to force a script (and so a font) locally and globally for such chars are needed.
+
+ \item \identifier{multiscript} doesn't change hyphenation patterns or other language or script related features.
+
+ \item Language packages like \identifier{babel} or \identifier{polyglossia} have code to change the script too which could interfere or clash. This hasn't been tested yet.
+
+ \item \identifier{multiscript} can slow down the compilation.
+ \end{itemize}
+
+ It is possible to use the value \identifier{auto} with \identifier{multiscript}. luaotfload will then switch the script if it detects a char belonging to another script (and if the font support this script). This can be useful for fonts supporting more than one script or when using the \identifier{fallback} key described below.
+
+ It is also possible to combine \identifier{auto} with a named multiscript with the syntax \identifier{multiscript=auto+name}. The rules of the named multiscript will in such cases take precedence and \identifier{auto} used only for other scripts.
+
+
+
+ \endaltitem
+
+ \beginaltitem {fallback}\label{fallback}
+ This\marginpar{New in 3.12 -- experimental} allows you to define a chain of fonts which are used if glyphs are missing in the main font. It works only for text fonts, not for math fonts set with the \identifier{unicode-math} package.
+ The feature is experimental and bound to change. Feedback is welcome but you use it at your risk.
+ For example
+
+ \beginlisting
+ \directlua
+ {luaotfload.add_fallback
+ ("myfallback",
+ {
+ "DejaVuSans:mode=harf;script=grek;color=FF0000;",
+ "cmuserif:mode=node;script=cyrl;color=00FF00;",
+ "NotoSansBengali:mode=harf;script=bng2;color=0000FF;"
+ "NotoColorEmoji:mode=harf;"
+ }
+ )
+ }
+ \endlisting
+
+ This fallback can then be used e.g. like this:
+
+ \beginlisting
+ \font\test={name:LatinModernRoman:mode=node;fallback=myfallback;}
+ \endlisting
+
+ {\Large
+ \font\test={name:LatinModernRoman:mode=node;fallback=myfallback;}\test
+ 1234 a^^^^0301 π^^^^0301 a!? π123!? a БѨ123!? a \char"1F600\ \char"1F986\ \char"0995\char"09BF a „π“ a „Б“
+ }
+
+ Interesting points in the output are
+ \begin{itemize}
+ \item The accent over the pi, the digits and the quotes are all from the base font. Only missing glyphs are from the fallback.
+ \item The cyrillic is printed with the DejaVu font, despite the fact that is sets the script to \identifier{grek} and that the next font in the fallback chain would fit better.
+ \item The duck emoji is from the Noto font, while the face is from DejaVu as it comes first in the chain.
+ \end{itemize}
+
+ The \identifier{fallback} can be combined with the \identifier{multiscript}. For example
+
+ \beginlisting
+ \font\test={name:LatinModernRoman:mode=node;fallback=myfallback;multiscript=auto;}
+ \endlisting
+
+ {\Large
+ \font\test={name:LatinModernRoman:mode=node;fallback=myfallback;multiscript=auto;}\test
+ 1234 a^^^^0301 π^^^^0301 a!? π123!? a БѨ123!? a \char"1F600\ \char"1F986\ \char"0995\char"09BF a „π“ a „Б“
+ }
+
+ Now the accent over the pi is better. The digits after the pi and the closing quote use the DejaVu font. The digits after
+ the cyrillic use the Latin Modern font because of an interesting \enquote{feature} of this font: It claims to know the \identifier{cyrl} script despite the fact that it doesn't contain any cyrillic glyphs.
+
+ \identifier{fallback} can be nested: fonts in the fallback table can refer to another \identifier{fallback} table.
+
+ As with the \identifier{multiscript} key more control over the used glyph and script in edge cases will be needed.
+ \endaltitem
\enddescriptions
\endsubsection
@@ -1093,8 +1250,8 @@ Currently (2014) there are three of them:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\beginsection {Combining fonts}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-Version 2.7 and later support combining characters from multiple fonts into a
+Beside the new keys \identifier{multiscript} and \identifier{fallback} described earlier
+Version 2.7 and later support another method to combine characters from multiple fonts into a
single virtualized one. This requires that the affected fonts be loaded in
advance as well as a special \emphasis{request syntax}. Furthermore, this
allows to define \emphasis{fallback fonts} to supplement fonts that may lack
@@ -1898,18 +2055,32 @@ are defined for which scripts.
has glyph \luaident{index}.
\endaltitem
- \beginaltitem {aux.slot_of_name(name : string)}
- Translates an Adobe Glyph name to the corresponding glyph
- slot.
+ \beginaltitem {aux.slot_of_name(id : int, name : string)}
+ Translates a name for a glyph in font \luaident{id} to the
+ corresponding glyph slot which can be used e.g.\ as an argument to
+ \inlinecode{\char}. The number is assigned by the \identifier{luaotfload} code
+ and not related to the glyph index (GID) of the font as stored in the \identifier{[index]} field
+ of the lua-file.
\endaltitem
- \beginaltitem {aux.name_of_slot(slot : int)}
+ \beginaltitem {aux.gid_of_name(id : int, name : string)}
+ Translates\marginpar{New version 3.12} a name for a glyph in font \luaident{id} to the
+ corresponding glyph index (GID) as stored in the \identifier{[index]} field.
+ \endaltitem
+
+ \beginaltitem {aux.name_of_slot(id : int, slot : int)}
The inverse of \luaident{slot_of_name}; note that this
might be incomplete as multiple glyph names may map to the
same codepoint, only one of which is returned by
\luaident{name_of_slot}.
\endaltitem
+ \beginaltitem {aux.gid_of_name(id : int, name : string)}
+ Translates a Glyph name to the corresponding GID in font
+ \luaident{id}. This corresponds to the value returned by
+ \inlinecode{\XeTeXglyphindex} in \XeTeX.
+ \endaltitem
+
\beginaltitem {aux.provides_script(id : int, script : string)}
Test if a font supports \luaident{script}.
\endaltitem
diff --git a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
index c2aa664fab..f6a272ecab 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-multiscript.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-multiscript",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / multiscript",
license = "GPL v2.0",
author = "Marcel Krüger"
@@ -24,6 +24,19 @@ local insert_after = node.direct.insert_after
local traverse_char = node.direct.traverse_char
local protect_glyph = node.direct.protect_glyph
local otffeatures = fonts.constructors.newfeatures "otf"
+-- local normalize = fonts.handlers.otf.features.normalize
+local definers = fonts.definers
+local define_font = luaotfload.define_font
+local scripts_lib = require'luaotfload-scripts'.script
+local script_to_iso = scripts_lib.to_iso
+local script_to_ot = scripts_lib.to_ot
+
+local harf = luaotfload.harfbuzz
+local GSUBtag, GPOStag
+if harf then
+ GSUBtag = harf.Tag.new("GSUB")
+ GPOStag = harf.Tag.new("GPOS")
+end
local sep = lpeg.P' '^0 * ';' * lpeg.P' '^0
local codepoint = lpeg.S'0123456789ABCDEF'^4/function(c)return tonumber(c, 16)end
@@ -35,7 +48,7 @@ local function multirawset(table, key1, key2, value)
return table
end
local script_extensions do
- local entry = lpeg.Cg(codepoint_range * sep * lpeg.Ct((lpeg.C(lpeg.R'AZ' * lpeg.R'az'^1))^1 * ' ') * '#')^-1 * (1-lpeg.P'\n')^0 * '\n'
+ local entry = lpeg.Cg(codepoint_range * sep * lpeg.Ct((lpeg.C(lpeg.R'AZ' * lpeg.R'az'^1)/string.lower)^1 * ' ') * '#')^-1 * (1-lpeg.P'\n')^0 * '\n'
local file = lpeg.Cf(
lpeg.Ct''
* entry^0
@@ -98,7 +111,7 @@ local script_mapping do
Cuneiform = "Xsux", Yi = "Yiii", Zanabazar_Square = "Zanb",
Inherited = "Zinh", Common = "Zyyy", Unknown = "Zzzz",
}
- local entry = lpeg.Cg(codepoint_range * sep * ((lpeg.R'AZ' + lpeg.R'az' + '_')^1/script_aliases))^-1 * (1-lpeg.P'\n')^0 * '\n'
+ local entry = lpeg.Cg(codepoint_range * sep * ((lpeg.R'AZ' + lpeg.R'az' + '_')^1/script_aliases/string.lower))^-1 * (1-lpeg.P'\n')^0 * '\n'
-- local entry = lpeg.Cg(codepoint_range * sep * lpeg.Cc(true))^-1 * (1-lpeg.P'\n')^0 * '\n'
local file = lpeg.Cf(
lpeg.Ct''
@@ -110,6 +123,48 @@ local script_mapping do
f:close()
end
+local function load_on_demand(specifications, size)
+ return setmetatable({}, { __index = function(t, k)
+ local specification = specifications[k]
+ if not specification then return end
+ local f = define_font(specification, size)
+ local fid
+ if type(f) == 'table' then
+ fid = font.define(f)
+ definers.register(f, fid)
+ elseif f then
+ fid = f
+ end
+ t[k] = fid
+ return fid
+ end})
+end
+
+local function collect_scripts(tfmdata)
+ local script_dict = {}
+ local hbdata = tfmdata.hb
+ if hbdata then
+ local face = hbdata.shared.face
+ for _, tag in next, { GSUBtag, GPOStag } do
+ local script_tags = face:ot_layout_get_script_tags(tag) or {}
+ for i = 1, #script_tags do
+ script_dict[tostring(script_tags[i]):gsub(" +$", "")] = true
+ end
+ end
+ else
+ local features = tfmdata.resources.features
+ for _, feature_table in next, features do
+ for _, scripts in next, feature_table do
+ for script in next, scripts do
+ script_dict[script] = true
+ end
+ end
+ end
+ script_dict["*"] = nil
+ end
+ return script_dict
+end
+
local additional_scripts_tables = { }
local additional_scripts_fonts = setmetatable({}, {
@@ -122,27 +177,112 @@ local additional_scripts_fonts = setmetatable({}, {
end,
})
+local function is_dominant_script(scripts, script, first, ...)
+ if script == first then return true end
+ if scripts[first] or not first then return false end
+ return is_dominant_script(scripts, script, ...)
+end
+
local function makecombifont(tfmdata, _, additional_scripts)
- local basescript = tfmdata.properties.script
- local scripts = {basescript = false}
- additional_scripts = additional_scripts_tables[additional_scripts]
- for script, fontname in pairs(additional_scripts) do
- if script ~= basescript then
- local f = fonts.definers.read(fontname, tfmdata.size)
- local fid
- if type(f) == 'table' then
- fid = font.define(f)
- else
- error[[FIXME???]]
+ local has_auto
+ additional_scripts = tostring(additional_scripts)
+ if additional_scripts:sub(1, 5) == "auto+" then
+ additional_scripts = additional_scripts:sub(6)
+ has_auto = true
+ elseif additional_scripts == "auto" then
+ has_auto, additional_scripts = true, false
+ end
+ if additional_scripts then
+ local t = additional_scripts_tables[tonumber(additional_scripts) or additional_scripts]
+ if not t then error(string.format("Unknown multiscript table %s", additional_scripts)) end
+ local lower_t = {}
+ for k, v in next, t do if type(k) == "string" then
+ local l = string.lower(k)
+ if lower_t[l] ~= nil and lower_t[l] ~= v then
+ error(string.format("Inconsistant multiscript table %q for script %s", additional_scripts, l))
+ end
+ lower_t[l] = v
+ end end
+ additional_scripts = lower_t
+ else
+ additional_scripts = {}
+ end
+ if has_auto then
+ local fallback = tfmdata.fallback_lookup
+ if fallback then -- FIXME: here be dragons
+ local fallbacks = {}
+ local current = tfmdata
+ local i = 0
+ while current do
+ local collected = collect_scripts(current)
+ for script in next, collected do
+ local scr_fb = fallbacks[script]
+ if not scr_fb then
+ scr_fb = {}
+ fallbacks[script] = scr_fb
+ end
+ scr_fb[#scr_fb + 1] = current.specification.specification .. ';script=' .. script .. ';-multiscript'
+ end
+ i = i - 1
+ current = fallback[i]
+ end
+ current = tfmdata
+ i = 0
+ while current do
+ local collected = collect_scripts(current)
+ for script, scr_fb in next, fallbacks do
+ if not collected[script] then
+ scr_fb[#scr_fb + 1] = current.specification.specification .. ';-multiscript'
+ end
+ end
+ i = i - 1
+ current = fallback[i]
+ end
+ for script, scr_fb in next, fallbacks do
+ local iso_script = script_to_iso(script)
+ if not additional_scripts[iso_script] and is_dominant_script(scr_fb, script, script_to_ot(iso_script)) then
+ local main = scr_fb[1]
+ table.remove(scr_fb, 1)
+ local fbid = luaotfload.add_fallback(scr_fb)
+ additional_scripts[iso_script] = main .. ';fallback=' .. fbid
+ end
+ end
+ else
+ local spec = tfmdata.specification
+ local collected = collect_scripts(tfmdata)
+ for script in next, collected do
+ local iso_script = script_to_iso(script)
+ if not additional_scripts[iso_script] and is_dominant_script(collected, script, script_to_ot(iso_script)) then
+ additional_scripts[iso_script] = spec.specification .. ';-multiscript;script=' .. script
+ ---- FIXME: IMHO the following which just modiefies the spec
+ -- would be nicer, but it breaks font patching callbacks
+ -- (except if we ignore them, but that would be inconsistant to
+ -- other fonts)
+ -- local new_raw_features = {}
+ -- local new_features = { raw = new_raw_features, normal = new_raw_features }
+ -- for f, v in next, spec.features.raw do
+ -- new_raw_features[f] = v
+ -- end
+ -- new_raw_features.multiscript = false
+ -- new_raw_features.script = script
+ -- local new_normal_features = luaotfload.apply_default_features(new_raw_features)
+ -- new_normal_features.sub = nil
+ -- new_normal_features.lookup = nil
+ -- new_features.normal = normalize(new_normal_features)
+ -- local new_spec = {}
+ -- for k, v in next, spec do
+ -- new_spec[k] = v
+ -- end
+ -- new_spec.hash = nil
+ -- new_spec.features = new_features
+ -- additional_scripts[script] = new_spec
+ end
end
- scripts[script] = {
- fid = fid,
- font = f,
- characters = f.characters,
- }
end
end
- tfmdata.additional_scripts = scripts
+ local basescript = tfmdata.properties.script or "dflt"
+ tfmdata.additional_scripts = load_on_demand(additional_scripts, tfmdata.size)
+ tfmdata.additional_scripts[basescript] = false
end
local glyph_id = node.id'glyph'
@@ -156,29 +296,30 @@ function domultiscript(head, _, _, _, direction)
end
if last_fonts then
local mapped_scr = script_mapping[cid]
- if mapped_scr == "Zinh" then
+ if mapped_scr == "zinh" then
mapped_scr = last_script
else
- local additional_scr = script_extensions[cid]
+ local additional_scripts = script_extensions[cid]
if additional_scripts then
if additional_scripts[last_script] then
mapped_scr = last_script
- elseif not last_fonts[mapped_scr] then
+ elseif last_fonts[mapped_scr] == nil then
for i = 1, #additional_scripts do
- if last_fonts[additional_scripts[i]] then
- mapped_scr = additional_scripts[i]
+ local script = additional_scripts[i]
+ if last_fonts[script] ~= nil then
+ mapped_scr = script
break
end
end
end
- elseif mapped_scr == "Zyyy" then
+ elseif mapped_scr == "zyyy" then
mapped_scr = last_script
end
end
last_script = mapped_scr
local mapped_font = last_fonts[mapped_scr]
if mapped_font then
- setfont(cur, mapped_font.fid)
+ setfont(cur, mapped_font)
end
end
end
@@ -188,6 +329,8 @@ function luaotfload.add_multiscript(name, fonts)
if fonts == nil then
fonts = name
name = #additional_scripts_fonts + 1
+ else
+ name = name:lower()
end
additional_scripts_tables[name] = fonts
return name
@@ -198,6 +341,7 @@ otffeatures.register {
description = "Combine fonts for multiple scripts",
manipulators = {
node = makecombifont,
+ plug = makecombifont,
},
-- processors = { -- processors would be nice, but they are applied
-- -- too late for our purposes
diff --git a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
index 9c0634f90d..3156882e86 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-notdef.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-notdef",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / color",
license = "GPL v2.0",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
index 4cf46fe329..2cdd006378 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-parsers.lua
@@ -7,8 +7,8 @@
local ProvidesLuaModule = {
name = "luaotfload-parsers",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / filelist",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
index 61949621cb..c49fa58fd9 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-resolvers.lua
@@ -11,8 +11,8 @@
local ProvidesLuaModule = {
name = "luaotfload-resolvers",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / resolvers",
license = "GPL v2.0"
}
diff --git a/macros/luatex/generic/luaotfload/luaotfload-scripts.lua b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
index 48ececf890..814223b5ed 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-scripts.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-script",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / Script helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload-status.lua b/macros/luatex/generic/luaotfload/luaotfload-status.lua
index b4bad63474..ed3324f304 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-status.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-status.lua
@@ -1,18 +1,18 @@
return {
["hashes"]={
- { "fontloader-2019-10-29.lua", "8b7d755e08cfef0826429ffa68271eb3" },
+ { "fontloader-2020-01-26.lua", "010915906c0926fc7f5f4d064a879be4" },
{ "fontloader-util-fil.lua", "4bb3e4dc72e308d8ed67cd7a80027fa7" },
- { "fontloader-util-str.lua", "fc15d89c4c35f7338d09fc7644fac181" },
+ { "fontloader-util-str.lua", "2e4625b13a5f4be76b1d8664a32119ec" },
{ "fontloader-l-unicode.lua", "9bc311ce08ce498f9caacb6164ea1d9f" },
{ "fontloader-l-math.lua", "a373be3ed2db0d5f98588fa81abca48f" },
{ "fontloader-l-boolean.lua", "18ed6c4b2c40dd87224ea33229548d20" },
- { "fontloader-l-file.lua", "3d6ea476061292a0da98c3f65cdabe46" },
- { "fontloader-l-io.lua", "42608ad95eb2822fdc370d1c11f08fb5" },
- { "fontloader-l-table.lua", "9844897b04a01bb197427d71de71de2b" },
+ { "fontloader-l-file.lua", "60ddd3948d9de7bde8b4a0f5c51ff9f5" },
+ { "fontloader-l-io.lua", "a4042e9d6bce71c61fdd94e6e17f2bf4" },
+ { "fontloader-l-table.lua", "a495e837874aa3e4fa57fea4dd05a26c" },
{ "fontloader-l-string.lua", "e1347bef0eeeff9f098df83b30b32df9" },
{ "fontloader-l-function.lua", "f771cc91839ebcdfc094083434fbe00f" },
{ "fontloader-l-lpeg.lua", "efe630e3a9a1d269120e59cfd8fba4ba" },
- { "fontloader-l-lua.lua", "dda8438a34886bb767dbad381f1ea70a" },
+ { "fontloader-l-lua.lua", "4185c43dd58d217094ef91c0310d8772" },
{ "fontloader-fonts-gbn.lua", "d25472d54c4841db43a745764a63533e" },
{ "fontloader-fonts-lig.lua", "b9dbe77ce747d4c35bb2a20ffbe5aa51" },
{ "fontloader-fonts-ext.lua", "01015ab3758cdc2af29394e6d502a91a" },
@@ -21,74 +21,74 @@ return {
{ "fontloader-fonts-enc.lua", "3e71a54297e8f85a1ac438bb0f20dd79" },
{ "fontloader-fonts-mis.lua", "bc9eb43c27f63ce9d0fff67e104fe1c6" },
{ "fontloader-basics-chr.lua", "58b7ef0c486e06090b362971b9f85e27" },
- { "fontloader-basics-nod.lua", "c05f47077c709bbf12a8758852dc4e06" },
+ { "fontloader-basics-nod.lua", "4ce2f7c752fdc4c1d6d9f74e8cd50be8" },
{ "fontloader-font-imp-effects.lua", "73a660359a0ec71e44cc2b7225a715ac" },
{ "fontloader-font-imp-italics.lua", "fe1ca80fb5ea4a2f8d2d5c484e7ba913" },
{ "fontloader-font-imp-ligatures.lua", "043daa4fcccf2560868da359d71d3a4a" },
{ "fontloader-font-imp-tex.lua", "77c374b0ef00c2fb12188ec42beb4257" },
- { "fontloader-font-def.lua", "f66c365dae4499f982d8bf16e5d37de3" },
+ { "fontloader-font-def.lua", "c525b9f55da1c736a1f6939c0a6f8f00" },
{ "fontloader-font-lua.lua", "55b281fb98f7bd848fc19928f376f647" },
{ "fontloader-font-afk.lua", "54d554530e75c57c56ee76234724e26d" },
{ "fontloader-font-one.lua", "987c5c5ed3754ad2feab80985067d59e" },
- { "fontloader-font-onr.lua", "d4d2449b4084e6afb1837ae5835082cc" },
+ { "fontloader-font-onr.lua", "22572ec0f86f53631e14b6d1ed43ee51" },
{ "fontloader-font-otc.lua", "1204a2fdc436e644127c0aa38ab69607" },
- { "fontloader-font-ocl.lua", "ba40df1a92b9b42a5c70d20c28f44759" },
+ { "fontloader-font-ocl.lua", "c1f4cbea3c4ec5002a04fc637b135711" },
{ "fontloader-font-osd.lua", "39e92f6e575741646d75ea79e3be87f3" },
- { "fontloader-font-ots.lua", "d6a0ce4b40cd4ee1895e2248dcf87d37" },
+ { "fontloader-font-ots.lua", "d0107799ec82da7f96dafe9626c5ee7f" },
{ "fontloader-font-ota.lua", "d6dfb94563d6a52675e274b2e673e4a6" },
{ "fontloader-font-otj.lua", "66c7a910d95d4a52b81061de776898e1" },
- { "fontloader-font-oto.lua", "52804afd96f4be005f513a012b874668" },
+ { "fontloader-font-oto.lua", "24238a7c600d090a8ee88312321dd9b3" },
{ "fontloader-font-otl.lua", "ec0241b7465a7713e53c246e8e9fb2a8" },
{ "fontloader-font-oup.lua", "0cef35af01739f52fd09feb5401192ae" },
{ "fontloader-font-dsp.lua", "5d3db0184c903829b2c5bddcb8cdb14c" },
{ "fontloader-font-ttf.lua", "44e61cef50dab9b1aaf48130f9367c34" },
- { "fontloader-font-cff.lua", "98d5a660ea803b65cb883c009ecf3c0b" },
+ { "fontloader-font-cff.lua", "c769020b41b39418f703347f3d328bc7" },
{ "fontloader-font-ott.lua", "aba6d8335a5f38a5a62d3631492f3392" },
{ "fontloader-font-oti.lua", "dbae7722baae24d917a17176553825cf" },
- { "fontloader-font-otr.lua", "b1c03925c949027c86f781785fa7a208" },
+ { "fontloader-font-otr.lua", "d96724dcb40c673ac294df7044a39925" },
{ "fontloader-font-vfc.lua", "94937140f2c909e9c831ba021f1ab303" },
{ "fontloader-font-map.lua", "f486746e90fe972de4b73e208ac7cbb2" },
{ "fontloader-font-cid.lua", "4d87988efa86020a14708ee03c23415f" },
- { "fontloader-font-con.lua", "8b35e7c2203d5b57c61942e07cee2c0a" },
- { "fontloader-font-ini.lua", "4299a02110bbd7c0d27e131235c5319d" },
- { "fontloader-data-con.lua", "7ce546725b1550f655c78ac9d69419ca" },
- { "fontloader-reference.lua", "5be3565068a1929b173bde862b48a30e" },
- { "fontloader-basics-gen.lua", "b21e91bbd534f77e368f0ec13f865aed" },
+ { "fontloader-font-con.lua", "b436bf6880a56216445779ac68fee877" },
+ { "fontloader-font-ini.lua", "4dee96e1e1474d324dd126bd5d375df8" },
+ { "fontloader-data-con.lua", "de6ae0997b0e70a23bcc9afff5d8b072" },
+ { "fontloader-reference.lua", "0c0e3262f5cc53d1142e459921526f69" },
+ { "fontloader-basics-gen.lua", "b88f9848c3247e4222b7bb63b0ee3f35" },
{ "mktests", "c7cff7025962922944376acc1ffa9c47" },
- { "mkstatus", "1a9f8bbf36426071b6970678975360a9" },
+ { "mkstatus", "72f4b4ff15c9f4fd95b8ba942b541b20" },
{ "mkcharacters", "92c24bb582fc84c0365634f29eb89863" },
{ "mkglyphlist", "557836886d4f0e6d656eac3ded4456a2" },
{ "mkimport", "60e0b11a1a68719033e86a3e0f4d5e86" },
- { "luaotfload-glyphlist.lua", "bb67952ea9fb1c3766402457bd477629" },
+ { "luaotfload-glyphlist.lua", "0c2e6db4d2d944b5e4e6d83971edc166" },
{ "luaotfload-characters.lua", "593ce9dccf6ddc4f7d4be0514f581102" },
- { "luaotfload-tounicode.lua", "f37eab5828b4aee392de359bf4d57027" },
- { "luaotfload-unicode.lua", "861eb4a6332e0b7d8e757cab4759a734" },
- { "luaotfload-resolvers.lua", "5d9e254413ba333a4f559be023355224" },
- { "luaotfload-parsers.lua", "e1f4a54c2f29550d3c8ff18e19841ee4" },
- { "luaotfload-multiscript.lua", "05d2f1c9a27afdbc4b9ad95f958cb6cb" },
- { "luaotfload-loaders.lua", "cc475c8b04368d3f8ef6e52495fb579a" },
- { "luaotfload-harf-plug.lua", "ec3ad02c41bd174aedc350dc4cabbc54" },
- { "luaotfload-harf-define.lua", "7e85627ae64b749f41de5863d7c5ca86" },
- { "luaotfload-notdef.lua", "23d514bea20fcb0343a8382537ab3924" },
- { "luaotfload-embolden.lua", "bd0cd6e3951dab2862ca2d2dc1c6bccb" },
- { "luaotfload-letterspace.lua", "352d83726eead3902323d451907aeb66" },
- { "luaotfload-features.lua", "c60d2fcaab63dc338d9abd82176f96ee" },
- { "luaotfload-database.lua", "3f126f3acdcf4b90f13d6c3c41b83147" },
- { "luaotfload-configuration.lua", "fdb8f0e3b826e91b8598d4b4a387aaa5" },
- { "luaotfload-colors.lua", "7f63ffde97bb798b63f2c94c5a7e474f" },
- { "luaotfload-auxiliary.lua", "5e027ad1dde5655eaa74204cdb709098" },
- { "luaotfload-filelist.lua", "3194c19d0618e4784711e87864e625ea" },
- { "luaotfload-tool.lua", "3f989f7646d8df2aea584d2333cfb894" },
- { "luaotfload-diagnostics.lua", "b31b30dd151cd2e6c359b56f4c9fd12c" },
- { "luaotfload-log.lua", "30d00c154254ce70fe7c1a33692110e2" },
- { "luaotfload-init.lua", "e22c43529440994d0c99734c736dbb65" },
- { "luaotfload-main.lua", "9fc20061c7af28ccfcfb95a69115c3e4" },
+ { "luaotfload-tounicode.lua", "8c678ba2c2c809706a63a79a339d102b" },
+ { "luaotfload-unicode.lua", "ec04cec91b4c7a73acace241f791a228" },
+ { "luaotfload-resolvers.lua", "92c1c59341213f716a6eee355b847849" },
+ { "luaotfload-parsers.lua", "ef73b50dee1935a1af4cd76ed303bba6" },
+ { "luaotfload-multiscript.lua", "d5a1d602ecc4b4caad5f89772dd8affa" },
+ { "luaotfload-loaders.lua", "084e6b89d85ccdc59d90102059d8020a" },
+ { "luaotfload-harf-plug.lua", "09d1f0baf43fb6932d5619436d0ff950" },
+ { "luaotfload-harf-define.lua", "e27975867cbe2eac101ea2ff366050dc" },
+ { "luaotfload-notdef.lua", "1a4f3eeedfb374927fa0673849c5f95b" },
+ { "luaotfload-embolden.lua", "8412b95b699231918ea78384ada0e3df" },
+ { "luaotfload-letterspace.lua", "2ffa8128161281fa2ca7605fc056e13d" },
+ { "luaotfload-features.lua", "2db4774ed71aa8ba4e859655e6076f1b" },
+ { "luaotfload-database.lua", "c11b6638c72aa2216aaf0432278654cc" },
+ { "luaotfload-configuration.lua", "d4c270b581eb22ded89bc2c6dffd7a78" },
+ { "luaotfload-colors.lua", "693b527638ff44e88530bef81cff360c" },
+ { "luaotfload-auxiliary.lua", "90307f9dc0fde714e7ade75ed8606de6" },
+ { "luaotfload-filelist.lua", "629600766c33b11ebce09dd77dbd67c0" },
+ { "luaotfload-tool.lua", "dfa990067c3f21fdebfcbd47b291fc9c" },
+ { "luaotfload-diagnostics.lua", "7c13bd4abdd110073b6dd438c94d28ec" },
+ { "luaotfload-log.lua", "c6e62cd69d185ea57605c21919ae103e" },
+ { "luaotfload-init.lua", "0e156bb051ffa7c51dbdaca4afe0b5ae" },
+ { "luaotfload-main.lua", "352cf2115d0b60e8537557baa9748f7a" },
},
["notes"]={
["committer"]="Ulrike Fischer <fischer@troubleshooting-tex.de>",
- ["description"]="v3.11/2019-11-10",
- ["loader"]="fontloader-2019-10-29.lua",
- ["revision"]="d2ab135f432eadbc68f529447aa47b906ff961ab",
- ["timestamp"]="2019-11-10 21:29:47 +0100",
+ ["description"]="v3.12/2020-02-02",
+ ["loader"]="fontloader-2020-01-26.lua",
+ ["revision"]="df675afec78546b857a89f1c416dc0f2600c8ff0",
+ ["timestamp"]="2020-02-02 22:36:36 +0100",
},
} \ No newline at end of file
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.1 b/macros/luatex/generic/luaotfload/luaotfload-tool.1
index 03b8373858..2d4ce7d16c 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.1
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.1
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD-TOOL 1 "2019-11-10" "3.11" "text processing"
+.TH LUAOTFLOAD-TOOL 1 "2020-02-02" "3.12" "text processing"
.SH NAME
luaotfload-tool \- generate and query the Luaotfload font names database
.
@@ -326,7 +326,7 @@ state.
.SS miscellaneous
.INDENT 0.0
.TP
-.BI \-\-verbose\fB= N\fP,\fB \ \-v
+.BI \-\-verbose\fB= N\fR,\fB \ \-v
Set verbosity level to \fIn\fP or the number of
repetitions of \fB\-v\fP\&.
.TP
@@ -414,7 +414,7 @@ them with the next run of \fILuaTeX\fP\&.
\fBtexdoc luaotfload\fP to display the manual for the \fILuaotfload\fP
package
.IP \(bu 2
-Luaotfload development \fI\%https://github.com/lualatex/luaotfload\fP
+Luaotfload development \fI\%https://github.com/latex3/luaotfload\fP
.IP \(bu 2
LuaLaTeX mailing list \fI\%http://tug.org/pipermail/lualatex\-dev/\fP
.IP \(bu 2
@@ -430,8 +430,8 @@ Tons, probably.
.SH AUTHORS
.sp
\fILuaotfload\fP was developed by the LuaLaTeX dev team
-(\fI\%https://github.com/lualatex/\fP). It is currently maintained by Ulrike Fischer
-and Marcel Krüger at \fI\%https://github.com/u\-fischer/luaotfload\fP
+(\fI\%https://github.com/lualatex/\fP). It is currently maintained by the LaTeX
+Project Team at \fI\%https://github.com/latex3/luaotfload\fP
The fontloader code is provided by Hans Hagen of Pragma ADE, Hasselt
NL (\fI\%http://pragma\-ade.com/\fP).
.sp
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.lua b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
index b83cbb84bc..de69173ed5 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.lua
@@ -9,8 +9,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tool",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload-tool / database functionality",
license = "GPL v2.0"
}
@@ -454,6 +454,9 @@ local show_info_table show_info_table = function (t, depth)
for n = 1, #keys do
local key = keys [n]
local val = t [key]
+ if key == "subfontindex" then
+ val = val - 1 -- We use 0-based subfont indices
+ end
if type (val) == "table" then
texiowrite_nl (indent .. stringformat (info_fmt, key, "<table>"))
show_info_table (val, depth + 1)
@@ -670,16 +673,11 @@ end
local subfont_by_name
subfont_by_name = function (lst, askedname, n)
- if not n then
- return subfont_by_name (lst, askedname, 1)
- end
-
- local font = lst[n]
- if font then
+ for n = 1, #lst do
+ local font = lst[n]
if fonts.names.sanitize_fontname (font.fullname) == askedname then
return font
end
- return subfont_by_name (lst, askedname, n + 1)
end
return false
end
@@ -726,7 +724,7 @@ local show_font_info = function (basename, askedname, detail, subfont)
for subfont = 1, nfonts do
logreport (true, 1, "resolve",
[[Showing info for font no. %d]],
- subfont)
+ subfont - 1)
show_info_items(shortinfo[subfont])
if detail == true then
show_full_info(fullname, subfont)
@@ -1211,7 +1209,7 @@ actions.query = function (job)
if subfont then
logreport (false, 0, "resolve",
"Resolved file name %q, subfont nr. %q",
- foundname, subfont)
+ foundname, subfont - 1)
else
logreport (false, 0, "resolve",
"Resolved file name %q", foundname)
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
index e810fa2ff6..eb2d6463bb 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tool.rst b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
index 09e4023882..35ca195501 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tool.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload-tool.rst
@@ -6,9 +6,9 @@
generate and query the Luaotfload font names database
-----------------------------------------------------------------------
-:Date: 2019-11-10
+:Date: 2020-02-02
:Copyright: GPL v2.0
-:Version: 3.11
+:Version: 3.12
:Manual section: 1
:Manual group: text processing
@@ -304,7 +304,7 @@ SEE ALSO
* ``texdoc luaotfload`` to display the manual for the *Luaotfload*
package
-* Luaotfload development `<https://github.com/lualatex/luaotfload>`_
+* Luaotfload development `<https://github.com/latex3/luaotfload>`_
* LuaLaTeX mailing list `<http://tug.org/pipermail/lualatex-dev/>`_
* LuaTeX `<http://luatex.org/>`_
* ConTeXt `<http://wiki.contextgarden.net>`_
@@ -319,8 +319,8 @@ AUTHORS
=======================================================================
*Luaotfload* was developed by the LuaLaTeX dev team
-(`<https://github.com/lualatex/>`__). It is currently maintained by Ulrike Fischer
-and Marcel Krüger at `<https://github.com/u-fischer/luaotfload>`__
+(`<https://github.com/lualatex/>`__). It is currently maintained by the LaTeX
+Project Team at `<https://github.com/latex3/luaotfload>`__
The fontloader code is provided by Hans Hagen of Pragma ADE, Hasselt
NL (`<http://pragma-ade.com/>`__).
diff --git a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
index 560f2c83aa..509a0d782d 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-tounicode.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-tounicode",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / tounicode",
license = "GPL v2.0",
author = "Hans Hagen, Khaled Hosny, Elie Roux, Philipp Gesang, Marcel Krüger",
diff --git a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
index 659e92d938..8c1f92cf31 100644
--- a/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
+++ b/macros/luatex/generic/luaotfload/luaotfload-unicode.lua
@@ -5,8 +5,8 @@
local ProvidesLuaModule = {
name = "luaotfload-unicode",
- version = "3.11", --TAGVERSION
- date = "2019-11-10", --TAGDATE
+ version = "3.12", --TAGVERSION
+ date = "2020-02-02", --TAGDATE
description = "luaotfload submodule / Unicode helpers",
license = "CC0 1.0 Universal",
author = "Marcel Krüger"
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.5 b/macros/luatex/generic/luaotfload/luaotfload.conf.5
index c6969eaec6..9301e95805 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.5
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.5
@@ -1,6 +1,6 @@
.\" Man page generated from reStructuredText.
.
-.TH LUAOTFLOAD.CONF 5 "2019-11-10" "3.11" "text processing"
+.TH LUAOTFLOAD.CONF 5 "2020-02-02" "3.12" "text processing"
.SH NAME
luaotfload.conf \- Luaotfload configuration file
.
@@ -605,7 +605,7 @@ The \fITEXMF\fP (using kpathsea).
\fBtexdoc luaotfload\fP to display the PDF manual for the \fILuaotfload\fP
package
.IP \(bu 2
-Luaotfload development \fI\%https://github.com/u\-fischer/luaotfload\fP
+Luaotfload development \fI\%https://github.com/latex3/luaotfload\fP
.IP \(bu 2
LuaLaTeX mailing list \fI\%http://tug.org/pipermail/lualatex\-dev/\fP
.IP \(bu 2
@@ -622,8 +622,8 @@ The XDG base specification
.SH AUTHORS
.sp
\fILuaotfload\fP was developed by the LuaLaTeX dev team
-(\fI\%https://github.com/lualatex/\fP). It is currently maintained by Ulrike Fischer
-and Marcel Krüger at \fI\%https://github.com/u\-fischer/luaotfload\fP
+(\fI\%https://github.com/lualatex/\fP). It is currently maintained by the
+LaTeX Project Team at \fI\%https://github.com/latex3/luaotfload\fP
.sp
This manual page was written by Philipp Gesang <\fI\%phg@phi\-gamma.net\fP>.
.SH COPYRIGHT
diff --git a/macros/luatex/generic/luaotfload/luaotfload.conf.rst b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
index 39faaa5040..b862c8b9b8 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.conf.rst
+++ b/macros/luatex/generic/luaotfload/luaotfload.conf.rst
@@ -6,9 +6,9 @@
Luaotfload configuration file
-----------------------------------------------------------------------
-:Date: 2019-11-10
+:Date: 2020-02-02
:Copyright: GPL v2.0
-:Version: 3.11
+:Version: 3.12
:Manual section: 5
:Manual group: text processing
@@ -386,7 +386,7 @@ SEE ALSO
* ``texdoc luaotfload`` to display the PDF manual for the *Luaotfload*
package
-* Luaotfload development `<https://github.com/u-fischer/luaotfload>`_
+* Luaotfload development `<https://github.com/latex3/luaotfload>`_
* LuaLaTeX mailing list `<http://tug.org/pipermail/lualatex-dev/>`_
* LuaTeX `<http://luatex.org/>`_
* Luaotfload on CTAN `<http://ctan.org/pkg/luaotfload>`_
@@ -402,8 +402,8 @@ AUTHORS
=======================================================================
*Luaotfload* was developed by the LuaLaTeX dev team
-(`<https://github.com/lualatex/>`_). It is currently maintained by Ulrike Fischer
-and Marcel Krüger at `<https://github.com/u-fischer/luaotfload>`_
+(`<https://github.com/lualatex/>`_). It is currently maintained by the
+LaTeX Project Team at `<https://github.com/latex3/luaotfload>`_
This manual page was written by Philipp Gesang <phg@phi-gamma.net>.
diff --git a/macros/luatex/generic/luaotfload/luaotfload.sty b/macros/luatex/generic/luaotfload/luaotfload.sty
index 2c9582e464..f779ecbf83 100644
--- a/macros/luatex/generic/luaotfload/luaotfload.sty
+++ b/macros/luatex/generic/luaotfload/luaotfload.sty
@@ -40,7 +40,7 @@
\fi
\ifdefined\ProvidesPackage
\ProvidesPackage{luaotfload}%
- [2019/11/10 v3.11 OpenType layout system]
+ [2020/02/02 v3.12 OpenType layout system]
\fi
\directlua{
if xpcall(function ()%
diff --git a/macros/luatex/generic/luaotfload/scripts-demo.pdf b/macros/luatex/generic/luaotfload/scripts-demo.pdf
index 34fb4bad45..574765e148 100644
--- a/macros/luatex/generic/luaotfload/scripts-demo.pdf
+++ b/macros/luatex/generic/luaotfload/scripts-demo.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
index b0ca589b30..49a6e2114f 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf
Binary files differ
diff --git a/macros/luatex/generic/luaotfload/shaper-demo.pdf b/macros/luatex/generic/luaotfload/shaper-demo.pdf
index 6baf30aa1d..0148482905 100644
--- a/macros/luatex/generic/luaotfload/shaper-demo.pdf
+++ b/macros/luatex/generic/luaotfload/shaper-demo.pdf
Binary files differ