diff options
Diffstat (limited to 'macros')
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 Binary files differindex 2209e26891..4fea1ccc17 100644 --- a/macros/latex/contrib/acro/acro-manual.pdf +++ b/macros/latex/contrib/acro/acro-manual.pdf 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 Binary files differindex 5619833757..02badca256 100644 --- a/macros/latex/contrib/chemmacros/chemmacros_en.pdf +++ b/macros/latex/contrib/chemmacros/chemmacros-manual.pdf 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 Binary files differindex 39592e3c9d..dae8b7dede 100644 --- a/macros/latex/contrib/derivative/derivative.pdf +++ b/macros/latex/contrib/derivative/derivative.pdf 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 Binary files differindex ce6afd430f..4d3462623b 100644 --- a/macros/latex/contrib/filehook/filehook.pdf +++ b/macros/latex/contrib/filehook/filehook.pdf 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 Binary files differindex 8982d35be2..9ca1bd3430 100644 --- a/macros/latex/contrib/fontspec/fontspec-code.pdf +++ b/macros/latex/contrib/fontspec/fontspec-code.pdf 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 Binary files differindex b64f441771..2003bddf9c 100644 --- a/macros/latex/contrib/fontspec/fontspec.pdf +++ b/macros/latex/contrib/fontspec/fontspec.pdf 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 Binary files differindex 67867850bc..ead2ea8bc7 100644 --- a/macros/latex/contrib/physconst/physconst.pdf +++ b/macros/latex/contrib/physconst/physconst.pdf 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 Binary files differindex 25ebfc5702..9ed6f02a7a 100644 --- a/macros/latex/contrib/thuthesis/main.pdf +++ b/macros/latex/contrib/thuthesis/main.pdf 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 Binary files differindex 714858ee1d..c8f7d1468c 100644 --- a/macros/latex/contrib/thuthesis/spine.pdf +++ b/macros/latex/contrib/thuthesis/spine.pdf 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 Binary files differindex 6be654adc5..7e7cf172cc 100644 --- a/macros/latex/contrib/thuthesis/thuthesis.pdf +++ b/macros/latex/contrib/thuthesis/thuthesis.pdf 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 Binary files differindex ee377662eb..fd66d129fc 100644 --- a/macros/latex/required/babel/base/babel.pdf +++ b/macros/latex/required/babel/base/babel.pdf 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 Binary files differindex 725e3cd14b..721f42266f 100644 --- a/macros/luatex/generic/lualibs/lualibs.pdf +++ b/macros/luatex/generic/lualibs/lualibs.pdf 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 Binary files differindex 9fc854a941..d6202804f9 100644 --- a/macros/luatex/generic/luaotfload/filegraph.pdf +++ b/macros/luatex/generic/luaotfload/filegraph.pdf 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 Binary files differindex 0515095402..0bc208e735 100644 --- a/macros/luatex/generic/luaotfload/luaotfload-conf.pdf +++ b/macros/luatex/generic/luaotfload/luaotfload-conf.pdf 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 Binary files differindex 815d215d6b..f374e6db89 100644 --- a/macros/luatex/generic/luaotfload/luaotfload-latex.pdf +++ b/macros/luatex/generic/luaotfload/luaotfload-latex.pdf 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 Binary files differindex e810fa2ff6..eb2d6463bb 100644 --- a/macros/luatex/generic/luaotfload/luaotfload-tool.pdf +++ b/macros/luatex/generic/luaotfload/luaotfload-tool.pdf 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 Binary files differindex 34fb4bad45..574765e148 100644 --- a/macros/luatex/generic/luaotfload/scripts-demo.pdf +++ b/macros/luatex/generic/luaotfload/scripts-demo.pdf diff --git a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf Binary files differindex b0ca589b30..49a6e2114f 100644 --- a/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf +++ b/macros/luatex/generic/luaotfload/shaper-demo-graphite.pdf diff --git a/macros/luatex/generic/luaotfload/shaper-demo.pdf b/macros/luatex/generic/luaotfload/shaper-demo.pdf Binary files differindex 6baf30aa1d..0148482905 100644 --- a/macros/luatex/generic/luaotfload/shaper-demo.pdf +++ b/macros/luatex/generic/luaotfload/shaper-demo.pdf |