From b33d382702e71037548dba5374e276b861ea8031 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Sat, 9 Jan 2021 21:36:18 +0000 Subject: latex-dev (9jan21) git-svn-id: svn://tug.org/texlive/trunk@57365 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex-dev/base/README.md | 2 +- Master/texmf-dist/doc/latex-dev/base/alltt.pdf | Bin 173079 -> 172584 bytes Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf | Bin 220217 -> 220226 bytes Master/texmf-dist/doc/latex-dev/base/cfgguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/changes.txt | 176 + Master/texmf-dist/doc/latex-dev/base/classes.pdf | Bin 520851 -> 520832 bytes Master/texmf-dist/doc/latex-dev/base/clsguide.pdf | Bin 372555 -> 372576 bytes Master/texmf-dist/doc/latex-dev/base/clsguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf | Bin 264505 -> 264510 bytes Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf | Bin 216997 -> 216995 bytes Master/texmf-dist/doc/latex-dev/base/cyrguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/doc.pdf | Bin 630914 -> 631310 bytes Master/texmf-dist/doc/latex-dev/base/docstrip.pdf | Bin 479526 -> 479297 bytes Master/texmf-dist/doc/latex-dev/base/encguide.pdf | Bin 1532144 -> 1532142 bytes Master/texmf-dist/doc/latex-dev/base/encguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/exscale.pdf | Bin 195877 -> 195882 bytes Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf | Bin 262059 -> 261622 bytes Master/texmf-dist/doc/latex-dev/base/fntguide.pdf | Bin 417861 -> 418347 bytes Master/texmf-dist/doc/latex-dev/base/fntguide.tex | 18 +- Master/texmf-dist/doc/latex-dev/base/graphpap.pdf | Bin 156277 -> 156276 bytes Master/texmf-dist/doc/latex-dev/base/ifthen.pdf | Bin 205213 -> 204833 bytes Master/texmf-dist/doc/latex-dev/base/inputenc.pdf | Bin 294900 -> 294928 bytes .../texmf-dist/doc/latex-dev/base/latexchanges.pdf | Bin 232390 -> 247704 bytes .../texmf-dist/doc/latex-dev/base/latexchanges.tex | 99 +- .../texmf-dist/doc/latex-dev/base/latexrelease.pdf | Bin 246195 -> 245786 bytes Master/texmf-dist/doc/latex-dev/base/latexsym.pdf | Bin 192297 -> 192295 bytes Master/texmf-dist/doc/latex-dev/base/lb2.pdf | Bin 138219 -> 138221 bytes Master/texmf-dist/doc/latex-dev/base/letter.pdf | Bin 305670 -> 307271 bytes Master/texmf-dist/doc/latex-dev/base/lgc2.pdf | Bin 101343 -> 101335 bytes Master/texmf-dist/doc/latex-dev/base/lppl.pdf | Bin 125830 -> 125830 bytes .../doc/latex-dev/base/ltfilehook-code.pdf | Bin 735387 -> 747843 bytes .../doc/latex-dev/base/ltfilehook-doc.pdf | Bin 516316 -> 518920 bytes .../texmf-dist/doc/latex-dev/base/lthooks-code.pdf | Bin 901850 -> 929157 bytes .../texmf-dist/doc/latex-dev/base/lthooks-doc.pdf | Bin 621011 -> 626773 bytes Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf | Bin 305339 -> 305260 bytes Master/texmf-dist/doc/latex-dev/base/ltnews.pdf | Bin 993090 -> 996577 bytes Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf | Bin 150020 -> 150020 bytes Master/texmf-dist/doc/latex-dev/base/ltnews01.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf | Bin 134751 -> 134751 bytes Master/texmf-dist/doc/latex-dev/base/ltnews02.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf | Bin 134742 -> 134739 bytes Master/texmf-dist/doc/latex-dev/base/ltnews03.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf | Bin 128772 -> 128773 bytes Master/texmf-dist/doc/latex-dev/base/ltnews04.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf | Bin 157181 -> 157182 bytes Master/texmf-dist/doc/latex-dev/base/ltnews05.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf | Bin 133138 -> 133141 bytes Master/texmf-dist/doc/latex-dev/base/ltnews06.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf | Bin 124029 -> 124030 bytes Master/texmf-dist/doc/latex-dev/base/ltnews07.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf | Bin 144482 -> 144483 bytes Master/texmf-dist/doc/latex-dev/base/ltnews08.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf | Bin 120222 -> 120221 bytes Master/texmf-dist/doc/latex-dev/base/ltnews09.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf | Bin 147946 -> 147944 bytes Master/texmf-dist/doc/latex-dev/base/ltnews10.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf | Bin 104936 -> 104939 bytes Master/texmf-dist/doc/latex-dev/base/ltnews11.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf | Bin 137919 -> 137922 bytes Master/texmf-dist/doc/latex-dev/base/ltnews12.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf | Bin 161065 -> 161063 bytes Master/texmf-dist/doc/latex-dev/base/ltnews13.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf | Bin 150907 -> 150913 bytes Master/texmf-dist/doc/latex-dev/base/ltnews14.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf | Bin 122092 -> 122092 bytes Master/texmf-dist/doc/latex-dev/base/ltnews15.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf | Bin 130687 -> 130689 bytes Master/texmf-dist/doc/latex-dev/base/ltnews16.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf | Bin 149838 -> 149848 bytes Master/texmf-dist/doc/latex-dev/base/ltnews17.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf | Bin 36005 -> 36004 bytes Master/texmf-dist/doc/latex-dev/base/ltnews18.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf | Bin 235073 -> 235075 bytes Master/texmf-dist/doc/latex-dev/base/ltnews19.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf | Bin 283318 -> 283324 bytes Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf | Bin 233492 -> 233489 bytes Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf | Bin 302836 -> 302831 bytes Master/texmf-dist/doc/latex-dev/base/ltnews22.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf | Bin 274459 -> 274456 bytes Master/texmf-dist/doc/latex-dev/base/ltnews23.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf | Bin 252645 -> 252643 bytes Master/texmf-dist/doc/latex-dev/base/ltnews24.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf | Bin 196326 -> 196325 bytes Master/texmf-dist/doc/latex-dev/base/ltnews25.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf | Bin 362839 -> 362839 bytes Master/texmf-dist/doc/latex-dev/base/ltnews26.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf | Bin 239758 -> 239759 bytes Master/texmf-dist/doc/latex-dev/base/ltnews27.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf | Bin 368226 -> 368231 bytes Master/texmf-dist/doc/latex-dev/base/ltnews28.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf | Bin 433004 -> 433003 bytes Master/texmf-dist/doc/latex-dev/base/ltnews29.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf | Bin 491246 -> 491245 bytes Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf | Bin 500919 -> 500928 bytes Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf | Bin 520923 -> 520917 bytes Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf | Bin 229842 -> 325333 bytes Master/texmf-dist/doc/latex-dev/base/ltnews33.tex | 60 + .../doc/latex-dev/base/ltshipout-code.pdf | Bin 749381 -> 756536 bytes .../doc/latex-dev/base/ltshipout-doc.pdf | Bin 503894 -> 528458 bytes Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf | Bin 191527 -> 191531 bytes Master/texmf-dist/doc/latex-dev/base/ltx3info.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf | Bin 215102 -> 215243 bytes Master/texmf-dist/doc/latex-dev/base/makeindx.pdf | Bin 160667 -> 160668 bytes Master/texmf-dist/doc/latex-dev/base/manifest.txt | 1 + Master/texmf-dist/doc/latex-dev/base/manual.pdf | Bin 151347 -> 151352 bytes Master/texmf-dist/doc/latex-dev/base/modguide.pdf | Bin 220388 -> 220389 bytes Master/texmf-dist/doc/latex-dev/base/modguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf | Bin 202451 -> 202445 bytes Master/texmf-dist/doc/latex-dev/base/proc.pdf | Bin 216877 -> 216401 bytes Master/texmf-dist/doc/latex-dev/base/slides.pdf | Bin 351586 -> 351910 bytes Master/texmf-dist/doc/latex-dev/base/slifonts.pdf | Bin 214710 -> 214706 bytes Master/texmf-dist/doc/latex-dev/base/source2e.pdf | Bin 4350850 -> 4392016 bytes Master/texmf-dist/doc/latex-dev/base/source2e.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/syntonly.pdf | Bin 181372 -> 181871 bytes Master/texmf-dist/doc/latex-dev/base/tlc2.pdf | Bin 164947 -> 164952 bytes Master/texmf-dist/doc/latex-dev/base/tulm.pdf | Bin 156546 -> 156546 bytes Master/texmf-dist/doc/latex-dev/base/usrguide.pdf | Bin 399035 -> 399074 bytes Master/texmf-dist/doc/latex-dev/base/usrguide.tex | 2 +- Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf | Bin 0 -> 181816 bytes Master/texmf-dist/doc/latex-dev/base/usrguide3.tex | 701 + Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf | Bin 330849 -> 330863 bytes Master/texmf-dist/doc/latex-dev/base/webcomp.pdf | Bin 136159 -> 136162 bytes Master/texmf-dist/source/latex-dev/base/alltt.dtx | 8 +- Master/texmf-dist/source/latex-dev/base/alltt.ins | 4 +- .../texmf-dist/source/latex-dev/base/classes.dtx | 113 +- .../texmf-dist/source/latex-dev/base/classes.ins | 4 +- .../texmf-dist/source/latex-dev/base/cmextra.ins | 4 +- .../texmf-dist/source/latex-dev/base/cmfonts.ins | 4 +- Master/texmf-dist/source/latex-dev/base/doc.dtx | 22 +- .../texmf-dist/source/latex-dev/base/docstrip.dtx | 16 +- .../texmf-dist/source/latex-dev/base/docstrip.ins | 4 +- Master/texmf-dist/source/latex-dev/base/ec.ins | 4 +- .../texmf-dist/source/latex-dev/base/exscale.dtx | 2 +- .../texmf-dist/source/latex-dev/base/exscale.ins | 4 +- Master/texmf-dist/source/latex-dev/base/fix-cm.dtx | 6 +- Master/texmf-dist/source/latex-dev/base/fix-cm.ins | 4 +- .../texmf-dist/source/latex-dev/base/fontdef.dtx | 12 +- Master/texmf-dist/source/latex-dev/base/format.ins | 6 +- .../texmf-dist/source/latex-dev/base/graphpap.dtx | 2 +- .../texmf-dist/source/latex-dev/base/graphpap.ins | 4 +- Master/texmf-dist/source/latex-dev/base/ifthen.dtx | 6 +- Master/texmf-dist/source/latex-dev/base/ifthen.ins | 4 +- .../texmf-dist/source/latex-dev/base/inputenc.dtx | 8 +- .../texmf-dist/source/latex-dev/base/inputenc.ins | 4 +- .../texmf-dist/source/latex-dev/base/latex209.dtx | 6 +- .../texmf-dist/source/latex-dev/base/latex209.ins | 4 +- .../source/latex-dev/base/latexrelease.dtx | 8 +- .../source/latex-dev/base/latexrelease.ins | 52 +- .../texmf-dist/source/latex-dev/base/latexsym.dtx | 2 +- .../texmf-dist/source/latex-dev/base/latexsym.ins | 6 +- Master/texmf-dist/source/latex-dev/base/letter.dtx | 28 +- Master/texmf-dist/source/latex-dev/base/letter.ins | 4 +- .../texmf-dist/source/latex-dev/base/ltalloc.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltbibl.dtx | 61 +- .../texmf-dist/source/latex-dev/base/ltboxes.dtx | 8 +- .../texmf-dist/source/latex-dev/base/ltclass.dtx | 230 +- .../texmf-dist/source/latex-dev/base/ltcntrl.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltcounts.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltdefns.dtx | 31 +- .../texmf-dist/source/latex-dev/base/ltdirchk.dtx | 20 +- .../texmf-dist/source/latex-dev/base/lterror.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltexpl.dtx | 127 +- .../source/latex-dev/base/ltfilehook.dtx | 254 +- .../texmf-dist/source/latex-dev/base/ltfiles.dtx | 22 +- .../texmf-dist/source/latex-dev/base/ltfinal.dtx | 15 +- .../texmf-dist/source/latex-dev/base/ltfloat.dtx | 16 +- .../texmf-dist/source/latex-dev/base/ltfntcmd.dtx | 10 +- .../texmf-dist/source/latex-dev/base/ltfssaxes.dtx | 399 +- .../texmf-dist/source/latex-dev/base/ltfssbas.dtx | 49 +- .../texmf-dist/source/latex-dev/base/ltfsscmp.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltfssdcl.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltfssini.dtx | 56 +- .../texmf-dist/source/latex-dev/base/ltfsstrc.dtx | 164 +- .../texmf-dist/source/latex-dev/base/lthooks.dtx | 906 +- .../texmf-dist/source/latex-dev/base/lthyphen.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltidxglo.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltlength.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltlists.dtx | 14 +- .../texmf-dist/source/latex-dev/base/ltlogos.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltluatex.dtx | 22 +- Master/texmf-dist/source/latex-dev/base/ltmath.dtx | 15 +- .../texmf-dist/source/latex-dev/base/ltmiscen.dtx | 47 +- .../texmf-dist/source/latex-dev/base/ltoutenc.dtx | 14 +- .../texmf-dist/source/latex-dev/base/ltoutenc.ins | 4 +- .../texmf-dist/source/latex-dev/base/ltoutput.dtx | 20 +- Master/texmf-dist/source/latex-dev/base/ltpage.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltpageno.dtx | 6 +- Master/texmf-dist/source/latex-dev/base/ltpar.dtx | 2 +- .../texmf-dist/source/latex-dev/base/ltpictur.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltplain.dtx | 12 +- Master/texmf-dist/source/latex-dev/base/ltsect.dtx | 6 +- .../texmf-dist/source/latex-dev/base/ltshipout.dtx | 160 +- .../texmf-dist/source/latex-dev/base/ltspace.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/lttab.dtx | 2 +- .../source/latex-dev/base/lttextcomp.dtx | 26 +- Master/texmf-dist/source/latex-dev/base/ltthm.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/ltvers.dtx | 8 +- Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx | 6 +- Master/texmf-dist/source/latex-dev/base/ltxref.dtx | 10 +- .../texmf-dist/source/latex-dev/base/makeindx.dtx | 2 +- .../texmf-dist/source/latex-dev/base/makeindx.ins | 4 +- Master/texmf-dist/source/latex-dev/base/newdc.ins | 4 +- .../texmf-dist/source/latex-dev/base/newlfont.dtx | 2 +- .../texmf-dist/source/latex-dev/base/nfssfont.dtx | 8 +- .../texmf-dist/source/latex-dev/base/nfssfont.ins | 4 +- Master/texmf-dist/source/latex-dev/base/olddc.ins | 4 +- .../texmf-dist/source/latex-dev/base/oldlfont.dtx | 2 +- .../texmf-dist/source/latex-dev/base/preload.dtx | 2 +- Master/texmf-dist/source/latex-dev/base/proc.dtx | 8 +- Master/texmf-dist/source/latex-dev/base/proc.ins | 4 +- Master/texmf-dist/source/latex-dev/base/slides.dtx | 18 +- Master/texmf-dist/source/latex-dev/base/slides.ins | 8 +- .../texmf-dist/source/latex-dev/base/syntonly.dtx | 2 +- .../texmf-dist/source/latex-dev/base/syntonly.ins | 4 +- Master/texmf-dist/source/latex-dev/base/tulm.ins | 4 +- Master/texmf-dist/source/latex-dev/base/unpack.ins | 2 +- .../texmf-dist/source/latex-dev/base/utf8ienc.dtx | 25 +- Master/texmf-dist/tex/latex-dev/base/alltt.sty | 6 +- Master/texmf-dist/tex/latex-dev/base/ansinew.def | 4 +- Master/texmf-dist/tex/latex-dev/base/applemac.def | 4 +- Master/texmf-dist/tex/latex-dev/base/article.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/article.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ascii.def | 4 +- .../texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty | 12 +- .../tex/latex-dev/base/atveryend-ltx.sty | 8 +- Master/texmf-dist/tex/latex-dev/base/bezier.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/bk10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/bk12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/book.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/book.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/cp1250.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp1252.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp1257.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp437.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp437de.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp850.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp852.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp858.def | 4 +- Master/texmf-dist/tex/latex-dev/base/cp865.def | 4 +- Master/texmf-dist/tex/latex-dev/base/decmulti.def | 4 +- Master/texmf-dist/tex/latex-dev/base/doc.sty | 6 +- Master/texmf-dist/tex/latex-dev/base/docstrip.tex | 6 +- .../texmf-dist/tex/latex-dev/base/everyshi-ltx.sty | 14 +- Master/texmf-dist/tex/latex-dev/base/exscale.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fix-cm.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/flafter.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fleqn.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/fleqn.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fltrace.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fontenc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/fontmath.cfg | 6 +- Master/texmf-dist/tex/latex-dev/base/fontmath.ltx | 4 +- Master/texmf-dist/tex/latex-dev/base/fonttext.cfg | 6 +- Master/texmf-dist/tex/latex-dev/base/fonttext.ltx | 4 +- Master/texmf-dist/tex/latex-dev/base/graphpap.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/hyphen.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/idx.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ifthen.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/inputenc.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/lablst.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/latex.ltx | 576 +- Master/texmf-dist/tex/latex-dev/base/latex209.def | 4 +- .../texmf-dist/tex/latex-dev/base/latexrelease.sty | 18700 ++++++++++--------- Master/texmf-dist/tex/latex-dev/base/latexsym.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/latin1.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin10.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin2.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin3.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin4.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin5.def | 4 +- Master/texmf-dist/tex/latex-dev/base/latin9.def | 4 +- Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/leqno.clo | 2 +- Master/texmf-dist/tex/latex-dev/base/leqno.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/letter.cls | 6 +- Master/texmf-dist/tex/latex-dev/base/letter.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ltluatex.tex | 4 +- Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/macce.def | 4 +- Master/texmf-dist/tex/latex-dev/base/makeidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/newlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/next.def | 4 +- Master/texmf-dist/tex/latex-dev/base/nfssfont.tex | 4 +- Master/texmf-dist/tex/latex-dev/base/oldlfont.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmm.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlcmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omlenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/omllcmm.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omscmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omscmsy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omsenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/omsenc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omxcmex.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/openbib.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/ot4enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/preload.cfg | 6 +- Master/texmf-dist/tex/latex-dev/base/preload.ltx | 2 +- Master/texmf-dist/tex/latex-dev/base/proc.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/proc.sty | 4 +- Master/texmf-dist/tex/latex-dev/base/report.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/report.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/sfonts.def | 2 +- Master/texmf-dist/tex/latex-dev/base/shortvrb.sty | 6 +- Master/texmf-dist/tex/latex-dev/base/showidx.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/size10.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size11.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/size12.clo | 4 +- Master/texmf-dist/tex/latex-dev/base/slides.cls | 4 +- Master/texmf-dist/tex/latex-dev/base/slides.def | 4 +- Master/texmf-dist/tex/latex-dev/base/slides.sty | 2 +- .../texmf-dist/tex/latex-dev/base/source2edoc.cls | 39 +- .../tex/latex-dev/base/structuredlog.sty | 8 +- Master/texmf-dist/tex/latex-dev/base/syntonly.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/t1enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/t1enc.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/t2benc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/testpage.tex | 2 +- Master/texmf-dist/tex/latex-dev/base/texsys.cfg | 2 +- .../tex/latex-dev/base/textcomp-2018-08-11.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/textcomp.sty | 2 +- Master/texmf-dist/tex/latex-dev/base/tracefnt.sty | 50 +- Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/tuenc.def | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmdh.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmssq.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmr.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmss.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ucmtt.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ulasy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/ullasy.fd | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8-2018.def | 2 +- Master/texmf-dist/tex/latex-dev/base/utf8.def | 4 +- Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu | 4 +- Master/texmf-dist/tex/latex-dev/base/x2enc.dfu | 4 +- 373 files changed, 13726 insertions(+), 10510 deletions(-) create mode 100644 Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf create mode 100644 Master/texmf-dist/doc/latex-dev/base/usrguide3.tex 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/alltt.pdf and b/Master/texmf-dist/doc/latex-dev/base/alltt.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf 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 + + * 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 + + * 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 + + * 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 + + * ltbibl.dtx (section{Bibliography Generation}): + Delay any \cs{nocite} in the preamble instead of raising + an error (gh/424) + +2020-12-06 Johannes Braams + + * 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 + + * 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 + 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 + + * ltfinal.dtx (subsection{File substitutions}): + Emulate everysel package + +2020-12-04 Frank Mittelbach + + * ltfssini.dtx (subsection{Miscellaneous}): + Setting up \f@series and \f@shape default values directly (gh/444) + +2020-11-23 Frank Mittelbach + + * ltshipout.dtx: + Check for both kernel and user hooks and execute if either is non-empty (gh/431)} + +2020-10-26 Frank Mittelbach + + * 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 + + * 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 + + * 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 + + * usrguide3.tex + New file to cover creation of document commands + + +######################### +# 2020-10-01 PL 3 Release +######################### + +2020-12-18 Phelype Oleinik + + * 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 + + * 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 + + * 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 + + * 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 + + * fntguide.tex: + Updated documentation of virtual shapes \updefault and \ulcdefault + +2020-11-09 Frank Mittelbach + + * 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 + + * 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/classes.pdf and b/Master/texmf-dist/doc/latex-dev/base/classes.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf and b/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/doc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf and b/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/encguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/encguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/exscale.pdf and b/Master/texmf-dist/doc/latex-dev/base/exscale.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf and b/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf and b/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf and b/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf and b/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf and b/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf and b/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf and b/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/lb2.pdf and b/Master/texmf-dist/doc/latex-dev/base/lb2.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/letter.pdf and b/Master/texmf-dist/doc/latex-dev/base/letter.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf and b/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/lppl.pdf and b/Master/texmf-dist/doc/latex-dev/base/lppl.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf and b/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf and b/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/manual.pdf and b/Master/texmf-dist/doc/latex-dev/base/manual.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/modguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/modguide.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf and b/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/proc.pdf and b/Master/texmf-dist/doc/latex-dev/base/proc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/slides.pdf and b/Master/texmf-dist/doc/latex-dev/base/slides.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf and b/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/source2e.pdf and b/Master/texmf-dist/doc/latex-dev/base/source2e.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf and b/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf and b/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/tulm.pdf and b/Master/texmf-dist/doc/latex-dev/base/tulm.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf and b/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf 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 Binary files /dev/null and b/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf 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 \par + \char_set_catcode_letter:N < + \foobar +\end{verbatim} +the output would be: +\begin{verbatim} + (hello) + (default) +\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 Binary files a/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf and b/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf 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 Binary files a/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf and b/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf 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 @@ %\ProvidesPackage{alltt} %\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} % - [2020/04/10 v1.4m + [2020/11/23 v1.4m % 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 @@ %\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 % % \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} %\@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} %\pagestyle{plain} %\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 @@ %\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 @@ %\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 %(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 @@ %\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 @@ % \ProvidesFile{cp1252.def} % \ProvidesFile{cp1250.def} % \ProvidesFile{cp1257.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. %%% @@ -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 % @@ -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} % - [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|latexrelease> +%\IncludeInRelease{2021/05/01}% +% {\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} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\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 +%<*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|latexrelease> +% +%\IncludeInRelease{2020/10/01}{\@currpath}% +% {Add \@currpath}% +\let\@currpath\@empty +%\EndIncludeInRelease +% +%\IncludeInRelease{0000/00/00}{\@currpath}% +% {Add \@currpath}% +%\let\@currpath\@undefined +%\EndIncludeInRelease +% +%<*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|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@@} %\EndIncludeInRelease % \end{macrocode} @@ -632,6 +663,10 @@ % {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@@} %\EndIncludeInRelease % @@ -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|latexrelease> +% +%\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 +% +%<*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} +% +%\IncludeInRelease{2020/10/01}% +% {\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 +% +%\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 +%<*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|latexrelease> %\IncludeInRelease{2020/10/01}% -% {\@pr@videpackage}{Allow for package subsitution}% +% {\@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} +% +%\IncludeInRelease{0000/00/00}% +% {\ProvidesClass}{Track \ProvidesPackage}% +%<*2ekernel|latexrelease> \let\ProvidesClass\ProvidesPackage \@onlypreamble\ProvidesClass +% +%\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} % %\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 @@ %\IncludeInRelease{2020/10/01}% % {\@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} +% +%\IncludeInRelease{2020/10/01}{\@carcube}{Make \@carcube long}% +%<*2ekernel|latexrelease> \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 +%<*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> +%\IncludeInRelease{2020/10/01}% +% {kernel@enddocument hooks}{Define kernel enddocument Hooks}% +\let\@kernel@after@enddocument\@empty +\let\@kernel@after@enddocument@afterlastpage\@empty +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {kernel@enddocument hooks}{Define kernel enddocument Hooks}% +%\let\@kernel@after@enddocument\@undefined +%\let\@kernel@after@enddocument@afterlastpage\@undefined +%\EndIncludeInRelease +% +% \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> +%\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 +% % \end{macrocode} % % \changes{v1.2d}{2020/07/08} @@ -183,9 +212,20 @@ \errmessage{LaTeX requires expl3}% \batchmode \read -1 to \reserved@a % +% \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 % }% {% @@ -222,9 +262,39 @@ %\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} +%\IncludeInRelease{2020/10/01}% +% {\NewDocumentCommand}{Emergency loading xparse}% +% +%\ifdefined\NewDocumentCommand \else +% \RequirePackage{xparse} +%\fi +% +%\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} -%\IncludeInRelease{2020/10/01}{expl3~2020-10-01}% -% {expl3~macros~added~for~the~2020-10-01~release}% +%\IncludeInRelease{2020/10/01}{\@expl@cs@to@str@@N}% +% {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} %\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 % % \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} % %\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} +%\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} +% } +%} +%\ExplSyntaxOff +% +%\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 @@ % {\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{} +% \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]{@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} %\EndIncludeInRelease % % \end{macrocode} @@ -737,6 +836,8 @@ % {% % \expandafter\@swaptwoargs\expandafter % {\@filef@und}{#2\@addtofilelist{#1}\@@input}}} +%\let\@input@file@exists@with@hooks\@undefined +%\let\unqu@tefilef@und\@undefined %\EndIncludeInRelease % \end{macrocode} % @@ -746,10 +847,14 @@ %\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 %<*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 @@ %\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} %\IncludeInRelease{0000/00/00}% % {\declare@file@substitution}{File substitution}% % -%\let \declare@file@substitution \@undefined -%\let \undeclare@file@substitution \@undefined +%\let \declare@file@substitution \@gobbletwo +%\let \undeclare@file@substitution \@gobble % %\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} % %\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} % @@ -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} % %\EndIncludeInRelease +% +%\IncludeInRelease{0000/00/00}% +% {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}% +%\let\@expl@@@filehook@file@pop@@\relax +%\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|latexrelease> %\IncludeInRelease{2020/02/02}% % {\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} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontSeriesChangeRule}{Series change rules}% +% +%\let\DeclareFontSeriesChangeRule\@undefined +% +%\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> +%\IncludeInRelease{2021/05/01}% +% {\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} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/02/02}% +% {\fontseries}{delay fontseries update}% +% +%\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}} +%\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} +%\let\delayed@f@adjustment\@undefined +% +% \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} +%\ifx\@forced@seriestrue\@undefined \else +% \expandafter\newif\csname if@forced@series\endcsname +%\fi +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\fontseries}{delay fontseries update}% +% +%\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} +%\let\fontseriesforce\@undefined +% +%\EndIncludeInRelease +% \end{macrocode} +% +% +% +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\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} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\merge@font@series}{Merge series values}% +% +%\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 +% +%\EndIncludeInRelease +% \end{macrocode} + @@ -925,6 +1086,12 @@ % that is desirable), essentially building in an ``sc'' % axis). % +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\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} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontShapeChangeRule}{Font shape change rules}% +% +%\let\DeclareFontShapeChangeRule\@undefined +%\let\ulcshape\@undefined +%\let\ulcdefault\@undefined +%\let\swshape\@undefined +%\let\swdefault\@undefined +%\let\sscshape\@undefined +%\let\sscdefault\@undefined +% +%\EndIncludeInRelease +% \end{macrocode} +% % % \subsection{Changing to a new shape} % +% +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/05/01}% +% {\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} +% +%\EndIncludeInRelease +%\IncludeInRelease{2020/02/02}% +% {\fontshape}{Font shape change}% +% +%\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}} +%\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\fontshape}{Font shape change}% +% +%\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} +%\let\fontshapeforce\@undefined +% +%\EndIncludeInRelease +% \end{macrocode} +% + + + + + +% \begin{macrocode} +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\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} % %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% -% {\DeclareFontSeriesChangeRule}{Series change rules}% +% {\merge@font@shape}{Font shape 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\merge@font@shape@without@substitution\@undefined +%\let\merge@font@shape@without@substitution@\@undefined +%\let\delayed@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 +% % \end{macrocode} % This is always called in \cs{document} so don't make it undefined. % \begin{macrocode} % %\let\reinstall@nfss@defs\relax %\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|latexrelease> %\IncludeInRelease{2020/10/01}% % {\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|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\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} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\usefont}{Drop m in usefont}% +% +%\DeclareRobustCommand\usefont[4]{\fontencoding{#1}% +% \edef\f@family{#2}% +% \edef\f@series{#3}% +% \edef\f@shape{#4}\selectfont +% \ignorespaces} +% +%\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|latexrelease> %\IncludeInRelease{2020/02/02}% -% {\DeclareFontFamilySubstitution}{Provide family substituation}% +% {\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 @@ % %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% -% {\DeclareFontFamilySubstitution}{Provide family substituation}% +% {\DeclareFontFamilySubstitution}{Provide family substitution}% % %\let\DeclareFontFamilySubstitution\@undefined %\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} % %\IncludeInRelease{2015/01/01}{\wrong@fontshape}% -% {Font substituation in preamble}% +% {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 @@ % %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}{\wrong@fontshape}% -% {Font substituation in preamble}% +% {Font substitution in preamble}% %\def\wrong@fontshape{% % \csname D@\f@encoding\endcsname % \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. % -%\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)] % \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> +%\IncludeInRelease{2021/05/01}% +% {\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 -% + \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} +% +% \end{macrocode} +% +% +% \begin{macrocode} +% +%\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} +%\IncludeInRelease{2021/05/01}% +% {\selectfont}{Add hook to \selectfont}% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\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 +% \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} +%\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} +%\cs_set_protected:Npn \@@_tmp:w #1 #2 #3 +% { +% \quark_if_recursion_tail_stop:n {#1} +% \seq_gput_right:Nn \g_@@_name_stack_seq {#1} +% \@@_tmp:w +% } +%\exp_after:wN \@@_tmp:w \@currnamestack +% \q_recursion_tail \q_recursion_tail +% \q_recursion_tail \q_recursion_stop +% \end{macrocode} +% and finalle set the default label to be the \cs{@currname}: +% \begin{macrocode} +%\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} % %\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} % %<*tex> -[2020/09/25 v1.1s +[2020/12/06 v1.1s % % 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 % % @@ -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 @@ %\def\;{\mskip\thickmuskip} %\def\!{\mskip-\thinmuskip} % +% \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} +%\let\negmedspace\@undefined +%\let\negthickspace\@undefined +% %\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 @@ % \endgroup % \deadcycles\z@\@@end} % -%\let\@kernel@after@enddocument\@undefined -%\let\@kernel@after@enddocument@afterlastpage\@undefined %\let\@enddocument@kernel@warnings\@undefined % %\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|latexrelease> +%\IncludeInRelease{2021/05/01}% +% {\@kernel@before@enddocument}{kernel before hook}% +\def\@kernel@before@enddocument{\par} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% The rollback code renders it harmless. +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\@kernel@before@enddocument}{kernel before hook}% +% +%\let\@kernel@before@enddocument\@empty +% +%\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} % @@ -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} %\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|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> %\IncludeInRelease{2020/10/01}% -% {\shipout}{Hook mangement (shipout)}% +% {\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} %\IncludeInRelease{0000/00/00}% -% {\shipout}{The hook management (shipout)}% -%\expandafter\let\expandafter\shipout\csname tex_shipout:D\endcsname +% {\shipout}{Hook management (shipout)}% +% +% \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} +%\ifcsname tex_shipout:D\endcsname +%\expandafter\let\expandafter\shipout +% \csname tex_shipout:D\endcsname +%\fi % %\let \ShipoutBox\@undefined %\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= 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. %% % 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> -\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 @@ % %\NeedsTeXFormat{LaTeX2e} %\ProvidesClass{ltxdoc} -% [2020/10/04 v2.1b Standard LaTeX documentation 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 @@ % %<+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} % - [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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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,8133 +445,3359 @@ of this package available from CTAN} \fi \edef\filename@base{#1}} \EndIncludeInRelease -%%% From File: ltexpl.dtx -\IncludeInRelease{2020/10/01}% - {expl3}{Pre-load expl3}% -\expandafter\ifx\csname tex\string _let:D\endcsname\relax - \expandafter\@firstofone +%%% 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 - \GenericInfo{}{Skipping: expl3 code already part of the format}% - \expandafter\@gobble + \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 - {% - \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 } - {}% - \fi - }% - } \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 - \fi - } - {% - \message{Skipping expl3-dependent extensions}% - \@gobbletwo - }% -\input{expl3.ltx} +\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 -\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}% + {\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}{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}% + {\e@alloc@chardef}{Extended Allocation}% +\let\e@alloc@top\@undefined +\let\e@alloc@chardef\@undefined \EndIncludeInRelease -\ExplSyntaxOff -%%% From File: ltdefns.dtx -\IncludeInRelease{2020/10/01}% - {\typeout}{Allow "par" in \typeout}% -\protected\long\def\typeout#1{\begingroup - \set@display@protect - \def\par{^^J^^J}% - \immediate\write\@unused{#1}\endgroup} +\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}% - {\typeout}{Allow "par" in \typeout}% - -\def\typeout#1{\begingroup\set@display@protect - \immediate\write\@unused{#1}\endgroup} + {\e@mathgroup@top}{Extended Allocation}% +\let\e@mathgroup@top\@undefined \EndIncludeInRelease -\IncludeInRelease{2020/10/01}{\MakeRobust}{\MakeRobust}% -\def\MakeRobust#1{% - \count@=\escapechar - \escapechar=`\\ - \@ifundefined{\expandafter\@gobble\string#1}{% - \@latex@error{The control sequence `\string#1' is undefined!% - \MessageBreak There is nothing here to make robust}% - \@eha - }% - {% - \@ifundefined{\expandafter\@gobble\string#1\space}% - {% - \expandafter\@kernel@rename@newcommand - \csname\expandafter\@gobble\string#1\space\endcsname - #1% - \edef\reserved@a{\string#1}% - \def\reserved@b{#1}% - \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% - \xdef#1{% - \ifx\reserved@a\reserved@b - \noexpand\x@protect\noexpand#1% - \fi - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1\space\endcsname}% - }% - {\@latex@info{The control sequence `\string#1' is already robust}}% - }% - \escapechar=\count@ -}% -\def\@kernel@rename@newcommand#1#2{% - \robust@command@chk@safe#2% - {\@if@newcommand#2% - {\afterassignment\global - \global\@copy@newcommand#1#2% - \global\let#2\@undefined - \global\expandafter\let\csname\string#2\endcsname\@undefined}% - {\global\let#1=#2}}% - {\global\let#1=#2}} +\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{2019/10/01}{\MakeRobust}{\MakeRobust}% -\def\MakeRobust#1{% - \@ifundefined{\expandafter\@gobble\string#1}{% - \@latex@error{The control sequence `\string#1' is undefined!% - \MessageBreak There is nothing here to make robust}% - \@eha - }% - {% - \@ifundefined{\expandafter\@gobble\string#1\space}% - {% - \global\expandafter\let\csname - \expandafter\@gobble\string#1\space\endcsname=#1% - \edef\reserved@a{\string#1}% - \def\reserved@b{#1}% - \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% - \xdef#1{% - \ifx\reserved@a\reserved@b - \noexpand\x@protect\noexpand#1% - \fi - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1\space\endcsname}% - }% - {\@latex@info{The control sequence `\string#1' is already robust}}% - }% -}% -\let\@kernel@rename@newcommand\@undefined -\EndIncludeInRelease -\IncludeInRelease{2015/01/01}{\MakeRobust}{\MakeRobust}% -\def\MakeRobust#1{% - \@ifundefined{\expandafter\@gobble\string#1}{% - \@latex@error{The control sequence `\string#1' is undefined!% - \MessageBreak There is nothing here to make robust}% - \@eha - }% - {% - \@ifundefined{\expandafter\@gobble\string#1\space}% - {% - \expandafter\let\csname - \expandafter\@gobble\string#1\space\endcsname=#1% - \edef\reserved@a{\string#1}% - \def\reserved@b{#1}% - \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% - \edef#1{% - \ifx\reserved@a\reserved@b - \noexpand\x@protect\noexpand#1% - \fi - \noexpand\protect\expandafter\noexpand - \csname\expandafter\@gobble\string#1\space\endcsname}% - }% - {\@latex@info{The control sequence `\string#1' is already robust}}% - }% -}% -\let\@kernel@rename@newcommand\@undefined +\IncludeInRelease{0000/00/00}{\e@alloc}{Extended Allocation}% +\let\e@alloc\@undefined \EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\MakeRobust}{\MakeRobust}% -\let\MakeRobust\@undefined -\let\@kernel@rename@newcommand\@undefined +\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{2020/10/01}% - {\kernel@make@fragile}{Undo robustness}% -\def\kernel@make@fragile#1{% - \@ifundefined{\expandafter\@gobble\string#1\space}% - {}% - {% - \global\expandafter\let\expandafter #1\csname - \expandafter\@gobble\string#1\space\endcsname - \expandafter\@kernel@rename@newcommand - \csname\expandafter\@gobble\string#1\expandafter\endcsname - \csname\expandafter\@gobble\string#1\space\endcsname - \global\expandafter\let\csname - \expandafter\@gobble\string#1\space\endcsname\@undefined - }% -} +\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}% - {\kernel@make@fragile}{Undo robustness}% -\def\kernel@make@fragile#1{% - \@ifundefined{\expandafter\@gobble\string#1\space}% - {}% - {% - \global\expandafter\let\expandafter #1\csname - \expandafter\@gobble\string#1\space\endcsname - \global\expandafter\let\csname - \expandafter\@gobble\string#1\space\endcsname\@undefined - }% -} -\EndIncludeInRelease -\IncludeInRelease{2020-10-01}{\robust@command@act} - {Add \robust@command@act}% -\long\def\robust@command@act#1#2#3#4{% - \robust@command@chk@safe#2% - {\expandafter\robust@command@act@loop - \expandafter#2% - #1{\@nnil\@nnil}% - \robust@command@act@end}% - {\robust@command@act@end}% - {#3}{#4}}% -\long\def\robust@command@act@loop#1#2{\robust@command@act@loop@aux#1#2} -\long\def\robust@command@act@loop@aux#1#2#3{% - \ifx\@nnil#2% - \else - #2{#1}% - {\robust@command@act@do{#3}}% - {\expandafter\robust@command@act@loop\expandafter#1}% - \fi} -\long\def\robust@command@act@do#1% - \fi#2% - \robust@command@act@end#3#4{% - \fi - #1#4} -\long\def\robust@command@act@end#1#2{#1#2} -\long\def\robust@command@chk@safe#1{% - \begingroup - \escapechar=`\\ - \expandafter\endgroup\expandafter - \robust@command@act@chk@args\meaning#1:->\@nil} -\def\robust@command@act@chk@args#1:->#2\@nil{% - \@expl@str@if@eq@@nnTF{#1}{macro}% - {\@firstoftwo}% - {\@expl@str@if@eq@@nnTF{#1}{\protected macro}% - {\@firstoftwo}% - {\@secondoftwo}}} -\EndIncludeInRelease -\IncludeInRelease{0000-00-00}{\robust@command@act} - {Add \robust@command@act}% -\let\robust@command@act\@undefined -\let\robust@command@act@loop\@undefined -\let\robust@command@act@loop@aux\@undefined -\let\robust@command@act@do\@undefined -\let\robust@command@act@end\@undefined -\let\robust@command@chk@safe\@undefined -\let\robust@command@act@chk@args\@undefined + {\e@ch@ck}{Extended Allocation (checking)}% +\let\e@ch@ck\@undefined \EndIncludeInRelease -\IncludeInRelease{2020-10-01}{\DeclareCommandCopy} - {Add \NewCommandCopy, \RenewCommandCopy, and \DeclareCommandCopy}% -\def\NewCommandCopy{% - \declare@commandcopy - {\@firstofone}% - {\@firstoftwo\@notdefinable}} -\def\RenewCommandCopy{% - \declare@commandcopy - {\@latex@error{Command \@backslashchar\reserved@a\space undefined}\@ehc - \@firstofone}% - {\@firstofone}} -\def\DeclareCommandCopy{% - \declare@commandcopy - {\@firstofone}% - {\@firstofone}} -\long\def\declare@commandcopy#1#2#3#4{% - \edef\reserved@a{\@expl@cs@to@str@@N#3}% - \@ifundefined\reserved@a{#1}{#2}% - {\robust@command@act - \@declarecommandcopylisthook#4% - \declare@commandcopy@let{#3#4}}} -\def\@declarecommandcopylisthook{% - {\@if@DeclareRobustCommand \@copy@DeclareRobustCommand}% - {\@if@newcommand \@copy@newcommand}} -\long\def\declare@commandcopy@let#1#2{\let#1=#2\relax} +\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}{\DeclareCommandCopy} - {Undefine \NewCommandCopy, \RenewCommandCopy, and \DeclareCommandCopy}% -\let\NewCommandCopy\@undefined -\let\RenewCommandCopy\@undefined -\let\DeclareCommandCopy\@undefined -\let\declare@commandcopy\@undefined -\let\@declarecommandcopylisthook\@undefined -\let\declare@commandcopy@let\@undefined +\IncludeInRelease{0000/00/00}% + {\extrafloats}{Extra floats}% +\let\float@count\@undefined +\let\extrafloats\@undefined \EndIncludeInRelease -\IncludeInRelease{2020-10-01}{\ShowCommand}% - {Add \ShowCommand}% -\long\def\ShowCommand#1{% - \robust@command@act - \@showcommandlisthook#1% - \show#1} -\def\@showcommandlisthook{% - {\@if@DeclareRobustCommand \@show@DeclareRobustCommand}% - {\@if@newcommand \@show@newcommand}} +\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}{\ShowCommand} - {Undefine \ShowCommand}% -\let\ShowCommand\@undefined -\let\@showcommandlisthook\@undefined +\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{2020-10-01}{\@if@DeclareRobustCommand} - {Add \@if@DeclareRobustCommand, \@if@newcommand, - \@copy@DeclareRobustCommand, \@copy@newcommand, - \@show@DeclareRobustCommand, \@show@newcommand}% -\long\def\@if@DeclareRobustCommand#1{% - \begingroup - \escapechar=`\\ - \edef\reserved@a{\string#1}% - \edef\reserved@b{\detokenize{#1}}% - \xdef\@gtempa{% - \ifx\reserved@a\reserved@b - \noexpand\x@protect - \noexpand#1% - \fi - \noexpand\protect - \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname}% - \endgroup - \ifx\@gtempa#1\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\long\def\@copy@DeclareRobustCommand#1#2{% - \begingroup - \escapechar=`\\ - \edef\reserved@a{\string#1}% - \edef\reserved@b{\detokenize{#1}}% - \edef\reserved@a{% - \endgroup - \def\noexpand#1{% - \ifx\reserved@a\reserved@b - \noexpand\x@protect - \noexpand#1% - \fi - \noexpand\protect - \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname}% - \noexpand\copy@kernel@robust@command - \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname - \expandafter\noexpand\csname\@expl@cs@to@str@@N#2 \endcsname}% - \reserved@a} -\long\def\copy@kernel@robust@command#1#2{% - \robust@command@chk@safe#2% - {\@if@newcommand#2% - {\@copy@newcommand}% - {\declare@commandcopy@let}} - {\declare@commandcopy@let}% - #1#2} -\long\def\@show@DeclareRobustCommand#1{% - \typeout{> \string#1=robust macro:}% - \typeout{->\@expl@cs@replacement@spec@@N#1.^^J}% - \expandafter\show@kernel@robust@command - \csname\@expl@cs@to@str@@N#1 \endcsname} -\long\def\show@kernel@robust@command#1{% - \robust@command@chk@safe#1% - {\@if@newcommand#1% - {\@show@newcommand}% - {\show}}% - {\show}% - #1} -\long\def\@if@newcommand#1{% - \edef\reserved@a{% - \noexpand\@protected@testopt - \noexpand#1% - \expandafter\noexpand\csname\@backslashchar\@expl@cs@to@str@@N#1\endcsname}% - \edef\reserved@b{% - \unexpanded\expandafter\expandafter\expandafter - {\expandafter\@carcube#1{}{}{}\@nil}}% - \ifx\reserved@a\reserved@b - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\long\def\@copy@newcommand#1#2{% - \edef#1{\noexpand\@protected@testopt - \noexpand#1% - \expandafter\noexpand\csname\@backslashchar\@expl@cs@to@str@@N#1\endcsname - \unexpanded\expandafter\expandafter\expandafter - {\expandafter\@gobblethree#2}}% - \expandafter - \let\csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname - \csname\@backslashchar\@expl@cs@to@str@@N#2\endcsname} -\long\def\@show@newcommand#1{% - \typeout{> \string#1=robust macro:}% - \typeout{->\@expl@cs@replacement@spec@@N#1.^^J}% - \expandafter\@show@newcommand@aux - \csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname - \expandafter{#1}} -\long\def\@show@newcommand@aux#1#2{% - \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}% - \edef\reserved@a{% - default \string##1=\expandafter\detokenize\@gobblethree#2.^^J% - \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}% - \showtokens\expandafter\expandafter\expandafter{\expandafter\reserved@a}} -\EndIncludeInRelease -\IncludeInRelease{0000-00-00}{\@if@DeclareRobustCommand} - {Undefine \@if@DeclareRobustCommand, \@if@newcommand, - \@copy@DeclareRobustCommand, \@copy@newcommand, - \@show@DeclareRobustCommand, \@show@newcommand}% -\let\@if@DeclareRobustCommand\@undefined -\let\@copy@DeclareRobustCommand\@undefined -\let\@show@DeclareRobustCommand\@undefined -\let\@if@newcommand\@undefined -\let\@copy@newcommand\@undefined -\let\@show@newcommand\@undefined -\let\copy@kernel@robust@command\@undefined -\let\show@kernel@robust@command\@undefined -\let\@show@newcommand@aux\@undefined -\EndIncludeInRelease -\IncludeInRelease{2018-04-01}{\@ifundefined} -{Leave commands undefined in \@ifundefined}% -\def\@ifundefined#1{% - \ifcsname#1\endcsname\@ifundefin@d@i\else\@ifundefin@d@ii\fi{#1}} -\long\def\@ifundefin@d@i#1\fi#2{\fi - \expandafter\ifx\csname #2\endcsname\relax - \@ifundefin@d@ii - \fi - \@secondoftwo} -\long\def\@ifundefin@d@ii\fi#1#2#3{\fi #2} +\IncludeInRelease{2015/10/01} + {\newinsert}{Extended \newinsert}% \ifx\numexpr\@undefined -\def\@ifundefined#1{% - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\else\ifx\directlua\@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 -\def\@ifundefined#1{% - \ifcsname#1\endcsname - \expandafter\ifx\lastnamedcs\relax\else\@ifundefin@d@i\fi - \fi - \@firstoftwo} -\long\def\@ifundefin@d@i#1#2#3#4#5{#1#2#5} +\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}{\@ifundefined} -{Leave commands undefined in \@ifundefined}% -\def\@ifundefined#1{% - \expandafter\ifx\csname#1\endcsname\relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi} -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}{\string@makeletter} - {Add \string@makeletter}% -\def\string@makeletter#1{% - \@expl@str@map@function@@NN#1\@string@makeletter} -\def\@string@makeletter#1{% - \char@if@alph{#1}% - {\@expl@char@generate@@nn{`#1}{11}}% - {#1}} -\def\char@if@alph#1{% - \ifnum0\ifnum`#1<`A 1\fi\ifnum`#1>`z 1\fi - \if\ifnum`#1>`Z @\fi\ifnum`#1<`a @\fi01\fi>0 - \expandafter\@secondoftwo - \else - \expandafter\@firstoftwo - \fi} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\string@makeletter} - {Undefine \string@makeletter}% -\let\string@makeletter\@undefined -\let\@string@makeletter\@undefined -\let\char@if@alph\@undefined +\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{2020/10/01}{\-}{Use primitive \- in Lua\LaTeX}% -\ifx\directlua\@undefined - \DeclareRobustCommand{\-}{% - \discretionary{% - \char \ifnum\hyphenchar\font<\z@ - \defaulthyphenchar - \else - \hyphenchar\font - \fi - }{}{}% - } +\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 - \let\-\@@hyph +\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{2017/04/15}{\-}{Use \hyphenchar in \-}% -\DeclareRobustCommand{\-}{% - \discretionary{% - \char \ifnum\hyphenchar\font<\z@ - \defaulthyphenchar - \else - \hyphenchar\font - \fi - }{}{}% -} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\-}{Use \hyphenchar in \-}% -\def\-{\discretionary{-}{}{}} +\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 -\let\@dischyph=\- -\IncludeInRelease{2019/10/01}% - {\allowbreak}{Make various commands robust}% -\MakeRobust\allowbreak -\MakeRobust\bigbreak -\MakeRobust\break -\MakeRobust\dotfill -\MakeRobust\frenchspacing -\MakeRobust\goodbreak -\MakeRobust\hrulefill -\MakeRobust\medbreak -\MakeRobust\nobreak -\MakeRobust\nonfrenchspacing -\MakeRobust\obeylines -\MakeRobust\obeyspaces -\MakeRobust\slash -\MakeRobust\smallbreak -\MakeRobust\strut -\MakeRobust\underbar +\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}% - {\allowbreak}{Make various commands robust}% - -\kernel@make@fragile\allowbreak -\kernel@make@fragile\bigbreak -\kernel@make@fragile\break -\kernel@make@fragile\dotfill -\kernel@make@fragile\frenchspacing -\kernel@make@fragile\goodbreak -\kernel@make@fragile\hrulefill -\kernel@make@fragile\medbreak -\kernel@make@fragile\nobreak -\kernel@make@fragile\nonfrenchspacing -\kernel@make@fragile\obeylines -\kernel@make@fragile\obeyspaces -\kernel@make@fragile\slash -\kernel@make@fragile\smallbreak -\kernel@make@fragile\strut -\kernel@make@fragile\underbar - +\IncludeInRelease{0000/00/00}{\tracingnone}% + {turn off etex tracing}% +\let\tracingnone\@undefined +\let\hideoutput\@undefined \EndIncludeInRelease -%% -%% File: lthooks.dtx (C) Copyright 2020 Frank Mittelbach, -%% Phelype Oleinik & LaTeX Team -%%% From File: lthooks.dtx -\def\lthooksversion{v1.0e} -\def\lthooksdate{2020/10/23} -\IncludeInRelease{2020/10/01}% - {\NewHook}{The hook management}% -\ExplSyntaxOn -\bool_new:N \g__hook_debug_bool -\cs_new_eq:NN \__hook_debug:n \use_none:n -\cs_new_protected:Npn \hook_debug_on: - { - \bool_gset_true:N \g__hook_debug_bool - \__hook_debug_gset: - } -\cs_new_protected:Npn \hook_debug_off: - { - \bool_gset_false:N \g__hook_debug_bool - \__hook_debug_gset: - } -\cs_new_protected:Npn \__hook_debug_gset: - { - \cs_gset_protected:Npx \__hook_debug:n ##1 - { \bool_if:NT \g__hook_debug_bool {##1} } - } -\cs_new_eq:NN \__hook_str_compare:nn \__str_if_eq:nn -\bool_new:N \l__hook_tmpa_bool -\tl_new:N \l__hook_return_tl -\tl_new:N \l__hook_tmpa_tl -\tl_new:N \l__hook_tmpb_tl -\seq_new:N \g__hook_all_seq -\tl_new:N \g__hook_removal_list_tl -\tl_new:N \l__hook_cur_hook_tl -\prop_new:N \l__hook_work_prop -\prop_new:N \g__hook_execute_immediately_prop -\prop_new:N \g__hook_used_prop -\tl_new:N \g__hook_hook_curr_name_tl -\seq_new:N \g__hook_name_stack_seq -\cs_new_eq:NN \__hook_tmp:w ? -\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx } -\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_new:n #1 - { \__hook_normalize_hook_args:Nn \__hook_new:n {#1} } -\cs_new_protected:Npn \__hook_new:n #1 - { - \hook_if_exist:nTF {#1} - { \msg_error:nnn { hooks } { exists } {#1} } - { - \seq_gput_right:Nn \g__hook_all_seq {#1} - \tl_new:c { __hook~#1 } - \__hook_declare:n {#1} - \clist_new:c {g__hook_#1_labels_clist} - \tl_new:c { g__hook_#1_reversed_tl } - \__hook_include_legacy_code_chunk:n {#1} - } - } -\cs_new_protected:Npn \__hook_declare:n #1 - { - \__hook_if_exist:nF {#1} - { - \prop_new:c { g__hook_#1_code_prop } - \tl_new:c { __hook_next~#1 } - } - } -\cs_new_protected:Npn \hook_new_reversed:n #1 - { \__hook_normalize_hook_args:Nn \__hook_new_reversed:n {#1} } -\cs_new_protected:Npn \__hook_new_reversed:n #1 - { - \__hook_new:n {#1} - \tl_gset:cn { g__hook_#1_reversed_tl } { - } - } -\cs_new_protected:Npn \hook_new_pair:nn #1#2 - { \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 } - } - } - \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 } - } - } -\cs_new:Npn \__hook_parse_dot_label:nn #1 #2 - { - \tl_if_empty:nTF {#1} - { - \msg_expandable_error:nnn { hooks } { empty-label } {#2} - #2 - } - { - \str_if_eq:nnTF {#1} { . } - { \__hook_currname_or_default:n {#2} } - { \__hook_parse_dot_label:nw {#2} #1 ./ \s__hook_mark } - } - } -\cs_new:Npn \__hook_parse_dot_label:nw #1 #2 ./ #3 \s__hook_mark - { - \tl_if_empty:nTF {#2} - { \__hook_parse_dot_label_aux:nw {#1} #3 \s__hook_mark } - { - \tl_if_empty:nTF {#3} - { \__hook_make_name:n {#2} } - { \__hook_parse_dot_label_cleanup:w #2 ./ #3 \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 - { - \tl_if_empty:NTF \g__hook_hook_curr_name_tl - { - \tl_if_empty:NTF \@currname - { \__hook_make_name:n {#1} } - { \@currname } - } - { \g__hook_hook_curr_name_tl } - } -\cs_new:Npn \__hook_make_name:n #1 - { - \exp_after:wN \exp_after:wN \exp_after:wN \__hook_make_name:w - \exp_after:wN \token_to_str:N \cs:w __hook~ #1 \cs_end: +\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} + }% } -\exp_last_unbraced:NNNNo -\cs_new:Npn \__hook_make_name:w #1 \tl_to_str:n { __hook~ } { } -\cs_new_protected:Npn \__hook_normalize_hook_args_aux:Nn #1 #2 - { - \group_begin: - \use:e - { - \group_end: - \exp_not:N #1 #2 - } - } -\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2 - { - \__hook_normalize_hook_args_aux:Nn #1 - { { \__hook_parse_label_default:n {#2} } } - } -\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3 - { - \__hook_normalize_hook_args_aux:Nn #1 - { - { \__hook_parse_label_default:n {#2} } - { \__hook_parse_label_default:n {#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 +\else + \GenericInfo{}{Skipping: expl3 code already part of the format}% + \expandafter\@gobble +\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@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 + \ifdefined\NewDocumentCommand + \else + \IfFileExists{xparse.ltx} + {\input xparse.ltx } + {}% + \fi + }% } -\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5 - { - \__hook_normalize_hook_args_aux:Nn #1 - { - { \__hook_parse_label_default:n {#2} } - { \__hook_parse_label_default:n {#3} } - { \tl_trim_spaces:n {#4} } - { \__hook_parse_label_default:n {#5} } - } +\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 + \fi } -\cs_new_protected:Npn \hook_gput_code:nnn #1 #2 - { \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} } -\cs_new_protected:Npn \__hook_gput_code:nnn #1 #2 #3 - { - \prop_if_in:NnTF \g__hook_execute_immediately_prop {#1} - {#3} - { - \__hook_if_marked_removal:nnTF {#1} {#2} - { \__hook_unmark_removal:nn {#1} {#2} } - { - \hook_if_exist:nTF {#1} - { - \__hook_hook_gput_code_do:nnn {#1} {#2} {#3} - \__hook_update_hook_code:n {#1} - } - { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} } - } - } - } -\cs_generate_variant:Nn \__hook_gput_code:nnn { nxv } -\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3 - { - \__hook_debug:n{\iow_term:x{****~ Add~ to~ - \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 - { - \prop_gput:cno { g__hook_#1_code_prop } {#2} - { \l__hook_return_tl #3 } - } - { \prop_gput:cnn { g__hook_#1_code_prop } {#2} {#3} } - } -\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3 - { - \__hook_declare:n {#1} - \__hook_hook_gput_code_do:nnn {#1} {#2} {#3} - } -\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1 - { - \__hook_try_declaring_generic_hook:nNNnn {#1} - \hook_gput_code:nnn \__hook_gput_undeclared_hook:nnn - } -\cs_new_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1 - { - \__hook_try_declaring_generic_hook:nNNnn {#1} - \hook_gput_next_code:nn \__hook_gput_next_do:nn - } -\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nNNnn #1 - { - \__hook_if_file_hook:wTF #1 / / \s__hook_mark - { - \exp_args:Ne \__hook_try_declaring_generic_hook_split:nNNnn - { \exp_args:Ne \__hook_file_hook_normalize:n {#1} } - } - { \__hook_try_declaring_generic_hook_split:nNNnn {#1} } - } -\cs_new_protected:Npn \__hook_try_declaring_generic_hook_split:nNNnn #1 #2 #3 - { - \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} - { #2 } - { #3 } {#1} - } -\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn - #1 / #2 / #3 / #4 \scan_stop: #5 { TF } - { - \tl_if_empty:nTF {#2} - { \prg_return_false: } - { - \prop_if_in:NnTF \c__hook_generics_prop {#1} - { - \hook_if_exist:nF {#5} { \hook_new:n {#5} } - \prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2} - { \tl_gset:cn { g__hook_#5_reversed_tl } { - } } - { - \prop_if_in:NnT \c__hook_generics_reversed_iii_prop {#3} - { \tl_gset:cn { g__hook_#5_reversed_tl } { - } } - } - \prg_return_true: - } - { \prg_return_false: } - } - } -\prg_new_conditional:Npnn \__hook_if_file_hook:w - #1 / #2 / #3 \s__hook_mark { TF } - { - \str_if_eq:nnTF {#1} { file } - { - \bool_lazy_or:nnTF - { \tl_if_empty_p:n {#3} } - { \str_if_eq_p:nn {#3} { / } } - { \prg_return_false: } - { - \prop_if_in:NnTF \c__hook_generics_file_prop {#2} - { \prg_return_true: } - { \prg_return_false: } - } - } - { \prg_return_false: } - } -\cs_new:Npn \__hook_file_hook_normalize:n #1 - { \__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 - { - \tl_if_empty:nTF {#2} - {#1} - { \__hook_strip_double_slash:w #1 / #2 \s__hook_mark } - } -\prop_const_from_keyval:Nn \c__hook_generics_prop - {env=,file=,package=,class=,include=} -\prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=} -\prop_const_from_keyval:Nn \c__hook_generics_reversed_iii_prop {after=} -\prop_const_from_keyval:Nn \c__hook_generics_file_prop {before=,after=} -\cs_new_protected:Npn \hook_gremove_code:nn #1 #2 - { \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} } -\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2 - { - \__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} - } - \hook_if_exist:nT {#1} - { \__hook_update_hook_code:n {#1} } - } - { \__hook_mark_removal:nn {#1} {#2} } - } -\cs_new_protected:Npn \__hook_gremove_code_do:nn #1 #2 - { \prop_gremove:cn { g__hook_#1_code_prop } {#2} } -\cs_new_protected:Npn \__hook_mark_removal:nn #1 #2 - { - \tl_gput_right:Nx \g__hook_removal_list_tl - { \__hook_removal_tl:nn {#1} {#2} } - } -\cs_new_protected:Npn \__hook_unmark_removal:nn #1 #2 - { - \tl_gremove_once:Nx \g__hook_removal_list_tl - { \__hook_removal_tl:nn {#1} {#2} } - } -\prg_new_protected_conditional:Npnn \__hook_if_marked_removal:nn #1 #2 { TF } - { - \exp_args:NNx \tl_if_in:NnTF \g__hook_removal_list_tl - { \__hook_removal_tl:nn {#1} {#2} } - { \prg_return_true: } { \prg_return_false: } - } -\cs_new:Npn \__hook_removal_tl:nn #1 #2 - { & \tl_to_str:n {#2} $ \tl_to_str:n {#1} $ } -\prop_new:c {g__hook_??_code_prop} -\prop_new:c {__hook~??} -\tl_new:c {g__hook_??_reversed_tl} -\cs_new_protected:Npn \hook_gset_rule:nnnn #1#2#3#4 - { - \__hook_normalize_hook_rule_args:Nnnnn \__hook_gset_rule:nnnn - {#1} {#2} {#3} {#4} - } -\cs_new_protected:Npn \__hook_gset_rule:nnnn #1#2#3#4 - { - \__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} - \__hook_update_hook_code:n {#1} - } - { \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_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_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_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 } } -\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 } } -\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 } } -\cs_new:Npn \__hook_label_pair:nn #1#2 - { - \if_case:w \__hook_str_compare:nn {#1} {#2} \exp_stop_f: - #1 | #1 % 0 - \or: #1 | #2 % +1 - \else: #2 | #1 % -1 - \fi: - } -\prg_new_conditional:Npnn \__hook_label_ordered:nn #1#2 { TF } - { - \if_int_compare:w \__hook_str_compare:nn {#1} {#2} > 0 \exp_stop_f: - \prg_return_true: - \else - \prg_return_false: - \fi: - } -\cs_new:Npn \__hook_if_label_case:nnnnn #1#2 - { - \cs:w use_ - \if_case:w \__hook_str_compare:nn {#1} {#2} - i \or: ii \else: iii \fi: :nnn - \cs_end: - } -\cs_new_eq:NN \__hook_update_hook_code:n \use_none:n -\cs_new_protected:Npn \__hook_initialize_all: { - \cs_gset_eq:NN \__hook_update_hook_code:n \__hook_initialize_hook_code:n - \__hook_debug:n { \prop_gclear:N \g__hook_used_prop } - \seq_map_inline:Nn \g__hook_all_seq - { - \__hook_update_hook_code:n {##1} - } - \__hook_debug:n - { \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:} - \prop_map_inline:Nn \g__hook_used_prop - { \iow_term:x{^^J~ ##1~ ->~ - \exp_not:v {__hook~##1}~ } - } - } - \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n - \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n -} -\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_if_reversed:nTF {#1} - { \cs_set_eq:NN \__hook_tl_gput:NV \tl_gput_left:NV - \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_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_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 } -\seq_new:N \l__hook_labels_seq -\int_new:N \l__hook_labels_int -\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 - { - \seq_clear:N \l__hook_labels_seq - \int_zero:N \l__hook_labels_int - \tl_set:Nn \l__hook_cur_hook_tl {#4} - \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} - \seq_clear_new:c { \__hook_seq_csname:n {##1} } - } - \prop_map_inline:Nn \l__hook_work_prop - { - \prop_map_inline:Nn \l__hook_work_prop - { - \__hook_if_label_case:nnnnn {##1} {####1} - { \prop_map_break: } - { \__hook_apply_label_pair:nnn {##1} {####1} } - { \__hook_apply_label_pair:nnn {####1} {##1} } - {#4} - } - } - \__hook_debug:n { \__hook_debug_label_data:N \l__hook_work_prop } - \tl_set:Nn \l__hook_rear_tl { 0 } - \tl_set:cn { \__hook_tl_csname:n { 0 } } { 0 } - \seq_map_inline:Nn \l__hook_labels_seq - { - \int_compare:nNnT { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0 - { - \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } }{##1} - \tl_set:Nn \l__hook_rear_tl {##1} - } - } - \tl_set_eq:Nc \l__hook_front_tl { \__hook_tl_csname:n { 0 } } - \tl_gclear:N #1 - \clist_gclear:N #3 - \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 - \__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 } } - { - \tl_set:cx { \__hook_tl_csname:n {##1} } - { \int_eval:n - { \cs:w \__hook_tl_csname:n {##1} \cs_end: - 1 } - } - \int_compare:nNnT - { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0 - { - \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1} - \tl_set:Nn \l__hook_rear_tl {##1} - } - } - \tl_set_eq:Nc \l__hook_front_tl - { \__hook_tl_csname:n { \l__hook_front_tl } } - } - \int_compare:nNnF \l__hook_labels_int = 0 - { - \iow_term:x{====================} - \iow_term:x{Error:~ label~ rules~ are~ incompatible:} - \__hook_debug_label_data:N \l__hook_work_prop - \iow_term:x{====================} - } - \tl_gput_right:Nn #1 {#2} - } -\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_new_protected:Npn \__hook_apply_label_pair:nnn #1#2#3 - { - \__hook_label_if_exist_apply:nnnF {#1} {#2} {#3} - { - \__hook_label_if_exist_apply:nnnF {#1} {#2} { ?? } { } - } - } -\cs_new_protected:Npn \__hook_label_if_exist_apply:nnnF #1#2#3 - { - \if_cs_exist:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end: - \__hook_apply_rule:nnn {#1} {#2} {#3} - \exp_after:wN \use_none:n - \else: - \use:nn - \fi: - } -\cs_new_protected:Npn \__hook_apply_rule:nnn #1#2#3 - { - \cs:w __hook_apply_ - \cs:w g__hook_#3_reversed_tl \cs_end: rule_ - \cs:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end: :nnn \cs_end: - {#1} {#2} {#3} - } -\cs_new_protected:cpn { __hook_apply_rule_<:nnn } #1#2#3 - { - \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } - \tl_set:cx { \__hook_tl_csname:n {#2} } - { \int_eval:n{ \cs:w \__hook_tl_csname:n {#2} \cs_end: + 1 } } - \seq_put_right:cn{ \__hook_seq_csname:n {#1} }{#2} - } -\cs_new_protected:cpn { __hook_apply_rule_>:nnn } #1#2#3 - { - \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } - \tl_set:cx { \__hook_tl_csname:n {#1} } - { \int_eval:n{ \cs:w \__hook_tl_csname:n {#1} \cs_end: + 1 } } - \seq_put_right:cn{ \__hook_seq_csname:n {#2} }{#1} - } -\cs_new_protected:cpn { __hook_apply_rule_xE:nnn } #1#2#3 - { - \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } - \msg_error:nnnnnn { hooks } { labels-incompatible } - {#1} {#2} {#3} { 1 } - \use:c { __hook_apply_rule_->:nnn } {#1} {#2} {#3} - \use:c { __hook_apply_rule_<-:nnn } {#1} {#2} {#3} - } -\cs_new_protected:cpn { __hook_apply_rule_xW:nnn } #1#2#3 - { - \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } - \msg_warning:nnnnnn { hooks } { labels-incompatible } - {#1} {#2} {#3} { 0 } - } -\cs_new_protected:cpn { __hook_apply_rule_->:nnn } #1#2#3 - { - \__hook_debug:n - { - \__hook_msg_pair_found:nnn {#1} {#2} {#3} - \iow_term:x{--->~ Drop~ '#2'~ code~ from~ - \iow_char:N \\ g__hook_ \l__hook_cur_hook_tl _code_prop ~ - because~ of~ '#1' } - } - \prop_put:Nnn \l__hook_work_prop {#2} { } - } -\cs_new_protected:cpn { __hook_apply_rule_<-:nnn } #1#2#3 - { - \__hook_debug:n - { - \__hook_msg_pair_found:nnn {#1} {#2} {#3} - \iow_term:x{--->~ Drop~ '#1'~ code~ from~ - \iow_char:N \\ g__hook_ \l__hook_cur_hook_tl _code_prop ~ - because~ of~ '#2' } - } - \prop_put:Nnn \l__hook_work_prop {#1} { } - } -\cs_new_eq:cc { __hook_apply_-rule_<:nnn } { __hook_apply_rule_>:nnn } -\cs_new_eq:cc { __hook_apply_-rule_>:nnn } { __hook_apply_rule_<:nnn } -\cs_new_eq:cc { __hook_apply_-rule_<-:nnn } { __hook_apply_rule_<-:nnn } -\cs_new_eq:cc { __hook_apply_-rule_->:nnn } { __hook_apply_rule_->:nnn } -\cs_new_eq:cc { __hook_apply_-rule_xE:nnn } { __hook_apply_rule_xE:nnn } -\cs_new_eq:cc { __hook_apply_-rule_xW:nnn } { __hook_apply_rule_xW:nnn } -\cs_new_protected:Npn \__hook_msg_pair_found:nnn #1#2#3 - { - \iow_term:x{~ \str_if_eq:nnTF {#3} {??} {default} {~normal} ~ - rule~ \__hook_label_pair:nn {#1} {#2}:~ - \use:c { g__hook_#3_rule_ \__hook_label_pair:nn {#1} {#2} _tl } ~ - found} - } -\cs_new_protected:Npn \__hook_debug_label_data:N #1 { - \iow_term:x{Code~ labels~ for~ sorting:} - \iow_term:x{~ \seq_use:Nnnn\l__hook_labels_seq {~and~}{,~}{~and~} } - \iow_term:x{^^J Data~ structure~ for~ label~ rules:} - \prop_map_inline:Nn #1 - { - \iow_term:x{~ ##1~ =~ \tl_use:c{ \__hook_tl_csname:n {##1} }~ ->~ - \seq_use:cnnn{ \__hook_seq_csname:n {##1} }{~->~}{~->~}{~->~} - } - } - \iow_term:x{} -} -\cs_new_protected:Npn \hook_log:n #1 - { - \cs_set_eq:NN \__hook_log_cmd:x \iow_log:x - \__hook_normalize_hook_args:Nn \__hook_log:nN {#1} \tl_log:x - } -\cs_new_protected:Npn \hook_show:n #1 - { - \cs_set_eq:NN \__hook_log_cmd:x \iow_term:x - \__hook_normalize_hook_args:Nn \__hook_log:nN {#1} \tl_show:x - } -\cs_new_protected:Npn \__hook_log_line:x #1 - { \__hook_log_cmd:x { >~#1 } } -\cs_new_protected:Npn \__hook_log_line_indent:x #1 - { \__hook_log_cmd:x { >~\@spaces #1 } } -\cs_new_protected:Npn \__hook_log:nN #1 #2 - { - \__hook_preamble_hook:n {#1} - \__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_log_line:x { Code~chunks: } - \prop_if_empty:cTF { g__hook_#1_code_prop } - { \__hook_log_line_indent:x { --- } } - { - \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_indent:x - { - \tl_if_empty:cTF { __hook_next~#1 } - { --- } - { ->~ \exp_args:Nv \__hook_log_next_code:n { __hook_next~#1 } } - } - \__hook_log_line:x { Rules: } - \bool_set_true:N \l__hook_tmpa_bool - \__hook_list_rules:nn {#1} - { - \bool_set_false:N \l__hook_tmpa_bool - \__hook_log_line_indent:x - { - ##2~ with~ - \str_if_eq:nnT {##3} {??} { default~ } - relation~ ##1 - } - } - \bool_if:NT \l__hook_tmpa_bool - { \__hook_log_line_indent:x { --- } } - \bool_lazy_and:nnTF - { \hook_if_exist_p:n {#1} } - { ! \hook_if_empty_p:n {#1} } - { - \__hook_log_line:x - { - Execution~order - \bool_if:NTF \l__hook_tmpa_bool - { \__hook_if_reversed:nT {#1} { ~(after~reversal) } } - { ~(after~ - \__hook_if_reversed:nT {#1} { reversal~and~ } - applying~rules) - } : - } - #2 % \tl_show:n - { - \@spaces - \clist_if_empty:cTF { g__hook_#1_labels_clist } - { --- } - { \clist_use:cn {g__hook_#1_labels_clist} { ,~ } } - } - } - { - #2 - { - Hook~ \hook_if_exist:nTF {#1} - {code~pool~empty} {not~declared} - } - } - } - { #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 } } -\cs_new_protected:Npn \__hook_list_rules:nn #1 #2 - { - \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2} - \prop_map_inline:cn { g__hook_#1_code_prop } - { - \prop_map_inline:cn { g__hook_#1_code_prop } - { - \__hook_if_label_case:nnnnn {##1} {####1} - { \prop_map_break: } - { \__hook_list_one_rule:nnn {##1} {####1} } - { \__hook_list_one_rule:nnn {####1} {##1} } - {#1} - } - } - } -\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} { ?? } { } } - } -\cs_new_protected:Npn \__hook_list_if_rule_exists:nnnF #1#2#3 - { - \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} - \fi: - } -\cs_new_protected:Npn \__hook_debug_print_rules:n #1 - { - \iow_term:n { The~hook~#1~contains~the~rules: } - \cs_set_protected:Npn \__hook_tmp:w ##1 - { - \__hook_list_rules:nn {#1} - { - \iow_term:x - { - > ##1 {####2} ##1 => ##1 {####1} - \str_if_eq:nnT {####3} {??} { ~(default) } - } - } - } - \exp_args:No \__hook_tmp:w { \use:nn { ~ } { ~ } } - } -\cs_new_protected:Npn \hook_gput_next_code:nn #1 - { \__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 - { - \exp_args:Nc \__hook_gput_next_do:Nnn - { __hook_next~#1 } {#1} - } -\cs_new_protected:Npn \__hook_gput_next_do:Nnn #1 #2 - { - \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 - } -\cs_new_protected:Npn \__hook_clear_next:n #1 - { \cs_gset_eq:cN { __hook_next~#1 } \c_empty_tl } -\cs_new_protected:Npn \hook_use:n #1 - { - \tl_if_exist:cTF { __hook~#1 } - { - \__hook_preamble_hook:n {#1} - \cs:w __hook~#1 \cs_end: - } - { \__hook_use:wn #1 / \s__hook_mark {#1} } - } -\cs_new:Npn \__hook_use_initialized:n #1 - { - \if_cs_exist:w __hook~#1 \cs_end: - \else: - \__hook_use_undefined:w - \fi: - \cs:w __hook~#1 \__hook_use_end: - } -\cs_new:Npn \__hook_use_undefined:w #1 #2 __hook~#3 \__hook_use_end: - { - #1 % fi - \__hook_use:wn #3 / \s__hook_mark {#3} - } -\cs_new_protected:Npn \__hook_preamble_hook:n #1 - { \__hook_initialize_hook_code:n {#1} } -\cs_new_eq:NN \__hook_use_end: \cs_end: -\cs_new:Npn \__hook_use:wn #1 / #2 \s__hook_mark #3 - { - \str_if_eq:nnTF {#1} { file } - { \__hook_try_file_hook:n {#3} } - { } % Hook doesn't exist - } -\cs_new_protected:Npn \__hook_try_file_hook:n #1 - { - \__hook_if_file_hook:wTF #1 / / \s__hook_mark - { - \exp_args:Ne \__hook_if_exist_use:n - { \exp_args:Ne \__hook_file_hook_normalize:n {#1} } - } - { \__hook_if_exist_use:n {#1} } % file/ generic hook (e.g. file/before) - } -\cs_new_protected:Npn \__hook_if_exist_use:n #1 - { - \tl_if_exist:cT { __hook~#1 } - { - \__hook_preamble_hook:n {#1} - \cs:w __hook~#1 \cs_end: - } - } -\cs_new_protected:Npn \hook_use_once:n #1 - { - \tl_if_exist:cT { __hook~#1 } - { - \tl_set:Nn \l__hook_return_tl {#1} - \__hook_normalize_hook_args:Nn \__hook_use_once_store:n - { \l__hook_return_tl } - \hook_use:n {#1} - } - } -\cs_new_protected:Npn \__hook_use_once_store:n #1 - { \prop_gput:Nnn \g__hook_execute_immediately_prop {#1} { } } -\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF } - { - \__hook_if_exist:nTF {#1} - { - \bool_lazy_and:nnTF - { \prop_if_empty_p:c { g__hook_#1_code_prop } } - { \tl_if_empty_p:c { __hook_next~#1 } } - { \prg_return_true: } - { \prg_return_false: } - } - { \prg_return_true: } - } -\prg_new_conditional:Npnn \hook_if_exist:n #1 { p , T , F , TF } - { - \tl_if_exist:cTF { __hook~#1 } - { \prg_return_true: } - { \prg_return_false: } - } -\prg_new_conditional:Npnn \__hook_if_exist:n #1 { p , T , F , TF } - { - \prop_if_exist:cTF { g__hook_#1_code_prop } - { \prg_return_true: } - { \prg_return_false: } - } -\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF } - { - \if_int_compare:w \cs:w g__hook_#1_reversed_tl \cs_end: 1 < 0 \exp_stop_f: - \prg_return_true: - \else: - \prg_return_false: - \fi: - } -\msg_new:nnnn { hooks } { labels-incompatible } - { - Labels~`#1'~and~`#2'~are~incompatible - \str_if_eq:nnF {#3} {??} { ~in~hook~`#3' } .~ - \int_compare:nNnTF {#4} = { 1 } - { The~ code~ for~ both~ labels~ will~ be~ dropped. } - { You~ may~ see~ errors~ later. } - } - { LaTeX~found~two~incompatible~labels~in~the~same~hook.~ - This~indicates~an~incompatibility~between~packages. } -\msg_new:nnnn { hooks } { exists } - { Hook~`#1'~ has~ already~ been~ declared. } - { There~ already~ exists~ a~ hook~ declaration~ with~ this~ - name.\\ - Please~ use~ a~ different~ name~ for~ your~ hook.} -\msg_new:nnn { hooks } { empty-label } - { Empty~code~label~\msg_line_context:.~Using~`#1'~instead. } -\msg_new:nnnn { hooks } { unknown-rule } - { Unknown~ relationship~ `#3'~ - between~ labels~ `#2'~ and~ `#4'~ - \str_if_eq:nnF {#1} {??} { ~in~hook~`#1' }. ~ - Perhaps~ a~ missspelling? - } - { - The~ relation~ used~ not~ known~ to~ the~ system.~ Allowed~ values~ are~ - `before'~ or~ `<',~ - `after'~ or~ `>',~ - `incompatible-warning',~ - `incompatible-error',~ - `voids'~ or~ - `unrelated'. - } -\msg_new:nnn { hooks } { should-not-happen } - { - ERROR!~This~should~not~happen.~#1 \\ - Please~report~at~https://github.com/latex3/latex2e. - } -\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} } -\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} } -\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} } -\NewDocumentCommand \AddToHook { m o +m } - { \hook_gput_code:nnn {#1} {#2} {#3} } -\NewDocumentCommand \AddToHookNext { m +m } - { \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 { } -\cs_new_protected:Npn \__hook_curr_name_push:n #1 - { - \seq_gpush:Nn \g__hook_name_stack_seq {#1} - \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 - { \tl_gset_eq:NN \g__hook_hook_curr_name_tl \l__hook_return_tl } - { - \msg_error:nnn { hooks } { should-not-happen } - { Tried~to~pop~from~an~empty~default~label~stack. } - } - } -\NewDocumentCommand \DeclareDefaultHookLabel { m } - { - \seq_gpop:NN \g__hook_name_stack_seq \l__hook_return_tl - \__hook_curr_name_push:n {#1} - } -\cs_new:Npn \UseHook { \hook_use:n } -\cs_new:Npn \UseOneTimeHook { \hook_use_once:n } -\cs_new_protected:Npn \ShowHook { \hook_show:n } -\cs_new_protected:Npn \LogHook { \hook_log:n } -\cs_new_protected:Npn \DebugHooksOn { \hook_debug_on: } -\cs_new_protected:Npn \DebugHooksOff { \hook_debug_off: } -\NewDocumentCommand \DeclareHookRule { m m m m } - { \hook_gset_rule:nnnn {#1}{#2}{#3}{#4} } -\NewDocumentCommand \DeclareDefaultHookRule { m m m } - { \hook_gset_rule:nnnn {??}{#1}{#2}{#3} } -\@onlypreamble\DeclareDefaultHookRule -\NewDocumentCommand \ClearHookRule { m m m } -{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} } -\cs_new_eq:NN \IfHookExistsTF \hook_if_exist:nTF -\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%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 -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\NewHook}{The hook management}% - -\def\NewHook#1{} -\def\NewReversedHook#1{} -\def\NewMirroredHookPair#1#2{} - -\long\def\AddToHookNext#1#2{} - -\def\AddToHook#1{\@gobble@AddToHook@args} -\providecommand\@gobble@AddToHook@args[2][]{} - -\def\RemoveFromHook#1{\@gobble@RemoveFromHook@arg} -\providecommand\@gobble@RemoveFromHook@arg[1][]{} - -\def \UseHook #1{} -\def \UseOneTimeHook #1{} -\def \ShowHook #1{} -\let \DebugHooksOn \@empty -\let \DebugHooksOff\@empty - -\def \DeclareHookRule #1#2#3#4{} -\def \DeclareDefaultHookRule #1#2#3{} -\def \ClearHookRule #1#2#3{} -\long\def \IfHookExistsTF #1#2#3{#3} -\long\def \IfHookEmptyTF #1#2#3{#2} - -\EndIncludeInRelease -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% From File: ltalloc.dtx -%%% 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 -\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: 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} - -\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: 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 -\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} -\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}}% -} -\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: ltfiles.dtx -\IncludeInRelease{2020/10/01}% - {\document}{Added hook to load l3backend code}% -\def\document{% - \UseOneTimeHook{begindocument/before}% - \@kernel@after@begindocument@before - \@expl@sys@load@backend@@ - \ifx\@unusedoptionlist\@empty\else - \@latex@warning@no@line{Unused global option(s):^^J% - \@spaces[\@unusedoptionlist]}% - \fi - \@colht\textheight - \@colroom\textheight \vsize\textheight - \columnwidth\textwidth - \@clubpenalty\clubpenalty - \if@twocolumn - \advance\columnwidth -\columnsep - \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue - \fi - \hsize\columnwidth \linewidth\hsize - \begingroup\@floatplacement\@dblfloatplacement - \makeatletter\let\@writefile\@gobbletwo - \global \let \@multiplelabels \relax - \@input{\jobname.aux}% - \endgroup - \if@filesw - \immediate\openout\@mainaux\jobname.aux - \immediate\write\@mainaux{\relax}% - \fi - \process@table - \let\glb@currsize\@empty % Force math initialization. - \normalsize - \everypar{}% - \ifx\normalsfcodes\@empty - \ifnum\sfcode`\.=\@m - \let\normalsfcodes\frenchspacing - \else - \let\normalsfcodes\nonfrenchspacing - \fi - \fi - \ifx\document@default@language\m@ne - \chardef\document@default@language\language - \fi - \@noskipsecfalse - \let \@refundefined \relax - \@kernel@before@begindocument - \UseOneTimeHook{begindocument}% - \@kernel@after@begindocument - \ifdim\topskip<1sp\global\topskip 1sp\relax\fi - \global\@maxdepth\maxdepth - \global\let\@begindocumenthook\@undefined - \ifx\@listfiles\@undefined - \global\let\@filelist\relax - \global\let\@addtofilelist\@gobble - \fi - \gdef\do##1{\global\let ##1\@notprerr}% - \@preamblecmds - \global\let \@nodocument \relax - \global\let\do\noexpand - \UseOneTimeHook{begindocument/end}% - \ignorespaces} -\NewHook{begindocument} -\NewHook{begindocument/before} -\NewHook{begindocument/end} - -\edef \@kernel@after@begindocument@before {% - \let\expandafter\noexpand\csname - __hook env/document/begin\endcsname - \noexpand\@empty} -\let \@kernel@before@begindocument \@empty -\let \@kernel@after@begindocument \@empty - -\EndIncludeInRelease -\IncludeInRelease{2017/04/15}% - {\document}{Save language for hyphenation}% - -\def\document{\endgroup - \ifx\@unusedoptionlist\@empty\else - \@latex@warning@no@line{Unused global option(s):^^J% - \@spaces[\@unusedoptionlist]}% - \fi - \@colht\textheight - \@colroom\textheight \vsize\textheight - \columnwidth\textwidth - \@clubpenalty\clubpenalty - \if@twocolumn - \advance\columnwidth -\columnsep - \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue - \fi - \hsize\columnwidth \linewidth\hsize - \begingroup\@floatplacement\@dblfloatplacement - \makeatletter\let\@writefile\@gobbletwo - \global \let \@multiplelabels \relax - \@input{\jobname.aux}% - \endgroup - \if@filesw - \immediate\openout\@mainaux\jobname.aux - \immediate\write\@mainaux{\relax}% - \fi - \process@table - \let\glb@currsize\@empty % Force math initialization. - \normalsize - \everypar{}% - \ifx\normalsfcodes\@empty - \ifnum\sfcode`\.=\@m - \let\normalsfcodes\frenchspacing - \else - \let\normalsfcodes\nonfrenchspacing - \fi - \fi - \ifx\document@default@language\m@ne - \chardef\document@default@language\language - \fi - \@noskipsecfalse - \let \@refundefined \relax - \let\AtBeginDocument\@firstofone - \@begindocumenthook - \ifdim\topskip<1sp\global\topskip 1sp\relax\fi - \global\@maxdepth\maxdepth - \global\let\@begindocumenthook\@undefined - \ifx\@listfiles\@undefined - \global\let\@filelist\relax - \global\let\@addtofilelist\@gobble - \fi - \gdef\do##1{\global\let ##1\@notprerr}% - \@preamblecmds - \global\let \@nodocument \relax - \global\let\do\noexpand - \ignorespaces} -\EndIncludeInRelease - -\IncludeInRelease{0000/00/00}% - {\document}{Save language for hyphenation} -\def\document{\endgroup - \ifx\@unusedoptionlist\@empty\else - \@latex@warning@no@line{Unused global option(s):^^J% - \@spaces[\@unusedoptionlist]}% - \fi - \@colht\textheight - \@colroom\textheight \vsize\textheight - \columnwidth\textwidth - \@clubpenalty\clubpenalty - \if@twocolumn - \advance\columnwidth -\columnsep - \divide\columnwidth\tw@ \hsize\columnwidth - \@firstcolumntrue - \fi - \hsize\columnwidth \linewidth\hsize - \begingroup\@floatplacement\@dblfloatplacement - \makeatletter\let\@writefile\@gobbletwo - \global \let \@multiplelabels \relax - \@input{\jobname.aux}% - \endgroup - \if@filesw - \immediate\openout\@mainaux\jobname.aux - \immediate\write\@mainaux{\relax}% - \fi - \process@table - \let\glb@currsize\@empty - \normalsize - \everypar{}% - \ifx\normalsfcodes\@empty - \ifnum\sfcode`\.=\@m - \let\normalsfcodes\frenchspacing - \else - \let\normalsfcodes\nonfrenchspacing - \fi - \fi - \@noskipsecfalse - \let \@refundefined \relax - \let\AtBeginDocument\@firstofone - \@begindocumenthook - \ifdim\topskip<1sp\global\topskip 1sp\relax\fi - \global\@maxdepth\maxdepth - \global\let\@begindocumenthook\@undefined - \ifx\@listfiles\@undefined - \global\let\@filelist\relax - \global\let\@addtofilelist\@gobble - \fi - \gdef\do##1{\global\let ##1\@notprerr}% - \@preamblecmds - \global\let \@nodocument \relax - \global\let\do\noexpand - \ignorespaces} -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\includeonly}{Spaces in file names}% -\def\include#1{\relax - \ifnum\@auxout=\@partaux - \@latex@error{\string\include\space cannot be nested}\@eha - \else - \set@curr@file{#1}% - \edef\@curr@file{\@strip@tex@ext\@curr@file}% - \expandafter\@include\expandafter{\@curr@file} % deliberate space - \fi} -\def\includeonly#1{% - \@partswtrue - \let\@partlist\@empty - \@for\reserved@a:=#1 \do - {% - \expandafter\set@curr@file\expandafter{\reserved@a}% - \ifx\@partlist\@empty - \edef\@partlist{\@strip@tex@ext\@curr@file}% - \else - \edef\@partlist{\@partlist,\@strip@tex@ext\@curr@file}% - \fi - }% - } -\@onlypreamble\includeonly -\def\reserved@a#1{% -\def\@strip@tex@ext##1{% - \expandafter\@strip@tex@ext@aux - ##1\@nil\@nil - #1\@nil\relax\@nnil} -\def\@strip@tex@ext@aux##1#1\@nil##2\@nnil{% - \ifx\relax##2\@empty - \expandafter\@cdr\expandafter\@empty\@cdr{}##1% - \else##1\fi}}% -\expandafter\reserved@a -\expandafter{\detokenize{.tex}} -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\includeonly}{Spaces in file names}% - -\def\includeonly#1{% - \@partswtrue - \set@curr@file{\zap@space#1 \@empty}% - \let\@partlist\@curr@file - } - -\def\include#1{\relax - \ifnum\@auxout=\@partaux - \@latex@error{\string\include\space cannot be nested}\@eha - \else - \set@curr@file{#1 }% - \expandafter\@include\@curr@file - \fi} - -\let\@strip@tex@ext\@undefined -\let\@strip@tex@ext@aux\@undefined - -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\includeonly}{Spaces in file names}% -\def\includeonly#1{% - \@partswtrue - \edef\@partlist{\zap@space#1 \@empty}} - -\def\include#1{\relax - \ifnum\@auxout=\@partaux - \@latex@error{\string\include\space cannot be nested}\@eha - \else \@include#1 \fi} - -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\@include}{Spaces in file names and hooks}% -\def\@include#1 {% - \clearpage - \if@filesw - \immediate\write\@mainaux{\string\@input{#1.aux}}% - \fi - \@tempswatrue - \if@partsw - \@tempswafalse - \edef\reserved@b{#1}% - \@for\reserved@a:=\@partlist\do - {\ifx\reserved@a\reserved@b\@tempswatrue\fi}% - \fi - \if@tempswa - \let\@auxout\@partaux - \if@filesw - \immediate\openout\@partaux "#1.aux" - \immediate\write\@partaux{\relax}% - \fi - \@filehook@set@CurrentFile - \UseHook{include/before}% - \UseHook{include/before/#1}% - \@input@{#1.tex}% - \UseHook{include/end/#1}% - \UseHook{include/end}% - \clearpage - \UseHook{include/after/#1}% - \UseHook{include/after}% - \clearpage - \@writeckpt{#1}% - \if@filesw - \immediate\closeout\@partaux - \fi - \else - \deadcycles\z@ - \@nameuse{cp@#1}% - \fi - \let\@auxout\@mainaux} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\@include}{Spaces in file names}% -\def\@include#1 {% - \clearpage - \if@filesw - \immediate\write\@mainaux{\string\@input{#1.aux}}% - \fi - \@tempswatrue - \if@partsw - \@tempswafalse - \edef\reserved@b{#1}% - \@for\reserved@a:=\@partlist\do - {\ifx\reserved@a\reserved@b\@tempswatrue\fi}% - \fi - \if@tempswa - \let\@auxout\@partaux - \if@filesw - \immediate\openout\@partaux #1.aux - \immediate\write\@partaux{\relax}% - \fi - \@input@{#1.tex}% - \clearpage - \@writeckpt{#1}% - \if@filesw - \immediate\closeout\@partaux - \fi - \else - \deadcycles\z@ - \@nameuse{cp@#1}% - \fi - \let\@auxout\@mainaux} - -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\quote@name}{Quote file names}% -\def\quote@name#1{"\quote@@name#1\@gobble""} -\def\quote@@name#1"{#1\quote@@name} -\def\unquote@name#1{\quote@@name#1\@gobble"} -\DeclareRobustCommand\IfFileExists[1]{% - \set@curr@file{#1}% - \expandafter\IfFileExists@\expandafter{\@curr@file}} -\long\def \IfFileExists@#1#2#3{% - \openin\@inputcheck"#1" % - \ifeof\@inputcheck - \ifx\input@path\@undefined - \def\reserved@a{#3}% - \else - \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% - \fi - \else - \closein\@inputcheck - \edef\@filef@und{"#1" }% - \def\reserved@a{#2}% - \fi - \reserved@a} -\long\def\@iffileonpath#1{% - \let\reserved@a\@secondoftwo - \expandafter\@tfor\expandafter\reserved@b\expandafter - :\expandafter=\input@path\do{% - \openin\@inputcheck\expandafter\quote@name\expandafter{\reserved@b#1} % - \ifeof\@inputcheck\else - \edef\@filef@und{\expandafter\quote@name\expandafter{\reserved@b#1} }% - \let\reserved@a\@firstoftwo% - \closein\@inputcheck - \@break@tfor - \fi}% - \reserved@a} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\quote@name}{Quote file names}% - -\let\quote@name\@undefined -\let\quote@@name\@undefined -\let\unquote@name\@undefined - -\let\IfFileExists@\@undefined - -\long\def \IfFileExists#1#2#3{% - \openin\@inputcheck#1 % - \ifeof\@inputcheck - \ifx\input@path\@undefined - \def\reserved@a{#3}% - \else - \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% - \fi - \else - \closein\@inputcheck - \edef\@filef@und{#1 }% - \def\reserved@a{#2}% - \fi - \reserved@a} - -\long\def\@iffileonpath#1{% - \let\reserved@a\@secondoftwo - \expandafter\@tfor\expandafter\reserved@b\expandafter - :\expandafter=\input@path\do{% - \openin\@inputcheck\reserved@b#1 % - \ifeof\@inputcheck\else - \edef\@filef@und{\reserved@b#1 }% - \let\reserved@a\@firstoftwo% - \closein\@inputcheck - \@break@tfor - \fi}% - \reserved@a} - -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\@swaptwoargs}{Don't lose the file name}% -\long\def\@swaptwoargs#1#2{#2#1} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\@swaptwoargs}{Don't lose the file name}% -\let\@swaptwoargs\@undefined -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\@iinput}{Change in file error handling}% -\def\@iinput#1{% - \InputIfFileExists{#1}{}% - {\filename@parse\@curr@file - \edef\reserved@a{\noexpand\@missingfileerror - {\filename@area\filename@base}% - {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% - \reserved@a - \edef\reserved@a{\noexpand\@iinput{% - \@missingfile@area\@missingfile@base.\@missingfile@ext}}% - \reserved@a}} -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\@iinput}{Quote file names}% - -\def\@iinput#1{% - \InputIfFileExists{#1}{}% - {\filename@parse\@curr@file - \edef\reserved@a{\noexpand\@missingfileerror - {\filename@area\filename@base}% - {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% - \reserved@a}} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\@iinput}{Quote file names}% -\def\@iinput#1{% - \InputIfFileExists{#1}{}% - {\filename@parse{#1}% - \edef\reserved@a{\noexpand\@missingfileerror - {\filename@area\filename@base}% - {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% - \reserved@a}} -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\@missingfileerror}{Do not load missing file immediately}% -\gdef\@missingfileerror#1#2{% - \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J% - Type X to quit or to proceed,^^J% - or enter new name. (Default extension: #2)^^J}% - \message{Enter file name: }% - {\endlinechar\m@ne - \global\read\m@ne to\@gtempa}% - \ifx\@gtempa\@empty - \let\@missingfile@area\@empty - \let\@missingfile@base\@empty - \def\@missingfile@ext{tex}% - \else - \def\reserved@b{\batchmode\read-1 to \reserved@a}% - \def\reserved@a{x}\ifx\reserved@a\@gtempa\reserved@b\fi - \def\reserved@a{X}\ifx\reserved@a\@gtempa\reserved@b\fi - \filename@parse\@gtempa - \edef\filename@ext{% - \ifx\filename@ext\relax#2\else\filename@ext\fi}% - \edef\reserved@a{% - \noexpand\IfFileExists - {\filename@area\filename@base.\filename@ext}% - {\def\noexpand\@missingfile@area{\filename@area}% - \def\noexpand\@missingfile@base{\filename@base}% - \def\noexpand\@missingfile@ext {\filename@ext}}% - {\noexpand\@missingfileerror - {\filename@area\filename@base}{\filename@ext}}}% - \reserved@a - \fi -} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\@missingfileerror}{Do not load missing file immediately}% - -\gdef\@missingfileerror#1#2{% - \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J% - Type X to quit or to proceed,^^J% - or enter new name. (Default extension: #2)^^J}% - \message{Enter file name: }% - {\endlinechar\m@ne - \global\read\m@ne to\@gtempa}% - \ifx\@gtempa\@empty - \else - \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi - \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi - \filename@parse\@gtempa - \edef\filename@ext{% - \ifx\filename@ext\relax#2\else\filename@ext\fi}% - \edef\reserved@a{% - \noexpand\InputIfFileExists - {\filename@area\filename@base.\filename@ext}% - {}% - {\noexpand\@missingfileerror - {\filename@area\filename@base}{\filename@ext}}}% - \reserved@a - \fi} - -\EndIncludeInRelease -%%% From File: ltoutenc.dtx -\IncludeInRelease{2017/04/15}{\DeclareTextCompositeCommand} - {test for undeclared accent}% -\def\DeclareTextCompositeCommand#1#2#3#4{% - \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname - \ifx\reserved@a\relax - \DeclareTextCommand#1{#2}{% - \@latex@error{\string#1 undeclared in encoding #2}\@eha}% - \@latex@info{Composite with undeclared \string#1 in encoding #2}% - \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname - \fi - \expandafter\expandafter\expandafter\ifx - \expandafter\@car\reserved@a\relax\relax\@nil \@text@composite \else - \edef\reserved@b##1{% - \def\expandafter\noexpand - \csname#2\string#1\endcsname####1{% - \noexpand\@text@composite - \expandafter\noexpand\csname#2\string#1\endcsname - ####1\noexpand\@empty\noexpand\@text@composite - {##1}}}% - \expandafter\reserved@b\expandafter{\reserved@a{##1}}% - \fi - \expandafter\def\csname\expandafter\string\csname - #2\endcsname\string#1-\string#3\@empty\endcsname{#4}% - } -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\DeclareTextCompositeCommand} - {test for undeclared accent}% -\def\DeclareTextCompositeCommand#1#2#3#4{% - \expandafter\let\expandafter\reserved@a - \csname#2\string#1\endcsname - \expandafter\expandafter\expandafter\ifx - \expandafter\@car\reserved@a\relax\relax\@nil - \@text@composite \else - \edef\reserved@b##1{% - \def\expandafter\noexpand - \csname#2\string#1\endcsname####1{% - \noexpand\@text@composite - \expandafter\noexpand\csname#2\string#1\endcsname - ####1\noexpand\@empty\noexpand\@text@composite - {##1}}}% - \expandafter\reserved@b\expandafter{\reserved@a{##1}}% - \fi - \expandafter\def\csname\expandafter\string\csname - #2\endcsname\string#1-\string#3\@empty\endcsname{#4}} -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\UseTextAccent}{Make commands robust}% -\DeclareRobustCommand*\UseTextAccent[3]{% - \hmode@start@before@group - {% - \let\hmode@start@before@group\@firstofone - \let\@curr@enc\cf@encoding - \@use@text@encoding{#1}% - #2{\@use@text@encoding\@curr@enc#3}% - }} -\DeclareRobustCommand*\UseTextSymbol[2]{% - \hmode@start@before@group - {% - \def\@wrong@font@char{\MessageBreak - for \noexpand\symbol`\string#2'}% - \@use@text@encoding{#1}% - #2% - }% - } -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\UseTextAccent}{Make commands robust}% - -\kernel@make@fragile\UseTextAccent -\kernel@make@fragile\UseTextSymbol - -\EndIncludeInRelease -\IncludeInRelease{2015/10/01}{\textcommabelow}{comma accent}% -\DeclareTextCommandDefault\textcommabelow[1] - {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex - \hbox{\check@mathfonts\fontsize\ssf@size\z@ - \math@fontsfalse\selectfont,}\hidewidth}\egroup} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\textcommabelow}{comma accent}% -\let\textcommabelow\@undefined -\expandafter - \let\csname\string\T1\string\c-G\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-K\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-k\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-L\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-l\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-N\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-n\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-R\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-r\endcsname\@undefined -\EndIncludeInRelease -\IncludeInRelease{2016/02/01}{\textcommaabove}{comma above}% -\DeclareTextCommandDefault\textcommaabove[1]{% - \hmode@bgroup - \ooalign{% - \hidewidth - \raise.7ex\hbox{% - \check@mathfonts\fontsize\ssf@size\z@\math@fontsfalse\selectfont`% - }% - \hidewidth\crcr - \null#1\crcr - }% - \egroup -} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\textcommaabove}{comma above}% -\let\textcommaabove\@undefined -\expandafter - \let\csname\string\OT1\string\c-g\endcsname\@undefined -\expandafter - \let\csname\string\T1\string\c-g\endcsname\@undefined -\EndIncludeInRelease -%%% From File: ltcounts.dtx - -\IncludeInRelease{2015/01/01}{\@stpelt} - {Reset nested counters}% -\def\@stpelt#1{\global\csname c@#1\endcsname \m@ne\stepcounter{#1}}% -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\@stpelt} - {Reset nested counters}%% -\def\@stpelt#1{\global\csname c@#1\endcsname \z@}% -\EndIncludeInRelease -\IncludeInRelease{2018-04-01} - {\@removefromreset}{Add interfaces}% -\def\@removefromreset#1#2{% - \@ifundefined{c@#2}\relax - {\begingroup - \expandafter\let\csname c@#1\endcsname\@removefromreset - \def\@elt##1{% - \expandafter\ifx\csname c@##1\endcsname\@removefromreset - \else - \noexpand\@elt{##1}% - \fi}% - \expandafter\xdef\csname cl@#2\endcsname - {\csname cl@#2\endcsname}% - \endgroup}} - -\def\@ifbothcounters#1#2#3{% - \@ifundefined{c@#1}{\@nocounterr{#1}}% - {% else counter is defined - \@ifundefined{c@#2}{\@nocounterr{#2}}% - {% else both counter and within are defined - #3}}} - -\def\counterwithout {\@ifstar\counterwithout@s\counterwithout@x} -\def\counterwithout@s#1#2{% - \@ifbothcounters{#1}{#2}{\@removefromreset{#1}{#2}}} -\def\counterwithout@x#1#2{% - \@ifbothcounters{#1}{#2}% - {\@removefromreset{#1}{#2}% - \expandafter - \gdef\csname the#1\expandafter\endcsname\expandafter - {\expandafter - \@arabic\csname c@#1\endcsname}}} - -\def\counterwithin{\@ifstar\counterwithin@s\counterwithin@x} -\def\counterwithin@s#1#2{% - \@ifbothcounters{#1}{#2}{\@addtoreset{#1}{#2}}} -\def\counterwithin@x#1#2{% - \@ifbothcounters{#1}{#2}% - {\@addtoreset{#1}{#2}% - \expandafter - \gdef\csname the#1\expandafter\endcsname\expandafter - {\csname the#2\expandafter\endcsname\expandafter - .\expandafter - \@arabic\csname c@#1\endcsname}}} - -\EndIncludeInRelease -\IncludeInRelease{0000-00-00} - {\@removefromreset}{Add interfaces}% -\let \@removefromreset \undefined -\let \@ifbothcounters \undefined -\let \counterwithout \undefined -\let \counterwithout@s \undefined -\let \counterwithout@x \undefined -\let \counterwithin \undefined -\let \counterwithin@s \undefined -\let \counterwithin@x \undefined -\EndIncludeInRelease -\IncludeInRelease{2015/01/01}{\@fnsymbol}{Use \TexOrMath}% -\def\@fnsymbol#1{% - \ifcase#1\or \TextOrMath\textasteriskcentered *\or - \TextOrMath \textdagger \dagger\or - \TextOrMath \textdaggerdbl \ddagger \or - \TextOrMath \textsection \mathsection\or - \TextOrMath \textparagraph \mathparagraph\or - \TextOrMath \textbardbl \|\or - \TextOrMath {\textasteriskcentered\textasteriskcentered}{**}\or - \TextOrMath {\textdagger\textdagger}{\dagger\dagger}\or - \TextOrMath {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}\else - \@ctrerr \fi -}% -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\@fnsymbol}{Use \TexOrMath}% -\def\@fnsymbol#1{\ensuremath{% - \ifcase#1\or *\or \dagger\or \ddagger\or \mathsection\or - \mathparagraph\or \|\or **\or \dagger\dagger - \or \ddagger\ddagger \else\@ctrerr\fi}}% -\EndIncludeInRelease -\IncludeInRelease{2015/01/01}{\TextOrMath}{\TextOrMath}% -\begingroup\expandafter\expandafter\expandafter\endgroup -\expandafter\ifx\csname protected\endcsname\relax -\DeclareRobustCommand\TextOrMath{% - \ifmmode \expandafter\@secondoftwo - \else \expandafter\@firstoftwo \fi} -\protected@edef\TextOrMath#1#2{\TextOrMath{#1}{#2}} -\else -\protected\expandafter\def\csname TextOrMath\space\endcsname{% - \ifmmode \expandafter\@secondoftwo - \else \expandafter\@firstoftwo \fi} -\edef\TextOrMath#1#2{% - \expandafter\noexpand\csname TextOrMath\space\endcsname - {#1}{#2}} -\fi -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\TextOrMath}{\TextOrMath}% -\let\TextOrMath\@undefined -\EndIncludeInRelease -%%% From File: ltlength.dtx -\IncludeInRelease{2015/01/01}% - {\setlength}{Using \setlength with \dimen0}% -\def\setlength#1#2{#1 #2\relax} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\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 - \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 -%%% 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 -%% -%% 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 - -\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@@ - }% -} -\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 -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\declare@file@substitution}{File 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} -\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}% - {\set@curr@file}{Setting current file name}% -\let\set@curr@file\@undefined -\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 - \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: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}% - {\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@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 -\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 - - -\let \AtEndDvi \@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} -\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} -\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{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 -} -\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 - }% -\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{% - \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: 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@@} -\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 - \@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}% - {\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 } -\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{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}% - -\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 - \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 - \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 \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 \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 -} -\@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}% - -\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 -%%% 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}% - -\kernel@make@fragile\pagebreak -\kernel@make@fragile\nopagebreak -\kernel@make@fragile\linebreak -\kernel@make@fragile\nolinebreak -\kernel@make@fragile\samepage - -\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}% - -\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{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 -\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}% -\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}% -\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} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\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{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 - \else - \if@nobreak - \else - \ifdim\lastskip=\z@ - \penalty#1\relax - \else - \@tempskipb\lastskip - \vskip -\lastskip - \penalty#1% - \vskip\@tempskipb - \fi - \fi - \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} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\@hspace}{Support calc with \hspace}% - - -\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 + {% + \message{Skipping expl3-dependent extensions}% + \@gobbletwo + }% +\input{expl3.ltx} \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}% +\IncludeInRelease{2020/10/01}% + {\NewDocumentCommand}{Emergency loading xparse}% + +\ifdefined\NewDocumentCommand \else + \RequirePackage{xparse} \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 +\IncludeInRelease{2020/10/01}{\@expl@cs@to@str@@N}% + {expl3 macros added for the 2020-10-01 release}% +\ExplSyntaxOn +\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 +\ExplSyntaxOff \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}} +\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 -\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} +%%% From File: ltdefns.dtx +\IncludeInRelease{2020/10/01}% + {\typeout}{Allow "par" in \typeout}% +\protected\long\def\typeout#1{\begingroup + \set@display@protect + \def\par{^^J^^J}% + \immediate\write\@unused{#1}\endgroup} \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} +\IncludeInRelease{0000/00/00}% + {\typeout}{Allow "par" in \typeout}% + +\def\typeout#1{\begingroup\set@display@protect + \immediate\write\@unused{#1}\endgroup} \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@ +\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 + \escapechar=`\\ + \@ifundefined{\expandafter\@gobble\string#1}{% + \@latex@error{The control sequence `\string#1' is undefined!% + \MessageBreak There is nothing here to make robust}% + \@eha + }% + {% + \@ifundefined{\expandafter\@gobble\string#1\space}% + {% + \expandafter\@kernel@rename@newcommand + \csname\expandafter\@gobble\string#1\space\endcsname + #1% + \edef\reserved@a{\string#1}% + \def\reserved@b{#1}% + \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% + \xdef#1{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect\noexpand#1% + \fi + \noexpand\protect\expandafter\noexpand + \csname\expandafter\@gobble\string#1\space\endcsname}% + }% + {\@latex@info{The control sequence `\string#1' is already robust}}% + }% + \escapechar=\count@ }% -\fi -\def\hideoutput{% - \tracingoutput\z@ - \showboxbreadth\m@ne - \showboxdepth\m@ne - \tracingonline\m@ne +\def\@kernel@rename@newcommand#1#2{% + \robust@command@chk@safe#2% + {\@if@newcommand#2% + {\afterassignment\global + \global\@copy@newcommand#1#2% + \global\let#2\@undefined + \global\expandafter\let\csname\string#2\endcsname\@undefined}% + {\global\let#1=#2}}% + {\global\let#1=#2}} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}{\MakeRobust}{\MakeRobust}% +\def\MakeRobust#1{% + \@ifundefined{\expandafter\@gobble\string#1}{% + \@latex@error{The control sequence `\string#1' is undefined!% + \MessageBreak There is nothing here to make robust}% + \@eha + }% + {% + \@ifundefined{\expandafter\@gobble\string#1\space}% + {% + \global\expandafter\let\csname + \expandafter\@gobble\string#1\space\endcsname=#1% + \edef\reserved@a{\string#1}% + \def\reserved@b{#1}% + \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% + \xdef#1{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect\noexpand#1% + \fi + \noexpand\protect\expandafter\noexpand + \csname\expandafter\@gobble\string#1\space\endcsname}% + }% + {\@latex@info{The control sequence `\string#1' is already robust}}% + }% }% +\let\@kernel@rename@newcommand\@undefined \EndIncludeInRelease -\IncludeInRelease{0000/00/00}{\tracingnone}% - {turn off etex tracing}% -\let\tracingnone\@undefined -\let\hideoutput\@undefined +\IncludeInRelease{2015/01/01}{\MakeRobust}{\MakeRobust}% +\def\MakeRobust#1{% + \@ifundefined{\expandafter\@gobble\string#1}{% + \@latex@error{The control sequence `\string#1' is undefined!% + \MessageBreak There is nothing here to make robust}% + \@eha + }% + {% + \@ifundefined{\expandafter\@gobble\string#1\space}% + {% + \expandafter\let\csname + \expandafter\@gobble\string#1\space\endcsname=#1% + \edef\reserved@a{\string#1}% + \def\reserved@b{#1}% + \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}% + \edef#1{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect\noexpand#1% + \fi + \noexpand\protect\expandafter\noexpand + \csname\expandafter\@gobble\string#1\space\endcsname}% + }% + {\@latex@info{The control sequence `\string#1' is already robust}}% + }% +}% +\let\@kernel@rename@newcommand\@undefined \EndIncludeInRelease -%%% From File: ltfssdcl.dtx -%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf, -%% all rights reserved. -\IncludeInRelease{2015/01/01} - {\select@group}{\select@group}% -\def\select@group#1#2#3#4{% - \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi - {% - \ifmmode - \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top - \begingroup - \escapechar\m@ne - \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% - \globaldefs\@ne \math@fonts - \endgroup - \init@restore@version - \xdef#1{\noexpand\use@mathgroup\noexpand#2% - {\number\csname c@mv@\math@version\endcsname}}% - \global\advance\csname c@mv@\math@version\endcsname\@ne - \else - \let#1\relax - \@latex@error{Too many math alphabets used in - version \math@version}% - \@eha - \fi - \else \expandafter\non@alpherr\fi - #1{#4}% - }% -} +\IncludeInRelease{0000/00/00}{\MakeRobust}{\MakeRobust}% +\let\MakeRobust\@undefined +\let\@kernel@rename@newcommand\@undefined \EndIncludeInRelease -\IncludeInRelease{0000/00/00} - {\select@group}{\select@group}% -\def\select@group#1#2#3#4{% - \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi - {% - \ifmmode - \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n - \begingroup - \escapechar\m@ne - \getanddefine@fonts - {\csname c@mv@\math@version\endcsname}#3% - \globaldefs\@ne \math@fonts - \endgroup - \init@restore@version - \xdef#1{\noexpand\use@mathgroup\noexpand#2% - {\number\csname c@mv@\math@version\endcsname}}% - \global\advance\csname c@mv@\math@version\endcsname\@ne - \else - \let#1\relax - \@latex@error{Too many math alphabets used in - version \math@version}% - \@eha - \fi - \else \expandafter\non@alpherr\fi - #1{#4}% - }% +\IncludeInRelease{2020/10/01}% + {\kernel@make@fragile}{Undo robustness}% +\def\kernel@make@fragile#1{% + \@ifundefined{\expandafter\@gobble\string#1\space}% + {}% + {% + \global\expandafter\let\expandafter #1\csname + \expandafter\@gobble\string#1\space\endcsname + \expandafter\@kernel@rename@newcommand + \csname\expandafter\@gobble\string#1\expandafter\endcsname + \csname\expandafter\@gobble\string#1\space\endcsname + \global\expandafter\let\csname + \expandafter\@gobble\string#1\space\endcsname\@undefined + }% } \EndIncludeInRelease -\IncludeInRelease{2020/10/01} - {\document@select@group}{\document@select@group}% -\def\document@select@group#1#2#3#4{% - \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi - {% - \ifmmode - \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top - \begingroup - \escapechar\m@ne - \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% - \globaldefs\@ne \math@fonts - \endgroup - \expandafter\extract@alph@from@version - \csname mv@\math@version\expandafter\endcsname - \expandafter{\number\csname - c@mv@\math@version\endcsname}% - #1% - \global\advance\csname c@mv@\math@version\endcsname\@ne - \else - \let#1\relax - \@latex@error{Too many math alphabets used - in version \math@version}% - \@eha - \fi - \else \expandafter\non@alpherr\fi - \expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi - }% +\IncludeInRelease{0000/00/00}% + {\kernel@make@fragile}{Undo robustness}% +\def\kernel@make@fragile#1{% + \@ifundefined{\expandafter\@gobble\string#1\space}% + {}% + {% + \global\expandafter\let\expandafter #1\csname + \expandafter\@gobble\string#1\space\endcsname + \global\expandafter\let\csname + \expandafter\@gobble\string#1\space\endcsname\@undefined + }% } \EndIncludeInRelease -\IncludeInRelease{2015/01/01} - {\document@select@group}{\document@select@group}% - -\def\document@select@group#1#2#3#4{% - \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi - {% - \ifmmode - \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top - \begingroup - \escapechar\m@ne - \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% - \globaldefs\@ne \math@fonts - \endgroup - \expandafter\extract@alph@from@version - \csname mv@\math@version\expandafter\endcsname - \expandafter{\number\csname - c@mv@\math@version\endcsname}% - #1% - \global\advance\csname c@mv@\math@version\endcsname\@ne - \else - \let#1\relax - \@latex@error{Too many math alphabets used - in version \math@version}% - \@eha +\IncludeInRelease{2020-10-01}{\robust@command@act} + {Add \robust@command@act}% +\long\def\robust@command@act#1#2#3#4{% + \robust@command@chk@safe#2% + {\expandafter\robust@command@act@loop + \expandafter#2% + #1{\@nnil\@nnil}% + \robust@command@act@end}% + {\robust@command@act@end}% + {#3}{#4}}% +\long\def\robust@command@act@loop#1#2{\robust@command@act@loop@aux#1#2} +\long\def\robust@command@act@loop@aux#1#2#3{% + \ifx\@nnil#2% + \else + #2{#1}% + {\robust@command@act@do{#3}}% + {\expandafter\robust@command@act@loop\expandafter#1}% + \fi} +\long\def\robust@command@act@do#1% + \fi#2% + \robust@command@act@end#3#4{% \fi - \else \expandafter\non@alpherr\fi - #1{#4}% - }% -} + #1#4} +\long\def\robust@command@act@end#1#2{#1#2} +\long\def\robust@command@chk@safe#1{% + \begingroup + \escapechar=`\\ + \expandafter\endgroup\expandafter + \robust@command@act@chk@args\meaning#1:->\@nil} +\def\robust@command@act@chk@args#1:->#2\@nil{% + \@expl@str@if@eq@@nnTF{#1}{macro}% + {\@firstoftwo}% + {\@expl@str@if@eq@@nnTF{#1}{\protected macro}% + {\@firstoftwo}% + {\@secondoftwo}}} \EndIncludeInRelease - -\IncludeInRelease{0000/00/00} - {\document@select@group}{\document@select@group}% - -\def\document@select@group#1#2#3#4{% - \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi - {% - \ifmmode - \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n - \begingroup - \escapechar\m@ne - \getanddefine@fonts - {\csname c@mv@\math@version\endcsname}#3% - \globaldefs\@ne \math@fonts - \endgroup - \expandafter\extract@alph@from@version - \csname mv@\math@version\expandafter\endcsname - \expandafter{\number\csname - c@mv@\math@version\endcsname}% - #1% - \global\advance\csname c@mv@\math@version\endcsname\@ne - \else - \let#1\relax - \@latex@error{Too many math alphabets used - in version \math@version}% - \@eha - \fi - \else \expandafter\non@alpherr\fi - #1{#4}% - }% -} +\IncludeInRelease{0000-00-00}{\robust@command@act} + {Add \robust@command@act}% +\let\robust@command@act\@undefined +\let\robust@command@act@loop\@undefined +\let\robust@command@act@loop@aux\@undefined +\let\robust@command@act@do\@undefined +\let\robust@command@act@end\@undefined +\let\robust@command@chk@safe\@undefined +\let\robust@command@act@chk@args\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020-10-01}{\DeclareCommandCopy} + {Add \NewCommandCopy, \RenewCommandCopy, and \DeclareCommandCopy}% +\def\NewCommandCopy{% + \declare@commandcopy + {\@firstofone}% + {\@firstoftwo\@notdefinable}} +\def\RenewCommandCopy{% + \declare@commandcopy + {\@latex@error{Command \@backslashchar\reserved@a\space undefined}\@ehc + \@firstofone}% + {\@firstofone}} +\def\DeclareCommandCopy{% + \declare@commandcopy + {\@firstofone}% + {\@firstofone}} +\long\def\declare@commandcopy#1#2#3#4{% + \edef\reserved@a{\@expl@cs@to@str@@N#3}% + \@ifundefined\reserved@a{#1}{#2}% + {\robust@command@act + \@declarecommandcopylisthook#4% + \declare@commandcopy@let{#3#4}}} +\def\@declarecommandcopylisthook{% + {\@if@DeclareRobustCommand \@copy@DeclareRobustCommand}% + {\@if@newcommand \@copy@newcommand}} +\long\def\declare@commandcopy@let#1#2{\let#1=#2\relax} +\EndIncludeInRelease +\IncludeInRelease{0000-00-00}{\DeclareCommandCopy} + {Undefine \NewCommandCopy, \RenewCommandCopy, and \DeclareCommandCopy}% +\let\NewCommandCopy\@undefined +\let\RenewCommandCopy\@undefined +\let\DeclareCommandCopy\@undefined +\let\declare@commandcopy\@undefined +\let\@declarecommandcopylisthook\@undefined +\let\declare@commandcopy@let\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020-10-01}{\ShowCommand}% + {Add \ShowCommand}% +\long\def\ShowCommand#1{% + \robust@command@act + \@showcommandlisthook#1% + \show#1} +\def\@showcommandlisthook{% + {\@if@DeclareRobustCommand \@show@DeclareRobustCommand}% + {\@if@newcommand \@show@newcommand}} +\EndIncludeInRelease +\IncludeInRelease{0000-00-00}{\ShowCommand} + {Undefine \ShowCommand}% +\let\ShowCommand\@undefined +\let\@showcommandlisthook\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020-10-01}{\@if@DeclareRobustCommand} + {Add \@if@DeclareRobustCommand, \@if@newcommand, + \@copy@DeclareRobustCommand, \@copy@newcommand, + \@show@DeclareRobustCommand, \@show@newcommand}% +\long\def\@if@DeclareRobustCommand#1{% + \begingroup + \escapechar=`\\ + \edef\reserved@a{\string#1}% + \edef\reserved@b{\detokenize{#1}}% + \xdef\@gtempa{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect + \noexpand#1% + \fi + \noexpand\protect + \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname}% + \endgroup + \ifx\@gtempa#1\relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\long\def\@copy@DeclareRobustCommand#1#2{% + \begingroup + \escapechar=`\\ + \edef\reserved@a{\string#1}% + \edef\reserved@b{\detokenize{#1}}% + \edef\reserved@a{% + \endgroup + \def\noexpand#1{% + \ifx\reserved@a\reserved@b + \noexpand\x@protect + \noexpand#1% + \fi + \noexpand\protect + \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname}% + \noexpand\copy@kernel@robust@command + \expandafter\noexpand\csname\@expl@cs@to@str@@N#1 \endcsname + \expandafter\noexpand\csname\@expl@cs@to@str@@N#2 \endcsname}% + \reserved@a} +\long\def\copy@kernel@robust@command#1#2{% + \robust@command@chk@safe#2% + {\@if@newcommand#2% + {\@copy@newcommand}% + {\declare@commandcopy@let}} + {\declare@commandcopy@let}% + #1#2} +\long\def\@show@DeclareRobustCommand#1{% + \typeout{> \string#1=robust macro:}% + \typeout{->\@expl@cs@replacement@spec@@N#1.^^J}% + \expandafter\show@kernel@robust@command + \csname\@expl@cs@to@str@@N#1 \endcsname} +\long\def\show@kernel@robust@command#1{% + \robust@command@chk@safe#1% + {\@if@newcommand#1% + {\@show@newcommand}% + {\show}}% + {\show}% + #1} +\long\def\@if@newcommand#1{% + \edef\reserved@a{% + \noexpand\@protected@testopt + \noexpand#1% + \expandafter\noexpand\csname\@backslashchar\@expl@cs@to@str@@N#1\endcsname}% + \edef\reserved@b{% + \unexpanded\expandafter\expandafter\expandafter + {\expandafter\@carcube#1{}{}{}\@nil}}% + \ifx\reserved@a\reserved@b + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi} +\long\def\@copy@newcommand#1#2{% + \edef#1{\noexpand\@protected@testopt + \noexpand#1% + \expandafter\noexpand\csname\@backslashchar\@expl@cs@to@str@@N#1\endcsname + \unexpanded\expandafter\expandafter\expandafter + {\expandafter\@gobblethree#2}}% + \expandafter + \let\csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname + \csname\@backslashchar\@expl@cs@to@str@@N#2\endcsname} +\long\def\@show@newcommand#1{% + \typeout{> \string#1=robust macro:}% + \typeout{->\@expl@cs@replacement@spec@@N#1.^^J}% + \expandafter\@show@newcommand@aux + \csname\@backslashchar\@expl@cs@to@str@@N#1\expandafter\endcsname + \expandafter{#1}} +\long\def\@show@newcommand@aux#1#2{% + \typeout{> \string#1=\@expl@cs@prefix@spec@@N#1macro:}% + \edef\reserved@a{% + default \string##1=\expandafter\detokenize\@gobblethree#2.^^J% + \@expl@cs@argument@spec@@N#1->\@expl@cs@replacement@spec@@N#1}% + \showtokens\expandafter\expandafter\expandafter{\expandafter\reserved@a}} +\EndIncludeInRelease +\IncludeInRelease{0000-00-00}{\@if@DeclareRobustCommand} + {Undefine \@if@DeclareRobustCommand, \@if@newcommand, + \@copy@DeclareRobustCommand, \@copy@newcommand, + \@show@DeclareRobustCommand, \@show@newcommand}% +\let\@if@DeclareRobustCommand\@undefined +\let\@copy@DeclareRobustCommand\@undefined +\let\@show@DeclareRobustCommand\@undefined +\let\@if@newcommand\@undefined +\let\@copy@newcommand\@undefined +\let\@show@newcommand\@undefined +\let\copy@kernel@robust@command\@undefined +\let\show@kernel@robust@command\@undefined +\let\@show@newcommand@aux\@undefined \EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {DeclareMathAccent}{Make math accents robust}% -\def\DeclareMathAccent#1#2#3#4{% - \expandafter\in@\csname sym#3\expandafter\endcsname - \expandafter{\group@list}% - \ifin@ - \begingroup - \count\z@=#4\relax - \count\tw@\count\z@ - \divide\count\z@\sixt@@n - \count@\count\z@ - \multiply\count@\sixt@@n - \advance\count\tw@-\count@ - \if\relax\noexpand#1% is command? - \edef\reserved@a{\noexpand\in@ - {\expandafter\@gobble\string\mathaccent} - {\expandafter\meaning - \csname\expandafter\@gobble\string#1\space\endcsname}}% - \reserved@a - \ifin@ - \expandafter\let - \csname\expandafter\@gobble\string#1\space\endcsname - \@undefined - \expandafter\set@mathaccent - \csname sym#3\endcsname#1#2% - {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% - \@font@info{Redeclaring math accent \string#1}% - \else - \expandafter\ifx - \csname\expandafter\@gobble\string#1\endcsname - \relax - \expandafter\set@mathaccent - \csname sym#3\endcsname#1#2% - {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% - \else - \@latex@error{Command `\string#1' already defined}\@eha - \fi - \fi - \else - \@latex@error{Not a command name: `\noexpand#1'}\@eha - \fi - \endgroup +\IncludeInRelease{2018-04-01}{\@ifundefined} +{Leave commands undefined in \@ifundefined}% +\def\@ifundefined#1{% + \ifcsname#1\endcsname\@ifundefin@d@i\else\@ifundefin@d@ii\fi{#1}} +\long\def\@ifundefin@d@i#1\fi#2{\fi + \expandafter\ifx\csname #2\endcsname\relax + \@ifundefin@d@ii + \fi + \@secondoftwo} +\long\def\@ifundefin@d@ii\fi#1#2#3{\fi #2} +\ifx\numexpr\@undefined +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo \else - \@latex@error{Symbol font `#3' is not defined}\@eha + \expandafter\@secondoftwo + \fi} +\else\ifx\directlua\@undefined +\else +\def\@ifundefined#1{% + \ifcsname#1\endcsname + \expandafter\ifx\lastnamedcs\relax\else\@ifundefin@d@i\fi \fi -} + \@firstoftwo} +\long\def\@ifundefin@d@i#1#2#3#4#5{#1#2#5} +\fi +\fi \EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {DeclareMathAccent}{Make math accents robust}% -\def\DeclareMathAccent#1#2#3#4{% - \expandafter\in@\csname sym#3\expandafter\endcsname - \expandafter{\group@list}% - \ifin@ - \begingroup - \count\z@=#4\relax - \count\tw@\count\z@ - \divide\count\z@\sixt@@n - \count@\count\z@ - \multiply\count@\sixt@@n - \advance\count\tw@-\count@ - \if\relax\noexpand#1% is command? - \edef\reserved@a{\noexpand\in@ - {\expandafter\@gobble\string\mathaccent}{\meaning#1}}% - \reserved@a - \ifin@ - \expandafter\set@mathaccent - \csname sym#3\endcsname#1#2% - {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% - \@font@info{Redeclaring math accent \string#1}% - \else - \expandafter\ifx - \csname\expandafter\@gobble\string#1\endcsname - \relax - \expandafter\set@mathaccent - \csname sym#3\endcsname#1#2% - {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% - \else - \@latex@error{Command `\string#1' already defined}\@eha - \fi - \fi - \else - \@latex@error{Not a command name: `\noexpand#1'}\@eha - \fi - \endgroup +\IncludeInRelease{0000-00-00}{\@ifundefined} +{Leave commands undefined in \@ifundefined}% +\def\@ifundefined#1{% + \expandafter\ifx\csname#1\endcsname\relax + \expandafter\@firstoftwo \else - \@latex@error{Symbol font `#3' is not defined}\@eha - \fi -} + \expandafter\@secondoftwo + \fi} \EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\set@mathaccent}{makemath accents robust}% -\def\set@mathaccent#1#2#3#4{% - \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}% - \MakeRobust#2% +\IncludeInRelease{2020/10/01}{\string@makeletter} + {Add \string@makeletter}% +\def\string@makeletter#1{% + \@expl@str@map@function@@NN#1\@string@makeletter} +\def\@string@makeletter#1{% + \char@if@alph{#1}% + {\@expl@char@generate@@nn{`#1}{11}}% + {#1}} +\def\char@if@alph#1{% + \ifnum0\ifnum`#1<`A 1\fi\ifnum`#1>`z 1\fi + \if\ifnum`#1>`Z @\fi\ifnum`#1<`a @\fi01\fi>0 + \expandafter\@secondoftwo + \else + \expandafter\@firstoftwo + \fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\string@makeletter} + {Undefine \string@makeletter}% +\let\string@makeletter\@undefined +\let\@string@makeletter\@undefined +\let\char@if@alph\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}{\-}{Use primitive \- in Lua\LaTeX}% +\ifx\directlua\@undefined + \DeclareRobustCommand{\-}{% + \discretionary{% + \char \ifnum\hyphenchar\font<\z@ + \defaulthyphenchar + \else + \hyphenchar\font + \fi + }{}{}% + } +\else + \let\-\@@hyph +\fi +\EndIncludeInRelease +\IncludeInRelease{2017/04/15}{\-}{Use \hyphenchar in \-}% +\DeclareRobustCommand{\-}{% + \discretionary{% + \char \ifnum\hyphenchar\font<\z@ + \defaulthyphenchar + \else + \hyphenchar\font + \fi + }{}{}% } -\@onlypreamble\set@mathaccent \EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\set@mathaccent}{makemath accents robust}% - -\def\set@mathaccent#1#2#3#4{% - \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}} - +\IncludeInRelease{0000/00/00}{\-}{Use \hyphenchar in \-}% +\def\-{\discretionary{-}{}{}} \EndIncludeInRelease +\let\@dischyph=\- \IncludeInRelease{2019/10/01}% - {\set@mathdelimiter}{make delimiters robust}% -\def\set@mathdelimiter#1#2#3#4#5#6{% - \protected - \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5% - \hexnumber@#2#6 }% -} -\@onlypreamble\set@mathdelimiter + {\allowbreak}{Make various commands robust}% +\MakeRobust\allowbreak +\MakeRobust\bigbreak +\MakeRobust\break +\MakeRobust\dotfill +\MakeRobust\frenchspacing +\MakeRobust\goodbreak +\MakeRobust\hrulefill +\MakeRobust\medbreak +\MakeRobust\nobreak +\MakeRobust\nonfrenchspacing +\MakeRobust\obeylines +\MakeRobust\obeyspaces +\MakeRobust\slash +\MakeRobust\smallbreak +\MakeRobust\strut +\MakeRobust\underbar \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\set@mathdelimiter}{make delimiters robust}% - -\def\set@mathdelimiter#1#2#3#4#5#6{% - \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5% - \hexnumber@#2#6 }} + {\allowbreak}{Make various commands robust}% -\EndIncludeInRelease -%%% From File: ltfssini.dtx -%% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf, -%% all rights reserved. -\IncludeInRelease{2020/02/02}% - {\DeclareFontSeriesDefault}{Custom series}% -\let\DeclareFontSeriesDefault\@undefined % for rollback -\newcommand\DeclareFontSeriesDefault[3][]{% - \def\reserved@a{#1}% - \ifx\reserved@a\@empty - \ifcsname #2series\endcsname % supported are - % \[md/bf]default - \expandafter\def - \csname #2default\endcsname{#3\@empty}% - \expandafter\def - \csname #2default@previous\endcsname{#3\@empty}% - \else - \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% - {Mandatory first argument must be 'md' or 'bf'.} - \fi - \else - \ifcsname #2series@#1\endcsname % supported are - % \[md/bf]series@[rm/sf/tt] - \expandafter\edef - \csname #2series@#1\endcsname{#3}% - \expandafter\let - \csname #2series@#1@kernel\endcsname\@undefined +\kernel@make@fragile\allowbreak +\kernel@make@fragile\bigbreak +\kernel@make@fragile\break +\kernel@make@fragile\dotfill +\kernel@make@fragile\frenchspacing +\kernel@make@fragile\goodbreak +\kernel@make@fragile\hrulefill +\kernel@make@fragile\medbreak +\kernel@make@fragile\nobreak +\kernel@make@fragile\nonfrenchspacing +\kernel@make@fragile\obeylines +\kernel@make@fragile\obeyspaces +\kernel@make@fragile\slash +\kernel@make@fragile\smallbreak +\kernel@make@fragile\strut +\kernel@make@fragile\underbar + +\EndIncludeInRelease +%% +%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach, +%% Phelype Oleinik & LaTeX Team +%%% From File: lthooks.dtx +\def\lthooksversion{v1.0h} +\def\lthooksdate{2021/01/07} +\IncludeInRelease{2020/10/01}% + {\NewHook}{The hook management}% +\ExplSyntaxOn +\bool_new:N \g__hook_debug_bool +\cs_new_eq:NN \__hook_debug:n \use_none:n +\cs_new_protected:Npn \hook_debug_on: + { + \bool_gset_true:N \g__hook_debug_bool + \__hook_debug_gset: + } +\cs_new_protected:Npn \hook_debug_off: + { + \bool_gset_false:N \g__hook_debug_bool + \__hook_debug_gset: + } +\cs_new_protected:Npn \__hook_debug_gset: + { + \cs_gset_protected:Npx \__hook_debug:n ##1 + { \bool_if:NT \g__hook_debug_bool {##1} } + } +\cs_new_eq:NN \__hook_str_compare:nn \__str_if_eq:nn +\bool_new:N \l__hook_tmpa_bool +\tl_new:N \l__hook_return_tl +\tl_new:N \l__hook_tmpa_tl +\tl_new:N \l__hook_tmpb_tl +\seq_new:N \g__hook_all_seq +\tl_new:N \g__hook_removal_list_tl +\tl_new:N \l__hook_cur_hook_tl +\prop_new:N \l__hook_work_prop +\prop_new:N \g__hook_execute_immediately_prop +\prop_new:N \g__hook_used_prop +\tl_new:N \g__hook_hook_curr_name_tl +\seq_new:N \g__hook_name_stack_seq +\cs_new_eq:NN \__hook_tmp:w ? +\cs_generate_variant:Nn \tl_gremove_once:Nn { Nx } +\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 + { + \hook_if_exist:nTF {#1} + { \msg_error:nnn { hooks } { exists } {#1} } + { + \seq_gput_right:Nn \g__hook_all_seq {#1} + \tl_new:c { __hook~#1 } + \__hook_declare:n {#1} + \clist_new:c {g__hook_#1_labels_clist} + \tl_new:c { g__hook_#1_reversed_tl } + \__hook_include_legacy_code_chunk:n {#1} + } + } +\cs_new_protected:Npn \__hook_declare:n #1 + { + \__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 } + } + } +\cs_new_protected:Npn \hook_new_reversed:n #1 + { \__hook_normalize_hook_args:Nn \__hook_new_reversed:n {#1} } +\cs_new_protected:Npn \__hook_new_reversed:n #1 + { + \__hook_new:n {#1} + \tl_gset:cn { g__hook_#1_reversed_tl } { - } + } +\cs_new_protected:Npn \hook_new_pair:nn #1#2 + { \hook_new:n {#1} \hook_new_reversed:n {#2} } +\cs_new_protected:Npn \__hook_include_legacy_code_chunk:n #1 + { + \tl_if_exist:cT { @#1hook } + { + \tl_if_empty:cF { @#1hook } + { + \exp_args:Nnnv \__hook_hook_gput_code_do:nnn {#1} + { legacy } { @#1hook } + \__hook_tl_gclear:c { @#1hook } + } + } + } +\cs_new:Npn \__hook_parse_label_default:n #1 + { + \tl_if_novalue:nTF {#1} + { \__hook_currname_or_default: } + { \tl_trim_spaces_apply:nN {#1} \__hook_parse_dot_label:n } + } +\cs_new:Npn \__hook_parse_dot_label:n #1 + { + \tl_if_empty:nTF {#1} + { + \msg_expandable_error:nn { hooks } { empty-label } + \__hook_currname_or_default: + } + { + \str_if_eq:nnTF {#1} { . } + { \__hook_currname_or_default: } + { \__hook_parse_dot_label:w #1 ./ \s__hook_mark } + } + } +\cs_new:Npn \__hook_parse_dot_label:w #1 ./ #2 \s__hook_mark + { + \tl_if_empty:nTF {#1} + { \__hook_parse_dot_label_aux:w #2 \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: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 + { + \msg_expandable_error:nnn { hooks } { should-not-happen } + { Empty~default~label. } + \__hook_make_name:n { label-missing } + } + { \@currname } + } + { \g__hook_hook_curr_name_tl } + } +\cs_new:Npn \__hook_make_name:n #1 + { + \exp_after:wN \exp_after:wN \exp_after:wN \__hook_make_name:w + \exp_after:wN \token_to_str:N \cs:w __hook~ #1 \cs_end: + } +\exp_last_unbraced:NNNNo +\cs_new:Npn \__hook_make_name:w #1 \tl_to_str:n { __hook~ } { } +\cs_new_protected:Npn \__hook_normalize_hook_args_aux:Nn #1 #2 + { + \group_begin: + \use:e + { + \group_end: + \exp_not:N #1 #2 + } + } +\cs_new_protected:Npn \__hook_normalize_hook_args:Nn #1 #2 + { + \__hook_normalize_hook_args_aux:Nn #1 + { { \__hook_parse_label_default:n {#2} } } + } +\cs_new_protected:Npn \__hook_normalize_hook_args:Nnn #1 #2 #3 + { + \__hook_normalize_hook_args_aux:Nn #1 + { + { \__hook_parse_label_default:n {#2} } + { \__hook_parse_label_default:n {#3} } + } + } +\cs_new_protected:Npn \__hook_normalize_hook_rule_args:Nnnnn #1 #2 #3 #4 #5 + { + \__hook_normalize_hook_args_aux:Nn #1 + { + { \__hook_parse_label_default:n {#2} } + { \__hook_parse_label_default:n {#3} } + { \tl_trim_spaces:n {#4} } + { \__hook_parse_label_default:n {#5} } + } + } +\cs_new_protected:Npn \hook_gput_code:nnn #1 #2 + { \__hook_normalize_hook_args:Nnn \__hook_gput_code:nnn {#1} {#2} } +\cs_new_protected:Npn \__hook_gput_code:nnn #1 #2 #3 + { + \prop_if_in:NnTF \g__hook_execute_immediately_prop {#1} + {#3} + { + \__hook_if_marked_removal:nnTF {#1} {#2} + { \__hook_unmark_removal:nn {#1} {#2} } + { + \hook_if_exist:nTF {#1} + { + \__hook_hook_gput_code_do:nnn {#1} {#2} {#3} + \__hook_update_hook_code:n {#1} + } + { \__hook_try_declaring_generic_hook:nnn {#1} {#2} {#3} } + } + } + } +\cs_generate_variant:Nn \__hook_gput_code:nnn { nxv } +\cs_new_protected:Npn \__hook_hook_gput_code_do:nnn #1 #2 #3 + { + \__hook_debug:n{\iow_term:x{****~ Add~ to~ + \hook_if_exist:nF {#1} { undeclared~ } + hook~ #1~ (#2) + \on@line\space <-~ \tl_to_str:n{#3}} } + \str_if_eq:nnTF {#2} { top-level } + { + \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} } + } + } +\cs_new_protected:Npn \__hook_gput_undeclared_hook:nnn #1 #2 #3 + { + \__hook_declare:n {#1} + \__hook_hook_gput_code_do:nnn {#1} {#2} {#3} + } +\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nnn #1 + { + \__hook_try_declaring_generic_hook:nNNnn {#1} + \hook_gput_code:nnn \__hook_gput_undeclared_hook:nnn + } +\cs_new_protected:Npn \__hook_try_declaring_generic_next_hook:nn #1 + { + \__hook_try_declaring_generic_hook:nNNnn {#1} + \hook_gput_next_code:nn \__hook_gput_next_do:nn + } +\cs_new_protected:Npn \__hook_try_declaring_generic_hook:nNNnn #1 + { + \__hook_if_file_hook:wTF #1 / / \s__hook_mark + { + \exp_args:Ne \__hook_try_declaring_generic_hook_split:nNNnn + { \exp_args:Ne \__hook_file_hook_normalize:n {#1} } + } + { \__hook_try_declaring_generic_hook_split:nNNnn {#1} } + } +\cs_new_protected:Npn \__hook_try_declaring_generic_hook_split:nNNnn #1 #2 #3 + { + \__hook_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} + { #2 } + { #3 } {#1} + } +\prg_new_protected_conditional:Npnn \__hook_try_declaring_generic_hook:wn + #1 / #2 / #3 / #4 \scan_stop: #5 { TF } + { + \tl_if_empty:nTF {#2} + { \prg_return_false: } + { + \prop_if_in:NnTF \c__hook_generics_prop {#1} + { + \hook_if_exist:nF {#5} { \hook_new:n {#5} } + \prop_if_in:NnTF \c__hook_generics_reversed_ii_prop {#2} + { \tl_gset:cn { g__hook_#5_reversed_tl } { - } } + { + \prop_if_in:NnT \c__hook_generics_reversed_iii_prop {#3} + { \tl_gset:cn { g__hook_#5_reversed_tl } { - } } + } + \prg_return_true: + } + { \prg_return_false: } + } + } +\prg_new_conditional:Npnn \__hook_if_file_hook:w + #1 / #2 / #3 \s__hook_mark { TF } + { + \str_if_eq:nnTF {#1} { file } + { + \bool_lazy_or:nnTF + { \tl_if_empty_p:n {#3} } + { \str_if_eq_p:nn {#3} { / } } + { \prg_return_false: } + { + \prop_if_in:NnTF \c__hook_generics_file_prop {#2} + { \prg_return_true: } + { \prg_return_false: } + } + } + { \prg_return_false: } + } +\cs_new:Npn \__hook_file_hook_normalize:n #1 + { \__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/#3 // #4 \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=} +\prop_const_from_keyval:Nn \c__hook_generics_reversed_ii_prop {after=,end=} +\prop_const_from_keyval:Nn \c__hook_generics_reversed_iii_prop {after=} +\prop_const_from_keyval:Nn \c__hook_generics_file_prop {before=,after=} +\cs_new_protected:Npn \hook_gremove_code:nn #1 #2 + { \__hook_normalize_hook_args:Nnn \__hook_gremove_code:nn {#1} {#2} } +\cs_new_protected:Npn \__hook_gremove_code:nn #1 #2 + { + \__hook_if_exist:nTF {#1} + { + \str_if_eq:nnTF {#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} } + } + { \__hook_mark_removal:nn {#1} {#2} } + } +\cs_new_protected:Npn \__hook_gremove_code_do:nn #1 #2 + { \prop_gremove:cn { g__hook_#1_code_prop } {#2} } +\cs_new_protected:Npn \__hook_mark_removal:nn #1 #2 + { + \tl_gput_right:Nx \g__hook_removal_list_tl + { \__hook_removal_tl:nn {#1} {#2} } + } +\cs_new_protected:Npn \__hook_unmark_removal:nn #1 #2 + { + \tl_gremove_once:Nx \g__hook_removal_list_tl + { \__hook_removal_tl:nn {#1} {#2} } + } +\prg_new_protected_conditional:Npnn \__hook_if_marked_removal:nn #1 #2 { TF } + { + \exp_args:NNx \tl_if_in:NnTF \g__hook_removal_list_tl + { \__hook_removal_tl:nn {#1} {#2} } + { \prg_return_true: } { \prg_return_false: } + } +\cs_new:Npn \__hook_removal_tl:nn #1 #2 + { & \tl_to_str:n {#2} $ \tl_to_str:n {#1} $ } +\prop_new:c {g__hook_??_code_prop} +\prop_new:c {__hook~??} +\tl_new:c {g__hook_??_reversed_tl} +\cs_new_protected:Npn \hook_gset_rule:nnnn #1#2#3#4 + { + \__hook_normalize_hook_rule_args:Nnnnn \__hook_gset_rule:nnnn + {#1} {#2} {#3} {#4} + } +\cs_new_protected:Npn \__hook_gset_rule:nnnn #1#2#3#4 + { + \__hook_declare:n {#1} + \__hook_rule_gclear:nnn {#1} {#2} {#4} + \cs_if_exist_use:cTF { __hook_rule_#3_gset:nnn } + { + {#1} {#2} {#4} + \__hook_update_hook_code:n {#1} + } + { \msg_error:nnnnnn { hooks } { unknown-rule } + {#1} {#2} {#3} {#4} } + } +\cs_new_protected:Npn \__hook_rule_before_gset:nnn #1#2#3 + { + \__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 + { + \__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 + { + \__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 + { \__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 + { \__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 } } +\cs_new:Npn \__hook_label_pair:nn #1#2 + { + \if_case:w \__hook_str_compare:nn {#1} {#2} \exp_stop_f: + #1 | #1 % 0 + \or: #1 | #2 % +1 + \else: #2 | #1 % -1 + \fi: + } +\prg_new_conditional:Npnn \__hook_label_ordered:nn #1#2 { TF } + { + \if_int_compare:w \__hook_str_compare:nn {#1} {#2} > 0 \exp_stop_f: + \prg_return_true: \else - \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% - {Optional argument must be 'rm', 'sf', or 'tt'. \MessageBreak - Mandatory first argument must be 'md' or 'bf'.} - \fi - \fi -} - -\def\bfseries@rm{bx} -\def\bfseries@sf{bx} -\def\bfseries@tt{bx} -\let\bfseries@rm@kernel\bfseries@rm -\let\bfseries@sf@kernel\bfseries@sf -\let\bfseries@tt@kernel\bfseries@tt -\def\mdseries@rm{m} -\def\mdseries@sf{m} -\def\mdseries@tt{m} - -\def\@meta@family@list{\@elt{rm}\@elt{sf}\@elt{tt}} -\def\prepare@family@series@update#1#2{% - \if@forced@series - \fontfamily#2% - \else - \expand@font@defaults - \let\target@series@value\@empty - \def\target@meta@family@value{#1}% - \expandafter\edef\csname ??def@ult\endcsname{\f@family}% - \let\@elt\update@series@target@value - \@meta@family@list - \@elt{??}% - \let\@elt\relax - \fontfamily#2% - \ifx\target@series@value\@empty - \else - \ifx \f@series\target@series@value - \else - \maybe@load@fontshape - \series@maybe@drop@one@m\target@series@value\f@series - \fi - \fi - \fi + \prg_return_false: + \fi: + } +\cs_new:Npn \__hook_if_label_case:nnnnn #1#2 + { + \cs:w use_ + \if_case:w \__hook_str_compare:nn {#1} {#2} + i \or: ii \else: iii \fi: :nnn + \cs_end: + } +\cs_new_eq:NN \__hook_update_hook_code:n \use_none:n +\cs_new_protected:Npn \__hook_initialize_all: { + \cs_gset_eq:NN \__hook_update_hook_code:n \__hook_initialize_hook_code:n + \__hook_debug:n { \prop_gclear:N \g__hook_used_prop } + \seq_map_inline:Nn \g__hook_all_seq + { + \__hook_update_hook_code:n {##1} + } + \__hook_debug:n + { \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:} + \prop_map_inline:Nn \g__hook_used_prop + { \iow_term:x{^^J~ ##1~ ->~ + \exp_not:v {__hook~##1}~ } + } + } + \cs_gset_eq:NN \hook_use:n \__hook_use_initialized:n + \cs_gset_eq:NN \__hook_preamble_hook:n \use_none:n } -\def\update@series@target@value#1{% - \def\reserved@a{#1}% - \ifx\target@meta@family@value\reserved@a % rm -> rm do nothing - \else - \expandafter\ifx\csname#1def@ult\endcsname\f@family - \let\@elt\@gobble - \expandafter\let\expandafter\reserved@b - \csname mdseries@\target@meta@family@value\endcsname - \expandafter\let\expandafter\reserved@c - \csname bfseries@\target@meta@family@value\endcsname - \expandafter\series@maybe@drop@one@m - \csname mdseries@#1\endcsname\reserved@d - \ifx\reserved@d\f@series - \let\target@series@value\reserved@b - \else - \expandafter\series@maybe@drop@one@m - \csname bfseries@#1\endcsname\reserved@d - \ifx\reserved@d\f@series - \let\target@series@value\reserved@c - \else\ifx\f@series\mddef@ult \let\target@series@value\reserved@b - \else\ifx\f@series\bfdef@ult \let\target@series@value\reserved@c - \fi\fi\fi\fi - \fi - \fi +\cs_new_protected:Npn \__hook_initialize_hook_code:n #1 + { + \__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} + { + \__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: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: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:ccn + { __hook~#1 } { g__hook_#1_labels_clist } {#1} + \__hook_debug:n{ \exp_args:NNx \prop_gput:Nnn + \g__hook_used_prop {#1}{} } + } + } + } +\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 } +\seq_new:N \l__hook_labels_seq +\int_new:N \l__hook_labels_int +\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: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 {#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} + \__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 + { + \prop_map_inline:Nn \l__hook_work_prop + { + \__hook_if_label_case:nnnnn {##1} {####1} + { \prop_map_break: } + { \__hook_apply_label_pair:nnn {##1} {####1} } + { \__hook_apply_label_pair:nnn {####1} {##1} } + {#3} + } + } + \__hook_debug:n { \__hook_debug_label_data:N \l__hook_work_prop } + \tl_set:Nn \l__hook_rear_tl { 0 } + \tl_set:cn { \__hook_tl_csname:n { 0 } } { 0 } + \seq_map_inline:Nn \l__hook_labels_seq + { + \int_compare:nNnT { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0 + { + \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } }{##1} + \tl_set:Nn \l__hook_rear_tl {##1} + } + } + \tl_set_eq:Nc \l__hook_front_tl { \__hook_tl_csname:n { 0 } } + \__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 + \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 } } + { + \tl_set:cx { \__hook_tl_csname:n {##1} } + { \int_eval:n + { \cs:w \__hook_tl_csname:n {##1} \cs_end: - 1 } + } + \int_compare:nNnT + { \cs:w \__hook_tl_csname:n {##1} \cs_end: } = 0 + { + \tl_set:cn { \__hook_tl_csname:n { \l__hook_rear_tl } } {##1} + \tl_set:Nn \l__hook_rear_tl {##1} + } + } + \tl_set_eq:Nc \l__hook_front_tl + { \__hook_tl_csname:n { \l__hook_front_tl } } + } + \int_compare:nNnF \l__hook_labels_int = 0 + { + \iow_term:x{====================} + \iow_term:x{Error:~ label~ rules~ are~ incompatible:} + \__hook_debug_label_data:N \l__hook_work_prop + \iow_term:x{====================} + } + \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: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} + { + \__hook_label_if_exist_apply:nnnF {#1} {#2} { ?? } { } + } + } +\cs_new_protected:Npn \__hook_label_if_exist_apply:nnnF #1#2#3 + { + \if_cs_exist:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end: + \__hook_apply_rule:nnn {#1} {#2} {#3} + \exp_after:wN \use_none:n + \else: + \use:nn + \fi: + } +\cs_new_protected:Npn \__hook_apply_rule:nnn #1#2#3 + { + \cs:w __hook_apply_ + \cs:w g__hook_#3_reversed_tl \cs_end: rule_ + \cs:w g__hook_ #3 _rule_ #1 | #2 _tl \cs_end: :nnn \cs_end: + {#1} {#2} {#3} + } +\cs_new_protected:cpn { __hook_apply_rule_<:nnn } #1#2#3 + { + \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } + \tl_set:cx { \__hook_tl_csname:n {#2} } + { \int_eval:n{ \cs:w \__hook_tl_csname:n {#2} \cs_end: + 1 } } + \seq_put_right:cn{ \__hook_seq_csname:n {#1} }{#2} + } +\cs_new_protected:cpn { __hook_apply_rule_>:nnn } #1#2#3 + { + \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } + \tl_set:cx { \__hook_tl_csname:n {#1} } + { \int_eval:n{ \cs:w \__hook_tl_csname:n {#1} \cs_end: + 1 } } + \seq_put_right:cn{ \__hook_seq_csname:n {#2} }{#1} + } +\cs_new_protected:cpn { __hook_apply_rule_xE:nnn } #1#2#3 + { + \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } + \msg_error:nnnnnn { hooks } { labels-incompatible } + {#1} {#2} {#3} { 1 } + \use:c { __hook_apply_rule_->:nnn } {#1} {#2} {#3} + \use:c { __hook_apply_rule_<-:nnn } {#1} {#2} {#3} + } +\cs_new_protected:cpn { __hook_apply_rule_xW:nnn } #1#2#3 + { + \__hook_debug:n { \__hook_msg_pair_found:nnn {#1} {#2} {#3} } + \msg_warning:nnnnnn { hooks } { labels-incompatible } + {#1} {#2} {#3} { 0 } + } +\cs_new_protected:cpn { __hook_apply_rule_->:nnn } #1#2#3 + { + \__hook_debug:n + { + \__hook_msg_pair_found:nnn {#1} {#2} {#3} + \iow_term:x{--->~ Drop~ '#2'~ code~ from~ + \iow_char:N \\ g__hook_ \l__hook_cur_hook_tl _code_prop ~ + because~ of~ '#1' } + } + \prop_put:Nnn \l__hook_work_prop {#2} { } + } +\cs_new_protected:cpn { __hook_apply_rule_<-:nnn } #1#2#3 + { + \__hook_debug:n + { + \__hook_msg_pair_found:nnn {#1} {#2} {#3} + \iow_term:x{--->~ Drop~ '#1'~ code~ from~ + \iow_char:N \\ g__hook_ \l__hook_cur_hook_tl _code_prop ~ + because~ of~ '#2' } + } + \prop_put:Nnn \l__hook_work_prop {#1} { } + } +\cs_new_eq:cc { __hook_apply_-rule_<:nnn } { __hook_apply_rule_>:nnn } +\cs_new_eq:cc { __hook_apply_-rule_>:nnn } { __hook_apply_rule_<:nnn } +\cs_new_eq:cc { __hook_apply_-rule_<-:nnn } { __hook_apply_rule_<-:nnn } +\cs_new_eq:cc { __hook_apply_-rule_->:nnn } { __hook_apply_rule_->:nnn } +\cs_new_eq:cc { __hook_apply_-rule_xE:nnn } { __hook_apply_rule_xE:nnn } +\cs_new_eq:cc { __hook_apply_-rule_xW:nnn } { __hook_apply_rule_xW:nnn } +\cs_new_protected:Npn \__hook_msg_pair_found:nnn #1#2#3 + { + \iow_term:x{~ \str_if_eq:nnTF {#3} {??} {default} {~normal} ~ + rule~ \__hook_label_pair:nn {#1} {#2}:~ + \use:c { g__hook_#3_rule_ \__hook_label_pair:nn {#1} {#2} _tl } ~ + found} + } +\cs_new_protected:Npn \__hook_debug_label_data:N #1 { + \iow_term:x{Code~ labels~ for~ sorting:} + \iow_term:x{~ \seq_use:Nnnn\l__hook_labels_seq {~and~}{,~}{~and~} } + \iow_term:x{^^J Data~ structure~ for~ label~ rules:} + \prop_map_inline:Nn #1 + { + \iow_term:x{~ ##1~ =~ \tl_use:c{ \__hook_tl_csname:n {##1} }~ ->~ + \seq_use:cnnn{ \__hook_seq_csname:n {##1} }{~->~}{~->~}{~->~} + } + } + \iow_term:x{} } -\def\init@series@setup{% - \ifx\bfseries@rm@kernel\bfseries@rm - \expandafter\in@\expandafter{\rmdefault}% - {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% - \ifin@ \else \def\bfseries@rm{b}\fi\fi - \ifx\bfseries@sf@kernel\bfseries@sf - \expandafter\in@\expandafter{\sfdefault}% - {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% - \ifin@ \else \def\bfseries@sf{b}\fi\fi - \ifx\bfseries@tt@kernel\bfseries@tt - \expandafter\in@\expandafter{\ttdefault}% - {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% - \ifin@ \else \def\bfseries@tt{b}\fi\fi - \reset@font - \ifx\seriesdefault\seriesdefault@kernel - \mdseries - \let\seriesdefault\f@series - \fi -}% -\expandafter\let\csname ver@mweights.sty\endcsname\fmtversion -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\DeclareFontSeriesDefault}{Custom series}% - -\let\DeclareFontSeriesDefault\@undefined -\let\bfseries@rm\@undefined -\let\bfseries@sf\@undefined -\let\bfseries@tt\@undefined -\let\bfseries@rm@kernel\@undefined -\let\bfseries@sf@kernel\@undefined -\let\bfseries@tt@kernel\@undefined -\let\mdseries@rm\@undefined -\let\mdseries@sf\@undefined -\let\mdseries@tt\@undefined -\expandafter\let\csname ver@mweights.sty\endcsname\@undefined - -\let\@meta@family@list\@undefined -\let\prepare@family@series@update\@undefined -\let\update@series@target@value\@undefined - -\let\init@series@setup\relax - +\cs_new_protected:Npn \hook_log:n #1 + { + \cs_set_eq:NN \__hook_log_cmd:x \iow_log:x + \__hook_normalize_hook_args:Nn \__hook_log:nN {#1} \tl_log:x + } +\cs_new_protected:Npn \hook_show:n #1 + { + \cs_set_eq:NN \__hook_log_cmd:x \iow_term:x + \__hook_normalize_hook_args:Nn \__hook_log:nN {#1} \tl_show:x + } +\cs_new_protected:Npn \__hook_log_line:x #1 + { \__hook_log_cmd:x { >~#1 } } +\cs_new_protected:Npn \__hook_log_line_indent:x #1 + { \__hook_log_cmd:x { >~\@spaces #1 } } +\cs_new_protected:Npn \__hook_log:nN #1 #2 + { + \__hook_preamble_hook:n {#1} + \__hook_log_cmd:x { ^^J ->~The~hook~'#1': } + \hook_if_exist:nF {#1} + { \__hook_log_line:x { is~not~declared! } } + \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 } + { \__hook_log_line_indent:x { --- } } + { + \prop_map_inline:cn { g__hook_#1_code_prop } + { \__hook_log_line_indent:x { ##1~->~\tl_to_str:n {##2} } } + } + \__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 } + { --- } + { ->~ \exp_args:Nv \__hook_log_next_code:n { __hook_next~#1 } } + } + \__hook_log_line:x { Rules: } + \bool_set_true:N \l__hook_tmpa_bool + \__hook_list_rules:nn {#1} + { + \bool_set_false:N \l__hook_tmpa_bool + \__hook_log_line_indent:x + { + ##2~ with~ + \str_if_eq:nnT {##3} {??} { default~ } + relation~ ##1 + } + } + \bool_if:NT \l__hook_tmpa_bool + { \__hook_log_line_indent:x { --- } } + \bool_lazy_and:nnTF + { \hook_if_exist_p:n {#1} } + { ! \hook_if_empty_p:n {#1} } + { + \__hook_log_line:x + { + Execution~order + \bool_if:NTF \l__hook_tmpa_bool + { \__hook_if_reversed:nT {#1} { ~(after~reversal) } } + { ~(after~ + \__hook_if_reversed:nT {#1} { reversal~and~ } + applying~rules) + } : + } + #2 % \tl_show:n + { + \@spaces + \clist_if_empty:cTF { g__hook_#1_labels_clist } + { --- } + { \clist_use:cn {g__hook_#1_labels_clist} { ,~ } } + } + } + { + #2 + { + Hook~ \hook_if_exist:nTF {#1} + {code~pool~empty} {not~declared} + } + } + } + } +\cs_new:Npn \__hook_log_next_code:n #1 + { \exp_args:No \tl_to_str:n { \use_none:nn #1 } } +\cs_new_protected:Npn \__hook_list_rules:nn #1 #2 + { + \cs_set_protected:Npn \__hook_tmp:w ##1 ##2 ##3 {#2} + \prop_map_inline:cn { g__hook_#1_code_prop } + { + \prop_map_inline:cn { g__hook_#1_code_prop } + { + \__hook_if_label_case:nnnnn {##1} {####1} + { \prop_map_break: } + { \__hook_list_one_rule:nnn {##1} {####1} } + { \__hook_list_one_rule:nnn {####1} {##1} } + {#1} + } + } + } +\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} { ?? } { } } + } +\cs_new_protected:Npn \__hook_list_if_rule_exists:nnnF #1#2#3 + { + \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 + { + \iow_term:n { The~hook~#1~contains~the~rules: } + \cs_set_protected:Npn \__hook_tmp:w ##1 + { + \__hook_list_rules:nn {#1} + { + \iow_term:x + { + > ##1 {####2} ##1 => ##1 {####1} + \str_if_eq:nnT {####3} {??} { ~(default) } + } + } + } + \exp_args:No \__hook_tmp:w { \use:nn { ~ } { ~ } } + } +\cs_new_protected:Npn \hook_gput_next_code:nn #1 + { \__hook_normalize_hook_args:Nn \__hook_gput_next_code:nn {#1} } +\cs_new_protected:Npn \__hook_gput_next_code:nn #1 #2 + { + \__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} } + } +\cs_new_protected:Npn \__hook_gput_next_do:nn #1 + { + \exp_args:Nc \__hook_gput_next_do:Nnn + { __hook_next~#1 } {#1} + } +\cs_new_protected:Npn \__hook_gput_next_do:Nnn #1 #2 + { + \tl_if_empty:cT { __hook~#2 } + { \__hook_update_hook_code:n {#2} } + \tl_if_empty:NT #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 } +\cs_new_protected:Npn \hook_use:n #1 + { + \tl_if_exist:cTF { __hook~#1 } + { + \__hook_preamble_hook:n {#1} + \cs:w __hook~#1 \cs_end: + } + { \__hook_use:wn #1 / \s__hook_mark {#1} } + } +\cs_new:Npn \__hook_use_initialized:n #1 + { + \if_cs_exist:w __hook~#1 \cs_end: + \else: + \__hook_use_undefined:w + \fi: + \cs:w __hook~#1 \__hook_use_end: + } +\cs_new:Npn \__hook_use_undefined:w #1 #2 __hook~#3 \__hook_use_end: + { + #1 % fi + \__hook_use:wn #3 / \s__hook_mark {#3} + } +\cs_new_protected:Npn \__hook_preamble_hook:n #1 + { \__hook_initialize_hook_code:n {#1} } +\cs_new_eq:NN \__hook_use_end: \cs_end: +\cs_new:Npn \__hook_use:wn #1 / #2 \s__hook_mark #3 + { + \str_if_eq:nnTF {#1} { file } + { \__hook_try_file_hook:n {#3} } + { } % Hook doesn't exist + } +\cs_new_protected:Npn \__hook_try_file_hook:n #1 + { + \__hook_if_file_hook:wTF #1 / / \s__hook_mark + { + \exp_args:Ne \__hook_if_exist_use:n + { \exp_args:Ne \__hook_file_hook_normalize:n {#1} } + } + { \__hook_if_exist_use:n {#1} } % file/ generic hook (e.g. file/before) + } +\cs_new_protected:Npn \__hook_if_exist_use:n #1 + { + \tl_if_exist:cT { __hook~#1 } + { + \__hook_preamble_hook:n {#1} + \cs:w __hook~#1 \cs_end: + } + } +\cs_new_protected:Npn \hook_use_once:n #1 + { + \tl_if_exist:cT { __hook~#1 } + { + \tl_set:Nn \l__hook_return_tl {#1} + \__hook_normalize_hook_args:Nn \__hook_use_once_store:n + { \l__hook_return_tl } + \hook_use:n {#1} + } + } +\cs_new_protected:Npn \__hook_use_once_store:n #1 + { \prop_gput:Nnn \g__hook_execute_immediately_prop {#1} { } } +\prg_new_conditional:Npnn \hook_if_empty:n #1 { p , T , F , TF } + { + \__hook_if_exist:nTF {#1} + { + \bool_lazy_and:nnTF + { \prop_if_empty_p:c { g__hook_#1_code_prop } } + { + \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: } + } + { \prg_return_true: } + } +\prg_new_conditional:Npnn \hook_if_exist:n #1 { p , T , F , TF } + { + \tl_if_exist:cTF { __hook~#1 } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_new_conditional:Npnn \__hook_if_exist:n #1 { p , T , F , TF } + { + \prop_if_exist:cTF { g__hook_#1_code_prop } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_new_conditional:Npnn \__hook_if_reversed:n #1 { p , T , F , TF } + { + \if_int_compare:w \cs:w g__hook_#1_reversed_tl \cs_end: 1 < 0 \exp_stop_f: + \prg_return_true: + \else: + \prg_return_false: + \fi: + } +\msg_new:nnnn { hooks } { labels-incompatible } + { + Labels~`#1'~and~`#2'~are~incompatible + \str_if_eq:nnF {#3} {??} { ~in~hook~`#3' } .~ + \int_compare:nNnTF {#4} = { 1 } + { The~ code~ for~ both~ labels~ will~ be~ dropped. } + { You~ may~ see~ errors~ later. } + } + { LaTeX~found~two~incompatible~labels~in~the~same~hook.~ + This~indicates~an~incompatibility~between~packages. } +\msg_new:nnnn { hooks } { exists } + { Hook~`#1'~ has~ already~ been~ declared. } + { There~ already~ exists~ a~ hook~ declaration~ with~ this~ + name.\\ + Please~ use~ a~ different~ name~ for~ your~ hook.} +\msg_new:nnn { hooks } { empty-label } + { + 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'~ + \str_if_eq:nnF {#1} {??} { ~in~hook~`#1' }. ~ + Perhaps~ a~ missspelling? + } + { + The~ relation~ used~ not~ known~ to~ the~ system.~ Allowed~ values~ are~ + `before'~ or~ `<',~ + `after'~ or~ `>',~ + `incompatible-warning',~ + `incompatible-error',~ + `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 \\ + Please~report~at~https://github.com/latex3/latex2e. + } +\NewDocumentCommand \NewHook { m }{ \hook_new:n {#1} } +\NewDocumentCommand \NewReversedHook { m }{ \hook_new_reversed:n {#1} } +\NewDocumentCommand \NewMirroredHookPair { mm }{ \hook_new_pair:nn {#1}{#2} } +\NewDocumentCommand \AddToHook { m o +m } + { \hook_gput_code:nnn {#1} {#2} {#3} } +\NewDocumentCommand \AddToHookNext { m +m } + { \hook_gput_next_code:nn {#1} {#2} } +\NewDocumentCommand \RemoveFromHook { m o } + { \hook_gremove_code:nn {#1} {#2} } +\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 + { + \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: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: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 } + { + \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 } +\cs_new_protected:Npn \ShowHook { \hook_show:n } +\cs_new_protected:Npn \LogHook { \hook_log:n } +\cs_new_protected:Npn \DebugHooksOn { \hook_debug_on: } +\cs_new_protected:Npn \DebugHooksOff { \hook_debug_off: } +\NewDocumentCommand \DeclareHookRule { m m m m } + { \hook_gset_rule:nnnn {#1}{#2}{#3}{#4} } +\NewDocumentCommand \DeclareDefaultHookRule { m m m } + { \hook_gset_rule:nnnn {??}{#1}{#2}{#3} } +\@onlypreamble\DeclareDefaultHookRule +\NewDocumentCommand \ClearHookRule { m m m } +{ \hook_gset_rule:nnnn {#1}{#2}{unrelated}{#3} } +\cs_new_eq:NN \IfHookExistsTF \hook_if_exist:nTF +\cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 +\cs_new_eq:NN \@expl@@@initialize@all@@ + \__hook_initialize_all: +\cs_new_eq:NN \@expl@@@hook@curr@name@pop@@ + \__hook_curr_name_pop: +\ExplSyntaxOff \EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\bfseries}{Custom series with hooks}% - -\def\expand@font@defaults{% - \edef\rmdef@ult{\rmdefault}% - \edef\sfdef@ult{\sfdefault}% - \edef\ttdef@ult{\ttdefault}% - \series@maybe@drop@one@m\bfdefault\bfdef@ult - \series@maybe@drop@one@m\mddefault\mddef@ult - \UseHook{expand@font@defaults}% -} - -\DeclareRobustCommand\bfseries{% - \not@math@alphabet\bfseries\mathbf - \expand@font@defaults - \ifx\bfdefault\bfdefault@previous\else - \expandafter\def\expandafter\bfdefault - \expandafter{\bfdefault\@empty}% - \let\bfdefault@previous\bfdefault - \let\bfseries@rm\bfdef@ult - \let\bfseries@sf\bfdef@ult - \let\bfseries@tt\bfdef@ult - \UseHook{bfseries/defaults}% - \fi - \ifx\f@family\rmdef@ult \fontseries\bfseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt - \else \fontseries\bfdefault - \fi\fi\fi - \UseHook{bfseries}% - \selectfont -} - -\DeclareRobustCommand\mdseries{% - \not@math@alphabet\mdseries\relax - \expand@font@defaults - \ifx\mddefault\mddefault@previous\else - \expandafter\def\expandafter\mddefault\expandafter{\mddefault\@empty}% - \let\mddefault@previous\mddefault - \let\mdseries@rm\mddef@ult - \let\mdseries@sf\mddef@ult - \let\mdseries@tt\mddef@ult - \UseHook{mdseries/defaults}% - \fi - \ifx\f@family\rmdef@ult \fontseries\mdseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt - \else \fontseries\mddefault - \fi\fi\fi - \UseHook{mdseries}% - \selectfont -} +\IncludeInRelease{0000/00/00}% + {\NewHook}{The hook management}% -\DeclareRobustCommand\rmfamily{% - \not@math@alphabet\rmfamily\mathrm - \prepare@family@series@update{rm}\rmdefault - \UseHook{rmfamily}% - \selectfont} -\DeclareRobustCommand\sffamily{% - \not@math@alphabet\sffamily\mathsf - \prepare@family@series@update{sf}\sfdefault - \UseHook{sffamily}% - \selectfont} -\DeclareRobustCommand\ttfamily{% - \not@math@alphabet\ttfamily\mathtt - \prepare@family@series@update{tt}\ttdefault - \UseHook{ttfamily}% - \selectfont} -\NewHook{rmfamily} -\NewHook{sffamily} -\NewHook{ttfamily} -\NewHook{normalfont} -\NewHook{expand@font@defaults} -\NewHook{bfseries} -\NewHook{bfseries/defaults} -\NewHook{mdseries} -\NewHook{mdseries/defaults} -\let\@rmfamilyhook\@empty -\let\@sffamilyhook\@empty -\let\@ttfamilyhook\@empty -\let\@defaultfamilyhook\@empty %FMi sort out -\EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\bfseries}{Custom series with hooks}% +\def\NewHook#1{} +\def\NewReversedHook#1{} +\def\NewMirroredHookPair#1#2{} -\def\expand@font@defaults{% - \edef\rmdef@ult{\rmdefault}% - \edef\sfdef@ult{\sfdefault}% - \edef\ttdef@ult{\ttdefault}% - \edef\bfdef@ult{\bfdefault}% - \edef\mddef@ult{\mddefault}% - \edef\famdef@ult{\familydefault}% -} +\long\def\AddToHookNext#1#2{} -\DeclareRobustCommand\bfseries{% - \not@math@alphabet\bfseries\mathbf - \expand@font@defaults - \ifx\f@family\rmdef@ult \fontseries\bfseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt - \else \fontseries\bfdefault - \fi\fi\fi - \selectfont -} +\def\AddToHook#1{\@gobble@AddToHook@args} +\providecommand\@gobble@AddToHook@args[2][]{} -\DeclareRobustCommand\mdseries{% - \not@math@alphabet\mdseries\relax - \expand@font@defaults - \ifx\f@family\rmdef@ult \fontseries\mdseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt - \else \fontseries\mddefault - \fi\fi\fi - \selectfont -} +\def\RemoveFromHook#1{\@gobble@RemoveFromHook@arg} +\providecommand\@gobble@RemoveFromHook@arg[1][]{} -\DeclareRobustCommand\rmfamily{% - \not@math@alphabet\rmfamily\mathrm - \prepare@family@series@update{rm}\rmdefault - \@rmfamilyhook - \selectfont} -\DeclareRobustCommand\sffamily{% - \not@math@alphabet\sffamily\mathsf - \prepare@family@series@update{sf}\sfdefault - \@sffamilyhook - \selectfont} -\DeclareRobustCommand\ttfamily{% - \not@math@alphabet\ttfamily\mathtt - \prepare@family@series@update{tt}\ttdefault - \@ttfamilyhook - \selectfont} +\def \UseHook #1{} +\def \UseOneTimeHook #1{} +\def \ShowHook #1{} +\let \DebugHooksOn \@empty +\let \DebugHooksOff\@empty +\def \DeclareHookRule #1#2#3#4{} +\def \DeclareDefaultHookRule #1#2#3{} +\def \ClearHookRule #1#2#3{} +\long\def \IfHookExistsTF #1#2#3{#3} +\long\def \IfHookEmptyTF #1#2#3{#2} +\EndIncludeInRelease +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% From File: ltalloc.dtx +%%% From File: ltcntrl.dtx +%%% From File: lterror.dtx +%%% From File: ltpar.dtx +%%% 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}% - {\bfseries}{Custom series with hooks}% - -\let\expand@font@defaults\@undefined - -\DeclareRobustCommand\bfseries - {\not@math@alphabet\bfseries\mathbf - \fontseries\bfdefault\selectfont} -\DeclareRobustCommand\mdseries - {\not@math@alphabet\mdseries\relax - \fontseries\mddefault\selectfont} -\DeclareRobustCommand\rmfamily - {\not@math@alphabet\rmfamily\mathrm - \fontfamily\rmdefault\selectfont} -\DeclareRobustCommand\sffamily - {\not@math@alphabet\sffamily\mathsf - \fontfamily\sfdefault\selectfont} -\DeclareRobustCommand\ttfamily - {\not@math@alphabet\ttfamily\mathtt - \fontfamily\ttdefault\selectfont} + {\pagebreak}{Make commands robust}% -\let\@rmfamilyhook\@undefined -\let\@sffamilyhook\@undefined -\let\@ttfamilyhook\@undefined +\kernel@make@fragile\pagebreak +\kernel@make@fragile\nopagebreak +\kernel@make@fragile\linebreak +\kernel@make@fragile\nolinebreak +\kernel@make@fragile\samepage \EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\IfFontSeriesContextTF}{Font series context}% -\DeclareRobustCommand\IfFontSeriesContextTF[1]{% - \expand@font@defaults - \@font@series@contextfalse - \def\requested@test@context{#1}% - \expandafter\edef\csname ??def@ult\endcsname{\f@family}% - \let\@elt\test@font@series@context - \@meta@family@list - \@elt{??}% - \let\@elt\relax - \if@font@series@context - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi -} +\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}% -\def\test@font@series@context#1{% - \edef\reserved@a{\csname #1def@ult\endcsname}% - \ifx\f@family\reserved@a - \let\@elt\@gobble - \expandafter\ifx - \csname\requested@test@context series@#1\endcsname\f@series - \@font@series@contexttrue - \else - \expandafter\ifx - \csname\requested@test@context def@ult\endcsname\f@series - \@font@series@contexttrue - \fi\fi\fi -} +\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 -\newif\if@font@series@context +\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}% - {\IfFontSeriesContextTF}{Font series context}% + {\@vspace@calcify}{Add calc support}% -\let\IfFontSeriesContextTF\@undefined -\let\test@font@series@context\@undefined -\let\if@font@series@context\@undefined -\let\@font@series@contexttrue\@undefined -\let\@font@series@contextfalse\@undefined +\let\@vspace@calcify\@undefined \EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\DeclareEmphSequence}{Nested emph}% -\def\DeclareEmphSequence#1{% - \protected@edef\emfontdeclare@clist{\zap@space#1, \@empty\emforce\emreset}% -} -\let\emfontdeclare@clist\@empty - -\DeclareRobustCommand\emreset{\upshape\ulcshape} +\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}% -\DeclareRobustCommand\em{% - \@nomath\em - \ifx\emfontdeclare@clist\@empty - \ifdim \fontdimen\@ne\font >\z@ - \eminnershape \else \itshape \fi - \else - \edef\em@currfont{\csname\curr@fontshape/\f@size\endcsname}% - \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update - \fi -} -\def\eminnershape{\upshape} -\def\do@emfont@update#1,#2\do@emfont@update{% - \def\emfontdeclare@clist{#2,#1}% - #1\selectfont - \expandafter\ifx\csname \curr@fontshape/\f@size\em@force - \expandafter\endcsname - \em@currfont - \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update +\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 - \let\em@force\@empty - \fi -} - -\protected\def\emforce{\def\em@force{/}} -\let\em@force\@empty + \ifvmode + \if@nobreak\nobreak\else\if@noskipsec\nobreak\fi\fi + \fi + \fi}% \EndIncludeInRelease - -\IncludeInRelease{2015/01/01}{\DeclareEmphSequence}{Nested emph}% -\let\DeclareEmphSequence\@undefined -\let\emfontdeclare@clist\@undefined -\let\emreset\@undefined -\let\do@emfont@update\@undefined -\let\emforce\@undefined -\let\em@force\@undefined - -\DeclareRobustCommand\em - {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ - \eminnershape \else \itshape \fi}% +\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{0000/00/00}{\DeclareEmphSequence}{Nested emph}% -\DeclareRobustCommand\em - {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ - \upshape \else \itshape \fi}% -\let\eminnershape\@undefined +\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{2020/10/01}% - {\symbol}{XeTeX change for math}% -\ifdefined\XeTeXversion - \DeclareRobustCommand\symbol[1]{\Ucharcat#1 12\relax} -\else - \DeclareRobustCommand\symbol[1]{\char#1\relax} -\fi +\IncludeInRelease{0000/00/00}% + {\@esphack}{hyphenation and nobreak after space hack}% +\def\@esphack{% + \relax + \ifhmode + \spacefactor\@savsf + \ifdim\@savsk>\z@ + \ignorespaces + \fi + \fi}% +\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}% \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\symbol}{XeTeX change for math}% - -\DeclareRobustCommand\symbol[1]{\char#1\relax} - + {\@Esphack}{hyphenation after space hack}% +\def\@Esphack{% + \relax + \ifhmode + \spacefactor\@savsf + \ifdim\@savsk>\z@ + \@ignoretrue + \ignorespaces + \fi + \fi}% \EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\normalfont}{Add hook to \normalfont}% -\DeclareRobustCommand\normalfont{% - \fontencoding\encodingdefault - \edef\f@family{\familydefault}% - \edef\f@series{\seriesdefault}% - \edef\f@shape{\shapedefault}% - \UseHook{normalfont}% - \@defaultfamilyhook % hookname from 2020/02 will vanish - \selectfont} -\let\reset@font\normalfont +\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} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\normalfont}{Add hook to \normalfont}% - -\DeclareRobustCommand\normalfont - {\usefont\encodingdefault - \familydefault - \seriesdefault - \shapedefault - \relax} -\let\reset@font\normalfont - -\let\@defaultfamilyhook\@undefined + {\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 -%%% From File: fontdef.dtx -\IncludeInRelease{2017/01/01}% - {\encodingdefault}{TU encoding default}% -\ifx\Umathcode\@undefined -\renewcommand\encodingdefault{OT1} -\fontencoding{\encodingdefault} -\renewcommand\rmdefault{cmr} -\fontfamily{\rmdefault} -\renewcommand\sfdefault{cmss} -\renewcommand\ttdefault{cmtt} -\else -\renewcommand\encodingdefault{TU} -%done in everyjob\fontencoding{\encodingdefault} -\renewcommand\rmdefault{lmr} -\fontfamily{\rmdefault} -\renewcommand\sfdefault{lmss} -\renewcommand\ttdefault{lmtt} -\fi +\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}% - {\encodingdefault}{TU encoding default}% -\fontencoding{OT1} -\renewcommand\encodingdefault{OT1} -\fontencoding{\encodingdefault} -\renewcommand\rmdefault{cmr} -\fontfamily{\rmdefault} -\renewcommand\sfdefault{cmss} -\renewcommand\ttdefault{cmtt} + {\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 + \fi + \else + \@noitemerr + \fi}% \EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\updefault}{font defaults change}% -\renewcommand\updefault{up} -\renewcommand\bfdefault{b\@empty} -\renewcommand\mddefault{m\@empty} -\let\bfdefault@previous\bfdefault -\let\mddefault@previous\mddefault +\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}% - {\updefault}{font defaults change}% - -\renewcommand\updefault{n} -\renewcommand\bfdefault{bx} + {\@vspace}{Support calc in \vspace}% -\let\bfdefault@previous\undefined -\let\mddefault@previous\undefined +\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{2018/12/01}% - {\Big}{Start LR-mode}% -\DeclareRobustCommand\big[1]{\leavevmode@ifvmode - {\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} -\DeclareRobustCommand\Big[1]{\leavevmode@ifvmode - {\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} -\DeclareRobustCommand\bigg[1]{\leavevmode@ifvmode - {\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} -\DeclareRobustCommand\Bigg[1]{\leavevmode@ifvmode - {\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\IncludeInRelease{2015/01/01}% + {\@}{Space after \@}% +\def\@{\spacefactor\@m{}}% \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\Big}{Start LR-mode}% -\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} -\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} -\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} -\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} + {\@}{Space after \@}% +\def\@{\spacefactor\@m}% \EndIncludeInRelease -%%% From File: ltfntcmd.dtx -%% -\IncludeInRelease{2020/02/02}% - {\textulc}{Additional text commands}% -\DeclareTextFontCommand{\textulc}{\ulcshape} -\DeclareTextFontCommand{\textsw}{\swshape} -\DeclareTextFontCommand{\textssc}{\sscshape} +\IncludeInRelease{2020/10/01}% + {\@hspace}{Support calc with \hspace}% +\def\@hspace#1{\begingroup\setlength\skip@{#1}\hskip\skip@\endgroup} \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\textulc}{Additional text commands}% + {\@hspace}{Support calc with \hspace}% -\let\textulc\@undefined -\let\textsw\@undefined -\let\textssc\@undefined + +\def\@hspace#1{\hskip #1\relax} \EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\oldstylenums}{Old style numerals}% -\DeclareRobustCommand\legacyoldstylenums[1]{% - \begingroup - \spaceskip\fontdimen\tw@\font - \usefont{OML}{\rmdefault}{\f@series}{it}% - \mathgroup\symletters #1% - \endgroup -} -\DeclareRobustCommand\oldstylenums[1]{% - \begingroup - \ifmmode - \mathgroup\symletters #1% - \else - \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}% - \fi - \endgroup -} -\def\tc@oldstylesubst#1{% - \tc@errorwarn - {Oldstyle digits unavailable for - family \f@family.\MessageBreak - Default oldstyle digits used instead}\@eha - \bgroup - \expand@font@defaults - \ifx\f@family\rmdef@ult - \fontfamily\rmsubstdefault - \else\ifx\f@family\sfdef@ult - \fontfamily\sfsubstdefault - \else\ifx\f@family\ttdef@ult - \fontfamily\ttsubstdefault - \else - \fontfamily\textcompsubstdefault - \fi\fi\fi - \fontencoding{TS1}\selectfont#1% - \egroup -} -\def\textcompsubstdefault{\rmsubstdefault} +\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}% - {\oldstylenums}{Old style numerals}% - -\DeclareRobustCommand\oldstylenums[1]{% - \begingroup - \spaceskip\fontdimen\tw@\font - \usefont{OML}{\rmdefault}{\f@series}{it}% - \mathgroup\symletters #1% - \endgroup -} -\let\legacyoldstylenums\@undefined -\def\textcompsubstdefault{cmr} - + {\thinspace}{Start LR-mode}% +\def\thinspace{\kern .16667em } +\def\negthinspace{\kern-.16667em } +\def\enspace{\kern.5em } +\let\leavevmode@ifvmode\@undefined \EndIncludeInRelease - -\IncludeInRelease{2020/02/02}% - {\DeclareEncodingSubset}{Text companion symbols}% -\def\DeclareEncodingSubset#1#2{% - \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux -} -\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{% - \expandafter\ifx\expandafter X\detokenize{#3}X% - \@DeclareEncodingSubset{#1}{#2}{#4}% - \else - \@DeclareEncodingSubset{#1}{#2LF}{#4}% - \@DeclareEncodingSubset{#1}{#2TLF}{#4}% - \@DeclareEncodingSubset{#1}{#2OsF}{#4}% - \@DeclareEncodingSubset{#1}{#2TOsF}{#4}% +%%% From File: ltlogos.dtx +%%% From File: ltfiles.dtx +\IncludeInRelease{2020/10/01}% + {\document}{Added hook to load l3backend code}% +\def\document{% + \UseOneTimeHook{begindocument/before}% + \@kernel@after@begindocument@before + \@expl@sys@load@backend@@ + \ifx\@unusedoptionlist\@empty\else + \@latex@warning@no@line{Unused global option(s):^^J% + \@spaces[\@unusedoptionlist]}% + \fi + \@colht\textheight + \@colroom\textheight \vsize\textheight + \columnwidth\textwidth + \@clubpenalty\clubpenalty + \if@twocolumn + \advance\columnwidth -\columnsep + \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue + \fi + \hsize\columnwidth \linewidth\hsize + \begingroup\@floatplacement\@dblfloatplacement + \makeatletter\let\@writefile\@gobbletwo + \global \let \@multiplelabels \relax + \@input{\jobname.aux}% + \endgroup + \if@filesw + \immediate\openout\@mainaux\jobname.aux + \immediate\write\@mainaux{\relax}% + \fi + \process@table + \let\glb@currsize\@empty % Force math initialization. + \normalsize + \everypar{}% + \ifx\normalsfcodes\@empty + \ifnum\sfcode`\.=\@m + \let\normalsfcodes\frenchspacing + \else + \let\normalsfcodes\nonfrenchspacing + \fi \fi -} -\def\@DeclareEncodingSubset#1#2#3{% - \@ifundefined{#1:#2}% - {\@font@info{Setting #2 sub-encoding to #1/#3}}% - {\@font@info{Changing #2 sub-encoding to #1/#3}}% - \@namedef{#1:#2}{#3}} -\@onlypreamble\DeclareEncodingSubset -\@onlypreamble\DeclareEncodingSubset@aux -\@onlypreamble\@DeclareEncodingSubset - - -\def\CheckEncodingSubset#1#2#3#4#5{% - \ifnum #4>% - \expandafter\ifx\csname #2:\f@family\endcsname\relax - 0\csname #2:?\endcsname - \else - \csname #2:\f@family\endcsname - \fi - \relax - \expandafter\@firstoftwo - \else - \expandafter\@secondoftwo - \fi - {#1{#2}}{#3}% - #5% -} - -\def\tc@errorwarn#1#2{\@latex@info{#1}} - -\def\tc@subst#1{% - \tc@errorwarn - {Symbol \string#1 not provided by\MessageBreak - font family \f@family\space - in TS1 encoding.\MessageBreak Default family used instead}\@eha - \bgroup - \expand@font@defaults - \ifx\f@family\rmdef@ult - \fontfamily\rmsubstdefault - \else\ifx\f@family\sfdef@ult - \fontfamily\sfsubstdefault - \else\ifx\f@family\ttdef@ult - \fontfamily\ttsubstdefault - \else - \fontfamily\textcompsubstdefault - \fi\fi\fi - \@namedef{TS1:\f@family}{0}% - \selectfont#1% - \egroup -} - -\def\tc@fake@euro#1{% - \leavevmode - \@font@info{Faking \noexpand#1for font family - \f@family\MessageBreak in TS1 encoding}% - \valign{##\cr - \vfil\hbox to 0.07em{\dimen@\f@size\p@ - \math@fontsfalse - \fontsize{.7\dimen@}\z@\selectfont=\hss}% - \vfil\cr% - \hbox{C}\crcr - }% -} + \ifx\document@default@language\m@ne + \chardef\document@default@language\language + \fi + \@noskipsecfalse + \let \@refundefined \relax + \@kernel@before@begindocument + \UseOneTimeHook{begindocument}% + \@kernel@after@begindocument + \ifdim\topskip<1sp\global\topskip 1sp\relax\fi + \global\@maxdepth\maxdepth + \global\let\@begindocumenthook\@undefined + \ifx\@listfiles\@undefined + \global\let\@filelist\relax + \global\let\@addtofilelist\@gobble + \fi + \gdef\do##1{\global\let ##1\@notprerr}% + \@preamblecmds + \global\let \@nodocument \relax + \global\let\do\noexpand + \UseOneTimeHook{begindocument/end}% + \ignorespaces} +\NewHook{begindocument} +\NewHook{begindocument/before} +\NewHook{begindocument/end} -\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst} -\def\tc@check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc@swap@accent#1}} -\def\tc@swap@accent#1#2{\UseTextAccent{T1}#1} +\edef \@kernel@after@begindocument@before {% + \let\expandafter\noexpand\csname + __hook env/document/begin\endcsname + \noexpand\@empty} +\let \@kernel@before@begindocument \@empty +\let \@kernel@after@begindocument \@empty -\DeclareTextSymbolDefault{\textdollar}{TS1} -\UndeclareTextCommand{\textdollar} {OT1} % don't use the OT1 def any longer -\DeclareTextSymbolDefault{\textsterling}{TS1} -\UndeclareTextCommand{\textsterling}{OT1} % don't use the OT1 def any longer -\DeclareTextSymbolDefault{\textperthousand}{TS1} -\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def -\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} -\DeclareTextSymbolDefault{\textbullet}{TS1} -\DeclareTextSymbolDefault{\textdaggerdbl}{TS1} -\DeclareTextSymbolDefault{\textdagger}{TS1} -\DeclareTextSymbolDefault{\textparagraph}{TS1} -\DeclareTextSymbolDefault{\textperiodcentered}{TS1} -\DeclareTextSymbolDefault{\textsection}{TS1} -%%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\textbrokenbar}{TS1} -%%\DeclareTextSymbolDefault{\textcelsius}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\textcent}{TS1} -\DeclareTextSymbolDefault{\textcopyright}{TS1} -\DeclareTextSymbolDefault{\textdegree}{TS1} -\DeclareTextSymbolDefault{\textdiv}{TS1} -\DeclareTextSymbolDefault{\textlnot}{TS1} -\DeclareTextSymbolDefault{\textonehalf}{TS1} -\DeclareTextSymbolDefault{\textonequarter}{TS1} -%%\DeclareTextSymbolDefault{\textonesuperior}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\textordfeminine}{TS1} -\DeclareTextSymbolDefault{\textordmasculine}{TS1} -\DeclareTextSymbolDefault{\textpm}{TS1} -\DeclareTextSymbolDefault{\textquotesingle}{TS1} -\DeclareTextSymbolDefault{\textquotestraightbase}{TS1} -\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} -\DeclareTextSymbolDefault{\textregistered}{TS1} -%%\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\textthreequarters}{TS1} -%%\DeclareTextSymbolDefault{\textthreesuperior}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\texttimes}{TS1} -\DeclareTextSymbolDefault{\texttrademark}{TS1} -%%\DeclareTextSymbolDefault{\texttwelveudash}{TS1} % subst in sub-enc 9 above -%%\DeclareTextSymbolDefault{\texttwosuperior}{TS1} % subst in sub-enc 9 above -\DeclareTextSymbolDefault{\textyen}{TS1} -\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} -\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} -\DeclareTextCommandDefault{\textcircled} - {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircled} -\DeclareTextCommandDefault{\t} - {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t} -\ifx\Umathcode\@undefined - \DeclareTextCommandDefault{\capitalacute} {\tc@check@accent{\'}2\capitalacute} - \DeclareTextCommandDefault{\capitalbreve} {\tc@check@accent{\u}2\capitalbreve} - \DeclareTextCommandDefault{\capitalcaron} {\tc@check@accent{\v}2\capitalcaron} - \DeclareTextCommandDefault{\capitalcedilla} {\tc@check@accent{\c}2\capitalcedilla} - \DeclareTextCommandDefault{\capitalcircumflex} {\tc@check@accent{\^}2\capitalcircumflex} - \DeclareTextCommandDefault{\capitaldieresis} {\tc@check@accent{\"}2\capitaldieresis} - \DeclareTextCommandDefault{\capitaldotaccent} {\tc@check@accent{\.}2\capitaldotaccent} - \DeclareTextCommandDefault{\capitalgrave} {\tc@check@accent{\`}2\capitalgrave} - \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc@check@accent{\H}2\capitalhungarumlaut} - \DeclareTextCommandDefault{\capitalmacron} {\tc@check@accent{\=}2\capitalmacron} - \DeclareTextCommandDefault{\capitalogonek} {\tc@check@accent{\k}2\capitalogonek} - \DeclareTextCommandDefault{\capitalring} {\tc@check@accent{\r}2\capitalring} - \DeclareTextCommandDefault{\capitaltie} {\tc@check@accent{\t}2\capitaltie} - \DeclareTextCommandDefault{\capitaltilde} {\tc@check@accent{\~}2\capitaltilde} - \DeclareTextCommandDefault{\newtie} {\tc@check@accent{\t}2\newtie} - \DeclareTextCommandDefault{\capitalnewtie} {\tc@check@accent{\t}2\capitalnewtie} -\else - \DeclareTextCommandDefault\capitalacute{\@tabacckludge'} - \DeclareTextCommandDefault\capitalbreve{\u} - \DeclareTextCommandDefault\capitalcaron{\v} - \DeclareTextCommandDefault\capitalcedilla{\c} - \DeclareTextCommandDefault\capitalcircumflex{\^} - \DeclareTextCommandDefault\capitaldieresis{\"} - \DeclareTextCommandDefault\capitaldotaccent{\.} - \DeclareTextCommandDefault\capitalgrave{\@tabacckludge`} - \DeclareTextCommandDefault\capitalhungarumlaut{\H} - \DeclareTextCommandDefault\capitalmacron{\@tabacckludge=} - \DeclareTextCommandDefault\capitalnewtie{\t} - \DeclareTextCommandDefault\capitalogonek{\k} - \DeclareTextCommandDefault\capitalring{\r} - \DeclareTextCommandDefault\capitaltie{\t} - \DeclareTextCommandDefault\capitaltilde{\~} - \DeclareTextCommandDefault\newtie{\t} -\fi -\DeclareTextCommandDefault{\textlbrackdbl} {\tc@check@symbol2\textlbrackdbl} -\DeclareTextCommandDefault{\textrbrackdbl} {\tc@check@symbol2\textrbrackdbl} -\DeclareTextCommandDefault{\texteightoldstyle} {\tc@check@symbol2\texteightoldstyle} -\DeclareTextCommandDefault{\textfiveoldstyle} {\tc@check@symbol2\textfiveoldstyle} -\DeclareTextCommandDefault{\textfouroldstyle} {\tc@check@symbol2\textfouroldstyle} -\DeclareTextCommandDefault{\textnineoldstyle} {\tc@check@symbol2\textnineoldstyle} -\DeclareTextCommandDefault{\textoneoldstyle} {\tc@check@symbol2\textoneoldstyle} -\DeclareTextCommandDefault{\textsevenoldstyle} {\tc@check@symbol2\textsevenoldstyle} -\DeclareTextCommandDefault{\textsixoldstyle} {\tc@check@symbol2\textsixoldstyle} -\DeclareTextCommandDefault{\textthreeoldstyle} {\tc@check@symbol2\textthreeoldstyle} -\DeclareTextCommandDefault{\texttwooldstyle} {\tc@check@symbol2\texttwooldstyle} -\DeclareTextCommandDefault{\textzerooldstyle} {\tc@check@symbol2\textzerooldstyle} -\DeclareTextCommandDefault{\textacutedbl} {\tc@check@symbol2\textacutedbl} -\DeclareTextCommandDefault{\textasciiacute} {\tc@check@symbol2\textasciiacute} -\DeclareTextCommandDefault{\textasciibreve} {\tc@check@symbol2\textasciibreve} -\DeclareTextCommandDefault{\textasciicaron} {\tc@check@symbol2\textasciicaron} -\DeclareTextCommandDefault{\textasciidieresis} {\tc@check@symbol2\textasciidieresis} -\DeclareTextCommandDefault{\textasciigrave} {\tc@check@symbol2\textasciigrave} -\DeclareTextCommandDefault{\textasciimacron} {\tc@check@symbol2\textasciimacron} -\DeclareTextCommandDefault{\textgravedbl} {\tc@check@symbol2\textgravedbl} -\DeclareTextCommandDefault{\texttildelow} {\tc@check@symbol2\texttildelow} -\DeclareTextCommandDefault{\textbaht} {\tc@check@symbol2\textbaht} -\DeclareTextCommandDefault{\textbigcircle} {\tc@check@symbol2\textbigcircle} -\DeclareTextCommandDefault{\textborn} {\tc@check@symbol2\textborn} -\DeclareTextCommandDefault{\textcentoldstyle} {\tc@check@symbol2\textcentoldstyle} -\DeclareTextCommandDefault{\textcircledP} {\tc@check@symbol2\textcircledP} -\DeclareTextCommandDefault{\textcopyleft} {\tc@check@symbol2\textcopyleft} -\DeclareTextCommandDefault{\textdblhyphenchar} {\tc@check@symbol2\textdblhyphenchar} -\DeclareTextCommandDefault{\textdblhyphen} {\tc@check@symbol2\textdblhyphen} -\DeclareTextCommandDefault{\textdied} {\tc@check@symbol2\textdied} -\DeclareTextCommandDefault{\textdiscount} {\tc@check@symbol2\textdiscount} -\DeclareTextCommandDefault{\textdivorced} {\tc@check@symbol2\textdivorced} -\DeclareTextCommandDefault{\textdollaroldstyle} {\tc@check@symbol2\textdollaroldstyle} -\DeclareTextCommandDefault{\textguarani} {\tc@check@symbol2\textguarani} -\DeclareTextCommandDefault{\textleaf} {\tc@check@symbol2\textleaf} -\DeclareTextCommandDefault{\textlquill} {\tc@check@symbol2\textlquill} -\DeclareTextCommandDefault{\textmarried} {\tc@check@symbol2\textmarried} -\DeclareTextCommandDefault{\textmho} {\tc@check@symbol2\textmho} -\DeclareTextCommandDefault{\textmusicalnote} {\tc@check@symbol2\textmusicalnote} -\DeclareTextCommandDefault{\textnaira} {\tc@check@symbol2\textnaira} -\DeclareTextCommandDefault{\textopenbullet} {\tc@check@symbol2\textopenbullet} -\DeclareTextCommandDefault{\textpeso} {\tc@check@symbol2\textpeso} -\DeclareTextCommandDefault{\textpilcrow} {\tc@check@symbol2\textpilcrow} -\DeclareTextCommandDefault{\textrecipe} {\tc@check@symbol2\textrecipe} -\DeclareTextCommandDefault{\textreferencemark} {\tc@check@symbol2\textreferencemark} -\DeclareTextCommandDefault{\textrquill} {\tc@check@symbol2\textrquill} -\DeclareTextCommandDefault{\textservicemark} {\tc@check@symbol2\textservicemark} -\DeclareTextCommandDefault{\textsurd} {\tc@check@symbol2\textsurd} -\DeclareTextCommandDefault{\textpertenthousand} {\tc@check@symbol2\textpertenthousand} -\UndeclareTextCommand{\textpertenthousand}{T1} -\DeclareTextCommandDefault{\textlangle} {\tc@check@symbol3\textlangle} -\DeclareTextCommandDefault{\textrangle} {\tc@check@symbol3\textrangle} -\DeclareTextCommandDefault{\textcolonmonetary} {\tc@check@symbol4\textcolonmonetary} -\DeclareTextCommandDefault{\textdong} {\tc@check@symbol4\textdong} -\DeclareTextCommandDefault{\textdownarrow} {\tc@check@symbol4\textdownarrow} -\DeclareTextCommandDefault{\textleftarrow} {\tc@check@symbol4\textleftarrow} -\DeclareTextCommandDefault{\textlira} {\tc@check@symbol4\textlira} -\DeclareTextCommandDefault{\textrightarrow} {\tc@check@symbol4\textrightarrow} -\DeclareTextCommandDefault{\textuparrow} {\tc@check@symbol4\textuparrow} -\DeclareTextCommandDefault{\textwon} {\tc@check@symbol4\textwon} -\DeclareTextCommandDefault{\textestimated} {\tc@check@symbol5\textestimated} -\DeclareTextCommandDefault{\textnumero} {\tc@check@symbol5\textnumero} -\DeclareTextCommandDefault{\textflorin} {\tc@check@symbol6\textflorin} -\DeclareTextCommandDefault{\textcurrency} {\tc@check@symbol6\textcurrency} -\DeclareTextCommandDefault{\textfractionsolidus}{\tc@check@symbol7\textfractionsolidus} -\DeclareTextCommandDefault{\textohm} {\tc@check@symbol7\textohm} -\DeclareTextCommandDefault{\textmu} {\tc@check@symbol7\textmu} -\DeclareTextCommandDefault{\textminus} {\tc@check@symbol7\textminus} -\DeclareTextCommandDefault{\textblank} {\tc@check@symbol{8}\textblank} -\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol{8}\textinterrobangdown} -\DeclareTextCommandDefault{\textinterrobang} {\tc@check@symbol{8}\textinterrobang} -\DeclareTextCommandDefault{\texteuro} - {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro{8}\texteuro} -\DeclareTextCommandDefault{\textcelsius}{\tc@check@symbol{9}\textcelsius} -\DeclareTextCommandDefault{\textonesuperior}{\tc@check@symbol{9}\textonesuperior} -\DeclareTextCommandDefault{\textthreequartersemdash}{\tc@check@symbol{9}\textthreequartersemdash} -\DeclareTextCommandDefault{\textthreesuperior}{\tc@check@symbol{9}\textthreesuperior} -\DeclareTextCommandDefault{\texttwelveudash}{\tc@check@symbol{9}\texttwelveudash} -\DeclareTextCommandDefault{\texttwosuperior}{\tc@check@symbol{9}\texttwosuperior} -\DeclareTextCommandDefault{\textbardbl}{\tc@check@symbol{9}\textbardbl} +\EndIncludeInRelease +\IncludeInRelease{2017/04/15}% + {\document}{Save language for hyphenation}% -\ifx \Umathcode\@undefined \else -\DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}} -\DeclareTextCommand{\textoneoldstyle} \UnicodeEncodingName{\oldstylenums{1}} -\DeclareTextCommand{\texttwooldstyle} \UnicodeEncodingName{\oldstylenums{2}} -\DeclareTextCommand{\textthreeoldstyle}\UnicodeEncodingName{\oldstylenums{3}} -\DeclareTextCommand{\textfouroldstyle} \UnicodeEncodingName{\oldstylenums{4}} -\DeclareTextCommand{\textfiveoldstyle} \UnicodeEncodingName{\oldstylenums{5}} -\DeclareTextCommand{\textsixoldstyle} \UnicodeEncodingName{\oldstylenums{6}} -\DeclareTextCommand{\textsevenoldstyle}\UnicodeEncodingName{\oldstylenums{7}} -\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}} -\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}} -\DeclareTextSymbol{\textpilcrow} \UnicodeEncodingName{"00B6} -\DeclareTextSymbol{\textborn} \UnicodeEncodingName{"002A} -\DeclareTextSymbol{\textdied} \UnicodeEncodingName{"2020} -\DeclareTextSymbol{\textlbrackdbl} \UnicodeEncodingName{"27E6} -\DeclareTextSymbol{\textrbrackdbl} \UnicodeEncodingName{"27E7} -\DeclareTextSymbol{\textguarani} \UnicodeEncodingName{"20B2} -\DeclareTextSymbol{\textdollaroldstyle}{TS1}{138} -\DeclareTextSymbol{\textcentoldstyle} {TS1}{139} -\fi % --- END of Unicode engines specials -\DeclareEncodingSubset{TS1}{?}{9} -\DeclareEncodingSubset{TS1}{ccr} {0} -\DeclareEncodingSubset{TS1}{cmbr} {0} -\DeclareEncodingSubset{TS1}{cmr} {0} -\DeclareEncodingSubset{TS1}{cmss} {0} -\DeclareEncodingSubset{TS1}{cmtl} {0} -\DeclareEncodingSubset{TS1}{cmtt} {0} -\DeclareEncodingSubset{TS1}{cmvtt} {0} -\DeclareEncodingSubset{TS1}{pxr} {0} -\DeclareEncodingSubset{TS1}{pxss} {0} -\DeclareEncodingSubset{TS1}{pxtt} {0} -\DeclareEncodingSubset{TS1}{qag} {0} -\DeclareEncodingSubset{TS1}{qbk} {0} -\DeclareEncodingSubset{TS1}{qcr} {0} -\DeclareEncodingSubset{TS1}{qcs} {0} -\DeclareEncodingSubset{TS1}{qhvc} {0} -\DeclareEncodingSubset{TS1}{qhv} {0} -\DeclareEncodingSubset{TS1}{qpl} {0} -\DeclareEncodingSubset{TS1}{qtm} {0} -\DeclareEncodingSubset{TS1}{qzc} {0} -\DeclareEncodingSubset{TS1}{txr} {0} -\DeclareEncodingSubset{TS1}{txss} {0} -\DeclareEncodingSubset{TS1}{txtt} {0} -\DeclareEncodingSubset{TS1}{lmr} {1} -\DeclareEncodingSubset{TS1}{lmdh} {1} -\DeclareEncodingSubset{TS1}{lmss} {1} -\DeclareEncodingSubset{TS1}{lmssq} {1} -\DeclareEncodingSubset{TS1}{lmvtt} {1} -\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM, pertenthousand for some reason -\DeclareEncodingSubset{TS1}{ptmx} {2} -\DeclareEncodingSubset{TS1}{ptmj} {2} -\DeclareEncodingSubset{TS1}{ul8} {2} -\DeclareEncodingSubset{TS1}{bch} {5} % tofu for blank, ohm -\DeclareEncodingSubset{TS1}{futj} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{futs} {5} % tofu for blank, ohm -\DeclareEncodingSubset{TS1}{futx} {5} % probably (currently broken distrib) -\DeclareEncodingSubset{TS1}{pag} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{pbk} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{pcr} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{phv} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{pnc} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{pplj} {5} % tofu for blank -\DeclareEncodingSubset{TS1}{pplx} {5} % tofu for blank -\DeclareEncodingSubset{TS1}{ppl} {5} % tofu for blank interrobang/down -\DeclareEncodingSubset{TS1}{ptm} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{pzc} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{ul9} {5} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{dayroms} {6} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{dayrom} {6} % tofu for blank, interrobang/down, ohm -\DeclareEncodingSubset{TS1}{augie} {8} % really only missing euro -\DeclareEncodingSubset{TS1}{put} {8} -\DeclareEncodingSubset{TS1}{uag} {8} % probably (currently broken distrib) -\DeclareEncodingSubset{TS1}{ugq} {8} -\DeclareEncodingSubset{TS1}{zi4} {9} -\DeclareEncodingSubset{TS1}{hls} {5} -\DeclareEncodingSubset{TS1}{hlst} {5} -\DeclareEncodingSubset{TS1}{hlct} {5} -\DeclareEncodingSubset{TS1}{hlh} {5} -\DeclareEncodingSubset{TS1}{hlx} {8} -\DeclareEncodingSubset{TS1}{hlce} {8} -\DeclareEncodingSubset{TS1}{hlcn} {8} -\DeclareEncodingSubset{TS1}{hlcw} {8} -\DeclareEncodingSubset{TS1}{hlcf} {8} -\DeclareEncodingSubset{TS1}{lato-*} {0} % with a bunch of tofu inside -\DeclareEncodingSubset{TS1}{opensans-*} {0} % with a bunch of tofu inside -\DeclareEncodingSubset{TS1}{cantarell-*} {0} % with a bunch of tofu inside -\DeclareEncodingSubset{TS1}{fbb-*} {0} % missing centoldstyle -\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside -\DeclareEncodingSubset{TS1}{Alegreya-*} {2} -\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2} -\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2} -\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2} -\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2} -\DeclareEncodingSubset{TS1}{EBGaramond-*} {2} -\DeclareEncodingSubset{TS1}{Tempora-TLF} {2} -\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2} -\DeclareEncodingSubset{TS1}{Arimo-TLF} {3} -\DeclareEncodingSubset{TS1}{Carlito-*} {3} -\DeclareEncodingSubset{TS1}{FiraSans-*} {3} -\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3} -\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3} -\DeclareEncodingSubset{TS1}{Montserrat-*} {3} -\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3} -\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3} -\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3} -\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3} -\DeclareEncodingSubset{TS1}{SourceSerifPro-*} {3} -\DeclareEncodingSubset{TS1}{Tinos-TLF} {3} -\DeclareEncodingSubset{TS1}{AccanthisADFStdNoThree-LF}{4} -\DeclareEncodingSubset{TS1}{Cabin-TLF} {4} -\DeclareEncodingSubset{TS1}{Caladea-TLF} {4} -\DeclareEncodingSubset{TS1}{Chivo-*} {4} -\DeclareEncodingSubset{TS1}{ClearSans-TLF} {4} -\DeclareEncodingSubset{TS1}{Coelacanth-LF} {4} -\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4} -\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4} -\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4} -\DeclareEncodingSubset{TS1}{Go-TLF} {4} -\DeclareEncodingSubset{TS1}{GoMono-TLF} {4} -\DeclareEncodingSubset{TS1}{InriaSans-*} {4} -\DeclareEncodingSubset{TS1}{InriaSerif-*} {4} -\DeclareEncodingSubset{TS1}{LibertinusSans-*} {4} -\DeclareEncodingSubset{TS1}{LibertinusSerif-*} {4} -\DeclareEncodingSubset{TS1}{LibreBodoni-TLF} {4} -\DeclareEncodingSubset{TS1}{LibreFranklin-TLF} {4} -\DeclareEncodingSubset{TS1}{LinguisticsPro-LF} {4} -\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4} -\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4} -\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4} -\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4} -\DeclareEncodingSubset{TS1}{MintSpirit-*} {4} -\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4} -\DeclareEncodingSubset{TS1}{PTMono-TLF} {4} -\DeclareEncodingSubset{TS1}{PTSans-TLF} {4} -\DeclareEncodingSubset{TS1}{PTSansCaption-TLF} {4} -\DeclareEncodingSubset{TS1}{PTSansNarrow-TLF} {4} -\DeclareEncodingSubset{TS1}{PTSerif-TLF} {4} -\DeclareEncodingSubset{TS1}{PTSerifCaption-TLF} {4} -\DeclareEncodingSubset{TS1}{Raleway-TLF} {4} -\DeclareEncodingSubset{TS1}{Raleway-TOsF} {4} -\DeclareEncodingSubset{TS1}{Roboto-*} {4} -\DeclareEncodingSubset{TS1}{RobotoMono-TLF} {4} -\DeclareEncodingSubset{TS1}{RobotoSlab-TLF} {4} -\DeclareEncodingSubset{TS1}{Rosario-*} {4} -\DeclareEncodingSubset{TS1}{SticksTooText-*} {4} -\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4} -\DeclareEncodingSubset{TS1}{Almendra-OsF} {5} -\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5} -\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5} -\DeclareEncodingSubset{TS1}{Bitter-TLF} {5} -\DeclareEncodingSubset{TS1}{Cinzel-LF} {5} -\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5} -\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5} -\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5} -\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5} -\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5} -\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5} -\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5} -\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5} -\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5} -\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5} -\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5} -\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5} -\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5} -\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5} -\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5} -\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5} -\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5} -\DeclareEncodingSubset{TS1}{Crimson-TLF} {6} -\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6} -\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6} -\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6} -\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6} -\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6} -\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6} -\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6} -\DeclareEncodingSubset{TS1}{Overlock-LF} {6} -\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7} -\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7} -\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7} -\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7} -\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7} -\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7} -\DeclareEncodingSubset{TS1}{Marcellus-LF} {7} -\DeclareEncodingSubset{TS1}{NotoSans-*} {7} -\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7} -\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7} -\DeclareEncodingSubset{TS1}{NotoSerif-*} {7} -\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7} -\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7} -\DeclareEncodingSubset{TS1}{XCharter-TLF} {7} -\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7} -\DeclareEncodingSubset{TS1}{erewhon-*} {7} -\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7} -\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7} -\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing -\DeclareEncodingSubset{TS1}{Cochineal-*} {8} -\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9} -\def\UseLegacyTextSymbols{% - \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}% - \DeclareTextSymbolDefault{\textbardbl}{OMS}% - \DeclareTextSymbolDefault{\textbullet}{OMS}% - \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}% - \DeclareTextSymbolDefault{\textdagger}{OMS}% - \DeclareTextSymbolDefault{\textparagraph}{OMS}% - \DeclareTextSymbolDefault{\textperiodcentered}{OMS}% - \DeclareTextSymbolDefault{\textsection}{OMS}% - \UndeclareTextCommand{\textsection}{T1}% - \expandafter\let\csname oldstylenums \expandafter\endcsname - \csname legacyoldstylenums \endcsname -} +\def\document{\endgroup + \ifx\@unusedoptionlist\@empty\else + \@latex@warning@no@line{Unused global option(s):^^J% + \@spaces[\@unusedoptionlist]}% + \fi + \@colht\textheight + \@colroom\textheight \vsize\textheight + \columnwidth\textwidth + \@clubpenalty\clubpenalty + \if@twocolumn + \advance\columnwidth -\columnsep + \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue + \fi + \hsize\columnwidth \linewidth\hsize + \begingroup\@floatplacement\@dblfloatplacement + \makeatletter\let\@writefile\@gobbletwo + \global \let \@multiplelabels \relax + \@input{\jobname.aux}% + \endgroup + \if@filesw + \immediate\openout\@mainaux\jobname.aux + \immediate\write\@mainaux{\relax}% + \fi + \process@table + \let\glb@currsize\@empty % Force math initialization. + \normalsize + \everypar{}% + \ifx\normalsfcodes\@empty + \ifnum\sfcode`\.=\@m + \let\normalsfcodes\frenchspacing + \else + \let\normalsfcodes\nonfrenchspacing + \fi + \fi + \ifx\document@default@language\m@ne + \chardef\document@default@language\language + \fi + \@noskipsecfalse + \let \@refundefined \relax + \let\AtBeginDocument\@firstofone + \@begindocumenthook + \ifdim\topskip<1sp\global\topskip 1sp\relax\fi + \global\@maxdepth\maxdepth + \global\let\@begindocumenthook\@undefined + \ifx\@listfiles\@undefined + \global\let\@filelist\relax + \global\let\@addtofilelist\@gobble + \fi + \gdef\do##1{\global\let ##1\@notprerr}% + \@preamblecmds + \global\let \@nodocument \relax + \global\let\do\noexpand + \ignorespaces} +\EndIncludeInRelease -\DeclareTextSymbol{\textlegacyasteriskcentered}{OMS}{3} % "03 -\DeclareTextSymbol{\textlegacybardbl}{OMS}{107} % "6B -\DeclareTextSymbol{\textlegacybullet}{OMS}{15} % "0F -\DeclareTextSymbol{\textlegacydaggerdbl}{OMS}{122} % "7A -\DeclareTextSymbol{\textlegacydagger}{OMS}{121} % "79 -\DeclareTextSymbol{\textlegacyparagraph}{OMS}{123} % "7B -\DeclareTextSymbol{\textlegacyperiodcentered}{OMS}{1} % "01 -\DeclareTextSymbol{\textlegacysection}{OMS}{120} % "78 -\DeclareTextSymbolDefault{\textlegacyasteriskcentered}{OMS} -\DeclareTextSymbolDefault{\textlegacybardbl}{OMS} -\DeclareTextSymbolDefault{\textlegacybullet}{OMS} -\DeclareTextSymbolDefault{\textlegacydaggerdbl}{OMS} -\DeclareTextSymbolDefault{\textlegacydagger}{OMS} -\DeclareTextSymbolDefault{\textlegacyparagraph}{OMS} -\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS} -\DeclareTextSymbolDefault{\textlegacysection}{OMS} +\IncludeInRelease{0000/00/00}% + {\document}{Save language for hyphenation} +\def\document{\endgroup + \ifx\@unusedoptionlist\@empty\else + \@latex@warning@no@line{Unused global option(s):^^J% + \@spaces[\@unusedoptionlist]}% + \fi + \@colht\textheight + \@colroom\textheight \vsize\textheight + \columnwidth\textwidth + \@clubpenalty\clubpenalty + \if@twocolumn + \advance\columnwidth -\columnsep + \divide\columnwidth\tw@ \hsize\columnwidth + \@firstcolumntrue + \fi + \hsize\columnwidth \linewidth\hsize + \begingroup\@floatplacement\@dblfloatplacement + \makeatletter\let\@writefile\@gobbletwo + \global \let \@multiplelabels \relax + \@input{\jobname.aux}% + \endgroup + \if@filesw + \immediate\openout\@mainaux\jobname.aux + \immediate\write\@mainaux{\relax}% + \fi + \process@table + \let\glb@currsize\@empty + \normalsize + \everypar{}% + \ifx\normalsfcodes\@empty + \ifnum\sfcode`\.=\@m + \let\normalsfcodes\frenchspacing + \else + \let\normalsfcodes\nonfrenchspacing + \fi + \fi + \@noskipsecfalse + \let \@refundefined \relax + \let\AtBeginDocument\@firstofone + \@begindocumenthook + \ifdim\topskip<1sp\global\topskip 1sp\relax\fi + \global\@maxdepth\maxdepth + \global\let\@begindocumenthook\@undefined + \ifx\@listfiles\@undefined + \global\let\@filelist\relax + \global\let\@addtofilelist\@gobble + \fi + \gdef\do##1{\global\let ##1\@notprerr}% + \@preamblecmds + \global\let \@nodocument \relax + \global\let\do\noexpand + \ignorespaces} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\includeonly}{Spaces in file names}% +\def\include#1{\relax + \ifnum\@auxout=\@partaux + \@latex@error{\string\include\space cannot be nested}\@eha + \else + \set@curr@file{#1}% + \edef\@curr@file{\@strip@tex@ext\@curr@file}% + \expandafter\@include\expandafter{\@curr@file} % deliberate space + \fi} +\def\includeonly#1{% + \@partswtrue + \let\@partlist\@empty + \@for\reserved@a:=#1 \do + {% + \expandafter\set@curr@file\expandafter{\reserved@a}% + \ifx\@partlist\@empty + \edef\@partlist{\@strip@tex@ext\@curr@file}% + \else + \edef\@partlist{\@partlist,\@strip@tex@ext\@curr@file}% + \fi + }% + } +\@onlypreamble\includeonly +\def\reserved@a#1{% +\def\@strip@tex@ext##1{% + \expandafter\@strip@tex@ext@aux + ##1\@nil\@nil + #1\@nil\relax\@nnil} +\def\@strip@tex@ext@aux##1#1\@nil##2\@nnil{% + \ifx\relax##2\@empty + \expandafter\@cdr\expandafter\@empty\@cdr{}##1% + \else##1\fi}}% +\expandafter\reserved@a +\expandafter{\detokenize{.tex}} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\includeonly}{Spaces in file names}% + +\def\includeonly#1{% + \@partswtrue + \set@curr@file{\zap@space#1 \@empty}% + \let\@partlist\@curr@file + } + +\def\include#1{\relax + \ifnum\@auxout=\@partaux + \@latex@error{\string\include\space cannot be nested}\@eha + \else + \set@curr@file{#1 }% + \expandafter\@include\@curr@file + \fi} + +\let\@strip@tex@ext\@undefined +\let\@strip@tex@ext@aux\@undefined + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\includeonly}{Spaces in file names}% +\def\includeonly#1{% + \@partswtrue + \edef\@partlist{\zap@space#1 \@empty}} + +\def\include#1{\relax + \ifnum\@auxout=\@partaux + \@latex@error{\string\include\space cannot be nested}\@eha + \else \@include#1 \fi} + +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\@include}{Spaces in file names and hooks}% +\def\@include#1 {% + \clearpage + \if@filesw + \immediate\write\@mainaux{\string\@input{#1.aux}}% + \fi + \@tempswatrue + \if@partsw + \@tempswafalse + \edef\reserved@b{#1}% + \@for\reserved@a:=\@partlist\do + {\ifx\reserved@a\reserved@b\@tempswatrue\fi}% + \fi + \if@tempswa + \let\@auxout\@partaux + \if@filesw + \immediate\openout\@partaux "#1.aux" + \immediate\write\@partaux{\relax}% + \fi + \@filehook@set@CurrentFile + \UseHook{include/before}% + \UseHook{include/before/#1}% + \@input@{#1.tex}% + \UseHook{include/end/#1}% + \UseHook{include/end}% + \clearpage + \UseHook{include/after/#1}% + \UseHook{include/after}% + \clearpage + \@writeckpt{#1}% + \if@filesw + \immediate\closeout\@partaux + \fi + \else + \deadcycles\z@ + \@nameuse{cp@#1}% + \fi + \let\@auxout\@mainaux} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@include}{Spaces in file names}% +\def\@include#1 {% + \clearpage + \if@filesw + \immediate\write\@mainaux{\string\@input{#1.aux}}% + \fi + \@tempswatrue + \if@partsw + \@tempswafalse + \edef\reserved@b{#1}% + \@for\reserved@a:=\@partlist\do + {\ifx\reserved@a\reserved@b\@tempswatrue\fi}% + \fi + \if@tempswa + \let\@auxout\@partaux + \if@filesw + \immediate\openout\@partaux #1.aux + \immediate\write\@partaux{\relax}% + \fi + \@input@{#1.tex}% + \clearpage + \@writeckpt{#1}% + \if@filesw + \immediate\closeout\@partaux + \fi + \else + \deadcycles\z@ + \@nameuse{cp@#1}% + \fi + \let\@auxout\@mainaux} \EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\quote@name}{Quote file names}% +\def\quote@name#1{"\quote@@name#1\@gobble""} +\def\quote@@name#1"{#1\quote@@name} +\def\unquote@name#1{\quote@@name#1\@gobble"} +\DeclareRobustCommand\IfFileExists[1]{% + \set@curr@file{#1}% + \expandafter\IfFileExists@\expandafter{\@curr@file}} +\long\def \IfFileExists@#1#2#3{% + \openin\@inputcheck"#1" % + \ifeof\@inputcheck + \ifx\input@path\@undefined + \def\reserved@a{#3}% + \else + \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% + \fi + \else + \closein\@inputcheck + \edef\@filef@und{"#1" }% + \def\reserved@a{#2}% + \fi + \reserved@a} +\long\def\@iffileonpath#1{% + \let\reserved@a\@secondoftwo + \expandafter\@tfor\expandafter\reserved@b\expandafter + :\expandafter=\input@path\do{% + \openin\@inputcheck\expandafter\quote@name\expandafter{\reserved@b#1} % + \ifeof\@inputcheck\else + \edef\@filef@und{\expandafter\quote@name\expandafter{\reserved@b#1} }% + \let\reserved@a\@firstoftwo% + \closein\@inputcheck + \@break@tfor + \fi}% + \reserved@a} +\EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\DeclareEncodingSubset}{Text companion symbols}% - -\let\DeclareEncodingSubset\@undefined -\let\CheckEncodingSubset\@undefined - -\DeclareTextSymbolDefault{\textdollar}{OT1} -\DeclareTextSymbolDefault{\textsterling}{OT1} -\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup - \ifdim \fontdimen\@ne\font >\z@ - \slshape - \else - \upshape - \fi - \char`\$\egroup} -\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup - \ifdim \fontdimen\@ne\font >\z@ - \itshape - \else - \fontshape{ui}\selectfont - \fi - \char`\$\egroup} -\DeclareTextCommand{\textperthousand}{T1} - {\%\char 24 } - -\DeclareTextSymbolDefault{\textasteriskcentered}{OMS} -\DeclareTextSymbolDefault{\textbullet}{OMS} -\DeclareTextSymbolDefault{\textdaggerdbl}{OMS} -\DeclareTextSymbolDefault{\textdagger}{OMS} -\DeclareTextSymbolDefault{\textparagraph}{OMS} -\DeclareTextSymbolDefault{\textperiodcentered}{OMS} -\DeclareTextSymbolDefault{\textsection}{OMS} - -\DeclareTextSymbolDefault{\textbardbl}{OMS} -\let\textbrokenbar\@undefined -\let\textcelsius\@undefined -\let\textcent\@undefined -\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}} -\let\textdegree\@undefined -\let\textdiv\@undefined -\let\textlnot\@undefined -\let\textonehalf\@undefined -\let\textonequarter\@undefined -\let\textonesuperior\@undefined -\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}} -\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}} -\let\textpm\@undefined -\let\textquotesingle\@undefined -\let\textquotestraightbase\@undefined -\let\textquotestraightdblbase\@undefined -\DeclareTextCommandDefault{\textregistered}{\textcircled{% - \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}} -\let\textthreequartersemdash\@undefined -\let\textthreequarters\@undefined -\let\textthreesuperior\@undefined -\let\texttimes\@undefined -\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}} -\let\texttwelveudash\@undefined -\let\texttwosuperior\@undefined -\let\textyen\@undefined - -\let\textcapitalcompwordmark\@undefined -\let\textascendercompwordmark\@undefined - -\DeclareTextAccentDefault{\textcircled}{OMS} -\DeclareTextAccentDefault{\t}{OML} - -\let\capitalacute\@undefined -\let\capitalbreve\@undefined -\let\capitalcaron\@undefined -\let\capitalcedilla\@undefined -\let\capitalcircumflex\@undefined -\let\capitaldieresis\@undefined -\let\capitaldotaccent\@undefined -\let\capitalgrave\@undefined -\let\capitalhungarumlaut\@undefined -\let\capitalmacron\@undefined -\let\capitalnewtie\@undefined -\let\capitalogonek\@undefined -\let\capitalring\@undefined -\let\capitaltie\@undefined -\let\capitaltilde\@undefined -\let\newtie\@undefined + {\quote@name}{Quote file names}% -\let\textlbrackdbl\@undefined -\let\textrbrackdbl\@undefined +\let\quote@name\@undefined +\let\quote@@name\@undefined +\let\unquote@name\@undefined -\let\texteightoldstyle\@undefined -\let\textfiveoldstyle\@undefined -\let\textfouroldstyle\@undefined -\let\textnineoldstyle\@undefined -\let\textoneoldstyle\@undefined -\let\textsevenoldstyle\@undefined -\let\textsixoldstyle\@undefined -\let\textthreeoldstyle\@undefined -\let\texttwooldstyle\@undefined -\let\textzerooldstyle\@undefined +\let\IfFileExists@\@undefined -\let\textacutedbl\@undefined -\let\textasciiacute\@undefined -\let\textasciibreve\@undefined -\let\textasciicaron\@undefined -\let\textasciidieresis\@undefined -\let\textasciigrave\@undefined -\let\textasciimacron\@undefined -\let\textgravedbl\@undefined -\let\texttildelow\@undefined +\long\def \IfFileExists#1#2#3{% + \openin\@inputcheck#1 % + \ifeof\@inputcheck + \ifx\input@path\@undefined + \def\reserved@a{#3}% + \else + \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}% + \fi + \else + \closein\@inputcheck + \edef\@filef@und{#1 }% + \def\reserved@a{#2}% + \fi + \reserved@a} -\let\textbaht\@undefined -\let\textbigcircle\@undefined -\let\textborn\@undefined -\let\textcentoldstyle\@undefined -\let\textcircledP\@undefined -\let\textcopyleft\@undefined -\let\textdblhyphenchar\@undefined -\let\textdblhyphen\@undefined -\let\textdied\@undefined -\let\textdiscount\@undefined -\let\textdivorced\@undefined -\let\textdollaroldstyle\@undefined -\let\textguarani\@undefined -\let\textleaf\@undefined -\let\textlquill\@undefined -\let\textmarried\@undefined -\let\textmho\@undefined -\let\textmusicalnote\@undefined -\let\textnaira\@undefined -\let\textopenbullet\@undefined -\let\textpeso\@undefined -\let\textpilcrow\@undefined -\let\textrecipe\@undefined -\let\textreferencemark\@undefined -\let\textrquill\@undefined -\let\textservicemark\@undefined -\let\textsurd\@undefined +\long\def\@iffileonpath#1{% + \let\reserved@a\@secondoftwo + \expandafter\@tfor\expandafter\reserved@b\expandafter + :\expandafter=\input@path\do{% + \openin\@inputcheck\reserved@b#1 % + \ifeof\@inputcheck\else + \edef\@filef@und{\reserved@b#1 }% + \let\reserved@a\@firstoftwo% + \closein\@inputcheck + \@break@tfor + \fi}% + \reserved@a} -\DeclareTextCommand{\textpertenthousand}{T1} - {\%\char 24\char 24 } +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\@swaptwoargs}{Don't lose the file name}% +\long\def\@swaptwoargs#1#2{#2#1} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@swaptwoargs}{Don't lose the file name}% +\let\@swaptwoargs\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\@iinput}{Change in file error handling}% +\def\@iinput#1{% + \InputIfFileExists{#1}{}% + {\filename@parse\@curr@file + \edef\reserved@a{\noexpand\@missingfileerror + {\filename@area\filename@base}% + {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% + \reserved@a + \edef\reserved@a{\noexpand\@iinput{% + \@missingfile@area\@missingfile@base.\@missingfile@ext}}% + \reserved@a}} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\@iinput}{Quote file names}% -\let\textlangle\@undefined -\let\textrangle\@undefined +\def\@iinput#1{% + \InputIfFileExists{#1}{}% + {\filename@parse\@curr@file + \edef\reserved@a{\noexpand\@missingfileerror + {\filename@area\filename@base}% + {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% + \reserved@a}} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@iinput}{Quote file names}% +\def\@iinput#1{% + \InputIfFileExists{#1}{}% + {\filename@parse{#1}% + \edef\reserved@a{\noexpand\@missingfileerror + {\filename@area\filename@base}% + {\ifx\filename@ext\relax tex\else\filename@ext\fi}}% + \reserved@a}} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\@missingfileerror}{Do not load missing file immediately}% +\gdef\@missingfileerror#1#2{% + \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J% + Type X to quit or to proceed,^^J% + or enter new name. (Default extension: #2)^^J}% + \message{Enter file name: }% + {\endlinechar\m@ne + \global\read\m@ne to\@gtempa}% + \ifx\@gtempa\@empty + \let\@missingfile@area\@empty + \let\@missingfile@base\@empty + \def\@missingfile@ext{tex}% + \else + \def\reserved@b{\batchmode\read-1 to \reserved@a}% + \def\reserved@a{x}\ifx\reserved@a\@gtempa\reserved@b\fi + \def\reserved@a{X}\ifx\reserved@a\@gtempa\reserved@b\fi + \filename@parse\@gtempa + \edef\filename@ext{% + \ifx\filename@ext\relax#2\else\filename@ext\fi}% + \edef\reserved@a{% + \noexpand\IfFileExists + {\filename@area\filename@base.\filename@ext}% + {\def\noexpand\@missingfile@area{\filename@area}% + \def\noexpand\@missingfile@base{\filename@base}% + \def\noexpand\@missingfile@ext {\filename@ext}}% + {\noexpand\@missingfileerror + {\filename@area\filename@base}{\filename@ext}}}% + \reserved@a + \fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@missingfileerror}{Do not load missing file immediately}% -\let\textcolonmonetary\@undefined -\let\textdong\@undefined -\let\textdownarrow\@undefined -\let\textleftarrow\@undefined -\let\textlira\@undefined -\let\textrightarrow\@undefined -\let\textuparrow\@undefined -\let\textwon\@undefined +\gdef\@missingfileerror#1#2{% + \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J% + Type X to quit or to proceed,^^J% + or enter new name. (Default extension: #2)^^J}% + \message{Enter file name: }% + {\endlinechar\m@ne + \global\read\m@ne to\@gtempa}% + \ifx\@gtempa\@empty + \else + \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi + \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi + \filename@parse\@gtempa + \edef\filename@ext{% + \ifx\filename@ext\relax#2\else\filename@ext\fi}% + \edef\reserved@a{% + \noexpand\InputIfFileExists + {\filename@area\filename@base.\filename@ext}% + {}% + {\noexpand\@missingfileerror + {\filename@area\filename@base}{\filename@ext}}}% + \reserved@a + \fi} -\let\textestimated\@undefined -\let\textnumero\@undefined +\EndIncludeInRelease +%%% From File: ltoutenc.dtx +\IncludeInRelease{2017/04/15}{\DeclareTextCompositeCommand} + {test for undeclared accent}% +\def\DeclareTextCompositeCommand#1#2#3#4{% + \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname + \ifx\reserved@a\relax + \DeclareTextCommand#1{#2}{% + \@latex@error{\string#1 undeclared in encoding #2}\@eha}% + \@latex@info{Composite with undeclared \string#1 in encoding #2}% + \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname + \fi + \expandafter\expandafter\expandafter\ifx + \expandafter\@car\reserved@a\relax\relax\@nil \@text@composite \else + \edef\reserved@b##1{% + \def\expandafter\noexpand + \csname#2\string#1\endcsname####1{% + \noexpand\@text@composite + \expandafter\noexpand\csname#2\string#1\endcsname + ####1\noexpand\@empty\noexpand\@text@composite + {##1}}}% + \expandafter\reserved@b\expandafter{\reserved@a{##1}}% + \fi + \expandafter\def\csname\expandafter\string\csname + #2\endcsname\string#1-\string#3\@empty\endcsname{#4}% + } +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\DeclareTextCompositeCommand} + {test for undeclared accent}% +\def\DeclareTextCompositeCommand#1#2#3#4{% + \expandafter\let\expandafter\reserved@a + \csname#2\string#1\endcsname + \expandafter\expandafter\expandafter\ifx + \expandafter\@car\reserved@a\relax\relax\@nil + \@text@composite \else + \edef\reserved@b##1{% + \def\expandafter\noexpand + \csname#2\string#1\endcsname####1{% + \noexpand\@text@composite + \expandafter\noexpand\csname#2\string#1\endcsname + ####1\noexpand\@empty\noexpand\@text@composite + {##1}}}% + \expandafter\reserved@b\expandafter{\reserved@a{##1}}% + \fi + \expandafter\def\csname\expandafter\string\csname + #2\endcsname\string#1-\string#3\@empty\endcsname{#4}} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\UseTextAccent}{Make commands robust}% +\DeclareRobustCommand*\UseTextAccent[3]{% + \hmode@start@before@group + {% + \let\hmode@start@before@group\@firstofone + \let\@curr@enc\cf@encoding + \@use@text@encoding{#1}% + #2{\@use@text@encoding\@curr@enc#3}% + }} +\DeclareRobustCommand*\UseTextSymbol[2]{% + \hmode@start@before@group + {% + \def\@wrong@font@char{\MessageBreak + for \noexpand\symbol`\string#2'}% + \@use@text@encoding{#1}% + #2% + }% + } +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\UseTextAccent}{Make commands robust}% -\let\textflorin\@undefined -\let\textcurrency\@undefined +\kernel@make@fragile\UseTextAccent +\kernel@make@fragile\UseTextSymbol -\let\textfractionsolidus\@undefined -\let\textohm\@undefined -\let\textmu\@undefined -\let\textminus\@undefined +\EndIncludeInRelease +\IncludeInRelease{2015/10/01}{\textcommabelow}{comma accent}% +\DeclareTextCommandDefault\textcommabelow[1] + {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex + \hbox{\check@mathfonts\fontsize\ssf@size\z@ + \math@fontsfalse\selectfont,}\hidewidth}\egroup} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\textcommabelow}{comma accent}% +\let\textcommabelow\@undefined +\expandafter + \let\csname\string\T1\string\c-G\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-K\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-k\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-L\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-l\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-N\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-n\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-R\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-r\endcsname\@undefined +\EndIncludeInRelease +\IncludeInRelease{2016/02/01}{\textcommaabove}{comma above}% +\DeclareTextCommandDefault\textcommaabove[1]{% + \hmode@bgroup + \ooalign{% + \hidewidth + \raise.7ex\hbox{% + \check@mathfonts\fontsize\ssf@size\z@\math@fontsfalse\selectfont`% + }% + \hidewidth\crcr + \null#1\crcr + }% + \egroup +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\textcommaabove}{comma above}% +\let\textcommaabove\@undefined +\expandafter + \let\csname\string\OT1\string\c-g\endcsname\@undefined +\expandafter + \let\csname\string\T1\string\c-g\endcsname\@undefined +\EndIncludeInRelease +%%% From File: ltcounts.dtx -\let\textblank\@undefined -\let\textinterrobangdown\@undefined -\let\textinterrobang\@undefined +\IncludeInRelease{2015/01/01}{\@stpelt} + {Reset nested counters}% +\def\@stpelt#1{\global\csname c@#1\endcsname \m@ne\stepcounter{#1}}% +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@stpelt} + {Reset nested counters}%% +\def\@stpelt#1{\global\csname c@#1\endcsname \z@}% +\EndIncludeInRelease +\IncludeInRelease{2018-04-01} + {\@removefromreset}{Add interfaces}% +\def\@removefromreset#1#2{% + \@ifundefined{c@#2}\relax + {\begingroup + \expandafter\let\csname c@#1\endcsname\@removefromreset + \def\@elt##1{% + \expandafter\ifx\csname c@##1\endcsname\@removefromreset + \else + \noexpand\@elt{##1}% + \fi}% + \expandafter\xdef\csname cl@#2\endcsname + {\csname cl@#2\endcsname}% + \endgroup}} -\let\texteuro\@undefined +\def\@ifbothcounters#1#2#3{% + \@ifundefined{c@#1}{\@nocounterr{#1}}% + {% else counter is defined + \@ifundefined{c@#2}{\@nocounterr{#2}}% + {% else both counter and within are defined + #3}}} -\let\textcelsius\@undefined -\let\textonesuperior\@undefined -\let\textthreequartersemdash\@undefined -\let\textthreesuperior\@undefined -\let\texttwelveudash\@undefined -\let\texttwosuperior\@undefined -\let\textbardbl\@undefined +\def\counterwithout {\@ifstar\counterwithout@s\counterwithout@x} +\def\counterwithout@s#1#2{% + \@ifbothcounters{#1}{#2}{\@removefromreset{#1}{#2}}} +\def\counterwithout@x#1#2{% + \@ifbothcounters{#1}{#2}% + {\@removefromreset{#1}{#2}% + \expandafter + \gdef\csname the#1\expandafter\endcsname\expandafter + {\expandafter + \@arabic\csname c@#1\endcsname}}} -\let\UseLegacyTextSymbols\@undefined -\let\textlegacyasteriskcentered\@undefined -\let\textlegacybardbl\@undefined -\let\textlegacybullet\@undefined -\let\textlegacydaggerdbl\@undefined -\let\textlegacydagger\@undefined -\let\textlegacyparagraph\@undefined -\let\textlegacyperiodcentered\@undefined -\let\textlegacysection\@undefined +\def\counterwithin{\@ifstar\counterwithin@s\counterwithin@x} +\def\counterwithin@s#1#2{% + \@ifbothcounters{#1}{#2}{\@addtoreset{#1}{#2}}} +\def\counterwithin@x#1#2{% + \@ifbothcounters{#1}{#2}% + {\@addtoreset{#1}{#2}% + \expandafter + \gdef\csname the#1\expandafter\endcsname\expandafter + {\csname the#2\expandafter\endcsname\expandafter + .\expandafter + \@arabic\csname c@#1\endcsname}}} \EndIncludeInRelease - - +\IncludeInRelease{0000-00-00} + {\@removefromreset}{Add interfaces}% +\let \@removefromreset \undefined +\let \@ifbothcounters \undefined +\let \counterwithout \undefined +\let \counterwithout@s \undefined +\let \counterwithout@x \undefined +\let \counterwithin \undefined +\let \counterwithin@s \undefined +\let \counterwithin@x \undefined +\EndIncludeInRelease +\IncludeInRelease{2015/01/01}{\@fnsymbol}{Use \TexOrMath}% +\def\@fnsymbol#1{% + \ifcase#1\or \TextOrMath\textasteriskcentered *\or + \TextOrMath \textdagger \dagger\or + \TextOrMath \textdaggerdbl \ddagger \or + \TextOrMath \textsection \mathsection\or + \TextOrMath \textparagraph \mathparagraph\or + \TextOrMath \textbardbl \|\or + \TextOrMath {\textasteriskcentered\textasteriskcentered}{**}\or + \TextOrMath {\textdagger\textdagger}{\dagger\dagger}\or + \TextOrMath {\textdaggerdbl\textdaggerdbl}{\ddagger\ddagger}\else + \@ctrerr \fi +}% +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\@fnsymbol}{Use \TexOrMath}% +\def\@fnsymbol#1{\ensuremath{% + \ifcase#1\or *\or \dagger\or \ddagger\or \mathsection\or + \mathparagraph\or \|\or **\or \dagger\dagger + \or \ddagger\ddagger \else\@ctrerr\fi}}% +\EndIncludeInRelease +\IncludeInRelease{2015/01/01}{\TextOrMath}{\TextOrMath}% +\begingroup\expandafter\expandafter\expandafter\endgroup +\expandafter\ifx\csname protected\endcsname\relax +\DeclareRobustCommand\TextOrMath{% + \ifmmode \expandafter\@secondoftwo + \else \expandafter\@firstoftwo \fi} +\protected@edef\TextOrMath#1#2{\TextOrMath{#1}{#2}} +\else +\protected\expandafter\def\csname TextOrMath\space\endcsname{% + \ifmmode \expandafter\@secondoftwo + \else \expandafter\@firstoftwo \fi} +\edef\TextOrMath#1#2{% + \expandafter\noexpand\csname TextOrMath\space\endcsname + {#1}{#2}} +\fi +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}{\TextOrMath}{\TextOrMath}% +\let\TextOrMath\@undefined +\EndIncludeInRelease +%%% From File: ltlength.dtx +\IncludeInRelease{2015/01/01}% + {\setlength}{Using \setlength with \dimen0}% +\def\setlength#1#2{#1 #2\relax} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\setlength}{Using \setlength with \dimen0}% +\def\setlength#1#2{#1#2\relax} +\EndIncludeInRelease %%% From File: ltfssbas.dtx %% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf \IncludeInRelease{2020/02/02}% @@ -8660,6 +3885,24 @@ of this package available from CTAN} }% \fi}% \EndIncludeInRelease +\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}% + {\usefont}{Drop m in usefont}% + +\DeclareRobustCommand\usefont[4]{\fontencoding{#1}% + \edef\f@family{#2}% + \edef\f@series{#3}% + \edef\f@shape{#4}\selectfont + \ignorespaces} + +\EndIncludeInRelease \IncludeInRelease{2020/02/02}% {\LoadFontDefinitionFile}{Loading .fd files}% \def\LoadFontDefinitionFile#1#2{% @@ -8676,7 +3919,7 @@ of this package available from CTAN} \let\LoadFontDefinitionFile\@undefined \EndIncludeInRelease \IncludeInRelease{2020/02/02}% - {\DeclareFontFamilySubstitution}{Provide family substituation}% + {\DeclareFontFamilySubstitution}{Provide family substitution}% \begingroup \nfss@catcodes \gdef\DeclareFontFamilySubstitution#1#2#3{% @@ -8707,7 +3950,7 @@ of this package available from CTAN} \endgroup \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\DeclareFontFamilySubstitution}{Provide family substituation}% + {\DeclareFontFamilySubstitution}{Provide family substitution}% \let\DeclareFontFamilySubstitution\@undefined \EndIncludeInRelease @@ -8742,7 +3985,7 @@ of this package available from CTAN} } \EndIncludeInRelease \IncludeInRelease{2015/01/01}{\wrong@fontshape}% - {Font substituation in preamble}% + {Font substitution in preamble}% \def\wrong@fontshape{% \csname D@\f@encoding\endcsname % install defaults if in math \edef\reserved@a{\csname\curr@fontshape\endcsname}% @@ -8776,7 +4019,7 @@ of this package available from CTAN} \pickup@font} \EndIncludeInRelease \IncludeInRelease{0000/00/00}{\wrong@fontshape}% - {Font substituation in preamble}% + {Font substitution in preamble}% \def\wrong@fontshape{% \csname D@\f@encoding\endcsname \edef\reserved@a{\csname\curr@fontshape\endcsname}% @@ -9263,1172 +4506,6413 @@ of this package available from CTAN} \DeclareFontSeriesChangeRule {ulx}{?m}{ul}{} \DeclareFontSeriesChangeRule {ul}{?m}{ul}{} \DeclareFontSeriesChangeRule {x}{?m}{m}{} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\DeclareFontSeriesChangeRule}{Series change rules}% + +\let\DeclareFontSeriesChangeRule\@undefined + +\EndIncludeInRelease +\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{2020/02/02}% + {\fontseries}{delay fontseries update}% + +\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}} +\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} +\let\delayed@f@adjustment\@undefined + +\ifx\@forced@seriestrue\@undefined \else + \expandafter\newif\csname if@forced@series\endcsname +\fi + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\fontseries}{delay fontseries update}% + +\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} +\let\fontseriesforce\@undefined + +\EndIncludeInRelease +\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 + \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\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 +} +\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% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\merge@font@series}{Merge series values}% + +\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 + +\EndIncludeInRelease + +\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}% + +\let\DeclareFontShapeChangeRule\@undefined +\let\ulcshape\@undefined +\let\ulcdefault\@undefined +\let\swshape\@undefined +\let\swdefault\@undefined +\let\sscshape\@undefined +\let\sscdefault\@undefined + +\EndIncludeInRelease +\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}% + {\fontshape}{Font shape change}% + +\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}} +\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}} + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\fontshape}{Font shape change}% + +\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} +\let\fontshapeforce\@undefined + +\EndIncludeInRelease + +\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\merge@font@shape@#1#2#3\@nil{% + \def\reserved@a{#3}% + \ifx\reserved@a\@empty + \edef\f@shape{#2}% + \else + \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 +} +\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}% +\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}% + {\merge@font@shape}{Font shape change rules}% + +\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} +\let\fontshapeforce\@undefined + +\let\merge@font@shape\@undefined +\let\merge@font@shape@\@undefined + +\let\merge@font@shape@without@substitution\@undefined +\let\merge@font@shape@without@substitution@\@undefined +\let\delayed@merge@font@shape\@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{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 + \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} +\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 +\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: ltfssdcl.dtx +%% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf, +%% all rights reserved. +\IncludeInRelease{2015/01/01} + {\select@group}{\select@group}% +\def\select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top + \begingroup + \escapechar\m@ne + \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \init@restore@version + \xdef#1{\noexpand\use@mathgroup\noexpand#2% + {\number\csname c@mv@\math@version\endcsname}}% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used in + version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00} + {\select@group}{\select@group}% +\def\select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n + \begingroup + \escapechar\m@ne + \getanddefine@fonts + {\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \init@restore@version + \xdef#1{\noexpand\use@mathgroup\noexpand#2% + {\number\csname c@mv@\math@version\endcsname}}% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used in + version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01} + {\document@select@group}{\document@select@group}% +\def\document@select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top + \begingroup + \escapechar\m@ne + \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \expandafter\extract@alph@from@version + \csname mv@\math@version\expandafter\endcsname + \expandafter{\number\csname + c@mv@\math@version\endcsname}% + #1% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used + in version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + \expandafter#1\ifx\math@bgroup\bgroup{#4}\else#4\fi + }% +} +\EndIncludeInRelease +\IncludeInRelease{2015/01/01} + {\document@select@group}{\document@select@group}% + +\def\document@select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\e@mathgroup@top + \begingroup + \escapechar\m@ne + \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \expandafter\extract@alph@from@version + \csname mv@\math@version\expandafter\endcsname + \expandafter{\number\csname + c@mv@\math@version\endcsname}% + #1% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used + in version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\EndIncludeInRelease + +\IncludeInRelease{0000/00/00} + {\document@select@group}{\document@select@group}% + +\def\document@select@group#1#2#3#4{% + \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi + {% + \ifmmode + \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n + \begingroup + \escapechar\m@ne + \getanddefine@fonts + {\csname c@mv@\math@version\endcsname}#3% + \globaldefs\@ne \math@fonts + \endgroup + \expandafter\extract@alph@from@version + \csname mv@\math@version\expandafter\endcsname + \expandafter{\number\csname + c@mv@\math@version\endcsname}% + #1% + \global\advance\csname c@mv@\math@version\endcsname\@ne + \else + \let#1\relax + \@latex@error{Too many math alphabets used + in version \math@version}% + \@eha + \fi + \else \expandafter\non@alpherr\fi + #1{#4}% + }% +} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {DeclareMathAccent}{Make math accents robust}% +\def\DeclareMathAccent#1#2#3#4{% + \expandafter\in@\csname sym#3\expandafter\endcsname + \expandafter{\group@list}% + \ifin@ + \begingroup + \count\z@=#4\relax + \count\tw@\count\z@ + \divide\count\z@\sixt@@n + \count@\count\z@ + \multiply\count@\sixt@@n + \advance\count\tw@-\count@ + \if\relax\noexpand#1% is command? + \edef\reserved@a{\noexpand\in@ + {\expandafter\@gobble\string\mathaccent} + {\expandafter\meaning + \csname\expandafter\@gobble\string#1\space\endcsname}}% + \reserved@a + \ifin@ + \expandafter\let + \csname\expandafter\@gobble\string#1\space\endcsname + \@undefined + \expandafter\set@mathaccent + \csname sym#3\endcsname#1#2% + {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% + \@font@info{Redeclaring math accent \string#1}% + \else + \expandafter\ifx + \csname\expandafter\@gobble\string#1\endcsname + \relax + \expandafter\set@mathaccent + \csname sym#3\endcsname#1#2% + {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% + \else + \@latex@error{Command `\string#1' already defined}\@eha + \fi + \fi + \else + \@latex@error{Not a command name: `\noexpand#1'}\@eha + \fi + \endgroup + \else + \@latex@error{Symbol font `#3' is not defined}\@eha + \fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {DeclareMathAccent}{Make math accents robust}% +\def\DeclareMathAccent#1#2#3#4{% + \expandafter\in@\csname sym#3\expandafter\endcsname + \expandafter{\group@list}% + \ifin@ + \begingroup + \count\z@=#4\relax + \count\tw@\count\z@ + \divide\count\z@\sixt@@n + \count@\count\z@ + \multiply\count@\sixt@@n + \advance\count\tw@-\count@ + \if\relax\noexpand#1% is command? + \edef\reserved@a{\noexpand\in@ + {\expandafter\@gobble\string\mathaccent}{\meaning#1}}% + \reserved@a + \ifin@ + \expandafter\set@mathaccent + \csname sym#3\endcsname#1#2% + {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% + \@font@info{Redeclaring math accent \string#1}% + \else + \expandafter\ifx + \csname\expandafter\@gobble\string#1\endcsname + \relax + \expandafter\set@mathaccent + \csname sym#3\endcsname#1#2% + {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}% + \else + \@latex@error{Command `\string#1' already defined}\@eha + \fi + \fi + \else + \@latex@error{Not a command name: `\noexpand#1'}\@eha + \fi + \endgroup + \else + \@latex@error{Symbol font `#3' is not defined}\@eha + \fi +} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\set@mathaccent}{makemath accents robust}% +\def\set@mathaccent#1#2#3#4{% + \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}% + \MakeRobust#2% +} +\@onlypreamble\set@mathaccent +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\set@mathaccent}{makemath accents robust}% + +\def\set@mathaccent#1#2#3#4{% + \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}} + +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\set@mathdelimiter}{make delimiters robust}% +\def\set@mathdelimiter#1#2#3#4#5#6{% + \protected + \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5% + \hexnumber@#2#6 }% +} +\@onlypreamble\set@mathdelimiter +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\set@mathdelimiter}{make delimiters robust}% + +\def\set@mathdelimiter#1#2#3#4#5#6{% + \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5% + \hexnumber@#2#6 }} + +\EndIncludeInRelease +%%% From File: ltfssini.dtx +%% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf, +%% all rights reserved. +\IncludeInRelease{2020/02/02}% + {\DeclareFontSeriesDefault}{Custom series}% +\let\DeclareFontSeriesDefault\@undefined % for rollback +\newcommand\DeclareFontSeriesDefault[3][]{% + \def\reserved@a{#1}% + \ifx\reserved@a\@empty + \ifcsname #2series\endcsname % supported are + % \[md/bf]default + \expandafter\def + \csname #2default\endcsname{#3\@empty}% + \expandafter\def + \csname #2default@previous\endcsname{#3\@empty}% + \else + \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% + {Mandatory first argument must be 'md' or 'bf'.} + \fi + \else + \ifcsname #2series@#1\endcsname % supported are + % \[md/bf]series@[rm/sf/tt] + \expandafter\edef + \csname #2series@#1\endcsname{#3}% + \expandafter\let + \csname #2series@#1@kernel\endcsname\@undefined + \else + \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% + {Optional argument must be 'rm', 'sf', or 'tt'. \MessageBreak + Mandatory first argument must be 'md' or 'bf'.} + \fi + \fi +} + +\def\bfseries@rm{bx} +\def\bfseries@sf{bx} +\def\bfseries@tt{bx} +\let\bfseries@rm@kernel\bfseries@rm +\let\bfseries@sf@kernel\bfseries@sf +\let\bfseries@tt@kernel\bfseries@tt +\def\mdseries@rm{m} +\def\mdseries@sf{m} +\def\mdseries@tt{m} + +\def\@meta@family@list{\@elt{rm}\@elt{sf}\@elt{tt}} +\def\prepare@family@series@update#1#2{% + \if@forced@series + \fontfamily#2% + \else + \expand@font@defaults + \let\target@series@value\@empty + \def\target@meta@family@value{#1}% + \expandafter\edef\csname ??def@ult\endcsname{\f@family}% + \let\@elt\update@series@target@value + \@meta@family@list + \@elt{??}% + \let\@elt\relax + \fontfamily#2% + \ifx\target@series@value\@empty + \else + \ifx \f@series\target@series@value + \else + \maybe@load@fontshape + \series@maybe@drop@one@m\target@series@value\f@series + \fi + \fi + \fi +} +\def\update@series@target@value#1{% + \def\reserved@a{#1}% + \ifx\target@meta@family@value\reserved@a % rm -> rm do nothing + \else + \expandafter\ifx\csname#1def@ult\endcsname\f@family + \let\@elt\@gobble + \expandafter\let\expandafter\reserved@b + \csname mdseries@\target@meta@family@value\endcsname + \expandafter\let\expandafter\reserved@c + \csname bfseries@\target@meta@family@value\endcsname + \expandafter\series@maybe@drop@one@m + \csname mdseries@#1\endcsname\reserved@d + \ifx\reserved@d\f@series + \let\target@series@value\reserved@b + \else + \expandafter\series@maybe@drop@one@m + \csname bfseries@#1\endcsname\reserved@d + \ifx\reserved@d\f@series + \let\target@series@value\reserved@c + \else\ifx\f@series\mddef@ult \let\target@series@value\reserved@b + \else\ifx\f@series\bfdef@ult \let\target@series@value\reserved@c + \fi\fi\fi\fi + \fi + \fi +} +\def\init@series@setup{% + \ifx\bfseries@rm@kernel\bfseries@rm + \expandafter\in@\expandafter{\rmdefault}% + {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@rm{b}\fi\fi + \ifx\bfseries@sf@kernel\bfseries@sf + \expandafter\in@\expandafter{\sfdefault}% + {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@sf{b}\fi\fi + \ifx\bfseries@tt@kernel\bfseries@tt + \expandafter\in@\expandafter{\ttdefault}% + {cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}% + \ifin@ \else \def\bfseries@tt{b}\fi\fi + \reset@font + \ifx\seriesdefault\seriesdefault@kernel + \mdseries + \let\seriesdefault\f@series + \fi +}% +\expandafter\let\csname ver@mweights.sty\endcsname\fmtversion +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\DeclareFontSeriesDefault}{Custom series}% + +\let\DeclareFontSeriesDefault\@undefined +\let\bfseries@rm\@undefined +\let\bfseries@sf\@undefined +\let\bfseries@tt\@undefined +\let\bfseries@rm@kernel\@undefined +\let\bfseries@sf@kernel\@undefined +\let\bfseries@tt@kernel\@undefined +\let\mdseries@rm\@undefined +\let\mdseries@sf\@undefined +\let\mdseries@tt\@undefined +\expandafter\let\csname ver@mweights.sty\endcsname\@undefined + +\let\@meta@family@list\@undefined +\let\prepare@family@series@update\@undefined +\let\update@series@target@value\@undefined + +\let\init@series@setup\relax + +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\bfseries}{Custom series with hooks}% + +\def\expand@font@defaults{% + \edef\rmdef@ult{\rmdefault}% + \edef\sfdef@ult{\sfdefault}% + \edef\ttdef@ult{\ttdefault}% + \series@maybe@drop@one@m\bfdefault\bfdef@ult + \series@maybe@drop@one@m\mddefault\mddef@ult + \UseHook{expand@font@defaults}% +} + +\DeclareRobustCommand\bfseries{% + \not@math@alphabet\bfseries\mathbf + \expand@font@defaults + \ifx\bfdefault\bfdefault@previous\else + \expandafter\def\expandafter\bfdefault + \expandafter{\bfdefault\@empty}% + \let\bfdefault@previous\bfdefault + \let\bfseries@rm\bfdef@ult + \let\bfseries@sf\bfdef@ult + \let\bfseries@tt\bfdef@ult + \UseHook{bfseries/defaults}% + \fi + \ifx\f@family\rmdef@ult \fontseries\bfseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt + \else \fontseries\bfdefault + \fi\fi\fi + \UseHook{bfseries}% + \selectfont +} + +\DeclareRobustCommand\mdseries{% + \not@math@alphabet\mdseries\relax + \expand@font@defaults + \ifx\mddefault\mddefault@previous\else + \expandafter\def\expandafter\mddefault\expandafter{\mddefault\@empty}% + \let\mddefault@previous\mddefault + \let\mdseries@rm\mddef@ult + \let\mdseries@sf\mddef@ult + \let\mdseries@tt\mddef@ult + \UseHook{mdseries/defaults}% + \fi + \ifx\f@family\rmdef@ult \fontseries\mdseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt + \else \fontseries\mddefault + \fi\fi\fi + \UseHook{mdseries}% + \selectfont +} + +\DeclareRobustCommand\rmfamily{% + \not@math@alphabet\rmfamily\mathrm + \prepare@family@series@update{rm}\rmdefault + \UseHook{rmfamily}% + \selectfont} +\DeclareRobustCommand\sffamily{% + \not@math@alphabet\sffamily\mathsf + \prepare@family@series@update{sf}\sfdefault + \UseHook{sffamily}% + \selectfont} +\DeclareRobustCommand\ttfamily{% + \not@math@alphabet\ttfamily\mathtt + \prepare@family@series@update{tt}\ttdefault + \UseHook{ttfamily}% + \selectfont} +\NewHook{rmfamily} +\NewHook{sffamily} +\NewHook{ttfamily} +\NewHook{normalfont} +\NewHook{expand@font@defaults} +\NewHook{bfseries} +\NewHook{bfseries/defaults} +\NewHook{mdseries} +\NewHook{mdseries/defaults} +\let\@rmfamilyhook\@empty +\let\@sffamilyhook\@empty +\let\@ttfamilyhook\@empty +\let\@defaultfamilyhook\@empty %FMi sort out +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\bfseries}{Custom series with hooks}% + +\def\expand@font@defaults{% + \edef\rmdef@ult{\rmdefault}% + \edef\sfdef@ult{\sfdefault}% + \edef\ttdef@ult{\ttdefault}% + \edef\bfdef@ult{\bfdefault}% + \edef\mddef@ult{\mddefault}% + \edef\famdef@ult{\familydefault}% +} + +\DeclareRobustCommand\bfseries{% + \not@math@alphabet\bfseries\mathbf + \expand@font@defaults + \ifx\f@family\rmdef@ult \fontseries\bfseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt + \else \fontseries\bfdefault + \fi\fi\fi + \selectfont +} + +\DeclareRobustCommand\mdseries{% + \not@math@alphabet\mdseries\relax + \expand@font@defaults + \ifx\f@family\rmdef@ult \fontseries\mdseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt + \else \fontseries\mddefault + \fi\fi\fi + \selectfont +} + +\DeclareRobustCommand\rmfamily{% + \not@math@alphabet\rmfamily\mathrm + \prepare@family@series@update{rm}\rmdefault + \@rmfamilyhook + \selectfont} +\DeclareRobustCommand\sffamily{% + \not@math@alphabet\sffamily\mathsf + \prepare@family@series@update{sf}\sfdefault + \@sffamilyhook + \selectfont} +\DeclareRobustCommand\ttfamily{% + \not@math@alphabet\ttfamily\mathtt + \prepare@family@series@update{tt}\ttdefault + \@ttfamilyhook + \selectfont} + + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\bfseries}{Custom series with hooks}% + +\let\expand@font@defaults\@undefined + +\DeclareRobustCommand\bfseries + {\not@math@alphabet\bfseries\mathbf + \fontseries\bfdefault\selectfont} +\DeclareRobustCommand\mdseries + {\not@math@alphabet\mdseries\relax + \fontseries\mddefault\selectfont} +\DeclareRobustCommand\rmfamily + {\not@math@alphabet\rmfamily\mathrm + \fontfamily\rmdefault\selectfont} +\DeclareRobustCommand\sffamily + {\not@math@alphabet\sffamily\mathsf + \fontfamily\sfdefault\selectfont} +\DeclareRobustCommand\ttfamily + {\not@math@alphabet\ttfamily\mathtt + \fontfamily\ttdefault\selectfont} + +\let\@rmfamilyhook\@undefined +\let\@sffamilyhook\@undefined +\let\@ttfamilyhook\@undefined + +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\IfFontSeriesContextTF}{Font series context}% +\DeclareRobustCommand\IfFontSeriesContextTF[1]{% + \expand@font@defaults + \@font@series@contextfalse + \def\requested@test@context{#1}% + \expandafter\edef\csname ??def@ult\endcsname{\f@family}% + \let\@elt\test@font@series@context + \@meta@family@list + \@elt{??}% + \let\@elt\relax + \if@font@series@context + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi +} + +\def\test@font@series@context#1{% + \edef\reserved@a{\csname #1def@ult\endcsname}% + \ifx\f@family\reserved@a + \let\@elt\@gobble + \expandafter\ifx + \csname\requested@test@context series@#1\endcsname\f@series + \@font@series@contexttrue + \else + \expandafter\ifx + \csname\requested@test@context def@ult\endcsname\f@series + \@font@series@contexttrue + \fi\fi\fi +} + +\newif\if@font@series@context +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\IfFontSeriesContextTF}{Font series context}% + +\let\IfFontSeriesContextTF\@undefined +\let\test@font@series@context\@undefined +\let\if@font@series@context\@undefined +\let\@font@series@contexttrue\@undefined +\let\@font@series@contextfalse\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\DeclareEmphSequence}{Nested emph}% +\def\DeclareEmphSequence#1{% + \protected@edef\emfontdeclare@clist{\zap@space#1, \@empty\emforce\emreset}% +} +\let\emfontdeclare@clist\@empty + +\DeclareRobustCommand\emreset{\upshape\ulcshape} + +\DeclareRobustCommand\em{% + \@nomath\em + \ifx\emfontdeclare@clist\@empty + \ifdim \fontdimen\@ne\font >\z@ + \eminnershape \else \itshape \fi + \else + \edef\em@currfont{\csname\curr@fontshape/\f@size\endcsname}% + \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update + \fi +} +\def\eminnershape{\upshape} +\def\do@emfont@update#1,#2\do@emfont@update{% + \def\emfontdeclare@clist{#2,#1}% + #1\selectfont + \expandafter\ifx\csname \curr@fontshape/\f@size\em@force + \expandafter\endcsname + \em@currfont + \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update + \else + \let\em@force\@empty + \fi +} + +\protected\def\emforce{\def\em@force{/}} +\let\em@force\@empty +\EndIncludeInRelease + +\IncludeInRelease{2015/01/01}{\DeclareEmphSequence}{Nested emph}% +\let\DeclareEmphSequence\@undefined +\let\emfontdeclare@clist\@undefined +\let\emreset\@undefined +\let\do@emfont@update\@undefined +\let\emforce\@undefined +\let\em@force\@undefined + +\DeclareRobustCommand\em + {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ + \eminnershape \else \itshape \fi}% +\EndIncludeInRelease + +\IncludeInRelease{0000/00/00}{\DeclareEmphSequence}{Nested emph}% +\DeclareRobustCommand\em + {\@nomath\em \ifdim \fontdimen\@ne\font >\z@ + \upshape \else \itshape \fi}% +\let\eminnershape\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\symbol}{XeTeX change for math}% +\ifdefined\XeTeXversion + \DeclareRobustCommand\symbol[1]{\Ucharcat#1 12\relax} +\else + \DeclareRobustCommand\symbol[1]{\char#1\relax} +\fi +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\symbol}{XeTeX change for math}% + +\DeclareRobustCommand\symbol[1]{\char#1\relax} + +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\normalfont}{Add hook to \normalfont}% +\DeclareRobustCommand\normalfont{% + \fontencoding\encodingdefault + \edef\f@family{\familydefault}% + \edef\f@series{\seriesdefault}% + \edef\f@shape{\shapedefault}% + \UseHook{normalfont}% + \@defaultfamilyhook % hookname from 2020/02 will vanish + \selectfont} +\let\reset@font\normalfont +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\normalfont}{Add hook to \normalfont}% + +\DeclareRobustCommand\normalfont + {\usefont\encodingdefault + \familydefault + \seriesdefault + \shapedefault + \relax} +\let\reset@font\normalfont + +\let\@defaultfamilyhook\@undefined + +\EndIncludeInRelease +%%% From File: fontdef.dtx +\IncludeInRelease{2017/01/01}% + {\encodingdefault}{TU encoding default}% +\ifx\Umathcode\@undefined +\renewcommand\encodingdefault{OT1} +\fontencoding{\encodingdefault} +\renewcommand\rmdefault{cmr} +\fontfamily{\rmdefault} +\renewcommand\sfdefault{cmss} +\renewcommand\ttdefault{cmtt} +\else +\renewcommand\encodingdefault{TU} +%done in everyjob\fontencoding{\encodingdefault} +\renewcommand\rmdefault{lmr} +\fontfamily{\rmdefault} +\renewcommand\sfdefault{lmss} +\renewcommand\ttdefault{lmtt} +\fi +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\encodingdefault}{TU encoding default}% +\fontencoding{OT1} +\renewcommand\encodingdefault{OT1} +\fontencoding{\encodingdefault} +\renewcommand\rmdefault{cmr} +\fontfamily{\rmdefault} +\renewcommand\sfdefault{cmss} +\renewcommand\ttdefault{cmtt} +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\updefault}{font defaults change}% +\renewcommand\updefault{up} +\renewcommand\bfdefault{b\@empty} +\renewcommand\mddefault{m\@empty} +\let\bfdefault@previous\bfdefault +\let\mddefault@previous\mddefault +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\updefault}{font defaults change}% + +\renewcommand\updefault{n} +\renewcommand\bfdefault{bx} + +\let\bfdefault@previous\undefined +\let\mddefault@previous\undefined +\EndIncludeInRelease +\IncludeInRelease{2018/12/01}% + {\Big}{Start LR-mode}% +\DeclareRobustCommand\big[1]{\leavevmode@ifvmode + {\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} +\DeclareRobustCommand\Big[1]{\leavevmode@ifvmode + {\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} +\DeclareRobustCommand\bigg[1]{\leavevmode@ifvmode + {\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} +\DeclareRobustCommand\Bigg[1]{\leavevmode@ifvmode + {\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\Big}{Start LR-mode}% +\def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}} +\def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}} +\def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}} +\def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}} +\EndIncludeInRelease +%%% From File: ltfntcmd.dtx +%% +\IncludeInRelease{2020/02/02}% + {\textulc}{Additional text commands}% +\DeclareTextFontCommand{\textulc}{\ulcshape} +\DeclareTextFontCommand{\textsw}{\swshape} +\DeclareTextFontCommand{\textssc}{\sscshape} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\textulc}{Additional text commands}% + +\let\textulc\@undefined +\let\textsw\@undefined +\let\textssc\@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\oldstylenums}{Old style numerals}% +\DeclareRobustCommand\legacyoldstylenums[1]{% + \begingroup + \spaceskip\fontdimen\tw@\font + \usefont{OML}{\rmdefault}{\f@series}{it}% + \mathgroup\symletters #1% + \endgroup +} +\DeclareRobustCommand\oldstylenums[1]{% + \begingroup + \ifmmode + \mathgroup\symletters #1% + \else + \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}% + \fi + \endgroup +} +\def\tc@oldstylesubst#1{% + \tc@errorwarn + {Oldstyle digits unavailable for + family \f@family.\MessageBreak + Default oldstyle digits used instead}\@eha + \bgroup + \expand@font@defaults + \ifx\f@family\rmdef@ult + \fontfamily\rmsubstdefault + \else\ifx\f@family\sfdef@ult + \fontfamily\sfsubstdefault + \else\ifx\f@family\ttdef@ult + \fontfamily\ttsubstdefault + \else + \fontfamily\textcompsubstdefault + \fi\fi\fi + \fontencoding{TS1}\selectfont#1% + \egroup +} +\def\textcompsubstdefault{\rmsubstdefault} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\oldstylenums}{Old style numerals}% + +\DeclareRobustCommand\oldstylenums[1]{% + \begingroup + \spaceskip\fontdimen\tw@\font + \usefont{OML}{\rmdefault}{\f@series}{it}% + \mathgroup\symletters #1% + \endgroup +} +\let\legacyoldstylenums\@undefined +\def\textcompsubstdefault{cmr} + +\EndIncludeInRelease + +\IncludeInRelease{2020/02/02}% + {\DeclareEncodingSubset}{Text companion symbols}% +\def\DeclareEncodingSubset#1#2{% + \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux +} +\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{% + \expandafter\ifx\expandafter X\detokenize{#3}X% + \@DeclareEncodingSubset{#1}{#2}{#4}% + \else + \@DeclareEncodingSubset{#1}{#2LF}{#4}% + \@DeclareEncodingSubset{#1}{#2TLF}{#4}% + \@DeclareEncodingSubset{#1}{#2OsF}{#4}% + \@DeclareEncodingSubset{#1}{#2TOsF}{#4}% + \fi +} +\def\@DeclareEncodingSubset#1#2#3{% + \@ifundefined{#1:#2}% + {\@font@info{Setting #2 sub-encoding to #1/#3}}% + {\@font@info{Changing #2 sub-encoding to #1/#3}}% + \@namedef{#1:#2}{#3}} +\@onlypreamble\DeclareEncodingSubset +\@onlypreamble\DeclareEncodingSubset@aux +\@onlypreamble\@DeclareEncodingSubset + + +\def\CheckEncodingSubset#1#2#3#4#5{% + \ifnum #4>% + \expandafter\ifx\csname #2:\f@family\endcsname\relax + 0\csname #2:?\endcsname + \else + \csname #2:\f@family\endcsname + \fi + \relax + \expandafter\@firstoftwo + \else + \expandafter\@secondoftwo + \fi + {#1{#2}}{#3}% + #5% +} + +\def\tc@errorwarn#1#2{\@latex@info{#1}} + +\def\tc@subst#1{% + \tc@errorwarn + {Symbol \string#1 not provided by\MessageBreak + font family \f@family\space + in TS1 encoding.\MessageBreak Default family used instead}\@eha + \bgroup + \expand@font@defaults + \ifx\f@family\rmdef@ult + \fontfamily\rmsubstdefault + \else\ifx\f@family\sfdef@ult + \fontfamily\sfsubstdefault + \else\ifx\f@family\ttdef@ult + \fontfamily\ttsubstdefault + \else + \fontfamily\textcompsubstdefault + \fi\fi\fi + \@namedef{TS1:\f@family}{0}% + \selectfont#1% + \egroup +} + +\def\tc@fake@euro#1{% + \leavevmode + \@font@info{Faking \noexpand#1for font family + \f@family\MessageBreak in TS1 encoding}% + \valign{##\cr + \vfil\hbox to 0.07em{\dimen@\f@size\p@ + \math@fontsfalse + \fontsize{.7\dimen@}\z@\selectfont=\hss}% + \vfil\cr% + \hbox{C}\crcr + }% +} + +\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst} +\def\tc@check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc@swap@accent#1}} +\def\tc@swap@accent#1#2{\UseTextAccent{T1}#1} + +\DeclareTextSymbolDefault{\textdollar}{TS1} +\UndeclareTextCommand{\textdollar} {OT1} % don't use the OT1 def any longer +\DeclareTextSymbolDefault{\textsterling}{TS1} +\UndeclareTextCommand{\textsterling}{OT1} % don't use the OT1 def any longer +\DeclareTextSymbolDefault{\textperthousand}{TS1} +\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def +\DeclareTextSymbolDefault{\textasteriskcentered}{TS1} +\DeclareTextSymbolDefault{\textbullet}{TS1} +\DeclareTextSymbolDefault{\textdaggerdbl}{TS1} +\DeclareTextSymbolDefault{\textdagger}{TS1} +\DeclareTextSymbolDefault{\textparagraph}{TS1} +\DeclareTextSymbolDefault{\textperiodcentered}{TS1} +\DeclareTextSymbolDefault{\textsection}{TS1} +%%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textbrokenbar}{TS1} +%%\DeclareTextSymbolDefault{\textcelsius}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textcent}{TS1} +\DeclareTextSymbolDefault{\textcopyright}{TS1} +\DeclareTextSymbolDefault{\textdegree}{TS1} +\DeclareTextSymbolDefault{\textdiv}{TS1} +\DeclareTextSymbolDefault{\textlnot}{TS1} +\DeclareTextSymbolDefault{\textonehalf}{TS1} +\DeclareTextSymbolDefault{\textonequarter}{TS1} +%%\DeclareTextSymbolDefault{\textonesuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textordfeminine}{TS1} +\DeclareTextSymbolDefault{\textordmasculine}{TS1} +\DeclareTextSymbolDefault{\textpm}{TS1} +\DeclareTextSymbolDefault{\textquotesingle}{TS1} +\DeclareTextSymbolDefault{\textquotestraightbase}{TS1} +\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1} +\DeclareTextSymbolDefault{\textregistered}{TS1} +%%\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textthreequarters}{TS1} +%%\DeclareTextSymbolDefault{\textthreesuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\texttimes}{TS1} +\DeclareTextSymbolDefault{\texttrademark}{TS1} +%%\DeclareTextSymbolDefault{\texttwelveudash}{TS1} % subst in sub-enc 9 above +%%\DeclareTextSymbolDefault{\texttwosuperior}{TS1} % subst in sub-enc 9 above +\DeclareTextSymbolDefault{\textyen}{TS1} +\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1} +\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1} +\DeclareTextCommandDefault{\textcircled} + {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircled} +\DeclareTextCommandDefault{\t} + {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t} +\ifx\Umathcode\@undefined + \DeclareTextCommandDefault{\capitalacute} {\tc@check@accent{\'}2\capitalacute} + \DeclareTextCommandDefault{\capitalbreve} {\tc@check@accent{\u}2\capitalbreve} + \DeclareTextCommandDefault{\capitalcaron} {\tc@check@accent{\v}2\capitalcaron} + \DeclareTextCommandDefault{\capitalcedilla} {\tc@check@accent{\c}2\capitalcedilla} + \DeclareTextCommandDefault{\capitalcircumflex} {\tc@check@accent{\^}2\capitalcircumflex} + \DeclareTextCommandDefault{\capitaldieresis} {\tc@check@accent{\"}2\capitaldieresis} + \DeclareTextCommandDefault{\capitaldotaccent} {\tc@check@accent{\.}2\capitaldotaccent} + \DeclareTextCommandDefault{\capitalgrave} {\tc@check@accent{\`}2\capitalgrave} + \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc@check@accent{\H}2\capitalhungarumlaut} + \DeclareTextCommandDefault{\capitalmacron} {\tc@check@accent{\=}2\capitalmacron} + \DeclareTextCommandDefault{\capitalogonek} {\tc@check@accent{\k}2\capitalogonek} + \DeclareTextCommandDefault{\capitalring} {\tc@check@accent{\r}2\capitalring} + \DeclareTextCommandDefault{\capitaltie} {\tc@check@accent{\t}2\capitaltie} + \DeclareTextCommandDefault{\capitaltilde} {\tc@check@accent{\~}2\capitaltilde} + \DeclareTextCommandDefault{\newtie} {\tc@check@accent{\t}2\newtie} + \DeclareTextCommandDefault{\capitalnewtie} {\tc@check@accent{\t}2\capitalnewtie} +\else + \DeclareTextCommandDefault\capitalacute{\@tabacckludge'} + \DeclareTextCommandDefault\capitalbreve{\u} + \DeclareTextCommandDefault\capitalcaron{\v} + \DeclareTextCommandDefault\capitalcedilla{\c} + \DeclareTextCommandDefault\capitalcircumflex{\^} + \DeclareTextCommandDefault\capitaldieresis{\"} + \DeclareTextCommandDefault\capitaldotaccent{\.} + \DeclareTextCommandDefault\capitalgrave{\@tabacckludge`} + \DeclareTextCommandDefault\capitalhungarumlaut{\H} + \DeclareTextCommandDefault\capitalmacron{\@tabacckludge=} + \DeclareTextCommandDefault\capitalnewtie{\t} + \DeclareTextCommandDefault\capitalogonek{\k} + \DeclareTextCommandDefault\capitalring{\r} + \DeclareTextCommandDefault\capitaltie{\t} + \DeclareTextCommandDefault\capitaltilde{\~} + \DeclareTextCommandDefault\newtie{\t} +\fi +\DeclareTextCommandDefault{\textlbrackdbl} {\tc@check@symbol2\textlbrackdbl} +\DeclareTextCommandDefault{\textrbrackdbl} {\tc@check@symbol2\textrbrackdbl} +\DeclareTextCommandDefault{\texteightoldstyle} {\tc@check@symbol2\texteightoldstyle} +\DeclareTextCommandDefault{\textfiveoldstyle} {\tc@check@symbol2\textfiveoldstyle} +\DeclareTextCommandDefault{\textfouroldstyle} {\tc@check@symbol2\textfouroldstyle} +\DeclareTextCommandDefault{\textnineoldstyle} {\tc@check@symbol2\textnineoldstyle} +\DeclareTextCommandDefault{\textoneoldstyle} {\tc@check@symbol2\textoneoldstyle} +\DeclareTextCommandDefault{\textsevenoldstyle} {\tc@check@symbol2\textsevenoldstyle} +\DeclareTextCommandDefault{\textsixoldstyle} {\tc@check@symbol2\textsixoldstyle} +\DeclareTextCommandDefault{\textthreeoldstyle} {\tc@check@symbol2\textthreeoldstyle} +\DeclareTextCommandDefault{\texttwooldstyle} {\tc@check@symbol2\texttwooldstyle} +\DeclareTextCommandDefault{\textzerooldstyle} {\tc@check@symbol2\textzerooldstyle} +\DeclareTextCommandDefault{\textacutedbl} {\tc@check@symbol2\textacutedbl} +\DeclareTextCommandDefault{\textasciiacute} {\tc@check@symbol2\textasciiacute} +\DeclareTextCommandDefault{\textasciibreve} {\tc@check@symbol2\textasciibreve} +\DeclareTextCommandDefault{\textasciicaron} {\tc@check@symbol2\textasciicaron} +\DeclareTextCommandDefault{\textasciidieresis} {\tc@check@symbol2\textasciidieresis} +\DeclareTextCommandDefault{\textasciigrave} {\tc@check@symbol2\textasciigrave} +\DeclareTextCommandDefault{\textasciimacron} {\tc@check@symbol2\textasciimacron} +\DeclareTextCommandDefault{\textgravedbl} {\tc@check@symbol2\textgravedbl} +\DeclareTextCommandDefault{\texttildelow} {\tc@check@symbol2\texttildelow} +\DeclareTextCommandDefault{\textbaht} {\tc@check@symbol2\textbaht} +\DeclareTextCommandDefault{\textbigcircle} {\tc@check@symbol2\textbigcircle} +\DeclareTextCommandDefault{\textborn} {\tc@check@symbol2\textborn} +\DeclareTextCommandDefault{\textcentoldstyle} {\tc@check@symbol2\textcentoldstyle} +\DeclareTextCommandDefault{\textcircledP} {\tc@check@symbol2\textcircledP} +\DeclareTextCommandDefault{\textcopyleft} {\tc@check@symbol2\textcopyleft} +\DeclareTextCommandDefault{\textdblhyphenchar} {\tc@check@symbol2\textdblhyphenchar} +\DeclareTextCommandDefault{\textdblhyphen} {\tc@check@symbol2\textdblhyphen} +\DeclareTextCommandDefault{\textdied} {\tc@check@symbol2\textdied} +\DeclareTextCommandDefault{\textdiscount} {\tc@check@symbol2\textdiscount} +\DeclareTextCommandDefault{\textdivorced} {\tc@check@symbol2\textdivorced} +\DeclareTextCommandDefault{\textdollaroldstyle} {\tc@check@symbol2\textdollaroldstyle} +\DeclareTextCommandDefault{\textguarani} {\tc@check@symbol2\textguarani} +\DeclareTextCommandDefault{\textleaf} {\tc@check@symbol2\textleaf} +\DeclareTextCommandDefault{\textlquill} {\tc@check@symbol2\textlquill} +\DeclareTextCommandDefault{\textmarried} {\tc@check@symbol2\textmarried} +\DeclareTextCommandDefault{\textmho} {\tc@check@symbol2\textmho} +\DeclareTextCommandDefault{\textmusicalnote} {\tc@check@symbol2\textmusicalnote} +\DeclareTextCommandDefault{\textnaira} {\tc@check@symbol2\textnaira} +\DeclareTextCommandDefault{\textopenbullet} {\tc@check@symbol2\textopenbullet} +\DeclareTextCommandDefault{\textpeso} {\tc@check@symbol2\textpeso} +\DeclareTextCommandDefault{\textpilcrow} {\tc@check@symbol2\textpilcrow} +\DeclareTextCommandDefault{\textrecipe} {\tc@check@symbol2\textrecipe} +\DeclareTextCommandDefault{\textreferencemark} {\tc@check@symbol2\textreferencemark} +\DeclareTextCommandDefault{\textrquill} {\tc@check@symbol2\textrquill} +\DeclareTextCommandDefault{\textservicemark} {\tc@check@symbol2\textservicemark} +\DeclareTextCommandDefault{\textsurd} {\tc@check@symbol2\textsurd} +\DeclareTextCommandDefault{\textpertenthousand} {\tc@check@symbol2\textpertenthousand} +\UndeclareTextCommand{\textpertenthousand}{T1} +\DeclareTextCommandDefault{\textlangle} {\tc@check@symbol3\textlangle} +\DeclareTextCommandDefault{\textrangle} {\tc@check@symbol3\textrangle} +\DeclareTextCommandDefault{\textcolonmonetary} {\tc@check@symbol4\textcolonmonetary} +\DeclareTextCommandDefault{\textdong} {\tc@check@symbol4\textdong} +\DeclareTextCommandDefault{\textdownarrow} {\tc@check@symbol4\textdownarrow} +\DeclareTextCommandDefault{\textleftarrow} {\tc@check@symbol4\textleftarrow} +\DeclareTextCommandDefault{\textlira} {\tc@check@symbol4\textlira} +\DeclareTextCommandDefault{\textrightarrow} {\tc@check@symbol4\textrightarrow} +\DeclareTextCommandDefault{\textuparrow} {\tc@check@symbol4\textuparrow} +\DeclareTextCommandDefault{\textwon} {\tc@check@symbol4\textwon} +\DeclareTextCommandDefault{\textestimated} {\tc@check@symbol5\textestimated} +\DeclareTextCommandDefault{\textnumero} {\tc@check@symbol5\textnumero} +\DeclareTextCommandDefault{\textflorin} {\tc@check@symbol6\textflorin} +\DeclareTextCommandDefault{\textcurrency} {\tc@check@symbol6\textcurrency} +\DeclareTextCommandDefault{\textfractionsolidus}{\tc@check@symbol7\textfractionsolidus} +\DeclareTextCommandDefault{\textohm} {\tc@check@symbol7\textohm} +\DeclareTextCommandDefault{\textmu} {\tc@check@symbol7\textmu} +\DeclareTextCommandDefault{\textminus} {\tc@check@symbol7\textminus} +\DeclareTextCommandDefault{\textblank} {\tc@check@symbol{8}\textblank} +\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol{8}\textinterrobangdown} +\DeclareTextCommandDefault{\textinterrobang} {\tc@check@symbol{8}\textinterrobang} +\DeclareTextCommandDefault{\texteuro} + {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro{8}\texteuro} +\DeclareTextCommandDefault{\textcelsius}{\tc@check@symbol{9}\textcelsius} +\DeclareTextCommandDefault{\textonesuperior}{\tc@check@symbol{9}\textonesuperior} +\DeclareTextCommandDefault{\textthreequartersemdash}{\tc@check@symbol{9}\textthreequartersemdash} +\DeclareTextCommandDefault{\textthreesuperior}{\tc@check@symbol{9}\textthreesuperior} +\DeclareTextCommandDefault{\texttwelveudash}{\tc@check@symbol{9}\texttwelveudash} +\DeclareTextCommandDefault{\texttwosuperior}{\tc@check@symbol{9}\texttwosuperior} +\DeclareTextCommandDefault{\textbardbl}{\tc@check@symbol{9}\textbardbl} + +\ifx \Umathcode\@undefined \else +\DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}} +\DeclareTextCommand{\textoneoldstyle} \UnicodeEncodingName{\oldstylenums{1}} +\DeclareTextCommand{\texttwooldstyle} \UnicodeEncodingName{\oldstylenums{2}} +\DeclareTextCommand{\textthreeoldstyle}\UnicodeEncodingName{\oldstylenums{3}} +\DeclareTextCommand{\textfouroldstyle} \UnicodeEncodingName{\oldstylenums{4}} +\DeclareTextCommand{\textfiveoldstyle} \UnicodeEncodingName{\oldstylenums{5}} +\DeclareTextCommand{\textsixoldstyle} \UnicodeEncodingName{\oldstylenums{6}} +\DeclareTextCommand{\textsevenoldstyle}\UnicodeEncodingName{\oldstylenums{7}} +\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}} +\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}} +\DeclareTextSymbol{\textpilcrow} \UnicodeEncodingName{"00B6} +\DeclareTextSymbol{\textborn} \UnicodeEncodingName{"002A} +\DeclareTextSymbol{\textdied} \UnicodeEncodingName{"2020} +\DeclareTextSymbol{\textlbrackdbl} \UnicodeEncodingName{"27E6} +\DeclareTextSymbol{\textrbrackdbl} \UnicodeEncodingName{"27E7} +\DeclareTextSymbol{\textguarani} \UnicodeEncodingName{"20B2} +\DeclareTextSymbol{\textdollaroldstyle}{TS1}{138} +\DeclareTextSymbol{\textcentoldstyle} {TS1}{139} +\fi % --- END of Unicode engines specials +\DeclareEncodingSubset{TS1}{?}{9} +\DeclareEncodingSubset{TS1}{ccr} {0} +\DeclareEncodingSubset{TS1}{cmbr} {0} +\DeclareEncodingSubset{TS1}{cmr} {0} +\DeclareEncodingSubset{TS1}{cmss} {0} +\DeclareEncodingSubset{TS1}{cmtl} {0} +\DeclareEncodingSubset{TS1}{cmtt} {0} +\DeclareEncodingSubset{TS1}{cmvtt} {0} +\DeclareEncodingSubset{TS1}{pxr} {0} +\DeclareEncodingSubset{TS1}{pxss} {0} +\DeclareEncodingSubset{TS1}{pxtt} {0} +\DeclareEncodingSubset{TS1}{qag} {0} +\DeclareEncodingSubset{TS1}{qbk} {0} +\DeclareEncodingSubset{TS1}{qcr} {0} +\DeclareEncodingSubset{TS1}{qcs} {0} +\DeclareEncodingSubset{TS1}{qhvc} {0} +\DeclareEncodingSubset{TS1}{qhv} {0} +\DeclareEncodingSubset{TS1}{qpl} {0} +\DeclareEncodingSubset{TS1}{qtm} {0} +\DeclareEncodingSubset{TS1}{qzc} {0} +\DeclareEncodingSubset{TS1}{txr} {0} +\DeclareEncodingSubset{TS1}{txss} {0} +\DeclareEncodingSubset{TS1}{txtt} {0} +\DeclareEncodingSubset{TS1}{lmr} {1} +\DeclareEncodingSubset{TS1}{lmdh} {1} +\DeclareEncodingSubset{TS1}{lmss} {1} +\DeclareEncodingSubset{TS1}{lmssq} {1} +\DeclareEncodingSubset{TS1}{lmvtt} {1} +\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM, pertenthousand for some reason +\DeclareEncodingSubset{TS1}{ptmx} {2} +\DeclareEncodingSubset{TS1}{ptmj} {2} +\DeclareEncodingSubset{TS1}{ul8} {2} +\DeclareEncodingSubset{TS1}{bch} {5} % tofu for blank, ohm +\DeclareEncodingSubset{TS1}{futj} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{futs} {5} % tofu for blank, ohm +\DeclareEncodingSubset{TS1}{futx} {5} % probably (currently broken distrib) +\DeclareEncodingSubset{TS1}{pag} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pbk} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pcr} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{phv} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pnc} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pplj} {5} % tofu for blank +\DeclareEncodingSubset{TS1}{pplx} {5} % tofu for blank +\DeclareEncodingSubset{TS1}{ppl} {5} % tofu for blank interrobang/down +\DeclareEncodingSubset{TS1}{ptm} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{pzc} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{ul9} {5} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{dayroms} {6} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{dayrom} {6} % tofu for blank, interrobang/down, ohm +\DeclareEncodingSubset{TS1}{augie} {8} % really only missing euro +\DeclareEncodingSubset{TS1}{put} {8} +\DeclareEncodingSubset{TS1}{uag} {8} % probably (currently broken distrib) +\DeclareEncodingSubset{TS1}{ugq} {8} +\DeclareEncodingSubset{TS1}{zi4} {9} +\DeclareEncodingSubset{TS1}{hls} {5} +\DeclareEncodingSubset{TS1}{hlst} {5} +\DeclareEncodingSubset{TS1}{hlct} {5} +\DeclareEncodingSubset{TS1}{hlh} {5} +\DeclareEncodingSubset{TS1}{hlx} {8} +\DeclareEncodingSubset{TS1}{hlce} {8} +\DeclareEncodingSubset{TS1}{hlcn} {8} +\DeclareEncodingSubset{TS1}{hlcw} {8} +\DeclareEncodingSubset{TS1}{hlcf} {8} +\DeclareEncodingSubset{TS1}{lato-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{opensans-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{cantarell-*} {0} % with a bunch of tofu inside +\DeclareEncodingSubset{TS1}{fbb-*} {0} % missing centoldstyle +\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside +\DeclareEncodingSubset{TS1}{Alegreya-*} {2} +\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2} +\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2} +\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2} +\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2} +\DeclareEncodingSubset{TS1}{EBGaramond-*} {2} +\DeclareEncodingSubset{TS1}{Tempora-TLF} {2} +\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2} +\DeclareEncodingSubset{TS1}{Arimo-TLF} {3} +\DeclareEncodingSubset{TS1}{Carlito-*} {3} +\DeclareEncodingSubset{TS1}{FiraSans-*} {3} +\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3} +\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3} +\DeclareEncodingSubset{TS1}{Montserrat-*} {3} +\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3} +\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3} +\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3} +\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3} +\DeclareEncodingSubset{TS1}{SourceSerifPro-*} {3} +\DeclareEncodingSubset{TS1}{Tinos-TLF} {3} +\DeclareEncodingSubset{TS1}{AccanthisADFStdNoThree-LF}{4} +\DeclareEncodingSubset{TS1}{Cabin-TLF} {4} +\DeclareEncodingSubset{TS1}{Caladea-TLF} {4} +\DeclareEncodingSubset{TS1}{Chivo-*} {4} +\DeclareEncodingSubset{TS1}{ClearSans-TLF} {4} +\DeclareEncodingSubset{TS1}{Coelacanth-LF} {4} +\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4} +\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4} +\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4} +\DeclareEncodingSubset{TS1}{Go-TLF} {4} +\DeclareEncodingSubset{TS1}{GoMono-TLF} {4} +\DeclareEncodingSubset{TS1}{InriaSans-*} {4} +\DeclareEncodingSubset{TS1}{InriaSerif-*} {4} +\DeclareEncodingSubset{TS1}{LibertinusSans-*} {4} +\DeclareEncodingSubset{TS1}{LibertinusSerif-*} {4} +\DeclareEncodingSubset{TS1}{LibreBodoni-TLF} {4} +\DeclareEncodingSubset{TS1}{LibreFranklin-TLF} {4} +\DeclareEncodingSubset{TS1}{LinguisticsPro-LF} {4} +\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4} +\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4} +\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4} +\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4} +\DeclareEncodingSubset{TS1}{MintSpirit-*} {4} +\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4} +\DeclareEncodingSubset{TS1}{PTMono-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSans-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSansCaption-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSansNarrow-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSerif-TLF} {4} +\DeclareEncodingSubset{TS1}{PTSerifCaption-TLF} {4} +\DeclareEncodingSubset{TS1}{Raleway-TLF} {4} +\DeclareEncodingSubset{TS1}{Raleway-TOsF} {4} +\DeclareEncodingSubset{TS1}{Roboto-*} {4} +\DeclareEncodingSubset{TS1}{RobotoMono-TLF} {4} +\DeclareEncodingSubset{TS1}{RobotoSlab-TLF} {4} +\DeclareEncodingSubset{TS1}{Rosario-*} {4} +\DeclareEncodingSubset{TS1}{SticksTooText-*} {4} +\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4} +\DeclareEncodingSubset{TS1}{Almendra-OsF} {5} +\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5} +\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5} +\DeclareEncodingSubset{TS1}{Bitter-TLF} {5} +\DeclareEncodingSubset{TS1}{Cinzel-LF} {5} +\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5} +\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5} +\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5} +\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5} +\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5} +\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5} +\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5} +\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5} +\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5} +\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5} +\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5} +\DeclareEncodingSubset{TS1}{Crimson-TLF} {6} +\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6} +\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6} +\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6} +\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6} +\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6} +\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6} +\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6} +\DeclareEncodingSubset{TS1}{Overlock-LF} {6} +\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7} +\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7} +\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7} +\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7} +\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7} +\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7} +\DeclareEncodingSubset{TS1}{Marcellus-LF} {7} +\DeclareEncodingSubset{TS1}{NotoSans-*} {7} +\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7} +\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7} +\DeclareEncodingSubset{TS1}{NotoSerif-*} {7} +\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7} +\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7} +\DeclareEncodingSubset{TS1}{XCharter-TLF} {7} +\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7} +\DeclareEncodingSubset{TS1}{erewhon-*} {7} +\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7} +\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7} +\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing +\DeclareEncodingSubset{TS1}{Cochineal-*} {8} +\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9} +\def\UseLegacyTextSymbols{% + \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}% + \DeclareTextSymbolDefault{\textbardbl}{OMS}% + \DeclareTextSymbolDefault{\textbullet}{OMS}% + \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}% + \DeclareTextSymbolDefault{\textdagger}{OMS}% + \DeclareTextSymbolDefault{\textparagraph}{OMS}% + \DeclareTextSymbolDefault{\textperiodcentered}{OMS}% + \DeclareTextSymbolDefault{\textsection}{OMS}% + \UndeclareTextCommand{\textsection}{T1}% + \expandafter\let\csname oldstylenums \expandafter\endcsname + \csname legacyoldstylenums \endcsname +} + +\DeclareTextSymbol{\textlegacyasteriskcentered}{OMS}{3} % "03 +\DeclareTextSymbol{\textlegacybardbl}{OMS}{107} % "6B +\DeclareTextSymbol{\textlegacybullet}{OMS}{15} % "0F +\DeclareTextSymbol{\textlegacydaggerdbl}{OMS}{122} % "7A +\DeclareTextSymbol{\textlegacydagger}{OMS}{121} % "79 +\DeclareTextSymbol{\textlegacyparagraph}{OMS}{123} % "7B +\DeclareTextSymbol{\textlegacyperiodcentered}{OMS}{1} % "01 +\DeclareTextSymbol{\textlegacysection}{OMS}{120} % "78 +\DeclareTextSymbolDefault{\textlegacyasteriskcentered}{OMS} +\DeclareTextSymbolDefault{\textlegacybardbl}{OMS} +\DeclareTextSymbolDefault{\textlegacybullet}{OMS} +\DeclareTextSymbolDefault{\textlegacydaggerdbl}{OMS} +\DeclareTextSymbolDefault{\textlegacydagger}{OMS} +\DeclareTextSymbolDefault{\textlegacyparagraph}{OMS} +\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS} +\DeclareTextSymbolDefault{\textlegacysection}{OMS} + +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\DeclareEncodingSubset}{Text companion symbols}% + +\let\DeclareEncodingSubset\@undefined +\let\CheckEncodingSubset\@undefined + +\DeclareTextSymbolDefault{\textdollar}{OT1} +\DeclareTextSymbolDefault{\textsterling}{OT1} +\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup + \ifdim \fontdimen\@ne\font >\z@ + \slshape + \else + \upshape + \fi + \char`\$\egroup} +\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup + \ifdim \fontdimen\@ne\font >\z@ + \itshape + \else + \fontshape{ui}\selectfont + \fi + \char`\$\egroup} +\DeclareTextCommand{\textperthousand}{T1} + {\%\char 24 } + +\DeclareTextSymbolDefault{\textasteriskcentered}{OMS} +\DeclareTextSymbolDefault{\textbullet}{OMS} +\DeclareTextSymbolDefault{\textdaggerdbl}{OMS} +\DeclareTextSymbolDefault{\textdagger}{OMS} +\DeclareTextSymbolDefault{\textparagraph}{OMS} +\DeclareTextSymbolDefault{\textperiodcentered}{OMS} +\DeclareTextSymbolDefault{\textsection}{OMS} + +\DeclareTextSymbolDefault{\textbardbl}{OMS} +\let\textbrokenbar\@undefined +\let\textcelsius\@undefined +\let\textcent\@undefined +\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}} +\let\textdegree\@undefined +\let\textdiv\@undefined +\let\textlnot\@undefined +\let\textonehalf\@undefined +\let\textonequarter\@undefined +\let\textonesuperior\@undefined +\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}} +\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}} +\let\textpm\@undefined +\let\textquotesingle\@undefined +\let\textquotestraightbase\@undefined +\let\textquotestraightdblbase\@undefined +\DeclareTextCommandDefault{\textregistered}{\textcircled{% + \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}} +\let\textthreequartersemdash\@undefined +\let\textthreequarters\@undefined +\let\textthreesuperior\@undefined +\let\texttimes\@undefined +\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}} +\let\texttwelveudash\@undefined +\let\texttwosuperior\@undefined +\let\textyen\@undefined + +\let\textcapitalcompwordmark\@undefined +\let\textascendercompwordmark\@undefined + +\DeclareTextAccentDefault{\textcircled}{OMS} +\DeclareTextAccentDefault{\t}{OML} + +\let\capitalacute\@undefined +\let\capitalbreve\@undefined +\let\capitalcaron\@undefined +\let\capitalcedilla\@undefined +\let\capitalcircumflex\@undefined +\let\capitaldieresis\@undefined +\let\capitaldotaccent\@undefined +\let\capitalgrave\@undefined +\let\capitalhungarumlaut\@undefined +\let\capitalmacron\@undefined +\let\capitalnewtie\@undefined +\let\capitalogonek\@undefined +\let\capitalring\@undefined +\let\capitaltie\@undefined +\let\capitaltilde\@undefined +\let\newtie\@undefined + +\let\textlbrackdbl\@undefined +\let\textrbrackdbl\@undefined + +\let\texteightoldstyle\@undefined +\let\textfiveoldstyle\@undefined +\let\textfouroldstyle\@undefined +\let\textnineoldstyle\@undefined +\let\textoneoldstyle\@undefined +\let\textsevenoldstyle\@undefined +\let\textsixoldstyle\@undefined +\let\textthreeoldstyle\@undefined +\let\texttwooldstyle\@undefined +\let\textzerooldstyle\@undefined + +\let\textacutedbl\@undefined +\let\textasciiacute\@undefined +\let\textasciibreve\@undefined +\let\textasciicaron\@undefined +\let\textasciidieresis\@undefined +\let\textasciigrave\@undefined +\let\textasciimacron\@undefined +\let\textgravedbl\@undefined +\let\texttildelow\@undefined + +\let\textbaht\@undefined +\let\textbigcircle\@undefined +\let\textborn\@undefined +\let\textcentoldstyle\@undefined +\let\textcircledP\@undefined +\let\textcopyleft\@undefined +\let\textdblhyphenchar\@undefined +\let\textdblhyphen\@undefined +\let\textdied\@undefined +\let\textdiscount\@undefined +\let\textdivorced\@undefined +\let\textdollaroldstyle\@undefined +\let\textguarani\@undefined +\let\textleaf\@undefined +\let\textlquill\@undefined +\let\textmarried\@undefined +\let\textmho\@undefined +\let\textmusicalnote\@undefined +\let\textnaira\@undefined +\let\textopenbullet\@undefined +\let\textpeso\@undefined +\let\textpilcrow\@undefined +\let\textrecipe\@undefined +\let\textreferencemark\@undefined +\let\textrquill\@undefined +\let\textservicemark\@undefined +\let\textsurd\@undefined + +\DeclareTextCommand{\textpertenthousand}{T1} + {\%\char 24\char 24 } + +\let\textlangle\@undefined +\let\textrangle\@undefined + +\let\textcolonmonetary\@undefined +\let\textdong\@undefined +\let\textdownarrow\@undefined +\let\textleftarrow\@undefined +\let\textlira\@undefined +\let\textrightarrow\@undefined +\let\textuparrow\@undefined +\let\textwon\@undefined + +\let\textestimated\@undefined +\let\textnumero\@undefined + +\let\textflorin\@undefined +\let\textcurrency\@undefined + +\let\textfractionsolidus\@undefined +\let\textohm\@undefined +\let\textmu\@undefined +\let\textminus\@undefined + +\let\textblank\@undefined +\let\textinterrobangdown\@undefined +\let\textinterrobang\@undefined + +\let\texteuro\@undefined + +\let\textcelsius\@undefined +\let\textonesuperior\@undefined +\let\textthreequartersemdash\@undefined +\let\textthreesuperior\@undefined +\let\texttwelveudash\@undefined +\let\texttwosuperior\@undefined +\let\textbardbl\@undefined + +\let\UseLegacyTextSymbols\@undefined +\let\textlegacyasteriskcentered\@undefined +\let\textlegacybardbl\@undefined +\let\textlegacybullet\@undefined +\let\textlegacydaggerdbl\@undefined +\let\textlegacydagger\@undefined +\let\textlegacyparagraph\@undefined +\let\textlegacyperiodcentered\@undefined +\let\textlegacysection\@undefined + +\EndIncludeInRelease + + +%%% From File: ltpageno.dtx +%%% From File: ltxref.dtx +\IncludeInRelease{2020/10/01}% + {\refstepcounter}{Add \@currentcounter}% +\def\@currentcounter{} +\def\refstepcounter#1{\stepcounter{#1}% + \edef\@currentcounter{#1}% + \protected@edef\@currentlabel + {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% +} +\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} +\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% + \expandafter\MakeUppercase\@tempa} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\refstepcounter}{Add \labelformat and \Ref}% +\let\@currentcounter\@undefined +\def\refstepcounter#1{\stepcounter{#1}% + \protected@edef\@currentlabel + {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% +} +\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} +\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% + \expandafter\MakeUppercase\@tempa} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\refstepcounter}{Add \labelformat and \Ref}% + +\def\refstepcounter#1{\stepcounter{#1}% + \protected@edef\@currentlabel + {\csname p@#1\endcsname\csname the#1\endcsname}% +} +\let\labelformat\@undefined +\let\Ref\@undefined + +\EndIncludeInRelease +%%% From File: ltmiscen.dtx +\IncludeInRelease{2020/10/01}% + {\enddocument}{Use Hooks}% +\def\enddocument{% + \@kernel@before@enddocument + \UseOneTimeHook{enddocument}% + \@kernel@after@enddocument + \@checkend{document}% + \clearpage + \UseOneTimeHook{enddocument/afterlastpage}% + \@kernel@after@enddocument@afterlastpage + \begingroup + \if@filesw + \immediate\closeout\@mainaux + \let\@setckpt\@gobbletwo + \let\@newl@bel\@testdef + \@tempswafalse + \makeatletter \@@input\jobname.aux + \fi + \UseOneTimeHook{enddocument/afteraux}% + \UseOneTimeHook{enddocument/info}% + \endgroup + \UseOneTimeHook{enddocument/end}% + \deadcycles\z@\@@end} +\NewHook{enddocument} +\NewHook{enddocument/afterlastpage} +\NewHook{enddocument/afteraux} +\NewHook{enddocument/info} +\NewHook{enddocument/end} +\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist} +\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings} +\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings} +\def\@enddocument@kernel@warnings{% + \ifdim \font@submax >\fontsubfuzz\relax + \@font@warning{Size substitutions with differences\MessageBreak + up to \font@submax\space have occurred.\@gobbletwo}% + \fi + \@defaultsubs + \@refundefined + \if@filesw + \ifx \@multiplelabels \relax + \if@tempswa + \@latex@warning@no@line{Label(s) may have changed. + Rerun to get cross-references right}% + \fi + \else + \@multiplelabels + \fi + \ifx \@extra@page@added \relax + \@latex@warning@no@line{Temporary extra page added at the end. + Rerun to get it removed}% + \fi + \fi +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\enddocument}{Use Hooks}% + +\def\enddocument{% + \let\AtEndDocument\@firstofone + \@enddocumenthook + \@checkend{document}% + \clearpage + \begingroup + \if@filesw + \immediate\closeout\@mainaux + \let\@setckpt\@gobbletwo + \let\@newl@bel\@testdef + \@tempswafalse + \makeatletter \@@input\jobname.aux + \fi + \@dofilelist + \ifdim \font@submax >\fontsubfuzz\relax + \@font@warning{Size substitutions with differences\MessageBreak + up to \font@submax\space have occurred.\@gobbletwo}% + \fi + \@defaultsubs + \@refundefined + \if@filesw + \ifx \@multiplelabels \relax + \if@tempswa + \@latex@warning@no@line{Label(s) may have changed. + Rerun to get cross-references right}% + \fi + \else + \@multiplelabels + \fi + \fi + \endgroup + \deadcycles\z@\@@end} + +\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{} + +\catcode`\^^A=9 +\long\gdef\add@percent@to@temptokena + #1\protected@file@percent#2\add@percent@to@temptokena + {\expandafter\ifx\expandafter X\detokenize{#2}X\expandafter\dont@add@percent@to@temptokena\else + \expandafter\do@add@percent@to@temptokena\fi{#1}} +\long\def\dont@add@percent@to@temptokena#1{% + \@temptokena\expandafter{#1}} +\begingroup +\catcode`\%=12 +\catcode`\^^A=14 +\long\gdef\do@add@percent@to@temptokena#1{\@temptokena\expandafter{#1%^^A + }} +\endgroup +\long\def\@writefile#1#2{% + \@ifundefined{tf@#1}\relax + {% + \add@percent@to@temptokena + \@empty#2\protected@file@percent + \add@percent@to@temptokena + \immediate\write\csname tf@#1\endcsname{\the\@temptokena}% + }% +} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\protected@file@percent}{Mask line endings}% +\let\protected@file@percent\@undefined +\let\add@percent@to@temptokena\@undefined +\let\do@add@percent@to@temptokena\@undefined +\let\dont@add@percent@to@temptokena\@undefined +\long\def\@writefile#1#2{% + \@ifundefined{tf@#1}\relax + {\@temptokena{#2}% + \immediate\write\csname tf@#1\endcsname{\the\@temptokena}% + }% +} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\begin}{Use hook system}% +\DeclareRobustCommand*\begin[1]{% + \UseHook{env/#1/before}% + \@ifundefined{#1}% + {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% + {\def\reserved@a{\def\@currenvir{#1}% + \edef\@currenvline{\on@line}% + \@execute@begin@hook{#1}% + \csname #1\endcsname}}% + \@ignorefalse + \begingroup\@endpefalse\reserved@a} +\def\@execute@begin@hook #1{% + \expandafter\ifx\csname #1\endcsname\document + \endgroup + \gdef\@execute@begin@hook##1{\UseHook{env/##1/begin}}% + \@expl@@@initialize@all@@ + \fi + \UseHook{env/#1/begin}% +} +\edef\end + {\unexpanded{% + \romannumeral + \ifx\protect\@typeset@protect + \expandafter %1 + \expandafter %2 + \expandafter %1 + \expandafter %3 expands the \csname inside \end + \expandafter %1 + \expandafter %2 expands \end + \expandafter %1 expands the \else + \z@ + \else + \expandafter\z@\expandafter\protect + \fi + }% + \expandafter\noexpand\csname end \endcsname + } +\@namedef{end }#1{% + \romannumeral + \IfHookEmptyTF{env/#1/end}% + {\expandafter\z@}% + {\z@\UseHook{env/#1/end}}% + \csname end#1\endcsname\@checkend{#1}% + \expandafter\endgroup\if@endpe\@doendpe\fi + \UseHook{env/#1/after}% + \if@ignore\@ignorefalse\ignorespaces\fi +} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\begin}{Making \begin/\end robust}% +\DeclareRobustCommand\begin[1]{% + \@ifundefined{#1}% + {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% + {\def\reserved@a{\def\@currenvir{#1}% + \edef\@currenvline{\on@line}% + \csname #1\endcsname}}% + \@ignorefalse + \begingroup\@endpefalse\reserved@a} +\edef\end + {\unexpanded{% + \romannumeral + \ifx\protect\@typeset@protect + \expandafter %1 + \expandafter %2 + \expandafter %1 + \expandafter %3 expands the \csname inside \end + \expandafter %1 + \expandafter %2 expands \end + \expandafter %1 expands the \else + \z@ + \else + \expandafter\z@\expandafter\protect + \fi + }% + \expandafter\noexpand\csname end \endcsname + } +\@namedef{end }#1{% + \csname end#1\endcsname\@checkend{#1}% + \expandafter\endgroup\if@endpe\@doendpe\fi + \if@ignore\@ignorefalse\ignorespaces\fi} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\begin}{Making \begin/\end robust}% +\def\begin#1{% + \@ifundefined{#1}% + {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% + {\def\reserved@a{\def\@currenvir{#1}% + \edef\@currenvline{\on@line}% + \csname #1\endcsname}}% + \@ignorefalse + \begingroup\@endpefalse\reserved@a} +\def\end#1{% + \csname end#1\endcsname\@checkend{#1}% + \expandafter\endgroup\if@endpe\@doendpe\fi + \if@ignore\@ignorefalse\ignorespaces\fi} + +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\AtBeginEnvironment}{Hooks for environments}% +\newcommand\AtBeginEnvironment[2][.] {\AddToHook{env/#2/begin}[#1]} +\newcommand\AtEndEnvironment[2][.] {\AddToHook{env/#2/end}[#1]} +\newcommand\BeforeBeginEnvironment[2][.]{\AddToHook{env/#2/before}[#1]} +\newcommand\AfterEndEnvironment[2][.] {\AddToHook{env/#2/after}[#1]} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\AtBeginEnvironment}{Hooks for environments}% + +\let\AtBeginEnvironment\@undefined +\let\AtEndEnvironment\@undefined +\let\BeforeBeginEnvironment\@undefined +\let\AfterEndEnvironment\@undefined + +\EndIncludeInRelease +\IncludeInRelease{2020/02/02}% + {\@centercr}{Make robust}% +\protected\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi + \par\@ifstar{\nobreak\@xcentercr}\@xcentercr} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@centercr}{Make robust}% + +\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi + \par\@ifstar{\nobreak\@xcentercr}\@xcentercr} + +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\@icentercr}{centering, etc support calc}% +\def\@icentercr[#1]{\@vspace@calcify{#1}\ignorespaces} +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\@icentercr}{centering, etc support calc}% + +\def\@icentercr[#1]{\vskip #1\ignorespaces} +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\centering}{Set finaldhypendemerits}% +\DeclareRobustCommand\centering{% + \let\\\@centercr + \rightskip\@flushglue\leftskip\@flushglue + \finalhyphendemerits=\z@ + \parindent\z@\parfillskip\z@skip} +\DeclareRobustCommand\raggedright{% + \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip + \finalhyphendemerits=\z@ + \leftskip\z@skip + \parindent\z@} +\DeclareRobustCommand\raggedleft{% + \let\\\@centercr + \rightskip\z@skip\leftskip\@flushglue + \finalhyphendemerits=\z@ + \parindent\z@\parfillskip\z@skip} +\EndIncludeInRelease +\IncludeInRelease{2019/10/01}% + {\centering}{Make commands robust}% + +\DeclareRobustCommand\centering{% + \let\\\@centercr + \rightskip\@flushglue\leftskip\@flushglue + \parindent\z@\parfillskip\z@skip} +\DeclareRobustCommand\raggedright{% + \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip + \leftskip\z@skip + \parindent\z@} +\DeclareRobustCommand\raggedleft{% + \let\\\@centercr + \rightskip\z@skip\leftskip\@flushglue + \parindent\z@\parfillskip\z@skip} +\EndIncludeInRelease + +\IncludeInRelease{0000/00/00}% + {\centering}{Make commands robust}% + +\kernel@make@fragile\centering +\kernel@make@fragile\raggedright +\kernel@make@fragile\raggedleft + +\EndIncludeInRelease +\IncludeInRelease{2017-04-15}{\@verbatim}% + {Disable hyphenation in verbatim}% +\def\@verbatim{\trivlist \item\relax + \if@minipage\else\vskip\parskip\fi + \leftskip\@totalleftmargin\rightskip\z@skip + \parindent\z@\parfillskip\@flushglue\parskip\z@skip + \@@par + \language\l@nohyphenation + \@tempswafalse + \def\par{% + \if@tempswa + \leavevmode \null \@@par\penalty\interlinepenalty + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi + \fi}% + \let\do\@makeother \dospecials + \obeylines \verbatim@font \@noligs + \everypar \expandafter{\the\everypar \unpenalty}% +} +\EndIncludeInRelease +\IncludeInRelease{0000-00-00}{\@verbatim}% + {Disable hyphenation in verbatim}% +\def\@verbatim{\trivlist \item\relax + \if@minipage\else\vskip\parskip\fi + \leftskip\@totalleftmargin\rightskip\z@skip + \parindent\z@\parfillskip\@flushglue\parskip\z@skip + \@@par + \@tempswafalse + \def\par{% + \if@tempswa + \leavevmode \null \@@par\penalty\interlinepenalty + \else + \@tempswatrue + \ifhmode\@@par\penalty\interlinepenalty\fi + \fi}% + \let\do\@makeother \dospecials + \obeylines \verbatim@font \@noligs + \hyphenchar\font\m@ne + \everypar \expandafter{\the\everypar \unpenalty}% +} +\EndIncludeInRelease +\IncludeInRelease{2018/12/01}% + {\verbvisiblespace}{Setup visible space for \verb}% +\DeclareRobustCommand\asciispace{\char 32 } +\ifx\Umathcode\@undefined + \let\verbvisiblespace\asciispace % Pdftex version +\else + \DeclareRobustCommand\verbvisiblespace + {\leavevmode{\usefont{OT1}{cmtt}{m}{n}\asciispace}} % xetex/luatex version +\fi + +\def\@setupverbvisiblespace{% + \ifx\verbvisiblespace\asciispace + \let\@xobeysp\asciispace + \else + \setbox\z@\hbox{x}% + \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% + \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% + \fi +} + +\newbox\@verbvisiblespacebox +\@namedef{verbatim*}{\@verbatim + \@setupverbvisiblespace + \frenchspacing\@vobeyspaces\@sxverbatim} +\expandafter\let\csname endverbatim*\endcsname =\endverbatim +\EndIncludeInRelease +\IncludeInRelease{0000/00/00}% + {\verbvisiblespace}{Setup visible space for \verb}% + +\@namedef{verbatim*}{\@verbatim\@sxverbatim} + +\let\asciispace \@undefined +\let\verbvisiblespace \@undefined +\let\@setupverbvisiblespace\@undefined +\let\@verbvisiblespacebox \@undefined +\EndIncludeInRelease +\IncludeInRelease{2020/10/01}% + {\@sverb}{Drop spaces before \verb delimiter}% +\def\@sverb#1{\if\noexpand#1 \expandafter\@sverb\else\@@sverb{#1}\fi} +\def\@@sverb#1{% + \catcode`#1\active + \lccode`\~`#1% + \gdef\verb@balance@group{\verb@egroup + \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% + \aftergroup\verb@balance@group + \lowercase{\let~\verb@egroup}% + \ifnum\catcode`\ =\active + \else \@setupverbvisiblespace \@vobeyspaces \fi +} +\EndIncludeInRelease +\IncludeInRelease{2018/12/01}% + {\@sverb}{Setup visible space for \verb}% + +\def\@sverb#1{% + \catcode`#1\active + \lccode`\~`#1% + \gdef\verb@balance@group{\verb@egroup + \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% + \aftergroup\verb@balance@group + \lowercase{\let~\verb@egroup}% + \ifnum\catcode`\ =\active + \else \@setupverbvisiblespace \@vobeyspaces \fi +} +\let\@@sverb\@undefined +\EndIncludeInRelease + +\IncludeInRelease{0000/00/00}% + {\@sverb}{Setup visible space for \verb}% +\def\@sverb#1{% + \catcode`#1\active + \lccode`\~`#1% + \gdef\verb@balance@group{\verb@egroup + \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% + \aftergroup\verb@balance@group + \lowercase{\let~\verb@egroup}}% + +\EndIncludeInRelease +\IncludeInRelease{2017-04-15}{\verb}% + {Disable hyphenation in verb}% +\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \verb@eol@error \let\do\@makeother \dospecials + \verbatim@font\@noligs + \language\l@nohyphenation + \@ifstar\@sverb\@verb} +\EndIncludeInRelease +\IncludeInRelease{0000-00-00}{\verb}% + {Disable hyphenation in verb}% +\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi + \bgroup + \verb@eol@error \let\do\@makeother \dospecials + \verbatim@font\@noligs + \@ifstar\@sverb\@verb} +\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(} +\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 +\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} +\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}}% +} +\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 + \let\reserved@a\@secondoftwo + \fi + \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 + \def\reserved@a{% + \@onefilewithoptions#3[{#2}][{#4}]#1}% + \fi + \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 + \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 \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 + \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 + \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 \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 +} +\@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}% +\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 -\newif\if@forced@series -\DeclareRobustCommand\fontseriesforce[1]{\@forced@seriestrue\edef\f@series{#1}} -\DeclareRobustCommand\fontseries[1]{\@forced@seriesfalse\merge@font@series{#1}} +\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% -\def\merge@font@series#1{% - \expandafter\expandafter\expandafter - \merge@font@series@ - \csname series@\f@series @#1\endcsname - {#1}% - \@nil -} +\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}% -\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}} + \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}% -\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% +\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} + } } +\ExplSyntaxOff -\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 +\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)}% -\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}% -} +\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}% - {\DeclareFontSeriesChangeRule}{Series change rules}% - -\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}} -\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}} -\let\fontseriesforce\@undefined -\let\fontshapeforce\@undefined + {\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\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 \declare@file@substitution \@gobbletwo +\let \undeclare@file@substitution \@gobble -\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} + {\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}% + \@expl@@@filehook@clear@replacement@flag@@ + \endgroup} \EndIncludeInRelease -\IncludeInRelease{2020/02/02}% - {\reinstall@nfss@defs}{NFSS series init}% -\AtBeginDocument{\reinstall@nfss@defs\init@series@setup} +\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}% - {\reinstall@nfss@defs}{NFSS series init}% + {\set@curr@file}{Setting current file name}% +\let\set@curr@file\@undefined \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'}% -} +\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{0000/00/00}% - {\@font@aliasinfo}{alias size function}% -\let\s@fct@alias\@undefined -\let\@font@aliasinfo\@undefined - +\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 -%%% 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 +\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{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 +\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 -%%% From File: ltpageno.dtx -%%% From File: ltxref.dtx \IncludeInRelease{2020/10/01}% - {\refstepcounter}{Add \@currentcounter}% -\def\@currentcounter{} -\def\refstepcounter#1{\stepcounter{#1}% - \edef\@currentcounter{#1}% - \protected@edef\@currentlabel - {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% + {\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}% + {\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 + } + } } -\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% - \expandafter\MakeUppercase\@tempa} -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\refstepcounter}{Add \labelformat and \Ref}% -\let\@currentcounter\@undefined -\def\refstepcounter#1{\stepcounter{#1}% - \protected@edef\@currentlabel - {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}% +\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: } -\def\labelformat#1{\expandafter\def\csname p@#1\endcsname##1} -\DeclareRobustCommand\Ref[1]{\protected@edef\@tempa{\ref{#1}}% - \expandafter\MakeUppercase\@tempa} -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\refstepcounter}{Add \labelformat and \Ref}% - -\def\refstepcounter#1{\stepcounter{#1}% - \protected@edef\@currentlabel - {\csname p@#1\endcsname\csname the#1\endcsname}% +\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 + } } -\let\labelformat\@undefined -\let\Ref\@undefined - -\EndIncludeInRelease -%%% From File: ltmiscen.dtx -\IncludeInRelease{2020/10/01}% - {\enddocument}{Use Hooks}% -\def\enddocument{% - \UseOneTimeHook{enddocument}% - \@kernel@after@enddocument - \@checkend{document}% - \clearpage - \UseOneTimeHook{enddocument/afterlastpage}% - \@kernel@after@enddocument@afterlastpage - \begingroup - \if@filesw - \immediate\closeout\@mainaux - \let\@setckpt\@gobbletwo - \let\@newl@bel\@testdef - \@tempswafalse - \makeatletter \@@input\jobname.aux - \fi - \UseOneTimeHook{enddocument/afteraux}% - \UseOneTimeHook{enddocument/info}% - \endgroup - \UseOneTimeHook{enddocument/end}% - \deadcycles\z@\@@end} -\NewHook{enddocument} -\NewHook{enddocument/afterlastpage} -\NewHook{enddocument/afteraux} -\NewHook{enddocument/info} -\NewHook{enddocument/end} -\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 - up to \font@submax\space have occurred.\@gobbletwo}% - \fi - \@defaultsubs - \@refundefined - \if@filesw - \ifx \@multiplelabels \relax - \if@tempswa - \@latex@warning@no@line{Label(s) may have changed. - Rerun to get cross-references right}% - \fi - \else - \@multiplelabels - \fi - \ifx \@extra@page@added \relax - \@latex@warning@no@line{Temporary extra page added at the end. - Rerun to get it removed}% - \fi - \fi +\cs_new:Npn \__shipout_add_background_picture:n #1 { + \__shipout_add_background_box:n { \__shipout_picture_overlay:n {#1} } } -\EndIncludeInRelease -\IncludeInRelease{0000/00/00}% - {\enddocument}{Use Hooks}% - -\def\enddocument{% - \let\AtEndDocument\@firstofone - \@enddocumenthook - \@checkend{document}% - \clearpage - \begingroup - \if@filesw - \immediate\closeout\@mainaux - \let\@setckpt\@gobbletwo - \let\@newl@bel\@testdef - \@tempswafalse - \makeatletter \@@input\jobname.aux - \fi - \@dofilelist - \ifdim \font@submax >\fontsubfuzz\relax - \@font@warning{Size substitutions with differences\MessageBreak - up to \font@submax\space have occurred.\@gobbletwo}% - \fi - \@defaultsubs - \@refundefined +\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 - \ifx \@multiplelabels \relax - \if@tempswa - \@latex@warning@no@line{Label(s) may have changed. - Rerun to get cross-references right}% - \fi - \else - \@multiplelabels - \fi + \iow_now:Nx \@auxout { + \gdef\string\@abspage@last {\int_use:N \g_shipout_readonly_int}} \fi - \endgroup - \deadcycles\z@\@@end} - -\let\@kernel@after@enddocument\@undefined -\let\@kernel@after@enddocument@afterlastpage\@undefined -\let\@enddocument@kernel@warnings\@undefined - -\EndIncludeInRelease -\IncludeInRelease{2018/12/01}% - {\protected@file@percent}{Mask line endings}% -\protected\def\protected@file@percent{} - -\catcode`\^^A=9 -\long\gdef\add@percent@to@temptokena - #1\protected@file@percent#2\add@percent@to@temptokena - {\expandafter\ifx\expandafter X\detokenize{#2}X\expandafter\dont@add@percent@to@temptokena\else - \expandafter\do@add@percent@to@temptokena\fi{#1}} -\long\def\dont@add@percent@to@temptokena#1{% - \@temptokena\expandafter{#1}} -\begingroup -\catcode`\%=12 -\catcode`\^^A=14 -\long\gdef\do@add@percent@to@temptokena#1{\@temptokena\expandafter{#1%^^A - }} -\endgroup -\long\def\@writefile#1#2{% - \@ifundefined{tf@#1}\relax - {% - \add@percent@to@temptokena - \@empty#2\protected@file@percent - \add@percent@to@temptokena - \immediate\write\csname tf@#1\endcsname{\the\@temptokena}% - }% + \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}% - {\protected@file@percent}{Mask line endings}% -\let\protected@file@percent\@undefined -\let\add@percent@to@temptokena\@undefined -\let\do@add@percent@to@temptokena\@undefined -\let\dont@add@percent@to@temptokena\@undefined -\long\def\@writefile#1#2{% - \@ifundefined{tf@#1}\relax - {\@temptokena{#2}% - \immediate\write\csname tf@#1\endcsname{\the\@temptokena}% - }% + {\shipout}{Hook management (shipout)}% + +\ifcsname tex_shipout:D\endcsname +\expandafter\let\expandafter\shipout + \csname tex_shipout:D\endcsname +\fi + +\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}% - {\begin}{Use hook system}% -\DeclareRobustCommand*\begin[1]{% - \UseHook{env/#1/before}% - \@ifundefined{#1}% - {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% - {\def\reserved@a{\def\@currenvir{#1}% - \edef\@currenvline{\on@line}% - \@execute@begin@hook{#1}% - \csname #1\endcsname}}% - \@ignorefalse - \begingroup\@endpefalse\reserved@a} -\def\@execute@begin@hook #1{% - \expandafter\ifx\csname #1\endcsname\document - \endgroup - \gdef\@execute@begin@hook##1{\UseHook{env/##1/begin}}% - \@expl@@@initialize@all@@ - \fi - \UseHook{env/#1/begin}% -} -\edef\end - {\unexpanded{% - \romannumeral - \ifx\protect\@typeset@protect - \expandafter %1 - \expandafter %2 - \expandafter %1 - \expandafter %3 expands the \csname inside \end - \expandafter %1 - \expandafter %2 expands \end - \expandafter %1 expands the \else - \z@ - \else - \expandafter\z@\expandafter\protect - \fi - }% - \expandafter\noexpand\csname end \endcsname - } -\@namedef{end }#1{% - \romannumeral - \IfHookEmptyTF{env/#1/end}% - {\expandafter\z@}% - {\z@\UseHook{env/#1/end}}% - \csname end#1\endcsname\@checkend{#1}% - \expandafter\endgroup\if@endpe\@doendpe\fi - \UseHook{env/#1/after}% - \if@ignore\@ignorefalse\ignorespaces\fi -} -\EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\begin}{Making \begin/\end robust}% -\DeclareRobustCommand\begin[1]{% - \@ifundefined{#1}% - {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% - {\def\reserved@a{\def\@currenvir{#1}% - \edef\@currenvline{\on@line}% - \csname #1\endcsname}}% - \@ignorefalse - \begingroup\@endpefalse\reserved@a} -\edef\end - {\unexpanded{% - \romannumeral - \ifx\protect\@typeset@protect - \expandafter %1 - \expandafter %2 - \expandafter %1 - \expandafter %3 expands the \csname inside \end - \expandafter %1 - \expandafter %2 expands \end - \expandafter %1 expands the \else - \z@ - \else - \expandafter\z@\expandafter\protect - \fi - }% - \expandafter\noexpand\csname end \endcsname - } -\@namedef{end }#1{% - \csname end#1\endcsname\@checkend{#1}% - \expandafter\endgroup\if@endpe\@doendpe\fi - \if@ignore\@ignorefalse\ignorespaces\fi} + {\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}% - {\begin}{Making \begin/\end robust}% -\def\begin#1{% - \@ifundefined{#1}% - {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}% - {\def\reserved@a{\def\@currenvir{#1}% - \edef\@currenvline{\on@line}% - \csname #1\endcsname}}% - \@ignorefalse - \begingroup\@endpefalse\reserved@a} -\def\end#1{% - \csname end#1\endcsname\@checkend{#1}% - \expandafter\endgroup\if@endpe\@doendpe\fi - \if@ignore\@ignorefalse\ignorespaces\fi} - + {\AtEndDvi}{atenddvi emulation}% +\let \AtEndDvi \@undefined \EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\AtBeginEnvironment}{Hooks for environments}% -\newcommand\AtBeginEnvironment[2][.] {\AddToHook{env/#2/begin}[#1]} -\newcommand\AtEndEnvironment[2][.] {\AddToHook{env/#2/end}[#1]} -\newcommand\BeforeBeginEnvironment[2][.]{\AddToHook{env/#2/before}[#1]} -\newcommand\AfterEndEnvironment[2][.] {\AddToHook{env/#2/after}[#1]} +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% 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 +\let\reserved@a\relax +\let\@elt\relax \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\AtBeginEnvironment}{Hooks for environments}% - -\let\AtBeginEnvironment\@undefined -\let\AtEndEnvironment\@undefined -\let\BeforeBeginEnvironment\@undefined -\let\AfterEndEnvironment\@undefined - + {\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{2020/02/02}% - {\@centercr}{Make robust}% -\protected\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi - \par\@ifstar{\nobreak\@xcentercr}\@xcentercr} +\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}% - {\@centercr}{Make robust}% - -\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi - \par\@ifstar{\nobreak\@xcentercr}\@xcentercr} - + {\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{2020/10/01}% - {\@icentercr}{centering, etc support calc}% -\def\@icentercr[#1]{\@vspace@calcify{#1}\ignorespaces} +\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}% - {\@icentercr}{centering, etc support calc}% - -\def\@icentercr[#1]{\vskip #1\ignorespaces} -\EndIncludeInRelease -\IncludeInRelease{2020/10/01}% - {\centering}{Set finaldhypendemerits}% -\DeclareRobustCommand\centering{% - \let\\\@centercr - \rightskip\@flushglue\leftskip\@flushglue - \finalhyphendemerits=\z@ - \parindent\z@\parfillskip\z@skip} -\DeclareRobustCommand\raggedright{% - \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip - \finalhyphendemerits=\z@ - \leftskip\z@skip - \parindent\z@} -\DeclareRobustCommand\raggedleft{% - \let\\\@centercr - \rightskip\z@skip\leftskip\@flushglue - \finalhyphendemerits=\z@ - \parindent\z@\parfillskip\z@skip} + {\@testwrongwidth}{float order in 2-column}% +\let\@testwrongwidth\@undefined +\let\f@depth\@undefined \EndIncludeInRelease -\IncludeInRelease{2019/10/01}% - {\centering}{Make commands robust}% - -\DeclareRobustCommand\centering{% - \let\\\@centercr - \rightskip\@flushglue\leftskip\@flushglue - \parindent\z@\parfillskip\z@skip} -\DeclareRobustCommand\raggedright{% - \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip - \leftskip\z@skip - \parindent\z@} -\DeclareRobustCommand\raggedleft{% - \let\\\@centercr - \rightskip\z@skip\leftskip\@flushglue - \parindent\z@\parfillskip\z@skip} +\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}% - {\centering}{Make commands robust}% - -\kernel@make@fragile\centering -\kernel@make@fragile\raggedright -\kernel@make@fragile\raggedleft - +\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}{\@verbatim}% - {Disable hyphenation in verbatim}% -\def\@verbatim{\trivlist \item\relax - \if@minipage\else\vskip\parskip\fi - \leftskip\@totalleftmargin\rightskip\z@skip - \parindent\z@\parfillskip\@flushglue\parskip\z@skip - \@@par - \language\l@nohyphenation - \@tempswafalse - \def\par{% - \if@tempswa - \leavevmode \null \@@par\penalty\interlinepenalty - \else - \@tempswatrue - \ifhmode\@@par\penalty\interlinepenalty\fi - \fi}% - \let\do\@makeother \dospecials - \obeylines \verbatim@font \@noligs - \everypar \expandafter{\the\everypar \unpenalty}% +\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}{\@verbatim}% - {Disable hyphenation in verbatim}% -\def\@verbatim{\trivlist \item\relax - \if@minipage\else\vskip\parskip\fi - \leftskip\@totalleftmargin\rightskip\z@skip - \parindent\z@\parfillskip\@flushglue\parskip\z@skip - \@@par - \@tempswafalse - \def\par{% - \if@tempswa - \leavevmode \null \@@par\penalty\interlinepenalty - \else - \@tempswatrue - \ifhmode\@@par\penalty\interlinepenalty\fi - \fi}% - \let\do\@makeother \dospecials - \obeylines \verbatim@font \@noligs - \hyphenchar\font\m@ne - \everypar \expandafter{\the\everypar \unpenalty}% +\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 } \EndIncludeInRelease -\IncludeInRelease{2018/12/01}% - {\verbvisiblespace}{Setup visible space for \verb}% -\DeclareRobustCommand\asciispace{\char 32 } -\ifx\Umathcode\@undefined - \let\verbvisiblespace\asciispace % Pdftex version -\else - \DeclareRobustCommand\verbvisiblespace - {\leavevmode{\usefont{OT1}{cmtt}{m}{n}\asciispace}} % xetex/luatex version -\fi - -\def\@setupverbvisiblespace{% - \ifx\verbvisiblespace\asciispace - \let\@xobeysp\asciispace +\IncludeInRelease{2015/01/01}% + {\@startdblcolumn}{float order in 2-column}% +\def \@startdblcolumn {% + \@tryfcolumn \@deferlist + \if@fcolmade \else - \setbox\z@\hbox{x}% - \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}% - \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}% + \begingroup + \let \reserved@b \@deferlist + \global \let \@deferlist \@empty + \let \@elt \@sdblcolelt + \reserved@b + \endgroup \fi -} - -\newbox\@verbvisiblespacebox -\@namedef{verbatim*}{\@verbatim - \@setupverbvisiblespace - \frenchspacing\@vobeyspaces\@sxverbatim} -\expandafter\let\csname endverbatim*\endcsname =\endverbatim +}% \EndIncludeInRelease \IncludeInRelease{0000/00/00}% - {\verbvisiblespace}{Setup visible space for \verb}% - -\@namedef{verbatim*}{\@verbatim\@sxverbatim} - -\let\asciispace \@undefined -\let\verbvisiblespace \@undefined -\let\@setupverbvisiblespace\@undefined -\let\@verbvisiblespacebox \@undefined + {\@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{2020/10/01}% - {\@sverb}{Drop spaces before \verb delimiter}% -\def\@sverb#1{\if\noexpand#1 \expandafter\@sverb\else\@@sverb{#1}\fi} -\def\@@sverb#1{% - \catcode`#1\active - \lccode`\~`#1% - \gdef\verb@balance@group{\verb@egroup - \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% - \aftergroup\verb@balance@group - \lowercase{\let~\verb@egroup}% - \ifnum\catcode`\ =\active - \else \@setupverbvisiblespace \@vobeyspaces \fi -} +\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{2018/12/01}% - {\@sverb}{Setup visible space for \verb}% - -\def\@sverb#1{% - \catcode`#1\active - \lccode`\~`#1% - \gdef\verb@balance@group{\verb@egroup - \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% - \aftergroup\verb@balance@group - \lowercase{\let~\verb@egroup}% - \ifnum\catcode`\ =\active - \else \@setupverbvisiblespace \@vobeyspaces \fi -} -\let\@@sverb\@undefined +\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}% - {\@sverb}{Setup visible space for \verb}% -\def\@sverb#1{% - \catcode`#1\active - \lccode`\~`#1% - \gdef\verb@balance@group{\verb@egroup - \@latex@error{\noexpand\verb illegal in command argument}\@ehc}% - \aftergroup\verb@balance@group - \lowercase{\let~\verb@egroup}}% - -\EndIncludeInRelease -\IncludeInRelease{2017-04-15}{\verb}% - {Disable hyphenation in verb}% -\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi - \bgroup - \verb@eol@error \let\do\@makeother \dospecials - \verbatim@font\@noligs - \language\l@nohyphenation - \@ifstar\@sverb\@verb} -\EndIncludeInRelease -\IncludeInRelease{0000-00-00}{\verb}% - {Disable hyphenation in verb}% -\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi - \bgroup - \verb@eol@error \let\do\@makeother \dospecials - \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 -\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% + {\@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 }% - #1% -} +\EndIncludeInRelease +\IncludeInRelease{2015/01/01} + {\@addtonextcol}{float order in 2-column}% +\def\@addtonextcol{% \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")} + \@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} - {\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}% + {\@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}% - {\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 + {\@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}% - {\fontencoding}{TU in everyjob}% -\fontencoding{OT1}\let\encodingdefault\f@encoding + {\@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 -\fi -%%% From File: ltexpl.dtx -\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 -\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 } - {}% - \fi - }% - } +%%% 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{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 % +\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 - \message{Skipping expl3-dependent extensions} - \expandafter\@gobbletwo + \edef\reserved@d{#2\reserved@c}% \fi - } - {% - \message{Skipping expl3-dependent extensions}% - \@gobbletwo - }% -\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 -\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 + \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} -- cgit v1.2.3