summaryrefslogtreecommitdiff
path: root/Master
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2021-01-09 21:36:18 +0000
committerKarl Berry <karl@freefriends.org>2021-01-09 21:36:18 +0000
commitb33d382702e71037548dba5374e276b861ea8031 (patch)
tree1670ea7d19f460766341de9e97fe76c8bd09931f /Master
parent23616a07e621fb344c8329dfa20c60408b644d95 (diff)
latex-dev (9jan21)
git-svn-id: svn://tug.org/texlive/trunk@57365 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/README.md2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/alltt.pdfbin173079 -> 172584 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/cfgguide.pdfbin220217 -> 220226 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/cfgguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/changes.txt176
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/classes.pdfbin520851 -> 520832 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/clsguide.pdfbin372555 -> 372576 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/clsguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/cmfonts.pdfbin264505 -> 264510 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/cyrguide.pdfbin216997 -> 216995 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/cyrguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/doc.pdfbin630914 -> 631310 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/docstrip.pdfbin479526 -> 479297 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/encguide.pdfbin1532144 -> 1532142 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/encguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/exscale.pdfbin195877 -> 195882 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/fix-cm.pdfbin262059 -> 261622 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/fntguide.pdfbin417861 -> 418347 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/fntguide.tex18
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/graphpap.pdfbin156277 -> 156276 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ifthen.pdfbin205213 -> 204833 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/inputenc.pdfbin294900 -> 294928 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/latexchanges.pdfbin232390 -> 247704 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/latexchanges.tex99
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/latexrelease.pdfbin246195 -> 245786 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/latexsym.pdfbin192297 -> 192295 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/lb2.pdfbin138219 -> 138221 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/letter.pdfbin305670 -> 307271 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/lgc2.pdfbin101343 -> 101335 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/lppl.pdfbin125830 -> 125830 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdfbin735387 -> 747843 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdfbin516316 -> 518920 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdfbin901850 -> 929157 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdfbin621011 -> 626773 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltluatex.pdfbin305339 -> 305260 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews.pdfbin993090 -> 996577 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews01.pdfbin150020 -> 150020 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews01.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews02.pdfbin134751 -> 134751 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews02.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews03.pdfbin134742 -> 134739 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews03.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews04.pdfbin128772 -> 128773 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews04.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews05.pdfbin157181 -> 157182 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews05.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews06.pdfbin133138 -> 133141 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews06.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews07.pdfbin124029 -> 124030 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews07.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews08.pdfbin144482 -> 144483 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews08.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews09.pdfbin120222 -> 120221 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews09.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews10.pdfbin147946 -> 147944 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews10.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews11.pdfbin104936 -> 104939 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews11.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews12.pdfbin137919 -> 137922 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews12.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews13.pdfbin161065 -> 161063 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews13.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews14.pdfbin150907 -> 150913 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews14.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews15.pdfbin122092 -> 122092 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews15.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews16.pdfbin130687 -> 130689 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews16.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews17.pdfbin149838 -> 149848 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews17.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews18.pdfbin36005 -> 36004 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews18.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews19.pdfbin235073 -> 235075 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews19.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews20.pdfbin283318 -> 283324 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews21.pdfbin233492 -> 233489 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews22.pdfbin302836 -> 302831 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews22.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews23.pdfbin274459 -> 274456 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews23.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews24.pdfbin252645 -> 252643 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews24.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews25.pdfbin196326 -> 196325 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews25.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews26.pdfbin362839 -> 362839 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews26.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews27.pdfbin239758 -> 239759 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews27.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews28.pdfbin368226 -> 368231 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews28.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews29.pdfbin433004 -> 433003 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews29.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews30.pdfbin491246 -> 491245 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews31.pdfbin500919 -> 500928 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews32.pdfbin520923 -> 520917 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews33.pdfbin229842 -> 325333 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltnews33.tex60
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdfbin749381 -> 756536 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdfbin503894 -> 528458 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltx3info.pdfbin191527 -> 191531 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltx3info.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdfbin215102 -> 215243 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/makeindx.pdfbin160667 -> 160668 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/manifest.txt1
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/manual.pdfbin151347 -> 151352 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/modguide.pdfbin220388 -> 220389 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/modguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/nfssfont.pdfbin202451 -> 202445 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/proc.pdfbin216877 -> 216401 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/slides.pdfbin351586 -> 351910 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/slifonts.pdfbin214710 -> 214706 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/source2e.pdfbin4350850 -> 4392016 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/source2e.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/syntonly.pdfbin181372 -> 181871 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/tlc2.pdfbin164947 -> 164952 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/tulm.pdfbin156546 -> 156546 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/usrguide.pdfbin399035 -> 399074 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/usrguide.tex2
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/usrguide3.pdfbin0 -> 181816 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/usrguide3.tex701
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdfbin330849 -> 330863 bytes
-rw-r--r--Master/texmf-dist/doc/latex-dev/base/webcomp.pdfbin136159 -> 136162 bytes
-rw-r--r--Master/texmf-dist/source/latex-dev/base/alltt.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/alltt.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/classes.dtx113
-rw-r--r--Master/texmf-dist/source/latex-dev/base/classes.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/cmextra.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/cmfonts.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/doc.dtx22
-rw-r--r--Master/texmf-dist/source/latex-dev/base/docstrip.dtx16
-rw-r--r--Master/texmf-dist/source/latex-dev/base/docstrip.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ec.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/exscale.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/exscale.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/fix-cm.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/fix-cm.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/fontdef.dtx12
-rw-r--r--Master/texmf-dist/source/latex-dev/base/format.ins6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/graphpap.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/graphpap.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ifthen.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ifthen.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/inputenc.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/inputenc.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latex209.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latex209.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latexrelease.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latexrelease.ins52
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latexsym.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/latexsym.ins6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/letter.dtx28
-rw-r--r--Master/texmf-dist/source/latex-dev/base/letter.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltalloc.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltbibl.dtx61
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltboxes.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltclass.dtx230
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltcounts.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltdefns.dtx31
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx20
-rw-r--r--Master/texmf-dist/source/latex-dev/base/lterror.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltexpl.dtx127
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx254
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfiles.dtx22
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfinal.dtx15
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfloat.dtx16
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx10
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx399
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx49
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfssini.dtx56
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx164
-rw-r--r--Master/texmf-dist/source/latex-dev/base/lthooks.dtx906
-rw-r--r--Master/texmf-dist/source/latex-dev/base/lthyphen.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltlength.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltlists.dtx14
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltlogos.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltluatex.dtx22
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltmath.dtx15
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx47
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx14
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltoutenc.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltoutput.dtx20
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltpage.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltpageno.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltpar.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltpictur.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltplain.dtx12
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltsect.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltshipout.dtx160
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltspace.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/lttab.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx26
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltthm.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltvers.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx6
-rw-r--r--Master/texmf-dist/source/latex-dev/base/ltxref.dtx10
-rw-r--r--Master/texmf-dist/source/latex-dev/base/makeindx.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/makeindx.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/newdc.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/newlfont.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/nfssfont.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/nfssfont.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/olddc.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/oldlfont.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/preload.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/proc.dtx8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/proc.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/slides.dtx18
-rw-r--r--Master/texmf-dist/source/latex-dev/base/slides.ins8
-rw-r--r--Master/texmf-dist/source/latex-dev/base/syntonly.dtx2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/syntonly.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/tulm.ins4
-rw-r--r--Master/texmf-dist/source/latex-dev/base/unpack.ins2
-rw-r--r--Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx25
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/alltt.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ansinew.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/applemac.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/article.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ascii.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty12
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bezier.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk10.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk11.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/bk12.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/book.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1250.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1252.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp1257.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp437.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp437de.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp850.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp852.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp858.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/cp865.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/decmulti.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/doc.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/docstrip.tex6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty14
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/exscale.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fix-cm.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/flafter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fleqn.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fleqn.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fltrace.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontenc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.cfg6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fontmath.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.cfg6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/fonttext.ltx4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/graphpap.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/hyphen.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/idx.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ifthen.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/inputenc.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/lablst.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex.ltx576
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latex209.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexrelease.sty11746
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latexsym.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin1.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin10.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin2.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin3.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin4.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin5.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/latin9.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/leqno.clo2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/leqno.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.cls6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/letter.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltluatex.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/macce.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/makeidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/newlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/next.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/nfssfont.tex4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/oldlfont.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlcmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omlenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omllcmm.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omscmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omsenc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/openbib.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ot4enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.cfg6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/preload.ltx2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/proc.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/proc.sty4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/report.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/sfonts.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/shortvrb.sty6
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/showidx.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size10.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size11.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/size12.clo4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.cls4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/slides.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/source2edoc.cls39
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/structuredlog.sty8
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/syntonly.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1enc.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2benc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/testpage.tex2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/texsys.cfg2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/textcomp.sty2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tracefnt.sty50
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1enc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tuenc.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmdh.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmssq.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmr.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmss.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ucmtt.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ulasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/ullasy.fd2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8-2018.def2
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8.def4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu4
-rw-r--r--Master/texmf-dist/tex/latex-dev/base/x2enc.dfu4
373 files changed, 10249 insertions, 7033 deletions
diff --git a/Master/texmf-dist/doc/latex-dev/base/README.md b/Master/texmf-dist/doc/latex-dev/base/README.md
index 9a2a2436892..670f7eaa07f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/README.md
+++ b/Master/texmf-dist/doc/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2021-05-01 pre-release 0
+Release 2021-05-01 pre-release 1
Overview
--------
diff --git a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
index 24ec82b17c0..3c889b299a3 100644
--- a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
index 8826a946867..8171183a8eb 100644
--- a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex b/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex
index 84cde10c84f..048f4f4ef5e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/changes.txt b/Master/texmf-dist/doc/latex-dev/base/changes.txt
index 6d70494baaf..bdb299ae3c0 100644
--- a/Master/texmf-dist/doc/latex-dev/base/changes.txt
+++ b/Master/texmf-dist/doc/latex-dev/base/changes.txt
@@ -6,10 +6,186 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
================================================================================
+2020-12-22 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssaxes.dtx (subsection{Changing to a new series}):
+ Distangle series and shape update by delaying the font series
+ and font shape merging (gh/444)
+
+ Move the rollback info for \normalshape after its main definition
+ otherwise it will not be undone (gh/458)
+
+2020-12-22 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfsstrc.dtx (subsection{General font loading}):
+ Alter \selectfont to do the delayed merging of font series
+ and font shape (gh/444)
+
+2020-12-27 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * letter.dtx (subsubsection{Page breaking control}):
+ The \opening argument was splitting name and address using \\
+ but did not allow to use \\[...] for this (gh/427)
+
+2020-12-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltbibl.dtx (section{Bibliography Generation}):
+ Delay any \cs{nocite} in the preamble instead of raising
+ an error (gh/424)
+
+2020-12-06 Johannes Braams <Johannes.Braams@latex-project.org>
+
+ * miscelaneous files: gh/428, gh/429 and gh/430 list a number of
+ typing mistakes and missing documentation that have crept in over
+ the years. The following files were affected and have been
+ corrected:
+ alltt.dtx, classes.dtx, doc.dtx, docstrip.dtx, fix-cm.dtx,
+ fontdef.dtx, ifthen.dtx, inputenc.dtx, latex209.dtx,
+ latexrelease.dtx, ltbibl.dtx, ltboxes.dtx, ltclass.dtx,
+ ltcntrl.dtx, ltcounts.dtx, ltdefns.dtx, ltdirchk.dtx, ltexpl.dtx,
+ ltfilehook.dtx, ltfiles.dtx, ltfinal.dtx, ltfloat.dtx,
+ ltfntcmd.dtx, ltfssaxes.dtx, ltfssbas.dtx, ltfsscmp.dtx,
+ ltfssdcl.dtx, ltfssini.dtx, ltfsstrc.dtx, lthooks.dtx,
+ ltlength.dtx, ltlists.dtx, ltluatex.dtx, ltmath.dtx, ltmiscen.dtx,
+ ltoutenc.dtx, ltoutput.dtx, ltpage.dtx, ltpageno.dtx,
+ ltpictur.dtx, ltplain.dtx, ltsect.dtx, ltshipout.dtx,
+ lttextcomp.dtx, ltvers.dtx, ltxdoc.dtx, ltxref.dtx, nfssfont.dtx,
+ proc.dtx, slides.dtx, utf8ienc.dtx.
+
+2020-12-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfilehook.dtx (subsection{Declaring a file substitution}):
+ Don't drop file substitution declarations when rolling back
+ just render them no-ops
+
+2020-12-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+ Add a hook to \selectfont to be executed after the switch to the
+ new font. This implements the functionality formerly in the everysel
+ package.
+
+2020-12-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfinal.dtx (subsection{File substitutions}):
+ Emulate everysel package
+
+2020-12-04 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssini.dtx (subsection{Miscellaneous}):
+ Setting up \f@series and \f@shape default values directly (gh/444)
+
+2020-11-23 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltshipout.dtx:
+ Check for both kernel and user hooks and execute if either is non-empty (gh/431)}
+
+2020-10-26 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmiscen.dtx (subsection{Environments}):
+ \enddocument should always start out in vmode (gh/385)
+
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
+
+#########################
+# 2020-10-01 PL 4 Release
+#########################
+
+2021-01-07 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltfilehook.dtx:
+ Undefine \@expl@@@filehook@file@pop@@ to avoid error when rolling back (gh/463).
+
+ * lthooks.dtx:
+ Modified internal copies of l3tl commands to avoid errors with l3debug (gh/463).
+
+2020-12-18 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * lthooks.dtx:
+ Preserve trailing slash in file hook name if the file name is empty (gh/464).
+
+ * ltfilehook.dtx:
+ Restore \CurrentFile(Path)(Used) after the file is input (gh/464).
+
+2020-12-03 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * usrguide3.tex
+ New file to cover creation of document commands
+
+
+#########################
+# 2020-10-01 PL 3 Release
+#########################
+
+2020-12-18 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * lthooks.dtx:
+ Moved 'top-level' code label at the very end of hooks.
+ - In reverse hooks, 'top-level' goes at the beginning.
+ - 'top-level' cannot be used as a label outside of the top-level.
+ - The label for the 'top-level' cannot be changed.
+ - Simplified internal managing of default label.
+ Renamed \DeclareDefaultHookLabel to \SetDefaultHookLabel (the old name
+ will be kept until the next release).
+ Provide \PushDefaultHookLabel and \PopDefaultHookLabel.
+ Fixed a small bug in \ShowHook and \LogHook.
+
+ * ltclass.dtx:
+ Remove \@expl@@@hook@curr@name@push@@n from \@pushfilename to
+ follow changes to lthooks.dtx.
+
+2020-12-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssbas.dtx (subsection{Macros for the user}):
+ Drop ``m'' if the series value is a member of a fixed list
+ and issue warning if doing it (gh/453)
+
+2020-11-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * latexrelease.ins:
+ reorder module loading to match the order used
+ in the format to correctly resolve dependencies (gh/434)
+
+ * ltexpl.dtx (subsection{Loader}):
+ Load xparse in latexrelease if necessary and add missing
+ IncludeInRelease guards (gh/434)
+
+ * ltdefns.dtx, ltfilehook.dtx, lthooks.dtx, ltxshipout.dtx:
+ Add rollback support for forward case (gh/434)
+
+2020-11-20 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltclass.dtx:
+ Remove file path from \@currname and use only \@currname to identify
+ a package internally (gh/422).
+ Add \@currpath and (temporarily) \@kernel@currpathstack.
+ In \ProvidesPackage check the argument with \strcmp instead of \ifx.
+ In case of substitution, copy the option list to the requested package.
+
+ * ltfilehook.dtx:
+ Keep path in the replacement file (#2) in \declare@file@substitution.
+ In case of a replacement, pass the actually loaded file to \@addtofilelist.
+ Explicitly clear replacement flag after using it.
+
+2020-11-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * fntguide.tex:
+ Updated documentation of virtual shapes \updefault and \ulcdefault
+
+2020-11-09 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmath.dtx:
+ \negmedspace and \negthickspace have been only in amsmath,
+ so we need to undefine for rollback because amsmath used
+ \newcommand back then (gh/423)
+
+2020-11-09 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltclass.dtx (section{Package/class rollback mechanism}):
+ Change help text for suspicous rollback, because the package may have
+ existed then --- there is just no rollback data (gh/423)
+
#########################
# 2020-10-01 PL 2 Release
#########################
diff --git a/Master/texmf-dist/doc/latex-dev/base/classes.pdf b/Master/texmf-dist/doc/latex-dev/base/classes.pdf
index 36bf46d8cc0..7c2a8a111c8 100644
--- a/Master/texmf-dist/doc/latex-dev/base/classes.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/classes.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
index 8aa406713f8..bf272bfaaec 100644
--- a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
index d778bf9ff4c..57f4b2fd79e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
index e9e304bf201..7ca95155089 100644
--- a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
index c078b7aaf48..6ff92200632 100644
--- a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex b/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex
index 44c30b1153f..89c5a56b7f0 100644
--- a/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/doc.pdf b/Master/texmf-dist/doc/latex-dev/base/doc.pdf
index 59e323df71f..960e997adb2 100644
--- a/Master/texmf-dist/doc/latex-dev/base/doc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
index e4ccadef955..1b07721077c 100644
--- a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
index 374ac813898..fe668c7f930 100644
--- a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/encguide.tex b/Master/texmf-dist/doc/latex-dev/base/encguide.tex
index 339bce1eb33..aeb2f35037f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/encguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/encguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
index d1a0b2ed803..52395da9049 100644
--- a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
index 138d239544d..1c1c03621a5 100644
--- a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
index 2548c0f2002..5cadeb9dfba 100644
--- a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex
index b6576a02370..7a824d0a997 100644
--- a/Master/texmf-dist/doc/latex-dev/base/fntguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/fntguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
%
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
@@ -42,7 +42,7 @@
newer NFSS features of 2020}\\
All rights reserved.}
-\date{July 2020}
+\date{November 2020}
\begin{document}
@@ -340,22 +340,25 @@ box warning, for example:
\end{verbatim}
The author commands for fonts set the five attributes:
\begin{center}
+ \hspace*{-1em}%
\begin{tabular}{rcl}
\emph{Author command} & \emph{Attribute}
& \emph{Value in} |article| \emph{class} \\
|\textnormal{..}| or |\normalfont| & family & |cmr| \\
+ & series & |m| \\
+ & shape & |n| \\[1pt]
|\textrm{..}| or |\rmfamily| & family & |cmr| \\
|\textsf{..}| or |\sffamily| & family & |cmss| \\
|\texttt{..}| or |\ttfamily| & family & |cmtt| \\
|\textmd{..}| or |\mdseries| & series & |m| \\
- |\textbf{..}| or |\bfseries| & series & |bx| \\
- |\textup{..}| or |\upshape| & shape & |n| \\
+ |\textbf{..}| or |\bfseries| & series & |bx| \\[1pt]
|\textit{..}| or |\itshape| & shape & |it| \\
|\textsl{..}| or |\slshape| & shape & |sl| \\
|\textsc{..}| or |\scshape| & shape & |sc| \\
|\textssc{..}| or |\sscshape| & shape & |ssc| \\
|\textsw{..}| or |\swshape| & shape & |sw| \\
- |\textulc{..}| or |\ulcshape| & shape & |ulc| \\
+ |\textulc{..}| or |\ulcshape| & shape & |ulc| (virtual) $\to$ |n|, |it|, |sl| or |ssc| \\
+ |\textup{..}| or |\upshape| & shape & |up| (virtual) $\to$ |n| or |sc| \\[1pt]
|\tiny| & size & |5pt| \\
|\scriptsize| & size & |7pt| \\
|\footnotesize| & size & |8pt| \\
@@ -520,8 +523,9 @@ and the |ssub| size function, see Section~\ref{sec:sizefunct}.
The shapes selected by |\textit|, |\itshape|, |\textsl|, |\slshape|,
|\textsc|, |\scshape|, |\textssc|, |\sscshape|, |\textsw|, |\swshape|,
|\textulc|, |\ulcshape|, |\textup| and |\upshape|. By default these are
-|it|, |sl|, |sc|, |ssc|, |sw|, |ulc| and |n|. |ulc| is special here
-since it is a virtual one; it doesn't exist as a real shape. The
+|it|, |sl|, |sc|, |ssc|, |sw|, |ulc| and |up|. Note that |ulc| and |up| are special here
+because they are virtual shapes; they don't exist as real shape values. Instead they alter
+the existing shape value based on rules, i.e., the result depends on context. The
respective macros |\textulc| or |\ulcshape| change small capitals back
to upper/lower case but will not change the font with respect to
italics, slanted or swash. |\upshape| or |\textup| in contrast will
diff --git a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
index 5066c175877..b7cba8a565d 100644
--- a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
index 0cf88429049..a5263ace6bd 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
index e62e670ce81..e27e93c46e0 100644
--- a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf b/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf
index c4730ac9f0f..0a86ec34c42 100644
--- a/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex b/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex
index dc8eb4be4eb..500baa66c23 100644
--- a/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2020
+% Copyright (C) 2015-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -38,10 +38,10 @@
\title{Changes to the \LaTeXe{} format}
-\author{\copyright~Copyright 2015--2020, \LaTeX3 Project Team.\\
+\author{\copyright~Copyright 2015--2021, \LaTeX3 Project Team.\\
All rights reserved.}
-\date{2020-02-02}
+\date{2021-01-08}
% a few commands from doc
\newcommand\Lpack[1]{\mbox{\textsf{#1}}}
@@ -75,16 +75,15 @@
\url{https://tex.stackexchange.com/q/#1}}
\fi
-\begin{document}
-\maketitle
+\setcounter{tocdepth}{1} % don't show subsections
-\tableofcontents
-\newpage
+\begin{document}
-\section{Introduction}
+\maketitle
+\begin{abstract}
This document describes changes that were made to the
\LaTeX\ format since the 2014-05-01 \LaTeX\ releases.
@@ -99,13 +98,79 @@ As a summary of changes for a main release will always be available in
but changes in any patch releases will be listed in more
detail here.
-More detailed change logs are available as
+More detailed change logs are available as
\texttt{changes.txt} in the base distribution, and full code
differences may be browsed via the code repository on GitHub
see for example
\url{https://github.com/latex3/latex2e/commits/master}.
+\end{abstract}
+
+\tableofcontents
+
+\newpage
+
+%\section{Introduction}
+
+
+
+\section{Changes introduced in 2020-10-01 patch~4}
+
+This patch fixed two bugs in the hook management: if debugging for the
+L3 programming layer was turned on it reported inconsistent use of
+local/global variables. This was a spurious warning but nevertheless
+disconcerting (\ghissue{463}). The other bug was more serious, in some
+situations a wrong value of \verb=\CurrentFile= inside of file-related hooks
+could lead to errors (\ghissue{464}).
+
+We also added the documentation file \texttt{userguide3.pdf} which
+will become the main home for documenting new features of \LaTeX. At
+this point in time it covers the \Lpack{xparse} functionality that has
+been added to the kernel.
+
+\section{Changes introduced in 2020-10-01 patch~3}
+
+This patch fixed some rollback issues that prevented successful
+rollback to other release levels in some cases. It also fixed an issue
+with file hooks involving files with explicit paths (\ghissue{422}).
+
+One important change was to handle hook declarations done in the
+document preamble in a special way, e.g., those done with
+\verb=\AtBeginDocument=. They are now always executed last and are not
+subject to the normal code sorting for hooks, because they are nearly always
+needed to overwrite earlier settings made in packages.
+
+Finally, the NFSS series handling was slightly changed to
+automatically drop surplus ``\texttt{m}''s from series specifications
+when needed (and warn about them when encountered), e.g.,
+``\texttt{mc}'' automatically becomes ``\texttt{c}'' which is the
+official NFSS name for a \emph{medium compact} series (\ghissue{453}).
+This was done to improve the fix in 2020-02-02 PL~5.
+
+\section{Changes introduced in 2020-10-01 patch~2}
+
+This patch fixed the passing of options to packages and classes when
+they are stored in a special place (denoted by \verb=\input@path=)
+instead of their normal location (\ghissue{414}). In that case the
+options got lost.
+
+\section{Changes introduced in 2020-10-01 patch~1}
+
+This patch fixed a file handling issue: to allow for spaces in file
+names quotes were used but this upsets Bib\TeX{} (\ghissue{400}). In
+addition, two rollback issues got corrected.
+
+\section{Changes introduced in 2020-10-01}
+Major enhancements in this release include pre-loading of the
+\Lpack{xparse} package for producing document-level commands with more
+complicated argument signatures and the new hook management system for
+\LaTeX{} documented in \texttt{lthooks-doc.pdf},
+\texttt{ltfilehook-doc.pdf} and \texttt{ltshipout-doc.pdf}.
+In addition there have been many smaller fixes and enhancements.
+Please see \ltnewsissue{32} for an overview of the new features and
+the change log in \texttt{changes.txt} for a more detailed list of
+individual changes.
\section{Changes introduced in 2020-02-02 patch~5}
@@ -167,7 +232,7 @@ Major enhancements in this release include pre-loading \Lpack{expl3}
to improve startup times, especially with Lua\TeX\ and Xe\TeX, and
extra features in the font selection mechanism. Please see
\ltnewsissue{31} for an overview of the new features and the change
-log in \texttt{changelog.txt} for a more detailed list of individual
+log in \texttt{changes.txt} for a more detailed list of individual
changes.
@@ -248,7 +313,7 @@ counter prefix commands \verb|p@...| so that they would take the counter
value as an argument instead of just acting as a prefix to them. These
packages also provided the \verb|\labelformat| macro to change the prefix
macro and \verb|\Ref| so that using counters defined that way in the
-beginning of sentences would have the proper capitalisation. These features
+beginning of sentences would have the proper capitalization. These features
were added to the \LaTeXe{} kernel.
The kernel now says ``Trying to load\ldots''
@@ -283,7 +348,7 @@ provided as alias for the names based on the Adobe font names
The use of potrusion in tables of contents is suppressed by default,
see \sxquestion{172785}.
-The handling of visible space in verbation was adjusted for
+The handling of visible space in verbatim was adjusted for
\ghissue{69} and \ghissue{70}.
Spaces are removed from the argument passed to BiBTeX, \ghissue{88}.
@@ -295,7 +360,7 @@ levels of split hyperlinks, avoiding a fatal pdftex error. \ghissue{94}.
\section{Changes introduced in 2018-04-01 patch~5}
-Improved support for non ASCII filenames on the commandline on
+Improved support for non ASCII filenames on the command line on
filesystems using legacy encodings.
Adjusted the new package rollback code so that some edge cases where rollback
@@ -344,11 +409,11 @@ Lua\TeX, now at 1.04.
Previously defining an encoding-specific composite with an undeclared
accent (or an accent declared later) gave no error, but did nothing useful.
-\LaTeX\ will now detect this and give the accent comamnd a default definition
+\LaTeX\ will now detect this and give the accent command a default definition
as an error, allowing the declared composite to work as intended.
The definition of \verb|\-| is adjusted to match the comments in
-\gnatsissue{3855} to accomodate non standard settings of \verb|\hyphenchar|.
+\gnatsissue{3855} to accommodate non standard settings of \verb|\hyphenchar|.
In parboxes and similar settings, \verb|\lineskiplimit| is now
reset (to the existing default value, \verb|\normallineskiplimit|).
@@ -409,7 +474,7 @@ Load Unicode data from new generic \texttt{unicode-data} distribution.
\section{Changes introduced in 2015/10/01 patch~2}
-This release fixes the behaviour of the allocation mechanism if the switch
+This release fixes the behavior of the allocation mechanism if the switch
from the standard to extended pool takes place within a group.
\section{Changes introduced in 2015/10/01 patch~1}
@@ -444,7 +509,7 @@ The command |\textcommabelow| has been added. This is mainly intended for Romani
\textcommabelow{S}\,\textcommabelow{s}\,\textcommabelow{T}\,\textcommabelow{t}.
\subsection{Unicode 8}
-The file |unicode-letters.def| used to initialise character data in
+The file |unicode-letters.def| used to initialize character data in
Unicode \TeX\ variants has been regenerated from data files updated
to Unicode~8.
diff --git a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
index 317c29c818a..a0c1c75aad6 100644
--- a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
index e13e0159222..1b2b921b260 100644
--- a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
index 95f7ab464dc..7a7e1ad0cfb 100644
--- a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/letter.pdf b/Master/texmf-dist/doc/latex-dev/base/letter.pdf
index 0ecb9027722..1843ce9d7b2 100644
--- a/Master/texmf-dist/doc/latex-dev/base/letter.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/letter.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
index 66e46fdbd08..eea053fb380 100644
--- a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
index 9867939020e..6f50abcccef 100644
--- a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
index 4836c1bd883..54158158e33 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
index 92d88ae67d4..00ccfdaba9b 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
index 872fda12530..13d887db4e6 100644
--- a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
index d7f83dde7f7..6a45fe27886 100644
--- a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
index 4623628c0df..b37fec19fbb 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
index 98b5f212653..1fad83e1e14 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
index 16feb5dff67..650b30ac91d 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex
index c5d66f003ed..b8cff84839a 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
index e69431509bc..6be0c94845e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex
index b0e3d15be86..8051e595357 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
index 6d6ca8f0b59..b8d7f44886f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex
index 0496843f0d7..cb5776eaafe 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
index 4469af923bd..abc02c307c0 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex
index d64d4cb7484..6d04da020b4 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
index d4c45b4d370..cb2dece233a 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex
index 07b95287ef4..c3a87ab831e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
index 90cc6996490..57c96ffe6ae 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex
index c296040047c..7d8798e4212 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
index b067bff4a73..7eeae6c33e9 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex
index 020e8bd8a6a..47bb0d0003e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
index cdbbc9a4a1b..0fef2ab5053 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex
index ab9d26d48b0..2bb9bf48c5f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
index e7a6904430c..7119a3b1f69 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex
index f0b396586f9..d3416545c86 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
index 2e2fc2c3951..fb1324621e9 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex
index 02ba863a381..a888559e4ce 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
index c61dfba707d..f3a652baf4f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex
index 40c1c120afc..c300ae95c9b 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
index f2c21537ce7..1eb52def470 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex
index 5bf095b4aa7..c0ee6fe4117 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
index a695c49fd7d..9ad4d3baf94 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex
index f9241ead816..49519a871e8 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
index a671d40d948..5b2c3e04a46 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex
index 22df643f751..bc9b47d7cf9 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
index 92fa3be15e2..7f6d955457f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex
index cbf8f8840b5..6c602c60c57 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
index 520035adf3d..2b01d63ba67 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex
index 75ee38c8150..0e78e9b7910 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
index 25a87d8bf82..80c54ada963 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex
index 9abe4053e75..c6d7678f1a7 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
index 001f7ef1f4f..6a6a7e211b8 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex
index 3a99f8501b3..253f7057a30 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
index 78ded2a73d2..848d719f7bb 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex
index a6f1fa9512c..0c0bb5740b8 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
index 217ff1265f1..66a63d909c4 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
index f7df926a707..0f166e8e5c4 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
index c02d30d7ffa..b25ebf972cd 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex
index c6cfec6c452..90eed223f14 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2020
+% Copyright (C) 2015-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
index a20c14c9206..9ef72c15079 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex
index e14a0697b07..b645bbf4ed4 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2020
+% Copyright (C) 2015-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
index 0f5c100f10f..b4861051735 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex
index 6371ffa0a31..15588f27a66 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2020
+% Copyright (C) 2015-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
index 19593879e7e..973b4d7b639 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex
index 1500da5c07d..58ca8d78c74 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2016-2020
+% Copyright (C) 2016-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
index 34dec46de88..0a8d0c21d40 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex
index 134859ad63e..af3b44264e0 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2020
+% Copyright (C) 2017-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
index 2ea1199dce5..f16a8a88d5c 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex
index 6b550bf0cd4..a4cf53705f2 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2020
+% Copyright (C) 2017-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
index 11b5fbd4d9b..cea0c87f370 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex
index 6a683c83af2..c1cdd6bdbf6 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2020
+% Copyright (C) 2017-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
index a565da3c83b..c13f8bb8feb 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex
index c707c653422..895b6d0f0cd 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2018-2020
+% Copyright (C) 2018-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
index 53009b88f4c..f46f249cb29 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
index 437e0e30c25..93104e511e9 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
index 9b7f223680b..6dceda4651a 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
index 2d24a7aa7aa..ec075df271c 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
index daa8fc69e8c..f3341e7a996 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
@@ -114,8 +114,68 @@
\section{Other changes to the \LaTeX{} kernel}
+\subsection{\cs{end}\texttt{\textbraceleft document\textbraceright}
+ should always start in v-mode}
+
+Until now \verb=\end{document}= executed the code from the
+\cs{AtEndDocument} hook as its first action. This meant that it was
+executed in horizontal mode if the user left no empty line after the
+last paragraph. As a result one could get a spurious space added, for
+example, when that code contained a \cs{write} statement. This was
+fixed and now \cs{enddocument} first issues a \cs{par} to ensure that
+it always starts out in vertical mode.
+%
+\githubissue{385}
+
+
+
+\subsection{Allow extra space between name and address in \pkg{letter} class}
+
+The \cs{opening} command in the the \pkg{letter} class expects the
+name and address to be separated by \verb=\\= but it didn't allow to
+use an optional argument at this point to add some extra space after
+the name. The coding has now been slightly altered to allow for this.
+%
+\githubissue{427}
+
+
+
+\subsection{Provide hook in \cs{selectfont}}
+
+After \cs{selectfont} has altered the font we run a hook so that
+packages can make final adjustments. This functionality was originally
+provided by the \pkg{everysel} package, the new implementation is
+slightly different and uses the standard hook management.
+%
+\githubissue{444}
+
+
+\subsection{Delay change of font series and shape to \cs{selectfont} call}
+
+With the NFSS extensions introduced in 2020 the font series and shape
+settings be be influenced by changes to the font family. The setting
+is therefore delayed until \cs{selectfont} is executed to avoid
+unnecessary or incorrect substitutions that may otherwise happen due
+to the order of declarations.
+%
+\githubissue{444}
+
+
+
+\subsection{Allow \cs{nocite} in preamble}
+
+A natural place for \verb=\nocite{*}= would be the preamble of the
+document, but for historical reasons \LaTeX{} issued an error message
+if it was placed there. From the new release on it is now allowed in
+the preamble.
+%
+\githubissue{424}
+
+
+
\subsection{\ldots}
+\emph{to be written}
%
\githubissue{xxx}
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
index ef222addc50..7c92232d137 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
index f49022e979e..384a4a09f15 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
index 5297943248f..62baa687829 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex b/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex
index ccb4e0ed99c..b786a1f622f 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
index 2d6bf602117..4c74c8d46b6 100644
--- a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
index ed8e4b1a163..a23fd5ccd50 100644
--- a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/manifest.txt b/Master/texmf-dist/doc/latex-dev/base/manifest.txt
index f3c8f2b2165..0cf27343c13 100644
--- a/Master/texmf-dist/doc/latex-dev/base/manifest.txt
+++ b/Master/texmf-dist/doc/latex-dev/base/manifest.txt
@@ -38,6 +38,7 @@
% fntguide.tex -- Guide to font selection.
% modguide.tex -- Guide to modifying and distributing LaTeX.
% usrguide.tex -- User guide for this release.
+% usrguide3.tex -- User guide for expl3-based methods.
%
% ltnews01.tex -- What was new in the release dated 1994/06.
% ltnews02.tex -- What was new in the release dated 1994/12.
diff --git a/Master/texmf-dist/doc/latex-dev/base/manual.pdf b/Master/texmf-dist/doc/latex-dev/base/manual.pdf
index a154a9d08b8..8d00af366ac 100644
--- a/Master/texmf-dist/doc/latex-dev/base/manual.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/manual.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
index a42431033dd..ae7a44a56dd 100644
--- a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/modguide.tex b/Master/texmf-dist/doc/latex-dev/base/modguide.tex
index 33af973d29b..5374094e8ba 100644
--- a/Master/texmf-dist/doc/latex-dev/base/modguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/modguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
index e4f79bfb28f..d2a17482d6e 100644
--- a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/proc.pdf b/Master/texmf-dist/doc/latex-dev/base/proc.pdf
index d4f684df929..1fdce920aa2 100644
--- a/Master/texmf-dist/doc/latex-dev/base/proc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/proc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/slides.pdf b/Master/texmf-dist/doc/latex-dev/base/slides.pdf
index bf548d02d1b..14519c05304 100644
--- a/Master/texmf-dist/doc/latex-dev/base/slides.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/slides.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
index 87f25b58b5c..e0b6be9b942 100644
--- a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
index 0f4add9b45f..de20a00439a 100644
--- a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/source2e.tex b/Master/texmf-dist/doc/latex-dev/base/source2e.tex
index e74c424d729..ad6f5c9fb01 100644
--- a/Master/texmf-dist/doc/latex-dev/base/source2e.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/source2e.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
index 1209fd46f17..6e2933bdd49 100644
--- a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
index 6a75621960d..e6f27b0a5a4 100644
--- a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
index 8f1308891d3..c4319f500a5 100644
--- a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
index be2b3a11a77..42b3dba05b2 100644
--- a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide.tex b/Master/texmf-dist/doc/latex-dev/base/usrguide.tex
index 4c2ddf24af6..a51bb438551 100644
--- a/Master/texmf-dist/doc/latex-dev/base/usrguide.tex
+++ b/Master/texmf-dist/doc/latex-dev/base/usrguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf b/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
new file mode 100644
index 00000000000..59db944a75d
--- /dev/null
+++ b/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex b/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
new file mode 100644
index 00000000000..40ef882fba9
--- /dev/null
+++ b/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
@@ -0,0 +1,701 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2020,2021
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+% Filename: usrguide3.tex
+
+\documentclass{ltxguide}
+
+\usepackage[T1]{fontenc} % needed for \textbackslash in tt
+
+\title{\LaTeX3 methods for authors}
+\author{\copyright~Copyright 2020, \LaTeX\ Project Team.\\
+ All rights reserved.}
+
+\date{Released 2020-12-02}
+
+\NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
+\NewDocumentCommand\marg{m}{\arg{#1}}
+\NewDocumentCommand\meta{m}{\ensuremath{\langle}\textit{#1}\ensuremath{\rangle}}
+\NewDocumentCommand\pkg{m}{\textsf{#1}}
+\NewDocumentCommand\text{m}{\ifmmode\mbox{#1}\else#1\fi}
+% Fix a 'feature'
+\makeatletter
+\renewcommand \verbatim@font {\normalfont \ttfamily}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{Introduction}
+
+\LaTeXe{} was released in 1994 and added a number of then-new concepts to
+\LaTeX{}. These are described in \texttt{usrguide}, which has largely remained
+unchanged. Since then, the \LaTeX{} team have worked on a number of ideas,
+firstly a programming language for \LaTeX{} (\pkg{expl3}) and then a range of
+tools for document authors which build on that language. Here, we describe
+\emph{stable} and \emph{widely-usable} concepts that have resulted from that
+work. These `new' ideas have been transferred from development packages
+into the \LaTeXe{} kernel. As such, they are now available to \emph{all}
+\LaTeX{} users and have the \emph{same stability} as any other part of the
+kernel. The fact that `behind the scenes' they are built on \pkg{expl3}
+is useful for the development team, but is not directly important to users.
+
+\section{Creating document commands and environments}
+
+\subsection{Overview}
+
+Creating document commands and environments using the \LaTeX3 toolset is based
+around the idea that a common set of descriptions can be used to cover almost
+all argument types used in real documents. Thus parsing is reduced to a simple
+description of which arguments a command takes: this description provides the
+`glue' between the document syntax and the implementation of the
+command.
+
+First, we will describe the argument types, then move on to explain how these
+can be used to create both document commands and environments. Various more
+specialized features are then described, which allow an even richer application
+of a simple interface set up.
+
+The details here are intended to help users create document commands in
+general. More technical detail, suitable for \TeX{} programmers, is included
+in \texttt{interface3}.
+
+\subsection{Describing argument types}
+
+In order to allow each argument to be defined independently, the parser does
+not simply need to know the number of arguments for a function, but also the
+nature of each one. This is done by constructing an \emph{argument
+specification}, which defines the number of arguments, the type of each
+argument and any additional information needed for the parser to read the user
+input and properly pass it through to internal functions.
+
+The basic form of the argument specifier is a list of letters, where each
+letter defines a type of argument. As will be described below, some of the
+types need additional information, such as default values. The argument types
+can be divided into two, those which define arguments that are mandatory
+(potentially raising an error if not found) and those which define optional
+arguments. The mandatory types
+\begin{itemize}
+ \item[\texttt{m}] A standard mandatory argument, which can either be a single token
+ alone or multiple tokens surrounded by curly braces |{}|. Regardless of the
+ input, the argument will be passed to the internal code without the outer
+ braces. This is the type specifier for a normal \TeX{} argument.
+ \item[\texttt{r}] Given as \texttt{r}\meta{token1}\meta{token2}, this denotes a
+ `required' delimited argument, where the delimiters are
+ \meta{token1} and \meta{token2}. If the opening delimiter \meta{token1} is
+ missing, the default marker |-NoValue-| will be inserted after a suitable
+ error.
+ \item[\texttt{R}] Given as \texttt{R}\meta{token1}\meta{token2}\marg{default},
+ this is a `required' delimited argument as for~\texttt{r},
+ but it has a user-definable recovery \meta{default} instead of
+ |-NoValue-|.
+ \item[\texttt{v}] Reads an argument `verbatim', between the following
+ character and its next occurrence, in a way similar to the argument
+ of the \LaTeXe{} command \cs{verb}. Thus a \texttt{v}-type argument
+ is read between two identical characters, which cannot be any of |%|, |\|,
+ |#|, |{|, |}| or \verb*| |. The verbatim argument can also be enclosed
+ between braces, |{| and |}|. A command with a verbatim argument will
+ produce an error when it appears within an argument of another function.
+ \item[\texttt{b}] Only suitable in the argument specification of an
+ environment, it denotes the body of the environment, between
+ |\begin|\marg{environment} and |\end|\marg{environment}. See
+ Section~\ref{sec:cmd:body} for details.
+\end{itemize}
+The types which define optional arguments are:
+\begin{itemize}
+ \item[\texttt{o}] A standard \LaTeX{} optional argument, surrounded with square
+ brackets, which will supply the special |-NoValue-| marker if not given
+ (as described later).
+ \item[\texttt{d}] Given as \texttt{d}\meta{token1}\meta{token2}, an optional
+ argument which is delimited by \meta{token1} and \meta{token2}. As with
+ \texttt{o}, if no value is given the special marker |-NoValue-| is
+ returned.
+ \item[\texttt{O}] Given as \texttt{O}\marg{default}, is like \texttt{o}, but returns
+ \meta{default} if no value is given.
+ \item[\texttt{D}] Given as \texttt{D}\meta{token1}\meta{token2}\marg{default}, it is
+ as for \texttt{d}, but returns \meta{default} if no value is given.
+ Internally, the \texttt{o}, \texttt{d} and \texttt{O} types are
+ short-cuts to an appropriated-constructed \texttt{D} type argument.
+ \item[\texttt{s}] An optional star, which will result in a value
+ \cs{BooleanTrue} if a star is present and \cs{BooleanFalse}
+ otherwise (as described later).
+ \item[\texttt{t}] An optional \meta{token}, which will result in a value
+ \cs{BooleanTrue} if \meta{token} is present and \cs{BooleanFalse}
+ otherwise. Given as \texttt{t}\meta{token}.
+ \item[\texttt{e}] Given as \texttt{e}\marg{tokens}, a set of optional
+ \emph{embellishments}, each of which requires a \emph{value}.
+ If an embellishment is not present, |-NoValue-| is returned. Each
+ embellishment gives one argument, ordered as for the list of
+ \meta{tokens} in the argument specification. All \meta{tokens}
+ must be distinct.
+ \item[\texttt{E}] As for \texttt{e} but returns one or more \meta{defaults}
+ if values are not given: \texttt{E}\marg{tokens}\marg{defaults}. See
+ Section~\ref{sec:cmd:embellishment} for more details.
+\end{itemize}
+
+\subsection{Modifying argument descriptions}
+
+In addition to the argument \emph{types} discussed above, the argument
+description also gives special meaning to three other characters.
+
+First, \texttt{+} is used to make an argument long (to accept paragraph
+tokens). In contrast to \cs{newcommand}, this applies on an
+argument-by-argument basis. So modifying the example to `|s o o +m O{default}|'
+means that the mandatory argument is now \cs{long}, whereas the optional
+arguments are not.
+
+Secondly, \texttt{!} is used to control whether spaces are allowed before
+optional arguments. There are some subtleties to this, as \TeX{} itself
+has some restrictions on where spaces can be `detected': more detail
+is given in Section~\ref{sec:cmd:opt-space}.
+
+Finally, the character \texttt{>} is used to declare so-called
+`argument processors', which can be used to modify the contents of an
+argument before it is passed to the macro definition. The use of argument
+processors is a somewhat advanced topic, (or at least a less commonly used
+feature) and is covered in Section~\ref{sec:cmd:processors}.
+
+\subsection{Creating document commands and environments}
+
+\begin{decl}
+ |\NewDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\RenewDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\ProvideDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\DeclareDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code}
+\end{decl}
+This family of commands are used to create a \meta{cmd}. The argument
+specification for the function is given by \meta{arg spec}, and the command
+uses the \meta{code} with |#1|, |#2|, etc.\ replaced by the arguments found
+by the parser.
+
+An example:
+\begin{verbatim}
+ \NewDocumentCommand\chapter{s o m}
+ {%
+ \IfBooleanTF{#1}%
+ {\typesetstarchapter{#3}}%
+ {\typesetnormalchapter{#2}{#3}}%
+ }
+\end{verbatim}
+would be a way to define a \cs{chapter} command which would essentially behave
+like the current \LaTeXe{} command (except that it would accept an optional
+argument even when a \texttt{*} was parsed). The \cs{typesetnormalchapter}
+could test its first argument for being |-NoValue-| to see if an optional
+argument was present. (See Section~\ref{sec:cmd:special} for details of
+\cs{IfBooleanTF} and testing for |-NoValue-|.)
+
+The difference between the \cs{New...} \cs{Renew...}, \cs{Provide...}
+and \cs{Declare...} versions is the behavior if \meta{cmd} is already
+defined.
+\begin{itemize}
+ \item \cs{NewDocumentCommand} will issue an error if \meta{cmd}
+ has already been defined.
+ \item \cs{RenewDocumentCommand} will issue an error if \meta{cmd}
+ has not previously been defined.
+ \item \cs{ProvideDocumentCommand} creates a new definition for
+ \meta{function} only if one has not already been given.
+ \item \cs{DeclareDocumentCommand} will always create the new
+ definition, irrespective of any existing \meta{cmd} with the
+ same name. This should be used sparingly.
+\end{itemize}
+
+\begin{decl}
+ |\NewDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code} \\
+ |\RenewDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code} \\
+ |\ProvideDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code} \\
+ |\DeclareDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code}
+\end{decl}
+These commands work in the same way as \cs{NewDocumentCommand}, etc.\@, but
+create environments (\cs{begin}\arg{env} \ldots{}
+\cs{end}\arg{environment}). Both the \meta{beg-code} and \meta{end-code}
+may access the arguments as defined by \meta{arg spec}. The arguments will be
+given following \cs{begin}\arg{environment}.
+
+\subsection{Optional arguments}
+\label{sec:cmd:opt}
+
+In contrast to commands created using \LaTeXe{}'s \cs{newcommand}, optional
+arguments created using \cs{NewDocumentCommand} may safely be nested. Thus for
+example, following
+\begin{verbatim}
+\NewDocumentCommand\foo{om}{I grabbed `#1' and `#2'}
+\NewDocumentCommand\baz{o}{#1-#1}
+\end{verbatim}
+using the command as
+\begin{verbatim}
+\foo[\baz[stuff]]{more stuff}
+\end{verbatim}
+will print
+\begin{quote}
+I grabbed `stuff-stuff' and `more stuff'
+\end{quote}
+This is particularly useful when placing a command with an optional argument
+\emph{inside} the optional argument of a second command.
+
+When an optional argument is followed by a mandatory argument with the same
+delimiter, the parser issues a warning because the optional argument could not
+be omitted by the user, thus becoming in effect mandatory. This can apply to
+\texttt{o}, \texttt{d}, \texttt{O}, \texttt{D}, \texttt{s}, \texttt{t},
+\texttt{e}, and \texttt{E} type arguments followed by \texttt{r} or
+\texttt{R}-type required arguments.
+
+The default for \texttt{O}, \texttt{D} and \texttt{E} arguments can be
+the result of grabbing another argument. Thus for example
+\begin{verbatim}
+ \NewDocumentCommand\foo{O{#2} m}
+\end{verbatim}
+would use the mandatory argument as the default for the leading optional
+one.
+
+\subsection{Spacing and optional arguments}
+\label{sec:cmd:opt-space}
+
+\TeX{} will find the first argument after a function name irrespective of any
+intervening spaces. This is true for both mandatory and optional arguments. So
+|\foo[arg]| and \verb*|\foo [arg]| are equivalent. Spaces are also ignored when
+collecting arguments up to the last mandatory argument to be collected (as it
+must exist). So after
+\begin{verbatim}
+ \NewDocumentCommand\foo{m o m}{ ... }
+\end{verbatim}
+the user input |\foo{arg1}[arg2]{arg3}| and \verb*|\foo{arg1} [arg2] {arg3}|
+will both be parsed in the same way.
+
+The behavior of optional arguments \emph{after} any mandatory arguments is
+selectable. The standard settings will allow spaces here, and thus with
+\begin{verbatim}
+ \NewDocumentCommand\foobar{m o}{ ... }
+\end{verbatim}
+both |\foobar{arg1}[arg2]| and \verb*|\foobar{arg1} [arg2]| will find an
+optional argument. This can be changed by giving the modified |!| in the
+argument specification:
+\begin{verbatim}
+ \NewDocumentCommand\foobar{m !o}{ ... }
+\end{verbatim}
+where \verb*|\foobar{arg1} [arg2]| will not find an optional argument.
+
+There is one subtly here due to the difference in handling by \TeX{} of
+`control symbols', where the command name is made up of a single
+character, such as `\texttt{\textbackslash\textbackslash}'.
+Spaces are not ignored by \TeX{} here,
+and thus it is possible to require an optional argument directly follow such a
+command. The most common example is the use of \texttt{\textbackslash\textbackslash}
+in \pkg{amsmath} environments, which in the terms here would be defined as
+\begin{verbatim}
+ \NewDocumentCommand\\{!s !o}{ ... }
+\end{verbatim}
+
+\subsection{`Embellishments'}
+\label{sec:cmd:embellishment}
+
+The \texttt{E}-type argument allows one default value per test token. This is
+achieved by giving a list of defaults for each entry in the list, for example:
+\begin{verbatim}
+ E{^_}{{UP}{DOWN}}
+\end{verbatim}
+If the list of default values is \emph{shorter} than the list of test tokens,
+the special |-NoValue-| marker will be returned (as for the \texttt{e}-type
+argument). Thus for example
+\begin{verbatim}
+ E{^_}{{UP}}
+\end{verbatim}
+has default \texttt{UP} for the |^| test character, but will return the
+|-NoValue-| marker as a default for |_|. This allows mixing of explicit
+defaults with testing for missing values.
+
+
+\subsection{Testing special values}
+\label{sec:cmd:special}
+
+Optional arguments make use of dedicated variables to return information about
+the nature of the argument received.
+
+\begin{decl}
+ |\IfNoValueTF| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfNoValueT| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfNoValueF| \arg{arg} \arg{true code} \arg{false code}
+\end{decl}
+The \cs{IfNoValue(TF)} tests are used to check if \meta{argument} (|#1|,
+|#2|, \emph{etc.}) is the special |-NoValue-| marker For example
+\begin{verbatim}
+ \NewDocumentCommand\foo{o m}
+ {%
+ \IfNoValueTF {#1}%
+ {\DoSomethingJustWithMandatoryArgument{#2}}%
+ {\DoSomethingWithBothArguments{#1}{#2}}%
+ }
+\end{verbatim}
+will use a different internal function if the optional argument
+is given than if it is not present.
+
+Note that three tests are available, depending on which outcome
+branches are required: \cs{IfNoValueTF}, \cs{IfNoValueT} and
+\cs{IfNoValueF}.
+
+As the \cs{IfNoValue(TF)} tests are expandable, it is possible to
+test these values later, for example at the point of typesetting or
+in an expansion context.
+
+It is important to note that |-NoValue-| is constructed such that it
+will \emph{not} match the simple text input |-NoValue-|, i.e.~that
+\begin{verbatim}
+ \IfNoValueTF{-NoValue-}
+\end{verbatim}
+will be logically \texttt{false}.
+When two optional arguments follow each other (a syntax we typically
+discourage), it can make sense to allow users of the command to
+specify only the second argument by providing an empty first
+argument. Rather than testing separately for emptiness and for
+|-NoValue-| it is then best to use the argument type~|O| with an
+empty default value, and simply test for emptiness using the
+\pkg{expl3} conditional \cs{tl_if_blank:nTF} or its \pkg{etoolbox}
+analogue \cs{ifblank}.
+
+\begin{decl}
+ |\IfValueTF| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfValueT| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfValueF| \arg{arg} \arg{true code} \arg{false code}
+\end{decl}
+The reverse form of the \cs{IfNoValue(TF)} tests are also available
+as \cs{IfValue(TF)}. The context will determine which logical
+form makes the most sense for a given code scenario.
+
+\begin{decl}
+ |\BooleanFalse| \\
+ |\BooleanTrue|
+\end{decl}
+The \texttt{true} and \texttt{false} flags set when searching for
+an optional character (using \texttt{s} or \texttt{t\meta{char}}) have
+names which are accessible outside of code blocks.
+
+\begin{decl}
+ |\IfBooleanTF| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfBooleanT| \arg{arg} \arg{true code} \arg{false code} \\
+ |\IfBooleanF| \arg{arg} \arg{true code} \arg{false code}
+\end{decl}
+Used to test if \meta{argument} (|#1|, |#2|, \emph{etc.}) is
+\cs{BooleanTrue} or \cs{BooleanFalse}. For example
+\begin{verbatim}
+ \NewDocumentCommand\foo{sm}
+ {%
+ \IfBooleanTF {#1}%
+ {\DoSomethingWithStar{#2}}%
+ {\DoSomethingWithoutStar{#2}}%
+ }
+\end{verbatim}
+checks for a star as the first argument, then chooses the action to
+take based on this information.
+
+\subsection{Argument processors}
+\label{sec:cmd:processors}
+
+Argument processor are applied to an argument \emph{after} it has been grabbed
+by the underlying system but before it is passed to \meta{code}. An argument
+processor can therefore be used to regularize input at an early stage, allowing
+the internal functions to be completely independent of input form. Processors
+are applied to user input and to default values for optional arguments, but
+\emph{not} to the special |-NoValue-| marker.
+
+Each argument processor is specified by the syntax \texttt{>}\marg{processor}
+in the argument specification. Processors are applied from right to left, so
+that
+\begin{verbatim}
+ >{\ProcessorB} >{\ProcessorA} m
+\end{verbatim}
+would apply \cs{ProcessorA} followed by \cs{ProcessorB} to the tokens grabbed
+by the \texttt{m} argument.
+
+\begin{decl}
+ |\SplitArgument| \arg{number} \arg{token(s)}
+\end{decl}
+This processor splits the argument given at each occurrence of the
+\meta{tokens} up to a maximum of \meta{number} tokens (thus
+dividing the input into $\text{\meta{number}} + 1$ parts).
+An error is given if too many \meta{tokens} are present in the
+input. The processed input is placed inside
+$\text{\meta{number}} + 1$ sets of braces for further use.
+If there are fewer than \arg{number} of \arg{tokens} in the argument
+then |-NoValue-| markers are added at the end of the processed
+argument.
+\begin{verbatim}
+ \NewDocumentCommand \foo {>{\SplitArgument{2}{;}} m}
+ {\InternalFunctionOfThreeArguments#1}
+\end{verbatim}
+If only a single character \meta{token} is used for the split, any
+category code $13$ (active) character matching the \meta{token} will
+be replaced before the split takes place.
+Spaces are trimmed at each end of each item parsed.
+
+\begin{decl}
+ |\SplitList| \arg{token(s)}
+\end{decl}
+This processor splits the argument given at each occurrence of the
+\meta{token(s)} where the number of items is not fixed. Each item is
+then wrapped in braces within |#1|. The result is that the
+processed argument can be further processed using a mapping function
+(see below).
+\begin{verbatim}
+ \NewDocumentCommand \foo {>{\SplitList{;}} m}
+ {\MappingFunction#1}
+\end{verbatim}
+If only a single character \meta{token} is used for the split, any
+category code $13$ (active) character matching the \meta{token} will
+be replaced before the split takes place.
+Spaces are trimmed at each end of each item parsed.
+
+\begin{decl}
+ |\ProcessList| \arg{list} \arg{function}
+\end{decl}
+To support \cs{SplitList}, the function \cs{ProcessList} is available
+to apply a \meta{function} to every entry in a \meta{list}. The
+\meta{function} should absorb one argument: the list entry. For example
+\begin{verbatim}
+ \NewDocumentCommand \foo {>{\SplitList{;}} m}
+ {\ProcessList{#1}{\SomeDocumentCommand}}
+\end{verbatim}
+
+\begin{decl}
+ |\ReverseBoolean|
+\end{decl}
+This processor reverses the logic of \cs{BooleanTrue} and
+\cs{BooleanFalse}, so that the example from earlier would become
+\begin{verbatim}
+ \NewDocumentCommand\foo{>{\ReverseBoolean} s m}
+ {%
+ \IfBooleanTF#1%
+ {\DoSomethingWithoutStar{#2}}%
+ {\DoSomethingWithStar{#2}}%
+ }
+\end{verbatim}
+
+\begin{decl}
+ |\TrimSpaces|
+\end{decl}
+Removes any leading and trailing spaces (tokens with character code~$32$
+and category code~$10$) for the ends of the argument. Thus for example
+declaring a function
+\begin{verbatim}
+ \NewDocumentCommand\foo {>{\TrimSpaces} m}
+ {\showtokens{#1}}
+\end{verbatim}
+and using it in a document as
+\begin{flushleft}
+ \verb= =\verb*=\foo{ hello world }=
+\end{flushleft}
+will show `\verb*=hello world=' at the terminal, with the space at each
+end removed. \cs{TrimSpaces} will remove multiple spaces from the ends of
+the input in cases where these have been included such that the standard
+\TeX{} conversion of multiple spaces to a single space does not apply.
+
+\subsection{Body of an environment}
+\label{sec:cmd:body}
+
+While environments |\begin|\marg{environment}\ \dots{}\,|\end|\marg{environment}
+are typically used in cases where the code implementing the \meta{environment}
+does not need to access the contents of the environment (its `body'),
+it is sometimes useful to have the body as a standard argument.
+
+This is achieved by ending the argument specification with~\texttt{b}, which is
+a dedicated argument type for this situation. For instance
+\begin{verbatim}
+ \NewDocumentEnvironment{twice} {O{\ttfamily} +b}
+ {#2#1#2} {}
+\end{verbatim}
+\begin{verbatim}
+ \begin{twice}[\itshape]
+ Hello world!
+ \end{twice}
+\end{verbatim}
+typesets `Hello world!{\itshape Hello world!}'.
+
+The prefix |+| is used to allow multiple paragraphs in the environment's body.
+Argument processors can also be applied to \texttt{b}~arguments. By default,
+spaces are trimmed at both ends of the body: in the example there would
+otherwise be spaces coming from the ends the lines after |[\itshape]| and
+|world!|. Putting the prefix |!| before \texttt{b} suppresses space-trimming.
+
+When \texttt{b} is used in the argument specification, the last argument of the environment declaration (e.g., \cs{NewDocumentEnvironment}), which consists of an \meta{end code} to insert at
+|\end|\marg{environment}, is redundant since one can simply put that code at
+the end of the \meta{start code}. Nevertheless this (empty) \meta{end code}
+must be provided.
+
+Environments that use this feature can be nested.
+
+\subsection{Fully-expandable document commands}
+
+Document commands created using \cs{NewDocumentCommand}, etc.\@, are normally
+created so that they do not expand unexpectedly. This is done using engine
+features, so is more powerful than \LaTeXe{}'s \cs{protect} mechanism. There
+are \emph{very rare} occasion when it may be useful to create functions using a
+expansion-only grabber. This imposes a number of restrictions on the
+nature of the arguments accepted by a function, and the code it implements.
+This facility should only be used when \emph{absolutely necessary}.
+
+\begin{decl}
+ |\NewExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\RenewExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\ProvideExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
+ |\DeclareExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code}
+\end{decl}
+This family of commands is used to create a document-level \meta{function},
+which will grab its arguments in a fully-expandable manner. The
+argument specification for the function is given by \meta{arg spec},
+and the function will execute \meta{code}. In general, \meta{code} will
+also be fully expandable, although it is possible that this will
+not be the case (for example, a function for use in a table might
+expand so that \cs{omit} is the first non-expandable non-space token).
+
+Parsing arguments by pure expansion imposes a number of restrictions on
+both the type of arguments that can be read and the error checking
+available:
+\begin{itemize}
+ \item The last argument (if any are present) must be one of the
+ mandatory types \texttt{m}, \texttt{r} or \texttt{R}.
+ \item The `verbatim' argument type \texttt{v} is not available.
+ \item Argument processors (using \texttt{>}) are not available.
+ \item It is not possible to differentiate between, for example
+ |\foo[| and |\foo{[}|: in both cases the \texttt{[} will be
+ interpreted as the start of an optional argument. As a
+ result, checking for optional arguments is less robust than
+ in the standard version.
+\end{itemize}
+
+\subsection{Details about argument delimiters}
+
+In normal (non-expandable) commands, the delimited types look for the
+initial delimiter by peeking ahead (using \pkg{expl3}'s |\peek_...|
+functions) looking for the delimiter token. The token has to have the
+same meaning and `shape' of the token defined as delimiter.
+There are three possible cases of delimiters: character tokens, control
+sequence tokens, and active character tokens. For all practical purposes
+of this description, active character tokens will behave exactly as
+control sequence tokens.
+
+\subsubsection{Character tokens}
+
+A character token is characterized by its character code, and its meaning
+is the category code~(|\catcode|). When a command is defined, the meaning
+of the character token is fixed into the definition of the command and
+cannot change. A command will correctly see an argument delimiter if
+the open delimiter has the same character and category codes as at the
+time of the definition. For example in:
+\begin{verbatim}
+ \NewDocumentCommand { \foobar } { D<>{default} } {(#1)}
+\end{verbatim}
+\begin{verbatim}
+ \foobar <hello> \par
+ \char_set_catcode_letter:N <
+ \foobar <hello>
+\end{verbatim}
+the output would be:
+\begin{verbatim}
+ (hello)
+ (default)<hello>
+\end{verbatim}
+as the open-delimiter |<| changed in meaning between the two calls to
+|\foobar|, so the second one doesn't see the |<| as a valid delimiter.
+Commands assume that if a valid open-delimiter was found, a matching
+close-delimiter will also be there. If it is not (either by being
+omitted or by changing in meaning), a low-level \TeX{} error is raised
+and the command call is aborted.
+
+\subsubsection{Control sequence tokens}
+
+A control sequence (or control character) token is characterized by is
+its name, and its meaning is its definition.
+A token cannot have two different meanings at the same time.
+When a control sequence is defined as delimiter in a command,
+it will be detected as delimiter whenever the control sequence name
+is found in the document regardless of its current definition.
+For example in:
+\begin{verbatim}
+ \cs_set:Npn \x { abc }
+ \NewDocumentCommand { \foobar } { D\x\y{default} } {(#1)}
+ \foobar \x hello\y \par
+ \cs_set:Npn \x { def }
+ \foobar \x hello\y
+\end{verbatim}
+the output would be:
+\begin{verbatim}
+ (hello)
+ (hello)
+\end{verbatim}
+with both calls to the command seeing the delimiter |\x|.
+
+\subsection{Creating new argument processors}
+
+\begin{decl}
+ |\ProcessedArgument|
+\end{decl}
+Argument processors allow manipulation of a grabbed argument before it is
+passed to the underlying code. New processor implementations may be created
+as functions which take one trailing argument, and which leave their result in
+the \cs{ProcessedArgument} variable. For example, \cs{ReverseBoolean} is
+defined as
+\begin{verbatim}
+\ExplSyntaxOn
+ \cs_new_protected:Npn \ReverseBoolean #1
+ {
+ \bool_if:NTF #1
+ { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+ { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
+ }
+\ExplSyntaxOff
+\end{verbatim}
+[As an aside: the code is written in \pkg{expl3}, so we don't have to
+ worry about spaces creeping into the definition.]
+
+\subsection{Access to the argument specification}
+
+The argument specifications for document commands and environments are
+available for examination and use.
+
+\begin{decl}
+ |\GetDocumentCommandArgSpec| \arg{function} \\
+ |\GetDocumentEnvironmentArgSpec| \arg{environment}
+\end{decl}
+These functions transfer the current argument specification for the
+requested \meta{function} or \meta{environment} into the token list
+variable \cs{ArgumentSpecification}. If the \meta{function} or
+\meta{environment} has no known argument specification then an error
+is issued. The assignment to \cs{ArgumentSpecification} is local to
+the current \TeX{} group.
+
+\begin{decl}
+ |\ShowDocumentCommandArgSpec| \arg{function} \\
+ |\ShowDocumentEnvironmentArgSpec| \arg{environment}
+\end{decl}
+These functions show the current argument specification for the
+requested \meta{function} or \meta{environment} at the terminal. If
+the \meta{function} or \meta{environment} has no known argument
+specification then an error is issued.
+
+\end{document}
diff --git a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
index 538e7f5a7bc..4e8f36ed7d8 100644
--- a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
index b45ca5aea62..02223d1face 100644
--- a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
+++ b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
Binary files differ
diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.dtx b/Master/texmf-dist/source/latex-dev/base/alltt.dtx
index 2c9e22a1243..0810cd73023 100644
--- a/Master/texmf-dist/source/latex-dev/base/alltt.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/alltt.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -30,7 +30,7 @@
%%
%% File `alltt.dtx'.
%% Copyright (C) 1987 by Leslie Lamport
-%% Copyright (C) 1994--1997 LaTeX3 project, Johannes Braams
+%% Copyright (C) 1994--2020 LaTeX3 project, Johannes Braams
%% all rights reserved.
%%
%<*dtx>
@@ -40,7 +40,7 @@
%<package>\ProvidesPackage{alltt}
%<driver>\ProvidesFile{alltt.drv}
%\ProvidesFile{alltt.dtx}
- [1997/06/16 v2.0g defines alltt environment]
+ [2020/11/23 v2.0g defines alltt environment]
%
%<*driver>
\documentclass{ltxdoc}
@@ -173,7 +173,7 @@
% control sequence |\do| between the characters. We use that to
% check whether a character has to be removed.
%
-% The macro |\g@remfrom@specials| takes one argument, the chracter
+% The macro |\g@remfrom@specials| takes one argument, the character
% to be removed from the list.
% \begin{macrocode}
\def\g@remfrom@specials#1{%
diff --git a/Master/texmf-dist/source/latex-dev/base/alltt.ins b/Master/texmf-dist/source/latex-dev/base/alltt.ins
index adb3838a473..817a00f3a68 100644
--- a/Master/texmf-dist/source/latex-dev/base/alltt.ins
+++ b/Master/texmf-dist/source/latex-dev/base/alltt.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/classes.dtx b/Master/texmf-dist/source/latex-dev/base/classes.dtx
index d6f2bb64e6a..c91b3381435 100644
--- a/Master/texmf-dist/source/latex-dev/base/classes.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/classes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{classes.drv}
%</driver>
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
%<article|report|book> Standard LaTeX document class]
%<10pt|11pt|12pt> Standard LaTeX file (size option)]
% \end{macrocode}
@@ -116,7 +116,7 @@
\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
\DoNotIndex{\wd,\xiipt,\year,\z@}
% \end{macrocode}
-% We do want an index, using linenumbers
+% We do want an index, using line numbers
% \begin{macrocode}
\EnableCrossrefs
\CodelineIndex
@@ -199,7 +199,7 @@
% \changes{v1.2o}{1994/05/24}{Changed file information}
% \changes{v1.2p}{1994/05/27}{Moved identification and driver to the
% front of the file}
-% \changes{v1.2t}{1994/06/22}{Refrased a few sentences to prevent
+% \changes{v1.2t}{1994/06/22}{Rephrased a few sentences to prevent
% overfull hboxes}
% \changes{v1.2v}{1994/12/01}{Made the oneside option work for the
% book class}
@@ -423,7 +423,7 @@
%<!article>\fi
% \end{macrocode}
%
-% \subsection{Twocolumn printing}
+% \subsection{Two-column printing}
%
% Two-column and one-column printing is again realized via a switch.
% \begin{macrocode}
@@ -788,7 +788,7 @@
% \begin{macro}{\parindent}
% |\parskip| gives extra vertical space between paragraphs and
% |\parindent| is the width of the paragraph indentation. The value
-% of |\parindent| depends on whether we are in two column mode.
+% of |\parindent| depends on whether we are in two-column mode.
% \changes{v1.0m}{1994/01/12}{\cs{parindent} should be different,
% depending on the pointsize}
% \begin{macrocode}
@@ -998,7 +998,7 @@
% Now we can set the |\textwidth|, depending on whether we will be
% setting one or two columns.
%
-% In two column mode each \emph{column} shouldn't be wider than
+% In two-column mode each \emph{column} shouldn't be wider than
% |\@tempdimb| (which could happen on \textsc{a3} paper for
% instance).
% \begin{macrocode}
@@ -1010,7 +1010,7 @@
\fi
% \end{macrocode}
%
-% In one column mode the text should not be wider than the minimum
+% In one-column mode the text should not be wider than the minimum
% of the paperwidth (minus 2 inches for the margins) and the
% maximum length of a line as defined by the number of characters.
% \begin{macrocode}
@@ -1168,7 +1168,7 @@
\fi
%</!bk>
% \end{macrocode}
-% And values for two column mode:
+% And values for two-column mode:
% \begin{macrocode}
\if@twocolumn
\setlength\oddsidemargin {30\p@}
@@ -1389,7 +1389,7 @@
%
% \begin{macro}{\c@dbltopnumber}
% The \Lcount{dbltopnumber} counter holds the maximum number of
-% two column floats that can appear on the top of a two column text
+% two-column floats that can appear on the top of a two-column text
% page.
% \begin{macrocode}
\setcounter{dbltopnumber}{2}
@@ -1397,8 +1397,8 @@
% \end{macro}
%
% \begin{macro}{\dbltopfraction}
-% This indicates the maximum part of a two column text page that
-% can be occupied by two column floats at the top.
+% This indicates the maximum part of a two-column text page that
+% can be occupied by two-column floats at the top.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
% \begin{macrocode}
@@ -1408,7 +1408,7 @@
%
% \begin{macro}{\dblfloatpagefraction}
% This indicates the minimum part of a page that has to be
-% occupied by two column wide floating objects before a `float
+% occupied by two-column wide floating objects before a `float
% page' is produced.
% \changes{v1.0h}{1993/12/18}{Replaced \cs{newcommand} with
% \cs{renewcommand}. ASAJ.}
@@ -1459,7 +1459,7 @@
% \begin{macro}{\dblfloatsep}
% \begin{macro}{\dbltextfloatsep}
% When floating objects that span the whole |\textwidth| are placed
-% on a text page when we are in twocolumn mode the separation
+% on a text page when we are in two-column mode the separation
% between the float and the text is controlled by |\dblfloatsep|
% and |\dbltextfloatsep|.
%
@@ -1498,7 +1498,7 @@
% whitespace. Between adjacent floats the |\@fpsep| is inserted.
%
% These parameters are used for the placement of floating objects
-% in one column mode, or in single column floats in two column
+% in one-column mode, or in single-column floats in two-column
% mode.
%
% Note that at least one of the two parameters |\@fptop| and
@@ -1528,7 +1528,7 @@
% \begin{macro}{\@dblfptop}
% \begin{macro}{\@dblfpsep}
% \begin{macro}{\@dblfpbot}
-% Double column floats in two column mode are handled with similar
+% Double-column floats in two-column mode are handled with similar
% parameters.
% \begin{macrocode}
%<*10pt>
@@ -1809,7 +1809,7 @@
\let \footnote \thanks
% \end{macrocode}
% We center the entire title vertically; the centering is set off a
-% little by adding a |\vskip|. (In compatibility mode the pagenumber
+% little by adding a |\vskip|. (In compatibility mode the page number
% is set to 0 by the titlepage environment to keep the behaviour
% of \LaTeX\ 2.09 style files.)
% \changes{v1.0g}{1993/12/09}{Removed the setting of the page number,
@@ -1872,7 +1872,7 @@
% \end{macrocode}
% When the title is not on a page of its own, the layout of the
% title is a little different. We use symbols to mark the footnotes
-% and we have to deal with two column documents.
+% and we have to deal with two-column documents.
%
% Therefore we first start a new group to keep changes local. Then
% we redefine |\thefootnote| to use |\fnsymbol|; and change
@@ -1893,7 +1893,7 @@
\hb@xt@1.8em{%
\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
% \end{macrocode}
-% If this is a twocolumn document we start a new page in twocolumn
+% If this is a two-column document we start a new page in two-column
% mode, with the title set to the full width of the text. The
% actual printing of the title information is left to
% |\@maketitle|.
@@ -1908,7 +1908,7 @@
\fi
\else
% \end{macrocode}
-% When this is not a twocolumn document we just start a new page,
+% When this is not a two-column document we just start a new page,
% prevent floating objects from appearing on the top of this page
% and print the title information.
% \begin{macrocode}
@@ -2133,10 +2133,10 @@
% \Lcount{COUNTER} as an arabic numeral.
%
% |\roman{|\Lcount{COUNTER}|}| prints the value of
-% \Lcount{COUNTER} as a lowercase roman numberal.
+% \Lcount{COUNTER} as a lowercase roman numeral.
%
% |\Roman{|\Lcount{COUNTER}|}| prints the value of
-% \Lcount{COUNTER} as an uppercase roman numberal.
+% \Lcount{COUNTER} as an uppercase roman numeral.
%
% |\alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as a lowercase letter: $1 =$~a, $2 =$~ b, etc.
@@ -2144,7 +2144,7 @@
% |\Alph{|\Lcount{COUNTER}|}| prints the value of \Lcount{COUNTER}
% as an uppercase letter: $1 =$~A, $2 =$~B, etc.
%
-% Actually to save space the internal counter repesentations
+% Actually to save space the internal counter representations
% and the commands operating on those are used.
% \begin{macrocode}
\renewcommand \thepart {\@Roman\c@part}
@@ -2281,7 +2281,7 @@
\fi
\thispagestyle{plain}%
% \end{macrocode}
-% When we are making a two column document, this will be a one
+% When we are making a two-column document, this will be a one
% column page. We use |@tempswa| to remember to switch back to two
% columns.
% \begin{macrocode}
@@ -2453,8 +2453,8 @@
\fi
\fi
% \end{macrocode}
-% When this was a two column document we have to switch back to two
-% column mode.
+% When this was a two-column document we have to switch back to
+% two-column mode.
% \begin{macrocode}
\if@tempswa
\twocolumn
@@ -2522,8 +2522,8 @@
% \end{macrocode}
% Then we call upon |\@makechapterhead| to format the actual
% chapter title. We have to do this in a special way when we are in
-% twocolumn mode in order to have the chapter title use the entire
-% |\textwidth|. In one column mode we call |\@afterheading| which
+% two-column mode in order to have the chapter title use the entire
+% |\textwidth|. In one-column mode we call |\@afterheading| which
% takes care of suppressing the indentation.
% \begin{macrocode}
\if@twocolumn
@@ -2705,7 +2705,7 @@
% \changes{v1.3q}{1995/12/20}{Temporary(?) fix: revert to setting
% \cs{leftmargin} at outer level}
%
-% When we are in two column mode some of the margins are set somewhat
+% When we are in two-column mode some of the margins are set somewhat
% smaller.
% \begin{macrocode}
\if@twocolumn
@@ -3036,7 +3036,7 @@
{\par\vfil\null\endtitlepage}
% \end{macrocode}
% When we are not making a separate titlepage --the default for the
-% article document class-- we have to check if we are in twocolumn
+% article document class-- we have to check if we are in two-column
% mode. In that case the abstract is as a |\section*|, otherwise
% the quotation environment is used to typeset the abstract.
% \begin{macrocode}
@@ -3125,13 +3125,16 @@
%
% \begin{environment}{titlepage}
% In the normal environments, the titlepage environment does nothing
-% but start and end a page, and inhibit page numbers. In the report
-% style, it also resets the page number to one, and then sets it
-% back to one at the end. In compatibility mode, it sets the
-% page number to zero. This is incorrect since it results in using
-% the page parameters for a right-hand page but it is the way it was.
-% In two-column style, it still makes a
-% one-column page.
+% but start and end a page, and inhibit page numbers. When \LaTeX\ is
+% in two-column mode, the environmont temporarily switches to
+% one-column mode.
+% In the report class, it also resets the page number to one, and
+% then, in two-column mode, sets it back to one at the end.
+% For the book class the environment makes sure that the title page
+% is on a recto page by issueing a \cs{cleardouplepage}-command.
+% In compatibility mode, it sets the page number to zero. This is
+% incorrect since it results in using the page parameters for a
+% right-hand page but it is the way it was.
%
% \changes{v1.0g}{1993/12/09}{Moved the setting of
% \cs{@restonecolfalse}}
@@ -3291,7 +3294,7 @@
% \begin{macro}{\@minipagerestore}
% The macro |\@minipagerestore| is called upon entry to a minipage
% environment to set up things that are to be handled differently
-% inside a minipage environment. In the current styles, it does
+% inside a minipage environment. In the current classes, it does
% nothing.
% \end{macro}
%
@@ -3397,7 +3400,7 @@
% a figure is defined using the macros |\@float| and |\end@float|,
% which are defined in \file{latex.dtx}.
%
-% An environment that implements a single column floating object is
+% An environment that implements a single-column floating object is
% started with |\@float{|\texttt{TYPE}|}[|\meta{placement}|]| of type
% \texttt{TYPE} with \meta{placement} as the placement specifier.
% The default value of \meta{PLACEMENT} is defined by |\fps@TYPE|.
@@ -3449,7 +3452,7 @@
% \begin{environment}{figure}
% \begin{environment}{figure*}
% And the definition of the actual environment. The form with the
-% |*| is used for double column figures.
+% |*| is used for double-column figures.
% \begin{macrocode}
\newenvironment{figure}
{\@float{figure}}
@@ -3506,7 +3509,7 @@
% \begin{environment}{table}
% \begin{environment}{table*}
% And the definition of the actual environment. The form with the
-% |*| is used for double column tables.
+% |*| is used for double-column tables.
% \begin{macrocode}
\newenvironment{table}
{\@float{table}}
@@ -3743,7 +3746,7 @@
% \begin{macro}{\tableofcontents}
% This macro is used to request that \LaTeX{} produces a table of
% contents. In the report and book document classes the tables of
-% contents, figures etc. are always set in single-column style.
+% contents, figures etc. are always set in single-column mode.
%
% \changes{v1.0g}{1993/12/09}{Moved the setting of
% \cs{@restonecolfalse}}
@@ -3778,7 +3781,7 @@
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
% \end{macrocode}
% The actual table of contents is made by calling
-% |\@starttoc{toc}|. After that we restore twocolumn mode if
+% |\@starttoc{toc}|. After that we restore two-column mode if
% necessary.
% \begin{macrocode}
\@starttoc{toc}%
@@ -3823,13 +3826,13 @@
\begingroup
% \end{macrocode}
% We set |\parindent| to 0pt and use |\rightskip| to leave
-% enough room for the pagenumbers.\footnote{^^A
+% enough room for the page numbers.\footnote{^^A
% We should really set \cs{rightskip} to \cs{@tocrmarg} instead
% of \cs{@pnumwidth} (no version of {\LaTeX} ever did this),
% otherwise the \cs{rightskip} is too small.
% Unfortunately this can't be changed in {\LaTeXe} as we don't
% want to create different versions of {\LaTeXe} which produce
-% different typset output unless this is absolutely necessary;
+% different typeset output unless this is absolutely necessary;
% instead we suspend it for \LaTeX3.}
% To prevent overfull box messages the |\parfillskip| is set to a
% negative value.
@@ -3838,7 +3841,7 @@
\parfillskip -\@pnumwidth
% \end{macrocode}
% Now we can set the entry, in a large bold font. We make sure to
-% leave vertical mode, set the part title and add the pagenumber,
+% leave vertical mode, set the part title and add the page number,
% set flush right.
% \begin{macrocode}
{\leavevmode
@@ -4238,9 +4241,9 @@
\columnsep 35\p@
\let\item\@idxitem}
% \end{macrocode}
-% When the document continues after the index and it was a one
-% column document we have to switch back to one column after the
-% index.
+% When the document continues after the index and it was a
+% one-column document we have to switch back to one column after
+% the index.
% \begin{macrocode}
{\if@restonecol\onecolumn\else\clearpage\fi}
% \end{macrocode}
@@ -4293,7 +4296,7 @@
%
% \begin{macro}{\c@footnote}
% Footnotes are numbered within chapters in the report and book
-% document styles.
+% document classes.
% \begin{macrocode}
%<!article>\@addtoreset{footnote}{chapter}
% \end{macrocode}
@@ -4433,18 +4436,18 @@
% \end{macrocode}
% \end{macro}
%
-% \subsection{Two column mode}
+% \subsection{Two-column mode}
%
% \begin{macro}{\columnsep}
-% This gives the distance between two columns in two column mode.
+% This gives the distance between two columns in two-column mode.
% \begin{macrocode}
\setlength\columnsep{10\p@}
% \end{macrocode}
% \end{macro}
%
% \begin{macro}{\columnseprule}
-% This gives the width of the rule between two columns in two
-% column mode. We have no visible rule.
+% This gives the width of the rule between two columns in
+% two-column mode. We have no visible rule.
% \begin{macrocode}
\setlength\columnseprule{0\p@}
% \end{macrocode}
@@ -4454,7 +4457,7 @@
% We have \pstyle{plain} pages in the document classes article and
% report unless the user specified otherwise. In the `book'
% document class we use the page style \pstyle{headings} by
-% default. We use arabic pagenumbers.
+% default. We use arabic page numbers.
% \begin{macrocode}
%<!book>\pagestyle{plain}
%<book>\pagestyle{headings}
diff --git a/Master/texmf-dist/source/latex-dev/base/classes.ins b/Master/texmf-dist/source/latex-dev/base/classes.ins
index 13d49747272..b3f3e19fc40 100644
--- a/Master/texmf-dist/source/latex-dev/base/classes.ins
+++ b/Master/texmf-dist/source/latex-dev/base/classes.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/cmextra.ins b/Master/texmf-dist/source/latex-dev/base/cmextra.ins
index 05776a68075..f96b04221a7 100644
--- a/Master/texmf-dist/source/latex-dev/base/cmextra.ins
+++ b/Master/texmf-dist/source/latex-dev/base/cmextra.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins
index b5ed3e3f106..430abdd5f96 100644
--- a/Master/texmf-dist/source/latex-dev/base/cmfonts.ins
+++ b/Master/texmf-dist/source/latex-dev/base/cmfonts.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/doc.dtx b/Master/texmf-dist/source/latex-dev/base/doc.dtx
index 7e7817153c8..c860a674382 100644
--- a/Master/texmf-dist/source/latex-dev/base/doc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/doc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -35,7 +35,7 @@
%<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
%<+package> \ProvidesPackage{doc}
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2020/06/15 v2.1m
+%<+package|shortvrb> [2020/11/23 v2.1m
%<+package|shortvrb> Standard LaTeX documentation package (FMi)]
%\catcode`\<=12
%
@@ -47,7 +47,7 @@
%
%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved.
%
%
% Version: Date: Changes:
@@ -751,7 +751,7 @@
% in your package file. Precede it by any bibliography commands
% necessary for your citations.
% Alternatively, it may be more convenient to put all such calls
-% amongst the arguments of the |\StopEventually| macro, in
+% amongt the arguments of the |\StopEventually| macro, in
% which case a |\Finale| command should appear at the end of
% your file.
%
@@ -949,7 +949,7 @@
% macro.}
% \DescribeMacro\changes
% To maintain a change history within the file, the |\changes|
-% command may be placed amongst the description part of the changed
+% command may be placed amongt the description part of the changed
% code. It takes three arguments, thus:
% \begin{quote}
% |\changes{|\meta{version}|}{|\meta{date}|}{|^^A
@@ -2200,7 +2200,7 @@
%
% \begin{environment}{environment}
% \changes{v1.8c}{1993/10/25}{Environment added}
-% The ``environment'' envrionment will be implemented just like the
+% The ``environment'' environment will be implemented just like the
% ``macro'' environment flagging any differences in the code by
% passing |\iffalse| or |\iftrue| to the |\m@cro@| environment
% doing the actual work.
@@ -3029,7 +3029,7 @@
% \begin{macro}{\addto@hook}
% The code for adding tokens (the second argument) to a token list
% (the first argument) is taken from~\cite{art:verbatim}, but it needs
-% to be "\long" in case "\par" is amongst the tokens.
+% to be "\long" in case "\par" is amongt the tokens.
% \begin{macrocode}
\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
% \end{macrocode}
@@ -3149,7 +3149,7 @@
% of an `index style file'; the character selected for this function
% is |=|, and therefore this character too must be specially treated
% when it is met in a \TeX\ command. A suitable index style file is
-% provided amongst the supporting files for this style file in
+% provided amongt the supporting files for this style file in
% \texttt{gind.ist} and is generated from this source by processing
% with \texttt{docstrip} to extract the module \textbf{gind}. A
% similar style file \texttt{gglo.ist} is supplied for sorting the
@@ -4219,7 +4219,7 @@
%
% \begin{macro}{\meta@font@select}
% \changes{v2.0k}{2000/05/26}{Macro added (pr/3170)}
-% Maske font used inside |\meta| customizable.
+% Make font used inside |\meta| customizable.
% \begin{macrocode}
\def\meta@font@select{\itshape}
% \end{macrocode}
@@ -4431,7 +4431,7 @@
\global\catcode`#1\csname cc\string#1\endcsname
% \end{macrocode}
% \changes{v1.9e.2}{1994/02/07}{-js: Reset `cc`\protect\meta{c} in
-% in \cs{DeleteShortVerb}}
+% \cs{DeleteShortVerb}}
% We must not forget to reset "\cc\"\meta{c}, otherwise the check in
% "\MakeShortVerb" for a repeated definition will not work.
% \begin{macrocode}
@@ -4532,7 +4532,7 @@
%
% \begin{macro}{\init@checksum}
% The checksum mechanism works by counting backslashes in the
-% macrocode. This initialises the count (when called from
+% macrocode. This initializes the count (when called from
% "\StopEventually").
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx
index a0a06311edb..ea3a443c395 100644
--- a/Master/texmf-dist/source/latex-dev/base/docstrip.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/docstrip.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -30,8 +30,8 @@
\catcode`\}=2
\def\filename{docstrip.dtx}
\def\fileversion{v2.6a}
-\def\filedate{2020-07-07}
-\def\docdate {2020-07-11}
+\def\filedate{2020-11-23}
+\def\docdate {2020-11-23}
%%
%
%\iffalse
@@ -77,7 +77,7 @@
% less/more dirty---all uses of \cs{afterfi}}
% \changes{2.3e}{1995/09/25}{Directories support}
% \changes{2.3e}{1995/10/24}{added \cs{makepathname} to support
-% systems with bizzare pathnames}
+% systems with bizare pathnames}
% \changes{2.3e}{1995/10/25}{batch files work by \cs{input}}
% \changes{2.3e}{1996/10/02}{Introduced ``open lists''}
% \changes{2.4a}{1996/06/06}{Add stream limits (MDW)}
@@ -122,7 +122,7 @@
%
% \changes{2.1b}{1993/02/23}{modified mailaddress of Johannes}
% \changes{2.4i}{1998/01/18}{removed mail addresses as it is hopeless
-% to keep them uptodate}
+% to keep them up-to-date}
% \author{%
% Frank Mittelbach
% \and
@@ -809,7 +809,7 @@
% \end{verbatim}
%
% To extract the code using \ds, the original `guard'
-% mecahnism is extended by the introduction of the syntax
+% mechanism is extended by the introduction of the syntax
% \texttt{\%<@@=\meta{module}>}. The \meta{module} name then
% replaces the |@@| when the code is extracted, so that
% \begin{verbatim}
@@ -2305,7 +2305,7 @@ Z
% delimited with |\endLine|) on all active output files i.e.
% those with off-counters equal to zero. It uses the
% search-and-replace macro \cs{replaceModuleInLine} to replace any
-% occurences of \texttt{@@} with the current module name.
+% occurrences of \texttt{@@} with the current module name.
% If statistics are included, the counter
% |\codeLinesPassed| is incremented by $1$.
% \begin{macrocode}
@@ -4310,7 +4310,7 @@ for copying and modification in the file \inFileName.
% \begin{macro}{\WriteToDir}
% Macro |\WriteToDir| is either empty or holds the prefix
% necessary to read a file from the current directory. Under UNIX
-% this is |./| but a lot of other systems addopted this concept.
+% this is |./| but a lot of other systems adopted this concept.
% This macro is a default value for |\destdir|.
%
% The definition of this macro is now delayed until |\@setwritedir|
diff --git a/Master/texmf-dist/source/latex-dev/base/docstrip.ins b/Master/texmf-dist/source/latex-dev/base/docstrip.ins
index 281a376761b..edc75d8258c 100644
--- a/Master/texmf-dist/source/latex-dev/base/docstrip.ins
+++ b/Master/texmf-dist/source/latex-dev/base/docstrip.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -52,7 +52,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/ec.ins b/Master/texmf-dist/source/latex-dev/base/ec.ins
index 4283ef1ddda..ce702d8a27f 100644
--- a/Master/texmf-dist/source/latex-dev/base/ec.ins
+++ b/Master/texmf-dist/source/latex-dev/base/ec.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.dtx b/Master/texmf-dist/source/latex-dev/base/exscale.dtx
index f13e0116cd1..b6f465443f5 100644
--- a/Master/texmf-dist/source/latex-dev/base/exscale.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/exscale.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/exscale.ins b/Master/texmf-dist/source/latex-dev/base/exscale.ins
index d504b056cb4..8a22a7f9385 100644
--- a/Master/texmf-dist/source/latex-dev/base/exscale.ins
+++ b/Master/texmf-dist/source/latex-dev/base/exscale.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx
index e4c384ee70c..d844b65aa51 100644
--- a/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -37,7 +37,7 @@
%<driver>\ProvidesFile{fix-cm.drv}
% \fi
% \ProvidesFile{fix-cm.dtx}
- [2015/01/14 v1.1t fixes to LaTeX]
+ [2020/11/24 v1.1t fixes to LaTeX]
%
% \iffalse
%<*driver>
@@ -446,7 +446,7 @@
{<->sub * cmtt/m/sl}{}
% \end{macrocode}
%
-% \paragraph{CM Typewiter (var.)}
+% \paragraph{CM Typewriter (var.)}
% \begin{macrocode}
\DeclareFontFamily{T1}{cmvtt}{}
\DeclareFontShape{T1}{cmvtt}{m}{n}{
diff --git a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins
index 0407d39630b..840d5e408c2 100644
--- a/Master/texmf-dist/source/latex-dev/base/fix-cm.ins
+++ b/Master/texmf-dist/source/latex-dev/base/fix-cm.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
index 632f1c9be56..6900a020744 100644
--- a/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -39,13 +39,13 @@
%<driver, >\ProvidesFile{fontdef.drv}
% \fi
% \ProvidesFile{fontdef.dtx}
-%<-latexrelease> [2020/08/01 v3.0i LaTeX Kernel
+%<-latexrelease> [2020/11/24 v3.0i LaTeX Kernel
% \iftrue (\else
%<text, >(Text
%<math, >(Math
-%<+cfgtext>(Uncustomised text
-%<+cfgmath>(Uncustomised math
-%<+cfgprel>(Uncustomised preload
+%<+cfgtext>(Uncustomized text
+%<+cfgmath>(Uncustomized math
+%<+cfgprel>(Uncustomized preload
% \fi
%<-latexrelease> font setup)]
%
@@ -110,7 +110,7 @@
% If you don't plan to use Computer Modern much or at all, it might
% (!) be a good idea to make your own \texttt{fonttext.cfg}. Look at
% the comments below (docstrip module `text') to see what should
-% should go into such a file.
+% go into such a file.
%
% To change the math font setup use a copy of \texttt{fontmath.ltx}
% under the name \texttt{fontmath.cfg} and change this copy. However,
diff --git a/Master/texmf-dist/source/latex-dev/base/format.ins b/Master/texmf-dist/source/latex-dev/base/format.ins
index 8796d16d3e2..f872c31a3e4 100644
--- a/Master/texmf-dist/source/latex-dev/base/format.ins
+++ b/Master/texmf-dist/source/latex-dev/base/format.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -123,7 +123,7 @@ extension .ins) which are part of the distribution.
This is a generated file.
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx
index ac72f4dca5f..0a89a25fe11 100644
--- a/Master/texmf-dist/source/latex-dev/base/graphpap.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/graphpap.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/graphpap.ins b/Master/texmf-dist/source/latex-dev/base/graphpap.ins
index b5bb800122a..9528f3dcdc5 100644
--- a/Master/texmf-dist/source/latex-dev/base/graphpap.ins
+++ b/Master/texmf-dist/source/latex-dev/base/graphpap.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx
index f2157e094ab..f07e4aa8f16 100644
--- a/Master/texmf-dist/source/latex-dev/base/ifthen.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ifthen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -42,7 +42,7 @@
%<driver>\ProvidesFile{ifthen.drv}
% \fi
% \ProvidesFile{ifthen.dtx}
- [2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)]
+ [2020/11/24 v1.1c Standard LaTeX ifthen package (DPC)]
%
% \iffalse
%<*driver>
@@ -368,7 +368,7 @@
% \end{macro}
%
% \begin{macro}{\TE@endeval}
-% Finalise a term. (Expanded on the first pass).
+% Finalize a term. (Expanded on the first pass).
% \begin{macrocode}
\def\TE@endeval{\relax
\noexpand\TE@setvaltrue\noexpand
diff --git a/Master/texmf-dist/source/latex-dev/base/ifthen.ins b/Master/texmf-dist/source/latex-dev/base/ifthen.ins
index 0e813cd5de3..d589deaafca 100644
--- a/Master/texmf-dist/source/latex-dev/base/ifthen.ins
+++ b/Master/texmf-dist/source/latex-dev/base/ifthen.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx
index c1d08b4830f..d8649c778df 100644
--- a/Master/texmf-dist/source/latex-dev/base/inputenc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/inputenc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -123,7 +123,7 @@
% THIS MAY CHANGE}
% \changes{v0.95}{1997/12/20}{Updated documentation}
% \changes{v0.97}{1998/03/05}{Spanish ords changed to text chars, pr/2579}
-% \changes{v1.1b}{2006/03/04}{Number of normalisations in the LICR
+% \changes{v1.1b}{2006/03/04}{Number of normalizations in the LICR
% representation (pr/3849)}
% \changes{v1.1c}{2006/11/18}{Added missing \cs{ProvidesFile} line for cp1257 (pr/3892)}
%
@@ -410,7 +410,7 @@
%<cp1252&!ansinew> \ProvidesFile{cp1252.def}
%<cp1250> \ProvidesFile{cp1250.def}
%<cp1257> \ProvidesFile{cp1257.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
%<cp850>%%
%<cp850>%% If you need a Euro symbol, try cp858 instead.
%<cp850>%%
@@ -1053,7 +1053,7 @@
%
% The ISO Latin-3 encoding file defines the characters
% in the ISO 8859-3 encoding. It was contributed by
-% by J\"org Knappen (\texttt{joerg.knappen@uni-mainz.de}) and
+% J\"org Knappen (\texttt{joerg.knappen@uni-mainz.de}) and
% adapted by Chris Rowley.
%
% It can be used for general purpose applications in
diff --git a/Master/texmf-dist/source/latex-dev/base/inputenc.ins b/Master/texmf-dist/source/latex-dev/base/inputenc.ins
index 6494a689eab..19a8606e5d4 100644
--- a/Master/texmf-dist/source/latex-dev/base/inputenc.ins
+++ b/Master/texmf-dist/source/latex-dev/base/inputenc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.dtx b/Master/texmf-dist/source/latex-dev/base/latex209.dtx
index d08a8001b56..183028fca77 100644
--- a/Master/texmf-dist/source/latex-dev/base/latex209.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/latex209.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -200,7 +200,7 @@
% \end{macrocode}
% Describe the file.
% \begin{macrocode}
-\ProvidesFile{latex209.def}[2020/08/21 v0.55 Standard LaTeX file]
+\ProvidesFile{latex209.def}[2020/11/26 v0.55 Standard LaTeX file]
% \end{macrocode}
% \changes{v0.24}{1994/05/14}{Removed date.}
% \changes{v0.40}{1995/03/21}
@@ -712,7 +712,7 @@
%
% \changes{v0.18}{1994/03/11}{Added the catcode changes}
%
-% By default, \LaTeXe{} makes the input charactes 0--8, 11, 14--31 and
+% By default, \LaTeXe{} makes the input characters 0--8, 11, 14--31 and
% 128--255 illegal. In compatibility mode, we restore their old
% meanings.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/latex209.ins b/Master/texmf-dist/source/latex-dev/base/latex209.ins
index bb72f344f1b..7c5197b9bd4 100644
--- a/Master/texmf-dist/source/latex-dev/base/latex209.ins
+++ b/Master/texmf-dist/source/latex-dev/base/latex209.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
index 5ee39a3a2df..19a1d0db806 100644
--- a/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -40,7 +40,7 @@
%<*!fixltx2e>
% \fi
% \ProvidesFile{latexrelease.dtx}
- [2018/05/08 v1.0k LaTeX release emulation and tests
+ [2020/12/06 v1.0k LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
% \iffalse
%</!fixltx2e>
@@ -345,7 +345,7 @@
%
% Now if you make a further change to |\widget| in the future you
% simply copy the current definition into the empty block and add a new
-% empty declaration with todays date and the current format date. This
+% empty declaration with today's date and the current format date. This
% way your main code stays readable and the old versions accumulate at
% the end of the package.\footnote{Of course there may be some cases
% in which the old code has to be in a specific place within the
@@ -396,7 +396,7 @@
% \end{macro}
%
% \changes{v1.0c}{2015/02/19}{Swap argument order}
-% \changes{v1.0k}{2018/05/08}{reset \cs{\requestedLaTeXdate} for current and latest options, gitub issue 43}
+% \changes{v1.0k}{2018/05/08}{reset \cs{\requestedLaTeXdate} for current and latest options, github issue 43}
% \begin{macrocode}
\DeclareOption*{%
\def\@IncludeInRelease#1[#2]{\@IncludeInRele@se{#1}}%
diff --git a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
index 99af17e8fb6..141a677b48c 100644
--- a/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
+++ b/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -81,11 +81,16 @@ extension .ins) which are part of the distribution.
%\keepsilent
\usedir{tex/latex/base}
+% the order should match the order in the format in case there are dependencies
+% (something defined in one module and used in another)
+
\generateFile{latexrelease.sty}{t}{%
\from{ltclass.dtx} {latexreleasefirst,tracerollback}%
\from{ltvers.dtx} {latexrelease}%
\from{latexrelease.dtx}{latexrelease}%
\from{ltdirchk.dtx} {latexrelease}%
+ \from{ltplain.dtx} {latexrelease}%
+ \from{ltluatex.dtx} {latexrelease}% empty
\from{ltexpl.dtx} {latexrelease}% empty
\from{ltdefns.dtx} {latexrelease}%
\from{lthooks.dtx} {latexrelease}% empty % L3 layer module
@@ -93,42 +98,39 @@ extension .ins) which are part of the distribution.
\from{ltcntrl.dtx} {latexrelease}% empty
\from{lterror.dtx} {latexrelease}% empty
\from{ltpar.dtx} {latexrelease}% empty
+ \from{ltspace.dtx} {latexrelease}%
+ \from{ltlogos.dtx} {latexrelease}% empty
+ \from{ltfiles.dtx} {latexrelease}%
+ \from{ltoutenc.dtx} {latexrelease}%
+ \from{ltcounts.dtx} {latexrelease}%
+ \from{ltlength.dtx} {latexrelease}%
+ \from{ltfssbas.dtx} {latexrelease}%
+ \from{ltfssaxes.dtx} {latexrelease}%
+ \from{ltfsstrc.dtx} {latexrelease}%
+ \from{ltfssdcl.dtx} {latexrelease}%
+ \from{ltfssini.dtx} {latexrelease}%
+ \from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext)
+ \from{ltfntcmd.dtx} {latexrelease}% empty
+ \from{lttextcomp.dtx} {latexrelease}%
+ \from{ltpageno.dtx} {latexrelease}% empty
+ \from{ltxref.dtx} {latexrelease}% empty
+ \from{ltmiscen.dtx} {latexrelease}%
+ \from{ltmath.dtx} {latexrelease}%
\from{ltlists.dtx} {latexrelease}% empty
\from{ltboxes.dtx} {latexrelease}%
\from{lttab.dtx} {latexrelease}% empty
- \from{ltmath.dtx} {latexrelease}%
\from{ltpictur.dtx} {latexrelease}%
\from{ltthm.dtx} {latexrelease}% empty
\from{ltsect.dtx} {latexrelease}% empty
- \from{ltfiles.dtx} {latexrelease}%
- \from{ltoutenc.dtx} {latexrelease}%
- \from{ltcounts.dtx} {latexrelease}%
- \from{ltlength.dtx} {latexrelease}%
\from{ltfloat.dtx} {latexrelease}%
\from{ltidxglo.dtx} {latexrelease}% empty
\from{ltbibl.dtx} {latexrelease}% empty
\from{ltpage.dtx} {latexrelease}% empty
+ \from{ltclass.dtx} {latexrelease,tracerollback}%
\from{ltfilehook.dtx} {latexrelease}% empty % L3 layer module
\from{ltshipout.dtx} {latexrelease}% empty % L3 layer module
\from{ltoutput.dtx} {latexrelease}%
- \from{ltclass.dtx} {latexrelease,tracerollback}%
- \from{ltspace.dtx} {latexrelease}%
- \from{ltlogos.dtx} {latexrelease}% empty
- \from{ltplain.dtx} {latexrelease}%
- \from{ltfssdcl.dtx} {latexrelease}%
- \from{ltfssini.dtx} {latexrelease}%
- \from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext)
- \from{ltfntcmd.dtx} {latexrelease}% empty
- \from{lttextcomp.dtx} {latexrelease}%
- \from{ltfssbas.dtx} {latexrelease}%
- \from{ltfssaxes.dtx} {latexrelease}%
- \from{ltfsstrc.dtx} {latexrelease}%
- \from{ltfsscmp.dtx} {latexrelease}%
- \from{ltpageno.dtx} {latexrelease}% empty
- \from{ltxref.dtx} {latexrelease}% empty
- \from{ltmiscen.dtx} {latexrelease}%
- \from{ltluatex.dtx} {latexrelease}%
- \from{ltexpl.dtx} {latexrelease}%
+ \from{ltfsscmp.dtx} {latexrelease}% only in latexrelease!
\from{ltfinal.dtx} {latexrelease}%
}
diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx
index 908f11e1244..c53dac62f0c 100644
--- a/Master/texmf-dist/source/latex-dev/base/latexsym.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/latexsym.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/latexsym.ins b/Master/texmf-dist/source/latex-dev/base/latexsym.ins
index 9e9901b879c..620046ac9ba 100644
--- a/Master/texmf-dist/source/latex-dev/base/latexsym.ins
+++ b/Master/texmf-dist/source/latex-dev/base/latexsym.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -87,7 +87,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/letter.dtx b/Master/texmf-dist/source/latex-dev/base/letter.dtx
index 7b31dfbbc96..faece887f86 100644
--- a/Master/texmf-dist/source/latex-dev/base/letter.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/letter.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -45,7 +45,7 @@
%<*driver>
\ProvidesFile{letter.drv}
%</driver>
- [2020/03/11 v1.3b
+ [2021/01/07 v1.3c
%<+letter> Standard LaTeX document class]
% \end{macrocode}
%
@@ -1019,7 +1019,29 @@
\@date \end{tabular}\par}%
\fi
\vspace{2\parskip}%
- {\raggedright \toname \\ \toaddress \par}%
+% \end{macrocode}
+% If the address field used \verb=\\[...]= then we have
+% \cs{toaddress} starting with the bracket argument as the split
+% was done simply at \verb=\\=. So we add \cs{expandafter} here so
+% that is will be used and not typeset. A better fix would be to do
+% a proper parsing but \ldots
+%
+% Other classes based on \texttt{letter.cls} could benefit from the same fix, e.g.,
+% \texttt{akletter.cls},
+% \texttt{bletter.cls},
+% \texttt{letter.cls},
+% \texttt{chletter.cls},
+% \texttt{extletter.cls},\\
+% \texttt{frletter.cls},
+% \texttt{hletter.cls},
+% \texttt{scrlttr2.cls},
+% \texttt{lettre.cls},
+% \texttt{beletter.cls},\\
+% \texttt{brief.cls} and perhaps others.
+%
+% \changes{v1.3c}{2020/12/28}{Add \cs{expandafter} (gh/427)}
+% \begin{macrocode}
+ {\raggedright \toname \expandafter\\\toaddress \par}%
\vspace{2\parskip}%
#1\par\nobreak}
% \end{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/letter.ins b/Master/texmf-dist/source/latex-dev/base/letter.ins
index 8e8ed4ef7b9..1c2b2f9f010 100644
--- a/Master/texmf-dist/source/latex-dev/base/letter.ins
+++ b/Master/texmf-dist/source/latex-dev/base/letter.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx
index d18df9ad896..3328c1f504d 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
index a3a25308fe8..7f5066542f3 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltbibl.dtx}
- [2018/11/09 v1.1r LaTeX Kernel (Bibliography)]
+ [2020/12/10 v1.1s LaTeX Kernel (Bibliography)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltbibl.dtx}
@@ -104,7 +104,7 @@
% but puts nothing in the text.
%
% |\nocite{*}| is special: it tells \BibTeX{} to put the whole of a
-% collection of references into the bibiography.
+% collection of references into the bibliography.
%
% \StopEventually{}
%
@@ -253,7 +253,7 @@
% year citations it becomes more than questionable.
%
% So Chris added yet another hook here, as suggested by, at least,
-% Donald Arsenau. Note that this one is inside the first argument
+% Donald Arseneau. Note that this one is inside the first argument
% of the |\@cite| hook.
% This decouples the top-level typesetting of the citation from
% the details of the other business conducted here. All this really
@@ -327,6 +327,10 @@
% \changes{v1.1g}{1995/05/08}{Use \cs{@firstofone}}
% \changes{v1.1k}{1995/10/20}{Removed refundefined flag}
% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease> {\nocite}{Allow nocite in preamble}%
\def\nocite#1{\@bsphack
% \end{macrocode}
% With the implementation designed already in \LaTeX\,2.09 the
@@ -335,10 +339,15 @@
% that point. As a result the ``reference'' will appear on the
% terminal and nothing else will happen.
%
-% This would be easy to fix, but then a document using the fix will
+% [This would be easy to fix, but then a document using the fix will
% silently fail on an older release of \LaTeX{}, missing all
% citations done with |\nocite|. Thus we do only generate an error
-% message and leave the fix for a \LaTeXe{} successor.
+% message and leave the fix for a \LaTeXe{} successor.]
+%
+% Given that we are now a quarter century into using \LaTeXe{}
+% there is no good reason any more do limit ourself to 2.09
+% conciderations. So we now simply delay the \cs{nocide} if it is
+% issued in the preamble.
%
% \changes{v1.1o}{2003/05/18}{Check if we are after \cs{document}}
% \changes{v1.1p}{2004/01/04}{Changed error message}
@@ -354,18 +363,48 @@
\@latex@warning{Citation `\@citeb' undefined}}{}}%
\else
% \end{macrocode}
-% But before |\begin{document}| we raise an error message:
+% But before |\begin{document}| we raised an error message in the
+% past but as of 2021/05 not any longer.
% \begin{macrocode}
- \@latex@error{Cannot be used in preamble}\@eha
+% \@latex@error{Cannot be used in preamble}\@eha
% \end{macrocode}
-% Without the compatibility problems we could fix the problem as follows:
+% Instead we delay the declaration to the start of the document.
+% We have to use a late hook for this, so that it comes after the
+% \texttt{.aux} file is open for writing and after
+% \cs{@preamblecmds} was executed to change the above
+% test. Therefore \cs{AtBeginDocument} would still be too early.
+% \changes{v1.1s}{2020/12/10}{Delay any \cs{nocite} in the preamble
+% instead of raising an error}
% \begin{macrocode}
- % \AtBeginDocument{\nocite{#1}}
+ \AddToHook{begindocument/end}[kernel]{\nocite{#1}}%
\fi
\@esphack}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\nocite}{Allow nocite in preamble}%
+%<latexrelease>
+%<latexrelease>\def\nocite#1{\@bsphack
+%<latexrelease> \ifx\@onlypreamble\document
+%<latexrelease> \@for\@citeb:=#1\do{%
+%<latexrelease> \edef\@citeb{\expandafter\@firstofone\@citeb}%
+%<latexrelease> \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+%<latexrelease> \@ifundefined{b@\@citeb}{\G@refundefinedtrue
+%<latexrelease> \@latex@warning{Citation `\@citeb' undefined}}{}}%
+%<latexrelease> \else
+%<latexrelease> \@latex@error{Cannot be used in preamble}\@eha
+%<latexrelease> \fi
+%<latexrelease> \@esphack}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
+%
% Since |\nocite{*}| should not produce a warning about undefined
-% citation keys (seee PR 557), we need to set the control sequence
+% citation keys (see PR 557), we need to set the control sequence
% `|\b@*|' to something other than |\relax|. As a result |\cite{*}|
% will not warn either (but that never worked with \BibTeX{} in the
% first place).
diff --git a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
index 39c134b3bfd..ec192293f10 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltboxes.dtx}
- [2020/09/27 v1.4a LaTeX Kernel (Box Commands)]
+ [2020/12/05 v1.4a LaTeX Kernel (Box Commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltboxes.dtx}
@@ -539,7 +539,7 @@
% \changes{v1.0b}{1994/03/14}
% {Use \cs{color@setgroup}}
% \changes{v1.0d}{1994/04/15}
-% {Added missing procent character.}
+% {Added missing percent character.}
% \changes{v1.0v}{1995/07/20}
% {Use \cs{sbox}}
% \begin{macrocode}
@@ -888,7 +888,7 @@
%
% The rational for allowing two normally global flags to be set
% locally here was stated originally by
-% Donald Arsenau and extended by Chris Rowley.
+% Donald Arseneau and extended by Chris Rowley.
% It is because these flags are only set globally to
% true by section commands, and these should never appear within
% boxes or, indeed, in any group; and they are only ever
diff --git a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
index b639ae9410a..1400ec0a62d 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2020/10/18 v1.3t LaTeX Kernel (Class & Package Interface)]
+ [2020/12/17 v1.3v LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -427,7 +427,7 @@
% \changes{v0.2h}{1993/11/28}
% {Primitive filenames now terminated by space not \cs{relax}.}
% \changes{v0.2h}{1993/11/28}
-% {Directory syntax checing moved to dircheck.dtx}
+% {Directory syntax checking moved to dircheck.dtx}
% \changes{v0.2h}{1993/11/28}
% {Assorted commands now in the kernel removed.}
% \changes{v0.2i}{1993/12/03}
@@ -486,7 +486,7 @@
% \begin{macro}{\@declaredoptions}
% This list is automatically built by |\DeclareOption|.
% It is the list of options (separated by commas) declared in
-% the class or package file and it defines the order in which the
+% the class or package file and it defines the order in which
% the corresponding |\ds@|\meta{option} commands are executed.
% All local \meta{option}s which are not declared will be processed
% in the order defined by the optional argument of |\documentclass|
@@ -524,6 +524,27 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@currpath}
+% Path to the current file if explicitly given.
+% \changes{v1.3u}{2020/11/20}{Macro added}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@currpath}%
+%<latexrelease> {Add \@currpath}%
+\let\@currpath\@empty
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{\@currpath}%
+%<latexrelease> {Add \@currpath}%
+%<latexrelease>\let\@currpath\@undefined
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@currname}
% Name of current package or option.
% \begin{macrocode}
@@ -562,6 +583,7 @@
% \changes{v1.3l}{2020/06/05}{Added \cs{@expl@push@filename@@}
% and \cs{@expl@push@filename@aux@@}}
% \changes{v1.3s}{2020/10/08}{Added missing 2020/02/02 \cs{IncludeInRelease}}
+% \changes{v1.3v}{2020/12/14}{Removed \cs{@expl@@@hook@curr@name@push@@n}}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
@@ -578,13 +600,22 @@
% here, e.g., \cs{@expl@push@filename@@} needs cleanup and (and
% should probably not have this name either).
% \begin{macrocode}
- \@expl@@@hook@curr@name@push@@n{}%
\@expl@push@filename@@
\xdef\@currnamestack{%
{\@currname}%
{\@currext}%
{\the\catcode`\@}%
\@currnamestack}%
+% \end{macrocode}
+% Temporarily add a stack for \cs{@currpath} here. This should be
+% integrated in the main file stack eventually, but other packages
+% rely on \cs{@currnamestack} having three elements per file, so that
+% isn't a trivial change. The prefix \cs{@kernel@...} hopefully
+% discourages people from using it.
+% \begin{macrocode}
+ \xdef\@kernel@currpathstack{%
+ {\@currpath}%
+ \@kernel@currpathstack}%
\@expl@push@filename@aux@@}
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
@@ -632,6 +663,10 @@
%<latexrelease> {Add \@expl@pop@filename@@}%
\def\@popfilename{\@expl@@@hook@curr@name@pop@@
\expandafter\@p@pfilename\@currnamestack\@nil
+% \end{macrocode}
+% Same for popping:
+% \begin{macrocode}
+ \expandafter\@p@pfilepath\@kernel@currpathstack\@nil
\@expl@pop@filename@@}
%<latexrelease>\EndIncludeInRelease
%<latexrelease>
@@ -672,6 +707,36 @@
% \end{macro}
% \end{macro}
%
+%
+% \begin{macro}{\@kernel@currpathstack}
+% Path to the current file if explicitly given. The auxiliary is
+% needed here to insert a \cs{@empty} to prevent the loss of braces.
+% \changes{v1.3u}{2020/11/20}{Macro added}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@kernel@currpathstack}%
+%<latexrelease> {Add \@kernel@currpathstack}%
+\gdef\@kernel@currpathstack{}
+\def\@p@pfilepath#1{%
+ \gdef\@currpath{#1}\@p@pfilepath@aux\@empty}
+\def\@p@pfilepath@aux#1\@nil{%
+ \xdef\@kernel@currpathstack{#1}}
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{\@kernel@currpathstack}%
+%<latexrelease> {Add \@kernel@currpathstack}%
+%<latexrelease>\let\@kernel@currpathstack\@undefined
+%<latexrelease>\let\@p@pfilepath\@undefined
+%<latexrelease>\let\@p@pfilepath@aux\@undefined
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\@ptionlist}
% Returns the option list of the file.
% \begin{macrocode}
@@ -915,15 +980,42 @@
% \changes{v0.3c}{1994/03/12}
% {use \cs{@gtempa}}
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\ProvidesPackage}{Check name with \strcmp}%
+%<*2ekernel|latexrelease>
\def\ProvidesPackage#1{%
\xdef\@gtempa{#1}%
- \ifx\@gtempa\@currname\else
+% \end{macrocode}
+% \changes{v1.3u}{2020/11/20}
+% {Use string comparison instead of \cs{ifx}}
+% Here \cs{@currpath} is explicitly added to the file name to report
+% when a package or class is loaded using an explicit path. Loading
+% using a path in the argument is supported but not encouraged.
+% \begin{macrocode}
+ \@expandtwoargs\@expl@str@if@eq@@nnTF
+ {\@gtempa}{\@currpath\@currname}{}{%
\@latex@warning@no@line{You have requested
- \@cls@pkg\space`\@currname',\MessageBreak
+ \@cls@pkg\space`\@currpath\@currname',\MessageBreak
but the \@cls@pkg\space provides `#1'}%
- \fi
+ }%
\@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
\@onlypreamble\ProvidesPackage
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\ProvidesPackage}{Undo: check name with \strcmp}%
+%<latexrelease>\def\ProvidesPackage#1{%
+%<latexrelease> \xdef\@gtempa{#1}%
+%<latexrelease> \ifx\@gtempa\@currname\else
+%<latexrelease> \@latex@warning@no@line{You have requested
+%<latexrelease> \@cls@pkg\space`\@currname',\MessageBreak
+%<latexrelease> but the \@cls@pkg\space provides `#1'}%
+%<latexrelease> \fi
+%<latexrelease> \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -934,12 +1026,12 @@
% be cautious when handling the identification string in case it
% contains UTF-8 characters.
% \changes{v1.3e}{2019/11/29}{Protect package info text (gh/52)}
-% \changes{v1.3r}{2020/10/01}{Allow for package subsitution}
+% \changes{v1.3r}{2020/10/01}{Allow for package substitution}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease> {\@pr@videpackage}{Allow for package subsitution}%
+%<latexrelease> {\@pr@videpackage}{Allow for package substitution}%
\def\@pr@videpackage[#1]{%
\expandafter\protected@xdef % <-- protected...
\csname ver@\@currname.\@currext\endcsname{#1}% Loaded package
@@ -1007,9 +1099,18 @@
%
% \begin{macro}{\ProvidesClass}
% Like |\ProvidesPackage|, but for classes.
+% This needs a dummy \pkg{latexrelease} block to copy the definition
+% of \cs{ProvidesPackage} as it changes across releases.
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\ProvidesClass}{Track \ProvidesPackage}%
+%<*2ekernel|latexrelease>
\let\ProvidesClass\ProvidesPackage
\@onlypreamble\ProvidesClass
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -1075,10 +1176,18 @@
\@expl@@@filehook@set@curr@file@@nNN
{\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}%
\reserved@a\reserved@b
+ \@expl@@@filehook@clear@replacement@flag@@
\expandafter\xdef\csname opt@\reserved@a\endcsname{%
\@ifundefined{opt@\reserved@a}\@empty
{\csname opt@\reserved@a\endcsname,}%
- \zap@space#2 \@empty}}
+ \zap@space#2 \@empty}%
+% \end{macrocode}
+% \changes{v1.3u}{2020/11/20}
+% {Copy option list to the requested package.}
+% \begin{macrocode}
+ \expandafter\let
+ \csname opt@#3.#1\expandafter\endcsname
+ \csname opt@\reserved@a\endcsname}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%
@@ -1170,7 +1279,7 @@
% \changes{v0.2a}{1993/11/14}
% {Stop adding the global option list inside class files.}
% \changes{v0.2a}{1993/11/14}
-% {Optimise `empty option' code.}
+% {Optimize `empty option' code.}
% \changes{v0.2b}{1993/11/15}
% {Star form added.}
% \changes{v0.2c}{1993/11/17}
@@ -1351,7 +1460,7 @@
% the internal command, |\@fileswithoptions|.
% \begin{macro}{\documentclass}
% \changes{v1.0q}{1995/06/19}
-% {Dont redefine \cs{usepackage} in compat mode for /1634}
+% {Don't redefine \cs{usepackage} in compat mode for /1634}
% The main new-style class declaration.
% \begin{macrocode}
\def\documentclass{%
@@ -1642,7 +1751,7 @@
\ifx\@nnil##1\relax\else
% \end{macrocode}
% If |\ifx\@nnil##1\n@nil| is true then |#1| is (presumably) empty
-% (Older code used |\relax| which is slighly easier to get into |#1|
+% (Older code used |\relax| which is slightly easier to get into |#1|
% by mistake, which would spoil this test.)
% \begin{macrocode}
\ifx\@nnil##1\@nnil\else
@@ -1719,8 +1828,38 @@
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease> {\@onefilewithoptions}{Hooks and unused options issue}%
\def\@onefilewithoptions#1[#2][#3]#4{%
+% \end{macrocode}
+% We have to sanitise file names, so that something like
+% \begin{verbatim}
+% \usepackage{some/local/path/array}
+% \usepackage{array}
+% \end{verbatim}
+% won't load \file{array.sty} twice. It is remotely possible that
+% those are two different files, but as a matter of principles, we
+% will consider that the base file name uniquely identifies a
+% package, regardless of where it lives. This assumption already
+% holds for file hooks, for example, which address the hook to a file
+% by its base name only.
+%
+% We'll use \cs{@expl@@@filehook@set@curr@file@@nNN} to parse the
+% file name and return the \meta{path} and \meta{base+ext} in
+% separate token lists. Further ahead, most operations use
+% \cs{@currname} which doesn't have a path attached to it; only few
+% actions prepend \cs{@currpath} to \cs{@currname} (namely loading,
+% as we have to respect the given path).
+%
+% A file substituiton isn't followed just yet because at this point
+% we are parsing user input, so the file is still what the user
+% asked for, and not the file actually loaded.
+% \begin{macrocode}
+ \@expl@@@filehook@set@curr@file@@nNN{#1.#4}\reserved@a\reserved@b
+ \edef\reserved@c{\def\noexpand\reserved@c####1%
+ \detokenize\expandafter{\expanded{.#4}}%
+ \noexpand\@nil{\def\noexpand\reserved@a{####1}}}\reserved@c
+ \expandafter\reserved@c\reserved@a\@nil
\@pushfilename
- \xdef\@currname{#1}%
+ \xdef\@currname{\string@makeletter\reserved@a}%
+ \xdef\@currpath{\ifx\reserved@b\@empty\else\reserved@b/\fi}%
\global\let\@currext#4%
% \end{macrocode}
% The command \cs{ver@\meta{file}.\meta{ext}} is used to signal that
@@ -1765,9 +1904,11 @@
% \end{macrocode}
% First we take the \meta{name} and \meta{ext} given in the argument
% and check if the file exists, and issue an error otherwise asking
-% for a correction with \cs{@missingfileerror}.
+% for a correction with \cs{@missingfileerror}. For checking if the
+% file exists we use \cs{@currpath} (usually empty) before
+% \cs{@currname}.
% \begin{macrocode}
- \IfFileExists{\@currname.\@currext}{}%
+ \IfFileExists{\@currpath\@currname.\@currext}{}%
{\@missing@onefilewithoptions{#2}}%
% \end{macrocode}
% If \cs{@currname} is empty (the user replied to the ``Enter file
@@ -1784,11 +1925,12 @@
% do the bookkeeping with \cs{@filehook@file@push}
% then call \cs{set@curr@file} to set \cs{@curr@file} (and do any
% required substitution), then actually load the class/package with
-% \cs{load@onefile@withoptions}.
+% \cs{load@onefile@withoptions}. \cs{set@curr@file} also needs the
+% file path.
% \begin{macrocode}
\@disable@packageload@do{\@currname.\@currext}%
{\@expl@@@filehook@file@push@@
- \set@curr@file{\@currname.\@currext}%
+ \set@curr@file{\@currpath\@currname.\@currext}%
\@filehook@set@CurrentFile
% \end{macrocode}
% \changes{v1.3q}{2020/09/06}
@@ -1812,10 +1954,15 @@
\expandafter\@swaptwoargs\expandafter
{\expandafter{\@currpkg@reqd}}%
{% <
+% \end{macrocode}
+% \cs{@currpkg@reqd} doesn't take a path because it is used later to
+% assign \cs[no-index]{opt@...} and \cs[no-index]{ver@...}.
+% \begin{macrocode}
\edef\@currpkg@reqd{\@currname.\@currext}%
\ifx\CurrentFile\CurrentFileUsed
\else
\filename@parse\@curr@file
+ \edef\@currpath{\string@makeletter\filename@area}%
\edef\@currname{\string@makeletter\filename@base}%
\edef\@currext{\string@makeletter\filename@ext}%
\fi
@@ -1864,11 +2011,13 @@
% \end{macro}
%
% \begin{macro}{\@missing@onefilewithoptions}
-% Now the action taken when a file is not found.
+% Now the action taken when a file is not found. Path must be
+% included here as it eventually leads to a file lookup.
% \begin{macrocode}
\def\@missing@onefilewithoptions#1{%
- \@missingfileerror\@currname\@currext
- \xdef\@currname{\@missingfile@area\@missingfile@base}%
+ \@missingfileerror{\@currpath\@currname}\@currext
+ \global\let\@currpath\@missingfile@area
+ \global\let\@currname\@missingfile@base
\global\let\@currext\@missingfile@ext}
% \end{macrocode}
% \end{macro}
@@ -1887,6 +2036,13 @@
% \begin{macrocode}
\def\reserved@a{%
\@pass@ptions\@currext{#1}{\@currname}%
+% \end{macrocode}
+% \changes{v1.3u}{2020/11/20}
+% {Copy option list to the requested package.}
+% \begin{macrocode}
+ \expandafter\let
+ \csname opt@\@currpkg@reqd\expandafter\endcsname
+ \csname opt@\@currname.\@currext\endcsname
\global\expandafter
\let\csname ver@\@currname.\@currext\endcsname\@empty
% \end{macrocode}
@@ -1912,11 +2068,12 @@
\fi
% \end{macrocode}
% Now actually load the file (at this point we are certain it exists,
-% but use \cs{InputIfFileExists} so that file hooks are executed):
+% but use \cs{InputIfFileExists} so that file hooks are executed).
+% \cs{@currpath} is needed here too.
% \begin{macrocode}
- \InputIfFileExists{\@currpkg@reqd}{}%
+ \InputIfFileExists{\@currpath\@currpkg@reqd}{}%
{\@latex@error
- {The \@cls@pkg\space\@currpkg@reqd\space failed to load.}\@ehd}%
+ {The \@cls@pkg\space\@currpkg@reqd\space failed to load}\@ehd}%
%-----------------------------------------
% \end{macrocode}
% In older versions of the code |\@unprocessedoptions| would
@@ -1930,7 +2087,7 @@
% loaded.}
%
% This has changed in 2020. We now use a separate macro per package
-% to avoid interferences in case of nested packages. The whole
+% to avoid interference in case of nested packages. The whole
% code for handling this issue (GitHub 22) was provided by Hironobu
% Yamashita, thanks for that.
% \changes{v1.3k}{2020/04/07}{Use different method to ignore
@@ -2267,7 +2424,7 @@
% \changes{v0.2r}{1993/12/19}{Different message when ignoring a file}
% \changes{v0.3g}{1994/04/11}
% {Add star form,
-% dont write \cs{endinput} at the end of the file.}
+% don't write \cs{endinput} at the end of the file.}
% \changes{v1.0c}{1994/05/11}
% {Add checks for form feed and tab}
% \changes{v1.0m}{1995/04/21}
@@ -2819,7 +2976,7 @@
% YYYYMMDD (if there was one, otherwise the value of
% |\requestedLaTeXdate|) and |\pkgcls@targetlabel| will be
% empty. If there was a request for a named version then
-% |\pkgcls@targetlabel| holds the verion name and
+% |\pkgcls@targetlabel| holds the version name and
% |\pkgcls@targetdate| is set to \texttt{1}.
%
% |\pkgcls@targetdate=0| is used to indicate that there was no
@@ -2906,7 +3063,7 @@
\pkgcls@parse@date@arg{#3}%
% \end{macrocode}
% When determining the correct release to load we keep track of
-% candiates in |\pkgcls@candidate| and initially we don't have any:
+% candidates in |\pkgcls@candidate| and initially we don't have any:
% \begin{macrocode}
\let\pkgcls@candidate\@empty
% \end{macrocode}
@@ -2946,7 +3103,7 @@
%
% But if it starts with an equal sign followed by a date string or
% followed by a version name then this means that we should roll
-% back to the state of the package at tht date or to the version
+% back to the state of the package at that date or to the version
% with the requested name.
%
% If there was no optional argument or the optional argument
@@ -3224,7 +3381,7 @@
%
% \begin{macro}{\pkgcls@show@selection}
% This command records what selection was made. As that is needed
-% in two places (and it is rather lengthly) it was placed in a
+% in two places (and it is rather lengthy) it was placed in a
% separate command. The first argument is the name of the external
% file that is being loaded and is only needed for debugging. The
% second argument is the date that corresponds to this file and it
@@ -3271,19 +3428,20 @@
% A similar error is given if global rollback date and min-date on
% a specific package conflict with each other, but that case is
% happens only once so it is inlined.
+% \changes{v1.3u}{2020/11/09}{Change help text because the package may have
+% existed then --- there is just no rollback data (gh/423).}
% \begin{macrocode}
\def\pkgcls@rollbackdate@error#1{%
\@latex@error{Suspicious rollback date given}%
- {The \@cls@pkg\space'\@currname' claims that it
- came into existence on #1 which\MessageBreak
+ {The \@cls@pkg\space'\@currname' has no rollback data
+ before #1 which\MessageBreak
is after your requested rollback date --- so
- something is wrong here.\MessageBreak
+ something may be wrong here.\MessageBreak
Continue and we use the earliest known release.}}
% \end{macrocode}
% \end{macro}
%
%
-%
% \begin{macro}{\DeclareCurrentRelease}
% This declares the date (and possible name) of the current version
% of a package or class.
@@ -3326,7 +3484,7 @@
\pkgcls@releasedate
\fi
% \end{macrocode}
-% Otherwise the curent file is the right release, so we record that
+% Otherwise the current file is the right release, so we record that
% in the transcript and then carry on.
% \begin{macrocode}
\else
diff --git a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx
index b779d27fb6c..a9357a06b87 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltcntrl.dtx}
- [2014/04/21 v1.0h LaTeX Kernel (program control)]
+ [2020/12/04 v1.0h LaTeX Kernel (program control)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltcntrl.dtx}
@@ -241,7 +241,7 @@
%
% \begin{macro}{\@for}
% \changes{v1.0d}{1995/04/24}
-% {Dont expand second argument with \cs{edef}: /1317 (DPC)}
+% {Don't expand second argument with \cs{edef}: /1317 (DPC)}
% \begin{macrocode}
\long\def\@for#1:=#2\do#3{%
\expandafter\def\expandafter\@fortmp\expandafter{#2}%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx
index 5dc1c8866d7..121979116c9 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltcounts.dtx}
- [2018/04/22 v1.1l LaTeX Kernel (Counters)]
+ [2020/12/04 v1.1l LaTeX Kernel (Counters)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltcounts.dtx}
@@ -630,7 +630,7 @@
% always selects the correct branch in an |\ifmmode| switch with
% the usual disadvantage of ruining kerning. For the application we
% use it for here that shouldn't matter. The alternative would be
-% to mimic |\IeC| from \textsf{inputenc} but then it wil have the
+% to mimic |\IeC| from \textsf{inputenc} but then it will have the
% disadvantage of choosing the wrong branch if appearing at the
% beginning of an alignment cell. However, users of e\TeX\ will be
% pleasantly surprised to get the best of both worlds and no bad
diff --git a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx
index 569c9db4df9..aff93510f97 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdefns.dtx}
- [2020/09/25 v1.5n LaTeX Kernel (definition commands)]
+ [2020/11/25 v1.5o LaTeX Kernel (definition commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdefns.dtx}
@@ -103,7 +103,7 @@
% \end{macrocode}
%
%
-% \subsection{Initex initialisations}
+% \subsection{Initex initializations}
%
% \task{???}{This section needs extension}
%
@@ -385,8 +385,19 @@
% \begin{macro}{\@carcube}
% |\@carcube T1 ... Tn\@nil| = |T1| |T2| |T3| , $n > 3$
% \changes{v1.5k}{2020/08/19}{Made \cs{long} for \cs{NewCommandCopy}}
+% \changes{v1.5o}{2020/11/25}{Added missing latexrelease entry}
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@carcube}{Make \@carcube long}%
+%<*2ekernel|latexrelease>
\long\def\@carcube#1#2#3#4\@nil{#1#2#3}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{\@carcube}{Undo: Make \@carcube long}%
+%<latexrelease>\def\@carcube#1#2#3#4\@nil{#1#2#3}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -847,7 +858,7 @@
% |\CheckCommand| takes the same arguments as |\newcommand|. If
% the command already exists, with the same definition, then
% nothing happens, otherwise a warning is issued. Useful for
-% checking the current state befor a macro package starts
+% checking the current state before a macro package starts
% redefining things. Currently two macros are considered to have
% the same definition if they are the same except for different
% default arguments. That is, if the old definition was:
@@ -1206,7 +1217,7 @@
% top-level definition to have the right kind of structure, but
% this is somewhat problematical as we then have to distinguish
% between \cs{long} macros and others and also take into account
-% that sometimes the top-level is deliberately dones manually (like
+% that sometimes the top-level is deliberately done manually (like
% with \cs{begin}).
%
% The macro firstly checks if the control sequence in question exists
@@ -1352,12 +1363,12 @@
% \end{macro}
%
% \begin{macro}{\kernel@make@fragile}
-% The opposite of |\MakeRobust| execpt that it doesn't do many
+% The opposite of |\MakeRobust| except that it doesn't do many
% checks as it is internal to the kernel. Why does one want such a
% thing?
% Only for compatibility reasons if \texttt{latexrelease} requests
% a rollback of the kernel. For this reason we pretend that this
-% command existed in all earler versions of \LaTeX{} i.e., we are
+% command existed in all earlier versions of \LaTeX{} i.e., we are
% not rolling it back since we need it precisely then. But we have
% to get it into the \texttt{latexrelease} file so that a roll
% forward is possible too.
@@ -1441,7 +1452,7 @@
% robust commands. This code will then be used to test if a command is
% robust, considered the different types of robustness, and then either copy
% that definition, if \cs{DeclareCommandCopy} (or similar) is used, or show
-% the definition of the command, if \cs{ShowCommmand} is used.
+% the definition of the command, if \cs{ShowCommand} is used.
%
% \begin{macro}{\robust@command@act}
% \changes{v1.5k}{2020/08/19}{Made \cs{robust@command@act}
@@ -1700,7 +1711,7 @@
% \begin{macro}{\@showcommandlisthook}
% The initial definition of \cs{@showcommandlisthook} contains the same tests
% as used for copying, but \cs{@show@...} commands instead of \cs{@copy@...}.
-% Same as before, it is initialised to cope with \cs{DeclareRobustCommand} and
+% Same as before, it is initialized to cope with \cs{DeclareRobustCommand} and
% \cs{newcommand} with optional arguments.
% \begin{macrocode}
\def\@showcommandlisthook{%
@@ -2272,7 +2283,7 @@
%
% The primitive |\-| command adds a discretionary hyphen using the
% current font's |\hyphenchar|. Monospace fonts are usually declared
-% with |\hyphenchar| set to $-1$ to suppress hyhenation.
+% with |\hyphenchar| set to $-1$ to suppress hyphenation.
%
% \LaTeX, from \LaTeX2.09 in 1986 defined |\-| by
% \begin{verbatim}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx
index 3abd49aced5..0e85f0a4052 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -37,7 +37,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdirchk.dtx}
- [2020/08/21 v1.3a LaTeX Kernel (System Dependent Parts)]
+ [2020/12/05 v1.3a LaTeX Kernel (System Dependent Parts)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdirchk.dtx}
@@ -63,7 +63,7 @@
% {Add unstripped module,
% so that dircheck.dtx may be used with initex}
% \changes{v1.0a}{1994/03/08}
-% {Reorganise driver module into `new style'}
+% {Reorganize driver module into `new style'}
% \changes{v1.0b}{1994/03/12}
% {Change name from dircheck.dtx}
% \changes{v1.0b}{1994/03/12}
@@ -81,13 +81,13 @@
% \changes{v1.0w}{1998/08/17}{(RmS) Documentation improvements.}
%
%
-% \section{\LaTeX\ System Dependent Initialisations}
+% \section{\LaTeX\ System Dependent Initializations}
%
% \changes{v0.2g}{1994/01/21}
-% {Improve documentation, reorganise docstrip module}
+% {Improve documentation, reorganize docstrip module}
%
% This file implements the semi-automatic determination of various
-% system dependent parts of the initialisation. The actual definitions
+% system dependent parts of the initialization. The actual definitions
% may be placed in a file |texsys.cfg|. Thus for operating systems for
% which the tests here do not result in acceptable settings, a `hand
% written' |texsys.cfg| may be produced.
@@ -153,7 +153,7 @@
%
% \DescribeMacro{\@TeXversion}
% \changes{v1.0f}{1994/05/23}{Document \cs{@TeXversion}}
-% |\@TeXversion| is now set automatically by the initialisation tests
+% |\@TeXversion| is now set automatically by the initialization tests
% in this file. You should not need to set it in |texsys.cfg|, however
% the following documentation is left for information. \LaTeX\ does
% not set this variable exactly, the automatic tests set it to:\\
@@ -206,7 +206,7 @@
%
% \StopEventually{}
%
-% \section{Initialisation}
+% \section{Initialization}
% As this file is read at a very early stage, some definitions that
% are normally considered to be part of the format must be made here.
%
@@ -481,7 +481,7 @@
%
% Normally one would not need to define this macro in |texsys.cfg| as
% the automatic tests can supply parsers that work with UNIX and VMS
-% syntax, as well as a basic parser that willcover many other cases.
+% syntax, as well as a basic parser that will cover many other cases.
% However some operating systems may need a `hand produced' parser
% in which case it should be defined in this file.
%
@@ -794,7 +794,7 @@
% to supply the correct information to the prompts. Now the interaction
% is omitted. After the format is made the installer can attempt to run
% the test document |ltxcheck.tex| through \LaTeXe. This will check,
-% amongst other things, whether |texsys.cfg| will need to be edited and
+% among other things, whether |texsys.cfg| will need to be edited and
% the format remade.
%
% \begin{macro}{\input@path}
diff --git a/Master/texmf-dist/source/latex-dev/base/lterror.dtx b/Master/texmf-dist/source/latex-dev/base/lterror.dtx
index 9a606ea8c1d..91d221bced3 100644
--- a/Master/texmf-dist/source/latex-dev/base/lterror.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/lterror.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
index 4100da79c28..b642fd72a39 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2020
+% Copyright (C) 2019-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltexpl.dtx}
- [2020/09/06 v1.2f LaTeX Kernel (expl3-dependent code)]
+ [2020/12/18 v1.2h LaTeX Kernel (expl3-dependent code)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltexpl.dtx}
@@ -72,16 +72,45 @@
% {Define a local version of some \LaTeXe{} basic macros to support
% package loading}
%
+% \begin{macro}{\@kernel@after@enddocument,
+% \@kernel@after@enddocument@afterlastpage}
+% These two kernel hooks are used by the shipout code. They are
+% defined earlier here because the \pkg{lthooks} code adds material
+% to them.
+% \changes{v1.2h}{2020/12/18}
+% {Define kernel \cs{enddocument} hooks early}
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
+\let\@kernel@after@enddocument\@empty
+\let\@kernel@after@enddocument@afterlastpage\@empty
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
+%<latexrelease>\let\@kernel@after@enddocument\@undefined
+%<latexrelease>\let\@kernel@after@enddocument@afterlastpage\@undefined
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
+% \end{macrocode}
+% \end{macro}
+%
% First define some blank commands, so that in case something goes wrong while
% loading \textsf{expl3}, we won't get strange \texttt{Undefined control
% sequence} errors.
% \begin{macrocode}
-%<*2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\@expl@sys@load@backend@@}{Roll forward support}%
\def\@expl@sys@load@backend@@{}
\def\@expl@push@filename@@{}
\def\@expl@push@filename@aux@@{}
\def\@expl@pop@filename@@{}
-%</2ekernel>
+%<latexrelease>\EndIncludeInRelease
+%</2ekernel|latexrelease>
% \end{macrocode}
%
% \changes{v1.2d}{2020/07/08}
@@ -183,9 +212,20 @@
\errmessage{LaTeX requires expl3}%
\batchmode \read -1 to \reserved@a
%</2ekernel>
+% \end{macrocode}
+% We do not support a roll forward across 2019. You need to start
+% with 2019 if you want to get to 2020 or beyond.
+% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
%<*latexrelease>
- \@latex@error{LaTeX requires expl3}\@ehd
- \@gobble
+ \@latex@warning@no@line
+ {You need a format that already contains a recent\MessageBreak
+ expl3 as part of the kernel, e.g. at least a kernel\MessageBreak
+ from 2019 to roll forward to that date!\MessageBreak
+ --- I'm giving up!\MessageBreak\MessageBreak
+ Note that manually loading the expl3 package\MessageBreak
+ from your distribution is not enough}%
+ \@@end % die
%</latexrelease>
}%
{%
@@ -222,9 +262,39 @@
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
%
+%
+% Starting with 2020-10 the kernel contains most of the
+% \texttt{xparse} interfaces loaded above. These interfaces are
+% later used to define various user command. However, if somebody
+% with an earlier installation tries to roll forward (using a
+% \texttt{latexrelease} package from a newer release) this will not
+% work as the earlier kernel doesn't contain commands such as
+% \cs{NewDocumentCommand}.
+%
+% We therefore add code into \texttt{latexrelease.sty} to load the
+% \texttt{xparse} package of the current installation instead. this
+% may not work if the installation is really old, but roll forward
+% can't do miracles.
+%
+% If the kernel is 2020-10 or later \cs{NewDocumentCommand} is
+% already known (whether or not you roll forward or back) so
+% nothing happens, but if you start from am earlier kernel the
+% \texttt{xparse} package gets loaded by \texttt{latexrelease}.
+% \changes{v1.2g}{2020/11/24}{Load xparse in latexrelease if needed (gh/434)}
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\NewDocumentCommand}{Emergency loading xparse}%
+%<latexrelease>
+%<latexrelease>\ifdefined\NewDocumentCommand \else
+%<latexrelease> \RequirePackage{xparse}
+%<latexrelease>\fi
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
% \subsection{Using expl3 code}
%
-% In order to ease the implemantation of some new features in
+% In order to ease the implementation of some new features in
% \LaTeXe\ we may (temporarily) use some coding based on the
% \pkg{expl3}-code.
% Such macros will eventually vanish and may be changed
@@ -242,9 +312,6 @@
% if that \pkg{expl3} command is needed in places that are others
% coded in \LaTeXe{} conventions.
%
-% \begin{macrocode}
-\ExplSyntaxOn
-% \end{macrocode}
%
% In this file, each release of LaTeX adds an \cs{IncludeInRelease}
% block, in which the macros copied for that release were defined.
@@ -259,8 +326,16 @@
% redefinitions.
%
% \begin{macrocode}
-%<latexrelease>\IncludeInRelease{2020/10/01}{expl3~2020-10-01}%
-%<latexrelease> {expl3~macros~added~for~the~2020-10-01~release}%
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@expl@cs@to@str@@N}%
+%<latexrelease> {expl3 macros added for the 2020-10-01 release}%
+% \end{macrocode}
+%
+% The expl3 activation needs to be inside the release guards as
+% otherwise rolling forward is broken in old kernels that do not
+% have expl3 loaded.
+% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
+\ExplSyntaxOn
% \end{macrocode}
%
% \changes{v1.2e}{2020/08/19}
@@ -290,21 +365,27 @@
% \end{macrocode}
%
% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+%
+% Here we can't assume that expl3 is available. It will be if we
+% roll back but if this code is executed rolling forward it needs
+% to be pure 2e.
+% \changes{v1.2g}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
%<latexrelease>\EndIncludeInRelease
-%<latexrelease>\IncludeInRelease{0000/00/00}{expl3~2020-10-01}%
-%<latexrelease> {expl3~macros~added~for~the~2020-10-01~release}%
-%<latexrelease>\cs_undefine:N \@expl@cs@to@str@@N
-%<latexrelease>\cs_undefine:N \@expl@str@if@eq@@nnTF
-%<latexrelease>\cs_undefine:N \@expl@cs@prefix@spec@@N
-%<latexrelease>\cs_undefine:N \@expl@cs@argument@spec@@N
-%<latexrelease>\cs_undefine:N \@expl@cs@replacement@spec@@N
-%<latexrelease>\cs_undefine:N \@expl@str@map@function@@NN
+%<latexrelease>\IncludeInRelease{0000/00/00}{\@expl@cs@to@str@@N}%
+%<latexrelease> {expl3 macros added for the 2020-10-01 release}%
+%<latexrelease>\let \@expl@cs@to@str@@N \@undefined
+%<latexrelease>\let \@expl@str@if@eq@@nnTF \@undefined
+%<latexrelease>\let \@expl@cs@prefix@spec@@N \@undefined
+%<latexrelease>\let \@expl@cs@argument@spec@@N \@undefined
+%<latexrelease>\let \@expl@cs@replacement@spec@@N \@undefined
+%<latexrelease>\let \@expl@str@map@function@@NN \@undefined
%<latexrelease>\EndIncludeInRelease
%</2ekernel|latexrelease>
% \end{macrocode}
%
-% \begin{macrocode}
-\ExplSyntaxOff
-% \end{macrocode}
%
% \Finale
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
index ecb499f3475..b5b5de629a6 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%%
-%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%
% This file is part of the LaTeX base system.
@@ -31,8 +31,8 @@
%%% From File: ltfilehook.dtx
%
% \begin{macrocode}
-\providecommand\ltfilehookversion{v1.0c}
-\providecommand\ltfilehookdate{2020/10/18}
+\providecommand\ltfilehookversion{v1.0e}
+\providecommand\ltfilehookdate{2021/01/07}
% \end{macrocode}
%
%<*driver>
@@ -75,7 +75,7 @@
% \ltfilehookversion\ dated \ltfilehookdate, \copyright\ \LaTeX\
% Project.}}
%
-% \author{Frank Mittelbach}
+% \author{Frank Mittelbach, Phelype Oleinik, \LaTeX{} Project Team}
%
% \maketitle
%
@@ -339,9 +339,12 @@
%
% \subsection{High-level interfaces for \LaTeX{}}
%
-% We do not provide any high-level \LaTeX{} commands (like
-% \pkg{filehook} or \pkg{scrlfile} do) but think that for package
-% writers the commands from for hook management are sufficient.
+% We do not provide any additional wrappers around the hooks (like
+% \pkg{filehook} or \pkg{scrlfile} do) because we believe that for
+% package writers the high-level commands from the hook management,
+% e.g., \cs{AddToHook}, etc.\
+% are sufficient and in fact easier to work with, given that the hooks
+% have consistent naming conventions.
%
%
%
@@ -371,7 +374,7 @@
% \em
% Please do not misuse this functionality and replace a file with
% another unless if really needed and only if the new version is
-% implementating the same functionality as the original one!
+% implementing the same functionality as the original one!
% \end{quote}
% \end{function}
%
@@ -514,11 +517,10 @@
% \begin{macro}{
% \@@_file_parse_full_name:nN,
% \@@_full_name:nn,
-% \@@_set_curr_file_assign:nnnNN
% }
% A utility macro to trigger \pkg{expl3}'s file-parsing and lookup,
% and return a normalized representation of the file name. If the
-% queried file doesn't exist, no normalisation takes place.
+% queried file doesn't exist, no normalization takes place.
% The output of \cs{@@_file_parse_full_name:nN} is passed on to the
% |#2|---a 3-argument macro that takes the \meta{path}, \meta{base},
% and \meta{ext} parts of the file name.
@@ -615,6 +617,62 @@
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% When rolling forward the following expl3 functions may not be defined.
+% If we roll back the code does nothing.
+% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\file_parse_full_name_apply:nN}{Roll forward help}%
+%<latexrelease>
+%<latexrelease>\ExplSyntaxOn
+%<latexrelease>\cs_if_exist:NF\file_parse_full_name_apply:nN
+%<latexrelease>{
+%<latexrelease>\cs_new:Npn \file_parse_full_name_apply:nN #1
+%<latexrelease> {
+%<latexrelease> \exp_args:Ne \__file_parse_full_name_auxi:nN
+%<latexrelease> { \__kernel_file_name_sanitize:n {#1} }
+%<latexrelease> }
+%<latexrelease>\cs_new:Npn \__file_parse_full_name_auxi:nN #1
+%<latexrelease> {
+%<latexrelease> \__file_parse_full_name_area:nw { } #1
+%<latexrelease> / \s__file_stop
+%<latexrelease> }
+%<latexrelease>\cs_new:Npn \__file_parse_full_name_area:nw #1 #2 / #3 \s__file_stop
+%<latexrelease> {
+%<latexrelease> \tl_if_empty:nTF {#3}
+%<latexrelease> { \__file_parse_full_name_base:nw { } #2 . \s__file_stop {#1} }
+%<latexrelease> { \__file_parse_full_name_area:nw { #1 / #2 } #3 \s__file_stop }
+%<latexrelease> }
+%<latexrelease>\cs_new:Npn \__file_parse_full_name_base:nw #1 #2 . #3 \s__file_stop
+%<latexrelease> {
+%<latexrelease> \tl_if_empty:nTF {#3}
+%<latexrelease> {
+%<latexrelease> \tl_if_empty:nTF {#1}
+%<latexrelease> {
+%<latexrelease> \tl_if_empty:nTF {#2}
+%<latexrelease> { \__file_parse_full_name_tidy:nnnN { } { } }
+%<latexrelease> { \__file_parse_full_name_tidy:nnnN { .#2 } { } }
+%<latexrelease> }
+%<latexrelease> { \__file_parse_full_name_tidy:nnnN {#1} { .#2 } }
+%<latexrelease> }
+%<latexrelease> { \__file_parse_full_name_base:nw { #1 . #2 } #3 \s__file_stop }
+%<latexrelease> }
+%<latexrelease>\cs_new:Npn \__file_parse_full_name_tidy:nnnN #1 #2 #3 #4
+%<latexrelease> {
+%<latexrelease> \exp_args:Nee #4
+%<latexrelease> {
+%<latexrelease> \str_if_eq:nnF {#3} { / } { \use_none:n }
+%<latexrelease> #3 \prg_do_nothing:
+%<latexrelease> }
+%<latexrelease> { \use_none:n #1 \prg_do_nothing: }
+%<latexrelease> {#2}
+%<latexrelease> }
+%<latexrelease>}
+%<latexrelease>\ExplSyntaxOff
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
%
@@ -643,6 +701,8 @@
% kernel we do this only now and not in \texttt{ltfiles}.
%
% \begin{macro}{\InputIfFileExists}
+% \begin{macro}{\@input@file@exists@with@hooks}
+% \begin{macro}{\unqu@tefilef@und}
% \cs{InputIfFileExists} loads any file if it is available so we
% have to add the hooks \texttt{file/before} and
% \texttt{file/after} in the right places. If the file doesn't
@@ -653,19 +713,38 @@
%<latexrelease> {\InputIfFileExists}{Hook management (files)}%
%<*2ekernel|latexrelease>
% \end{macrocode}
-%
+%
% \begin{macrocode}
\let\InputIfFileExists\@undefined
\DeclareRobustCommand \InputIfFileExists[2]{%
\IfFileExists{#1}%
{%
- \@expl@@@filehook@file@push@@
- \@filehook@set@CurrentFile
+ \@expl@@@filehook@file@push@@
+ \@filehook@set@CurrentFile
+% \end{macrocode}
+% We pre-expand \cs{@filef@und} so that in case another file is
+% loaded in the true branch of \cs{InputIfFileExists}, these don't
+% change their value meanwhile. This isn't a worry with
+% \cs[no-index]{CurrentFile...} because they are kept in a stack.
+%
+% \changes{v1.0d}{2020/11/20}
+% {Move loading to \cs{@input@file@exists@with@hooks} and expand
+% \cs{@filef@und} to avoid getting the wrong file name in the case of
+% a substitution.}
+% \begin{macrocode}
+ \expandafter\@swaptwoargs\expandafter
+ {\expandafter\@input@file@exists@with@hooks
+ \expandafter{\@filef@und}}%
+ {#2}%
+ \@expl@@@filehook@file@pop@@
+ }%
+}
+\def\@input@file@exists@with@hooks#1{%
% \end{macrocode}
% If the file exists then \cs{CurrentFile} holds its name. But we
% can't rely on that still being true after the file has been
% processed. Thus for using the name in the file hooks we need to
-% preserve the name and then restored it for the
+% preserve the name and then restore it for the
% \texttt{file/after/...} hook.
%
% The hook always refers to the file requested by the user. The hook
@@ -682,34 +761,54 @@
% the file name and extension are returned so that file hooks can
% refer to the file by their name only. The path to the file is
% returned in \cs{CurrentFilePath}.
-% \begin{macrocode}
- \edef\reserved@a{\@filef@und
- \@expl@@@filehook@file@pop@assign@@nnnn
- {\CurrentFilePathUsed}%
- {\CurrentFileUsed}%
- {\CurrentFilePath}%
- {\CurrentFile}}%
- \expandafter\@swaptwoargs\expandafter
- {\reserved@a}%
- {%
- #2%
- \@addtofilelist{#1}%
- \UseHook{file/before}%
+% \changes{v1.0e}{2021/01/07}{Restore \cs[no-index]{CurrentFile(Path)(Used)}
+% after the input (gh/464)}
+% \begin{macrocode}
+ \edef\reserved@a{%
+ \@expl@@@filehook@file@pop@assign@@nnnn
+ {\CurrentFilePathUsed}%
+ {\CurrentFileUsed}%
+ {\CurrentFilePath}%
+ {\CurrentFile}}%
+ \expandafter\@swaptwoargs\expandafter{\reserved@a}%
+% \end{macrocode}
+%
+% Before adding to the file list we need to make all (letter) characters
+% catcode~11, because several packages use constructions like
+% \begin{verbatim}
+% \filename@parse{<filename>}
+% \ifx\filename@ext\@clsextension
+% ...
+% \fi
+% \end{verbatim}
+% and that doesn't work if \cs{filename@ext} is \cs{detokenize}d.
+% Making \cs{@clsextension} a string doesn't help much because some
+% packages define their own \cs[no-index]{<prefix>@someextension} with
+% normal catcodes. This is not entirely correct because packages loaded
+% (somehow) with catcode~12 alphabetic tokens (say, as the result of
+% a \cs{string} or \cs{detokenize} command, or from a \TeX{} string like
+% \cs{jobname}) will have these character tokens incorrectly turned into
+% letter tokens. This however is rare, so we'll go for the all-letters
+% approach (grepping the packages in \TeX{} Live didn't bring up any
+% obvious candidate for breaking with this catcode change).
+% \begin{macrocode}
+ {\edef\reserved@a{\unqu@tefilef@und#1\@nil}%
+ \@addtofilelist{\string@makeletter\reserved@a}%
+ \UseHook{file/before}%
% \end{macrocode}
% The current file name is available in \cs{CurrentFile} so we use
% that in the specific hook.
% \begin{macrocode}
- \UseHook{file/before/\CurrentFile}%
- \@@input
- }%
+ \UseHook{file/before/\CurrentFile}%
+ \@@input #1% <- trailing space comes from \@filef@und
+ }%
% \end{macrocode}
-% And it is restored here so we can use it once more.
+% And here, \cs{CurrentFile} is restored
+% (by \cs{@expl@@@filehook@file@pop@assign@@nnnn}) so we can use it once more.
% \begin{macrocode}
- \UseHook{file/after/\CurrentFile}%
- \UseHook{file/after}%
- \@expl@@@filehook@file@pop@@
- }%
-}
+ \UseHook{file/after/\CurrentFile}%
+ \UseHook{file/after}}
+\def\unqu@tefilef@und"#1" \@nil{#1}
%<latexrelease>\EndIncludeInRelease
%</2ekernel|latexrelease>
% \end{macrocode}
@@ -737,6 +836,8 @@
%<latexrelease> {%
%<latexrelease> \expandafter\@swaptwoargs\expandafter
%<latexrelease> {\@filef@und}{#2\@addtofilelist{#1}\@@input}}}
+%<latexrelease>\let\@input@file@exists@with@hooks\@undefined
+%<latexrelease>\let\unqu@tefilef@und\@undefined
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
%
@@ -746,10 +847,14 @@
%<latexrelease>\long\def \InputIfFileExists#1#2{%
%<latexrelease> \IfFileExists{#1}%
%<latexrelease> {#2\@addtofilelist{#1}\@@input \@filef@und}}
+%<latexrelease>\let\@input@file@exists@with@hooks\@undefined
+%<latexrelease>\let\unqu@tefilef@und\@undefined
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
%
@@ -772,8 +877,8 @@
%
%
% \begin{macro}{\@@_subst_add:nn,\@@_subst_remove:n,
-% \@@_subst_file_normalize:n,\@@_subst_empty_name_chk:NN}
-% \cs{@@_substitution_lthooadd:nn} declares a file substitution by
+% \@@_subst_file_normalize:Nn,\@@_subst_empty_name_chk:NN}
+% \cs{@@_subst_add:nn} declares a file substitution by
% doing a (global) definition of the form
% |\def|\cs{@file-subst@\meta{file}}|{|\meta{replacement}|}|.
% The file names are properly sanitised, and normalized with the same
@@ -787,8 +892,12 @@
\group_begin:
\cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
\int_set:Nn \tex_escapechar:D { -1 }
- \cs_gset:cpx { @file-subst@ \@@_subst_file_normalize:n {#1} }
- { \@@_subst_file_normalize:n {#2} }
+ \cs_gset:cpx
+ {
+ @file-subst@
+ \@@_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
+ { \@@_subst_file_normalize:Nn \@@_file_name_compose:nnn {#2} }
\group_end:
}
\cs_new_protected:Npn \@@_subst_remove:n #1
@@ -796,14 +905,18 @@
\group_begin:
\cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
\int_set:Nn \tex_escapechar:D { -1 }
- \cs_undefine:c { @file-subst@ \@@_subst_file_normalize:n {#1} }
+ \cs_undefine:c
+ {
+ @file-subst@
+ \@@_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
\group_end:
}
-\cs_new:Npn \@@_subst_file_normalize:n #1
+\cs_new:Npn \@@_subst_file_normalize:Nn #1 #2
{
\exp_after:wN \@@_subst_empty_name_chk:NN
\cs:w \exp_after:wN \cs_end:
- \cs:w \@@_file_parse_full_name:nN {#1} \use_ii_iii:nnn \cs_end:
+ \cs:w \@@_file_parse_full_name:nN {#2} #1 \cs_end:
}
\cs_new:Npn \@@_subst_empty_name_chk:NN #1 #2
{ \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: }
@@ -847,12 +960,18 @@
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
%
+% We are not fully rolling back the file substitutions in case a
+% rollback encounters a package that contains them, but is itself
+% not setup for rollback. So we just bypass them and hope for the
+% best.
+% \changes{v1.0d}{2020/12/04}{Don't drop file substitution commands on
+% rollback}
% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease> {\declare@file@substitution}{File substitution}%
%<latexrelease>
-%<latexrelease>\let \declare@file@substitution \@undefined
-%<latexrelease>\let \undeclare@file@substitution \@undefined
+%<latexrelease>\let \declare@file@substitution \@gobbletwo
+%<latexrelease>\let \undeclare@file@substitution \@gobble
%<latexrelease>
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
@@ -878,7 +997,7 @@
% A file name is built using
% \cs{expandafter}\cs{string}\cs{csname}\meta{filename}\cs{endcsname}
% to avoid expanding utf8 active characters. The \cs{csname} expands
-% the normalisation machinery and the routine to resolve a file
+% the normalization machinery and the routine to resolve a file
% substitution, returning a control sequence with the same name as the
% file.
%
@@ -908,7 +1027,7 @@
% actual loaded file. \cs{@curr@file} is resolved first, to check if
% a substitution happens. If it doesn't,
% \cs{@expl@@@filehook@if@file@replaced@@TF} short-cuts and just copies
-% \cs{@curr@file}, otherwise the full normalisation procedure is
+% \cs{@curr@file}, otherwise the full normalization procedure is
% executed.
%
% At this stage the file name is parsed and normalized, but if the
@@ -929,6 +1048,7 @@
\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file@reqd \fi}%
{\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file \fi
\global\let\@curr@file@reqd\@curr@file}%
+ \@expl@@@filehook@clear@replacement@flag@@
\endgroup}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
@@ -1059,7 +1179,7 @@
% \begin{macro}{\@@_resolve_file_subst:w}
% \begin{macro}{\@@_normalize_file_name:w}
% \begin{macro}{\@@_file_name_compose:nnn}
-% Start by sanitising the file with \cs{@@_file_parse_full_name:nN}
+% Start by sanitizing the file with \cs{@@_file_parse_full_name:nN}
% then do \cs{@@_file_subst_begin:nnn}\Arg{path}\Arg{name}\Arg{ext}.
% \begin{macrocode}
%</2ekernel>
@@ -1079,18 +1199,25 @@
%
% \begin{macro}{flag @@_file_replaced}
% \begin{macro}{\@@_if_file_replaced:TF}
+% \begin{macro}{\@@_clear_replacement_flag:}
% Since the file replacement is done expandably in a \cs{csname}, use
% a flag to remember if a substitution happened. We use this in
% \cs{set@curr@file} to short-circuit some of it in case no
% substitution happened (by far the most common case, so it's worth
-% optimising).
+% optimizing). The flag raised during the file substitution algorithm
+% must be explicitly cleared after the \cs{@@_if_file_replaced:TF}
+% conditional is no longer needed, otherwise further uses of
+% \cs{@@_if_file_replaced:TF} will wrongly return true.
% \begin{macrocode}
\flag_new:n { @@_file_replaced }
\cs_new:Npn \@@_if_file_replaced:TF #1 #2
- { \flag_if_raised:nTF { @@_file_replaced } {#1} {#2} }
+ { \flag_if_raised:nTF { @@_file_replaced } {#1} {#2} }
+\cs_new_protected:Npn \@@_clear_replacement_flag:
+ { \flag_clear:n { @@_file_replaced } }
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@@_file_subst_begin:nnn}
% First off, start by checking if the current file ($\meta{name} +
@@ -1140,8 +1267,8 @@
% the macro below, \cs{@@_file_subst_loop:cc} is called with
% \cs[no-index]{@file-subst@\meta{file}} and
% \cs[no-index]{@file-subst@\cs[no-index]{@file-subst@\meta{file}}};
-% that is, the substitution of \meta{file} and the substution of that
-% substution: the Tortoise walks one step while the Hare walks two.
+% that is, the substitution of \meta{file} and the substitution of that
+% substitution: the Tortoise walks one step while the Hare walks two.
%
% Within \cs{@@_file_subst_loop:NN} the two substitutions are
% compared, and if they lead to the same file it means that there is
@@ -1343,7 +1470,12 @@
\cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF
\__filehook_if_file_replaced:TF
% \end{macrocode}
-%
+%
+% \begin{macrocode}
+\cs_new_eq:NN \@expl@@@filehook@clear@replacement@flag@@
+ \__filehook_clear_replacement_flag:
+% \end{macrocode}
+%
% \begin{macrocode}
\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
\__filehook_drop_extension:N
@@ -1368,10 +1500,22 @@
% \begin{macrocode}
\ExplSyntaxOff
% \end{macrocode}
-%
+%
+% This one specifically has to be undefined because it is left over in
+% the input stream from \cs{InputIfFileExists} and executed when
+% \pkg{latexrelease} is loaded. It cannot be \cs{let} to \cs{@undefined}
+% otherwise it would error as well, so it is \cs{let} to \cs{relax} to
+% be silently ignored when loading \cs{latexrelease}.
+% \changes{v1.0e}{2021/01/07}{Added rollback for this case to avoid
+% spurious errors (part of gh/463)}
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}%
+%<latexrelease>\let\@expl@@@filehook@file@pop@@\relax
+%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
%
@@ -1410,7 +1554,7 @@
% \end{macro}
%
% \begin{macro}{\@@_log_file_record:n}
-% This macro is responsible for increasing and decresing the file
+% This macro is responsible for increasing and decreasing the file
% nesting level, as well as printing to the log. The argument is
% either |STOPTART| or |STOP| and the action it takes on the nesting
% integer depends on that.
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx
index 99be77c8449..f91dfe32aaf 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfiles.dtx}
- [2020/10/04 v1.2j LaTeX Kernel (File Handling)]
+ [2020/12/04 v1.2j LaTeX Kernel (File Handling)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfiles.dtx}
@@ -334,7 +334,7 @@
% locally in the output routine. In particular it allows hyphenation
% in the page head even if the page break happens in verbatim.
% If this has already been set by a package, set to the value of |\language|
-% at this spoint.
+% at this point.
% \changes{v1.1n}{2017/03/10}{Save language default}
% \begin{macrocode}
\ifx\document@default@language\m@ne
@@ -456,7 +456,7 @@
% harmless), however, in more complicated scenarios where several
% full documents are combined to a single document it might get
% applied several times with harmful effects. We therefore
-% explicitly drop it at this point. the coing is somewhat obscure
+% explicitly drop it at this point. the coding is somewhat obscure
% due to the name of the macro which requires constructing.
% \begin{macrocode}
\edef \@kernel@after@begindocument@before {%
@@ -710,15 +710,15 @@
\@latex@error{\string\include\space cannot be nested}\@eha
\else
% \end{macrocode}
-% Here the normalisation will add |.tex| for all files, (it uses the
-% the same normalisation as the hooks), so we need to remove that
+% Here the normalization will add |.tex| for all files, (it uses
+% the same normalization as the hooks), so we need to remove that
% manually. \cs{@strip@tex@ext} does that.
% \begin{macrocode}
\set@curr@file{#1}%
\edef\@curr@file{\@strip@tex@ext\@curr@file}%
% \end{macrocode}
% For historical reasons \cs{@include} expects an argument
-% delimited by a space. This is kept (though uncessary now) to avoid
+% delimited by a space. This is kept (though unnecessary now) to avoid
% errors in other packages that use \cs{@include} directly.
% \begin{macrocode}
\expandafter\@include\expandafter{\@curr@file} % deliberate space
@@ -726,13 +726,13 @@
% \end{macrocode}
%
% Here in \cs{includeonly} we also need to strip |.tex| after
-% normalisation:
+% normalization:
% \begin{macrocode}
\def\includeonly#1{%
\@partswtrue
% \end{macrocode}
% Because the argument to |\includeonly| is a comma-separated list
-% of filenames where there may be comma's precedeing some of the
+% of filenames where there may be comma's preceding some of the
% filenames or trailing them. Therefore we need to take the list
% apart, remove the unwanted spaces while leaving the spaces
% \emph{in} the filenames intact.
@@ -996,7 +996,7 @@
% A side effect of the new code is that we will see quotes around
% file name displays where there haven't been any before.
%
-% For compatibilty with existing code using |{abc}.tex| or |{one.two}.png|
+% For compatibility with existing code using |{abc}.tex| or |{one.two}.png|
% an initial brace group is discarded before expansion and |\string| is applied
% The content of the brace group is discarded. This means that a leading space
% will be lost unless protected (by |{ }| or |" "| or |\space|) but filenames
@@ -1058,7 +1058,7 @@
%
% \changes{v1.2a}{2019/07/01}{Support UTF-8}
% \changes{v1.2b}{2019/08/27}{Make command robust}
-% \changes{v1.2d}{2019/10/26}{dont quote name}
+% \changes{v1.2d}{2019/10/26}{don't quote name}
% \begin{macrocode}
\DeclareRobustCommand\IfFileExists[1]{%
\set@curr@file{#1}%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
index aa4219723af..ee45ea5588f 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfinal.dtx}
- [2020-09-26 v2.2j LaTeX Kernel (Final Settings)]
+ [2021/01/06 v2.2l LaTeX Kernel (Final Settings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfinal.dtx}
@@ -57,7 +57,7 @@
%
%
% \section{Final settings}
-% This section contains the final settings for \LaTeX. It initialises
+% This section contains the final settings for \LaTeX. It initializes
% some debugging and typesetting parameters, sets the default
% |\catcode|s and uc/lc codes, and inputs the hyphenation file.
%
@@ -90,6 +90,9 @@
% \changes{v2.0s}{2016/10/15}{Tidy up status of char 127}
% \changes{v2.2i}{2020/08/21}{Integration of new hook management interface}
%
+%
+%
+%
% \subsection{Debugging}
%
% By default, \LaTeX{} shows statistics:
@@ -150,7 +153,7 @@
%\begin{macro}{\newXeTeXintercharclass}
% \changes{v2.0a}{2014/12/30}{macro added}
% \changes{v2.0b}{2015/01/23}{use reserved count 257}
-% \changes{v2.0f}{2015/04/28}{define \cs{xe@alloc@intercharclass} for compatibility with older xelatex initilisation}
+% \changes{v2.0f}{2015/04/28}{define \cs{xe@alloc@intercharclass} for compatibility with older xelatex initialization}
%\begin{macro}{\xe@alloc@intercharclass}
%\begin{macro}{\e@alloc@intercharclass@top}
% \changes{v2.0j}{2016/01/04}{Start allocation at one not three}
@@ -632,7 +635,7 @@
%
% \begin{macro}{\UseRawInputEncoding}
% \changes{v2.1a}{2018/03/25}{Macro added}
-% Reset 8 bit characters to catcode 12 so the input endcoing matches the ``Raw''
+% Reset 8 bit characters to catcode 12 so the input encoding matches the ``Raw''
% font encoding.
% Useful for special behaviours, or for compatibility with older \LaTeX\ formats.
% \changes{v2.1b}{2018/04/06}{Undo changes to \cs{DeclareFontEncoding@} and
@@ -939,7 +942,7 @@
\expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
% \end{macrocode}
% Tell UTF-8 processing to process chars even though we are in an \cs{protected@edef}.
-% \changes{v2.1h}{2019/09/14}{Expand UTF8 chrs when case changing (github/177)}
+% \changes{v2.1h}{2019/09/14}{Expand UTF8 chars when case changing (github/177)}
% \begin{macrocode}
\let\UTF@two@octets@noexpand\@empty
\let\UTF@three@octets@noexpand\@empty
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx
index dee9a10197e..1c8f844bc37 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -31,7 +31,7 @@
%
%<*driver>
% \fi
-\ProvidesFile{ltfloat.dtx}[2020/04/09 v1.2d LaTeX Kernel (Floats)]
+\ProvidesFile{ltfloat.dtx}[2020/12/05 v1.2d LaTeX Kernel (Floats)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfloat.dtx}
@@ -356,7 +356,7 @@
% \changes{v1.1f}{1994/11/21}
% {Missing percents reinserted after 4, 8: these are not numbers.}
% \changes{v1.1g}{1994/12/10}{Old version reinstated temporarily}
-% \changes{v1.1g}{1994/12/10}{Sanitisation added temporarily}
+% \changes{v1.1g}{1994/12/10}{Sanitization added temporarily}
% The first part of this sets the count register that stores all
% the information about the type and fps of the float.
%
@@ -574,7 +574,7 @@
%
% \begin{macro}{\@setnobreak}
% \changes{v1.1f}{1994/11/21}{Macro added}
-% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before
+% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before
% \cs{@nobreak...}}
% \begin{macrocode}
\def \@setnobreak{%
@@ -588,7 +588,7 @@
%
% \begin{macro}{\@setminipage}
% \changes{v1.1f}{1994/11/21}{Macro added}
-% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before
+% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before
% \cs{@minipage...}}
% \begin{macrocode}
\def \@setminipage{%
@@ -734,7 +734,7 @@
% {Use new \cs{color@hbox} concept.}
% \changes{v1.1f}{1994/11/21}{Corrected position of \cs{outer@nobreak}}
% \changes{v1.1f}{1994/11/21}{Added reset of minipage flag}
-% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before
+% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before
% \cs{@minipage...}}
% \begin{macrocode}
\@minipagefalse
@@ -1002,7 +1002,7 @@
% \changes{v1.1f}{1994/11/21}{Added \cs{@setminipage} etc}
% \changes{v1.1f}{1994/11/21}{Added resetting of size and font}
% \changes{v1.1m}{1995/05/25}{(CAR) Resettings moved to hook}
-% \changes{v1.1n}{1996/07/26}{remove unecessary \cs{global} before
+% \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before
% \cs{@minipage...}}
% \begin{macrocode}
\long\def \@savemarbox #1#2{%
@@ -1026,7 +1026,7 @@
%
% The rational for allowing these normally global flags to be set
% locally here, via |\@parboxrestore| was stated originally by
-% Donald Arsenau and extended by Chris Rowley.
+% Donald Arseneau and extended by Chris Rowley.
% It is because these flags are only set globally to
% true by section commands, and these should never appear within
% marginals or floats or, indeed, in any group; and they are only ever
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx
index 0a44d5acf1e..8d587a848a5 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfntcmd.dtx}
- [2019/12/17 v3.4c LaTeX Kernel (Font commands)]
+ [2020/12/05 v3.4c LaTeX Kernel (Font commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfntcmd.dtx}
@@ -303,7 +303,7 @@
% character in an unsloped font; we believe (in early 2003) that
% this is perhaps inefficient but not dangerous.
%
-% It also now checks for empty contents of the text command and optimises
+% It also now checks for empty contents of the text command and optimizes
% this case. Some care is also taken to check that doing dangerous
% things in vertical mode is avoided.
%
@@ -539,7 +539,7 @@
%
% \begin{macro}{\ifmaybe@ic}
% \changes{v3.4a}{2009/12/14}{Macro added}
-% Switch used soley within |\maybe@ic| not interfering with other
+% Switch used solely within |\maybe@ic| not interfering with other
% switches.
% \begin{macrocode}
\newif\ifmaybe@ic
@@ -585,7 +585,7 @@
% \begin{macrocode}
\do \t@st@ic
% \end{macrocode}
-% Frank thinks that the next bit it is inefficient if done after
+% Frank thinks that the next bit is inefficient if done after
% the second change. Chris thinks that most all of this is
% inefficient for the commonest cases: but that is the price of a
% cleverer algorithm. It is certainly needed to deal with the use
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx
index d8e4286b786..4e3b4d983cc 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2020
+% Copyright (C) 2019-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssaxes.dtx}
- [2020/08/21 v1.0g LaTeX Kernel (NFSS Axes handing)]
+ [2020/12/22 v1.0h LaTeX Kernel (NFSS Axes handing)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -68,11 +68,11 @@
%
% \StopEventually{}
%
-% Everything in the this file got introduced 2020/02/02, so we do a
-% single rollback (for now).
+% \changes{v1.0h}{2020/12/04}{Reorganized the rollback data}
+%
+% Everything in the this file got introduced 2020/02/02, so we use large rollback
+% chunks, only interrupted if necessary.
% \begin{macrocode}
-%<*2ekernel>
-%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/02/02}%
%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}%
@@ -168,13 +168,13 @@
% request (i.e., second argument).
%
% In particular this is also true for cases involving \texttt{m},
-% e.g., \texttt{bm} (bold medium width) which automatially gets
+% e.g., \texttt{bm} (bold medium width) which automatically gets
% reduced result in \texttt{b} or \texttt{mc} (medium weight
% condensed) which becomes \texttt{c} as a result.
%
% \item
%
-% Only a few entries have ``alterative'' values and perhaps most of
+% Only a few entries have ``alternative'' values and perhaps most of
% them should get dropped. Or maybe not \ldots{} needs some thought
% perhaps.
%
@@ -183,7 +183,7 @@
% to stay with \texttt{b} when a change to \texttt{c} is requested
% and \texttt{bc} doesn't exist, than to go to first change the
% shape to \texttt{n} and then find that \texttt{bc/n} doesn't
-% exist either and thus ending up wth \texttt{m/n}.
+% exist either and thus ending up with \texttt{m/n}.
%
% \item
%
@@ -678,21 +678,59 @@
% \end{macrocode}
%
%
-
-
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}%
+%<latexrelease>
+%<latexrelease>\let\DeclareFontSeriesChangeRule\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+%
+%
+%
+%
% \subsection{Changing to a new series}
%
%
-
-% \begin{macro}{\if@forced@series}
-% If the series gets forced we need to know that fact later on.
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease> {\fontseries}{delay fontseries update}%
+% \end{macrocode}
+%
+%
+% \begin{macro}{\fontseries}
+% The \cs{fontseries} command takes one argument which is the requested new
+% font series. In the orginal implementation it simply saved the
+% expanded value in \cs{f@series}. Now we do a bit more processing
+% and look up the final value in the font series data base. This is
+% done by \cs{merge@font@series}. But the lookup should be done
+% within the target family and call to \cs{fontseries} might be
+% followed by a \cs{fontfamily} call. So we delay the processing to
+% \cs{selectfont} and only record the necessary action in
+% \cs{delayed@f@adjustment}.
% \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added}
+% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)}
% \begin{macrocode}
-\newif\if@forced@series
+\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@series{#1}}}
% \end{macrocode}
% \end{macro}
%
%
+% \begin{macro}{\delayed@f@adjustment}
+% The macro holding the delayed action(s) for use in \cs{selectfont}.
+% \begin{macrocode}
+\let\delayed@f@adjustment\@empty
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\fontseriesforce}
% To change unconditionally to a new series you can use
% \cs{fontseriesforce}. Of course, if the series doesn't exist for
@@ -700,24 +738,66 @@
% dependency on the current series.
% \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added}
% \begin{macrocode}
-\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@series{#1}}}
% \end{macrocode}
% \end{macro}
%
%
-% \begin{macro}{\fontseries}
-% The \cs{fontseries} command takes one argument which is the requested new
-% font series. In the orginal implementation it simply saved the
-% expanded value in \cs{f@series}. Now we do a bit more processing
-% and look up the final value in the font series data base. This is
-% done by \cs{merge@font@series}.
+%
+% \begin{macro}{\if@forced@series}
+% If the series gets forced we need to know that fact later on.
% \changes{v1.0c}{2020/02/10}{Switch \cs{if@forced@series} added}
% \begin{macrocode}
-\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
+\newif\if@forced@series
% \end{macrocode}
% \end{macro}
-
-
+%
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\fontseries}{delay fontseries update}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
+%<latexrelease>\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
+%<latexrelease>\let\delayed@f@adjustment\@undefined
+%<latexrelease>
+% \end{macrocode}
+% For a roll forward we may have to define \cs{if@forced@series}
+% but this needs doing in a somewhat roundabout way.
+% \begin{macrocode}
+%<latexrelease>\ifx\@forced@seriestrue\@undefined \else
+%<latexrelease> \expandafter\newif\csname if@forced@series\endcsname
+%<latexrelease>\fi
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\fontseries}{delay fontseries update}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
+%<latexrelease>\let\fontseriesforce\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+%
+%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\merge@font@series}{Merge series values}%
+% \end{macrocode}
+%
+%
% \begin{macro}{\merge@font@series}
% We look up the data base value by expanding the right command
% twice. If no such value exist then the result will be \cs{relax}
@@ -734,9 +814,9 @@
}
% \end{macrocode}
% \end{macro}
-
-
-
+%
+%
+%
% \begin{macro}{\merge@font@series@}
% This now defines the new \cs{f@series}:
% \begin{macrocode}
@@ -758,11 +838,9 @@
% \end{macrocode}
% Otherwise we check if the desired result for the series
% (\texttt{\#1}) exists for the font family and the current shape.
-% As the \texttt{.fd} is perhaps not loaded yet, we first
-% have to do that, otherwise the test would fail even if the face
-% is actually available.
+% All this happens inside \cs{selectfont} which has already taken care to load
+% the \texttt{.fd}, file if necessary.
% \begin{macrocode}
- \maybe@load@fontshape
\edef\reserved@a{\f@encoding /\f@family /#1/\f@shape}%
\ifcsname \reserved@a \endcsname
% \end{macrocode}
@@ -798,9 +876,10 @@
% \end{macrocode}
% It is possible that the previous font and the new one are
% actually identical (and the font was not found because it still
-% needs loading) in which case a warning would look rather odd. So
-% we make a quick check for that (which is the reason why we defined
-% \cs{@reserveda} above.
+% needs loading) in which case a warning would look rather odd. So
+% we make a quick check for that (which is the reason why we
+% defined \cs{@reserveda} above instead of doing inline testing
+% inside \cs{ifcsname}).
% \begin{macrocode}
\def\@font@shape@subst@warning{%
\edef\reserved@b{\curr@fontshape}%
@@ -814,13 +893,71 @@
%
%
%
+% \begin{macro}{\merge@font@series@without@substitution,
+% \merge@font@series@without@substitution@,
+% \delayed@merge@font@series}
+%
+% \changes{v1.0h}{2020/12/22}{Distangle series and shape update (gh/444)}
+%
+% \cs{merge@font@series@without@substitution} works like
+% \cs{merge@font@series}, i.e., it looks up the combination in the
+% rule base and if there exists an entry it uses it and if not it
+% uses the new series value. However, it doesn't check if there is
+% actually a font face with the new series value as
+% \cs{merge@font@series} does. This simplified command is used in
+% \cs{selectfont} at a point where other font attributes are not
+% yet updated so that checking the font face might result incorrect
+% in substitutions.
+%
+% \begin{macrocode}
+\def\merge@font@series@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@series@without@substitution@
+ \csname series@\f@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\merge@font@series@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \set@target@series{#2}%
+ \else
+ \set@target@series{#1}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\delayed@merge@font@series}
+%
+% When we delay the merge action in \cs{fontseries} we first
+% attempt to use merging without substitution. If that results in a
+% non-existing font face the merge is redone in \cs{selectfont}
+% using a version with substitution. See \cs{selectfont} for details.
+%
+% \changes{v1.0h}{2020/12/22}{Distangle series and shape update
+% (gh/444)}
+% \begin{macrocode}
+\let\delayed@merge@font@series\merge@font@series@without@substitution
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\maybe@load@fontshape}
% A small helper that we use a couple of times: try loading a
% fontshape (in a group because \cs{try@load@fontshape} normalizes
-% catcodes).
+% catcodes and we also want to change \cs{typeout} so that it
+% doesn't report missing \texttt{.fd} files on the terminal).
% \begin{macrocode}
-\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup}
+\def\maybe@load@fontshape{%
+ \begingroup
+ \let \typeout \@font@info
+ \try@load@fontshape
+ \endgroup}
% \end{macrocode}
% \end{macro}
%
@@ -836,7 +973,7 @@
% condensed series, etc.). We do this in all branches above because a user
% might have written
%\begin{verbatim}
-\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc}
+% \DeclareFontSeriesChangeRule {m}{sc}{msc}{mc}
%\end{verbatim}
% instead of using \texttt{sc} and \texttt{c} as needed in the
% \texttt{.fd} file.
@@ -845,7 +982,7 @@
% \end{macrocode}
% We need to \cs{edef} the argument first in case it starts with a
% conditional. Then we check (and perhaps drop) an ``m'' from the
-% value andassign the result to \cs{f@series}.
+% value and assign the result to \cs{f@series}.
% \changes{v1.0d}{2020/02/27}{Drop ``m'' only in a specific set of values (gh/293)}
% \begin{macrocode}
\edef\f@series{#1}%
@@ -916,6 +1053,30 @@
}
% \end{macrocode}
% \end{macro}
+%
+%
+%
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\merge@font@series}{Merge series values}%
+%<latexrelease>
+%<latexrelease>\let\merge@font@series\@undefined
+%<latexrelease>\let\merge@font@series@\@undefined
+%<latexrelease>\let\@font@shape@subst@warning\@undefined
+%<latexrelease>\let\merge@font@series@without@substitution\@undefined
+%<latexrelease>\let\merge@font@series@without@substitution@\@undefined
+%<latexrelease>\let\delayed@merge@font@series\@undefined
+%<latexrelease>\let\maybe@load@fontshape\@undefined
+%<latexrelease>\let\set@target@series\@undefined
+%<latexrelease>\let\series@maybe@drop@one@m\@undefined
+%<latexrelease>\let\series@drop@one@m\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+
@@ -925,6 +1086,12 @@
% that is desirable), essentially building in an ``sc''
% axis).
%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareFontShapeChangeRule}{Font shape change rules}%
+% \end{macrocode}
+%
%
%
% \begin{macro}{\DeclareFontShapeChangeRule}
@@ -948,8 +1115,9 @@
% resets everything and \texttt{up} changes italic or slanted to
% upright and \texttt{ulc} undoes small caps.
%
-% So we now offer \cs{normalshape} (using \cs{shapedefault} which is normally the same as
-% calling both \cs{ulcshape} and \cs{upshape}, only more efficient.
+% So we now offer \cs{normalshape} (using \cs{shapedefault} which
+% is normally the same as calling both \cs{ulcshape} and
+% \cs{upshape}, only more efficient.
%
%
% \begin{macro}{\ulcshape}
@@ -1080,7 +1248,7 @@
% \texttt{n}. This is the way \texttt{fontspec} implemented its
% version on this interface, so this rule means we are also
% compatible with the way \texttt{fontspec} behaved. Still it
-% remains an odditywhic I would rather liked to have avoided.
+% remains an oddity which I would rather liked to have avoided.
% \begin{macrocode}
%\DeclareFontShapeChangeRule {sc}{up} {sc} {}
\DeclareFontShapeChangeRule {sc}{up} {n} {}
@@ -1100,7 +1268,7 @@
% \texttt{ulc} in \cs{f@series} which most certainly doesn't
% exist. So when a font is later selected that would result in a
% substitution (so no harm done really). Alternatively, we could in
-% this case use \texttt{n} as aternative, which may be a bit
+% this case use \texttt{n} as alternative, which may be a bit
% faster, but such a setup would be so weird in the first place
% that this isn't worth the effort.
%
@@ -1134,26 +1302,97 @@
\DeclareFontShapeChangeRule {sw}{up} {n} {}
% \end{macrocode}
%
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontShapeChangeRule}{Font shape change rules}%
+%<latexrelease>
+%<latexrelease>\let\DeclareFontShapeChangeRule\@undefined
+%<latexrelease>\let\ulcshape\@undefined
+%<latexrelease>\let\ulcdefault\@undefined
+%<latexrelease>\let\swshape\@undefined
+%<latexrelease>\let\swdefault\@undefined
+%<latexrelease>\let\sscshape\@undefined
+%<latexrelease>\let\sscdefault\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
%
% \subsection{Changing to a new shape}
%
+%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease> {\fontshape}{Font shape change}%
+% \end{macrocode}
+%
+%
+%
% \begin{macro}{\fontshape}
% Again the \cs{fontshape} now has to do a lookup to get to its new
% value in \cs{f@shape}. The method is exactly the same as in
% \cs{fontseries}.
+% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)}
% \begin{macrocode}
-\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
+\DeclareRobustCommand\fontshape[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@shape{#1}}}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\fontshapeforce}
% The unconditional version:
+%
+% \changes{v1.0h}{2020/12/04}{Distangle series and shape update (gh/444)}
% \begin{macrocode}
-\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
+\DeclareRobustCommand\fontshapeforce[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@shape{#1}}}
% \end{macrocode}
% \end{macro}
%
+%
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\fontshape}{Font shape change}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
+%<latexrelease>\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\fontshape}{Font shape change}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
+%<latexrelease>\let\fontshapeforce\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+
+
+
+
+
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\merge@font@shape}{Font shape change rules}%
+% \end{macrocode}
+%
+%
+%
% \begin{macro}{\merge@font@shape}
% Look up the database entry (if existing) and act accordingly.
% \begin{macrocode}
@@ -1178,9 +1417,12 @@
\ifx\reserved@a\@empty
\edef\f@shape{#2}%
\else
- \maybe@load@fontshape
+% \end{macrocode}
+% \cs{reserved@a} is used in \cs{@font@shape@subst@warning} so we
+% have to define it in addition to do the \cs{ifcsname} test
+% \begin{macrocode}
\edef\reserved@a{\f@encoding /\f@family /\f@series/#1}%
- \ifcsname \reserved@a\endcsname
+ \ifcsname \reserved@a\endcsname
\edef\f@shape{#1}%
\else
\ifcsname \f@encoding /\f@family /\f@series/#2\endcsname
@@ -1197,6 +1439,38 @@
% \end{macro}
%
%
+% \begin{macro}{\merge@font@shape@without@substitution,
+% \merge@font@shape@without@substitution@,
+% \delayed@merge@font@shape}
+% See definition of \cs{selectfont} for how these macros are used.
+% \changes{v1.0h}{2020/12/22}{Distangle series and shape update (gh/444)}
+% \begin{macrocode}
+\def\merge@font@shape@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@shape@without@substitution@
+ \csname shape@\f@shape @#1\endcsname
+ {#1}%
+ \@nil
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\merge@font@shape@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \edef\f@shape{#2}%
+ \else
+ \edef\f@shape{#1}%
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\let\delayed@merge@font@shape\merge@font@shape@without@substitution
+% \end{macrocode}
+% \end{macro}
+%
+%
%
% \begin{macro}{\normalshape}
%
@@ -1255,52 +1529,41 @@
% \end{macrocode}
% \end{macro}
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Supporting rollback \ldots
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}%
+%<latexrelease> {\merge@font@shape}{Font shape change rules}%
%<latexrelease>
-%<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
%<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
-%<latexrelease>\let\fontseriesforce\@undefined
%<latexrelease>\let\fontshapeforce\@undefined
%<latexrelease>
-%<latexrelease>\let\DeclareFontSeriesChangeRule\@undefined
-%<latexrelease>\let\merge@font@series\@undefined
-%<latexrelease>\let\merge@font@series@\@undefined
-%<latexrelease>\let\@font@shape@subst@warning\@undefined
-%<latexrelease>\let\maybe@load@fontshape\@undefined
-%<latexrelease>\let\set@target@series\@undefined
-%<latexrelease>\let\series@maybe@drop@one@m\@undefined
-%<latexrelease>\let\series@drop@one@m\@undefined
-%<latexrelease>\let\DeclareFontShapeChangeRule\@undefined
%<latexrelease>\let\merge@font@shape\@undefined
%<latexrelease>\let\merge@font@shape@\@undefined
+%<latexrelease>
+%<latexrelease>\let\merge@font@shape@without@substitution\@undefined
+%<latexrelease>\let\merge@font@shape@without@substitution@\@undefined
+%<latexrelease>\let\delayed@merge@font@shape\@undefined
+%<latexrelease>
%<latexrelease>\let\normalshape\@undefined
-%<latexrelease>\let\ulcshape\@undefined
-%<latexrelease>\let\ulcdefault\@undefined
-%<latexrelease>\let\swshape\@undefined
-%<latexrelease>\let\swdefault\@undefined
-%<latexrelease>\let\sscshape\@undefined
-%<latexrelease>\let\sscdefault\@undefined
-%<latexrelease>\let\normalshape\@undefined
+%<latexrelease>
% \end{macrocode}
% This is always called in \cs{document} so don't make it undefined.
% \begin{macrocode}
%<latexrelease>
%<latexrelease>\let\reinstall@nfss@defs\relax
%<latexrelease>\EndIncludeInRelease
-%<*2ekernel>
% \end{macrocode}
%
+%
+%
% This initializes the 2020/02/02 extensions to NFSS after any changes
% in the preamble.
% \changes{v1.0g}{2020/08/21}{Integration of new hook management interface}
% \begin{macrocode}
-%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease> {\reinstall@nfss@defs}{NFSS series init}%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
index 4a6afca3ace..d2dde745d4c 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssbas.dtx}
- [2020/02/27 v3.2g LaTeX Kernel (NFSS Basic Macros)]
+ [2020/12/10 v3.2h LaTeX Kernel (NFSS Basic Macros)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -891,12 +891,31 @@
% series and shape which is not desired if we intend to use an
% explicit font shape!
% \changes{v3.2e}{2019/12/17}{Don't call \cs{fontseries} or \cs{fontshape}}
+% \changes{v3.2h}{2020/12/10}{Drop ``m'' if the series value is a member
+% of a fixed list and issue warning if doing it (gh/453)}
% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\usefont}{Drop m in usefont}%
\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
\edef\f@family{#2}%
- \edef\f@series{#3}%
+ \set@target@series{#3}%
\edef\f@shape{#4}\selectfont
\ignorespaces}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\usefont}{Drop m in usefont}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
+%<latexrelease> \edef\f@family{#2}%
+%<latexrelease> \edef\f@series{#3}%
+%<latexrelease> \edef\f@shape{#4}\selectfont
+%<latexrelease> \ignorespaces}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -1384,7 +1403,7 @@
% The idea for this macro is stolen from the \texttt{substitutefont}
% package by Günter Milde, with some modifications and a new name.
%
-% Its purpose is to provide characters in a special encoding tht
+% Its purpose is to provide characters in a special encoding that
% are not available in the current font family to be taken from a
% different family that is visually compatible (or not if you
% choose badly). For example, you can match the GFS Didot Greek
@@ -1403,7 +1422,7 @@
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/02/02}%
-%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}%
+%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substitution}%
\begingroup
\nfss@catcodes
\gdef\DeclareFontFamilySubstitution#1#2#3{%
@@ -1413,7 +1432,7 @@
% is better to handle that differently.
%
% Of course the families may still need loading at
-% this point and so we arange for this. Otherwise we might run into
+% this point and so we arrange for this. Otherwise we might run into
% trouble because the necessary \cs{DeclareFontFamily} has not been
% seen.
% \begin{macrocode}
@@ -1457,7 +1476,7 @@
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}%
+%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substitution}%
%<latexrelease>
%<latexrelease>\let\DeclareFontFamilySubstitution\@undefined
%<latexrelease>\EndIncludeInRelease
@@ -1484,11 +1503,11 @@
\noexpand\@nil}%
% \end{macrocode}
% Initialize all those internal variables which may or may not have
-% values in the first seconds of NFSS' bootstraping process. Later
+% values in the first seconds of NFSS' bootstrapping process. Later
% on such values will be updated when an encoding is selected, etc.
%
% We definitely don't want to set |\f@encoding|; we can set all the
-% others since if they are left ``blank'' any selection would grap
+% others since if they are left ``blank'' any selection would grab
% ``error default values'' as well. However, this probably should
% go also---and now it did.
% \changes{v2.1n}{1994/05/14}{Don't set \cs{f@encoding}}
@@ -1540,7 +1559,7 @@
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2015/01/01}{\wrong@fontshape}%
-%<latexrelease> {Font substituation in preamble}%
+%<latexrelease> {Font substitution in preamble}%
%<*2ekernel|latexrelease>
\def\wrong@fontshape{%
\csname D@\f@encoding\endcsname % install defaults if in math
@@ -1581,9 +1600,9 @@
% corresponding \texttt{.fd} file may not been loaded
% yet. Therefore we try this now. Otherwise equating the requested
% font shape with the finally selected fontshape below will fail
-% and can result in ``NFSS tables corruped''. After begin document
+% and can result in ``NFSS tables corrupted''. After begin document
% that will not happen as all \texttt{.fd} files involved in
-% substituation are loaded at |\begin{document}|.
+% substitution are loaded at |\begin{document}|.
% \begin{macrocode}
\begingroup
\try@load@fontshape
@@ -1662,7 +1681,7 @@
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}{\wrong@fontshape}%
-%<latexrelease> {Font substituation in preamble}%
+%<latexrelease> {Font substitution in preamble}%
%<latexrelease>\def\wrong@fontshape{%
%<latexrelease> \csname D@\f@encoding\endcsname
%<latexrelease> \edef\reserved@a{\csname\curr@fontshape\endcsname}%
@@ -1837,7 +1856,7 @@
% it modifies the corresponding macro |\mv@|\meta{version}
% so that it calls |\getanddefine@fonts| directly in future as well.
% We use the macro |\extract@alph@from@version| to do this.
-% It takes the math alphabet identifer |#1| and the math version
+% It takes the math alphabet identifier |#1| and the math version
% macro as arguments.
% \changes{v1.9a}{1992/07/26}{}
% \begin{macrocode}
@@ -1925,7 +1944,7 @@
\use@mathgroup##1{#2}}}%
% \end{macrocode}
% \changes{v2.1t}{1994/10/15}{Warn if math alpha is used outside math}
-% In addtion it defines the alphabet the way it should be used from
+% In addition it defines the alphabet the way it should be used from
% now on.
% \begin{macrocode}
\gdef#3{\relax\ifmmode \else \non@alpherr#3\fi
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx
index 8583fb1a9b4..29580b8d5e5 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -36,7 +36,7 @@
%
%
\ProvidesFile{ltfsscmp.dtx}
- [2015/06/23 v3.0f LaTeX Kernel (NFSS1 Compatibility)]
+ [2020/12/05 v3.0f LaTeX Kernel (NFSS1 Compatibility)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -181,7 +181,7 @@
\in@{pt}{#3}% not a proof but a good chance
\ifin@
% \end{macrocode}
-% We grap also everything after pt and discard it if people have
+% We grab also everything after pt and discard it if people have
% forgotten to place a percent sign there.
% \changes{v2.1d}{1994/02/10}{scan away stuff after pt}
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx
index 291cd1368f2..725d0e39fcc 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -36,7 +36,7 @@
%
%
\ProvidesFile{ltfssdcl.dtx}
- [2020/03/19 v3.0v LaTeX Kernel (NFSS Declarative Interface)]
+ [2020/12/05 v3.0v LaTeX Kernel (NFSS Declarative Interface)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -747,7 +747,7 @@
\@font@info{Redeclaring symbol font `#1'}%
% \end{macrocode}
% \changes{v3.0f}{1997/11/13}
-% {(DPC) Really update \cs{group@list} dont
+% {(DPC) Really update \cs{group@list} don't
% leave new version in \cs{toks@}. latex/2661}
% Update the group list.
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx
index fbea725c1df..a92321bf5d7 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -36,7 +36,7 @@
%
%
\ProvidesFile{ltfssini.dtx}
- [2020/10/08 v3.2e LaTeX Kernel (NFSS Initialisation)]
+ [2020/12/06 v3.2f LaTeX Kernel (NFSS Initialisation)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -56,7 +56,7 @@
%
% \GetFileInfo{ltfssini.dtx}
% \title{A new font selection scheme for \TeX{} macro packages\\
-% (Initialisation)\thanks
+% (Initialization)\thanks
% {This file has version number
% \fileversion\ dated \filedate}}
%
@@ -83,7 +83,7 @@
% \changes{v3.1d}{2019/08/27}{Make various commands robust}
%
%
-% \section{NFSS Initialisation}
+% \section{NFSS Initialization}
%
% \iffalse
%<+checkmem>\CHECKMEM
@@ -301,7 +301,7 @@
\else
% \end{macrocode}
%
-% \changes{v3.1g}{2020/02/05}{Clarrified error text}
+% \changes{v3.1g}{2020/02/05}{Clarified error text}
% \begin{macrocode}
\@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}%
{Mandatory first argument must be 'md' or 'bf'.}
@@ -431,7 +431,7 @@
%<+debug> \series@change@debug{No series preparation (forced \f@series)\on@line}%
\fontfamily#2%
\else
-%<+debug> \series@change@debug{Prepearing for switching to #1 (#2)\on@line}%
+%<+debug> \series@change@debug{Preparing for switching to #1 (#2)\on@line}%
\expand@font@defaults
% \end{macrocode}
% We prepare for changing the current series. We have to find it
@@ -493,7 +493,7 @@
% \end{macrocode}
% The \cs{target@series@value} may contain something like
% \texttt{cm} (coming from a default) and so we can't directly
-% asign it to \cs{f@series} be have to drop any surplus \texttt{m}
+% assign it to \cs{f@series} be have to drop any surplus \texttt{m}
% first.
% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from
% \cs{target@series@value} (gh/291)}
@@ -513,7 +513,7 @@
% In this macro used in the look you basically find the nested
% \cs{ifx}s from the outline above. The only difference is that is
% it is parameterized instead of being written out and only for one
-% block of tests because the code is called reatedly when looping
+% block of tests because the code is called repeatedly when looping
% over the meta family list. From the list we get each meta family
% name in turn.
% \begin{macrocode}
@@ -665,7 +665,7 @@
% the now current series value (in \cs{f@series}).
%
% But what should happen if \cs{seriesdefault} got explicitly
-% changed? In that case the explicit change should surive and we
+% changed? In that case the explicit change should survive and we
% should not alter \cs{seriesdefault}. This is solved by comparing
% the current value of \cs{seriesdefault} with a kernel version
% saved in the format and if they differ we do not call
@@ -915,9 +915,9 @@
%\end{verbatim}
% We have to do the testing while the current family is still
% unchanged but we have to do the adjustment of the series after it
-% got changed (because the new family might has different sets
-% ofshapes available and we certainly don't want to see
-% substituation going on. So we use \cs{target@series@value} to
+% got changed (because the new family might have different sets
+% of shapes available and we certainly don't want to see
+% substitution going on. So we use \cs{target@series@value} to
% hold the target series (if any).
%\begin{verbatim}
% \let\target@series@value\@empty
@@ -1183,7 +1183,7 @@
% to different NFSS axis values it becomes important to have the
% ability to determine the current context as we can no longer look
% at \cs{f@series} to answer a question such as ``am I currently
-% typsetting in a bold typeface?''
+% typesetting in a bold typeface?''
%
% This is provided by the test \cs{IfFontSeriesContextTF}. It takes
% three arguments:
@@ -1221,7 +1221,7 @@
\DeclareRobustCommand\IfFontSeriesContextTF[1]{%
\expand@font@defaults
% \end{macrocode}
-% In the beginning we haven't found the context we are loking for.
+% In the beginning we haven't found the context we are looking for.
% \begin{macrocode}
\@font@series@contextfalse
% \end{macrocode}
@@ -1238,7 +1238,7 @@
\expandafter\edef\csname ??def@ult\endcsname{\f@family}%
% \end{macrocode}
% Then we run through the meta family list (currently containing
-% just the three values) followed by the artifical meta family
+% just the three values) followed by the artificial meta family
% \texttt{??} and test each of them in turn using
% \cs{test@font@series@context} as the testing command.
% \begin{macrocode}
@@ -1264,7 +1264,7 @@
% \begin{macro}{\test@font@series@context}
% This tests the context (stored in \cs{requested@test@context})
-% and updates the bookean if the right context is found.
+% and updates the boolean if the right context is found.
% \begin{macrocode}
\def\test@font@series@context#1{%
% \end{macrocode}
@@ -1343,10 +1343,10 @@
% By default \LaTeXe{} supports two levels of nested emphasis: if
% the current font has an upright shape then it switches to
% \cs{itshape} otherwise to \cs{eminnershape} (which defaults to
-% \cs{upshape}). This means nested emphasis will ocssilate between
+% \cs{upshape}). This means nested emphasis will oscillate between
% italic and upright shapes.
%
-% Sometimes it would be nice to allow for a more lengthly sequence,
+% Sometimes it would be nice to allow for a more lengthy sequence,
% but instead of providing a fixed one \LaTeX{} now offers a
% general mechanism that allows to define arbitrary sequences.
%
@@ -1377,7 +1377,7 @@
% \begin{macro}{\DeclareEmphSequence}
%
% \cs{DeclareEmphSequence} expects a clist of declaration. Spaces in the
-% argument are dropped to avoid surious spaces in the output. The
+% argument are dropped to avoid spurious spaces in the output. The
% declarations are additive. At the very end the shape is reset
% using |\emreset| and |\emforce| so that this case is never
% skipped.\footnote{Maybe we should not add \cs{emforce} but allow
@@ -1479,7 +1479,7 @@
% \begin{macrocode}
\expandafter\ifx\csname \curr@fontshape/\f@size\em@force
% \end{macrocode}
-% For the comparison with \cs{ifx} we have to exand
+% For the comparison with \cs{ifx} we have to expand
% \cs{em@currfont} once as the relevant info is inside.
% \begin{macrocode}
\expandafter\endcsname
@@ -1863,8 +1863,20 @@
% \changes{v3.1c}{2019/07/09}{Explicitly set some defaults}
% \begin{macrocode}
\fontfamily{cmr}
-\fontseries{m}
-\fontshape{n}
+% \end{macrocode}
+%
+% \changes{v3.2f}{2020/12/04}{Adjust start values for series and shape (gh/444)}
+% Previously the default values for series and shape were set by
+% calling \cs{fontseries} and \cs{fontshape}, but their action is
+% now delayed until \cs{selectfont} which isn't called inside the
+% format (to avoid unnecessarily loading a font that may never get used).
+% We therefore have to set \cs{f@series} and \cs{f@shape} directly instead.
+% \begin{macrocode}
+\def\f@series{m} % \fontseries{m}
+\def\f@shape{n} % \fontshape{n}
+% \end{macrocode}
+%
+% \begin{macrocode}
\fontsize{10}{10}
% \end{macrocode}
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx
index 055f408ceb3..bd0f6fabd21 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,12 +32,12 @@
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved.
%
-%<package>\NeedsTeXFormat{LaTeX2e}[1995/05/16]
+%<package>\NeedsTeXFormat{LaTeX2e}[2021/05/01]
%<package>\ProvidesPackage{tracefnt}
-%<package> [2019/10/11 v3.0l Standard LaTeX package (font tracing)]
+%<package> [2020/12/22 v3.0n Standard LaTeX package (font tracing)]
% \fi
% \ProvidesFile{ltfsstrc.dtx}
-% [2020/02/03 v3.0l LaTeX Kernel (NFSS tracing)]
+% [2020/12/22 v3.0n LaTeX Kernel (NFSS tracing)]
%
% \iffalse
%<+checkmem>\CHECKMEM
@@ -190,7 +190,7 @@
% special package file named \texttt{trace.sty}.\footnote{This package
% is not in distribution at the moment (and probably doesn't any
% longer work). Think of this part of the code as being historical
-% artefacts.}
+% artifacts.}
% \begin{macrocode}
%<+debug> \input trace.sty
% \end{macrocode}
@@ -420,19 +420,25 @@
% \end{macrocode}
% \end{macro}
%
+
+% \begin{macrocode}
+%<*2ekernel|latexrelease|package>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease> {\selectfont}{Add hook to \selectfont}%
+% \end{macrocode}
+%
%
-% \changes{v1.0j}{1990/02/18}
-% {Redefine unprotected version \cs{p@selectfont}
-% instead of \cs{selectfont}.}
%
%
% \begin{macro}{\selectfont}
+% \changes{v1.0j}{1990/02/18}
+% {Redefine unprotected version \cs{p@selectfont}
+% instead of \cs{selectfont}.}
% \changes{v1.1a}{1989/12/16}{Changed order of calls.}
% \changes{v2.3f}{1994/05/12}{Use \cs{DeclareRobustCommand}}
% The macro |\selectfont| is called whenever a font change must
% take place.
% \begin{macrocode}
-%<*2ekernel|package>
\DeclareRobustCommand\selectfont
{%
% \end{macrocode}
@@ -456,6 +462,69 @@
\ifx\f@linespread\baselinestretch \else
\set@fontsize\baselinestretch\f@size\f@baselineskip \fi
% \end{macrocode}
+%
+% The series and shape updates are only prepared by
+% \cs{fontseries} and \cs{fontshape} but not executed until after
+% we are ready to change the font face. This way they happen after
+% a possibly new family is set which is important because they
+% look at the available font faces in that family and alter the
+% selection based on availibility. Several calls to \cs{fontseries}
+% or \cs{fontshape} are delayed in the order in which they appear,
+% so that by switching them one can work around missing
+% intermediate font faces and avoid substitutions.
+%
+% We first attempt to do the merge without any substitution. As we
+% might end up with a non-existing font face we may have to restart
+% and therefore save the current values of \cs{f@series} and
+% \cs{f@shape} before the merge.
+%
+% But first we make a quick test to see if there are any delayed
+% actions, because if not it is pointless to make all the
+% assignments and try loading a missing fontshape.
+%
+% \changes{v3.0n}{2020/12/22}{Execute delayed series and shape updates (gh/444)}
+% \begin{macrocode}
+ \ifx\delayed@f@adjustment\@empty
+ \else
+ \let\f@shape@saved\f@shape
+ \let\f@series@saved\f@series
+% \end{macrocode}
+% The we run the delayed adjustments (which is using the
+% \cs{..@without@substitution} commands
+% \begin{macrocode}
+ \delayed@f@adjustment
+% \end{macrocode}
+% We then check if the resulting cominbation is valid but for this
+% we have to make sure the the appropiate \texttt{.fd} is loaded if
+% that hasn't happened so far.
+% \begin{macrocode}
+ \maybe@load@fontshape
+ \ifcsname \f@encoding/\f@family/\f@series/\f@shape \endcsname
+% \end{macrocode}
+% If this macro is defined then we are good and no further action
+% is necessary.
+%
+% Otherwise the combination is not valid, so we redo the merge but
+% this time with substitutions.
+% \begin{macrocode}
+ \else
+ \let\f@shape\f@shape@saved
+ \let\f@series\f@series@saved
+ \let\delayed@merge@font@shape\merge@font@shape
+ \let\delayed@merge@font@series\merge@font@series
+ \delayed@f@adjustment
+ \let\delayed@merge@font@shape\merge@font@shape@without@substitution
+ \let\delayed@merge@font@series\merge@font@series@without@substitution
+ \fi
+% \end{macrocode}
+% Now the series and shape values are updated and we clear
+% \cs{delayed@f@adjustment}. This is important because on the next
+% execution of \cs{selectfont} we should not mistakenly redo the
+% delayed actions if there wasn't any series or shape change.
+% \begin{macrocode}
+ \let\delayed@f@adjustment\@empty
+ \fi
+% \end{macrocode}
% Then we generate the internal name of the font
% by concatenating {\em family}, {\em series},
% {\em shape}, and current {\em size},
@@ -478,18 +547,13 @@
% \begin{macrocode}
\font@name
% \end{macrocode}
-% If |\tracingfonts| is
-% greater than 2 we also show the font switch.
-% We do this before |\glb@settings| is called since this
-% macro might redefine |\font@name|.
-% \changes{v1.0k}{1990/03/14}{Added code for TeX3.}
-% \changes{v1.0i}{1990/02/16}{Changed \cs{f@size} to \cs{lcl@currsize}
-% (see fam file).}
+%
+% After switching fonts we run a hook, so that packages can make
+% last minute alterations based on the new font (originally provided
+% in \pkg{everysel} but using a different interface).
+% \changes{v3.0m}{2020/12/03}{Install a hook in \cs{selectfont} (gh/444)}
% \begin{macrocode}
-%<*trace>
- \ifnum \tracingfonts>\tw@
- \@font@info{Switching to \font@name}\fi
-%</trace>
+ \UseHook{selectfont}%
% \end{macrocode}
% Finally we call |\size@update|. This macro is normally empty but
% will contain actions (like setting the |\baselineskip|) that have
@@ -514,11 +578,69 @@
% \end{macro}
%
%
+% \begin{macro}{selectfont}
+% Declare the hook used in selecfont in the kernel, but not
+% inside the \pkg{tracefnt} package.
+% \begin{macrocode}
+%<-trace>\NewHook{selectfont}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% If |\tracingfonts| is
+% greater than 2 we also show the font switch inside \cs{selectfont}.
+% We do this by adding this code to the hook in the \pkg{tracefnt} package:
+% macro might redefine |\font@name|.
+% \begin{macrocode}
+%<*trace>
+\AddToHook{selectfont}
+ {\ifnum \tracingfonts>\tw@
+ \@font@info{Switching to \font@name}\fi}
+%</trace>
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease|package>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% With \cs{selectfont} having different definitions in different
+% kernels we also have to provide them in the \texttt{tracefnt}
+% package to support rollback. In packages that works a bit
+% differently and therefore we have to provide an empty block there.
+% \begin{macrocode}
+%<package>\IncludeInRelease{2021/05/01}%
+%<package> {\selectfont}{Add hook to \selectfont}%
+%<package>\EndIncludeInRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease|package>\IncludeInRelease{0000/00/00}%
+%<latexrelease|package> {\selectfont}{Add hook to \selectfont}%
+%<latexrelease|package>
+%<latexrelease|package>\DeclareRobustCommand\selectfont
+%<latexrelease|package> {%
+%<latexrelease|package> \ifx\f@linespread\baselinestretch \else
+%<latexrelease|package> \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+%<latexrelease|package> \xdef\font@name{%
+%<latexrelease|package> \csname\curr@fontshape/\f@size\endcsname}%
+%<latexrelease|package> \pickup@font
+%<latexrelease|package> \font@name
+%<latexrelease|package> \size@update
+%<latexrelease|package> \enc@update
+%<latexrelease|package> }
+%<latexrelease|package>
+%<latexrelease|package>\EndIncludeInRelease
+% \end{macrocode}
+%
+%
%
% \begin{macro}{\set@fontsize}
% The macro |\set@fontsize| does the actual work. First it assigns
% new values to |\f@size|, |\f@baselineskip| and |\f@linespread|.
% \begin{macrocode}
+%<*2ekernel|package>
\def\set@fontsize#1#2#3{%
\@defaultunits\@tempdimb#2pt\relax\@nnil
\edef\f@size{\strip@pt\@tempdimb}%
@@ -1245,7 +1367,7 @@
% Now, we are through with the case of a simple size, except for
% calling the size function. This will be handled later, as it is
% the same mechanism for all types of size specification. We will
-% now proceed to macors for extraction of size range specification.
+% now proceed to macros for extraction of size range specification.
%
%
%
diff --git a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
index e4ff7dd2ed4..404938d203a 100644
--- a/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%%
-%% File: lthooks.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%
% This file is part of the LaTeX base system.
@@ -31,8 +31,8 @@
%%% From File: lthooks.dtx
%
% \begin{macrocode}
-\def\lthooksversion{v1.0e}
-\def\lthooksdate{2020/10/23}
+\def\lthooksversion{v1.0h}
+\def\lthooksdate{2021/01/07}
% \end{macrocode}
%
%<*driver>
@@ -222,11 +222,13 @@
% \begin{syntax}
% \cs{AddToHook} \Arg{hook}\oarg{label}\Arg{code}
% \end{syntax}
-% Adds \meta{code} to the \meta{hook} labeled by \meta{label}. If
-% the optional argument \meta{label} is not provided, if \cs{AddToHook}
-% is used in a package/class, then the current
-% package/class name is used, otherwise \hook{top-level} is
-% used~(see section~\ref{sec:default-label}).
+% Adds \meta{code} to the \meta{hook} labeled by \meta{label}.
+% When the optional argument \meta{label} is not provided, the
+% \meta{default label} is used (see section~\ref{sec:default-label}).
+% If \cs{AddToHook} is used in a package/class, the
+% \meta{default label} is the package/class name, otherwise it is
+% \hook{top-level} (the \hook{top-level} label is treated
+% differently: see section~\ref{sec:top-level}).
%
% If there already exists code under the \meta{label} then the new
% \meta{code} is appended to the existing one (even if this is a reversed hook).
@@ -234,10 +236,10 @@
% \meta{label}, first apply \cs{RemoveFromHook}.
%
% The hook doesn't have to exist for code to be added to
-% it. However, if it is not declared later then obviously the
+% it. However, if it is not declared, then obviously the
% added \meta{code} will never be executed. This
% allows for hooks to work regardless of package loading order and
-% enables packages to add to hook of other packages without
+% enables packages to add to hooks from other packages without
% worrying whether they are actually used in the current document.
% See section~\ref{sec:querying}.
%
@@ -251,10 +253,8 @@
% \cs{RemoveFromHook} \Arg{hook}\oarg{label}
% \end{syntax}
% Removes any code labeled by \meta{label} from the \meta{hook}.
-% If the optional
-% argument \meta{label} is not provided, if \cs{AddToHook}
-% is used in a package/class, then the current
-% package/class name is used, otherwise \hook{top-level} is used.
+% When the optional argument \meta{label} is not provided, the
+% \meta{default label} is used (see section~\ref{sec:default-label}).
%
% If the code for that \meta{label} wasn't yet added to the
% \meta{hook}, an order is set so that when some code attempts to add
@@ -273,7 +273,7 @@
% \medskip
%
% In contrast to the \texttt{voids} relationship between two labels
-% in a \cs{DeclareHookrule} this is a destructive operation as the
+% in a \cs{DeclareHookRule} this is a destructive operation as the
% labeled code is removed from the hook data structure, whereas the
% relationship setting can be undone by providing a different
% relationship later.
@@ -367,7 +367,8 @@
% token, a low-level \TeX{} error is raised (namely, the \meta{hook} is
% expanded using \TeX's \cs{csname}\ldots\cs{endcsname}, as such,
% Unicode characters are allowed in \meta{hook} and \meta{label}
-% arguments). The arguments of \cs{UseHook} and \cs{UseOneTimeHook} are
+% arguments). The arguments of \cs{UseHook}, \cs{UseOneTimeHook},
+% \cs{IfHookEmptyTF}, and \cs{IfHookExistsTF} are
% processed much in the same way except that spaces are not trimmed
% around the argument, for better performance.
%
@@ -377,10 +378,10 @@
% chunk and to prevent clashes. This should be the standard practice,
% so this hook management code provides a shortcut to refer to the
% current package in the name of a \meta{hook} and in a \meta{label}.
-% If \meta{hook} name or \meta{label} consist just of a single dot
+% If the \meta{hook} name or the \meta{label} consist just of a single dot
% (|.|), or starts with a dot followed by a slash (|./|) then the dot
% denotes the \meta{default label} (usually the current package or class
-% name---see~\cs{DeclareDefaultHookLabel}).
+% name---see~\cs{SetDefaultHookLabel}).
% A \enquote{|.|} or \enquote{|./|} anywhere else in a \meta{hook} or in
% \meta{label} is treated literally and is not replaced.
%
@@ -403,15 +404,15 @@
% \AddToHook {file/after/foo.tex}{code} % unchanged
% \end{verbatim}
%
-% The \meta{default label} is automatically set to the name of the
-% current package or class (using \cs{@currname}). If \cs{@currname}
-% is not set (because the hook command is used outside of a package, or
-% the current file wasn't loaded with \cs{usepackage} or
-% \cs{documentclass}), then the \texttt{top-level} is used as the
-% \meta{default label}.
+% The \meta{default label} is automatically set equal to the name of the
+% current package or class at the time the package is loaded. If the
+% hook command is used outside of a package, or the current file wasn't
+% loaded with \cs{usepackage} or \cs{documentclass}, then the
+% \texttt{top-level} is used as the \meta{default label}. This may have
+% exceptions---see \cs{PushDefaultHookLabel}.
%
% This syntax is available in all \meta{label} arguments and most
-% \meta{hook}, both in the \LaTeXe{} interface, and the \LaTeX3
+% \meta{hook} arguments, both in the \LaTeXe{} interface, and the \LaTeX3
% interface described in section~\ref{sec:l3hook-interface}.
%
% Note, however, that the replacement of |.| by the \meta{default label}
@@ -430,29 +431,104 @@
% In some cases, for example in large packages, one may want to separate
% it in logical parts, but still use the main package name as
% \meta{label}, then the \meta{default label} can be set using
-% \cs{DeclareDefaultHookLabel}:
+% \cs{SetDefaultHookLabel} or
+% \cs{PushDefaultHookLabel}..\cs{PopDefaultHookLabel}.
%
-% \begin{function}{\DeclareDefaultHookLabel}
+% \begin{function}{\PushDefaultHookLabel,\PopDefaultHookLabel}
% \begin{syntax}
-% \cs{DeclareDefaultHookLabel} \Arg{default label}
+% \cs{PushDefaultHookLabel} \Arg{default label}
+% \quad \meta{code}
+% \cs{PopDefaultHookLabel}
% \end{syntax}
-% Sets the \meta{default label} to be used in \meta{label} arguments.
-% If \cs{DeclareDefaultHookLabel} is not used in the
-% current package, \cs{@currname} is used instead. If \cs{@currname}
-% is not set, the code is assumed to be in the main document, in which
-% case \texttt{top-level} is used.
-%
-% The effect of \cs{DeclareDefaultHookLabel} holds for the current
-% file, and is reset to the previous value when the file is closed.
+% \cs{PushDefaultHookLabel} sets the current \meta{default label} to
+% be used in \meta{label} arguments, or when replacing a leading
+% ``|.|'' (see above). \cs{PopDefaultHookLabel} reverts the
+% \meta{default label} to its previous value.
+%
+% Inside a package or class, the \meta{default label} is equal to the
+% package or class name, unless explicitly changed. Everywhere else,
+% the \meta{default label} is |top-level| (see
+% section~\ref{sec:top-level}) unless explicitly changed.
+%
+% The effect of \cs{PushDefaultHookLabel} holds until the next
+% \cs{PopDefaultHookLabel}. \cs{usepackage} (and \cs{RequirePackage}
+% and \cs{documentclass}) internally use
+% \begin{quote}
+% \cs{PushDefaultHookLabel}\Arg{package name} \\
+% \null \quad \meta{package code} \\
+% \cs{PopDefaultHookLabel}
+% \end{quote}
+% to set the \meta{default label} for the package or class file.
+% Inside the \meta{package code} the \meta{default label} can also be
+% changed with \cs{SetDefaultHookLabel}. \cs{input} and other
+% file input-related commands from the \LaTeX{} kernel do not use
+% \cs{PushDefaultHookLabel}, so code within files loaded by these
+% commands does \emph{not} get a dedicated \meta{label}! (that is, the
+% \meta{default label} is the current active one when the file was
+% loaded.)
+%
+% Packages that provide their own package-like interfaces
+% (Ti\textit{k}Z's \cs{usetikzlibrary}, for example) can use
+% \cs{PushDefaultHookLabel} and \cs{PopDefaultHookLabel} to set
+% dedicated labels and emulate \cs{usepackage}-like hook behaviour
+% within those contexts.
+%
+% The |top-level| label is treated differently, and is reserved to the
+% user document, so it is not allowed to change the
+% \meta{default label} to |top-level|.
+% \end{function}
+%
+% \begin{function}{\SetDefaultHookLabel}
+% \begin{syntax}
+% \cs{SetDefaultHookLabel} \Arg{default label}
+% \end{syntax}
+% Similarly to \cs{PushDefaultHookLabel},
+% sets the current \meta{default label} to
+% be used in \meta{label} arguments, or when replacing a leading
+% ``|.|''. The effect holds until the label is changed again or until
+% the next \cs{PopDefaultHookLabel}. The difference between
+% \cs{PushDefaultHookLabel} and \cs{SetDefaultHookLabel} is that the
+% latter does not save the current \meta{default label}.
+%
+% This command is useful when a large package is composed of several
+% smaller packages, but all should have the same \meta{label}, so
+% \cs{SetDefaultHookLabel} can be used at the beginning of each
+% package file to set the correct label.
+%
+% \cs{SetDefaultHookLabel} is not allowed in the main document, where
+% the \meta{default label} is |top-level| and there is no
+% \cs{PopDefaultHookLabel} to end its effect.
+% It is also not allowed to change the \meta{default label} to
+% |top-level|.
% \end{function}
%
+% \subsubsection{The \texttt{top-level} label}
+% \label{sec:top-level}
+%
+% The |top-level| label, assigned to code added from the main document,
+% is different from other labels. Code added to hooks (usually
+% \cs{AtBeginDocument}) in the preamble is almost always to change
+% something defined by a package, so it should go at the very end of the
+% hook.
+%
+% Therefore, code added in the |top-level| is always executed at the end
+% of the hook, regardless of where it was declared. If the hook is
+% reversed (see \cs{NewReversedHook}), the |top-level| chunk is executed
+% at the very beginning instead.
+%
+% Rules regarding |top-level| have no effect: if a user wants to have a
+% specific set of rules for a code chunk, they should use a different
+% label to said code chunk, and provide a rule for that label instead.
+%
+% The |top-level| label is exclusive for the user, so trying to add code
+% with that label from a package results in an error.
%
% \subsubsection{Defining relations between hook code}
%
% The default assumption is that code added to hooks by different
-% packages is independent and the order in which it is executed is
-% irrelevant. While this is true in many case it is obviously false
-% in many others.
+% packages are independent and the order in which they are executed is
+% irrelevant. While this is true in many cases it is obviously false
+% in others.
%
% Before the hook management system was introduced
% packages had to take elaborate precaution to determine of some other
@@ -519,7 +595,7 @@
% There can only be a single relation between two labels for a
% given hook,
% i.e., a later \cs{DeclareHookrule} overwrites any previous
-% delcaration.
+% declaration.
%
% The \meta{hook} and \meta{label} can be specified using the
% dot-syntax to denote the current package name.
@@ -589,7 +665,8 @@
% its permanent code pool, or to its ``next'' token list. The hook
% doesn't need to be declared to have code added to its code pool.
% A hook is said to exist when it was declared with \cs{NewHook} or
-% some variant thereof.
+% some variant thereof. Generic \hook{file} and \hook{env} hooks are
+% automatically declared when code is added to them.
%
% \begin{function}[EXP]{\IfHookEmptyTF}
% \begin{syntax}
@@ -650,6 +727,7 @@
% \item
% any code executed on the next invocation only.
% \end{itemize}
+% \end{function}
%
% \cs{LogHook} prints the information to the |.log| file, and
% \cs{ShowHook} prints them to the terminal/command window and starts
@@ -660,6 +738,7 @@
%
%^^A % Code for the listing below:
%^^A \NewHook{example-hook}
+%^^A \AddToHook{example-hook}{[code from 'top-level']}
%^^A \AddToHook{example-hook}[foo]{[code from package 'foo']}
%^^A \AddToHook{example-hook}[bar]{[from package 'bar']}
%^^A \AddToHook{example-hook}[baz]{[package 'baz' is here]}
@@ -680,13 +759,15 @@
% > foo -> [code from package 'foo']
% > bar -> [from package 'bar']
% > baz -> [package 'baz' is here]
+% > Document-level (top-level) code (executed last):
+% > -> [code from 'top-level']
% > Extra code for next invocation:
% > -> [one-time code]
% > Rules:
% > foo|baz with relation >
% > baz|bar with default relation <
% > Execution order (after applying rules):
-% > bar, baz, foo.
+% > baz, foo, bar.
% \end{verbatim}
%
% In the listing above, lines~3 to~5 show the three code chunks added
@@ -695,7 +776,18 @@
% \quad \meta{label}\verb| -> |\meta{code}
% \end{quote}
%
-% Line~7 shows the code chunk for the next execution of the hook in
+% Line~7 shows the code chunk added by the user in the main document
+% (labeled |top-level|) in the format
+% \begin{quote}
+% \quad\verb|Document-level (top-level) code (executed |%^^A
+% \meta{first\texttt{\string|}last}\verb|):|\\
+% \quad\verb| -> |\meta{\texttt{top-level} code}
+% \end{quote}
+% This code will be either the first or last code executed by the hook
+% (|last| if the hook is normal, |first| if it is reversed). This
+% chunk is not affected by rules and does not take part in sorting.
+%
+% Line~9 shows the code chunk for the next execution of the hook in
% the format
% \begin{quote}
% \quad \verb|-> |\meta{next-code}
@@ -705,7 +797,7 @@
% earlier, which can only be removed from that hook by doing
% \verb|\RemoveFromHook{|\meta{label}|}[example-hook]|.
%
-% Lines~9 and~10 show the rules declared that affect this hook in the
+% Lines~11 and~12 show the rules declared that affect this hook in the
% format
% \begin{quote}
% \quad \meta{label-1}\verb+|+\meta{label-2}| with |%^^A
@@ -715,11 +807,10 @@
% \meta{label-2}, in that order, as detailed in \cs{DeclareHookRule}.
% If the relation is \texttt{default} it means that that rule applies
% to \meta{label-1} and \meta{label-2} in \emph{all} hooks, (unless
-% overrided by a non-default relation).
+% overridden by a non-default relation).
%
-% Finally, line~12 lists the labels in the hook after sorting;
+% Finally, line~14 lists the labels in the hook after sorting;
% that is, in the order they will be executed when the hook is used.
-% \end{function}
%
%
% \subsubsection{Debugging hook code}
@@ -749,8 +840,9 @@
% \begin{function}
% {\hook_new:n,\hook_new_reversed:n,\hook_new_pair:nn}
% \begin{syntax}
-% \cs{hook_new:n}\Arg{hook}
-% \cs{hook_new_pair:nn}\Arg{hook-1}\Arg{hook-2}
+% \cs{hook_new:n} \Arg{hook}
+% \cs{hook_new_reversed:n} \Arg{hook}
+% \cs{hook_new_pair:nn} \Arg{hook-1} \Arg{hook-2}
% \end{syntax}
% Creates a new \meta{hook} with normal or reverse ordering of code
% chunks. \cs{hook_new_pair:nn} creates a pair of such hooks with
@@ -782,7 +874,6 @@
% Changes the \Arg{hook} status so that from now on any addition to
% the hook code is executed immediately. Then execute any
% \Arg{hook} code already set up.
-% \fmi{better L3 name?}
%
% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
% A leading |.| is treated literally.
@@ -954,17 +1045,19 @@
% \texttt{packageB}, \texttt{packageC} which you can verify with
% \cs{ShowHook}\texttt{\{myhook\}}:
%\begin{verbatim}
-% The hook 'myhook':
-% Code chunks:
-% packageA -> \typeout {A}
-% packageB -> \typeout {B}
-% packageC -> \typeout {C}
-% Extra code next invocation:
-% ---
-% Rules:
-% ---
-% Execution order:
-% packageA, packageB, packageC
+% -> The hook 'myhook':
+% > Code chunks:
+% > packageA -> \typeout {A}
+% > packageB -> \typeout {B}
+% > packageC -> \typeout {C}
+% > Document-level (top-level) code (executed last):
+% > ---
+% > Extra code for next invocation:
+% > ---
+% > Rules:
+% > ---
+% > Execution order:
+% > packageA, packageB, packageC.
%\end{verbatim}
% The reason is that the code chunks are internally saved in a property list
% and the initial order of such a property list is the order in
@@ -988,17 +1081,19 @@
%\end{verbatim}
% instead of the previous lines we get
%\begin{verbatim}
-% The hook 'myhook':
-% Code chunks:
-% packageA -> \typeout {A}
-% packageB -> \typeout {B}
-% packageC -> \typeout {C}
-% Extra code next invocation:
-% ---
-% Rules:
-% packageA|packageB with relation before
-% Execution order (after applying rules):
-% packageA, packageC, packageB
+% -> The hook 'myhook':
+% > Code chunks:
+% > packageA -> \typeout {A}
+% > packageB -> \typeout {B}
+% > packageC -> \typeout {C}
+% > Document-level (top-level) code (executed last):
+% > ---
+% > Extra code for next invocation:
+% > ---
+% > Rules:
+% > packageB|packageA with relation >
+% > Execution order (after applying rules):
+% > packageA, packageC, packageB.
%\end{verbatim}
% As you can see the code chunks are still in the same order, but
% in the execution order for the labels \texttt{packageB} and
@@ -1010,7 +1105,7 @@
% doesn't run at all as there is nothing to resolve).
% Incidentally, if we had instead specified the redundant rule
%\begin{verbatim}
-% \DeclareHookRule{myhook}{packageB}{before}{label-3}
+% \DeclareHookRule{myhook}{packageB}{before}{packageC}
%\end{verbatim}
% the execution order would not have changed.
%
@@ -1039,17 +1134,17 @@
% \AddToHook{env/quote/after} [package-1]{\end{itshape}}
%\end{verbatim}
% As a result, all quotes will be in italics.
-% Now suppose further that the user wants the quotes also in blue
-% and therefore adds:
+% Now suppose further that another |package-too| makes the quotes
+% also in blue and therefore adds:
%\begin{verbatim}
% \usepackage{color}
-% \AddToHook{env/quote/before}{\begin{color}{blue}}
-% \AddToHook{env/quote/after} {\end{color}}
+% \AddToHook{env/quote/before}[package-too]{\begin{color}{blue}}
+% \AddToHook{env/quote/after} [package-too]{\end{color}}
%\end{verbatim}
% Now if the \hook{env/quote/after} hook would be a normal hook we
% would get the same execution order in both hooks, namely:
%\begin{verbatim}
-% package-1, top-level
+% package-1, package-too
%\end{verbatim}
% (or vice versa) and as a result, would get:
%\begin{verbatim}
@@ -1063,16 +1158,18 @@
% the correct sequence and \cs{ShowHook} would give us the
% following output:
%\begin{verbatim}
-% The hook 'env/quote/after':
-% Code chunks:
-% package-1 -> \end {itshape}
-% top-level -> \end {color}
-% Extra code next invocation:
-% ---
-% Rules:
-% ---
-% Execution order (after reversal):
-% top-level, package-1
+% -> The hook 'env/quote/after':
+% > Code chunks:
+% > package-1 -> \end {itshape}
+% > package-too -> \end {color}
+% > Document-level (top-level) code (executed first):
+% > ---
+% > Extra code for next invocation:
+% > ---
+% > Rules:
+% > ---
+% > Execution order (after reversal):
+% > package-too, package-1.
%\end{verbatim}
%
% The reversal of the execution order happens before applying any
@@ -1206,13 +1303,15 @@
% \hook{begindocument}
% (which is executed inside \verb=\begin{document}=).
% However, all code added this way is labeled with the label
-% \hook{top-level} if done outside of a package or class or with the
-% package/class name if called inside such a file.
+% \hook{top-level} (see section~\ref{sec:top-level})
+% if done outside of a package or class or with the
+% package/class name if called inside such a file
+% (see section~\ref{sec:default-label}).
%
% This way one can add further code to the hook using
% \cs{AddToHook} or \cs{AtBeginDocument} using a different label
% and explicitly order the code chunks as necessary, e.g., run some
-% code before or after the \hook{top-level} code. When using the
+% code before or after another package's code. When using the
% optional argument the call is equivalent to running
% \cs{AddToHook} \texttt{\{begindocument\}} \oarg{label}
% \Arg{code}.
@@ -1250,8 +1349,8 @@
%
% The few hooks that existed previously in \LaTeXe{} used internally
% commands such as \cs{@begindocumenthook} and packages sometimes
-% augemented them directly rather than working through
-% \cs{AtBeginDocumement}. For that reason there is currently support
+% augmented them directly rather than working through
+% \cs{AtBeginDocument}. For that reason there is currently support
% for this, that is, if the system detects that such an internal
% legacy hook command contains code it adds it to the new hook
% system under the label \texttt{legacy} so that it doesn't get
@@ -1333,8 +1432,8 @@
% \cs{BeforeBeginEnvironment} \oarg{label} \Arg{code}
% \end{syntax}
% This declaration adds to the \hook{env/\meta{env}/before} hook
-% using by default the current package or class name as a label or
-% \texttt{top-level} if used in the document directly.
+% using the \meta{label}. If \meta{label} is not given, the
+% \meta{default label} is used (see section~\ref{sec:default-label}).
% \end{function}
%
% \begin{function}{\AtBeginEnvironment}
@@ -1516,7 +1615,7 @@
%
%
% It is in also possible to use the generic \hook{env/document/end}
-% hook which is execuded by \cs{end}, i.e., just in front of the
+% hook which is executed by \cs{end}, i.e., just in front of the
% first hook above. Note however that the other generic \cs{end}
% environment hook, i.e., \hook{env/document/after} will never get
% executed, because by that time \LaTeX{} has finished the document
@@ -1774,6 +1873,82 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_tl_set:Nn,\@@_tl_set:Nx,
+% \@@_tl_set:cn,\@@_tl_set:cx}
+% Private copies of a few \pkg{expl3} functions. \pkg{l3debug} will
+% only add debugging to the public names, not to these copies, so we
+% don't have to use \cs{debug_suspend:} and \cs{debug_resume:}
+% everywhere.
+%
+% Functions like \cs{@@_tl_set:Nn} have to be redefined, rather than
+% copied because in \pkg{expl3} they use
+% \cs[no-index]{__kernel_tl_(g)set:Nx}, which is also patched by
+% \pkg{l3debug}.
+% \changes{v1.0h}{2021/01/07}{Manually define some \pkg{l3tl} commands
+% to work around \pkg{expl3} changes}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tl_set:Nn #1#2
+ { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \@@_tl_set:Nx #1#2
+ { \cs_set_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \@@_tl_set:Nn { c }
+\cs_generate_variant:Nn \@@_tl_set:Nx { c }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_gset:Nn,\@@_tl_gset:No,\@@_tl_gset:Nx,
+% \@@_tl_gset:cn,\@@_tl_gset:co,\@@_tl_gset:cx}
+% Same as above.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tl_gset:Nn #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \@@_tl_gset:No #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
+\cs_new_protected:Npn \@@_tl_gset:Nx #1#2
+ { \cs_gset_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \@@_tl_gset:Nn { c }
+\cs_generate_variant:Nn \@@_tl_gset:No { c }
+\cs_generate_variant:Nn \@@_tl_gset:Nx { c }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_gput_right:Nn,\@@_tl_gput_right:No,\@@_tl_gput_right:cn}
+% Same as above.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tl_gput_right:Nn #1#2
+ { \@@_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+\cs_generate_variant:Nn \@@_tl_gput_right:Nn { No, cn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_gput_left:Nn,\@@_tl_gput_left:No}
+% Same as above.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tl_gput_left:Nn #1#2
+ {
+ \@@_tl_gset:Nx #1
+ { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
+\cs_generate_variant:Nn \@@_tl_gput_left:Nn { No }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_gset_eq:NN}
+% Same as above.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_tl_gset_eq:NN \tl_gset_eq:NN
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_gclear:N,\@@_tl_gclear:c}
+% Same as above.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_tl_gclear:N #1
+ { \@@_tl_gset_eq:NN #1 \c_empty_tl }
+\cs_generate_variant:Nn \@@_tl_gclear:N { c }
+% \end{macrocode}
+% \end{macro}
+%
%
% \subsection{Providing new hooks}
%
@@ -1808,6 +1983,13 @@
% $\meta{reversed}1$ is $+1$ for normal hooks and $-1$ for reversed
% ones.
%
+% \item[\cs{@@_toplevel~\meta{name}}] This token list stores the code
+% inserted in the hook from the user's document, in the |top-level|
+% label. This label is special, and doesn't participate in sorting.
+% Instead, all code is appended to it and executed after (or before,
+% if the hook is reversed) the normal
+% hook code, but before the |next| code chunk.
+%
% \item[\cs{@@_next~\meta{name}}] Finally there is extra code
% (normally empty) that is used on the next invocation of the hook
% (and then deleted). This can be used to define some special
@@ -1890,15 +2072,16 @@
% \begin{macro}{\@@_declare:n}
% This function declares the basic data structures for a hook without
% actually declaring the hook itself. This is needed to allow adding
-% to undeclared hooks. Here it is unnecessary to check whether both
-% variables exist, since both are declared at the same time (either
-% both exist, or neither).
+% to undeclared hooks. Here it is unnecessary to check whether all
+% variables exist, since all three are declared at the same time
+% (either all of them exist, or none).
% \begin{macrocode}
\cs_new_protected:Npn \@@_declare:n #1
{
\@@_if_exist:nF {#1}
{
\prop_new:c { g_@@_#1_code_prop }
+ \tl_new:c { @@_toplevel~#1 }
\tl_new:c { @@_next~#1 }
}
}
@@ -1951,13 +2134,6 @@
\cs_new_protected:Npn \@@_include_legacy_code_chunk:n #1
{
% \end{macrocode}
-% If the \pkg{expl3} code is run with checking on then assigning or
-% using non L3 names such as \cs{@enddocumenthook} with \pkg{expl3}
-% functions will trigger warnings so we run this code with
-% debugging explicitly suspended.
-% \begin{macrocode}
- \debug_suspend:
-% \end{macrocode}
% If the macro doesn't exist (which is the usual case) then nothing
% needs to be done.
% \begin{macrocode}
@@ -1975,10 +2151,9 @@
% Once added to the hook, we need to clear it otherwise it might
% get added again later if the hook data gets updated.
% \begin{macrocode}
- \tl_gclear:c { @#1hook }
+ \@@_tl_gclear:c { @#1hook }
}
}
- \debug_resume:
}
% \end{macrocode}
% \end{macro}
@@ -1990,79 +2165,76 @@
% \begin{macro}[EXP]{\@@_parse_label_default:n}
% This macro checks if a label was given (not \cs{c_novalue_tl}), and
% if so, tries to parse the label looking for a leading \verb|.| to
-% replace for \cs{@currname}. Otherwise \cs{@@_currname_or_default:n}
-% is used to pick \cs{@currname} or the fallback value.
-%
-% The default |top-level| is hard-coded here. It once was an
-% argument, but it's no longer needed. \pho{can't remember why}
+% replace by \cs{@@_currname_or_default:}.
% \begin{macrocode}
\cs_new:Npn \@@_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
- { \@@_currname_or_default:n { top-level } }
- {
- \tl_trim_spaces_apply:nN {#1}
- \@@_parse_dot_label:nn { top-level }
- }
+ { \@@_currname_or_default: }
+ { \tl_trim_spaces_apply:nN {#1} \@@_parse_dot_label:n }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_parse_dot_label:nn}
+% \begin{macro}[EXP]{\@@_parse_dot_label:n}
% \begin{macro}[EXP]{
-% \@@_parse_dot_label:nw,
+% \@@_parse_dot_label:w,
% \@@_parse_dot_label_cleanup:w,
-% \@@_parse_dot_label_aux:nw
+% \@@_parse_dot_label_aux:w
% }
% Start by checking if the label is empty, which raises an error, and
% uses the fallback value. If not,
% split the label at a \verb|./|, if any, and check if no tokens are
% before the \verb|./|, or if the only character is a \verb|.|.
% If these requirements are fulfilled, the leading
-% \verb|.| is replaced with \cs{@@_currname_or_default:n}. Otherwise
+% \verb|.| is replaced with \cs{@@_currname_or_default:}. Otherwise
% the label is returned unchanged.
% \begin{macrocode}
-\cs_new:Npn \@@_parse_dot_label:nn #1 #2
+\cs_new:Npn \@@_parse_dot_label:n #1
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nnn { hooks } { empty-label } {#2}
- #2
+ \msg_expandable_error:nn { hooks } { empty-label }
+ \@@_currname_or_default:
}
{
\str_if_eq:nnTF {#1} { . }
- { \@@_currname_or_default:n {#2} }
- { \@@_parse_dot_label:nw {#2} #1 ./ \s_@@_mark }
+ { \@@_currname_or_default: }
+ { \@@_parse_dot_label:w #1 ./ \s_@@_mark }
}
}
-\cs_new:Npn \@@_parse_dot_label:nw #1 #2 ./ #3 \s_@@_mark
+\cs_new:Npn \@@_parse_dot_label:w #1 ./ #2 \s_@@_mark
{
- \tl_if_empty:nTF {#2}
- { \@@_parse_dot_label_aux:nw {#1} #3 \s_@@_mark }
+ \tl_if_empty:nTF {#1}
+ { \@@_parse_dot_label_aux:w #2 \s_@@_mark }
{
- \tl_if_empty:nTF {#3}
- { \@@_make_name:n {#2} }
- { \@@_parse_dot_label_cleanup:w #2 ./ #3 \s_@@_mark }
+ \tl_if_empty:nTF {#2}
+ { \@@_make_name:n {#1} }
+ { \@@_parse_dot_label_cleanup:w #1 ./ #2 \s_@@_mark }
}
}
\cs_new:Npn \@@_parse_dot_label_cleanup:w #1 ./ \s_@@_mark {#1}
-\cs_new:Npn \@@_parse_dot_label_aux:nw #1 #2 ./ \s_@@_mark
- { \@@_currname_or_default:n {#1} / \@@_make_name:n {#2} }
+\cs_new:Npn \@@_parse_dot_label_aux:w #1 ./ \s_@@_mark
+ { \@@_currname_or_default: / \@@_make_name:n {#1} }
% \end{macrocode}
% \end{macro}
% \end{macro}
%
-% \begin{macro}[EXP]{\@@_currname_or_default:n}
+% \begin{macro}[EXP]{\@@_currname_or_default:}
% Uses \cs{g_@@_hook_curr_name_tl} if it is set, otherwise tries
-% \cs{@currname}. If neither is set, uses the fallback value
-% \verb|#1| (usually \texttt{top-level}).
+% \cs{@currname}. If neither is set, raises an error and uses the
+% fallback value \verb|label-missing|.
% \begin{macrocode}
-\cs_new:Npn \@@_currname_or_default:n #1
+\cs_new:Npn \@@_currname_or_default:
{
\tl_if_empty:NTF \g_@@_hook_curr_name_tl
{
\tl_if_empty:NTF \@currname
- { \@@_make_name:n {#1} }
+ {
+ \msg_expandable_error:nnn { hooks } { should-not-happen }
+ { Empty~default~label. }
+ \@@_make_name:n { label-missing }
+ }
{ \@currname }
}
{ \g_@@_hook_curr_name_tl }
@@ -2071,7 +2243,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_make_name:n,\@@_make_name:w}
-% Provides a standard sanitisation of a hook's name.
+% Provides a standard sanitization of a hook's name.
% It uses \cs{cs:w} to build a control sequence out of the hook name,
% then uses \cs{cs_to_str:N} to get the string representation of that,
% without the escape character. \cs{cs:w}-based expansion is used
@@ -2213,14 +2385,33 @@
% \end{macrocode}
% Then try to get the code chunk labeled \verb=#2= from the hook.
% If there's code already there, then append \verb=#3= to that,
-% otherwise just put \verb=#3=.
+% otherwise just put \verb=#3=. If the current label is |top-level|,
+% the code is added to a dedicated token list
+% \cs[no-index]{@@_toplevel~\meta{hook}} that goes at the end of the
+% hook (or at the beginning, for a reversed hook), just before
+% \cs[no-index]{@@_next~\meta{hook}}.
+% \begin{macrocode}
+ \str_if_eq:nnTF {#2} { top-level }
+ {
+ \str_if_eq:eeTF { top-level } { \@@_currname_or_default: }
+ {
+% \end{macrocode}
+% If the hook's basic structure does not exist, we need to declare it
+% with \cs{@@_declare:n}.
% \begin{macrocode}
- \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl
+ \@@_declare:n {#1}
+ \@@_tl_gput_right:cn { @@_toplevel~#1 } {#3}
+ }
+ { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ }
{
- \prop_gput:cno { g_@@_#1_code_prop } {#2}
- { \l_@@_return_tl #3 }
+ \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl
+ {
+ \prop_gput:cno { g_@@_#1_code_prop } {#2}
+ { \l_@@_return_tl #3 }
+ }
+ { \prop_gput:cnn { g_@@_#1_code_prop } {#2} {#3} }
}
- { \prop_gput:cnn { g_@@_#1_code_prop } {#2} {#3} }
}
% \end{macrocode}
% \end{macro}
@@ -2381,11 +2572,20 @@
{ \@@_strip_double_slash:n {#1} }
\cs_new:Npn \@@_strip_double_slash:n #1
{ \@@_strip_double_slash:w #1 // \s_@@_mark }
-\cs_new:Npn \@@_strip_double_slash:w #1 // #2 \s_@@_mark
+% \end{macrocode}
+% This function is always called after testing if the argument is a
+% file hook with \cs{@@_if_file_hook:wTF}, so we can assume it has
+% three parts (it is either \verb|file/before/...| or
+% \verb|file/after/...|), so we use \verb|#1/#2/#3 //| instead of just
+% \verb|#1 //| to prevent losing a slash if the file name is empty.
+% \changes{v1.0h}{2021/01/07}{Assume hook name has at least three
+% nonempty parts (gh/464)}
+% \begin{macrocode}
+\cs_new:Npn \@@_strip_double_slash:w #1/#2/#3 // #4 \s_@@_mark
{
- \tl_if_empty:nTF {#2}
- {#1}
- { \@@_strip_double_slash:w #1 / #2 \s_@@_mark }
+ \tl_if_empty:nTF {#4}
+ { #1/#2/#3 }
+ { \@@_strip_double_slash:w #1/#2/#3 / #4 \s_@@_mark }
}
% \end{macrocode}
% \end{macro}
@@ -2434,24 +2634,48 @@
% hook before its defined (see section~\ref{sec:querying}).
% \begin{macrocode}
\@@_if_exist:nTF {#1}
+ {
% \end{macrocode}
% Then remove the chunk and run \cs{@@_update_hook_code:n} so
% that the execution token list reflects the change if we are after
% \verb=\begin{document}=.
+%
+% If all code is to be removed, clear the code pool
+% \cs[no-index]{g_@@_\meta{hook}_code_prop}, the top-level code
+% \cs[no-index]{@@_toplevel~\meta{hook}}, and the next-execution code
+% \cs[no-index]{@@_next~\meta{hook}}.
% \begin{macrocode}
- {
\str_if_eq:nnTF {#2} {*}
- { \prop_gclear:c { g_@@_#1_code_prop } }
{
+ \prop_gclear:c { g_@@_#1_code_prop }
+ \@@_tl_gclear:c { @@_toplevel~#1 }
+ \@@_tl_gclear:c { @@_next~#1 }
+ }
+ {
+% \end{macrocode}
+% If the label is |top-level| then clear the token list, as all code
+% there is under the same label. Marked removal is not implemented
+% for |top-level| because it is hard to reliably know that no code
+% was added to \cs[no-index]{@@_toplevel~\meta{hook}} (granted that
+% an empty code could be interpreted as that, but then it differs in
+% behaviour from other labels, in which an empty chunk is still valid
+% for removal). Besides, it doesn't make much (if any) sense for
+% packages to remove |top-level| code. So here the chunk is just
+% cleared unconditionally.
+% \begin{macrocode}
+ \str_if_eq:nnTF {#2} { top-level }
+ { \@@_tl_gclear:c { @@_toplevel~#1 } }
+ {
% \end{macrocode}
-% Check if the label being removed exists in the code pool. If it does,
-% just call \cs{@@_gremove_code_do:nn} to do the removal, otherwise mark it
-% to be removed.
+% Otherwise check if the label being removed exists in the code pool.
+% If it does, just call \cs{@@_gremove_code_do:nn} to do the removal,
+% otherwise mark it to be removed.
% \begin{macrocode}
- \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl
- { \@@_gremove_code_do:nn }
- { \@@_mark_removal:nn }
- {#1} {#2}
+ \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl
+ { \@@_gremove_code_do:nn }
+ { \@@_mark_removal:nn }
+ {#1} {#2}
+ }
}
% \end{macrocode}
% Finally update the code, if the hook exists.
@@ -2470,6 +2694,7 @@
% \end{macrocode}
%
% \begin{macro}{\@@_gremove_code_do:nn}
+% Remove code for a given label.
% \begin{macrocode}
\cs_new_protected:Npn \@@_gremove_code_do:nn #1 #2
{ \prop_gremove:cn { g_@@_#1_code_prop } {#2} }
@@ -2605,7 +2830,6 @@
% Then we call the function to handle the given rule. Throw an error if the
% rule is invalid.
% \begin{macrocode}
- \debug_suspend:
\cs_if_exist_use:cTF { @@_rule_#3_gset:nnn }
{
{#1} {#2} {#4}
@@ -2613,7 +2837,6 @@
}
{ \msg_error:nnnnnn { hooks } { unknown-rule }
{#1} {#2} {#3} {#4} }
- \debug_resume:
}
% \end{macrocode}
% \end{macro}
@@ -2639,7 +2862,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_rule_before_gset:nnn #1#2#3
{
- \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl }
+ \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl }
{ \@@_label_ordered:nnTF {#2} {#3} { < } { > } }
}
\cs_new_eq:cN { @@_rule_<_gset:nnn } \@@_rule_before_gset:nnn
@@ -2648,7 +2871,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_rule_after_gset:nnn #1#2#3
{
- \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#3} {#2} _tl }
+ \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#3} {#2} _tl }
{ \@@_label_ordered:nnTF {#3} {#2} { < } { > } }
}
\cs_new_eq:cN { @@_rule_>_gset:nnn } \@@_rule_after_gset:nnn
@@ -2661,7 +2884,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_rule_voids_gset:nnn #1#2#3
{
- \tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl }
+ \@@_tl_gset:cx { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl }
{ \@@_label_ordered:nnTF {#2} {#3} { -> } { <- } }
}
% \end{macrocode}
@@ -2675,9 +2898,9 @@
% together in hook |#1|.
% \begin{macrocode}
\cs_new_protected:cpn { @@_rule_incompatible-error_gset:nnn } #1#2#3
- { \tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xE } }
+ { \@@_tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xE } }
\cs_new_protected:cpn { @@_rule_incompatible-warning_gset:nnn } #1#2#3
- { \tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xW } }
+ { \@@_tl_gset:cn { g_@@_#1_rule_ \@@_label_pair:nn {#2} {#3} _tl } { xW } }
% \end{macrocode}
% \end{macro}
%
@@ -2722,7 +2945,7 @@
% \end{macro}
%
% \begin{macro}[EXP]{\@@_if_label_case:nnnnn}
-% To avoid doing the string comparison twice in \cs{@@_initialize_single:NNNn}
+% To avoid doing the string comparison twice in \cs{@@_initialize_single:NNn}
% (once with \cs{str_if_eq:nn} and again with \cs{@@_label_ordered:nn}),
% we use a three-way branching macro that will compare |#1| and |#2|
% and expand to \cs{use_i:nnn} if they are equal, \cs{use_ii:nn} if
@@ -2800,7 +3023,6 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_initialize_hook_code:n #1
{
- \debug_suspend:
\@@_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
'#1' \on@line :^^J} }
% \end{macrocode}
@@ -2815,17 +3037,22 @@
% If there aren't any code
% chunks for the current hook, there is no point in even starting
% the sorting routine so we make a quick test for that and in that
-% case just update \cs{@@~\meta{hook}} to hold the next
-% code. If there are code chunks we call
-% \cs{@@_initialize_single:NNNn} and pass to it ready made csnames
+% case just update \cs{@@~\meta{hook}} to hold the |top-level| and
+% |next| code chunks. If there are code chunks we call
+% \cs{@@_initialize_single:NNn} and pass to it ready made csnames
% as they are needed several times inside. This way we save a bit
% on processing time if we do that up front.
% \begin{macrocode}
\hook_if_exist:nT {#1}
{
\prop_if_empty:cTF {g_@@_#1_code_prop}
- { \tl_gset:co { @@~#1 }
- { \cs:w @@_next~#1 \cs_end: } }
+ {
+ \@@_tl_gset:co { @@~#1 }
+ {
+ \cs:w @@_toplevel~#1 \exp_after:wN \cs_end:
+ \cs:w @@_next~#1 \cs_end:
+ }
+ }
{
% \end{macrocode}
% By default the algorithm sorts the code chunks and then saves the
@@ -2836,9 +3063,9 @@
% in preparation is to change two definitions used later on.
% \begin{macrocode}
\@@_if_reversed:nTF {#1}
- { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_left:NV
+ { \cs_set_eq:NN \@@_tl_gput:Nn \@@_tl_gput_left:Nn
\cs_set_eq:NN \@@_clist_gput:NV \clist_gput_left:NV }
- { \cs_set_eq:NN \@@_tl_gput:NV \tl_gput_right:NV
+ { \cs_set_eq:NN \@@_tl_gput:Nn \@@_tl_gput_right:Nn
\cs_set_eq:NN \@@_clist_gput:NV \clist_gput_right:NV }
% \end{macrocode}
%
@@ -2848,9 +3075,8 @@
% save the old code property list so that it can be restored later.
% \begin{macrocode}
\prop_set_eq:Nc \l_@@_work_prop { g_@@_#1_code_prop }
- \@@_initialize_single:cccn
- { @@~#1 } { @@_next~#1 }
- { g_@@_#1_labels_clist } {#1}
+ \@@_initialize_single:ccn
+ { @@~#1 } { g_@@_#1_labels_clist } {#1}
% \end{macrocode}
% For debug display we want to keep track of those hooks that
% actually got code added to them, so we record that in plist. We
@@ -2862,7 +3088,6 @@
\g_@@_used_prop {#1}{} }
}
}
- \debug_resume:
}
% \end{macrocode}
% \end{macro}
@@ -2918,12 +3143,13 @@
% \end{macro}
%
%
-% \begin{macro}{\@@_initialize_single:NNNn,\@@_initialize_single:cccn}
+% \begin{macro}{\@@_initialize_single:NNn,\@@_initialize_single:ccn}
%
-% \cs{@@_initialize_single:NNNn} implements the sorting of the code
+% \cs{@@_initialize_single:NNn} implements the sorting of the code
% chunks for a hook and saves the result in the token list for fast
-% execution (\verb=#3=). The arguments are \meta{hook-code-plist},
-% \meta{hook-code-tl}, \meta{hook-next-code-tl},
+% execution (\verb=#4=). The arguments are \meta{hook-code-plist},
+% \meta{hook-code-tl}, \meta{hook-top-level-code-tl},
+% \meta{hook-next-code-tl},
% \meta{hook-ordered-labels-clist} and \meta{hook-name} (the latter
% is only used for debugging---the \meta{hook-rule-plist} is accessed
% using the \meta{hook-name}).
@@ -2935,8 +3161,12 @@
% far as possible. The result is a restriction I do not test for at
% the moment: a label can't be equal to the number 0! \fmi{Needs
% checking for, just in case}
+%
+% ^^A #1 <- \@@~#1
+% ^^A #2 <- \g_@@_#1_labels_clist
+% ^^A #3 <- #1
% \begin{macrocode}
-\cs_new_protected:Npn \@@_initialize_single:NNNn #1#2#3#4
+\cs_new_protected:Npn \@@_initialize_single:NNn #1#2#3
{
% \end{macrocode}
% Step T1: Initialize the data structure \ldots
@@ -2947,7 +3177,7 @@
%
% Store the name of the hook:
% \begin{macrocode}
- \tl_set:Nn \l_@@_cur_hook_tl {#4}
+ \tl_set:Nn \l_@@_cur_hook_tl {#3}
% \end{macrocode}
%
% We loop over the property list holding the code and record all
@@ -2961,7 +3191,7 @@
{
\int_incr:N \l_@@_labels_int
\seq_put_right:Nn \l_@@_labels_seq {##1}
- \tl_set:cn { \@@_tl_csname:n {##1} }{0}
+ \@@_tl_set:cn { \@@_tl_csname:n {##1} } { 0 }
\seq_clear_new:c { \@@_seq_csname:n {##1} }
}
% \end{macrocode}
@@ -2987,7 +3217,7 @@
{ \prop_map_break: }
{ \@@_apply_label_pair:nnn {##1} {####1} }
{ \@@_apply_label_pair:nnn {####1} {##1} }
- {#4}
+ {#3}
}
}
% \end{macrocode}
@@ -3014,8 +3244,8 @@
% \end{macrocode}
%
% \begin{macrocode}
- \tl_gclear:N #1
- \clist_gclear:N #3
+ \@@_tl_gclear:N #1
+ \clist_gclear:N #2
% \end{macrocode}
%
% The whole loop combines steps T5--T7:
@@ -3027,11 +3257,11 @@
% \begin{macrocode}
\int_decr:N \l_@@_labels_int
\prop_get:NVN \l_@@_work_prop \l_@@_front_tl \l_@@_return_tl
- \@@_tl_gput:NV #1 \l_@@_return_tl
+ \exp_args:NNV \@@_tl_gput:Nn #1 \l_@@_return_tl
% \end{macrocode}
%
% \begin{macrocode}
- \@@_clist_gput:NV #3 \l_@@_front_tl
+ \@@_clist_gput:NV #2 \l_@@_front_tl
\@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} }
% \end{macrocode}
%
@@ -3078,27 +3308,31 @@
}
% \end{macrocode}
% After we have added all hook code to \verb=#1= we finish it off
-% with adding extra code for a one time execution. That is stored
-% in \verb=#2= but is normally empty.
-% \begin{macrocode}
- \tl_gput_right:Nn #1 {#2}
+% with adding extra code for the |top-level| (\verb=#2=) and for one
+% time execution (\verb=#3=). These should normally be empty. The
+% |top-level| code is added with \cs{@@_tl_gput:Nn} as that might
+% change for a reversed hook (then |top-level| is the very first code
+% chunk added). The |next| code is always added last.
+% \begin{macrocode}
+ \exp_args:NNo \@@_tl_gput:Nn #1 { \cs:w @@_toplevel~#3 \cs_end: }
+ \@@_tl_gput_right:No #1 { \cs:w @@_next~#3 \cs_end: }
}
% \end{macrocode}
-%
+%
% \begin{macrocode}
-\cs_generate_variant:Nn \@@_initialize_single:NNNn {ccc}
+\cs_generate_variant:Nn \@@_initialize_single:NNn { cc }
% \end{macrocode}
% \end{macro}
%
%
%
-% \begin{macro}{\@@_tl_gput:NV,\@@_clist_gput:NV}
+% \begin{macro}{\@@_tl_gput:Nn,\@@_clist_gput:NV}
% These append either on the right (normal hook) or on the left
% (reversed hook). This is setup up in
% \cs{@@_initialize_hook_code:n}, elsewhere their behavior is undefined.
% \begin{macrocode}
-\cs_new:Npn \@@_tl_gput:NV {\ERROR}
-\cs_new:Npn \@@_clist_gput:NV {\ERROR}
+\cs_new:Npn \@@_tl_gput:Nn { \ERROR }
+\cs_new:Npn \@@_clist_gput:NV { \ERROR }
% \end{macrocode}
% \end{macro}
%
@@ -3347,7 +3581,8 @@
% \begin{macrocode}
\hook_if_exist:nF {#1}
{ \@@_log_line:x { is~not~declared! } }
- \@@_if_exist:nTF {#1}
+ \hook_if_empty:nTF {#1}
+ { #2 { The~hook~is~empty } }
{
\@@_log_line:x { Code~chunks: }
\prop_if_empty:cTF { g_@@_#1_code_prop }
@@ -3357,9 +3592,25 @@
{ \@@_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } }
}
% \end{macrocode}
-%
+%
+% If there is code in the |top-level| token list, print it:
+% \begin{macrocode}
+ \@@_log_line:x
+ {
+ Document-level~(top-level)~code
+ \hook_if_exist:nT {#1}
+ { ~(executed~\@@_if_reversed:nTF {#1} {first} {last} ) } :
+ }
+ \@@_log_line_indent:x
+ {
+ \tl_if_empty:cTF { @@_toplevel~#1 }
+ { --- }
+ { -> ~ \exp_args:Nv \tl_to_str:n { @@_toplevel~#1 } }
+ }
+% \end{macrocode}
+%
% \begin{macrocode}
- \@@_log_line:x { Extra~code~for~next~invocation:}
+ \@@_log_line:x { Extra~code~for~next~invocation: }
\@@_log_line_indent:x
{
\tl_if_empty:cTF { @@_next~#1 }
@@ -3427,7 +3678,6 @@
}
}
}
- { #2 { The~hook~is~empty. } }
}
% \end{macrocode}
%
@@ -3478,7 +3728,7 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_list_one_rule:nnn #1#2#3
{
- \@@_list_if_rule_exists:nnnF {#1} {#2} {#3} { }
+ \@@_list_if_rule_exists:nnnF {#1} {#2} {#3}
{ \@@_list_if_rule_exists:nnnF {#1} {#2} { ?? } { } }
}
\cs_new_protected:Npn \@@_list_if_rule_exists:nnnF #1#2#3
@@ -3486,7 +3736,9 @@
\if_cs_exist:w g_@@_ #3 _rule_ #1 | #2 _tl \cs_end:
\exp_args:Nv \@@_tmp:w
{ g_@@_ #3 _rule_ #1 | #2 _tl } { #1 | #2 } {#3}
+ \exp_after:wN \use_none:nn
\fi:
+ \use:n
}
% \end{macrocode}
% \end{macro}
@@ -3528,12 +3780,10 @@
{ \@@_normalize_hook_args:Nn \@@_gput_next_code:nn {#1} }
\cs_new_protected:Npn \@@_gput_next_code:nn #1 #2
{
- \debug_suspend:
\@@_declare:n {#1}
\hook_if_exist:nTF {#1}
{ \@@_gput_next_do:nn {#1} {#2} }
{ \@@_try_declaring_generic_next_hook:nn {#1} {#2} }
- \debug_resume:
}
\cs_new_protected:Npn \@@_gput_next_do:nn #1
{
@@ -3556,8 +3806,8 @@
\tl_if_empty:cT { @@~#2 }
{ \@@_update_hook_code:n {#2} }
\tl_if_empty:NT #1
- { \tl_gset:Nn #1 { \@@_clear_next:n {#2} } }
- \tl_gput_right:Nn #1
+ { \@@_tl_gset:Nn #1 { \@@_clear_next:n {#2} } }
+ \@@_tl_gput_right:Nn #1
}
\cs_new_protected:Npn \@@_clear_next:n #1
{ \cs_gset_eq:cN { @@_next~#1 } \c_empty_tl }
@@ -3565,7 +3815,6 @@
% \end{macro}
% \end{macro}
%
-%
% \subsection{Using the hook}
%
% \begin{macro}{\hook_use:n}
@@ -3720,8 +3969,9 @@
%
% \begin{macro}[pTF]{\hook_if_empty:n}
% Test if a hook is empty (that is, no code was added to that hook).
-% A hook being empty means that \emph{both} its
-% \cs[no-index]{g_@@_\meta{hook}_code_prop} and its
+% A \meta{hook} being empty means that all three of its
+% \cs[no-index]{g_@@_\meta{hook}_code_prop}, its
+% \cs[no-index]{@@_toplevel~\meta{hook}} and its
% \cs[no-index]{@@_next~\meta{hook}} are empty.
% \begin{macrocode}
\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF }
@@ -3730,7 +3980,11 @@
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g_@@_#1_code_prop } }
- { \tl_if_empty_p:c { @@_next~#1 } }
+ {
+ \bool_lazy_and_p:nn
+ { \tl_if_empty_p:c { @@_toplevel~#1 } }
+ { \tl_if_empty_p:c { @@_next~#1 } }
+ }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -3812,9 +4066,20 @@
%
% \begin{macrocode}
\msg_new:nnn { hooks } { empty-label }
- { Empty~code~label~\msg_line_context:.~Using~`#1'~instead. }
+ {
+ Empty~code~label~\msg_line_context:.~
+ Using~`\@@_currname_or_default:'~instead.
+ }
% \end{macrocode}
-%
+%
+% \begin{macrocode}
+\msg_new:nnn { hooks } { no-default-label }
+ {
+ Missing~(empty)~default~label~\msg_line_context:. \\
+ This~command~was~ignored.
+ }
+% \end{macrocode}
+%
% \begin{macrocode}
\msg_new:nnnn { hooks } { unknown-rule }
{ Unknown~ relationship~ `#3'~
@@ -3834,6 +4099,51 @@
% \end{macrocode}
%
% \begin{macrocode}
+\msg_new:nnnn { hooks } { misused-top-level }
+ {
+ Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\
+ 'top-level'~is~reserved~for~the~user's~document.
+ }
+ {
+ The~'top-level'~label~is~meant~for~user~code~only,~and~should~only~
+ be~used~(sparingly)~in~the~main~document.~Use~the~default~label~
+ '\@@_currname_or_default:'~for~this~\@cls@pkg,~or~another~
+ suitable~label.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn { hooks } { set-top-level }
+ {
+ You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\
+ \use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\
+ \msg_line_context:.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn { hooks } { ddhl-deprecated }
+ {
+ \iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\
+ Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\
+ The~deprecated~name~will~be~removed~in~the~next~release.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnn { hooks } { extra-pop-label }
+ {
+ Extra~\iow_char:N \\PopDefaultHookLabel. \\
+ This~command~will~be~ignored.
+ }
+\msg_new:nnn { hooks } { missing-pop-label }
+ {
+ Missing~\iow_char:N \\PopDefaultHookLabel. \\
+ The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
\msg_new:nnn { hooks } { should-not-happen }
{
ERROR!~This~should~not~happen.~#1 \\
@@ -3879,39 +4189,77 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\SetDefaultHookLabel}
+% \begin{macro}{\PushDefaultHookLabel}
+% \begin{macro}{\PopDefaultHookLabel}
% \begin{macro}{\DeclareDefaultHookLabel}
-% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_pop:}
+% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_push_aux:n}
+% \begin{macro}{\@@_curr_name_pop:}
+% \begin{macro}{\@@_end_document_label_check:}
% The token list \cs{g_@@_hook_curr_name_tl} stores the name of the
% current package/file to be used as label for hooks.
% Providing a consistent interface is tricky, because packages can
% be loaded within packages, and some packages may not use
-% \cs{DeclareDefaultHookLabel} to change the default label (in which case
-% \cs{@currname} is used, if set).
+% \cs{SetDefaultHookLabel} to change the default label (in which
+% case \cs{@currname} is used).
%
-% To pull that off, we keep a stack that contains the default label
-% for each level of input. The bottom of the stack contains the
-% default label for the top-level. Since the string \verb|top-level|
-% is hardcoded, here this item of the stack is empty. Also, since
-% we're in an input level, add \verb|lthooks| to the stack as well.
-% This stack should never go empty. An empty entry is added to the
-% stack to account for the \verb|top-level|. The item is empty so
-% that the hard-coded default is used, but a call to
-% \cs{DeclareDefaultHookLabel} will change it if needed.
+% To pull that one off, we keep a stack that contains the default
+% label for each level of input. The bottom of the stack contains the
+% default label for the |top-level| (this stack should never go
+% empty). If we're building the format, set the default label to be
+% |top-level|:
% \begin{macrocode}
-\seq_gpush:Nn \g_@@_name_stack_seq { }
+\tl_gset:Nn \g_@@_hook_curr_name_tl { top-level }
% \end{macrocode}
%
+% Then, in case we're in \pkg{latexrelease} we push something on
+% the stack to support roll forward. But in some rare cases,
+% \pkg{latexrelease} may be loaded inside another package (notably
+% \pkg{platexrelease}), so we'll first push the |top-level| entry:
+% \begin{macrocode}
+%<latexrelease>\seq_gput_right:Nn \g_@@_name_stack_seq { top-level }
+% \end{macrocode}
+% then we dissect the \cs{@currnamestack}, adding \cs{@currname} to
+% the stack:
+% \changes{v1.0f}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
+%<latexrelease>\cs_set_protected:Npn \@@_tmp:w #1 #2 #3
+%<latexrelease> {
+%<latexrelease> \quark_if_recursion_tail_stop:n {#1}
+%<latexrelease> \seq_gput_right:Nn \g_@@_name_stack_seq {#1}
+%<latexrelease> \@@_tmp:w
+%<latexrelease> }
+%<latexrelease>\exp_after:wN \@@_tmp:w \@currnamestack
+%<latexrelease> \q_recursion_tail \q_recursion_tail
+%<latexrelease> \q_recursion_tail \q_recursion_stop
+% \end{macrocode}
+% and finalle set the default label to be the \cs{@currname}:
+% \begin{macrocode}
+%<latexrelease>\tl_gset:Nx \g_@@_hook_curr_name_tl { \@currname }
+% \end{macrocode}
%
% Two commands keep track of the stack: when a file is input,
-% \cs{@@_curr_name_push:n} pushes an (empty by default) label to the
-% stack:
+% \cs{@@_curr_name_push:n} pushes the current default label to the
+% stack, and sets the new default label in one go:
% \begin{macrocode}
\cs_new_protected:Npn \@@_curr_name_push:n #1
+ { \exp_args:Nx \@@_curr_name_push_aux:n { \@@_make_name:n {#1} } }
+\cs_new_protected:Npn \@@_curr_name_push_aux:n #1
{
- \seq_gpush:Nn \g_@@_name_stack_seq {#1}
- \tl_gset:Nn \g_@@_hook_curr_name_tl {#1}
+ \tl_if_blank:nTF {#1}
+ { \msg_error:nn { hooks } { no-default-label } }
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { PushDefaultHookLabel } {#1}
+ }
+ {
+ \seq_gpush:NV \g_@@_name_stack_seq \g_@@_hook_curr_name_tl
+ \tl_gset:Nn \g_@@_hook_curr_name_tl {#1}
+ }
+ }
}
-%
% \end{macrocode}
% and when an input is over, the topmost item of the stack is popped,
% since the label will not be used again, and \cs{g_@@_hook_curr_name_tl}
@@ -3919,12 +4267,27 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_curr_name_pop:
{
- \seq_gpop:NN \g_@@_name_stack_seq \l_@@_return_tl
- \seq_get:NNTF \g_@@_name_stack_seq \l_@@_return_tl
+ \seq_gpop:NNTF \g_@@_name_stack_seq \l_@@_return_tl
{ \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl }
+ { \msg_error:nn { hooks } { extra-pop-label } }
+ }
+% \end{macrocode}
+%
+% At the end of the document we want to check if there was no
+% \cs{@@_curr_name_push:} without a matching \cs{@@_curr_name_pop:}
+% (not a critical error, but it might indicate that something else is
+% not quite right):
+% \begin{macrocode}
+\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
+ { \@@_end_document_label_check: }
+\cs_new_protected:Npn \@@_end_document_label_check:
+ {
+ \seq_gpop:NNT \g_@@_name_stack_seq \l_@@_return_tl
{
- \msg_error:nnn { hooks } { should-not-happen }
- { Tried~to~pop~from~an~empty~default~label~stack. }
+ \msg_error:nnx { hooks } { missing-pop-label }
+ { \g_@@_hook_curr_name_tl }
+ \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl
+ \@@_end_document_label_check:
}
}
% \end{macrocode}
@@ -3935,14 +4298,69 @@
% Now define a wrapper that replaces the top of the stack with the
% argument, and updates \cs{g_@@_hook_curr_name_tl} accordingly.
% \begin{macrocode}
+\NewDocumentCommand \SetDefaultHookLabel { m }
+ {
+ \seq_if_empty:NTF \g_@@_name_stack_seq
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { for } { SetDefaultHookLabel } {#1}
+ }
+ { \exp_args:Nx \@@_set_default_label:n { \@@_make_name:n {#1} } }
+ }
+\cs_new_protected:Npn \@@_set_default_label:n #1
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { SetDefaultHookLabel } {#1}
+ }
+ { \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} }
+ }
\NewDocumentCommand \DeclareDefaultHookLabel { m }
{
- \seq_gpop:NN \g_@@_name_stack_seq \l_@@_return_tl
- \@@_curr_name_push:n {#1}
+ \msg_error:nn { hooks } { ddhl-deprecated }
+ \SetDefaultHookLabel {#1}
+ }
+% \end{macrocode}
+%
+% The label is only automatically updated with \cs{@onefilewithoptions}
+% (\cs{usepackage} and \cs{documentclass}), but some packages, like
+% Ti\emph{k}Z, define package-like interfaces, like
+% \cs{usetikzlibrary} that are wrappers around \cs{input}, so they
+% inherit the default label currently in force (usually |top-level|,
+% but it may change if loaded in another package). To provide a
+% package-like behaviour also for hooks in these files, we provide
+% high-level access to the default label stack.
+% \begin{macrocode}
+\NewDocumentCommand \PushDefaultHookLabel { m }
+ { \@@_curr_name_push:n {#1} }
+\NewDocumentCommand \PopDefaultHookLabel { }
+ { \@@_curr_name_pop: }
+% \end{macrocode}
+%
+% The current label stack holds the labels for all files but the
+% current one (more or less like \cs{@currnamestack}), and the current
+% label token list, \cs{g_@@_hook_curr_name_tl}, holds the label for
+% the current file. However \cs{@pushfilename} happens before
+% \cs{@currname} is set, so we need to look ahead to get the
+% \cs{@currname} for the label. \pkg{expl3} also requires the current
+% file in \cs{@pushfilename}, so here we abuse
+% \cs{@expl@push@filename@aux@@@@} to do \cs{@@_curr_name_push:n}.
+% \begin{macrocode}
+\cs_gset_protected:Npn \@expl@push@filename@aux@@@@ #1#2#3
+ {
+ \@@_curr_name_push:n {#3}
+ \str_gset:Nx \g_file_curr_name_str {#3}
+ #1 #2 {#3}
}
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
%
%
@@ -4029,20 +4447,14 @@
% \end{macrocode}
%
% \begin{macro}{\@expl@@@initialize@all@@,
-% \@expl@@@hook@curr@name@push@@n,
% \@expl@@@hook@curr@name@pop@@}
-%
+%
% \begin{macrocode}
\cs_new_eq:NN \@expl@@@initialize@all@@
\__hook_initialize_all:
% \end{macrocode}
%
% \begin{macrocode}
-\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n
- \__hook_curr_name_push:n
-% \end{macrocode}
-%
-% \begin{macrocode}
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
% \end{macrocode}
@@ -4059,7 +4471,7 @@
% just make them do nothing which may or may not work depending on
% the code usage.
% \changes{v1.0d}{2020/10/04}{Definition \cs{AddToHookNext} was supposed
-% to be for \cs{AddToHook} vize versa (gh/401)}
+% to be for \cs{AddToHook} vice versa (gh/401)}
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
diff --git a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx
index 71ab081c669..f8321719c72 100644
--- a/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx
index dcb88e83e98..f435fea4d04 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx
index f5b63ed35ea..388aac78d7e 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltlength.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltlength.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltlength.dtx}
- [2019/08/27 v1.1d LaTeX Kernel (Lengths)]
+ [2020/12/05 v1.1d LaTeX Kernel (Lengths)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltlength.dtx}
@@ -154,7 +154,7 @@
% This macro takes the contents of the skip register that is
% supplied as its argument and removes the fractional part to make
% it a whole number of points. This can be used in class files to
-% avoid values like |345.4666666pt| when calulating a dimension.
+% avoid values like |345.4666666pt| when calculating a dimension.
% \changes{LaTeX2e}{1993/11/22}{Macro added}
% \begin{macrocode}
\def\@settopoint#1{\divide#1\p@\multiply#1\p@}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
index 653e4e2edd2..087b418847f 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -31,7 +31,7 @@
%<*driver>
% \fi
\ProvidesFile{ltlists.dtx}
- [2020/04/24 v1.0t LaTeX Kernel (List Environments)]
+ [2020/12/05 v1.0t LaTeX Kernel (List Environments)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltlists.dtx}
@@ -112,7 +112,7 @@
% the entire environment is a single item. It is defined by
% letting |\quotation| == |\list{}{...}\item\relax|. (Note the
% |\relax|, there in case the first character in the environment is a
-% '['.) The spacing parameters provide a great deal of flexability in
+% '['.) The spacing parameters provide a great deal of flexibility in
% designing the format, including the ability to let the indentation of
% the first paragraph be different from that of the subsequent ones.
%
@@ -589,7 +589,7 @@
% when not inlabel flag is false}
% Because |\par| is sometimes made a no-op it is possible for a missing
% |\item| to produce a loop that does not fill memory and so never gets
-% trapped by \TeX. We thus need to trap this here by seting |\par| to
+% trapped by \TeX. We thus need to trap this here by setting |\par| to
% count the number of times a paragraph ii is called with no progress
% being made started.
% \begin{macrocode}
@@ -729,7 +729,7 @@
% If a section heading changes |\clubpenalty| to keep lines
% after it together then this modification is restored via the
% |\everypar| mechanism at the start of the next paragraph. As we
-% destroy the contents of this token here we explicity set
+% destroy the contents of this token here we explicitly set
% |\clubpenalty| back to its default.
% \changes{v1.0t}{2015/05/10}{Explicitly reset \cs{clubpenalty} before
% clearing \cs{everypar}; see also pr/0462 and pr/4065}
@@ -807,7 +807,7 @@
% \end{macro}
%
% \begin{macro}{\@item}
-% \changes{v1.0l}{1996/07/26}{Remove unecessary \cs{global} before
+% \changes{v1.0l}{1996/07/26}{Remove unnecessary \cs{global} before
% \cs{@minipage...}}
% \begin{macrocode}
\def\@item[#1]{%
@@ -889,7 +889,7 @@
\everypar{}%
\fi}%
% \end{macrocode}
-% \changes{v1.0l}{1996/07/26}{Remove unecessary \cs{global} before
+% \changes{v1.0l}{1996/07/26}{Remove unnecessary \cs{global} before
% \cs{@nobreak...}}
% \changes{v1.0m}{1996/10/23}{\cs{@nobreak...} moved into the
% \cs{everypar} and not executed unconditionally, see above}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx
index 6784cb41c00..6fd7b35c928 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
index 8573b3e6ca6..957a71d8488 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2020
+% Copyright (C) 2015-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -28,7 +28,7 @@
\ProvidesFile{ltluatex.dtx}
%</driver>
%<*tex>
-[2020/09/25 v1.1s
+[2020/12/06 v1.1s
%</tex>
%<plain> LuaTeX support for plain TeX (core)
%<*tex>
@@ -129,7 +129,7 @@
% \DescribeMacro{\newluachunkname}
% |newluachunkname{|\meta{chunkname}|}|\\
% Allocates a number for Lua chunk register, indexed from~$1$.
-% Also enters the name of the regiser (without backslash) into the
+% Also enters the name of the register (without backslash) into the
% \verb|lua.name| table to be used in stack traces.
%
% \noindent
@@ -582,7 +582,7 @@
% \changes{v1.0a}{2015/09/24}{Macro added}
% Category code tables are allocated with a limit half of that used by Lua\TeX{}
% for everything else. At the end of allocation there needs to be an
-% initialisation step. Table~$0$ is already taken (it's the global one for
+% initialization step. Table~$0$ is already taken (it's the global one for
% current use) so the allocation starts at~$1$.
% \begin{macrocode}
\ifx\e@alloc@ccodetable@count\@undefined
@@ -779,8 +779,8 @@
% \subsection{Lua loader}
% \changes{v1.1r}{2020/08/10}{Load ltluatex Lua module during format building}
%
-% Lua code loaded in the format often has to to be loaded again at the
-% beginning of every job, so we define a helper whch allows us to avoid
+% Lua code loaded in the format often has to be loaded again at the
+% beginning of every job, so we define a helper which allows us to avoid
% duplicated code:
%
% \begin{macrocode}
@@ -1113,7 +1113,7 @@ luatexbase.registernumber = registernumber
%
% \begin{macro}{new_attribute}
% \changes{v1.0a}{2015/09/24}{Function added}
-% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking}
+% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking}
% As attributes are used for Lua manipulations its useful to be able
% to assign from this end.
% \begin{macrocode}
@@ -1148,7 +1148,7 @@ luatexbase.new_attribute = new_attribute
% \subsection{Custom whatsit allocation}
%
% \begin{macro}{new_whatsit}
-% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking}
+% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking}
% Much the same as for attribute allocation in Lua.
% \begin{macrocode}
local whatsit_count_name = whatsit_count_name or "e@alloc@whatsit@count"
@@ -1169,7 +1169,7 @@ luatexbase.new_whatsit = new_whatsit
% \subsection{Bytecode register allocation}
%
% \begin{macro}{new_bytecode}
-% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking}
+% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking}
% Much the same as for attribute allocation in Lua.
% The optional \meta{name} argument is used in the log if given.
% \begin{macrocode}
@@ -1192,7 +1192,7 @@ luatexbase.new_bytecode = new_bytecode
% \subsection{Lua chunk name allocation}
%
% \begin{macro}{new_chunkname}
-% \changes{v1.1c}{2017/02/18}{Parameterise count used in tracking}
+% \changes{v1.1c}{2017/02/18}{Parameterize count used in tracking}
% As for bytecode registers but also store the name in the
% |lua.name| table.
% \begin{macrocode}
@@ -1735,7 +1735,7 @@ luatexbase.add_to_callback = add_to_callback
%
% \begin{macro}{remove_from_callback}
% \changes{v1.0a}{2015/09/24}{Function added}
-% \changes{v1.0k}{2015/12/02}{adjust initialisation of cb local (PHG)}
+% \changes{v1.0k}{2015/12/02}{adjust initialization of cb local (PHG)}
% \changes{v1.0k}{2015/12/02}{Give more specific error messages (PHG)}
% \changes{v1.1m}{2020/03/07}{Do not call callback.register for user-defined callbacks}
% Remove a function from a callback. First check arguments.
diff --git a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx
index 36b8bb7ec46..58ca26b4a5f 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltmath.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltmath.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -38,7 +38,7 @@
%<*driver>
% \fi
\ProvidesFile{ltmath.dtx}
- [2020/07/27 v1.2g LaTeX Kernel (Math Setup)]
+ [2020/12/05 v1.2h LaTeX Kernel (Math Setup)]
% \iffalse
%</driver>
%
@@ -529,7 +529,7 @@
%
% Originally \LaTeX{} only provided a small set of spacing commands
% for use in text and math, some of the commands like \cs{;} were
-% only supported in manth mode. \texttt{amsmath} normalized and
+% only supported in math mode. \texttt{amsmath} normalized and
% provided all of them in text and math. This code has now been
% moved to the kernel so that it is generally available.
%
@@ -593,6 +593,13 @@
%<latexrelease>\def\;{\mskip\thickmuskip}
%<latexrelease>\def\!{\mskip-\thinmuskip}
%<latexrelease>
+% \end{macrocode}
+% \changes{v1.2h}{2020/11/09}{\cs{negmedspace} and \cs{negthickspace}
+% have been only in amsmath, so we need to undefine for rollback (gh/423)}
+% \begin{macrocode}
+%<latexrelease>\let\negmedspace\@undefined
+%<latexrelease>\let\negthickspace\@undefined
+%<latexrelease>
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
@@ -1094,7 +1101,7 @@
% To put the equation number on the left side of an equation we
% have to use a little trick. The number is shifted |\displaywidth|
% to the left inside a box of (approximately) zero width. This
-% fails when the quation is too wide, the equation number than may
+% fails when the equation is too wide, the equation number than may
% overprint the equation itself.
% \changes{v1.2y classes}{1995/01/12}{Added \cs{normalcolor}}
% \changes{v1.3c classes}{1995/05/25}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
index 9acbcccd683..c7254ad3532 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltmiscen.dtx}
- [2020/10/23 v1.1w LaTeX Kernel (Misc. Environments)]
+ [2020/12/18 v1.1x LaTeX Kernel (Misc. Environments)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltmiscen.dtx}
@@ -214,6 +214,7 @@
% \changes{v1.1i}{2000/05/19}
% {Reset \cs{AtEndDocument} for latex/3060}
% \begin{macrocode}
+ \@kernel@before@enddocument
\UseOneTimeHook{enddocument}%
\@kernel@after@enddocument
% \end{macrocode}
@@ -277,17 +278,6 @@
% \end{macro}
% \end{environment}
%
-%
-% \begin{macro}{\@kernel@after@enddocument,
-% \@kernel@after@enddocument@afterlastpage}
-%
-% The two kernel hooks above are used by the shipout code.
-% \begin{macrocode}
-\let\@kernel@after@enddocument\@empty
-\let\@kernel@after@enddocument@afterlastpage\@empty
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\@enddocument@kernel@warnings}
%
% \begin{macrocode}
@@ -395,14 +385,41 @@
%<latexrelease> \endgroup
%<latexrelease> \deadcycles\z@\@@end}
%<latexrelease>
-%<latexrelease>\let\@kernel@after@enddocument\@undefined
-%<latexrelease>\let\@kernel@after@enddocument@afterlastpage\@undefined
%<latexrelease>\let\@enddocument@kernel@warnings\@undefined
%<latexrelease>
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
%
+% \begin{macro}{\@kernel@before@enddocument}
+% The \cs{@kernel@before@enddocument} hook is slightly different
+% because we initialize it with \cs{par} so that \cs{enddocument} always
+% returns to vertical mode as its first action.
+% \changes{v1.1x}{2020/10/26}{\cs{enddocument} should always start out in
+% vmode (gh/385)}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease> {\@kernel@before@enddocument}{kernel before hook}%
+\def\@kernel@before@enddocument{\par}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+% The rollback code renders it harmless.
+% \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@kernel@before@enddocument}{kernel before hook}%
+%<latexrelease>
+%<latexrelease>\let\@kernel@before@enddocument\@empty
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+%
%
%
% \begin{macro}{\@testdef}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx
index c6bfc149b7c..4eea0ad41ec 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -44,7 +44,7 @@
%<*driver>
% \fi
\ProvidesFile{ltoutenc.dtx}
- [2020/08/10 v2.0s LaTeX Kernel (font encodings)]
+ [2020/12/05 v2.0s LaTeX Kernel (font encodings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutenc.dtx}
@@ -421,7 +421,7 @@
% for |\textdollar| in \texttt{OT1} is a hack since \$ and \pounds{}
% actually share the same slot in this encoding. Thus if such a glyph
% becomes available in a different encoding (e.g., \texttt{TS1}) one
-% would like to get rid of the flacky one and make the default
+% would like to get rid of the flaky one and make the default
% definition point to the new encoding. In such a case defining
%\begin{verbatim}
% \DeclareTextSymbol{\textdollar}{TS1}{36}
@@ -841,7 +841,7 @@
% avoid that (they are some hidden inside \cs{maybe@load@fontshape}).
% As we don't have to load the fontshape in this case
% (as that happened in the box above if necessary, we simply
-% disable that part of the code temporaily.
+% disable that part of the code temporarily.
% We also ignore \cs{ignorespaces} which has the same issue and may
% show up as part of \cs{normalfont} if that is used.
% \changes{v2.0m}{2019/12/18}{Avoid code that breaks \cs{accent}}
@@ -2538,7 +2538,7 @@
%
% The tie accent was borrowed from the |cmmi| font. The tc fonts
% now provide four tie accents, the first two are done in the
-% classical way with assymetric glyphs hanging out of their boxes;
+% classical way with asymmetric glyphs hanging out of their boxes;
% the new ties are centered in their boxes like all other accents.
% They need a name: please tell us if you know what to call them.
%
@@ -2550,7 +2550,7 @@
\DeclareTextAccent{\capitalnewtie}{TS1}{29}
% \end{macrocode}
%
-% Compund word marks.
+% Compound word marks.
%
% The text companion fonts contain two compound word marks of
% different heights, one has |cap_height|, the other |asc_height|.
@@ -2837,7 +2837,7 @@
%<*TU>
% \end{macrocode}
% In the base interface the Unicode encoding is always known as TU
-% But we parameterise the encoding name to allow for modelling
+% But we parameterize the encoding name to allow for modelling
% differences in Unicode support by different fonts.
% \begin{macrocode}
\providecommand\UnicodeEncodingName{TU}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins
index 17d62e11e8a..23c27697f84 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins
+++ b/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx
index 35d049b9590..f418459f661 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -37,7 +37,7 @@
%<*driver>
% \fi
\ProvidesFile{ltoutput.dtx}
- [2020/08/21 v1.4f LaTeX Kernel (Output Routine)]
+ [2020/12/06 v1.4f LaTeX Kernel (Output Routine)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutput.dtx}
@@ -1676,7 +1676,7 @@
% \begin{macro}{\@makecol}
% \changes{v0.1c}{1993/11/23}{Command changed}
% \changes{v1.0b}{1993/11/29}{\cs{@makespecialcolbox} added}
-% We must rewrite this macro to alllow for variations in page-makeup
+% We must rewrite this macro to allow for variations in page-makeup
% required by changes in page-length.
%
% This uses a different macro if a special-length column is being
@@ -1860,7 +1860,7 @@
% force the shortest possible column with the possibility of an
% overfull box.
%
-% This should work for bothe flush- and ragged-bottom setting since
+% This should work for both flush- and ragged-bottom setting since
% it makes the contents no smaller than the size (|\@colht|) of the
% box into which they are put.
%
@@ -2074,7 +2074,7 @@
% \end{macrocode}
%
% The |\catcode`\ = 10| was removed as it was considered useless
-% (presumably because nothing gets tokenised during shipout).
+% (presumably because nothing gets tokenized during shipout).
%
% This was put in as some error produced active spaces in a mark, I
% think.
@@ -2156,7 +2156,7 @@
%
% The rest was always inside the box.
%
-% RmS 91/08/15: aded this line:
+% RmS 91/08/15: added this line:
% \begin{macrocode}
\reset@font
% \end{macrocode}
@@ -3864,7 +3864,7 @@
% be printed in as small a space as possible, ie it uses any
% shrinkability in the column. If the column was not explicitly broken
% (\eg with |\pagebreak|) this may result in an overfull box message but
-% execpt for this it will come out as expected (if you know what to
+% except for this it will come out as expected (if you know what to
% expect).
%
% The star form of this command is dedicated to Leslie Lamport, the
@@ -3973,7 +3973,7 @@
% It also enables the use of an extra specifier, {\tt !}, in the
% location optional argument of a float. If this is present then,
% just for this particular float, whenever it is processed by the float
-% mechanism the followinhg are ignored:
+% mechanism the following are ignored:
%
% \begin{itemize}
% \item all restrictions on the number of floats which can appear;
@@ -4556,7 +4556,7 @@
% Yet another is to move the column count register from the multicol
% package into the kernel. This has been done.
% \item Where should the reinserts be put to maximise the
-% probability that footmotes come out on the correct page?
+% probability that footnotes come out on the correct page?
% Or should we go for as much compatibility as possible (but see
% next item)?
% \item Should we continue to support (as much as possible)
@@ -4980,7 +4980,7 @@
%
% At the top of the page |\@fptop| is inserted;
% typically this supplies some stretchable whitespace.
-% At the bottom of the page |\@fpbot| ais inserted.
+% At the bottom of the page |\@fpbot| is inserted.
% Between adjacent floats |\@fpsep| is inserted.
%
% These parameters are used for all floating objects on a
diff --git a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx
index 8c7aac0a7b8..ce6681e7e08 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltpage.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltpage.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltpage.dtx}
- [2020/07/27 v1.0m LaTeX Kernel (page style setup)]
+ [2020/12/05 v1.0m LaTeX Kernel (page style setup)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltpage.dtx}
@@ -260,7 +260,7 @@
% the problem is solved.}
% \changes{v1.0j}{2000/05/26}{Use \cs{@empty} instead of brace group
% (pr/3203).}
-% \task{???}{mark initialisation solved?}
+% \task{???}{mark initialization solved?}
% \begin{macrocode}
\def\@markright#1#2#3{\@temptokena {#1}%
\unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
diff --git a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx
index 6374f58b89a..80055c7c5d9 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltpageno.dtx}
- [1994/05/19 v1.1a LaTeX Kernel (Page Numbering)]
+ [2020/12/05 v1.1a LaTeX Kernel (Page Numbering)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltpageno.dtx}
@@ -71,7 +71,7 @@
% assigned by |\newcount|.
%
% \DescribeMacro{\pagenumbering}
-% The user sets the pagenumber style with the |\pagenumbering|\marg{foo}
+% The user sets the page number style with the |\pagenumbering|\marg{foo}
% command, which sets the page counter to 1 and defines |\thepage| to be
% |\foo|. For example, |\pagenumbering{roman}| causes pages to be
% numbered i, ii, etc.
diff --git a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx
index ed1b439e9da..169954f9ea8 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltpar.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltpar.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
index 5bef40375cd..10773f376cf 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltpictur.dtx}
- [2020/08/14 v1.2a LaTeX Kernel (Picture Mode)]
+ [2020/12/05 v1.2a LaTeX Kernel (Picture Mode)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltpictur.dtx}
@@ -1773,7 +1773,7 @@
%
% Initialization: ``|\thinlines|''
% \changes{v1.1f}{1995/10/27}
-% {Move initialisation to kernel from autoload file}
+% {Move initialization to kernel from autoload file}
% \begin{macrocode}
\let\@linefnt\tenln
\let\@circlefnt\tencirc
diff --git a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx
index 7949b836d46..0b03fd1364d 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltplain.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltplain.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltplain.dtx}
- [2020/08/20 v2.3d LaTeX Kernel (Plain TeX)]
+ [2020/11/26 v2.3d LaTeX Kernel (Plain TeX)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltplain.dtx}
@@ -695,7 +695,7 @@
% {Define \cs{alloc@} in terms of \cs{e@alloc}}
% Since |\e@alloc| was added in 2015, |\@alloc| has not been used,
% but was left as some legacy code calls it. However the original
-% defnition gives spurious errors once the ``classic'' registers
+% definition gives spurious errors once the ``classic'' registers
% run out, so it is now defined to call |\e@alloc| internally.
% \begin{macrocode}
%</2ekernel>
@@ -754,8 +754,8 @@
\chardef\e@insert@top\e@alloc@top
\fi
% \end{macrocode}
-% If the classic registers are exausted, take an insert from the free float list
-% and use |\extrafloats| to add a new float to that list.
+% If the classic registers are exhausted, take an insert from the free
+% float list and use |\extrafloats| to add a new float to that list.
% \changes{v2.2c}{2016/07/29}{fix for tlb-newinsert-001}
% \begin{macrocode}
\def\newinsert#1{%
@@ -1481,7 +1481,7 @@
% \changes{v1.1x}{2002/02/24}{Macro added}
% \changes{v2.0b}{2012/01/20}{etex tracing if available}
% \changes{v2.0d}{2015/02/20}{Spell commands correctly :-)}
-% \changes{v2.0g}{2015/03/10}{Reorganise to be less noisy}
+% \changes{v2.0g}{2015/03/10}{Reorganize to be less noisy}
% \begin{macrocode}
%<latexrelease>\IncludeInRelease{2015/01/01}{\loggingall}{etex tracing}%
%<*2ekernel|latexrelease>
diff --git a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx
index 359b445f453..70106e2e583 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltsect.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltsect.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -31,7 +31,7 @@
%%% From File: ltsect.dtx
%<*driver>
% \fi
-\ProvidesFile{ltsect.dtx}[2020/07/27 v1.1e LaTeX Kernel (Sectioning)]
+\ProvidesFile{ltsect.dtx}[2020/12/05 v1.1e LaTeX Kernel (Sectioning)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltsect.dtx}
@@ -779,7 +779,7 @@
% \changes{v1.1c}{2018/09/26}{Sometimes mask the endline char when
% writing to files (github/73)}
% \changes{v1.1e}{2020/10/01}{add a fourth argument for better
-% hyperref compability}
+% hyperref compatibility}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
diff --git a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx
index 8f0422c887b..2ea0a1b6651 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%%
-%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
+%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
%%
%
% This file is part of the LaTeX base system.
@@ -31,8 +31,8 @@
%%% From File: ltshipout.dtx
%
% \begin{macrocode}
-\providecommand\ltshipoutversion{v1.0c}
-\providecommand\ltshipoutdate{2020/09/27}
+\providecommand\ltshipoutversion{v1.0d}
+\providecommand\ltshipoutdate{2020/12/06}
% \end{macrocode}
%
%<*driver>
@@ -75,7 +75,7 @@
% \ltshipoutversion\ dated \ltshipoutdate, \copyright\ \LaTeX\
% Project.}}
%
-% \author{Frank Mittelbach}
+% \author{Frank Mittelbach, \LaTeX{} Project Team}
%
% \maketitle
%
@@ -193,7 +193,8 @@
% \item[\hook{shipout/lastpage}]
%
% The corresponding hook to add \cs{special}s at the very end of
-% the output file. It is only executed on the very last page ---
+% the output file. It is only executed on the very last page of
+% the output file ---
% or rather on the page that \LaTeX{} believes is the last one.
%
% It may not be possible for \LaTeX{} to correctly determine
@@ -229,19 +230,29 @@
% \cs{typeout}s, none of the hooks are executed (as there is no
% \cs{shipout}) not even the \hook{shipout/lastpage} hook.
%
+%
+% \subsection{Legacy \LaTeX{} commands}
+%
+%
% \begin{function}{\AtBeginDvi,\AtEndDvi}
% \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the
% \hook{shipout/firstpage} hook. This is not really a good name
% as it is not just supporting \texttt{.dvi} but also \texttt{.pdf}
-% output or \texttt{.dvx}.
+% output or \texttt{.xdv}.
%
% \cs{AtEndDvi} is the counterpart that was not available in the
% kernel but only through the package \pkg{atenddvi}. It fills the
% \hook{shipout/lastpage} hook.
+% \end{function}
%
-% \fmi{better names? Any suggestions?}
+% As these two wrappers have been available for a long time we
+% continue offering them. However, for new code we suggest using
+% the high-level hook management commands directly instead of
+% ``randomly-named'' wrappers. This will lead to code that is
+% easier to understand and to maintain. For this reason we do not
+% provide any other wrapper commands for the above hooks in the
+% kernel.
%
-% \end{function}
%
% \subsection{Special commands for use inside the hooks}
%
@@ -331,9 +342,9 @@
% \cs{thetotalpages}/\cs{PreviousTotalPages}
% \end{syntax}
% Command that expands to the number of total pages from the
-% previous run. If there was no previous run or if usedin the
+% previous run. If there was no previous run or if used in the
% preamble it expands to
-% \texttt{0}. Note that this is a command to a counter, so in order
+% \texttt{0}. Note that this is a command and not a counter, so in order
% to display the number in, say, Roman numerals you have to assign
% its value to a counter and then use \cs{Roman} on that counter.
% \end{variable}
@@ -356,9 +367,15 @@
%
% \section{Emulating commands from other packages}
%
-% The packages in this section are no longer necessary but as they
-% are used in other packages they are emulated when they are loaded
-% via \cs{usepackage} or \cs{RequirePackage}.
+% The packages in this section are no longer necessary, but as they
+% are used by other packages, they are emulated when they are
+% explicitly loaded with \cs{usepackage} or \cs{RequirePackage}.
+%
+% Please note that the emulation only happens if the package is
+% explicitly requested, i.e., the commands documented below are not
+% automatically available in the \LaTeX{} kernel! If you write a
+% new package we suggest to use the appropriate kernel hooks
+% directly instead of loading the emulation.
%
%
% \subsection{Emulating \pkg{atbegshi}}
@@ -434,6 +451,13 @@
%
% \subsection{Emulating \pkg{everyshi}}
%
+% The \pkg{everyshi} package is providing commands to run arbitrary
+% code just before the shipout starts.
+% One point of difference: in the new shipout hooks the page is
+% available as \cs{ShipoutBox} for inspection of change, one should
+% not manipulate box 255 directly inside \hook{shipout/before}, so
+% old code doing this would change to use \cs{ShipoutBox} instead
+% of \texttt{255} or \cs{@cclv}.
%
% \begin{function}{\EveryShipout}
% \begin{syntax}
@@ -447,22 +471,49 @@
% \end{syntax}
% \end{function}
%
+% However, most use cases for \pkg{everyshi} are attempts to put
+% some picture or text into the background or foreground of the page
+% and that can be done today simply by using the
+% \hook{shipout/background} and
+% \hook{shipout/foreground} hooks without any need to coding.
%
%
% \subsection{Emulating \pkg{atenddvi}}
%
-% The \pkg{atenddvi} package implemented only a single command:
-% \cs{AtEndDvi} and that is now available out of the box.
+% The \pkg{atenddvi} package implemented only a single command:
+% \cs{AtEndDvi} and that is now available out of the box so the
+% emulation makes the package a no-op.
%
%
%
% \subsection{Emulating \pkg{everypage}}
%
-% This page takes over the original \cs{@begindvi} hook and replaces
-% it. It should be all covered by the hooks offered here (details
-% need checking) and thus could simply use the provided hooks
-% rather than defining its own.
+% This package patched the original \cs{@begindvi} hook and replaced
+% it with its own version.
+% Its functionality is now covered by the hooks offered by the
+% kernel so that there is no need for such patching any longer.
%
+% \begin{function}{\AddEverypageHook}
+% \begin{syntax}
+% \cs{AddEverypageHook}\Arg{code} $\equiv$
+% \qquad\cs{AddToHook}\texttt{\{shipout/background\}\{\cs{put}(1in,-1in)\Arg{code}\}}
+% \end{syntax}
+% \cs{AddEverypageHook} is adding something into the
+% background of every page at a position of 1in to the right and
+% 1in down from the top left corner of the page.
+% By using the kernel hook directly you can put your material
+% directly to the right place, i.e., use other coordinates in the
+% \cs{put} statement above.
+% \end{function}
+%
+% \begin{function}{\AddThispageHook}
+% \begin{syntax}
+% \cs{AddThispageHook}\Arg{code} $\equiv$
+% \qquad\cs{AddToHookNext}\texttt{\{shipout/background\}\{\cs{put}(1in,-1in)\Arg{code}\}}
+% \end{syntax}
+% The \cs{AddThispageHook} wrapper is similar but uses
+% \cs{AddToHookNext}.
+% \end{function}
%
%
% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
@@ -479,7 +530,7 @@
% \begin{macrocode}
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease> {\shipout}{Hook mangement (shipout)}%
+%<latexrelease> {\shipout}{Hook management (shipout)}%
% \end{macrocode}
%
%
@@ -631,7 +682,8 @@
% \cs{shipout}.
%
% We increment it after running the above hook so that the values
-% for \cs{g_shipout_totalpages_int} and \cs{} are in sync while the
+% for \cs{g_shipout_totalpages_int} and \cs{g_shipout_readonly_int}
+% are in sync while the
% hook is executed (in the case that totalpages isn't manually
% altered or through discarding pages that is).
% \begin{macrocode}
@@ -699,7 +751,13 @@
\hook_if_empty:nF {shipout/foreground}
{ \@@_add_foreground_picture:n
{ \hook_use:n {shipout/foreground} } }
- \hook_if_empty:nF {shipout/background}
+% \end{macrocode}
+% If there is no user hook, there might still code in the kernel hook.
+% \changes{v1.0d}{2020/11/23}{Check for both kernel and user hook (gh/431)}
+% \begin{macrocode}
+ \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/background} }
+ { \tl_if_empty_p:N \@kernel@before@shipout@background }
{ \@@_add_background_picture:n
{ \@kernel@before@shipout@background
\hook_use:n {shipout/background} } }
@@ -712,11 +770,15 @@
\@@_execute_firstpage_hook:
% \end{macrocode}
% The we check if we have to add the \hook{shipout/lastpage} hook
+% or the corresponding kernel hook
% because we have reached the last page. This test will be false for
% all but one (and hopefully the correct) page.
+% \changes{v1.0d}{2020/11/23}{Check for both kernel and user hook (gh/431)}
% \begin{macrocode}
\int_compare:nNnT \@abspage@last = \g_shipout_readonly_int
- { \hook_if_empty:nF {shipout/lastpage}
+ { \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/lastpage} }
+ { \tl_if_empty_p:N \@kernel@after@shipout@lastpage }
{ \@@_debug:n { \typeout{Executing~ lastpage~ hook~
on~ page~ \int_use:N \g_shipout_readonly_int } }
\_@@_add_foreground_box:n { \UseHook{shipout/lastpage}
@@ -747,7 +809,7 @@
%
%
% \begin{macro}{\@@_saved_protect:}
-% Remeber the current \cs{protect} state.
+% Remember the current \cs{protect} state.
% \begin{macrocode}
\cs_new_eq:NN \@@_saved_protect: \protect
% \end{macrocode}
@@ -883,7 +945,7 @@
% \begin{macro}{\l_@@_tmp_box,\l_@@_saved_badness_tl}
% We need a box for the background and foreground material and a
% token register to remember badness settings as we disable them
-% during te buildup below.
+% during the buildup below.
% \begin{macrocode}
\box_new:N \l_@@_tmp_box
\tl_new:N \l_@@_saved_badness_tl
@@ -1088,7 +1150,7 @@
% \begin{macrocode}
\cs_new:Npn \@@_picture_overlay:n #1 {
% \end{macrocode}
-% The very first time this is executed we have to initializes (and
+% The very first time this is executed we have to initialize (and
% freeze) the origins.
% \begin{macrocode}
\@@_init_page_origins:
@@ -1183,7 +1245,7 @@
%
% \begin{macro}{\g_shipout_totalpages_int,\c@totalpages}
% We count every shipout attempt (even those that are discarded) in
-% tis counter. It is not used in the code but may get used in user
+% this counter. It is not used in the code but may get used in user
% code.
% \begin{macrocode}
\int_new:N \g_shipout_totalpages_int
@@ -1207,7 +1269,7 @@
% or the statement is missing from it we initialize it with the
% largest possible number in \TeX{}. We use this as the default
% because then we are inserting the \hook{shipout/lastpage} on
-% the last page (or after the last page but not on page 1 for a
+% the last page (or after the last page) but not on page 1 for a
% multipage document.
% \begin{macrocode}
\xdef\@abspage@last{\number\maxdimen}
@@ -1219,11 +1281,11 @@
%
% Instead of using the hooks \hook{enddocument} and
% \hook{enddocument/afterlastpage} we add this code to private
-% kernel hooks to be 100\% when it is executed and to avoid
+% kernel hooks to be 100\% sure when it is executed and to avoid
% cluttering the hooks with data that is always there.
%
% Inside \cs{enddocument} there is a \cs{clearpage}. Just before
-% that we execute this code here. There is a good change that we
+% that we execute this code here. There is a good chance that we
% are on the last page. Therefore, if we don't know the value from
% the last run, we assume that the current page is the right
% one. So we set \cs{@abspage@last} and as a result the next
@@ -1307,7 +1369,7 @@
% At this point we also signal to \LaTeX{}'s endgame that a rerun is
% necessary so that an appropriate message can be shown on the
% terminal. We do this by simply defining a command used as a flag and
-% tested \cs{enddocument}.
+% tested in \cs{enddocument}.
% \begin{macrocode}
\cs_gset_eq:NN \@extra@page@added \relax
}
@@ -1376,9 +1438,11 @@
%
%
% \begin{macro}{\AtBeginDvi}
-%
+% If we roll forward from an earlier kernel \cs{AtBeginDvi} is
+% defined so we better not use \cs{cs_new_protected:Npn} here.
+% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)}
% \begin{macrocode}
-\cs_new_protected:Npn \AtBeginDvi {\@@_add_firstpage_material:Nn \AtBeginDvi}
+\cs_set_protected:Npn \AtBeginDvi {\@@_add_firstpage_material:Nn \AtBeginDvi}
% \end{macrocode}
% \end{macro}
%
@@ -1447,8 +1511,18 @@
%
% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease> {\shipout}{The hook management (shipout)}%
-%<latexrelease>\expandafter\let\expandafter\shipout\csname tex_shipout:D\endcsname
+%<latexrelease> {\shipout}{Hook management (shipout)}%
+%<latexrelease>
+% \end{macrocode}
+% If we roll forward then \cs{tex\_shipout:D} may not be defined in
+% which case \cs{shipout} does have it original definition and so
+% we must not \cs{let} it to something else which is \cs{relax}!
+% \changes{v1.0d}{2020/11/24}{Support for roll forward (gh/434)}
+% \begin{macrocode}
+%<latexrelease>\ifcsname tex_shipout:D\endcsname
+%<latexrelease>\expandafter\let\expandafter\shipout
+%<latexrelease> \csname tex_shipout:D\endcsname
+%<latexrelease>\fi
%<latexrelease>
%<latexrelease>\let \ShipoutBox\@undefined
%<latexrelease>\let \ReadonlyShipoutCounter \@undefined
@@ -1483,7 +1557,7 @@
% \end{macrocode}
% We do not undo a substitution when rolling back. As the file
% support gets undone the underlying data is no longer used (and
-% sufficiently obscure that should not interfer with existing
+% sufficiently obscure that it should not interfere with existing
% commands) and properly removing it would mean we need to make the
% \cs{unclare@...} and its support macros available in all earlier
% kernel releases which is pointless (and actually worse).
@@ -1497,7 +1571,7 @@
% \end{macrocode}
% We do not reenable a disabled package load when rolling back. As the file
% support gets undone the underlying data is no longer checked (and
-% sufficiently obscure that it should not interfer with existing
+% sufficiently obscure that it should not interfere with existing
% commands) and properly removing it would mean we need to make the
% \cs{reenable@package@load} command available in all earlier
% kernel releases which is pointless (and actually worse).
@@ -1573,8 +1647,8 @@
% \begin{macrocode}
%<*atbegshi-ltx>
\ProvidesPackage{atbegshi-ltx}
- [2020/08/17 v1.0a
- Emulation of the original atbegshi package^^Jwith kernel methods]
+ [2020/10/15 v1.0b
+ Emulation of the original atbegshi^^Jpackage with kernel methods]
% \end{macrocode}
%
%
@@ -1640,7 +1714,7 @@
%
%
%
-% \begin{macro}{\ShipoutBoxHeight,\ShipoutBoxWidth,\ShipoutoBoxDepth}
+% \begin{macro}{\ShipoutBoxHeight,\ShipoutBoxWidth,\ShipoutBoxDepth}
% This is somewhat different from the original in \pkg{atbegshi}
% where \cs{ShipoutBoxHeight} etc.\ only holds the
% \verb=\the\ht<box>= value. This may has some implications in some
@@ -1679,8 +1753,8 @@
%
% \begin{macrocode}
\ProvidesPackage{everyshi-ltx}
- [2020/08/17 v1.0a
- Emulation of the original everyshi package^^Jwith kernel methods]
+ [2020/10/15 v1.0b
+ Emulation of the original everyshi^^Jpackage with kernel methods]
% \end{macrocode}
%
% \begin{macro}{\EveryShipout,\AtNextShipout}
@@ -1710,7 +1784,7 @@
%%
%% Code that directly manipulates box 255, however, might fail.
%% If that is the case look at the shipout hooks offered now as
-%% they are normally sufficienct to avoid such minpulations (or
+%% they are normally sufficient to avoid such manipulations (or
%% replace box 255 with \ShipoutBox in the code.
%%
%</everyshi-ltx>
diff --git a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx
index 1a672c6455d..8b933e8c971 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltspace.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltspace.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/lttab.dtx b/Master/texmf-dist/source/latex-dev/base/lttab.dtx
index dedd9e5d375..545b30d3af1 100644
--- a/Master/texmf-dist/source/latex-dev/base/lttab.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/lttab.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx
index 3b6231dafdf..3ea90d005f9 100644
--- a/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2020
+% Copyright (C) 2019-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%
%
\ProvidesFile{lttextcomp.dtx}
- [2020/04/29 v1.0d LaTeX Kernel (text companion symbols)]
+ [2020/12/05 v1.0d LaTeX Kernel (text companion symbols)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -46,7 +46,7 @@
%
%
% \GetFileInfo{lttextcomp.dtx}
-% \title{Providing addtional text symbols\\
+% \title{Providing additional text symbols\\
% (previously available through the \texttt{textcomp} package)\thanks
% {This file has version number
% \fileversion\ dated \filedate}}
@@ -112,7 +112,7 @@
\mathgroup\symletters #1%
\else
% \end{macrocode}
-% The \cs{CheckEncodingSubset} is discused below.
+% The \cs{CheckEncodingSubset} is discussed below.
% \begin{macrocode}
\CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}%
\fi
@@ -200,7 +200,7 @@
% declare the subset and finally the \emph{subset} number (between \texttt{0} (all
% of the encoding is supported) and \texttt{9} many glyphs are missing.
%
-% For \texttt{TS1} the numbers have been choosen in a way that most
+% For \texttt{TS1} the numbers have been chosen in a way that most
% fonts can be fairly correctly categorized, but the default
% settings are always conservative, that is they may claim that
% less glyphs are supported than there actually are.
@@ -408,7 +408,7 @@
%
% Accents and been mad an error in the \texttt{textcomp} package when
% not available. Now that we provide the functionality in the
-% kernel we avoid the eror by swapping in a \texttt{T1} accent if
+% kernel we avoid the error by swapping in a \texttt{T1} accent if
% the \texttt{TS1} accent is not available.
% \begin{macrocode}
%\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
@@ -565,7 +565,7 @@
%
% In Unicode engines we just execute the simple accents:
% \changes{v1.0c}{2020/02/10}{Use \cs{@tabacckludge} for tabbing where necessary (gh/271)}
-% \changes{v1.0d}{2020/04/29}{Make all captial accents text commands for hyperref (gh/332)}
+% \changes{v1.0d}{2020/04/29}{Make all capital accents text commands for hyperref (gh/332)}
% \begin{macrocode}
\else
\DeclareTextCommandDefault\capitalacute{\@tabacckludge'}
@@ -720,14 +720,14 @@
%
% Most older PS fonts (supported in \TeX{} since the early nineties
% when virtual fonts became available) are sorted under this
-% sub-encoding. But in reality, many of them don't have all glpyhs
+% sub-encoding. But in reality, many of them don't have all glyphs
% that should be available in sub-encoding \texttt{5}. Instead they
% show little squares, i.e., they produce ``tofu'' if you are
% unlucky.
%
% But the coverage is so random that it is impossible to sort them
% properly and if we tried to ensure that they only typeset those
-% glyphs that are really always available wouput put them all into
+% glyphs that are really always available would put them all into
% sub-encoding \texttt{9} so that's a compromise really.
%
% Modern fonts that don't typeset a tofu character if a glyph is
@@ -830,7 +830,7 @@
\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}}
\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}}
% \end{macrocode}
-% These have Unicode slots so this should be integrated into TU explictly
+% These have Unicode slots so this should be integrated into TU explicitly
% \begin{macrocode}
\DeclareTextSymbol{\textpilcrow} \UnicodeEncodingName{"00B6}
\DeclareTextSymbol{\textborn} \UnicodeEncodingName{"002A}
@@ -1156,7 +1156,7 @@
% \begin{macro}{\textlegacysection}
%
% Here are new names for the legacy symbols that \LaTeX{} used to
-% pick up from the \texttt{OMS} encoded fonts (and used dor itemize
+% pick up from the \texttt{OMS} encoded fonts (and used for itemize
% lists or footnote symbols.
%
% We go the roundabout way via separate OMS declarations so that
@@ -1443,7 +1443,7 @@
% of the default (which, unless changes, is 9 these days), i.e., it
% no longer depends on the font in use. This is mainly there
% because it might have been used in older documents, but not
-% somehting that is recommended.
+% something that is recommended.
% \begin{macrocode}
\DeclareOption{force}{%
\def\CheckEncodingSubset#1#2#3#4#5{%
@@ -1483,7 +1483,7 @@
% This section contains the old code for the textcomp package and
% its documentation. It is only used if we roll back prior to 2020.
% Thus all the rest is mainly for historians. Note that the old
-% code categorised in the sub-encodings only into 6 classes not 10.
+% code categorized in the sub-encodings only into 6 classes not 10.
%
% \begin{macrocode}
%<*TS1oldsty>
diff --git a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx
index 4e3c51ab77e..c33ea4202fd 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltthm.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltthm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
index 0e374f5dec0..df57faf23b4 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltvers.dtx}
- [2020/03/02 v1.1e LaTeX Kernel (Version Info)]
+ [2020/12/05 v1.1e LaTeX Kernel (Version Info)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltvers.dtx}
@@ -115,7 +115,7 @@
{2021-05-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{0}
+\def\patch@level{-1}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
@@ -255,7 +255,7 @@
% that is actually reapplying what is already in the format, i.e.,
% it is useless and possibly allocating new registers. However, it
% makes the logic simpler so this is the way it is for now. In
-% theory we could always jump overthe first patch because that is
+% theory we could always jump over the first patch because that is
% only really needed for rolling forward. So maybe one day \dots
% \begin{macrocode}
\ifnum\expandafter\@parse@version#1//00\@nil
diff --git a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx
index 0c7130c3717..e00f9bcb9f9 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -30,7 +30,7 @@
%
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{ltxdoc}
-%<class> [2020/10/04 v2.1b Standard LaTeX documentation class]
+%<class> [2020/12/05 v2.1b Standard LaTeX documentation class]
%
%<*driver>
\documentclass{ltxdoc}
@@ -484,7 +484,7 @@
% \end{macrocode}
% Set \cs{protect} to a suitable value in the index entries (we
% can't use |\set@display@protect| as that would result in different
-% numer of spaces after a command depending on the number of
+% number of spaces after a command depending on the number of
% expansion happening prior to writing the index).
% \begin{macrocode}
\begingroup
diff --git a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx
index 56ae09c1650..4e78deec4ad 100644
--- a/Master/texmf-dist/source/latex-dev/base/ltxref.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/ltxref.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltxref.dtx}
- [2020/08/23 v1.1o LaTeX Kernel (Cross Referencing)]
+ [2020/12/05 v1.1o LaTeX Kernel (Cross Referencing)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltxref.dtx}
@@ -68,10 +68,10 @@
% The user writes |\label|\marg{foo} to define the following
% cross-references:
%
-% |\ref|\marg{foo}: value of most recently incremented referencable
+% |\ref|\marg{foo}: value of most recently incremented referenceable
% counter. in the current environment. (Chapter, section,
% theorem and enumeration counters are
-% referencable, footnote counters are not.)
+% referenceable, footnote counters are not.)
%
% |\pageref|\marg{foo}: page number at which |\label{foo}| command
% appeared. where foo can be any string of characters not
@@ -98,7 +98,7 @@
\message{x-ref,}
% \end{macrocode}
%
-% This is implemented as follows. A referencable counter CNT is
+% This is implemented as follows. A referenceable counter CNT is
% incremented by the command \refstepcounter{CNT} , which sets
% \@currentlabel == {CNT}{eval(\p@cnt\theCNT)}. The command
% \label{FOO} then writes the following on file \@auxout :
diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx
index a149bcf86c5..c4a76ffabef 100644
--- a/Master/texmf-dist/source/latex-dev/base/makeindx.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/makeindx.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/makeindx.ins b/Master/texmf-dist/source/latex-dev/base/makeindx.ins
index 5e86d50579e..771e3b12c6e 100644
--- a/Master/texmf-dist/source/latex-dev/base/makeindx.ins
+++ b/Master/texmf-dist/source/latex-dev/base/makeindx.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/newdc.ins b/Master/texmf-dist/source/latex-dev/base/newdc.ins
index 962510313c0..0ea49996610 100644
--- a/Master/texmf-dist/source/latex-dev/base/newdc.ins
+++ b/Master/texmf-dist/source/latex-dev/base/newdc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx
index 91a19196a78..085d2348ba8 100644
--- a/Master/texmf-dist/source/latex-dev/base/newlfont.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/newlfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx
index ce47cb85543..09d91dc51d5 100644
--- a/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -27,7 +27,7 @@
%
% \fi
\def\nfssfontfileversion{v2.2e}
-\def\nfssfontfiledate{2019/10/12}
+\def\nfssfontfiledate{2020/11/26}
%
% \iffalse
@@ -55,7 +55,7 @@
%
% Within the \NFSS{} distribution there is a \LaTeX{} file
% \texttt{nfssfont.tex} which can be used to test new fonts, produce
-% font tables showing all characters, etc. This is an addaption of a
+% font tables showing all characters, etc. This is an adaption of a
% program originally written by Don Knuth.
% When you run this file through \LaTeX{} you will be asked to enter
@@ -79,7 +79,7 @@
% |\help|.
%
% This is at
-% the moment only a crude addaption of the test program for the
+% the moment only a crude adaption of the test program for the
% Computer Modern fonts by Donald Knuth.
%
% \StopEventually{}
diff --git a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins
index d6760bcfde8..24a2e115e07 100644
--- a/Master/texmf-dist/source/latex-dev/base/nfssfont.ins
+++ b/Master/texmf-dist/source/latex-dev/base/nfssfont.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/olddc.ins b/Master/texmf-dist/source/latex-dev/base/olddc.ins
index 85cb077b59c..7401e29f6d6 100644
--- a/Master/texmf-dist/source/latex-dev/base/olddc.ins
+++ b/Master/texmf-dist/source/latex-dev/base/olddc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx
index c0c14f2aa26..56204af7ae4 100644
--- a/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/preload.dtx b/Master/texmf-dist/source/latex-dev/base/preload.dtx
index fd9e03ac44f..22554b429fd 100644
--- a/Master/texmf-dist/source/latex-dev/base/preload.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/preload.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/proc.dtx b/Master/texmf-dist/source/latex-dev/base/proc.dtx
index 8db8fef7f10..814006e411b 100644
--- a/Master/texmf-dist/source/latex-dev/base/proc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/proc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -29,7 +29,7 @@
%
% \iffalse
% Copyright (C) 1991,1992 by Leslie Lamport \and
-% Copyright (C) 1994,1995 by the \LaTeX3 project \and Johannes Braams
+% Copyright (C) 1994-2020 by the \LaTeX3 project \and Johannes Braams
%
% \changes{v1.1}{1994/01/25}{Made `proc' a document class and provide
% a .sty file for compatibility mode}
@@ -73,7 +73,7 @@
%</driver>
%<+class>\ProvidesClass{proc}
%<+style>\ProvidesFile{proc.sty}
- [2014/09/29 v1.3l
+ [2020/11/23 v1.3l
%<+class> Standard LaTeX document class]
%<+style> LaTeX 2.09 compatibility style option `proc']
% \end{macrocode}
@@ -147,7 +147,7 @@
%
% \section{Implementation}
%
-% In this case a check is needed to see wether \LaTeXe\ runs in
+% In this case a check is needed to see whether \LaTeXe\ runs in
% compatibility mode.
% \changes{v1.3i}{1994/05/27}{Added missing docstrip guard}
% \begin{macrocode}
diff --git a/Master/texmf-dist/source/latex-dev/base/proc.ins b/Master/texmf-dist/source/latex-dev/base/proc.ins
index 2c419c92b94..b9c3cbe0645 100644
--- a/Master/texmf-dist/source/latex-dev/base/proc.ins
+++ b/Master/texmf-dist/source/latex-dev/base/proc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/slides.dtx b/Master/texmf-dist/source/latex-dev/base/slides.dtx
index 8b7276f492d..9c83a3d851a 100644
--- a/Master/texmf-dist/source/latex-dev/base/slides.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/slides.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{slides.drv}
%</driver>
- [2020/02/20 v2.4b
+ [2020/11/23 v2.4b
%<+class> Standard LaTeX document class]
%<+cmd> SLiTeX definitions]
% \end{macrocode}
@@ -220,7 +220,7 @@
% \end{quote}
%
% The code is divided into two parts, we first implement the class
-% related functions and declarations and then define lowlevel stuff
+% related functions and declarations and then define low level stuff
% that is necessary within every class. By placing such commands into
% a separate file it will be possible to share it with other slide
% classes.
@@ -288,7 +288,7 @@
% \end{macrocode}
%
% The option \Lopt{landscape} switches the values of |\paperheight|
-% and |\paperwidth|, assuming the dimensions wer given for portrait
+% and |\paperwidth|, assuming the dimensions were given for portrait
% paper.
% \begin{macrocode}
\DeclareOption{landscape}
@@ -705,7 +705,7 @@
%
% \begin{macro}{\clubpenalty}
% \begin{macro}{\widowpenalty}
-% These penalties are use to discourrage club and widow lines.
+% These penalties are use to discourage club and widow lines.
% Because we use their default values we only show them here,
% commented out.
% \begin{macrocode}
@@ -718,7 +718,7 @@
% \begin{macro}{\displaywidowpenalty}
% \begin{macro}{\predisplaypenalty}
% \begin{macro}{\postdisplaypenalty}
-% Discourrage (but not so much) widows in front of a math display
+% Discourage (but not so much) widows in front of a math display
% and forbid breaking directly in front of a display. Allow break
% after a display without a penalty. Again the default values are
% used, therefore we only show them here.
@@ -1721,7 +1721,7 @@
\if@titlepage \break \fi}
% \end{macrocode}
-% \section{Initialisation}
+% \section{Initialization}
%
% \subsection{Date}
%
@@ -2348,8 +2348,8 @@ COLOR LAYER\\[.75in]%
% any output when the |@visible| switch is false.
%
% \changes{v2.2j}{1994/03/11}{Corrected \cs{@oval}, like previous
-% \changes{v2.4a}{2016/03/29}{initialise in \cs{@oval}tests added for latex/4452}
-% change to \file{latex.dtx}.}
+% \changes{v2.4a}{2016/03/29}{Initialize in \cs{@oval}tests added for
+% latex/4452} change to \file{latex.dtx}.}
% \begin{macrocode}
\def\line(#1,#2)#3{\if@visible\@xarg #1\relax \@yarg #2\relax
\@linelen #3\unitlength
diff --git a/Master/texmf-dist/source/latex-dev/base/slides.ins b/Master/texmf-dist/source/latex-dev/base/slides.ins
index 0eaa1eb1d7f..1213d4f4d90 100644
--- a/Master/texmf-dist/source/latex-dev/base/slides.ins
+++ b/Master/texmf-dist/source/latex-dev/base/slides.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -96,7 +96,7 @@ extension .ins) which are part of the distribution.
This is a generated file.
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -138,7 +138,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx
index 1f7c5b651d5..55b2ad3cec6 100644
--- a/Master/texmf-dist/source/latex-dev/base/syntonly.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/syntonly.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/source/latex-dev/base/syntonly.ins b/Master/texmf-dist/source/latex-dev/base/syntonly.ins
index c4a69c4101a..3717d1e6fe8 100644
--- a/Master/texmf-dist/source/latex-dev/base/syntonly.ins
+++ b/Master/texmf-dist/source/latex-dev/base/syntonly.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2020
+Copyright (C) 1993-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/tulm.ins b/Master/texmf-dist/source/latex-dev/base/tulm.ins
index 9e32e39a63b..1c4e45e8c42 100644
--- a/Master/texmf-dist/source/latex-dev/base/tulm.ins
+++ b/Master/texmf-dist/source/latex-dev/base/tulm.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 2016-2020
+Copyright (C) 2016-2021
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/Master/texmf-dist/source/latex-dev/base/unpack.ins b/Master/texmf-dist/source/latex-dev/base/unpack.ins
index 3264a401d9e..9df3403f5b3 100644
--- a/Master/texmf-dist/source/latex-dev/base/unpack.ins
+++ b/Master/texmf-dist/source/latex-dev/base/unpack.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
index 8d454d1c718..cd11cb0f2ae 100644
--- a/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
+++ b/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -216,7 +216,7 @@
%<+ts1> \ProvidesFile{ts1enc.dfu}
%<+x2> \ProvidesFile{x2enc.dfu}
%<+all> \ProvidesFile{utf8enc.dfu}
-%<-utf8-2018> [2019/11/14 v1.2k UTF-8 support for inputenc]
+%<-utf8-2018> [2020/11/26 v1.2k UTF-8 support for inputenc]
% \end{macrocode}
%
% \begin{macrocode}
@@ -318,7 +318,7 @@
% However, if we are not doing typesetting, then we execute the
% command \cs{UTFviii@two@octets@noexpand} which works like
% \cs{UTF@two@octets@string} but uses \cs{noexpand} instead of
-% \cs{string}. This way the sequence is temporay rendered harmless,
+% \cs{string}. This way the sequence is temporary rendered harmless,
% e.g., would display as is or stays put inside a
% \cs{protected@edef}. But if the result is later reused the
% starting octet is still active and so will be able to construct
@@ -363,7 +363,7 @@
% \begin{macro}{\UTFviii@two@octets@noexpand}
% \begin{macro}{\UTFviii@three@octets@noexpand}
% \begin{macro}{\UTFviii@four@octets@noexpand}
-% These tempoarily prevent the active chars from expanding.
+% These temporarily prevent the active chars from expanding.
% \begin{macrocode}
\long\def\UTF@two@octets@noexpand#1#2{\noexpand#2\noexpand}
\long\def\UTF@three@octets@noexpand#1#2#3{\noexpand#2\noexpand#3\noexpand}
@@ -530,10 +530,11 @@
%
%
% \begin{macro}{\UTFviii@loop}
-% This bit of code derived from \texttt{xmltex} defines the active character
-% correspnding to starting octets to call |\UTFviii@two@octets| etc as appropriate.
-% The starting octet itself is passed directly as the first argument, the others
-% are picked up later en route.
+% This bit of code derived from \texttt{xmltex} defines the active
+% character corresponding to starting octets to call |\UTFviii@two@octets|
+% etc as appropriate.
+% The starting octet itself is passed directly as the first
+% argument, the others are picked up later en route.
%
% The |\UTFviii@loop| loops through the numbers starting at
% |\count@| and ending at |\@tempcnta|${} - 1$, each time executing
@@ -691,7 +692,7 @@
% \end{macrocode}
%
% Here is an example of what is happening, for the pair \texttt{"C2 "A3}
-% (which is the utf8 represenation for the character \textsterling{}).
+% (which is the utf8 representation for the character \textsterling{}).
% After |\parse@XML@charref| we have, stored in |\UTFviii@tmp|, a
% single command with two character tokens as arguments:
% \begin{quote}
@@ -849,7 +850,7 @@
%
% \begin{macro}{\decode@UTFviii}
% \changes{v1.1o}{2015/08/28}{Macro added}
-% In the reverse direction, take a sequence of octects(bytes)
+% In the reverse direction, take a sequence of octets(bytes)
% representing a character in UTF-8 and construct the Unicode number.
% The sequence is terminated by |\relax|.
%
@@ -1134,7 +1135,7 @@
%
% \changes{v1.1o}{2015/08/28}{Add U+00A0 and U+00AD}
% \changes{v1.1q}{2015/12/02}{Add remaining latin uses of accents in T1}
-% \changes{v1.1r}{2015/12/03}{Add some more ogoneck cases}
+% \changes{v1.1r}{2015/12/03}{Add some more ogonek cases}
% \changes{v1.1s}{2016/01/11}{Add some more caron and acute}
% \changes{v1.1t}{2017/01/28}{Add caron cominations for GgYy}
% \begin{macrocode}
@@ -1537,7 +1538,7 @@
% two mappings are wrong or rather the names in OT2 should change for
% consistency.
%
-% On the other hand the names |\CYROTLD| are somewhat questionabled as the
+% On the other hand the names |\CYROTLD| are somewhat questionable as the
% Unicode standard only describes ``Cyrillic barred O'' while |TLD| refers
% to a tilde (which is more less what the ``Cyrillic FITA looks according
% to the Unicode book).
diff --git a/Master/texmf-dist/tex/latex-dev/base/alltt.sty b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
index be1a5277dc8..0c71d7c7d07 100644
--- a/Master/texmf-dist/tex/latex-dev/base/alltt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/alltt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,12 +44,12 @@
%%
%% File `alltt.dtx'.
%% Copyright (C) 1987 by Leslie Lamport
-%% Copyright (C) 1994--1997 LaTeX3 project, Johannes Braams
+%% Copyright (C) 1994--2020 LaTeX3 project, Johannes Braams
%% all rights reserved.
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{alltt}
- [1997/06/16 v2.0g defines alltt environment]
+ [2020/11/23 v2.0g defines alltt environment]
\begingroup
\lccode`\~=`\'
\lowercase{\endgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/ansinew.def b/Master/texmf-dist/tex/latex-dev/base/ansinew.def
index 33d64d13c22..fa53bcfcaec 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ansinew.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ansinew.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{ansinew.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/applemac.def b/Master/texmf-dist/tex/latex-dev/base/applemac.def
index 2e5ffe44afb..b2fb63ee0e4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/applemac.def
+++ b/Master/texmf-dist/tex/latex-dev/base/applemac.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{applemac.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/article.cls b/Master/texmf-dist/tex/latex-dev/base/article.cls
index 024e49cf835..d41f14718f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/article.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{article}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/article.sty b/Master/texmf-dist/tex/latex-dev/base/article.sty
index f0b491dc4af..e9b6be2910f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/article.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/article.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ascii.def b/Master/texmf-dist/tex/latex-dev/base/ascii.def
index ad9dabcaf17..2d1e17eb0ac 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ascii.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ascii.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{ascii.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\@inpenc@test
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
index db9ebd43b60..9430b81d7af 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,14 +42,14 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
+%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0c}
-\providecommand\ltshipoutdate{2020/09/27}
+\providecommand\ltshipoutversion{v1.0d}
+\providecommand\ltshipoutdate{2020/12/06}
\ProvidesPackage{atbegshi-ltx}
- [2020/08/17 v1.0a
- Emulation of the original atbegshi package^^Jwith kernel methods]
+ [2020/10/15 v1.0b
+ Emulation of the original atbegshi^^Jpackage with kernel methods]
\let \AtBeginShipoutBox \ShipoutBox
\let \AtBeginShipoutInit \@empty
\protected \def \AtBeginShipout {\AddToHook{shipout/before}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
index b0ee689e5c8..6091c23923e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,11 +42,11 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0c}
-\providecommand\ltfilehookdate{2020/10/18}
+\providecommand\ltfilehookversion{v1.0e}
+\providecommand\ltfilehookdate{2021/01/07}
\ProvidesPackage{atveryend-ltx}
[2020/08/19 v1.0a
Emulation of the original atvery package^^Jwith kernel methods]
diff --git a/Master/texmf-dist/tex/latex-dev/base/bezier.sty b/Master/texmf-dist/tex/latex-dev/base/bezier.sty
index 1d74f568913..14654debe06 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bezier.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/bezier.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk10.clo b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
index da26bc70cf8..1170f54ed25 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk10.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk11.clo b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
index 106db675aa6..82d4a558e54 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk11.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/bk12.clo b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
index 1f6bc54528b..d55f3f7ad16 100644
--- a/Master/texmf-dist/tex/latex-dev/base/bk12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/bk12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{bk12.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/book.cls b/Master/texmf-dist/tex/latex-dev/base/book.cls
index 04ab96f3a11..889039e127b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/book.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{book}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/book.sty b/Master/texmf-dist/tex/latex-dev/base/book.sty
index f62b6631d54..3ff649cf110 100644
--- a/Master/texmf-dist/tex/latex-dev/base/book.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/book.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1250.def b/Master/texmf-dist/tex/latex-dev/base/cp1250.def
index 5abb61b3474..c1ed319afd5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1250.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1250.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp1250.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1252.def b/Master/texmf-dist/tex/latex-dev/base/cp1252.def
index 030e195b356..2415991e74b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1252.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1252.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp1252.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp1257.def b/Master/texmf-dist/tex/latex-dev/base/cp1257.def
index c43fdccd075..4a8961cfc05 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp1257.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp1257.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp1257.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437.def b/Master/texmf-dist/tex/latex-dev/base/cp437.def
index 27acacdec92..c8d954235f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp437.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp437.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp437.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp437de.def b/Master/texmf-dist/tex/latex-dev/base/cp437de.def
index ae78fc6d6ce..6db04a531e7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp437de.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp437de.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp437de.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp850.def b/Master/texmf-dist/tex/latex-dev/base/cp850.def
index d138dd3790a..5a9052a6632 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp850.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp850.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp850.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
%%
%% If you need a Euro symbol, try cp858 instead.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp852.def b/Master/texmf-dist/tex/latex-dev/base/cp852.def
index 2878f5b1a2e..8eb18ad9e3c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp852.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp852.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp852.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp858.def b/Master/texmf-dist/tex/latex-dev/base/cp858.def
index d159c74c35d..11911df492d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp858.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp858.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp858.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/cp865.def b/Master/texmf-dist/tex/latex-dev/base/cp865.def
index a4cb3dda881..fea2752ce9a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/cp865.def
+++ b/Master/texmf-dist/tex/latex-dev/base/cp865.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{cp865.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textflorin}{\textit{f}}
\ProvideTextCommandDefault{\textpeseta}{Pt}
diff --git a/Master/texmf-dist/tex/latex-dev/base/decmulti.def b/Master/texmf-dist/tex/latex-dev/base/decmulti.def
index 65c867a1773..e50f32e9fba 100644
--- a/Master/texmf-dist/tex/latex-dev/base/decmulti.def
+++ b/Master/texmf-dist/tex/latex-dev/base/decmulti.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{decmulti.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/doc.sty b/Master/texmf-dist/tex/latex-dev/base/doc.sty
index 417340cebc9..915d61596c8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/doc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/doc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,11 +43,11 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{doc}
- [2020/06/15 v2.1m
+ [2020/11/23 v2.1m
Standard LaTeX documentation package (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved.
\@ifundefined{macro@cnt}{}{\endinput}
\catcode`\^^A=14
\AtBeginDocument{\catcode`\^^A=14\relax}
diff --git a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
index e670198de27..9d1337b3bf2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,8 +45,8 @@
\catcode`\}=2
\def\filename{docstrip.dtx}
\def\fileversion{v2.6a}
-\def\filedate{2020-07-07}
-\def\docdate {2020-07-11}
+\def\filedate{2020-11-23}
+\def\docdate {2020-11-23}
%%
%% The docstrip program for use with TeX.
%% Copyright (C) 1989-1991 Frank Mittelbach
diff --git a/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty b/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty
index 2be54dfdc71..e23e82e7e1f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,14 +42,14 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
+%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0c}
-\providecommand\ltshipoutdate{2020/09/27}
+\providecommand\ltshipoutversion{v1.0d}
+\providecommand\ltshipoutdate{2020/12/06}
\ProvidesPackage{everyshi-ltx}
- [2020/08/17 v1.0a
- Emulation of the original everyshi package^^Jwith kernel methods]
+ [2020/10/15 v1.0b
+ Emulation of the original everyshi^^Jpackage with kernel methods]
\protected \def \EveryShipout {\AddToHook{shipout/before}}
\protected \def \AtNextShipout {\AddToHookNext{shipout/before}}
%%
@@ -59,7 +59,7 @@
%%
%% Code that directly manipulates box 255, however, might fail.
%% If that is the case look at the shipout hooks offered now as
-%% they are normally sufficienct to avoid such minpulations (or
+%% they are normally sufficient to avoid such manipulations (or
%% replace box 255 with \ShipoutBox in the code.
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/exscale.sty b/Master/texmf-dist/tex/latex-dev/base/exscale.sty
index 06bca3638bf..da7ea3d3ce8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/exscale.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/exscale.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
index 6bf4862c3d4..b7124ce7fe6 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{fix-cm}
- [2015/01/14 v1.1t fixes to LaTeX]
+ [2020/11/24 v1.1t fixes to LaTeX]
%%
\input{ts1enc.def}
diff --git a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
index 55709530da4..9ad5e461cbc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/flafter.sty b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
index 4a0ce2244fb..40bee68166e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/flafter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/flafter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
index 35900b21998..4005d9a926e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
index 638b1597c6d..18f97f798be 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
index 099ef14f8aa..77759639b7a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
index e59f6c80f54..6525c55f142 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
index 533c95e3b97..4eb3df74f3d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,8 +37,8 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.cfg}
- [2020/08/01 v3.0i LaTeX Kernel
-(Uncustomised math
+ [2020/11/24 v3.0i LaTeX Kernel
+(Uncustomized math
font setup)]
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
index 003df16621e..d3789b91529 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fontmath.ltx}
- [2020/08/01 v3.0i LaTeX Kernel
+ [2020/11/24 v3.0i LaTeX Kernel
(Math
font setup)]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
index e404b80e993..2bca55fcfea 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,8 +37,8 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.cfg}
- [2020/08/01 v3.0i LaTeX Kernel
-(Uncustomised text
+ [2020/11/24 v3.0i LaTeX Kernel
+(Uncustomized text
font setup)]
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
index 24d26fe9492..64c969907a7 100644
--- a/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,7 +37,7 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{fonttext.ltx}
- [2020/08/01 v3.0i LaTeX Kernel
+ [2020/11/24 v3.0i LaTeX Kernel
(Text
font setup)]
\typeout{=== Don't modify this file, use a .cfg file instead ===^^J}
diff --git a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
index 8efcae32d96..1d7f9836f15 100644
--- a/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
index bc471d7c4df..1e50f043e7f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/idx.tex b/Master/texmf-dist/tex/latex-dev/base/idx.tex
index cbc233f63aa..89f8b1f9a01 100644
--- a/Master/texmf-dist/tex/latex-dev/base/idx.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/idx.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
index c5ffebfb6a3..e444453e80f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -49,7 +49,7 @@
%%
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{ifthen}
- [2014/09/29 v1.1c Standard LaTeX ifthen package (DPC)]
+ [2020/11/24 v1.1c Standard LaTeX ifthen package (DPC)]
\def\TE@throw{\@ne=\@ne\noexpand\fi}
\def\boolean#1#2{%
\TE@throw\expandafter\noexpand\csname if#1\endcsname#2}
diff --git a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
index a8c8ab69b1c..812b5bd809b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesPackage{inputenc}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\def\DeclareInputMath#1{%
\@inpenc@test
\bgroup
diff --git a/Master/texmf-dist/tex/latex-dev/base/lablst.tex b/Master/texmf-dist/tex/latex-dev/base/lablst.tex
index 195d578f8c8..643dd6b1f61 100644
--- a/Master/texmf-dist/tex/latex-dev/base/lablst.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/lablst.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex.ltx b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
index f3a554ce25c..52ab96c7ab0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/latex.ltx
@@ -55,7 +55,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -710,7 +710,7 @@
\def\fmtname{LaTeX2e}
\edef\fmtversion
{2021-05-01}
-\def\patch@level{0}
+\def\patch@level{-1}
\edef\development@branch@name{develop \the\year-\the\month-\the\day}
\iffalse
\def\reserved@a#1/#2/#3\@nil{%
@@ -988,6 +988,8 @@
}
\fi
%%% From File: ltexpl.dtx
+\let\@kernel@after@enddocument\@empty
+\let\@kernel@after@enddocument@afterlastpage\@empty
\def\@expl@sys@load@backend@@{}
\def\@expl@push@filename@@{}
\def\@expl@push@filename@aux@@{}
@@ -1625,11 +1627,11 @@
\xdef#1{\the\toks@}%
\endgroup}
%%
-%% File: lthooks.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0e}
-\def\lthooksdate{2020/10/23}
+\def\lthooksversion{v1.0h}
+\def\lthooksdate{2021/01/07}
\ExplSyntaxOn
\bool_new:N \g__hook_debug_bool
\cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -1666,6 +1668,34 @@
\cs_generate_variant:Nn \tl_show:n { x }
\cs_generate_variant:Nn \tl_log:n { x }
\scan_new:N \s__hook_mark
+\cs_new_protected:Npn \__hook_tl_set:Nn #1#2
+ { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \__hook_tl_set:Nx #1#2
+ { \cs_set_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \__hook_tl_set:Nn { c }
+\cs_generate_variant:Nn \__hook_tl_set:Nx { c }
+\cs_new_protected:Npn \__hook_tl_gset:Nn #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \__hook_tl_gset:No #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
+\cs_new_protected:Npn \__hook_tl_gset:Nx #1#2
+ { \cs_gset_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \__hook_tl_gset:Nn { c }
+\cs_generate_variant:Nn \__hook_tl_gset:No { c }
+\cs_generate_variant:Nn \__hook_tl_gset:Nx { c }
+\cs_new_protected:Npn \__hook_tl_gput_right:Nn #1#2
+ { \__hook_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No, cn }
+\cs_new_protected:Npn \__hook_tl_gput_left:Nn #1#2
+ {
+ \__hook_tl_gset:Nx #1
+ { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
+\cs_generate_variant:Nn \__hook_tl_gput_left:Nn { No }
+\cs_new_eq:NN \__hook_tl_gset_eq:NN \tl_gset_eq:NN
+\cs_new_protected:Npn \__hook_tl_gclear:N #1
+ { \__hook_tl_gset_eq:NN #1 \c_empty_tl }
+\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
\cs_new_protected:Npn \hook_new:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
\cs_new_protected:Npn \__hook_new:n #1
@@ -1686,6 +1716,7 @@
\__hook_if_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
+ \tl_new:c { __hook_toplevel~#1 }
\tl_new:c { __hook_next~#1 }
}
}
@@ -1700,59 +1731,58 @@
{ \hook_new:n {#1} \hook_new_reversed:n {#2} }
\cs_new_protected:Npn \__hook_include_legacy_code_chunk:n #1
{
- \debug_suspend:
\tl_if_exist:cT { @#1hook }
{
\tl_if_empty:cF { @#1hook }
{
\exp_args:Nnnv \__hook_hook_gput_code_do:nnn {#1}
{ legacy } { @#1hook }
- \tl_gclear:c { @#1hook }
+ \__hook_tl_gclear:c { @#1hook }
}
}
- \debug_resume:
}
\cs_new:Npn \__hook_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
- { \__hook_currname_or_default:n { top-level } }
- {
- \tl_trim_spaces_apply:nN {#1}
- \__hook_parse_dot_label:nn { top-level }
- }
+ { \__hook_currname_or_default: }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
}
-\cs_new:Npn \__hook_parse_dot_label:nn #1 #2
+\cs_new:Npn \__hook_parse_dot_label:n #1
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nnn { hooks } { empty-label } {#2}
- #2
+ \msg_expandable_error:nn { hooks } { empty-label }
+ \__hook_currname_or_default:
}
{
\str_if_eq:nnTF {#1} { . }
- { \__hook_currname_or_default:n {#2} }
- { \__hook_parse_dot_label:nw {#2} #1 ./ \s__hook_mark }
+ { \__hook_currname_or_default: }
+ { \__hook_parse_dot_label:w #1 ./ \s__hook_mark }
}
}
-\cs_new:Npn \__hook_parse_dot_label:nw #1 #2 ./ #3 \s__hook_mark
+\cs_new:Npn \__hook_parse_dot_label:w #1 ./ #2 \s__hook_mark
{
- \tl_if_empty:nTF {#2}
- { \__hook_parse_dot_label_aux:nw {#1} #3 \s__hook_mark }
+ \tl_if_empty:nTF {#1}
+ { \__hook_parse_dot_label_aux:w #2 \s__hook_mark }
{
- \tl_if_empty:nTF {#3}
- { \__hook_make_name:n {#2} }
- { \__hook_parse_dot_label_cleanup:w #2 ./ #3 \s__hook_mark }
+ \tl_if_empty:nTF {#2}
+ { \__hook_make_name:n {#1} }
+ { \__hook_parse_dot_label_cleanup:w #1 ./ #2 \s__hook_mark }
}
}
\cs_new:Npn \__hook_parse_dot_label_cleanup:w #1 ./ \s__hook_mark {#1}
-\cs_new:Npn \__hook_parse_dot_label_aux:nw #1 #2 ./ \s__hook_mark
- { \__hook_currname_or_default:n {#1} / \__hook_make_name:n {#2} }
-\cs_new:Npn \__hook_currname_or_default:n #1
+\cs_new:Npn \__hook_parse_dot_label_aux:w #1 ./ \s__hook_mark
+ { \__hook_currname_or_default: / \__hook_make_name:n {#1} }
+\cs_new:Npn \__hook_currname_or_default:
{
\tl_if_empty:NTF \g__hook_hook_curr_name_tl
{
\tl_if_empty:NTF \@currname
- { \__hook_make_name:n {#1} }
+ {
+ \msg_expandable_error:nnn { hooks } { should-not-happen }
+ { Empty~default~label. }
+ \__hook_make_name:n { label-missing }
+ }
{ \@currname }
}
{ \g__hook_hook_curr_name_tl }
@@ -1822,12 +1852,23 @@
\hook_if_exist:nF {#1} { undeclared~ }
hook~ #1~ (#2)
\on@line\space <-~ \tl_to_str:n{#3}} }
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \str_if_eq:nnTF {#2} { top-level }
{
- \prop_gput:cno { g__hook_#1_code_prop } {#2}
- { \l__hook_return_tl #3 }
+ \str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
+ {
+ \__hook_declare:n {#1}
+ \__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
+ }
+ { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ }
+ {
+ \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ {
+ \prop_gput:cno { g__hook_#1_code_prop } {#2}
+ { \l__hook_return_tl #3 }
+ }
+ { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
- { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
@@ -1900,11 +1941,11 @@
{ \__hook_strip_double_slash:n {#1} }
\cs_new:Npn \__hook_strip_double_slash:n #1
{ \__hook_strip_double_slash:w #1 // \s__hook_mark }
-\cs_new:Npn \__hook_strip_double_slash:w #1 // #2 \s__hook_mark
+\cs_new:Npn \__hook_strip_double_slash:w #1/#2/#3 // #4 \s__hook_mark
{
- \tl_if_empty:nTF {#2}
- {#1}
- { \__hook_strip_double_slash:w #1 / #2 \s__hook_mark }
+ \tl_if_empty:nTF {#4}
+ { #1/#2/#3 }
+ { \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
}
\prop_const_from_keyval:Nn \c__hook_generics_prop
{env=,file=,package=,class=,include=}
@@ -1918,12 +1959,20 @@
\__hook_if_exist:nTF {#1}
{
\str_if_eq:nnTF {#2} {*}
- { \prop_gclear:c { g__hook_#1_code_prop } }
{
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
- { \__hook_gremove_code_do:nn }
- { \__hook_mark_removal:nn }
- {#1} {#2}
+ \prop_gclear:c { g__hook_#1_code_prop }
+ \__hook_tl_gclear:c { __hook_toplevel~#1 }
+ \__hook_tl_gclear:c { __hook_next~#1 }
+ }
+ {
+ \str_if_eq:nnTF {#2} { top-level }
+ { \__hook_tl_gclear:c { __hook_toplevel~#1 } }
+ {
+ \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ { \__hook_gremove_code_do:nn }
+ { \__hook_mark_removal:nn }
+ {#1} {#2}
+ }
}
\hook_if_exist:nT {#1}
{ \__hook_update_hook_code:n {#1} }
@@ -1962,7 +2011,6 @@
{
\__hook_declare:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
- \debug_suspend:
\cs_if_exist_use:cTF { __hook_rule_#3_gset:nnn }
{
{#1} {#2} {#4}
@@ -1970,29 +2018,28 @@
}
{ \msg_error:nnnnnn { hooks } { unknown-rule }
{#1} {#2} {#3} {#4} }
- \debug_resume:
}
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_<_gset:nnn } \__hook_rule_before_gset:nnn
\cs_new_protected:Npn \__hook_rule_after_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
{ \__hook_label_ordered:nnTF {#3} {#2} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_>_gset:nnn } \__hook_rule_after_gset:nnn
\cs_new_protected:Npn \__hook_rule_voids_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { -> } { <- } }
}
\cs_new_protected:cpn { __hook_rule_incompatible-error_gset:nnn } #1#2#3
- { \tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xE } }
+ { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xE } }
\cs_new_protected:cpn { __hook_rule_incompatible-warning_gset:nnn } #1#2#3
- { \tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xW } }
+ { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xW } }
\cs_new_protected:Npn \__hook_rule_unrelated_gset:nnn #1#2#3 { }
\cs_new_protected:Npn \__hook_rule_gclear:nnn #1#2#3
{ \cs_undefine:c { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } }
@@ -2039,30 +2086,32 @@
}
\cs_new_protected:Npn \__hook_initialize_hook_code:n #1
{
- \debug_suspend:
\__hook_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
'#1' \on@line :^^J} }
\__hook_include_legacy_code_chunk:n {#1}
\hook_if_exist:nT {#1}
{
\prop_if_empty:cTF {g__hook_#1_code_prop}
- { \tl_gset:co { __hook~#1 }
- { \cs:w __hook_next~#1 \cs_end: } }
+ {
+ \__hook_tl_gset:co { __hook~#1 }
+ {
+ \cs:w __hook_toplevel~#1 \exp_after:wN \cs_end:
+ \cs:w __hook_next~#1 \cs_end:
+ }
+ }
{
\__hook_if_reversed:nTF {#1}
- { \cs_set_eq:NN \__hook_tl_gput:NV \tl_gput_left:NV
+ { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_left:Nn
\cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_left:NV }
- { \cs_set_eq:NN \__hook_tl_gput:NV \tl_gput_right:NV
+ { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_right:Nn
\cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_right:NV }
\prop_set_eq:Nc \l__hook_work_prop { g__hook_#1_code_prop }
- \__hook_initialize_single:cccn
- { __hook~#1 } { __hook_next~#1 }
- { g__hook_#1_labels_clist } {#1}
+ \__hook_initialize_single:ccn
+ { __hook~#1 } { g__hook_#1_labels_clist } {#1}
\__hook_debug:n{ \exp_args:NNx \prop_gput:Nnn
\g__hook_used_prop {#1}{} }
}
}
- \debug_resume:
}
\cs_new:Npn \__hook_tl_csname:n #1 { l__hook_label_#1_tl }
\cs_new:Npn \__hook_seq_csname:n #1 { l__hook_label_#1_seq }
@@ -2071,16 +2120,16 @@
\tl_new:N \l__hook_front_tl
\tl_new:N \l__hook_rear_tl
\tl_new:c { \__hook_tl_csname:n { 0 } }
-\cs_new_protected:Npn \__hook_initialize_single:NNNn #1#2#3#4
+\cs_new_protected:Npn \__hook_initialize_single:NNn #1#2#3
{
\seq_clear:N \l__hook_labels_seq
\int_zero:N \l__hook_labels_int
- \tl_set:Nn \l__hook_cur_hook_tl {#4}
+ \tl_set:Nn \l__hook_cur_hook_tl {#3}
\prop_map_inline:Nn \l__hook_work_prop
{
\int_incr:N \l__hook_labels_int
\seq_put_right:Nn \l__hook_labels_seq {##1}
- \tl_set:cn { \__hook_tl_csname:n {##1} }{0}
+ \__hook_tl_set:cn { \__hook_tl_csname:n {##1} } { 0 }
\seq_clear_new:c { \__hook_seq_csname:n {##1} }
}
\prop_map_inline:Nn \l__hook_work_prop
@@ -2091,7 +2140,7 @@
{ \prop_map_break: }
{ \__hook_apply_label_pair:nnn {##1} {####1} }
{ \__hook_apply_label_pair:nnn {####1} {##1} }
- {#4}
+ {#3}
}
}
\__hook_debug:n { \__hook_debug_label_data:N \l__hook_work_prop }
@@ -2106,14 +2155,14 @@
}
}
\tl_set_eq:Nc \l__hook_front_tl { \__hook_tl_csname:n { 0 } }
- \tl_gclear:N #1
- \clist_gclear:N #3
+ \__hook_tl_gclear:N #1
+ \clist_gclear:N #2
\bool_while_do:nn { ! \str_if_eq_p:Vn \l__hook_front_tl { 0 } }
{
\int_decr:N \l__hook_labels_int
\prop_get:NVN \l__hook_work_prop \l__hook_front_tl \l__hook_return_tl
- \__hook_tl_gput:NV #1 \l__hook_return_tl
- \__hook_clist_gput:NV #3 \l__hook_front_tl
+ \exp_args:NNV \__hook_tl_gput:Nn #1 \l__hook_return_tl
+ \__hook_clist_gput:NV #2 \l__hook_front_tl
\__hook_debug:n{ \iow_term:x{Handled~ code~ for~ \l__hook_front_tl} }
\seq_map_inline:cn { \__hook_seq_csname:n { \l__hook_front_tl } }
{
@@ -2138,11 +2187,12 @@
\__hook_debug_label_data:N \l__hook_work_prop
\iow_term:x{====================}
}
- \tl_gput_right:Nn #1 {#2}
+ \exp_args:NNo \__hook_tl_gput:Nn #1 { \cs:w __hook_toplevel~#3 \cs_end: }
+ \__hook_tl_gput_right:No #1 { \cs:w __hook_next~#3 \cs_end: }
}
-\cs_generate_variant:Nn \__hook_initialize_single:NNNn {ccc}
-\cs_new:Npn \__hook_tl_gput:NV {\ERROR}
-\cs_new:Npn \__hook_clist_gput:NV {\ERROR}
+\cs_generate_variant:Nn \__hook_initialize_single:NNn { cc }
+\cs_new:Npn \__hook_tl_gput:Nn { \ERROR }
+\cs_new:Npn \__hook_clist_gput:NV { \ERROR }
\cs_new_protected:Npn \__hook_apply_label_pair:nnn #1#2#3
{
\__hook_label_if_exist_apply:nnnF {#1} {#2} {#3}
@@ -2261,7 +2311,8 @@
\__hook_log_cmd:x { ^^J ->~The~hook~'#1': }
\hook_if_exist:nF {#1}
{ \__hook_log_line:x { is~not~declared! } }
- \__hook_if_exist:nTF {#1}
+ \hook_if_empty:nTF {#1}
+ { #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
\prop_if_empty:cTF { g__hook_#1_code_prop }
@@ -2270,7 +2321,19 @@
\prop_map_inline:cn { g__hook_#1_code_prop }
{ \__hook_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } }
}
- \__hook_log_line:x { Extra~code~for~next~invocation:}
+ \__hook_log_line:x
+ {
+ Document-level~(top-level)~code
+ \hook_if_exist:nT {#1}
+ { ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
+ }
+ \__hook_log_line_indent:x
+ {
+ \tl_if_empty:cTF { __hook_toplevel~#1 }
+ { --- }
+ { -> ~ \exp_args:Nv \tl_to_str:n { __hook_toplevel~#1 } }
+ }
+ \__hook_log_line:x { Extra~code~for~next~invocation: }
\__hook_log_line_indent:x
{
\tl_if_empty:cTF { __hook_next~#1 }
@@ -2321,7 +2384,6 @@
}
}
}
- { #2 { The~hook~is~empty. } }
}
\cs_new:Npn \__hook_log_next_code:n #1
{ \exp_args:No \tl_to_str:n { \use_none:nn #1 } }
@@ -2342,7 +2404,7 @@
}
\cs_new_protected:Npn \__hook_list_one_rule:nnn #1#2#3
{
- \__hook_list_if_rule_exists:nnnF {#1} {#2} {#3} { }
+ \__hook_list_if_rule_exists:nnnF {#1} {#2} {#3}
{ \__hook_list_if_rule_exists:nnnF {#1} {#2} { ?? } { } }
}
\cs_new_protected:Npn \__hook_list_if_rule_exists:nnnF #1#2#3
@@ -2350,7 +2412,9 @@
\if_cs_exist:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end:
\exp_args:Nv \__hook_tmp:w
{ g__hook_ #3 _rule_ #1 | #2 _tl } { #1 | #2 } {#3}
+ \exp_after:wN \use_none:nn
\fi:
+ \use:n
}
\cs_new_protected:Npn \__hook_debug_print_rules:n #1
{
@@ -2372,12 +2436,10 @@
{ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
{
- \debug_suspend:
\__hook_declare:n {#1}
\hook_if_exist:nTF {#1}
{ \__hook_gput_next_do:nn {#1} {#2} }
{ \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
- \debug_resume:
}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
@@ -2389,8 +2451,8 @@
\tl_if_empty:cT { __hook~#2 }
{ \__hook_update_hook_code:n {#2} }
\tl_if_empty:NT #1
- { \tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
- \tl_gput_right:Nn #1
+ { \__hook_tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
+ \__hook_tl_gput_right:Nn #1
}
\cs_new_protected:Npn \__hook_clear_next:n #1
{ \cs_gset_eq:cN { __hook_next~#1 } \c_empty_tl }
@@ -2460,7 +2522,11 @@
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g__hook_#1_code_prop } }
- { \tl_if_empty_p:c { __hook_next~#1 } }
+ {
+ \bool_lazy_and_p:nn
+ { \tl_if_empty_p:c { __hook_toplevel~#1 } }
+ { \tl_if_empty_p:c { __hook_next~#1 } }
+ }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -2502,7 +2568,15 @@
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
\msg_new:nnn { hooks } { empty-label }
- { Empty~code~label~\msg_line_context:.~Using~`#1'~instead. }
+ {
+ Empty~code~label~\msg_line_context:.~
+ Using~`\__hook_currname_or_default:'~instead.
+ }
+\msg_new:nnn { hooks } { no-default-label }
+ {
+ Missing~(empty)~default~label~\msg_line_context:. \\
+ This~command~was~ignored.
+ }
\msg_new:nnnn { hooks } { unknown-rule }
{ Unknown~ relationship~ `#3'~
between~ labels~ `#2'~ and~ `#4'~
@@ -2518,6 +2592,39 @@
`voids'~ or~
`unrelated'.
}
+\msg_new:nnnn { hooks } { misused-top-level }
+ {
+ Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\
+ 'top-level'~is~reserved~for~the~user's~document.
+ }
+ {
+ The~'top-level'~label~is~meant~for~user~code~only,~and~should~only~
+ be~used~(sparingly)~in~the~main~document.~Use~the~default~label~
+ '\__hook_currname_or_default:'~for~this~\@cls@pkg,~or~another~
+ suitable~label.
+ }
+\msg_new:nnn { hooks } { set-top-level }
+ {
+ You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\
+ \use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\
+ \msg_line_context:.
+ }
+\msg_new:nnn { hooks } { ddhl-deprecated }
+ {
+ \iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\
+ Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\
+ The~deprecated~name~will~be~removed~in~the~next~release.
+ }
+\msg_new:nnn { hooks } { extra-pop-label }
+ {
+ Extra~\iow_char:N \\PopDefaultHookLabel. \\
+ This~command~will~be~ignored.
+ }
+\msg_new:nnn { hooks } { missing-pop-label }
+ {
+ Missing~\iow_char:N \\PopDefaultHookLabel. \\
+ The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong.
+ }
\msg_new:nnn { hooks } { should-not-happen }
{
ERROR!~This~should~not~happen.~#1 \\
@@ -2532,26 +2639,75 @@
{ \hook_gput_next_code:nn {#1} {#2} }
\NewDocumentCommand \RemoveFromHook { m o }
{ \hook_gremove_code:nn {#1} {#2} }
-\seq_gpush:Nn \g__hook_name_stack_seq { }
+\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
\cs_new_protected:Npn \__hook_curr_name_push:n #1
+ { \exp_args:Nx \__hook_curr_name_push_aux:n { \__hook_make_name:n {#1} } }
+\cs_new_protected:Npn \__hook_curr_name_push_aux:n #1
{
- \seq_gpush:Nn \g__hook_name_stack_seq {#1}
- \tl_gset:Nn \g__hook_hook_curr_name_tl {#1}
+ \tl_if_blank:nTF {#1}
+ { \msg_error:nn { hooks } { no-default-label } }
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { PushDefaultHookLabel } {#1}
+ }
+ {
+ \seq_gpush:NV \g__hook_name_stack_seq \g__hook_hook_curr_name_tl
+ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1}
+ }
+ }
}
\cs_new_protected:Npn \__hook_curr_name_pop:
{
- \seq_gpop:NN \g__hook_name_stack_seq \l__hook_return_tl
- \seq_get:NNTF \g__hook_name_stack_seq \l__hook_return_tl
+ \seq_gpop:NNTF \g__hook_name_stack_seq \l__hook_return_tl
{ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl }
+ { \msg_error:nn { hooks } { extra-pop-label } }
+ }
+\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
+ { \__hook_end_document_label_check: }
+\cs_new_protected:Npn \__hook_end_document_label_check:
+ {
+ \seq_gpop:NNT \g__hook_name_stack_seq \l__hook_return_tl
{
- \msg_error:nnn { hooks } { should-not-happen }
- { Tried~to~pop~from~an~empty~default~label~stack. }
+ \msg_error:nnx { hooks } { missing-pop-label }
+ { \g__hook_hook_curr_name_tl }
+ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl
+ \__hook_end_document_label_check:
}
}
+\NewDocumentCommand \SetDefaultHookLabel { m }
+ {
+ \seq_if_empty:NTF \g__hook_name_stack_seq
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { for } { SetDefaultHookLabel } {#1}
+ }
+ { \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
+ }
+\cs_new_protected:Npn \__hook_set_default_label:n #1
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { SetDefaultHookLabel } {#1}
+ }
+ { \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
+ }
\NewDocumentCommand \DeclareDefaultHookLabel { m }
{
- \seq_gpop:NN \g__hook_name_stack_seq \l__hook_return_tl
- \__hook_curr_name_push:n {#1}
+ \msg_error:nn { hooks } { ddhl-deprecated }
+ \SetDefaultHookLabel {#1}
+ }
+\NewDocumentCommand \PushDefaultHookLabel { m }
+ { \__hook_curr_name_push:n {#1} }
+\NewDocumentCommand \PopDefaultHookLabel { }
+ { \__hook_curr_name_pop: }
+\cs_gset_protected:Npn \@expl@push@filename@aux@@ #1#2#3
+ {
+ \__hook_curr_name_push:n {#3}
+ \str_gset:Nx \g_file_curr_name_str {#3}
+ #1 #2 {#3}
}
\cs_new:Npn \UseHook { \hook_use:n }
\cs_new:Npn \UseOneTimeHook { \hook_use_once:n }
@@ -2571,8 +2727,6 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\cs_new_eq:NN \@expl@@@initialize@all@@
\__hook_initialize_all:
-\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n
- \__hook_curr_name_push:n
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
\ExplSyntaxOff
@@ -4048,7 +4202,7 @@ Type H <return> for immediate help.}%
\DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}}
\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
\edef\f@family{#2}%
- \edef\f@series{#3}%
+ \set@target@series{#3}%
\edef\f@shape{#4}\selectfont
\ignorespaces}
\DeclareRobustCommand\linespread[1]
@@ -4715,12 +4869,14 @@ Type H <return> for immediate help.}%
\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{}
\DeclareFontSeriesChangeRule {ul}{?m}{ul}{}
\DeclareFontSeriesChangeRule {x}{?m}{m}{}
-
-
+\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@series{#1}}}
+\let\delayed@f@adjustment\@empty
+\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@series{#1}}}
\newif\if@forced@series
-\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
-\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
-
\def\merge@font@series#1{%
\expandafter\expandafter\expandafter
\merge@font@series@
@@ -4728,13 +4884,11 @@ Type H <return> for immediate help.}%
{#1}%
\@nil
}
-
\def\merge@font@series@#1#2#3\@nil{%
\def\reserved@a{#3}%
\ifx\reserved@a\@empty
\set@target@series{#2}%
\else
- \maybe@load@fontshape
\edef\reserved@a{\f@encoding /\f@family /#1/\f@shape}%
\ifcsname \reserved@a \endcsname
\set@target@series{#1}%
@@ -4756,8 +4910,27 @@ Type H <return> for immediate help.}%
using `\reserved@b' instead}%
\fi
}
-\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup}
-\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc}
+\def\merge@font@series@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@series@without@substitution@
+ \csname series@\f@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\merge@font@series@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \set@target@series{#2}%
+ \else
+ \set@target@series{#1}%
+ \fi
+}
+\let\delayed@merge@font@series\merge@font@series@without@substitution
+\def\maybe@load@fontshape{%
+ \begingroup
+ \let \typeout \@font@info
+ \try@load@fontshape
+ \endgroup}
\def\set@target@series#1{%
\edef\f@series{#1}%
\series@maybe@drop@one@m\f@series\f@series
@@ -4836,8 +5009,13 @@ Type H <return> for immediate help.}%
\DeclareFontShapeChangeRule {sw}{sc} {scsw} {}
\DeclareFontShapeChangeRule {sw}{ulc} {sw} {}
\DeclareFontShapeChangeRule {sw}{up} {n} {}
-\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
-\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
+\DeclareRobustCommand\fontshape[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@shape{#1}}}
+\DeclareRobustCommand\fontshapeforce[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@shape{#1}}}
+
\def\merge@font@shape#1{%
\expandafter\expandafter\expandafter
\merge@font@shape@
@@ -4851,9 +5029,8 @@ Type H <return> for immediate help.}%
\ifx\reserved@a\@empty
\edef\f@shape{#2}%
\else
- \maybe@load@fontshape
\edef\reserved@a{\f@encoding /\f@family /\f@series/#1}%
- \ifcsname \reserved@a\endcsname
+ \ifcsname \reserved@a\endcsname
\edef\f@shape{#1}%
\else
\ifcsname \f@encoding /\f@family /\f@series/#2\endcsname
@@ -4866,6 +5043,22 @@ Type H <return> for immediate help.}%
\fi
\fi
}
+\def\merge@font@shape@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@shape@without@substitution@
+ \csname shape@\f@shape @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\merge@font@shape@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \edef\f@shape{#2}%
+ \else
+ \edef\f@shape{#1}%
+ \fi
+}
+\let\delayed@merge@font@shape\merge@font@shape@without@substitution
\protected\def\normalshape
{\not@math@alphabet\normalshape\relax
\fontshape\shapedefault\selectfont}%
@@ -4892,6 +5085,7 @@ Type H <return> for immediate help.}%
{\not@math@alphabet\sscshape\relax
\fontshape\sscdefault\selectfont}%
}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\g@addto@macro\@kernel@after@begindocument@before
{\reinstall@nfss@defs\init@series@setup}
%%% From File: ltfsstrc.dtx
@@ -4930,17 +5124,38 @@ Type H <return> for immediate help.}%
\get@external@font
\fi\fi
}
+
\DeclareRobustCommand\selectfont
{%
\ifx\f@linespread\baselinestretch \else
\set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+ \ifx\delayed@f@adjustment\@empty
+ \else
+ \let\f@shape@saved\f@shape
+ \let\f@series@saved\f@series
+ \delayed@f@adjustment
+ \maybe@load@fontshape
+ \ifcsname \f@encoding/\f@family/\f@series/\f@shape \endcsname
+ \else
+ \let\f@shape\f@shape@saved
+ \let\f@series\f@series@saved
+ \let\delayed@merge@font@shape\merge@font@shape
+ \let\delayed@merge@font@series\merge@font@series
+ \delayed@f@adjustment
+ \let\delayed@merge@font@shape\merge@font@shape@without@substitution
+ \let\delayed@merge@font@series\merge@font@series@without@substitution
+ \fi
+ \let\delayed@f@adjustment\@empty
+ \fi
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
\font@name
+ \UseHook{selectfont}%
\size@update
\enc@update
}
+\NewHook{selectfont}
\def\set@fontsize#1#2#3{%
\@defaultunits\@tempdimb#2pt\relax\@nnil
\edef\f@size{\strip@pt\@tempdimb}%
@@ -6389,8 +6604,8 @@ Type H <return> for immediate help.}%
%% overwrite it in fontdef.cfg
%% if necessary
\fontfamily{cmr}
-\fontseries{m}
-\fontshape{n}
+\def\f@series{m} % \fontseries{m}
+\def\f@shape{n} % \fontshape{n}
\fontsize{10}{10}
\def\@fontenc@load@list{\@elt{T1,OT1}}
\InputIfFileExists{fonttext.cfg}
@@ -7126,6 +7341,7 @@ Type H <return> for immediate help.}%
\@ignorefalse
\let\ignorespacesafterend\@ignoretrue
\def\enddocument{%
+ \@kernel@before@enddocument
\UseOneTimeHook{enddocument}%
\@kernel@after@enddocument
\@checkend{document}%
@@ -7153,8 +7369,6 @@ Type H <return> for immediate help.}%
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
-\let\@kernel@after@enddocument\@empty
-\let\@kernel@after@enddocument@afterlastpage\@empty
\def\@enddocument@kernel@warnings{%
\ifdim \font@submax >\fontsubfuzz\relax
\@font@warning{Size substitutions with differences\MessageBreak
@@ -7177,6 +7391,7 @@ Type H <return> for immediate help.}%
\fi
\fi
}
+\def\@kernel@before@enddocument{\par}
\def\@testdef #1#2#3{%
\def\reserved@a{#3}\expandafter \ifx \csname #1@#2\endcsname
\reserved@a \else \@tempswatrue \fi}
@@ -9559,8 +9774,7 @@ Type H <return> for immediate help.}%
\@ifundefined{b@\@citeb}{\G@refundefinedtrue
\@latex@warning{Citation `\@citeb' undefined}}{}}%
\else
- \@latex@error{Cannot be used in preamble}\@eha
- % \AtBeginDocument{\nocite{#1}}
+ \AddToHook{begindocument/end}[kernel]{\nocite{#1}}%
\fi
\@esphack}
\expandafter\let\csname b@*\endcsname\@empty
@@ -9635,6 +9849,7 @@ Type H <return> for immediate help.}%
\let\@unusedoptionlist\@empty
\@onlypreamble\@unusedoptionlist
\let\CurrentOption\@empty
+\let\@currpath\@empty
\let\@currname\@empty
\global\let\@currext=\@empty
\def\@clsextension{cls}
@@ -9642,17 +9857,20 @@ Type H <return> for immediate help.}%
\@onlypreamble\@clsextension
\@onlypreamble\@pkgextension
\def\@pushfilename{%
- \@expl@@@hook@curr@name@push@@n{}%
\@expl@push@filename@@
\xdef\@currnamestack{%
{\@currname}%
{\@currext}%
{\the\catcode`\@}%
\@currnamestack}%
+ \xdef\@kernel@currpathstack{%
+ {\@currpath}%
+ \@kernel@currpathstack}%
\@expl@push@filename@aux@@}
\@onlypreamble\@pushfilename
\def\@popfilename{\@expl@@@hook@curr@name@pop@@
\expandafter\@p@pfilename\@currnamestack\@nil
+ \expandafter\@p@pfilepath\@kernel@currpathstack\@nil
\@expl@pop@filename@@}
\@onlypreamble\@popfilename
\def\@p@pfilename#1#2#3#4\@nil{%
@@ -9663,6 +9881,11 @@ Type H <return> for immediate help.}%
\@onlypreamble\@p@pfilename
\gdef\@currnamestack{}
\@onlypreamble\@currnamestack
+\gdef\@kernel@currpathstack{}
+\def\@p@pfilepath#1{%
+ \gdef\@currpath{#1}\@p@pfilepath@aux\@empty}
+\def\@p@pfilepath@aux#1\@nil{%
+ \xdef\@kernel@currpathstack{#1}}
\def\@ptionlist#1{%
\@ifundefined{opt@#1}\@empty{\csname opt@#1\endcsname}}
\@onlypreamble\@ptionlist
@@ -9729,11 +9952,12 @@ Type H <return> for immediate help.}%
\@onlypreamble\@if@pti@ns
\def\ProvidesPackage#1{%
\xdef\@gtempa{#1}%
- \ifx\@gtempa\@currname\else
+ \@expandtwoargs\@expl@str@if@eq@@nnTF
+ {\@gtempa}{\@currpath\@currname}{}{%
\@latex@warning@no@line{You have requested
- \@cls@pkg\space`\@currname',\MessageBreak
+ \@cls@pkg\space`\@currpath\@currname',\MessageBreak
but the \@cls@pkg\space provides `#1'}%
- \fi
+ }%
\@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
\@onlypreamble\ProvidesPackage
\def\@pr@videpackage[#1]{%
@@ -9768,10 +9992,14 @@ Type H <return> for immediate help.}%
\@expl@@@filehook@set@curr@file@@nNN
{\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}%
\reserved@a\reserved@b
+ \@expl@@@filehook@clear@replacement@flag@@
\expandafter\xdef\csname opt@\reserved@a\endcsname{%
\@ifundefined{opt@\reserved@a}\@empty
{\csname opt@\reserved@a\endcsname,}%
- \zap@space#2 \@empty}}
+ \zap@space#2 \@empty}%
+ \expandafter\let
+ \csname opt@#3.#1\expandafter\endcsname
+ \csname opt@\reserved@a\endcsname}
\@onlypreamble\@pass@ptions
\def\PassOptionsToPackage{\@pass@ptions\@pkgextension}
\def\PassOptionsToClass{\@pass@ptions\@clsextension}
@@ -9965,8 +10193,14 @@ Type H <return> for immediate help.}%
\reserved@a}
\@onlypreamble\@fileswith@pti@ns
\def\@onefilewithoptions#1[#2][#3]#4{%
+ \@expl@@@filehook@set@curr@file@@nNN{#1.#4}\reserved@a\reserved@b
+ \edef\reserved@c{\def\noexpand\reserved@c####1%
+ \detokenize\expandafter{\expanded{.#4}}%
+ \noexpand\@nil{\def\noexpand\reserved@a{####1}}}\reserved@c
+ \expandafter\reserved@c\reserved@a\@nil
\@pushfilename
- \xdef\@currname{#1}%
+ \xdef\@currname{\string@makeletter\reserved@a}%
+ \xdef\@currpath{\ifx\reserved@b\@empty\else\reserved@b/\fi}%
\global\let\@currext#4%
\@ifl@aded\@currext\@currname
{\@if@ptions\@currext{\@currname}{#2}{}%
@@ -9987,14 +10221,14 @@ Type H <return> for immediate help.}%
\@firstofone}%
{\makeatletter
\@reset@ptions
- \IfFileExists{\@currname.\@currext}{}%
+ \IfFileExists{\@currpath\@currname.\@currext}{}%
{\@missing@onefilewithoptions{#2}}%
\ifx\@currname\@empty
\expandafter\@gobble
\else
\@disable@packageload@do{\@currname.\@currext}%
{\@expl@@@filehook@file@push@@
- \set@curr@file{\@currname.\@currext}%
+ \set@curr@file{\@currpath\@currname.\@currext}%
\@filehook@set@CurrentFile
\expandafter\@swaptwoargs\expandafter
{\expandafter{\@currpkg@reqd}}%
@@ -10003,6 +10237,7 @@ Type H <return> for immediate help.}%
\ifx\CurrentFile\CurrentFileUsed
\else
\filename@parse\@curr@file
+ \edef\@currpath{\string@makeletter\filename@area}%
\edef\@currname{\string@makeletter\filename@base}%
\edef\@currext{\string@makeletter\filename@ext}%
\fi
@@ -10027,14 +10262,18 @@ Type H <return> for immediate help.}%
\@onlypreamble\@onefilewithoptions
\let\@unprocessedoptions\@undefined
\def\@missing@onefilewithoptions#1{%
- \@missingfileerror\@currname\@currext
- \xdef\@currname{\@missingfile@area\@missingfile@base}%
+ \@missingfileerror{\@currpath\@currname}\@currext
+ \global\let\@currpath\@missingfile@area
+ \global\let\@currname\@missingfile@base
\global\let\@currext\@missingfile@ext}
\def\load@onefile@withoptions#1{%
\let\CurrentOption\@empty
\@reset@ptions
\def\reserved@a{%
\@pass@ptions\@currext{#1}{\@currname}%
+ \expandafter\let
+ \csname opt@\@currpkg@reqd\expandafter\endcsname
+ \csname opt@\@currname.\@currext\endcsname
\global\expandafter
\let\csname ver@\@currname.\@currext\endcsname\@empty
\expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
@@ -10047,9 +10286,9 @@ Type H <return> for immediate help.}%
\UseHook{class/before/\@currname}%
\fi
\fi
- \InputIfFileExists{\@currpkg@reqd}{}%
+ \InputIfFileExists{\@currpath\@currpkg@reqd}{}%
{\@latex@error
- {The \@cls@pkg\space\@currpkg@reqd\space failed to load.}\@ehd}%
+ {The \@cls@pkg\space\@currpkg@reqd\space failed to load}\@ehd}%
\expandafter\let\csname unprocessedoptions-\@currname.\@currext\endcsname
\@@unprocessedoptions
\csname\@currname.\@currext-h@@k\endcsname
@@ -10427,10 +10666,10 @@ Type H <return> for immediate help.}%
}
\def\pkgcls@rollbackdate@error#1{%
\@latex@error{Suspicious rollback date given}%
- {The \@cls@pkg\space'\@currname' claims that it
- came into existence on #1 which\MessageBreak
+ {The \@cls@pkg\space'\@currname' has no rollback data
+ before #1 which\MessageBreak
is after your requested rollback date --- so
- something is wrong here.\MessageBreak
+ something may be wrong here.\MessageBreak
Continue and we use the earliest known release.}}
\def\DeclareCurrentRelease#1#2{%
\ifnum\pkgcls@targetdate>\z@ % some sort of rollback request
@@ -10471,11 +10710,11 @@ Type H <return> for immediate help.}%
\fi
}
%%
-%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0c}
-\providecommand\ltfilehookdate{2020/10/18}
+\providecommand\ltfilehookversion{v1.0e}
+\providecommand\ltfilehookdate{2021/01/07}
\ExplSyntaxOn
\tl_new:N \CurrentFile
\tl_new:N \CurrentFilePath
@@ -10543,36 +10782,44 @@ Type H <return> for immediate help.}%
\DeclareRobustCommand \InputIfFileExists[2]{%
\IfFileExists{#1}%
{%
- \@expl@@@filehook@file@push@@
- \@filehook@set@CurrentFile
- \edef\reserved@a{\@filef@und
- \@expl@@@filehook@file@pop@assign@@nnnn
- {\CurrentFilePathUsed}%
- {\CurrentFileUsed}%
- {\CurrentFilePath}%
- {\CurrentFile}}%
+ \@expl@@@filehook@file@push@@
+ \@filehook@set@CurrentFile
\expandafter\@swaptwoargs\expandafter
- {\reserved@a}%
- {%
- #2%
- \@addtofilelist{#1}%
- \UseHook{file/before}%
- \UseHook{file/before/\CurrentFile}%
- \@@input
- }%
- \UseHook{file/after/\CurrentFile}%
- \UseHook{file/after}%
+ {\expandafter\@input@file@exists@with@hooks
+ \expandafter{\@filef@und}}%
+ {#2}%
\@expl@@@filehook@file@pop@@
}%
}
+\def\@input@file@exists@with@hooks#1{%
+ \edef\reserved@a{%
+ \@expl@@@filehook@file@pop@assign@@nnnn
+ {\CurrentFilePathUsed}%
+ {\CurrentFileUsed}%
+ {\CurrentFilePath}%
+ {\CurrentFile}}%
+ \expandafter\@swaptwoargs\expandafter{\reserved@a}%
+ {\edef\reserved@a{\unqu@tefilef@und#1\@nil}%
+ \@addtofilelist{\string@makeletter\reserved@a}%
+ \UseHook{file/before}%
+ \UseHook{file/before/\CurrentFile}%
+ \@@input #1% <- trailing space comes from \@filef@und
+ }%
+ \UseHook{file/after/\CurrentFile}%
+ \UseHook{file/after}}
+\def\unqu@tefilef@und"#1" \@nil{#1}
\ExplSyntaxOn
\cs_new_protected:Npn \__filehook_subst_add:nn #1 #2
{
\group_begin:
\cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
\int_set:Nn \tex_escapechar:D { -1 }
- \cs_gset:cpx { @file-subst@ \__filehook_subst_file_normalize:n {#1} }
- { \__filehook_subst_file_normalize:n {#2} }
+ \cs_gset:cpx
+ {
+ @file-subst@
+ \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
+ { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn {#2} }
\group_end:
}
\cs_new_protected:Npn \__filehook_subst_remove:n #1
@@ -10580,14 +10827,18 @@ Type H <return> for immediate help.}%
\group_begin:
\cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
\int_set:Nn \tex_escapechar:D { -1 }
- \cs_undefine:c { @file-subst@ \__filehook_subst_file_normalize:n {#1} }
+ \cs_undefine:c
+ {
+ @file-subst@
+ \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
\group_end:
}
-\cs_new:Npn \__filehook_subst_file_normalize:n #1
+\cs_new:Npn \__filehook_subst_file_normalize:Nn #1 #2
{
\exp_after:wN \__filehook_subst_empty_name_chk:NN
\cs:w \exp_after:wN \cs_end:
- \cs:w \__filehook_file_parse_full_name:nN {#1} \use_ii_iii:nnn \cs_end:
+ \cs:w \__filehook_file_parse_full_name:nN {#2} #1 \cs_end:
}
\cs_new:Npn \__filehook_subst_empty_name_chk:NN #1 #2
{ \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: }
@@ -10613,6 +10864,7 @@ Type H <return> for immediate help.}%
\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file@reqd \fi}%
{\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file \fi
\global\let\@curr@file@reqd\@curr@file}%
+ \@expl@@@filehook@clear@replacement@flag@@
\endgroup}
\def\@kernel@make@file@csname#1#2#3{%
\xdef#1{\expandafter\@set@curr@file@aux
@@ -10651,7 +10903,9 @@ Type H <return> for immediate help.}%
{ \tl_if_empty:nF {#1} { #1 / } #2#3 }
\flag_new:n { __filehook_file_replaced }
\cs_new:Npn \__filehook_if_file_replaced:TF #1 #2
- { \flag_if_raised:nTF { __filehook_file_replaced } {#1} {#2} }
+ { \flag_if_raised:nTF { __filehook_file_replaced } {#1} {#2} }
+\cs_new_protected:Npn \__filehook_clear_replacement_flag:
+ { \flag_clear:n { __filehook_file_replaced } }
\cs_new:Npn \__filehook_file_subst_begin:nnn #1 #2 #3
{
\__filehook_file_subst_tortoise_hare:nn { #2#3 } { #2#3 }
@@ -10715,6 +10969,8 @@ Type H <return> for immediate help.}%
\__filehook_normalize_file_name:w
\cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF
\__filehook_if_file_replaced:TF
+\cs_new_eq:NN \@expl@@@filehook@clear@replacement@flag@@
+ \__filehook_clear_replacement_flag:
\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
\__filehook_drop_extension:N
\cs_new_eq:NN \@expl@@@filehook@file@push@@
@@ -10727,11 +10983,11 @@ Type H <return> for immediate help.}%
\declare@file@substitution{atveryend.sty}{atveryend-ltx.sty}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%
-%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
+%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
%%
%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0c}
-\providecommand\ltshipoutdate{2020/09/27}
+\providecommand\ltshipoutversion{v1.0d}
+\providecommand\ltshipoutdate{2020/12/06}
\ExplSyntaxOn
\bool_new:N \g__shipout_debug_bool
\cs_new_eq:NN \__shipout_debug:n \use_none:n
@@ -10796,13 +11052,17 @@ Type H <return> for immediate help.}%
\hook_if_empty:nF {shipout/foreground}
{ \__shipout_add_foreground_picture:n
{ \hook_use:n {shipout/foreground} } }
- \hook_if_empty:nF {shipout/background}
+ \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/background} }
+ { \tl_if_empty_p:N \@kernel@before@shipout@background }
{ \__shipout_add_background_picture:n
{ \@kernel@before@shipout@background
\hook_use:n {shipout/background} } }
\__shipout_execute_firstpage_hook:
\int_compare:nNnT \@abspage@last = \g_shipout_readonly_int
- { \hook_if_empty:nF {shipout/lastpage}
+ { \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/lastpage} }
+ { \tl_if_empty_p:N \@kernel@after@shipout@lastpage }
{ \__shipout_debug:n { \typeout{Executing~ lastpage~ hook~
on~ page~ \int_use:N \g_shipout_readonly_int } }
\__shipout_add_foreground_box:n { \UseHook{shipout/lastpage}
@@ -11050,7 +11310,7 @@ Type H <return> for immediate help.}%
{\ifnum\@abspage@last<\maxdimen
\xdef\PreviousTotalPages{\@abspage@last}\fi}
\cs_new_eq:NN \DiscardShipoutBox \shipout_discard:
-\cs_new_protected:Npn \AtBeginDvi {\__shipout_add_firstpage_material:Nn \AtBeginDvi}
+\cs_set_protected:Npn \AtBeginDvi {\__shipout_add_firstpage_material:Nn \AtBeginDvi}
\cs_new_eq:NN \DebugShipoutsOn \shipout_debug_on:
\cs_new_eq:NN \DebugShipoutsOff \shipout_debug_off:
\cs_set_eq:NN \@expl@@@shipout@add@firstpage@material@@Nn
diff --git a/Master/texmf-dist/tex/latex-dev/base/latex209.def b/Master/texmf-dist/tex/latex-dev/base/latex209.def
index d69aad61ee0..68b6eebfdf9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latex209.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latex209.def
@@ -15,7 +15,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}
-\ProvidesFile{latex209.def}[2020/08/21 v0.55 Standard LaTeX file]
+\ProvidesFile{latex209.def}[2020/11/26 v0.55 Standard LaTeX file]
\if@compatibility
\expandafter\endinput
\else
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
index 7caf477c37d..af3b8833b6c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
@@ -8,6 +8,8 @@
%% ltvers.dtx (with options: `latexrelease')
%% latexrelease.dtx (with options: `latexrelease')
%% ltdirchk.dtx (with options: `latexrelease')
+%% ltplain.dtx (with options: `latexrelease')
+%% ltluatex.dtx (with options: `latexrelease')
%% ltexpl.dtx (with options: `latexrelease')
%% ltdefns.dtx (with options: `latexrelease')
%% lthooks.dtx (with options: `latexrelease')
@@ -15,42 +17,39 @@
%% ltcntrl.dtx (with options: `latexrelease')
%% lterror.dtx (with options: `latexrelease')
%% ltpar.dtx (with options: `latexrelease')
+%% ltspace.dtx (with options: `latexrelease')
+%% ltlogos.dtx (with options: `latexrelease')
+%% ltfiles.dtx (with options: `latexrelease')
+%% ltoutenc.dtx (with options: `latexrelease')
+%% ltcounts.dtx (with options: `latexrelease')
+%% ltlength.dtx (with options: `latexrelease')
+%% ltfssbas.dtx (with options: `latexrelease')
+%% ltfssaxes.dtx (with options: `latexrelease')
+%% ltfsstrc.dtx (with options: `latexrelease')
+%% ltfssdcl.dtx (with options: `latexrelease')
+%% ltfssini.dtx (with options: `latexrelease')
+%% fontdef.dtx (with options: `latexrelease')
+%% ltfntcmd.dtx (with options: `latexrelease')
+%% lttextcomp.dtx (with options: `latexrelease')
+%% ltpageno.dtx (with options: `latexrelease')
+%% ltxref.dtx (with options: `latexrelease')
+%% ltmiscen.dtx (with options: `latexrelease')
+%% ltmath.dtx (with options: `latexrelease')
%% ltlists.dtx (with options: `latexrelease')
%% ltboxes.dtx (with options: `latexrelease')
%% lttab.dtx (with options: `latexrelease')
-%% ltmath.dtx (with options: `latexrelease')
%% ltpictur.dtx (with options: `latexrelease')
%% ltthm.dtx (with options: `latexrelease')
%% ltsect.dtx (with options: `latexrelease')
-%% ltfiles.dtx (with options: `latexrelease')
-%% ltoutenc.dtx (with options: `latexrelease')
-%% ltcounts.dtx (with options: `latexrelease')
-%% ltlength.dtx (with options: `latexrelease')
%% ltfloat.dtx (with options: `latexrelease')
%% ltidxglo.dtx (with options: `latexrelease')
%% ltbibl.dtx (with options: `latexrelease')
%% ltpage.dtx (with options: `latexrelease')
+%% ltclass.dtx (with options: `latexrelease,tracerollback')
%% ltfilehook.dtx (with options: `latexrelease')
%% ltshipout.dtx (with options: `latexrelease')
%% ltoutput.dtx (with options: `latexrelease')
-%% ltclass.dtx (with options: `latexrelease,tracerollback')
-%% ltspace.dtx (with options: `latexrelease')
-%% ltlogos.dtx (with options: `latexrelease')
-%% ltplain.dtx (with options: `latexrelease')
-%% ltfssdcl.dtx (with options: `latexrelease')
-%% ltfssini.dtx (with options: `latexrelease')
-%% fontdef.dtx (with options: `latexrelease')
-%% ltfntcmd.dtx (with options: `latexrelease')
-%% lttextcomp.dtx (with options: `latexrelease')
-%% ltfssbas.dtx (with options: `latexrelease')
-%% ltfssaxes.dtx (with options: `latexrelease')
-%% ltfsstrc.dtx (with options: `latexrelease')
%% ltfsscmp.dtx (with options: `latexrelease')
-%% ltpageno.dtx (with options: `latexrelease')
-%% ltxref.dtx (with options: `latexrelease')
-%% ltmiscen.dtx (with options: `latexrelease')
-%% ltluatex.dtx (with options: `latexrelease')
-%% ltexpl.dtx (with options: `latexrelease')
%% ltfinal.dtx (with options: `latexrelease')
%%
%% This is a generated file.
@@ -60,7 +59,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -239,10 +238,10 @@
}
\def\pkgcls@rollbackdate@error#1{%
\@latex@error{Suspicious rollback date given}%
- {The \@cls@pkg\space'\@currname' claims that it
- came into existence on #1 which\MessageBreak
+ {The \@cls@pkg\space'\@currname' has no rollback data
+ before #1 which\MessageBreak
is after your requested rollback date --- so
- something is wrong here.\MessageBreak
+ something may be wrong here.\MessageBreak
Continue and we use the earliest known release.}}
\def\DeclareCurrentRelease#1#2{%
\ifnum\pkgcls@targetdate>\z@ % some sort of rollback request
@@ -330,7 +329,7 @@
\PackageError{latexrelease}{skipped IncludeInRelease for tag \string#2}{}%
\fi}
\ProvidesPackage{latexrelease}
- [2018/05/08 v1.0k LaTeX release emulation and tests
+ [2020/12/06 v1.0k LaTeX release emulation and tests
(including releases up to \latexreleaseversion)]
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\DeclareOption*{%
@@ -446,8 +445,558 @@ of this package available from CTAN}
\fi
\edef\filename@base{#1}}
\EndIncludeInRelease
+%%% From File: ltplain.dtx
+\IncludeInRelease{2015/01/01}%
+ {\newcount}{Extended Allocation}%
+\def\newcount {\e@alloc\count \countdef {\count10}\insc@unt\float@count}
+\def\newdimen {\e@alloc\dimen \dimendef {\count11}\insc@unt\float@count}
+\def\newskip {\e@alloc\skip \skipdef {\count12}\insc@unt\float@count}
+\def\newmuskip
+ {\e@alloc\muskip\muskipdef{\count13}\m@ne\e@alloc@top}
+\def\newbox {\e@alloc\box
+ {\ifnum\allocationnumber<\@cclvi
+ \expandafter\chardef
+ \else
+ \expandafter\e@alloc@chardef
+ \fi}
+ {\count14}\insc@unt\float@count}
+\def\newtoks {\e@alloc\toks \toksdef{\count15}\m@ne\e@alloc@top}
+\def\newread {\e@alloc\read \chardef{\count16}\m@ne\sixt@@n}
+\ifx\directlua\@undefined
+ \def\newwrite {\e@alloc\write \chardef{\count17}\m@ne\sixt@@n}
+\else
+ \def\newwrite {\e@alloc\write
+ {\ifnum\allocationnumber=18
+ \advance\count17\@ne
+ \allocationnumber\count17 %
+ \fi
+ \global\chardef}%
+ {\count17}%
+ \m@ne
+ {128}}
+\fi
+\def\new@mathgroup
+ {\e@alloc\mathgroup\chardef{\count18}\m@ne\e@mathgroup@top}
+\let\newfam\new@mathgroup
+\ifx\directlua\@undefined
+ \def\newlanguage {\e@alloc\language \chardef{\count19}\m@ne\@cclvi}
+\else
+ \def\newlanguage {\e@alloc\language \chardef{\count19}\m@ne{16384}}
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\newcount}{Extended Allocation}%
+\def\newcount{\alloc@0\count\countdef\insc@unt}
+\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
+\def\newskip{\alloc@2\skip\skipdef\insc@unt}
+\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
+\def\newbox{\alloc@4\box\chardef\insc@unt}
+\def\newtoks{\alloc@5\toks\toksdef\@cclvi}
+\def\newread{\alloc@6\read\chardef\sixt@@n}
+\def\newwrite{\alloc@7\write\chardef\sixt@@n}
+\def\new@mathgroup{\alloc@8\fam\chardef\sixt@@n}
+\def\newlanguage{\alloc@9\language\chardef\@cclvi}
+\let\newfam\new@mathgroup
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\e@alloc@chardef}{Extended Allocation}%
+\ifx\directlua\@undefined
+ \ifx\widowpenalties\@undefined
+ \mathchardef\e@alloc@top=255
+ \let\e@alloc@chardef\chardef
+ \else
+ \mathchardef\e@alloc@top=32767
+ \let\e@alloc@chardef\mathchardef
+ \fi
+\else
+ \chardef\e@alloc@top=65535
+ \let\e@alloc@chardef\chardef
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\e@alloc@chardef}{Extended Allocation}%
+\let\e@alloc@top\@undefined
+\let\e@alloc@chardef\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\e@mathgroup@top}{Extended Allocation}%
+\ifx\Umathcode\@undefined
+ \chardef\e@mathgroup@top=16
+\else
+ \chardef\e@mathgroup@top=256
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\e@mathgroup@top}{Extended Allocation}%
+\let\e@mathgroup@top\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\e@alloc}{Extended Allocation}%
+\def\e@alloc#1#2#3#4#5#6{%
+ \global\advance#3\@ne
+ \e@ch@ck{#3}{#4}{#5}#1%
+ \allocationnumber#3\relax
+ \global#2#6\allocationnumber
+ \wlog{\string#6=\string#1\the\allocationnumber}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\e@alloc}{Extended Allocation}%
+\let\e@alloc\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/10/01}
+ {\e@ch@ck}{Extended Allocation (checking)}%
+\gdef\e@ch@ck#1#2#3#4{%
+ \ifnum#1<#2\else
+ \ifnum#1=#2\relax
+ \global#1\@cclvi
+ \ifx\count#4\global\advance#1 10 \fi
+ \fi
+ \ifnum#1<#3\relax
+ \else
+ \errmessage{No room for a new \string#4}%
+ \fi
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\e@ch@ck}{Extended Allocation (checking)}%
+\gdef\e@ch@ck#1#2#3#4{%
+ \ifnum#1<#2\else
+ \ifnum#1=#2\relax
+ #1\@cclvi
+ \ifx\count#4\advance#1 10 \fi
+ \fi
+ \ifnum#1<#3\relax
+ \else
+ \errmessage{No room for a new #4}%
+ \fi
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\e@ch@ck}{Extended Allocation (checking)}%
+\let\e@ch@ck\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\extrafloats}{Extra floats}%
+\let\float@count\e@alloc@top
+\ifx\numexpr\@undefined
+\def\extrafloats#1{%
+\count@#1\relax
+\ifnum\count@>\z@
+\newinsert\reserved@a
+\global\expandafter\chardef
+ \csname bx@\the\allocationnumber\endcsname\allocationnumber
+\@cons\@freelist{\csname bx@\the\allocationnumber\endcsname}%
+\advance\count@\m@ne
+\expandafter\extrafloats
+\expandafter\count@
+\fi
+}%
+\else
+\def\extrafloats#1{%
+\ifnum#1>\z@
+\count@\numexpr\float@count-1\relax
+ \ch@ck0\count@\count
+ \ch@ck1\count@\dimen
+ \ch@ck2\count@\skip
+ \ch@ck4\count@\box
+\global\e@alloc@chardef\float@count\count@
+\global\expandafter\e@alloc@chardef
+ \csname bx@\the\float@count\endcsname\float@count
+\@cons\@freelist{\csname bx@\the\float@count\endcsname}%
+\expandafter
+\extrafloats\expandafter{\numexpr#1-1\relax}%
+\fi}%
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\extrafloats}{Extra floats}%
+\let\float@count\@undefined
+\let\extrafloats\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}
+ {\alloc@}{emulate alloc@}%
+\def\alloc@#1#2#3#4{\e@alloc#2#3{\count1#1}#4\float@count}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\alloc@}{emulate alloc@}%
+\def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
+ \ch@ck#1#4#2%
+ \allocationnumber\count1#1%
+ \global#3#5\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+\EndIncludeInRelease
+\IncludeInRelease{2015/10/01}
+ {\newinsert}{Extended \newinsert}%
+\ifx\numexpr\@undefined
+\def\newinsert#1{\global\advance\insc@unt \m@ne
+ \ch@ck0\insc@unt\count
+ \ch@ck1\insc@unt\dimen
+ \ch@ck2\insc@unt\skip
+ \ch@ck4\insc@unt\box
+ \allocationnumber\insc@unt
+ \global\chardef#1\allocationnumber
+ \wlog{\string#1=\string\insert\the\allocationnumber}}
+\else
+\ifx\directlua\@undefined
+ \chardef\e@insert@top255
+\else
+ \chardef\e@insert@top\e@alloc@top
+\fi
+\def\newinsert#1{%
+\@tempswafalse
+\global\advance\insc@unt\m@ne
+\ifnum\count10<\insc@unt
+\ifnum\count11<\insc@unt
+\ifnum\count12<\insc@unt
+\ifnum\count14<\insc@unt
+ \@tempswatrue
+\fi\fi\fi\fi
+\if@tempswa
+\allocationnumber\insc@unt
+\else
+\global\advance\insc@unt\@ne
+ \extrafloats\@ne
+ \@next\@currbox\@freelist
+ {\ifnum\@currbox<\e@insert@top
+ \allocationnumber\@currbox
+ \else
+ \ch@ck0\m@ne\insert
+ \fi}%
+ {\ch@ck0\m@ne\insert}%
+\fi
+\global\chardef#1\allocationnumber
+\wlog{\string#1=\string\insert\the\allocationnumber}%
+}
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\newinsert}{Extended \newinsert}%
+\let\e@insert@top\@undefined
+\def\newinsert#1{\global\advance\insc@unt \m@ne
+ \ch@ck0\insc@unt\count
+ \ch@ck1\insc@unt\dimen
+ \ch@ck2\insc@unt\skip
+ \ch@ck4\insc@unt\box
+ \allocationnumber\insc@unt
+ \global\chardef#1\allocationnumber
+ \wlog{\string#1=\string\insert\the\allocationnumber}}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\loggingall}{etex tracing}%
+\ifx\tracingscantokens\@undefined
+\gdef\loggingall{%
+ \tracingstats\tw@
+ \tracingpages\@ne
+ \tracinglostchars\@ne
+ \tracingparagraphs\@ne
+ \errorcontextlines\maxdimen
+ \loggingoutput
+ \tracingmacros\tw@
+ \tracingcommands\tw@
+ \tracingrestores\@ne
+ }%
+\else
+\gdef\loggingall{%
+ \tracingstats\tw@
+ \tracingpages\@ne
+ \tracinglostchars\tw@
+ \tracingparagraphs\@ne
+ \tracinggroups\@ne
+ \tracingifs\@ne
+ \tracingscantokens\@ne
+ \tracingnesting\@ne
+ \errorcontextlines\maxdimen
+ \loggingoutput
+ \tracingmacros\tw@
+ \tracingcommands\thr@@
+ \tracingrestores\@ne
+ \tracingassigns\@ne
+}%
+\fi
+\gdef\tracingall{\showoverfull\loggingall}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\loggingall}{etex tracing}%
+\gdef\loggingall{\tracingcommands\tw@\tracingstats\tw@
+ \tracingpages\@ne\tracinglostchars\@ne
+ \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
+ \errorcontextlines\maxdimen\loggingoutput}
+ \gdef\tracingall{\loggingall\showoverfull}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\tracingnone}%
+ {turn off etex tracing}%
+\ifx\tracingscantokens\@undefined
+\def\tracingnone{%
+ \tracingonline\z@
+ \tracingcommands\z@
+ \showboxdepth\m@ne
+ \showboxbreadth\m@ne
+ \tracingoutput\z@
+ \errorcontextlines\m@ne
+ \tracingrestores\z@
+ \tracingparagraphs\z@
+ \tracingmacros\z@
+ \tracinglostchars\@ne
+ \tracingpages\z@
+ \tracingstats\z@
+}%
+\else
+\def\tracingnone{%
+ \tracingassigns\z@
+ \tracingrestores\z@
+ \tracingonline\z@
+ \tracingcommands\z@
+ \showboxdepth\m@ne
+ \showboxbreadth\m@ne
+ \tracingoutput\z@
+ \errorcontextlines\m@ne
+ \tracingnesting\z@
+ \tracingscantokens\z@
+ \tracingifs\z@
+ \tracinggroups\z@
+ \tracingparagraphs\z@
+ \tracingmacros\z@
+ \tracinglostchars\@ne
+ \tracingpages\z@
+ \tracingstats\z@
+}%
+\fi
+\def\hideoutput{%
+ \tracingoutput\z@
+ \showboxbreadth\m@ne
+ \showboxdepth\m@ne
+ \tracingonline\m@ne
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\tracingnone}%
+ {turn off etex tracing}%
+\let\tracingnone\@undefined
+\let\hideoutput\@undefined
+\EndIncludeInRelease
+\ifx\directlua\@undefined\else
+\IncludeInRelease{2015/10/01}
+ {\newluafunction}{LuaTeX}%
+\ifnum\luatexversion<60 %
+ \wlog{***************************************************}
+ \wlog{* LuaTeX version too old for ltluatex support *}
+ \wlog{***************************************************}
+ \expandafter\endinput
+\fi
+\long\def\@gobble#1{}
+\long\def\@firstofone#1{#1}
+\ifx\e@alloc@attribute@count\@undefined
+ \countdef\e@alloc@attribute@count=258
+ \e@alloc@attribute@count=\z@
+\fi
+\def\newattribute#1{%
+ \e@alloc\attribute\attributedef
+ \e@alloc@attribute@count\m@ne\e@alloc@top#1%
+}
+\def\setattribute#1#2{#1=\numexpr#2\relax}
+\def\unsetattribute#1{#1=-"7FFFFFFF\relax}
+\ifx\e@alloc@ccodetable@count\@undefined
+ \countdef\e@alloc@ccodetable@count=259
+ \e@alloc@ccodetable@count=\z@
+\fi
+\def\newcatcodetable#1{%
+ \e@alloc\catcodetable\chardef
+ \e@alloc@ccodetable@count\m@ne{"8000}#1%
+ \initcatcodetable\allocationnumber
+}
+\newcatcodetable\catcodetable@initex
+\newcatcodetable\catcodetable@string
+\begingroup
+ \def\setrangecatcode#1#2#3{%
+ \ifnum#1>#2 %
+ \expandafter\@gobble
+ \else
+ \expandafter\@firstofone
+ \fi
+ {%
+ \catcode#1=#3 %
+ \expandafter\setrangecatcode\expandafter
+ {\number\numexpr#1 + 1\relax}{#2}{#3}
+ }%
+ }
+ \@firstofone{%
+ \catcodetable\catcodetable@initex
+ \catcode0=12 %
+ \catcode13=12 %
+ \catcode37=12 %
+ \setrangecatcode{65}{90}{12}%
+ \setrangecatcode{97}{122}{12}%
+ \catcode92=12 %
+ \catcode127=12 %
+ \savecatcodetable\catcodetable@string
+ \endgroup
+ }%
+\newcatcodetable\catcodetable@latex
+\newcatcodetable\catcodetable@atletter
+\begingroup
+ \def\parseunicodedataI#1;#2;#3;#4\relax{%
+ \parseunicodedataII#1;#3;#2 First>\relax
+ }%
+ \def\parseunicodedataII#1;#2;#3 First>#4\relax{%
+ \ifx\relax#4\relax
+ \expandafter\parseunicodedataIII
+ \else
+ \expandafter\parseunicodedataIV
+ \fi
+ {#1}#2\relax%
+ }%
+ \def\parseunicodedataIII#1#2#3\relax{%
+ \ifnum 0%
+ \if L#21\fi
+ \if M#21\fi
+ >0 %
+ \catcode"#1=11 %
+ \fi
+ }%
+ \def\parseunicodedataIV#1#2#3\relax{%
+ \read\unicoderead to \unicodedataline
+ \if L#2%
+ \count0="#1 %
+ \expandafter\parseunicodedataV\unicodedataline\relax
+ \fi
+ }%
+ \def\parseunicodedataV#1;#2\relax{%
+ \loop
+ \unless\ifnum\count0>"#1 %
+ \catcode\count0=11 %
+ \advance\count0 by 1 %
+ \repeat
+ }%
+ \def\storedpar{\par}%
+ \chardef\unicoderead=\numexpr\count16 + 1\relax
+ \openin\unicoderead=UnicodeData.txt %
+ \loop\unless\ifeof\unicoderead %
+ \read\unicoderead to \unicodedataline
+ \unless\ifx\unicodedataline\storedpar
+ \expandafter\parseunicodedataI\unicodedataline\relax
+ \fi
+ \repeat
+ \closein\unicoderead
+ \@firstofone{%
+ \catcode64=12 %
+ \savecatcodetable\catcodetable@latex
+ \catcode64=11 %
+ \savecatcodetable\catcodetable@atletter
+ }
+\endgroup
+\ifx\e@alloc@luafunction@count\@undefined
+ \countdef\e@alloc@luafunction@count=260
+ \e@alloc@luafunction@count=\z@
+\fi
+\def\newluafunction{%
+ \e@alloc\luafunction\e@alloc@chardef
+ \e@alloc@luafunction@count\m@ne\e@alloc@top
+}
+\ifx\e@alloc@whatsit@count\@undefined
+ \countdef\e@alloc@whatsit@count=261
+ \e@alloc@whatsit@count=\z@
+\fi
+\def\newwhatsit#1{%
+ \e@alloc\whatsit\e@alloc@chardef
+ \e@alloc@whatsit@count\m@ne\e@alloc@top#1%
+}
+\ifx\e@alloc@bytecode@count\@undefined
+ \countdef\e@alloc@bytecode@count=262
+ \e@alloc@bytecode@count=\z@
+\fi
+\def\newluabytecode#1{%
+ \e@alloc\luabytecode\e@alloc@chardef
+ \e@alloc@bytecode@count\m@ne\e@alloc@top#1%
+}
+
+\ifx\e@alloc@luachunk@count\@undefined
+ \countdef\e@alloc@luachunk@count=263
+ \e@alloc@luachunk@count=\z@
+\fi
+\def\newluachunkname#1{%
+ \e@alloc\luachunk\e@alloc@chardef
+ \e@alloc@luachunk@count\m@ne\e@alloc@top#1%
+ {\escapechar\m@ne
+ \directlua{lua.name[\the\allocationnumber]="\string#1"}}%
+}
+\def\now@and@everyjob#1{%
+ \everyjob\expandafter{\the\everyjob
+ #1%
+ }%
+ #1%
+}
+ \begingroup
+ \attributedef\attributezero=0 %
+ \chardef \charzero =0 %
+ \countdef \CountZero =0 %
+ \dimendef \dimenzero =0 %
+ \mathchardef \mathcharzero =0 %
+ \muskipdef \muskipzero =0 %
+ \skipdef \skipzero =0 %
+ \toksdef \tokszero =0 %
+ \directlua{require("ltluatex")}
+ \endgroup
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}
+ {\newluafunction}{LuaTeX}%
+\let\e@alloc@attribute@count\@undefined
+\let\newattribute\@undefined
+\let\setattribute\@undefined
+\let\unsetattribute\@undefined
+\let\e@alloc@ccodetable@count\@undefined
+\let\newcatcodetable\@undefined
+\let\catcodetable@initex\@undefined
+\let\catcodetable@string\@undefined
+\let\catcodetable@latex\@undefined
+\let\catcodetable@atletter\@undefined
+\let\e@alloc@luafunction@count\@undefined
+\let\newluafunction\@undefined
+\let\e@alloc@luafunction@count\@undefined
+\let\newwhatsit\@undefined
+\let\e@alloc@whatsit@count\@undefined
+\let\newluabytecode\@undefined
+\let\e@alloc@bytecode@count\@undefined
+\let\newluachunkname\@undefined
+\let\e@alloc@luachunk@count\@undefined
+\directlua{luatexbase.uninstall()}
+\EndIncludeInRelease
+\IncludeInRelease{2017/01/01}%
+ {\fontencoding}{TU in everyjob}%
+\fontencoding{TU}\let\encodingdefault\f@encoding
+\ifx\directlua\@undefined\else
+ \directlua{%
+ if xpcall(function ()%
+ require('luaotfload-main')%
+ end,texio.write_nl) then %
+ local _void = luaotfload.main ()%
+ else %
+ texio.write_nl('Error in luaotfload: reverting to OT1')%
+ tex.print('\string\\def\string\\encodingdefault{OT1}')%
+ end %
+ }%
+ \let\f@encoding\encodingdefault
+ \expandafter\let\csname ver@luaotfload.sty\endcsname\fmtversion
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\fontencoding}{TU in everyjob}%
+\fontencoding{OT1}\let\encodingdefault\f@encoding
+\EndIncludeInRelease
+\fi
%%% From File: ltexpl.dtx
\IncludeInRelease{2020/10/01}%
+ {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
+\let\@kernel@after@enddocument\@empty
+\let\@kernel@after@enddocument@afterlastpage\@empty
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {kernel@enddocument hooks}{Define kernel enddocument Hooks}%
+\let\@kernel@after@enddocument\@undefined
+\let\@kernel@after@enddocument@afterlastpage\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@expl@sys@load@backend@@}{Roll forward support}%
+\def\@expl@sys@load@backend@@{}
+\def\@expl@push@filename@@{}
+\def\@expl@push@filename@aux@@{}
+\def\@expl@pop@filename@@{}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
{expl3}{Pre-load expl3}%
\expandafter\ifx\csname tex\string _let:D\endcsname\relax
\expandafter\@firstofone
@@ -478,8 +1027,14 @@ of this package available from CTAN}
\fi
}
{%
- \@latex@error{LaTeX requires expl3}\@ehd
- \@gobble
+ \@latex@warning@no@line
+ {You need a format that already contains a recent\MessageBreak
+ expl3 as part of the kernel, e.g. at least a kernel\MessageBreak
+ from 2019 to roll forward to that date!\MessageBreak
+ --- I'm giving up!\MessageBreak\MessageBreak
+ Note that manually loading the expl3 package\MessageBreak
+ from your distribution is not enough}%
+ \@@end % die
}%
{%
\input expl3.ltx
@@ -513,9 +1068,17 @@ of this package available from CTAN}
}%
\input{expl3.ltx}
\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\NewDocumentCommand}{Emergency loading xparse}%
+
+\ifdefined\NewDocumentCommand \else
+ \RequirePackage{xparse}
+\fi
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\@expl@cs@to@str@@N}%
+ {expl3 macros added for the 2020-10-01 release}%
\ExplSyntaxOn
-\IncludeInRelease{2020/10/01}{expl3~2020-10-01}%
- {expl3~macros~added~for~the~2020-10-01~release}%
\cs_gset_eq:NN \@expl@cs@to@str@@N \cs_to_str:N
\cs_gset_eq:NN \@expl@str@if@eq@@nnTF \str_if_eq:nnTF
\cs_gset_eq:NN \@expl@cs@prefix@spec@@N \cs_prefix_spec:N
@@ -523,17 +1086,17 @@ of this package available from CTAN}
\cs_gset_eq:NN \@expl@cs@replacement@spec@@N \cs_replacement_spec:N
\cs_gset_eq:NN \@expl@str@map@function@@NN \str_map_function:NN
\cs_gset_eq:NN \@expl@char@generate@@nn \char_generate:nn
+\ExplSyntaxOff
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{expl3~2020-10-01}%
- {expl3~macros~added~for~the~2020-10-01~release}%
-\cs_undefine:N \@expl@cs@to@str@@N
-\cs_undefine:N \@expl@str@if@eq@@nnTF
-\cs_undefine:N \@expl@cs@prefix@spec@@N
-\cs_undefine:N \@expl@cs@argument@spec@@N
-\cs_undefine:N \@expl@cs@replacement@spec@@N
-\cs_undefine:N \@expl@str@map@function@@NN
+\IncludeInRelease{0000/00/00}{\@expl@cs@to@str@@N}%
+ {expl3 macros added for the 2020-10-01 release}%
+\let \@expl@cs@to@str@@N \@undefined
+\let \@expl@str@if@eq@@nnTF \@undefined
+\let \@expl@cs@prefix@spec@@N \@undefined
+\let \@expl@cs@argument@spec@@N \@undefined
+\let \@expl@cs@replacement@spec@@N \@undefined
+\let \@expl@str@map@function@@NN \@undefined
\EndIncludeInRelease
-\ExplSyntaxOff
%%% From File: ltdefns.dtx
\IncludeInRelease{2020/10/01}%
{\typeout}{Allow "par" in \typeout}%
@@ -548,6 +1111,12 @@ of this package available from CTAN}
\def\typeout#1{\begingroup\set@display@protect
\immediate\write\@unused{#1}\endgroup}
\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\@carcube}{Make \@carcube long}%
+\long\def\@carcube#1#2#3#4\@nil{#1#2#3}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@carcube}{Undo: Make \@carcube long}%
+\def\@carcube#1#2#3#4\@nil{#1#2#3}
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}{\MakeRobust}{\MakeRobust}%
\def\MakeRobust#1{%
\count@=\escapechar
@@ -1008,11 +1577,11 @@ of this package available from CTAN}
\EndIncludeInRelease
%%
-%% File: lthooks.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%%% From File: lthooks.dtx
-\def\lthooksversion{v1.0e}
-\def\lthooksdate{2020/10/23}
+\def\lthooksversion{v1.0h}
+\def\lthooksdate{2021/01/07}
\IncludeInRelease{2020/10/01}%
{\NewHook}{The hook management}%
\ExplSyntaxOn
@@ -1051,6 +1620,34 @@ of this package available from CTAN}
\cs_generate_variant:Nn \tl_show:n { x }
\cs_generate_variant:Nn \tl_log:n { x }
\scan_new:N \s__hook_mark
+\cs_new_protected:Npn \__hook_tl_set:Nn #1#2
+ { \cs_set_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \__hook_tl_set:Nx #1#2
+ { \cs_set_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \__hook_tl_set:Nn { c }
+\cs_generate_variant:Nn \__hook_tl_set:Nx { c }
+\cs_new_protected:Npn \__hook_tl_gset:Nn #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w {#2} } }
+\cs_new_protected:Npn \__hook_tl_gset:No #1#2
+ { \cs_gset_nopar:Npx #1 { \__kernel_exp_not:w \exp_after:wN {#2} } }
+\cs_new_protected:Npn \__hook_tl_gset:Nx #1#2
+ { \cs_gset_nopar:Npx #1 {#2} }
+\cs_generate_variant:Nn \__hook_tl_gset:Nn { c }
+\cs_generate_variant:Nn \__hook_tl_gset:No { c }
+\cs_generate_variant:Nn \__hook_tl_gset:Nx { c }
+\cs_new_protected:Npn \__hook_tl_gput_right:Nn #1#2
+ { \__hook_tl_gset:Nx #1 { \__kernel_exp_not:w \exp_after:wN { #1 #2 } } }
+\cs_generate_variant:Nn \__hook_tl_gput_right:Nn { No, cn }
+\cs_new_protected:Npn \__hook_tl_gput_left:Nn #1#2
+ {
+ \__hook_tl_gset:Nx #1
+ { \__kernel_exp_not:w {#2} \__kernel_exp_not:w \exp_after:wN {#1} }
+ }
+\cs_generate_variant:Nn \__hook_tl_gput_left:Nn { No }
+\cs_new_eq:NN \__hook_tl_gset_eq:NN \tl_gset_eq:NN
+\cs_new_protected:Npn \__hook_tl_gclear:N #1
+ { \__hook_tl_gset_eq:NN #1 \c_empty_tl }
+\cs_generate_variant:Nn \__hook_tl_gclear:N { c }
\cs_new_protected:Npn \hook_new:n #1
{ \__hook_normalize_hook_args:Nn \__hook_new:n {#1} }
\cs_new_protected:Npn \__hook_new:n #1
@@ -1071,6 +1668,7 @@ of this package available from CTAN}
\__hook_if_exist:nF {#1}
{
\prop_new:c { g__hook_#1_code_prop }
+ \tl_new:c { __hook_toplevel~#1 }
\tl_new:c { __hook_next~#1 }
}
}
@@ -1085,59 +1683,58 @@ of this package available from CTAN}
{ \hook_new:n {#1} \hook_new_reversed:n {#2} }
\cs_new_protected:Npn \__hook_include_legacy_code_chunk:n #1
{
- \debug_suspend:
\tl_if_exist:cT { @#1hook }
{
\tl_if_empty:cF { @#1hook }
{
\exp_args:Nnnv \__hook_hook_gput_code_do:nnn {#1}
{ legacy } { @#1hook }
- \tl_gclear:c { @#1hook }
+ \__hook_tl_gclear:c { @#1hook }
}
}
- \debug_resume:
}
\cs_new:Npn \__hook_parse_label_default:n #1
{
\tl_if_novalue:nTF {#1}
- { \__hook_currname_or_default:n { top-level } }
- {
- \tl_trim_spaces_apply:nN {#1}
- \__hook_parse_dot_label:nn { top-level }
- }
+ { \__hook_currname_or_default: }
+ { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n }
}
-\cs_new:Npn \__hook_parse_dot_label:nn #1 #2
+\cs_new:Npn \__hook_parse_dot_label:n #1
{
\tl_if_empty:nTF {#1}
{
- \msg_expandable_error:nnn { hooks } { empty-label } {#2}
- #2
+ \msg_expandable_error:nn { hooks } { empty-label }
+ \__hook_currname_or_default:
}
{
\str_if_eq:nnTF {#1} { . }
- { \__hook_currname_or_default:n {#2} }
- { \__hook_parse_dot_label:nw {#2} #1 ./ \s__hook_mark }
+ { \__hook_currname_or_default: }
+ { \__hook_parse_dot_label:w #1 ./ \s__hook_mark }
}
}
-\cs_new:Npn \__hook_parse_dot_label:nw #1 #2 ./ #3 \s__hook_mark
+\cs_new:Npn \__hook_parse_dot_label:w #1 ./ #2 \s__hook_mark
{
- \tl_if_empty:nTF {#2}
- { \__hook_parse_dot_label_aux:nw {#1} #3 \s__hook_mark }
+ \tl_if_empty:nTF {#1}
+ { \__hook_parse_dot_label_aux:w #2 \s__hook_mark }
{
- \tl_if_empty:nTF {#3}
- { \__hook_make_name:n {#2} }
- { \__hook_parse_dot_label_cleanup:w #2 ./ #3 \s__hook_mark }
+ \tl_if_empty:nTF {#2}
+ { \__hook_make_name:n {#1} }
+ { \__hook_parse_dot_label_cleanup:w #1 ./ #2 \s__hook_mark }
}
}
\cs_new:Npn \__hook_parse_dot_label_cleanup:w #1 ./ \s__hook_mark {#1}
-\cs_new:Npn \__hook_parse_dot_label_aux:nw #1 #2 ./ \s__hook_mark
- { \__hook_currname_or_default:n {#1} / \__hook_make_name:n {#2} }
-\cs_new:Npn \__hook_currname_or_default:n #1
+\cs_new:Npn \__hook_parse_dot_label_aux:w #1 ./ \s__hook_mark
+ { \__hook_currname_or_default: / \__hook_make_name:n {#1} }
+\cs_new:Npn \__hook_currname_or_default:
{
\tl_if_empty:NTF \g__hook_hook_curr_name_tl
{
\tl_if_empty:NTF \@currname
- { \__hook_make_name:n {#1} }
+ {
+ \msg_expandable_error:nnn { hooks } { should-not-happen }
+ { Empty~default~label. }
+ \__hook_make_name:n { label-missing }
+ }
{ \@currname }
}
{ \g__hook_hook_curr_name_tl }
@@ -1207,12 +1804,23 @@ of this package available from CTAN}
\hook_if_exist:nF {#1} { undeclared~ }
hook~ #1~ (#2)
\on@line\space <-~ \tl_to_str:n{#3}} }
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ \str_if_eq:nnTF {#2} { top-level }
{
- \prop_gput:cno { g__hook_#1_code_prop } {#2}
- { \l__hook_return_tl #3 }
+ \str_if_eq:eeTF { top-level } { \__hook_currname_or_default: }
+ {
+ \__hook_declare:n {#1}
+ \__hook_tl_gput_right:cn { __hook_toplevel~#1 } {#3}
+ }
+ { \msg_error:nnn { hooks } { misused-top-level } {#1} }
+ }
+ {
+ \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ {
+ \prop_gput:cno { g__hook_#1_code_prop } {#2}
+ { \l__hook_return_tl #3 }
+ }
+ { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
- { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} }
}
\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3
{
@@ -1285,11 +1893,11 @@ of this package available from CTAN}
{ \__hook_strip_double_slash:n {#1} }
\cs_new:Npn \__hook_strip_double_slash:n #1
{ \__hook_strip_double_slash:w #1 // \s__hook_mark }
-\cs_new:Npn \__hook_strip_double_slash:w #1 // #2 \s__hook_mark
+\cs_new:Npn \__hook_strip_double_slash:w #1/#2/#3 // #4 \s__hook_mark
{
- \tl_if_empty:nTF {#2}
- {#1}
- { \__hook_strip_double_slash:w #1 / #2 \s__hook_mark }
+ \tl_if_empty:nTF {#4}
+ { #1/#2/#3 }
+ { \__hook_strip_double_slash:w #1/#2/#3 / #4 \s__hook_mark }
}
\prop_const_from_keyval:Nn \c__hook_generics_prop
{env=,file=,package=,class=,include=}
@@ -1303,12 +1911,20 @@ of this package available from CTAN}
\__hook_if_exist:nTF {#1}
{
\str_if_eq:nnTF {#2} {*}
- { \prop_gclear:c { g__hook_#1_code_prop } }
{
- \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
- { \__hook_gremove_code_do:nn }
- { \__hook_mark_removal:nn }
- {#1} {#2}
+ \prop_gclear:c { g__hook_#1_code_prop }
+ \__hook_tl_gclear:c { __hook_toplevel~#1 }
+ \__hook_tl_gclear:c { __hook_next~#1 }
+ }
+ {
+ \str_if_eq:nnTF {#2} { top-level }
+ { \__hook_tl_gclear:c { __hook_toplevel~#1 } }
+ {
+ \prop_get:cnNTF { g__hook_#1_code_prop } {#2} \l__hook_return_tl
+ { \__hook_gremove_code_do:nn }
+ { \__hook_mark_removal:nn }
+ {#1} {#2}
+ }
}
\hook_if_exist:nT {#1}
{ \__hook_update_hook_code:n {#1} }
@@ -1347,7 +1963,6 @@ of this package available from CTAN}
{
\__hook_declare:n {#1}
\__hook_rule_gclear:nnn {#1} {#2} {#4}
- \debug_suspend:
\cs_if_exist_use:cTF { __hook_rule_#3_gset:nnn }
{
{#1} {#2} {#4}
@@ -1355,29 +1970,28 @@ of this package available from CTAN}
}
{ \msg_error:nnnnnn { hooks } { unknown-rule }
{#1} {#2} {#3} {#4} }
- \debug_resume:
}
\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_<_gset:nnn } \__hook_rule_before_gset:nnn
\cs_new_protected:Npn \__hook_rule_after_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#3} {#2} _tl }
{ \__hook_label_ordered:nnTF {#3} {#2} { < } { > } }
}
\cs_new_eq:cN { __hook_rule_>_gset:nnn } \__hook_rule_after_gset:nnn
\cs_new_protected:Npn \__hook_rule_voids_gset:nnn #1#2#3
{
- \tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
+ \__hook_tl_gset:cx { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl }
{ \__hook_label_ordered:nnTF {#2} {#3} { -> } { <- } }
}
\cs_new_protected:cpn { __hook_rule_incompatible-error_gset:nnn } #1#2#3
- { \tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xE } }
+ { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xE } }
\cs_new_protected:cpn { __hook_rule_incompatible-warning_gset:nnn } #1#2#3
- { \tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xW } }
+ { \__hook_tl_gset:cn { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } { xW } }
\cs_new_protected:Npn \__hook_rule_unrelated_gset:nnn #1#2#3 { }
\cs_new_protected:Npn \__hook_rule_gclear:nnn #1#2#3
{ \cs_undefine:c { g__hook_#1_rule_ \__hook_label_pair:nn {#2} {#3} _tl } }
@@ -1424,30 +2038,32 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_initialize_hook_code:n #1
{
- \debug_suspend:
\__hook_debug:n{ \iow_term:x{^^JUpdate~ code~ for~ hook~
'#1' \on@line :^^J} }
\__hook_include_legacy_code_chunk:n {#1}
\hook_if_exist:nT {#1}
{
\prop_if_empty:cTF {g__hook_#1_code_prop}
- { \tl_gset:co { __hook~#1 }
- { \cs:w __hook_next~#1 \cs_end: } }
+ {
+ \__hook_tl_gset:co { __hook~#1 }
+ {
+ \cs:w __hook_toplevel~#1 \exp_after:wN \cs_end:
+ \cs:w __hook_next~#1 \cs_end:
+ }
+ }
{
\__hook_if_reversed:nTF {#1}
- { \cs_set_eq:NN \__hook_tl_gput:NV \tl_gput_left:NV
+ { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_left:Nn
\cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_left:NV }
- { \cs_set_eq:NN \__hook_tl_gput:NV \tl_gput_right:NV
+ { \cs_set_eq:NN \__hook_tl_gput:Nn \__hook_tl_gput_right:Nn
\cs_set_eq:NN \__hook_clist_gput:NV \clist_gput_right:NV }
\prop_set_eq:Nc \l__hook_work_prop { g__hook_#1_code_prop }
- \__hook_initialize_single:cccn
- { __hook~#1 } { __hook_next~#1 }
- { g__hook_#1_labels_clist } {#1}
+ \__hook_initialize_single:ccn
+ { __hook~#1 } { g__hook_#1_labels_clist } {#1}
\__hook_debug:n{ \exp_args:NNx \prop_gput:Nnn
\g__hook_used_prop {#1}{} }
}
}
- \debug_resume:
}
\cs_new:Npn \__hook_tl_csname:n #1 { l__hook_label_#1_tl }
\cs_new:Npn \__hook_seq_csname:n #1 { l__hook_label_#1_seq }
@@ -1456,16 +2072,16 @@ of this package available from CTAN}
\tl_new:N \l__hook_front_tl
\tl_new:N \l__hook_rear_tl
\tl_new:c { \__hook_tl_csname:n { 0 } }
-\cs_new_protected:Npn \__hook_initialize_single:NNNn #1#2#3#4
+\cs_new_protected:Npn \__hook_initialize_single:NNn #1#2#3
{
\seq_clear:N \l__hook_labels_seq
\int_zero:N \l__hook_labels_int
- \tl_set:Nn \l__hook_cur_hook_tl {#4}
+ \tl_set:Nn \l__hook_cur_hook_tl {#3}
\prop_map_inline:Nn \l__hook_work_prop
{
\int_incr:N \l__hook_labels_int
\seq_put_right:Nn \l__hook_labels_seq {##1}
- \tl_set:cn { \__hook_tl_csname:n {##1} }{0}
+ \__hook_tl_set:cn { \__hook_tl_csname:n {##1} } { 0 }
\seq_clear_new:c { \__hook_seq_csname:n {##1} }
}
\prop_map_inline:Nn \l__hook_work_prop
@@ -1476,7 +2092,7 @@ of this package available from CTAN}
{ \prop_map_break: }
{ \__hook_apply_label_pair:nnn {##1} {####1} }
{ \__hook_apply_label_pair:nnn {####1} {##1} }
- {#4}
+ {#3}
}
}
\__hook_debug:n { \__hook_debug_label_data:N \l__hook_work_prop }
@@ -1491,14 +2107,14 @@ of this package available from CTAN}
}
}
\tl_set_eq:Nc \l__hook_front_tl { \__hook_tl_csname:n { 0 } }
- \tl_gclear:N #1
- \clist_gclear:N #3
+ \__hook_tl_gclear:N #1
+ \clist_gclear:N #2
\bool_while_do:nn { ! \str_if_eq_p:Vn \l__hook_front_tl { 0 } }
{
\int_decr:N \l__hook_labels_int
\prop_get:NVN \l__hook_work_prop \l__hook_front_tl \l__hook_return_tl
- \__hook_tl_gput:NV #1 \l__hook_return_tl
- \__hook_clist_gput:NV #3 \l__hook_front_tl
+ \exp_args:NNV \__hook_tl_gput:Nn #1 \l__hook_return_tl
+ \__hook_clist_gput:NV #2 \l__hook_front_tl
\__hook_debug:n{ \iow_term:x{Handled~ code~ for~ \l__hook_front_tl} }
\seq_map_inline:cn { \__hook_seq_csname:n { \l__hook_front_tl } }
{
@@ -1523,11 +2139,12 @@ of this package available from CTAN}
\__hook_debug_label_data:N \l__hook_work_prop
\iow_term:x{====================}
}
- \tl_gput_right:Nn #1 {#2}
+ \exp_args:NNo \__hook_tl_gput:Nn #1 { \cs:w __hook_toplevel~#3 \cs_end: }
+ \__hook_tl_gput_right:No #1 { \cs:w __hook_next~#3 \cs_end: }
}
-\cs_generate_variant:Nn \__hook_initialize_single:NNNn {ccc}
-\cs_new:Npn \__hook_tl_gput:NV {\ERROR}
-\cs_new:Npn \__hook_clist_gput:NV {\ERROR}
+\cs_generate_variant:Nn \__hook_initialize_single:NNn { cc }
+\cs_new:Npn \__hook_tl_gput:Nn { \ERROR }
+\cs_new:Npn \__hook_clist_gput:NV { \ERROR }
\cs_new_protected:Npn \__hook_apply_label_pair:nnn #1#2#3
{
\__hook_label_if_exist_apply:nnnF {#1} {#2} {#3}
@@ -1646,7 +2263,8 @@ of this package available from CTAN}
\__hook_log_cmd:x { ^^J ->~The~hook~'#1': }
\hook_if_exist:nF {#1}
{ \__hook_log_line:x { is~not~declared! } }
- \__hook_if_exist:nTF {#1}
+ \hook_if_empty:nTF {#1}
+ { #2 { The~hook~is~empty } }
{
\__hook_log_line:x { Code~chunks: }
\prop_if_empty:cTF { g__hook_#1_code_prop }
@@ -1655,7 +2273,19 @@ of this package available from CTAN}
\prop_map_inline:cn { g__hook_#1_code_prop }
{ \__hook_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } }
}
- \__hook_log_line:x { Extra~code~for~next~invocation:}
+ \__hook_log_line:x
+ {
+ Document-level~(top-level)~code
+ \hook_if_exist:nT {#1}
+ { ~(executed~\__hook_if_reversed:nTF {#1} {first} {last} ) } :
+ }
+ \__hook_log_line_indent:x
+ {
+ \tl_if_empty:cTF { __hook_toplevel~#1 }
+ { --- }
+ { -> ~ \exp_args:Nv \tl_to_str:n { __hook_toplevel~#1 } }
+ }
+ \__hook_log_line:x { Extra~code~for~next~invocation: }
\__hook_log_line_indent:x
{
\tl_if_empty:cTF { __hook_next~#1 }
@@ -1706,7 +2336,6 @@ of this package available from CTAN}
}
}
}
- { #2 { The~hook~is~empty. } }
}
\cs_new:Npn \__hook_log_next_code:n #1
{ \exp_args:No \tl_to_str:n { \use_none:nn #1 } }
@@ -1727,7 +2356,7 @@ of this package available from CTAN}
}
\cs_new_protected:Npn \__hook_list_one_rule:nnn #1#2#3
{
- \__hook_list_if_rule_exists:nnnF {#1} {#2} {#3} { }
+ \__hook_list_if_rule_exists:nnnF {#1} {#2} {#3}
{ \__hook_list_if_rule_exists:nnnF {#1} {#2} { ?? } { } }
}
\cs_new_protected:Npn \__hook_list_if_rule_exists:nnnF #1#2#3
@@ -1735,7 +2364,9 @@ of this package available from CTAN}
\if_cs_exist:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end:
\exp_args:Nv \__hook_tmp:w
{ g__hook_ #3 _rule_ #1 | #2 _tl } { #1 | #2 } {#3}
+ \exp_after:wN \use_none:nn
\fi:
+ \use:n
}
\cs_new_protected:Npn \__hook_debug_print_rules:n #1
{
@@ -1757,12 +2388,10 @@ of this package available from CTAN}
{ \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} }
\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2
{
- \debug_suspend:
\__hook_declare:n {#1}
\hook_if_exist:nTF {#1}
{ \__hook_gput_next_do:nn {#1} {#2} }
{ \__hook_try_declaring_generic_next_hook:nn {#1} {#2} }
- \debug_resume:
}
\cs_new_protected:Npn \__hook_gput_next_do:nn #1
{
@@ -1774,8 +2403,8 @@ of this package available from CTAN}
\tl_if_empty:cT { __hook~#2 }
{ \__hook_update_hook_code:n {#2} }
\tl_if_empty:NT #1
- { \tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
- \tl_gput_right:Nn #1
+ { \__hook_tl_gset:Nn #1 { \__hook_clear_next:n {#2} } }
+ \__hook_tl_gput_right:Nn #1
}
\cs_new_protected:Npn \__hook_clear_next:n #1
{ \cs_gset_eq:cN { __hook_next~#1 } \c_empty_tl }
@@ -1845,7 +2474,11 @@ of this package available from CTAN}
{
\bool_lazy_and:nnTF
{ \prop_if_empty_p:c { g__hook_#1_code_prop } }
- { \tl_if_empty_p:c { __hook_next~#1 } }
+ {
+ \bool_lazy_and_p:nn
+ { \tl_if_empty_p:c { __hook_toplevel~#1 } }
+ { \tl_if_empty_p:c { __hook_next~#1 } }
+ }
{ \prg_return_true: }
{ \prg_return_false: }
}
@@ -1887,7 +2520,15 @@ of this package available from CTAN}
name.\\
Please~ use~ a~ different~ name~ for~ your~ hook.}
\msg_new:nnn { hooks } { empty-label }
- { Empty~code~label~\msg_line_context:.~Using~`#1'~instead. }
+ {
+ Empty~code~label~\msg_line_context:.~
+ Using~`\__hook_currname_or_default:'~instead.
+ }
+\msg_new:nnn { hooks } { no-default-label }
+ {
+ Missing~(empty)~default~label~\msg_line_context:. \\
+ This~command~was~ignored.
+ }
\msg_new:nnnn { hooks } { unknown-rule }
{ Unknown~ relationship~ `#3'~
between~ labels~ `#2'~ and~ `#4'~
@@ -1903,6 +2544,39 @@ of this package available from CTAN}
`voids'~ or~
`unrelated'.
}
+\msg_new:nnnn { hooks } { misused-top-level }
+ {
+ Illegal~\iow_char:N \\AddToHook{#1}[top-level]{...}.\\
+ 'top-level'~is~reserved~for~the~user's~document.
+ }
+ {
+ The~'top-level'~label~is~meant~for~user~code~only,~and~should~only~
+ be~used~(sparingly)~in~the~main~document.~Use~the~default~label~
+ '\__hook_currname_or_default:'~for~this~\@cls@pkg,~or~another~
+ suitable~label.
+ }
+\msg_new:nnn { hooks } { set-top-level }
+ {
+ You~cannot~change~the~default~label~#1~`top-level'.~Illegal \\
+ \use:nn { ~ } { ~ } \iow_char:N \\#2{#3} \\
+ \msg_line_context:.
+ }
+\msg_new:nnn { hooks } { ddhl-deprecated }
+ {
+ \iow_char:N \\DeclareDefaultHookLabel~is~deprecated.\\
+ Use~\iow_char:N \\SetDefaultHookLabel~instead.\\ \\
+ The~deprecated~name~will~be~removed~in~the~next~release.
+ }
+\msg_new:nnn { hooks } { extra-pop-label }
+ {
+ Extra~\iow_char:N \\PopDefaultHookLabel. \\
+ This~command~will~be~ignored.
+ }
+\msg_new:nnn { hooks } { missing-pop-label }
+ {
+ Missing~\iow_char:N \\PopDefaultHookLabel. \\
+ The~label~`#1'~was~pushed~but~never~popped.~Something~is~wrong.
+ }
\msg_new:nnn { hooks } { should-not-happen }
{
ERROR!~This~should~not~happen.~#1 \\
@@ -1917,26 +2591,86 @@ of this package available from CTAN}
{ \hook_gput_next_code:nn {#1} {#2} }
\NewDocumentCommand \RemoveFromHook { m o }
{ \hook_gremove_code:nn {#1} {#2} }
-\seq_gpush:Nn \g__hook_name_stack_seq { }
+\tl_gset:Nn \g__hook_hook_curr_name_tl { top-level }
+\seq_gput_right:Nn \g__hook_name_stack_seq { top-level }
+\cs_set_protected:Npn \__hook_tmp:w #1 #2 #3
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ \seq_gput_right:Nn \g__hook_name_stack_seq {#1}
+ \__hook_tmp:w
+ }
+\exp_after:wN \__hook_tmp:w \@currnamestack
+ \q_recursion_tail \q_recursion_tail
+ \q_recursion_tail \q_recursion_stop
+\tl_gset:Nx \g__hook_hook_curr_name_tl { \@currname }
\cs_new_protected:Npn \__hook_curr_name_push:n #1
+ { \exp_args:Nx \__hook_curr_name_push_aux:n { \__hook_make_name:n {#1} } }
+\cs_new_protected:Npn \__hook_curr_name_push_aux:n #1
{
- \seq_gpush:Nn \g__hook_name_stack_seq {#1}
- \tl_gset:Nn \g__hook_hook_curr_name_tl {#1}
+ \tl_if_blank:nTF {#1}
+ { \msg_error:nn { hooks } { no-default-label } }
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { PushDefaultHookLabel } {#1}
+ }
+ {
+ \seq_gpush:NV \g__hook_name_stack_seq \g__hook_hook_curr_name_tl
+ \tl_gset:Nn \g__hook_hook_curr_name_tl {#1}
+ }
+ }
}
\cs_new_protected:Npn \__hook_curr_name_pop:
{
- \seq_gpop:NN \g__hook_name_stack_seq \l__hook_return_tl
- \seq_get:NNTF \g__hook_name_stack_seq \l__hook_return_tl
+ \seq_gpop:NNTF \g__hook_name_stack_seq \l__hook_return_tl
{ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl }
+ { \msg_error:nn { hooks } { extra-pop-label } }
+ }
+\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage
+ { \__hook_end_document_label_check: }
+\cs_new_protected:Npn \__hook_end_document_label_check:
+ {
+ \seq_gpop:NNT \g__hook_name_stack_seq \l__hook_return_tl
{
- \msg_error:nnn { hooks } { should-not-happen }
- { Tried~to~pop~from~an~empty~default~label~stack. }
+ \msg_error:nnx { hooks } { missing-pop-label }
+ { \g__hook_hook_curr_name_tl }
+ \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl
+ \__hook_end_document_label_check:
+ }
+ }
+\NewDocumentCommand \SetDefaultHookLabel { m }
+ {
+ \seq_if_empty:NTF \g__hook_name_stack_seq
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { for } { SetDefaultHookLabel } {#1}
+ }
+ { \exp_args:Nx \__hook_set_default_label:n { \__hook_make_name:n {#1} } }
+ }
+\cs_new_protected:Npn \__hook_set_default_label:n #1
+ {
+ \str_if_eq:nnTF {#1} { top-level }
+ {
+ \msg_error:nnnnn { hooks } { set-top-level }
+ { to } { SetDefaultHookLabel } {#1}
}
+ { \tl_gset:Nn \g__hook_hook_curr_name_tl {#1} }
}
\NewDocumentCommand \DeclareDefaultHookLabel { m }
{
- \seq_gpop:NN \g__hook_name_stack_seq \l__hook_return_tl
- \__hook_curr_name_push:n {#1}
+ \msg_error:nn { hooks } { ddhl-deprecated }
+ \SetDefaultHookLabel {#1}
+ }
+\NewDocumentCommand \PushDefaultHookLabel { m }
+ { \__hook_curr_name_push:n {#1} }
+\NewDocumentCommand \PopDefaultHookLabel { }
+ { \__hook_curr_name_pop: }
+\cs_gset_protected:Npn \@expl@push@filename@aux@@ #1#2#3
+ {
+ \__hook_curr_name_push:n {#3}
+ \str_gset:Nx \g_file_curr_name_str {#3}
+ #1 #2 {#3}
}
\cs_new:Npn \UseHook { \hook_use:n }
\cs_new:Npn \UseOneTimeHook { \hook_use_once:n }
@@ -1956,8 +2690,6 @@ of this package available from CTAN}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5
\cs_new_eq:NN \@expl@@@initialize@all@@
\__hook_initialize_all:
-\cs_new_eq:NN \@expl@@@hook@curr@name@push@@n
- \__hook_curr_name_push:n
\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@
\__hook_curr_name_pop:
\ExplSyntaxOff
@@ -1995,1052 +2727,340 @@ of this package available from CTAN}
%%% From File: ltcntrl.dtx
%%% From File: lterror.dtx
%%% From File: ltpar.dtx
-%%% From File: ltlists.dtx
-%%% From File: ltboxes.dtx
-\IncludeInRelease{2015/01/01}%
- {\makebox}{Make \makebox robust}%
-\DeclareRobustCommand\makebox{%
- \leavevmode
- \@ifnextchar(%)
- \@makepicbox
- {\@ifnextchar[\@makebox\mbox}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\makebox}{Make \makebox robust}%
-\def\makebox{%
- \leavevmode
- \@ifnextchar(%)
- \@makepicbox
- {\@ifnextchar[\@makebox\mbox}}%
-\expandafter\let\csname makebox \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@imakepicbox}{default units}%
-\long\def\@imakepicbox(#1,#2)[#3]#4{%
- \@defaultunitsset\@tempdimc{#2}\unitlength
- \vbox to\@tempdimc
- {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
- \let\mb@t\vss
- \@tfor\reserved@a :=#3\do{%
- \if s\reserved@a
- \let\mb@l\relax\let\mb@r\relax
- \else
- \expandafter\let\csname mb@\reserved@a\endcsname\relax
- \fi}%
- \mb@t
- \@defaultunitsset\@tempdimc{#1}\unitlength
- \hb@xt@\@tempdimc{\mb@l #4\mb@r}%
- \mb@b
- \kern\z@}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@imakepicbox}{default units}%
-\long\def\@imakepicbox(#1,#2)[#3]#4{%
- \vbox to#2\unitlength
- {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
- \let\mb@t\vss
- \@tfor\reserved@a :=#3\do{%
- \if s\reserved@a
- \let\mb@l\relax\let\mb@r\relax
- \else
- \expandafter\let\csname mb@\reserved@a\endcsname\relax
- \fi}%
- \mb@t
- \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
- \mb@b
- \kern\z@}}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\savebox}{Make \savebox robust}%
-\DeclareRobustCommand\savebox[1]{%
- \@ifnextchar(%)
- {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\savebox}{Make \savebox robust}%
-\def\savebox#1{%
- \@ifnextchar(%)
- {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}%
-\expandafter\let\csname savebox \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\framebox}{Make \framebox robust}%
-\DeclareRobustCommand\framebox{%
- \@ifnextchar(%)
- \@framepicbox{\@ifnextchar[\@framebox\fbox}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\framebox}{Make \framebox robust}%
-\def\framebox{%
- \@ifnextchar(%)
- \@framepicbox{\@ifnextchar[\@framebox\fbox}}%
-\expandafter\let\csname framebox \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\parbox}{Make \parbox robust}%
-\DeclareRobustCommand\parbox{%
- \@ifnextchar[%]
- \@iparbox
- {\@iiiparbox c\relax[s]}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\parbox}{Make \parbox robust}%
-\def\parbox{%
- \@ifnextchar[%]
- \@iparbox
- {\@iiiparbox c\relax[s]}}%
-\expandafter\let\csname parbox \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2017-04-15}%
- {\normallineskiplimit}
- {reset \lineskiplimit}%
-\def\@arrayparboxrestore{%
- \let\if@nobreak\iffalse
- \let\if@noskipsec\iffalse
- \let\par\@@par
- \let\-\@dischyph
- \let\'\@acci\let\`\@accii\let\=\@acciii
- \parindent\z@ \parskip\z@skip
- \everypar{}%
- \linewidth\hsize
- \@totalleftmargin\z@
- \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
- \parfillskip\@flushglue
- \lineskip\normallineskip
- \lineskiplimit\normallineskiplimit
- \baselineskip\normalbaselineskip
- \sloppy}
-\EndIncludeInRelease
-\IncludeInRelease{0000-00-00}%
- {\normallineskiplimit}
- {reset \lineskiplimit}%
-\def\@arrayparboxrestore{%
- \let\if@nobreak\iffalse
- \let\if@noskipsec\iffalse
- \let\par\@@par
- \let\-\@dischyph
- \let\'\@acci\let\`\@accii\let\=\@acciii
- \parindent\z@ \parskip\z@skip
- \everypar{}%
- \linewidth\hsize
- \@totalleftmargin\z@
- \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
- \parfillskip\@flushglue \lineskip\normallineskip
- \baselineskip\normalbaselineskip
- \sloppy}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\rule}{Make \rule robust}%
-\DeclareRobustCommand\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\rule}{Make \rule robust}%
-\def\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
-\expandafter\let\csname rule \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\raisebox}{Make \raisebox robust}%
-\DeclareRobustCommand\raisebox[1]{%
- \leavevmode
- \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\raisebox}{Make \raisebox robust}%
-\def\raisebox#1{%
- \leavevmode
- \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
-\expandafter\let\csname raisebox \endcsname\@undefined
-\EndIncludeInRelease
-%%% From File: lttab.dtx
-\IncludeInRelease{2020/10/01}%
- {\@itabcr}{Tabbing calc syntax}%
-\def\@itabcr[#1]{\@vspace@calcify{#1}\@startline\ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@itabcr}{Tabbing calc syntax}%
-
-\def\@itabcr[#1]{\vskip #1\@startline\ignorespaces}
-\EndIncludeInRelease
+%%% From File: ltspace.dtx
\IncludeInRelease{2019/10/01}%
- {\pushtabs}{Make commands robust}%
-\DeclareRobustCommand\pushtabs{%
- \@stopfield\@addfield\global\advance\@tabpush \@ne \begingroup
- \@contfield}
-\DeclareRobustCommand\poptabs{\@stopfield\@addfield
- \ifnum \@tabpush >\z@
- \endgroup
- \global\advance\@tabpush \m@ne
- \ifnum \@curtab >\@hightab
- \global \@curtab \@hightab
- \@badtab
- \fi
- \else
- \@badpoptabs
- \fi
- \@contfield}
-\DeclareRobustCommand\kill{\@stopfield\@startline\ignorespaces}
+ {\pagebreak}{Make commands robust}%
+\DeclareRobustCommand\pagebreak{\@testopt{\@no@pgbk-}4}
+\DeclareRobustCommand\nopagebreak{\@testopt\@no@pgbk4}
+\DeclareRobustCommand\linebreak{\@testopt{\@no@lnbk-}4}
+\DeclareRobustCommand\nolinebreak{\@testopt\@no@lnbk4}
+\DeclareRobustCommand\samepage{\interlinepenalty\@M
+ \postdisplaypenalty\@M
+ \interdisplaylinepenalty\@M
+ \@beginparpenalty\@M
+ \@endparpenalty\@M
+ \@itempenalty\@M
+ \@secpenalty\@M
+ \interfootnotelinepenalty\@M}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\pushtabs}{Make commands robust}%
-
-\kernel@make@fragile\pushtabs
-\kernel@make@fragile\poptabs
-\kernel@make@fragile\kill
+ {\pagebreak}{Make commands robust}%
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@yargarraycr}{tabular support calc syntax}%
-\def\@yargarraycr#1{\cr\noalign{\@vspace@calcify{#1}}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@yargarraycr}{tabular support calc syntax}%
+\kernel@make@fragile\pagebreak
+\kernel@make@fragile\nopagebreak
+\kernel@make@fragile\linebreak
+\kernel@make@fragile\nolinebreak
+\kernel@make@fragile\samepage
-\def\@yargarraycr#1{\cr\noalign{\vskip #1}}
\EndIncludeInRelease
-%%% From File: ltmath.dtx
-\IncludeInRelease{2019/10/01}%
- {\vphantom}{Make commands robust}%
-\DeclareRobustCommand\vphantom{\v@true\h@false\ph@nt}
-\DeclareRobustCommand\hphantom{\v@false\h@true\ph@nt}
-\DeclareRobustCommand\phantom{\v@true\h@true\ph@nt}
-\DeclareRobustCommand\mathstrut{\vphantom(}
+\IncludeInRelease{2020/02/02}%
+ {\@normalcr}{Make robust}%
+\protected\def\@normalcr{%
+ \let \reserved@e \relax
+ \let \reserved@f \relax
+ \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
+ \@xnewline}%
+ \@xnewline}
+\let\\\@normalcr
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\vphantom}{Make commands robust}%
+ {\@normalcr}{Make robust}%
-\kernel@make@fragile\vphantom
-\kernel@make@fragile\hphantom
-\kernel@make@fragile\phantom
-\kernel@make@fragile\mathstrut
+\DeclareRobustCommand\\{%
+ \let \reserved@e \relax
+ \let \reserved@f \relax
+ \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
+ \@xnewline}%
+ \@xnewline}
+\expandafter\let\expandafter\@normalcr
+ \csname\expandafter\@gobble\string\\ \endcsname
\EndIncludeInRelease
-\IncludeInRelease{2018/12/01}%
- {\finph@nt}{Start LR-mode}%
-\def\finph@nt{%
- \setbox\tw@\null
- \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
- \ifh@ \wd\tw@\wd\z@\fi
- \leavevmode@ifvmode\box\tw@}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\finph@nt}{Start LR-mode}%
-\def\finph@nt{%
- \setbox\tw@\null
- \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
- \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
-\EndIncludeInRelease
-\IncludeInRelease{2018/12/01}%
- {\finsm@sh}{Start LR-mode}%
-\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \leavevmode@ifvmode\box\z@}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\finsm@sh}{Start LR-mode}%
-\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
-\EndIncludeInRelease
-\IncludeInRelease{2019/10/01}%
- {\cases}{Make commands robust}%
-\DeclareRobustCommand*\cases[1]{\left\{\,\vcenter{\normalbaselines\m@th
- \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
-\DeclareRobustCommand*\matrix[1]{\null\,\vcenter{\normalbaselines\m@th
- \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
- \mathstrut\crcr\noalign{\kern-\baselineskip}
- #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
-\DeclareRobustCommand*\pmatrix[1]{\left(\matrix{#1}\right)}
+\IncludeInRelease{2020/10/01}%
+ {\@vspace@calcify}{Add calc support}%
+\def\@vspace@calcify#1{\begingroup\setlength\skip@{#1}\vskip\skip@\endgroup}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\cases}{Make commands robust}%
-
-\kernel@make@fragile\cases
-\kernel@make@fragile\matrix
-\kernel@make@fragile\pmatrix
+ {\@vspace@calcify}{Add calc support}%
+\let\@vspace@calcify\@undefined
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
- {\tmspace}{amsmath spacing commands}%
-\DeclareRobustCommand\tmspace[3]{%
- \ifmmode\mskip#1#2\else\leavevmode@ifvmode\kern#1#3\fi\relax}
-\DeclareRobustCommand\,{\tmspace+\thinmuskip{.16667em}}
-\let\thinspace\,
-\DeclareRobustCommand\!{\tmspace-\thinmuskip{.16667em}}
-\let\negthinspace\!
-\DeclareRobustCommand\:{\tmspace+\medmuskip{.2222em}}
-\let\medspace\:
-\let\>=\:
-\DeclareRobustCommand\negmedspace{\tmspace-\medmuskip{.2222em}}
-\DeclareRobustCommand\;{\tmspace+\thickmuskip{.2777em}}
-\let\thickspace\;
-\DeclareRobustCommand\negthickspace{\tmspace-\thickmuskip{.2777em}}
+ {\@newline}{\newline calc support}%
+\def\@newline[#1]{\let \reserved@e \vadjust
+ \@gnewline {\@vspace@calcify{#1}}}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\tmspace}{amsmath spacing commands}%
-
-\let\tmspace\@undefined
-\DeclareRobustCommand{\,}{%
- \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
-\DeclareRobustCommand\thinspace{\leavevmode@ifvmode\kern .16667em }
-\DeclareRobustCommand\negthinspace{\leavevmode@ifvmode\kern-.16667em }
-\def\>{\mskip\medmuskip}
-\let\:=\>
-\def\;{\mskip\thickmuskip}
-\def\!{\mskip-\thinmuskip}
+ {\@newline}{\newline calc support}%
+\def\@newline[#1]{\let \reserved@e \vadjust
+ \@gnewline {\vskip #1}}
\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\(}{Make \( robust}%
-\DeclareRobustCommand\({%
- \relax\ifmmode\@badmath\else$\fi}%
-\DeclareRobustCommand\){%
- \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\(}{Make \( robust}%
-\def\({%
- \relax\ifmmode\@badmath\else$\fi}%
-\expandafter\let\csname\string( \endcsname\@undefined
-\def\){%
- \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%
-\expandafter\let\csname\string) \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\[}{Make \[ robust}%
-\DeclareRobustCommand\[{%
- \relax\ifmmode
- \@badmath
- \else
- \ifvmode
- \nointerlineskip
- \makebox[.6\linewidth]{}%
- \fi
- $$%%$$ BRACE MATCH HACK
- \fi
-}%
-\DeclareRobustCommand\]{%
- \relax\ifmmode
- \ifinner
- \@badmath
- \else
- $$%%$$ BRACE MATCH HACK
+\IncludeInRelease{2018/10/10}%
+ {\@esphack}{hyphenation and nobreak after space hack}%
+\def\@esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \ifdim\lastskip=\z@
+ \nobreak \hskip\z@skip
\fi
- \else
- \@badmath
- \fi
- \ignorespaces
-}%
+ \ignorespaces
+ \fi
+ \else
+ \ifvmode
+ \if@nobreak\nobreak\else\if@noskipsec\nobreak\fi\fi
+ \fi
+ \fi}%
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\[}{Make \[ robust}%
-\def\[{%
- \relax\ifmmode
- \@badmath
- \else
- \ifvmode
- \nointerlineskip
- \makebox[.6\linewidth]{}%
- \fi
- $$%%$$ BRACE MATCH HACK
- \fi
-}%
-\expandafter\let\csname\string[ \endcsname\@undefined
-\def\]{%
- \relax\ifmmode
- \ifinner
- \@badmath
- \else
- $$%%$$ BRACE MATCH HACK
+\IncludeInRelease{2015/10/01}%
+ {\@esphack}{hyphenation and nobreak after space hack}%
+\def\@esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \ifdim\lastskip=\z@
+ \nobreak \hskip\z@skip
\fi
- \else
- \@badmath
- \fi
- \ignorespaces
-}%
-\expandafter\let\csname\string] \endcsname\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@xeqncr}{eqnarray support calc syntax}%
-\def\@xeqncr[#1]{%
- \ifnum0=`{\fi}%
- \@@eqncr
- \noalign{\penalty\@eqpen\vskip\jot\@vspace@calcify{#1}}%
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@xeqncr}{eqnarray support calc syntax}%
-
-\def\@xeqncr[#1]{%
- \ifnum0=`{\fi}%
- \@@eqncr
- \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
-}
-\EndIncludeInRelease
-%%% From File: ltpictur.dtx
-\IncludeInRelease{2020/10/01}%
- {\@defaultunitsset}{default units}%
-\def\@defaultunitsset#1#2#3{%
- \@defaultunits#1\dimexpr#2#3\relax\relax\@nnil}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@defaultunitsset}{default units}%
-\let\@defaultunitsset\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@picture}{default units}%
-\def\@picture(#1,#2)(#3,#4){%
- \@defaultunitsset\@picht{#2}\unitlength
- \@defaultunitsset\@tempdimc{#1}\unitlength
- \setbox\@picbox\hb@xt@\@tempdimc\bgroup
- \@defaultunitsset\@tempdimc{#3}\unitlength
- \hskip -\@tempdimc
- \@defaultunitsset\@tempdimc{#4}\unitlength
- \lower\@tempdimc\hbox\bgroup
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@picture}{default units}%
-\def\@picture(#1,#2)(#3,#4){%
- \@picht#2\unitlength
- \setbox\@picbox\hb@xt@#1\unitlength\bgroup
- \hskip -#3\unitlength
- \lower #4\unitlength\hbox\bgroup
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\put}{default units}%
-\expandafter\let\csname put \endcsname\@undefind
-\long\def\put(#1,#2)#3{%
- \@killglue
- \@defaultunitsset\@tempdimc{#2}\unitlength
- \raise\@tempdimc
- \hb@xt@\z@{%
- \@defaultunitsset\@tempdimc{#1}\unitlength
- \kern\@tempdimc
- #3\hss}%
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\put}{default units}%
-\expandafter\let\csname put \endcsname\@undefind
-\long\def\put(#1,#2)#3{%
- \@killglue\raise#2\unitlength
- \hb@xt@\z@{\kern#1\unitlength #3\hss}%
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\multiput}{default units}%
-\expandafter\let\csname multiput \endcsname\@undefind
-\def\multiput(#1,#2)#3{%
- \@defaultunitsset\@xdim{#1}\unitlength
- \@defaultunitsset\@ydim{#2}\unitlength
- \@multiput(}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\multiput}{default units}%
-\expandafter\let\csname multiput \endcsname\@undefind
-\def\multiput(#1,#2)#3{%
- \@xdim #1\unitlength
- \@ydim #2\unitlength
- \@multiput(}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@multiput}{default units}%
-\long\def\@multiput(#1,#2)#3#4{%
- \@killglue\@multicnt #3\relax
- \@whilenum \@multicnt >\z@\do
- {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
- \advance\@multicnt\m@ne
- \@defaultunitsset{\advance\@xdim}{#1}\unitlength
- \@defaultunitsset{\advance\@ydim}{#2}\unitlength}%
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@multiput}{default units}%
-\long\def\@multiput(#1,#2)#3#4{%
- \@killglue\@multicnt #3\relax
- \@whilenum \@multicnt >\z@\do
- {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
- \advance\@multicnt\m@ne
- \advance\@xdim#1\unitlength\advance\@ydim#2\unitlength}%
- \ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@istackcr}{\shortstack calc support}%
-\def\@istackcr[#1]{\cr\noalign{\@vspace@calcify{#1}}\ignorespaces}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@istackcr}{\shortstack calc support}%
-
-\def\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces}
+ \ignorespaces
+ \fi
+ \fi}%
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\line}{default units}%
-\expandafter\let\csname line \endcsname\@undefind
-\def\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
- \@defaultunitsset\@linelen{#3}\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \ifnum\@xarg =\z@ \@vline
- \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
+\IncludeInRelease{2015/01/01}%
+ {\@esphack}{hyphenation and nobreak after space hack}%
+\def\@esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \nobreak \hskip\z@skip
+ \ignorespaces
\fi
- \fi}
+ \fi}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\line}{default units}%
-\expandafter\let\csname line \endcsname\@undefind
-\def\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
- \@linelen #3\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \ifnum\@xarg =\z@ \@vline
- \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
+ {\@esphack}{hyphenation and nobreak after space hack}%
+\def\@esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \ignorespaces
\fi
- \fi}
+ \fi}%
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\vector}{default units}%
-\expandafter\let\csname vector \endcsname\@undefind
-\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
- \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
- \ifnum\@tempcnta<5\relax
- \@defaultunitsset\@linelen{#3}\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \ifnum\@xarg =\z@ \@vvector
- \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
+\IncludeInRelease{2015/01/01}%
+ {\@Esphack}{hyphenation after space hack}%
+\def\@Esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \nobreak \hskip\z@skip
+ \@ignoretrue
+ \ignorespaces
\fi
- \fi
- \else\@badlinearg\fi}
+ \fi}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\vector}{default units}%
-\expandafter\let\csname vector \endcsname\@undefind
-\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
- \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
- \ifnum\@tempcnta<5\relax
- \@linelen #3\unitlength
- \ifdim\@linelen<\z@\@badlinearg\else
- \ifnum\@xarg =\z@ \@vvector
- \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
+ {\@Esphack}{hyphenation after space hack}%
+\def\@Esphack{%
+ \relax
+ \ifhmode
+ \spacefactor\@savsf
+ \ifdim\@savsk>\z@
+ \@ignoretrue
+ \ignorespaces
\fi
- \fi
- \else\@badlinearg\fi}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\dashbox}{default units}%
-\expandafter\let\csname dashbox \endcsname\@undefind
-\def\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \z@skip
-\lineskip \z@skip
-\@defaultunitsset\@dashdim{#2}\unitlength
-\@dashcnt \@dashdim \advance\@dashcnt 200
-\@defaultunitsset\@dashdim{#1}\unitlength
-\divide\@dashcnt \@dashdim
-\ifodd\@dashcnt\@dashdim \z@
-\advance\@dashcnt \@ne \divide\@dashcnt \tw@
-\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
-\advance\@dashcnt \m@ne
-\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
-\@width \@dashdim}\put(0,0){\copy\@dashbox}%
-\put(0,#3){\copy\@dashbox}%
-\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
-\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
-\multiply\@dashdim \thr@@
-\fi
-\setbox\@dashbox \hbox{%
- \@defaultunitsset\@tempdimc{#1}\unitlength
- \vrule \@height \@halfwidth \@depth \@halfwidth \@width \@tempdimc
- \hskip\@tempdimc}%
-\@tempcnta\z@
-\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
-\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
-\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
-\do{\copy\@dashbox\advance\@tempcnta \@ne }}%
-\@defaultunitsset\@dashdim{#3}\unitlength
-\@dashcnt \@dashdim \advance\@dashcnt 200
-\@defaultunitsset\@dashdim{#1}\unitlength
-\divide\@dashcnt \@dashdim
-\ifodd\@dashcnt \@dashdim \z@
-\advance\@dashcnt \@ne \divide\@dashcnt \tw@
-\else
-\divide\@dashdim \tw@ \divide\@dashcnt \tw@
-\advance\@dashcnt \m@ne
-\setbox\@dashbox\hbox{\hskip -\@halfwidth
-\vrule \@width \@wholewidth
-\@height \@dashdim}\put(0,0){\copy\@dashbox}%
-\put(#2,0){\copy\@dashbox}%
-\put(0,#3){\lower\@dashdim\copy\@dashbox}%
-\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
-\multiply\@dashdim \thr@@
-\fi
-\@defaultunitsset\@tempdimb{#1}\unitlength
-\setbox\@dashbox\hbox{%
- \vrule \@width \@wholewidth \@height\@tempdimb}%
-\@tempcnta\z@
-\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
-\do{\vskip\@tempdimb\copy\@dashbox\advance\@tempcnta \@ne }%
-\vskip\@dashdim}}\@tempcnta\z@
-\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
-\do{\vskip\@tempdimb\copy\@dashbox\advance\@tempcnta \@ne }%
-\vskip\@dashdim}}}\@makepicbox(#2,#3)}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\dashbox}{default units}%
-\expandafter\let\csname dashbox \endcsname\@undefind
-\def\dashbox#1(#2,#3){%
-\leavevmode\hb@xt@\z@{\baselineskip \z@skip
-\lineskip \z@skip
-\@dashdim #2\unitlength
-\@dashcnt \@dashdim \advance\@dashcnt 200
-\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
-\ifodd\@dashcnt\@dashdim \z@
-\advance\@dashcnt \@ne \divide\@dashcnt \tw@
-\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
-\advance\@dashcnt \m@ne
-\setbox\@dashbox \hbox{%
- \vrule \@height \@halfwidth \@depth \@halfwidth
- \@width \@dashdim}\put(0,0){\copy\@dashbox}%
-\put(0,#3){\copy\@dashbox}%
-\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
-\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
-\multiply\@dashdim \thr@@
-\fi
-\setbox\@dashbox \hbox{%
- \vrule \@height \@halfwidth \@depth \@halfwidth
- \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
-\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
-\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
-\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
-\do{\copy\@dashbox\advance\@tempcnta \@ne }}%
-\@dashdim #3\unitlength
-\@dashcnt \@dashdim \advance\@dashcnt 200
-\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
-\ifodd\@dashcnt \@dashdim \z@
-\advance\@dashcnt \@ne \divide\@dashcnt \tw@
-\else
-\divide\@dashdim \tw@ \divide\@dashcnt \tw@
-\advance\@dashcnt \m@ne
-\setbox\@dashbox\hbox{\hskip -\@halfwidth
-\vrule \@width \@wholewidth
-\@height \@dashdim}\put(0,0){\copy\@dashbox}%
-\put(#2,0){\copy\@dashbox}%
-\put(0,#3){\lower\@dashdim\copy\@dashbox}%
-\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
-\multiply\@dashdim \thr@@
-\fi
-\setbox\@dashbox\hbox{\vrule \@width \@wholewidth
-\@height #1\unitlength}\@tempcnta\z@
-\put(0,0){%
- \hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
- \do{\vskip #1\unitlength\copy\@dashbox
- \advance\@tempcnta\@ne }%
- \vskip\@dashdim}}\@tempcnta\z@
-\put(#2,0){%
- \hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
- \do{\vskip #1\unitlength\copy\@dashbox
- \advance\@tempcnta \@ne }%
- \vskip\@dashdim}}}\@makepicbox(#2,#3)}
-\EndIncludeInRelease
-\IncludeInRelease{2016/03/31}%
- {\@ovhlinetrue}%
- {Avoid almost zero length leaders}%
-\newif\if@ovvline \@ovvlinetrue
-\newif\if@ovhline \@ovhlinetrue
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@ovhlinetrue}%
- {Avoid almost zero length leaders}%
-\let\if@ovvline\@undefined
-\let\if@ovhline\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@oval}{default units}%
-\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
- \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
- \@ovvlinefalse \@ovhlinefalse
- \@tfor\reserved@a :=#3\do{%
- \csname @ov\reserved@a false\endcsname}%
- \@defaultunitsset\@ovxx{#1}\unitlength
- \@defaultunitsset\@ovyy{#2}\unitlength
- \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx \@ovvlinetrue
- \else \@ovyy \ifdim \@ovyy =\@ovxx \else \@ovhlinetrue \fi\fi
- \advance \@tempdimb -2\p@
- \@getcirc \@tempdimb
- \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
- \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
- \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
- \ifdim \@ovdx >\z@ \@ovhlinetrue \fi
- \ifdim \@ovdy >\z@ \@ovvlinetrue \fi
- \@circlefnt \setbox\@tempboxa
- \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
- \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
- \if@ovt \@ovhorz \kern -\@ovxx \fi
- \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
- \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
- \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
- \endgroup}
-\EndIncludeInRelease
-\IncludeInRelease{2016/03/31}%
- {\@oval}{default units}%
-\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
- \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
- \@ovvlinefalse \@ovhlinefalse
- \@tfor\reserved@a :=#3\do{%
- \csname @ov\reserved@a false\endcsname}%
- \@ovxx #1\unitlength
- \@ovyy #2\unitlength
- \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx \@ovvlinetrue
- \else \@ovyy \ifdim \@ovyy =\@ovxx \else \@ovhlinetrue
- \fi\fi
- \advance \@tempdimb -2\p@
- \@getcirc \@tempdimb
- \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
- \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
- \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
- \ifdim \@ovdx >\z@ \@ovhlinetrue \fi
- \ifdim \@ovdy >\z@ \@ovvlinetrue \fi
- \@circlefnt \setbox\@tempboxa
- \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
- \if@ovl
- \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx
- \fi
- \if@ovt \@ovhorz \kern -\@ovxx \fi
- \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
- \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
- \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
- \endgroup}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@oval}{default units}%
-\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
- \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
- \@tfor\reserved@a :=#3\do
- {\csname @ov\reserved@a false\endcsname}%
- \@ovxx #1\unitlength
- \@ovyy #2\unitlength
- \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
- \advance \@tempdimb -2\p@
- \@getcirc \@tempdimb
- \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
- \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
- \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
- \@circlefnt \setbox\@tempboxa
- \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
- \if@ovl
- \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx
- \fi
- \if@ovt \@ovhorz \kern -\@ovxx \fi
- \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
- \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
- \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
- \endgroup}
-\EndIncludeInRelease
-\IncludeInRelease{2016/03/31}%
- {\@ovvert}{Avoid almost zero length leaders}%
-\def\@ovvert#1#2{\vbox to\@ovyy{%
- \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
- \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
- \else \kern \@ovri \kern \@ovdy \fi
- \if@ovvline \leaders\vrule \@width \@wholewidth \fi
- \vfil \nointerlineskip
- \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
- \hbox{\char \@tempcntb}%
- \else \kern \@ovdy \kern \@ovro \fi}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@ovvert}{Avoid almost zero length leaders}%
-\def\@ovvert#1#2{\vbox to\@ovyy{%
- \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
- \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
- \else \kern \@ovri \kern \@ovdy \fi
- \leaders\vrule \@width \@wholewidth\vfil \nointerlineskip
- \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
- \hbox{\char \@tempcntb}%
- \else \kern \@ovdy \kern \@ovro \fi}}
-\EndIncludeInRelease
-\IncludeInRelease{2016/03/31}%
- {\@ovhorz}{Avoid almost zero length leaders}%
-\def\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
- \if@ovr \else \kern \@ovdx \fi
- \if@ovhline \leaders \hrule \@height \@wholewidth \fi
- \hfil
- \if@ovl \else \kern \@ovdx \fi
- \kern \@ovri}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@ovhorz}{Avoid almost zero length leaders}%
-\def\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
- \if@ovr \else \kern \@ovdx \fi
- \leaders \hrule \@height \@wholewidth \hfil
- \if@ovl \else \kern \@ovdx \fi
- \kern \@ovri}}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@circle}{default units}%
-\def\@circle#1{%
- \begingroup \boxmaxdepth \maxdimen
- \@defaultunitsset\@tempdimb{#1}\unitlength
- \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
- \@ovro\ht\@tempboxa
- \setbox\@tempboxa\hbox{\@circlefnt
- \advance\@tempcnta\tw@ \char \@tempcnta
- \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
- \advance\@tempcnta\tw@
- \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
- \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
- \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
- \else \@circ\@tempdimb{96}\fi\endgroup}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@circle}{default units}%
-\def\@circle#1{%
- \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength
- \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
- \@ovro\ht\@tempboxa
- \setbox\@tempboxa\hbox{\@circlefnt
- \advance\@tempcnta\tw@ \char \@tempcnta
- \advance\@tempcnta\m@ne \char \@tempcnta
- \kern -2\@tempdima
- \advance\@tempcnta\tw@
- \raise \@tempdima \hbox{\char\@tempcnta}%
- \raise \@tempdima
- \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
- \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
- \else \@circ\@tempdimb{96}\fi\endgroup}
+ \fi}%
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
- {\@dot}{default units}%
-\def\@dot#1{%
- \@defaultunitsset\@tempdimb{#1}\unitlength
- \@circ\@tempdimb{112}}
+ {\addvspace}{\addvspace calc support}%
+\def\addvspace#1{%
+ \ifvmode
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \@vspace@calcify{#1}%
+ \else
+ \setlength\@tempskipb{#1}%
+ \@xaddvskip
+ \fi
+ \fi
+ \else
+ \@noitemerr
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@dot}{default units}%
-\def\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}}
+ {\addvspace}{\addvspace calc support}%
+
+\def\addvspace#1{%
+ \ifvmode
+ \if@minipage\else
+ \ifdim \lastskip =\z@
+ \vskip #1\relax
+ \else
+ \@tempskipb#1\relax
+ \@xaddvskip
+ \fi
+ \fi
+ \else
+ \@noitemerr
+ \fi}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@bezier}{default units}%
-\def\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
- \ifnum #1=\z@
- \@defaultunitsset\@ovxx{#4}\unitlength
- \@defaultunitsset{\advance\@ovxx}{-#2}\unitlength
- \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
- \@defaultunitsset\@ovdx{#6}\unitlength
- \@defaultunitsset{\advance\@ovdx}{-#4}\unitlength
- \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
- \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
- \@defaultunitsset\@ovyy{#5}\unitlength
- \@defaultunitsset{\advance\@ovyy}{-#3}\unitlength
- \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
- \@defaultunitsset\@ovdy{#7}\unitlength
- \@defaultunitsset{\advance\@ovdy}{-#5}\unitlength
- \ifdim \@ovdy<\z@ \@ovdy -\@ovdy \fi
- \ifdim \@ovyy<\@ovdy \@ovyy \@ovdy \fi
- \@multicnt
- \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
- \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
- \ifnum \qbeziermax<\@multicnt
- \@multicnt\qbeziermax\relax
+\IncludeInRelease{2015/01/01}%
+ {\addpenalty}{\addpenalty}%
+\def\addpenalty#1{%
+ \ifvmode
+ \if@minipage
+ \else
+ \if@nobreak
+ \else
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
+ \else
+ \@tempskipb\lastskip
+ \begingroup
+ \@tempskipa\@tempskipb
+ \advance \@tempskipb
+ \ifdim\prevdepth>\maxdepth\maxdepth\else
+ \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
+ \fi
+ \vskip -\@tempskipb
+ \penalty#1%
+ \ifdim\@tempskipa=\@tempskipb
+ \else
+ \advance\@tempskipb -\@tempskipa
+ \vskip \@tempskipb
+ \fi
+ \vskip \@tempskipa
+ \endgroup
+ \fi
\fi
- \else \@multicnt#1\relax \fi
- \@tempcnta\@multicnt \advance\@tempcnta\@ne
- \@defaultunitsset\@ovdx{#4}\unitlength
- \@defaultunitsset{\advance\@ovdx}{-#2}\unitlength
- \multiply\@ovdx \tw@
- \@defaultunitsset\@ovxx{#6}\unitlength
- \@defaultunitsset{\advance\@ovxx}{-#2}\unitlength
- \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
- \@defaultunitsset\@ovdy{#5}\unitlength
- \@defaultunitsset{\advance\@ovdy}{-#3}\unitlength
- \multiply\@ovdy \tw@
- \@defaultunitsset\@ovyy{#7}\unitlength
- \@defaultunitsset{\advance\@ovyy}{-#3}\unitlength
- \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
- \setbox\@tempboxa\hbox{%
- \hskip -\@halfwidth
- \vrule \@height\@halfwidth
- \@depth \@halfwidth
- \@width \@wholewidth}%
- \put(#2,#3){%
- \count@\z@
- \@whilenum{\count@<\@tempcnta}\do
- {\@xdim\count@\@ovxx
- \advance\@xdim\@ovdx
- \divide\@xdim\@multicnt
- \multiply\@xdim\count@
- \@ydim\count@\@ovyy
- \advance\@ydim\@ovdy
- \divide\@ydim\@multicnt
- \multiply\@ydim\count@
- \raise \@ydim
- \hb@xt@\z@{\kern\@xdim
- \unhcopy\@tempboxa\hss}%
- \advance\count@\@ne}}}
+ \fi
+ \else
+ \@noitemerr
+ \fi}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@bezier}{default units}%
-\def\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
- \ifnum #1=\z@
- \@ovxx #4\unitlength
- \advance\@ovxx -#2\unitlength
- \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
- \@ovdx #6\unitlength
- \advance\@ovdx -#4\unitlength
- \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
- \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
- \@ovyy #5\unitlength
- \advance\@ovyy -#3\unitlength
- \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
- \@ovdy #7\unitlength
- \advance\@ovdy -#5\unitlength
- \ifdim \@ovdy<\z@ \@ovdy -\@ovdy \fi
- \ifdim \@ovyy<\@ovdy \@ovyy \@ovdy \fi
- \@multicnt
- \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
- \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
- \ifnum
- \qbeziermax<\@multicnt \@multicnt\qbeziermax\relax
+ {\addpenalty}{\addpenalty}%
+\def\addpenalty#1{%
+ \ifvmode
+ \if@minipage
+ \else
+ \if@nobreak
+ \else
+ \ifdim\lastskip=\z@
+ \penalty#1\relax
+ \else
+ \@tempskipb\lastskip
+ \vskip -\lastskip
+ \penalty#1%
+ \vskip\@tempskipb
+ \fi
\fi
- \else \@multicnt#1\relax \fi
- \@tempcnta\@multicnt \advance\@tempcnta\@ne
- \@ovdx #4\unitlength \advance\@ovdx -#2\unitlength
- \multiply\@ovdx \tw@
- \@ovxx #6\unitlength \advance\@ovxx -#2\unitlength
- \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
- \@ovdy #5\unitlength \advance\@ovdy -#3\unitlength
- \multiply\@ovdy \tw@
- \@ovyy #7\unitlength \advance\@ovyy -#3\unitlength
- \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
- \setbox\@tempboxa\hbox{%
- \hskip -\@halfwidth
- \vrule \@height\@halfwidth
- \@depth \@halfwidth
- \@width \@wholewidth}%
- \put(#2,#3){%
- \count@\z@
- \@whilenum{\count@<\@tempcnta}\do
- {\@xdim\count@\@ovxx
- \advance\@xdim\@ovdx
- \divide\@xdim\@multicnt
- \multiply\@xdim\count@
- \@ydim\count@\@ovyy
- \advance\@ydim\@ovdy
- \divide\@ydim\@multicnt
- \multiply\@ydim\count@
- \raise \@ydim
- \hb@xt@\z@{\kern\@xdim
- \unhcopy\@tempboxa\hss}%
- \advance\count@\@ne}}}
+ \fi
+ \else
+ \@noitemerr
+ \fi}%
\EndIncludeInRelease
-\IncludeInRelease{2019/10/01}%
- {\bezier}{Make commands robust}%
-\MakeRobust\bezier
-\MakeRobust\circle
-\MakeRobust\dashbox
-\MakeRobust\line
-\MakeRobust\linethickness
-\MakeRobust\multiput
-\MakeRobust\oval
-\MakeRobust\put
-\MakeRobust\qbezier
-\MakeRobust\shortstack
-\MakeRobust\thinlines
-\MakeRobust\vector
+\IncludeInRelease{2020/10/01}%
+ {\@vspace}{Support calc in \vspace}%
+\def\@vspace #1{%
+ \ifvmode
+ \@vspace@calcify{#1}%
+ \vskip\z@skip
+ \else
+ \@bsphack
+ \vadjust{\@restorepar
+ \@vspace@calcify{#1}%
+ \vskip\z@skip
+ }%
+ \@esphack
+ \fi}
+\def\@vspacer#1{%
+ \ifvmode
+ \dimen@\prevdepth
+ \hrule \@height\z@
+ \nobreak
+ \@vspace@calcify{#1}%
+ \vskip\z@skip
+ \prevdepth\dimen@
+ \else
+ \@bsphack
+ \vadjust{\@restorepar
+ \hrule \@height\z@
+ \nobreak
+ \@vspace@calcify{#1}%
+ \vskip\z@skip}%
+ \@esphack
+ \fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\bezier}{Make commands robust}%
-
-\kernel@make@fragile\bezier
-\kernel@make@fragile\circle
-\kernel@make@fragile\dashbox
-\kernel@make@fragile\line
-\kernel@make@fragile\linethickness
-\kernel@make@fragile\multiput
-\kernel@make@fragile\oval
-\kernel@make@fragile\put
-\kernel@make@fragile\qbezier
-\kernel@make@fragile\shortstack
-\kernel@make@fragile\thinlines
-\kernel@make@fragile\vector
+ {\@vspace}{Support calc in \vspace}%
+\def\@vspace #1{%
+ \ifvmode
+ \vskip #1
+ \vskip\z@skip
+ \else
+ \@bsphack
+ \vadjust{\@restorepar
+ \vskip #1
+ \vskip\z@skip
+ }%
+ \@esphack
+ \fi}
+\def\@vspacer#1{%
+ \ifvmode
+ \dimen@\prevdepth
+ \hrule \@height\z@
+ \nobreak
+ \vskip #1
+ \vskip\z@skip
+ \prevdepth\dimen@
+ \else
+ \@bsphack
+ \vadjust{\@restorepar
+ \hrule \@height\z@
+ \nobreak
+ \vskip #1
+ \vskip\z@skip}%
+ \@esphack
+ \fi}
\EndIncludeInRelease
-%%% From File: ltthm.dtx
-%%% From File: ltsect.dtx
-\IncludeInRelease{2019/10/01}%
- {\title}{Make commands robust}%
-\DeclareRobustCommand\title[1]{\gdef\@title{#1}}
-\DeclareRobustCommand*\author[1]{\gdef\@author{#1}}
-\DeclareRobustCommand*\date[1]{\gdef\@date{#1}}
-\DeclareRobustCommand\thanks[1]{\footnotemark
- \protected@xdef\@thanks{\@thanks
- \protect\footnotetext[\the\c@footnote]{#1}}%
-}
-\DeclareRobustCommand\and{% % \begin{tabular}
- \end{tabular}%
- \hskip 1em \@plus.17fil%
- \begin{tabular}[t]{c}}% % \end{tabular}
+\IncludeInRelease{2015/01/01}%
+ {\@}{Space after \@}%
+\def\@{\spacefactor\@m{}}%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\title}{Make commands robust}%
-
-\kernel@make@fragile\title
-\kernel@make@fragile\author
-\kernel@make@fragile\date
-\kernel@make@fragile\thanks
-\kernel@make@fragile\and
-
+ {\@}{Space after \@}%
+\def\@{\spacefactor\@m}%
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
- {\addcontentsline}{fourth argument}%
-\def\addcontentsline#1#2#3{%
- \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}{}%
- \protected@file@percent}}
-\EndIncludeInRelease
-\IncludeInRelease{2018/12/01}%
- {\addcontentsline}{Mask line endings}%
- \def\addcontentsline#1#2#3{%
- \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}%
- \protected@file@percent}}
+ {\@hspace}{Support calc with \hspace}%
+\def\@hspace#1{\begingroup\setlength\skip@{#1}\hskip\skip@\endgroup}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\addcontentsline}{Mask line endings}%
-\def\addcontentsline#1#2#3{%
- \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
+ {\@hspace}{Support calc with \hspace}%
+
+
+\def\@hspace#1{\hskip #1\relax}
\EndIncludeInRelease
\IncludeInRelease{2018/12/01}%
- {\@dottedtocline}{Prevent protrusion}%
-\def\@dottedtocline#1#2#3#4#5{%
- \ifnum #1>\c@tocdepth \else
- \vskip \z@ \@plus.2\p@
- {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
- \parindent #2\relax\@afterindenttrue
- \interlinepenalty\@M
- \leavevmode
- \@tempdima #3\relax
- \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
- {#4}\nobreak
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
- mu$}\hfill
- \nobreak
- \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5%
- \kern-\p@\kern\p@}%
- \par}%
- \fi}
-
-\DeclareRobustCommand\noprotrusion{\leavevmode\kern-\p@\kern\p@}
+ {\thinspace}{Start LR-mode}%
+\DeclareRobustCommand\enspace{\leavevmode@ifvmode\kern.5em }
+\protected\def\leavevmode@ifvmode{\ifvmode\expandafter\indent\fi}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@dottedtocline}{Prevent protrusion}%
-\def\@dottedtocline#1#2#3#4#5{%
- \ifnum #1>\c@tocdepth \else
- \vskip \z@ \@plus.2\p@
- {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
- \parindent #2\relax\@afterindenttrue
- \interlinepenalty\@M
- \leavevmode
- \@tempdima #3\relax
- \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
- {#4}\nobreak
- \leaders\hbox{$\m@th
- \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
- mu$}\hfill
- \nobreak
- \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
- \par}%
- \fi}
-
-\let\noprotrusion\@undefined
+ {\thinspace}{Start LR-mode}%
+\def\thinspace{\kern .16667em }
+\def\negthinspace{\kern-.16667em }
+\def\enspace{\kern.5em }
+\let\leavevmode@ifvmode\@undefined
\EndIncludeInRelease
+%%% From File: ltlogos.dtx
%%% From File: ltfiles.dtx
\IncludeInRelease{2020/10/01}%
{\document}{Added hook to load l3backend code}%
@@ -3778,3302 +3798,1110 @@ of this package available from CTAN}
{\setlength}{Using \setlength with \dimen0}%
\def\setlength#1#2{#1#2\relax}
\EndIncludeInRelease
-%%% From File: ltfloat.dtx
-\IncludeInRelease{2015/01/01}%
- {\@xfloat}{Check float options}%
-\def\@xfloat #1[#2]{%
- \@nodocument
- \def \@captype {#1}%
- \def \@fps {#2}%
- \@onelevel@sanitize \@fps
- \def \reserved@b {!}%
- \ifx \reserved@b \@fps
- \@fpsadddefault
+%%% From File: ltfssbas.dtx
+%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
+\IncludeInRelease{2020/02/02}%
+ {\DeclareFontShape@}{Maybe drop one m}%
+\def\DeclareFontShape@#1#2#3#4#5#6{%
+ \expandafter\ifx\csname #1+#2\endcsname\relax
+ \@latex@error{Font family `#1+#2' unknown}\@eha
\else
- \ifx \@fps \@empty
- \@fpsadddefault
+ \edef\reserved@a{#3}%
+ \series@maybe@drop@one@m\reserved@a\reserved@b
+ \ifx\reserved@a\reserved@b\else
+ \@latex@warning{Font shape declaration has incorrect series
+ value `#3'.\MessageBreak It should not contain an `m'!
+ Please correct it.\MessageBreak Found}%
\fi
+ \expandafter
+ \xdef\csname#1/#2/\reserved@b/#4\endcsname
+ {\expandafter\noexpand\csname #5\endcsname}%
+ \def\reserved@a{#6}%
+ \global
+ \expandafter\let\csname#5\expandafter\endcsname
+ \ifx\reserved@a\@empty
+ \@empty
+ \else
+ \reserved@a
+ \fi
\fi
- \ifhmode
- \@bsphack
- \@floatpenalty -\@Mii
- \else
- \@floatpenalty-\@Miii
- \fi
- \ifinner
- \@parmoderr\@floatpenalty\z@
- \else
- \@next\@currbox\@freelist
- {%
- \@tempcnta \sixt@@n
- \expandafter \@tfor \expandafter \reserved@a
- \expandafter :\expandafter =\@fps
- \do
- {%
- \if \reserved@a h%
- \ifodd \@tempcnta
- \else
- \advance \@tempcnta \@ne
- \fi
- \else\if \reserved@a t%
- \@setfpsbit \tw@
- \else\if \reserved@a b%
- \@setfpsbit 4%
- \else\if \reserved@a p%
- \@setfpsbit 8%
- \else\if \reserved@a !%
- \ifnum \@tempcnta>15
- \advance\@tempcnta -\sixt@@n\relax
- \fi
- \else
- \@latex@error{Unknown float option `\reserved@a'}%
- {Option `\reserved@a' ignored and `p' used.}%
- \@setfpsbit 8%
- \fi\fi\fi\fi\fi
- }%
- \@tempcntb \csname ftype@\@captype \endcsname
- \multiply \@tempcntb \@xxxii
- \advance \@tempcnta \@tempcntb
- \global \count\@currbox \@tempcnta
- }%
- \@fltovf
- \fi
- \global \setbox\@currbox
- \color@vbox
- \normalcolor
- \vbox \bgroup
- \hsize\columnwidth
- \@parboxrestore
- \@floatboxreset
-}%
+ }
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@xfloat}{Check float options}%
-\def\@xfloat #1[#2]{%
- \@nodocument
- \def \@captype {#1}%
- \def \@fps {#2}%
- \@onelevel@sanitize \@fps
- \def \reserved@b {!}%
- \ifx \reserved@b \@fps
- \@fpsadddefault
- \else
- \ifx \@fps \@empty
- \@fpsadddefault
- \fi
- \fi
- \ifhmode
- \@bsphack
- \@floatpenalty -\@Mii
+ {\DeclareFontShape@}{Maybe drop one m}%
+
+\def\DeclareFontShape@#1#2#3#4#5#6{%
+ \expandafter\ifx\csname #1+#2\endcsname\relax
+ \@latex@error{Font family `#1+#2' unknown}\@eha
\else
- \@floatpenalty-\@Miii
+ \expandafter
+ \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
+ \csname #5\endcsname}%
+ \def\reserved@a{#6}%
+ \global
+ \expandafter\let\csname#5\expandafter\endcsname
+ \ifx\reserved@a\@empty
+ \@empty
+ \else
+ \reserved@a
+ \fi
\fi
- \ifinner
- \@parmoderr\@floatpenalty\z@
- \else
- \@next\@currbox\@freelist
- {%
- \@tempcnta \sixt@@n
- \expandafter \@tfor \expandafter \reserved@a
- \expandafter :\expandafter =\@fps
- \do
- {%
- \if \reserved@a h%
- \ifodd \@tempcnta
- \else
- \advance \@tempcnta \@ne
- \fi
- \fi
- \if \reserved@a t%
- \@setfpsbit \tw@
- \fi
- \if \reserved@a b%
- \@setfpsbit 4%
- \fi
- \if \reserved@a p%
- \@setfpsbit 8%
- \fi
- \if \reserved@a !%
- \ifnum \@tempcnta>15
- \advance\@tempcnta -\sixt@@n\relax
- \fi
- \fi
- }%
- \@tempcntb \csname ftype@\@captype \endcsname
- \multiply \@tempcntb \@xxxii
- \advance \@tempcnta \@tempcntb
- \global \count\@currbox \@tempcnta
- }%
- \@fltovf
- \fi
- \global \setbox\@currbox
- \color@vbox
- \normalcolor
- \vbox \bgroup
- \hsize\columnwidth
- \@parboxrestore
- \@floatboxreset
-}%
+ }
\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\end@dblfloat}{float order in 2-column}%
-\def\end@dblfloat{%
- \if@twocolumn
- \@endfloatbox
- \ifnum\@floatpenalty <\z@
- \@largefloatcheck
- \global\dp\@currbox1sp %
- \@cons\@currlist\@currbox
- \ifnum\@floatpenalty <-\@Mii
- \penalty -\@Miv
- \@tempdima\prevdepth
- \vbox{}%
- \prevdepth\@tempdima
- \penalty\@floatpenalty
- \else
- \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
- \fi
- \fi
+\IncludeInRelease{2015/01/01}{\@DeclareMathSizes}%
+ {Arbitrary units in \DeclareMathSizes}%
+\def\@DeclareMathSizes #1#2#3#4#5{%
+ \@defaultunits\dimen@ #2pt\relax\@nnil
+ \if $#3$%
+ \expandafter\let\csname S@\strip@pt\dimen@\endcsname\math@fontsfalse
\else
- \end@float
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\end@dblfloat}{float order in 2-column}%
-\def\end@dblfloat{%
-\if@twocolumn
- \@endfloatbox
- \ifnum\@floatpenalty <\z@
- \@largefloatcheck
- \@cons\@dbldeferlist\@currbox
+ \@defaultunits\dimen@ii #3pt\relax\@nnil
+ \@defaultunits\@tempdima #4pt\relax\@nnil
+ \@defaultunits\@tempdimb #5pt\relax\@nnil
+ \toks@{#1}%
+ \expandafter\xdef\csname S@\strip@pt\dimen@\endcsname{%
+ \gdef\noexpand\tf@size{\strip@pt\dimen@ii}%
+ \gdef\noexpand\sf@size{\strip@pt\@tempdima}%
+ \gdef\noexpand\ssf@size{\strip@pt\@tempdimb}%
+ \the\toks@
+ }%
\fi
- \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
-\else
- \end@float
-\fi
}%
\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@dblfloatplacement}{float order in 2-column}%
-\def\@dblfloatplacement{\global\@dbltopnum\c@dbltopnumber
- \global\@dbltoproom \dbltopfraction\@colht
- \@textmin \@colht
- \advance \@textmin -\@dbltoproom
- \@fpmin \dblfloatpagefraction\textheight
- \@fptop \@dblfptop
- \@fpsep \@dblfpsep
- \@fpbot \@dblfpbot
- \def\f@depth{1sp}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@dblfloatplacement}{float order in 2-column}%
-\def \@dblfloatplacement {%
- \global \@dbltopnum \c@dbltopnumber
- \global \@dbltoproom \dbltopfraction\@colht
- \@textmin \@colht
- \advance \@textmin -\@dbltoproom
- \@fpmin \dblfloatpagefraction\textheight
- \@fptop \@dblfptop
- \@fpsep \@dblfpsep
- \@fpbot \@dblfpbot
-}%
+\IncludeInRelease{0000/00/00}{\@DeclareMathSizes}%
+ {Arbitrary units in \DeclareMathSizes}%
+\def\@DeclareMathSizes#1#2#3#4#5{%
+ \@defaultunits\dimen@#2pt\relax\@nnil
+ \if$#3$%
+ \expandafter \let
+ \csname S@\strip@pt\dimen@\endcsname
+ \math@fontsfalse
+ \else
+ \expandafter \gdef
+ \csname S@\strip@pt\dimen@\endcsname
+ {\gdef\tf@size{#3}\gdef\sf@size{#4}%
+ \gdef\ssf@size{#5}%
+ #1%
+ }%
+ \fi}%
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@textsuperscript}{superscript baseline}%
-\def\@textsuperscript#1{%
- {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\sf@size#1}}}}}
+\IncludeInRelease{2020/02/02}%
+ {\usefont}{Drop m in usefont}%
+\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
+ \edef\f@family{#2}%
+ \set@target@series{#3}%
+ \edef\f@shape{#4}\selectfont
+ \ignorespaces}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@textsuperscript}{superscript baseline}%
+ {\usefont}{Drop m in usefont}%
-\def\@textsuperscript#1{%
- {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\textsubscript}{\textsubscript}%
-\DeclareRobustCommand*\textsubscript[1]{%
- \@textsubscript{\selectfont#1}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\textsubscript}{\textsubscript}%
-\let\textsubscript\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@textsubscript}{subscript baseline}%
-\def\@textsubscript#1{%
- {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\sf@size#1}}}}}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@textsubscript}{subscript baseline}%
+\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
+ \edef\f@family{#2}%
+ \edef\f@series{#3}%
+ \edef\f@shape{#4}\selectfont
+ \ignorespaces}
-\def\@textsubscript#1{%
- {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@textsubscript}{subscript baseline}%
-\let\@textsubscript\@undefined
\EndIncludeInRelease
-%%% From File: ltidxglo.dtx
-%%% From File: ltbibl.dtx
-%%% From File: ltpage.dtx
-\IncludeInRelease{2019/10/01}%
- {\markboth}{Make commands robust}%
-\DeclareRobustCommand*\markboth[2]{%
- \begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \unrestored@protected@xdef\@themark {{#1}{#2}}%
- \@temptokena \expandafter{\@themark}%
- \mark{\the\@temptokena}%
- \endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
-\DeclareRobustCommand*\markright[1]{%
+\IncludeInRelease{2020/02/02}%
+ {\LoadFontDefinitionFile}{Loading .fd files}%
+\def\LoadFontDefinitionFile#1#2{%
\begingroup
- \let\label\relax \let\index\relax \let\glossary\relax
- \expandafter\@markright\@themark {#1}%
- \@temptokena \expandafter{\@themark}%
- \mark{\the\@temptokena}%
+ \edef\f@encoding{#1}%
+ \edef\f@family{#2}%
+ \try@load@fontshape
\endgroup
- \if@nobreak\ifvmode\nobreak\fi\fi}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\markboth}{Make commands robust}%
-
-\kernel@make@fragile\markboth
-\kernel@make@fragile\markright
-
-\EndIncludeInRelease
-%%
-%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach,
-%% Phelype Oleinik & LaTeX Team
-%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0c}
-\providecommand\ltfilehookdate{2020/10/18}
-\IncludeInRelease{2020/10/01}%
- {\CurrentFile}{Hook management file}%
-\ExplSyntaxOn
-\tl_new:N \CurrentFile
-\tl_new:N \CurrentFilePath
-\tl_new:N \CurrentFileUsed
-\tl_new:N \CurrentFilePathUsed
-\ExplSyntaxOff
+}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\CurrentFile}{Hook management file}%
-
-\let \CurrentFile \@undefined
-\let \CurrentFilePath \@undefined
-\let \CurrentFileUsed \@undefined
-\let \CurrentFilePathUsed \@undefined
+ {\LoadFontDefinitionFile}{Loading .fd files}%
+\let\LoadFontDefinitionFile\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\__filehook_file_parse_full_name:nN}{File helpers}%
-\ExplSyntaxOn
-\cs_new:Npn \__filehook_file_parse_full_name:nN #1
- {
- \exp_args:Nf \file_parse_full_name_apply:nN
- {
- \exp_args:Nf \__filehook_full_name:nn
- { \file_full_name:n {#1} } {#1}
- }
- }
-\cs_new:Npn \__filehook_full_name:nn #1 #2
- {
- \tl_if_empty:nTF {#1}
- { \tl_trim_spaces:n {#2} }
- { \tl_trim_spaces:n {#1} }
- }
-\cs_new:Npn \__filehook_if_no_extension:nTF #1
- {
- \exp_args:Ne \tl_if_empty:nTF
- { \file_parse_full_name_apply:nN {#1} \use_iii:nnn }
- }
-\cs_new_protected:Npn \__filehook_drop_extension:N #1
- {
- \tl_gset:Nx #1
- {
- \exp_args:NV \__filehook_file_parse_full_name:nN #1
- \__filehook_drop_extension_aux:nnn
- }
- }
-\cs_new:Npn \__filehook_drop_extension_aux:nnn #1 #2 #3
- { \tl_if_empty:nF {#1} { #1 / } #2 }
-\tl_new:N \l__filehook_internal_tl
-\seq_new:N \g__filehook_input_file_seq
-\cs_new_protected:Npn \__filehook_file_push:
- {
- \seq_gpush:Nx \g__filehook_input_file_seq
- {
- { \CurrentFilePathUsed } { \CurrentFileUsed }
- { \CurrentFilePath } { \CurrentFile }
- }
- }
-\cs_new_protected:Npn \__filehook_file_pop:
- {
- \seq_gpop:NNTF \g__filehook_input_file_seq \l__filehook_internal_tl
- { \exp_after:wN \__filehook_file_pop_assign:nnnn \l__filehook_internal_tl }
- {
- \msg_error:nnn { hooks } { should-not-happen }
- { Tried~to~pop~from~an~empty~file~name~stack. }
- }
- }
-\cs_new_protected:Npn \__filehook_file_pop_assign:nnnn #1 #2 #3 #4
- {
- \tl_set:Nn \CurrentFilePathUsed {#1}
- \tl_set:Nn \CurrentFileUsed {#2}
- \tl_set:Nn \CurrentFilePath {#3}
- \tl_set:Nn \CurrentFile {#4}
- }
-\ExplSyntaxOff
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\InputIfFileExists}{Hook management (files)}%
-\let\InputIfFileExists\@undefined
-\DeclareRobustCommand \InputIfFileExists[2]{%
- \IfFileExists{#1}%
- {%
- \@expl@@@filehook@file@push@@
- \@filehook@set@CurrentFile
- \edef\reserved@a{\@filef@und
- \@expl@@@filehook@file@pop@assign@@nnnn
- {\CurrentFilePathUsed}%
- {\CurrentFileUsed}%
- {\CurrentFilePath}%
- {\CurrentFile}}%
- \expandafter\@swaptwoargs\expandafter
- {\reserved@a}%
- {%
- #2%
- \@addtofilelist{#1}%
- \UseHook{file/before}%
- \UseHook{file/before/\CurrentFile}%
- \@@input
- }%
- \UseHook{file/after/\CurrentFile}%
- \UseHook{file/after}%
- \@expl@@@filehook@file@pop@@
- }%
+\IncludeInRelease{2020/02/02}%
+ {\DeclareFontFamilySubstitution}{Provide family substitution}%
+\begingroup
+\nfss@catcodes
+\gdef\DeclareFontFamilySubstitution#1#2#3{%
+ \LoadFontDefinitionFile{#1}{#2}%
+ \LoadFontDefinitionFile{#1}{#3}%
+ \DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}%
+ \DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}%
+ \DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}%
+ \DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}%
+ \DeclareFontShape{#1}{#2}{m}{sw}{<->ssub * #3/m/sw}{}%
+ \DeclareFontShape{#1}{#2}{m}{scit}{<->ssub * #3/m/scit}{}%
+ \DeclareFontShape{#1}{#2}{m}{scsl}{<->ssub * #3/m/scsl}{}%
+ \DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/b/it}{}%
+ \DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/b/n}{}%
+ \DeclareFontShape{#1}{#2}{b}{scit}{<->ssub * #3/b/scit}{}%
+ \DeclareFontShape{#1}{#2}{b}{scsl}{<->ssub * #3/b/scsl}{}%
+ \DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/b/sc}{}%
+ \DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/b/sl}{}%
+ \DeclareFontShape{#1}{#2}{b}{sw}{<->ssub * #3/b/sw}{}%
+ \DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}%
+ \DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}%
+ \DeclareFontShape{#1}{#2}{bx}{scit}{<->ssub * #3/bx/scit}{}%
+ \DeclareFontShape{#1}{#2}{bx}{scsl}{<->ssub * #3/bx/scsl}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sw}{<->ssub * #3/bx/sw}{}%
}
-\EndIncludeInRelease
-\IncludeInRelease{2019/10/01}%
- {\InputIfFileExists}{Hook management (files)}%
-
-\DeclareRobustCommand \InputIfFileExists[2]{%
- \IfFileExists{#1}%
- {%
- \expandafter\@swaptwoargs\expandafter
- {\@filef@und}{#2\@addtofilelist{#1}\@@input}}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\InputIfFileExists}{Hook management (files)}%
-\long\def \InputIfFileExists#1#2{%
- \IfFileExists{#1}%
- {#2\@addtofilelist{#1}\@@input \@filef@und}}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\__filehook_subst_add:nn}{Declaring file substitution}%
-\ExplSyntaxOn
-\cs_new_protected:Npn \__filehook_subst_add:nn #1 #2
- {
- \group_begin:
- \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
- \int_set:Nn \tex_escapechar:D { -1 }
- \cs_gset:cpx { @file-subst@ \__filehook_subst_file_normalize:n {#1} }
- { \__filehook_subst_file_normalize:n {#2} }
- \group_end:
- }
-\cs_new_protected:Npn \__filehook_subst_remove:n #1
- {
- \group_begin:
- \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
- \int_set:Nn \tex_escapechar:D { -1 }
- \cs_undefine:c { @file-subst@ \__filehook_subst_file_normalize:n {#1} }
- \group_end:
- }
-\cs_new:Npn \__filehook_subst_file_normalize:n #1
- {
- \exp_after:wN \__filehook_subst_empty_name_chk:NN
- \cs:w \exp_after:wN \cs_end:
- \cs:w \__filehook_file_parse_full_name:nN {#1} \use_ii_iii:nnn \cs_end:
- }
-\cs_new:Npn \__filehook_subst_empty_name_chk:NN #1 #2
- { \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: }
-\cs_gset:Npn \use_ii_iii:nnn #1 #2 #3 {#2 #3}
-\ExplSyntaxOff
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\declare@file@substitution}{File substitution}%
-\ExplSyntaxOn
-\cs_new_eq:NN \declare@file@substitution \__filehook_subst_add:nn
-\cs_new_eq:NN \undeclare@file@substitution \__filehook_subst_remove:n
-\ExplSyntaxOff
+\endgroup
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\declare@file@substitution}{File substitution}%
+ {\DeclareFontFamilySubstitution}{Provide family substitution}%
-\let \declare@file@substitution \@undefined
-\let \undeclare@file@substitution \@undefined
-
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\set@curr@file}{Setting current file name}%
-\def\set@curr@file#1{%
- \begingroup
- \escapechar\m@ne
- \expandafter\def\csname\expandafter\endcsname
- \expandafter{\csname\endcsname}%
- \@expl@@@filehook@if@no@extension@@nTF{#1}%
- {\@tempswatrue}{\@tempswafalse}%
- \@kernel@make@file@csname\@curr@file
- \@expl@@@filehook@resolve@file@subst@@w {#1}%
- \@expl@@@filehook@if@file@replaced@@TF
- {\@kernel@make@file@csname\@curr@file@reqd
- \@expl@@@filehook@normalize@file@name@@w{#1}%
- \if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file@reqd \fi}%
- {\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file \fi
- \global\let\@curr@file@reqd\@curr@file}%
- \endgroup}
+\let\DeclareFontFamilySubstitution\@undefined
\EndIncludeInRelease
\IncludeInRelease{2019/10/01}%
- {\set@curr@file}{Setting current file name}%
-\def\set@curr@file#1{%
- \begingroup
- \escapechar\m@ne
- \xdef\@curr@file{%
- \expandafter\expandafter\expandafter\unquote@name
- \expandafter\expandafter\expandafter{%
- \expandafter\string
- \csname\@firstofone#1\@empty\endcsname}}%
- \endgroup
+ {\DeclareErrorFont}{No side effects please}%
+\def\DeclareErrorFont#1#2#3#4#5{%
+ \xdef\error@fontshape{%
+ \noexpand\expandafter\noexpand\split@name\noexpand\string
+ \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
+ \noexpand\@nil}%
+ \gdef\default@family{#2}%
+ \gdef\default@series{#3}%
+ \gdef\default@shape{#4}%
}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\set@curr@file}{Setting current file name}%
-\let\set@curr@file\@undefined
+ {\DeclareErrorFont}{No side effects please}%
+
+\def\DeclareErrorFont#1#2#3#4#5{%
+ \xdef\error@fontshape{%
+ \noexpand\expandafter\noexpand\split@name\noexpand\string
+ \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
+ \noexpand\@nil}%
+ \gdef\default@family{#2}%
+ \gdef\default@series{#3}%
+ \gdef\default@shape{#4}%
+ \global\let\f@family\default@family
+ \global\let\f@series\default@series
+ \global\let\f@shape\default@shape
+ \gdef\f@size{#5}%
+ \gdef\f@baselineskip{#5pt}%
+}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@kernel@make@file@csname}{Make file csname}%
-\def\@kernel@make@file@csname#1#2#3{%
- \xdef#1{\expandafter\@set@curr@file@aux
- \csname\expandafter#2\@firstofone#3\@nil\endcsname}}
-\def\@set@curr@file@aux#1{%
- \expandafter\ifx\csname\endcsname#1%
- .tex\else\string#1\fi}
-\def\@filehook@set@CurrentFile{%
- \@expl@@@filehook@set@curr@file@@nNN{\@curr@file}%
- \CurrentFileUsed\CurrentFilePathUsed
- \ifx\@curr@file@reqd\@curr@file
- \let\CurrentFile\CurrentFileUsed
- \let\CurrentFilePath\CurrentFilePathUsed
+\IncludeInRelease{2015/01/01}{\wrong@fontshape}%
+ {Font substitution in preamble}%
+\def\wrong@fontshape{%
+ \csname D@\f@encoding\endcsname % install defaults if in math
+ \edef\reserved@a{\csname\curr@fontshape\endcsname}%
+ \ifx\last@fontshape\reserved@a
+ \errmessage{Corrupted NFSS tables}%
+ \error@fontshape
\else
- \@expl@@@filehook@set@curr@file@@nNN{\@curr@file@reqd}%
- \CurrentFile\CurrentFilePath
- \fi}
+ \let\f@shape\default@shape
+ \expandafter\ifx\csname\curr@fontshape\endcsname\relax
+ \let\f@series\default@series
+ \expandafter
+ \ifx\csname\curr@fontshape\endcsname\relax
+ \let\f@family\default@family
+ \begingroup
+ \try@load@fontshape
+ \endgroup
+ \fi \fi
+ \fi
+ \@font@warning{Font shape `\expandafter\string\reserved@a'
+ \expandafter\@gobble\string\@undefined\MessageBreak
+ using `\curr@fontshape' instead\@wrong@font@char}%
+ \global\let\last@fontshape\reserved@a
+ \gdef\@defaultsubs{%
+ \@font@warning{Some font shapes were not available, defaults
+ substituted.\@gobbletwo}}%
+ \global\expandafter\expandafter\expandafter\let
+ \expandafter\reserved@a
+ \csname\curr@fontshape\endcsname
+ \xdef\font@name{%
+ \csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {@@_set_curr_file:nNN}{Set curr file}%
-\ExplSyntaxOn
-\cs_new_protected:Npn \__filehook_set_curr_file:nNN #1
- {
- \exp_args:Nf \__filehook_file_parse_full_name:nN {#1}
- \__filehook_set_curr_file_assign:nnnNN
- }
-\cs_new_protected:Npn \__filehook_set_curr_file_assign:nnnNN #1 #2 #3 #4 #5
- {
- \str_set:Nn #5 {#1}
- \str_set:Nn #4 {#2#3}
- }
-\ExplSyntaxOff
+\IncludeInRelease{0000/00/00}{\wrong@fontshape}%
+ {Font substitution in preamble}%
+\def\wrong@fontshape{%
+ \csname D@\f@encoding\endcsname
+ \edef\reserved@a{\csname\curr@fontshape\endcsname}%
+ \ifx\last@fontshape\reserved@a
+ \errmessage{Corrupted NFSS tables}%
+ \error@fontshape
+ \else
+ \let\f@shape\default@shape
+ \expandafter\ifx\csname\curr@fontshape\endcsname\relax
+ \let\f@series\default@series
+ \expandafter
+ \ifx\csname\curr@fontshape\endcsname\relax
+ \let\f@family\default@family
+ \fi \fi
+ \fi
+ \@font@warning{Font shape
+ `\expandafter\string\reserved@a'
+ \expandafter\@gobble\string\@undefined
+ \MessageBreak
+ using `\curr@fontshape' instead\@wrong@font@char}%
+ \global\let\last@fontshape\reserved@a
+ \gdef\@defaultsubs{%
+ \@font@warning{Some font shapes were not available,
+ defaults substituted.\@gobbletwo}}%
+ \global\expandafter\expandafter\expandafter\let
+ \expandafter\reserved@a
+ \csname\curr@fontshape\endcsname
+ \xdef\font@name{%
+ \csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\__filehook_resolve_file_subst:w}{Replace files detect loops}%
-\ExplSyntaxOn
-\cs_new:Npn \__filehook_resolve_file_subst:w #1 \@nil
- { \__filehook_file_parse_full_name:nN {#1} \__filehook_file_subst_begin:nnn }
-\cs_new:Npn \__filehook_normalize_file_name:w #1 \@nil
- { \__filehook_file_parse_full_name:nN {#1} \__filehook_file_name_compose:nnn }
-\cs_new:Npn \__filehook_file_name_compose:nnn #1 #2 #3
- { \tl_if_empty:nF {#1} { #1 / } #2#3 }
-\flag_new:n { __filehook_file_replaced }
-\cs_new:Npn \__filehook_if_file_replaced:TF #1 #2
- { \flag_if_raised:nTF { __filehook_file_replaced } {#1} {#2} }
-\cs_new:Npn \__filehook_file_subst_begin:nnn #1 #2 #3
- {
- \__filehook_file_subst_tortoise_hare:nn { #2#3 } { #2#3 }
- { \__filehook_file_name_compose:nnn {#1} {#2} {#3} }
- }
-\ExplSyntaxOff
+\IncludeInRelease{2017/01/01}{\showhyphens}%
+ {XeTeX support for \showhyphens}%
+\ifx\XeTeXcharclass\@undefined
+\DeclareRobustCommand\showhyphens[1]{%
+ \setbox0\vbox{%
+ \color@begingroup
+ \everypar{}%
+ \parfillskip\z@skip\hsize\maxdimen
+ \normalfont
+ \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1%
+ \color@endgroup}}
+\else
+\DeclareRobustCommand\showhyphens[1]{%
+ \setbox0\vbox{%
+ \usefont{TU}{lmr}{m}{n}%
+ \hsize 1sp %
+ \hbadness\@M
+ \hfuzz\maxdimen
+ \tracingonline\z@
+ \everypar={}%
+ \leftskip\z@skip
+ \rightskip\z@skip
+ \parfillskip\z@skip
+ \hyphenpenalty=-\@M
+ \pretolerance\m@ne
+ \interlinepenalty\z@
+ \clubpenalty\z@
+ \widowpenalty\z@
+ \brokenpenalty1127 %
+ \setbox\z@\hbox{}%
+ \noindent
+ \hskip\z@skip
+ #1%
+ \par
+ \loop
+ \@tempswafalse
+ \ifnum\lastnodetype=11\unskip\@tempswatrue\fi
+ \ifnum\lastnodetype=12\unkern\@tempswatrue\fi
+ \ifnum\lastnodetype=13 %
+ \count@\lastpenalty
+ \unpenalty\@tempswatrue
+ \fi
+ \ifnum\lastnodetype=\@ne
+ \setbox\tw@\lastbox\@tempswatrue
+ \setbox0\hbox{\unhbox\tw@\unskip\unskip\unpenalty
+ \ifnum\count@=1127 \else\ \fi
+ \unhbox0}%
+ \count@\z@
+ \fi
+ \if@tempswa
+ \repeat
+ \hbadness\z@
+ \hsize\maxdimen
+ \showboxdepth\z@
+ \tolerance\m@ne
+ \hyphenpenalty\z@
+ \noindent\unhbox\z@
+}}
+\fi
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\__filehook_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
-\ExplSyntaxOn
-\cs_new:Npn \__filehook_file_subst_tortoise_hare:nn #1 #2 #3
- {
- \cs_if_exist:cTF { @file-subst@ #2 }
- {
- \flag_if_raised:nF { __filehook_file_replaced }
- { \flag_raise:n { __filehook_file_replaced } }
- \cs_if_exist:cTF { @file-subst@ \use:c { @file-subst@ #2 } }
- {
- \__filehook_file_subst_loop:cc
- { @file-subst@ #1 }
- { @file-subst@ \use:c { @file-subst@ #2 } }
- }
- { \use:c { @file-subst@ #2 } }
- }
- { #3 }
- }
-\cs_new:Npn \__filehook_file_subst_loop:NN #1 #2
- {
- \token_if_eq_meaning:NNTF #1 #2
- {
- .tex
- \__filehook_file_subst_cycle_error:cN { @file-subst@ #1 } #1
- }
- { \__filehook_file_subst_tortoise_hare:nn {#1} {#2} {#2} }
- }
-\cs_generate_variant:Nn \__filehook_file_subst_loop:NN { cc }
-\cs_new:Npn \__filehook_file_subst_cycle_error:NN #1 #2
- {
- \__kernel_msg_expandable_error:nnff { kernel } { file-cycle }
- {#1} { \use:c { @file-subst@ #1 } }
- \token_if_eq_meaning:NNF #1 #2
- { \__filehook_file_subst_cycle_error:cN { @file-subst@ #1 } #2 }
- }
-\cs_generate_variant:Nn \__filehook_file_subst_cycle_error:NN { c }
-\__kernel_msg_new:nnn { kernel } { file-cycle }
- { File~loop!~#1~replaced~by~#2... }
-\ExplSyntaxOff
+\IncludeInRelease{0000/00/00}{\showhyphens}%
+ {XeTeX support for \showhyphens}%
+\gdef\showhyphens#1{%
+ \setbox0\vbox{%
+ \color@begingroup
+ \everypar{}%
+ \parfillskip\z@skip\hsize\maxdimen
+ \normalfont
+ \pretolerance\m@ne\tolerance\m@ne
+ \hbadness\z@\showboxdepth\z@\ #1%
+ \color@endgroup}}
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\disable@package@load}{Disable packages}%
-\def\disable@package@load#1#2{%
- \global\@namedef{@pkg-disable@#1.\@pkgextension}{#2}}
-\def\@disable@packageload@do#1#2{%
- \@ifundefined{@pkg-disable@#1}{#2}%
- {\@nameuse{@pkg-disable@#1}}}
-\def\reenable@package@load#1{%
- \global\expandafter\let
- \csname @pkg-disable@#1.\@pkgextension \endcsname \@undefined}
+%%% From File: ltfssaxes.dtx
+%% Copyright (C) 1999-2020 Frank Mittelbach
+\IncludeInRelease{2020/02/02}%
+ {\DeclareFontSeriesChangeRule}{Series change rules}%
+\def\DeclareFontSeriesChangeRule#1#2#3#4{%
+ \@namedef{series@#1@#2}{{#3}{#4}}}
+\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {bc}{c}{bc}{}
+\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc}
+\DeclareFontSeriesChangeRule {bc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {bc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc}
+\DeclareFontSeriesChangeRule {bc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {bc}{x}{bx}{}
+\DeclareFontSeriesChangeRule {bx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {bx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {}
+\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{sl}{slx} {}
+\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {bx}{x}{bx}{}
+\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {c}{b}{bc}{}
+\DeclareFontSeriesChangeRule {c}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {c}{el}{elc}{}
+\DeclareFontSeriesChangeRule {c}{l}{lc}{}
+\DeclareFontSeriesChangeRule {c}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {c}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {c}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {c}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<-----
+\DeclareFontSeriesChangeRule {ebc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc}
+\DeclareFontSeriesChangeRule {ebc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ebc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc}
+\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{}
+\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {ec}{b}{bec}{}
+\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{}
+\DeclareFontSeriesChangeRule {ec}{el}{elec}{}
+\DeclareFontSeriesChangeRule {ec}{l}{lec}{}
+\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{}
+\DeclareFontSeriesChangeRule {ec}{sl}{slec}{}
+\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{}
+\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{}
+\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<-----
+\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {sc}{b}{bsc}{}
+\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{}
+\DeclareFontSeriesChangeRule {sc}{el}{elsc}{}
+\DeclareFontSeriesChangeRule {sc}{l}{lsc}{}
+\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{}
+\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{}
+\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{}
+\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{}
+\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<-----
+\DeclareFontSeriesChangeRule {ebx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{}
+\DeclareFontSeriesChangeRule {ebx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ebx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{}
+\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{}
+\DeclareFontSeriesChangeRule {eb}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{}
+\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{}
+\DeclareFontSeriesChangeRule {eb}{x}{ebx}{}
+\DeclareFontSeriesChangeRule {elc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {elc}{c}{elc}{}
+\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {elc}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {elc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {elc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {elc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {elc}{x}{elx}{}
+\DeclareFontSeriesChangeRule {elx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {elx}{c}{elc}{}
+\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {elx}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {elx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {elx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {elx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {elx}{x}{elx}{}
+\DeclareFontSeriesChangeRule {el}{c}{elc}{}
+\DeclareFontSeriesChangeRule {el}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {el}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {el}{x}{elx}{}
+\DeclareFontSeriesChangeRule {lc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {lc}{c}{lc}{}
+\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {lc}{ec}{lec}{}
+\DeclareFontSeriesChangeRule {lc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {lc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{}
+\DeclareFontSeriesChangeRule {lc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {lc}{x}{lx}{}
+\DeclareFontSeriesChangeRule {lx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {lx}{c}{lc}{}
+\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {lx}{ec}{lec}{}
+\DeclareFontSeriesChangeRule {lx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {lx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{}
+\DeclareFontSeriesChangeRule {lx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {lx}{x}{lx}{}
+\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<-----
+\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<-----
+\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<-----
+\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<-----
+\DeclareFontSeriesChangeRule {sbc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{}
+\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc}
+\DeclareFontSeriesChangeRule {sbc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {sbc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc}
+\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{}
+\DeclareFontSeriesChangeRule {sbx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{}
+\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{}
+\DeclareFontSeriesChangeRule {sbx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {sbx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{}
+\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{}
+\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<-----
+\DeclareFontSeriesChangeRule {slc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {slc}{c}{slc}{}
+\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {slc}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {slc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {slc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {slc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {slc}{x}{slx}{}
+\DeclareFontSeriesChangeRule {slx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {slx}{c}{slc}{}
+\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {slx}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {slx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {slx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {slx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {slx}{x}{slx}{}
+\DeclareFontSeriesChangeRule {sl}{c}{slc}{}
+\DeclareFontSeriesChangeRule {sl}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {sl}{x}{slx}{}
+\DeclareFontSeriesChangeRule {ubc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ubc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ubc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{}
+\DeclareFontSeriesChangeRule {ubx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ubx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ubx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{}
+\DeclareFontSeriesChangeRule {ub}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ub}{x}{ubx}{}
+\DeclareFontSeriesChangeRule {ulc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc}
+\DeclareFontSeriesChangeRule {ulc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ulc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc}
+\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{}
+\DeclareFontSeriesChangeRule {ulx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{}
+\DeclareFontSeriesChangeRule {ulx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ulx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{}
+\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{}
+\DeclareFontSeriesChangeRule {ul}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{}
+\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{}
+\DeclareFontSeriesChangeRule {ul}{x}{ulx}{}
+\DeclareFontSeriesChangeRule {x}{b}{bx}{}
+\DeclareFontSeriesChangeRule {x}{c}{c}{}
+\DeclareFontSeriesChangeRule {x}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {x}{ec}{ec}{}
+\DeclareFontSeriesChangeRule {x}{el}{elx}{}
+\DeclareFontSeriesChangeRule {x}{l}{lx}{}
+\DeclareFontSeriesChangeRule {x}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {x}{sc}{sc}{}
+\DeclareFontSeriesChangeRule {x}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {x}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {x}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {bc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {bec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {bx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {b}{m?}{m}{}
+\DeclareFontSeriesChangeRule {c}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ebc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ebx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {eb}{m?}{m}{}
+\DeclareFontSeriesChangeRule {ec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {elc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {elec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {elx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {el}{m?}{m}{}
+\DeclareFontSeriesChangeRule {lc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {lec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {lx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {l}{m?}{m}{}
+\DeclareFontSeriesChangeRule {m}{m?}{m}{}
+\DeclareFontSeriesChangeRule {sbc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {sbx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {sb}{m?}{m}{}
+\DeclareFontSeriesChangeRule {sc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {slc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {slec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {slx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {sl}{m?}{m}{}
+\DeclareFontSeriesChangeRule {ubc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ubx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {ub}{m?}{ub}{}
+\DeclareFontSeriesChangeRule {ulc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ulx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {ul}{m?}{m}{}
+\DeclareFontSeriesChangeRule {x}{m?}{x}{}
+\DeclareFontSeriesChangeRule {bc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bec}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bx}{?m}{b}{}
+\DeclareFontSeriesChangeRule {b}{?m}{b}{}
+\DeclareFontSeriesChangeRule {c}{?m}{m}{}
+\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {eb}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ec}{?m}{m}{}
+\DeclareFontSeriesChangeRule {elc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elec}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elx}{?m}{el}{}
+\DeclareFontSeriesChangeRule {el}{?m}{el}{}
+\DeclareFontSeriesChangeRule {lc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lec}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lx}{?m}{l}{}
+\DeclareFontSeriesChangeRule {l}{?m}{l}{}
+\DeclareFontSeriesChangeRule {m}{?m}{m}{}
+\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sb}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
+\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
+\DeclareFontSeriesChangeRule {slc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slec}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slx}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {sl}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ub}{?m}{m}{}
+\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ul}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {x}{?m}{m}{}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\disable@package@load}{Disable packages}%
+ {\DeclareFontSeriesChangeRule}{Series change rules}%
+
+\let\DeclareFontSeriesChangeRule\@undefined
-\let\disable@package@load \@undefined
-\let\@disable@packageload@do\@undefined
-\let\reenable@package@load \@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}%
-\ExplSyntaxOn
-\cs_new_eq:NN \@expl@@@filehook@if@no@extension@@nTF
- \__filehook_if_no_extension:nTF
-\cs_new_eq:NN \@expl@@@filehook@set@curr@file@@nNN
- \__filehook_set_curr_file:nNN
-\cs_new_eq:NN \@expl@@@filehook@resolve@file@subst@@w
- \__filehook_resolve_file_subst:w
-\cs_new_eq:NN \@expl@@@filehook@normalize@file@name@@w
- \__filehook_normalize_file_name:w
-\cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF
- \__filehook_if_file_replaced:TF
-\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
- \__filehook_drop_extension:N
-\cs_new_eq:NN \@expl@@@filehook@file@push@@
- \__filehook_file_push:
-\cs_new_eq:NN \@expl@@@filehook@file@pop@@
- \__filehook_file_pop:
-\cs_new_eq:NN \@expl@@@filehook@file@pop@assign@@nnnn
- \__filehook_file_pop_assign:nnnn
-\ExplSyntaxOff
\EndIncludeInRelease
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% File: ltshipout.dtx (C) Copyright 2020 Frank Mittelbach, LaTeX Team
-%%
-%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0c}
-\providecommand\ltshipoutdate{2020/09/27}
-\IncludeInRelease{2020/10/01}%
- {\shipout}{Hook mangement (shipout)}%
-\ExplSyntaxOn
-\bool_new:N \g__shipout_debug_bool
-\cs_new_eq:NN \__shipout_debug:n \use_none:n
-\cs_new_protected:Npn \shipout_debug_on:
- {
- \bool_gset_true:N \g__shipout_debug_bool
- \__shipout_debug_gset:
- }
-\cs_new_protected:Npn \shipout_debug_off:
- {
- \bool_gset_false:N \g__shipout_debug_bool
- \__shipout_debug_gset:
- }
-\cs_new_protected:Npn \__shipout_debug_gset:
- {
- \cs_gset_protected:Npx \__shipout_debug:n ##1
- { \bool_if:NT \g__shipout_debug_bool {##1} }
- }
-\box_new:N \l_shipout_box
-\cs_set_eq:NN \ShipoutBox \l_shipout_box
-\cs_set_protected:Npn \__shipout_execute: {
- \tl_set:Nx \l__shipout_group_level_tl
- { \int_value:w \tex_currentgrouplevel:D }
- \tex_afterassignment:D \__shipout_execute_test_level:
- \tex_setbox:D \l_shipout_box
-}
-\cs_gset_eq:NN \shipout \__shipout_execute:
-\tl_new:N \l__shipout_group_level_tl
-\cs_new:Npn \__shipout_execute_test_level: {
- \int_compare:nNnT
- \l__shipout_group_level_tl < \tex_currentgrouplevel:D
- \tex_aftergroup:D
- \__shipout_execute_cont:
-}
-\cs_new:Npn \__shipout_execute_cont: {
- \box_if_empty:NTF \l_shipout_box
- { \PackageWarning{ltshipout}{Ignoring~ void~ shipout~ box} }
- {
- \bool_gset_false:N \g__shipout_discard_bool
- \cs_set_eq:NN \__shipout_saved_protect: \protect
- \set@typeset@protect
- \__shipout_get_box_size:N \l_shipout_box
- \hook_use:n {shipout/before}
- \int_gincr:N \g_shipout_totalpages_int
- \bool_if:NTF \g__shipout_discard_bool
- { \PackageInfo{ltshipout}{Completed~ page~ discarded}
- \bool_gset_false:N \g__shipout_discard_bool
- \tex_deadcycles:D \c_zero_int
- }
- { \box_if_empty:NTF \l_shipout_box
- { \PackageWarning{ltshipout}{
- Shipout~ box~ was~ voided~ by~ hook,\MessageBreak
- ignoring~ shipout~ box }
- }
- {
- \int_gincr:N \g_shipout_readonly_int
- \__shipout_debug:n {
- \typeout{Absolute~ page~ =~ \int_use:N \g_shipout_readonly_int
- \space (target:~ \@abspage@last)}
- }
- \__shipout_get_box_size:N \l_shipout_box
- \hook_if_empty:nF {shipout/foreground}
- { \__shipout_add_foreground_picture:n
- { \hook_use:n {shipout/foreground} } }
- \hook_if_empty:nF {shipout/background}
- { \__shipout_add_background_picture:n
- { \@kernel@before@shipout@background
- \hook_use:n {shipout/background} } }
- \__shipout_execute_firstpage_hook:
- \int_compare:nNnT \@abspage@last = \g_shipout_readonly_int
- { \hook_if_empty:nF {shipout/lastpage}
- { \__shipout_debug:n { \typeout{Executing~ lastpage~ hook~
- on~ page~ \int_use:N \g_shipout_readonly_int } }
- \__shipout_add_foreground_box:n { \UseHook{shipout/lastpage}
- \@kernel@after@shipout@lastpage }
- }
- \bool_gset_true:N \g__shipout_lastpage_handled_bool
- }
- \cs_set_eq:NN \protect \exp_not:N
- \tex_shipout:D \box_use:N \l_shipout_box
- }
- }
- \cs_set_eq:NN \protect \__shipout_saved_protect:
- }
-}
-\cs_new_eq:NN \__shipout_saved_protect: \protect
-\hook_new:n{shipout/before}
-\hook_new:n{shipout/foreground}
-\hook_new:n{shipout/background}
-\hook_new:n{shipout/firstpage}
-\hook_new:n{shipout/lastpage}
-\let\@kernel@after@shipout@lastpage\@empty
-\let\@kernel@before@shipout@background\@empty
-\cs_new:Npn \__shipout_execute_firstpage_hook: {
- \hook_if_empty:nF {shipout/firstpage}
- { \__shipout_add_background_box:n { \UseHook{shipout/firstpage} } }
- \cs_gset_eq:NN \__shipout_execute_firstpage_hook: \prg_do_nothing:
- \cs_gset:Npn \__shipout_add_firstpage_material:Nn ##1 ##2 {
- \@latex@warning{
- First~ page~ is~ already~ shipped~ out,~ ignoring\MessageBreak
- \string##1 }
- }
-}
-\bool_new:N \g__shipout_lastpage_handled_bool
-\cs_new:Npn \__shipout_add_firstpage_material:Nn #1#2 {
- \AddToHook{shipout/firstpage}{#2}
-}
-\cs_new:Npn \__shipout_get_box_size:N #1 {
- \dim_set:Nn \l_shipout_box_ht_dim { \box_ht:N #1 }
- \dim_set:Nn \l_shipout_box_dp_dim { \box_dp:N #1 }
- \dim_set:Nn \l_shipout_box_wd_dim { \box_wd:N #1 }
- \dim_set:Nn \l_shipout_box_ht_plus_dp_dim { \l_shipout_box_ht_dim +
- \l_shipout_box_dp_dim }
-}
-\dim_new:N \l_shipout_box_ht_dim
-\dim_new:N \l_shipout_box_dp_dim
-\dim_new:N \l_shipout_box_wd_dim
-\dim_new:N \l_shipout_box_ht_plus_dp_dim
-\bool_new:N \g__shipout_discard_bool
-\box_new:N \l__shipout_tmp_box
-\tl_new:N \l__shipout_saved_badness_tl
-\cs_new:Npn \__shipout_add_background_box:n #1
-{ \__shipout_get_box_size:N \l_shipout_box
- \box_if_vertical:NTF \l_shipout_box
- {
- \tl_set:Nx \l__shipout_saved_badness_tl
- { \vfuzz=\the\vfuzz\relax
- \vbadness=\the\vbadness\relax }
- \vfuzz=\c_max_dim
- \vbadness=\c_max_int
- \vbox_set_to_ht:Nnn \l_shipout_box \l_shipout_box_ht_plus_dp_dim
- {
- \hbox_set:Nn \l__shipout_tmp_box
- { \l__shipout_saved_badness_tl #1 }
- \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
- \skip_zero:N \baselineskip
- \skip_zero:N \lineskip
- \skip_zero:N \lineskiplimit
- \box_use:N \l__shipout_tmp_box
- \vbox_unpack:N \l_shipout_box
- \kern \c_zero_dim
- }
- \box_set_ht:Nn \l_shipout_box \l_shipout_box_ht_dim
- \box_set_dp:Nn \l_shipout_box \l_shipout_box_dp_dim
- \l__shipout_saved_badness_tl
- }
- {
- \box_if_horizontal:NT \l_shipout_box
- {
- \tl_set:Nx \l__shipout_saved_badness_tl
- { \hfuzz=\the\hfuzz\relax
- \hbadness=\the\hbadness\relax }
- \hfuzz=\c_max_dim
- \hbadness=\c_max_int
- \hbox_set_to_wd:Nnn \l_shipout_box \l_shipout_box_wd_dim
- {
- \hbox_set:Nn \l__shipout_tmp_box
- { \l__shipout_saved_badness_tl #1 }
- \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
- \box_move_up:nn
- \l_shipout_box_ht_dim
- { \box_use:N \l__shipout_tmp_box }
- \hbox_unpack:N \l_shipout_box
- }
- \l__shipout_saved_badness_tl
- }
- }
-}
-\cs_new:Npn \__shipout_add_foreground_box:n #1
-{
- \box_if_vertical:NTF \l_shipout_box
- {
- \tl_set:Nx \l__shipout_saved_badness_tl
- { \vfuzz=\the\vfuzz\relax
- \vbadness=\the\vbadness\relax }
- \vfuzz=\c_max_dim
- \vbadness=\c_max_int
- \vbox_set_to_ht:Nnn \l_shipout_box \l_shipout_box_ht_plus_dp_dim
- {
- \hbox_set:Nn \l__shipout_tmp_box
- { \l__shipout_saved_badness_tl #1 }
- \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
- \skip_zero:N \baselineskip
- \skip_zero:N \lineskip
- \skip_zero:N \lineskiplimit
- \vbox_unpack:N \l_shipout_box
- \kern -\l_shipout_box_ht_plus_dp_dim
- \box_use:N \l__shipout_tmp_box
- \kern \l_shipout_box_ht_plus_dp_dim
- }
- \l__shipout_saved_badness_tl
- \box_set_ht:Nn \l_shipout_box \l_shipout_box_ht_dim
- \box_set_dp:Nn \l_shipout_box \l_shipout_box_dp_dim
- }
- {
- \box_if_horizontal:NT \l_shipout_box
- {
- \tl_set:Nx \l__shipout_saved_badness_tl
- { \hfuzz=\the\hfuzz\relax
- \hbadness=\the\hbadness\relax }
- \hfuzz=\c_max_dim
- \hbadness=\c_max_int
- \hbox_set_to_wd:Nnn \l_shipout_box \l_shipout_box_wd_dim
- {
- \hbox_unpack:N \l_shipout_box
- \kern -\box_wd:N \l_shipout_box
- \hbox_set:Nn \l__shipout_tmp_box
- { \l__shipout_saved_badness_tl #1 }
- \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
- \box_move_up:nn { \box_ht:N \l_shipout_box }
- { \box_use:N \l__shipout_tmp_box }
- \kern \box_wd:N \l_shipout_box
- }%
- \l__shipout_saved_badness_tl
- }
- }
-}
-\cs_new:Npn \__shipout_init_page_origins: {
- \tl_const:Nx \c__shipout_horigin_tl
- {
- \cs_if_exist_use:NTF \pdfvariable { horigin }
- { \cs_if_exist_use:NF \pdfhorigin { 1in } }
- }
- \tl_const:Nx \c__shipout_vorigin_tl
- {
- \cs_if_exist_use:NTF \pdfvariable { vorigin }
- { \cs_if_exist_use:NF \pdfvorigin { 1in } }
- }
- \cs_gset_eq:NN \__shipout_init_page_origins: \prg_do_nothing:
-}
-\cs_new:Npn \__shipout_picture_overlay:n #1 {
- \__shipout_init_page_origins:
- \kern -\c__shipout_horigin_tl \scan_stop:
- \vbox_to_zero:n {
- \kern -\c__shipout_vorigin_tl \scan_stop:
- \unitlength 1pt \scan_stop:
- \hbox_set_to_wd:Nnn \l__shipout_tmp_box \c_zero_dim
- { \ignorespaces #1 \hss }
- \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
- \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
- \box_use:N \l__shipout_tmp_box
- \tex_vss:D
- }
-}
-\cs_new:Npn \__shipout_add_background_picture:n #1 {
- \__shipout_add_background_box:n { \__shipout_picture_overlay:n {#1} }
-}
-\cs_new:Npn \__shipout_add_foreground_picture:n #1 {
- \__shipout_add_foreground_box:n { \__shipout_picture_overlay:n {#1} }
-}
-\cs_new_protected:Npn \shipout_discard: {
- \bool_gset_true:N \g__shipout_discard_bool
-}
-\int_new:N \g_shipout_readonly_int
-\cs_new_eq:NN \ReadonlyShipoutCounter \g_shipout_readonly_int
-\int_new:N \g_shipout_totalpages_int
-\cs_new_eq:NN \c@totalpages \g_shipout_totalpages_int
-\cs_new:Npn \thetotalpages { \arabic{totalpages} }
-\xdef\@abspage@last{\number\maxdimen}
-\g@addto@macro \@kernel@after@enddocument {
- \int_compare:nNnT \@abspage@last = \maxdimen
- {
- \xdef\@abspage@last{ \int_eval:n {\g_shipout_readonly_int + 1} }
- }
-}
-\g@addto@macro \@kernel@after@enddocument@afterlastpage {
- \int_compare:nNnF \g_shipout_readonly_int = 0
- {
- \if@filesw
- \iow_now:Nx \@auxout {
- \gdef\string\@abspage@last {\int_use:N \g_shipout_readonly_int}}
- \fi
- \bool_if:NF \g__shipout_lastpage_handled_bool
- {
- \bool_lazy_and:nnF
- { \hook_if_empty_p:n {shipout/lastpage} }
- { \tl_if_empty_p:N \@kernel@after@shipout@lastpage }
- {
- \tex_shipout:D\vbox to\textheight
- {
- \hbox:n { \UseHook{shipout/lastpage}
- \@kernel@after@shipout@lastpage }
- \__shipout_excuse_extra_page:
- \null
- }
- \cs_gset_eq:NN \@extra@page@added \relax
- }
- }
- }
-}
-\cs_new:Npn \__shipout_excuse_extra_page: {
- \vfil
- \begin{center}
- \bfseries Temporary~ page!
- \end{center}
- \LaTeX{}~ was~ unable~ to~ guess~ the~ total~ number~ of~ pages~
- correctly.~ ~ As~ there~ was~ some~ unprocessed~ data~ that~
- should~ have~ been~ added~ to~ the~ final~ page~ this~ extra~
- page~ has~ been~ added~ to~ receive~ it.
- \par
- If~ you~ rerun~ the~ document~ (without~ altering~ it)~ this~
- surplus~ page~ will~ go~ away,~ because~ \LaTeX{}~ now~ knows~
- how~ many~ pages~ to~ expect~ for~ this~ document.
- \vfil
-}
-\def\PreviousTotalPages{0}
-\g@addto@macro\@kernel@before@begindocument
- {\ifnum\@abspage@last<\maxdimen
- \xdef\PreviousTotalPages{\@abspage@last}\fi}
-\cs_new_eq:NN \DiscardShipoutBox \shipout_discard:
-\cs_new_protected:Npn \AtBeginDvi {\__shipout_add_firstpage_material:Nn \AtBeginDvi}
-\cs_new_eq:NN \DebugShipoutsOn \shipout_debug_on:
-\cs_new_eq:NN \DebugShipoutsOff \shipout_debug_off:
-\cs_set_eq:NN \@expl@@@shipout@add@firstpage@material@@Nn
- \__shipout_add_firstpage_material:Nn
-\cs_set_eq:NN \@expl@@@shipout@add@background@box@@n
- \__shipout_add_background_box:n
-\cs_set_eq:NN \@expl@@@shipout@add@foreground@box@@n
- \__shipout_add_foreground_box:n
-\cs_set_eq:NN \@expl@@@shipout@add@background@picture@@n
- \__shipout_add_background_picture:n
-\cs_set_eq:NN \@expl@@@shipout@add@foreground@picture@@n
- \__shipout_add_foreground_picture:n
-\ExplSyntaxOff
+\IncludeInRelease{2021/05/01}%
+ {\fontseries}{delay fontseries update}%
+\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@series{#1}}}
+\let\delayed@f@adjustment\@empty
+\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue
+ \expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@series{#1}}}
+\newif\if@forced@series
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\shipout}{The hook management (shipout)}%
-\expandafter\let\expandafter\shipout\csname tex_shipout:D\endcsname
-
-\let \ShipoutBox\@undefined
-\let \ReadonlyShipoutCounter \@undefined
-\let \c@totalpages \@undefined
-\let \thetotalpages \@undefined
-
-\let \DiscardShipoutBox \@undefined
-\let \DebugShipoutsOn \@undefined
-\let \DebugShipoutsOff \@undefined
-
-\DeclareRobustCommand \AtBeginDvi [1]{%
- \global \setbox \@begindvibox
- \vbox{\unvbox \@begindvibox #1}%
-}
-
-\let \AtBeginShipout \@undefined
-\let \AtBeginShipoutNext \@undefined
-
-\let \AtBeginShipoutFirst \@undefined
-
-\let \ShipoutBoxHeight \@undefined
-\let \ShipoutBoxDepth \@undefined
-\let \ShipoutBoxWidth \@undefined
-
-\let \AtBeginShipoutDiscard \@undefined
-
-\let \AtBeginShipoutAddToBox \@undefined
-\let \AtBeginShipoutAddToBoxForeground \@undefined
-\let \AtBeginShipoutUpperLeft \@undefined
-\let \AtBeginShipoutUpperLeftForeground \@undefined
-
+\IncludeInRelease{2020/02/02}%
+ {\fontseries}{delay fontseries update}%
-\let \AtEndDvi \@undefined
+\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
+\let\delayed@f@adjustment\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\AtEndDvi}{atenddvi emulation}%
-\ExplSyntaxOn
-\cs_new_protected:Npn \AtEndDvi {\AddToHook{shipout/lastpage}}
-\ExplSyntaxOff
-\disable@package@load{atenddvi}
- {\PackageWarning{atenddvi}
- {Functionality of this package is already\MessageBreak
- provided by LaTeX.\MessageBreak\MessageBreak
- It is there no longer necessary to load it\MessageBreak
- and you can safely remove it.\MessageBreak
- Found on}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\AtEndDvi}{atenddvi emulation}%
-\let \AtEndDvi \@undefined
-\EndIncludeInRelease
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% From File: ltoutput.dtx
-\IncludeInRelease{2015/10/01}%
- {\bx@ZZ}{Extended float list}%
-\let\@elt\newinsert
-\ifx\numexpr\@undefined\else
-\def\reserved@a{%
- \@elt\bx@S\@elt\bx@T\@elt\bx@U\@elt\bx@V
- \@elt\bx@W\@elt\bx@X\@elt\bx@Y\@elt\bx@Z
- \@elt\bx@AA\@elt\bx@BB\@elt\bx@CC\@elt\bx@DD\@elt\bx@EE
- \@elt\bx@FF\@elt\bx@GG\@elt\bx@HH\@elt\bx@II\@elt\bx@JJ
- \@elt\bx@KK\@elt\bx@LL\@elt\bx@MM\@elt\bx@NN
- \@elt\bx@OO\@elt\bx@PP\@elt\bx@QQ\@elt\bx@RR
- \@elt\bx@SS\@elt\bx@TT\@elt\bx@UU\@elt\bx@VV
- \@elt\bx@WW\@elt\bx@XX\@elt\bx@YY\@elt\bx@ZZ}
-\reserved@a
-\def\@elt{\noexpand\@elt\noexpand}
-\edef\@freelist{\@freelist\reserved@a}
+\ifx\@forced@seriestrue\@undefined \else
+ \expandafter\newif\csname if@forced@series\endcsname
\fi
-\let\reserved@a\relax
-\let\@elt\relax
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\bx@ZZ}{Extended float list}%
-\def\@freelist{%
- \@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E
- \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J
- \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N
- \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R}
- \insc@unt=234
-\EndIncludeInRelease
-\IncludeInRelease{2017/04/15}%
- {\newpage}{Check depth of page}%
-\def \newpage {%
- \if@noskipsec
- \ifx \@nodocument\relax
- \leavevmode
- \global \@noskipsecfalse
- \fi
- \fi
- \if@inlabel
- \leavevmode
- \global \@inlabelfalse
- \fi
- \if@nobreak \@nobreakfalse \everypar{}\fi
- \par
- \ifdim\prevdepth>\z@
- \vskip -%
- \ifdim\prevdepth>\maxdepth
- \maxdepth
- \else
- \prevdepth
- \fi
- \fi
- \vfil
- \penalty -\@M}
+
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\newpage}{Check depth of page}%
-\def \newpage {%
- \if@noskipsec
- \ifx \@nodocument\relax
- \leavevmode
- \global \@noskipsecfalse
- \fi
- \fi
- \if@inlabel
- \leavevmode
- \global \@inlabelfalse
- \fi
- \if@nobreak \@nobreakfalse \everypar{}\fi
- \par
- \vfil
- \penalty -\@M}
+ {\fontseries}{delay fontseries update}%
+
+\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
+\let\fontseriesforce\@undefined
+
\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@testwrongwidth}{float order in 2-column}%
-\def\@testwrongwidth #1{%
- \ifdim\dp#1=\f@depth
+\IncludeInRelease{2020/02/02}%
+ {\merge@font@series}{Merge series values}%
+\def\merge@font@series#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@series@
+ \csname series@\f@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\merge@font@series@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \set@target@series{#2}%
\else
- \global\@testtrue
- \fi}%
-\let\f@depth\z@
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@testwrongwidth}{float order in 2-column}%
-\let\@testwrongwidth\@undefined
-\let\f@depth\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\@doclearpage}%
- {float order in 2-column}%
-\def \@doclearpage {%
- \ifvoid\footins
- \ifvbox\@kludgeins
- {\setbox \@tempboxa \box \@kludgeins}%
- \fi
- \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
- \setbox\@tempboxa\box\@cclv
- \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
- \global \let \@toplist \@empty
- \global \let \@botlist \@empty
- \global \@colroom \@colht
- \ifx \@currlist\@empty
- \else
- \@latexerr{Float(s) lost}\@ehb
- \global \let \@currlist \@empty
- \fi
- \@makefcolumn\@deferlist
- \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
- \if@twocolumn
- \if@firstcolumn
- \xdef\@deferlist{\@dbltoplist\@deferlist}%
- \global \let \@dbltoplist \@empty
- \global \@colht \textheight
- \begingroup
- \@dblfloatplacement
- \@makefcolumn\@deferlist
- \@whilesw\if@fcolmade \fi{\@outputpage
- \@makefcolumn\@deferlist}%
- \endgroup
- \else
- \vbox{}\clearpage
- \fi
- \fi
- \ifx\@deferlist\@empty \else\clearpage \fi
- \else
- \setbox\@cclv\vbox{\box\@cclv\vfil}%
- \@makecol\@opcol
- \clearpage
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\@doclearpage}%
- {float order in 2-column}%
-\def \@doclearpage {%
- \ifvoid\footins
- \ifvbox\@kludgeins
- {\setbox \@tempboxa \box \@kludgeins}%
- \fi
- \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
- \setbox\@tempboxa\box\@cclv
- \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
- \global \let \@toplist \@empty
- \global \let \@botlist \@empty
- \global \@colroom \@colht
- \ifx \@currlist\@empty
+ \edef\reserved@a{\f@encoding /\f@family /#1/\f@shape}%
+ \ifcsname \reserved@a \endcsname
+ \set@target@series{#1}%
+ \else
+ \ifcsname \f@encoding /\f@family /#2/\f@shape \endcsname
+ \set@target@series{#2}%
+ \@font@shape@subst@warning
\else
- \@latexerr{Float(s) lost}\@ehb
- \global \let \@currlist \@empty
- \fi
- \@makefcolumn\@deferlist
- \@whilesw\if@fcolmade \fi
- {\@opcol\@makefcolumn\@deferlist}%
- \if@twocolumn
- \if@firstcolumn
- \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}%
- \global \let \@dbltoplist \@empty
- \global \@colht \textheight
- \begingroup
- \@dblfloatplacement
- \@makefcolumn\@dbldeferlist
- \@whilesw\if@fcolmade \fi
- {\@outputpage\@makefcolumn\@dbldeferlist}%
- \endgroup
- \else
- \vbox{}\clearpage
- \fi
+ \set@target@series{#3}%
+ \@font@shape@subst@warning
\fi
- \else
- \setbox\@cclv\vbox{\box\@cclv\vfil}%
- \@makecol\@opcol
- \clearpage
- \fi
- }%
-\EndIncludeInRelease
-\IncludeInRelease{2017/04/15}%
- {\@outputpage}{Reset language for hyphenation}%
-\def\@outputpage{%
-\begingroup
- \let \protect \noexpand
- \language\document@default@language
- \@resetactivechars
- \global\let\@@if@newlist\if@newlist
- \global\@newlistfalse
- \@parboxrestore
- \shipout \vbox{%
- \set@typeset@protect
- \aftergroup \endgroup
- \aftergroup \set@typeset@protect
- \if@specialpage
- \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
- \fi
- \if@twoside
- \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
- \let\@themargin\oddsidemargin
- \else \let\@thehead\@evenhead
- \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
\fi
\fi
- \reset@font
- \normalsize
- \normalsfcodes
- \let\label\@gobble
- \let\index\@gobble
- \let\glossary\@gobble
- \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
- \@begindvi
- \vskip \topmargin
- \moveright\@themargin \vbox {%
- \setbox\@tempboxa \vbox to\headheight{%
- \vfil
- \color@hbox
- \normalcolor
- \hb@xt@\textwidth{\@thehead}%
- \color@endbox
- }%
- \dp\@tempboxa \z@
- \box\@tempboxa
- \vskip \headsep
- \box\@outputbox
- \baselineskip \footskip
- \color@hbox
- \normalcolor
- \hb@xt@\textwidth{\@thefoot}%
- \color@endbox
- }%
- }%
- \global\let\if@newlist\@@if@newlist
- \global \@colht \textheight
- \stepcounter{page}%
- \let\firstmark\botmark
}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@outputpage}{Reset language for hyphenation}%
-\def\@outputpage{%
-\begingroup
- \let \protect \noexpand
- \@resetactivechars
- \global\let\@@if@newlist\if@newlist
- \global\@newlistfalse
- \@parboxrestore
- \shipout \vbox{%
- \set@typeset@protect
- \aftergroup \endgroup
- \aftergroup \set@typeset@protect
- \if@specialpage
- \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
- \fi
- \if@twoside
- \ifodd\count\z@
- \let\@thehead\@oddhead \let\@thefoot\@oddfoot
- \let\@themargin\oddsidemargin
- \else \let\@thehead\@evenhead
- \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
- \fi
- \fi
- \reset@font
- \normalsize
- \normalsfcodes
- \let\label\@gobble
- \let\index\@gobble
- \let\glossary\@gobble
- \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
- \@begindvi
- \vskip \topmargin
- \moveright\@themargin \vbox {%
- \setbox\@tempboxa \vbox to\headheight{%
- \vfil
- \color@hbox
- \normalcolor
- \hb@xt@\textwidth{\@thehead}%
- \color@endbox
- }%
- \dp\@tempboxa \z@
- \box\@tempboxa
- \vskip \headsep
- \box\@outputbox
- \baselineskip \footskip
- \color@hbox
- \normalcolor
- \hb@xt@\textwidth{\@thefoot}%
- \color@endbox
- }%
- }%
- \global\let\if@newlist\@@if@newlist
- \global \@colht \textheight
- \stepcounter{page}%
- \let\firstmark\botmark
+\def\@font@shape@subst@warning{%
+ \edef\reserved@b{\curr@fontshape}%
+ \ifx\reserved@a\reserved@b \else
+ \@font@warning{Font shape `\reserved@a' undefined\MessageBreak
+ using `\reserved@b' instead}%
+ \fi
}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@startdblcolumn}{float order in 2-column}%
-\def \@startdblcolumn {%
- \@tryfcolumn \@deferlist
- \if@fcolmade
- \else
- \begingroup
- \let \reserved@b \@deferlist
- \global \let \@deferlist \@empty
- \let \@elt \@sdblcolelt
- \reserved@b
- \endgroup
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@startdblcolumn}{float order in 2-column}%
-\def \@startdblcolumn {%
-% \global \@colht \textheight
- \@tryfcolumn \@dbldeferlist
- \if@fcolmade
- \else
- \begingroup
- \let \reserved@b \@dbldeferlist
- \global \let \@dbldeferlist \@empty
- \let \@elt \@sdblcolelt
- \reserved@b
- \endgroup
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\@xtryfc}%
- {float order in 2-column}%
-\def\@xtryfc #1{%
- \@next\reserved@a\@trylist{}{}%
- \@currtype \count #1%
- \divide\@currtype\@xxxii
- \multiply\@currtype\@xxxii
- \@bitor \@currtype \@failedlist
- \@testfp #1%
- \@testwrongwidth #1%
- \ifdim \ht #1>\@colht
- \@testtrue
- \fi
- \if@test
- \@cons\@failedlist #1%
- \else
- \@ytryfc #1%
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\@xtryfc}%
- {float order in 2-column}%
-\def\@xtryfc #1{%
- \@next\reserved@a\@trylist{}{}%
- \@currtype \count #1%
- \divide\@currtype\@xxxii
- \multiply\@currtype\@xxxii
- \@bitor \@currtype \@failedlist
- \@testfp #1%
- \ifdim \ht #1>\@colht
- \@testtrue
- \fi
- \if@test
- \@cons\@failedlist #1%
- \else
- \@ytryfc #1%
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{@ztryfc}%
- {float order in 2-column}%
-\def\@ztryfc #1{%
- \@tempcnta\count #1%
- \divide\@tempcnta\@xxxii
- \multiply\@tempcnta\@xxxii
- \@bitor \@tempcnta {\@failedlist \@flfail}%
- \@testfp #1%
- \@testwrongwidth #1%
- \@tempdimb\@tempdima
- \advance\@tempdimb\ht #1%
- \advance\@tempdimb\@fpsep
- \ifdim \@tempdimb >\@colht
- \@testtrue
- \fi
- \if@test
- \@cons\@flfail #1%
+\def\merge@font@series@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@series@without@substitution@
+ \csname series@\f@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+\def\merge@font@series@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \set@target@series{#2}%
\else
- \@cons\@flsucceed #1%
- \@tempdima\@tempdimb
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{@ztryfc}%
- {float order in 2-column}%
-\def\@ztryfc #1{%
- \@tempcnta \count#1%
- \divide\@tempcnta\@xxxii
- \multiply\@tempcnta\@xxxii
- \@bitor \@tempcnta {\@failedlist \@flfail}%
- \@testfp #1%
- \@tempdimb\@tempdima
- \advance\@tempdimb \ht#1%
- \advance\@tempdimb\@fpsep
- \ifdim \@tempdimb >\@colht
- \@testtrue
+ \set@target@series{#1}%
\fi
- \if@test
- \@cons\@flfail #1%
- \else
- \@cons\@flsucceed #1%
- \@tempdima\@tempdimb
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@addtocurcol}{float order in 2-column}%
-\def \@addtocurcol {%
- \@insertfalse
- \@setfloattypecounts
- \ifnum \@fpstype=8
- \else
- \ifnum \@fpstype=24
- \else
- \@flsettextmin
- \advance \@textmin \@textfloatsheight
- \@reqcolroom \@pageht
- \ifdim \@textmin>\@reqcolroom
- \@reqcolroom \@textmin
- \fi
- \advance \@reqcolroom \ht\@currbox
- \ifdim \@colroom>\@reqcolroom
- \@flsetnum \@colnum
- \ifnum \@colnum>\z@
- \@bitor\@currtype\@deferlist
- \@testwrongwidth\@currbox
- \if@test
- \else
- \@bitor\@currtype\@botlist
- \if@test
- \@addtobot
- \else
- \ifodd \count\@currbox
- \advance \@reqcolroom \intextsep
- \ifdim \@colroom>\@reqcolroom
- \global \advance \@colnum \m@ne
- \global \advance \@textfloatsheight \ht\@currbox
- \global \advance \@textfloatsheight 2\intextsep
- \@cons \@midlist \@currbox
- \if@nobreak
- \nobreak
- \@nobreakfalse
- \everypar{}%
- \else
- \addpenalty \interlinepenalty
- \fi
- \vskip \intextsep
- \box\@currbox
- \penalty\interlinepenalty
- \vskip\intextsep
- \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
- \outputpenalty \z@
- \@inserttrue
- \fi
- \fi
- \if@insert
- \else
- \@addtotoporbot
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@resethfps
- \@cons\@deferlist\@currbox
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@addtocurcol}{float order in 2-column}%
-\def \@addtocurcol {%
- \@insertfalse
- \@setfloattypecounts
- \ifnum \@fpstype=8
- \else
- \ifnum \@fpstype=24
- \else
- \@flsettextmin
- \advance \@textmin \@textfloatsheight
- \@reqcolroom \@pageht
- \ifdim \@textmin>\@reqcolroom
- \@reqcolroom \@textmin
- \fi
- \advance \@reqcolroom \ht\@currbox
- \ifdim \@colroom>\@reqcolroom
- \@flsetnum \@colnum
- \ifnum \@colnum>\z@
- \@bitor\@currtype\@deferlist
- \if@test
- \else
- \@bitor\@currtype\@botlist
- \if@test
- \@addtobot
- \else
- \ifodd \count\@currbox
- \advance \@reqcolroom \intextsep
- \ifdim \@colroom>\@reqcolroom
- \global \advance \@colnum \m@ne
- \global \advance
- \@textfloatsheight\ht\@currbox
- \global \advance
- \@textfloatsheight 2\intextsep
- \@cons \@midlist \@currbox
- \if@nobreak
- \nobreak
- \@nobreakfalse
- \everypar{}%
- \else
- \addpenalty\interlinepenalty
- \fi
- \vskip \intextsep
- \box\@currbox
- \penalty\interlinepenalty
- \vskip\intextsep
- \ifnum\outputpenalty
- <-\@Mii \vskip
- -\parskip\fi
- \outputpenalty \z@
- \@inserttrue
- \fi
- \fi
- \if@insert
- \else
- \@addtobot
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@resethfps
- \@cons\@deferlist\@currbox
- \fi
- }%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}
- {\@addtonextcol}{float order in 2-column}%
-\def\@addtonextcol{%
- \begingroup
- \@insertfalse
- \@setfloattypecounts
- \ifnum \@fpstype=8
- \else
- \ifnum \@fpstype=24
- \else
- \@flsettextmin
- \@reqcolroom \ht\@currbox
- \advance \@reqcolroom \@textmin
- \ifdim \@colroom>\@reqcolroom
- \@flsetnum \@colnum
- \ifnum\@colnum>\z@
- \@bitor\@currtype\@deferlist
- \@testwrongwidth\@currbox
- \if@test
- \else
- \@addtotoporbot
- \fi
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@cons\@deferlist\@currbox
- \fi
- \endgroup
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@addtonextcol}{float order in 2-column}%
-\def\@addtonextcol{%
- \begingroup
- \@insertfalse
- \@setfloattypecounts
- \ifnum \@fpstype=8
- \else
- \ifnum \@fpstype=24
- \else
- \@flsettextmin
- \@reqcolroom \ht\@currbox
- \advance \@reqcolroom \@textmin
- \ifdim \@colroom>\@reqcolroom
- \@flsetnum \@colnum
- \ifnum\@colnum>\z@
- \@bitor\@currtype\@deferlist
- \if@test
- \else
- \@addtotoporbot
- \fi
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@cons\@deferlist\@currbox
- \fi
- \endgroup
-}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@addtodblcol}{float order in 2-column}%
-\def\@addtodblcol{%
- \begingroup
- \@insertfalse
- \@setfloattypecounts
- \@getfpsbit \tw@
- \ifodd\@tempcnta
- \@flsetnum \@dbltopnum
- \ifnum \@dbltopnum>\z@
- \@tempswafalse
- \ifdim \@dbltoproom>\ht\@currbox
- \@tempswatrue
- \else
- \ifnum \@fpstype<\sixt@@n
- \advance \@dbltoproom \@textmin
- \ifdim \@dbltoproom>\ht\@currbox
- \@tempswatrue
- \fi
- \advance \@dbltoproom -\@textmin
- \fi
- \fi
- \if@tempswa
- \@bitor \@currtype \@deferlist
- \@testwrongwidth\@currbox
- \if@test
- \else
- \@tempdima -\ht\@currbox
- \advance\@tempdima
- -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
- \dblfloatsep \fi
- \global \advance \@dbltoproom \@tempdima
- \global \advance \@colht \@tempdima
- \global \advance \@dbltopnum \m@ne
- \@cons \@dbltoplist \@currbox
- \@inserttrue
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@cons\@deferlist\@currbox
- \fi
- \endgroup
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@addtodblcol}{float order in 2-column}%
-\def\@addtodblcol{%
- \begingroup
- \@insertfalse
- \@setfloattypecounts
- \@getfpsbit \tw@
- \ifodd\@tempcnta
- \@flsetnum \@dbltopnum
- \ifnum \@dbltopnum>\z@
- \@tempswafalse
- \ifdim \@dbltoproom>\ht\@currbox
- \@tempswatrue
- \else
- \ifnum \@fpstype<\sixt@@n
- \advance \@dbltoproom \@textmin
- \ifdim \@dbltoproom>\ht\@currbox
- \@tempswatrue
- \fi
- \advance \@dbltoproom -\@textmin
- \fi
- \fi
- \if@tempswa
- \@bitor \@currtype \@dbldeferlist
- \if@test
- \else
- \@tempdima -\ht\@currbox
- \advance\@tempdima
- -\ifx \@dbltoplist\@empty
- \dbltextfloatsep
- \else \dblfloatsep \fi
- \global \advance \@dbltoproom \@tempdima
- \global \advance \@colht \@tempdima
- \global \advance \@dbltopnum \m@ne
- \@cons \@dbltoplist \@currbox
- \@inserttrue
- \fi
- \fi
- \fi
- \fi
- \if@insert
- \else
- \@cons\@dbldeferlist\@currbox
- \fi
- \endgroup
-}%
-\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}%
- {\@makefcolumn}{negative height floats}%
-\def\@makefcolumn #1{%
- \begingroup
- \@fpmin -\maxdimen
- \let \@testfp \@gobble
- \@tryfcolumn #1%
- \endgroup
}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@makefcolumn}{negative height floats}%
-\def\@makefcolumn #1{%
+\let\delayed@merge@font@series\merge@font@series@without@substitution
+\def\maybe@load@fontshape{%
\begingroup
- \@fpmin \z@
- \let \@testfp \@gobble
- \@tryfcolumn #1%
- \endgroup
+ \let \typeout \@font@info
+ \try@load@fontshape
+ \endgroup}
+\def\set@target@series#1{%
+ \edef\f@series{#1}%
+ \series@maybe@drop@one@m\f@series\f@series
}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@outputdblcol}{2 column marks}%
-\def\@outputdblcol{%
- \if@firstcolumn
- \global\@firstcolumnfalse
- \global\setbox\@leftcolumn\copy\@outputbox
- \splitmaxdepth\maxdimen
- \vbadness\maxdimen
- \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
- \setbox\@outputbox\vsplit\@outputbox to\maxdimen
- \toks@\expandafter{\topmark}%
- \xdef\@firstcoltopmark{\the\toks@}%
- \toks@\expandafter{\splitfirstmark}%
- \xdef\@firstcolfirstmark{\the\toks@}%
- \ifx\@firstcolfirstmark\@empty
- \global\let\@setmarks\relax
- \else
- \gdef\@setmarks{%
- \let\firstmark\@firstcolfirstmark
- \let\topmark\@firstcoltopmark}%
- \fi
- \else
- \global\@firstcolumntrue
- \setbox\@outputbox\vbox{%
- \hb@xt@\textwidth{%
- \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
- \hfil
- {\normalcolor\vrule \@width\columnseprule}%
- \hfil
- \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
- \@combinedblfloats
- \@setmarks
- \@outputpage
- \begingroup
- \@dblfloatplacement
- \@startdblcolumn
- \@whilesw\if@fcolmade \fi{\@outputpage
- \@startdblcolumn}%
- \endgroup
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@outputdblcol}{2 column marks}%
-\def\@outputdblcol{%
- \if@firstcolumn
- \global \@firstcolumnfalse
- \global \setbox\@leftcolumn \box\@outputbox
+\def\series@maybe@drop@one@m#1{%
+ \expandafter\series@maybe@drop@one@m@x\expandafter{#1}}
+
+\def\series@maybe@drop@one@m@x#1#2{%
+ \def\in@@##1,#1,{}%
+ \series@check@toks\expandafter{\in@@
+ ,ulm,elm,lm,slm,mm,sbm,bm,ebm,ubm,muc,mec,mc,msc,msx,mx,mex,mux,{}{},#1,}%
+ \edef\in@@{\the\series@check@toks}%
+ \ifx\in@@\@empty
+ \edef#2{#1}%
\else
- \global \@firstcolumntrue
- \setbox\@outputbox \vbox {%
- \hb@xt@\textwidth {%
- \hb@xt@\columnwidth {%
- \box\@leftcolumn \hss}%
- \hfil
- {\normalcolor\vrule
- \@width\columnseprule}%
- \hfil
- \hb@xt@\columnwidth {%
- \box\@outputbox \hss}%
- }%
- }%
- \@combinedblfloats
- \@outputpage
- \begingroup
- \@dblfloatplacement
- \@startdblcolumn
- \@whilesw\if@fcolmade \fi
- {\@outputpage
- \@startdblcolumn}%
- \endgroup
+ \edef#2{\expandafter\series@drop@one@m #1m\series@drop@one@m}%
\fi
-}%
-\EndIncludeInRelease
-%%% From File: ltclass.dtx
-
-\IncludeInRelease{2020/10/01}{\@pushfilename}%
- {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
-\def\@pushfilename{%
- \@expl@@@hook@curr@name@push@@n{}%
- \@expl@push@filename@@
- \xdef\@currnamestack{%
- {\@currname}%
- {\@currext}%
- {\the\catcode`\@}%
- \@currnamestack}%
- \@expl@push@filename@aux@@}
+}
+\newtoks\series@check@toks
+\def\series@drop@one@m#1m#2m#3\series@drop@one@m{%
+ #1#2%
+}
\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\merge@font@series}{Merge series values}%
-\IncludeInRelease{2020/02/02}{\@pushfilename}%
- {Add \@expl@push@filename@@}%
-\def\@pushfilename{%
- \@expl@push@filename@@
- \xdef\@currnamestack{%
- {\@currname}%
- {\@currext}%
- {\the\catcode`\@}%
- \@currnamestack}%
- \@expl@push@filename@aux@@}
-\EndIncludeInRelease
+\let\merge@font@series\@undefined
+\let\merge@font@series@\@undefined
+\let\@font@shape@subst@warning\@undefined
+\let\merge@font@series@without@substitution\@undefined
+\let\merge@font@series@without@substitution@\@undefined
+\let\delayed@merge@font@series\@undefined
+\let\maybe@load@fontshape\@undefined
+\let\set@target@series\@undefined
+\let\series@maybe@drop@one@m\@undefined
+\let\series@drop@one@m\@undefined
-\IncludeInRelease{0000/00/00}{\@pushfilename}%
- {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
-\def\@pushfilename{%
- \xdef\@currnamestack{%
- {\@currname}%
- {\@currext}%
- {\the\catcode`\@}%
- \@currnamestack}}
\EndIncludeInRelease
-\@onlypreamble\@pushfilename
-\IncludeInRelease{2020/10/01}{\@popfilename}%
- {Add \@expl@pop@filename@@}%
-\def\@popfilename{\@expl@@@hook@curr@name@pop@@
- \expandafter\@p@pfilename\@currnamestack\@nil
- \@expl@pop@filename@@}
+\IncludeInRelease{2020/02/02}%
+ {\DeclareFontShapeChangeRule}{Font shape change rules}%
+\def\DeclareFontShapeChangeRule #1#2#3#4{%
+ \@namedef{shape@#1@#2}{{#3}{#4}}}
+\DeclareRobustCommand\ulcshape
+ {\not@math@alphabet\ulcshape\relax
+ \fontshape\ulcdefault\selectfont}
+\let\ulcdefault\@undefined % for rollback
+\newcommand\ulcdefault{ulc}
+\DeclareRobustCommand\swshape
+ {\not@math@alphabet\swshape\relax
+ \fontshape\swdefault\selectfont}
+\let\swdefault\@undefined % for rollback
+\newcommand\swdefault{sw}
+\DeclareRobustCommand\sscshape
+ {\not@math@alphabet\sscshape\relax
+ \fontshape\sscdefault\selectfont}
+\let\sscdefault\@undefined % for rollback
+\newcommand\sscdefault{ssc}
+\DeclareFontShapeChangeRule {n}{it} {it} {sl}
+\DeclareFontShapeChangeRule {n}{sl} {sl} {it}
+\DeclareFontShapeChangeRule {n}{ulc} {n} {}
+\DeclareFontShapeChangeRule {n}{up} {n} {}
+\DeclareFontShapeChangeRule {it}{sl} {sl} {it}
+\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl}
+\DeclareFontShapeChangeRule {it}{ulc} {it} {}
+\DeclareFontShapeChangeRule {it}{up} {n} {}
+\DeclareFontShapeChangeRule {sl}{it} {it} {sl}
+\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit}
+\DeclareFontShapeChangeRule {sl}{ulc} {sl} {}
+\DeclareFontShapeChangeRule {sl}{up} {n} {}
+\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl}
+\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit}
+\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw}
+\DeclareFontShapeChangeRule {sc}{ulc} {n} {}
+\DeclareFontShapeChangeRule {sc}{up} {n} {}
+\DeclareFontShapeChangeRule {scit}{it} {scit} {}
+\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit}
+\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit?
+\DeclareFontShapeChangeRule {scit}{sc} {scit} {}
+\DeclareFontShapeChangeRule {scit}{ulc} {it} {}
+\DeclareFontShapeChangeRule {scit}{up} {sc} {}
+\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl}
+\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {}
+\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl?
+\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {}
+\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {}
+\DeclareFontShapeChangeRule {scsl}{up} {sc} {}
+\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw}
+\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {}
+\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {}
+\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {}
+\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {}
+\DeclareFontShapeChangeRule {scsw}{up} {sc} {}
+\DeclareFontShapeChangeRule {sw}{sc} {scsw} {}
+\DeclareFontShapeChangeRule {sw}{ulc} {sw} {}
+\DeclareFontShapeChangeRule {sw}{up} {n} {}
\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\DeclareFontShapeChangeRule}{Font shape change rules}%
-\IncludeInRelease{2020/02/02}{\@popfilename}%
- {Add \@expl@push@filename@@}%
-\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil
- \@expl@pop@filename@@}
-\EndIncludeInRelease
+\let\DeclareFontShapeChangeRule\@undefined
+\let\ulcshape\@undefined
+\let\ulcdefault\@undefined
+\let\swshape\@undefined
+\let\swdefault\@undefined
+\let\sscshape\@undefined
+\let\sscdefault\@undefined
-\IncludeInRelease{0000/00/00}{\@popfilename}%
- {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
-\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil}
-\EndIncludeInRelease
-\@onlypreamble\@popfilename
-\IncludeInRelease{2020/10/01}%
- {\IfFormatAtLeastTF}{Test format date}%
-\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\let\IfPackageAtLeastTF\@ifpackagelater
-\let\IfClassAtLeastTF\@ifclasslater
-\@onlypreamble\IfFormatAtLeastTF
-\@onlypreamble\IfPackageAtLeastTF
-\@onlypreamble\IfClassAtLeastTF
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\IfFormatAtLeastTF}{Test format date}%
-\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
-\let\IfPackageAtLeastTF\@ifpackagelater
-\let\IfClassAtLeastTF\@ifclasslater
\EndIncludeInRelease
-\IncludeInRelease{2018/04/01}%
- {\@ifl@t@r}{Guard against bad input}%
-\def\@ifl@t@r#1#2{%
- \ifnum\expandafter\@parse@version@#1//00\@nil<%
- \expandafter\@parse@version@#2//00\@nil
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi}
-\def\@parse@version@#1{\@parse@version0#1}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@ifl@t@r}{Guard against bad input}%
-\def\@ifl@t@r#1#2{%
- \ifnum\expandafter\@parse@version#1//00\@nil<%
- \expandafter\@parse@version#2//00\@nil
- \expandafter\@secondoftwo
- \else
- \expandafter\@firstoftwo
- \fi}
-\let\@parse@version@\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}%
- {\@if@pti@ns}{Spaces in option clash check}%
-\def\@if@pti@ns#1#2{%
- \let\reserved@a\@firstoftwo
- \edef\reserved@b{\zap@space#2 \@empty}%
- \@for\reserved@b:=\reserved@b\do{%
- \ifx\reserved@b\@empty
- \else
- \expandafter\in@\expandafter{\expandafter,\reserved@b,}{,#1,}%
- \ifin@
- \else
- \let\reserved@a\@secondoftwo
- \fi
- \fi
- }%
- \reserved@a}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@if@pti@ns}{Spaces in option clash check}%
-\def\@if@pti@ns#1#2{%
- \let\reserved@a\@firstoftwo
- \@for\reserved@b:=#2\do{%
- \ifx\reserved@b\@empty
- \else
- \expandafter\in@\expandafter
- {\expandafter,\reserved@b,}{,#1,}%
- \ifin@
- \else
- \let\reserved@a\@secondoftwo
- \fi
- \fi
- }%
- \reserved@a}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@pr@videpackage}{Allow for package subsitution}%
-\def\@pr@videpackage[#1]{%
- \expandafter\protected@xdef % <-- protected...
- \csname ver@\@currname.\@currext\endcsname{#1}% Loaded package
- \expandafter\let
- \csname ver@\@currpkg@reqd\expandafter\endcsname % Requested package
- \csname ver@\@currname.\@currext\endcsname
- \ifx\@currext\@clsextension
- \typeout{Document Class: \@gtempa\space#1}%
- \else
- \protected@wlog{Package: \@gtempa\space#1}% <--- protected
- \fi}
-\long\def\protected@wlog#1{\begingroup
- \set@display@protect
- \immediate \write \m@ne {#1}\endgroup }
+\IncludeInRelease{2021/05/01}%
+ {\fontshape}{Font shape change}%
+\DeclareRobustCommand\fontshape[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\delayed@merge@font@shape{#1}}}
+\DeclareRobustCommand\fontshapeforce[1]
+ {\expandafter\def\expandafter\delayed@f@adjustment\expandafter
+ {\delayed@f@adjustment\edef\f@shape{#1}}}
\EndIncludeInRelease
\IncludeInRelease{2020/02/02}%
- {\@pr@videpackage}{Protection for package info}%
+ {\fontshape}{Font shape change}%
-\def\@pr@videpackage[#1]{%
- \expandafter\protected@xdef % <-- protected...
- \csname ver@\@currname.\@currext\endcsname{#1}%
-\ifx\@currext\@clsextension
- \typeout{Document Class: \@gtempa\space#1}%
- \else
- \protected@wlog{Package: \@gtempa\space#1}% <--- protected
- \fi}
+\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
+\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@pr@videpackage}{Protection for package info}%
+ {\fontshape}{Font shape change}%
-\def\@pr@videpackage[#1]{%
- \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
- \ifx\@currext\@clsextension
- \typeout{Document Class: \@gtempa\space#1}%
- \else
- \wlog{Package: \@gtempa\space#1}%
- \fi}
-\let\protected@wlog\@undefined
+\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
+\let\fontshapeforce\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}{\@pass@ptions}
- {Add file replacement in \@pass@ptions}%
-\def\@pass@ptions#1#2#3{%
- \@expl@@@filehook@set@curr@file@@nNN
- {\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}%
- \reserved@a\reserved@b
- \expandafter\xdef\csname opt@\reserved@a\endcsname{%
- \@ifundefined{opt@\reserved@a}\@empty
- {\csname opt@\reserved@a\endcsname,}%
- \zap@space#2 \@empty}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\@pass@ptions}
- {\@pass@ptions}%
-\def\@pass@ptions#1#2#3{%
- \expandafter\xdef\csname opt@#3.#1\endcsname{%
- \@ifundefined{opt@#3.#1}\@empty
- {\csname opt@#3.#1\endcsname,}%
- \zap@space#2 \@empty}}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@process@pti@ns}{Unused options issue}%
-\def\@process@pti@ns{%
- \@for\CurrentOption:=\@curroptions\do{%
- \@ifundefined{ds@\CurrentOption}%
- {\@use@ption
- \default@ds}%
- \@use@ption}%
- \@for\CurrentOption:=\@declaredoptions\do{%
- \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
- \let\CurrentOption\@empty
- \let\@fileswith@pti@ns\@@fileswith@pti@ns
- \AtEndOfPackage{\expandafter\let
- \csname unprocessedoptions-\@currname.\@currext\endcsname
- \relax}}
-\@onlypreamble\@process@pti@ns
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@process@pti@ns}{Unused options issue}%
-\def\@process@pti@ns{%
- \@for\CurrentOption:=\@curroptions\do{%
- \@ifundefined{ds@\CurrentOption}%
- {\@use@ption
- \default@ds}%
- \@use@ption}%
- \@for\CurrentOption:=\@declaredoptions\do{%
- \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
- \let\CurrentOption\@empty
- \let\@fileswith@pti@ns\@@fileswith@pti@ns
- \AtEndOfPackage{\let\@unprocessedoptions\relax}}
-\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}%
- {\ExecuteOptions}{Spaces in \ExecuteOptions}%
-\def\ExecuteOptions#1{%
- \edef\@fortmp{\zap@space#1 \@empty}%
- \def\reserved@a##1\@nil{%
- \@for\CurrentOption:=\@fortmp\do
- {\csname ds@\CurrentOption\endcsname}%
- \edef\CurrentOption{##1}}%
- \expandafter\reserved@a\CurrentOption\@nil}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\ExecuteOptions}{Spaces in \ExecuteOptions}%
-\def\ExecuteOptions#1{%
- \def\reserved@a##1\@nil{%
- \@for\CurrentOption:=#1\do
- {\csname ds@\CurrentOption\endcsname}%
- \edef\CurrentOption{##1}}%
- \expandafter\reserved@a\CurrentOption\@nil}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\RequirePackageWithOptions}{Unused options issue}%
-\def\RequirePackageWithOptions{%
- \AtEndOfPackage{\expandafter\let
- \csname unprocessedoptions-\@currname.\@currext\endcsname
- \relax}%
- \@loadwithoptions\@pkgextension\RequirePackage}
-\@onlypreamble\RequirePackageWithOptions
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\RequirePackageWithOptions}{Unused options issue}%
+\IncludeInRelease{2020/02/02}%
+ {\merge@font@shape}{Font shape change rules}%
+\def\merge@font@shape#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@shape@
+ \csname shape@\f@shape @#1\endcsname
+ {#1}%
+ \@nil
+}
-\def\RequirePackageWithOptions{%
- \AtEndOfPackage{\let\@unprocessedoptions\relax}%
- \@loadwithoptions\@pkgextension\RequirePackage}
-\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}%
- {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}%
-\def\@fileswith@pti@ns#1[#2]#3[#4]{%
- \ifx#1\@clsextension
- \ifx\@classoptionslist\relax
- \xdef\@classoptionslist{\zap@space#2 \@empty}%
- \def\reserved@a{%
- \@onefilewithoptions#3[{#2}][{#4}]#1%
- \@documentclasshook}%
- \else
- \def\reserved@a{%
- \@onefilewithoptions#3[{#2}][{#4}]#1}%
- \fi
+\def\merge@font@shape@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \edef\f@shape{#2}%
\else
- \def\reserved@b##1,{%
- \ifx\@nnil##1\relax\else
- \ifx\@nnil##1\@nnil\else
- \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
- \noexpand\@pkgextension
- \fi
- \expandafter\reserved@b
- \fi}%
- \edef\reserved@a{\zap@space#3 \@empty}%
- \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nnil,}%
- \fi
- \reserved@a}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}%
-\def\@fileswith@pti@ns#1[#2]#3[#4]{%
- \ifx#1\@clsextension
- \ifx\@classoptionslist\relax
- \xdef\@classoptionslist{\zap@space#2 \@empty}%
- \def\reserved@a{%
- \@onefilewithoptions#3[{#2}][{#4}]#1%
- \@documentclasshook}%
+ \edef\reserved@a{\f@encoding /\f@family /\f@series/#1}%
+ \ifcsname \reserved@a\endcsname
+ \edef\f@shape{#1}%
\else
- \def\reserved@a{%
- \@onefilewithoptions#3[{#2}][{#4}]#1}%
+ \ifcsname \f@encoding /\f@family /\f@series/#2\endcsname
+ \edef\f@shape{#2}%
+ \@font@shape@subst@warning
+ \else
+ \edef\f@shape{#3}%
+ \@font@shape@subst@warning
+ \fi
\fi
- \else
- \def\reserved@b##1,{%
- \ifx\@nil##1\relax\else
- \ifx\relax##1\relax\else
- \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
- \noexpand\@pkgextension
- \fi
- \expandafter\reserved@b
- \fi}%
- \edef\reserved@a{\zap@space#3 \@empty}%
- \edef\reserved@a{%
- \expandafter\reserved@b\reserved@a,\@nil,}%
\fi
- \reserved@a}
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@onefilewithoptions}{Hooks and unused options issue}%
-\def\@onefilewithoptions#1[#2][#3]#4{%
- \@pushfilename
- \xdef\@currname{#1}%
- \global\let\@currext#4%
- \@ifl@aded\@currext\@currname
- {\@if@ptions\@currext{\@currname}{#2}{}%
- {\@latex@error
- {Option clash for \@cls@pkg\space \@currname}%
- {The package \@currname\space has already been loaded
- with options:\MessageBreak
- \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak
- There has now been an attempt to load it
- with options\MessageBreak
- \space\space[#2]\MessageBreak
- Adding the global options:\MessageBreak
- \space\space
- \@ptionlist{\@currname.\@currext},#2\MessageBreak
- to your \noexpand\documentclass declaration may fix this.%
- \MessageBreak
- Try typing \space <return> \space to proceed.}}%
- \@firstofone}%
- {\makeatletter
- \@reset@ptions
- \IfFileExists{\@currname.\@currext}{}%
- {\@missing@onefilewithoptions{#2}}%
- \ifx\@currname\@empty
- \expandafter\@gobble
- \else
- \@disable@packageload@do{\@currname.\@currext}%
- {\@expl@@@filehook@file@push@@
- \set@curr@file{\@currname.\@currext}%
- \@filehook@set@CurrentFile
- \expandafter\@swaptwoargs\expandafter
- {\expandafter{\@currpkg@reqd}}%
- {% <
- \edef\@currpkg@reqd{\@currname.\@currext}%
- \ifx\CurrentFile\CurrentFileUsed
- \else
- \filename@parse\@curr@file
- \edef\@currname{\string@makeletter\filename@base}%
- \edef\@currext{\string@makeletter\filename@ext}%
- \fi
- \load@onefile@withoptions{#2}%
- \def\@currpkg@reqd%{\@currpkg@reqd}
- }% >
- \@expl@@@filehook@file@pop@@}%
- \expandafter\@firstofone
- \fi}%
- {\@ifl@ter\@currext{\@currname}{#3}{}%
- {\@latex@warning@no@line
- {You have requested,\on@line,
- version\MessageBreak
- `#3' of \@cls@pkg\space \@currname,\MessageBreak
- but only version\MessageBreak
- `\csname ver@\@currname.\@currext\endcsname'\MessageBreak
- is available}}%
- \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi}%
- \@popfilename
- \@reset@ptions}
-\let\@currpkg@reqd\@empty
-\@onlypreamble\@onefilewithoptions
-\let\@unprocessedoptions\@undefined
-\def\@missing@onefilewithoptions#1{%
- \@missingfileerror\@currname\@currext
- \xdef\@currname{\@missingfile@area\@missingfile@base}%
- \global\let\@currext\@missingfile@ext}
-\def\load@onefile@withoptions#1{%
- \let\CurrentOption\@empty
- \@reset@ptions
- \def\reserved@a{%
- \@pass@ptions\@currext{#1}{\@currname}%
- \global\expandafter
- \let\csname ver@\@currname.\@currext\endcsname\@empty
- \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
- \ifx\@currext\@pkgextension
- \UseHook{package/before}%
- \UseHook{package/before/\@currname}%
- \else
- \ifx\@currext\@clsextension
- \UseHook{class/before}%
- \UseHook{class/before/\@currname}%
- \fi
- \fi
- \InputIfFileExists{\@currpkg@reqd}{}%
- {\@latex@error
- {The \@cls@pkg\space\@currpkg@reqd\space failed to load.}\@ehd}%
- \expandafter\let\csname unprocessedoptions-\@currname.\@currext\endcsname
- \@@unprocessedoptions
- \csname\@currname.\@currext-h@@k\endcsname
- \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
- \@undefined
- \ifx\@unprocessedoptions\relax
- \let\@unprocessedoptions\@undefined
- \else
- \csname unprocessedoptions-\@currname.\@currext\endcsname
- \fi
- \expandafter\let
- \csname unprocessedoptions-\@currname.\@currext\endcsname
- \@undefined
- \ifx\@currext\@pkgextension
- \UseHook{package/after/\@currname}%
- \UseHook{package/after}%
- \else
- \ifx\@currext\@clsextension
- \UseHook{class/after/\@currname}%
- \UseHook{class/after}%
- \fi
- \fi}%
- \@ifl@aded\@currext\@currname{}{\reserved@a}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@onefilewithoptions}{Hooks and unused options issue}%
-
-\def\load@onefilewithoptions#1[#2][#3]#4{%
- \@pushfilename
- \xdef\@currname{#1}%
- \global\let\@currext#4%
- \let\CurrentOption\@empty
- \@reset@ptions
- \makeatletter
- \def\reserved@a{%
- \@ifl@aded\@currext{#1}%
- {\@if@ptions\@currext{#1}{#2}{}%
- {\@latex@error
- {Option clash for \@cls@pkg\space #1}%
- {The package #1 has already been loaded
- with options:\MessageBreak
- \space\space[\@ptionlist{#1.\@currext}]\MessageBreak
- There has now been an attempt to load it
- with options\MessageBreak
- \space\space[#2]\MessageBreak
- Adding the global options:\MessageBreak
- \space\space
- \@ptionlist{#1.\@currext},#2\MessageBreak
- to your \noexpand\documentclass declaration may fix this.%
- \MessageBreak
- Try typing \space <return> \space to proceed.}}}%
- {\@pass@ptions\@currext{#2}{#1}%
- \global\expandafter
- \let\csname ver@\@currname.\@currext\endcsname\@empty
- \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
- \InputIfFileExists
- {\@currname.\@currext}%
- {}%
- {\@missingfileerror\@currname\@currext}%
- \let\@unprocessedoptions\@@unprocessedoptions
- \csname\@currname.\@currext-h@@k\endcsname
- \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
- \@undefined
- \@unprocessedoptions}%
- \@ifl@ter\@currext{#1}{#3}{}%
- {\@latex@warning@no@line
- {You have requested,\on@line,
- version\MessageBreak
- `#3' of \@cls@pkg\space #1,\MessageBreak
- but only version\MessageBreak
- `\csname ver@#1.\@currext\endcsname'\MessageBreak
- is available}}%
- \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
- \@popfilename
- \@reset@ptions}%
- \reserved@a}
-
-\let \load@onefile@withoptions \@undefined
-\let \@missing@onefilewithoptions \@undefined
-
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\AtBeginDocument}{Use hook system}%
-\DeclareRobustCommand\AtBeginDocument{\AddToHook{begindocument}}
-\DeclareRobustCommand\AtEndDocument {\AddToHook{enddocument}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\AtBeginDocument}{Use hook system}%
-
-\DeclareRobustCommand\AtBeginDocument{\g@addto@macro\@begindocumenthook}
-\DeclareRobustCommand\AtEndDocument{\g@addto@macro\@enddocumenthook}
-
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\filec@ntents}{Define \q@curr@file directly (gh/220)}%
-\def\filecontents{\@tempswatrue\@fileswtrue
- \@ifnextchar[\filec@ntents@opt\filec@ntents
}
-\@namedef{filecontents*}{\@tempswafalse\@fileswtrue
- \@ifnextchar[\filec@ntents@opt\filec@ntents
-}
-\def\filec@ntents@opt[#1]{%
- \edef\@fortmp{\zap@space#1 \@empty}%
- \@for\reserved@a:=\@fortmp\do{%
- \ifcsname filec@ntents@\reserved@a\endcsname
- \csname filec@ntents@\reserved@a\endcsname
- \else
- \@latex@error{Unknown filecontents option \reserved@a}%
- {Valid options are force (or overwrite), nosearch, noheader}%
- \fi}%
- \filec@ntents
-}
-\let\filec@ntents@force\@fileswfalse
-\let\filec@ntents@overwrite\@fileswfalse % alternative name
-\let\filec@ntents@noheader\@tempswafalse
-\def\filec@ntents@nosearch{%
- \let\filec@ntents@checkdir\@currdir
- \def\filec@ntents@where{in current directory}}
-\let\filec@ntents@checkdir\@empty
-\def\filec@ntents@where{exists on the system}
-\begingroup%
-\@tempcnta=1
-\loop
- \catcode\@tempcnta=12 %
- \advance\@tempcnta\@ne %
-\ifnum\@tempcnta<32 %
-\repeat %
-\catcode`\*=11 %
-\catcode`\^^M\active%
-\catcode`\^^L\active\let^^L\relax%
-\catcode`\^^I\active%
-\gdef\filec@ntents#1{%
- \set@curr@file{\filec@ntents@checkdir#1}%
- \edef\q@curr@file{"\@curr@file"}%
- \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi%
- \openin\@inputcheck\q@curr@file \space %
- \ifeof\@inputcheck%
- \@latex@warning@no@line%
- {Writing file `\@currdir\@curr@file'}%
- \ch@ck7\reserved@c\write\relax%
- \immediate\openout\reserved@c\q@curr@file\relax%
- \else%
- \if@filesw%
- \@latex@warning@no@line%
- {File `\@curr@file' already \filec@ntents@where.\MessageBreak%
- Not generating it from this source}%
- \let\write\@gobbletwo%
- \let\closeout\@gobble%
- \else%
- \edef\reserved@a{#1}%
- \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
- \edef\reserved@b{\detokenize\expandafter{\jobname}}%
- \ifx\reserved@a\reserved@b%
- \@fileswtrue%
- \else%
- \edef\reserved@b{\reserved@b\detokenize{.tex}}%
- \ifx\reserved@a\reserved@b
- \@fileswtrue%
- \fi%
- \fi%
- \ch@ck7\reserved@c\write\relax%
- \if@filesw% % Foul ... trying to overwrite \jobname!
- \@latex@error{Trying to overwrite `\jobname.tex'}{You can't %
- write to the file you are reading from!\MessageBreak%
- Data is written to screen instead.}%
- \else%
- \@latex@warning@no@line%
- {Writing or overwriting file `\@currdir\@curr@file'}%
- \immediate\openout\reserved@c\q@curr@file\relax%
- \fi%
- \fi%
- \fi%
- \closein\@inputcheck%
- \if@tempswa%
- \immediate\write\reserved@c{%
- \@percentchar\@percentchar\space%
- \expandafter\@gobble\string\LaTeX2e file `\@curr@file'^^J%
- \@percentchar\@percentchar\space generated by the %
- `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
- \@percentchar\@percentchar\space from source `\jobname' on %
- \number\year/\two@digits\month/\two@digits\day.^^J%
- \@percentchar\@percentchar}%
- \fi%
- \let\do\@makeother\dospecials%
- \count@ 128\relax%
- \loop%
- \catcode\count@ 11\relax%
- \advance\count@ \@ne%
- \ifnum\count@<\@cclvi%
- \repeat%
- \edef\E{\@backslashchar end\string{\@currenvir\string}}%
- \edef\reserved@b{%
- \def\noexpand\reserved@b%
- ####1\E####2\E####3\relax}%
- \reserved@b{%
- \ifx\relax##3\relax%
- \immediate\write\reserved@c{##1}%
- \else%
- \edef^^M{\noexpand\end{\@currenvir}}%
- \ifx\relax##1\relax%
- \else%
- \@latex@warning{Writing text `##1' before %
- \string\end{\@currenvir}\MessageBreak as last line of \@curr@file}%
- \immediate\write\reserved@c{##1}%
- \fi%
- \ifx\relax##2\relax%
- \else%
- \@latex@warning{%
- Ignoring text `##2' after \string\end{\@currenvir}}%
- \fi%
- \fi%
- ^^M}%
- \catcode`\^^L\active%
- \let\L\@undefined%
- \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
- \catcode`\^^I\active%
- \let\I\@undefined%
- \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
- \catcode`\^^M\active%
- \edef^^M##1^^M{%
- \noexpand\reserved@b##1\E\E\relax}}%
-\endgroup%
-\EndIncludeInRelease
-\IncludeInRelease{2019/10/01}%
- {\filec@ntents}{Spaces in file names + optional arg}%
-\def\filecontents{\@tempswatrue\@fileswtrue
- \@ifnextchar[\filec@ntents@opt\filec@ntents
+\def\merge@font@shape@without@substitution#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@shape@without@substitution@
+ \csname shape@\f@shape @#1\endcsname
+ {#1}%
+ \@nil
}
-\@namedef{filecontents*}{\@tempswafalse\@fileswtrue
- \@ifnextchar[\filec@ntents@opt\filec@ntents
+\def\merge@font@shape@without@substitution@#1#2#3\@nil{%
+ \def\reserved@a{#3}%
+ \ifx\reserved@a\@empty
+ \edef\f@shape{#2}%
+ \else
+ \edef\f@shape{#1}%
+ \fi
}
-\def\filec@ntents@opt[#1]{%
- \edef\@fortmp{\zap@space#1 \@empty}%
- \@for\reserved@a:=\@fortmp\do{%
- \ifcsname filec@ntents@\reserved@a\endcsname
- \csname filec@ntents@\reserved@a\endcsname
- \else
- \@latex@error{Unknown filecontents option \reserved@a}%
- {Valid options are force (or overwrite), nosearch, noheader}%
- \fi}%
- \filec@ntents
+\let\delayed@merge@font@shape\merge@font@shape@without@substitution
+\protected\def\normalshape
+ {\not@math@alphabet\normalshape\relax
+ \fontshape\shapedefault\selectfont}%
+\def\reinstall@nfss@defs{%
+ \protected\def\upshape
+ {\not@math@alphabet\upshape\relax
+ \fontshape\updefault\selectfont}%
+ \protected\def\slshape
+ {\not@math@alphabet\slshape\relax
+ \fontshape\sldefault\selectfont}%
+ \protected\def\scshape
+ {\not@math@alphabet\scshape\relax
+ \fontshape\scdefault\selectfont}%
+ \protected\def\itshape
+ {\not@math@alphabet\itshape\mathit
+ \fontshape\itdefault\selectfont}%
+ \protected\def\ulcshape
+ {\not@math@alphabet\ulcshape\relax
+ \fontshape{ulc}\selectfont}%
+ \protected\def\swshape
+ {\not@math@alphabet\swshape\relax
+ \fontshape\swdefault\selectfont}%
+ \protected\def\sscshape
+ {\not@math@alphabet\sscshape\relax
+ \fontshape\sscdefault\selectfont}%
}
-\let\filec@ntents@force\@fileswfalse
-\let\filec@ntents@overwrite\@fileswfalse % alternative name
-\let\filec@ntents@noheader\@tempswafalse
-\def\filec@ntents@nosearch{%
- \let\filec@ntents@checkdir\@currdir
- \def\filec@ntents@where{in current directory}}
-\let\filec@ntents@checkdir\@empty
-\def\filec@ntents@where{exists on the system}
-\begingroup%
-\@tempcnta=1
-\loop
- \catcode\@tempcnta=12 %
- \advance\@tempcnta\@ne %
-\ifnum\@tempcnta<32 %
-\repeat %
-\catcode`\*=11 %
-\catcode`\^^M\active%
-\catcode`\^^L\active\let^^L\relax%
-\catcode`\^^I\active%
-\gdef\filec@ntents#1{%
- \set@curr@file{\filec@ntents@checkdir#1}%
- \edef\q@curr@file{\expandafter\quote@name\expandafter{\@curr@file}}%
- \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi%
- \openin\@inputcheck\q@curr@file \space %
- \ifeof\@inputcheck%
- \@latex@warning@no@line%
- {Writing file `\@currdir\@curr@file'}%
- \ch@ck7\reserved@c\write\relax%
- \immediate\openout\reserved@c\q@curr@file\relax%
- \else%
- \if@filesw%
- \@latex@warning@no@line%
- {File `\@curr@file' already \filec@ntents@where.\MessageBreak%
- Not generating it from this source}%
- \let\write\@gobbletwo%
- \let\closeout\@gobble%
- \else%
- \edef\reserved@a{#1}%
- \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
- \edef\reserved@b{\detokenize\expandafter{\jobname}}%
- \ifx\reserved@a\reserved@b%
- \@fileswtrue%
- \else%
- \edef\reserved@b{\reserved@b\detokenize{.tex}}%
- \ifx\reserved@a\reserved@b
- \@fileswtrue%
- \fi%
- \fi%
- \ch@ck7\reserved@c\write\relax%
- \if@filesw% % Foul ... trying to overwrite \jobname!
- \@latex@error{Trying to overwrite `\jobname.tex'}{You can't %
- write to the file you are reading from!\MessageBreak%
- Data is written to screen instead.}%
- \else%
- \@latex@warning@no@line%
- {Writing or overwriting file `\@currdir\@curr@file'}%
- \immediate\openout\reserved@c\q@curr@file\relax%
- \fi%
- \fi%
- \fi%
- \closein\@inputcheck%
- \if@tempswa%
- \immediate\write\reserved@c{%
- \@percentchar\@percentchar\space%
- \expandafter\@gobble\string\LaTeX2e file `\@curr@file'^^J%
- \@percentchar\@percentchar\space generated by the %
- `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
- \@percentchar\@percentchar\space from source `\jobname' on %
- \number\year/\two@digits\month/\two@digits\day.^^J%
- \@percentchar\@percentchar}%
- \fi%
- \let\do\@makeother\dospecials%
- \count@ 128\relax%
- \loop%
- \catcode\count@ 11\relax%
- \advance\count@ \@ne%
- \ifnum\count@<\@cclvi%
- \repeat%
- \edef\E{\@backslashchar end\string{\@currenvir\string}}%
- \edef\reserved@b{%
- \def\noexpand\reserved@b%
- ####1\E####2\E####3\relax}%
- \reserved@b{%
- \ifx\relax##3\relax%
- \immediate\write\reserved@c{##1}%
- \else%
- \edef^^M{\noexpand\end{\@currenvir}}%
- \ifx\relax##1\relax%
- \else%
- \@latex@warning{Writing text `##1' before %
- \string\end{\@currenvir}\MessageBreak as last line of \@curr@file}%
- \immediate\write\reserved@c{##1}%
- \fi%
- \ifx\relax##2\relax%
- \else%
- \@latex@warning{%
- Ignoring text `##2' after \string\end{\@currenvir}}%
- \fi%
- \fi%
- ^^M}%
- \catcode`\^^L\active%
- \let\L\@undefined%
- \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
- \catcode`\^^I\active%
- \let\I\@undefined%
- \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
- \catcode`\^^M\active%
- \edef^^M##1^^M{%
- \noexpand\reserved@b##1\E\E\relax}}%
-\endgroup%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\filec@ntents}{Spaces in file names + optional arg}%
-
-\let\filec@ntents@opt \@undefined
-\let\filec@ntents@force \@undefined
-\let\filec@ntents@overwrite \@undefined
-\let\filec@ntents@noheader \@undefined
-\let\filec@ntents@nosearch \@undefined
-\let\filec@ntents@checkdir \@undefined
-\let\filec@ntents@where \@undefined
-
-\begingroup%
-\@tempcnta=1
-\loop
- \catcode\@tempcnta=12 %
- \advance\@tempcnta\@ne %
-\ifnum\@tempcnta<32 %
-\repeat %
-\catcode`\*=11 %
-\catcode`\^^M\active%
-\catcode`\^^L\active\let^^L\relax%
-\catcode`\^^I\active%
+ {\merge@font@shape}{Font shape change rules}%
-\gdef\filec@ntents#1{%
- \openin\@inputcheck#1 %
- \ifeof\@inputcheck%
- \@latex@warning@no@line%
- {Writing file `\@currdir#1'}%
- \chardef\reserved@c15 %
- \ch@ck7\reserved@c\write%
- \immediate\openout\reserved@c#1\relax%
- \else%
- \closein\@inputcheck%
- \@latex@warning@no@line%
- {File `#1' already exists on the system.\MessageBreak%
- Not generating it from this source}%
- \let\write\@gobbletwo%
- \let\closeout\@gobble%
- \fi%
- \if@tempswa%
- \immediate\write\reserved@c{%
- \@percentchar\@percentchar\space%
- \expandafter\@gobble\string\LaTeX2e file `#1'^^J%
- \@percentchar\@percentchar\space generated by the %
- `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
- \@percentchar\@percentchar\space from source `\jobname' on %
- \number\year/\two@digits\month/\two@digits\day.^^J%
- \@percentchar\@percentchar}%
- \fi%
- \let\do\@makeother\dospecials%
- \count@ 128\relax%
- \loop%
- \catcode\count@ 11\relax%
- \advance\count@ \@ne%
- \ifnum\count@<\@cclvi%
- \repeat%
- \edef\E{\@backslashchar end\string{\@currenvir\string}}%
- \edef\reserved@b{%
- \def\noexpand\reserved@b%
- ####1\E####2\E####3\relax}%
- \reserved@b{%
- \ifx\relax##3\relax%
- \immediate\write\reserved@c{##1}%
- \else%
- \edef^^M{\noexpand\end{\@currenvir}}%
- \ifx\relax##1\relax%
- \else%
- \@latex@warning{Writing text `##1' before %
- \string\end{\@currenvir}\MessageBreak as last line of #1}%
- \immediate\write\reserved@c{##1}%
- \fi%
- \ifx\relax##2\relax%
- \else%
- \@latex@warning{%
- Ignoring text `##2' after \string\end{\@currenvir}}%
- \fi%
- \fi%
- ^^M}%
-
- \catcode`\^^L\active%
- \let\L\@undefined%
- \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
- \catcode`\^^I\active%
- \let\I\@undefined%
- \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
- \catcode`\^^M\active%
- \edef^^M##1^^M{%
- \noexpand\reserved@b##1\E\E\relax}}%
-\endgroup%
-\EndIncludeInRelease
-%%% From File: ltspace.dtx
-\IncludeInRelease{2019/10/01}%
- {\pagebreak}{Make commands robust}%
-\DeclareRobustCommand\pagebreak{\@testopt{\@no@pgbk-}4}
-\DeclareRobustCommand\nopagebreak{\@testopt\@no@pgbk4}
-\DeclareRobustCommand\linebreak{\@testopt{\@no@lnbk-}4}
-\DeclareRobustCommand\nolinebreak{\@testopt\@no@lnbk4}
-\DeclareRobustCommand\samepage{\interlinepenalty\@M
- \postdisplaypenalty\@M
- \interdisplaylinepenalty\@M
- \@beginparpenalty\@M
- \@endparpenalty\@M
- \@itempenalty\@M
- \@secpenalty\@M
- \interfootnotelinepenalty\@M}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\pagebreak}{Make commands robust}%
+\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
+\let\fontshapeforce\@undefined
-\kernel@make@fragile\pagebreak
-\kernel@make@fragile\nopagebreak
-\kernel@make@fragile\linebreak
-\kernel@make@fragile\nolinebreak
-\kernel@make@fragile\samepage
+\let\merge@font@shape\@undefined
+\let\merge@font@shape@\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/02/02}%
- {\@normalcr}{Make robust}%
-\protected\def\@normalcr{%
- \let \reserved@e \relax
- \let \reserved@f \relax
- \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
- \@xnewline}%
- \@xnewline}
-\let\\\@normalcr
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@normalcr}{Make robust}%
+\let\merge@font@shape@without@substitution\@undefined
+\let\merge@font@shape@without@substitution@\@undefined
+\let\delayed@merge@font@shape\@undefined
-\DeclareRobustCommand\\{%
- \let \reserved@e \relax
- \let \reserved@f \relax
- \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
- \@xnewline}%
- \@xnewline}
-\expandafter\let\expandafter\@normalcr
- \csname\expandafter\@gobble\string\\ \endcsname
+\let\normalshape\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@vspace@calcify}{Add calc support}%
-\def\@vspace@calcify#1{\begingroup\setlength\skip@{#1}\vskip\skip@\endgroup}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@vspace@calcify}{Add calc support}%
-\let\@vspace@calcify\@undefined
+\let\reinstall@nfss@defs\relax
\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
- {\@newline}{\newline calc support}%
-\def\@newline[#1]{\let \reserved@e \vadjust
- \@gnewline {\@vspace@calcify{#1}}}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@newline}{\newline calc support}%
-
-\def\@newline[#1]{\let \reserved@e \vadjust
- \@gnewline {\vskip #1}}
-\EndIncludeInRelease
-\IncludeInRelease{2018/10/10}%
- {\@esphack}{hyphenation and nobreak after space hack}%
-\def\@esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \ifdim\lastskip=\z@
- \nobreak \hskip\z@skip
- \fi
- \ignorespaces
- \fi
- \else
- \ifvmode
- \if@nobreak\nobreak\else\if@noskipsec\nobreak\fi\fi
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/10/01}%
- {\@esphack}{hyphenation and nobreak after space hack}%
-\def\@esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \ifdim\lastskip=\z@
- \nobreak \hskip\z@skip
- \fi
- \ignorespaces
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@esphack}{hyphenation and nobreak after space hack}%
-\def\@esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \nobreak \hskip\z@skip
- \ignorespaces
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@esphack}{hyphenation and nobreak after space hack}%
-\def\@esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \ignorespaces
- \fi
- \fi}%
+ {\reinstall@nfss@defs}{NFSS series init}%
+\g@addto@macro\@kernel@after@begindocument@before
+ {\reinstall@nfss@defs\init@series@setup}
\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@Esphack}{hyphenation after space hack}%
-\def\@Esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \nobreak \hskip\z@skip
- \@ignoretrue
- \ignorespaces
- \fi
- \fi}%
+\IncludeInRelease{2020/02/02}%
+ {\reinstall@nfss@defs}{NFSS series init}%
+\AtBeginDocument{\reinstall@nfss@defs\init@series@setup}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@Esphack}{hyphenation after space hack}%
-\def\@Esphack{%
- \relax
- \ifhmode
- \spacefactor\@savsf
- \ifdim\@savsk>\z@
- \@ignoretrue
- \ignorespaces
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\addvspace}{\addvspace calc support}%
-\def\addvspace#1{%
- \ifvmode
- \if@minipage\else
- \ifdim \lastskip =\z@
- \@vspace@calcify{#1}%
- \else
- \setlength\@tempskipb{#1}%
- \@xaddvskip
- \fi
- \fi
- \else
- \@noitemerr
- \fi}
+ {\reinstall@nfss@defs}{NFSS series init}%
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\addvspace}{\addvspace calc support}%
+%%% From File: ltfsstrc.dtx
+%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
+%% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved.
-\def\addvspace#1{%
- \ifvmode
- \if@minipage\else
- \ifdim \lastskip =\z@
- \vskip #1\relax
- \else
- \@tempskipb#1\relax
- \@xaddvskip
- \fi
- \fi
- \else
- \@noitemerr
- \fi}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\addpenalty}{\addpenalty}%
-\def\addpenalty#1{%
- \ifvmode
- \if@minipage
- \else
- \if@nobreak
- \else
- \ifdim\lastskip=\z@
- \penalty#1\relax
- \else
- \@tempskipb\lastskip
- \begingroup
- \@tempskipa\@tempskipb
- \advance \@tempskipb
- \ifdim\prevdepth>\maxdepth\maxdepth\else
- \ifdim \prevdepth = -\@m\p@ \z@ \else \prevdepth \fi
- \fi
- \vskip -\@tempskipb
- \penalty#1%
- \ifdim\@tempskipa=\@tempskipb
- \else
- \advance\@tempskipb -\@tempskipa
- \vskip \@tempskipb
- \fi
- \vskip \@tempskipa
- \endgroup
- \fi
- \fi
- \fi
- \else
- \@noitemerr
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\addpenalty}{\addpenalty}%
-\def\addpenalty#1{%
- \ifvmode
- \if@minipage
+\IncludeInRelease{2021/05/01}%
+ {\selectfont}{Add hook to \selectfont}%
+\DeclareRobustCommand\selectfont
+ {%
+ \ifx\f@linespread\baselinestretch \else
+ \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+ \ifx\delayed@f@adjustment\@empty
\else
- \if@nobreak
+ \let\f@shape@saved\f@shape
+ \let\f@series@saved\f@series
+ \delayed@f@adjustment
+ \maybe@load@fontshape
+ \ifcsname \f@encoding/\f@family/\f@series/\f@shape \endcsname
\else
- \ifdim\lastskip=\z@
- \penalty#1\relax
- \else
- \@tempskipb\lastskip
- \vskip -\lastskip
- \penalty#1%
- \vskip\@tempskipb
- \fi
+ \let\f@shape\f@shape@saved
+ \let\f@series\f@series@saved
+ \let\delayed@merge@font@shape\merge@font@shape
+ \let\delayed@merge@font@series\merge@font@series
+ \delayed@f@adjustment
+ \let\delayed@merge@font@shape\merge@font@shape@without@substitution
+ \let\delayed@merge@font@series\merge@font@series@without@substitution
\fi
+ \let\delayed@f@adjustment\@empty
\fi
- \else
- \@noitemerr
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@vspace}{Support calc in \vspace}%
-\def\@vspace #1{%
- \ifvmode
- \@vspace@calcify{#1}%
- \vskip\z@skip
- \else
- \@bsphack
- \vadjust{\@restorepar
- \@vspace@calcify{#1}%
- \vskip\z@skip
- }%
- \@esphack
- \fi}
-\def\@vspacer#1{%
- \ifvmode
- \dimen@\prevdepth
- \hrule \@height\z@
- \nobreak
- \@vspace@calcify{#1}%
- \vskip\z@skip
- \prevdepth\dimen@
- \else
- \@bsphack
- \vadjust{\@restorepar
- \hrule \@height\z@
- \nobreak
- \@vspace@calcify{#1}%
- \vskip\z@skip}%
- \@esphack
- \fi}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@vspace}{Support calc in \vspace}%
-
-\def\@vspace #1{%
- \ifvmode
- \vskip #1
- \vskip\z@skip
- \else
- \@bsphack
- \vadjust{\@restorepar
- \vskip #1
- \vskip\z@skip
- }%
- \@esphack
- \fi}
-\def\@vspacer#1{%
- \ifvmode
- \dimen@\prevdepth
- \hrule \@height\z@
- \nobreak
- \vskip #1
- \vskip\z@skip
- \prevdepth\dimen@
- \else
- \@bsphack
- \vadjust{\@restorepar
- \hrule \@height\z@
- \nobreak
- \vskip #1
- \vskip\z@skip}%
- \@esphack
- \fi}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\@}{Space after \@}%
-\def\@{\spacefactor\@m{}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@}{Space after \@}%
-\def\@{\spacefactor\@m}%
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\@hspace}{Support calc with \hspace}%
-\def\@hspace#1{\begingroup\setlength\skip@{#1}\hskip\skip@\endgroup}
+ \xdef\font@name{%
+ \csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+ \UseHook{selectfont}%
+ \size@update
+ \enc@update
+ }
+\NewHook{selectfont}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\@hspace}{Support calc with \hspace}%
+ {\selectfont}{Add hook to \selectfont}%
+\DeclareRobustCommand\selectfont
+ {%
+ \ifx\f@linespread\baselinestretch \else
+ \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+ \xdef\font@name{%
+ \csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+ \size@update
+ \enc@update
+ }
-\def\@hspace#1{\hskip #1\relax}
-\EndIncludeInRelease
-\IncludeInRelease{2018/12/01}%
- {\thinspace}{Start LR-mode}%
-\DeclareRobustCommand\enspace{\leavevmode@ifvmode\kern.5em }
-\protected\def\leavevmode@ifvmode{\ifvmode\expandafter\indent\fi}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\thinspace}{Start LR-mode}%
-\def\thinspace{\kern .16667em }
-\def\negthinspace{\kern-.16667em }
-\def\enspace{\kern.5em }
-\let\leavevmode@ifvmode\@undefined
-\EndIncludeInRelease
-%%% From File: ltlogos.dtx
-%%% From File: ltplain.dtx
-\IncludeInRelease{2015/01/01}%
- {\newcount}{Extended Allocation}%
-\def\newcount {\e@alloc\count \countdef {\count10}\insc@unt\float@count}
-\def\newdimen {\e@alloc\dimen \dimendef {\count11}\insc@unt\float@count}
-\def\newskip {\e@alloc\skip \skipdef {\count12}\insc@unt\float@count}
-\def\newmuskip
- {\e@alloc\muskip\muskipdef{\count13}\m@ne\e@alloc@top}
-\def\newbox {\e@alloc\box
- {\ifnum\allocationnumber<\@cclvi
- \expandafter\chardef
- \else
- \expandafter\e@alloc@chardef
- \fi}
- {\count14}\insc@unt\float@count}
-\def\newtoks {\e@alloc\toks \toksdef{\count15}\m@ne\e@alloc@top}
-\def\newread {\e@alloc\read \chardef{\count16}\m@ne\sixt@@n}
-\ifx\directlua\@undefined
- \def\newwrite {\e@alloc\write \chardef{\count17}\m@ne\sixt@@n}
-\else
- \def\newwrite {\e@alloc\write
- {\ifnum\allocationnumber=18
- \advance\count17\@ne
- \allocationnumber\count17 %
- \fi
- \global\chardef}%
- {\count17}%
- \m@ne
- {128}}
-\fi
-\def\new@mathgroup
- {\e@alloc\mathgroup\chardef{\count18}\m@ne\e@mathgroup@top}
-\let\newfam\new@mathgroup
-\ifx\directlua\@undefined
- \def\newlanguage {\e@alloc\language \chardef{\count19}\m@ne\@cclvi}
-\else
- \def\newlanguage {\e@alloc\language \chardef{\count19}\m@ne{16384}}
-\fi
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\newcount}{Extended Allocation}%
-\def\newcount{\alloc@0\count\countdef\insc@unt}
-\def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
-\def\newskip{\alloc@2\skip\skipdef\insc@unt}
-\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
-\def\newbox{\alloc@4\box\chardef\insc@unt}
-\def\newtoks{\alloc@5\toks\toksdef\@cclvi}
-\def\newread{\alloc@6\read\chardef\sixt@@n}
-\def\newwrite{\alloc@7\write\chardef\sixt@@n}
-\def\new@mathgroup{\alloc@8\fam\chardef\sixt@@n}
-\def\newlanguage{\alloc@9\language\chardef\@cclvi}
-\let\newfam\new@mathgroup
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\e@alloc@chardef}{Extended Allocation}%
-\ifx\directlua\@undefined
- \ifx\widowpenalties\@undefined
- \mathchardef\e@alloc@top=255
- \let\e@alloc@chardef\chardef
- \else
- \mathchardef\e@alloc@top=32767
- \let\e@alloc@chardef\mathchardef
- \fi
-\else
- \chardef\e@alloc@top=65535
- \let\e@alloc@chardef\chardef
-\fi
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\e@alloc@chardef}{Extended Allocation}%
-\let\e@alloc@top\@undefined
-\let\e@alloc@chardef\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\e@mathgroup@top}{Extended Allocation}%
-\ifx\Umathcode\@undefined
- \chardef\e@mathgroup@top=16
-\else
- \chardef\e@mathgroup@top=256
-\fi
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\e@mathgroup@top}{Extended Allocation}%
-\let\e@mathgroup@top\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\e@alloc}{Extended Allocation}%
-\def\e@alloc#1#2#3#4#5#6{%
- \global\advance#3\@ne
- \e@ch@ck{#3}{#4}{#5}#1%
- \allocationnumber#3\relax
- \global#2#6\allocationnumber
- \wlog{\string#6=\string#1\the\allocationnumber}}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\e@alloc}{Extended Allocation}%
-\let\e@alloc\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/10/01}
- {\e@ch@ck}{Extended Allocation (checking)}%
-\gdef\e@ch@ck#1#2#3#4{%
- \ifnum#1<#2\else
- \ifnum#1=#2\relax
- \global#1\@cclvi
- \ifx\count#4\global\advance#1 10 \fi
- \fi
- \ifnum#1<#3\relax
- \else
- \errmessage{No room for a new \string#4}%
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\e@ch@ck}{Extended Allocation (checking)}%
-\gdef\e@ch@ck#1#2#3#4{%
- \ifnum#1<#2\else
- \ifnum#1=#2\relax
- #1\@cclvi
- \ifx\count#4\advance#1 10 \fi
- \fi
- \ifnum#1<#3\relax
- \else
- \errmessage{No room for a new #4}%
- \fi
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\e@ch@ck}{Extended Allocation (checking)}%
-\let\e@ch@ck\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}%
- {\extrafloats}{Extra floats}%
-\let\float@count\e@alloc@top
-\ifx\numexpr\@undefined
-\def\extrafloats#1{%
-\count@#1\relax
-\ifnum\count@>\z@
-\newinsert\reserved@a
-\global\expandafter\chardef
- \csname bx@\the\allocationnumber\endcsname\allocationnumber
-\@cons\@freelist{\csname bx@\the\allocationnumber\endcsname}%
-\advance\count@\m@ne
-\expandafter\extrafloats
-\expandafter\count@
-\fi
-}%
-\else
-\def\extrafloats#1{%
-\ifnum#1>\z@
-\count@\numexpr\float@count-1\relax
- \ch@ck0\count@\count
- \ch@ck1\count@\dimen
- \ch@ck2\count@\skip
- \ch@ck4\count@\box
-\global\e@alloc@chardef\float@count\count@
-\global\expandafter\e@alloc@chardef
- \csname bx@\the\float@count\endcsname\float@count
-\@cons\@freelist{\csname bx@\the\float@count\endcsname}%
-\expandafter
-\extrafloats\expandafter{\numexpr#1-1\relax}%
-\fi}%
-\fi
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\extrafloats}{Extra floats}%
-\let\float@count\@undefined
-\let\extrafloats\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}
- {\alloc@}{emulate alloc@}%
-\def\alloc@#1#2#3#4{\e@alloc#2#3{\count1#1}#4\float@count}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\alloc@}{emulate alloc@}%
-\def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
- \ch@ck#1#4#2%
- \allocationnumber\count1#1%
- \global#3#5\allocationnumber
- \wlog{\string#5=\string#2\the\allocationnumber}}
-\EndIncludeInRelease
-\IncludeInRelease{2015/10/01}
- {\newinsert}{Extended \newinsert}%
-\ifx\numexpr\@undefined
-\def\newinsert#1{\global\advance\insc@unt \m@ne
- \ch@ck0\insc@unt\count
- \ch@ck1\insc@unt\dimen
- \ch@ck2\insc@unt\skip
- \ch@ck4\insc@unt\box
- \allocationnumber\insc@unt
- \global\chardef#1\allocationnumber
- \wlog{\string#1=\string\insert\the\allocationnumber}}
-\else
-\ifx\directlua\@undefined
- \chardef\e@insert@top255
-\else
- \chardef\e@insert@top\e@alloc@top
-\fi
-\def\newinsert#1{%
-\@tempswafalse
-\global\advance\insc@unt\m@ne
-\ifnum\count10<\insc@unt
-\ifnum\count11<\insc@unt
-\ifnum\count12<\insc@unt
-\ifnum\count14<\insc@unt
- \@tempswatrue
-\fi\fi\fi\fi
-\if@tempswa
-\allocationnumber\insc@unt
-\else
-\global\advance\insc@unt\@ne
- \extrafloats\@ne
- \@next\@currbox\@freelist
- {\ifnum\@currbox<\e@insert@top
- \allocationnumber\@currbox
- \else
- \ch@ck0\m@ne\insert
- \fi}%
- {\ch@ck0\m@ne\insert}%
-\fi
-\global\chardef#1\allocationnumber
-\wlog{\string#1=\string\insert\the\allocationnumber}%
+\IncludeInRelease{2020/02/02}%
+ {\@font@aliasinfo}{alias size function}%
+\DeclareSizeFunction{alias}{\sub@sfcnt\@font@aliasinfo}
+\def\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space
+ aliased\space to\MessageBreak `\mandatory@arg'}%
}
-\fi
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\newinsert}{Extended \newinsert}%
-\let\e@insert@top\@undefined
-\def\newinsert#1{\global\advance\insc@unt \m@ne
- \ch@ck0\insc@unt\count
- \ch@ck1\insc@unt\dimen
- \ch@ck2\insc@unt\skip
- \ch@ck4\insc@unt\box
- \allocationnumber\insc@unt
- \global\chardef#1\allocationnumber
- \wlog{\string#1=\string\insert\the\allocationnumber}}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\loggingall}{etex tracing}%
-\ifx\tracingscantokens\@undefined
-\gdef\loggingall{%
- \tracingstats\tw@
- \tracingpages\@ne
- \tracinglostchars\@ne
- \tracingparagraphs\@ne
- \errorcontextlines\maxdimen
- \loggingoutput
- \tracingmacros\tw@
- \tracingcommands\tw@
- \tracingrestores\@ne
- }%
-\else
-\gdef\loggingall{%
- \tracingstats\tw@
- \tracingpages\@ne
- \tracinglostchars\tw@
- \tracingparagraphs\@ne
- \tracinggroups\@ne
- \tracingifs\@ne
- \tracingscantokens\@ne
- \tracingnesting\@ne
- \errorcontextlines\maxdimen
- \loggingoutput
- \tracingmacros\tw@
- \tracingcommands\thr@@
- \tracingrestores\@ne
- \tracingassigns\@ne
-}%
-\fi
-\gdef\tracingall{\showoverfull\loggingall}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\loggingall}{etex tracing}%
-\gdef\loggingall{\tracingcommands\tw@\tracingstats\tw@
- \tracingpages\@ne\tracinglostchars\@ne
- \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
- \errorcontextlines\maxdimen\loggingoutput}
- \gdef\tracingall{\loggingall\showoverfull}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\tracingnone}%
- {turn off etex tracing}%
-\ifx\tracingscantokens\@undefined
-\def\tracingnone{%
- \tracingonline\z@
- \tracingcommands\z@
- \showboxdepth\m@ne
- \showboxbreadth\m@ne
- \tracingoutput\z@
- \errorcontextlines\m@ne
- \tracingrestores\z@
- \tracingparagraphs\z@
- \tracingmacros\z@
- \tracinglostchars\@ne
- \tracingpages\z@
- \tracingstats\z@
-}%
-\else
-\def\tracingnone{%
- \tracingassigns\z@
- \tracingrestores\z@
- \tracingonline\z@
- \tracingcommands\z@
- \showboxdepth\m@ne
- \showboxbreadth\m@ne
- \tracingoutput\z@
- \errorcontextlines\m@ne
- \tracingnesting\z@
- \tracingscantokens\z@
- \tracingifs\z@
- \tracinggroups\z@
- \tracingparagraphs\z@
- \tracingmacros\z@
- \tracinglostchars\@ne
- \tracingpages\z@
- \tracingstats\z@
-}%
-\fi
-\def\hideoutput{%
- \tracingoutput\z@
- \showboxbreadth\m@ne
- \showboxdepth\m@ne
- \tracingonline\m@ne
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\tracingnone}%
- {turn off etex tracing}%
-\let\tracingnone\@undefined
-\let\hideoutput\@undefined
+ {\@font@aliasinfo}{alias size function}%
+\let\s@fct@alias\@undefined
+\let\@font@aliasinfo\@undefined
+
\EndIncludeInRelease
%%% From File: ltfssdcl.dtx
%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf,
@@ -8573,1078 +6401,6 @@ of this package available from CTAN}
\EndIncludeInRelease
-%%% From File: ltfssbas.dtx
-%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
-\IncludeInRelease{2020/02/02}%
- {\DeclareFontShape@}{Maybe drop one m}%
-\def\DeclareFontShape@#1#2#3#4#5#6{%
- \expandafter\ifx\csname #1+#2\endcsname\relax
- \@latex@error{Font family `#1+#2' unknown}\@eha
- \else
- \edef\reserved@a{#3}%
- \series@maybe@drop@one@m\reserved@a\reserved@b
- \ifx\reserved@a\reserved@b\else
- \@latex@warning{Font shape declaration has incorrect series
- value `#3'.\MessageBreak It should not contain an `m'!
- Please correct it.\MessageBreak Found}%
- \fi
- \expandafter
- \xdef\csname#1/#2/\reserved@b/#4\endcsname
- {\expandafter\noexpand\csname #5\endcsname}%
- \def\reserved@a{#6}%
- \global
- \expandafter\let\csname#5\expandafter\endcsname
- \ifx\reserved@a\@empty
- \@empty
- \else
- \reserved@a
- \fi
- \fi
- }
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\DeclareFontShape@}{Maybe drop one m}%
-
-\def\DeclareFontShape@#1#2#3#4#5#6{%
- \expandafter\ifx\csname #1+#2\endcsname\relax
- \@latex@error{Font family `#1+#2' unknown}\@eha
- \else
- \expandafter
- \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
- \csname #5\endcsname}%
- \def\reserved@a{#6}%
- \global
- \expandafter\let\csname#5\expandafter\endcsname
- \ifx\reserved@a\@empty
- \@empty
- \else
- \reserved@a
- \fi
- \fi
- }
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\@DeclareMathSizes}%
- {Arbitrary units in \DeclareMathSizes}%
-\def\@DeclareMathSizes #1#2#3#4#5{%
- \@defaultunits\dimen@ #2pt\relax\@nnil
- \if $#3$%
- \expandafter\let\csname S@\strip@pt\dimen@\endcsname\math@fontsfalse
- \else
- \@defaultunits\dimen@ii #3pt\relax\@nnil
- \@defaultunits\@tempdima #4pt\relax\@nnil
- \@defaultunits\@tempdimb #5pt\relax\@nnil
- \toks@{#1}%
- \expandafter\xdef\csname S@\strip@pt\dimen@\endcsname{%
- \gdef\noexpand\tf@size{\strip@pt\dimen@ii}%
- \gdef\noexpand\sf@size{\strip@pt\@tempdima}%
- \gdef\noexpand\ssf@size{\strip@pt\@tempdimb}%
- \the\toks@
- }%
- \fi
-}%
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\@DeclareMathSizes}%
- {Arbitrary units in \DeclareMathSizes}%
-\def\@DeclareMathSizes#1#2#3#4#5{%
- \@defaultunits\dimen@#2pt\relax\@nnil
- \if$#3$%
- \expandafter \let
- \csname S@\strip@pt\dimen@\endcsname
- \math@fontsfalse
- \else
- \expandafter \gdef
- \csname S@\strip@pt\dimen@\endcsname
- {\gdef\tf@size{#3}\gdef\sf@size{#4}%
- \gdef\ssf@size{#5}%
- #1%
- }%
- \fi}%
-\EndIncludeInRelease
-\IncludeInRelease{2020/02/02}%
- {\LoadFontDefinitionFile}{Loading .fd files}%
-\def\LoadFontDefinitionFile#1#2{%
- \begingroup
- \edef\f@encoding{#1}%
- \edef\f@family{#2}%
- \try@load@fontshape
- \endgroup
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\LoadFontDefinitionFile}{Loading .fd files}%
-
-\let\LoadFontDefinitionFile\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2020/02/02}%
- {\DeclareFontFamilySubstitution}{Provide family substituation}%
-\begingroup
-\nfss@catcodes
-\gdef\DeclareFontFamilySubstitution#1#2#3{%
- \LoadFontDefinitionFile{#1}{#2}%
- \LoadFontDefinitionFile{#1}{#3}%
- \DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}%
- \DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}%
- \DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}%
- \DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}%
- \DeclareFontShape{#1}{#2}{m}{sw}{<->ssub * #3/m/sw}{}%
- \DeclareFontShape{#1}{#2}{m}{scit}{<->ssub * #3/m/scit}{}%
- \DeclareFontShape{#1}{#2}{m}{scsl}{<->ssub * #3/m/scsl}{}%
- \DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/b/it}{}%
- \DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/b/n}{}%
- \DeclareFontShape{#1}{#2}{b}{scit}{<->ssub * #3/b/scit}{}%
- \DeclareFontShape{#1}{#2}{b}{scsl}{<->ssub * #3/b/scsl}{}%
- \DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/b/sc}{}%
- \DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/b/sl}{}%
- \DeclareFontShape{#1}{#2}{b}{sw}{<->ssub * #3/b/sw}{}%
- \DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}%
- \DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}%
- \DeclareFontShape{#1}{#2}{bx}{scit}{<->ssub * #3/bx/scit}{}%
- \DeclareFontShape{#1}{#2}{bx}{scsl}{<->ssub * #3/bx/scsl}{}%
- \DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}%
- \DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}%
- \DeclareFontShape{#1}{#2}{bx}{sw}{<->ssub * #3/bx/sw}{}%
-}
-\endgroup
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\DeclareFontFamilySubstitution}{Provide family substituation}%
-
-\let\DeclareFontFamilySubstitution\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{2019/10/01}%
- {\DeclareErrorFont}{No side effects please}%
-\def\DeclareErrorFont#1#2#3#4#5{%
- \xdef\error@fontshape{%
- \noexpand\expandafter\noexpand\split@name\noexpand\string
- \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
- \noexpand\@nil}%
- \gdef\default@family{#2}%
- \gdef\default@series{#3}%
- \gdef\default@shape{#4}%
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\DeclareErrorFont}{No side effects please}%
-
-\def\DeclareErrorFont#1#2#3#4#5{%
- \xdef\error@fontshape{%
- \noexpand\expandafter\noexpand\split@name\noexpand\string
- \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
- \noexpand\@nil}%
- \gdef\default@family{#2}%
- \gdef\default@series{#3}%
- \gdef\default@shape{#4}%
- \global\let\f@family\default@family
- \global\let\f@series\default@series
- \global\let\f@shape\default@shape
- \gdef\f@size{#5}%
- \gdef\f@baselineskip{#5pt}%
-}
-\EndIncludeInRelease
-\IncludeInRelease{2015/01/01}{\wrong@fontshape}%
- {Font substituation in preamble}%
-\def\wrong@fontshape{%
- \csname D@\f@encoding\endcsname % install defaults if in math
- \edef\reserved@a{\csname\curr@fontshape\endcsname}%
- \ifx\last@fontshape\reserved@a
- \errmessage{Corrupted NFSS tables}%
- \error@fontshape
- \else
- \let\f@shape\default@shape
- \expandafter\ifx\csname\curr@fontshape\endcsname\relax
- \let\f@series\default@series
- \expandafter
- \ifx\csname\curr@fontshape\endcsname\relax
- \let\f@family\default@family
- \begingroup
- \try@load@fontshape
- \endgroup
- \fi \fi
- \fi
- \@font@warning{Font shape `\expandafter\string\reserved@a'
- \expandafter\@gobble\string\@undefined\MessageBreak
- using `\curr@fontshape' instead\@wrong@font@char}%
- \global\let\last@fontshape\reserved@a
- \gdef\@defaultsubs{%
- \@font@warning{Some font shapes were not available, defaults
- substituted.\@gobbletwo}}%
- \global\expandafter\expandafter\expandafter\let
- \expandafter\reserved@a
- \csname\curr@fontshape\endcsname
- \xdef\font@name{%
- \csname\curr@fontshape/\f@size\endcsname}%
- \pickup@font}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\wrong@fontshape}%
- {Font substituation in preamble}%
-\def\wrong@fontshape{%
- \csname D@\f@encoding\endcsname
- \edef\reserved@a{\csname\curr@fontshape\endcsname}%
- \ifx\last@fontshape\reserved@a
- \errmessage{Corrupted NFSS tables}%
- \error@fontshape
- \else
- \let\f@shape\default@shape
- \expandafter\ifx\csname\curr@fontshape\endcsname\relax
- \let\f@series\default@series
- \expandafter
- \ifx\csname\curr@fontshape\endcsname\relax
- \let\f@family\default@family
- \fi \fi
- \fi
- \@font@warning{Font shape
- `\expandafter\string\reserved@a'
- \expandafter\@gobble\string\@undefined
- \MessageBreak
- using `\curr@fontshape' instead\@wrong@font@char}%
- \global\let\last@fontshape\reserved@a
- \gdef\@defaultsubs{%
- \@font@warning{Some font shapes were not available,
- defaults substituted.\@gobbletwo}}%
- \global\expandafter\expandafter\expandafter\let
- \expandafter\reserved@a
- \csname\curr@fontshape\endcsname
- \xdef\font@name{%
- \csname\curr@fontshape/\f@size\endcsname}%
- \pickup@font}
-\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}{\showhyphens}%
- {XeTeX support for \showhyphens}%
-\ifx\XeTeXcharclass\@undefined
-\DeclareRobustCommand\showhyphens[1]{%
- \setbox0\vbox{%
- \color@begingroup
- \everypar{}%
- \parfillskip\z@skip\hsize\maxdimen
- \normalfont
- \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1%
- \color@endgroup}}
-\else
-\DeclareRobustCommand\showhyphens[1]{%
- \setbox0\vbox{%
- \usefont{TU}{lmr}{m}{n}%
- \hsize 1sp %
- \hbadness\@M
- \hfuzz\maxdimen
- \tracingonline\z@
- \everypar={}%
- \leftskip\z@skip
- \rightskip\z@skip
- \parfillskip\z@skip
- \hyphenpenalty=-\@M
- \pretolerance\m@ne
- \interlinepenalty\z@
- \clubpenalty\z@
- \widowpenalty\z@
- \brokenpenalty1127 %
- \setbox\z@\hbox{}%
- \noindent
- \hskip\z@skip
- #1%
- \par
- \loop
- \@tempswafalse
- \ifnum\lastnodetype=11\unskip\@tempswatrue\fi
- \ifnum\lastnodetype=12\unkern\@tempswatrue\fi
- \ifnum\lastnodetype=13 %
- \count@\lastpenalty
- \unpenalty\@tempswatrue
- \fi
- \ifnum\lastnodetype=\@ne
- \setbox\tw@\lastbox\@tempswatrue
- \setbox0\hbox{\unhbox\tw@\unskip\unskip\unpenalty
- \ifnum\count@=1127 \else\ \fi
- \unhbox0}%
- \count@\z@
- \fi
- \if@tempswa
- \repeat
- \hbadness\z@
- \hsize\maxdimen
- \showboxdepth\z@
- \tolerance\m@ne
- \hyphenpenalty\z@
- \noindent\unhbox\z@
-}}
-\fi
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\showhyphens}%
- {XeTeX support for \showhyphens}%
-\gdef\showhyphens#1{%
- \setbox0\vbox{%
- \color@begingroup
- \everypar{}%
- \parfillskip\z@skip\hsize\maxdimen
- \normalfont
- \pretolerance\m@ne\tolerance\m@ne
- \hbadness\z@\showboxdepth\z@\ #1%
- \color@endgroup}}
-\EndIncludeInRelease
-%%% From File: ltfssaxes.dtx
-%% Copyright (C) 1999-2020 Frank Mittelbach
-\IncludeInRelease{2020/02/02}%
- {\DeclareFontSeriesChangeRule}{Series change rules}%
-\def\DeclareFontSeriesChangeRule#1#2#3#4{%
- \@namedef{series@#1@#2}{{#3}{#4}}}
-\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {bc}{c}{bc}{}
-\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc}
-\DeclareFontSeriesChangeRule {bc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {bc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc}
-\DeclareFontSeriesChangeRule {bc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {bc}{x}{bx}{}
-\DeclareFontSeriesChangeRule {bx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<-----
-\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<-----
-\DeclareFontSeriesChangeRule {bx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {bx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {}
-\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<-----
-\DeclareFontSeriesChangeRule {bx}{sl}{slx} {}
-\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {bx}{x}{bx}{}
-\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<-----
-\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<-----
-\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<-----
-\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<-----
-\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {c}{b}{bc}{}
-\DeclareFontSeriesChangeRule {c}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {c}{el}{elc}{}
-\DeclareFontSeriesChangeRule {c}{l}{lc}{}
-\DeclareFontSeriesChangeRule {c}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {c}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {c}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {c}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<-----
-\DeclareFontSeriesChangeRule {ebc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{}
-\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc}
-\DeclareFontSeriesChangeRule {ebc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {ebc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc}
-\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{}
-\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {ec}{b}{bec}{}
-\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{}
-\DeclareFontSeriesChangeRule {ec}{el}{elec}{}
-\DeclareFontSeriesChangeRule {ec}{l}{lec}{}
-\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{}
-\DeclareFontSeriesChangeRule {ec}{sl}{slec}{}
-\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{}
-\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{}
-\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<-----
-\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {sc}{b}{bsc}{}
-\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{}
-\DeclareFontSeriesChangeRule {sc}{el}{elsc}{}
-\DeclareFontSeriesChangeRule {sc}{l}{lsc}{}
-\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{}
-\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{}
-\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{}
-\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{}
-\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<-----
-\DeclareFontSeriesChangeRule {ebx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{}
-\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{}
-\DeclareFontSeriesChangeRule {ebx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {ebx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{}
-\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{}
-\DeclareFontSeriesChangeRule {eb}{c}{ebc}{}
-\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{}
-\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{}
-\DeclareFontSeriesChangeRule {eb}{x}{ebx}{}
-\DeclareFontSeriesChangeRule {elc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {elc}{c}{elc}{}
-\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {elc}{ec}{elec}{}
-\DeclareFontSeriesChangeRule {elc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {elc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{}
-\DeclareFontSeriesChangeRule {elc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {elc}{x}{elx}{}
-\DeclareFontSeriesChangeRule {elx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {elx}{c}{elc}{}
-\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {elx}{ec}{elec}{}
-\DeclareFontSeriesChangeRule {elx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {elx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{}
-\DeclareFontSeriesChangeRule {elx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {elx}{x}{elx}{}
-\DeclareFontSeriesChangeRule {el}{c}{elc}{}
-\DeclareFontSeriesChangeRule {el}{ec}{elec}{}
-\DeclareFontSeriesChangeRule {el}{sc}{elsc}{}
-\DeclareFontSeriesChangeRule {el}{x}{elx}{}
-\DeclareFontSeriesChangeRule {lc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {lc}{c}{lc}{}
-\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {lc}{ec}{lec}{}
-\DeclareFontSeriesChangeRule {lc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {lc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{}
-\DeclareFontSeriesChangeRule {lc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {lc}{x}{lx}{}
-\DeclareFontSeriesChangeRule {lx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {lx}{c}{lc}{}
-\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {lx}{ec}{lec}{}
-\DeclareFontSeriesChangeRule {lx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {lx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{}
-\DeclareFontSeriesChangeRule {lx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {lx}{x}{lx}{}
-\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<-----
-\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<-----
-\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<-----
-\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<-----
-\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<-----
-\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<-----
-\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<-----
-\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<-----
-\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<-----
-\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<-----
-\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<-----
-\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<-----
-\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<-----
-\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<-----
-\DeclareFontSeriesChangeRule {sbc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{}
-\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc}
-\DeclareFontSeriesChangeRule {sbc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {sbc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc}
-\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{}
-\DeclareFontSeriesChangeRule {sbx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{}
-\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{}
-\DeclareFontSeriesChangeRule {sbx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {sbx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{}
-\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{}
-\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<-----
-\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<-----
-\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<-----
-\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<-----
-\DeclareFontSeriesChangeRule {slc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {slc}{c}{slc}{}
-\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {slc}{ec}{slec}{}
-\DeclareFontSeriesChangeRule {slc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {slc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{}
-\DeclareFontSeriesChangeRule {slc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {slc}{x}{slx}{}
-\DeclareFontSeriesChangeRule {slx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {slx}{c}{slc}{}
-\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {slx}{ec}{slec}{}
-\DeclareFontSeriesChangeRule {slx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {slx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{}
-\DeclareFontSeriesChangeRule {slx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {slx}{x}{slx}{}
-\DeclareFontSeriesChangeRule {sl}{c}{slc}{}
-\DeclareFontSeriesChangeRule {sl}{ec}{slec}{}
-\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{}
-\DeclareFontSeriesChangeRule {sl}{x}{slx}{}
-\DeclareFontSeriesChangeRule {ubc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{}
-\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{}
-\DeclareFontSeriesChangeRule {ubc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {ubc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{}
-\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{}
-\DeclareFontSeriesChangeRule {ubx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{}
-\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{}
-\DeclareFontSeriesChangeRule {ubx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {ubx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{}
-\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{}
-\DeclareFontSeriesChangeRule {ub}{c}{ubc}{}
-\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{}
-\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{}
-\DeclareFontSeriesChangeRule {ub}{x}{ubx}{}
-\DeclareFontSeriesChangeRule {ulc}{b}{bc}{}
-\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{}
-\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{}
-\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc}
-\DeclareFontSeriesChangeRule {ulc}{el}{elc}{}
-\DeclareFontSeriesChangeRule {ulc}{l}{lc}{}
-\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{}
-\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc}
-\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{}
-\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{}
-\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{}
-\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{}
-\DeclareFontSeriesChangeRule {ulx}{b}{bx}{}
-\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{}
-\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{}
-\DeclareFontSeriesChangeRule {ulx}{el}{elx}{}
-\DeclareFontSeriesChangeRule {ulx}{l}{lx}{}
-\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{}
-\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{}
-\DeclareFontSeriesChangeRule {ul}{c}{ulc}{}
-\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{}
-\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{}
-\DeclareFontSeriesChangeRule {ul}{x}{ulx}{}
-\DeclareFontSeriesChangeRule {x}{b}{bx}{}
-\DeclareFontSeriesChangeRule {x}{c}{c}{}
-\DeclareFontSeriesChangeRule {x}{eb}{ebx}{}
-\DeclareFontSeriesChangeRule {x}{ec}{ec}{}
-\DeclareFontSeriesChangeRule {x}{el}{elx}{}
-\DeclareFontSeriesChangeRule {x}{l}{lx}{}
-\DeclareFontSeriesChangeRule {x}{sb}{sbx}{}
-\DeclareFontSeriesChangeRule {x}{sc}{sc}{}
-\DeclareFontSeriesChangeRule {x}{sl}{slx}{}
-\DeclareFontSeriesChangeRule {x}{ub}{ubx}{}
-\DeclareFontSeriesChangeRule {x}{ul}{ulx}{}
-\DeclareFontSeriesChangeRule {bc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {bec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {bx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {b}{m?}{m}{}
-\DeclareFontSeriesChangeRule {c}{m?}{c}{}
-\DeclareFontSeriesChangeRule {ebc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {ebx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {eb}{m?}{m}{}
-\DeclareFontSeriesChangeRule {ec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {elc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {elec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {elx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {el}{m?}{m}{}
-\DeclareFontSeriesChangeRule {lc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {lec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {lx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {l}{m?}{m}{}
-\DeclareFontSeriesChangeRule {m}{m?}{m}{}
-\DeclareFontSeriesChangeRule {sbc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {sbx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {sb}{m?}{m}{}
-\DeclareFontSeriesChangeRule {sc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {slc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {slec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {slx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {sl}{m?}{m}{}
-\DeclareFontSeriesChangeRule {ubc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {ubx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {ub}{m?}{ub}{}
-\DeclareFontSeriesChangeRule {ulc}{m?}{c}{}
-\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{}
-\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{}
-\DeclareFontSeriesChangeRule {ulx}{m?}{x}{}
-\DeclareFontSeriesChangeRule {ul}{m?}{m}{}
-\DeclareFontSeriesChangeRule {x}{m?}{x}{}
-\DeclareFontSeriesChangeRule {bc}{?m}{b}{}
-\DeclareFontSeriesChangeRule {bec}{?m}{b}{}
-\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
-\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
-\DeclareFontSeriesChangeRule {bx}{?m}{b}{}
-\DeclareFontSeriesChangeRule {b}{?m}{b}{}
-\DeclareFontSeriesChangeRule {c}{?m}{m}{}
-\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {eb}{?m}{eb}{}
-\DeclareFontSeriesChangeRule {ec}{?m}{m}{}
-\DeclareFontSeriesChangeRule {elc}{?m}{el}{}
-\DeclareFontSeriesChangeRule {elec}{?m}{el}{}
-\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
-\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
-\DeclareFontSeriesChangeRule {elx}{?m}{el}{}
-\DeclareFontSeriesChangeRule {el}{?m}{el}{}
-\DeclareFontSeriesChangeRule {lc}{?m}{l}{}
-\DeclareFontSeriesChangeRule {lec}{?m}{l}{}
-\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
-\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
-\DeclareFontSeriesChangeRule {lx}{?m}{l}{}
-\DeclareFontSeriesChangeRule {l}{?m}{l}{}
-\DeclareFontSeriesChangeRule {m}{?m}{m}{}
-\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sb}{?m}{sb}{}
-\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
-\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
-\DeclareFontSeriesChangeRule {slc}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {slec}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {slx}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {sl}{?m}{sl}{}
-\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{}
-\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{}
-\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
-\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
-\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{}
-\DeclareFontSeriesChangeRule {ub}{?m}{m}{}
-\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {ul}{?m}{ul}{}
-\DeclareFontSeriesChangeRule {x}{?m}{m}{}
-
-
-\newif\if@forced@series
-\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}}
-\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}}
-
-\def\merge@font@series#1{%
- \expandafter\expandafter\expandafter
- \merge@font@series@
- \csname series@\f@series @#1\endcsname
- {#1}%
- \@nil
-}
-
-\def\merge@font@series@#1#2#3\@nil{%
- \def\reserved@a{#3}%
- \ifx\reserved@a\@empty
- \set@target@series{#2}%
- \else
- \maybe@load@fontshape
- \edef\reserved@a{\f@encoding /\f@family /#1/\f@shape}%
- \ifcsname \reserved@a \endcsname
- \set@target@series{#1}%
- \else
- \ifcsname \f@encoding /\f@family /#2/\f@shape \endcsname
- \set@target@series{#2}%
- \@font@shape@subst@warning
- \else
- \set@target@series{#3}%
- \@font@shape@subst@warning
- \fi
- \fi
- \fi
-}
-\def\@font@shape@subst@warning{%
- \edef\reserved@b{\curr@fontshape}%
- \ifx\reserved@a\reserved@b \else
- \@font@warning{Font shape `\reserved@a' undefined\MessageBreak
- using `\reserved@b' instead}%
- \fi
-}
-\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup}
-\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc}
-\def\set@target@series#1{%
- \edef\f@series{#1}%
- \series@maybe@drop@one@m\f@series\f@series
-}
-\def\series@maybe@drop@one@m#1{%
- \expandafter\series@maybe@drop@one@m@x\expandafter{#1}}
-
-\def\series@maybe@drop@one@m@x#1#2{%
- \def\in@@##1,#1,{}%
- \series@check@toks\expandafter{\in@@
- ,ulm,elm,lm,slm,mm,sbm,bm,ebm,ubm,muc,mec,mc,msc,msx,mx,mex,mux,{}{},#1,}%
- \edef\in@@{\the\series@check@toks}%
- \ifx\in@@\@empty
- \edef#2{#1}%
- \else
- \edef#2{\expandafter\series@drop@one@m #1m\series@drop@one@m}%
- \fi
-}
-\newtoks\series@check@toks
-\def\series@drop@one@m#1m#2m#3\series@drop@one@m{%
- #1#2%
-}
-
-\def\DeclareFontShapeChangeRule #1#2#3#4{%
- \@namedef{shape@#1@#2}{{#3}{#4}}}
-\DeclareRobustCommand\ulcshape
- {\not@math@alphabet\ulcshape\relax
- \fontshape\ulcdefault\selectfont}
-\let\ulcdefault\@undefined % for rollback
-\newcommand\ulcdefault{ulc}
-\DeclareRobustCommand\swshape
- {\not@math@alphabet\swshape\relax
- \fontshape\swdefault\selectfont}
-\let\swdefault\@undefined % for rollback
-\newcommand\swdefault{sw}
-\DeclareRobustCommand\sscshape
- {\not@math@alphabet\sscshape\relax
- \fontshape\sscdefault\selectfont}
-\let\sscdefault\@undefined % for rollback
-\newcommand\sscdefault{ssc}
-\DeclareFontShapeChangeRule {n}{it} {it} {sl}
-\DeclareFontShapeChangeRule {n}{sl} {sl} {it}
-\DeclareFontShapeChangeRule {n}{ulc} {n} {}
-\DeclareFontShapeChangeRule {n}{up} {n} {}
-\DeclareFontShapeChangeRule {it}{sl} {sl} {it}
-\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl}
-\DeclareFontShapeChangeRule {it}{ulc} {it} {}
-\DeclareFontShapeChangeRule {it}{up} {n} {}
-\DeclareFontShapeChangeRule {sl}{it} {it} {sl}
-\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit}
-\DeclareFontShapeChangeRule {sl}{ulc} {sl} {}
-\DeclareFontShapeChangeRule {sl}{up} {n} {}
-\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl}
-\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit}
-\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw}
-\DeclareFontShapeChangeRule {sc}{ulc} {n} {}
-\DeclareFontShapeChangeRule {sc}{up} {n} {}
-\DeclareFontShapeChangeRule {scit}{it} {scit} {}
-\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit}
-\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit?
-\DeclareFontShapeChangeRule {scit}{sc} {scit} {}
-\DeclareFontShapeChangeRule {scit}{ulc} {it} {}
-\DeclareFontShapeChangeRule {scit}{up} {sc} {}
-\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl}
-\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {}
-\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl?
-\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {}
-\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {}
-\DeclareFontShapeChangeRule {scsl}{up} {sc} {}
-\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw}
-\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {}
-\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {}
-\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {}
-\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {}
-\DeclareFontShapeChangeRule {scsw}{up} {sc} {}
-\DeclareFontShapeChangeRule {sw}{sc} {scsw} {}
-\DeclareFontShapeChangeRule {sw}{ulc} {sw} {}
-\DeclareFontShapeChangeRule {sw}{up} {n} {}
-\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
-\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
-\def\merge@font@shape#1{%
- \expandafter\expandafter\expandafter
- \merge@font@shape@
- \csname shape@\f@shape @#1\endcsname
- {#1}%
- \@nil
-}
-
-\def\merge@font@shape@#1#2#3\@nil{%
- \def\reserved@a{#3}%
- \ifx\reserved@a\@empty
- \edef\f@shape{#2}%
- \else
- \maybe@load@fontshape
- \edef\reserved@a{\f@encoding /\f@family /\f@series/#1}%
- \ifcsname \reserved@a\endcsname
- \edef\f@shape{#1}%
- \else
- \ifcsname \f@encoding /\f@family /\f@series/#2\endcsname
- \edef\f@shape{#2}%
- \@font@shape@subst@warning
- \else
- \edef\f@shape{#3}%
- \@font@shape@subst@warning
- \fi
- \fi
- \fi
-}
-\protected\def\normalshape
- {\not@math@alphabet\normalshape\relax
- \fontshape\shapedefault\selectfont}%
-\def\reinstall@nfss@defs{%
- \protected\def\upshape
- {\not@math@alphabet\upshape\relax
- \fontshape\updefault\selectfont}%
- \protected\def\slshape
- {\not@math@alphabet\slshape\relax
- \fontshape\sldefault\selectfont}%
- \protected\def\scshape
- {\not@math@alphabet\scshape\relax
- \fontshape\scdefault\selectfont}%
- \protected\def\itshape
- {\not@math@alphabet\itshape\mathit
- \fontshape\itdefault\selectfont}%
- \protected\def\ulcshape
- {\not@math@alphabet\ulcshape\relax
- \fontshape{ulc}\selectfont}%
- \protected\def\swshape
- {\not@math@alphabet\swshape\relax
- \fontshape\swdefault\selectfont}%
- \protected\def\sscshape
- {\not@math@alphabet\sscshape\relax
- \fontshape\sscdefault\selectfont}%
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\DeclareFontSeriesChangeRule}{Series change rules}%
-
-\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
-\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
-\let\fontseriesforce\@undefined
-\let\fontshapeforce\@undefined
-
-\let\DeclareFontSeriesChangeRule\@undefined
-\let\merge@font@series\@undefined
-\let\merge@font@series@\@undefined
-\let\@font@shape@subst@warning\@undefined
-\let\maybe@load@fontshape\@undefined
-\let\set@target@series\@undefined
-\let\series@maybe@drop@one@m\@undefined
-\let\series@drop@one@m\@undefined
-\let\DeclareFontShapeChangeRule\@undefined
-\let\merge@font@shape\@undefined
-\let\merge@font@shape@\@undefined
-\let\normalshape\@undefined
-\let\ulcshape\@undefined
-\let\ulcdefault\@undefined
-\let\swshape\@undefined
-\let\swdefault\@undefined
-\let\sscshape\@undefined
-\let\sscdefault\@undefined
-\let\normalshape\@undefined
-
-\let\reinstall@nfss@defs\relax
-\EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
- {\reinstall@nfss@defs}{NFSS series init}%
-\g@addto@macro\@kernel@after@begindocument@before
- {\reinstall@nfss@defs\init@series@setup}
-\EndIncludeInRelease
-\IncludeInRelease{2020/02/02}%
- {\reinstall@nfss@defs}{NFSS series init}%
-\AtBeginDocument{\reinstall@nfss@defs\init@series@setup}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\reinstall@nfss@defs}{NFSS series init}%
-\EndIncludeInRelease
-%%% From File: ltfsstrc.dtx
-%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
-%% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved.
-\IncludeInRelease{2020/02/02}%
- {\@font@aliasinfo}{alias size function}%
-\DeclareSizeFunction{alias}{\sub@sfcnt\@font@aliasinfo}
-\def\@font@aliasinfo#1{%
- \@font@info{Font\space shape\space `\curr@fontshape'\space
- aliased\space to\MessageBreak `\mandatory@arg'}%
-}
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}%
- {\@font@aliasinfo}{alias size function}%
-\let\s@fct@alias\@undefined
-\let\@font@aliasinfo\@undefined
-
-\EndIncludeInRelease
-%%% From File: ltfsscmp.dtx
-%% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
-%% all rights reserved.
-\IncludeInRelease{2015/01/01}{\new@fontshape}%
- {NFSS version1 commands}%
-\let\new@fontshape\@undefined
-\let\warn@rel@i\@undefined
-\let\scan@fontshape\@undefined
-\let\scan@@fontshape\@undefined
-\let\subst@fontshape\@undefined
-\let\extra@def\@undefined
-\let\default@mextra\@undefined
-\let\preload@sizes\@undefined
-\let\err@rel@i\@undefined
-\let\newmathalphabet\@undefined
-\let\newmathalphabet@\@undefined
-\let\newmathalphabet@@@\@undefined
-\let\if@no@font@opt\@undefined
-\let\@no@font@optfalse\@undefined
-\let\define@mathalphabet\@undefined
-\let\define@mathgroup\@undefined
-\let\addtoversion\@undefined
-\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{\new@fontshape}%
- {NFSS version1 commands}%
-\gdef\new@fontshape#1#2#3#4{%
- \warn@rel@i\new@fontshape\DeclareFontShape
- \expandafter\scan@fontshape\@gobble#4<\@nil><<%
- \DeclareFontShape U{#1}{#2}{#3}\reserved@f}%
-\@onlypreamble\new@fontshape
-\gdef\warn@rel@i#1#2{%
- \@font@warning{*** NFSS release 1 command
- \noexpand#1found\MessageBreak
- *** Update by using release 2 command
- \string#2.\MessageBreak
- *** Recovery is probably possible}%
-}%
-\@onlypreamble\warn@rel@i
-\gdef\scan@fontshape{%
- \let\reserved@f\@empty
- \let\reserved@e\@empty % holds last info
- \scan@@fontshape
-}%
-\@onlypreamble\scan@fontshape
-\gdef\scan@@fontshape#1>#2#3<{%
- \ifx\@nil#1%
- \edef\reserved@f{\reserved@f\reserved@e}%
- \else
- \def\reserved@b{#1}% nick names
- \def\reserved@c{#3}%
- \in@{ at}{#3}%
- \ifin@
- \in@{pt}{#3}% not a proof but a good chance
- \ifin@
- \def\reserved@a##1 at##2pt##3\@nil{%
- \def\reserved@b{##2}%
- \def\reserved@c{##1}%
- }%
- \reserved@a#3\@nil
- \fi
- \fi
- \ifnum 0<0#2
- \edef\reserved@d{subf*\reserved@c}%
- \ifcase #2\or
- \or
- \else
- \errmessage{*** What's this? NFSS release 0? ***}%
- \fi
- \else
- \edef\reserved@d{#2\reserved@c}%
- \fi
- \ifx\reserved@d\reserved@e
- \edef\reserved@f{\reserved@f<\reserved@b>}%
- \else
- \edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
- \let\reserved@e\reserved@d
- \fi
- \expandafter\scan@@fontshape
- \fi
-}%
-\@onlypreamble\scan@@fontshape
-\gdef\subst@fontshape#1#2#3#4#5#6{%
- \warn@rel@i\subst@fontshape\DeclareFontShape
- \DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}%
-\@onlypreamble\subst@fontshape
-\gdef\extra@def#1#2#3{%
- \warn@rel@i\extra@def\DeclareFontFamily
- \DeclareFontFamily{U}{#1}{}%
-}%
-\@onlypreamble\extra@def
-\gdef\default@mextra{%
- \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
- \DeclareFontEncodingDefaults\relax
-}%
-\@onlypreamble\default@mextra
-\gdef\preload@sizes{%
- \warn@rel@i\preload@sizes\DeclarePreloadSizes
- \DeclarePreloadSizes U%
-}%
-\@onlypreamble\preload@sizes
-\gdef\err@rel@i#1#2{%
- \@latex@error{*** NFSS release 1 command \noexpand#1found%
- ^^J*** Recovery not possible. Use \string#2}%
- {The new release of NFSS doesn't support the
- \noexpand#1command^^Jany longer.
- Please upgrade your file to the syntax of NFSS
- release 2^^Jusing the \noexpand#2command.}%
- \batchmode\input.\relax
-}%
-\@onlypreamble\err@rel@i
-\gdef\newmathalphabet{%
- \if@no@font@opt
- \@latex@error{*** NFSS release 1 command
- \noexpand\newmathalphabet found%
- ^^J \space*** Automatic recovery not possible.%
- ^^J \space*** TYPE H for Help%
- }%
- {Please look at the file usrguide.tex for hints on
- how to resolve this problem.}%
- \else
- \warn@rel@i\newmathalphabet\DeclareMathAlphabet
- \fi
- \@ifstar\newmathalphabet@@@
- \newmathalphabet@@}%
-\gdef\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}%
-\gdef\newmathalphabet@@@#1#2#3#4{%
- \DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}%
-\@onlypreamble\newmathalphabet
-\@onlypreamble\newmathalphabet@@
-\@onlypreamble\newmathalphabet@@@
-\global\let\if@no@font@opt\iftrue
-\gdef\@no@font@optfalse{\let\if@no@font@opt\iffalse}%
-\gdef\define@mathalphabet{%
- \err@rel@i\define@mathalphabet\DeclareMathAlphabet
-}%
-\@onlypreamble\define@mathalphabet
-\gdef\define@mathgroup{%
- \err@rel@i\define@mathgroup\DeclareSymbolFont
-}%
-\@onlypreamble\define@mathgroup
-\def\addtoversion#1#2{%
- \warn@rel@i\addtoversion\SetMathAlphabet
- \SetMathAlphabet#2{#1}{U}}%
-\@onlypreamble\addtoversion
-\EndIncludeInRelease
%%% From File: ltpageno.dtx
%%% From File: ltxref.dtx
\IncludeInRelease{2020/10/01}%
@@ -9685,6 +6441,7 @@ of this package available from CTAN}
\IncludeInRelease{2020/10/01}%
{\enddocument}{Use Hooks}%
\def\enddocument{%
+ \@kernel@before@enddocument
\UseOneTimeHook{enddocument}%
\@kernel@after@enddocument
\@checkend{document}%
@@ -9712,8 +6469,6 @@ of this package available from CTAN}
\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
-\let\@kernel@after@enddocument\@empty
-\let\@kernel@after@enddocument@afterlastpage\@empty
\def\@enddocument@kernel@warnings{%
\ifdim \font@submax >\fontsubfuzz\relax
\@font@warning{Size substitutions with differences\MessageBreak
@@ -9773,11 +6528,19 @@ of this package available from CTAN}
\endgroup
\deadcycles\z@\@@end}
-\let\@kernel@after@enddocument\@undefined
-\let\@kernel@after@enddocument@afterlastpage\@undefined
\let\@enddocument@kernel@warnings\@undefined
\EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+ {\@kernel@before@enddocument}{kernel before hook}%
+\def\@kernel@before@enddocument{\par}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@kernel@before@enddocument}{kernel before hook}%
+
+\let\@kernel@before@enddocument\@empty
+
+\EndIncludeInRelease
\IncludeInRelease{2018/12/01}%
{\protected@file@percent}{Mask line endings}%
\protected\def\protected@file@percent{}
@@ -10132,303 +6895,4024 @@ of this package available from CTAN}
\verbatim@font\@noligs
\@ifstar\@sverb\@verb}
\EndIncludeInRelease
-\ifx\directlua\@undefined\else
-\IncludeInRelease{2015/10/01}
- {\newluafunction}{LuaTeX}%
-\ifnum\luatexversion<60 %
- \wlog{***************************************************}
- \wlog{* LuaTeX version too old for ltluatex support *}
- \wlog{***************************************************}
- \expandafter\endinput
+%%% From File: ltmath.dtx
+\IncludeInRelease{2019/10/01}%
+ {\vphantom}{Make commands robust}%
+\DeclareRobustCommand\vphantom{\v@true\h@false\ph@nt}
+\DeclareRobustCommand\hphantom{\v@false\h@true\ph@nt}
+\DeclareRobustCommand\phantom{\v@true\h@true\ph@nt}
+\DeclareRobustCommand\mathstrut{\vphantom(}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\vphantom}{Make commands robust}%
+
+\kernel@make@fragile\vphantom
+\kernel@make@fragile\hphantom
+\kernel@make@fragile\phantom
+\kernel@make@fragile\mathstrut
+
+\EndIncludeInRelease
+\IncludeInRelease{2018/12/01}%
+ {\finph@nt}{Start LR-mode}%
+\def\finph@nt{%
+ \setbox\tw@\null
+ \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
+ \ifh@ \wd\tw@\wd\z@\fi
+ \leavevmode@ifvmode\box\tw@}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\finph@nt}{Start LR-mode}%
+\def\finph@nt{%
+ \setbox\tw@\null
+ \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
+ \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
+\EndIncludeInRelease
+\IncludeInRelease{2018/12/01}%
+ {\finsm@sh}{Start LR-mode}%
+\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \leavevmode@ifvmode\box\z@}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\finsm@sh}{Start LR-mode}%
+\def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\cases}{Make commands robust}%
+\DeclareRobustCommand*\cases[1]{\left\{\,\vcenter{\normalbaselines\m@th
+ \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
+\DeclareRobustCommand*\matrix[1]{\null\,\vcenter{\normalbaselines\m@th
+ \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
+ \mathstrut\crcr\noalign{\kern-\baselineskip}
+ #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
+\DeclareRobustCommand*\pmatrix[1]{\left(\matrix{#1}\right)}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\cases}{Make commands robust}%
+
+\kernel@make@fragile\cases
+\kernel@make@fragile\matrix
+\kernel@make@fragile\pmatrix
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\tmspace}{amsmath spacing commands}%
+\DeclareRobustCommand\tmspace[3]{%
+ \ifmmode\mskip#1#2\else\leavevmode@ifvmode\kern#1#3\fi\relax}
+\DeclareRobustCommand\,{\tmspace+\thinmuskip{.16667em}}
+\let\thinspace\,
+\DeclareRobustCommand\!{\tmspace-\thinmuskip{.16667em}}
+\let\negthinspace\!
+\DeclareRobustCommand\:{\tmspace+\medmuskip{.2222em}}
+\let\medspace\:
+\let\>=\:
+\DeclareRobustCommand\negmedspace{\tmspace-\medmuskip{.2222em}}
+\DeclareRobustCommand\;{\tmspace+\thickmuskip{.2777em}}
+\let\thickspace\;
+\DeclareRobustCommand\negthickspace{\tmspace-\thickmuskip{.2777em}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\tmspace}{amsmath spacing commands}%
+
+\let\tmspace\@undefined
+\DeclareRobustCommand{\,}{%
+ \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi}
+\DeclareRobustCommand\thinspace{\leavevmode@ifvmode\kern .16667em }
+\DeclareRobustCommand\negthinspace{\leavevmode@ifvmode\kern-.16667em }
+\def\>{\mskip\medmuskip}
+\let\:=\>
+\def\;{\mskip\thickmuskip}
+\def\!{\mskip-\thinmuskip}
+
+\let\negmedspace\@undefined
+\let\negthickspace\@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\(}{Make \( robust}%
+\DeclareRobustCommand\({%
+ \relax\ifmmode\@badmath\else$\fi}%
+\DeclareRobustCommand\){%
+ \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\(}{Make \( robust}%
+\def\({%
+ \relax\ifmmode\@badmath\else$\fi}%
+\expandafter\let\csname\string( \endcsname\@undefined
+\def\){%
+ \relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}%
+\expandafter\let\csname\string) \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\[}{Make \[ robust}%
+\DeclareRobustCommand\[{%
+ \relax\ifmmode
+ \@badmath
+ \else
+ \ifvmode
+ \nointerlineskip
+ \makebox[.6\linewidth]{}%
+ \fi
+ $$%%$$ BRACE MATCH HACK
+ \fi
+}%
+\DeclareRobustCommand\]{%
+ \relax\ifmmode
+ \ifinner
+ \@badmath
+ \else
+ $$%%$$ BRACE MATCH HACK
+ \fi
+ \else
+ \@badmath
+ \fi
+ \ignorespaces
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\[}{Make \[ robust}%
+\def\[{%
+ \relax\ifmmode
+ \@badmath
+ \else
+ \ifvmode
+ \nointerlineskip
+ \makebox[.6\linewidth]{}%
+ \fi
+ $$%%$$ BRACE MATCH HACK
+ \fi
+}%
+\expandafter\let\csname\string[ \endcsname\@undefined
+\def\]{%
+ \relax\ifmmode
+ \ifinner
+ \@badmath
+ \else
+ $$%%$$ BRACE MATCH HACK
+ \fi
+ \else
+ \@badmath
+ \fi
+ \ignorespaces
+}%
+\expandafter\let\csname\string] \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@xeqncr}{eqnarray support calc syntax}%
+\def\@xeqncr[#1]{%
+ \ifnum0=`{\fi}%
+ \@@eqncr
+ \noalign{\penalty\@eqpen\vskip\jot\@vspace@calcify{#1}}%
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@xeqncr}{eqnarray support calc syntax}%
+
+\def\@xeqncr[#1]{%
+ \ifnum0=`{\fi}%
+ \@@eqncr
+ \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
+}
+\EndIncludeInRelease
+%%% From File: ltlists.dtx
+%%% From File: ltboxes.dtx
+\IncludeInRelease{2015/01/01}%
+ {\makebox}{Make \makebox robust}%
+\DeclareRobustCommand\makebox{%
+ \leavevmode
+ \@ifnextchar(%)
+ \@makepicbox
+ {\@ifnextchar[\@makebox\mbox}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\makebox}{Make \makebox robust}%
+\def\makebox{%
+ \leavevmode
+ \@ifnextchar(%)
+ \@makepicbox
+ {\@ifnextchar[\@makebox\mbox}}%
+\expandafter\let\csname makebox \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@imakepicbox}{default units}%
+\long\def\@imakepicbox(#1,#2)[#3]#4{%
+ \@defaultunitsset\@tempdimc{#2}\unitlength
+ \vbox to\@tempdimc
+ {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
+ \let\mb@t\vss
+ \@tfor\reserved@a :=#3\do{%
+ \if s\reserved@a
+ \let\mb@l\relax\let\mb@r\relax
+ \else
+ \expandafter\let\csname mb@\reserved@a\endcsname\relax
+ \fi}%
+ \mb@t
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \hb@xt@\@tempdimc{\mb@l #4\mb@r}%
+ \mb@b
+ \kern\z@}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@imakepicbox}{default units}%
+\long\def\@imakepicbox(#1,#2)[#3]#4{%
+ \vbox to#2\unitlength
+ {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
+ \let\mb@t\vss
+ \@tfor\reserved@a :=#3\do{%
+ \if s\reserved@a
+ \let\mb@l\relax\let\mb@r\relax
+ \else
+ \expandafter\let\csname mb@\reserved@a\endcsname\relax
+ \fi}%
+ \mb@t
+ \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
+ \mb@b
+ \kern\z@}}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\savebox}{Make \savebox robust}%
+\DeclareRobustCommand\savebox[1]{%
+ \@ifnextchar(%)
+ {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\savebox}{Make \savebox robust}%
+\def\savebox#1{%
+ \@ifnextchar(%)
+ {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}%
+\expandafter\let\csname savebox \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\framebox}{Make \framebox robust}%
+\DeclareRobustCommand\framebox{%
+ \@ifnextchar(%)
+ \@framepicbox{\@ifnextchar[\@framebox\fbox}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\framebox}{Make \framebox robust}%
+\def\framebox{%
+ \@ifnextchar(%)
+ \@framepicbox{\@ifnextchar[\@framebox\fbox}}%
+\expandafter\let\csname framebox \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\parbox}{Make \parbox robust}%
+\DeclareRobustCommand\parbox{%
+ \@ifnextchar[%]
+ \@iparbox
+ {\@iiiparbox c\relax[s]}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\parbox}{Make \parbox robust}%
+\def\parbox{%
+ \@ifnextchar[%]
+ \@iparbox
+ {\@iiiparbox c\relax[s]}}%
+\expandafter\let\csname parbox \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2017-04-15}%
+ {\normallineskiplimit}
+ {reset \lineskiplimit}%
+\def\@arrayparboxrestore{%
+ \let\if@nobreak\iffalse
+ \let\if@noskipsec\iffalse
+ \let\par\@@par
+ \let\-\@dischyph
+ \let\'\@acci\let\`\@accii\let\=\@acciii
+ \parindent\z@ \parskip\z@skip
+ \everypar{}%
+ \linewidth\hsize
+ \@totalleftmargin\z@
+ \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
+ \parfillskip\@flushglue
+ \lineskip\normallineskip
+ \lineskiplimit\normallineskiplimit
+ \baselineskip\normalbaselineskip
+ \sloppy}
+\EndIncludeInRelease
+\IncludeInRelease{0000-00-00}%
+ {\normallineskiplimit}
+ {reset \lineskiplimit}%
+\def\@arrayparboxrestore{%
+ \let\if@nobreak\iffalse
+ \let\if@noskipsec\iffalse
+ \let\par\@@par
+ \let\-\@dischyph
+ \let\'\@acci\let\`\@accii\let\=\@acciii
+ \parindent\z@ \parskip\z@skip
+ \everypar{}%
+ \linewidth\hsize
+ \@totalleftmargin\z@
+ \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
+ \parfillskip\@flushglue \lineskip\normallineskip
+ \baselineskip\normalbaselineskip
+ \sloppy}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\rule}{Make \rule robust}%
+\DeclareRobustCommand\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\rule}{Make \rule robust}%
+\def\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
+\expandafter\let\csname rule \endcsname\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\raisebox}{Make \raisebox robust}%
+\DeclareRobustCommand\raisebox[1]{%
+ \leavevmode
+ \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\raisebox}{Make \raisebox robust}%
+\def\raisebox#1{%
+ \leavevmode
+ \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
+\expandafter\let\csname raisebox \endcsname\@undefined
+\EndIncludeInRelease
+%%% From File: lttab.dtx
+\IncludeInRelease{2020/10/01}%
+ {\@itabcr}{Tabbing calc syntax}%
+\def\@itabcr[#1]{\@vspace@calcify{#1}\@startline\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@itabcr}{Tabbing calc syntax}%
+
+\def\@itabcr[#1]{\vskip #1\@startline\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\pushtabs}{Make commands robust}%
+\DeclareRobustCommand\pushtabs{%
+ \@stopfield\@addfield\global\advance\@tabpush \@ne \begingroup
+ \@contfield}
+\DeclareRobustCommand\poptabs{\@stopfield\@addfield
+ \ifnum \@tabpush >\z@
+ \endgroup
+ \global\advance\@tabpush \m@ne
+ \ifnum \@curtab >\@hightab
+ \global \@curtab \@hightab
+ \@badtab
+ \fi
+ \else
+ \@badpoptabs
+ \fi
+ \@contfield}
+\DeclareRobustCommand\kill{\@stopfield\@startline\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\pushtabs}{Make commands robust}%
+
+\kernel@make@fragile\pushtabs
+\kernel@make@fragile\poptabs
+\kernel@make@fragile\kill
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@yargarraycr}{tabular support calc syntax}%
+\def\@yargarraycr#1{\cr\noalign{\@vspace@calcify{#1}}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@yargarraycr}{tabular support calc syntax}%
+
+\def\@yargarraycr#1{\cr\noalign{\vskip #1}}
+\EndIncludeInRelease
+%%% From File: ltpictur.dtx
+\IncludeInRelease{2020/10/01}%
+ {\@defaultunitsset}{default units}%
+\def\@defaultunitsset#1#2#3{%
+ \@defaultunits#1\dimexpr#2#3\relax\relax\@nnil}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@defaultunitsset}{default units}%
+\let\@defaultunitsset\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@picture}{default units}%
+\def\@picture(#1,#2)(#3,#4){%
+ \@defaultunitsset\@picht{#2}\unitlength
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \setbox\@picbox\hb@xt@\@tempdimc\bgroup
+ \@defaultunitsset\@tempdimc{#3}\unitlength
+ \hskip -\@tempdimc
+ \@defaultunitsset\@tempdimc{#4}\unitlength
+ \lower\@tempdimc\hbox\bgroup
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@picture}{default units}%
+\def\@picture(#1,#2)(#3,#4){%
+ \@picht#2\unitlength
+ \setbox\@picbox\hb@xt@#1\unitlength\bgroup
+ \hskip -#3\unitlength
+ \lower #4\unitlength\hbox\bgroup
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\put}{default units}%
+\expandafter\let\csname put \endcsname\@undefind
+\long\def\put(#1,#2)#3{%
+ \@killglue
+ \@defaultunitsset\@tempdimc{#2}\unitlength
+ \raise\@tempdimc
+ \hb@xt@\z@{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \kern\@tempdimc
+ #3\hss}%
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\put}{default units}%
+\expandafter\let\csname put \endcsname\@undefind
+\long\def\put(#1,#2)#3{%
+ \@killglue\raise#2\unitlength
+ \hb@xt@\z@{\kern#1\unitlength #3\hss}%
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\multiput}{default units}%
+\expandafter\let\csname multiput \endcsname\@undefind
+\def\multiput(#1,#2)#3{%
+ \@defaultunitsset\@xdim{#1}\unitlength
+ \@defaultunitsset\@ydim{#2}\unitlength
+ \@multiput(}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\multiput}{default units}%
+\expandafter\let\csname multiput \endcsname\@undefind
+\def\multiput(#1,#2)#3{%
+ \@xdim #1\unitlength
+ \@ydim #2\unitlength
+ \@multiput(}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@multiput}{default units}%
+\long\def\@multiput(#1,#2)#3#4{%
+ \@killglue\@multicnt #3\relax
+ \@whilenum \@multicnt >\z@\do
+ {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
+ \advance\@multicnt\m@ne
+ \@defaultunitsset{\advance\@xdim}{#1}\unitlength
+ \@defaultunitsset{\advance\@ydim}{#2}\unitlength}%
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@multiput}{default units}%
+\long\def\@multiput(#1,#2)#3#4{%
+ \@killglue\@multicnt #3\relax
+ \@whilenum \@multicnt >\z@\do
+ {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
+ \advance\@multicnt\m@ne
+ \advance\@xdim#1\unitlength\advance\@ydim#2\unitlength}%
+ \ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@istackcr}{\shortstack calc support}%
+\def\@istackcr[#1]{\cr\noalign{\@vspace@calcify{#1}}\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@istackcr}{\shortstack calc support}%
+
+\def\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\line}{default units}%
+\expandafter\let\csname line \endcsname\@undefind
+\def\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
+ \@defaultunitsset\@linelen{#3}\unitlength
+ \ifdim\@linelen<\z@\@badlinearg\else
+ \ifnum\@xarg =\z@ \@vline
+ \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
+ \fi
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\line}{default units}%
+\expandafter\let\csname line \endcsname\@undefind
+\def\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
+ \@linelen #3\unitlength
+ \ifdim\@linelen<\z@\@badlinearg\else
+ \ifnum\@xarg =\z@ \@vline
+ \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
+ \fi
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\vector}{default units}%
+\expandafter\let\csname vector \endcsname\@undefind
+\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
+ \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
+ \ifnum\@tempcnta<5\relax
+ \@defaultunitsset\@linelen{#3}\unitlength
+ \ifdim\@linelen<\z@\@badlinearg\else
+ \ifnum\@xarg =\z@ \@vvector
+ \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
+ \fi
+ \fi
+ \else\@badlinearg\fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\vector}{default units}%
+\expandafter\let\csname vector \endcsname\@undefind
+\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
+ \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
+ \ifnum\@tempcnta<5\relax
+ \@linelen #3\unitlength
+ \ifdim\@linelen<\z@\@badlinearg\else
+ \ifnum\@xarg =\z@ \@vvector
+ \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
+ \fi
+ \fi
+ \else\@badlinearg\fi}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\dashbox}{default units}%
+\expandafter\let\csname dashbox \endcsname\@undefind
+\def\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \z@skip
+\lineskip \z@skip
+\@defaultunitsset\@dashdim{#2}\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@defaultunitsset\@dashdim{#1}\unitlength
+\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt\@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
+\@width \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(0,#3){\copy\@dashbox}%
+\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
+\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
+\multiply\@dashdim \thr@@
\fi
-\long\def\@gobble#1{}
-\long\def\@firstofone#1{#1}
-\ifx\e@alloc@attribute@count\@undefined
- \countdef\e@alloc@attribute@count=258
- \e@alloc@attribute@count=\z@
+\setbox\@dashbox \hbox{%
+ \@defaultunitsset\@tempdimc{#1}\unitlength
+ \vrule \@height \@halfwidth \@depth \@halfwidth \@width \@tempdimc
+ \hskip\@tempdimc}%
+\@tempcnta\z@
+\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
+\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}%
+\@defaultunitsset\@dashdim{#3}\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@defaultunitsset\@dashdim{#1}\unitlength
+\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt \@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else
+\divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox\hbox{\hskip -\@halfwidth
+\vrule \@width \@wholewidth
+\@height \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(#2,0){\copy\@dashbox}%
+\put(0,#3){\lower\@dashdim\copy\@dashbox}%
+\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
+\multiply\@dashdim \thr@@
\fi
-\def\newattribute#1{%
- \e@alloc\attribute\attributedef
- \e@alloc@attribute@count\m@ne\e@alloc@top#1%
-}
-\def\setattribute#1#2{#1=\numexpr#2\relax}
-\def\unsetattribute#1{#1=-"7FFFFFFF\relax}
-\ifx\e@alloc@ccodetable@count\@undefined
- \countdef\e@alloc@ccodetable@count=259
- \e@alloc@ccodetable@count=\z@
+\@defaultunitsset\@tempdimb{#1}\unitlength
+\setbox\@dashbox\hbox{%
+ \vrule \@width \@wholewidth \@height\@tempdimb}%
+\@tempcnta\z@
+\put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
+\do{\vskip\@tempdimb\copy\@dashbox\advance\@tempcnta \@ne }%
+\vskip\@dashdim}}\@tempcnta\z@
+\put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
+\do{\vskip\@tempdimb\copy\@dashbox\advance\@tempcnta \@ne }%
+\vskip\@dashdim}}}\@makepicbox(#2,#3)}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\dashbox}{default units}%
+\expandafter\let\csname dashbox \endcsname\@undefind
+\def\dashbox#1(#2,#3){%
+\leavevmode\hb@xt@\z@{\baselineskip \z@skip
+\lineskip \z@skip
+\@dashdim #2\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt\@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox \hbox{%
+ \vrule \@height \@halfwidth \@depth \@halfwidth
+ \@width \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(0,#3){\copy\@dashbox}%
+\put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
+\put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
+\multiply\@dashdim \thr@@
\fi
-\def\newcatcodetable#1{%
- \e@alloc\catcodetable\chardef
- \e@alloc@ccodetable@count\m@ne{"8000}#1%
- \initcatcodetable\allocationnumber
+\setbox\@dashbox \hbox{%
+ \vrule \@height \@halfwidth \@depth \@halfwidth
+ \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
+\put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
+\put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
+\do{\copy\@dashbox\advance\@tempcnta \@ne }}%
+\@dashdim #3\unitlength
+\@dashcnt \@dashdim \advance\@dashcnt 200
+\@dashdim #1\unitlength\divide\@dashcnt \@dashdim
+\ifodd\@dashcnt \@dashdim \z@
+\advance\@dashcnt \@ne \divide\@dashcnt \tw@
+\else
+\divide\@dashdim \tw@ \divide\@dashcnt \tw@
+\advance\@dashcnt \m@ne
+\setbox\@dashbox\hbox{\hskip -\@halfwidth
+\vrule \@width \@wholewidth
+\@height \@dashdim}\put(0,0){\copy\@dashbox}%
+\put(#2,0){\copy\@dashbox}%
+\put(0,#3){\lower\@dashdim\copy\@dashbox}%
+\put(#2,#3){\lower\@dashdim\copy\@dashbox}%
+\multiply\@dashdim \thr@@
+\fi
+\setbox\@dashbox\hbox{\vrule \@width \@wholewidth
+\@height #1\unitlength}\@tempcnta\z@
+\put(0,0){%
+ \hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
+ \do{\vskip #1\unitlength\copy\@dashbox
+ \advance\@tempcnta\@ne }%
+ \vskip\@dashdim}}\@tempcnta\z@
+\put(#2,0){%
+ \hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
+ \do{\vskip #1\unitlength\copy\@dashbox
+ \advance\@tempcnta \@ne }%
+ \vskip\@dashdim}}}\@makepicbox(#2,#3)}
+\EndIncludeInRelease
+\IncludeInRelease{2016/03/31}%
+ {\@ovhlinetrue}%
+ {Avoid almost zero length leaders}%
+\newif\if@ovvline \@ovvlinetrue
+\newif\if@ovhline \@ovhlinetrue
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@ovhlinetrue}%
+ {Avoid almost zero length leaders}%
+\let\if@ovvline\@undefined
+\let\if@ovhline\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@oval}{default units}%
+\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
+ \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+ \@ovvlinefalse \@ovhlinefalse
+ \@tfor\reserved@a :=#3\do{%
+ \csname @ov\reserved@a false\endcsname}%
+ \@defaultunitsset\@ovxx{#1}\unitlength
+ \@defaultunitsset\@ovyy{#2}\unitlength
+ \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx \@ovvlinetrue
+ \else \@ovyy \ifdim \@ovyy =\@ovxx \else \@ovhlinetrue \fi\fi
+ \advance \@tempdimb -2\p@
+ \@getcirc \@tempdimb
+ \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
+ \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
+ \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
+ \ifdim \@ovdx >\z@ \@ovhlinetrue \fi
+ \ifdim \@ovdy >\z@ \@ovvlinetrue \fi
+ \@circlefnt \setbox\@tempboxa
+ \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
+ \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
+ \if@ovt \@ovhorz \kern -\@ovxx \fi
+ \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
+ \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
+ \endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{2016/03/31}%
+ {\@oval}{default units}%
+\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
+ \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+ \@ovvlinefalse \@ovhlinefalse
+ \@tfor\reserved@a :=#3\do{%
+ \csname @ov\reserved@a false\endcsname}%
+ \@ovxx #1\unitlength
+ \@ovyy #2\unitlength
+ \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx \@ovvlinetrue
+ \else \@ovyy \ifdim \@ovyy =\@ovxx \else \@ovhlinetrue
+ \fi\fi
+ \advance \@tempdimb -2\p@
+ \@getcirc \@tempdimb
+ \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
+ \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
+ \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
+ \ifdim \@ovdx >\z@ \@ovhlinetrue \fi
+ \ifdim \@ovdy >\z@ \@ovvlinetrue \fi
+ \@circlefnt \setbox\@tempboxa
+ \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
+ \if@ovl
+ \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx
+ \fi
+ \if@ovt \@ovhorz \kern -\@ovxx \fi
+ \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
+ \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
+ \endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@oval}{default units}%
+\def\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
+ \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
+ \@tfor\reserved@a :=#3\do
+ {\csname @ov\reserved@a false\endcsname}%
+ \@ovxx #1\unitlength
+ \@ovyy #2\unitlength
+ \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
+ \advance \@tempdimb -2\p@
+ \@getcirc \@tempdimb
+ \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
+ \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
+ \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
+ \@circlefnt \setbox\@tempboxa
+ \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
+ \if@ovl
+ \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx
+ \fi
+ \if@ovt \@ovhorz \kern -\@ovxx \fi
+ \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
+ \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
+ \endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{2016/03/31}%
+ {\@ovvert}{Avoid almost zero length leaders}%
+\def\@ovvert#1#2{\vbox to\@ovyy{%
+ \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
+ \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
+ \else \kern \@ovri \kern \@ovdy \fi
+ \if@ovvline \leaders\vrule \@width \@wholewidth \fi
+ \vfil \nointerlineskip
+ \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
+ \hbox{\char \@tempcntb}%
+ \else \kern \@ovdy \kern \@ovro \fi}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@ovvert}{Avoid almost zero length leaders}%
+\def\@ovvert#1#2{\vbox to\@ovyy{%
+ \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
+ \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
+ \else \kern \@ovri \kern \@ovdy \fi
+ \leaders\vrule \@width \@wholewidth\vfil \nointerlineskip
+ \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
+ \hbox{\char \@tempcntb}%
+ \else \kern \@ovdy \kern \@ovro \fi}}
+\EndIncludeInRelease
+\IncludeInRelease{2016/03/31}%
+ {\@ovhorz}{Avoid almost zero length leaders}%
+\def\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
+ \if@ovr \else \kern \@ovdx \fi
+ \if@ovhline \leaders \hrule \@height \@wholewidth \fi
+ \hfil
+ \if@ovl \else \kern \@ovdx \fi
+ \kern \@ovri}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@ovhorz}{Avoid almost zero length leaders}%
+\def\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
+ \if@ovr \else \kern \@ovdx \fi
+ \leaders \hrule \@height \@wholewidth \hfil
+ \if@ovl \else \kern \@ovdx \fi
+ \kern \@ovri}}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@circle}{default units}%
+\def\@circle#1{%
+ \begingroup \boxmaxdepth \maxdimen
+ \@defaultunitsset\@tempdimb{#1}\unitlength
+ \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
+ \@ovro\ht\@tempboxa
+ \setbox\@tempboxa\hbox{\@circlefnt
+ \advance\@tempcnta\tw@ \char \@tempcnta
+ \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
+ \advance\@tempcnta\tw@
+ \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
+ \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
+ \else \@circ\@tempdimb{96}\fi\endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@circle}{default units}%
+\def\@circle#1{%
+ \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength
+ \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
+ \@ovro\ht\@tempboxa
+ \setbox\@tempboxa\hbox{\@circlefnt
+ \advance\@tempcnta\tw@ \char \@tempcnta
+ \advance\@tempcnta\m@ne \char \@tempcnta
+ \kern -2\@tempdima
+ \advance\@tempcnta\tw@
+ \raise \@tempdima \hbox{\char\@tempcnta}%
+ \raise \@tempdima
+ \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
+ \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
+ \else \@circ\@tempdimb{96}\fi\endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@dot}{default units}%
+\def\@dot#1{%
+ \@defaultunitsset\@tempdimb{#1}\unitlength
+ \@circ\@tempdimb{112}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@dot}{default units}%
+\def\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@bezier}{default units}%
+\def\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
+ \ifnum #1=\z@
+ \@defaultunitsset\@ovxx{#4}\unitlength
+ \@defaultunitsset{\advance\@ovxx}{-#2}\unitlength
+ \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
+ \@defaultunitsset\@ovdx{#6}\unitlength
+ \@defaultunitsset{\advance\@ovdx}{-#4}\unitlength
+ \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
+ \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
+ \@defaultunitsset\@ovyy{#5}\unitlength
+ \@defaultunitsset{\advance\@ovyy}{-#3}\unitlength
+ \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
+ \@defaultunitsset\@ovdy{#7}\unitlength
+ \@defaultunitsset{\advance\@ovdy}{-#5}\unitlength
+ \ifdim \@ovdy<\z@ \@ovdy -\@ovdy \fi
+ \ifdim \@ovyy<\@ovdy \@ovyy \@ovdy \fi
+ \@multicnt
+ \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
+ \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
+ \ifnum \qbeziermax<\@multicnt
+ \@multicnt\qbeziermax\relax
+ \fi
+ \else \@multicnt#1\relax \fi
+ \@tempcnta\@multicnt \advance\@tempcnta\@ne
+ \@defaultunitsset\@ovdx{#4}\unitlength
+ \@defaultunitsset{\advance\@ovdx}{-#2}\unitlength
+ \multiply\@ovdx \tw@
+ \@defaultunitsset\@ovxx{#6}\unitlength
+ \@defaultunitsset{\advance\@ovxx}{-#2}\unitlength
+ \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
+ \@defaultunitsset\@ovdy{#5}\unitlength
+ \@defaultunitsset{\advance\@ovdy}{-#3}\unitlength
+ \multiply\@ovdy \tw@
+ \@defaultunitsset\@ovyy{#7}\unitlength
+ \@defaultunitsset{\advance\@ovyy}{-#3}\unitlength
+ \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
+ \setbox\@tempboxa\hbox{%
+ \hskip -\@halfwidth
+ \vrule \@height\@halfwidth
+ \@depth \@halfwidth
+ \@width \@wholewidth}%
+ \put(#2,#3){%
+ \count@\z@
+ \@whilenum{\count@<\@tempcnta}\do
+ {\@xdim\count@\@ovxx
+ \advance\@xdim\@ovdx
+ \divide\@xdim\@multicnt
+ \multiply\@xdim\count@
+ \@ydim\count@\@ovyy
+ \advance\@ydim\@ovdy
+ \divide\@ydim\@multicnt
+ \multiply\@ydim\count@
+ \raise \@ydim
+ \hb@xt@\z@{\kern\@xdim
+ \unhcopy\@tempboxa\hss}%
+ \advance\count@\@ne}}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@bezier}{default units}%
+\def\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
+ \ifnum #1=\z@
+ \@ovxx #4\unitlength
+ \advance\@ovxx -#2\unitlength
+ \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
+ \@ovdx #6\unitlength
+ \advance\@ovdx -#4\unitlength
+ \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
+ \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
+ \@ovyy #5\unitlength
+ \advance\@ovyy -#3\unitlength
+ \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
+ \@ovdy #7\unitlength
+ \advance\@ovdy -#5\unitlength
+ \ifdim \@ovdy<\z@ \@ovdy -\@ovdy \fi
+ \ifdim \@ovyy<\@ovdy \@ovyy \@ovdy \fi
+ \@multicnt
+ \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
+ \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
+ \ifnum
+ \qbeziermax<\@multicnt \@multicnt\qbeziermax\relax
+ \fi
+ \else \@multicnt#1\relax \fi
+ \@tempcnta\@multicnt \advance\@tempcnta\@ne
+ \@ovdx #4\unitlength \advance\@ovdx -#2\unitlength
+ \multiply\@ovdx \tw@
+ \@ovxx #6\unitlength \advance\@ovxx -#2\unitlength
+ \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
+ \@ovdy #5\unitlength \advance\@ovdy -#3\unitlength
+ \multiply\@ovdy \tw@
+ \@ovyy #7\unitlength \advance\@ovyy -#3\unitlength
+ \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
+ \setbox\@tempboxa\hbox{%
+ \hskip -\@halfwidth
+ \vrule \@height\@halfwidth
+ \@depth \@halfwidth
+ \@width \@wholewidth}%
+ \put(#2,#3){%
+ \count@\z@
+ \@whilenum{\count@<\@tempcnta}\do
+ {\@xdim\count@\@ovxx
+ \advance\@xdim\@ovdx
+ \divide\@xdim\@multicnt
+ \multiply\@xdim\count@
+ \@ydim\count@\@ovyy
+ \advance\@ydim\@ovdy
+ \divide\@ydim\@multicnt
+ \multiply\@ydim\count@
+ \raise \@ydim
+ \hb@xt@\z@{\kern\@xdim
+ \unhcopy\@tempboxa\hss}%
+ \advance\count@\@ne}}}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\bezier}{Make commands robust}%
+\MakeRobust\bezier
+\MakeRobust\circle
+\MakeRobust\dashbox
+\MakeRobust\line
+\MakeRobust\linethickness
+\MakeRobust\multiput
+\MakeRobust\oval
+\MakeRobust\put
+\MakeRobust\qbezier
+\MakeRobust\shortstack
+\MakeRobust\thinlines
+\MakeRobust\vector
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\bezier}{Make commands robust}%
+
+\kernel@make@fragile\bezier
+\kernel@make@fragile\circle
+\kernel@make@fragile\dashbox
+\kernel@make@fragile\line
+\kernel@make@fragile\linethickness
+\kernel@make@fragile\multiput
+\kernel@make@fragile\oval
+\kernel@make@fragile\put
+\kernel@make@fragile\qbezier
+\kernel@make@fragile\shortstack
+\kernel@make@fragile\thinlines
+\kernel@make@fragile\vector
+
+\EndIncludeInRelease
+%%% From File: ltthm.dtx
+%%% From File: ltsect.dtx
+\IncludeInRelease{2019/10/01}%
+ {\title}{Make commands robust}%
+\DeclareRobustCommand\title[1]{\gdef\@title{#1}}
+\DeclareRobustCommand*\author[1]{\gdef\@author{#1}}
+\DeclareRobustCommand*\date[1]{\gdef\@date{#1}}
+\DeclareRobustCommand\thanks[1]{\footnotemark
+ \protected@xdef\@thanks{\@thanks
+ \protect\footnotetext[\the\c@footnote]{#1}}%
}
-\newcatcodetable\catcodetable@initex
-\newcatcodetable\catcodetable@string
-\begingroup
- \def\setrangecatcode#1#2#3{%
- \ifnum#1>#2 %
- \expandafter\@gobble
+\DeclareRobustCommand\and{% % \begin{tabular}
+ \end{tabular}%
+ \hskip 1em \@plus.17fil%
+ \begin{tabular}[t]{c}}% % \end{tabular}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\title}{Make commands robust}%
+
+\kernel@make@fragile\title
+\kernel@make@fragile\author
+\kernel@make@fragile\date
+\kernel@make@fragile\thanks
+\kernel@make@fragile\and
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\addcontentsline}{fourth argument}%
+\def\addcontentsline#1#2#3{%
+ \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}{}%
+ \protected@file@percent}}
+\EndIncludeInRelease
+\IncludeInRelease{2018/12/01}%
+ {\addcontentsline}{Mask line endings}%
+ \def\addcontentsline#1#2#3{%
+ \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}%
+ \protected@file@percent}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\addcontentsline}{Mask line endings}%
+\def\addcontentsline#1#2#3{%
+ \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
+\EndIncludeInRelease
+\IncludeInRelease{2018/12/01}%
+ {\@dottedtocline}{Prevent protrusion}%
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5%
+ \kern-\p@\kern\p@}%
+ \par}%
+ \fi}
+
+\DeclareRobustCommand\noprotrusion{\leavevmode\kern-\p@\kern\p@}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@dottedtocline}{Prevent protrusion}%
+\def\@dottedtocline#1#2#3#4#5{%
+ \ifnum #1>\c@tocdepth \else
+ \vskip \z@ \@plus.2\p@
+ {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
+ \parindent #2\relax\@afterindenttrue
+ \interlinepenalty\@M
+ \leavevmode
+ \@tempdima #3\relax
+ \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
+ {#4}\nobreak
+ \leaders\hbox{$\m@th
+ \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
+ mu$}\hfill
+ \nobreak
+ \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
+ \par}%
+ \fi}
+
+\let\noprotrusion\@undefined
+\EndIncludeInRelease
+%%% From File: ltfloat.dtx
+\IncludeInRelease{2015/01/01}%
+ {\@xfloat}{Check float options}%
+\def\@xfloat #1[#2]{%
+ \@nodocument
+ \def \@captype {#1}%
+ \def \@fps {#2}%
+ \@onelevel@sanitize \@fps
+ \def \reserved@b {!}%
+ \ifx \reserved@b \@fps
+ \@fpsadddefault
+ \else
+ \ifx \@fps \@empty
+ \@fpsadddefault
+ \fi
+ \fi
+ \ifhmode
+ \@bsphack
+ \@floatpenalty -\@Mii
+ \else
+ \@floatpenalty-\@Miii
+ \fi
+ \ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else
+ \@next\@currbox\@freelist
+ {%
+ \@tempcnta \sixt@@n
+ \expandafter \@tfor \expandafter \reserved@a
+ \expandafter :\expandafter =\@fps
+ \do
+ {%
+ \if \reserved@a h%
+ \ifodd \@tempcnta
+ \else
+ \advance \@tempcnta \@ne
+ \fi
+ \else\if \reserved@a t%
+ \@setfpsbit \tw@
+ \else\if \reserved@a b%
+ \@setfpsbit 4%
+ \else\if \reserved@a p%
+ \@setfpsbit 8%
+ \else\if \reserved@a !%
+ \ifnum \@tempcnta>15
+ \advance\@tempcnta -\sixt@@n\relax
+ \fi
+ \else
+ \@latex@error{Unknown float option `\reserved@a'}%
+ {Option `\reserved@a' ignored and `p' used.}%
+ \@setfpsbit 8%
+ \fi\fi\fi\fi\fi
+ }%
+ \@tempcntb \csname ftype@\@captype \endcsname
+ \multiply \@tempcntb \@xxxii
+ \advance \@tempcnta \@tempcntb
+ \global \count\@currbox \@tempcnta
+ }%
+ \@fltovf
+ \fi
+ \global \setbox\@currbox
+ \color@vbox
+ \normalcolor
+ \vbox \bgroup
+ \hsize\columnwidth
+ \@parboxrestore
+ \@floatboxreset
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@xfloat}{Check float options}%
+\def\@xfloat #1[#2]{%
+ \@nodocument
+ \def \@captype {#1}%
+ \def \@fps {#2}%
+ \@onelevel@sanitize \@fps
+ \def \reserved@b {!}%
+ \ifx \reserved@b \@fps
+ \@fpsadddefault
+ \else
+ \ifx \@fps \@empty
+ \@fpsadddefault
+ \fi
+ \fi
+ \ifhmode
+ \@bsphack
+ \@floatpenalty -\@Mii
+ \else
+ \@floatpenalty-\@Miii
+ \fi
+ \ifinner
+ \@parmoderr\@floatpenalty\z@
+ \else
+ \@next\@currbox\@freelist
+ {%
+ \@tempcnta \sixt@@n
+ \expandafter \@tfor \expandafter \reserved@a
+ \expandafter :\expandafter =\@fps
+ \do
+ {%
+ \if \reserved@a h%
+ \ifodd \@tempcnta
+ \else
+ \advance \@tempcnta \@ne
+ \fi
+ \fi
+ \if \reserved@a t%
+ \@setfpsbit \tw@
+ \fi
+ \if \reserved@a b%
+ \@setfpsbit 4%
+ \fi
+ \if \reserved@a p%
+ \@setfpsbit 8%
+ \fi
+ \if \reserved@a !%
+ \ifnum \@tempcnta>15
+ \advance\@tempcnta -\sixt@@n\relax
+ \fi
+ \fi
+ }%
+ \@tempcntb \csname ftype@\@captype \endcsname
+ \multiply \@tempcntb \@xxxii
+ \advance \@tempcnta \@tempcntb
+ \global \count\@currbox \@tempcnta
+ }%
+ \@fltovf
+ \fi
+ \global \setbox\@currbox
+ \color@vbox
+ \normalcolor
+ \vbox \bgroup
+ \hsize\columnwidth
+ \@parboxrestore
+ \@floatboxreset
+}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\end@dblfloat}{float order in 2-column}%
+\def\end@dblfloat{%
+ \if@twocolumn
+ \@endfloatbox
+ \ifnum\@floatpenalty <\z@
+ \@largefloatcheck
+ \global\dp\@currbox1sp %
+ \@cons\@currlist\@currbox
+ \ifnum\@floatpenalty <-\@Mii
+ \penalty -\@Miv
+ \@tempdima\prevdepth
+ \vbox{}%
+ \prevdepth\@tempdima
+ \penalty\@floatpenalty
+ \else
+ \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
+ \fi
+ \fi
+ \else
+ \end@float
+ \fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\end@dblfloat}{float order in 2-column}%
+\def\end@dblfloat{%
+\if@twocolumn
+ \@endfloatbox
+ \ifnum\@floatpenalty <\z@
+ \@largefloatcheck
+ \@cons\@dbldeferlist\@currbox
+ \fi
+ \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
+\else
+ \end@float
+\fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@dblfloatplacement}{float order in 2-column}%
+\def\@dblfloatplacement{\global\@dbltopnum\c@dbltopnumber
+ \global\@dbltoproom \dbltopfraction\@colht
+ \@textmin \@colht
+ \advance \@textmin -\@dbltoproom
+ \@fpmin \dblfloatpagefraction\textheight
+ \@fptop \@dblfptop
+ \@fpsep \@dblfpsep
+ \@fpbot \@dblfpbot
+ \def\f@depth{1sp}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@dblfloatplacement}{float order in 2-column}%
+\def \@dblfloatplacement {%
+ \global \@dbltopnum \c@dbltopnumber
+ \global \@dbltoproom \dbltopfraction\@colht
+ \@textmin \@colht
+ \advance \@textmin -\@dbltoproom
+ \@fpmin \dblfloatpagefraction\textheight
+ \@fptop \@dblfptop
+ \@fpsep \@dblfpsep
+ \@fpbot \@dblfpbot
+}%
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@textsuperscript}{superscript baseline}%
+\def\@textsuperscript#1{%
+ {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\sf@size#1}}}}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@textsuperscript}{superscript baseline}%
+
+\def\@textsuperscript#1{%
+ {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\textsubscript}{\textsubscript}%
+\DeclareRobustCommand*\textsubscript[1]{%
+ \@textsubscript{\selectfont#1}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\textsubscript}{\textsubscript}%
+\let\textsubscript\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@textsubscript}{subscript baseline}%
+\def\@textsubscript#1{%
+ {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\sf@size#1}}}}}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@textsubscript}{subscript baseline}%
+
+\def\@textsubscript#1{%
+ {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@textsubscript}{subscript baseline}%
+\let\@textsubscript\@undefined
+\EndIncludeInRelease
+%%% From File: ltidxglo.dtx
+%%% From File: ltbibl.dtx
+\IncludeInRelease{2021/05/01}%
+ {\nocite}{Allow nocite in preamble}%
+\def\nocite#1{\@bsphack
+ \ifx\@onlypreamble\document
+ \@for\@citeb:=#1\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\G@refundefinedtrue
+ \@latex@warning{Citation `\@citeb' undefined}}{}}%
+ \else
+ \AddToHook{begindocument/end}[kernel]{\nocite{#1}}%
+ \fi
+ \@esphack}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\nocite}{Allow nocite in preamble}%
+
+\def\nocite#1{\@bsphack
+ \ifx\@onlypreamble\document
+ \@for\@citeb:=#1\do{%
+ \edef\@citeb{\expandafter\@firstofone\@citeb}%
+ \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
+ \@ifundefined{b@\@citeb}{\G@refundefinedtrue
+ \@latex@warning{Citation `\@citeb' undefined}}{}}%
+ \else
+ \@latex@error{Cannot be used in preamble}\@eha
+ \fi
+ \@esphack}
+
+\EndIncludeInRelease
+%%% From File: ltpage.dtx
+\IncludeInRelease{2019/10/01}%
+ {\markboth}{Make commands robust}%
+\DeclareRobustCommand*\markboth[2]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \unrestored@protected@xdef\@themark {{#1}{#2}}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\DeclareRobustCommand*\markright[1]{%
+ \begingroup
+ \let\label\relax \let\index\relax \let\glossary\relax
+ \expandafter\@markright\@themark {#1}%
+ \@temptokena \expandafter{\@themark}%
+ \mark{\the\@temptokena}%
+ \endgroup
+ \if@nobreak\ifvmode\nobreak\fi\fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\markboth}{Make commands robust}%
+
+\kernel@make@fragile\markboth
+\kernel@make@fragile\markright
+
+\EndIncludeInRelease
+%%% From File: ltclass.dtx
+
+\IncludeInRelease{2020/10/01}{\@currpath}%
+ {Add \@currpath}%
+\let\@currpath\@empty
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@currpath}%
+ {Add \@currpath}%
+\let\@currpath\@undefined
+\EndIncludeInRelease
+
+\IncludeInRelease{2020/10/01}{\@pushfilename}%
+ {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
+\def\@pushfilename{%
+ \@expl@push@filename@@
+ \xdef\@currnamestack{%
+ {\@currname}%
+ {\@currext}%
+ {\the\catcode`\@}%
+ \@currnamestack}%
+ \xdef\@kernel@currpathstack{%
+ {\@currpath}%
+ \@kernel@currpathstack}%
+ \@expl@push@filename@aux@@}
+\EndIncludeInRelease
+
+\IncludeInRelease{2020/02/02}{\@pushfilename}%
+ {Add \@expl@push@filename@@}%
+\def\@pushfilename{%
+ \@expl@push@filename@@
+ \xdef\@currnamestack{%
+ {\@currname}%
+ {\@currext}%
+ {\the\catcode`\@}%
+ \@currnamestack}%
+ \@expl@push@filename@aux@@}
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}{\@pushfilename}%
+ {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
+\def\@pushfilename{%
+ \xdef\@currnamestack{%
+ {\@currname}%
+ {\@currext}%
+ {\the\catcode`\@}%
+ \@currnamestack}}
+\EndIncludeInRelease
+\@onlypreamble\@pushfilename
+
+\IncludeInRelease{2020/10/01}{\@popfilename}%
+ {Add \@expl@pop@filename@@}%
+\def\@popfilename{\@expl@@@hook@curr@name@pop@@
+ \expandafter\@p@pfilename\@currnamestack\@nil
+ \expandafter\@p@pfilepath\@kernel@currpathstack\@nil
+ \@expl@pop@filename@@}
+\EndIncludeInRelease
+
+\IncludeInRelease{2020/02/02}{\@popfilename}%
+ {Add \@expl@push@filename@@}%
+\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil
+ \@expl@pop@filename@@}
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}{\@popfilename}%
+ {Add \@expl@push@filename@@ and \@expl@push@filename@aux@@}%
+\def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil}
+\EndIncludeInRelease
+\@onlypreamble\@popfilename
+
+\IncludeInRelease{2020/10/01}{\@kernel@currpathstack}%
+ {Add \@kernel@currpathstack}%
+\gdef\@kernel@currpathstack{}
+\def\@p@pfilepath#1{%
+ \gdef\@currpath{#1}\@p@pfilepath@aux\@empty}
+\def\@p@pfilepath@aux#1\@nil{%
+ \xdef\@kernel@currpathstack{#1}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@kernel@currpathstack}%
+ {Add \@kernel@currpathstack}%
+\let\@kernel@currpathstack\@undefined
+\let\@p@pfilepath\@undefined
+\let\@p@pfilepath@aux\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\IfFormatAtLeastTF}{Test format date}%
+\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\let\IfPackageAtLeastTF\@ifpackagelater
+\let\IfClassAtLeastTF\@ifclasslater
+\@onlypreamble\IfFormatAtLeastTF
+\@onlypreamble\IfPackageAtLeastTF
+\@onlypreamble\IfClassAtLeastTF
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\IfFormatAtLeastTF}{Test format date}%
+\def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
+\let\IfPackageAtLeastTF\@ifpackagelater
+\let\IfClassAtLeastTF\@ifclasslater
+\EndIncludeInRelease
+\IncludeInRelease{2018/04/01}%
+ {\@ifl@t@r}{Guard against bad input}%
+\def\@ifl@t@r#1#2{%
+ \ifnum\expandafter\@parse@version@#1//00\@nil<%
+ \expandafter\@parse@version@#2//00\@nil
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+\def\@parse@version@#1{\@parse@version0#1}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@ifl@t@r}{Guard against bad input}%
+\def\@ifl@t@r#1#2{%
+ \ifnum\expandafter\@parse@version#1//00\@nil<%
+ \expandafter\@parse@version#2//00\@nil
+ \expandafter\@secondoftwo
+ \else
+ \expandafter\@firstoftwo
+ \fi}
+\let\@parse@version@\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2017/01/01}%
+ {\@if@pti@ns}{Spaces in option clash check}%
+\def\@if@pti@ns#1#2{%
+ \let\reserved@a\@firstoftwo
+ \edef\reserved@b{\zap@space#2 \@empty}%
+ \@for\reserved@b:=\reserved@b\do{%
+ \ifx\reserved@b\@empty
+ \else
+ \expandafter\in@\expandafter{\expandafter,\reserved@b,}{,#1,}%
+ \ifin@
+ \else
+ \let\reserved@a\@secondoftwo
+ \fi
+ \fi
+ }%
+ \reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@if@pti@ns}{Spaces in option clash check}%
+\def\@if@pti@ns#1#2{%
+ \let\reserved@a\@firstoftwo
+ \@for\reserved@b:=#2\do{%
+ \ifx\reserved@b\@empty
+ \else
+ \expandafter\in@\expandafter
+ {\expandafter,\reserved@b,}{,#1,}%
+ \ifin@
\else
- \expandafter\@firstofone
+ \let\reserved@a\@secondoftwo
\fi
- {%
- \catcode#1=#3 %
- \expandafter\setrangecatcode\expandafter
- {\number\numexpr#1 + 1\relax}{#2}{#3}
- }%
- }
- \@firstofone{%
- \catcodetable\catcodetable@initex
- \catcode0=12 %
- \catcode13=12 %
- \catcode37=12 %
- \setrangecatcode{65}{90}{12}%
- \setrangecatcode{97}{122}{12}%
- \catcode92=12 %
- \catcode127=12 %
- \savecatcodetable\catcodetable@string
- \endgroup
- }%
-\newcatcodetable\catcodetable@latex
-\newcatcodetable\catcodetable@atletter
-\begingroup
- \def\parseunicodedataI#1;#2;#3;#4\relax{%
- \parseunicodedataII#1;#3;#2 First>\relax
- }%
- \def\parseunicodedataII#1;#2;#3 First>#4\relax{%
- \ifx\relax#4\relax
- \expandafter\parseunicodedataIII
+ \fi
+ }%
+ \reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\ProvidesPackage}{Check name with \strcmp}%
+\def\ProvidesPackage#1{%
+ \xdef\@gtempa{#1}%
+ \@expandtwoargs\@expl@str@if@eq@@nnTF
+ {\@gtempa}{\@currpath\@currname}{}{%
+ \@latex@warning@no@line{You have requested
+ \@cls@pkg\space`\@currpath\@currname',\MessageBreak
+ but the \@cls@pkg\space provides `#1'}%
+ }%
+ \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
+\@onlypreamble\ProvidesPackage
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\ProvidesPackage}{Undo: check name with \strcmp}%
+\def\ProvidesPackage#1{%
+ \xdef\@gtempa{#1}%
+ \ifx\@gtempa\@currname\else
+ \@latex@warning@no@line{You have requested
+ \@cls@pkg\space`\@currname',\MessageBreak
+ but the \@cls@pkg\space provides `#1'}%
+ \fi
+ \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@pr@videpackage}{Allow for package substitution}%
+\def\@pr@videpackage[#1]{%
+ \expandafter\protected@xdef % <-- protected...
+ \csname ver@\@currname.\@currext\endcsname{#1}% Loaded package
+ \expandafter\let
+ \csname ver@\@currpkg@reqd\expandafter\endcsname % Requested package
+ \csname ver@\@currname.\@currext\endcsname
+ \ifx\@currext\@clsextension
+ \typeout{Document Class: \@gtempa\space#1}%
+ \else
+ \protected@wlog{Package: \@gtempa\space#1}% <--- protected
+ \fi}
+\long\def\protected@wlog#1{\begingroup
+ \set@display@protect
+ \immediate \write \m@ne {#1}\endgroup }
+\EndIncludeInRelease
+\IncludeInRelease{2020/02/02}%
+ {\@pr@videpackage}{Protection for package info}%
+
+\def\@pr@videpackage[#1]{%
+ \expandafter\protected@xdef % <-- protected...
+ \csname ver@\@currname.\@currext\endcsname{#1}%
+\ifx\@currext\@clsextension
+ \typeout{Document Class: \@gtempa\space#1}%
+ \else
+ \protected@wlog{Package: \@gtempa\space#1}% <--- protected
+ \fi}
+
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@pr@videpackage}{Protection for package info}%
+
+\def\@pr@videpackage[#1]{%
+ \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
+ \ifx\@currext\@clsextension
+ \typeout{Document Class: \@gtempa\space#1}%
+ \else
+ \wlog{Package: \@gtempa\space#1}%
+ \fi}
+\let\protected@wlog\@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\ProvidesClass}{Track \ProvidesPackage}%
+\let\ProvidesClass\ProvidesPackage
+\@onlypreamble\ProvidesClass
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}{\@pass@ptions}
+ {Add file replacement in \@pass@ptions}%
+\def\@pass@ptions#1#2#3{%
+ \@expl@@@filehook@set@curr@file@@nNN
+ {\@expl@@@filehook@resolve@file@subst@@w #3.#1\@nil}%
+ \reserved@a\reserved@b
+ \@expl@@@filehook@clear@replacement@flag@@
+ \expandafter\xdef\csname opt@\reserved@a\endcsname{%
+ \@ifundefined{opt@\reserved@a}\@empty
+ {\csname opt@\reserved@a\endcsname,}%
+ \zap@space#2 \@empty}%
+ \expandafter\let
+ \csname opt@#3.#1\expandafter\endcsname
+ \csname opt@\reserved@a\endcsname}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@pass@ptions}
+ {\@pass@ptions}%
+\def\@pass@ptions#1#2#3{%
+ \expandafter\xdef\csname opt@#3.#1\endcsname{%
+ \@ifundefined{opt@#3.#1}\@empty
+ {\csname opt@#3.#1\endcsname,}%
+ \zap@space#2 \@empty}}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@process@pti@ns}{Unused options issue}%
+\def\@process@pti@ns{%
+ \@for\CurrentOption:=\@curroptions\do{%
+ \@ifundefined{ds@\CurrentOption}%
+ {\@use@ption
+ \default@ds}%
+ \@use@ption}%
+ \@for\CurrentOption:=\@declaredoptions\do{%
+ \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
+ \let\CurrentOption\@empty
+ \let\@fileswith@pti@ns\@@fileswith@pti@ns
+ \AtEndOfPackage{\expandafter\let
+ \csname unprocessedoptions-\@currname.\@currext\endcsname
+ \relax}}
+\@onlypreamble\@process@pti@ns
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@process@pti@ns}{Unused options issue}%
+
+\def\@process@pti@ns{%
+ \@for\CurrentOption:=\@curroptions\do{%
+ \@ifundefined{ds@\CurrentOption}%
+ {\@use@ption
+ \default@ds}%
+ \@use@ption}%
+ \@for\CurrentOption:=\@declaredoptions\do{%
+ \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
+ \let\CurrentOption\@empty
+ \let\@fileswith@pti@ns\@@fileswith@pti@ns
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}}
+\EndIncludeInRelease
+\IncludeInRelease{2017/01/01}%
+ {\ExecuteOptions}{Spaces in \ExecuteOptions}%
+\def\ExecuteOptions#1{%
+ \edef\@fortmp{\zap@space#1 \@empty}%
+ \def\reserved@a##1\@nil{%
+ \@for\CurrentOption:=\@fortmp\do
+ {\csname ds@\CurrentOption\endcsname}%
+ \edef\CurrentOption{##1}}%
+ \expandafter\reserved@a\CurrentOption\@nil}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\ExecuteOptions}{Spaces in \ExecuteOptions}%
+\def\ExecuteOptions#1{%
+ \def\reserved@a##1\@nil{%
+ \@for\CurrentOption:=#1\do
+ {\csname ds@\CurrentOption\endcsname}%
+ \edef\CurrentOption{##1}}%
+ \expandafter\reserved@a\CurrentOption\@nil}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\RequirePackageWithOptions}{Unused options issue}%
+\def\RequirePackageWithOptions{%
+ \AtEndOfPackage{\expandafter\let
+ \csname unprocessedoptions-\@currname.\@currext\endcsname
+ \relax}%
+ \@loadwithoptions\@pkgextension\RequirePackage}
+\@onlypreamble\RequirePackageWithOptions
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\RequirePackageWithOptions}{Unused options issue}%
+
+\def\RequirePackageWithOptions{%
+ \AtEndOfPackage{\let\@unprocessedoptions\relax}%
+ \@loadwithoptions\@pkgextension\RequirePackage}
+\EndIncludeInRelease
+\IncludeInRelease{2017/01/01}%
+ {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}%
+\def\@fileswith@pti@ns#1[#2]#3[#4]{%
+ \ifx#1\@clsextension
+ \ifx\@classoptionslist\relax
+ \xdef\@classoptionslist{\zap@space#2 \@empty}%
+ \def\reserved@a{%
+ \@onefilewithoptions#3[{#2}][{#4}]#1%
+ \@documentclasshook}%
\else
- \expandafter\parseunicodedataIV
+ \def\reserved@a{%
+ \@onefilewithoptions#3[{#2}][{#4}]#1}%
\fi
- {#1}#2\relax%
- }%
- \def\parseunicodedataIII#1#2#3\relax{%
- \ifnum 0%
- \if L#21\fi
- \if M#21\fi
- >0 %
- \catcode"#1=11 %
+ \else
+ \def\reserved@b##1,{%
+ \ifx\@nnil##1\relax\else
+ \ifx\@nnil##1\@nnil\else
+ \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
+ \noexpand\@pkgextension
+ \fi
+ \expandafter\reserved@b
+ \fi}%
+ \edef\reserved@a{\zap@space#3 \@empty}%
+ \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nnil,}%
+ \fi
+ \reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@fileswith@pti@ns}{ifx tests in \@fileswith@pti@ns}%
+\def\@fileswith@pti@ns#1[#2]#3[#4]{%
+ \ifx#1\@clsextension
+ \ifx\@classoptionslist\relax
+ \xdef\@classoptionslist{\zap@space#2 \@empty}%
+ \def\reserved@a{%
+ \@onefilewithoptions#3[{#2}][{#4}]#1%
+ \@documentclasshook}%
+ \else
+ \def\reserved@a{%
+ \@onefilewithoptions#3[{#2}][{#4}]#1}%
\fi
- }%
- \def\parseunicodedataIV#1#2#3\relax{%
- \read\unicoderead to \unicodedataline
- \if L#2%
- \count0="#1 %
- \expandafter\parseunicodedataV\unicodedataline\relax
+ \else
+ \def\reserved@b##1,{%
+ \ifx\@nil##1\relax\else
+ \ifx\relax##1\relax\else
+ \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
+ \noexpand\@pkgextension
+ \fi
+ \expandafter\reserved@b
+ \fi}%
+ \edef\reserved@a{\zap@space#3 \@empty}%
+ \edef\reserved@a{%
+ \expandafter\reserved@b\reserved@a,\@nil,}%
+ \fi
+ \reserved@a}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@onefilewithoptions}{Hooks and unused options issue}%
+\def\@onefilewithoptions#1[#2][#3]#4{%
+ \@expl@@@filehook@set@curr@file@@nNN{#1.#4}\reserved@a\reserved@b
+ \edef\reserved@c{\def\noexpand\reserved@c####1%
+ \detokenize\expandafter{\expanded{.#4}}%
+ \noexpand\@nil{\def\noexpand\reserved@a{####1}}}\reserved@c
+ \expandafter\reserved@c\reserved@a\@nil
+ \@pushfilename
+ \xdef\@currname{\string@makeletter\reserved@a}%
+ \xdef\@currpath{\ifx\reserved@b\@empty\else\reserved@b/\fi}%
+ \global\let\@currext#4%
+ \@ifl@aded\@currext\@currname
+ {\@if@ptions\@currext{\@currname}{#2}{}%
+ {\@latex@error
+ {Option clash for \@cls@pkg\space \@currname}%
+ {The package \@currname\space has already been loaded
+ with options:\MessageBreak
+ \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak
+ There has now been an attempt to load it
+ with options\MessageBreak
+ \space\space[#2]\MessageBreak
+ Adding the global options:\MessageBreak
+ \space\space
+ \@ptionlist{\@currname.\@currext},#2\MessageBreak
+ to your \noexpand\documentclass declaration may fix this.%
+ \MessageBreak
+ Try typing \space <return> \space to proceed.}}%
+ \@firstofone}%
+ {\makeatletter
+ \@reset@ptions
+ \IfFileExists{\@currpath\@currname.\@currext}{}%
+ {\@missing@onefilewithoptions{#2}}%
+ \ifx\@currname\@empty
+ \expandafter\@gobble
+ \else
+ \@disable@packageload@do{\@currname.\@currext}%
+ {\@expl@@@filehook@file@push@@
+ \set@curr@file{\@currpath\@currname.\@currext}%
+ \@filehook@set@CurrentFile
+ \expandafter\@swaptwoargs\expandafter
+ {\expandafter{\@currpkg@reqd}}%
+ {% <
+ \edef\@currpkg@reqd{\@currname.\@currext}%
+ \ifx\CurrentFile\CurrentFileUsed
+ \else
+ \filename@parse\@curr@file
+ \edef\@currpath{\string@makeletter\filename@area}%
+ \edef\@currname{\string@makeletter\filename@base}%
+ \edef\@currext{\string@makeletter\filename@ext}%
+ \fi
+ \load@onefile@withoptions{#2}%
+ \def\@currpkg@reqd%{\@currpkg@reqd}
+ }% >
+ \@expl@@@filehook@file@pop@@}%
+ \expandafter\@firstofone
+ \fi}%
+ {\@ifl@ter\@currext{\@currname}{#3}{}%
+ {\@latex@warning@no@line
+ {You have requested,\on@line,
+ version\MessageBreak
+ `#3' of \@cls@pkg\space \@currname,\MessageBreak
+ but only version\MessageBreak
+ `\csname ver@\@currname.\@currext\endcsname'\MessageBreak
+ is available}}%
+ \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi}%
+ \@popfilename
+ \@reset@ptions}
+\let\@currpkg@reqd\@empty
+\@onlypreamble\@onefilewithoptions
+\let\@unprocessedoptions\@undefined
+\def\@missing@onefilewithoptions#1{%
+ \@missingfileerror{\@currpath\@currname}\@currext
+ \global\let\@currpath\@missingfile@area
+ \global\let\@currname\@missingfile@base
+ \global\let\@currext\@missingfile@ext}
+\def\load@onefile@withoptions#1{%
+ \let\CurrentOption\@empty
+ \@reset@ptions
+ \def\reserved@a{%
+ \@pass@ptions\@currext{#1}{\@currname}%
+ \expandafter\let
+ \csname opt@\@currpkg@reqd\expandafter\endcsname
+ \csname opt@\@currname.\@currext\endcsname
+ \global\expandafter
+ \let\csname ver@\@currname.\@currext\endcsname\@empty
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
+ \ifx\@currext\@pkgextension
+ \UseHook{package/before}%
+ \UseHook{package/before/\@currname}%
+ \else
+ \ifx\@currext\@clsextension
+ \UseHook{class/before}%
+ \UseHook{class/before/\@currname}%
+ \fi
\fi
- }%
- \def\parseunicodedataV#1;#2\relax{%
- \loop
- \unless\ifnum\count0>"#1 %
- \catcode\count0=11 %
- \advance\count0 by 1 %
- \repeat
- }%
- \def\storedpar{\par}%
- \chardef\unicoderead=\numexpr\count16 + 1\relax
- \openin\unicoderead=UnicodeData.txt %
- \loop\unless\ifeof\unicoderead %
- \read\unicoderead to \unicodedataline
- \unless\ifx\unicodedataline\storedpar
- \expandafter\parseunicodedataI\unicodedataline\relax
+ \InputIfFileExists{\@currpath\@currpkg@reqd}{}%
+ {\@latex@error
+ {The \@cls@pkg\space\@currpkg@reqd\space failed to load}\@ehd}%
+ \expandafter\let\csname unprocessedoptions-\@currname.\@currext\endcsname
+ \@@unprocessedoptions
+ \csname\@currname.\@currext-h@@k\endcsname
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
+ \@undefined
+ \ifx\@unprocessedoptions\relax
+ \let\@unprocessedoptions\@undefined
+ \else
+ \csname unprocessedoptions-\@currname.\@currext\endcsname
\fi
- \repeat
- \closein\unicoderead
- \@firstofone{%
- \catcode64=12 %
- \savecatcodetable\catcodetable@latex
- \catcode64=11 %
- \savecatcodetable\catcodetable@atletter
- }
-\endgroup
-\ifx\e@alloc@luafunction@count\@undefined
- \countdef\e@alloc@luafunction@count=260
- \e@alloc@luafunction@count=\z@
-\fi
-\def\newluafunction{%
- \e@alloc\luafunction\e@alloc@chardef
- \e@alloc@luafunction@count\m@ne\e@alloc@top
+ \expandafter\let
+ \csname unprocessedoptions-\@currname.\@currext\endcsname
+ \@undefined
+ \ifx\@currext\@pkgextension
+ \UseHook{package/after/\@currname}%
+ \UseHook{package/after}%
+ \else
+ \ifx\@currext\@clsextension
+ \UseHook{class/after/\@currname}%
+ \UseHook{class/after}%
+ \fi
+ \fi}%
+ \@ifl@aded\@currext\@currname{}{\reserved@a}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@onefilewithoptions}{Hooks and unused options issue}%
+
+\def\load@onefilewithoptions#1[#2][#3]#4{%
+ \@pushfilename
+ \xdef\@currname{#1}%
+ \global\let\@currext#4%
+ \let\CurrentOption\@empty
+ \@reset@ptions
+ \makeatletter
+ \def\reserved@a{%
+ \@ifl@aded\@currext{#1}%
+ {\@if@ptions\@currext{#1}{#2}{}%
+ {\@latex@error
+ {Option clash for \@cls@pkg\space #1}%
+ {The package #1 has already been loaded
+ with options:\MessageBreak
+ \space\space[\@ptionlist{#1.\@currext}]\MessageBreak
+ There has now been an attempt to load it
+ with options\MessageBreak
+ \space\space[#2]\MessageBreak
+ Adding the global options:\MessageBreak
+ \space\space
+ \@ptionlist{#1.\@currext},#2\MessageBreak
+ to your \noexpand\documentclass declaration may fix this.%
+ \MessageBreak
+ Try typing \space <return> \space to proceed.}}}%
+ {\@pass@ptions\@currext{#2}{#1}%
+ \global\expandafter
+ \let\csname ver@\@currname.\@currext\endcsname\@empty
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
+ \InputIfFileExists
+ {\@currname.\@currext}%
+ {}%
+ {\@missingfileerror\@currname\@currext}%
+ \let\@unprocessedoptions\@@unprocessedoptions
+ \csname\@currname.\@currext-h@@k\endcsname
+ \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
+ \@undefined
+ \@unprocessedoptions}%
+ \@ifl@ter\@currext{#1}{#3}{}%
+ {\@latex@warning@no@line
+ {You have requested,\on@line,
+ version\MessageBreak
+ `#3' of \@cls@pkg\space #1,\MessageBreak
+ but only version\MessageBreak
+ `\csname ver@#1.\@currext\endcsname'\MessageBreak
+ is available}}%
+ \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
+ \@popfilename
+ \@reset@ptions}%
+ \reserved@a}
+
+\let \load@onefile@withoptions \@undefined
+\let \@missing@onefilewithoptions \@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\AtBeginDocument}{Use hook system}%
+\DeclareRobustCommand\AtBeginDocument{\AddToHook{begindocument}}
+\DeclareRobustCommand\AtEndDocument {\AddToHook{enddocument}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\AtBeginDocument}{Use hook system}%
+
+\DeclareRobustCommand\AtBeginDocument{\g@addto@macro\@begindocumenthook}
+\DeclareRobustCommand\AtEndDocument{\g@addto@macro\@enddocumenthook}
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\filec@ntents}{Define \q@curr@file directly (gh/220)}%
+\def\filecontents{\@tempswatrue\@fileswtrue
+ \@ifnextchar[\filec@ntents@opt\filec@ntents
}
-\ifx\e@alloc@whatsit@count\@undefined
- \countdef\e@alloc@whatsit@count=261
- \e@alloc@whatsit@count=\z@
-\fi
-\def\newwhatsit#1{%
- \e@alloc\whatsit\e@alloc@chardef
- \e@alloc@whatsit@count\m@ne\e@alloc@top#1%
+\@namedef{filecontents*}{\@tempswafalse\@fileswtrue
+ \@ifnextchar[\filec@ntents@opt\filec@ntents
}
-\ifx\e@alloc@bytecode@count\@undefined
- \countdef\e@alloc@bytecode@count=262
- \e@alloc@bytecode@count=\z@
-\fi
-\def\newluabytecode#1{%
- \e@alloc\luabytecode\e@alloc@chardef
- \e@alloc@bytecode@count\m@ne\e@alloc@top#1%
+\def\filec@ntents@opt[#1]{%
+ \edef\@fortmp{\zap@space#1 \@empty}%
+ \@for\reserved@a:=\@fortmp\do{%
+ \ifcsname filec@ntents@\reserved@a\endcsname
+ \csname filec@ntents@\reserved@a\endcsname
+ \else
+ \@latex@error{Unknown filecontents option \reserved@a}%
+ {Valid options are force (or overwrite), nosearch, noheader}%
+ \fi}%
+ \filec@ntents
}
+\let\filec@ntents@force\@fileswfalse
+\let\filec@ntents@overwrite\@fileswfalse % alternative name
+\let\filec@ntents@noheader\@tempswafalse
+\def\filec@ntents@nosearch{%
+ \let\filec@ntents@checkdir\@currdir
+ \def\filec@ntents@where{in current directory}}
+\let\filec@ntents@checkdir\@empty
+\def\filec@ntents@where{exists on the system}
+\begingroup%
+\@tempcnta=1
+\loop
+ \catcode\@tempcnta=12 %
+ \advance\@tempcnta\@ne %
+\ifnum\@tempcnta<32 %
+\repeat %
+\catcode`\*=11 %
+\catcode`\^^M\active%
+\catcode`\^^L\active\let^^L\relax%
+\catcode`\^^I\active%
+\gdef\filec@ntents#1{%
+ \set@curr@file{\filec@ntents@checkdir#1}%
+ \edef\q@curr@file{"\@curr@file"}%
+ \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi%
+ \openin\@inputcheck\q@curr@file \space %
+ \ifeof\@inputcheck%
+ \@latex@warning@no@line%
+ {Writing file `\@currdir\@curr@file'}%
+ \ch@ck7\reserved@c\write\relax%
+ \immediate\openout\reserved@c\q@curr@file\relax%
+ \else%
+ \if@filesw%
+ \@latex@warning@no@line%
+ {File `\@curr@file' already \filec@ntents@where.\MessageBreak%
+ Not generating it from this source}%
+ \let\write\@gobbletwo%
+ \let\closeout\@gobble%
+ \else%
+ \edef\reserved@a{#1}%
+ \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
+ \edef\reserved@b{\detokenize\expandafter{\jobname}}%
+ \ifx\reserved@a\reserved@b%
+ \@fileswtrue%
+ \else%
+ \edef\reserved@b{\reserved@b\detokenize{.tex}}%
+ \ifx\reserved@a\reserved@b
+ \@fileswtrue%
+ \fi%
+ \fi%
+ \ch@ck7\reserved@c\write\relax%
+ \if@filesw% % Foul ... trying to overwrite \jobname!
+ \@latex@error{Trying to overwrite `\jobname.tex'}{You can't %
+ write to the file you are reading from!\MessageBreak%
+ Data is written to screen instead.}%
+ \else%
+ \@latex@warning@no@line%
+ {Writing or overwriting file `\@currdir\@curr@file'}%
+ \immediate\openout\reserved@c\q@curr@file\relax%
+ \fi%
+ \fi%
+ \fi%
+ \closein\@inputcheck%
+ \if@tempswa%
+ \immediate\write\reserved@c{%
+ \@percentchar\@percentchar\space%
+ \expandafter\@gobble\string\LaTeX2e file `\@curr@file'^^J%
+ \@percentchar\@percentchar\space generated by the %
+ `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
+ \@percentchar\@percentchar\space from source `\jobname' on %
+ \number\year/\two@digits\month/\two@digits\day.^^J%
+ \@percentchar\@percentchar}%
+ \fi%
+ \let\do\@makeother\dospecials%
+ \count@ 128\relax%
+ \loop%
+ \catcode\count@ 11\relax%
+ \advance\count@ \@ne%
+ \ifnum\count@<\@cclvi%
+ \repeat%
+ \edef\E{\@backslashchar end\string{\@currenvir\string}}%
+ \edef\reserved@b{%
+ \def\noexpand\reserved@b%
+ ####1\E####2\E####3\relax}%
+ \reserved@b{%
+ \ifx\relax##3\relax%
+ \immediate\write\reserved@c{##1}%
+ \else%
+ \edef^^M{\noexpand\end{\@currenvir}}%
+ \ifx\relax##1\relax%
+ \else%
+ \@latex@warning{Writing text `##1' before %
+ \string\end{\@currenvir}\MessageBreak as last line of \@curr@file}%
+ \immediate\write\reserved@c{##1}%
+ \fi%
+ \ifx\relax##2\relax%
+ \else%
+ \@latex@warning{%
+ Ignoring text `##2' after \string\end{\@currenvir}}%
+ \fi%
+ \fi%
+ ^^M}%
+ \catcode`\^^L\active%
+ \let\L\@undefined%
+ \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
+ \catcode`\^^I\active%
+ \let\I\@undefined%
+ \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
+ \catcode`\^^M\active%
+ \edef^^M##1^^M{%
+ \noexpand\reserved@b##1\E\E\relax}}%
+\endgroup%
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\filec@ntents}{Spaces in file names + optional arg}%
+\def\filecontents{\@tempswatrue\@fileswtrue
+ \@ifnextchar[\filec@ntents@opt\filec@ntents
+}
+\@namedef{filecontents*}{\@tempswafalse\@fileswtrue
+ \@ifnextchar[\filec@ntents@opt\filec@ntents
+}
+\def\filec@ntents@opt[#1]{%
+ \edef\@fortmp{\zap@space#1 \@empty}%
+ \@for\reserved@a:=\@fortmp\do{%
+ \ifcsname filec@ntents@\reserved@a\endcsname
+ \csname filec@ntents@\reserved@a\endcsname
+ \else
+ \@latex@error{Unknown filecontents option \reserved@a}%
+ {Valid options are force (or overwrite), nosearch, noheader}%
+ \fi}%
+ \filec@ntents
+}
+\let\filec@ntents@force\@fileswfalse
+\let\filec@ntents@overwrite\@fileswfalse % alternative name
+\let\filec@ntents@noheader\@tempswafalse
+\def\filec@ntents@nosearch{%
+ \let\filec@ntents@checkdir\@currdir
+ \def\filec@ntents@where{in current directory}}
+\let\filec@ntents@checkdir\@empty
+\def\filec@ntents@where{exists on the system}
+\begingroup%
+\@tempcnta=1
+\loop
+ \catcode\@tempcnta=12 %
+ \advance\@tempcnta\@ne %
+\ifnum\@tempcnta<32 %
+\repeat %
+\catcode`\*=11 %
+\catcode`\^^M\active%
+\catcode`\^^L\active\let^^L\relax%
+\catcode`\^^I\active%
+\gdef\filec@ntents#1{%
+ \set@curr@file{\filec@ntents@checkdir#1}%
+ \edef\q@curr@file{\expandafter\quote@name\expandafter{\@curr@file}}%
+ \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi%
+ \openin\@inputcheck\q@curr@file \space %
+ \ifeof\@inputcheck%
+ \@latex@warning@no@line%
+ {Writing file `\@currdir\@curr@file'}%
+ \ch@ck7\reserved@c\write\relax%
+ \immediate\openout\reserved@c\q@curr@file\relax%
+ \else%
+ \if@filesw%
+ \@latex@warning@no@line%
+ {File `\@curr@file' already \filec@ntents@where.\MessageBreak%
+ Not generating it from this source}%
+ \let\write\@gobbletwo%
+ \let\closeout\@gobble%
+ \else%
+ \edef\reserved@a{#1}%
+ \edef\reserved@a{\detokenize\expandafter{\reserved@a}}%
+ \edef\reserved@b{\detokenize\expandafter{\jobname}}%
+ \ifx\reserved@a\reserved@b%
+ \@fileswtrue%
+ \else%
+ \edef\reserved@b{\reserved@b\detokenize{.tex}}%
+ \ifx\reserved@a\reserved@b
+ \@fileswtrue%
+ \fi%
+ \fi%
+ \ch@ck7\reserved@c\write\relax%
+ \if@filesw% % Foul ... trying to overwrite \jobname!
+ \@latex@error{Trying to overwrite `\jobname.tex'}{You can't %
+ write to the file you are reading from!\MessageBreak%
+ Data is written to screen instead.}%
+ \else%
+ \@latex@warning@no@line%
+ {Writing or overwriting file `\@currdir\@curr@file'}%
+ \immediate\openout\reserved@c\q@curr@file\relax%
+ \fi%
+ \fi%
+ \fi%
+ \closein\@inputcheck%
+ \if@tempswa%
+ \immediate\write\reserved@c{%
+ \@percentchar\@percentchar\space%
+ \expandafter\@gobble\string\LaTeX2e file `\@curr@file'^^J%
+ \@percentchar\@percentchar\space generated by the %
+ `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
+ \@percentchar\@percentchar\space from source `\jobname' on %
+ \number\year/\two@digits\month/\two@digits\day.^^J%
+ \@percentchar\@percentchar}%
+ \fi%
+ \let\do\@makeother\dospecials%
+ \count@ 128\relax%
+ \loop%
+ \catcode\count@ 11\relax%
+ \advance\count@ \@ne%
+ \ifnum\count@<\@cclvi%
+ \repeat%
+ \edef\E{\@backslashchar end\string{\@currenvir\string}}%
+ \edef\reserved@b{%
+ \def\noexpand\reserved@b%
+ ####1\E####2\E####3\relax}%
+ \reserved@b{%
+ \ifx\relax##3\relax%
+ \immediate\write\reserved@c{##1}%
+ \else%
+ \edef^^M{\noexpand\end{\@currenvir}}%
+ \ifx\relax##1\relax%
+ \else%
+ \@latex@warning{Writing text `##1' before %
+ \string\end{\@currenvir}\MessageBreak as last line of \@curr@file}%
+ \immediate\write\reserved@c{##1}%
+ \fi%
+ \ifx\relax##2\relax%
+ \else%
+ \@latex@warning{%
+ Ignoring text `##2' after \string\end{\@currenvir}}%
+ \fi%
+ \fi%
+ ^^M}%
+ \catcode`\^^L\active%
+ \let\L\@undefined%
+ \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
+ \catcode`\^^I\active%
+ \let\I\@undefined%
+ \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
+ \catcode`\^^M\active%
+ \edef^^M##1^^M{%
+ \noexpand\reserved@b##1\E\E\relax}}%
+\endgroup%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\filec@ntents}{Spaces in file names + optional arg}%
-\ifx\e@alloc@luachunk@count\@undefined
- \countdef\e@alloc@luachunk@count=263
- \e@alloc@luachunk@count=\z@
-\fi
-\def\newluachunkname#1{%
- \e@alloc\luachunk\e@alloc@chardef
- \e@alloc@luachunk@count\m@ne\e@alloc@top#1%
- {\escapechar\m@ne
- \directlua{lua.name[\the\allocationnumber]="\string#1"}}%
+\let\filec@ntents@opt \@undefined
+\let\filec@ntents@force \@undefined
+\let\filec@ntents@overwrite \@undefined
+\let\filec@ntents@noheader \@undefined
+\let\filec@ntents@nosearch \@undefined
+\let\filec@ntents@checkdir \@undefined
+\let\filec@ntents@where \@undefined
+
+\begingroup%
+\@tempcnta=1
+\loop
+ \catcode\@tempcnta=12 %
+ \advance\@tempcnta\@ne %
+\ifnum\@tempcnta<32 %
+\repeat %
+\catcode`\*=11 %
+\catcode`\^^M\active%
+\catcode`\^^L\active\let^^L\relax%
+\catcode`\^^I\active%
+
+\gdef\filec@ntents#1{%
+ \openin\@inputcheck#1 %
+ \ifeof\@inputcheck%
+ \@latex@warning@no@line%
+ {Writing file `\@currdir#1'}%
+ \chardef\reserved@c15 %
+ \ch@ck7\reserved@c\write%
+ \immediate\openout\reserved@c#1\relax%
+ \else%
+ \closein\@inputcheck%
+ \@latex@warning@no@line%
+ {File `#1' already exists on the system.\MessageBreak%
+ Not generating it from this source}%
+ \let\write\@gobbletwo%
+ \let\closeout\@gobble%
+ \fi%
+ \if@tempswa%
+ \immediate\write\reserved@c{%
+ \@percentchar\@percentchar\space%
+ \expandafter\@gobble\string\LaTeX2e file `#1'^^J%
+ \@percentchar\@percentchar\space generated by the %
+ `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
+ \@percentchar\@percentchar\space from source `\jobname' on %
+ \number\year/\two@digits\month/\two@digits\day.^^J%
+ \@percentchar\@percentchar}%
+ \fi%
+ \let\do\@makeother\dospecials%
+ \count@ 128\relax%
+ \loop%
+ \catcode\count@ 11\relax%
+ \advance\count@ \@ne%
+ \ifnum\count@<\@cclvi%
+ \repeat%
+ \edef\E{\@backslashchar end\string{\@currenvir\string}}%
+ \edef\reserved@b{%
+ \def\noexpand\reserved@b%
+ ####1\E####2\E####3\relax}%
+ \reserved@b{%
+ \ifx\relax##3\relax%
+ \immediate\write\reserved@c{##1}%
+ \else%
+ \edef^^M{\noexpand\end{\@currenvir}}%
+ \ifx\relax##1\relax%
+ \else%
+ \@latex@warning{Writing text `##1' before %
+ \string\end{\@currenvir}\MessageBreak as last line of #1}%
+ \immediate\write\reserved@c{##1}%
+ \fi%
+ \ifx\relax##2\relax%
+ \else%
+ \@latex@warning{%
+ Ignoring text `##2' after \string\end{\@currenvir}}%
+ \fi%
+ \fi%
+ ^^M}%
+
+ \catcode`\^^L\active%
+ \let\L\@undefined%
+ \def^^L{\expandafter\ifx\csname L\endcsname\relax\fi ^^J^^J}%
+ \catcode`\^^I\active%
+ \let\I\@undefined%
+ \def^^I{\expandafter\ifx\csname I\endcsname\relax\fi\space}%
+ \catcode`\^^M\active%
+ \edef^^M##1^^M{%
+ \noexpand\reserved@b##1\E\E\relax}}%
+\endgroup%
+\EndIncludeInRelease
+%%
+%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
+%% Phelype Oleinik & LaTeX Team
+%%% From File: ltfilehook.dtx
+\providecommand\ltfilehookversion{v1.0e}
+\providecommand\ltfilehookdate{2021/01/07}
+\IncludeInRelease{2020/10/01}%
+ {\CurrentFile}{Hook management file}%
+\ExplSyntaxOn
+\tl_new:N \CurrentFile
+\tl_new:N \CurrentFilePath
+\tl_new:N \CurrentFileUsed
+\tl_new:N \CurrentFilePathUsed
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\CurrentFile}{Hook management file}%
+
+\let \CurrentFile \@undefined
+\let \CurrentFilePath \@undefined
+\let \CurrentFileUsed \@undefined
+\let \CurrentFilePathUsed \@undefined
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\__filehook_file_parse_full_name:nN}{File helpers}%
+\ExplSyntaxOn
+\cs_new:Npn \__filehook_file_parse_full_name:nN #1
+ {
+ \exp_args:Nf \file_parse_full_name_apply:nN
+ {
+ \exp_args:Nf \__filehook_full_name:nn
+ { \file_full_name:n {#1} } {#1}
+ }
+ }
+\cs_new:Npn \__filehook_full_name:nn #1 #2
+ {
+ \tl_if_empty:nTF {#1}
+ { \tl_trim_spaces:n {#2} }
+ { \tl_trim_spaces:n {#1} }
+ }
+\cs_new:Npn \__filehook_if_no_extension:nTF #1
+ {
+ \exp_args:Ne \tl_if_empty:nTF
+ { \file_parse_full_name_apply:nN {#1} \use_iii:nnn }
+ }
+\cs_new_protected:Npn \__filehook_drop_extension:N #1
+ {
+ \tl_gset:Nx #1
+ {
+ \exp_args:NV \__filehook_file_parse_full_name:nN #1
+ \__filehook_drop_extension_aux:nnn
+ }
+ }
+\cs_new:Npn \__filehook_drop_extension_aux:nnn #1 #2 #3
+ { \tl_if_empty:nF {#1} { #1 / } #2 }
+\tl_new:N \l__filehook_internal_tl
+\seq_new:N \g__filehook_input_file_seq
+\cs_new_protected:Npn \__filehook_file_push:
+ {
+ \seq_gpush:Nx \g__filehook_input_file_seq
+ {
+ { \CurrentFilePathUsed } { \CurrentFileUsed }
+ { \CurrentFilePath } { \CurrentFile }
+ }
+ }
+\cs_new_protected:Npn \__filehook_file_pop:
+ {
+ \seq_gpop:NNTF \g__filehook_input_file_seq \l__filehook_internal_tl
+ { \exp_after:wN \__filehook_file_pop_assign:nnnn \l__filehook_internal_tl }
+ {
+ \msg_error:nnn { hooks } { should-not-happen }
+ { Tried~to~pop~from~an~empty~file~name~stack. }
+ }
+ }
+\cs_new_protected:Npn \__filehook_file_pop_assign:nnnn #1 #2 #3 #4
+ {
+ \tl_set:Nn \CurrentFilePathUsed {#1}
+ \tl_set:Nn \CurrentFileUsed {#2}
+ \tl_set:Nn \CurrentFilePath {#3}
+ \tl_set:Nn \CurrentFile {#4}
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\file_parse_full_name_apply:nN}{Roll forward help}%
+
+\ExplSyntaxOn
+\cs_if_exist:NF\file_parse_full_name_apply:nN
+{
+\cs_new:Npn \file_parse_full_name_apply:nN #1
+ {
+ \exp_args:Ne \__file_parse_full_name_auxi:nN
+ { \__kernel_file_name_sanitize:n {#1} }
+ }
+\cs_new:Npn \__file_parse_full_name_auxi:nN #1
+ {
+ \__file_parse_full_name_area:nw { } #1
+ / \s__file_stop
+ }
+\cs_new:Npn \__file_parse_full_name_area:nw #1 #2 / #3 \s__file_stop
+ {
+ \tl_if_empty:nTF {#3}
+ { \__file_parse_full_name_base:nw { } #2 . \s__file_stop {#1} }
+ { \__file_parse_full_name_area:nw { #1 / #2 } #3 \s__file_stop }
+ }
+\cs_new:Npn \__file_parse_full_name_base:nw #1 #2 . #3 \s__file_stop
+ {
+ \tl_if_empty:nTF {#3}
+ {
+ \tl_if_empty:nTF {#1}
+ {
+ \tl_if_empty:nTF {#2}
+ { \__file_parse_full_name_tidy:nnnN { } { } }
+ { \__file_parse_full_name_tidy:nnnN { .#2 } { } }
+ }
+ { \__file_parse_full_name_tidy:nnnN {#1} { .#2 } }
+ }
+ { \__file_parse_full_name_base:nw { #1 . #2 } #3 \s__file_stop }
+ }
+\cs_new:Npn \__file_parse_full_name_tidy:nnnN #1 #2 #3 #4
+ {
+ \exp_args:Nee #4
+ {
+ \str_if_eq:nnF {#3} { / } { \use_none:n }
+ #3 \prg_do_nothing:
+ }
+ { \use_none:n #1 \prg_do_nothing: }
+ {#2}
+ }
}
-\def\now@and@everyjob#1{%
- \everyjob\expandafter{\the\everyjob
- #1%
- }%
- #1%
+\ExplSyntaxOff
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\InputIfFileExists}{Hook management (files)}%
+\let\InputIfFileExists\@undefined
+\DeclareRobustCommand \InputIfFileExists[2]{%
+ \IfFileExists{#1}%
+ {%
+ \@expl@@@filehook@file@push@@
+ \@filehook@set@CurrentFile
+ \expandafter\@swaptwoargs\expandafter
+ {\expandafter\@input@file@exists@with@hooks
+ \expandafter{\@filef@und}}%
+ {#2}%
+ \@expl@@@filehook@file@pop@@
+ }%
}
+\def\@input@file@exists@with@hooks#1{%
+ \edef\reserved@a{%
+ \@expl@@@filehook@file@pop@assign@@nnnn
+ {\CurrentFilePathUsed}%
+ {\CurrentFileUsed}%
+ {\CurrentFilePath}%
+ {\CurrentFile}}%
+ \expandafter\@swaptwoargs\expandafter{\reserved@a}%
+ {\edef\reserved@a{\unqu@tefilef@und#1\@nil}%
+ \@addtofilelist{\string@makeletter\reserved@a}%
+ \UseHook{file/before}%
+ \UseHook{file/before/\CurrentFile}%
+ \@@input #1% <- trailing space comes from \@filef@und
+ }%
+ \UseHook{file/after/\CurrentFile}%
+ \UseHook{file/after}}
+\def\unqu@tefilef@und"#1" \@nil{#1}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\InputIfFileExists}{Hook management (files)}%
+
+\DeclareRobustCommand \InputIfFileExists[2]{%
+ \IfFileExists{#1}%
+ {%
+ \expandafter\@swaptwoargs\expandafter
+ {\@filef@und}{#2\@addtofilelist{#1}\@@input}}}
+\let\@input@file@exists@with@hooks\@undefined
+\let\unqu@tefilef@und\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\InputIfFileExists}{Hook management (files)}%
+\long\def \InputIfFileExists#1#2{%
+ \IfFileExists{#1}%
+ {#2\@addtofilelist{#1}\@@input \@filef@und}}
+\let\@input@file@exists@with@hooks\@undefined
+\let\unqu@tefilef@und\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\__filehook_subst_add:nn}{Declaring file substitution}%
+\ExplSyntaxOn
+\cs_new_protected:Npn \__filehook_subst_add:nn #1 #2
+ {
+ \group_begin:
+ \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
+ \int_set:Nn \tex_escapechar:D { -1 }
+ \cs_gset:cpx
+ {
+ @file-subst@
+ \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
+ { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn {#2} }
+ \group_end:
+ }
+\cs_new_protected:Npn \__filehook_subst_remove:n #1
+ {
+ \group_begin:
+ \cs_set:cpx { } { \exp_not:o { \cs:w\cs_end: } }
+ \int_set:Nn \tex_escapechar:D { -1 }
+ \cs_undefine:c
+ {
+ @file-subst@
+ \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
+ }
+ \group_end:
+ }
+\cs_new:Npn \__filehook_subst_file_normalize:Nn #1 #2
+ {
+ \exp_after:wN \__filehook_subst_empty_name_chk:NN
+ \cs:w \exp_after:wN \cs_end:
+ \cs:w \__filehook_file_parse_full_name:nN {#2} #1 \cs_end:
+ }
+\cs_new:Npn \__filehook_subst_empty_name_chk:NN #1 #2
+ { \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: }
+\cs_gset:Npn \use_ii_iii:nnn #1 #2 #3 {#2 #3}
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\declare@file@substitution}{File substitution}%
+\ExplSyntaxOn
+\cs_new_eq:NN \declare@file@substitution \__filehook_subst_add:nn
+\cs_new_eq:NN \undeclare@file@substitution \__filehook_subst_remove:n
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\declare@file@substitution}{File substitution}%
+
+\let \declare@file@substitution \@gobbletwo
+\let \undeclare@file@substitution \@gobble
+
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\set@curr@file}{Setting current file name}%
+\def\set@curr@file#1{%
\begingroup
- \attributedef\attributezero=0 %
- \chardef \charzero =0 %
- \countdef \CountZero =0 %
- \dimendef \dimenzero =0 %
- \mathchardef \mathcharzero =0 %
- \muskipdef \muskipzero =0 %
- \skipdef \skipzero =0 %
- \toksdef \tokszero =0 %
- \directlua{require("ltluatex")}
+ \escapechar\m@ne
+ \expandafter\def\csname\expandafter\endcsname
+ \expandafter{\csname\endcsname}%
+ \@expl@@@filehook@if@no@extension@@nTF{#1}%
+ {\@tempswatrue}{\@tempswafalse}%
+ \@kernel@make@file@csname\@curr@file
+ \@expl@@@filehook@resolve@file@subst@@w {#1}%
+ \@expl@@@filehook@if@file@replaced@@TF
+ {\@kernel@make@file@csname\@curr@file@reqd
+ \@expl@@@filehook@normalize@file@name@@w{#1}%
+ \if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file@reqd \fi}%
+ {\if@tempswa \@expl@@@filehook@drop@extension@@N\@curr@file \fi
+ \global\let\@curr@file@reqd\@curr@file}%
+ \@expl@@@filehook@clear@replacement@flag@@
+ \endgroup}
+\EndIncludeInRelease
+\IncludeInRelease{2019/10/01}%
+ {\set@curr@file}{Setting current file name}%
+\def\set@curr@file#1{%
+ \begingroup
+ \escapechar\m@ne
+ \xdef\@curr@file{%
+ \expandafter\expandafter\expandafter\unquote@name
+ \expandafter\expandafter\expandafter{%
+ \expandafter\string
+ \csname\@firstofone#1\@empty\endcsname}}%
\endgroup
+}
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}
- {\newluafunction}{LuaTeX}%
-\let\e@alloc@attribute@count\@undefined
-\let\newattribute\@undefined
-\let\setattribute\@undefined
-\let\unsetattribute\@undefined
-\let\e@alloc@ccodetable@count\@undefined
-\let\newcatcodetable\@undefined
-\let\catcodetable@initex\@undefined
-\let\catcodetable@string\@undefined
-\let\catcodetable@latex\@undefined
-\let\catcodetable@atletter\@undefined
-\let\e@alloc@luafunction@count\@undefined
-\let\newluafunction\@undefined
-\let\e@alloc@luafunction@count\@undefined
-\let\newwhatsit\@undefined
-\let\e@alloc@whatsit@count\@undefined
-\let\newluabytecode\@undefined
-\let\e@alloc@bytecode@count\@undefined
-\let\newluachunkname\@undefined
-\let\e@alloc@luachunk@count\@undefined
-\directlua{luatexbase.uninstall()}
+\IncludeInRelease{0000/00/00}%
+ {\set@curr@file}{Setting current file name}%
+\let\set@curr@file\@undefined
\EndIncludeInRelease
-\IncludeInRelease{2017/01/01}%
- {\fontencoding}{TU in everyjob}%
-\fontencoding{TU}\let\encodingdefault\f@encoding
-\ifx\directlua\@undefined\else
- \directlua{%
- if xpcall(function ()%
- require('luaotfload-main')%
- end,texio.write_nl) then %
- local _void = luaotfload.main ()%
- else %
- texio.write_nl('Error in luaotfload: reverting to OT1')%
- tex.print('\string\\def\string\\encodingdefault{OT1}')%
- end %
- }%
- \let\f@encoding\encodingdefault
- \expandafter\let\csname ver@luaotfload.sty\endcsname\fmtversion
-\fi
+\IncludeInRelease{2020/10/01}%
+ {\@kernel@make@file@csname}{Make file csname}%
+\def\@kernel@make@file@csname#1#2#3{%
+ \xdef#1{\expandafter\@set@curr@file@aux
+ \csname\expandafter#2\@firstofone#3\@nil\endcsname}}
+\def\@set@curr@file@aux#1{%
+ \expandafter\ifx\csname\endcsname#1%
+ .tex\else\string#1\fi}
+\def\@filehook@set@CurrentFile{%
+ \@expl@@@filehook@set@curr@file@@nNN{\@curr@file}%
+ \CurrentFileUsed\CurrentFilePathUsed
+ \ifx\@curr@file@reqd\@curr@file
+ \let\CurrentFile\CurrentFileUsed
+ \let\CurrentFilePath\CurrentFilePathUsed
+ \else
+ \@expl@@@filehook@set@curr@file@@nNN{\@curr@file@reqd}%
+ \CurrentFile\CurrentFilePath
+ \fi}
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {@@_set_curr_file:nNN}{Set curr file}%
+\ExplSyntaxOn
+\cs_new_protected:Npn \__filehook_set_curr_file:nNN #1
+ {
+ \exp_args:Nf \__filehook_file_parse_full_name:nN {#1}
+ \__filehook_set_curr_file_assign:nnnNN
+ }
+\cs_new_protected:Npn \__filehook_set_curr_file_assign:nnnNN #1 #2 #3 #4 #5
+ {
+ \str_set:Nn #5 {#1}
+ \str_set:Nn #4 {#2#3}
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\__filehook_resolve_file_subst:w}{Replace files detect loops}%
+\ExplSyntaxOn
+\cs_new:Npn \__filehook_resolve_file_subst:w #1 \@nil
+ { \__filehook_file_parse_full_name:nN {#1} \__filehook_file_subst_begin:nnn }
+\cs_new:Npn \__filehook_normalize_file_name:w #1 \@nil
+ { \__filehook_file_parse_full_name:nN {#1} \__filehook_file_name_compose:nnn }
+\cs_new:Npn \__filehook_file_name_compose:nnn #1 #2 #3
+ { \tl_if_empty:nF {#1} { #1 / } #2#3 }
+\flag_new:n { __filehook_file_replaced }
+\cs_new:Npn \__filehook_if_file_replaced:TF #1 #2
+ { \flag_if_raised:nTF { __filehook_file_replaced } {#1} {#2} }
+\cs_new_protected:Npn \__filehook_clear_replacement_flag:
+ { \flag_clear:n { __filehook_file_replaced } }
+\cs_new:Npn \__filehook_file_subst_begin:nnn #1 #2 #3
+ {
+ \__filehook_file_subst_tortoise_hare:nn { #2#3 } { #2#3 }
+ { \__filehook_file_name_compose:nnn {#1} {#2} {#3} }
+ }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\__filehook_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
+\ExplSyntaxOn
+\cs_new:Npn \__filehook_file_subst_tortoise_hare:nn #1 #2 #3
+ {
+ \cs_if_exist:cTF { @file-subst@ #2 }
+ {
+ \flag_if_raised:nF { __filehook_file_replaced }
+ { \flag_raise:n { __filehook_file_replaced } }
+ \cs_if_exist:cTF { @file-subst@ \use:c { @file-subst@ #2 } }
+ {
+ \__filehook_file_subst_loop:cc
+ { @file-subst@ #1 }
+ { @file-subst@ \use:c { @file-subst@ #2 } }
+ }
+ { \use:c { @file-subst@ #2 } }
+ }
+ { #3 }
+ }
+\cs_new:Npn \__filehook_file_subst_loop:NN #1 #2
+ {
+ \token_if_eq_meaning:NNTF #1 #2
+ {
+ .tex
+ \__filehook_file_subst_cycle_error:cN { @file-subst@ #1 } #1
+ }
+ { \__filehook_file_subst_tortoise_hare:nn {#1} {#2} {#2} }
+ }
+\cs_generate_variant:Nn \__filehook_file_subst_loop:NN { cc }
+\cs_new:Npn \__filehook_file_subst_cycle_error:NN #1 #2
+ {
+ \__kernel_msg_expandable_error:nnff { kernel } { file-cycle }
+ {#1} { \use:c { @file-subst@ #1 } }
+ \token_if_eq_meaning:NNF #1 #2
+ { \__filehook_file_subst_cycle_error:cN { @file-subst@ #1 } #2 }
+ }
+\cs_generate_variant:Nn \__filehook_file_subst_cycle_error:NN { c }
+\__kernel_msg_new:nnn { kernel } { file-cycle }
+ { File~loop!~#1~replaced~by~#2... }
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\disable@package@load}{Disable packages}%
+\def\disable@package@load#1#2{%
+ \global\@namedef{@pkg-disable@#1.\@pkgextension}{#2}}
+\def\@disable@packageload@do#1#2{%
+ \@ifundefined{@pkg-disable@#1}{#2}%
+ {\@nameuse{@pkg-disable@#1}}}
+\def\reenable@package@load#1{%
+ \global\expandafter\let
+ \csname @pkg-disable@#1.\@pkgextension \endcsname \@undefined}
\EndIncludeInRelease
\IncludeInRelease{0000/00/00}%
- {\fontencoding}{TU in everyjob}%
-\fontencoding{OT1}\let\encodingdefault\f@encoding
+ {\disable@package@load}{Disable packages}%
+
+\let\disable@package@load \@undefined
+\let\@disable@packageload@do\@undefined
+\let\reenable@package@load \@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+ {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}%
+\ExplSyntaxOn
+\cs_new_eq:NN \@expl@@@filehook@if@no@extension@@nTF
+ \__filehook_if_no_extension:nTF
+\cs_new_eq:NN \@expl@@@filehook@set@curr@file@@nNN
+ \__filehook_set_curr_file:nNN
+\cs_new_eq:NN \@expl@@@filehook@resolve@file@subst@@w
+ \__filehook_resolve_file_subst:w
+\cs_new_eq:NN \@expl@@@filehook@normalize@file@name@@w
+ \__filehook_normalize_file_name:w
+\cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF
+ \__filehook_if_file_replaced:TF
+\cs_new_eq:NN \@expl@@@filehook@clear@replacement@flag@@
+ \__filehook_clear_replacement_flag:
+\cs_new_eq:NN \@expl@@@filehook@drop@extension@@N
+ \__filehook_drop_extension:N
+\cs_new_eq:NN \@expl@@@filehook@file@push@@
+ \__filehook_file_push:
+\cs_new_eq:NN \@expl@@@filehook@file@pop@@
+ \__filehook_file_pop:
+\cs_new_eq:NN \@expl@@@filehook@file@pop@assign@@nnnn
+ \__filehook_file_pop_assign:nnnn
+\ExplSyntaxOff
\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}%
+ {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}%
+\let\@expl@@@filehook@file@pop@@\relax
+\EndIncludeInRelease
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
+%%
+%%% From File: ltshipout.dtx
+\providecommand\ltshipoutversion{v1.0d}
+\providecommand\ltshipoutdate{2020/12/06}
+\IncludeInRelease{2020/10/01}%
+ {\shipout}{Hook management (shipout)}%
+\ExplSyntaxOn
+\bool_new:N \g__shipout_debug_bool
+\cs_new_eq:NN \__shipout_debug:n \use_none:n
+\cs_new_protected:Npn \shipout_debug_on:
+ {
+ \bool_gset_true:N \g__shipout_debug_bool
+ \__shipout_debug_gset:
+ }
+\cs_new_protected:Npn \shipout_debug_off:
+ {
+ \bool_gset_false:N \g__shipout_debug_bool
+ \__shipout_debug_gset:
+ }
+\cs_new_protected:Npn \__shipout_debug_gset:
+ {
+ \cs_gset_protected:Npx \__shipout_debug:n ##1
+ { \bool_if:NT \g__shipout_debug_bool {##1} }
+ }
+\box_new:N \l_shipout_box
+\cs_set_eq:NN \ShipoutBox \l_shipout_box
+\cs_set_protected:Npn \__shipout_execute: {
+ \tl_set:Nx \l__shipout_group_level_tl
+ { \int_value:w \tex_currentgrouplevel:D }
+ \tex_afterassignment:D \__shipout_execute_test_level:
+ \tex_setbox:D \l_shipout_box
+}
+\cs_gset_eq:NN \shipout \__shipout_execute:
+\tl_new:N \l__shipout_group_level_tl
+\cs_new:Npn \__shipout_execute_test_level: {
+ \int_compare:nNnT
+ \l__shipout_group_level_tl < \tex_currentgrouplevel:D
+ \tex_aftergroup:D
+ \__shipout_execute_cont:
+}
+\cs_new:Npn \__shipout_execute_cont: {
+ \box_if_empty:NTF \l_shipout_box
+ { \PackageWarning{ltshipout}{Ignoring~ void~ shipout~ box} }
+ {
+ \bool_gset_false:N \g__shipout_discard_bool
+ \cs_set_eq:NN \__shipout_saved_protect: \protect
+ \set@typeset@protect
+ \__shipout_get_box_size:N \l_shipout_box
+ \hook_use:n {shipout/before}
+ \int_gincr:N \g_shipout_totalpages_int
+ \bool_if:NTF \g__shipout_discard_bool
+ { \PackageInfo{ltshipout}{Completed~ page~ discarded}
+ \bool_gset_false:N \g__shipout_discard_bool
+ \tex_deadcycles:D \c_zero_int
+ }
+ { \box_if_empty:NTF \l_shipout_box
+ { \PackageWarning{ltshipout}{
+ Shipout~ box~ was~ voided~ by~ hook,\MessageBreak
+ ignoring~ shipout~ box }
+ }
+ {
+ \int_gincr:N \g_shipout_readonly_int
+ \__shipout_debug:n {
+ \typeout{Absolute~ page~ =~ \int_use:N \g_shipout_readonly_int
+ \space (target:~ \@abspage@last)}
+ }
+ \__shipout_get_box_size:N \l_shipout_box
+ \hook_if_empty:nF {shipout/foreground}
+ { \__shipout_add_foreground_picture:n
+ { \hook_use:n {shipout/foreground} } }
+ \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/background} }
+ { \tl_if_empty_p:N \@kernel@before@shipout@background }
+ { \__shipout_add_background_picture:n
+ { \@kernel@before@shipout@background
+ \hook_use:n {shipout/background} } }
+ \__shipout_execute_firstpage_hook:
+ \int_compare:nNnT \@abspage@last = \g_shipout_readonly_int
+ { \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/lastpage} }
+ { \tl_if_empty_p:N \@kernel@after@shipout@lastpage }
+ { \__shipout_debug:n { \typeout{Executing~ lastpage~ hook~
+ on~ page~ \int_use:N \g_shipout_readonly_int } }
+ \__shipout_add_foreground_box:n { \UseHook{shipout/lastpage}
+ \@kernel@after@shipout@lastpage }
+ }
+ \bool_gset_true:N \g__shipout_lastpage_handled_bool
+ }
+ \cs_set_eq:NN \protect \exp_not:N
+ \tex_shipout:D \box_use:N \l_shipout_box
+ }
+ }
+ \cs_set_eq:NN \protect \__shipout_saved_protect:
+ }
+}
+\cs_new_eq:NN \__shipout_saved_protect: \protect
+\hook_new:n{shipout/before}
+\hook_new:n{shipout/foreground}
+\hook_new:n{shipout/background}
+\hook_new:n{shipout/firstpage}
+\hook_new:n{shipout/lastpage}
+\let\@kernel@after@shipout@lastpage\@empty
+\let\@kernel@before@shipout@background\@empty
+\cs_new:Npn \__shipout_execute_firstpage_hook: {
+ \hook_if_empty:nF {shipout/firstpage}
+ { \__shipout_add_background_box:n { \UseHook{shipout/firstpage} } }
+ \cs_gset_eq:NN \__shipout_execute_firstpage_hook: \prg_do_nothing:
+ \cs_gset:Npn \__shipout_add_firstpage_material:Nn ##1 ##2 {
+ \@latex@warning{
+ First~ page~ is~ already~ shipped~ out,~ ignoring\MessageBreak
+ \string##1 }
+ }
+}
+\bool_new:N \g__shipout_lastpage_handled_bool
+\cs_new:Npn \__shipout_add_firstpage_material:Nn #1#2 {
+ \AddToHook{shipout/firstpage}{#2}
+}
+\cs_new:Npn \__shipout_get_box_size:N #1 {
+ \dim_set:Nn \l_shipout_box_ht_dim { \box_ht:N #1 }
+ \dim_set:Nn \l_shipout_box_dp_dim { \box_dp:N #1 }
+ \dim_set:Nn \l_shipout_box_wd_dim { \box_wd:N #1 }
+ \dim_set:Nn \l_shipout_box_ht_plus_dp_dim { \l_shipout_box_ht_dim +
+ \l_shipout_box_dp_dim }
+}
+\dim_new:N \l_shipout_box_ht_dim
+\dim_new:N \l_shipout_box_dp_dim
+\dim_new:N \l_shipout_box_wd_dim
+\dim_new:N \l_shipout_box_ht_plus_dp_dim
+\bool_new:N \g__shipout_discard_bool
+\box_new:N \l__shipout_tmp_box
+\tl_new:N \l__shipout_saved_badness_tl
+\cs_new:Npn \__shipout_add_background_box:n #1
+{ \__shipout_get_box_size:N \l_shipout_box
+ \box_if_vertical:NTF \l_shipout_box
+ {
+ \tl_set:Nx \l__shipout_saved_badness_tl
+ { \vfuzz=\the\vfuzz\relax
+ \vbadness=\the\vbadness\relax }
+ \vfuzz=\c_max_dim
+ \vbadness=\c_max_int
+ \vbox_set_to_ht:Nnn \l_shipout_box \l_shipout_box_ht_plus_dp_dim
+ {
+ \hbox_set:Nn \l__shipout_tmp_box
+ { \l__shipout_saved_badness_tl #1 }
+ \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
+ \skip_zero:N \baselineskip
+ \skip_zero:N \lineskip
+ \skip_zero:N \lineskiplimit
+ \box_use:N \l__shipout_tmp_box
+ \vbox_unpack:N \l_shipout_box
+ \kern \c_zero_dim
+ }
+ \box_set_ht:Nn \l_shipout_box \l_shipout_box_ht_dim
+ \box_set_dp:Nn \l_shipout_box \l_shipout_box_dp_dim
+ \l__shipout_saved_badness_tl
+ }
+ {
+ \box_if_horizontal:NT \l_shipout_box
+ {
+ \tl_set:Nx \l__shipout_saved_badness_tl
+ { \hfuzz=\the\hfuzz\relax
+ \hbadness=\the\hbadness\relax }
+ \hfuzz=\c_max_dim
+ \hbadness=\c_max_int
+ \hbox_set_to_wd:Nnn \l_shipout_box \l_shipout_box_wd_dim
+ {
+ \hbox_set:Nn \l__shipout_tmp_box
+ { \l__shipout_saved_badness_tl #1 }
+ \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_move_up:nn
+ \l_shipout_box_ht_dim
+ { \box_use:N \l__shipout_tmp_box }
+ \hbox_unpack:N \l_shipout_box
+ }
+ \l__shipout_saved_badness_tl
+ }
+ }
+}
+\cs_new:Npn \__shipout_add_foreground_box:n #1
+{
+ \box_if_vertical:NTF \l_shipout_box
+ {
+ \tl_set:Nx \l__shipout_saved_badness_tl
+ { \vfuzz=\the\vfuzz\relax
+ \vbadness=\the\vbadness\relax }
+ \vfuzz=\c_max_dim
+ \vbadness=\c_max_int
+ \vbox_set_to_ht:Nnn \l_shipout_box \l_shipout_box_ht_plus_dp_dim
+ {
+ \hbox_set:Nn \l__shipout_tmp_box
+ { \l__shipout_saved_badness_tl #1 }
+ \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
+ \skip_zero:N \baselineskip
+ \skip_zero:N \lineskip
+ \skip_zero:N \lineskiplimit
+ \vbox_unpack:N \l_shipout_box
+ \kern -\l_shipout_box_ht_plus_dp_dim
+ \box_use:N \l__shipout_tmp_box
+ \kern \l_shipout_box_ht_plus_dp_dim
+ }
+ \l__shipout_saved_badness_tl
+ \box_set_ht:Nn \l_shipout_box \l_shipout_box_ht_dim
+ \box_set_dp:Nn \l_shipout_box \l_shipout_box_dp_dim
+ }
+ {
+ \box_if_horizontal:NT \l_shipout_box
+ {
+ \tl_set:Nx \l__shipout_saved_badness_tl
+ { \hfuzz=\the\hfuzz\relax
+ \hbadness=\the\hbadness\relax }
+ \hfuzz=\c_max_dim
+ \hbadness=\c_max_int
+ \hbox_set_to_wd:Nnn \l_shipout_box \l_shipout_box_wd_dim
+ {
+ \hbox_unpack:N \l_shipout_box
+ \kern -\box_wd:N \l_shipout_box
+ \hbox_set:Nn \l__shipout_tmp_box
+ { \l__shipout_saved_badness_tl #1 }
+ \box_set_wd:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_move_up:nn { \box_ht:N \l_shipout_box }
+ { \box_use:N \l__shipout_tmp_box }
+ \kern \box_wd:N \l_shipout_box
+ }%
+ \l__shipout_saved_badness_tl
+ }
+ }
+}
+\cs_new:Npn \__shipout_init_page_origins: {
+ \tl_const:Nx \c__shipout_horigin_tl
+ {
+ \cs_if_exist_use:NTF \pdfvariable { horigin }
+ { \cs_if_exist_use:NF \pdfhorigin { 1in } }
+ }
+ \tl_const:Nx \c__shipout_vorigin_tl
+ {
+ \cs_if_exist_use:NTF \pdfvariable { vorigin }
+ { \cs_if_exist_use:NF \pdfvorigin { 1in } }
+ }
+ \cs_gset_eq:NN \__shipout_init_page_origins: \prg_do_nothing:
+}
+\cs_new:Npn \__shipout_picture_overlay:n #1 {
+ \__shipout_init_page_origins:
+ \kern -\c__shipout_horigin_tl \scan_stop:
+ \vbox_to_zero:n {
+ \kern -\c__shipout_vorigin_tl \scan_stop:
+ \unitlength 1pt \scan_stop:
+ \hbox_set_to_wd:Nnn \l__shipout_tmp_box \c_zero_dim
+ { \ignorespaces #1 \hss }
+ \box_set_ht:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_set_dp:Nn \l__shipout_tmp_box \c_zero_dim
+ \box_use:N \l__shipout_tmp_box
+ \tex_vss:D
+ }
+}
+\cs_new:Npn \__shipout_add_background_picture:n #1 {
+ \__shipout_add_background_box:n { \__shipout_picture_overlay:n {#1} }
+}
+\cs_new:Npn \__shipout_add_foreground_picture:n #1 {
+ \__shipout_add_foreground_box:n { \__shipout_picture_overlay:n {#1} }
+}
+\cs_new_protected:Npn \shipout_discard: {
+ \bool_gset_true:N \g__shipout_discard_bool
+}
+\int_new:N \g_shipout_readonly_int
+\cs_new_eq:NN \ReadonlyShipoutCounter \g_shipout_readonly_int
+\int_new:N \g_shipout_totalpages_int
+\cs_new_eq:NN \c@totalpages \g_shipout_totalpages_int
+\cs_new:Npn \thetotalpages { \arabic{totalpages} }
+\xdef\@abspage@last{\number\maxdimen}
+\g@addto@macro \@kernel@after@enddocument {
+ \int_compare:nNnT \@abspage@last = \maxdimen
+ {
+ \xdef\@abspage@last{ \int_eval:n {\g_shipout_readonly_int + 1} }
+ }
+}
+\g@addto@macro \@kernel@after@enddocument@afterlastpage {
+ \int_compare:nNnF \g_shipout_readonly_int = 0
+ {
+ \if@filesw
+ \iow_now:Nx \@auxout {
+ \gdef\string\@abspage@last {\int_use:N \g_shipout_readonly_int}}
+ \fi
+ \bool_if:NF \g__shipout_lastpage_handled_bool
+ {
+ \bool_lazy_and:nnF
+ { \hook_if_empty_p:n {shipout/lastpage} }
+ { \tl_if_empty_p:N \@kernel@after@shipout@lastpage }
+ {
+ \tex_shipout:D\vbox to\textheight
+ {
+ \hbox:n { \UseHook{shipout/lastpage}
+ \@kernel@after@shipout@lastpage }
+ \__shipout_excuse_extra_page:
+ \null
+ }
+ \cs_gset_eq:NN \@extra@page@added \relax
+ }
+ }
+ }
+}
+\cs_new:Npn \__shipout_excuse_extra_page: {
+ \vfil
+ \begin{center}
+ \bfseries Temporary~ page!
+ \end{center}
+ \LaTeX{}~ was~ unable~ to~ guess~ the~ total~ number~ of~ pages~
+ correctly.~ ~ As~ there~ was~ some~ unprocessed~ data~ that~
+ should~ have~ been~ added~ to~ the~ final~ page~ this~ extra~
+ page~ has~ been~ added~ to~ receive~ it.
+ \par
+ If~ you~ rerun~ the~ document~ (without~ altering~ it)~ this~
+ surplus~ page~ will~ go~ away,~ because~ \LaTeX{}~ now~ knows~
+ how~ many~ pages~ to~ expect~ for~ this~ document.
+ \vfil
+}
+\def\PreviousTotalPages{0}
+\g@addto@macro\@kernel@before@begindocument
+ {\ifnum\@abspage@last<\maxdimen
+ \xdef\PreviousTotalPages{\@abspage@last}\fi}
+\cs_new_eq:NN \DiscardShipoutBox \shipout_discard:
+\cs_set_protected:Npn \AtBeginDvi {\__shipout_add_firstpage_material:Nn \AtBeginDvi}
+\cs_new_eq:NN \DebugShipoutsOn \shipout_debug_on:
+\cs_new_eq:NN \DebugShipoutsOff \shipout_debug_off:
+\cs_set_eq:NN \@expl@@@shipout@add@firstpage@material@@Nn
+ \__shipout_add_firstpage_material:Nn
+\cs_set_eq:NN \@expl@@@shipout@add@background@box@@n
+ \__shipout_add_background_box:n
+\cs_set_eq:NN \@expl@@@shipout@add@foreground@box@@n
+ \__shipout_add_foreground_box:n
+\cs_set_eq:NN \@expl@@@shipout@add@background@picture@@n
+ \__shipout_add_background_picture:n
+\cs_set_eq:NN \@expl@@@shipout@add@foreground@picture@@n
+ \__shipout_add_foreground_picture:n
+\ExplSyntaxOff
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\shipout}{Hook management (shipout)}%
+
+\ifcsname tex_shipout:D\endcsname
+\expandafter\let\expandafter\shipout
+ \csname tex_shipout:D\endcsname
\fi
-%%% From File: ltexpl.dtx
+
+\let \ShipoutBox\@undefined
+\let \ReadonlyShipoutCounter \@undefined
+\let \c@totalpages \@undefined
+\let \thetotalpages \@undefined
+
+\let \DiscardShipoutBox \@undefined
+\let \DebugShipoutsOn \@undefined
+\let \DebugShipoutsOff \@undefined
+
+\DeclareRobustCommand \AtBeginDvi [1]{%
+ \global \setbox \@begindvibox
+ \vbox{\unvbox \@begindvibox #1}%
+}
+
+\let \AtBeginShipout \@undefined
+\let \AtBeginShipoutNext \@undefined
+
+\let \AtBeginShipoutFirst \@undefined
+
+\let \ShipoutBoxHeight \@undefined
+\let \ShipoutBoxDepth \@undefined
+\let \ShipoutBoxWidth \@undefined
+
+\let \AtBeginShipoutDiscard \@undefined
+
+\let \AtBeginShipoutAddToBox \@undefined
+\let \AtBeginShipoutAddToBoxForeground \@undefined
+\let \AtBeginShipoutUpperLeft \@undefined
+\let \AtBeginShipoutUpperLeftForeground \@undefined
+
+
+\let \AtEndDvi \@undefined
+
+\EndIncludeInRelease
\IncludeInRelease{2020/10/01}%
- {expl3}{Pre-load expl3}%
-\expandafter\ifx\csname tex\string _let:D\endcsname\relax
- \expandafter\@firstofone
-\else
- \GenericInfo{}{Skipping: expl3 code already part of the format}%
- \expandafter\@gobble
+ {\AtEndDvi}{atenddvi emulation}%
+\ExplSyntaxOn
+\cs_new_protected:Npn \AtEndDvi {\AddToHook{shipout/lastpage}}
+\ExplSyntaxOff
+\disable@package@load{atenddvi}
+ {\PackageWarning{atenddvi}
+ {Functionality of this package is already\MessageBreak
+ provided by LaTeX.\MessageBreak\MessageBreak
+ It is there no longer necessary to load it\MessageBreak
+ and you can safely remove it.\MessageBreak
+ Found on}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\AtEndDvi}{atenddvi emulation}%
+\let \AtEndDvi \@undefined
+\EndIncludeInRelease
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% From File: ltoutput.dtx
+\IncludeInRelease{2015/10/01}%
+ {\bx@ZZ}{Extended float list}%
+\let\@elt\newinsert
+\ifx\numexpr\@undefined\else
+\def\reserved@a{%
+ \@elt\bx@S\@elt\bx@T\@elt\bx@U\@elt\bx@V
+ \@elt\bx@W\@elt\bx@X\@elt\bx@Y\@elt\bx@Z
+ \@elt\bx@AA\@elt\bx@BB\@elt\bx@CC\@elt\bx@DD\@elt\bx@EE
+ \@elt\bx@FF\@elt\bx@GG\@elt\bx@HH\@elt\bx@II\@elt\bx@JJ
+ \@elt\bx@KK\@elt\bx@LL\@elt\bx@MM\@elt\bx@NN
+ \@elt\bx@OO\@elt\bx@PP\@elt\bx@QQ\@elt\bx@RR
+ \@elt\bx@SS\@elt\bx@TT\@elt\bx@UU\@elt\bx@VV
+ \@elt\bx@WW\@elt\bx@XX\@elt\bx@YY\@elt\bx@ZZ}
+\reserved@a
+\def\@elt{\noexpand\@elt\noexpand}
+\edef\@freelist{\@freelist\reserved@a}
\fi
- {%
- \IfFileExists{expl3.ltx}
- {%
- \ifnum0%
- \ifdefined\pdffilesize 1\fi
- \ifdefined\filesize 1\fi
- \ifdefined\luatexversion\ifnum\luatexversion>94 1\fi\fi
- \ifdefined\kanjiskip 1\fi
- >0 %
- \expandafter\@firstofone
- \else
- \@latex@error{%
- LaTeX requires the e-TeX primitives and additional\MessageBreak
- functionality available in the engines:\MessageBreak
- - pdfTeX v1.40\MessageBreak
- - XeTeX v0.99992\MessageBreak
- - LuaTeX v0.95\MessageBreak
- - e-(u)pTeX mid-2012\MessageBreak
- or later%
- }\@ehd \expandafter\@gobble
- \fi
- }
- {%
- \@latex@error{LaTeX requires expl3}\@ehd
- \@gobble
- }%
- {%
- \input expl3.ltx
- \ifdefined\NewDocumentCommand
- \else
- \IfFileExists{xparse.ltx}
- {\input xparse.ltx }
- {}%
+\let\reserved@a\relax
+\let\@elt\relax
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\bx@ZZ}{Extended float list}%
+\def\@freelist{%
+ \@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E
+ \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J
+ \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N
+ \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R}
+ \insc@unt=234
+\EndIncludeInRelease
+\IncludeInRelease{2017/04/15}%
+ {\newpage}{Check depth of page}%
+\def \newpage {%
+ \if@noskipsec
+ \ifx \@nodocument\relax
+ \leavevmode
+ \global \@noskipsecfalse
+ \fi
+ \fi
+ \if@inlabel
+ \leavevmode
+ \global \@inlabelfalse
+ \fi
+ \if@nobreak \@nobreakfalse \everypar{}\fi
+ \par
+ \ifdim\prevdepth>\z@
+ \vskip -%
+ \ifdim\prevdepth>\maxdepth
+ \maxdepth
+ \else
+ \prevdepth
+ \fi
+ \fi
+ \vfil
+ \penalty -\@M}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\newpage}{Check depth of page}%
+\def \newpage {%
+ \if@noskipsec
+ \ifx \@nodocument\relax
+ \leavevmode
+ \global \@noskipsecfalse
+ \fi
+ \fi
+ \if@inlabel
+ \leavevmode
+ \global \@inlabelfalse
+ \fi
+ \if@nobreak \@nobreakfalse \everypar{}\fi
+ \par
+ \vfil
+ \penalty -\@M}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@testwrongwidth}{float order in 2-column}%
+\def\@testwrongwidth #1{%
+ \ifdim\dp#1=\f@depth
+ \else
+ \global\@testtrue
+ \fi}%
+\let\f@depth\z@
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@testwrongwidth}{float order in 2-column}%
+\let\@testwrongwidth\@undefined
+\let\f@depth\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\@doclearpage}%
+ {float order in 2-column}%
+\def \@doclearpage {%
+ \ifvoid\footins
+ \ifvbox\@kludgeins
+ {\setbox \@tempboxa \box \@kludgeins}%
+ \fi
+ \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
+ \setbox\@tempboxa\box\@cclv
+ \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
+ \global \let \@toplist \@empty
+ \global \let \@botlist \@empty
+ \global \@colroom \@colht
+ \ifx \@currlist\@empty
+ \else
+ \@latexerr{Float(s) lost}\@ehb
+ \global \let \@currlist \@empty
+ \fi
+ \@makefcolumn\@deferlist
+ \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
+ \if@twocolumn
+ \if@firstcolumn
+ \xdef\@deferlist{\@dbltoplist\@deferlist}%
+ \global \let \@dbltoplist \@empty
+ \global \@colht \textheight
+ \begingroup
+ \@dblfloatplacement
+ \@makefcolumn\@deferlist
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \@makefcolumn\@deferlist}%
+ \endgroup
+ \else
+ \vbox{}\clearpage
\fi
+ \fi
+ \ifx\@deferlist\@empty \else\clearpage \fi
+ \else
+ \setbox\@cclv\vbox{\box\@cclv\vfil}%
+ \@makecol\@opcol
+ \clearpage
+ \fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@doclearpage}%
+ {float order in 2-column}%
+\def \@doclearpage {%
+ \ifvoid\footins
+ \ifvbox\@kludgeins
+ {\setbox \@tempboxa \box \@kludgeins}%
+ \fi
+ \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
+ \setbox\@tempboxa\box\@cclv
+ \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
+ \global \let \@toplist \@empty
+ \global \let \@botlist \@empty
+ \global \@colroom \@colht
+ \ifx \@currlist\@empty
+ \else
+ \@latexerr{Float(s) lost}\@ehb
+ \global \let \@currlist \@empty
+ \fi
+ \@makefcolumn\@deferlist
+ \@whilesw\if@fcolmade \fi
+ {\@opcol\@makefcolumn\@deferlist}%
+ \if@twocolumn
+ \if@firstcolumn
+ \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}%
+ \global \let \@dbltoplist \@empty
+ \global \@colht \textheight
+ \begingroup
+ \@dblfloatplacement
+ \@makefcolumn\@dbldeferlist
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage\@makefcolumn\@dbldeferlist}%
+ \endgroup
+ \else
+ \vbox{}\clearpage
+ \fi
+ \fi
+ \else
+ \setbox\@cclv\vbox{\box\@cclv\vfil}%
+ \@makecol\@opcol
+ \clearpage
+ \fi
+ }%
+\EndIncludeInRelease
+\IncludeInRelease{2017/04/15}%
+ {\@outputpage}{Reset language for hyphenation}%
+\def\@outputpage{%
+\begingroup
+ \let \protect \noexpand
+ \language\document@default@language
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
+ \fi
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
}%
- }
+ }%
+ \global\let\if@newlist\@@if@newlist
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
\EndIncludeInRelease
-
-\IncludeInRelease{2020/02/02}%
- {expl3}{Pre-load expl3}%
-\IfFileExists{expl3.ltx}
- {%
- \ifnum0%
- \ifdefined\pdffilesize 1\fi
- \ifdefined\filesize 1\fi
- \ifdefined\luatexversion\ifnum\luatexversion>94 1\fi\fi
- >0 %
- \else
- \message{Skipping expl3-dependent extensions}
- \expandafter\@gobbletwo
+\IncludeInRelease{0000/00/00}%
+ {\@outputpage}{Reset language for hyphenation}%
+\def\@outputpage{%
+\begingroup
+ \let \protect \noexpand
+ \@resetactivechars
+ \global\let\@@if@newlist\if@newlist
+ \global\@newlistfalse
+ \@parboxrestore
+ \shipout \vbox{%
+ \set@typeset@protect
+ \aftergroup \endgroup
+ \aftergroup \set@typeset@protect
+ \if@specialpage
+ \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
+ \fi
+ \if@twoside
+ \ifodd\count\z@
+ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
+ \let\@themargin\oddsidemargin
+ \else \let\@thehead\@evenhead
+ \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
\fi
- }
- {%
- \message{Skipping expl3-dependent extensions}%
- \@gobbletwo
+ \fi
+ \reset@font
+ \normalsize
+ \normalsfcodes
+ \let\label\@gobble
+ \let\index\@gobble
+ \let\glossary\@gobble
+ \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
+ \@begindvi
+ \vskip \topmargin
+ \moveright\@themargin \vbox {%
+ \setbox\@tempboxa \vbox to\headheight{%
+ \vfil
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thehead}%
+ \color@endbox
+ }%
+ \dp\@tempboxa \z@
+ \box\@tempboxa
+ \vskip \headsep
+ \box\@outputbox
+ \baselineskip \footskip
+ \color@hbox
+ \normalcolor
+ \hb@xt@\textwidth{\@thefoot}%
+ \color@endbox
+ }%
+ }%
+ \global\let\if@newlist\@@if@newlist
+ \global \@colht \textheight
+ \stepcounter{page}%
+ \let\firstmark\botmark
+}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@startdblcolumn}{float order in 2-column}%
+\def \@startdblcolumn {%
+ \@tryfcolumn \@deferlist
+ \if@fcolmade
+ \else
+ \begingroup
+ \let \reserved@b \@deferlist
+ \global \let \@deferlist \@empty
+ \let \@elt \@sdblcolelt
+ \reserved@b
+ \endgroup
+ \fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@startdblcolumn}{float order in 2-column}%
+\def \@startdblcolumn {%
+% \global \@colht \textheight
+ \@tryfcolumn \@dbldeferlist
+ \if@fcolmade
+ \else
+ \begingroup
+ \let \reserved@b \@dbldeferlist
+ \global \let \@dbldeferlist \@empty
+ \let \@elt \@sdblcolelt
+ \reserved@b
+ \endgroup
+ \fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{\@xtryfc}%
+ {float order in 2-column}%
+\def\@xtryfc #1{%
+ \@next\reserved@a\@trylist{}{}%
+ \@currtype \count #1%
+ \divide\@currtype\@xxxii
+ \multiply\@currtype\@xxxii
+ \@bitor \@currtype \@failedlist
+ \@testfp #1%
+ \@testwrongwidth #1%
+ \ifdim \ht #1>\@colht
+ \@testtrue
+ \fi
+ \if@test
+ \@cons\@failedlist #1%
+ \else
+ \@ytryfc #1%
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\@xtryfc}%
+ {float order in 2-column}%
+\def\@xtryfc #1{%
+ \@next\reserved@a\@trylist{}{}%
+ \@currtype \count #1%
+ \divide\@currtype\@xxxii
+ \multiply\@currtype\@xxxii
+ \@bitor \@currtype \@failedlist
+ \@testfp #1%
+ \ifdim \ht #1>\@colht
+ \@testtrue
+ \fi
+ \if@test
+ \@cons\@failedlist #1%
+ \else
+ \@ytryfc #1%
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}{@ztryfc}%
+ {float order in 2-column}%
+\def\@ztryfc #1{%
+ \@tempcnta\count #1%
+ \divide\@tempcnta\@xxxii
+ \multiply\@tempcnta\@xxxii
+ \@bitor \@tempcnta {\@failedlist \@flfail}%
+ \@testfp #1%
+ \@testwrongwidth #1%
+ \@tempdimb\@tempdima
+ \advance\@tempdimb\ht #1%
+ \advance\@tempdimb\@fpsep
+ \ifdim \@tempdimb >\@colht
+ \@testtrue
+ \fi
+ \if@test
+ \@cons\@flfail #1%
+ \else
+ \@cons\@flsucceed #1%
+ \@tempdima\@tempdimb
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{@ztryfc}%
+ {float order in 2-column}%
+\def\@ztryfc #1{%
+ \@tempcnta \count#1%
+ \divide\@tempcnta\@xxxii
+ \multiply\@tempcnta\@xxxii
+ \@bitor \@tempcnta {\@failedlist \@flfail}%
+ \@testfp #1%
+ \@tempdimb\@tempdima
+ \advance\@tempdimb \ht#1%
+ \advance\@tempdimb\@fpsep
+ \ifdim \@tempdimb >\@colht
+ \@testtrue
+ \fi
+ \if@test
+ \@cons\@flfail #1%
+ \else
+ \@cons\@flsucceed #1%
+ \@tempdima\@tempdimb
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@addtocurcol}{float order in 2-column}%
+\def \@addtocurcol {%
+ \@insertfalse
+ \@setfloattypecounts
+ \ifnum \@fpstype=8
+ \else
+ \ifnum \@fpstype=24
+ \else
+ \@flsettextmin
+ \advance \@textmin \@textfloatsheight
+ \@reqcolroom \@pageht
+ \ifdim \@textmin>\@reqcolroom
+ \@reqcolroom \@textmin
+ \fi
+ \advance \@reqcolroom \ht\@currbox
+ \ifdim \@colroom>\@reqcolroom
+ \@flsetnum \@colnum
+ \ifnum \@colnum>\z@
+ \@bitor\@currtype\@deferlist
+ \@testwrongwidth\@currbox
+ \if@test
+ \else
+ \@bitor\@currtype\@botlist
+ \if@test
+ \@addtobot
+ \else
+ \ifodd \count\@currbox
+ \advance \@reqcolroom \intextsep
+ \ifdim \@colroom>\@reqcolroom
+ \global \advance \@colnum \m@ne
+ \global \advance \@textfloatsheight \ht\@currbox
+ \global \advance \@textfloatsheight 2\intextsep
+ \@cons \@midlist \@currbox
+ \if@nobreak
+ \nobreak
+ \@nobreakfalse
+ \everypar{}%
+ \else
+ \addpenalty \interlinepenalty
+ \fi
+ \vskip \intextsep
+ \box\@currbox
+ \penalty\interlinepenalty
+ \vskip\intextsep
+ \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
+ \outputpenalty \z@
+ \@inserttrue
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@addtotoporbot
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@resethfps
+ \@cons\@deferlist\@currbox
+ \fi
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@addtocurcol}{float order in 2-column}%
+\def \@addtocurcol {%
+ \@insertfalse
+ \@setfloattypecounts
+ \ifnum \@fpstype=8
+ \else
+ \ifnum \@fpstype=24
+ \else
+ \@flsettextmin
+ \advance \@textmin \@textfloatsheight
+ \@reqcolroom \@pageht
+ \ifdim \@textmin>\@reqcolroom
+ \@reqcolroom \@textmin
+ \fi
+ \advance \@reqcolroom \ht\@currbox
+ \ifdim \@colroom>\@reqcolroom
+ \@flsetnum \@colnum
+ \ifnum \@colnum>\z@
+ \@bitor\@currtype\@deferlist
+ \if@test
+ \else
+ \@bitor\@currtype\@botlist
+ \if@test
+ \@addtobot
+ \else
+ \ifodd \count\@currbox
+ \advance \@reqcolroom \intextsep
+ \ifdim \@colroom>\@reqcolroom
+ \global \advance \@colnum \m@ne
+ \global \advance
+ \@textfloatsheight\ht\@currbox
+ \global \advance
+ \@textfloatsheight 2\intextsep
+ \@cons \@midlist \@currbox
+ \if@nobreak
+ \nobreak
+ \@nobreakfalse
+ \everypar{}%
+ \else
+ \addpenalty\interlinepenalty
+ \fi
+ \vskip \intextsep
+ \box\@currbox
+ \penalty\interlinepenalty
+ \vskip\intextsep
+ \ifnum\outputpenalty
+ <-\@Mii \vskip
+ -\parskip\fi
+ \outputpenalty \z@
+ \@inserttrue
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@addtobot
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@resethfps
+ \@cons\@deferlist\@currbox
+ \fi
}%
-\input{expl3.ltx}
\EndIncludeInRelease
-\ExplSyntaxOn
-\IncludeInRelease{2020/10/01}{expl3~2020-10-01}%
- {expl3~macros~added~for~the~2020-10-01~release}%
-\cs_gset_eq:NN \@expl@cs@to@str@@N \cs_to_str:N
-\cs_gset_eq:NN \@expl@str@if@eq@@nnTF \str_if_eq:nnTF
-\cs_gset_eq:NN \@expl@cs@prefix@spec@@N \cs_prefix_spec:N
-\cs_gset_eq:NN \@expl@cs@argument@spec@@N \cs_argument_spec:N
-\cs_gset_eq:NN \@expl@cs@replacement@spec@@N \cs_replacement_spec:N
-\cs_gset_eq:NN \@expl@str@map@function@@NN \str_map_function:NN
-\cs_gset_eq:NN \@expl@char@generate@@nn \char_generate:nn
+\IncludeInRelease{2015/01/01}
+ {\@addtonextcol}{float order in 2-column}%
+\def\@addtonextcol{%
+ \begingroup
+ \@insertfalse
+ \@setfloattypecounts
+ \ifnum \@fpstype=8
+ \else
+ \ifnum \@fpstype=24
+ \else
+ \@flsettextmin
+ \@reqcolroom \ht\@currbox
+ \advance \@reqcolroom \@textmin
+ \ifdim \@colroom>\@reqcolroom
+ \@flsetnum \@colnum
+ \ifnum\@colnum>\z@
+ \@bitor\@currtype\@deferlist
+ \@testwrongwidth\@currbox
+ \if@test
+ \else
+ \@addtotoporbot
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@cons\@deferlist\@currbox
+ \fi
+ \endgroup
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@addtonextcol}{float order in 2-column}%
+\def\@addtonextcol{%
+ \begingroup
+ \@insertfalse
+ \@setfloattypecounts
+ \ifnum \@fpstype=8
+ \else
+ \ifnum \@fpstype=24
+ \else
+ \@flsettextmin
+ \@reqcolroom \ht\@currbox
+ \advance \@reqcolroom \@textmin
+ \ifdim \@colroom>\@reqcolroom
+ \@flsetnum \@colnum
+ \ifnum\@colnum>\z@
+ \@bitor\@currtype\@deferlist
+ \if@test
+ \else
+ \@addtotoporbot
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@cons\@deferlist\@currbox
+ \fi
+ \endgroup
+}%
\EndIncludeInRelease
-\IncludeInRelease{0000/00/00}{expl3~2020-10-01}%
- {expl3~macros~added~for~the~2020-10-01~release}%
-\cs_undefine:N \@expl@cs@to@str@@N
-\cs_undefine:N \@expl@str@if@eq@@nnTF
-\cs_undefine:N \@expl@cs@prefix@spec@@N
-\cs_undefine:N \@expl@cs@argument@spec@@N
-\cs_undefine:N \@expl@cs@replacement@spec@@N
-\cs_undefine:N \@expl@str@map@function@@NN
+\IncludeInRelease{2015/01/01}%
+ {\@addtodblcol}{float order in 2-column}%
+\def\@addtodblcol{%
+ \begingroup
+ \@insertfalse
+ \@setfloattypecounts
+ \@getfpsbit \tw@
+ \ifodd\@tempcnta
+ \@flsetnum \@dbltopnum
+ \ifnum \@dbltopnum>\z@
+ \@tempswafalse
+ \ifdim \@dbltoproom>\ht\@currbox
+ \@tempswatrue
+ \else
+ \ifnum \@fpstype<\sixt@@n
+ \advance \@dbltoproom \@textmin
+ \ifdim \@dbltoproom>\ht\@currbox
+ \@tempswatrue
+ \fi
+ \advance \@dbltoproom -\@textmin
+ \fi
+ \fi
+ \if@tempswa
+ \@bitor \@currtype \@deferlist
+ \@testwrongwidth\@currbox
+ \if@test
+ \else
+ \@tempdima -\ht\@currbox
+ \advance\@tempdima
+ -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
+ \dblfloatsep \fi
+ \global \advance \@dbltoproom \@tempdima
+ \global \advance \@colht \@tempdima
+ \global \advance \@dbltopnum \m@ne
+ \@cons \@dbltoplist \@currbox
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@cons\@deferlist\@currbox
+ \fi
+ \endgroup
+}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@addtodblcol}{float order in 2-column}%
+\def\@addtodblcol{%
+ \begingroup
+ \@insertfalse
+ \@setfloattypecounts
+ \@getfpsbit \tw@
+ \ifodd\@tempcnta
+ \@flsetnum \@dbltopnum
+ \ifnum \@dbltopnum>\z@
+ \@tempswafalse
+ \ifdim \@dbltoproom>\ht\@currbox
+ \@tempswatrue
+ \else
+ \ifnum \@fpstype<\sixt@@n
+ \advance \@dbltoproom \@textmin
+ \ifdim \@dbltoproom>\ht\@currbox
+ \@tempswatrue
+ \fi
+ \advance \@dbltoproom -\@textmin
+ \fi
+ \fi
+ \if@tempswa
+ \@bitor \@currtype \@dbldeferlist
+ \if@test
+ \else
+ \@tempdima -\ht\@currbox
+ \advance\@tempdima
+ -\ifx \@dbltoplist\@empty
+ \dbltextfloatsep
+ \else \dblfloatsep \fi
+ \global \advance \@dbltoproom \@tempdima
+ \global \advance \@colht \@tempdima
+ \global \advance \@dbltopnum \m@ne
+ \@cons \@dbltoplist \@currbox
+ \@inserttrue
+ \fi
+ \fi
+ \fi
+ \fi
+ \if@insert
+ \else
+ \@cons\@dbldeferlist\@currbox
+ \fi
+ \endgroup
+}%
+\EndIncludeInRelease
+\IncludeInRelease{2017/01/01}%
+ {\@makefcolumn}{negative height floats}%
+\def\@makefcolumn #1{%
+ \begingroup
+ \@fpmin -\maxdimen
+ \let \@testfp \@gobble
+ \@tryfcolumn #1%
+ \endgroup
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@makefcolumn}{negative height floats}%
+\def\@makefcolumn #1{%
+ \begingroup
+ \@fpmin \z@
+ \let \@testfp \@gobble
+ \@tryfcolumn #1%
+ \endgroup
+}
+\EndIncludeInRelease
+\IncludeInRelease{2015/01/01}%
+ {\@outputdblcol}{2 column marks}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global\@firstcolumnfalse
+ \global\setbox\@leftcolumn\copy\@outputbox
+ \splitmaxdepth\maxdimen
+ \vbadness\maxdimen
+ \setbox\@outputbox\vbox{\unvbox\@outputbox\unskip}%
+ \setbox\@outputbox\vsplit\@outputbox to\maxdimen
+ \toks@\expandafter{\topmark}%
+ \xdef\@firstcoltopmark{\the\toks@}%
+ \toks@\expandafter{\splitfirstmark}%
+ \xdef\@firstcolfirstmark{\the\toks@}%
+ \ifx\@firstcolfirstmark\@empty
+ \global\let\@setmarks\relax
+ \else
+ \gdef\@setmarks{%
+ \let\firstmark\@firstcolfirstmark
+ \let\topmark\@firstcoltopmark}%
+ \fi
+ \else
+ \global\@firstcolumntrue
+ \setbox\@outputbox\vbox{%
+ \hb@xt@\textwidth{%
+ \hb@xt@\columnwidth{\box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth{\box\@outputbox \hss}}}%
+ \@combinedblfloats
+ \@setmarks
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi{\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\@outputdblcol}{2 column marks}%
+\def\@outputdblcol{%
+ \if@firstcolumn
+ \global \@firstcolumnfalse
+ \global \setbox\@leftcolumn \box\@outputbox
+ \else
+ \global \@firstcolumntrue
+ \setbox\@outputbox \vbox {%
+ \hb@xt@\textwidth {%
+ \hb@xt@\columnwidth {%
+ \box\@leftcolumn \hss}%
+ \hfil
+ {\normalcolor\vrule
+ \@width\columnseprule}%
+ \hfil
+ \hb@xt@\columnwidth {%
+ \box\@outputbox \hss}%
+ }%
+ }%
+ \@combinedblfloats
+ \@outputpage
+ \begingroup
+ \@dblfloatplacement
+ \@startdblcolumn
+ \@whilesw\if@fcolmade \fi
+ {\@outputpage
+ \@startdblcolumn}%
+ \endgroup
+ \fi
+}%
+\EndIncludeInRelease
+%%% From File: ltfsscmp.dtx
+%% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
+%% all rights reserved.
+\IncludeInRelease{2015/01/01}{\new@fontshape}%
+ {NFSS version1 commands}%
+\let\new@fontshape\@undefined
+\let\warn@rel@i\@undefined
+\let\scan@fontshape\@undefined
+\let\scan@@fontshape\@undefined
+\let\subst@fontshape\@undefined
+\let\extra@def\@undefined
+\let\default@mextra\@undefined
+\let\preload@sizes\@undefined
+\let\err@rel@i\@undefined
+\let\newmathalphabet\@undefined
+\let\newmathalphabet@\@undefined
+\let\newmathalphabet@@@\@undefined
+\let\if@no@font@opt\@undefined
+\let\@no@font@optfalse\@undefined
+\let\define@mathalphabet\@undefined
+\let\define@mathgroup\@undefined
+\let\addtoversion\@undefined
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}{\new@fontshape}%
+ {NFSS version1 commands}%
+\gdef\new@fontshape#1#2#3#4{%
+ \warn@rel@i\new@fontshape\DeclareFontShape
+ \expandafter\scan@fontshape\@gobble#4<\@nil><<%
+ \DeclareFontShape U{#1}{#2}{#3}\reserved@f}%
+\@onlypreamble\new@fontshape
+\gdef\warn@rel@i#1#2{%
+ \@font@warning{*** NFSS release 1 command
+ \noexpand#1found\MessageBreak
+ *** Update by using release 2 command
+ \string#2.\MessageBreak
+ *** Recovery is probably possible}%
+}%
+\@onlypreamble\warn@rel@i
+\gdef\scan@fontshape{%
+ \let\reserved@f\@empty
+ \let\reserved@e\@empty % holds last info
+ \scan@@fontshape
+}%
+\@onlypreamble\scan@fontshape
+\gdef\scan@@fontshape#1>#2#3<{%
+ \ifx\@nil#1%
+ \edef\reserved@f{\reserved@f\reserved@e}%
+ \else
+ \def\reserved@b{#1}% nick names
+ \def\reserved@c{#3}%
+ \in@{ at}{#3}%
+ \ifin@
+ \in@{pt}{#3}% not a proof but a good chance
+ \ifin@
+ \def\reserved@a##1 at##2pt##3\@nil{%
+ \def\reserved@b{##2}%
+ \def\reserved@c{##1}%
+ }%
+ \reserved@a#3\@nil
+ \fi
+ \fi
+ \ifnum 0<0#2
+ \edef\reserved@d{subf*\reserved@c}%
+ \ifcase #2\or
+ \or
+ \else
+ \errmessage{*** What's this? NFSS release 0? ***}%
+ \fi
+ \else
+ \edef\reserved@d{#2\reserved@c}%
+ \fi
+ \ifx\reserved@d\reserved@e
+ \edef\reserved@f{\reserved@f<\reserved@b>}%
+ \else
+ \edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
+ \let\reserved@e\reserved@d
+ \fi
+ \expandafter\scan@@fontshape
+ \fi
+}%
+\@onlypreamble\scan@@fontshape
+\gdef\subst@fontshape#1#2#3#4#5#6{%
+ \warn@rel@i\subst@fontshape\DeclareFontShape
+ \DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}%
+\@onlypreamble\subst@fontshape
+\gdef\extra@def#1#2#3{%
+ \warn@rel@i\extra@def\DeclareFontFamily
+ \DeclareFontFamily{U}{#1}{}%
+}%
+\@onlypreamble\extra@def
+\gdef\default@mextra{%
+ \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
+ \DeclareFontEncodingDefaults\relax
+}%
+\@onlypreamble\default@mextra
+\gdef\preload@sizes{%
+ \warn@rel@i\preload@sizes\DeclarePreloadSizes
+ \DeclarePreloadSizes U%
+}%
+\@onlypreamble\preload@sizes
+\gdef\err@rel@i#1#2{%
+ \@latex@error{*** NFSS release 1 command \noexpand#1found%
+ ^^J*** Recovery not possible. Use \string#2}%
+ {The new release of NFSS doesn't support the
+ \noexpand#1command^^Jany longer.
+ Please upgrade your file to the syntax of NFSS
+ release 2^^Jusing the \noexpand#2command.}%
+ \batchmode\input.\relax
+}%
+\@onlypreamble\err@rel@i
+\gdef\newmathalphabet{%
+ \if@no@font@opt
+ \@latex@error{*** NFSS release 1 command
+ \noexpand\newmathalphabet found%
+ ^^J \space*** Automatic recovery not possible.%
+ ^^J \space*** TYPE H for Help%
+ }%
+ {Please look at the file usrguide.tex for hints on
+ how to resolve this problem.}%
+ \else
+ \warn@rel@i\newmathalphabet\DeclareMathAlphabet
+ \fi
+ \@ifstar\newmathalphabet@@@
+ \newmathalphabet@@}%
+\gdef\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}%
+\gdef\newmathalphabet@@@#1#2#3#4{%
+ \DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}%
+\@onlypreamble\newmathalphabet
+\@onlypreamble\newmathalphabet@@
+\@onlypreamble\newmathalphabet@@@
+\global\let\if@no@font@opt\iftrue
+\gdef\@no@font@optfalse{\let\if@no@font@opt\iffalse}%
+\gdef\define@mathalphabet{%
+ \err@rel@i\define@mathalphabet\DeclareMathAlphabet
+}%
+\@onlypreamble\define@mathalphabet
+\gdef\define@mathgroup{%
+ \err@rel@i\define@mathgroup\DeclareSymbolFont
+}%
+\@onlypreamble\define@mathgroup
+\def\addtoversion#1#2{%
+ \warn@rel@i\addtoversion\SetMathAlphabet
+ \SetMathAlphabet#2{#1}{U}}%
+\@onlypreamble\addtoversion
\EndIncludeInRelease
-\ExplSyntaxOff
%%% From File: ltfinal.dtx
\IncludeInRelease{2015/01/01}%
{\newmarks}{Extended Allocation}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
index a4e536bda4b..cf3321c31be 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin1.def b/Master/texmf-dist/tex/latex-dev/base/latin1.def
index ef47b4d36e9..e95eb613cf3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin1.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin1.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin1.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin10.def b/Master/texmf-dist/tex/latex-dev/base/latin10.def
index 25eeb22d5b4..bea8fc7d559 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin10.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin10.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin10.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\texteuro}
{\TextSymbolUnavailable\texteuro}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin2.def b/Master/texmf-dist/tex/latex-dev/base/latin2.def
index cabf30a3d40..c3168d406ea 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin2.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin2.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin2.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin3.def b/Master/texmf-dist/tex/latex-dev/base/latin3.def
index 909307dc280..78b494f8e0d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin3.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin3.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin3.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin4.def b/Master/texmf-dist/tex/latex-dev/base/latin4.def
index b150ce4938c..e28298b46f4 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin4.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin4.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin4.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcurrency}
{\TextSymbolUnavailable\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin5.def b/Master/texmf-dist/tex/latex-dev/base/latin5.def
index e91af0cccbd..cd5add5ab0f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin5.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin5.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin5.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/latin9.def b/Master/texmf-dist/tex/latex-dev/base/latin9.def
index a420b7765ea..4d56fe037dc 100644
--- a/Master/texmf-dist/tex/latex-dev/base/latin9.def
+++ b/Master/texmf-dist/tex/latex-dev/base/latin9.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{latin9.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textcent}
{\TextSymbolUnavailable\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
index ef1e704f291..143ba285d64 100644
--- a/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{lcyenc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A4}{\textcurrency}
\DeclareUnicodeCharacter{00AB}{\guillemotleft}
\DeclareUnicodeCharacter{00BB}{\guillemotright}
diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.clo b/Master/texmf-dist/tex/latex-dev/base/leqno.clo
index 1c5fbfe4418..e7fa2c47238 100644
--- a/Master/texmf-dist/tex/latex-dev/base/leqno.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/leqno.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/leqno.sty b/Master/texmf-dist/tex/latex-dev/base/leqno.sty
index 98b15b6f9f7..cb1d1433737 100644
--- a/Master/texmf-dist/tex/latex-dev/base/leqno.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/leqno.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.cls b/Master/texmf-dist/tex/latex-dev/base/letter.cls
index 9909ad61c3d..9efb3925b32 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1996/06/01]
\ProvidesClass{letter}
- [2020/03/11 v1.3b
+ [2021/01/07 v1.3c
Standard LaTeX document class]
\newcommand\@ptsize{}
\DeclareOption{a4paper}
@@ -228,7 +228,7 @@
\@date \end{tabular}\par}%
\fi
\vspace{2\parskip}%
- {\raggedright \toname \\ \toaddress \par}%
+ {\raggedright \toname \expandafter\\\toaddress \par}%
\vspace{2\parskip}%
#1\par\nobreak}
\newcommand\closing[1]{\par\nobreak\vspace{\parskip}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/letter.sty b/Master/texmf-dist/tex/latex-dev/base/letter.sty
index e15565c0ea0..3b0f8618a4f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/letter.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/letter.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
index febfbd72510..c4a1d93c476 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -47,7 +47,7 @@
#1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
\fi
\ProvidesFile{ltluatex.tex}%
-[2020/09/25 v1.1s
+[2020/12/06 v1.1s
LuaTeX support for plain TeX (core)
]
\edef\etatcatcode{\the\catcode`\@}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
index b96c884f3c3..478f9ea107e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
index d3941b3afde..676f7da8c47 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{ltxdoc}
- [2020/10/04 v2.1b Standard LaTeX documentation class]
+ [2020/12/05 v2.1b Standard LaTeX documentation class]
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
\DeclareOption*{%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
index 52ee2e193be..9da3e927b15 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{ly1enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\DeclareUnicodeCharacter{00A1}{\textexclamdown}
\DeclareUnicodeCharacter{00A2}{\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/macce.def b/Master/texmf-dist/tex/latex-dev/base/macce.def
index abe0c3f1d77..b7a5a66341d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/macce.def
+++ b/Master/texmf-dist/tex/latex-dev/base/macce.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{macce.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textdiv}
{\TextSymbolUnavailable\textdiv}
diff --git a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
index 3f34f5eb71b..6e896541bd3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
index bf513a7c78a..d6531049cd8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/next.def b/Master/texmf-dist/tex/latex-dev/base/next.def
index 7b17b7f14e8..3c0443ba43a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/next.def
+++ b/Master/texmf-dist/tex/latex-dev/base/next.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,7 @@
\ProvidesFile{next.def}
- [2020/08/01 v1.3d Input encoding file]
+ [2020/11/26 v1.3d Input encoding file]
\ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
\ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
\ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
index 047231c3c06..7125ea7b06c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\def\nfssfontfileversion{v2.2e}
-\def\nfssfontfiledate{2019/10/12}
+\def\nfssfontfiledate{2020/11/26}
\documentclass{article}
diff --git a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
index 902c1f91d56..f26f4fc7cd9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
index e5aa3aefad3..e273aecfb80 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
index 07183d69d24..ae720c81bf0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omlenc.def b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
index 0ec41965eb4..659fbd8b9be 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omlenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omlenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
index e6efbd4737d..ed295c8fd9e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
index 38608ff45ad..23a80f449f2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
index 531f251edfd..a1935d289da 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.def b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
index af45ce463ab..1d7e1179ece 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
index f1297d99bf3..e5b8df6a011 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{omsenc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A7}{\textsection}
\DeclareUnicodeCharacter{00B6}{\textparagraph}
\DeclareUnicodeCharacter{00B7}{\textperiodcentered}
diff --git a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
index 1d4961b841d..69e8e150390 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
index 5ae6289a88c..cb3112cea69 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
index c45a165fc9d..0705762d8fd 100644
--- a/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/openbib.sty b/Master/texmf-dist/tex/latex-dev/base/openbib.sty
index 683ab9ebcef..e8cb4d012b8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/openbib.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/openbib.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
index a04c463e7fc..bea346a5e43 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
index 5fda61099a7..9a716f994a9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
index ca36d48efd3..7aa6eb1e7d9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
index 8bf20aa7597..a119e352b3d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
index e4ee29adcb2..4936418d6ef 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
index 36634401ed8..726339b4485 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
index 8d59476d881..3956ce2c4ac 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
index c636ed38f8f..c788f7b3a48 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
index 1365270f0bc..3bbccdf44e8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{ot1enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\DeclareUnicodeCharacter{00A1}{\textexclamdown}
\DeclareUnicodeCharacter{00A3}{\textsterling}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
index 7cefe8a4e8e..e7f8575c06a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
index a3bdbb8ecc8..c1622e5275e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
index 12884cf1d57..c0bd827716b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{ot2enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00AB}{\guillemotleft}
\DeclareUnicodeCharacter{00BB}{\guillemotright}
\DeclareUnicodeCharacter{0131}{\i}
diff --git a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
index 48b4f7384a7..d02eec0069b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.cfg b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
index d6cc4e40270..f6caf34a9f8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.cfg
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -37,8 +37,8 @@
%%
%%% From File: fontdef.dtx
\ProvidesFile{preload.cfg}
- [2020/08/01 v3.0i LaTeX Kernel
-(Uncustomised preload
+ [2020/11/24 v3.0i LaTeX Kernel
+(Uncustomized preload
font setup)]
%%
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/preload.ltx b/Master/texmf-dist/tex/latex-dev/base/preload.ltx
index 3e198173abe..ead5eaa04f6 100644
--- a/Master/texmf-dist/tex/latex-dev/base/preload.ltx
+++ b/Master/texmf-dist/tex/latex-dev/base/preload.ltx
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.cls b/Master/texmf-dist/tex/latex-dev/base/proc.cls
index 8ad03c06a9c..91472bce6c8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/proc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/proc.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{proc}
- [2014/09/29 v1.3l
+ [2020/11/23 v1.3l
Standard LaTeX document class]
\DeclareOption{a5paper}
{\ClassError{proc}{Option `a5paper' not supported}{}}
diff --git a/Master/texmf-dist/tex/latex-dev/base/proc.sty b/Master/texmf-dist/tex/latex-dev/base/proc.sty
index 5b1a028e38c..80e9fa43b64 100644
--- a/Master/texmf-dist/tex/latex-dev/base/proc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/proc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesFile{proc.sty}
- [2014/09/29 v1.3l
+ [2020/11/23 v1.3l
LaTeX 2.09 compatibility style option `proc']
\if@compatibility
\else
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.cls b/Master/texmf-dist/tex/latex-dev/base/report.cls
index 498b9b1fbdc..a41434ba6a3 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/report.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{report}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX document class]
\newcommand\@ptsize{}
\newif\if@restonecol
diff --git a/Master/texmf-dist/tex/latex-dev/base/report.sty b/Master/texmf-dist/tex/latex-dev/base/report.sty
index 031632600c4..760e03540a0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/report.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/report.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/sfonts.def b/Master/texmf-dist/tex/latex-dev/base/sfonts.def
index 2972928b9be..693847cff7c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/sfonts.def
+++ b/Master/texmf-dist/tex/latex-dev/base/sfonts.def
@@ -8,7 +8,7 @@
%%
%% This is a generated file.
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
index adeae1eca9d..6ddbc524ac2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,11 +43,11 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
\ProvidesPackage{shortvrb}
- [2020/06/15 v2.1m
+ [2020/11/23 v2.1m
Standard LaTeX documentation package (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved.
\def\MakeShortVerb{%
\@ifstar
{\def\@shortvrbdef{\verb*}\@MakeShortVerb}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/showidx.sty b/Master/texmf-dist/tex/latex-dev/base/showidx.sty
index 7d2b53c4a7d..24e04e2bc32 100644
--- a/Master/texmf-dist/tex/latex-dev/base/showidx.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/showidx.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/size10.clo b/Master/texmf-dist/tex/latex-dev/base/size10.clo
index 4eb2ebde0ab..3f79aa9a523 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size10.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size10.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size10.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xpt\@xiipt
diff --git a/Master/texmf-dist/tex/latex-dev/base/size11.clo b/Master/texmf-dist/tex/latex-dev/base/size11.clo
index ee39dc8b448..4afd1dc573e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size11.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size11.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size11.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xipt{13.6}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/size12.clo b/Master/texmf-dist/tex/latex-dev/base/size12.clo
index 9767c339fdc..e8ea337e419 100644
--- a/Master/texmf-dist/tex/latex-dev/base/size12.clo
+++ b/Master/texmf-dist/tex/latex-dev/base/size12.clo
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{size12.clo}
- [2020/04/10 v1.4m
+ [2020/11/23 v1.4m
Standard LaTeX file (size option)]
\renewcommand\normalsize{%
\@setfontsize\normalsize\@xiipt{14.5}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.cls b/Master/texmf-dist/tex/latex-dev/base/slides.cls
index b2234aedf96..4960406f11e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.cls
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -43,7 +43,7 @@
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1997/06/01]
\ProvidesClass{slides}
- [2020/02/20 v2.4b
+ [2020/11/23 v2.4b
Standard LaTeX document class]
\input{slides.def}
\InputIfFileExists{sfonts.cfg}
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.def b/Master/texmf-dist/tex/latex-dev/base/slides.def
index 1cdda66467c..a49e4953da9 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.def
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{slides.def}
- [2020/02/20 v2.4b
+ [2020/11/23 v2.4b
SLiTeX definitions]
\message{hacks,}
diff --git a/Master/texmf-dist/tex/latex-dev/base/slides.sty b/Master/texmf-dist/tex/latex-dev/base/slides.sty
index 94ab3c0574b..24619dd803b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/slides.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/slides.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
index 5b6700039c3..e06108230da 100644
--- a/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
+++ b/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
@@ -2,7 +2,7 @@
% This class is buggy and needs fixing
\ProvidesClass{source2edoc}
- [2020/08/16 v0.1 Quick hack to typeset source2.tex
+ [2020/12/02 v0.2 Quick hack to typeset source2.tex
(not usable for anything else and buggy -- will vanish again)!]
\LoadClass{l3doc}
@@ -14,8 +14,43 @@
-% l3doc's def are buggy (already fixed there but not distributed yet)
+
\ExplSyntaxOn
+
+% in 2e we have a lot of functions that have no ``user-level'' documentation so we disable
+% a bogus backref in that case. Over time the sources should be clean up to have such documentation.
+
+\cs_set_protected:Npn \__codedoc_print_documented:
+ {
+ \seq_gset_filter:NNn \g__codedoc_nested_names_seq
+ \g__codedoc_nested_names_seq
+ { ! \__codedoc_if_macro_internal_p:n {##1} }
+ \seq_if_empty:NF \g__codedoc_nested_names_seq
+ {
+% This is a crude change: we grab the first name
+ \__codedoc_get_hyper_target:xN
+ { \seq_item:Nn \g__codedoc_nested_names_seq { 1 } }
+ \l__codedoc_tmpa_tl
+% ... and check if it has a reference
+ \cs_if_exist:cT{ r@\l__codedoc_tmpa_tl }
+% If it does we show it, if not we don't.
+ {
+ \int_set:Nn \l__codedoc_tmpa_int
+ { \seq_count:N \g__codedoc_nested_names_seq }
+ \int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~This~} {~These~}
+ \bool_if:NTF \l__codedoc_macro_var_bool {variable} {function}
+ \int_compare:nNnTF \l__codedoc_tmpa_int = 1 {~is~} {s~are~}
+ documented~on~page~
+ \exp_args:Nx \pageref { \l__codedoc_tmpa_tl } .
+ }
+ }
+ \seq_gclear:N \g__codedoc_nested_names_seq
+ }
+
+
+
+% some l3doc's def are buggy (already fixed there but not distributed yet)
+
\RenewDocumentCommand \DocInclude { m }
{
\relax\clearpage
diff --git a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
index ea2faf6fb0f..81523e133bb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,11 +42,11 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%%
-%% File: ltfilehook.dtx (C) Copyright 2020 Frank Mittelbach,
+%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
%% Phelype Oleinik & LaTeX Team
%%% From File: ltfilehook.dtx
-\providecommand\ltfilehookversion{v1.0c}
-\providecommand\ltfilehookdate{2020/10/18}
+\providecommand\ltfilehookversion{v1.0e}
+\providecommand\ltfilehookdate{2021/01/07}
\ProvidesExplPackage
{structuredlog}{\ltfilehookdate}{\ltfilehookversion}
{Structuring the TeX transcript file}
diff --git a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
index edcccc1ac76..ade90aa4d58 100644
--- a/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
index f07734e47f8..c5527d66e0c 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
index 553501909ec..cd85c741bb6 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
index 1864a55b5dd..755a9ef9967 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
index 73d78e2a5a9..d7a04885469 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
index 2a58c065218..63868ccad56 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
index bb64f53d43c..7ddc82dbf5e 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
index 0f75803ec54..b55669f4d5f 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.def b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
index 56d77bc1a8b..9c030f76f20 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
index 8836763a17d..3081cd6db97 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{t1enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\DeclareUnicodeCharacter{00A1}{\textexclamdown}
\DeclareUnicodeCharacter{00A3}{\textsterling}
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
index 76169192ed1..badbd1bdd99 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
index 431e1a03f1c..cc18c9df5f1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
index 00595c283a5..c1c79d4192a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
index a0f754f3f3c..2bcecf5423d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{t2aenc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A4}{\textcurrency}
\DeclareUnicodeCharacter{00A7}{\textsection}
\DeclareUnicodeCharacter{00AB}{\guillemotleft}
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
index 3fae1105d8b..44c95e2142d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{t2benc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A4}{\textcurrency}
\DeclareUnicodeCharacter{00A7}{\textsection}
\DeclareUnicodeCharacter{00AB}{\guillemotleft}
diff --git a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
index 0865733e53a..ad8b5fd86a2 100644
--- a/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{t2cenc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A4}{\textcurrency}
\DeclareUnicodeCharacter{00A7}{\textsection}
\DeclareUnicodeCharacter{00AB}{\guillemotleft}
diff --git a/Master/texmf-dist/tex/latex-dev/base/testpage.tex b/Master/texmf-dist/tex/latex-dev/base/testpage.tex
index b89ef81bbc5..d8af7d0bc13 100644
--- a/Master/texmf-dist/tex/latex-dev/base/testpage.tex
+++ b/Master/texmf-dist/tex/latex-dev/base/testpage.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/texsys.cfg b/Master/texmf-dist/tex/latex-dev/base/texsys.cfg
index b91299a8c73..80f3922ced8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/texsys.cfg
+++ b/Master/texmf-dist/tex/latex-dev/base/texsys.cfg
@@ -60,7 +60,7 @@
%
% Normally one would not need to define this macro in |texsys.cfg| as
% the automatic tests can supply parsers that work with UNIX and VMS
-% syntax, as well as a basic parser that willcover many other cases.
+% syntax, as well as a basic parser that will cover many other cases.
% However some operating systems may need a `hand produced' parser
% in which case it should be defined in this file.
%
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
index 2093af74c95..a5486ed5f2a 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
index b6e340e8195..a661dc51dd0 100644
--- a/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
index e8cc5e3d073..80c946dd4a5 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
+++ b/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,9 +44,9 @@
%%% From File: ltfsstrc.dtx
%% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
%% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved.
-\NeedsTeXFormat{LaTeX2e}[1995/05/16]
+\NeedsTeXFormat{LaTeX2e}[2021/05/01]
\ProvidesPackage{tracefnt}
- [2019/10/11 v3.0l Standard LaTeX package (font tracing)]
+ [2020/12/22 v3.0n Standard LaTeX package (font tracing)]
\newcount\tracingfonts
\tracingfonts=0
\DeclareOption{errorshow}{%
@@ -103,19 +103,59 @@
\csname\curr@fontshape\endcsname
\relax
}
+
\DeclareRobustCommand\selectfont
{%
\ifx\f@linespread\baselinestretch \else
\set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+ \ifx\delayed@f@adjustment\@empty
+ \else
+ \let\f@shape@saved\f@shape
+ \let\f@series@saved\f@series
+ \delayed@f@adjustment
+ \maybe@load@fontshape
+ \ifcsname \f@encoding/\f@family/\f@series/\f@shape \endcsname
+ \else
+ \let\f@shape\f@shape@saved
+ \let\f@series\f@series@saved
+ \let\delayed@merge@font@shape\merge@font@shape
+ \let\delayed@merge@font@series\merge@font@series
+ \delayed@f@adjustment
+ \let\delayed@merge@font@shape\merge@font@shape@without@substitution
+ \let\delayed@merge@font@series\merge@font@series@without@substitution
+ \fi
+ \let\delayed@f@adjustment\@empty
+ \fi
\xdef\font@name{%
\csname\curr@fontshape/\f@size\endcsname}%
\pickup@font
\font@name
- \ifnum \tracingfonts>\tw@
- \@font@info{Switching to \font@name}\fi
+ \UseHook{selectfont}%
\size@update
\enc@update
}
+\AddToHook{selectfont}
+ {\ifnum \tracingfonts>\tw@
+ \@font@info{Switching to \font@name}\fi}
+\IncludeInRelease{2021/05/01}%
+ {\selectfont}{Add hook to \selectfont}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+ {\selectfont}{Add hook to \selectfont}%
+
+\DeclareRobustCommand\selectfont
+ {%
+ \ifx\f@linespread\baselinestretch \else
+ \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
+ \xdef\font@name{%
+ \csname\curr@fontshape/\f@size\endcsname}%
+ \pickup@font
+ \font@name
+ \size@update
+ \enc@update
+ }
+
+\EndIncludeInRelease
\def\set@fontsize#1#2#3{%
\@defaultunits\@tempdimb#2pt\relax\@nnil
\edef\f@size{\strip@pt\@tempdimb}%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
index 9f544029f5f..af455e29461 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
index 0c0a53b4cdf..fe41d0ee84d 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
index 26bfc44ce11..c310d1fd418 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
index 4b5e178e6b0..da0aaddfd12 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
index 2452b000d84..c219a085286 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
index 6d17800c12c..da02f5cc485 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{ts1enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A2}{\textcent}
\DeclareUnicodeCharacter{00A3}{\textsterling}
\DeclareUnicodeCharacter{00A4}{\textcurrency}
diff --git a/Master/texmf-dist/tex/latex-dev/base/tuenc.def b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
index a9f8a27eb35..727c54082ce 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tuenc.def
+++ b/Master/texmf-dist/tex/latex-dev/base/tuenc.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
index 3282577fcce..24f085dff63 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
index 42de38f2cab..e8ee09ce5b8 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
index 87f2aa4d85b..ff704b2ff8b 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
index 90b272637e6..251f1ce3186 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
index f7f0a840c66..16d66fd2587 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
index 94a2c119189..164b8598a84 100644
--- a/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 2016-2020
+%% Copyright (C) 2016-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
index 446e82a8ec4..823b3eb8909 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
index 049e40a1dd1..af7d9771448 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
index 653ae9060f2..2a8e7edd6d1 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
index 82f9583bcd2..08d2185b829 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
index 0f4ed4eb608..811fb927b55 100644
--- a/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
+++ b/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
index 461f47b5981..91bf3bdb180 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8.def b/Master/texmf-dist/tex/latex-dev/base/utf8.def
index a1db0c44563..90a267a5dec 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8.def
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8.def
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{utf8.def}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\ifx\ifincsname\@undefined % old e-pTeX or e-upTeX engines
\input utf8-2018.def
\expandafter\@firstofone
diff --git a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
index 14b5be676a3..b95713ee3bb 100644
--- a/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{utf8enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A0}{\nobreakspace}
\DeclareUnicodeCharacter{00A1}{\textexclamdown}
\DeclareUnicodeCharacter{00A2}{\textcent}
diff --git a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
index 33467ed565a..72224b6b795 100644
--- a/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
+++ b/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
@@ -13,7 +13,7 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright (C) 1993-2020
+%% Copyright (C) 1993-2021
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -42,7 +42,7 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\ProvidesFile{x2enc.dfu}
- [2019/11/14 v1.2k UTF-8 support for inputenc]
+ [2020/11/26 v1.2k UTF-8 support for inputenc]
\DeclareUnicodeCharacter{00A4}{\textcurrency}
\DeclareUnicodeCharacter{00A7}{\textsection}
\DeclareUnicodeCharacter{00AB}{\guillemotleft}