texlive[57998] branches/branch2020.0/Master/texmf-dist: latex-dev

commits+karl at tug.org commits+karl at tug.org
Sun Feb 28 17:33:41 CET 2021


Revision: 57998
          http://tug.org/svn/texlive?view=revision&revision=57998
Author:   karl
Date:     2021-02-28 17:33:40 +0100 (Sun, 28 Feb 2021)
Log Message:
-----------
latex-dev (27feb21) (branch)

Modified Paths:
--------------
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/README.md
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/bugs.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/changes.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/classes.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/legal.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/letter.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manifest.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manual.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/proc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/slides.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/texpert.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/README.md
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/array.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/bm.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/calc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/changes.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/layout.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/manifest.txt
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/trace.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/xr.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmextra.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/doc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ec.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/format.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lterror.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlength.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmath.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpage.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpar.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltplain.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltsect.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltspace.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttab.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltthm.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxref.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newdc.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newlfont.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/olddc.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/preload.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slifonts.fdd
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.fdd
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/unpack.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/array.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/calc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/delarray.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/hhline.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/layout.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/theorem.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tools.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/trace.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.ins
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xr.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xspace.dtx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/alltt.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ansinew.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/applemac.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ascii.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bezier.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk10.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk11.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk12.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1250.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1252.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1257.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437de.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp850.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp852.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp858.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp865.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/decmulti.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/exscale.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/flafter.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/idx.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lablst.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex209.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin1.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin10.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin2.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin3.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin4.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin5.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin9.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltnews.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/macce.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/minimal.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/next.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlenc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/openbib.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.cfg
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/sfonts.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/showidx.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size10.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size11.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size12.clo
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/testpage.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/texsys.cfg
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tuenc.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8.def
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2016-10-06.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2020-02-10.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/bm.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/calc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/delarray.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/e.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/h.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/hhline.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/layout.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol-2017-04-11.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/q.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/r.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/s.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thb.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thc.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thm.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thp.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/trace.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref-2016-02-16.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/x.tex
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xr.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xspace.sty

Added Paths:
-----------
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.tex
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
    branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.tex
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
    branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpara.dtx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc-v3beta.sty
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable-2020-01-07.sty

Removed Paths:
-------------
    branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/README.md
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/README.md	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/README.md	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 The LaTeX kernel
 ================
 
-Release 2021-05-01 pre-release 1
+Release 2021-05-01 pre-release 2
 
 Overview
 --------

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/alltt.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/bugs.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/bugs.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/bugs.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -21,7 +21,7 @@
      https://www.latex-project.org/bugs.html
 
  * The error is not caused by software other than the core LaTeX
-   software that is produced and maintained by the LaTeX3 project
+   software that is produced and maintained by the LaTeX Project
    team. Please report problems with other software to the authors
    or suppliers of that software, and not to us!
 
@@ -30,9 +30,9 @@
 
    Also, the test file demonstrating the error should not use any
    classes or packages other than those authored and supported by the
-   LaTeX3 team.  The files for the package or class will tell you how
+   LaTeX Project team.  The files for the package or class will tell you how
    it is supported. The test file should use the package latexbug to
-   check that all packages in the file are supported by the LaTeX3
+   check that all packages in the file are supported by the LaTeX
    Project (see the discussion on the website why this is important).
 
  * The error is not caused by using an obsolete version of any file or
@@ -85,4 +85,4 @@
 Please *do not* send such reports to the latex-bugs address.
 
 
---- Copyright 1997,1998,2006,2008,2017,2020 the LaTeX3 project.  All rights reserved ---
+--- Copyright (C) 1997-2021 the LaTeX Project.  All rights reserved ---

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cfgguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -39,7 +39,7 @@
 
 \title{Configuration options for \LaTeXe}
 
-\author{\copyright~Copyright 1998, 2001, 2003 \LaTeX3 Project Team.\\
+\author{\copyright~Copyright 1998, 2001, 2003 \LaTeX\ Project Team.\\
    All rights reserved.}
 
 \date{14 February 2003}
@@ -146,7 +146,7 @@
      portable only in the sense of being processable at a different
      site---the actual formatting will not be the same if different
      fonts are used.
-   \item The \LaTeX3 project team will not be able to support you in
+   \item The \LaTeX\ Project team will not be able to support you in
      diagnosing problems if these cannot be reproduced with a format
      that does not use any configuration files.
    \end{itemize}
@@ -288,7 +288,7 @@
      portable only in the sense of being processable at a different
      site---the actual formatting will not be the same if different
      fonts are used.
-   \item The \LaTeX3 project team will not be able to support you in
+   \item The \LaTeX\ Project team will not be able to support you in
      diagnosing problems if these cannot be reproduced with a format
      that does not use any customised font definition files.
    \end{itemize}
@@ -370,7 +370,7 @@
    \item Documents are portable only in the sense of being processable
      at a different site---the actual formatting will not be the same
      if different fonts are used.
-   \item The \LaTeX3 project team will not be able to support you in
+   \item The \LaTeX\ Project team will not be able to support you in
      diagnosing problems if these cannot be reproduced with a format
      that does not use this configuration file.
    \end{itemize}

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/changes.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/changes.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/changes.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -6,6 +6,154 @@
 are not part of the distribution.
 ================================================================================
 
+2021-02-25  Marcel Krüger  <Marcel.Krueger at latex-project.org>
+
+	* ltfinal.dtx:
+	Improve speed of compatibility code for preloading \pdfglyphtounicode
+	into \everyjob
+
+2021-02-19  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltoutenc.dtx (subsection{Definitions for the TU encoding}):
+	Add \textnonbreakinghyphen, \textfiguredash and \texthorizontalbar
+	to OT1, T1 and TU encoding (gh/404)
+
+	* doc-v3beta.sty: File added, currently for internal documentation
+	to be replaced in a later release.
+
+2021-02-18  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltclass.dtx: save raw package/class option lists to improve
+	key/val usage in optional argument of \usepackage and
+	\documentclass.
+
+2021-02-17  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltoutenc.dtx (subsection{Definitions for the TS1 encoding}):
+	Special definition for \textasteriskcentered when missing in TS1 (gh/502)
+
+	* ltoutenc.dtx (subsection{Definitions for the TU encoding}):
+	Adjust values for \textasteriskcentered To match TS1 definition (gh/502)
+
+2021-02-16  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltpara.dtx: providing paragraph hooks,; full integration into
+	latex.ltx will happen at a later point in time. For documentation
+	see ltpara-doc.pdf.
+
+2021-02-16  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltfloat.dtx (subsection{Footnotes}):
+	\footref added
+
+2021-02-15  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* ltfssdcl.dtx: two additional \expandafter to avoid infinite
+	loop on not in math error. (gh/501)
+
+2021-02-11  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* classes.dtx (subsubsection{Itemize}):
+	Drop incorrect space in \labelitemiv (gh/496)
+	Document use of \labelitemfont in ltnews33 (gh/497)
+
+2021-02-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltoutenc.dtx (subsection{Definitions for the TU encoding}):
+	Add \textnonbreakinghyphen}, \textfiguredash and
+	\texthorizontalbar (gh/404)
+
+2021-02-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltboxes.dtx (section{\LaTeX\ Box commands}):
+	Explicitly run \par at the end of footnote text in preparation
+	for paragraph hooks
+
+	* ltfloat.dtx (subsection{Footnotes}):
+	Explicitly run \par at the end of footnote text in preparation
+	for paragraph hooks
+
+2021-02-08  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltfilehook.dtx (subsection{Patching \LaTeX{}'s \InputIfFileExists command}):
+	Undo the internal for robust \InputIfFileExists in rollback (gh/494)
+
+2021-02-08  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltmiscen.dtx (subsection{Environments}):
+	Undo the internals for \begin and \end as well when
+	rolling back (gh/494)
+
+2021-02-04  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltboxes.dtx (section{\LaTeX\ Box commands}):
+	Always add the color groups (gh/488)
+
+2021-02-03  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltfloat.dtx (subsection{Floating Environments}):
+	Explicitly end the \marginpar argument with \par to support
+	tagging (gh/489)
+
+2021-01-31  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* ltfilehook.dtx: set \protect to \string to avoid bad
+          expansion and possible non termination. github/481
+
+2021-01-27  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* utf8ienc.dtx (subsection{The mapping table}):
+	Support various Unicode characters with dot accents for
+	Indic transliterations (gh/484)
+
+2021-01-22  Marcel Krüger  <Marcel.Krueger at latex-project.org>
+
+	* ltshipout.dtx:
+	Define and call Lua callback pre_shipout_filter.
+
+2021-01-21  Marcel Krüger  <Marcel.Krueger at latex-project.org>
+
+	* ltfinal.dtx:
+	For pdfTeX enable automatic generation of ToUnicode maps.
+	For pdfTeX versions which do not support dumping these into the format,
+	all \pdfglyphtounicode instructions will be dumped into \everyjob
+
+2021-01-19  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltshipout.dtx: Reordered execution of shipout hooks so that code
+	in one can influence code in later ones in a more natural manner.
+
+2020-01-16  Joseph Wright  <Joseph.Wright at latex-project.org>
+
+	* ltexpl.dtx
+	Adjust for full xparse integration
+
+	* ltcmd.dtx
+	New file to replace loading xparse
+
+2021-01-12  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltshipout.dtx: Make sure that the shipout/firstpage hook material
+	is not stored inside \ShipoutBox, in case that gets reused, e.g. via
+	\RawShipout but is only ever added to the very first page shipped out.
+
+2021-01-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltshipout.dtx:
+	Added internal \@kernel at after@shipout at background hook.
+	Added public shipout/after hook
+
+	(subsection{Overloading the \shipout primitive}):
+	Add \RawShipout for shipping out while bypassing most hooks.
+
+	(subsection{Emulating atbegshi}): Added
+	\AtBeginShipoutOriginalShipout to the emulation of atbegshi.
+
+2021-01-08  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* ltshipout.dtx (subsection{Package \pkg{everyshi} emulation}):
+	The emulation is no longer needed so taken out (gh440)
+
 2020-12-22  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
 
 	* ltfssaxes.dtx (subsection{Changing to a new series}):
@@ -110,8 +258,8 @@
 
 2020-12-03  Joseph Wright  <Joseph.Wright at latex-project.org>
 
-        * usrguide3.tex
-          New file to cover creation of document commands
+	* usrguide3.tex
+	New file to cover creation of document commands
 
 
 #########################

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/classes.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/clsguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -34,7 +34,7 @@
 
 \title{\LaTeXe~for class and package writers}
 
-\author{Copyright \copyright~1995--2006 The \LaTeX3 Project\\
+\author{Copyright \copyright~1995--2006 The \LaTeX\ Project\\
    All rights reserved}
 
 \date{15 February 2006}

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cmfonts.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/cyrguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 \title{Cyrillic languages support in \LaTeX}
 
 \author{\copyright~Copyright 1998--1999,\\ Vladimir Volovich,
-        Werner Lemberg and \LaTeX3 Project Team.\\ All rights reserved.}
+        Werner Lemberg and \LaTeX\ Project Team.\\ All rights reserved.}
 
 \date{12 March 1999}
 
@@ -381,7 +381,7 @@
 experimental \textsf{mathtext} package, which is also in the
 \textsf{T2}~bundle.  Note that this package uses up at least one
 additional math alphabet per font encoding.  For this and other
-reasons, The \LaTeX3 Project Team considers that this experimental
+reasons, The \LaTeX\ Project Team considers that this experimental
 extension to \LaTeX{}'s glyph-handling mechanisms should be used with
 caution; but please try it out and send us your opinions and ideas.
 Note that it is not included in the core of \LaTeX{} because both the

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/doc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/docstrip.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/encguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -188,7 +188,7 @@
 \title{\LaTeX{} font encodings}
 
 \author{Frank Mittelbach \and Robin
-   Fairbairns \and Werner Lemberg \and \LaTeX3 Project Team.}
+   Fairbairns \and Werner Lemberg \and \LaTeX\ Project Team.}
 
 \date{\copyright~Copyright 1995--2016 \\[5pt] 18 February 2016}
 
@@ -286,7 +286,7 @@
 
 Independently, a first proposal (the so-called \emph{Aston proposal}) was worked
 out by Justin Ziegler together with Frank Mittelbach and other members of the
-\LaTeX3 project team~\cite{ziegler}. A first implementation of
+\LaTeX\ Project team~\cite{ziegler}. A first implementation of
 this propsal was realized by Matthias Clasen und Ulrik
 Vieth~\cite{clasen,clasen-vieth}.
 
@@ -345,7 +345,7 @@
 Names for encoding schemes are strings of up to three letters (all
 upper case) plus digits.
 
-The \LaTeX3 project reserves the use of encoding names starting with the
+The \LaTeX\ Project reserves the use of encoding names starting with the
 following letters: |T| (standard 256-long text encodings), |TS|
 (symbols that are designed to extend a corresponding |T| encoding),
 |X| (text encodings that do not conform to the strict requirements for

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/exscale.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fix-cm.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/fntguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -2,7 +2,7 @@
 %
 % Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -37,7 +37,7 @@
 
 \title{\LaTeXe{} font selection}
 
-\author{\copyright~Copyright 1995--2020, \LaTeX3 Project
+\author{\copyright~Copyright 1995--2020, \LaTeX\ Project
   Team.\thanks{Thanks to Arash Esbati for documenting the
     newer NFSS features of 2020}\\
    All rights reserved.}
@@ -1800,7 +1800,7 @@
   Names for encoding schemes are strings of up to three letters (all
   upper case) plus digits.
 
-  The \LaTeX3 project reserves the use of encodings starting with the
+  The \LaTeX\ Project reserves the use of encodings starting with the
   following letters: |T| (standard 256-long text encodings), |TS|
   (symbols that are designed to extend a corresponding |T| encoding),
   |X| (text encodings that do not conform to the strict requirements for

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/graphpap.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ifthen.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/inputenc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexchanges.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2015-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -38,7 +38,7 @@
 
 \title{Changes to the \LaTeXe{} format}
 
-\author{\copyright~Copyright 2015--2021, \LaTeX3 Project Team.\\
+\author{\copyright~Copyright 2015--2021, \LaTeX\ Project Team.\\
    All rights reserved.}
 
 \date{2021-01-08}
@@ -985,7 +985,7 @@
 reliable test for math mode that doesn't destroy
 kerning. Fortunately this problem can be solved when using e\TeX\ so
 if you use this as engine for your \LaTeX\ format, as recommended by
-the \LaTeX3 Project, you will get a fully functioning |\TextOrMath|
+the \LaTeX\ Project, you will get a fully functioning |\TextOrMath|
 command with no side effects. If you use regular \TeX\ as engine for
 your \LaTeX\ format then we have to choose between the lesser of two
 evils: 1)~breaking ligatures and preventing kerning or 2)~face the

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexrelease.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/latexsym.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lb2.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/legal.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/legal.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/legal.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -7,9 +7,8 @@
 =========
 
 This distribution is
-Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005
-          2006 2007 2008 2009 2011 2014 2015 2016
-The LaTeX3 Project and the individual authors:
+Copyright (C) 1993-2021
+The LaTeX Project and the individual authors:
 
    Leslie Lamport
    Johannes Braams

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/letter.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lgc2.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lppl.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltfilehook-code.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltfilehook-doc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lthooks-code.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/lthooks-doc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltluatex.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,9 @@
 % \iffalse meta-comment
 %
-% Copyright 2006, 2009, 2011, 2014 Heiko Oberdiek
-% Copyright (C) 2014-2020 The LaTeX3 Project
+% Copyright (C) 2006, 2009, 2011, 2014 Heiko Oberdiek
+% Copyright (C) 2014-2021 
+% The LaTeX Project and any individual authors listed elsewhere
+% in this file.
 %
 % This file is part of the LaTeX base system.
 % -------------------------------------------

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews01.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -52,8 +52,8 @@
 
 The most important news is the release of \LaTeXe, the new version of
 the \LaTeX{} software.  This version has better support for fonts,
-graphics and colour, and will be actively maintained by the \LaTeX3
-project team.  Upgrades will be issued every six months, in June and
+graphics and colour, and will be actively maintained by the \LaTeX\
+Project team.  Upgrades will be issued every six months, in June and
 December.
 
 \section{Why a new \LaTeX?}
@@ -110,7 +110,7 @@
 \item[graphics] for including images.
 \item[mfnfss] for using bitmap fonts.
 \item[psnfss] for using Type~1 fonts.
-\item[tools]  other packages by the \LaTeX3 team.
+\item[tools]  other packages by the \LaTeX\ Project team.
 \end{citations}
 The packages come with full documentation, and are also described in
 \emph{\LaTeX: A Document Processing System} or

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews02.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews03.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews04.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews05.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews06.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews07.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews08.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews09.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -47,7 +47,7 @@
 
 \section{New math font encodings}
 
-A joint working group of the \TeX{} Users Group and the \LaTeX3
+A joint working group of the \TeX{} Users Group and the \LaTeX\
 Project is developing a new 8-bit math font encoding for \TeX{}.
 It is designed to overcome several limitations and implementation
 problems of the old math font encodings and to simplify switching

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews10.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews11.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -110,7 +110,7 @@
 \section{New math font encodings}
 
 As we announced in \LaTeX{} News~9, a joint working group of the
-\TeX{} Users Group and the \LaTeX3 Project has developed a new
+\TeX{} Users Group and the \LaTeX\ Project has developed a new
 \mbox{8-bit} math font encoding for \TeX{}.
 The reason why this work is not yet released is because of other
 exciting developments in the world of math fonts and math characters.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews12.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews13.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews14.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews15.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews16.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 \section{Anniversary news}
 
 This anniversary \textit{Issue~16} takes a brief look into the future work of
-the \LaTeX3 Project Team, both short and longer range.  Please let
+the \LaTeX\ Project Team, both short and longer range.  Please let
 us know if you want %\newline
 to get involved with us in any of this work (see below).
 

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews17.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews18.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews19.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews20.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993--2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews21.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews22.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2015-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews23.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2015-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews24.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2015-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews25.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2016-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews26.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2017-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews27.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2017-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews28.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2017-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -353,7 +353,7 @@
   In: TUGboat, 38\#2, 2017.
   \url{https://www.latex-project.org/publications/}
 
-\bibitem{amsldoc} American Mathematical Society and The \LaTeX3 Project:
+\bibitem{amsldoc} American Mathematical Society and The \LaTeX\ Project:
   \emph{User's Guide for the \texttt{amsmath} package} (Version 2.1).
   April 2018.
   Available from

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews29.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2018-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -513,7 +513,7 @@
   \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\
   \url{https://latex-project.org/publications/}
 
-\bibitem{29:amsldoc} American Mathematical Society and The \LaTeX3 Project:
+\bibitem{29:amsldoc} American Mathematical Society and The \LaTeX\ Project:
   \emph{User's Guide for the \texttt{amsmath} Package} (Version 2.1).
   April 2018.
   Available from

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews30.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews31.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2019-2020
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews32.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2019-2020
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltnews33.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2019-2020
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -78,6 +78,7 @@
 
 \let\cls\pkg
 \providecommand\env[1]{\texttt{#1}}
+\providecommand\acro[1]{\textsc{#1}}
 
 \vbadness=1400  % accept slightly empty columns
 
@@ -111,9 +112,105 @@
 
 
 
+\section{Extending the hook concept to paragraphs}
+
+Largely triggered by the need for better control of paragraph text
+processing, in particular when producing tagged PDF output (see
+\cite{33:blueprint}), we have extended the paragraph processing of
+\LaTeX{} so that the kernel gains control both at the start and the
+end of each paragraph. This is done in a manner that is (or should
+be) transparent to packages and user documents.
+
+Beside the internal control points for exclusive use of the \LaTeX{}
+kernel we also implemented four public hooks that can be used by
+packages or user via the hook management declarations to achieve
+special effects or implement manipulations that in the past were only
+possible through redefinitions of \cs{everypar} or \cs{par} with the
+usual issue that such changes would conflict with changes in other
+packages.
+
+The documentation of the hooks together with a few examples is
+provided in \file{ltpara-doc.pdf} and for those who want to study the
+(quite interesting) code is found in \file{ltpara-code.pdf}. At
+some point in the future it will get fully merged into the \LaTeX{}
+kernel and will then appear in \file{source2e.pdf}.
+
+
+
 \section{Other changes to the \LaTeX{} kernel}
 
+\subsection{Adjusting \env{itemize} labels with \cs{labelitemfont}}
 
+The command \cs{labelitemfont} was in fact already introduced with the
+\LaTeX\ release 2020-02-02, but back then we forgot to describe it, so
+we do this now. Its purpose is to resolve some bad formatting issues
+with the \env{itemize} environment and at the same time make it easier
+to adjust its layout if necessary. What could happen in the past was the the
+\env{itemize} labels, e.g., the \textbullet{}, would sometimes react to
+surrounding font changes and could suddenly change shape, for example
+to \textit{\textbullet}.
+
+Now \cs{labelitemfont} is applied to each
+label defaulting to \cs{normalfont} which will prevent this behavior.
+By choosing a different settings other effects can be achieved, for example
+\begin{verbatim}
+  \renewcommand\labelitemfont
+     {\normalfont\fontfamily{lmss}\selectfont}
+  \renewcommand\labelitemfont
+     {\rmfamily\normalshape}
+\end{verbatim}
+The first will take the symbols from Latin Modern Sans so that you get
+%
+\def\myfont#1{{\let\labelitemfont\empty\fontfamily{lmss}\selectfont#1}}
+%
+\myfont\labelitemi, \myfont\labelitemii, \myfont\labelitemiii\ and
+\myfont\labelitemiv, while the second variant freezes the font family
+and shape, but leave the series variable, so that an \env{itemize} in
+a bold context would show bolder symbols. Making it empty would give
+you the buggy old behavior back.
+%
+\githubissue{497}
+
+
+\subsection{A note on file names with spaces, dots or UTF-8 characters}
+
+In one of the the recent \LaTeX{} releases we improved the interface
+for specifying file names so that they can now safely contain spaces
+(as is common on Windows but also elsewhere), UTF-8 characters
+outside the \acro{ascii} range as well as names with several dots in
+it. In the past this was only possible by applying a special syntax
+(in cases of spaces), not at all for most UTF-8 characters and
+not in all circumstances for files with several dots.
+
+However, \TeX{} has a built-in rule saying that you can leave out the
+extension if it is \texttt{.tex}. Because of that \verb=\input{file}=
+or \verb=\input{file.tex}= both load \file{file.tex} if it
+exists. While this is convenient most of the time it is a little
+awkward in some scenarios (for example, when both \file{file} and
+\file{file.tex} exist) and also when you manually try to implement
+that rule.
+
+\LaTeX{} therefore had one special syntax for \cs{include} and
+\cs{includeonly}: they always expected that their arguments contains a
+file name\footnote{In case of \cs{includeonly} a comma separated list
+  of such names.} without its extension, which had to be
+\texttt{.tex}.  Thus when you mistakenly wrote
+\verb=\include{mychap.tex}= (for example, when you changed from \cs{input}
+to \cs{include} somewhere), \LaTeX{} went ahead and looked for the
+file \file{mychap.tex.tex} for inclusion and tried to write support
+information to the file \file{mychap.tex.aux}.  The reason was that
+\cs{include} had to construct both physical file names from the
+argument and it didn't bother to do something special about the
+extension \texttt{.tex}.
+
+As a side effect of the new implementation this has now changed and
+the argument of \cs{include} now gets the extension \texttt{.tex}
+removed if it was used. Thus \verb=\include{mychap.tex}= now loads
+\file{mychap.tex} and no longer looks for \file{mychap.tex.tex}.
+%
+\githubissue{486}
+
+
 \subsection{\cs{end}\texttt{\textbraceleft document\textbraceright}
   should always start in v-mode}
 
@@ -139,9 +236,33 @@
 \githubissue{427}
 
 
+\subsection{Add a Lua callback to \pkg{ltshipout} to provide
+  a uniform location for applying custom attributes}
 
-\subsection{Provide hook in \cs{selectfont}}
+Just before shipping out a page, a new \LuaTeX{} callback
+\texttt{pre\_shipout\_filter} is now called to allow final
+adjustments to the box to be shipped out. This is particularly for
+Lua\TeX\ packages which flag certain elements of the page (e.g. using
+attributes or properties) in order to apply certain effects to these
+elements at shipout. An example for this is the \pkg{luacolor}
+package which could insert the color commands using this callback.
 
+
+\subsection{Improved copy\&paste support for \pdfTeX{} documents}
+
+When compiling with \pdfTeX{}, additional information is added to the
+PDF file to improve copying from and searching in text. This especially
+allows ligatures to copy correctly from \pdfTeX{} generated PDF files in
+most cases.
+
+Since this has been integrated into the kernel, most documents should no
+longer need to load the \pkg{cmap} package or input \texttt{glyphtounicode}.
+%
+\githubissue{465}
+
+
+\subsection{Provide a 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
@@ -173,6 +294,163 @@
 
 
 
+\subsection{Shipping out a page while bypassing hooks}
+
+In the 2020 October release several hooks were added to the page
+shipout process, e.g., to add some background or foreground material
+to some or all pages. We now also added a \cs{RawShipout} command that
+bypasses most of these hooks during the shipout. Some essential
+internal bookkeeping still takes place such as updating the
+\texttt{totalpages} counter or adding \texttt{shipout/firstpage} or
+\texttt{shipout/lastpage} material if the page happens to be the first
+or last.
+
+\subsection{Robust commands in filename arguments}
+The filename handling has been modified so that \verb|\string| is
+applied while normalizing robust commands while determining the file
+name.  Previously \verb|\input{\sqrt{2}}| would cause \LaTeX\ to loop indefinitely.
+With the new behavior it accesses \verb|sqrt {2}.tex|.
+%
+\githubissue{481}
+
+
+\subsection{Additional support for Unicode characters from the
+  Latin Extended Additional block}
+
+\LaTeX\ is quite capable of typesetting characters such as
+\enquote{\d{m}}, but until now it lacked the Unicode mappings for some
+characters that are used to write Sanskrit words in Latin
+transliteration (as seen in books about yoga, Buddhist philosophy,
+etc.). These have now been added so that such characters can be
+entered directly instead of resorting to \verb=\d{m}= and so forth.
+%
+\githubissue{484}
+
+
+\subsection{Always have color groups set up}
+
+To use color in \LaTeX{} certain constructs, especially boxes, need an
+extra layer of groups to ensure that the color setting does not
+\emph{escape} and continue outside the box when it shouldn't. To
+arrange for this the \LaTeX{} kernel defined a number of commands, e.g.,
+\cs{color at begingroup} to be used in such places. They have been
+initially no-ops and only the color packages redefined them to become
+real groups. This arrangement complicates the coding as one has to
+account for a group being there (or not there) depending of what is
+loaded in the document. So now the kernel already adds the groups.
+%
+\githubissue{488}
+
+
+\subsection{Execute \cs{par} at the end of \cs{marginpar} arguments}
+
+In preparation for tagged PDF it is important to properly tag all
+paragraphs and this requires running code at the beginning and end of
+each. At the end of a paragraph this is done inside the \cs{par}
+command, but the way \cs{marginpar} was coded, \LaTeX{} ended the
+marginal note without ever explicitly calling \cs{par}. This has now
+been changed.
+%
+\githubissue{489}
+
+
+
+\subsection{Producing several footnote marks to one footnote}
+
+It is sometimes necessary to reference the same footnote several
+times, i.e., produce several footnote marks with the same number or
+symbol. This is now always possible by placing a \cs{label} into the
+\cs{footnote} and reference it with the command \cs{footref}
+elsewhere.  This way marks refering to footnotes anywhere on the page
+(including those in \texttt{minipage}s) can be generated.  In the past
+this command was only available with certain classes or when loading
+the \pkg{footmisc} package.
+%
+\githubissue{482}
+
+
+
+\subsection{Providing the raw option list of packages or documentclass to key/value handlers}
+
+\LaTeXe{} has always normalized space in option lists so\\
+\verb|\documentclass[ a4paper , 12pt ]{article}|\\
+processed the intended options \texttt{a4paper} and \texttt{12pt}.
+
+Unfortunately the mechanism used was designed for the simple option
+names of the standard option processing.  Many classes and packages 
+now use extended \emph{keyval} processing, however this white space
+normalisation makes this difficult:
+\verb|[bb=1 2 3 4]|
+which might be expected to pass a bounding box of four numbers is
+normalised to \texttt{bb=1234} and
+\verb|[bb={1 2 3 4}]|\\
+which might be expected to quote the spaces results in low level \TeX{}
+parsing errors.
+
+
+For compatibility reasons, the standard option processing has not been
+changed however the original un-normalised package and class option lists
+are now saved. They are not used in the standard processing, however
+extended package option systems may use these \enquote{raw} option list
+macros if they are defined.
+
+The one change affecting the standard processing is that the low level
+error mentioned above is now avoided as values (any tokens to the
+right of an =  sign) are removed from consideration from the \enquote{unused
+option list}.  In this release \texttt{clip=true} and
+\texttt{clip=false} both contribute \texttt{clip} to the list of
+options that have been used.
+%
+\githubissue{85}
+
+
+
+\subsection{Poor man's \cs{textasteriskcentered} if missing}
+
+The \cs{textasteriskcentered} symbol, used as part of the set of
+footnote symbols in \LaTeX{}, is assumed to be implemented by
+every font in the \texttt{TS1} encoding (when \pdfTeX{} is used) or
+in the \texttt{TU} encoding for the Unicode engines. Unfortunately,
+that assumption is not correct for all fonts, for example, for the
+\texttt{stix2} fonts don't offer the glyph, with the result that one
+gets missing glyphs when using \cs{thanks} etc.
+
+For that reason the definition for \cs{textasteriskcentered} was
+altered to check if there is a glyph in the right position and if not
+a normal \enquote{*} is used, slightly enlarged and lowered.  That may
+not be perfect in all cases, but certainly better than nothing show
+up.
+%
+\githubissue{502}
+
+
+
+\subsection{Provide more ``dashes'' in encodings \texttt{OT1}, \texttt{T1} and \texttt{TU}}
+
+When pasting in text from external sources one sometimes encounters the Unicode characters
+%
+\texttt{"2011} (non-breaking hyphen),
+\texttt{"2012} (figure dash) and
+\texttt{"2015} (horizontal bar)
+%
+in addition to the common \texttt{"2013} (en-dash) and \texttt{"2014}
+(em-dash). In the past the first three characters produced an error
+message when used with \pdfTeX{}. Now they typeset an approximation
+(as they are unavailable in \texttt{OT1} or \texttt{T1} encoded fonts
+used by \pdfTeX{}), e.g., the figure dash is approximated by an en-dash.
+
+In Unicode engines they either work (if contained in the selected
+Unicode font) or typeset nothing and produce a ``Missing character''
+warning in the log file.
+
+However, what works in all engines now, is to access the characters
+via the command names \cs{textnonbreakinghyphen}, \cs{textfiguredash}
+and \cs{texthorizontalbar}, respectively.
+%
+\githubissue{404}
+
+
+
 \subsection{\ldots}
 
 \emph{to be written}
@@ -181,7 +459,6 @@
 
 
 
-
 \section{Changes to packages in the \pkg{graphics} category}
 
 \subsection{\ldots}
@@ -193,13 +470,26 @@
 
 \section{Changes to packages in the \pkg{tools} category}
 
-\subsection{\ldots}
+\subsection{\pkg{layout}: Support Japanese as a language option}
+The package now recognizes \texttt{japanese} as a language option.
+%
+\githubissue{353}
 
+
+
+\subsection{\pkg{longtable}: General bug fix update}
+Minor update to \pkg{longtable} to fix bugs reported.  Notably the
+possibility of incorrect page breaks if floats appear on the same page
+that a \env{longtable} starts.  As this may affect page breaking in
+existing documents, a rollback to \pkg{longtable 4.13}
+(\file{longtable-2020-01-07.sty}) is supported.
 %
-\githubissue{xxx}
+\gnatsissue{tools}{3512}
 
 
 
+
+
 \section{Changes to packages in the \pkg{amsmath} category}
 
 \subsection{\ldots}
@@ -208,17 +498,24 @@
 \githubissue{xxx}
 
 
+\medskip
+\begin{thebibliography}{9}
 
+\fontsize{9.3}{11.3}\selectfont
 
+\bibitem{33:blueprint} Frank Mittelbach and Chris Rowley:
+  \emph{\LaTeX{} Tagged PDF — A blueprint for a large project}.\\
+  \url{https://latex-project.org/publications/indexbyyear/2020/}
 
+\end{thebibliography}
+
+
+
 \end{document}
 
 
-\medskip
-\begin{thebibliography}{9}
+\endinput % needed for ltnews processing
 
-\fontsize{9.3}{11.3}\selectfont
-
 \bibitem{32:ltnews31} \LaTeX{} Project Team:
   \emph{\LaTeXe{} news 31}.\\
   \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf}
@@ -236,5 +533,5 @@
   \emph{Babel---Localization and internationalization}.\\
   \url{https://www.ctan.org/pkg/babel}
 
-\end{thebibliography}
 
+  

Added: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
===================================================================
(Binary files differ)

Index: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf	2021-02-28 16:33:40 UTC (rev 57998)

Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.tex	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,4 @@
+% this will typeset documentation + code
+
+\AtBeginDocument{\AlsoImplementation}
+\input{ltpara.dtx}


Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-code.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
===================================================================
(Binary files differ)

Index: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf	2021-02-28 16:33:40 UTC (rev 57998)

Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.tex	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,6 @@
+% this will typeset only documentation but not the code
+
+\AtBeginDocument{\OnlyDescription
+                 \let\tableofcontents\relax
+                 }
+\input{ltpara.dtx}


Property changes on: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltpara-doc.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltshipout-code.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltshipout-doc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltx3info.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/ltxdoc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/makeindx.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manifest.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manifest.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manifest.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -135,6 +135,7 @@
 % -----------------
 %
 % ltexpl.dtx      --  Basic support
+% ltcmd.dtx       --  Document command definition
 % lthooks.dtx     --  Hook management
 % ltfilehook.dtx  --  Hook management for file loading
 % ltshipout.dtx   --  Hook management for \shipout
@@ -185,6 +186,7 @@
 % doc.dtx         --  Package for self documenting code.
 % docstrip.dtx    --  Module for removing comments.
 % ltxdoc.dtx      --  Class file for printing documentation.
+% doc-v3beta.sty  --  New version of doc, current for internal use only.
 %
 %
 % Installation scripts for the various parts:

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/manual.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/modguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -40,7 +40,7 @@
 
 \title{Modifying \LaTeX}
 
-\author{\copyright~Copyright 1995, \LaTeX3 Project Team.\\
+\author{\copyright~Copyright 1995, \LaTeX\ Project Team.\\
    All rights reserved.}
 
 \date{12 December 1995}

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/nfssfont.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/proc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/slides.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/slifonts.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/source2e.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -248,6 +248,8 @@
 
  \DocInclude{ltdefns}  % Initial definitions.
 
+ \DocInclude{ltcmd}    % Document command creation
+
  \DocInclude{lthooks}  % Hook management (L3 module)
 
  \DocInclude{ltalloc}  % Allocation of counters and others.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/syntonly.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/texpert.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/texpert.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/texpert.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -207,4 +207,4 @@
 to install the new version before you can typeset these files.
 
 
---- Copyright 1995-2019 the LaTeX3 project.  All rights reserved ---
+--- Copyright (C) 1995-2019 the LaTeX Project.  All rights reserved ---

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/tlc2.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/tulm.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -34,7 +34,7 @@
 
 \title{\LaTeXe~for authors}
 
-\author{\copyright~Copyright 1995--2020, \LaTeX3 Project Team.\\
+\author{\copyright~Copyright 1995--2020, \LaTeX\ Project Team.\\
    All rights reserved.}
 
 \date{25 May 2020}
@@ -103,10 +103,10 @@
 |ltx3info.tex|.
 
 If you would like to support the project then you are welcome to send
-donations to the \LaTeX3 Project Fund; this has been set up to help
+donations to the \LaTeX\ Project Fund; this has been set up to help
 the research team by financing various expenses associated with this
 voluntary work of maintaining the current \LaTeX{} and developing
-\LaTeX3.
+\LaTeX\ further.
 
 The fund is administered by The \TeX{} Users Group and by various
 local user groups.  Information about making donations and joining

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/usrguide3.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 2020,2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% Copyright (C) 2020-2021
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -32,7 +32,7 @@
 
 \usepackage[T1]{fontenc}  % needed for \textbackslash in tt
 
-\title{\LaTeX3 methods for authors}
+\title{New \LaTeX\ methods for authors (starting 2020)}
 \author{\copyright~Copyright 2020, \LaTeX\ Project Team.\\
    All rights reserved.}
 

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/utf8ienc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/base/webcomp.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/README.md
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/README.md	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/README.md	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 The LaTeX `tools` bundle
 ========================
 
-Release 2021-05-01 pre-release 0
+Release 2021-05-01 pre-release 1
 
 Overview
 --------

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/afterpage.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/array.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/bm.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/calc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/changes.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/changes.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/changes.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -5,6 +5,34 @@
 are not part of the distribution.
 =======================================================================
 
+2021-02-25  David Carlisle  <David.Carlisle at latex-project.org>
+
+	* longtable.dtx
+	(subsection{User Settable Parameters}):
+	Increase default chunksize from 20 to 200
+
+	(subsection{The \env{longtable} environment}):
+	Guard against shrink glue on current page tools/3396 and gh/183
+	Rearrange vertical space tests for tools/3512 (floats on same page)
+
+	(subsection{The {\ttfamily\bslash\bslash} and \cs{kill} Commands}):
+	allocated global box  (tools/2914)
+
+	(subsection{The Output Routine}):
+	Remove box from final page gh/3512
+
+2021-02-10  Frank Mittelbach  <Frank.Mittelbach at latex-project.org>
+
+	* array.dtx (section{The macros \texttt{\textbackslash @classz}):
+	Explicitly run \par at the end of pboxes in preparation for
+	paragraph hooks
+
+2020-07-25  Johannes Braams  <Johannes.Braams at latex-project.org>
+
+	* layout.dtx: (subsection{Options}):
+	Option japanese added (gh/353)
+
+
 ================================================================================
 All changes above are only part of the development branch for the next release.
 ================================================================================

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/dcolumn.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/delarray.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/enumerate.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/fileerr.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/fontsmpl.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/ftnright.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/hhline.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/indentfirst.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/layout.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/longtable.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/manifest.txt
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/manifest.txt	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/manifest.txt	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
-% Copyright 1993-2016
-% The LaTeX3 Project and any individual authors listed elsewhere
+% Copyright (C) 1993-2021
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/multicol.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/rawfonts.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/shellesc.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/showkeys.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/somedefs.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tabularx.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/theorem.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/tools-overview.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,13 +1,13 @@
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesFile{tools-overview.tex}[2015/03/31 v1.0 Tools overview]
 
-% Copyright (C) 2006-2020
+% Copyright (C) 2006-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % Copyright (c) 2006-2014 Heiko Oberdiek
-%           (c) 2015-2019 The LaTeX3 Project
+%           (c) 2015-2019 The LaTeX Project
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
 % -------------------------------------------------------

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/trace.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/varioref.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/verbatim.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/xr.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/doc/latex-dev/tools/xspace.pdf
===================================================================
(Binary files differ)

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -30,7 +30,7 @@
 %%
 %% File `alltt.dtx'.
 %% Copyright (C) 1987 by Leslie Lamport
-%% Copyright (C) 1994--2020 LaTeX3 project, Johannes Braams
+%% Copyright (C) 1994-2021 LaTeX Project, Johannes Braams
 %%                       all rights reserved.
 %%
 %<*dtx>
@@ -40,10 +40,11 @@
 %<package>\ProvidesPackage{alltt}
 %<driver>\ProvidesFile{alltt.drv}
 %\ProvidesFile{alltt.dtx}
-              [2020/11/23 v2.0g defines alltt environment]
+              [2021/01/29 v2.0g defines alltt environment]
 %
 %<*driver>
 \documentclass{ltxdoc}
+\usepackage{alltt}
 \begin{document}
 \providecommand{\Lenv}[1]{\textsf{#1}}
 \providecommand{\pkg}[1]{\texttt{#1}}
@@ -55,6 +56,8 @@
 %
 % \changes{v2.0g}{1997/06/16}{A few documentation fixes (PR 2520)}
 % \changes{v2.0d}{1995/04/02}{A few documentation fixes (PR 1517)}
+% \changes{v2.0g}{2021-01-29}{Added a warning about OT1 versus T1 font
+% encoding}
 %
 %  \GetFileInfo{alltt.dtx}
 %  \title{The \texttt{alltt} environment\thanks{This file
@@ -88,11 +91,19 @@
 %    extra blank line if you're not careful.
 %
 %   \item Insert a math formula.  Note that |$| just produces a dollar
-%   sign, so you'll have to type |\(...\)| or |\[...\]|.  Also, |^|
-%   and |_| just produce their characters; use |\sp| or |\sb| for
-%   super- and subscripts, as in |\(x\sp{2}\)|.
+%    sign, so you'll have to type |\(...\)| or |\[...\]|.  Also, |^|
+%    and |_| just produce their characters; use |\sp| or |\sb| for
+%    super- and subscripts, as in |\(x\sp{2}\)|.
 %   \end{itemize}
 %
+%    \textbf{NB} When you are using \textsf{OT1} encoded fonts you might
+%    be surprsied when you switch to italics, becuase those fonts have
+%    a different set of glyphs:
+%    \begin{alltt}
+%  The glyph at the position of the $ in a slanted font: \textsl{$}.
+%  The glyph at the position of the $ in an italic font: \textit{$}.
+%    \end{alltt}
+%
 %  \StopEventually{}
 %
 %  \section{The Implementation}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/alltt.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -53,7 +53,7 @@
 %<*driver>
 \ProvidesFile{classes.drv}
 %</driver>
-              [2020/11/23 v1.4m
+              [2021/02/12 v1.4n
 %<article|report|book> Standard LaTeX document class]
 %<10pt|11pt|12pt>      Standard LaTeX file (size option)]
 %    \end{macrocode}
@@ -221,9 +221,9 @@
 %    file has version number \fileversion, last revised \filedate.}}
 %
 % \author{%
-% Copyright (C) 1992 by Leslie Lamport \and
-% Copyright (C) 1994-2020 by Frank Mittelbach \and Johannes Braams \and
-%                            \LaTeX3 Project Team
+% Copyright (C) 1992 by Leslie Lamport and
+% Copyright (C) 1994-2020 by Frank Mittelbach and Johannes Braams and
+%                            LaTeX Project Team
 % }
 % \date{\filedate}
 % \MaintainedByLaTeXTeam{latex}
@@ -2953,11 +2953,12 @@
 %    the labels of the various itemization levels: the symbols used are
 %    bullet, bold en-dash, centered asterisk and centred dot.
 %
+% \changes{v1.4n}{2021/06/11}{Drop incorrect space in \cs{labelitemiv} (gh/496)}
 %    \begin{macrocode}
 \newcommand\labelitemi  {\labelitemfont \textbullet}
 \newcommand\labelitemii {\labelitemfont \bfseries \textendash}
 \newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
-\newcommand\labelitemiv{ \labelitemfont \textperiodcentered}
+\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
 %    \end{macrocode}
 %
 % \begin{macro}{\labelitemfont}
@@ -2966,13 +2967,16 @@
 %    produced regardless of surrounding conditions.
 %
 % \changes{v1.4l}{2019/12/20}{Normalize label fonts}
-%    A possible alternative would be
+%    Possible alternatives would be, for example,
 %\begin{verbatim}
-%\renewcommand\labelitemfont{%
-%   \fontseries\seriesdefault
-%   \fontshape\shapedefault\selectfont}
+%  \renewcommand\labelitemfont
+%     {\normalfont\fontfamily{lmss}\selectfont}
+%  \renewcommand\labelitemfont
+%     {\rmfamily\normalshape}
 %\end{verbatim}
-%    which resets series and shape doesn't touch the family.
+%    the first would use symbols from Latin Modern Sans, the second
+%    would only allow changes in the font series so that an
+%    \texttt{itemize} in a bold context would produce bolder symbols.
 %    \begin{macrocode}
 \newcommand\labelitemfont{\normalfont}
 %    \end{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/classes.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmextra.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmextra.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmextra.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.fdd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993-2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/cmfonts.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/doc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/doc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/doc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -42,7 +42,7 @@
 %%                         Frank Mittelbach
 %% Copyright (C) 1995 Marcin Woli\'nski
 %% Copyright (C) 1996-1997 Mark Wooding, Marcin Woli\'nski
-%% Copyright (C) 1998-2020 LaTeX3 project and the above authors
+%% Copyright (C) 1998-2021 LaTeX Project and the above authors.
 %% All rights are reserved.
 %%
 %
@@ -789,7 +789,7 @@
 %
 % \section{Internal functions and variables}
 %
-%    An important consideration for \LaTeX3 development is separating
+%    An important consideration for \LaTeX\ development is separating
 %    out public and internal functions. Functions and variables which
 %    are private to one module should not be used or modified by any
 %    other module. As \TeX{} does not have any formal namespacing

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/docstrip.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -53,7 +53,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ec.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ec.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ec.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/exscale.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fix-cm.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fontdef.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fontdef.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/fontdef.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -39,7 +39,7 @@
 %<driver, >\ProvidesFile{fontdef.drv}
 % \fi
 %          \ProvidesFile{fontdef.dtx}
-%<-latexrelease>           [2020/11/24 v3.0i LaTeX Kernel
+%<-latexrelease>           [2021/01/15 v3.0i LaTeX Kernel
 % \iftrue  (\else
 %<text,   >(Text
 %<math,   >(Math
@@ -227,7 +227,7 @@
 %    described in \texttt{ltoutenc.dtx}.
 %
 %    By convention, text  encoding specific declarations, including the
-%    declaration |\DeclareFontEncoding|, are kept in separate file of
+%    |\DeclareFontEncoding| declaration, are kept in separate file of
 %    the form \meta{enc}\texttt{enc.def}, e.g.~\texttt{ot1enc.def}. This
 %    allows other applications to make use of the declarations as
 %    well.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/format.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/format.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/format.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -88,8 +88,8 @@
 (but please observe conditions on bug reports sent to that address!)
 
 
-Copyright 2015
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 2015-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -124,7 +124,7 @@
 This is a generated file.
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -166,6 +166,7 @@
 % we have the extensions as soon as possible.
           \from{ltexpl.dtx}{2ekernel}         % expl3-based extensions
           \from{ltdefns.dtx}{2ekernel}
+          \from{ltcmd.dtx}{2ekernel}          % Used to be xparse
           \from{lthooks.dtx}{2ekernel}        % L3 layer module
           \from{ltalloc.dtx}{2ekernel}
           \from{ltcntrl.dtx}{2ekernel}
@@ -233,7 +234,6 @@
 
 % hook management support
 
-\generate{\file{everyshi-ltx.sty}{\from{ltshipout.dtx}{everyshi-ltx}}} % emulating everyshi
 \generate{\file{atbegshi-ltx.sty}{\from{ltshipout.dtx}{atbegshi-ltx}}} % emulating atbegshi
 \generate{\file{atveryend-ltx.sty}{\from{ltfilehook.dtx}{atveryend-ltx}}} % emulating atveryend
 
@@ -240,8 +240,11 @@
 \generate{\file{structuredlog.sty}{\from{ltfilehook.dtx}{structuredlog}}}
 
 
+% hook managed para
 
+\generate{\file{ltpara.ltx}{\from{ltpara.dtx}{2ekernel}}}
 
+
 % luatex support (TeX part)
 
 \generate{\file{ltluatex.tex}{\from{ltluatex.dtx}{tex,plain}}}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/graphpap.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -30,7 +30,7 @@
 %%
 %% File `ifthen.dtx'.
 %% Copyright (C) 1991 by Leslie Lamport
-%% Copyright (C) 1994-2001 LaTeX3 project, David Carlisle
+%% Copyright (C) 1994-2001 LaTeX project, David Carlisle
 %%                       all rights reserved.
 %%
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ifthen.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% LaTeX3 Project and any individual authors listed elsewhere
+% LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -283,7 +283,7 @@
 % with the |utf8| option.
 %
 % The |\DeclareUnicodeCharacter| takes UTF-8 code point as its first argument
-% (in form of a a hexadecimal number) and the definition that this maps to as
+% (in form of a hexadecimal number) and the definition that this maps to as
 % its second argument. For example, the code point |00E4| which is
 % ``LATIN SMALL LETTER A WITH DIAERESIS'' would be set up via:
 %\begin{verbatim}
@@ -410,7 +410,7 @@
 %<cp1252&!ansinew>  \ProvidesFile{cp1252.def}
 %<cp1250>  \ProvidesFile{cp1250.def}
 %<cp1257>  \ProvidesFile{cp1257.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 %<cp850>%%
 %<cp850>%% If you need a Euro symbol, try cp858 instead.
 %<cp850>%%

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/inputenc.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latex209.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -40,7 +40,7 @@
 %<*!fixltx2e>
 % \fi
 %         \ProvidesFile{latexrelease.dtx}
-          [2020/12/06 v1.0k LaTeX release emulation and tests
+          [2021/01/23 v1.0l LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 % \iffalse
 %</!fixltx2e>
@@ -69,7 +69,7 @@
 % \title{The \Lpack{latexrelease} package\thanks{This file
 %         has version number \fileversion, last
 %         revised \filedate.}}
-% \author{The \LaTeX3 Project}
+% \author{The \LaTeX Project}
 % \date{\filedate}
 % \MaintainedByLaTeXTeam{latex}
 %  \maketitle
@@ -129,7 +129,6 @@
 % package has no information will generate a warning. Dates
 % earlier than 2015 will work but will roll back to some point in 2015
 % when the method was introduced.
-% |\IncludeInRelease| command is defined.
 % The |\requestedLaTeXdate| is set to the normalized date argument
 % so that package rollback defaults to the specified date.
 %
@@ -137,9 +136,6 @@
 % |current| This is the default behaviour, it does not change the
 % effective date of the format but does ensure that the
 % |\IncludeInRelease| command is defined.
-% the |\requestedLaTeXdate| is reset to 0 so that package rollback
-% does not use the implicit date.
-% |\IncludeInRelease| command is defined.
 % The |\requestedLaTeXdate| macro is reset to 0 so that package rollback
 % does not use the implicit date.
 %
@@ -147,11 +143,16 @@
 % |latest| sets the effective date of the format to the release date
 % of this file, so in an older format applies all patches currently
 % available.
-% |\IncludeInRelease| command is defined.
 % The |\requestedLaTeXdate| macro is reset to 0 so that package rollback
 % does not use the implicit date.
 % \end{itemize}
 %
+% In all cases, when the package is loaded, the |\sourceLaTeXdate| is
+% defined to be the numerical representation of |\fmtversion| before the
+% rollback/forward actually happens, so it is possible to test from which
+% was the original \LaTeX{} version before \Lpack{latexrelease} was loaded.
+% This is particularly useful when some code in a package has to be
+% redefined differently if rolling backwards in time or forwards.
 %
 % \section{Release Specific Code}
 %
@@ -388,6 +389,16 @@
 %
 % \section{Setup}
 %
+% \begin{macro}{\sourceLaTeXdate}
+%   \changes{v1.0l}{2021/01/23}{\cs{sourceLaTeXdate} added}
+%   Store the original \LaTeX{} format version
+%   as a number in the format |YYYYMMDD|:
+%    \begin{macrocode}
+\edef\sourceLaTeXdate{%
+  \expandafter\@parse at version\fmtversion//00\@nil}
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\IncludeInRelease}
 % \begin{macro}{\EndIncludeInRelease}
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexrelease.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -93,6 +93,7 @@
   \from{ltluatex.dtx}    {latexrelease}% empty 
   \from{ltexpl.dtx}      {latexrelease}% empty 
   \from{ltdefns.dtx}     {latexrelease}%
+  \from{ltcmd.dtx}       {latexrelease}%
   \from{lthooks.dtx}     {latexrelease}% empty  % L3 layer module
   \from{ltalloc.dtx}     {latexrelease}% empty
   \from{ltcntrl.dtx}     {latexrelease}% empty

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/latexsym.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -88,7 +88,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -165,7 +165,7 @@
 % \changes{v1.3a}{2020/03/07}{merged changes to classes.dtx into letter.dtx}
 %
 % \iffalse
-% Copyright (C) 1994 LaTeX3 project, Frank Mittelbach
+% Copyright (C) 1994 LaTeX Project, Frank Mittelbach
 % and Rainer Sch\"opf, all rights reserved.
 % \fi
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/letter.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltalloc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltbibl.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltboxes.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltboxes.dtx}
-             [2020/12/05 v1.4a LaTeX Kernel (Box Commands)]
+             [2021/02/10 v1.4b LaTeX Kernel (Box Commands)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltboxes.dtx}
@@ -222,7 +222,7 @@
 % \changes{v1.0j}{1994/10/18}
 %         {stuff from ltpatch done}
 % \changes{v1.0p}{1994/11/09}
-%         {more colour changes\ldots}
+%         {more color changes\ldots}
 % \changes{v1.0q}{1994/11/17}
 %         {\cs{@tempa} to \cs{reserved at a}}
 % \changes{v1.0t}{1995/05/07}{Use \cs{hb at xt@}}
@@ -422,7 +422,7 @@
 %         {macro added}
 % \changes{v0.1a}{1993/12/03}
 %         {color support}
-% This macro is initially a no-op, but the colour package will redefine
+% This macro is initially a no-op, but the color package will redefine
 % it to insert a |\special|.
 %    \begin{macrocode}
 \let\set at color\relax
@@ -431,39 +431,67 @@
 %
 % \begin{macro}{\color at begingroup}
 % \changes{v1.0b}{1994/03/14}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\color at endgroup}
 % \changes{v1.0b}{1994/03/14}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\color at setgroup}
 % \changes{v1.0f}{1994/05/11}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\normalcolor}
 % \changes{v1.0g}{1994/05/12}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\color at hbox}
 % \changes{v1.0n}{1994/11/05}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\color at vbox}
 % \changes{v1.0r}{1994/11/18}
-%         {macro added for colour support}
+%         {macro added for color support}
 % \begin{macro}{\color at endbox}
 % \changes{v1.0n}{1994/11/05}
-%         {macro added for colour support}
-% These macros are initially a no-op, but the colour package will
+%         {macro added for color support}
+% \changes{v1.4b}{2021/02/04}
+%         {Always add the color groups (gh/488)}
+% In the past these macros were initially no-ops, and the \pkg{color}
+% package redefined
 % redefine them to be |\begingroup|, |\endgroup|,
 % |\begingroup\set at color|,\\ |\hbox\bgroup\color at begingroup|,
 % |\color at endgroup\egroup|.
-% and \meta{set to main document colour} respectively.
+% and \meta{set to main document color} respectively.
+%
+% Nowadays we always set the group already in the kernel as this makes the
+% coding simpler.
 %    \begin{macrocode}
-\let\color at begingroup\relax
-\let\color at endgroup\relax
-\let\color at setgroup\relax
-\let\normalcolor\relax
-\let\color at hbox\relax
-\let\color at vbox\relax
-\let\color at endbox\relax
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\color at begingroup}{color group settings}%
+\let\color at begingroup\begingroup
+\def\color at endgroup{\endgraf\endgroup}
+\def\color at setgroup{\color at begingroup}        % changed further in color package
+\let\normalcolor\relax                        % remains untouched; only changed in a color package
+\def\color at hbox{\hbox\bgroup\color at begingroup}
+\def\color at vbox{\vbox\bgroup\color at begingroup}
+\def\color at endbox{\color at endgroup\egroup}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\color at begingroup}{color group settings}%
+%<latexrelease>
+%<latexrelease>\let\color at begingroup\relax
+%<latexrelease>\let\color at endgroup\relax
+%<latexrelease>\let\color at setgroup\relax
+%<latexrelease>\let\normalcolor\relax
+%<latexrelease>\let\color at hbox\relax
+%<latexrelease>\let\color at vbox\relax
+%<latexrelease>\let\color at endbox\relax
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 % \end{macro}
 % \end{macro}
 % \end{macro}
@@ -1016,7 +1044,7 @@
 %
 % \begin{macro}{\@iiiminipage}
 % \changes{v1.0e}{1994/04/21}
-%     {Extra \cs{bgroup} for colour}
+%     {Extra \cs{bgroup} for color}
 % \changes{v1.0f}{1994/05/11}
 %         {Use new \cs{color at setgroup} concept.}
 % Internal form of |minipage|.
@@ -1054,11 +1082,11 @@
 %     {(RmS) replaced \cs{vskip}-\cs{lastskip} by \cs{unskip}
 %       (proposed by FMi)}
 % \changes{v1.0e}{1994/04/21}
-%     {Extra \cs{egroup} for colour}
+%     {Extra \cs{egroup} for color}
 % \changes{v1.0f}{1994/05/11}
 %         {Use new \cs{color at setgroup} concept.}
 % \changes{v1.0n}{1994/11/05}
-%     {Colour resetting for footnotes moved to here: as for main
+%     {Color resetting for footnotes moved to here: as for main
 %     page.}
 %    \begin{macrocode}
 \def\endminipage{%
@@ -1093,9 +1121,9 @@
 % Final |\strut| added 27 Mar 89, on suggestion by Don Hosek
 % \changes{LaTeX2.09}{1991/09/29}{(RmS) added \cs{reset at font}}
 % \changes{LaTeX2.09}{1992/11/26}{(RmS) added protection for \cs{edef}}
-% \changes{v0.1a}{1994/03/07}{Extra group for colour}
+% \changes{v0.1a}{1994/03/07}{Extra group for color}
 % \changes{v1.0e}{1994/04/21}
-%     {Extra \cs{endgraf} for colour}
+%     {Extra \cs{endgraf} for color}
 % \changes{v1.0f}{1994/05/11}
 %         {Use new \cs{color at setgroup} concept.}
 % \changes{v1.0f}{1994/05/11}
@@ -1103,11 +1131,17 @@
 % \changes{v1.0m}{1994/11/04}
 %         {Added \cs{protected at edef}. ASAJ.}
 % \changes{v1.0n}{1994/11/05}
-%     {Colour resetting for footnotes moved to endminipage: as for main
+%     {Color resetting for footnotes moved to endminipage: as for main
 %     page.}
 % \changes{v1.0o}{1994/11/05}
-%     {Colour groups restored here.}
+%     {Color groups restored here.}
+% \changes{v1.4b}{2021/02/10}
+%         {Explicitly run \cs{par} in support for paragraph tagging}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\@mpfootnotetext}{footnotetext tagging}%
 \long\def\@mpfootnotetext#1{%
   \global\setbox\@mpfootins\vbox{%
     \unvbox\@mpfootins
@@ -1119,8 +1153,32 @@
     \color at begingroup
       \@makefntext{%
         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
     \color at endgroup}}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@mpfootnotetext}{footnotetext tagging}%
+%<latexrelease>
+%<latexrelease>\long\def\@mpfootnotetext#1{%
+%<latexrelease>  \global\setbox\@mpfootins\vbox{%
+%<latexrelease>    \unvbox\@mpfootins
+%<latexrelease>    \reset at font\footnotesize
+%<latexrelease>    \hsize\columnwidth
+%<latexrelease>    \@parboxrestore
+%<latexrelease>    \protected at edef\@currentlabel
+%<latexrelease>         {\csname p at mpfootnote\endcsname\@thefnmark}%
+%<latexrelease>    \color at begingroup
+%<latexrelease>      \@makefntext{%
+%<latexrelease>        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<latexrelease>    \color at endgroup}}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 % \end{macro}
 %
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltclass.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltclass.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltclass.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltclass.dtx}
-             [2020/12/17 v1.3v LaTeX Kernel (Class & Package Interface)]
+             [2021/02/18 v1.3x LaTeX Kernel (Class & Package Interface)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltclass.dtx}
@@ -712,6 +712,7 @@
 %   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}
+%   \changes{v1.3w}{2021/01/21}{Add empty entry for latexrelease}
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
@@ -719,6 +720,7 @@
 %<latexrelease>\IncludeInRelease{2020/10/01}{\@kernel at currpathstack}%
 %<latexrelease>  {Add \@kernel at currpathstack}%
 \gdef\@kernel at currpathstack{}
+%<latexrelease>\g at addto@macro\@kernel at currpathstack{{}}
 \def\@p at pfilepath#1{%
   \gdef\@currpath{#1}\@p at pfilepath@aux\@empty}
 \def\@p at pfilepath@aux#1\@nil{%
@@ -1164,13 +1166,14 @@
 %
 % \begin{macro}{\PassOptionsToPackage}
 % \begin{macro}{\PassOptionsToClass}
-% If the package has been loaded, we check that it was first loaded with
-% the options.  Otherwise we add the option list to that of the package.
+%   If the package has been loaded, we check that it was first loaded with
+%   the options.  Otherwise we add the option list to that of the package.
 % \changes{v1.3t}{2020/10/18}{Drop path from \cs{input at path} (gh/414).}
+% \changes{v1.3x}{2021/02/18}{save raw option lists (gh/85)}
 %    \begin{macrocode}
 %</2ekernel>
-%<latexrelease>\IncludeInRelease{2020/10/01}{\@pass at ptions}
-%<latexrelease>  {Add file replacement in \@pass at ptions}%
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\@pass at ptions}{Raw option lists}%
 %<*2ekernel|latexrelease>
 \def\@pass at ptions#1#2#3{%
   \@expl@@@filehook at set@curr at file@@nNN
@@ -1187,12 +1190,41 @@
 %    \begin{macrocode}
   \expandafter\let
     \csname opt@#3.#1\expandafter\endcsname
-    \csname opt@\reserved at a\endcsname}
+    \csname opt@\reserved at a\endcsname
+%    \end{macrocode}
+% Extend raw option list
+%    \begin{macrocode}
+    \@ifundefined{@raw at opt@#3.#1}%
+      {\expandafter\gdef\csname @raw at opt@#3.#1\endcsname{#2}}%
+      {\expandafter\g at addto@macro\csname @raw at opt@#3.#1\endcsname{,#2}}%
+}
 %</2ekernel|latexrelease>
 %<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
 %
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}{\@pass at ptions}
+%<latexrelease>  {Add file replacement in \@pass at ptions}%
+%<latexrelease>
+%<latexrelease>\def\@pass at ptions#1#2#3{%
+%<latexrelease>  \@expl@@@filehook at set@curr at file@@nNN
+%<latexrelease>    {\@expl@@@filehook at resolve@file at subst@@w #3.#1\@nil}%
+%<latexrelease>      \reserved at a\reserved at b
+%<latexrelease>  \@expl@@@filehook at clear@replacement at flag@@
+%<latexrelease>  \expandafter\xdef\csname opt@\reserved at a\endcsname{%
+%<latexrelease>    \@ifundefined{opt@\reserved at a}\@empty
+%<latexrelease>      {\csname opt@\reserved at a\endcsname,}%
+%<latexrelease>    \zap at space#2 \@empty}%
+%<latexrelease>  \expandafter\let
+%<latexrelease>    \csname opt@#3.#1\expandafter\endcsname
+%<latexrelease>    \csname opt@\reserved at a\endcsname}
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %<latexrelease>\IncludeInRelease{0000/00/00}{\@pass at ptions}
 %<latexrelease>  {\@pass at ptions}%
+%<latexrelease>
 %<latexrelease>\def\@pass at ptions#1#2#3{%
 %<latexrelease>  \expandafter\xdef\csname opt@#3.#1\endcsname{%
 %<latexrelease>    \@ifundefined{opt@#3.#1}\@empty
@@ -1200,6 +1232,9 @@
 %<latexrelease>    \zap at space#2 \@empty}}
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@onlypreamble\@pass at ptions
 %    \end{macrocode}
 %
@@ -1241,18 +1276,49 @@
 % \end{macro}
 %
 % \begin{macro}{\OptionNotUsed}
+% \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)}
+% \begin{macro}{\@remove at eq@value}
+% \changes{v1.3x}{2021/02/18}{macro added (gh/85)}
 % If we are in a class file, add |\CurrentOption| to the list of
 % unused options. Otherwise, in a package file do nothing.
 %    \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\OptionNotUsed}{filter unused option list}%
+%<*2ekernel|latexrelease>
+\def\@remove at eq@value#1=#2\@nil{#1}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \def\OptionNotUsed{%
   \ifx\@currext\@clsextension
     \xdef\@unusedoptionlist{%
       \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
-      \CurrentOption}%
+      \expandafter\@remove at eq@value\CurrentOption=\@nil}%
   \fi}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\OptionNotUsed}{filter unused option list}%
+%<latexrelease>\let\@remove at eq@value\@undefined
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\def\OptionNotUsed{%
+%<latexrelease>  \ifx\@currext\@clsextension
+%<latexrelease>    \xdef\@unusedoptionlist{%
+%<latexrelease>      \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
+%<latexrelease>      \CurrentOption}%
+%<latexrelease>  \fi}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@onlypreamble\OptionNotUsed
 %    \end{macrocode}
 % \end{macro}
+% \end{macro}
 %
 % \begin{macro}{\default at ds}
 % The default option code.
@@ -1403,11 +1469,30 @@
 %         {Name changed from \cs{@executeoption}}
 % \changes{v1.0e}{1994/05/17}
 %         {Execute option after removing from list, not before}
+% \changes{v1.3x}{2021/02/18}{filter out =value from unused option list (gh/85)}
 %    \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\@use at ption}{filter unused option list}%
+%<*2ekernel|latexrelease>
 \def\@use at ption{%
-  \@expandtwoargs\@removeelement\CurrentOption
+  \@expandtwoargs\@removeelement
+     {\expandafter\@remove at eq@value\CurrentOption=\@nil}%
   \@unusedoptionlist\@unusedoptionlist
   \csname ds@\CurrentOption\endcsname}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@use at ption}{filter unused option list}%
+%<latexrelease>\def\@use at ption{%
+%<latexrelease>  \@expandtwoargs\@removeelement\CurrentOption
+%<latexrelease>  \@unusedoptionlist\@unusedoptionlist
+%<latexrelease>  \csname ds@\CurrentOption\endcsname}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \@onlypreamble\@use at ption
 %    \end{macrocode}
 % \end{macro}
@@ -1721,9 +1806,10 @@
 %         {Prevent loss of brackets PR/3965}
 % \changes{v2.1b}{2016/11/09}
 %         {Improve \cs{ifx} tests PR/4497}
+% \changes{v1.3x}{2021/02/18}{save raw class option list (gh/85)}
 %    \begin{macrocode}
 %</2ekernel>
-%<latexrelease>\IncludeInRelease{2017/01/01}%
+%<latexrelease>\IncludeInRelease{2020/10/01}%
 %<latexrelease>        {\@fileswith at pti@ns}{ifx tests in \@fileswith at pti@ns}%
 %<*2ekernel|latexrelease>
 \def\@fileswith at pti@ns#1[#2]#3[#4]{%
@@ -1730,6 +1816,13 @@
   \ifx#1\@clsextension
     \ifx\@classoptionslist\relax
       \xdef\@classoptionslist{\zap at space#2 \@empty}%
+%    \end{macrocode}
+% Save raw class list.
+%    \begin{macrocode}
+      \gdef\@raw at classoptionslist{#2}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
       \def\reserved at a{%
         \@onefilewithoptions#3[{#2}][{#4}]#1%
         \@documentclasshook}%
@@ -1768,6 +1861,33 @@
   \fi
   \reserved at a}
 %</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2017/01/01}%
+%<latexrelease>        {\@fileswith at pti@ns}{ifx tests in \@fileswith at pti@ns}%
+%<latexrelease>\def\@fileswith at pti@ns#1[#2]#3[#4]{%
+%<latexrelease>  \ifx#1\@clsextension
+%<latexrelease>    \ifx\@classoptionslist\relax
+%<latexrelease>      \xdef\@classoptionslist{\zap at space#2 \@empty}%
+%<latexrelease>      \def\reserved at a{%
+%<latexrelease>        \@onefilewithoptions#3[{#2}][{#4}]#1%
+%<latexrelease>        \@documentclasshook}%
+%<latexrelease>    \else
+%<latexrelease>      \def\reserved at a{%
+%<latexrelease>        \@onefilewithoptions#3[{#2}][{#4}]#1}%
+%<latexrelease>    \fi
+%<latexrelease>  \else
+%<latexrelease>    \def\reserved at b##1,{%
+%<latexrelease>      \ifx\@nnil##1\relax\else
+%<latexrelease>        \ifx\@nnil##1\@nnil\else
+%<latexrelease>         \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
+%<latexrelease>         \noexpand\@pkgextension
+%<latexrelease>        \fi
+%<latexrelease>        \expandafter\reserved at b
+%<latexrelease>      \fi}%
+%<latexrelease>      \edef\reserved at a{\zap at space#3 \@empty}%
+%<latexrelease>      \edef\reserved at a{\expandafter\reserved at b\reserved at a,\@nnil,}%
+%<latexrelease>  \fi
+%<latexrelease>  \reserved at a}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -2640,7 +2760,8 @@
 % Text before the |\end|, write it with a warning.
 %    \begin{macrocode}
           \@latex at warning{Writing text `##1' before %
-             \string\end{\@currenvir}\MessageBreak as last line of \@curr at file}%
+            \string\end{\@currenvir}\MessageBreak
+            as last line of \@curr at file}%
         \immediate\write\reserved at c{##1}%
       \fi%
       \ifx\relax##2\relax%
@@ -2675,7 +2796,8 @@
 %</2ekernel|latexrelease>
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{2019/10/01}%
-%<latexrelease>                 {\filec at ntents}{Spaces in file names + optional arg}%
+%<latexrelease>    {\filec at ntents}{Spaces in file names + optional arg}%
+%<latexrelease>
 %<latexrelease>\def\filecontents{\@tempswatrue\@fileswtrue
 %<latexrelease>  \@ifnextchar[\filec at ntents@opt\filec at ntents
 %<latexrelease>}
@@ -2805,7 +2927,7 @@
 %<latexrelease>\endgroup%
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease>                 {\filec at ntents}{Spaces in file names + optional arg}%
+%<latexrelease>    {\filec at ntents}{Spaces in file names + optional arg}%
 %<latexrelease>
 %<latexrelease>\let\filec at ntents@opt        \@undefined
 %<latexrelease>\let\filec at ntents@force      \@undefined

Added: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,4041 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
+% Copyright (C) 2004-2008 Frank Mittelbach, The LaTeX3 Project
+% Copyright (C) 2009-2021
+% The LaTeX 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
+%    https://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
+%
+% \iffalse
+%
+%%% From File: ltcmd.dtx
+%
+%    \begin{macrocode}
+\def\ltcmdversion{v1.0a}
+\def\ltcmddate{2021/01/21}
+%    \end{macrocode}
+%
+%<*driver>
+% \fi
+\ProvidesFile{ltcmd.dtx}
+  [2020-11-20 v1.0 LaTeX Kernel (Document commands)]
+% \iffalse
+\documentclass{l3doc}
+\GetFileInfo{ltcmd.dtx}
+\title{\filename}
+\date{\filedate}
+\author{Frank Mittelbach, Chris Rowley, David Carlisle, \LaTeX{} Project Team}
+\begin{document}
+  \maketitle
+  \DocInput{ltcmd.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Creating document commands}
+%
+% \changes{v1.0}{2020-11-20}{Initial version derived from \texttt{xparse.dtx}}
+%
+% Document commands should be created using the tools provided by this module:
+% \cs{NewDocumentCommand}, etc.\@, in almost all cases. This allows clean
+% separation of document-level syntax from code-level interfaces. Users have
+% a need to create new document commands, and as such a significant amount of
+% documentation for \pkg{ltcmd} is provided as part of \texttt{usrguide3}. Here,
+% additional material aimed at programmers is provided
+%
+% \StopEventually{}
+%
+%    \begin{macrocode}
+%<@@=cmd>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<*2ekernel>
+\message{document commands,}
+%</2ekernel>
+%    \end{macrocode}
+%
+% \pkg{ltcmd} code contains an |^^@| character, which usually has
+% catcode~15, so \cs{IncludeInRelease} will break when this code is
+% being skipped, so we'll save the catcode of |^^@| to restore later:
+%    \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\edef\@latexrelease at catcode@null{\the\catcode`\^^@ }
+%<latexrelease>\catcode`\^^@=12
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\NewDocumentCommand}{Document commands}%
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOn
+%    \end{macrocode}
+%
+% \subsection{Variables and constants}
+%
+% \begin{variable}{\l_@@_arg_spec_tl}
+%   Holds the argument specification after normalization of shorthands.
+%    \begin{macrocode}
+\tl_new:N \l_@@_arg_spec_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_args_tl}
+%   Token list variable for grabbed arguments.
+%    \begin{macrocode}
+\tl_new:N \l_@@_args_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_args_i_tl, \l_@@_args_ii_tl}
+%   Hold the modified arguments when dealing with default values or
+%   processors.
+%    \begin{macrocode}
+\tl_new:N \l_@@_args_i_tl
+\tl_new:N \l_@@_args_ii_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_current_arg_int}
+%   The number of the current argument being set up: this is used to
+%   make sure there are at most 9 arguments, then for creating the
+%   expandable auxiliary functions and knowing how many arguments the
+%   code function should take.
+%    \begin{macrocode}
+\int_new:N \l_@@_current_arg_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_defaults_bool, \l_@@_defaults_tl}
+%   The boolean indicates whether there are any argument with default
+%   value other than |-NoValue-|; the token list holds the code to
+%   determine these default values in terms of other arguments.
+%    \begin{macrocode}
+\bool_new:N \l_@@_defaults_bool
+\tl_new:N \l_@@_defaults_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_environment_bool}
+%   Generating environments uses the same mechanism as generating functions.
+%   However, full processing of arguments is always needed for environments,
+%   and so the function-generating code needs to know this.
+%   This variable is also used at run time to give correct error messages.
+%    \begin{macrocode}
+\bool_new:N \l_@@_environment_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_environment_str}
+%   Name of the environment, used at definition time and at run time.
+%    \begin{macrocode}
+\str_new:N \l_@@_environment_str
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_expandable_bool}
+%   Used to indicate if an expandable command is begin generated, as this
+%   affects both the acceptable argument types and how they are implemented.
+%    \begin{macrocode}
+\bool_new:N \l_@@_expandable_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_expandable_aux_name_tl}
+%   Used to create pretty-printing names for the auxiliaries: although the
+%   immediate definition does not vary, the full expansion does and so it
+%   does not count as a constant.
+%    \begin{macrocode}
+\tl_new:N \l_@@_expandable_aux_name_tl
+\tl_set:Nn \l_@@_expandable_aux_name_tl
+  {
+    \l_@@_function_tl \c_space_tl
+    ( arg~ \int_use:N \l_@@_current_arg_int )
+  }
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_grabber_int}
+%   Used (in exceptional cases) to get unique names for grabbers used by
+%   expandable commands.
+%    \begin{macrocode}
+\int_new:N \g_@@_grabber_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_fn_tl}
+%   For passing the pre-formed name of the auxiliary to be used as the
+%   parsing function.
+%    \begin{macrocode}
+\tl_new:N \l_@@_fn_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_fn_code_tl}
+%   For passing the pre-formed name of the auxiliary that contains the
+%   actual code.
+%    \begin{macrocode}
+\tl_new:N \l_@@_fn_code_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_function_tl}
+%   Holds the control sequence name of the function currently being
+%   defined: used to avoid passing this as an argument and to avoid repeated
+%   use of \cs{cs_to_str:N}.
+%    \begin{macrocode}
+\tl_new:N \l_@@_function_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_grab_expandably_bool}
+%   When defining a non-expandable command, indicates whether the
+%   arguments can all safely be grabbed by expandable grabbers.  This is
+%   to support abuses of \pkg{xparse} that use protected functions
+%   inside csname constructions.
+%    \begin{macrocode}
+\bool_new:N \l_@@_grab_expandably_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_obey_spaces_bool}
+%   For trailing optionals.
+%    \begin{macrocode}
+\bool_new:N \l_@@_obey_spaces_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_last_delimiters_tl}
+%   Holds the delimiters (first tokens) of all optional arguments since
+%   the previous mandatory argument, to warn about cases where it would
+%   be impossible to omit optional arguments completely because the
+%   following mandatory argument has the same delimiter as one of the
+%   optional arguments.
+%    \begin{macrocode}
+\tl_new:N \l_@@_last_delimiters_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_long_bool}
+%   Used to indicate that an argument is long, on a per-argument basis.
+%    \begin{macrocode}
+\bool_new:N \l_@@_long_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_m_args_int}
+%   The number of \texttt{m} arguments: if this is the same as the total
+%   number of arguments, then a short-cut can be taken in the creation of
+%   the grabber code.
+%    \begin{macrocode}
+\int_new:N \l_@@_m_args_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_prefixed_bool}
+%   When preparing the signature of non-expandable commands, indicates
+%   that the current argument is affected by a processor or by |+|
+%   (namely is long).
+%    \begin{macrocode}
+\bool_new:N \l_@@_prefixed_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_process_all_tl, \l_@@_process_one_tl, \l_@@_process_some_bool}
+%   When preparing the signature, the processors that will be applied to
+%   a given argument are collected in \cs{l_@@_process_one_tl}, while
+%   \cs{l_@@_process_all_tl} contains processors for all arguments.  The
+%   boolean indicates whether there are any processors (to bypass the
+%   whole endeavour otherwise).
+%    \begin{macrocode}
+\tl_new:N \l_@@_process_all_tl
+\tl_new:N \l_@@_process_one_tl
+\bool_new:N \l_@@_process_some_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_saved_args_tl}
+%   Stores \cs{l_@@_args_tl} to deal with space-trimming of
+%   \texttt{b}-type arguments.
+%    \begin{macrocode}
+\tl_new:N \l_@@_saved_args_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_signature_tl}
+%   Used when constructing the signature (code for argument grabbing) to
+%   hold what will become the implementation of the main function.
+%   When arguments are grabbed (at point of use of the command/environment),
+%   it also stores the code for grabbing the remaining arguments.
+%    \begin{macrocode}
+\tl_new:N \l_@@_signature_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}
+%   {\l_@@_some_obey_spaces_bool, \l_@@_some_long_bool, \l_@@_some_short_bool}
+%   These flags are set while normalizing the argument specification.
+%   The \texttt{obey_spaces} one is used to detect when |!| is used on
+%   an argument that is not a trailing optional argument.
+%   The other two are used to check whether all short arguments appear
+%   before long arguments: this is needed to grab arguments expandably.
+%   As soon as the first long argument is seen (other than
+%   \texttt{t}-type, whose long status is ignored) the
+%   \texttt{some_long} flag is set.  The \texttt{some_short} flag is
+%   used for expandable commands, to know whether to define a short
+%   auxiliary too.
+%    \begin{macrocode}
+\bool_new:N \l_@@_some_obey_spaces_bool
+\bool_new:N \l_@@_some_long_bool
+\bool_new:N \l_@@_some_short_bool
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_@@_tmp_prop, \l_@@_tmpa_tl, \l_@@_tmpb_tl}
+% \begin{macro}{\@@_tmp:w}
+%   Scratch space.
+%    \begin{macrocode}
+\prop_new:N \l_@@_tmp_prop
+\tl_new:N \l_@@_tmpa_tl
+\tl_new:N \l_@@_tmpb_tl
+\cs_new_eq:NN \@@_tmp:w ?
+%    \end{macrocode}
+% \end{macro}
+% \end{variable}
+%
+%   With \pkg{xparse}, information about commands being (re)defined was
+%   switched off by default, unless the |log-declarations| package
+%   option was used, so here we'll switch that off as well.
+%    \begin{macrocode}
+\msg_redirect_module:nnn { LaTeX / ltcmd } { info } { none }
+%    \end{macrocode}
+%
+% \subsection{Declaring commands and environments}
+%
+% \begin{macro}{\@@_declare_cmd:Nnn, \@@_declare_expandable_cmd:Nnn}
+% \begin{macro}{\@@_declare_cmd_aux:Nnn}
+% \begin{macro}
+%   {\@@_declare_cmd_internal:Nnnn, \@@_declare_cmd_internal:cnxn}
+%   The main functions for creating commands set the appropriate flag then
+%   use the same internal code to do the definition.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd:Nnn
+  {
+    \bool_set_false:N \l_@@_expandable_bool
+    \@@_declare_cmd_aux:Nnn
+  }
+\cs_new_protected:Npn \@@_declare_expandable_cmd:Nnn
+  {
+    \bool_set_true:N \l_@@_expandable_bool
+    \@@_declare_cmd_aux:Nnn
+  }
+%    \end{macrocode}
+%  The first stage is to log information, both for the user in the log and
+%  for programmatic use in a property list of all declared commands.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd_aux:Nnn #1#2#3
+  {
+    \cs_if_exist:NTF #1
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+      {
+        \bool_lazy_or:nnT
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ code } }
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ defaults } }
+          {
+            \__kernel_msg_warning:nnx { ltcmd } { unsupported-let }
+              { \token_to_str:N #1 }
+          }
+        \__kernel_msg_info:nnxx { ltcmd } { define-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l_@@_environment_bool
+    \@@_declare_cmd_internal:Nnnn #1 {#2} {#3} { }
+  }
+%    \end{macrocode}
+%   At definition time, the variable \cs{l_@@_fn_tl} is only used for error messages.
+%   The real business of defining a document command starts with setting up
+%   the appropriate name, then normalizing the argument specification to get rid of
+%   shorthands.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd_internal:Nnnn #1#2#3#4
+  {
+    \tl_set:Nx \l_@@_function_tl { \cs_to_str:N #1 }
+    \tl_set:Nx \l_@@_fn_tl
+      { \exp_not:c { \l_@@_function_tl \c_space_tl } }
+    \@@_normalize_arg_spec:n {#2}
+    \exp_args:No \@@_prepare_signature:n \l_@@_arg_spec_tl
+    \@@_declare_cmd_code:Nnn #1 {#2} {#3}
+    #4
+    \@@_break_point:n {#2}
+  }
+\cs_generate_variant:Nn \@@_declare_cmd_internal:Nnnn { cnx }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_break_point:n}
+%   A marker used to escape from creating a definition if necessary.
+%    \begin{macrocode}
+\cs_new_eq:NN \@@_break_point:n \use_none:n
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_declare_cmd_code:Nnn}
+% \begin{macro}
+%   {\@@_declare_cmd_code_aux:Nnn, \@@_declare_cmd_code_expandable:Nnn}
+%   The appropriate auxiliary is called.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd_code:Nnn
+  {
+    \bool_if:NTF \l_@@_grab_expandably_bool
+      { \@@_declare_cmd_code_expandable:Nnn }
+      { \@@_declare_cmd_code_aux:Nnn }
+   }
+%    \end{macrocode}
+%   Standard functions call \cs{@@_start:nNNnnn}, which receives the
+%   argument specification, an auxiliary used for
+%   grabbing arguments, an auxiliary containing the code, and then the
+%   signature, default arguments, and processors.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd_code_aux:Nnn #1#2#3
+  {
+    \cs_generate_from_arg_count:cNnn
+      { \l_@@_function_tl \c_space_tl code }
+      \cs_set_protected:Npn \l_@@_current_arg_int {#3}
+    \cs_set_protected_nopar:Npx #1
+      {
+        \bool_if:NTF \l_@@_environment_bool
+          {
+            \@@_start_env:nnnnn { \exp_not:n {#2} }
+              { \l_@@_environment_str }
+          }
+          {
+            \@@_start:nNNnnn { \exp_not:n {#2} }
+              \exp_not:c { \l_@@_function_tl \c_space_tl }
+              \exp_not:c { \l_@@_function_tl \c_space_tl code }
+          }
+          { \exp_not:o \l_@@_signature_tl }
+          {
+            \bool_if:NT \l_@@_defaults_bool
+              { \exp_not:o \l_@@_defaults_tl }
+          }
+          {
+            \bool_if:NT \l_@@_process_some_bool
+              { \exp_not:o \l_@@_process_all_tl }
+          }
+      }
+  }
+%    \end{macrocode}
+%   Expandable functions and functions whose arguments can be grabbed
+%   expandably call \cs{@@_start_expandable:nNNNNn}, which receives the
+%   argument specification, four auxiliaries (two for grabbing arguments, one for
+%   the code, and one for default arguments), and finally the signature.
+%   Non-expandable functions that take this branch should nevertheless
+%   be protected, as well as their \texttt{code} function.  They will
+%   only be expanded in contexts such as constructing a csname.
+%   The two grabbers (named after the function with one or two spaces)
+%   are needed when there are both short and long arguments; otherwise
+%   the same grabber is included twice in the definition.  If all
+%   arguments are long or all are short the (only) grabber is defined
+%   correspondingly to be long/short.  Otherwise two grabbers are
+%   defined, one long, one short.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_cmd_code_expandable:Nnn #1#2#3
+  {
+    \exp_args:Ncc \cs_generate_from_arg_count:NNnn
+      { \l_@@_function_tl \c_space_tl code }
+      { cs_set \bool_if:NF \l_@@_expandable_bool { _protected } :Npn }
+      \l_@@_current_arg_int {#3}
+    \bool_if:NT \l_@@_defaults_bool
+      {
+        \use:x
+          {
+            \cs_generate_from_arg_count:cNnn
+              { \l_@@_function_tl \c_space_tl defaults }
+              \cs_set:Npn \l_@@_current_arg_int
+              { \exp_not:o \l_@@_defaults_tl }
+          }
+      }
+    \bool_if:NTF \l_@@_expandable_bool
+      { \cs_set_nopar:Npx } { \cs_set_protected_nopar:Npx } #1
+      {
+        \exp_not:N \@@_start_expandable:nNNNNn
+          { \exp_not:n {#2} }
+          \exp_not:c { \l_@@_function_tl \c_space_tl }
+          \exp_not:c
+            {
+              \l_@@_function_tl \c_space_tl
+              \bool_if:NT \l_@@_some_short_bool
+                { \bool_if:NT \l_@@_some_long_bool { \c_space_tl } }
+            }
+          \exp_not:c { \l_@@_function_tl \c_space_tl code }
+          \bool_if:NTF \l_@@_defaults_bool
+            { \exp_not:c { \l_@@_function_tl \c_space_tl defaults } }
+            { ? }
+          { \exp_not:o \l_@@_signature_tl }
+      }
+    \bool_if:NTF \l_@@_some_long_bool
+      {
+        \bool_if:NT \l_@@_some_short_bool
+          {
+            \cs_set_nopar:cpx { \l_@@_function_tl \c_space_tl \c_space_tl }
+              ##1##2 { ##1 {##2} }
+          }
+        \cs_set:cpx
+      }
+      { \cs_set_nopar:cpx }
+          { \l_@@_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_declare_env:nnnn}
+% \begin{macro}{\@@_declare_env_internal:nnnn}
+%   The lead-off to creating an environment is much the same as that for
+%   creating a command: issue the appropriate message, store the argument
+%   specification then hand off to an internal function.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_env:nnnn #1#2
+  {
+    \str_set:Nx \l_@@_environment_str {#1}
+    \str_set:Nx \l_@@_environment_str
+      { \tl_trim_spaces:o { \l_@@_environment_str } }
+    \cs_if_exist:cTF { \l_@@_environment_str }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-environment }
+          { \l_@@_environment_str } { \tl_to_str:n {#2} }
+      }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { define-environment }
+          { \l_@@_environment_str } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l_@@_expandable_bool
+    \bool_set_true:N \l_@@_environment_bool
+    \exp_args:NV \@@_declare_env_internal:nnnn
+      \l_@@_environment_str {#2}
+  }
+%    \end{macrocode}
+%   Creating a document environment requires a few more steps than creating
+%   a single command. In order to pass the arguments of the command to the
+%   end of the function, it is necessary to store the grabbed arguments.
+%   To do that, the function used at the end of the environment has to be
+%   redefined to contain the appropriate information. To minimize the amount
+%   of expansion at point of use, the code here is expanded now as well as
+%   when used.
+%   The last argument of \cs{@@_declare_cmd_internal:Nnnn} is only run
+%   if the definition succeeded.  In package mode this ensures that the
+%   original definition of the environment is not changed if the
+%   definition fails for any reason.  This also avoids an error when
+%   defining the \verb*|end aux | function when the user asks for more
+%   than $9$ arguments.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_declare_env_internal:nnnn #1#2#3#4
+  {
+    \@@_declare_cmd_internal:cnxn { environment~ #1 } {#2}
+      {
+        \cs_set_nopar:Npx \exp_not:c { environment~ #1 ~end~aux }
+          {
+            \exp_not:N \exp_not:N \exp_not:c { environment~ #1~end~aux~ }
+            \exp_not:n { \exp_not:o \l_@@_args_tl }
+          }
+        \exp_not:n {#3}
+      }
+      {
+        \cs_set_nopar:cpx { environment~ #1 ~end }
+          { \exp_not:c { environment~ #1 ~end~aux } }
+        \cs_generate_from_arg_count:cNnn
+          { environment~ #1 ~end~aux~ } \cs_set:Npn
+          \l_@@_current_arg_int {#4}
+        \cs_set_eq:cc {#1}       { environment~ #1 }
+        \cs_set_eq:cc { end #1 } { environment~ #1 ~end }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Structure of \pkg{xparse} commands}
+%
+% \begin{macro}{\@@_start_env:nnnnn, \@@_start:nNNnnn}
+%   For error messages that occur during run-time when getting arguments
+%   of environments it is necessary to keep track of the environment
+%   name.  We begin non-expandable commands with a token equal to
+%   \cs{scan_stop:}, whose name gives a reasonable error message if the
+%   command is used inside a csname and protects against
+%   \texttt{f}-expansion.  This is useless for environments since
+%   \cs{begin} is already not expandable.  Both the command and
+%   environment codes start with \cs{group_align_safe_begin:}, then
+%   \cs{@@_run_code:} (used by both) does \cs{group_align_safe_end:}, so
+%   that delimited arguments may be grabbed in alignments if they
+%   contain and alignment tab token (see latex3/latex3/issues/839).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_start_env:nnnnn #1#2
+  {
+    \conditionally at traceoff
+    \group_align_safe_begin:
+    \str_set:Nn \l_@@_environment_str {#2}
+    \bool_set_true:N \l_@@_environment_bool
+    \@@_start_aux:ccnnnn
+      { environment~ \l_@@_environment_str \c_space_tl }
+      { environment~ \l_@@_environment_str \c_space_tl code }
+      {#1}
+  }
+\cs_new_protected:Npx \@@_start:nNNnnn #1#2#3
+  {
+    \exp_not:c { xparse~function~is~not~expandable }
+    \exp_not:N \conditionally at traceoff
+    \exp_not:N \group_align_safe_begin:
+    \exp_not:n { \bool_set_false:N \l_@@_environment_bool }
+    \exp_not:N \@@_start_aux:NNnnnn
+    #2 #3 {#1}
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_start_aux:NNnnnn, \@@_start_aux:ccnnnn}
+%   This sets up a few variables to minimize the boilerplate code
+%   included in all \pkg{xparse}-defined commands.  It then runs the
+%   grabbers~|#4|.  Again, the argument specification |#1| is only for
+%   diagnostics.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_start_aux:NNnnnn #1#2#3#4#5#6
+  {
+    \tl_clear:N \l_@@_args_tl
+    \tl_set:Nn \l_@@_fn_tl {#1}
+    \tl_set:Nn \l_@@_fn_code_tl {#2}
+    \tl_set:Nn \l_@@_defaults_tl {#5}
+    \tl_set:Nn \l_@@_process_all_tl {#6}
+    #4 \@@_run_code:
+  }
+\cs_generate_variant:Nn \@@_start_aux:NNnnnn { cc }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_run_code:}
+%   After arguments are grabbed, this function is responsible for
+%   inserting default values, running processors, and finally doing
+%   \cs{group_align_safe_end:} as promised, and running the code.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_run_code:
+  {
+    \tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: }
+    \tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: }
+    \group_align_safe_end:
+    \conditionally at traceon
+    \exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_defaults:}
+% \begin{macro}{\@@_defaults_def:, \@@_defaults_def:nn, \@@_defaults_def:nnn}
+% \begin{macro}{\@@_defaults_aux:,  \@@_defaults_error:w}
+%   First construct \cs{@@_tmp:w} (see below) that will receive
+%   the arguments found so far and determine default values for any
+%   missing argument.  Then call it repeatedly until the set of
+%   arguments stabilizes.  Since that could lead to an infinite loop we
+%   only call it up to nine times, the maximal number needed for
+%   stabilization if there is a chain of arguments that depend on each
+%   other.  If that fails to stabilize raise an error.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_defaults:
+  {
+    \@@_defaults_def:
+    \tl_set_eq:NN \l_@@_args_i_tl \l_@@_args_tl
+    \@@_defaults_aux: \@@_defaults_aux: \@@_defaults_aux:
+    \@@_defaults_aux: \@@_defaults_aux: \@@_defaults_aux:
+    \@@_defaults_aux: \@@_defaults_aux: \@@_defaults_aux:
+    \@@_defaults_error:w
+    \q_recursion_stop
+    \tl_set_eq:NN \l_@@_args_tl \l_@@_args_i_tl
+  }
+\cs_new_protected:Npn \@@_defaults_aux:
+  {
+    \tl_set:Nx \l_@@_args_ii_tl
+      { \exp_after:wN \@@_tmp:w \l_@@_args_i_tl }
+    \tl_if_eq:NNT \l_@@_args_ii_tl \l_@@_args_i_tl
+      { \use_none_delimit_by_q_recursion_stop:w }
+    \tl_set_eq:NN \l_@@_args_i_tl \l_@@_args_ii_tl
+  }
+\cs_new_protected:Npn \@@_defaults_error:w \q_recursion_stop
+  {
+    \__kernel_msg_error:nnx { ltcmd } { loop-in-defaults }
+      { \@@_environment_or_command: }
+  }
+%    \end{macrocode}
+%   To construct \cs{@@_tmp:w}, first go through the arguments
+%   found and the corresponding defaults, building a token list with
+%   |{#|\meta{arg number}|}| for arguments found in the input (whose
+%   default will not be used) and otherwise
+%   |{|\cs{exp_not:n}\Arg{default}|}| for arguments whose default will
+%   be used.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_defaults_def:
+  {
+    \tl_clear:N \l_@@_tmpa_tl
+    \int_zero:N \l_@@_current_arg_int
+    \@@_tl_mapthread_function:NNN \l_@@_args_tl \l_@@_defaults_tl
+      \@@_defaults_def:nn
+    \cs_generate_from_arg_count:NNVo \@@_tmp:w \cs_set:Npn
+      \l_@@_current_arg_int \l_@@_tmpa_tl
+  }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo }
+\cs_new_protected:Npn \@@_defaults_def:nn
+  {
+    \int_incr:N \l_@@_current_arg_int
+    \exp_args:NV \@@_defaults_def:nnn \l_@@_current_arg_int
+  }
+\cs_new_protected:Npn \@@_defaults_def:nnn #1#2#3
+  {
+    \tl_put_right:Nx \l_@@_tmpa_tl
+      {
+        {
+          \exp_not:N \exp_not:n
+            {
+              \tl_if_novalue:nTF {#2}
+                { \exp_not:o {#3} }
+                { \exp_not:n { ## #1 } }
+            }
+        }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_args_process:}
+% \begin{macro}{\@@_args_process_loop:nn, \@@_args_process_aux:n}
+%   Loop through arguments (stored in \cs{l_@@_args_tl}) and the
+%   corresponding processors (in \cs{l_@@_process_all_tl})
+%   simultaneously, apply all processors for each argument and store the
+%   result back into \cs{l_@@_args_tl}.  To allow processors to depend
+%   on other arguments, for every processor define a temporary auxiliary
+%   that receives all arguments \cs{l_@@_args_tl}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_args_process:
+  {
+    \tl_clear:N \l_@@_args_ii_tl
+    \@@_tl_mapthread_function:NNN
+      \l_@@_args_tl
+      \l_@@_process_all_tl
+      \@@_args_process_loop:nn
+    \tl_set_eq:NN \l_@@_args_tl \l_@@_args_ii_tl
+  }
+\cs_new_protected:Npn \@@_args_process_loop:nn #1#2
+  {
+    \tl_set:Nn \ProcessedArgument {#1}
+    \tl_if_novalue:nF {#1}
+      { \tl_map_function:nN {#2} \@@_args_process_aux:n }
+    \tl_put_right:No \l_@@_args_ii_tl
+      { \exp_after:wN { \ProcessedArgument } }
+  }
+\cs_new_protected:Npn \@@_args_process_aux:n #1
+  {
+    \cs_generate_from_arg_count:NNnn \@@_tmp:w \cs_set:Npn
+      { \tl_count:N \l_@@_args_tl } {#1}
+    \exp_args:NNNo \exp_after:wN \@@_tmp:w \l_@@_args_tl
+      { \ProcessedArgument }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_start_expandable:nNNNNn}
+%   This is called for all expandable commands.  |#6| is the signature,
+%   responsible for grabbing arguments.  |#5| is used to determine
+%   default values (or is |?| if there are none).  |#4| is the code to run.
+%   |#2|~and~|#3| are functions (named after the command) that grab a single
+%   argument in the input stream (|#3|~is~short).  The argument specification |#1| is
+%   only used by diagnostic functions.  Same as for the non-expandable
+%   version, this starts with \cs{group_align_safe_begin:}, which
+%   expands to nothing, so may be safely used in an expandable context.
+%    \begin{macrocode}
+\cs_new:Npn \@@_start_expandable:nNNNNn #1#2#3#4#5#6
+  {
+    \group_align_safe_begin:
+    #6 \@@_end_expandable:NNw #5 #4 \q_@@ #2#3
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_end_expandable:NNw}
+% \begin{macro}[EXP]{\@@_end_expandable_aux:w}
+% \begin{macro}[EXP]{\@@_end_expandable_aux:nNNNN}
+% \begin{macro}[EXP]{\@@_end_expandable_defaults:nnnNNn}
+% \begin{macro}[EXP]{\@@_end_expandable_defaults:nnw}
+% \begin{macro}[EXP]{\@@_end_expandable_defaults:nw}
+%   Followed by a function |#1| to determine default values (or |?| if
+%   there are no defaults), the code
+%   |#2|, arguments that have been grabbed, then \cs{q_@@} and two generic
+%   grabbers.  The idea to find default values is similar to the
+%   non-expandable case but we cannot define an auxiliary function, so
+%   at every step in the loop we need to go through all arguments
+%   searching for which ones started out as |-NoValue-| and replacing
+%   these by the newly computed values.  In fact we need to keep track
+%   of three versions of all arguments: the original version, the
+%   previous version with default values, and the currently built
+%   version (first argument of \cs{@@_end_expandable_defaults:nnnNNn}).
+%    \begin{macrocode}
+\cs_new:Npn \@@_end_expandable:NNw #1#2
+  { \@@_end_expandable_aux:w #1#2 \prg_do_nothing: }
+\cs_new:Npn \@@_end_expandable_aux:w #1#2#3 \q_@@
+  { \exp_args:No \@@_end_expandable_aux:nNNNN {#3} #1 #2 }
+\cs_new:Npn \@@_end_expandable_aux:nNNNN #1#2#3#4#5
+  {
+    \token_if_eq_charcode:NNT ? #2 { \exp_after:wN \use_iv:nnnn }
+    \@@_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3
+      { } { } { } { } { } { } { } { } { } { }
+      {
+        \__kernel_msg_expandable_error:nnf
+          { ltcmd } { loop-in-defaults }
+          { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N #4 } }
+        \use_iv:nnnn
+      }
+    \q_stop
+  }
+\cs_new:Npn \@@_end_expandable_defaults:nnnNNn #1#2#3#4#5#6
+  {
+    #6
+    \str_if_eq:nnTF {#1} {#2}
+      { \use_i_delimit_by_q_stop:nw { \group_align_safe_end: #5 #1 } }
+      {
+        \exp_args:No \@@_tl_mapthread_function:nnN
+          { #4 #1 } {#3}
+          \@@_end_expandable_defaults:nnw
+        \@@_end_expandable_defaults:nnnNNn { } {#1} {#3} #4 #5
+      }
+  }
+\cs_new:Npn \@@_end_expandable_defaults:nnw #1#2
+  {
+    \tl_if_novalue:nTF {#2}
+      { \exp_args:No \@@_end_expandable_defaults:nw {#1} }
+      { \@@_end_expandable_defaults:nw {#2} }
+  }
+\cs_new:Npn \@@_end_expandable_defaults:nw
+    #1#2 \@@_end_expandable_defaults:nnnNNn #3
+  { #2 \@@_end_expandable_defaults:nnnNNn { #3 {#1} } }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Normalizing the argument specifications}
+%
+% The goal here is to expand aliases and check that the argument
+% specification is valid before the main parsing run.  If it is not
+% valid the entire set up is abandoned to avoid any strange internal
+% errors.  A function is provided for each argument type that will grab
+% any extra data items and call the loop function after performing the
+% following checks and tasks.
+% \begin{itemize}
+%   \item Check that each argument has the correct number of data items
+%     associated with it, and that where a single character is required,
+%     one has actually been supplied.
+%   \item Check that processors and the markers~|+| and~|!| are followed
+%     by an argument for which they make sense, and are not redundant.
+%   \item Check the absence of forbidden types for expandable commands,
+%     namely \texttt{G}/\texttt{v} always, and \texttt{l}/\texttt{u}
+%     after optional arguments (\pkg{xparse} may have inserted braces
+%     due to a failed search for an optional argument).
+%   \item Check that no optional argument is followed by a mandatory
+%     argument with the same delimiter, as otherwise the optional
+%     argument could never be omitted.
+%   \item Keep track in \cs{l_@@_some_long_bool} and
+%     \cs{l_@@_some_short_bool} of whether the command has some
+%     long/short arguments.
+%   \item Keep track in \cs{l_@@_grab_expandably_bool} of whether all
+%     arguments are \texttt{m}/\texttt{l}/\texttt{u} type and short
+%     arguments appear before long ones, in which case they can be
+%     grabbed expandably just as safely as they could be grabbed
+%     nonexpandably.  Regardless of that, arguments of expandable
+%     commands will be grabbed expandably and arguments of environments
+%     will not (because the list of arguments built by non-expandable
+%     grabbing is used to pass them to the end-environment code).
+% \end{itemize}
+% Further checks happen at the end of the loop:
+% \begin{itemize}
+% \item that there are at most $9$ arguments;
+% \item that an expandable command does not end with an optional
+%   argument (this case is detected by using the fact that
+%   \cs{l_@@_last_delimiters_tl} is cleared by every mandatory argument
+%   and filled by every optional argument).
+% \end{itemize}
+%
+% \begin{macro}{\@@_normalize_arg_spec:n}
+% \begin{macro}{\@@_normalize_arg_spec_loop:n}
+%   Loop through the argument specification, calling an auxiliary
+%   specific to each argument type.  If any argument is unknown stop the
+%   definition.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_arg_spec:n #1
+  {
+    \int_zero:N \l_@@_current_arg_int
+    \tl_clear:N \l_@@_last_delimiters_tl
+    \tl_clear:N \l_@@_arg_spec_tl
+    \bool_set_true:N \l_@@_grab_expandably_bool
+    \bool_set_false:N \l_@@_obey_spaces_bool
+    \bool_set_false:N \l_@@_long_bool
+    \bool_set_false:N \l_@@_some_obey_spaces_bool
+    \bool_set_false:N \l_@@_some_long_bool
+    \bool_set_false:N \l_@@_some_short_bool
+    \@@_normalize_arg_spec_loop:n #1
+      \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop
+    \int_compare:nNnT \l_@@_current_arg_int > 9
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { too-many-arguments }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+        \@@_bad_def:wn
+      }
+    \bool_if:NT \l_@@_expandable_bool
+      {
+        \tl_if_empty:NF \l_@@_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { expandable-ending-optional }
+              { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+            \@@_bad_def:wn
+          }
+      }
+    \bool_if:NT \l_@@_expandable_bool
+      { \bool_set_true:N \l_@@_grab_expandably_bool }
+    \bool_if:NT \l_@@_environment_bool
+      { \bool_set_false:N \l_@@_grab_expandably_bool }
+  }
+\cs_new_protected:Npn \@@_normalize_arg_spec_loop:n #1
+  {
+    \quark_if_recursion_tail_stop:n {#1}
+    \int_incr:N \l_@@_current_arg_int
+    \cs_if_exist_use:cF { @@_normalize_type_ \tl_to_str:n {#1} :w }
+      {
+        \bool_lazy_any:nTF
+          {
+            { \str_if_eq_p:nn {#1} { G } }
+            { \str_if_eq_p:nn {#1} { g } }
+            { \str_if_eq_p:nn {#1} { l } }
+            { \str_if_eq_p:nn {#1} { u } }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { xparse-argument-type }
+              { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { unknown-argument-type }
+              { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+        \@@_bad_def:wn
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \@@_normalize_type_d:w,
+%     \@@_normalize_type_e:w,
+%     \@@_normalize_type_o:w,
+%     \@@_normalize_type_O:w,
+%     \@@_normalize_type_r:w,
+%     \@@_normalize_type_s:w,
+%   }
+%   These argument types are aliases of more general ones, for example
+%   with the default argument |-NoValue-|.  To easily insert that marker
+%   expanded in the definitions we call \cs{@@_tmp:w} with the argument
+%   |-NoValue-|.  For argument types that need additional data, check
+%   that the data is present (not \cs{q_recursion_tail}) before
+%   proceeding.
+%    \begin{macrocode}
+\cs_set_protected:Npn \@@_tmp:w #1
+  {
+    \cs_new_protected:Npn \@@_normalize_type_d:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \@@_bad_arg_spec:wn }
+        \@@_normalize_type_D:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \@@_normalize_type_e:w ##1
+      {
+        \quark_if_recursion_tail_stop_do:nn {##1} { \@@_bad_arg_spec:wn }
+        \@@_normalize_type_E:w {##1} { }
+      }
+    \cs_new_protected:Npn \@@_normalize_type_o:w
+      { \@@_normalize_type_D:w [ ] {#1} }
+    \cs_new_protected:Npn \@@_normalize_type_O:w
+      { \@@_normalize_type_D:w [ ] }
+    \cs_new_protected:Npn \@@_normalize_type_r:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \@@_bad_arg_spec:wn }
+        \@@_normalize_type_R:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \@@_normalize_type_s:w
+      { \@@_normalize_type_t:w * }
+  }
+\exp_args:No \@@_tmp:w { \c_novalue_tl }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \@@_normalize_type_>:w,
+%     \@@_normalize_type_+:w,
+%     \@@_normalize_type_!:w,
+%   }
+%   Check that these prefixes have arguments, namely that the next token
+%   is not \cs{q_recursion_tail}, and remember to leave it after the
+%   looping macro.  Processors are forbidden in expandable commands.
+%   If all is good, store the prefix in the cleaned up
+%   \cs{l_@@_arg_spec_tl}, and decrement the argument number as prefixes
+%   do not correspond to arguments.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_normalize_type_>:w } #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \@@_bad_arg_spec:wn }
+    \bool_if:NT \l_@@_expandable_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { processor-in-expandable }
+          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+        \@@_bad_def:wn
+      }
+    \tl_put_right:Nx \l_@@_arg_spec_tl { > { \tl_trim_spaces:n {#1} } }
+    \int_decr:N \l_@@_current_arg_int
+    \bool_set_false:N \l_@@_grab_expandably_bool
+    \@@_normalize_arg_spec_loop:n {#2}
+  }
+\cs_new_protected:cpn { @@_normalize_type_+:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \@@_bad_arg_spec:wn }
+    \bool_if:NT \l_@@_long_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \@@_environment_or_command: } { + }
+        \@@_bad_def:wn
+      }
+    \bool_set_true:N \l_@@_long_bool
+    \int_decr:N \l_@@_current_arg_int
+    \@@_normalize_arg_spec_loop:n {#1}
+  }
+\cs_new_protected:cpn { @@_normalize_type_!:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \@@_bad_arg_spec:wn }
+    \bool_if:NT \l_@@_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \@@_environment_or_command: } { ! }
+        \@@_bad_def:wn
+      }
+    \bool_set_true:N \l_@@_obey_spaces_bool
+    \bool_set_true:N \l_@@_some_obey_spaces_bool
+    \int_decr:N \l_@@_current_arg_int
+    \@@_normalize_arg_spec_loop:n {#1}
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \@@_normalize_type_D:w,
+%     \@@_normalize_type_E:w,
+%     \@@_normalize_type_t:w,
+%   }
+% \begin{macro}{\@@_normalize_E_unique_check:w}
+%   Optional argument types.  Check that all required data is present
+%   (and consists of single characters if applicable) and check for
+%   forbidden types for expandable commands.  For \texttt{E}-type
+%   require that there is at least one embellishment, that each one is a
+%   single character, and that there aren't more optional arguments than
+%   embellishments; also remember that each embellishment counts as one
+%   argument for \cs{l_@@_current_arg_int}.  Then in each case
+%   store the data in \cs{l_@@_arg_spec_tl}, and
+%   for later checks store in \cs{l_@@_last_delimiters_tl} the tokens
+%   whose presence determines whether there is an optional argument (for
+%   braces store |{}|, seen later as an empty delimiter).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_type_D:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \@@_bad_arg_spec:wn }
+    \@@_single_token_check:n {#1} \@@_allowed_token_check:N #1
+    \@@_single_token_check:n {#2}
+    \@@_add_arg_spec:n { D #1 #2 {#3} }
+    \tl_put_right:Nn \l_@@_last_delimiters_tl {#1}
+    \bool_set_false:N \l_@@_grab_expandably_bool
+    \@@_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \@@_normalize_type_E:w #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \@@_bad_arg_spec:wn }
+    \tl_if_blank:nT {#1} { \@@_bad_arg_spec:wn }
+    \tl_map_function:nN {#1} \@@_single_token_check:n
+    \tl_map_function:nN {#1} \@@_allowed_token_check:N
+    \@@_normalize_E_unique_check:w #1 \q_nil \q_stop
+    \int_compare:nNnT { \tl_count:n {#2} } > { \tl_count:n {#1} }
+      { \@@_bad_arg_spec:wn }
+    \@@_add_arg_spec:n { E {#1} {#2} }
+    \tl_put_right:Nn \l_@@_last_delimiters_tl {#1}
+    \bool_set_false:N \l_@@_grab_expandably_bool
+    \int_add:Nn \l_@@_current_arg_int { \tl_count:n {#1} - 1 }
+    \@@_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \@@_normalize_E_unique_check:w #1#2 \q_stop
+  {
+    \quark_if_nil:NF #1
+      {
+        \tl_if_in:nnT {#2} {#1} { \@@_bad_arg_spec:wn }
+        \@@_normalize_E_unique_check:w #2 \q_stop
+      }
+  }
+\cs_new_protected:Npn \@@_normalize_type_t:w #1
+  {
+    \quark_if_recursion_tail_stop_do:Nn #1 { \@@_bad_arg_spec:wn }
+    \@@_single_token_check:n {#1} \@@_allowed_token_check:N #1
+    \tl_put_right:Nx \l_@@_arg_spec_tl
+      {
+        \bool_if:NT \l_@@_obey_spaces_bool { ! }
+        t \exp_not:n {#1}
+      }
+    \tl_put_right:Nn \l_@@_last_delimiters_tl {#1}
+    \bool_set_false:N \l_@@_grab_expandably_bool
+    \bool_set_false:N \l_@@_obey_spaces_bool
+    \bool_set_false:N \l_@@_long_bool
+    \@@_normalize_arg_spec_loop:n
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \@@_normalize_type_m:w,
+%     \@@_normalize_type_R:w,
+%     \@@_normalize_type_v:w
+%   }
+%   Mandatory arguments.  First check the required data is present,
+%   consists of single characters where applicable, and that the argument
+%   type is allowed for expandable commands if applicable.  For the
+%   \texttt{m} and \texttt{R} argument types check that they do not
+%   follow some optional argument with that delimiter as otherwise the
+%   optional argument could not be omitted.  Then save data in
+%   \cs{l_@@_arg_spec_tl}, count the mandatory argument, and empty the
+%   list of last delimiters.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_type_m:w
+  {
+    \@@_delimiter_check:nnn { } { m } { \iow_char:N \{ }
+    \@@_add_arg_spec_mandatory:n { m }
+    \@@_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \@@_normalize_type_R:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \@@_bad_arg_spec:wn }
+    \@@_single_token_check:n {#1} \@@_allowed_token_check:N #1
+    \@@_single_token_check:n {#2}
+    \@@_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} }
+    \bool_set_false:N \l_@@_grab_expandably_bool
+    \@@_add_arg_spec_mandatory:n { R #1 #2 {#3} }
+    \@@_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \@@_normalize_type_v:w
+  {
+    \@@_normalize_check_gv:N v
+    \@@_add_arg_spec_mandatory:n { v }
+    \@@_normalize_arg_spec_loop:n
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_normalize_type_b:w}
+%   This argument type is not allowed for commands.  This is only
+%   allowed at the end of the argument specification, hence we check
+%   that |#1| is the end.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_type_b:w #1
+  {
+    \bool_if:NF \l_@@_environment_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-command-arg }
+          { \@@_environment_or_command: } { b }
+        \@@_bad_def:wn
+      }
+    \tl_clear:N \l_@@_last_delimiters_tl
+    \@@_add_arg_spec:n { b }
+    \quark_if_recursion_tail_stop:n {#1}
+    \__kernel_msg_error:nnxx { ltcmd } { arg-after-body }
+      { \@@_environment_or_command: }
+      { \tl_to_str:n {#1} }
+    \@@_bad_def:wn
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_single_token_check:n}
+%   Checks that the argument is a single (non-space) token (possibly
+%   surrounded by spaces), and aborts the definition otherwise.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_single_token_check:n #1
+  {
+    \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nF
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-single-token }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+        \@@_bad_def:wn
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_allowed_token_check:N}
+%   Some tokens are now allowed as delimiters for some argument types,
+%   notably implicit begin/end-group tokens (|\bgroup|/|\egroup|).
+%   The major problem with these tokens is that for |\peek_...| functions,
+%   a literal~|{|$_1$. is virtually indistinguishable from a |\bgroup| or
+%   other token which was |\let| to a~|{|$_1$, and the same goes
+%   for~|}|$_2$.  All other tokens can be easily distingushed from their
+%   implicit counterparts by grabbing them and looking at the string
+%   length (see \cs{@@_token_if_cs:NTF}), but for begin/end group tokens
+%   that is not possible without the risk of mistakenly grabbing the
+%   entire brace group (potentially leading to a~\texttt{!~Runaway argument}
+%   error) or trying to grab a |}|$_2$, leading to
+%   an~\verb|! Argument of \dots has an extra }| error.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_allowed_token_check:N #1
+  {
+    \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+        { \use:n }
+        {
+          \token_if_eq_meaning:NNTF #1 \c_group_end_token
+            { \use:n }
+            { \use_none:n }
+        }
+      {
+        \__kernel_msg_error:nnxxx
+          { ltcmd } { forbidden-implicit-group-token }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+          {
+            \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+              { begin } { end }
+          }
+        \@@_bad_def:wn
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_normalize_check_gv:N, \@@_normalize_check_lu:N}
+%   Called for arguments that are always forbidden, or forbidden after
+%   an optional argument, for expandable commands.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_normalize_check_gv:N #1
+  {
+    \bool_if:NT \l_@@_expandable_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-expandable-argument-type }
+          { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+        \@@_bad_def:wn
+      }
+    \bool_set_false:N \l_@@_grab_expandably_bool
+  }
+\cs_new_protected:Npn \@@_normalize_check_lu:N #1
+  {
+    \bool_if:NT \l_@@_expandable_bool
+      {
+        \tl_if_empty:NF \l_@@_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx
+              { ltcmd } { invalid-after-optional-expandably }
+              { \iow_char:N \\ \l_@@_function_tl } { \tl_to_str:n {#1} }
+            \@@_bad_def:wn
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_delimiter_check:nnn}
+%   Called for \texttt{m} and \texttt{R} arguments.  Checks that the
+%   leading token does not coincide with the token denoting the presence
+%   of a previous optional argument.  Instead of dealing with braces for
+%   the \texttt{m}-type we use an empty delimiter to denote that case.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_delimiter_check:nnn #1#2#3
+  {
+    \tl_map_inline:Nn \l_@@_last_delimiters_tl
+      {
+        \tl_if_eq:nnT {##1} {#1}
+          {
+            \__kernel_msg_warning:nnxx { ltcmd } { optional-mandatory }
+              {#2} {#3}
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_bad_arg_spec:wn, \@@_bad_def:wn}
+%   If the argument specification is wrong, this provides an escape from
+%   the entire definition process.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_bad_arg_spec:wn #1 \@@_break_point:n #2
+  {
+    \__kernel_msg_error:nnxx { ltcmd } { bad-arg-spec }
+      { \@@_environment_or_command: } { \tl_to_str:n {#2} }
+  }
+\cs_new_protected:Npn \@@_bad_def:wn #1 \@@_break_point:n #2 { }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_arg_spec:n, \@@_add_arg_spec_mandatory:n}
+%   When adding an argument to the argument specification, set the
+%   \texttt{some_long} or \texttt{some_short} booleans as appropriate
+%   and clear the booleans keeping track of |+| and |!| markers.
+%   Before that, test for a short argument following some long
+%   arguments: this is forbidden for expandable commands and prevents
+%   grabbing arguments expandably.
+%
+%   For mandatory arguments do some more work, in particular complain if
+%   they were preceeded by~|!|.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_arg_spec:n #1
+  {
+    \bool_lazy_and:nnT
+      { ! \l_@@_long_bool }
+      { \l_@@_some_long_bool }
+      {
+        \bool_if:NT \l_@@_expandable_bool
+          {
+            \__kernel_msg_error:nnx { ltcmd } { inconsistent-long }
+              { \iow_char:N \\ \l_@@_function_tl }
+            \@@_bad_def:wn
+          }
+        \bool_set_false:N \l_@@_grab_expandably_bool
+      }
+    \bool_if:NTF \l_@@_long_bool
+      { \bool_set_true:N \l_@@_some_long_bool }
+      { \bool_set_true:N \l_@@_some_short_bool }
+    \tl_put_right:Nx \l_@@_arg_spec_tl
+      {
+        \bool_if:NT \l_@@_long_bool { + }
+        \bool_if:NT \l_@@_obey_spaces_bool { ! }
+        \exp_not:n {#1}
+      }
+    \bool_set_false:N \l_@@_long_bool
+    \bool_set_false:N \l_@@_obey_spaces_bool
+  }
+\cs_new_protected:Npn \@@_add_arg_spec_mandatory:n #1
+  {
+    \bool_if:NT \l_@@_some_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { non-trailing-obey-spaces }
+          { \@@_environment_or_command: } { \tl_to_str:n {#1} }
+        \@@_bad_def:wn
+      }
+    \tl_clear:N \l_@@_last_delimiters_tl
+    \@@_add_arg_spec:n {#1}
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Preparing the signature: general mechanism}
+%
+% \begin{macro}{\@@_prepare_signature:n}
+% \begin{macro}{\@@_prepare_signature:N}
+% \begin{macro}{\@@_prepare_signature_bypass:N}
+%   Actually creating the signature uses the same loop approach as
+%   normalizing the signature. There are first a number of variables which need
+%   to be set to track what is going on. Many of these variables are unused
+%   when defining expandable commands.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_prepare_signature:n #1
+  {
+    \int_zero:N \l_@@_current_arg_int
+    \bool_set_false:N \l_@@_long_bool
+    \bool_set_false:N \l_@@_obey_spaces_bool
+    \int_zero:N \l_@@_m_args_int
+    \bool_set_false:N \l_@@_defaults_bool
+    \tl_clear:N \l_@@_defaults_tl
+    \tl_clear:N \l_@@_process_all_tl
+    \tl_clear:N \l_@@_process_one_tl
+    \bool_set_false:N \l_@@_process_some_bool
+    \tl_clear:N \l_@@_signature_tl
+    \@@_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop
+    \bool_if:NF \l_@@_expandable_bool { \@@_flush_m_args: }
+  }
+%    \end{macrocode}
+%  The main looping function does not take an argument, but carries out the
+%  reset on the processor boolean. This is split off from the rest of the
+%  process so that when actually setting up processors the flag-reset can
+%  be bypassed.
+%
+%  For each known argument type there is an appropriate function to actually
+%  do the addition to the signature. These are separate for expandable and
+%  standard functions, as the approaches are different.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_prepare_signature:N
+  {
+    \bool_set_false:N \l_@@_prefixed_bool
+    \@@_prepare_signature_bypass:N
+  }
+\cs_new_protected:Npn \@@_prepare_signature_bypass:N #1
+  {
+    \quark_if_recursion_tail_stop:N #1
+    \use:c
+      {
+         @@_add
+         \bool_if:NT \l_@@_grab_expandably_bool { _expandable }
+         _type_  \token_to_str:N #1 :w
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Setting up a standard signature}
+%
+% Each argument-adding function appends to the signature a grabber (and
+% for some types, the delimiters or default value), except the one for
+% \texttt{m} arguments.  These are collected and added to the signature
+% all at once by \cs{@@_flush_m_args:}, called for every other argument
+% type.  All of the functions then call the loop function
+% \cs{@@_prepare_signature:N}.  Default values of arguments are
+% collected by \cs{@@_add_default:n} rather than being stored with the
+% argument; this function and \cs{@@_add_default:} are also responsible
+% for keeping track of \cs{l_@@_current_arg_int}.
+%
+% \begin{macro}{\@@_add_type_+:w}
+%   Making the next argument long means setting the flag. The \texttt{m}
+%   arguments are recorded here as
+%   this has to be done for every case where there is then a long argument.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_add_type_+:w }
+  {
+    \@@_flush_m_args:
+    \bool_set_true:N \l_@@_long_bool
+    \bool_set_true:N \l_@@_prefixed_bool
+    \@@_prepare_signature_bypass:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_!:w}
+%   Much the same for controlling trailing optional arguments.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_add_type_!:w }
+  {
+    \@@_flush_m_args:
+    \bool_set_true:N \l_@@_obey_spaces_bool
+    \bool_set_true:N \l_@@_prefixed_bool
+    \@@_prepare_signature_bypass:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_>:w}
+%   When a processor is found, the processor code is stored.  It will be
+%   used by \cs{@@_args_process:} once arguments are all found. Here too
+%   the loop calls \cs{@@_prepare_signature_bypass:N} rather than
+%   \cs{@@_prepare_signature:N} so that the flag is not reset.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_add_type_>:w } #1
+  {
+    \@@_flush_m_args:
+    \bool_set_true:N \l_@@_prefixed_bool
+    \bool_set_true:N \l_@@_process_some_bool
+    \tl_put_left:Nn \l_@@_process_one_tl { {#1} }
+    \@@_prepare_signature_bypass:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_b:w}
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_b:w
+  {
+    \@@_flush_m_args:
+    \@@_add_default:
+    \@@_add_grabber:N b
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_D:w}
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_D:w #1#2#3
+  {
+    \@@_flush_m_args:
+    \@@_add_default:n {#3}
+    \@@_add_grabber:N D
+    \tl_put_right:Nn \l_@@_signature_tl { #1 #2 }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_E:w}
+%   The \texttt{E}-type argument needs a special handling of default
+%   values.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_E:w #1#2
+  {
+    \@@_flush_m_args:
+    \@@_add_default_E:nn {#1} {#2}
+    \@@_add_grabber:N E
+    \tl_put_right:Nn \l_@@_signature_tl { {#1} }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_m:w}
+%   The \texttt{m} type is special as short arguments which are not
+%   post-processed are simply counted at this stage. Thus there is a check
+%   to see if either of these cases apply. If so, a one-argument grabber
+%   is added to the signature. On the other hand, if a standard short
+%   argument is required it is simply counted at this stage, to be
+%   added later using \cs{@@_flush_m_args:}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_m:w
+  {
+    \@@_add_default:
+    \bool_if:NTF \l_@@_prefixed_bool
+      { \@@_add_grabber:N m }
+      { \int_incr:N \l_@@_m_args_int }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_R:w}
+%   The \texttt{R}-type argument is very similar to the \texttt{D}-type.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_R:w #1#2#3
+  {
+    \@@_flush_m_args:
+    \@@_add_default:n {#3}
+    \@@_add_grabber:N R
+    \tl_put_right:Nn \l_@@_signature_tl { #1 #2 }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_t:w}
+%   Setting up a \texttt{t} argument means collecting one token for the test,
+%   and adding it along with the grabber to the signature.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_t:w #1
+  {
+    \@@_flush_m_args:
+    \@@_add_default:
+    \@@_add_grabber:N t
+    \tl_put_right:Nn \l_@@_signature_tl {#1}
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_type_v:w}
+%   At this stage, the \texttt{v} argument is identical to \texttt{l}
+%   except that since the grabber may fail to read a verbatim argument
+%   we need a default value.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_type_v:w
+  {
+    \@@_flush_m_args:
+    \exp_args:No \@@_add_default:n \c_novalue_tl
+    \@@_add_grabber:N v
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_flush_m_args:}
+%   As \texttt{m} arguments are simply counted, there is a need to add
+%   them to the token register in a block. As this function can only
+%   be called if something other than \texttt{m} turns up, the flag can
+%   be switched here.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_flush_m_args:
+  {
+    \int_compare:nNnT \l_@@_m_args_int > 0
+      {
+        \tl_put_right:Nx \l_@@_signature_tl
+          { \exp_not:c { @@_grab_m_ \int_use:N \l_@@_m_args_int :w } }
+        \tl_put_right:Nx \l_@@_process_all_tl
+          { \prg_replicate:nn { \l_@@_m_args_int } { { } } }
+      }
+    \int_zero:N \l_@@_m_args_int
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_grabber:N}
+%   To keep the various checks needed in one place, adding the grabber
+%   to the signature is done here.  The only questions are whether the
+%   grabber should be long or not, and whether to obey spaces.  The
+%   \cs{l_@@_obey_spaces_bool} boolean can only be \texttt{true} for
+%   trailing optional arguments.  In that case spaces will not be
+%   ignored when looking for that optional argument.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_grabber:N #1
+  {
+    \tl_put_right:Nx \l_@@_signature_tl
+      {
+        \exp_not:c
+          {
+            @@_grab_ #1
+            \bool_if:NT \l_@@_long_bool { _long }
+            \bool_if:NT \l_@@_obey_spaces_bool { _obey_spaces }
+            :w
+          }
+      }
+    \bool_set_false:N \l_@@_long_bool
+    \bool_set_false:N \l_@@_obey_spaces_bool
+    \tl_put_right:Nx \l_@@_process_all_tl
+      { { \exp_not:o \l_@@_process_one_tl } }
+    \tl_clear:N \l_@@_process_one_tl
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_default:n, \@@_add_default:, \@@_add_default_E:nn}
+%   Store the default value of an argument, or rather code that gives
+%   that default value (it may involve other arguments).  This is
+%   \cs{c_novalue_tl} for arguments with no actual default or with
+%   default |-NoValue-|; and (in a brace group) \cs{prg_do_nothing:}
+%   followed by a default value for others.  For \texttt{E}-type
+%   arguments, pad the defaults |#2| with some \cs{c_novalue_tl}
+%   until there are as many as embellishments~|#1|.  These functions are
+%   also used when defining expandable commands.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_default:n #1
+  {
+    \tl_if_novalue:nTF {#1}
+      { \@@_add_default: }
+      {
+        \int_incr:N \l_@@_current_arg_int
+        \bool_set_true:N \l_@@_defaults_bool
+        \tl_put_right:Nn \l_@@_defaults_tl { { \prg_do_nothing: #1 } }
+      }
+  }
+\cs_new_protected:Npn \@@_add_default:
+  {
+    \int_incr:N \l_@@_current_arg_int
+    \tl_put_right:Nn \l_@@_defaults_tl { \c_novalue_tl }
+  }
+\cs_new_protected:Npn \@@_add_default_E:nn #1#2
+  {
+    \tl_map_function:nN {#2} \@@_add_default:n
+    \prg_replicate:nn
+      { \tl_count:n {#1} - \tl_count:n {#2} }
+      { \@@_add_default: }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Setting up expandable types}
+%
+% The approach here is not dissimilar to that for standard types, but fewer types
+% are supported. There is
+% also a need to define the per-function auxiliaries: this is done here, while
+% the general grabbers are dealt with later.
+%
+% \begin{macro}{\@@_add_expandable_type_+:w}
+%   We have already checked that short arguments are before long
+%   arguments, so \cs{l_@@_long_bool} only changes from \texttt{false}
+%   to \texttt{true} once (and there is no need to reset it after each
+%   argument).  Also knock back the argument count because |+| is not an
+%   argument.  Continue the loop.
+%    \begin{macrocode}
+\cs_new_protected:cpn { @@_add_expandable_type_+:w }
+  {
+    \bool_set_true:N \l_@@_long_bool
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_type_D:w}
+% \begin{macro}{\@@_add_expandable_type_D_aux:NNNn}
+% \begin{macro}{\@@_add_expandable_type_D_aux:NNN}
+% \begin{macro}{\@@_add_expandable_type_D_aux:NN}
+%   The set up for \texttt{D}-type arguments involves constructing a
+%   rather complex auxiliary which is used
+%   repeatedly when grabbing. There is an auxiliary here so that the
+%   \texttt{R}-type can share code readily: |#1| is |D| or~|R|.
+%   The |_aux:NN| auxiliary is needed if the two delimiting tokens are
+%   identical: in contrast to the non-expandable route, the grabber here
+%   has to act differently for this case.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_type_D:w
+  { \@@_add_expandable_type_D_aux:NNNn D }
+\cs_new_protected:Npn \@@_add_expandable_type_D_aux:NNNn #1#2#3#4
+  {
+    \@@_add_default:n {#4}
+    \tl_if_eq:nnTF {#2} {#3}
+      { \@@_add_expandable_type_D_aux:NN #1 #2 }
+      { \@@_add_expandable_type_D_aux:NNN #1 #2 #3 }
+    \@@_prepare_signature:N
+  }
+\cs_new_protected:Npn \@@_add_expandable_type_D_aux:NNN #1#2#3
+  {
+    \bool_if:NTF \l_@@_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l_@@_expandable_aux_name_tl } ##1 ##2 #2 ##3 \q_@@ ##4 #3
+      { ##1 {##2} {##3} {##4} }
+    \@@_add_expandable_grabber:nn {#1}
+      {
+        \exp_not:c  { \l_@@_expandable_aux_name_tl }
+        \exp_not:n { #2 #3 }
+      }
+  }
+\cs_new_protected:Npn \@@_add_expandable_type_D_aux:NN #1#2
+  {
+    \bool_if:NTF \l_@@_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l_@@_expandable_aux_name_tl } ##1 #2 ##2 #2
+      { ##1 {##2} }
+    \@@_add_expandable_grabber:nn { #1_alt }
+      {
+        \exp_not:c  { \l_@@_expandable_aux_name_tl }
+        \exp_not:n {#2}
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_type_E:w}
+% \begin{macro}{\@@_add_expandable_type_E_aux:n}
+%   For each embellishment, use \cs{@@_get_grabber:NN} to obtain an
+%   auxiliary delimited by that token and store a pair constituted of
+%   the auxiliary and the token in \cs{l_@@_tmpb_tl}, before appending
+%   the whole set of these pairs to the signature, and an equal number
+%   of |-NoValue-| markers (regardless of the default values of
+%   arguments).  Set the current argument appropriately.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_type_E:w #1#2
+  {
+    \@@_add_default_E:nn {#1} {#2}
+    \tl_clear:N \l_@@_tmpb_tl
+    \tl_map_function:nN {#1} \@@_add_expandable_type_E_aux:n
+    \@@_add_expandable_grabber:nn
+      { E \bool_if:NT \l_@@_long_bool { _long } }
+      {
+        { \exp_not:o \l_@@_tmpb_tl }
+        {
+          \prg_replicate:nn { \tl_count:n {#1} }
+            { { \c_novalue_tl } }
+        }
+      }
+    \@@_prepare_signature:N
+  }
+\cs_new_protected:Npn \@@_add_expandable_type_E_aux:n #1
+  {
+    \@@_get_grabber:NN #1 \l_@@_tmpa_tl
+    \tl_put_right:Nx \l_@@_tmpb_tl
+      { \exp_not:o \l_@@_tmpa_tl \exp_not:N #1 }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_type_m:w}
+%   Unlike the standard case, when working expandably each argument is always
+%   grabbed separately.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_type_m:w
+  {
+    \@@_add_default:
+    \@@_add_expandable_grabber:nn
+      { m \bool_if:NT \l_@@_long_bool { _long } } { }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_type_R:w}
+%   The \texttt{R}-type is very similar to the \texttt{D}-type
+%   argument, and so the same internals are used.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_type_R:w
+  { \@@_add_expandable_type_D_aux:NNNn R }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_type_t:w}
+%   An auxiliary delimited by |#1| is built now.  It will be used to
+%   test for the presence of that token.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_type_t:w #1
+  {
+    \@@_add_default:
+    \@@_get_grabber:NN #1 \l_@@_tmpa_tl
+    \@@_add_expandable_grabber:nn { t }
+      {
+        \exp_not:o \l_@@_tmpa_tl
+        \exp_not:N #1
+      }
+    \@@_prepare_signature:N
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_expandable_grabber:nn}
+%   This is called for all arguments to place the right grabber in the
+%   signature.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_expandable_grabber:nn #1#2
+  {
+    \tl_put_right:Nx \l_@@_signature_tl
+      { \exp_not:c { @@_expandable_grab_ #1 :w } #2 }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_grabber:NN}
+% \begin{macro}{\@@_get_grabber_auxi:NN}
+% \begin{macro}{\@@_get_grabber_auxii:NN}
+%   Given a token |#1|, defines an expandable function delimited by that
+%   token and stores it in the token list~|#2|.  The function is named
+%   after the token, unless that function name is already taken by some
+%   other grabber (this can happen in the rare case where delimiters
+%   with different category codes are used in the same document): in
+%   that case use a global counter to get a unique name.  Since the
+%   grabbers are not named after \pkg{xparse} commands they should not
+%   be used to get material from the input stream.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_get_grabber:NN #1#2
+  {
+    \cs_set:Npn \@@_tmp:w ##1 #1 {##1}
+    \exp_args:Nc \@@_get_grabber_auxi:NN
+      { @@_grabber_ \token_to_str:N #1 :w } #2
+  }
+\cs_new_protected:Npn \@@_get_grabber_auxi:NN #1#2
+  {
+    \cs_if_eq:NNTF \@@_tmp:w #1
+      { \tl_set:Nn #2 {#1} }
+      {
+        \cs_if_exist:NTF #1
+          {
+            \int_gincr:N \g_@@_grabber_int
+            \exp_args:Nc \@@_get_grabber_auxi:NN
+              {
+                @@_grabber_
+                - \int_use:N \g_@@_grabber_int :w
+              }
+              #2
+          }
+          { \@@_get_grabber_auxii:NN #1 #2 }
+      }
+  }
+\cs_new_protected:Npn \@@_get_grabber_auxii:NN #1#2
+  {
+    \cs_set_eq:NN #1 \@@_tmp:w
+    \tl_set:Nn #2 {#1}
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Grabbing arguments}
+%
+% All of the grabbers follow the same basic pattern. The initial
+% function stores in \cs{l_@@_signature_tl} the code to grab further
+% arguments, defines (the function in) \cs{l_@@_fn_tl} that will grab
+% the argument, and calls it.
+%
+% Defining \cs{l_@@_fn_tl} means determining whether to use
+% \cs{cs_set:Npn} or \cs{cs_set_nopar:Npn}, and for optional arguments
+% whether to skip spaces. Once the argument is found, \cs{l_@@_fn_tl}
+% calls \cs{@@_add_arg:n}, responsible for calling processors and
+% grabbing further arguments.
+%
+% \begin{macro}
+%   {
+%     \@@_grab_b:w,
+%     \@@_grab_b_long:w,
+%     \@@_grab_b_obey_spaces:w,
+%     \@@_grab_b_long_obey_spaces:w,
+%     \@@_grab_b_aux:NNw,
+%     \@@_grab_b_end:Nw
+%   }
+%   This uses the well-tested code of \texttt{D}-type arguments,
+%   skipping the peeking step because the \texttt{b}-type argument is
+%   always present, and adding a cleanup stage at the end by hijacking
+%   the signature.  The clean-up consists of properly
+%   dealing with \cs{l_@@_args_tl} and also putting back the \cs{end}
+%   that served as an end-delimiter: this \cs{end} receives the
+%   environment name as its argument and is run normally.  The
+%   \texttt{D}-type code stores the argument found (body of the
+%   environment) as a brace group in \cs{l_@@_args_tl} and depending on
+%   the presence of a prefix~|!| we trim spaces or not before adding
+%   this braced argument into the saved \cs{l_@@_args_tl}.
+%   The strange \verb*|\begin | control sequence is there for display
+%     purposes only: it has to look like |\begin| in the terminal but
+%       not to delimited arguments.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_b:w
+  { \@@_grab_b_aux:NNw \cs_set_protected_nopar:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \@@_grab_b_long:w
+  { \@@_grab_b_aux:NNw \cs_set_protected:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \@@_grab_b_obey_spaces:w
+  { \@@_grab_b_aux:NNw \cs_set_protected_nopar:Npn \exp_not:n }
+\cs_new_protected:Npn \@@_grab_b_long_obey_spaces:w
+  { \@@_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n }
+\cs_new_protected:Npn \@@_grab_b_aux:NNw #1#2#3 \@@_run_code:
+  {
+    \@@_grab_D_aux:NNnN \begin \end {#3} #1
+    \tl_put_left:Nn \l_@@_signature_tl { \@@_grab_b_end:Nw #2 }
+    \tl_set_eq:NN \l_@@_saved_args_tl \l_@@_args_tl
+    \tl_clear:N \l_@@_args_tl
+    \exp_args:Nc \l_@@_fn_tl { begin ~ }
+  }
+\cs_new_protected:Npn \@@_grab_b_end:Nw #1#2 \@@_run_code:
+  {
+    \tl_set:Nx \l_@@_args_tl
+      {
+        \exp_not:V \l_@@_saved_args_tl
+        { \exp_after:wN #1 \l_@@_args_tl }
+      }
+    #2
+    \@@_run_code:
+    \end
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_D:w}
+% \begin{macro}{\@@_grab_D_long:w}
+% \begin{macro}{\@@_grab_D_obey_spaces:w}
+% \begin{macro}{\@@_grab_D_long_obey_spaces:w}
+%   The generic delimited argument grabber. The auxiliary function does
+%   a peek test before calling \cs{@@_grab_D_call:Nw}, so that the
+%   optional nature of the argument works as expected.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_D:w #1#2#3 \@@_run_code:
+  {
+    \@@_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \@@_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_D_long:w #1#2#3 \@@_run_code:
+  {
+    \@@_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \@@_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_D_obey_spaces:w #1#2#3 \@@_run_code:
+  {
+    \@@_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \@@_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_D_long_obey_spaces:w #1#2#3 \@@_run_code:
+  {
+    \@@_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \@@_peek_meaning_remove:NTF
+  }
+%    \end{macrocode}
+% \begin{macro}{\@@_grab_D_aux:NNnNN}
+% \begin{macro}{\@@_grab_D_aux:NNnN}
+%   This is a bit complicated. The idea is that, in order to check for
+%   nested optional argument tokens (\texttt{[[...]]} and so on) the
+%   argument needs to be grabbed without removing any braces at all. If
+%   this is not done, then cases like |[{[}]| fail. So after testing for
+%   an optional argument, it is collected piece-wise. Inserting a quark
+%   prevents loss of braces, and there is then a test to see if there are
+%   nested delimiters to handle.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_D_aux:NNnNN #1#2#3#4#5
+  {
+    \@@_grab_D_aux:NNnN #1#2 {#3} #4
+    #5 #1
+      { \@@_grab_D_call:Nw #1 }
+      { \@@_add_arg:o \c_novalue_tl }
+  }
+%    \end{macrocode}
+%   Inside the \enquote{standard} grabber, there is a test to see if the
+%   grabbed argument is entirely enclosed by braces. There are a couple of
+%   extra factors to allow for: the argument might be entirely empty, and
+%   spaces at the start and end of the input must be retained around a brace
+%   group. Also notice that a \emph{blank} argument might still contain
+%   spaces.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_D_aux:NNnN #1#2#3#4
+  {
+    \tl_set:Nn \l_@@_signature_tl {#3}
+    \exp_after:wN #4 \l_@@_fn_tl ##1 #2
+      {
+        \tl_if_in:nnTF {##1} {#1}
+          { \@@_grab_D_nested:NNnN #1 #2 {##1} #4 }
+          {
+            \tl_if_blank:oTF { \use_none:n ##1 }
+              { \@@_add_arg:o { \use_none:n ##1 } }
+              {
+                \str_if_eq:eeTF
+                  { \exp_not:o { \use_none:n ##1 } }
+                  { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } }
+                  { \@@_add_arg:o { \use_ii:nn ##1 } }
+                  { \@@_add_arg:o { \use_none:n ##1 } }
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@@_grab_D_nested:NNnN}
+% \begin{macro}{\@@_grab_D_nested:w}
+% \begin{macro}{\l_@@_nesting_a_tl}
+% \begin{macro}{\l_@@_nesting_b_tl}
+% \begin{macro}{\q_@@}
+%   Catching nested optional arguments means more work. The aim here is
+%   to collect up each pair of optional tokens without \TeX{} helping out,
+%   and without counting anything. The code above will already have
+%   removed the leading opening token and a closing token, but the
+%   wrong one. The aim is then to work through the material grabbed
+%   so far and divide it up on each opening token, grabbing a closing
+%   token to match (thus working in pairs). Once there are no opening
+%   tokens, then there is a second check to see if there are any
+%   opening tokens in the second part of the argument (for things
+%   like |[][]|). Once everything has been found, the entire collected
+%   material is added to the output as a single argument. The only tricky part
+%   here is ensuring that any grabbing function that might run away is named
+%   after the function currently being parsed and not after \pkg{xparse}. That
+%   leads to some rather complex nesting! There is also a need to prevent the
+%   loss of any braces, hence the insertion and removal of quarks along the
+%   way.
+%    \begin{macrocode}
+\tl_new:N \l_@@_nesting_a_tl
+\tl_new:N \l_@@_nesting_b_tl
+\quark_new:N \q_@@
+\cs_new_protected:Npn \@@_grab_D_nested:NNnN #1#2#3#4
+  {
+    \tl_clear:N \l_@@_nesting_a_tl
+    \tl_clear:N \l_@@_nesting_b_tl
+    \exp_after:wN #4 \l_@@_fn_tl ##1 #1 ##2 \q_@@ ##3 #2
+      {
+        \tl_put_right:No \l_@@_nesting_a_tl { \use_none:n ##1 #1 }
+        \tl_put_right:No \l_@@_nesting_b_tl { \use_i:nn #2 ##3 }
+        \tl_if_in:nnTF {##2} {#1}
+          {
+            \l_@@_fn_tl
+              \q_nil ##2 \q_@@ \ERROR
+          }
+          {
+            \tl_put_right:Nx \l_@@_nesting_a_tl
+              { \@@_grab_D_nested:w \q_nil ##2 \q_stop }
+            \tl_if_in:NnTF \l_@@_nesting_b_tl {#1}
+              {
+                \tl_set_eq:NN \l_@@_tmpa_tl \l_@@_nesting_b_tl
+                \tl_clear:N \l_@@_nesting_b_tl
+                \exp_after:wN \l_@@_fn_tl \exp_after:wN
+                  \q_nil \l_@@_tmpa_tl \q_nil \q_@@ \ERROR
+              }
+              {
+                \tl_put_right:No \l_@@_nesting_a_tl
+                  \l_@@_nesting_b_tl
+                \@@_add_arg:V \l_@@_nesting_a_tl
+              }
+          }
+      }
+    \l_@@_fn_tl #3 \q_nil \q_@@ \ERROR
+  }
+\cs_new:Npn \@@_grab_D_nested:w #1 \q_nil \q_stop
+  { \exp_not:o { \use_none:n #1 } }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\@@_grab_D_call:Nw}
+%   For \texttt{D} and \texttt{R}-type arguments, to avoid losing any
+%   braces, a token needs to be inserted before the argument to be grabbed.
+%   If the argument runs away because the closing token is missing then this
+%   inserted token shows up in the terminal. Ideally, |#1| would therefore be
+%   used directly, but that is no good as it will mess up the rest of the
+%   grabber. Instead, a copy of |#1| with an altered category code is used,
+%   as this will look right in the terminal but will not mess up the grabber.
+%   The only issue then is that the category code of |#1| is unknown. So there
+%   is a quick test to ensure that the inserted token can never be matched by
+%   the grabber. (This assumes that the open and close delimiters are not the
+%   same character with different category codes, but that really should not
+%   happen in any sensible document-level syntax.)
+%   An exception is when |#1| is a control sequence token, in which case the
+%   character-token treatment is no good because if hit with \cs{token_to_str:N}
+%   it would add sputios tokens to the argument. In this case a different
+%   branch is taken. The token inserted is then the same \meta{csname} as |#1|,
+%   but with a space appended, so that the grabber don't see it as another
+%   of the same delimiter.
+%    \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_grab_D_call:Nw #1
+  {
+    \token_if_eq_catcode:NNTF + #1
+      {
+        \exp_after:wN \exp_after:wN \exp_after:wN
+          \l_@@_fn_tl \char_generate:nn { `#1 } { 11 }
+      }
+      {
+        \@@_token_if_cs:NTF #1
+          {
+            \exp_after:wN \l_@@_fn_tl
+            \cs:w \cs_to_str:N #1 ~ \cs_end:
+          }
+          {
+            \exp_after:wN \l_@@_fn_tl
+            \token_to_str:N #1
+          }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+%   {
+%     \@@_grab_E:w, \@@_grab_E_long:w,
+%     \@@_grab_E_obey_spaces:w, \@@_grab_E_long_obey_spaces:w
+%   }
+% \begin{macro}{\@@_grab_E:nnNN}
+% \begin{macro}{\@@_grab_E_loop:NnN}
+% \begin{macro}{\@@_grab_E_finalise:}
+%   Everything here needs to point to a loop.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_E:w #1#2 \@@_run_code:
+  {
+    \@@_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \@@_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_E_long:w #1#2 \@@_run_code:
+  {
+    \@@_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \@@_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_E_obey_spaces:w #1#2 \@@_run_code:
+  {
+    \@@_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \@@_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \@@_grab_E_long_obey_spaces:w #1#2 \@@_run_code:
+  {
+    \@@_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \@@_peek_meaning_remove:NTF
+  }
+%    \end{macrocode}
+%   A loop is needed here to allow a random ordering of keys. These are
+%   searched for one at a time, with any not found needing to be tracked:
+%   they can appear later. The grabbed values are held in a property list
+%   which is then turned into an ordered list to be passed back to the user.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_E:nnNN #1#2#3#4
+  {
+    \exp_after:wN #3 \l_@@_fn_tl ##1##2##3
+      {
+        \prop_put:Nnn \l_@@_tmp_prop {##1} {##3}
+        \@@_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop
+      }
+    \prop_clear:N \l_@@_tmp_prop
+    \tl_set:Nn \l_@@_signature_tl {#2}
+    \cs_set_protected:Npn \@@_grab_E_finalise:
+      {
+        \tl_map_inline:nn {#1}
+          {
+            \prop_get:NnNF \l_@@_tmp_prop {####1} \l_@@_tmpb_tl
+              { \tl_set_eq:NN \l_@@_tmpb_tl \c_novalue_tl }
+            \tl_put_right:Nx \l_@@_args_tl
+              { { \exp_not:V \l_@@_tmpb_tl } }
+          }
+        \l_@@_signature_tl \@@_run_code:
+      }
+    \@@_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new_protected:Npn \@@_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop
+  {
+    \cs_if_eq:NNTF #3 \q_recursion_tail
+      { \@@_grab_E_finalise: }
+      {
+        #1 #3
+          { \l_@@_fn_tl #3 {#2#4} }
+          { \@@_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop }
+      }
+  }
+\cs_new_protected:Npn \@@_grab_E_finalise: { }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_grab_m:w}
+% \begin{macro}{\@@_grab_m_long:w}
+%   Collecting a single mandatory argument is quite easy.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_m:w #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_protected_nopar:Npn \l_@@_fn_tl ##1
+      { \@@_add_arg:n {##1} }
+    \l_@@_fn_tl
+  }
+\cs_new_protected:Npn \@@_grab_m_long:w #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_protected:Npn \l_@@_fn_tl ##1
+      { \@@_add_arg:n {##1} }
+    \l_@@_fn_tl
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_m_1:w}
+% \begin{macro}{\@@_grab_m_2:w}
+% \begin{macro}{\@@_grab_m_3:w}
+% \begin{macro}{\@@_grab_m_4:w}
+% \begin{macro}{\@@_grab_m_5:w}
+% \begin{macro}{\@@_grab_m_6:w}
+% \begin{macro}{\@@_grab_m_7:w}
+% \begin{macro}{\@@_grab_m_8:w}
+% \begin{macro}{\@@_grab_m_9:w}
+% \begin{macro}{\@@_grab_m_aux:Nnnnnnnnn}
+%   Grabbing 1--8 mandatory arguments is done by giving 8--1 known
+%   arguments to a 9-argument function that stores them in
+%   \cs{l_@@_args_tl}.  For simplicity, grabbing 9 mandatory arguments
+%   is done by grabbing 5 then 4 arguments.
+%    \begin{macrocode}
+\cs_new_protected_nopar:Npn \@@_grab_m_aux:Nnnnnnnnn #1#2#3#4#5#6#7#8#9
+  {
+    \tl_put_right:No \l_@@_args_tl
+      { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
+    \l_@@_signature_tl \@@_run_code:
+  }
+\cs_new_protected:cpn { @@_grab_m_1:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nnnnnnn { } { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_2:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nnnnnn { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_3:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nnnnn { } { } { } { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_4:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nnnn { } { } { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_5:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nnn { } { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_6:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:nn { } { }
+  }
+\cs_new_protected:cpn { @@_grab_m_7:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \use_none:n { }
+  }
+\cs_new_protected:cpn { @@_grab_m_8:w } #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l_@@_fn_tl \@@_grab_m_aux:Nnnnnnnnn
+    \l_@@_fn_tl \prg_do_nothing:
+  }
+\cs_new_protected:cpx { @@_grab_m_9:w }
+  {
+    \exp_not:c { @@_grab_m_5:w }
+    \exp_not:c { @@_grab_m_4:w }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_R:w, \@@_grab_R_long:w}
+% \begin{macro}{\@@_grab_R_aux:NNnN}
+%  The grabber for \texttt{R}-type arguments is basically the same as
+%  that for \texttt{D}-type ones, but always skips spaces (as it is mandatory)
+%  and has a hard-coded error message.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_R:w #1#2#3 \@@_run_code:
+  { \@@_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected_nopar:Npn }
+\cs_new_protected:Npn \@@_grab_R_long:w #1#2#3 \@@_run_code:
+  { \@@_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn }
+\cs_new_protected:Npn \@@_grab_R_aux:NNnN #1#2#3#4
+  {
+    \@@_grab_D_aux:NNnN #1 #2 {#3} #4
+    \@@_peek_nonspace_remove:NTF #1
+      { \@@_grab_D_call:Nw #1 }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { missing-required }
+          { \@@_environment_or_command: }
+          { \token_to_str:N #1 }
+        \@@_add_arg:o \c_novalue_tl
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_t:w}
+% \begin{macro}{\@@_grab_t_obey_spaces:w}
+% \begin{macro}{\@@_grab_t_aux:NNw}
+%   Dealing with a token is quite easy. Check the match, remove the
+%   token if needed and add a flag to the output.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_t:w
+  { \@@_grab_t_aux:NNw \@@_peek_nonspace_remove:NTF }
+\cs_new_protected:Npn \@@_grab_t_obey_spaces:w
+  { \@@_grab_t_aux:NNw \@@_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \@@_grab_t_aux:NNw #1#2#3 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#3}
+    \exp_after:wN \cs_set_protected:Npn \l_@@_fn_tl
+      {
+        #1 #2
+          { \@@_add_arg:n { \BooleanTrue } }
+          { \@@_add_arg:n { \BooleanFalse } }
+      }
+    \l_@@_fn_tl
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_v_arg_tl}
+%    \begin{macrocode}
+\tl_new:N \l_@@_v_arg_tl
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_grab_v:w}
+% \begin{macro}{\@@_grab_v_long:w}
+% \begin{macro}{\@@_grab_v_aux:w}
+% \begin{macro}{\@@_grab_v_group_end:}
+%   The opening delimiter is the first non-space token, and is never
+%   read verbatim.  This is required by consistency with the case where
+%   the preceding argument was optional and absent: then \TeX{} has
+%   already read and tokenized that token when looking for the optional
+%   argument.  The first thing is thus to check is that this delimiter
+%   is a character, and to distinguish the case of a left brace (in that
+%   case, \cs{group_align_safe_end:} is needed to compensate for the
+%   begin-group character that was just seen).  Then set verbatim
+%   catcodes with \cs{@@_grab_v_aux_catcodes:}.
+%
+%   The group keep catcode changes local, and
+%   \cs{group_align_safe_begin/end:} allow to use a character
+%   with category code~$4$ (normally |&|) as the delimiter (all commands
+%   do \cs{group_align_safe_begin/end:}, so there's no need to do that
+%   again here).
+%   It is ended by \cs{@@_grab_v_group_end:}, which smuggles
+%   the collected argument out of the group.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_v:w
+  {
+    \bool_set_false:N \l_@@_long_bool
+    \@@_grab_v_aux:w
+  }
+\cs_new_protected:Npn \@@_grab_v_long:w
+  {
+    \bool_set_true:N \l_@@_long_bool
+    \@@_grab_v_aux:w
+  }
+\cs_new_protected:Npn \@@_grab_v_aux:w #1 \@@_run_code:
+  {
+    \tl_set:Nn \l_@@_signature_tl {#1}
+    \group_begin:
+      \tex_escapechar:D = 92 \scan_stop:
+      \tl_clear:N \l_@@_v_arg_tl
+      \peek_remove_spaces:n
+        {
+          \peek_meaning_remove:NTF \c_group_begin_token
+            {
+              \group_align_safe_end:
+              \@@_grab_v_bgroup:
+            }
+            {
+              \peek_N_type:TF
+                { \@@_grab_v_aux_test:N }
+                { \@@_grab_v_aux_abort:n { } }
+            }
+        }
+  }
+\cs_new_protected:Npn \@@_grab_v_group_end:
+  {
+        \exp_args:NNNo
+      \group_end:
+    \tl_set:Nn \l_@@_v_arg_tl { \l_@@_v_arg_tl }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_v_aux_test:N}
+% \begin{macro}
+%   {
+%     \@@_grab_v_aux_loop:N,
+%     \@@_grab_v_aux_loop:NN,
+%     \@@_grab_v_aux_loop_end:
+%   }
+%   Check that the opening delimiter is a character, setup category codes,
+%   then start reading tokens one by one, keeping the delimiter as an argument.
+%   If the verbatim was not nested, we will be grabbing one character
+%   at each step. Unfortunately, it can happen that what follows the
+%   verbatim argument is already tokenized. Thus, we check at each step
+%   that the next token is indeed a \enquote{nice}
+%   character, \emph{i.e.}, is not a character with
+%   category code $1$ (begin-group), $2$ (end-group)
+%   or $6$ (macro parameter), nor the space character,
+%   with category code~$10$ and character code~$32$,
+%   nor a control sequence.
+%   The partially built argument is stored in \cs{l_@@_v_arg_tl}.
+%   If we ever meet a token which we cannot grab (non-N-type),
+%   or which is not a character according to
+%   \cs{@@_grab_v_token_if_char:NTF}, then we bail out with
+%   \cs{@@_grab_v_aux_abort:n}. Otherwise, we stop at the first
+%   character matching the delimiter.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_v_aux_test:N #1
+  {
+    \@@_grab_v_token_if_char:NTF #1
+      {
+        \@@_grab_v_aux_put:N #1
+        \@@_grab_v_aux_catcodes:
+        \@@_grab_v_aux_loop:N #1
+      }
+      { \@@_grab_v_aux_abort:n {#1} #1 }
+  }
+\cs_new_protected:Npn \@@_grab_v_aux_loop:N #1
+  {
+    \peek_N_type:TF
+      { \@@_grab_v_aux_loop:NN #1 }
+      { \@@_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \@@_grab_v_aux_loop:NN #1#2
+  {
+    \@@_grab_v_token_if_char:NTF #2
+      {
+        \token_if_eq_charcode:NNTF #1 #2
+          { \@@_grab_v_aux_loop_end: }
+          {
+            \@@_grab_v_aux_put:N #2
+            \@@_grab_v_aux_loop:N #1
+          }
+      }
+      { \@@_grab_v_aux_abort:n {#2} #2 }
+  }
+\cs_new_protected:Npn \@@_grab_v_aux_loop_end:
+  {
+    \@@_grab_v_group_end:
+    \@@_add_arg:x { \tl_tail:N \l_@@_v_arg_tl }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_v_nesting_int}
+%    \begin{macrocode}
+\int_new:N \l_@@_v_nesting_int
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_grab_v_bgroup:}
+% \begin{macro}{\@@_grab_v_bgroup_loop:}
+% \begin{macro}{\@@_grab_v_bgroup_loop:N}
+%   If the opening delimiter is a left brace, we keep track of
+%   how many left and right braces were encountered so far in
+%   \cs{l_@@_v_nesting_int} (the methods used for optional
+%   arguments cannot apply here), and stop as soon as it reaches~$0$.
+%
+%   Some care was needed when removing the opening delimiter, which
+%   has already been assigned category code~$1$: using
+%   \cs{peek_meaning_remove:NTF} in the \cs{@@_grab_v_aux:w}
+%   function would break within alignments. Instead, we first
+%   convert that token to a string, and remove the result as a
+%   normal undelimited argument.
+%    \begin{macrocode}
+\cs_new_protected:Npx \@@_grab_v_bgroup:
+  {
+    \exp_not:N \@@_grab_v_aux_catcodes:
+    \exp_not:n { \int_set:Nn \l_@@_v_nesting_int { 1 } }
+    \exp_not:N \@@_grab_v_aux_put:N \iow_char:N \{
+    \exp_not:N \@@_grab_v_bgroup_loop:
+  }
+\cs_new_protected:Npn \@@_grab_v_bgroup_loop:
+  {
+    \peek_N_type:TF
+      { \@@_grab_v_bgroup_loop:N }
+      { \@@_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \@@_grab_v_bgroup_loop:N #1
+  {
+    \@@_grab_v_token_if_char:NTF #1
+      {
+        \token_if_eq_charcode:NNTF \c_group_end_token #1
+          {
+            \int_decr:N \l_@@_v_nesting_int
+            \int_compare:nNnTF \l_@@_v_nesting_int > 0
+              {
+                \@@_grab_v_aux_put:N #1
+                \@@_grab_v_bgroup_loop:
+              }
+              { \@@_grab_v_aux_loop_end: }
+          }
+          {
+            \token_if_eq_charcode:NNT \c_group_begin_token #1
+              { \int_incr:N \l_@@_v_nesting_int }
+            \@@_grab_v_aux_put:N #1
+            \@@_grab_v_bgroup_loop:
+          }
+      }
+      { \@@_grab_v_aux_abort:n {#1} #1 }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_v_aux_catcodes:}
+% \begin{macro}{\@@_grab_v_aux_abort:n}
+%   The approach for short verbatim arguments is to make the end-line
+%   character a macro parameter character: this is forbidden by the
+%   rest of the code. Then the error branch can check what caused the
+%   bail out and give the appropriate error message.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_v_aux_catcodes:
+  {
+    \cs_set_eq:NN \do \char_set_catcode_other:N
+    \dospecials
+    \tex_endlinechar:D = `\^^M \scan_stop:
+    \bool_if:NTF \l_@@_long_bool
+      { \char_set_catcode_other:n { \tex_endlinechar:D } }
+      { \char_set_catcode_parameter:n { \tex_endlinechar:D } }
+  }
+\cs_new_protected:Npn \@@_grab_v_aux_abort:n #1
+  {
+    \@@_grab_v_group_end:
+    \exp_after:wN \exp_after:wN \exp_after:wN
+      \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-newline }
+          { \@@_environment_or_command: }
+          { \tl_to_str:N \l_@@_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \@@_add_arg:o \c_novalue_tl
+      }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-tokenized }
+          { \@@_environment_or_command: }
+          { \tl_to_str:N \l_@@_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \@@_add_arg:o \c_novalue_tl
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_v_aux_put:N}
+%   Storing one token in the collected argument. Most tokens are
+%   converted to category code $12$, with the exception of active
+%   characters, and spaces (not sure what should be done for those).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_v_aux_put:N #1
+  {
+    \tl_put_right:Nx \l_@@_v_arg_tl
+      {
+        \token_if_active:NTF #1
+          { \exp_not:N #1 } { \token_to_str:N #1 }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_grab_v_token_if_char:NTF}
+%   This function assumes that the escape character is printable.
+%   Then the string representation of control sequences is at least
+%   two characters, and \cs{str_tail:n} only removes the escape
+%   character. Macro parameter characters are doubled by
+%   \cs{tl_to_str:n}, and will also yield a non-empty result,
+%   hence are not considered as characters.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_grab_v_token_if_char:NTF #1
+  { \str_if_eq:eeTF { } { \str_tail:n {#1} } }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_add_arg:n, \@@_add_arg:V, \@@_add_arg:o, \@@_add_arg:x}
+%   When an argument is found it is stored, then further arguments are
+%   grabbed by calling \cs{l_@@_signature_tl}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_add_arg:n #1
+  {
+    \tl_put_right:Nn \l_@@_args_tl { {#1} }
+    \l_@@_signature_tl \@@_run_code:
+  }
+\cs_generate_variant:Nn \@@_add_arg:n { V , o , x }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Grabbing arguments expandably}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_D:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_D:NNNwNNn}
+% \begin{macro}[EXP]{\@@_expandable_grab_D:NNNwNNnnn}
+% \begin{macro}[EXP]{\@@_expandable_grab_D:Nw}
+% \begin{macro}[EXP]{\@@_expandable_grab_D:nnNNNwNN}
+%   The first step is to grab the first token or group. The generic grabbers
+%   \cs{\meta{function}}\verb*| | and \cs{\meta{function}}\verb*| | are just after \cs{q_@@}, we go and find
+%   them (and use the long one).
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_D:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_D:NNNwNNn #1 \q_@@ #2 #3 } }
+%    \end{macrocode}
+%   We then wish to test whether |#7|, which we just grabbed, is exactly |#2|.
+%   A preliminary test is whether their string representations coincide, then
+%   expand the only grabber function we have, |#1|, once: the two strings below
+%   are equal if and only if |#7| matches |#2| exactly.\footnote{It is obvious
+%   that if \texttt{\#7} matches \texttt{\#2} then the strings are equal. We
+%   must check the converse. The right-hand-side of \cs{str_if_eq:onTF} does
+%   not end with \texttt{\#3}, implying that the grabber function took
+%   everything as its arguments. The first brace group can only be empty if
+%   \texttt{\#7} starts with \texttt{\#2}, otherwise the brace group preceding
+%   \texttt{\#7} would not vanish. The third brace group is empty, thus the
+%   \cs{q_@@} that was used by our grabber \texttt{\#1} must be the one
+%   that we inserted (not some token in \texttt{\#7}), hence the second brace
+%   group contains the end of \texttt{\#7} followed by \texttt{\#2}. Since this
+%   is \texttt{\#2} on the right-hand-side, and no brace can be lost there,
+%   \texttt{\#7} must contain nothing else than its leading \texttt{\#2}.}
+%   The preliminary test is needed as |#7| could validly contain
+%   \tn{par} (because a later mandatory argument could be long) and our
+%   grabber may be short.  If
+%   |#7| does not match |#2|, then the optional argument is missing, we use the
+%   default |-NoValue-|, and put back the argument |#7| in the input stream.
+%
+%   If it does match, then interesting things need to be done. We will grab the
+%   argument piece by piece, with the following pattern:
+%   \begin{quote}
+%     \meta{grabber} \Arg{tokens} \\
+%     ~~\cs{q_nil} \Arg{piece 1} \meta{piece 2} \cs{ERROR} \cs{q_@@}\\
+%     ~~\cs{q_nil} \meta{input stream}
+%   \end{quote}
+%   The \meta{grabber} will find an opening delimiter in \meta{piece 2}, take
+%   the \cs{q_@@} as a second delimiter, and find more material delimited
+%   by the closing delimiter in the \meta{input stream}. We then move the part
+%   before the opening delimiter from \meta{piece 2} to \meta{piece 1}, and the
+%   material taken from the \meta{input stream} to the \meta{piece 2}. Thus,
+%   the argument moves gradually from the \meta{input stream} to the
+%   \meta{piece 2}, then to the \meta{piece 1} when we have made sure to find
+%   all opening and closing delimiters. This two-step process ensures that
+%   nesting works: the number of opening delimiters minus closing delimiters in
+%   \meta{piece 1} is always equal to the number of closing delimiters in
+%   \meta{piece 2}. We stop grabbing arguments once the \meta{piece 2} contains
+%   no opening delimiter any more, hence the balance is reached, and the final
+%   argument is \meta{piece 1} \meta{piece 2}.
+%   The indirection via \cs{@@_tmp:w} allows to insert |-NoValue-| expanded.
+%    \begin{macrocode}
+\cs_set_protected:Npn \@@_tmp:w #1
+  {
+    \cs_new:Npn \@@_expandable_grab_D:NNNwNNn ##1##2##3##4 \q_@@ ##5##6##7
+      {
+        \str_if_eq:nnTF {##2} {##7}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q_@@ ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \@@_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q_@@ ##5##6 }
+              \q_nil { } ##2 \ERROR \q_@@ \ERROR
+          }
+          { ##4 {#1} \q_@@ ##5 ##6 {##7} }
+      }
+  }
+\exp_args:No \@@_tmp:w { \c_novalue_tl }
+%    \end{macrocode}
+%   At this stage, |#7| is \cs{q_nil} \Arg{piece 1} \meta{more for piece 1},
+%   and we want to concatenate all that, removing \cs{q_nil}, and keeping the
+%   opening delimiter |#2|. Simply use \cs{use_ii:nn}. Also, |#8| is
+%   \meta{remainder of piece 2} \cs{ERROR}, and |#9| is \cs{ERROR} \meta{more
+%   for piece 2}. We concatenate those, replacing the two \cs{ERROR} by the
+%   closing delimiter |#3|.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_D:NNNwNNnnn #1#2#3#4 \q_@@ #5#6#7#8#9
+  {
+    \exp_args:Nof \@@_expandable_grab_D:nnNNNwNN
+      { \use_ii:nn #7 #2 }
+      { \@@_expandable_grab_D:Nw #3 \exp_stop_f: #8 #9 }
+    #1#2#3 #4 \q_@@ #5 #6
+  }
+\cs_new:Npn \@@_expandable_grab_D:Nw #1#2 \ERROR \ERROR { #2 #1 }
+%    \end{macrocode}
+%   Armed with our two new \meta{pieces}, we are ready to loop. However, we
+%   must first see if \meta{piece 2} (here |#2|) contains any opening
+%   delimiter |#4|. Again, we expand |#3|, this time removing its whole output
+%   with \cs{use_none:nnn}. The test is similar to \cs{tl_if_in:nnTF}. The
+%   token list is empty if and only if |#2| does not contain the opening
+%   delimiter. In that case, we are done, and put the argument (from which we
+%   remove a spurious pair of delimiters coming from how we started the loop).
+%   Otherwise, we go back to looping with
+%   \cs{@@_expandable_grab_D:NNNwNNnnn}. The code to deal with brace stripping
+%   is much the same as for the non-expandable case.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_D:nnNNNwNN #1#2#3#4#5#6 \q_@@ #7#8
+  {
+    \exp_args:No \tl_if_empty:oTF
+      { #3 { \use_none:nnn } #2 \q_@@ #5 #4 \q_@@ #5 }
+      {
+        \tl_if_blank:oTF { \use_none:nn #1#2 }
+          { \@@_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          {
+            \str_if_eq:eeTF
+              { \exp_not:o { \use_none:nn #1#2 } }
+              { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } }
+              { \@@_put_arg_expandable:ow { \use_iii:nnn #1#2 } }
+              { \@@_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          }
+            #6 \q_@@ #7 #8
+      }
+      {
+        #3
+          { \@@_expandable_grab_D:NNNwNNnnn #3#4#5#6 \q_@@ #7 #8 }
+          \q_nil {#1} #2 \ERROR \q_@@ \ERROR
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_D_alt:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_D_alt:NNwNNn}
+% \begin{macro}[EXP]{\@@_expandable_grab_D_alt:Nwn}
+%   When the delimiters are identical, nesting is not possible and a simplified
+%   approach is used. The test concept here is the same as for the case where
+%   the delimiters are different but there cannot be any nesting.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_D_alt:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_D_alt:NNwNNn #1 \q_@@ #2 #3 } }
+\cs_set_protected:Npn \@@_tmp:w #1
+  {
+    \cs_new:Npn \@@_expandable_grab_D_alt:NNwNNn ##1##2##3 \q_@@ ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \@@_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q_@@ }
+              ##6 \ERROR
+          }
+          { ##3 {#1} \q_@@ ##4 ##5 {##6} }
+      }
+  }
+\exp_args:No \@@_tmp:w { \c_novalue_tl }
+\cs_new:Npn \@@_expandable_grab_D_alt:NNwn #1#2#3 \q_@@ #4
+  {
+    \tl_if_blank:oTF { \use_none:n #4 }
+      { \@@_put_arg_expandable:ow { \use_none:n #4 } }
+      {
+        \str_if_eq:eeTF
+          { \exp_not:o { \use_none:n #4 } }
+          { { \exp_not:o { \use_ii:nnn #4 \q_nil } } }
+          { \@@_put_arg_expandable:ow { \use_ii:nn #4 } }
+          { \@@_put_arg_expandable:ow { \use_none:n #4 } }
+      }
+        #3 \q_@@ #1 #2
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_E:w, \@@_expandable_grab_E_long:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_aux:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_test:nnw}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_loop:nnnNNw}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_find:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_find:nnw}
+% \begin{macro}[EXP]{\@@_expandable_grab_E_end:nnw}
+%   We keep track of long/short by placing the appropriate grabber as
+%   the third token after \cs{q_@@}; it is eventually removed by the
+%   \texttt{end:nnw} auxiliary.  The \texttt{aux:w} auxiliary will be
+%   called repeatedly with two arguments: the set
+%   of pairs \meta{parser} \meta{token}, and the set of arguments found
+%   so far (initially all |{-NoValue-}|).  At each step, grab what
+%   follows in the input stream then call the \texttt{loop:nnnNNw}
+%   auxiliary to compare it with each possible embellishment in turn.
+%   This auxiliary's |#1| is what was found in the input, |#2| collects
+%   \meta{parser} \meta{token} pairs that did not match, |#3| collects
+%   the corresponding arguments found previously, |#4| and |#5| is the
+%   current pair, |#6| is the remaining pairs, |#7| is empty or two
+%   \cs{q_nil}, and |#8| is the current argument.  If none of the pairs
+%   matched (determined by \cs{quark_if_nil:NTF}) then call the
+%   \texttt{end} auxiliary to stop looking for embellishments,
+%   remembering to put what was grabbed in the input back where it
+%   belongs, and storing the arguments found just before \cs{q_@@}.  If
+%   the current argument |#8| is not |-NoValue-| or if the input |#1|
+%   does not match |#5| (see \texttt{t}-type arguments below for a
+%   similar \cs{str_if_eq:onTF} test) then carry on the loop.
+%   Otherwise, we found a new embellishment: grab the corresponding
+%   argument in the input using the \texttt{find:w} auxiliary.  To avoid
+%   losing braces around that auxiliary's argument we include a
+%   space, which will be eliminated in the next loop through
+%   embellishments.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_E:w #1 \q_@@ #2#3
+  { \@@_expandable_grab_E_aux:w #1 \q_@@ #2 #3 #3 }
+\cs_new:Npn \@@_expandable_grab_E_long:w #1 \q_@@ #2#3
+  { \@@_expandable_grab_E_aux:w #1 \q_@@ #2 #3 #2 }
+\cs_new:Npn \@@_expandable_grab_E_aux:w #1 \q_@@ #2#3#4
+  { #2 { \@@_expandable_grab_E_test:nnw #1 \q_@@ #2 #3 #4 } }
+\cs_new:Npn \@@_expandable_grab_E_test:nnw #1#2#3 \q_@@ #4#5#6#7
+  {
+    \@@_expandable_grab_E_loop:nnnNNw {#7} { } { }
+      #1 \q_nil \q_nil \q_nil \q_mark #2 \q_nil
+    #3 \q_@@ #4 #5 #6
+  }
+\cs_new:Npn \@@_expandable_grab_E_loop:nnnNNw
+    #1#2#3#4#5#6 \q_nil #7 \q_mark #8
+  {
+    \quark_if_nil:NTF #4
+      { \@@_expandable_grab_E_end:nnw {#1} {#3} }
+      {
+        \tl_if_novalue:nTF {#8}
+          { \str_if_eq:onTF { #4 { } #1 #5 } {#5} }
+          { \use_ii:nn }
+            { \@@_expandable_grab_E_find:w { #2 #4 #5 #6 } {#3} ~ }
+            {
+              \@@_expandable_grab_E_loop:nnnNNw
+                {#1} { #2 #4 #5 } { #3 {#8} }
+                #6 \q_nil #7 \q_mark
+            }
+      }
+  }
+\cs_new:Npn \@@_expandable_grab_E_find:w #1 \q_@@ #2#3#4
+  { #4 { \@@_expandable_grab_E_find:nnw #1 \q_@@ #2 #3 #4 } }
+\cs_new:Npn \@@_expandable_grab_E_find:nnw #1#2#3 \q_nil #4 \q_@@ #5#6#7#8
+  { \@@_expandable_grab_E_aux:w {#1} { #2 {#8} #3 } #4 \q_@@ #5 #6 #7 }
+\cs_new:Npn \@@_expandable_grab_E_end:nnw #1#2#3 \q_@@ #4#5#6
+  { #3 #2 \q_@@ #4 #5 {#1} }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_m:w, \@@_expandable_grab_m_long:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_m_aux:wNn}
+%   The mandatory case is easy: find the auxiliary after the \cs{q_@@},
+%   and use it directly to grab the argument, then correctly position
+%   the argument before \cs{q_@@}.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_m:w #1 \q_@@ #2#3
+  { #3 { \@@_expandable_grab_m_aux:wNn #1 \q_@@ #2 #3 } }
+\cs_new:Npn \@@_expandable_grab_m_long:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_m_aux:wNn #1 \q_@@ #2 #3 } }
+\cs_new:Npn \@@_expandable_grab_m_aux:wNn #1 \q_@@ #2#3#4
+  { #1 {#4} \q_@@ #2 #3 }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_R:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_R_aux:NNNwNNn}
+%   Much the same as for the \texttt{D}-type argument, with only the lead-off
+%   function varying.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_R:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_R_aux:NNNwNNn #1 \q_@@ #2#3 } }
+\cs_set_protected:Npn \@@_tmp:w #1
+  {
+    \cs_new:Npn \@@_expandable_grab_R_aux:NNNwNNn ##1##2##3##4 \q_@@ ##5##6##7
+      {
+        \str_if_eq:nnTF {##7} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q_@@ ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \@@_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q_@@ ##5##6 }
+              \q_nil { } ##2 \ERROR \q_@@ \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##5 } }
+              { \tl_to_str:n {##2} }
+            ##4 {#1} \q_@@ ##5 ##6 {##7}
+          }
+      }
+  }
+\exp_args:No \@@_tmp:w { \c_novalue_tl }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_R_alt:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_R_alt_aux:NNwNNn}
+%   When the delimiters are identical, nesting is not possible and a simplified
+%   approach is used. The test concept here is the same as for the case where
+%   the delimiters are different.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_R_alt:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_R_alt_aux:NNwNNn #1 \q_@@ #2#3 } }
+\cs_set_protected:Npn \@@_tmp:w #1
+  {
+    \cs_new:Npn \@@_expandable_grab_R_alt_aux:NNwNNn ##1##2##3 \q_@@ ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \@@_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q_@@ }
+              ##6 \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##4 } }
+              { \tl_to_str:n {##2} }
+            ##3 {#1} \q_@@ ##4 ##5 {##6}
+          }
+      }
+  }
+\exp_args:No \@@_tmp:w { \c_novalue_tl }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_expandable_grab_t:w}
+% \begin{macro}[EXP]{\@@_expandable_grab_t_aux:NNwn}
+%   As for a \texttt{D}-type argument, here we compare the grabbed tokens using
+%   the only parser we have in order to work out if |#2| is exactly equal to
+%   the output of the grabber.
+%    \begin{macrocode}
+\cs_new:Npn \@@_expandable_grab_t:w #1 \q_@@ #2#3
+  { #2 { \@@_expandable_grab_t_aux:NNwn #1 \q_@@ #2 #3 } }
+\cs_new:Npn \@@_expandable_grab_t_aux:NNwn #1#2#3 \q_@@ #4#5#6
+  {
+    \str_if_eq:onTF { #1 { } #6 #2 } {#2}
+      { #3 { \BooleanTrue } \q_@@ #4 #5 }
+      { #3 { \BooleanFalse } \q_@@ #4 #5 {#6} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+%   {\@@_put_arg_expandable:nw, \@@_put_arg_expandable:ow}
+%   A useful helper, to store arguments when they are ready.
+%    \begin{macrocode}
+\cs_new:Npn \@@_put_arg_expandable:nw #1#2 \q_@@ { #2 {#1} \q_@@ }
+\cs_generate_variant:Nn \@@_put_arg_expandable:nw { o }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Argument processors}
+%
+% \begin{macro}{\@@_bool_reverse:N}
+%   A simple reversal.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_bool_reverse:N #1
+  {
+    \bool_if:NTF #1
+      { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+      { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_split_list_seq, \l_@@_split_list_tl}
+% \begin{macro}{\@@_split_list:nn}
+% \begin{macro}{\@@_split_list_multi:nn, \@@_split_list_multi:nV}
+% \begin{macro}{\@@_split_list_single:Nn}
+%   Splitting can take place either at a single token or at a longer
+%   identifier. To deal with single active tokens, a two-part procedure is
+%   needed.
+%    \begin{macrocode}
+\seq_new:N \l_@@_split_list_seq
+\tl_new:N \l_@@_split_list_tl
+\cs_new_protected:Npn \@@_split_list:nn #1#2
+  {
+    \tl_if_single:nTF {#1}
+      {
+        \token_if_cs:NTF #1
+          { \@@_split_list_multi:nn {#1} {#2} }
+          { \@@_split_list_single:Nn #1 {#2} }
+      }
+      { \@@_split_list_multi:nn {#1} {#2} }
+  }
+\cs_new_protected:Npn \@@_split_list_multi:nn #1#2
+  {
+    \seq_set_split:Nnn \l_@@_split_list_seq {#1} {#2}
+    \tl_clear:N \ProcessedArgument
+    \seq_map_inline:Nn \l_@@_split_list_seq
+      { \tl_put_right:Nn \ProcessedArgument { {##1} } }
+  }
+\cs_generate_variant:Nn \@@_split_list_multi:nn { nV }
+\group_begin:
+\char_set_catcode_active:N \^^@
+\cs_new_protected:Npn \@@_split_list_single:Nn #1#2
+  {
+    \tl_set:Nn \l_@@_split_list_tl {#2}
+    \group_begin:
+    \char_set_lccode:nn { `\^^@ } { `#1 }
+    \tex_lowercase:D
+      {
+        \group_end:
+        \tl_replace_all:Nnn \l_@@_split_list_tl { ^^@ }
+      }   {#1}
+     \@@_split_list_multi:nV {#1} \l_@@_split_list_tl
+   }
+\group_end:
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{variable}
+%
+% \begin{macro}{\@@_split_argument:nnn}
+% \begin{macro}{\@@_split_argument_aux:nnnn}
+% \begin{macro}[EXP]{\@@_split_argument_aux:n}
+% \begin{macro}[rEXP]{\@@_split_argument_aux:wn}
+%   Splitting to a known number of items is a special version of splitting
+%   a list, in which the limit is hard-coded and where there will always be
+%   exactly the correct number of output items. An auxiliary function is
+%   used to save on working out the token list length several times.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_split_argument:nnn #1#2#3
+  {
+    \@@_split_list:nn {#2} {#3}
+    \exp_args:Nf \@@_split_argument_aux:nnnn
+      { \tl_count:N \ProcessedArgument }
+      {#1} {#2} {#3}
+  }
+\cs_new_protected:Npn \@@_split_argument_aux:nnnn #1#2#3#4
+  {
+    \int_compare:nNnF {#1} = { #2 + 1 }
+      {
+        \int_compare:nNnTF {#1} > { #2 + 1 }
+          {
+            \tl_set:Nx \ProcessedArgument
+              {
+                \exp_last_unbraced:NnNo
+                  \@@_split_argument_aux:n
+                  { #2 + 1 }
+                  \use_none_delimit_by_q_stop:w
+                  \ProcessedArgument
+                  \q_stop
+              }
+            \__kernel_msg_error:nnxxx { ltcmd } { split-excess-tokens }
+              { \tl_to_str:n {#3} } { \int_eval:n { #2 + 1 } }
+              { \tl_to_str:n {#4} }
+          }
+          {
+            \tl_put_right:Nx \ProcessedArgument
+              {
+                \prg_replicate:nn { #2 + 1 - (#1) }
+                  { { \exp_not:V \c_novalue_tl } }
+              }
+          }
+      }
+  }
+%    \end{macrocode}
+%   Auxiliaries to leave exactly the correct number of arguments in
+%   \cs{ProcessedArgument}.
+%    \begin{macrocode}
+\cs_new:Npn \@@_split_argument_aux:n #1
+  { \prg_replicate:nn {#1} { \@@_split_argument_aux:wn } }
+\cs_new:Npn \@@_split_argument_aux:wn #1 \use_none_delimit_by_q_stop:w #2
+  {
+    \exp_not:n { {#2} }
+    #1
+    \use_none_delimit_by_q_stop:w
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_trim_spaces:n}
+%   This one is almost trivial.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_trim_spaces:n #1
+  { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } }
+%    \end{macrocode}
+% \end{macro}
+%
+% \subsection{Access to the argument specification}
+%
+% \begin{macro}{\@@_get_arg_spec_error:N, \@@_get_arg_spec_error:n}
+% \begin{macro}{\@@_get_arg_spec_error_aux:n}
+%   Provide an informative error when trying to get the argument
+%   specification of a non-\pkg{xparse} command or environment.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_get_arg_spec_error:N #1
+  {
+    \bool_set_false:N \l_@@_environment_bool
+    \tl_set:Nn \l_@@_fn_tl {#1}
+    \@@_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 }
+  }
+\cs_new_protected:Npn \@@_get_arg_spec_error:n #1
+  {
+    \bool_set_true:N \l_@@_environment_bool
+    \str_set:Nx \l_@@_environment_str {#1}
+    \@@_get_arg_spec_error_aux:n
+      { \cs_if_exist:cTF { \l_@@_environment_str } }
+  }
+\cs_new_protected:Npn \@@_get_arg_spec_error_aux:n #1
+  {
+    #1
+      {
+        \__kernel_msg_error:nnx { ltcmd } { non-xparse }
+          { \@@_environment_or_command: }
+      }
+      {
+        \__kernel_msg_error:nnx { ltcmd } { unknown }
+          { \@@_environment_or_command: }
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_arg_spec:NTF}
+%   If the command is not an \pkg{xparse} command, complain.  If it is,
+%   its second \enquote{item} is the argument specification.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_get_arg_spec:NTF #1#2#3
+  {
+    \@@_cmd_if_xparse:NTF #1
+      {
+        \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+        #2
+      }
+      {#3}
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% Rolling forward from 2020-10-01 is tricky because the entire |ltcmd|
+% module is new, but the user-level commands have the same name, so only
+% these will clash.  To work around that, in |latexrelease| mode we will
+% (temporarily) disable \cs{__kernel_chk_if_free_cs:N} for this final
+% part of the code, then restore at the end.
+%    \begin{macrocode}
+%<latexrelease>\cs_new_eq:NN \@@_chk_if_free_cs:N \__kernel_chk_if_free_cs:N
+%<latexrelease>\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \use_none:n
+%    \end{macrocode}
+%
+% \begin{variable}{\ArgumentSpecification}
+%    \begin{macrocode}
+\tl_new:N \ArgumentSpecification
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_get_arg_spec:N}
+% \begin{macro}{\@@_get_arg_spec:n}
+%   Recovering the argument specification is now trivial.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_get_arg_spec:N #1
+  {
+    \@@_get_arg_spec:NTF #1 { }
+      { \@@_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \@@_get_arg_spec:n #1
+  {
+    \exp_args:Nc \@@_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { }
+      { \@@_get_arg_spec_error:n {#1} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_arg_spec:N}
+% \begin{macro}{\@@_show_arg_spec:n}
+%   Showing the argument specification simply means finding it and then
+%   calling the \cs{tl_show:N} function.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_show_arg_spec:N #1
+  {
+    \@@_get_arg_spec:NTF #1
+      { \tl_show:N \ArgumentSpecification }
+      { \@@_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \@@_show_arg_spec:n #1
+  {
+    \exp_args:Nc \@@_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { \tl_show:N \ArgumentSpecification }
+      { \@@_get_arg_spec_error:n {#1} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Utilities}
+%
+% \begin{macro}{\@@_check_definable:nNT, \@@_check_definable_aux:nN}
+%   Check that a token list is appropriate as a first argument of
+%   \cs{NewDocumentCommand} and similar functions and otherwise
+%   produce an error.  First trim whitespace to allow for spaces around
+%   the actual command to be defined.  If the result has multiple
+%   tokens, it is not a valid argument.  The single token is a control
+%   sequence exactly if its string representation has more than one
+%   character (using \cs{token_to_str:N} rather than \cs{tl_to_str:n}
+%   to avoid problems with macro parameter characters, and setting
+%   \cs{tex_escapechar:D} to prevent it from being non-printable).
+%   Finally, check for an active character: this is done by lowercasing
+%   the token to fix its character code (arbitrarily to that of~|?|)
+%   and comparing the result to an active~|?|.  Both control sequences
+%   and active characters are valid arguments, and non-active character
+%   tokens are not.  In all cases, the group opened to keep assignments
+%   local must be closed.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_check_definable:nNT #1
+  { \tl_trim_spaces_apply:nN {#1} \@@_check_definable_aux:nN }
+\group_begin:
+  \char_set_catcode_active:n { `? }
+  \cs_new_protected:Npn \@@_check_definable_aux:nN #1#2
+    {
+      \group_begin:
+      \tl_if_single_token:nTF {#1}
+        {
+          \int_set:Nn \tex_escapechar:D { 92 }
+          \exp_args:Nx \tl_if_empty:nTF
+            { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+            {
+              \exp_args:Nx \char_set_lccode:nn
+                { ` \str_head:n {#1} } { `? }
+              \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { ? }
+                { \group_end: \use_iii:nnn }
+                { \group_end: \use_i:nnn }
+            }
+            { \group_end: \use_iii:nnn }
+        }
+        { \group_end: \use_ii:nnn }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-definable }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-one-token }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+    }
+\group_end:
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_token_if_cs:NTF}
+%   Based on the definition of \cs{@@_check_definable_aux:nN} above, but
+%   only checks for an actual control sequence (\emph{i.e.},
+%   \cs[no-index]{\meta{anything}}). \cs{tex_escapechar:D} is
+%   temporarily changed to a known value and then it checks if
+%   |\string#1| contains more than one character: if it does, it's a
+%   control sequence.  This test differs from \cs{token_if_cs:NTF} for
+%   example in \verb|\token_if_cs:NTF \c_group_begin_token {T}{F}|,
+%   where \cs{token_if_cs:NTF} returns false.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_token_if_cs:NTF #1
+  {
+    \group_begin:
+      \int_set:Nn \tex_escapechar:D { 92 }
+      \exp_args:Nx \tl_if_empty:nTF
+          { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+        { \group_end: \use_ii:nn }
+        { \group_end: \use_i:nn }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_tl_mapthread_function:NNN, \@@_tl_mapthread_function:nnN}
+% \begin{macro}{\@@_tl_mapthread_loop:w}
+%   Analogue of \cs{seq_mapthread_function:NNN} for token lists.
+%    \begin{macrocode}
+\cs_new:Npn \@@_tl_mapthread_function:NNN #1#2#3
+  {
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN \@@_tl_mapthread_loop:w
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN #3
+    \exp_after:wN #1
+    \exp_after:wN \q_recursion_tail
+    \exp_after:wN \q_mark
+    #2
+    \q_recursion_tail
+    \q_recursion_stop
+  }
+\cs_new:Npn \@@_tl_mapthread_function:nnN #1#2#3
+  {
+    \@@_tl_mapthread_loop:w #3
+      #1 \q_recursion_tail \q_mark
+      #2 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new:Npn \@@_tl_mapthread_loop:w #1#2#3 \q_mark #4
+  {
+    \quark_if_recursion_tail_stop:n {#2}
+    \quark_if_recursion_tail_stop:n {#4}
+    #1 {#2} {#4}
+    \@@_tl_mapthread_loop:w #1#3 \q_mark
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_cmd_if_xparse:NTF}
+% \begin{macro}{\@@_cmd_if_xparse_aux:N}
+%   To determine whether the command is an \pkg{xparse} command check
+%   that its |arg_spec| is empty (this also excludes non-macros) and
+%   that its |replacement_spec| starts with either \cs{@@_start:nNNnnn}
+%   (non-expandable command) or \cs{@@_start_expandable:nNNNNn}
+%   (expandable command) or \cs{@@_start_env:nnnnn} (environment).
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_cmd_if_xparse:NTF #1
+  {
+    \exp_args:Nf \str_case_e:nnTF
+      {
+        \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 }
+          {
+            \exp_last_unbraced:Nf \@@_cmd_if_xparse_aux:w
+              { \cs_replacement_spec:N #1 } ~ \q_stop
+          }
+      }
+      {
+        { \token_to_str:N \@@_start:nNNnnn } { }
+        { \token_to_str:N \@@_start_expandable:nNNNNn } { }
+        { \token_to_str:N \@@_start_env:nnnnn } { }
+      }
+  }
+\cs_new:Npn \@@_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1}
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_peek_nonspace:NTF, \@@_peek_nonspace_remove:NTF, \@@_peek_nonspace_aux:nNNTF}
+%   Collect spaces in a loop, and put the collected spaces back in the
+%   false branch of a call to \cs{peek_meaning:NTF} or
+%   \cs{peek_meaning_remove:NTF}.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_nonspace:NTF
+  { \@@_peek_nonspace_aux:nNNTF { } \@@_peek_meaning:NTF }
+\cs_new_protected:Npn \@@_peek_nonspace_remove:NTF
+  { \@@_peek_nonspace_aux:nNNTF { } \@@_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \@@_peek_nonspace_aux:nNNTF #1#2#3#4#5
+  {
+    \peek_meaning_remove:NTF \c_space_token
+      { \@@_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} }
+      { #2 #3 { #4 } { #5 #1 } }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_peek_meaning:NTF, \@@_peek_meaning_remove:NTF}
+% \begin{macro}{\@@_peek_cs_check_equal:NNN, \@@_peek_meaning_aux:NNTF, \@@_peek_true_remove:NNw}
+%   Peek ahead for a token with a given meaning.  In case the search
+%   token is a control sequence, also check that the \meta{csname} is
+%   the same as the control sequence peeked at.  This extra verification
+%   is necessary when the command is delimited by control sequence tokens
+%   (as opposed to character tokens), and we want the the exact same
+%   control sequence to match.
+%    \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_meaning:NTF
+  { \@@_peek_meaning_aux:NNTF \c_false_bool }
+\cs_new_protected:Npn \@@_peek_meaning_remove:NTF
+  { \@@_peek_meaning_aux:NNTF \c_true_bool }
+\cs_new_protected:Npn \@@_peek_meaning_aux:NNTF #1#2#3#4
+  {
+    \tl_set:Nn \l_@@_tmpa_tl {#3}
+    \tl_set:Nn \l_@@_tmpb_tl {#4}
+    \peek_meaning:NTF #2
+      {
+        \token_if_eq_meaning:NNTF #2 \c_group_begin_token
+          { \@@_peek_true_remove:Nw #1 }
+          {
+            \@@_token_if_cs:NTF #2
+              { \@@_peek_cs_check_equal:NNN #1 #2 }
+              { \@@_peek_true_remove:Nw #1 }
+          }
+      }
+      { \l_@@_tmpb_tl }
+  }
+\cs_new_protected:Npn \@@_peek_cs_check_equal:NNN #1#2#3
+  {
+    \str_if_eq:nnTF {#2} {#3}
+      { \@@_peek_true_remove:Nw #1 }
+      { \l_@@_tmpb_tl }
+    #3
+  }
+\cs_new_protected:Npn \@@_peek_true_remove:Nw #1
+  {
+    \bool_if:NTF #1
+      {
+        \tex_afterassignment:D \l_@@_tmpa_tl
+        \cs_set_eq:NN \@@_tmp:w
+      }
+      { \l_@@_tmpa_tl }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Messages}
+%
+% \begin{variable}{\c_@@_ignore_def_tl}
+%    \begin{macrocode}
+\tl_const:Nn \c_@@_ignore_def_tl
+  { \\ \\ LaTeX~will~ignore~this~entire~definition. }
+%    \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_environment_or_command:}
+%   Two texts used in several messages.
+%    \begin{macrocode}
+\cs_new:Npn \@@_environment_or_command:
+  {
+    \bool_if:NTF \l_@@_environment_bool
+      { environment ~ ' \l_@@_environment_str ' }
+      {
+        command ~ '
+        \exp_args:Nf \tl_trim_spaces:n
+          { \exp_after:wN \token_to_str:N \l_@@_fn_tl }
+        '
+      }
+  }
+%    \end{macrocode}
+% \end{macro}
+%
+% Some messages intended as errors when defining commands/environments.
+%    \begin{macrocode}
+\__kernel_msg_new:nnnn { ltcmd } { arg-after-body }
+  { In~the~definition~of~#1,~b~(body)~argument~must~be~last. }
+  {
+    The~'body'~argument~type~is~followed~by~'#2'~in~the~argument~
+    specification~of~the~#1.~This~is~not~allowed.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { bad-arg-spec }
+  { Bad~argument~specification~'#2'~for~#1. }
+  {
+    The~argument~specification~provided~was~not~valid:~
+    one~or~more~mandatory~pieces~of~information~were~missing.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-already-defined }
+  { Command~'#1'~already~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-not-yet-defined }
+  { Command ~'#1'~not~yet~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~was~never~defined.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-already-defined }
+  { Environment~'#1'~already~defined! }
+  {
+    You~have~used~\NewDocumentEnvironment
+    with~an~environment~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-not-yet-defined }
+  { Environment~'#1'~not~yet~defined! }
+  {
+    You~have~used~\RenewDocumentEnvironment
+    with~an~environment~that~was~never~defined.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { expandable-ending-optional }
+  {
+    Argument~specification~'#2'~for~expandable~command~'#1'~
+    ends~with~optional~argument.
+  }
+  {
+    Expandable~commands~must~have~a~final~mandatory~argument~
+    (or~no~arguments~at~all).~You~cannot~have~a~terminal~optional~
+    argument~with~expandable~commands.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { inconsistent-long }
+  { Inconsistent~long~arguments~for~expandable~command~'#1'. }
+  {
+    The~arguments~for~an~expandable~command~must~not~involve~short~
+    arguments~after~long~arguments.~You~have~tried~to~mix~the~two~types.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-command-arg }
+  { Argument~type~'#2'~not~available~for~#1. }
+  {
+    The~letter~'#2'~can~only~be~used~in~environment~argument~
+    specifications,~not~for~commands.
+    \\ \\
+    LaTeX~will~ignore~this~entire~definition.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-expandable-argument-type }
+  { Argument~type~'#2'~not~available~for~expandable~command~'#1'. }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-after-optional-expandably }
+  {
+    Argument~type~'#2'~not~available~after~optional~argument~
+    for~expandable~command~'#1'.
+  }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command~after~an~optional~argument.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-trailing-obey-spaces }
+  { Prefix~'!'~used~before~mandatory~argument~'#2'~of~#1. }
+  {
+    The~prefix~'!'~can~only~apply~to~trailing~optional~arguments.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-definable }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~is~a~character.~Perhaps~a~
+    backslash~is~missing?
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-one-token }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~contains~more~than~one~
+    token.~Perhaps~a~backslash~is~missing?
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-single-token }
+  {
+    Argument~delimiter~'#2'~for~the~#1~should~be~
+    a~single~non-space~token.
+  }
+  {
+    The~argument~specification~provided~was~not~valid:~in~a~place~
+    where~a~single~token~is~required,~LaTeX~found~'#2'.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { forbidden-implicit-group-token }
+  { Argument~delimiter~'#2'~for~the~#1~is~not~allowed. }
+  {
+    The~argument~specification~provided~was~not~valid:~the~implicit~
+    #3-group~token~'#2'~is~not~allowed~as~an~argument~delimiter.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { processor-in-expandable }
+  { Argument~processor~'>{#2}'~cannot~be~used~for~the~expandable~command~'#1'. }
+  {
+    The~argument~specification~for~#1~contains~a~processor~function:~
+    this~is~only~supported~for~standard~robust~commands.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { too-many-arguments }
+  { Too~many~arguments~in~argument~specification~'#2'~of~#1. }
+  {
+    The~argument~specification~provided~has~more~than~9~arguments.~
+    This~cannot~be~implemented.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { two-markers }
+  { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~#1. }
+  {
+    The~argument~specification~provided~has~two~markers~'#2'~applying~
+    to~the~same~argument;~these~are~redundant.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown-argument-type }
+  { Unknown~argument~type~'#2'~for~the~#1. }
+  {
+    The~letter~'#2'~does~not~specify~a~known~argument~type.
+    \c_@@_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { xparse-argument-type }
+  { Deprecated~argument~type~'#2'~for~the~#1~requires~xparse. }
+  {
+    The~letter~'#2'~specifies~a~known~argument~type~that~requires~
+    the~xparse~package.
+    \c_@@_ignore_def_tl
+  }
+%    \end{macrocode}
+%
+% Errors when using commands/environments.  The \texttt{if-boolean}
+% message is always used in expandable errors.  The
+% \texttt{loop-in-defaults} and \texttt{missing-required} messages can
+% be expandable or not expandable.
+%    \begin{macrocode}
+\__kernel_msg_new:nnn { ltcmd } { if-boolean }
+  { Invalid~use~\iow_char:N\\IfBooleanTF~{#1} }
+\__kernel_msg_new:nnnn { ltcmd } { loop-in-defaults }
+  { Defaults~of~#1~have~circular~dependency. }
+  {
+    The~default~values~of~two~or~more~arguments~of~the~#1~
+    depend~on~each~other~in~a~way~that~cannot~be~resolved.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { missing-required }
+  { Missing~required~argument~for~#1. }
+  {
+    The~current~#1~expects~an~argument~starting~with~'#2'.~
+    LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-xparse }
+  { \str_uppercase:n #1~not~defined~using~xparse. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~this~was~not~defined~using~xparse.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { split-excess-tokens }
+  { Too~many~'#1'~tokens~when~trying~to~split~argument. }
+  {
+    LaTeX~was~asked~to~split~the~input~'#3'~
+    at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~parts.~
+    There~were~too~many~'#1'~tokens.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown }
+  { Unknown~document~#1. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~it~is~not~defined.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-newline }
+  { Verbatim~argument~of~#1~ended~by~end~of~line. }
+  {
+    The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~
+    but~the~end~
+    of~the~current~line~has~been~reached.~You~may~have~forgotten~the~
+    closing~delimiter.
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-tokenized }
+  { The~verbatim~#1~cannot~be~used~inside~an~argument. }
+  {
+    The~#1~takes~a~verbatim~argument.~
+    It~may~not~appear~within~the~argument~of~another~function.~
+    It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } .
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+%    \end{macrocode}
+%
+% Intended more for information.
+%    \begin{macrocode}
+\__kernel_msg_new:nnn { ltcmd } { define-command }
+  {
+    Defining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { define-environment }
+  {
+    Defining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-command }
+  {
+    Redefining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-environment }
+  {
+    Redefining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { optional-mandatory }
+  {
+    Since~the~mandatory~argument~'#1'~has~the~same~delimiter~'#2'~
+    as~a~previous~optional~argument,~it~will~not~be~possible~to~
+    omit~all~optional~arguments~when~calling~this~command.
+  }
+\__kernel_msg_new:nnn { ltcmd } { unsupported-let }
+  {
+    The~command~'#1'~was~undefined~but~not~the~associated~commands~
+    '#1~code'~and/or~'#1~defaults'.~Maybe~you~tried~using~
+    \iow_char:N\\let.~This~may~lead~to~an~infinite~loop.
+  }
+%    \end{macrocode}
+%
+% \subsection{User functions}
+%
+% The user functions are more or less just the internal functions
+% renamed.
+%
+% \begin{macro}{\BooleanFalse}
+% \begin{macro}{\BooleanTrue}
+%   Design-space names for the Boolean values.
+%    \begin{macrocode}
+\cs_new_eq:NN \BooleanFalse \c_false_bool
+\cs_new_eq:NN \BooleanTrue  \c_true_bool
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\NewDocumentCommand}
+% \begin{macro}{\RenewDocumentCommand}
+% \begin{macro}{\ProvideDocumentCommand}
+% \begin{macro}{\DeclareDocumentCommand}
+%   The user macros are pretty simple wrappers around the internal ones.
+%   There is however a check that the first argument is a single token,
+%   possibly surrounded by spaces (hence the strange \cs{use:nnn}), and
+%   is definable.
+%    \begin{macrocode}
+\cs_new_protected:Npn \NewDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \NewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewDocumentCommand }
+          }
+          { \@@_declare_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \RenewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \@@_declare_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \ProvideDocumentCommand
+      { \cs_if_exist:NF #1 { \@@_declare_cmd:Nnn #1 {#2} {#3} } }
+ }
+\cs_new_protected:Npn \DeclareDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \DeclareDocumentCommand
+      { \@@_declare_cmd:Nnn #1 {#2} {#3} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\NewDocumentEnvironment}
+% \begin{macro}{\RenewDocumentEnvironment}
+% \begin{macro}{\ProvideDocumentEnvironment}
+% \begin{macro}{\DeclareDocumentEnvironment}
+%   Very similar for environments.
+%    \begin{macrocode}
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \__kernel_msg_error:nnx { ltcmd } { environment-already-defined } {#1} }
+      { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+      { \__kernel_msg_error:nnx { ltcmd } { environment-not-yet-defined } {#1} }
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  { \cs_if_exist:cF {#1} { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} } }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\NewExpandableDocumentCommand}
+% \begin{macro}{\RenewExpandableDocumentCommand}
+% \begin{macro}{\ProvideExpandableDocumentCommand}
+% \begin{macro}{\DeclareExpandableDocumentCommand}
+%   The expandable versions are essentially the same as the basic
+%   functions.  The strange \cs{use:nnn} is there in case |#1| is
+%   surrounded with spaces, as can happen with usual document catcodes
+%   in \cs{RenewExpandableDocumentCommand} |{| |\!| |}| \ldots{}
+%    \begin{macrocode}
+\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \NewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewExpandableDocumentCommand }
+          }
+          { \@@_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewExpandableDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \RenewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \@@_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewExpandableDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideExpandableDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \ProvideExpandableDocumentCommand
+      {
+        \cs_if_exist:NF #1
+          { \@@_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+ }
+\cs_new_protected:Npn \DeclareExpandableDocumentCommand #1#2#3
+  {
+    \@@_check_definable:nNT {#1} \DeclareExpandableDocumentCommand
+      { \@@_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+  }
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\IfBooleanT, \IfBooleanF, \IfBooleanTF}
+%   The logical \meta{true} and \meta{false} statements are just the
+%   normal \cs{c_true_bool} and \cs{c_false_bool} so \cs{bool_if:NTF} is
+%   almost enough.  However, this code-level function blows up badly
+%   when passed invalid input.  We want \cs{IfBooleanTF} to accept a
+%   single (non-space) token equal to \cs{c_true_bool} or
+%   \cs{c_false_bool}, possibly surrounded by spaces.  If the input is
+%   blank or multiple items, jump to the error and pick the false
+%   branch.  If the input, ignoring spaces (we do this by omitting
+%   braces in the \cs{tl_if_single_token:nF} test), is not a single
+%   token then jump to the error as well.  It is then safe to compare
+%   the token to the two booleans, picking the appropriate branch.  If
+%   neither matches, we jump to the error as well.
+%    \begin{macrocode}
+\cs_new:Npn \IfBooleanTF #1
+  {
+    \tl_if_single:nF {#1}
+      { \prg_break:n { \use:n } }
+    \tl_if_single_token:nF #1
+      { \prg_break:n { \use:n } }
+    \token_if_eq_meaning:NNT #1 \c_true_bool
+      { \prg_break:n { \use_ii:nnn } }
+    \token_if_eq_meaning:NNT #1 \c_false_bool
+      { \prg_break:n { \use_iii:nnn } }
+    \prg_break:n { \use:n }
+    \prg_break_point:
+    {
+      \__kernel_msg_expandable_error:nnn { ltcmd } { if-boolean } {#1}
+      \use_ii:nn
+    }
+  }
+\cs_new:Npn \IfBooleanT #1#2 { \IfBooleanTF {#1} {#2} { } }
+\cs_new:Npn \IfBooleanF #1 { \IfBooleanTF {#1} { } }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfNoValueT, \IfNoValueF, \IfNoValueTF}
+%   Simple re-naming.
+%    \begin{macrocode}
+\cs_new_eq:NN \IfNoValueF  \tl_if_novalue:nF
+\cs_new_eq:NN \IfNoValueT  \tl_if_novalue:nT
+\cs_new_eq:NN \IfNoValueTF \tl_if_novalue:nTF
+%    \end{macrocode}
+% \end{macro}
+% \begin{macro}{\IfValueT, \IfValueF, \IfValueTF}
+%   Inverted logic.
+%    \begin{macrocode}
+\cs_new:Npn \IfValueF { \tl_if_novalue:nT }
+\cs_new:Npn \IfValueT { \tl_if_novalue:nF }
+\cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} }
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ProcessedArgument}
+%   Processed arguments are returned using this name, which is reserved
+%   here although the definition will change.
+%    \begin{macrocode}
+\tl_new:N \ProcessedArgument
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ReverseBoolean, \SplitArgument, \SplitList, \TrimSpaces}
+%   Simple copies.
+%    \begin{macrocode}
+\cs_new_eq:NN \ReverseBoolean \@@_bool_reverse:N
+\cs_new_eq:NN \SplitArgument  \@@_split_argument:nnn
+\cs_new_eq:NN \SplitList      \@@_split_list:nn
+\cs_new_eq:NN \TrimSpaces     \@@_trim_spaces:n
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ProcessList}
+%   To support \cs{SplitList}.
+%    \begin{macrocode}
+\cs_new_eq:NN \ProcessList \tl_map_function:nN
+%    \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\GetDocumentCommandArgSpec}
+% \begin{macro}{\GetDocumentEnvironmentArgSpec}
+% \begin{macro}{\ShowDocumentCommandArgSpec}
+% \begin{macro}{\ShowDocumentEnvironmentArgSpec}
+%   More simple mappings, with a check that the argument is a single
+%   control sequence or active character.
+%    \begin{macrocode}
+\cs_new_protected:Npn \GetDocumentCommandArgSpec #1
+  {
+    \@@_check_definable:nNT {#1} \GetDocumentCommandArgSpec
+      { \@@_get_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \@@_get_arg_spec:n
+\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1
+  {
+    \@@_check_definable:nNT {#1} \ShowDocumentCommandArgSpec
+      { \@@_show_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \@@_show_arg_spec:n
+%    \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% Finally as promised, restore \cs{__kernel_chk_if_free_cs:N}:
+%    \begin{macrocode}
+%<latexrelease>\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \@@_chk_if_free_cs:N
+%<latexrelease>\cs_undefine:N \@@_chk_if_free_cs:N
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\catcode`\^^@=\@latexrelease at catcode@null\relax
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease>                 {\NewDocumentCommand}{Document commands}%
+%<latexrelease>\@ifundefined{NewDocumentCommand}
+%<latexrelease>  {%
+%<latexrelease>    \IfFileExists{xparse.ltx}
+%<latexrelease>      {\input xparse.ltx }
+%<latexrelease>      {\@latex at error{LaTeX requires xparse}\@ehd}%
+%<latexrelease>  }
+%<latexrelease>  {}
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\NewDocumentCommand}{Document commands}%
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%
+% We need to stop DocStrip treating |@@| in a special way at this point.
+%    \begin{macrocode}
+%<@@=>
+%    \end{macrocode}
+%
+% \Finale


Property changes on: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcmd.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcntrl.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltcounts.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdefns.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltdefns.dtx}
-             [2020/11/25 v1.5o LaTeX Kernel (definition commands)]
+             [2021/01/15 v1.5o LaTeX Kernel (definition commands)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltdefns.dtx}
@@ -1471,7 +1471,7 @@
 %     \ldots
 %   \end{quote}
 %   \cs{robust at command@act} will iterate over the \meta{action-list}, evaluating
-%   each \meta{if-type-$n$}\meta{robust-cmd}|{|\meta{true}|}{|\meta{false}|}|.
+%   each \meta{if-type-$n$} \meta{robust-cmd} |{|\meta{true}|}{|\meta{false}|}|.
 %   If the \meta{if-type-$n$} conditional returns \meta{true}, then
 %   \meta{act-type-$n$}\meta{act-arg} is executed, and the loop ends.  If the
 %   conditional returns \meta{false}, then \meta{if-type-$n+1$} is executed in

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltdirchk.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -37,7 +37,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltdirchk.dtx}
-             [2020/12/05 v1.3a LaTeX Kernel (System Dependent Parts)]
+             [2021/01/15 v1.3a LaTeX Kernel (System Dependent Parts)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltdirchk.dtx}
@@ -127,14 +127,16 @@
 % |\input at path| should expand to a list of such directories, each in a
 % |{}| group.
 %
+% \begin{sloppypar}
 % \DescribeMacro{\filename at parse}
 % After a call of the form: |\filename at parse{|\meta{filename}|}|, the
-% three macros |\filename at area|,|\filename at base|,|\filename at ext| should
+% three macros |\filename at area|, |\filename at base| and |\filename at ext| should
 % be defined to be the `area' (or directory), basename and
 % extension respectively. If there was no extension specified in
 % \meta{filename}, |\filename at ext| should be |\let| to |\relax| (so this
 % case may be tested with |\@ifundefined{filename at ext}| and, perhaps a
 % default extension substituted).
+% \end{sloppypar}
 %
 % 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 and
@@ -470,14 +472,16 @@
 % |{}| group.
 %
 %
+% \begin{sloppypar}
 % \DescribeMacro{\filename at parse}
 % After a call of the form: |\filename at parse{|\meta{filename}|}|, the
-% three macros |\filename at area|,|\filename at base|,|\filename at ext| should
+% three macros |\filename at area|, |\filename at base|, |\filename at ext| should
 % be defined to be the `area' (or directory), basename and
 % extension respectively. If there was no extension specified in
 % \meta{filename}, |\filename at ext| should be |\let| to |\relax| (so this
 % case may be tested with |\@ifundefined{filename at ext}| and, perhaps a
 % default extension substituted).
+% \end{sloppypar}
 %
 % 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

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lterror.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lterror.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lterror.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltexpl.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2019-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltexpl.dtx}
-             [2020/12/18 v1.2h LaTeX Kernel (expl3-dependent code)]
+             [2021/01/24 v1.3a LaTeX Kernel (expl3-dependent code)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltexpl.dtx}
@@ -101,14 +101,16 @@
 % 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.
+% \changes{v1.3a}{2021/01/24}{Define \pkg{expl3} hooks conditionally}
 %    \begin{macrocode}
 %<*2ekernel|latexrelease>
 %<latexrelease>\IncludeInRelease{2020/10/01}%
 %<latexrelease>            {\@expl at sys@load at backend@@}{Roll forward support}%
-\def\@expl at sys@load at backend@@{}
-\def\@expl at push@filename@@{}
-\def\@expl at push@filename at aux@@{}
-\def\@expl at pop@filename@@{}
+\def\reserved at a#1{\ifdefined#1\else\def#1{}\fi}
+\reserved at a\@expl at sys@load at backend@@
+\reserved at a\@expl at push@filename@@
+\reserved at a\@expl at push@filename at aux@@
+\reserved at a\@expl at pop@filename@@
 %<latexrelease>\EndIncludeInRelease
 %</2ekernel|latexrelease>
 %    \end{macrocode}
@@ -188,7 +190,9 @@
 % In \texttt{2ekernel} mode, an error is fatal and building the format
 % is aborted. Use \verb=\batchmode \read -1 to \tokenlist=, which errors
 % with
-% \verb=! Emergency stop. (cannot \read from terminal in nonstop modes)=
+%\begin{verbatim}
+%   ! Emergency stop. (cannot \read from terminal in nonstop modes)
+%\end{verbatim}
 % and aborts the \TeX{} run.  In \texttt{latexrelease} mode, raise an
 % error and do nothing.  Both ways, the error message shows the minimum
 % \textsf{expl3} engine requirements.
@@ -214,7 +218,7 @@
 %</2ekernel>
 %    \end{macrocode}
 %    We do not support a roll forward across 2019. You need to start
-%    with 2019 if you want to get to 2020 or beyond. 
+%    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>
@@ -225,21 +229,18 @@
            --- I'm giving up!\MessageBreak\MessageBreak
            Note that manually loading the expl3 package\MessageBreak
            from your distribution is not enough}%
-        \@@end  % die
+        \batchmode \read -1 to \reserved at a
 %</latexrelease>
       }%
-      {%
-        \input expl3.ltx
-        \ifdefined\NewDocumentCommand
-        \else
-          \IfFileExists{xparse.ltx}
-            {\input xparse.ltx }
-            {}%
-         \fi
-      }%
+      {\input expl3.ltx }%
   }
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>
+%    \end{macrocode}
+% To support roll-forward for the case where \textsf{xparse} is fully
+% integrated into the kernel, we do not need to repeat the complex test
+% above as we can simply look for the marker command.
+%    \begin{macrocode}
 %<latexrelease>\IncludeInRelease{2020/02/02}%
 %<latexrelease>                 {expl3}{Pre-load expl3}%
 %<latexrelease>\IfFileExists{expl3.ltx}
@@ -262,36 +263,9 @@
 %<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
 %
+% \changes{v1.3a}{2021/01/21}
+%                {Move \pkg{xparse} rollback code to \texttt{ltcmd.dtx}}
 %
-%    Starting with 2020-10 the kernel contains most of the
-%    \texttt{xparse} interfaces loaded above. These interfaces are
-%    later used to define various user command. However, if somebody
-%    with an earlier installation tries to roll forward (using a
-%    \texttt{latexrelease} package from a newer release) this will not
-%    work as the earlier kernel doesn't contain commands such as
-%    \cs{NewDocumentCommand}.
-%
-%    We therefore add code into \texttt{latexrelease.sty} to load the
-%    \texttt{xparse} package of the current installation instead. this
-%    may not work if the installation is really old, but roll forward
-%    can't do miracles.
-%
-%    If the kernel is 2020-10 or later \cs{NewDocumentCommand} is
-%    already known (whether or not you roll forward or back) so
-%    nothing happens, but if you start from am earlier kernel the
-%    \texttt{xparse} package gets loaded by \texttt{latexrelease}.
-% \changes{v1.2g}{2020/11/24}{Load xparse in latexrelease if needed (gh/434)}
-%    \begin{macrocode}
-%<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease>                 {\NewDocumentCommand}{Emergency loading xparse}%
-%<latexrelease>
-%<latexrelease>\ifdefined\NewDocumentCommand \else
-%<latexrelease>  \RequirePackage{xparse}
-%<latexrelease>\fi
-%<latexrelease>
-%<latexrelease>\EndIncludeInRelease
-%    \end{macrocode}
-%
 %    \subsection{Using expl3 code}
 %
 %    In order to ease the implementation of some new features in

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfilehook.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
-%%
-%% File: ltfilehook.dtx (C) Copyright 2020,2021 Frank Mittelbach,
-%%                                         Phelype Oleinik & LaTeX Team
 %
+% Copyright (C) 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.0e}
-\providecommand\ltfilehookdate{2021/01/07}
+\providecommand\ltfilehookversion{v1.0g}
+\providecommand\ltfilehookdate{2021/02/08}
 %    \end{macrocode}
 %
 %<*driver>
@@ -55,6 +55,10 @@
   }
 \ExplSyntaxOff
 
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
+
 \usepackage{structuredlog}  % for demonstration
 
 \EnableCrossrefs
@@ -622,6 +626,7 @@
 %    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)}
+% \InternalDetectionOff
 %    \begin{macrocode}
 %<latexrelease>\IncludeInRelease{2020/10/01}%
 %<latexrelease>                 {\file_parse_full_name_apply:nN}{Roll forward help}%
@@ -643,7 +648,8 @@
 %<latexrelease>  {
 %<latexrelease>    \tl_if_empty:nTF {#3}
 %<latexrelease>      { \__file_parse_full_name_base:nw { } #2 . \s__file_stop {#1} }
-%<latexrelease>      { \__file_parse_full_name_area:nw { #1 / #2 } #3 \s__file_stop }
+%<latexrelease>      { \__file_parse_full_name_area:nw { #1 / #2 }
+%<latexrelease>                                        #3 \s__file_stop }
 %<latexrelease>  }
 %<latexrelease>\cs_new:Npn \__file_parse_full_name_base:nw #1 #2 . #3 \s__file_stop
 %<latexrelease>  {
@@ -657,7 +663,8 @@
 %<latexrelease>          }
 %<latexrelease>          { \__file_parse_full_name_tidy:nnnN {#1} { .#2 } }
 %<latexrelease>      }
-%<latexrelease>      { \__file_parse_full_name_base:nw { #1 . #2 } #3 \s__file_stop }
+%<latexrelease>      { \__file_parse_full_name_base:nw { #1 . #2 }
+%<latexrelease>                                        #3 \s__file_stop }
 %<latexrelease>  }
 %<latexrelease>\cs_new:Npn \__file_parse_full_name_tidy:nnnN #1 #2 #3 #4
 %<latexrelease>  {
@@ -675,6 +682,7 @@
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
 %    \end{macrocode}
+% \InternalDetectionOn
 %
 %    \begin{macrocode}
 %<@@=>
@@ -847,6 +855,17 @@
 %<latexrelease>\long\def \InputIfFileExists#1#2{%
 %<latexrelease>  \IfFileExists{#1}%
 %<latexrelease>    {#2\@addtofilelist{#1}\@@input \@filef at und}}
+%    \end{macrocode}
+%
+%    Also undo the internal command as some packages unfortunately test
+%    for their existence instead of using \cs{IfFormatAtLeastTF}.
+% \changes{v1.0g}{2021/02/08}{Undo the internal for robust
+%                 \cs{InputIfFileExists} in rollback (gh/494)}
+%    \begin{macrocode}
+%<latexrelease>\expandafter\let\csname InputIfFileExists \endcsname\@undefined
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 %<latexrelease>\let\@input at file@exists at with@hooks\@undefined
 %<latexrelease>\let\unqu at tefilef@und\@undefined
 %<latexrelease>\EndIncludeInRelease
@@ -897,7 +916,8 @@
           @file-subst@
           \@@_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
         }
-        { \@@_subst_file_normalize:Nn \@@_file_name_compose:nnn {#2} }
+        { \@@_subst_file_normalize:Nn \@@_file_name_compose:nnn
+                                      {#2} }
     \group_end:
   }
 \cs_new_protected:Npn \@@_subst_remove:n #1
@@ -990,6 +1010,7 @@
 % \subsection{Selecting a file (\cs{set at curr@file})}
 %
 % \begin{macro}{\set at curr@file,\@curr at file,\@curr at file@reqd}
+%  \changes{v1.0f}{2021/01/31}{set \cs{protect} to \cs{string} gh/481}
 %   Now we hook into \cs{set at curr@file} to resolve a possible file
 %   substitution, and add \cs{@expl@@@filehook at set@curr at file@@nNN}
 %   at the end, after \cs{@curr at file} is set.
@@ -1013,11 +1034,12 @@
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease>\IncludeInRelease{2021/05/01}%
 %<latexrelease>          {\set at curr@file}{Setting current file name}%
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
+    \let\protect\string
     \expandafter\def\csname\expandafter\endcsname
       \expandafter{\csname\endcsname}%
 %    \end{macrocode}
@@ -1055,6 +1077,28 @@
 %    \end{macrocode}
 %    
 %    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease>\def\set at curr@file#1{%
+%<latexrelease>  \begingroup
+%<latexrelease>    \escapechar\m at ne
+%<latexrelease>    \expandafter\def\csname\expandafter\endcsname
+%<latexrelease>      \expandafter{\csname\endcsname}%
+%<latexrelease>    \@expl@@@filehook at if@no at extension@@nTF{#1}%
+%<latexrelease>      {\@tempswatrue}{\@tempswafalse}%
+%<latexrelease>    \@kernel at make@file at csname\@curr at file
+%<latexrelease>      \@expl@@@filehook at resolve@file at subst@@w {#1}%
+%<latexrelease>    \@expl@@@filehook at if@file at replaced@@TF
+%<latexrelease>      {\@kernel at make@file at csname\@curr at file@reqd
+%<latexrelease>         \@expl@@@filehook at normalize@file at name@@w{#1}%
+%<latexrelease>       \if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file@reqd \fi}%
+%<latexrelease>      {\if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file \fi
+%<latexrelease>       \global\let\@curr at file@reqd\@curr at file}%
+%<latexrelease>    \@expl@@@filehook at clear@replacement at flag@@
+%<latexrelease>  \endgroup}
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
 %<latexrelease>\IncludeInRelease{2019/10/01}%
 %<latexrelease>          {\set at curr@file}{Setting current file name}%
 %<latexrelease>\def\set at curr@file#1{%
@@ -1106,7 +1150,8 @@
   \expandafter\ifx\csname\endcsname#1%
     .tex\else\string#1\fi}
 %    \end{macrocode}
-%    
+%
+%   \begin{sloppypar}
 %   Then we call \cs{@expl@@@filehook at set@curr at file@@nNN} once for
 %   \cs{@curr at file} to set \cs[no-index]{CurrentFile(Path)Used} and once for
 %   \cs{@curr at file@reqd} to set \cs[no-index]{CurrentFile(Path)}.
@@ -1116,6 +1161,7 @@
 %   \cs{@curr at file} and \cs{@curr at file@reqd} differ.  This macro is
 %   issued separate from \cs{set at curr@file} because it changes
 %   \cs{CurrentFile}, and side-effects would quickly get out of control.
+%   \end{sloppypar}
 %    \begin{macrocode}
 \def\@filehook at set@CurrentFile{%
   \@expl@@@filehook at set@curr at file@@nNN{\@curr at file}%
@@ -1185,7 +1231,7 @@
 %</2ekernel>
 %<*2ekernel|latexrelease>
 %<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease>          {\@@_resolve_file_subst:w}{Replace files detect loops}%
+%<latexrelease>     {\@@_resolve_file_subst:w}{Replace files detect loops}%
 \ExplSyntaxOn
 \cs_new:Npn \@@_resolve_file_subst:w #1 \@nil
   { \@@_file_parse_full_name:nN {#1} \@@_file_subst_begin:nnn }
@@ -1284,7 +1330,7 @@
 %</2ekernel>
 %<*2ekernel|latexrelease>
 %<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease>         {\@@_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
+%<latexrelease>  {\@@_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
 \ExplSyntaxOn
 \cs_new:Npn \@@_file_subst_tortoise_hare:nn #1 #2 #3
   {
@@ -1437,7 +1483,7 @@
 %    \begin{macrocode}
 %<@@=>
 %    \end{macrocode}
-% 
+%  \InternalDetectionOff
 %    \begin{macrocode}
 %</2ekernel>
 %<*2ekernel|latexrelease>
@@ -1495,6 +1541,7 @@
 \cs_new_eq:NN \@expl@@@filehook at file@pop at assign@@nnnn
               \__filehook_file_pop_assign:nnnn
 %    \end{macrocode}
+%  \InternalDetectionOn
 %    
 %
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfiles.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfiles.dtx}
-             [2020/12/04 v1.2j LaTeX Kernel (File Handling)]
+             [2021/01/15 v1.2j LaTeX Kernel (File Handling)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfiles.dtx}
@@ -49,6 +49,9 @@
 
 \providecommand\pkg[1]{\texttt{#1}}
 
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
 \begin{document}
  \MaintainedByLaTeXTeam{latex}
  \maketitle
@@ -458,6 +461,7 @@
 %    applied several times with harmful effects. We therefore
 %    explicitly drop it at this point. the coding is somewhat obscure
 %    due to the name of the macro which requires constructing.
+% \InternalDetectionOff
 %    \begin{macrocode}
 \edef \@kernel at after@begindocument at before {%
   \let\expandafter\noexpand\csname
@@ -464,6 +468,7 @@
        __hook env/document/begin\endcsname
   \noexpand\@empty}
 %    \end{macrocode}
+% \InternalDetectionOn
 %
 %    \begin{macrocode}
 \let \@kernel at before@begindocument \@empty
@@ -996,10 +1001,11 @@
 %   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 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
+%   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
 %   with a space are hopefully rare.
 %
 %  \changes{v1.2a}{2019/07/01}{Support UTF-8}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfinal.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltfinal.dtx}
-             [2021/01/06 v2.2l LaTeX Kernel (Final Settings)]
+             [2021/02/25 v2.2m LaTeX Kernel (Final Settings)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfinal.dtx}
@@ -525,12 +525,13 @@
 %</2ekernel>
 %<*2ekernel|latexrelease>
 %<latexrelease>\IncludeInRelease{2017/04/15}%
-%<latexrelease>                 {\document at default@language}{Save language for hyphenation}%
+%<latexrelease>       {\document at default@language}{Save language for hyphenation}%
 \let\document at default@language\m at ne
 %</2ekernel|latexrelease>
 %<latexrelease>\EndIncludeInRelease
 %<latexrelease>\IncludeInRelease{0000/00/00}%
-%<latexrelease>                 {\document at default@language}{Save language for hyphenation}%
+%<latexrelease>       {\document at default@language}{Save language for hyphenation}%
+%
 %<latexrelease>\let\document at default@language\@undefined
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
@@ -565,6 +566,52 @@
 \fi
 %    \end{macrocode}
 %
+%   For pdf\TeX\ preload and enable automatic glyph to Unicode mapping
+%   for more reliable copy and paste support.
+%   \changes{v2.2l}{2021/01/21}{Load glyphtounicode.tex for pdf\TeX}
+%   \changes{v2.2m}{2021/02/25}{Improve speed of ToUnicode everyjob loading code}
+%
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\pdfgentounicode}{Preload glyphtounicode}%
+\ifx \pdfgentounicode \@undefined \else
+%<*2ekernel>
+  \ifnum 0=0%
+    \ifdefined\pdftexversion
+% \pdftexversion<140 does not have \pdfgentounicode, so we only check higher values
+      \ifnum \pdftexversion=140 \ifnum\pdftexrevision<22 1\fi\fi
+    \fi
+    \relax
+%</2ekernel>
+    \input glyphtounicode
+%<*2ekernel>
+  \else
+    \begingroup
+      \everyeof{\noexpand}\endlinechar-1
+      \edef\x{\endgroup
+        \everyjob{\the\everyjob\@@input glyphtounicode }%
+    }\x
+  \fi
+%</2ekernel>
+  \pdfgentounicode=1
+\fi
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%   When rolling back we can't unload the glyphtounicode mappings, but we
+%   can reset |\pdfgentounicode| to ensure that they aren't used.
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\pdfgentounicode}{Preload glyphtounicode}%
+%<latexrelease>\ifx \pdfgentounicode \@undefined \else
+%<latexrelease>  \pdfgentounicode=0
+%<latexrelease>\fi
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%
 % \subsection{Input encoding}
 %
 % \changes{v2.1a}{2018/03/25}{default to UTF-8}
@@ -1147,6 +1194,7 @@
 %         {Load first aid file if existing}
 %    \begin{macrocode}
 \@input{latex2e-first-aid-for-external-files.ltx}
+\@input{ltpara.ltx}
 %    \end{macrocode}
 %
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfloat.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -31,7 +31,7 @@
 %
 %<*driver>
 % \fi
-\ProvidesFile{ltfloat.dtx}[2020/12/05 v1.2d LaTeX Kernel (Floats)]
+\ProvidesFile{ltfloat.dtx}[2021/02/10 v1.2f LaTeX Kernel (Floats)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltfloat.dtx}
@@ -1004,7 +1004,12 @@
 % \changes{v1.1m}{1995/05/25}{(CAR) Resettings moved to hook}
 % \changes{v1.1n}{1996/07/26}{remove unnecessary \cs{global} before
 %                 \cs{@minipage...}}
+% \changes{v1.2e}{2021/02/03}{Explicitly end with \cs{par} (gh/489)}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\@savemarbox}{Explicit par for marginpar}%
 \long\def \@savemarbox #1#2{%
   \global\setbox #1%
     \color at vbox
@@ -1012,13 +1017,36 @@
         \hsize\marginparwidth
         \@parboxrestore
         \@marginparreset
-        #2%
+        #2\par
         \@minipagefalse
         \outer at nobreak
         }%
     \color at endbox
 }
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@savemarbox}{Explicit par for marginpar}%
+%<latexrelease>
+%<latexrelease>\long\def \@savemarbox #1#2{%
+%<latexrelease>  \global\setbox #1%
+%<latexrelease>    \color at vbox
+%<latexrelease>      \vtop{%
+%<latexrelease>        \hsize\marginparwidth
+%<latexrelease>        \@parboxrestore
+%<latexrelease>        \@marginparreset
+%<latexrelease>        #2%
+%<latexrelease>        \@minipagefalse
+%<latexrelease>        \outer at nobreak
+%<latexrelease>        }%
+%<latexrelease>    \color at endbox
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 % \end{macro}
 %
 %  \begin{macro}{\@marginparreset}
@@ -1480,7 +1508,13 @@
 %         {Removed \cs{normalcolor} (again)}
 % \changes{v1.1t}{1997/11/19}
 %         {Missing percent, again}
+% \changes{v1.2e}{2021/02/10}{Explicitly run \cs{par} at the end of footnote text
+%      in preparation for paragraph hooks}
 %    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\@footnotetext}{footnotetext tagging}%
 \long\def\@footnotetext#1{\insert\footins{%
     \reset at font\footnotesize
     \interlinepenalty\interfootnotelinepenalty
@@ -1493,8 +1527,33 @@
     \color at begingroup
       \@makefntext{%
         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
     \color at endgroup}}%
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
 %    \end{macrocode}
+%
+%    \begin{macrocode}
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease>                 {\@footnotetext}{footnotetext tagging}%
+%<latexrelease>
+%<latexrelease>\long\def\@footnotetext#1{\insert\footins{%
+%<latexrelease>    \reset at font\footnotesize
+%<latexrelease>    \interlinepenalty\interfootnotelinepenalty
+%<latexrelease>    \splittopskip\footnotesep
+%<latexrelease>    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+%<latexrelease>    \hsize\columnwidth \@parboxrestore
+%<latexrelease>    \protected at edef\@currentlabel{%
+%<latexrelease>       \csname p at footnote\endcsname\@thefnmark
+%<latexrelease>    }%
+%<latexrelease>    \color at begingroup
+%<latexrelease>      \@makefntext{%
+%<latexrelease>        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+%<latexrelease>    \color at endgroup}}%
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
 % \end{macro}
 %
 % \begin{macro}{\footnotemark}
@@ -1558,10 +1617,49 @@
 %    \begin{macrocode}
 \def\@mpfn{footnote}
 \def\thempfn{\thefootnote}
-%</2ekernel>
 %    \end{macrocode}
+%
 % \end{macro}
 % \end{macro}
 %
+%
+%
+%
+%  \begin{macro}{\footref}
+%    This command generates a footnote mark. The value is produced by
+%    referencing a \cs{label} placed into a \cs{footnote} elsewhere
+%    (can be one in the main galley or in a minipage).
+% \changes{v1.2f}{2021/02/16}{\cs{footref} added}
+%    \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2021/05/01}%
+%<latexrelease>                 {\footref}{Add footref}%
+\def\footref#1{%
+  \begingroup
+    \unrestored at protected@xdef\@thefnmark{\ref{#1}}%
+  \endgroup
+  \@footnotemark
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%    \end{macrocode}
+%    We don't remove it when rolling back.
+%    \begin{macrocode}
+%%<latexrelease>\IncludeInRelease{0000/00/00}%
+%%<latexrelease>                 {\footref}{Add footref}%
+%%<latexrelease>
+%%<latexrelease>\let\footref\@undefined
+%%<latexrelease>
+%%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%    \begin{macrocode}
+%</2ekernel>
+%    \end{macrocode}
+%
 % \Finale
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfntcmd.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssaxes.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2019-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -35,7 +35,7 @@
 %
 %
 \ProvidesFile{ltfssaxes.dtx}
-             [2020/12/22 v1.0h LaTeX Kernel (NFSS Axes handing)]
+             [2021/01/15 v1.0h LaTeX Kernel (NFSS Axes handing)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -764,8 +764,10 @@
 %<latexrelease>\IncludeInRelease{2020/02/02}%
 %<latexrelease>                 {\fontseries}{delay fontseries update}%
 %<latexrelease>
-%<latexrelease>\DeclareRobustCommand\fontseries[1]{\@forced at seriesfalse\merge at font@series{#1}}
-%<latexrelease>\DeclareRobustCommand\fontseriesforce[1]{\@forced at seriestrue\edef\f at series{#1}}
+%<latexrelease>\DeclareRobustCommand\fontseries[1]{\@forced at seriesfalse
+%<latexrelease>                                    \merge at font@series{#1}}
+%<latexrelease>\DeclareRobustCommand\fontseriesforce[1]{\@forced at seriestrue
+%<latexrelease>                                         \edef\f at series{#1}}
 %<latexrelease>\let\delayed at f@adjustment\@undefined
 %<latexrelease>
 %    \end{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssbas.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsscmp.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssdcl.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -36,7 +36,7 @@
 %
 %
 \ProvidesFile{ltfssdcl.dtx}
-            [2020/12/05 v3.0v LaTeX Kernel (NFSS Declarative Interface)]
+            [2021/02/15 v3.0w LaTeX Kernel (NFSS Declarative Interface)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -490,8 +490,12 @@
                    in version \math at version}%
         \@eha
   \fi
- \else \expandafter\non at alpherr\fi
 %    \end{macrocode}
+% extra \cs{expandafter} to remove the \cs{expandafter} added below
+% \changes{v3.0w}{2021/02/115}{fix for (gh/501)}
+%    \begin{macrocode}
+ \else \expandafter\expandafter\expandafter\non at alpherr\fi
+%    \end{macrocode}
 %    If the legacy interface is used, e.g., \verb=$\sf -1$= the math
 %    alphabet \verb=#1= does not take an argument so we better do not
 %    surround \verb=#4= with braces, because then we get
@@ -1526,7 +1530,7 @@
 \def\set at mathdelimiter#1#2#3#4#5#6{%
 %    \end{macrocode}
 %    We use \cs{protected} not \cs{MakeRobust} so that
-%    \verb=\bigl\lfoor= etc.\ works inside \cs{protected at edef}.
+%    \verb=\bigl\lfoor= etc.\ works inside the argument of \cs{protected at edef}.
 % \changes{v3.0s}{2019/08/27}{Make math delimiters robust}
 % \changes{v3.0t}{2020/01/20}{fix for gh/251}
 %    \begin{macrocode}
@@ -1733,7 +1737,7 @@
       \relax
 %    \end{macrocode}
 %    If it is undefined, fine otherwise check if it is a math alphabet
-%    defined via |\DeclareSymbolFontAlphabet|:
+%    defined via \\ |\DeclareSymbolFontAlphabet|:
 %    \begin{macrocode}
       \else
         \edef\reserved at a{%

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfssini.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -36,7 +36,7 @@
 %
 %
 \ProvidesFile{ltfssini.dtx}
-             [2020/12/06 v3.2f LaTeX Kernel (NFSS Initialisation)]
+             [2021/01/15 v3.2f LaTeX Kernel (NFSS Initialisation)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -448,7 +448,7 @@
 %    \item \cs{bfseries} is called  for a family using \texttt{bx}
 %       (e.g., CMR) 
 %    \item Switch to a font family that is none of the meta
-%       families, e.g., via \verb=\fontfamily{ptm}\selectfont=
+%       families, e.g., via \verb=\fontfamily{ptm}\allowbreak\verb=\selectfont=
 %    \item Then none of the real meta families, match but the final
 %      \verb=\@elt{??}= will.
 %    \item Therefore if the current series is \cs{mddefault} or
@@ -1307,8 +1307,9 @@
 }
 %    \end{macrocode}
 %  \end{macro}
-
-
+%
+%
+%
 %  \begin{macro}{\if at font@series at context}
 %    The boolean to signal if we found the requested font series context.
 %    \begin{macrocode}
@@ -1334,10 +1335,12 @@
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
 %    \end{macrocode}
-
-
-
 %
+%
+%
+%
+%
+%
 % \section{Supporting nested emphasis}
 %
 %    By default \LaTeXe{} supports two levels of nested emphasis: if
@@ -1401,9 +1404,9 @@
 \let\emfontdeclare at clist\@empty
 %    \end{macrocode}
 %  \end{macro}
-
-
-
+%
+%
+%
 %  \begin{macro}{\emrest}
 %    Reset the font to upright and upper/lower case. With the default rules
 %    using \cs{shapedefault} does that for us but to be on the safe side we
@@ -1412,12 +1415,13 @@
 \DeclareRobustCommand\emreset{\upshape\ulcshape}
 %    \end{macrocode}
 %  \end{macro}
-
-
-
+%
+%
+%
 %  \begin{macro}{\em}
-%    The new definition for \cs{em} (and implicitly \cs{emph} is like
-%    it was before if \cs{emfontdeclare at clist} is empty.
+%
+%    The new definition for \cs{em} (and implicitly \cs{emph}) is the
+%    same as before as long as \cs{emfontdeclare at clist} is empty.
 %    \begin{macrocode}
 \DeclareRobustCommand\em{%
   \@nomath\em

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltfsstrc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -30,7 +30,7 @@
 % \iffalse
 %%% 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.
+%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
 %
 %<package>\NeedsTeXFormat{LaTeX2e}[2021/05/01]
 %<package>\ProvidesPackage{tracefnt}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthooks.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthooks.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthooks.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
-%%
-%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
-%%                                      Phelype Oleinik & LaTeX Team
 %
+% Copyright (C)  2020-2021
+%       Frank Mittelbach, Phelype Oleinik & LaTeX Team
+%
 % This file is part of the LaTeX base system.
 % -------------------------------------------
 %
@@ -32,7 +32,7 @@
 %
 %    \begin{macrocode}
 \def\lthooksversion{v1.0h}
-\def\lthooksdate{2021/01/07}
+\def\lthooksdate{2021/01/15}
 %    \end{macrocode}
 %
 %<*driver>
@@ -54,6 +54,9 @@
   }
 \ExplSyntaxOff
 
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
 \EnableCrossrefs
 \CodelineIndex
 \begin{document}
@@ -1336,15 +1339,9 @@
 %   Like \cs{AtBeginDocument} but for the \hook{enddocument} hook.
 % \end{function}
 %
+%    There is also \cs{AtBeginDvi}  which is discussed in conjunction
+%    with the shipout hooks.
 %
-%
-% \begin{function}{\AtBeginDvi}
-%   \begin{syntax}
-%     \cs{AtBeginDvi} \oarg{label} \Arg{code}
-%   \end{syntax}
-%   This hook is discussed in conjunction with the shipout hooks.
-% \end{function}
-%
 %    \bigskip
 %
 %    The few hooks that existed previously in \LaTeXe{} used internally
@@ -1772,9 +1769,11 @@
 %
 % \begin{macro}[EXP]{\@@_str_compare:nn}
 %   Private copy of \cs{__str_if_eq:nn}
+% \InternalDetectionOff  
 %    \begin{macrocode}
 \cs_new_eq:NN \@@_str_compare:nn \__str_if_eq:nn
 %    \end{macrocode}
+% \InternalDetectionOn
 % \end{macro}
 %
 %  \subsection{Declarations}
@@ -2898,9 +2897,11 @@
 %   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}
 %
@@ -4449,6 +4450,7 @@
 %  \begin{macro}{\@expl@@@initialize at all@@,
 %                \@expl@@@hook at curr@name at pop@@}
 %
+% \InternalDetectionOff
 %    \begin{macrocode}
 \cs_new_eq:NN \@expl@@@initialize at all@@
               \__hook_initialize_all:
@@ -4458,6 +4460,7 @@
 \cs_new_eq:NN \@expl@@@hook at curr@name at pop@@
               \__hook_curr_name_pop:
 %    \end{macrocode}
+% \InternalDetectionOn
 %  \end{macro}
 %
 %    

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lthyphen.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -40,7 +40,7 @@
 %\iffalse        This is a META comment
 %
 % File `lthyphen.dtx'.
-% Copyright (C) 1994-94 LaTeX3 project, Frank Mittelbach and
+% Copyright (C) 1994-94 LaTeX Project, Frank Mittelbach and
 % Rainer Sch\"opf, all rights reserved.
 %
 %\fi

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltidxglo.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlength.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlength.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlength.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlists.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlists.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlists.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltlogos.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltluatex.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2015-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -28,7 +28,7 @@
 \ProvidesFile{ltluatex.dtx}
 %</driver>
 %<*tex>
-[2020/12/06 v1.1s
+[2021/01/15 v1.1s
 %</tex>
 %<plain>  LuaTeX support for plain TeX (core)
 %<*tex>
@@ -38,6 +38,10 @@
 %</tex>
 %<*driver>
 \documentclass{ltxdoc}
+
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
 \GetFileInfo{ltluatex.dtx}
 \begin{document}
 \title{\filename\\(Lua\TeX{}-specific support)}
@@ -204,6 +208,7 @@
 % The number is returned and also \meta{name} argument is added to the
 % |lua.name| array at that index.
 %
+% \begin{sloppypar}
 % \noindent
 % \DescribeMacro{new_luafunction}
 % |luatexbase.new_luafunction(|\meta{functionname}|)|\\
@@ -211,6 +216,7 @@
 % with |\luafunction|, |\lateluafunction|, and |\luadef|,
 % indexed from~$1$. The optional \meta{functionname} argument
 % is just used for logging.
+% \end{sloppypar}
 %
 % These functions all require access to a named \TeX{} count register
 % to manage their allocations. The standard names are those defined
@@ -1116,6 +1122,7 @@
 % \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.
+% \InternalDetectionOff
 %    \begin{macrocode}
 local attributes=setmetatable(
 {},
@@ -1143,6 +1150,7 @@
 end
 luatexbase.new_attribute = new_attribute
 %    \end{macrocode}
+% \InternalDetectionOn
 % \end{macro}
 %
 % \subsection{Custom whatsit allocation}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmath.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmath.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmath.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltmiscen.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -32,7 +32,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltmiscen.dtx}
-             [2020/12/18 v1.1x LaTeX Kernel (Misc. Environments)]
+             [2021/02/08 v1.1y LaTeX Kernel (Misc. Environments)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltmiscen.dtx}
@@ -868,6 +868,15 @@
 %<latexrelease>  \expandafter\endgroup\if at endpe\@doendpe\fi
 %<latexrelease>  \if at ignore\@ignorefalse\ignorespaces\fi}
 %<latexrelease>
+%    \end{macrocode}
+%    Also undo the internal commands as some packages unfortunately test
+%    for their existence instead of using \cs{IfFormatAtLeastTF}.
+% \changes{v1.1y}{2021/02/08}{Undo the internals for robust \cs{begin}
+%    and \cs{end} in rollback (gh/494)}
+%    \begin{macrocode}
+%<latexrelease>\expandafter\let\csname begin \endcsname\@undefined
+%<latexrelease>\expandafter\let\csname end \endcsname\@undefined
+%<latexrelease>
 %<latexrelease>\EndIncludeInRelease
 %<*2ekernel>
 %    \end{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -37,7 +37,7 @@
 %<TS1>\ProvidesFile{ts1enc.def}[2001/06/05 v3.0e (jk/car/fm)
 %<TU>\ProvidesFile{tuenc.def}
 %<package>\ProvidesPackage{fontenc}
-%<OT1|T1|OMS|OML|OT4|TU|package> [2020/08/10 v2.0s
+%<OT1|T1|OMS|OML|OT4|TU|package> [2021/02/19 v2.0u
 %<OT1|T1|OMS|OML|OT4|TS1|TU>      Standard LaTeX file]
 %<package>                        Standard LaTeX package]
 %
@@ -44,7 +44,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltoutenc.dtx}
-             [2020/12/05 v2.0s LaTeX Kernel (font encodings)]
+             [2021/02/19 v2.0u LaTeX Kernel (font encodings)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltoutenc.dtx}
@@ -1717,6 +1717,17 @@
 \DeclareTextSymbol{\textemdash}{OT1}{124}
 \DeclareTextSymbol{\textendash}{OT1}{123}
 %    \end{macrocode}
+%    
+%    The \verb=\nobreak\hskip\z@= is there to prevent a break after
+%    the hyphen but allow later breaks in the remainder of the word. 
+% \changes{v2.0u}{2021/02/19}{Add \cs{textnonbreakinghyphen}, \cs{textfiguredash}
+%      and \cs{texthorizontalbar} (gh/404)}
+%    \begin{macrocode}
+\DeclareTextCommand{\textnonbreakinghyphen}{OT1}{\mbox{-}\nobreak\hskip\z@}
+\DeclareTextCommand{\textfiguredash}       {OT1}{\textendash}
+\DeclareTextCommand{\texthorizontalbar}    {OT1}{\textemdash}
+%    \end{macrocode}
+%
 %    Using the ligatures helps with OT1 fonts that have
 %    |\textexclamdown| and |\textquestiondown| in unusual positions.
 % \changes{v1.95}{2002/06/17}{Definition of \cs{textexclamdown} changed (pr/3368)}
@@ -2045,6 +2056,19 @@
 \DeclareTextSymbol{\textdollar}{T1}{`\$}
 \DeclareTextSymbol{\textemdash}{T1}{22}
 \DeclareTextSymbol{\textendash}{T1}{21}
+%    \end{macrocode}
+%
+%    The \verb=\nobreak\hskip\z@= is there to prevent a break after
+%    the hyphen but allow later breaks in the remainder of the word. 
+% \changes{v2.0u}{2021/02/19}{Add \cs{textnonbreakinghyphen}, \cs{textfiguredash}
+%      and \cs{texthorizontalbar} (gh/404)}
+%    \begin{macrocode}
+\DeclareTextCommand{\textnonbreakinghyphen}{T1}{\mbox{-}\nobreak\hskip\z@}
+\DeclareTextCommand{\textfiguredash}       {T1}{\textendash}
+\DeclareTextCommand{\texthorizontalbar}    {T1}{\textemdash}
+%    \end{macrocode}
+%
+%    \begin{macrocode}
 \DeclareTextSymbol{\textexclamdown}{T1}{189}
 \DeclareTextSymbol{\textgreater}{T1}{`\>}
 %\DeclareTextSymbol{\texthyphenchar}{T1}{127}
@@ -2583,8 +2607,31 @@
 \DeclareTextSymbol{\textquotesingle}{TS1}{39}
 %    \end{macrocode}
 %    "28 = 40
+%
+%    The symbol \cs{textasteriskcentered} ``\textasteriskcentered'' is
+%    supposed to be always available in \texttt{TS1} and that is
+%    important as it is used in footnote symbols. However, in a few
+%    fonts it is missing even though they are otherwise fairly
+%    complete. We therefore use a rather elaborate method and check if
+%    the slot has a glyph and if not produce a poor man's version by
+%    using a normal ``*'' slightly enlarged and somewhat lowered.
+%    The main application for this symbol is in footnote symbols and
+%    there it should produce a comparable size and show a similar placement.
+% \changes{v2.0t}{2021/02/17}{Special definition for
+%        \cs{textasteriskcentered} when missing in TS1 (gh/502)}
 %    \begin{macrocode}
-\DeclareTextSymbol{\textasteriskcentered}{TS1}{42}
+%\DeclareTextSymbol{\textasteriskcentered}{TS1}{42} % that's wanted
+\DeclareTextCommand \textasteriskcentered{TS1}{%    % and that's needed
+  \iffontchar\font 42 \char42 \else 
+   \begingroup\fontencoding{T1}%
+       \fontsize
+       {\the\dimexpr1.3\dimexpr\f at size pt\relax}%
+       {\f at baselineskip}%
+      \selectfont
+      \raisebox{-0.7ex}[\dimexpr\height-0.7ex][0pt]{*}%
+    \endgroup
+    \fi
+}
 %    \end{macrocode}
 % Note that '054 is a comma and '056 is a full stop: these make
 % numbers using oldstyle digits easier to input.
@@ -3106,8 +3153,34 @@
 \DeclareTextSymbol{\textbaht}            \UnicodeEncodingName{"0E3F}
 \DeclareTextSymbol{\SS}                  \UnicodeEncodingName{"1E9E}
 \DeclareTextSymbol{\textcompwordmark}    \UnicodeEncodingName{"200C}
+%    \end{macrocode}
+%    
+% \changes{v2.0u}{2021/02/19}{Add \cs{textnonbreakinghyphen}, \cs{textfiguredash}
+%      and \cs{texthorizontalbar} (gh/404)}
+%    \begin{macrocode}
+%\DeclareTextSymbol{\textnonbreakinghyphen} \UnicodeEncodingName{"2011}
+%\DeclareTextSymbol{\textfiguredash}        \UnicodeEncodingName{"2012}
 \DeclareTextSymbol{\textendash}          \UnicodeEncodingName{"2013}
 \DeclareTextSymbol{\textemdash}          \UnicodeEncodingName{"2014}
+%\DeclareTextSymbol{\texthorizontalbar}   \UnicodeEncodingName{"2015}
+%    \end{macrocode}
+%    Unfortunately some fonts do not implement \texttt{"2011}, \texttt{"2012} and/or
+%    \texttt{"2015} (including the \LaTeX{} default fonts for Unicode
+%    engines) so we provide some approximations if the glyph is
+%    missing, like we do for \texttt{OT1} and \texttt{T1}.
+%
+%    The \verb=\nobreak\hskip\z@= is there to prevent a break after
+%    the hyphen but allow later breaks in the remainder of the word. 
+%    \begin{macrocode}
+\DeclareTextCommand{\textnonbreakinghyphen} \UnicodeEncodingName
+     {\iffontchar\font "2011 \char "2011 \else \mbox{-}\nobreak\hskip\z@ \fi}
+\DeclareTextCommand{\textfiguredash}     \UnicodeEncodingName
+     {\iffontchar\font "2012 \char "2012 \else \char "2013 \fi}
+\DeclareTextCommand{\texthorizontalbar}     \UnicodeEncodingName
+     {\iffontchar\font "2015 \char "2015 \else \char "2014 \fi}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
 \DeclareTextSymbol{\textbardbl}          \UnicodeEncodingName{"2016}
 \DeclareTextSymbol{\textquoteleft}       \UnicodeEncodingName{"2018}
 \DeclareTextSymbol{\textquoteright}      \UnicodeEncodingName{"2019}
@@ -3159,15 +3232,17 @@
 %    \end{macrocode}
 %
 % Not all fonts have U+2217 but using U+002A requires some adjustment.
+% \changes{v2.0t}{2021/02/17}{Adjust values for
+%        \cs{textasteriskcentered} To match TS1 definition (gh/502)}
 %    \begin{macrocode}
 \DeclareTextCommand{\textasteriskcentered}\UnicodeEncodingName{%
   \iffontchar\font"2217 \char"2217 \else
     \begingroup
       \fontsize
-       {\the\dimexpr1.2\dimexpr\f at size pt\relax}%
+       {\the\dimexpr1.3\dimexpr\f at size pt\relax}%
        {\f at baselineskip}%
       \selectfont
-      \raisebox{-0.6ex}[\dimexpr\height-0.6ex][0pt]{*}%
+      \raisebox{-0.7ex}[\dimexpr\height-0.7ex][0pt]{*}%
     \endgroup
   \fi
 }

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutenc.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltoutput.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -57,7 +57,7 @@
 % \iffalse
 % LATEX VERSION 2e
 % Copyright (C) 1992 by Leslie Lamport
-% Copyright (C) 1994-2000 by Leslie Lamport, LaTeX3 project
+% Copyright (C) 1994-2000 by Leslie Lamport, LaTeX Project
 %
 % LaTeX 2e kernel file for the output routine.
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpage.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpage.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpage.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpageno.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpar.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpar.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpar.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Added: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpara.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpara.dtx	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpara.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,1159 @@
+% \iffalse meta-comment
+%
+%% File: ltpara.dtx (C) Copyright 2020-2021
+%       Frank Mittelbach, LaTeX Team
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version.  The latest version
+% of this license is in the file
+%
+%    https://www.latex-project.org/lppl.txt
+%
+%
+%%% From File: lthooks.dtx
+%
+%    \begin{macrocode}
+\def\ltparaversion{v1.0d}
+\def\ltparadate{2021/02/18}
+%    \end{macrocode}
+%<*driver>
+\documentclass{l3doc}
+
+%\usepackage{ltpara}
+
+% Fixing footnotes in  functions and variables: this should be in l3doc!
+\newcommand\fixfootnote[2]{\footnotemark
+  \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
+\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
+
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+  \DocInput{ltpara.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \providecommand\hook[1]{\texttt{#1}}
+% \providecommand\env[1]{\texttt{#1}}
+%
+%
+%
+% \title{The \texttt{ltpara.dtx} code\thanks{This file has version
+%    \ltparaversion\ dated \ltparadate, \copyright\ \LaTeX\
+%    Project.}}
+% \author{Frank Mittelbach}
+%
+% \maketitle
+%
+%
+% \begin{abstract}
+%    This code defines four special kernel hooks to support paragraph
+%    tagging as well as four public hooks which can be occasionally
+%    useful.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%
+% \section{Introduction}
+%
+%
+%    The building of paragraphs in the \TeX{} engine(s) has a number
+%    of peculiarities that makes it on one hand fairly flexible but on
+%    the other hand somewhat awkward to control or reliably to extend.
+%    Thus to better understand the code below we start with a brief introduction
+%    of the mechanism; for more details refer to the
+%    \TeX{}book~\cite[chap.~14]{texbook} (for the full truth you may
+%    even have to study the program code).
+%
+% \subsection{The default processing done by the engine}
+%
+%    \TeX{} automatically starts building a paragraph when it is
+%    currently in vertical mode and encounters anything that can only
+%    live in horizontal mode. Most often this is a character, but
+%    there are also many commands that can be used only in horizontal mode.
+%    If any of them is encountered, \TeX{} will immediately back up
+%    (i.e., the character or command is read later again), adds a
+%    \cs{parskip} glue to the current vertical list unless the list is
+%    empty, switches to
+%    horizontal mode, starts its special \enquote{start of paragraph
+%    processing} and only then rereads the character or command that
+%    caused the mode change.\footnote{Already not quite true: the
+%    command \cs{noindent} starts the paragraph but influences the
+%    special processing by suppressing the paragraph indentation box
+%    normally inserted by it.}
+%
+%    This \enquote{start of paragraph
+%    processing} first adds an empty box at the start of the
+%    horizontal list of width \cs{parindent} (which represents the
+%    paragraph indentation) unless the paragraph was started with
+%    \cs{noindent} in which case no such box is
+%    added\footnote{That's a bit different from placing a zero-sized
+%    box!}. It then reads and processes all tokens stored in the
+%    special engine token register \cs{everypar}. After that it reads
+%    and processes whatever has caused the paragraph to start.
+%
+%    Thus out of the box, \TeX{} offers the possibility to put some
+%    special code into \cs{everypar} to gain control at (more or less)
+%    the start of the paragraph. For example, in LaTeX{} and a number
+%    of packages,  special code like the following is sometimes used:
+%\begin{verbatim}
+%  \everypar{{\setbox\z@\lastbox}\everypar{} ...}
+%\end{verbatim}
+%    This removes the paragraph indentation box again  (that was already
+%    placed by \TeX), then resets \cs{everypar} so that it doesn't do
+%    anything on the next paragraph start and then does whatever it
+%    wants to do, e.g., in an \cs{item} of a list it will typeset the label in
+%    front of the paragraph text.
+%    However, there is only one such \cs{everypar} token register and
+%    if different packages and/or the kernel all attempt to add their
+%    own code here, coordination is very difficult if not impossible.
+%
+%    The process when the paragraph ends has different mechanisms and interfaces.
+%    A paragraph ends when the engine  primitive \cs{par} is called
+%    while \TeX{} is in unrestricted horizontal mode, i.e., is
+%    building a paragraph. At other times this primitive does nothing
+%    or generates as an error depending on the mode \TeX{} is in,
+%    e.g., the \cs{par} in
+%    \verb=\hbox{a\par b}= is ignored, but \verb=$a\par b$= would complain.
+%
+%    If this primitive ends the paragraph it does some special
+%    \enquote{end of horizontal list} processing, then calls \TeX{} paragraph
+%    builder that breaks the horizontal list into lines then these
+%    lines are added as boxes to the enclosing vertical list and
+%    \TeX{} returns to vertical mode.
+%
+%    This \cs{par} command can be given explicitly, but there are also
+%    situations in which \TeX{} is generating it on the fly. Most
+%    often this happens when \TeX\ encounters a blank line which is
+%    automatically changed to a \cs{par} command which is then
+%    executed. The other possibility is that \TeX{} encounters a
+%    command which is incompatible with horizontal processing, e.g.,
+%    \cs{vskip} (a request for adding vertical space). In such case it
+%    silently backs up, and inserts a \cs{par} in the hope that this
+%    gets it out of horizontal mode and makes the offending command
+%    acceptable.
+
+%    The important point to note here is that \TeX{} really inserts
+%    the command \cs{par} which can be redefined. Thus, it may not have
+%    its original \enquote{primitive} meaning and therefore may not end the
+%    horizontal list and call the paragraph builder. This approach
+%    offers some flexibility but also allows you  to easily produce a
+%    \TeX{} document that loops forever, for example, the simple line
+%\begin{verbatim}
+%   A \let\par\relax \vskip
+%\end{verbatim}
+%    will start a horizontal list at \texttt{A}, redefines \cs{par},
+%    then sees \cs{vskip} and inserts \cs{par} to end the
+%    paragraph. But this now only runs \cs{relax} so nothing changes
+%    and \cs{vskip} is read again, issues a \cs{par} which \ldots. In
+%    short, it takes a plain \TeX{} document with five tokens to run
+%    forever (as not even memory is consumed and therefore eventually
+%    exhausted).
+%
+%    There are no other ways than changing \cs{par} to gain control at
+%    the end of a paragraph, i.e., there is no token list like
+%    \cs{everypar} that is inserted, i.e., the only way to change the
+%    default behavior is to modify the action that \cs{par} executes
+%    with similar issues as outlined before: different processes need
+%    to ensure that they do not overwrite their modifications or
+%    worse, think that the \cs{par} in front of them is the engine
+%    primitive while in fact it has already been changed by other
+%    code.
+%
+%
+%    To make matters slightly worse there are a few places where
+%    \TeX{} handles the situation differently (most likely for speed
+%    reasons back when computers were much slower). If \TeX{} finds
+%    itself in unrestricted horizontal mode at the end of building a
+%    vertical box (or an \cs{insert}, \cs{vadjust} or at the end of
+%    executing the output routine code), it will finish the horizontal
+%    list not by issuing a \cs{par} command (which would be consistent
+%    with all other places, but by simply executing the primitive version
+%    of \cs{par} regardless of the definition that \cs{par} has at the
+%    time.
+%
+%    Thus, if you have carefully crafted a redefined \cs{par} to execute
+%    some special actions at the end of a paragraph and you write
+%    something like
+%\begin{verbatim}
+%   \vbox{Some paragraph ... text.}
+%\end{verbatim}
+%    you will find that your code has never run for the last paragraph
+%    in that box. \LaTeX{} avoids this problem, by making sure that
+%    all its boxes (such as \cs{parbox} or the \env{minipage}
+%    environment, etc.) all internally add an explicit \cs{par} at the
+%    end so that such code is run and \TeX{} finds itself in vertical
+%    mode already without the need to start up the paragraph builder
+%    internally. But, of course, this only works for boxes under direct
+%    control of the \LaTeX{} kernel, if some package uses low-level
+%    \cs{vbox}es without adding this precaution the \TeX{}
+%    optimization kicks in and no special \cs{par} code is executed.
+%
+%    And there is another optimization that is painful: if a paragraph
+%    is interrupted by a mathematical display, e.g., \verb=\[...\]= in
+%    \LaTeX{} or \verb=$$...$$= in plain \TeX{}, then \TeX{} will
+%    resume horizontal mode afterward, i.e., build a new horizontal
+%    list (without inserting an indentation box or \cs{everypar} at
+%    that point). However, if that list immediately ends with an
+%    explicit or implicit \cs{par} then \TeX{} will simply throw away
+%    this \enquote{null} paragraph and not do its usual \enquote{end
+%    of horizontal list} processing, so this special case need to be
+%    accounted for when introducing some extended processing.
+%
+%
+%
+% \section{The new mechanism implemented for \LaTeX{}}
+%
+%    To improve the situation (and also to support automatic tagging
+%    of PDF documents) we now offer public as well as private hooks at
+%    the start and end of the paragraph processing. The public hooks
+%    can be used by packages (or by the user in the preamble or
+%    within the document) and using the hook mechanisms it is possible
+%    to reorder or arrange code from different packages in a way that
+%    it can safely coexist.
+%
+%    To make that happen we have to make use of the basic
+%    functionality that is offered by \TeX{}, e.g., we install
+%    special code inside \cs{everypar} to provide hooks at the
+%    beginning and we redefine \cs{par} to do some special processing
+%    when appropriate to install hooks at the end of the paragraph.
+%
+%    In order to make this work, we have to ensure that package use of
+%    \cs{everypar} is not overwriting our code. This is done through a
+%    trick: we basically hide the real \cs{everypar} from the packages
+%    and offer them a new token register (with the same name). So if
+%    they install their own code it doesn't overwrite ours. Our code
+%    then inserts the new \cs{everypar} at the right place inside the
+%    process so that it looks as if it was the primitive
+%    \cs{everypar}.\footnote{Ideally, \cs{everypar} wouldn't be used
+%    at all by packages and instead they would simply write their code
+%    into the hooks now offered by the kernel. However, while this is
+%    the longterm goal and clearly an improvement (because then the
+%    packages do no longer need to worry about getting their code
+%    overwritten or needing to account for already existing code in
+%    \cs{everypar}), this will not happen overnight. For that reason
+%    support for this legacy method is retained.}
+%
+%    At the end of the paragraph it would be great if we could use a
+%    similar trick. However, due to the fact that \TeX{} inserts the
+%    token \cs{par} (that doesn't have a defined meaning) we can't hide
+%    \enquote{the real thing\textsuperscript{TM}} and offer the
+%    package an indistinguishable alternate.
+%
+%    Fortunately, \LaTeX{} has already redefined \cs{par} for its own
+%    purposes. As a result there aren't many packages that attempt to
+%    change \cs{par}, because without a lot of extra care that would
+%    fail miserably. But bottom line, if you load a package that
+%    alters \cs{par} then the end of paragraph hooks are most likely
+%    not executing while that redefinition is
+%    active.\footnote{Similarly to the \cs{everypar} situation, the
+%    remedy is that such packages stop doing this and instead add
+%    their alterations into the paragraph hooks now provided.}
+%
+%
+%
+% \subsection{The provided hooks}
+%
+%
+%  \begin{variable}{para/before,
+%                   para/begin,
+%                   para/end,
+%                   para/after
+%                 }
+%    The following four public hooks are defined and executed for
+%    each paragraph:
+%    \begin{description}
+%
+%    \item[\hook{para/before}]
+%
+%      This hook is executed after the kernel hook
+%      \cs{@kernel at before@para at before} (discussed below) in vertical
+%      mode immediately after \TeX{} has contributed \cs{parskip} to
+%      the vertical list and before the actual paragraph processing in
+%      horizontal mode starts.
+%
+%      This hook should either not produce any typeset material or add
+%      only vertical material. If it starts a paragraph an error is
+%      generated. The reason is that we are in the starting process of
+%      processing a paragraph and so this would lead to endless
+%      recursion.\footnote{One could allow it but only if the newly
+%      started paragraph is processed without any hooks. Furthermore
+%      correct spacing would be a bit of a nightmare so for now this
+%      is forbidden.}
+%
+%    \end{description}
+%  \end{variable}
+%
+%    \vspace{-\bigskipamount}
+%
+%    \begin{description}
+%
+%    \item[\hook{para/begin}]
+%
+%      This hook is executed after the kernel hook
+%      \cs{@kernel at before@para at begin} (discussed below) in horizontal
+%      mode immediately before the indentation box is placed (if there
+%      is any, i.e., if the paragraph hasn't been started with
+%      \cs{noindent}).
+%
+%      The indentation box to be typeset is available to the hook as
+%      \cs{IndentationBox} and its automatic placement (after the hook is
+%      executed) can be prevented through \cs{SuppressIndentationBox}.
+%
+%      If not suppressed, then the indentation is typeset directly
+%      after the hook execution by something equivalent to
+%      \cs{box}\cs{IndentationBox} followed by the current content of
+%      the token register \cs{everypar} as it is available to the
+%      kernel or to packages (that run some legacy code).
+%
+%      One has to be careful not to add any code to the hook that
+%      starts its own paragraph (e.g., by adding a \cs{parbox} or a
+%      \cs{marginpar} inside) because that would call the hook inside
+%      again (as a new paragraph is started there) and thus lead to an
+%      endless recursion ending only after exhausting the available
+%      memory. This can only be done by making sure that is not
+%      executed for the inner paragraphs (or at least not recursively
+%      forever).
+%
+%
+%    \item[\hook{para/end}]
+%
+%      This hook is executed at the end of a paragraph when \TeX{} is
+%      ready to return to vertical mode and after it has removed the
+%      last horizontal glue (but not kern) placed on the horizontal
+%      list. The code is still executed in horizontal mode so it is
+%      possible to add further horizontal material at this point, but
+%      it should not alter the mode (even a temporary exit from
+%      horizontal mode would create chaos---any attempt will cause an
+%      error message)! After the hook has ended the kernel hook
+%      \cs{@kernel at after@para at end} is executed and then \TeX{} returns to
+%      vertical mode.
+%
+%      The hook is offered as public hook, but because of the
+%      requirement to stay within horizontal mode one needs to be
+%      careful in what is placed into the hook.\footnote{Maybe we
+%      should guard against that, but it would be rather tricky to
+%      implement as mode changes can happen across group boundaries so
+%      one would need to keep a private stack just for that. Well,
+%      something to ponder.}
+%
+%      This hook is implemented as a reversed hook.
+%
+%    \item[\hook{para/after}]
+%
+%      This hook is executed directly after \TeX{} has returned to
+%      vertical mode and after any material that migrated out of the
+%      horizontal list (e.g., from a \cs{vadjust}) has processed.
+%
+%      This hook should either not produce any typeset material or add
+%      only vertical material.
+%      However, for this hook starting a new paragraph is not a
+%      disaster so that it isn't prevented.
+%
+%      This hook is implemented as a reversed hook.
+%
+%      Once that hook code has been processed the kernel hook
+%      \cs{@kernel at after@para at after} is executed as the final action
+%      of the paragraph processing.
+%
+%    \end{description}
+%
+%  \begin{variable}{\@kernel at before@para at before,
+%                   \@kernel at after@para at after,
+%                    \@kernel at before@para at begin,
+%                   \@kernel at after@para at end,
+%                  }
+%    As already mentioned above there are also four kernel hooks that
+%    are executed at the start and end of the processing.
+%    \begin{description}
+%
+%    \item[\cs{@kernel at before@para at before}]
+%       For future extensions, not currently used by the kernel.
+%
+
+%    \item[\cs{@kernel at after@para at after}]
+%       For future extensions, not currently used by the kernel.
+%
+%
+%    \item[\cs{@kernel at before@para at begin}]
+%
+%      Used by the kernel to implement tagging. This hook is executed
+%      at the very beginning of a paragraph after \TeX{} has switched to
+%      horizontal mode but before any indentation box got added or any
+%      \cs{everypar} was run.
+%
+%      It should not generate typeset material that could alter the
+%      position.  Note that it should never leave hmode, otherwise you
+%      will end with a loop! We could guard against this, but since it
+%      is an internal kernel hook that shouldn't be touched this isn't
+%      checked.
+%    \end{description}
+%  \end{variable}
+%
+%    \vspace{-\bigskipamount}
+%
+%    \begin{description}
+%
+%    \item[\cs{@kernel at after@para at end}]
+%
+%      Used by the kernel to implement tagging. It is executed
+%      directly after the public \hook{para/end} hook. After it there
+%      is a quick check that we are still in horizontal mode, i.e.,
+%      that the public hook has not mistakenly ended horizontal mode
+%      prematurely (this is an incomplete check just testing the mode
+%      and could perhaps be improved (at the cost of speed)).
+%
+%    \end{description}
+%
+%
+% \subsection{Altered and newly provided commands}
+%
+% \begin{function}{\par,\endgraf,\para_end:}
+%    An explicit request for ending a paragraph is known in plain
+%    \TeX{} under the name \cs{endgraf} where it simply calls the
+%    paragraph primitive (regardless of what \cs{par} may have as its
+%    current definition). In \LaTeX{} \cs{endgraf} with that behavior
+%    was also made available.
+%
+%    With the new paragraph handling in \LaTeX{}, ending a paragraph
+%    means a bit more than just calling the engine's paragraph
+%    builder: the process also has to add any hook code for the end of
+%    a paragraph. Thus
+%    \cs{endgraf} was changed to provide this additional functionality
+%    (and so by extension \cs{par} subject to its current meaning).
+%
+%    The \pkg{expl3} name for the functionality is \cs{para_end:}.
+% \end{function}
+%
+% \begin{quote}
+%    \textbf{Note:} \em The next two commands are still under
+%    discussion and may slightly change their semantics (as described
+%    in the document) and/or their names between now and the 2021
+%    Spring release!
+% \end{quote}
+%
+% \begin{function}{\SuppressIndentationBox,\para_suppress_indentation:}
+%    Inside the \hook{para/begin} hook one can use this command to
+%    suppress the indentation box at the start of the
+%    paragraph. (Technically it is possible to use this command
+%    outside the hook as well, but this should not be relied upon.)
+%    The box itself remains available for use.
+%
+%    The \pkg{expl3} name for the function is \cs{para_suppress_indentation:}.
+% \end{function}
+%
+% \begin{variable}{\IndentationBox,\g_para_indentation_box}
+%    The box register holding the indentation box for the paragraph is
+%    available for inspection (or changes) inside hooks. It remains
+%    available even if the \cs{SuppressIndentationBox} command was
+%    used; in that case it  will just not be automatically placed.
+%
+%    The \pkg{expl3} name for the box register is \cs{g_para_indentation_box}.
+% \end{variable}
+%
+%
+%
+%
+% \subsection{Examples}
+%
+%    None of the examples in this section are meant for real use as
+%    they are far too simpleminded  but they should give some ideas of
+%    what could be possible if a bit more care is applied.
+%
+% \subsubsection{Testing the mechanism}
+%
+%    The idea is to output for each paragraph encountered some
+%    information: a paragraph sequence number, a level number in roman
+%    numerals, the environment in which this paragraph appears, and
+%    the line number where the start or end of the paragraph is, e.g.,
+%    something like
+%\begin{verbatim}
+%  PARA: 1-i start (document env. on input line 38)
+%  PARA: 1-i end   (document env. on input line 38)
+%  PARA: 2-i start (document env. on input line 40)
+%  PARA: 3-ii start (minipage env. on input line 40)
+%  PARA: 3-ii end   (minipage env. on input line 40)
+%  PARA: 2-i end   (document env. on input line 41)
+%\end{verbatim}
+%    As you can see paragraph 2 starts on line 40 and ends on 41 and
+%    inside a minipage started paragraph 3 (start and end on line 40).
+%    If you run this on some document you will find that \LaTeX{}
+%    considers more things \enquote{a paragraph} than you have
+%    probably thought.
+%
+%    This was generated by the following hook code:
+%\begin{verbatim}
+%  \newcounter{paracnt}         % sequence counter
+%  \newcounter{paralevel}       % level counter
+%\end{verbatim}
+%
+%    To support paragraph nesting we need to maintain a stack of the
+%    sequence numbers. This is most easily done using \pkg{expl3}
+%    functions, so we switch over. This is not a very general
+%    implementation, just enough for what we need and a bit of
+%    \LaTeXe{} thrown in as well. When popping the result gets stored
+%    in \cs{paracntvalue} and the \cs{ERROR}  should never happen
+%    because it means we have tried to pop from an empty stack.
+%\begin{verbatim}
+%  \ExplSyntaxOn
+%  \seq_new:N \g_para_seq
+%  \cs_new:Npn \ParaPush
+%    {\seq_gpush:No  \g_para_seq {\the\value{paracnt}}}
+%  \cs_new:Npn \ParaPop  {\seq_gpop:NNF  \g_para_seq \paracntvalue \ERROR }
+%  \ExplSyntaxOff
+%\end{verbatim}
+%    At the start of the paragraph increment both sequence counter and
+%    level and also save the then current sequence number on our stack.
+%\begin{verbatim}
+%  \AddToHook{para/begin}{%
+%    \stepcounter{paracnt}\stepcounter{paralevel}%
+%    \ParaPush
+%\end{verbatim}
+%    To display the sequence number we \cs{typeout} the current
+%    sequence and level number. The command \cs{@currenvir} gives us
+%    the current environment and \cs{on at line} produces a space and
+%    the current input line number.
+%\begin{verbatim}
+%    \typeout{PARA: \arabic{paracnt}-\roman{paralevel} start
+%      (\@currenvir\space env.\on at line)}%
+%\end{verbatim}
+%    We also typeset the sequence number as a tiny red number in a box
+%    that takes up no horizontal space. This helps us seeing where
+%    \LaTeX{} sees the start and end of the paragraphs in the
+%    document.
+%\begin{verbatim}
+%    \llap{\color{red}\tiny\arabic{paracnt}\ }%
+%  }
+%\end{verbatim}
+%
+%   At the end of the paragraph we display sequence number and
+%    level again. The level counter has the correct value but we need
+%    to retrieve the right sequence value by popping it off the stack
+%    after which it is available in \cs{paracntvalue} the way we have
+%    set this up above.
+%\begin{verbatim}
+%  \AddToHook{para/end}{%
+%    \ParaPop
+%    \typeout{PARA: \paracntvalue-\roman{paralevel} end \space\space
+%      (\@currenvir\space env.\on at line)}%
+%\end{verbatim}
+%    We also typeset again a tiny red number with that value, this
+%    time sticking out to the right.\footnote{Note that this can alter
+%    the document pagination, because a paragraph ending in a display
+%    (e.g., an equation) will get an extra line---in that case our tiny number
+%    has an effect even though it doesn't take up any space, because
+%    it paragraph is no longer empty and thus isn't dropped!}
+%    We also decrement the level counter since our level has finished.
+%\begin{verbatim}
+%    \rlap{\color{red}\tiny\ \paracntvalue}%
+%    \addtocounter{paralevel}{-1}%
+%  }
+%  \makeatother
+%\end{verbatim}
+%
+%
+%
+% \subsubsection{Mark the first paragraph of each \env{itemize}}
+%
+%    The code for this is rather simple. We apply  hook code that is
+%    executed only once inside a hook that is executed at the begin of
+%    each \env{itemize}. We explicitly change the color back and
+%    forth so that we don't introduce grouping around the paragraph.
+%\begin{verbatim}
+%  \AddToHook{env/itemize/begin}{%
+%    \AddToHookNext{para/begin}{\color{blue}}%
+%    \AddToHookNext{para/end}{\color{black}}%
+%  }
+%\end{verbatim}
+%    As a result the first paragraph of each \env{itemize} will appear
+%    in blue.
+%
+%
+% \StopEventually{\setlength\IndexMin{200pt}  \PrintIndex  }
+%
+%
+% \section{The Implementation}
+%
+%    \begin{macrocode}
+%<*2ekernel>
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+%<@@=para>
+\ExplSyntaxOn
+%    \end{macrocode}
+
+
+%
+%
+% \subsection{Providing hooks for paragraphs}
+%
+%
+%  \begin{macro}{para/before,para/after,para/begin,para/end}
+%    The public hooks. They are implemented as a paired set of hooks.
+%    \begin{macrocode}
+\hook_new_pair:nn{para/before}{para/after}
+\hook_new_pair:nn{para/begin}{para/end}
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%  \begin{macro}{\@kernel at before@para at before,
+%                \@kernel at after@para at after,
+%                \@kernel at before@para at begin,
+%                \@kernel at after@para at end}
+%    The corresponding kernel hooks (for tagging and future extensions).
+%    \begin{macrocode}
+\let \@kernel at before@para at before \@empty
+\let \@kernel at before@para at begin  \@empty
+\let \@kernel at after@para at end     \@empty
+\let \@kernel at after@para at after   \@empty
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%
+%
+%  \begin{macro}{\g_@@_standard_everypar_tl}
+%    Whenever \TeX{} starts a paragraph it inserts first an
+%    indentation box and then executes the tokens stored in
+%    \cs{tex_everypar:D} (known to \LaTeX{} as \cs{everypar}). We
+%    alter this behavior slightly here, so that hooks are added
+%    into the right place. Otherwise the process change remains
+%    transparent to any legacy code for this space.
+%
+%    We keep the standard code to be used by \cs{tex_everypar:D} in a
+%    separate token list because we have to switch back and forth
+%    for error recovery and so altering \cs{tex_everypar:D}  all the
+%    time should be a tiny bit faster.
+%    \begin{macrocode}
+\tl_new:N \g_@@_standard_everypar_tl
+%    \end{macrocode}
+%    Here is now its definition:
+%    \begin{macrocode}
+\tl_gset:Nn \g_@@_standard_everypar_tl {
+%    \end{macrocode}
+%    First we remove the indentation box and store it in
+%    \cs{g_para_indentation_box}. If there was none because the paragraph
+%    was started by \cs{noindent} the box register will be void.
+%    \begin{macrocode}
+  \box_gset_to_last:N \g_para_indentation_box
+%    \end{macrocode}
+%
+%    This will make the newly started horizontal list empty, so if we
+%    stop it now and return to vertical mode it will be dropped by
+%    \TeX{}. We do that but inside a group so that any \cs{parshape}
+%    settings will not get lost as we need them for later.
+%    \begin{macrocode}
+  \group_begin:
+    \tex_par:D
+  \group_end:
+%    \end{macrocode}
+%    We then change \cs{tex_everypar:D} to generate an error so that
+%    we can detect and report if the \hook{para/before} hook illegally
+%    changed out of vmode.
+%    \begin{macrocode}
+  \tex_everypar:D { \__kernel_msg_error:nnnn {para}{mode}{before}{vertical} }
+  \@kernel at before@para at before
+  \hook_use:n {para/before}
+%    \end{macrocode}
+%    Assuming the hooks have been well behaved it is time to return to
+%    horizontal mode and start the paragraph in earnest. We already
+%    have the indentation box saved away so we now have to restart the
+%    paragraph with an empty \cs{tex_everypar:D} and with
+%    \cs{tex_noindent:D}. And we need to make sure not to get another
+%    \cs{parskip} or rather (since we can't prevent that) that it is
+%    of zero size.
+%    \begin{macrocode}
+  \group_begin:
+    \tex_everypar:D {}
+    \skip_zero:N \tex_parskip:D
+    \tex_noindent:D
+  \group_end:
+%    \end{macrocode}
+%    That brings us back to the start of the horizontal list but we
+%    need to change \cs{tex_everypar:D} back to its normal content in
+%    case there are nested paragraphs coming up.
+%    \begin{macrocode}
+  \tex_everypar:D{\g_@@_standard_everypar_tl}
+%  \showthe\tex_everypar:D
+%    \end{macrocode}
+%    Then we set up \cs{@@_handle_indent:} to reinsert the indentation
+%    box later. This can be undone via \cs{SuppressIndentationBox}
+%    inside the hook(s).
+%    \begin{macrocode}
+  \cs_set_eq:NN \@@_handle_indent: \@@_add_indentation_box:
+%    \end{macrocode}
+%
+%    This is followed by executing the kernel and the public hook. The
+%    kernel hook is there to enable tagging.
+%    \begin{macrocode}
+  \@kernel at before@para at begin
+  \hook_use:n {para/begin}
+%    \end{macrocode}
+%    If we aren't in horizontal mode any longer the hooks above misbehaved.
+%    \begin{macrocode}
+  \if_mode_horizontal: \else:
+    \__kernel_msg_error:nnnn {para}{mode}{begin}{vertical} \fi:
+%    \end{macrocode}
+%    Finally we reinsert the indentation box (unless suppressed) and
+%    then call \cs{everypar} the way legacy \LaTeX\ code expects it.
+%
+%    However, adding the public \cs{everypar} is a bit tricky (see below) so
+%    we add that later, and indirectly.
+%    \begin{macrocode}
+  \@@_handle_indent:
+% \the \everypar           % <--- done differently
+}
+%    \end{macrocode}
+%  \end{macro}
+%
+%  \begin{macro}[int]{\tex_everypar:D}
+%    \cs{tex_everypar:D} then only has to execute
+%    \cs{g_@@_standard_everypar_tl} by default.
+%    \begin{macrocode}
+\tex_everypar:D{\g_@@_standard_everypar_tl}
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%  \begin{macro}[int]{\everypar}
+%
+%    Tokens inserted at the beginning of the paragraph are placed into
+%    \cs{everypar} inside legacy \LaTeX{} code, e.g., by the list
+%    environments or by headings to handle \cs{clubpenalty}, etc. Now
+%    this isn't any longer the primitive but simply a toks register
+%    used in the code above but to legacy \LaTeX{} code that is
+%    transparent.
+%
+%    There is, however, a problem: a handful packages use exactly the
+%    same trick and replace the primitive with a token register and
+%    call the token register inside the renamed primitive. That is
+%    they assume that \cs{everypar} is the primitive and that it will
+%    still be called at the start of the paragraph even if renamed.
+%
+%    But if we have already replaced it by a token register then all
+%    they do is to give that token register a new name. Thus our code
+%    in \cs{tex_everypar:D} would call \cs{everypar} (which is their
+%    now token register) and the code that they added ends up in our
+%    token register which is then never used at all. A bit mind
+%    boggling I guess.
+%
+%    So what we have to do is not to call the token register
+%    \cs{everypar} by its name inside \cs{tex_everypar:D} but by using
+%    its actual register number.
+%    \begin{macrocode}
+\newtoks \everypar
+%    \end{macrocode}
+%
+%    After we have allocated a new toks register with the name
+%    \cs{everypar} the actual register number is available (briefly)
+%    inside \cs{allocationnumber}. So instead of \cs{the}\cs{everypar}
+%    we have to put \cs{the}\cs{toks}\meta{allocated number} at the end of
+%    \cs{tex_everypar:D}.
+%
+%    So what remains doing is to append a few tokens to the token list
+%    \cs{g_@@_standard_everypar_tl} which we do now. We use \texttt{x}
+%    expansion here to get the value of \cs{allocationnumber} in, all
+%    the other tokens should not be expanded at this point.
+
+%    One important point here is to terminate the register allocation
+%    number with a real space. This space will get swallowed up when
+%    the number is read. Anything else, such as \cs{scan_stop:} would
+%    remain in the input and that would mean that it would interfere
+%    with \cs{everypar} code that attempts to scan ahead to see how
+%    the paragraph text starts.
+%    \begin{macrocode}
+\tl_gput_right:Nx \g_@@_standard_everypar_tl {
+    \exp_not:N \the
+    \exp_not:N \toks
+    \the \allocationnumber
+    \c_space_tl
+}
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%  \begin{macro}{\g_para_indentation_box}
+%    For managing the indentation we need to provide a public
+%    accessible box register
+%    \begin{macrocode}
+\box_new:N \g_para_indentation_box
+%    \end{macrocode}
+%  \end{macro}
+
+%  \begin{macro}{\@@_handle_indent:,\@@_add_indentation_box:}
+%    Adding (typesetting) the indent box is straight forward, the
+%    default action for is \cs{@@_handle_indent:} is
+%    \cs{@@_add_indentation_box:}.
+%    \begin{macrocode}
+\cs_new:Npn \@@_add_indentation_box: {
+  \box_use_drop:N \g_para_indentation_box
+}
+\cs_new_eq:NN \@@_handle_indent: \@@_add_indentation_box:
+%    \end{macrocode}
+%     The declaration \cs{para_suppress_indentation:} (or
+%    \cs{SuppressIndentationBox}) changes that to do nothing.
+%    \begin{macrocode}
+\cs_new:Npn \para_suppress_indentation: {
+  \cs_set_eq:NN \@@_handle_indent: \prg_do_nothing:
+}
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%  \begin{macro}{\IndentationBox,\SuppressIndentationBox}
+%    The \LaTeXe{} names for the indentation box and for suppressing it
+%    for use in the \hook{para/begin} hook.
+%    \begin{macrocode}
+\cs_set_eq:NN \IndentationBox \g_para_indentation_box
+\cs_set_eq:NN \SuppressIndentationBox \para_suppress_indentation:
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%
+%
+%
+%  \begin{macro}{\para_end:}
+%    Adding hooks to the end of a paragraph is similar but here we
+%    need to alter the command that is used by \TeX{} to end horizontal
+%    mode and return to vertical mode, i.e., \cs{par}.
+%
+%    This is a bit more complicated as this command can appear anywhere
+%    either explicitly or implicitly added by \TeX{} in certain
+%    situations:
+%    \begin{itemize}
+%    \item
+%      when using \cs{par} in the code or the document
+%    \item
+%      when using a blank line (which is converted to \cs{par})
+%    \item
+%      when \TeX{} finds any commands incompatible with horizontal
+%      mode it issues a \cs{par} and then rereads the command.
+%    \end{itemize}
+%
+%    Unfortunately, \TeX{} has some (these days) unnecessary
+%    optimization: if a \cs{vbox} ends and \TeX{} is still in
+%    horizontal mode it simply exercises the paragraph builder instead
+%    of issuing a \cs{par}. It is therefore necessary for \LaTeX{} to
+%    ensure that this case doesn't happen and all boxes internally
+%    have a \cs{par} command at their end.
+%
+%    This \cs{par} may or may not run the ``par primitive'' (which is
+%    always available as \cs{tex_par:D} in \pkg{expl3}); it is
+%    permissible to have a changed meaning and it is in fact changed
+%    by \LaTeX{} in various ways at various points inside
+%    \texttt{latex.ltx}.  For this \LaTeXe{} code has the following
+%    conventions: \cs{@@@@par} and \cs{endgraf} both refer to the
+%    default meaning (in the past this was the initex primitive) while
+%    \cs{par} is the current meaning which may does something else.
+%
+%
+%    We are now going to change this default meaning to run
+%    \cs{para_end:} instead, which ultimately executes the initex
+%    primitive but additionally adds our hooks when appropriate.
+%    This way the change is again transparent to the legacy \LaTeXe{}
+%    code.
+%
+%    In most cases \cs{para_end:} should behave exactly like the
+%    primitive and we achieve this by simply expanding it to the
+%    primitive which is available to us as \cs{tex_par:D}. This way we
+%    don't have to care about whether \TeX{} just does nothing (e.g.,
+%    if in vertical mode already) or generate an error, etc.
+%    \begin{macrocode}
+\cs_new_protected:Npn \para_end: {
+%    \end{macrocode}
+%
+%    The only case we care about is when we are in horizontal mode
+%    (i.e., doing typesetting) and not also in inner mode (i.e.,
+%    making paragraphs and not building an \cs{hbox}.
+%    \begin{macrocode}
+%  \bool_lazy_and:nnT
+%       { \mode_if_horizontal_p: }
+%       { \bool_not_p:n { \mode_if_inner_p: } }
+%       { ...
+%    \end{macrocode}
+%    Since this is executed for each and every paragraph in a document
+%    we try to stay a fast as possible, So we are aren't using the
+%    above construct but two conditionals instead. Using low-level
+%    \cs{if_mode...} conditions would be even faster but has the
+%    danger to conflict with conditionals in the user hooks.
+%    \begin{macrocode}
+  \mode_if_horizontal:TF {
+    \mode_if_inner:F {
+%    \end{macrocode}
+%    In that case the action of the primitive would be to remove the
+%    last glue (not kern) from the horizontal list constructed to form
+%    a paragraph then append the a penalty of 10000 and the
+%    \cs{parfillskip} at the end and pass the whole list to the
+%    paragraph builder which breaks it into lines and \TeX{} then
+%    returns to vertical mode.
+%
+%    What we want to do instead is to add our hook code at the end of
+%    the horizontal list before that happens and the code is passed to
+%    the paragraph builder. If there was a glue item at the end then
+%    it should get removed before the hook code gets added so we have
+%    to arrange for its removal ourselves.
+%
+%    There is not much point in checking if there was really a glue
+%    item at the end of the horizontal list, instead we simply try to
+%    remove one using \cs{tex_unskip:D}, if there wasn't one this will
+%    do nothing.
+%    \begin{macrocode}
+         \tex_unskip:D
+%    \end{macrocode}
+%    The we execute the public hook (which may add final typesetting
+%    material) followed by the kernel hook we need for adding tagging
+%    support. None of this is supposed to change the mode---at the
+%    moment we make only a very simple test for this, more devious
+%      changes go unnoticed, but too bad, that will then probably
+%      badly backfire.
+%    \begin{macrocode}
+         \hook_use:n{para/end}
+         \@kernel at after@para at end
+         \mode_if_horizontal:TF {
+%    \end{macrocode}
+%    The final action (before getting to the point where
+%    \cs{tex_par:D} is called) is to add a kern item so that the
+%    primitive is prevented from removing glue (if there was some). If
+%      we don't do this and the
+%    horizontal list ended in several glue items we would end up  with
+%    removing two instead of just the last one, which would be wrong.
+%    We use a kern as that is minimally faster.
+%
+%    There is however one other \TeX{} optimization that hurts: in a
+%    sequence like this \verb=$$ ... $$ \par=  \TeX{} will be in
+%    horizontal mode after the display, ready to receive further
+%    paragraph text, but since the \cs{par} follows immediately there
+%    is a ``null'' paragraph at the end and \TeX{} simply throws that
+%    away. The space between \verb=$$= and \cs{par} got already
+%    dropped during the display processing so the \cs{par} is not
+%    removing any space and appending \cs{parfillskip}, instead it
+%    simply goes silently to vmode. Now if we would had added something (to
+%    prevent glue removal) that would look to \TeX{} like material
+%    after the display and so we would end up with an empty paragraph
+%    just containing \cs{parfillskip}.
+%
+%    We therefore check if the current hlist is empty
+%    (\cs{tex_lastnodetype:D} has the value \texttt{-1} and
+%    only if not we add our kern.
+%    \begin{macrocode}
+           \if_int_compare:w 0 < \tex_lastnodetype:D
+             \tex_kern:D \c_zero_dim
+           \fi:
+%    \end{macrocode}
+%    To run the \hook{para/after} hook we first end the
+%    paragraph. This means that the \cs{tex_par:D} at the very end is
+%    unnecessary but executing it there unnecessarily is better than
+%    having code that test for all the different mode possibilities.
+%    \begin{macrocode}
+           \tex_par:D
+           \hook_use:n{para/after}
+           \@kernel at after@para at after
+         }
+%    \end{macrocode}
+%    If we haven't been in horizontal mode then the earlier hook
+%    \hook{para/end} is at fault and we report that.
+%    \begin{macrocode}
+         { \__kernel_msg_error:nnnn {para}{mode}{end}{horizontal} }
+%    \end{macrocode}
+%    Finally close out the nested conditionals.
+%    \begin{macrocode}
+    }
+  }  
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+  \tex_par:D
+}
+%    \end{macrocode}
+%  \end{macro}
+%
+%    This ends the \texttt{para} module code.
+%    \begin{macrocode}
+%<@@=>
+%    \end{macrocode}
+%
+%  \begin{macro}{\par,\endgraf}
+%  \begin{macro}[int]{\@@par}
+%
+%    Having the new default definition for \cs{par} we also have to
+%    set it up so that it gets used. This is needed in three places
+%    \cs{par}, \cs{@@par} (to which \LaTeX{} resets \cs{par}
+%    occasionally) and \cs{endgraf} which is another name for the
+%    ``default'' action of \cs{par}.
+%    \begin{macrocode}
+\cs_set_eq:NN \par     \para_end:
+\cs_set_eq:NN \@@par   \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+%    \end{macrocode}
+%  \end{macro}
+%  \end{macro}
+%
+%    While this is not integrated properly into the format we have to
+%    redo the \cs{everypar} setting from the kernel, otherwise that
+%    gets lost (as it happens before that file is loaded).
+%    \begin{macrocode}
+\everypar{\@nodocument} %% To get an error if text appears before the
+%    \end{macrocode}
+%
+%
+%   \subsection{The error messages}
+%
+%    Well, one really, first argument is the hook name second the mode
+%    it should have stayed in but didn't.
+%    \begin{macrocode}
+\__kernel_msg_new:nnnn {para} {mode}
+  {
+    Illegal~mode~ change~ in~ hook~ 'para/#1'.\\
+    Hook~ code~ did~ not~ remain~ in~ #2~ mode.
+  }
+  {
+    Paragraph~ hooks~ cannot~ change~ the~ TeX~ mode~ without~ causing~
+    endless~ recursion.~ The~ hook~ code~ in~ 'para/#1'~ needs~ to~ stay~
+    in~ #2~ mode,~ but~ it~ didn't.~ Examine~ the~ hook~
+    code~ with~ \ShowHook~ to~ find~ the~ issue.
+  }
+%    \end{macrocode}
+%
+%    \begin{macrocode}
+\ExplSyntaxOff
+%    \end{macrocode}
+%
+%  \subsection{Kernel corrections}
+%
+%    These corrections/changes are already part of the 2021/05
+%    release, i.e., but for testing with older releases they have been
+%    included here for now. So this section will vanish soon.
+%
+%
+%    Marginpar boxes are missing a final internal \cs{par}.
+%    \begin{macrocode}
+\IfFormatAtLeastTF{2021/05/01}{}
+{
+\long\def \@savemarbox #1#2{%
+  \global\setbox #1%
+    \color at vbox
+      \vtop{%
+        \hsize\marginparwidth
+        \@parboxrestore
+        \@marginparreset
+        #2\par                    % <-- needed
+        \@minipagefalse
+        \outer at nobreak
+        }%
+    \color at endbox
+}
+%    \end{macrocode}
+%
+%    Two sample definitions for the kernel hooks to help a bit with
+%    tracing.
+%    \begin{macrocode}
+\newcounter{paracnt}
+\def\@kernel at before@para at begin{%
+  \stepcounter{paracnt}%
+  \typeout{PARA: \arabic{paracnt} start
+    (\@currenvir\space level\on at line)}%
+}
+\def\@kernel at after@para at end  {%
+  \typeout{PARA: \arabic{paracnt} end \space\space
+    (\@currenvir\space level\on at line)}%
+  \addtocounter{paracnt}{-1}%
+}
+%    \end{macrocode}
+%
+%
+%    The next lines belong in the kernel and just make sure that  we
+%    avoid the these days unnecessary optimization that \TeX{} doesn't
+%    call on \cs{par} if a vertical box ends in hmode. Instead \TeX{}
+%    directly calls the par builder in that case :-(.
+%    \begin{macrocode}
+\let\color at begingroup\begingroup
+\def\color at endgroup{\endgraf\endgroup}
+\def\color at setgroup{\color at begingroup}  % \def\color at setgroup{\color at begingroup\set at color}
+\def\color at hbox{\hbox\bgroup\color at begingroup}
+\def\color at vbox{\vbox\bgroup\color at begingroup}
+\def\color at endbox{\color at endgroup\egroup}
+}
+%    \end{macrocode}
+%
+%
+%
+%    \begin{macrocode}
+%<*2ekernel>
+%    \end{macrocode}
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+
+%%%% unused as hok was dropped
+
+% \subsubsection{Put the first word of each paragraph in an \cs{fbox} and append
+%    a \P{} sign at the end of the paragraph}
+%
+%    We make the assumption that the first word ends in a space so
+%    that we can grab it easily (which
+%    is of course not quite right). So here is the code for that.
+%\begin{verbatim}
+%  \def\firstwordboxed#1 {\fbox{#1} }
+%\end{verbatim}
+%    Installing that is then just a matter of putting it into the right
+%    hook. Since we don't want to box the indentation (or what comes
+%    from \cs{everypar} we shouldn't use \hook{para/begin} but
+%    \hook{para/textbegin}.
+%    Adding the \P{} is equally simple.
+%\begin{verbatim}
+%  \AddToHook{para/textbegin}{\firstwordboxed}
+%  \AddToHook{para/end}{\P}
+%\end{verbatim}
+%    While this will work more or less flawless (if you accept that it
+%    will pick up any punctuation after the first word), it will fail
+%    in at least two cases.
+%    \begin{itemize}
+%    \item Single word paragraphs ending with \cs{par} instead of an
+%    empty line will blow up because the \cs{par} will be picked up as
+%    part of the argument and error as our \cs{firstwordboxed} doesn't
+%    accept a \cs{par} not being long. That is actually good, because
+%    picking it up would be worse: it would get ignored inside
+%    \cs{fbox} and so the paragraph would be combined with the next
+%    (or worse).
+%
+%    \item The second problem is, of course, that sticking it into
+%    every \hook{para/textbegin} means it get applied to places like
+%    \cs{section} which is not really what you want. So some more
+%    elaborate mechanism would be necessary---a task for another rainy
+%    day.
+%    \end{itemize}
+%
+%    There is one other point to note here. The \cs{firstwordboxed} is
+%    expected to scan ahead. So can that kind of code be placed into a
+%    hook? The answer is a kind of yes and no.
+
+%    Hooks can receive code from different places, but obviously only
+%    one chunk of code can do some scanning ahead, the one that comes
+%    last. Any hook code in a different position would see any
+%    following code from later chunks as part of the scanning which
+%    may or may not be a problem. In fact, even in our simple example,
+%    the argument picked up by \cs{firstwordboxed} isn't really the
+%    first word of the paragraph. It is that but in front of it there
+%    is also the code responsible for running
+%    \verb=\AddTohookNext{para/textbegin}=. As long as this is not
+%    doing anything harmful it doesn't hurt in this case, but it
+%    clearly shows that this example is not as  simple as it
+%    claims to be and on the whole we have to conclude that hooks
+%    aren't really meant to do such scanning or at least not without a
+%    lot of precaution.
+%


Property changes on: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpara.dtx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltpictur.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltplain.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltplain.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltplain.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltsect.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltsect.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltsect.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltshipout.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,6 +1,7 @@
 % \iffalse meta-comment
 %%
-%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2021
+%%               Frank Mittelbach, LaTeX Team
 %%
 %
 % This file is part of the LaTeX base system.
@@ -31,8 +32,8 @@
 %%% From File: ltshipout.dtx
 %
 %    \begin{macrocode}
-\providecommand\ltshipoutversion{v1.0d}
-\providecommand\ltshipoutdate{2020/12/06}
+\providecommand\ltshipoutversion{v1.0i}
+\providecommand\ltshipoutdate{2021/01/25}
 %    \end{macrocode}
 %
 %<*driver>
@@ -55,6 +56,9 @@
   }
 \ExplSyntaxOff
 
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
 \EnableCrossrefs
 \CodelineIndex
 \begin{document}
@@ -108,11 +112,50 @@
 %    It then stores it in a named box register.  This box can then be
 %    manipulated through a set of hooks after which it is shipped out
 %    for real.
+%
+%    Each shipout that actually happens (i.e., where the material is
+%    not discarded for one or the other reason) is recorded and the
+%    total number is available in a readonly variable and in a
+%    \LaTeX{} counter.
 % \end{function}
 %
+%
+% \begin{function}{\RawShipout}
+%    This command implements a simplified shipout that bypasses the
+%    foreground and background 
+%    hooks, e.g., only \hook{shipout/firstpage} and
+%    \hook{shipout/lastpage} are executed and the total shipout
+%    counters are incremented.
+%
+%    The command doesn't use \cs{ShipoutBox} but its own private box
+%    register so that it can be used inside of shipout hooks to do
+%    some additional shipouts while already in the output routine with
+%    the current page being stored in \cs{ShipoutBox}. It does have
+%    access to \cs{ShipoutBox} if it is used in \hook{shipout/before}
+%    (or \hook{shipout/after}) and can use its content.
+%
+%    It is safe to use it in \hook{shipout/before} or
+%    \hook{shipout/after} but not necessarily in the other
+%    \hook{shipout/...} hooks as they are intended for special
+%    processing.
+% \end{function}
+%
 %  \begin{variable}{\ShipoutBox,\l_shipout_box}
-%    This box register is called \cs{ShipoutBox} (alternatively available via the
-%    L3 name \cs{l_shipout_box}).
+%    This box register is called \cs{ShipoutBox} (alternatively
+%    available via the L3 name \cs{l_shipout_box}).
+%
+%    During the execution of \hook{shipout/before} this box contains
+%    the accumulated material for the page, but not yet any material
+%    added by other shipout hooks.
+%    During execution of \hook{shipout/after}, i.e., after the shipout
+%    has happened, the box also contains any background or foreground
+%    material.
+%
+%    Material from the hooks \hook{shipout/firstpage} or
+%    \hook{shipout/lastpage} is not included (but only used during the
+%    actual shipout) to facilitate reuse of the box data (e.g.,
+%    \hook{shipout/firstpage} material should never be added to a
+%    later page of the output).
 %  \end{variable}
 %
 %
@@ -133,11 +176,11 @@
 %
 % \subsection{Provided hooks}
 %
-%  \begin{variable}{shipout/before,
+%  \begin{variable}{shipout/before,shipout/after,
 %                   shipout/foreground,shipout/background,
 %                   shipout/firstpage,
 %                   shipout/lastpage}
-%    The code offers a number of hooks into which packages (or the
+%    The code for \cs{shipout} offers a number of hooks into which packages (or the
 %    user) can add code to support different use cases.
 %    These are:
 %    \begin{description}
@@ -148,6 +191,20 @@
 %       It can be used to alter that box content or to discard it
 %       completely (see \cs{DiscardShipoutBox} below).
 %
+%       You can use \cs{RawShipout} inside this hook for special use
+%       cases. It can make use of \cs{ShipoutBox} (which doesn't yet
+%       include the background and foreground material).
+%
+%       \textbf{Note:} It is not possible (or say advisable) to try
+%       and use this hook to typeset material with the intention to
+%       return it to main vertical list, it will go wrong and give
+%       unexpected results in many cases---for starters it will appear
+%       after the current page not before or it will vanish or the
+%       vertical spacing will be wrong!
+%    \end{description}
+%  \end{variable}
+%
+%    \begin{description}
 %    \item[\hook{shipout/background}]
 %
 %       This hook adds a picture environment into the background of
@@ -186,9 +243,14 @@
 %       not discarded at the last minute). It should only contain
 %       \cs{special} or similar commands needed to direct post processors
 %       handling the \texttt{.dvi} or \texttt{.pdf} output.\footnotemark
+%  \footnotetext{In
+%         \LaTeXe{} that was already existing, but implemented using a box
+%         register with the name \cs{@begindvibox}.}
 %
 %       ^^A \fmi{not sure it has to be that restrictive.}
 %
+%       This hook is added to the very first page regardless of how it
+%       is shipped out (i.e., with \cs{shipout} or \cs{RawShipout}).
 %
 %    \item[\hook{shipout/lastpage}]
 %
@@ -196,6 +258,7 @@
 %       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.
+%       Again it is executed regardless of the shipout method.
 %
 %       It may not be possible for \LaTeX{} to correctly determine
 %       which page is the last one without several reruns. If this
@@ -203,17 +266,32 @@
 %       extra page to place the material and also request a rerun to
 %       get the correct placement sorted out.
 %
+%    \item[\hook{shipout/after}]
+%
+%       This hook is executed after a shipout has happened. If the
+%       shipout box is discarded this hook is not looked at.
+%
+%       You can use \cs{RawShipout} inside this hook for special use
+%       cases and the main \cs{ShipoutBox} is still available at this
+%       point (but in contrast to \hook{shipout/before} it now
+%       includes the background and foreground material).
+%
+%       \textbf{Note:} Just like \hook{shipout/before} this hook is
+%       not meant to be used for adding adding typeset material back
+%       to the main vertical list---it might vanish or the
+%       vertical spacing will be wrong!
+%
+%
 %    \end{description}
-%  \end{variable}\footnotetext{In
-%         \LaTeXe{} that was already existing, but implemented using a box
-%         register with the name \cs{@begindvibox}.}
 %
 %    As mentioned above the hook \hook{shipout/before} is executed
 %    first and can manipulate the prepared shipout box stored in
 %    \cs{ShipoutBox} or set things up for use in \cs{write} during the
-%    actual shipout. The other hooks are added inside hboxes to the
-%    box being shipped out in the following
-%    order:
+%    actual shipout. It is even run if there was a
+%    \cs{DiscardShipoutBox} request in the document.
+%
+%    The other hooks (except \hook{shipout/after}) are added inside
+%    hboxes to the box being shipped out in the following order:
 %    \begin{center}
 %    \begin{tabular}{ll}
 %       \hook{shipout/firstpage}   & only on the first page \\
@@ -226,14 +304,22 @@
 %    If any of the hooks has no code then that particular no box is
 %    added at that point.
 %
+%    Once the (page) box has been shipped out the \hook{shipout/after}
+%    hook is called (while you are still inside the output routine). It
+%    is not called if the shipout box was discarded.
+%
 %    In a document that doesn't produce pages, e.g., only makes
-%    \cs{typeout}s, none of the hooks are executed (as there is no
+%    \cs{typeout}s, none of the hooks are ever executed (as there is no
 %    \cs{shipout}) not even the \hook{shipout/lastpage} hook.
 %
+%    If \cs{RawShipout} is used instead of \cs{shipout} then only the
+%    hooks \hook{shipout/firstpage} and \hook{shipout/lastpage} are
+%    executed (on the first or last page), all others are bypassed.
 %
+%
+%
 % \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
@@ -256,12 +342,12 @@
 %
 % \subsection{Special commands for use inside the hooks}
 %
-% \begin{function}{\DiscardShipoutBox,\shipout_discard_box:}
+% \begin{function}{\DiscardShipoutBox,\shipout_discard:}
 %   \begin{syntax}
 %     \cs{AddToHookNext} \texttt{\{shipout/before\} \{...\cs{DiscardShipoutBox}...\}}
 %   \end{syntax}
 %    The \cs{DiscardShipoutBox} declaration (L3 name
-%    \cs{shipout_discard_box:})
+%    \cs{shipout_discard:})
 %    requests that on the next
 %    shipout the page box is thrown away instead of being shipped to
 %    the \texttt{.dvi} or \texttt{.pdf} file.
@@ -272,6 +358,8 @@
 %    Note that if this declaration is used directly in the document it
 %    may depend on the placement to which page it applies, given that
 %    \LaTeX{} output routine is called in an asynchronous manner!
+%    Thus normally one would use this only as part of the
+%    \hook{shipout/before} code.
 %
 %    \fmi{Once we have a new mark mechanism available we can improve
 %    on that and make sure that the declaration applies to the page
@@ -290,12 +378,28 @@
 %    names as given below.
 %
 %
+%
+% \subsection{Provided Lua\TeX\ callbacks}
+% 
+%  \begin{variable}{pre_shipout_filter}
+%    Under Lua\TeX{} the \texttt{pre\_shipout\_filter} Lua callback is
+%    provided which gets called immediately before the shipout primitive gets invoked.
+%    The signature is
+%    \begin{verbatim}
+%     function(<node> head)
+%       return true
+%     end
+%    \end{verbatim}
+%    The \texttt{head} is the list node corresponding to the box to be shipped out.
+%    The return value should always be \texttt{true}.
+%  \end{variable}
+%
 % \subsection{Information counters}
 %
 %
 %  \begin{variable}{\ReadonlyShipoutCounter,\g_shipout_readonly_int}
 %   \begin{syntax}
-%     \cs{ifnum}\cs{ReadOnlyShipoutCounter}\texttt{=...}
+%     \cs{ifnum}\cs{ReadonlyShipoutCounter}\texttt{=...}
 %     \cs{int_use:N} \cs{g_shipout_readonly_int} \texttt{\% expl3 usage}
 %   \end{syntax}
 %    This integer holds the number of pages shipped out up to now
@@ -303,6 +407,7 @@
 %    routine). More precisely, it is incremented only after it is
 %    clear that a page will be shipped out, i.e., after the
 %    \hook{shipout/before} hook (because that might discard the page)!
+%    In contrast \hook{shipout/after} sees the incremented value.
 %
 %    Just like with the \texttt{page} counter its value is
 %    only accurate within the output routine. In the body of the
@@ -310,10 +415,11 @@
 %    asynchronously!
 %
 %    Also important: it \emph{must not} be set, only read. There are
-%    no provisions to prevent that but if you do, chaos will be the
-%    result. To emphasize this fact it is not provided as a \LaTeX{}
-%    counter but as a \TeX{} counter (i.e., a command), so
-%    \cs{Alph}\Arg{\cs{ReadonlyShipoutCounter}} etc, would not work.
+%    no provisions to prevent that restriction, but if you manipulate
+%    it, chaos will be the result. To emphasize this fact it is not
+%    provided as a \LaTeX{} counter but as a \TeX{} counter (i.e., a
+%    command), so \cs{Alph}\verb={=\cs{ReadonlyShipoutCounter}\verb=}=
+%    etc, would not work.
 %  \end{variable}
 %
 %  \begin{variable}{totalpages,\g_shipout_totalpages_int}
@@ -325,7 +431,8 @@
 %    \texttt{totalpages} counter is a \LaTeX{} counter and incremented
 %    for each shipout attempt including those pages that are discarded
 %    for one or the other reason. Again \hook{shipout/before} sees
-%    the counter before it is incremented).
+%    the counter before it is incremented. In contrast
+%    \hook{shipout/after} sees the incremented value.
 %
 %    Furthermore, while it is incremented for each page, its value is
 %    never used by \LaTeX. It can therefore be freely reset or changed by user
@@ -427,6 +534,21 @@
 %    This is the name of the shipout box as \pkg{atbegshi} knows it.
 % \end{function}
 %
+%
+% \begin{function}{\AtBeginShipoutOriginalShipout}
+%    This is the name of the \cs{shipout} primitive as \pkg{atbegshi}
+%    knows it. This bypasses all the mechanisms set up by the \LaTeX{}
+%    kernel and there are various scenarios in which it can therefore
+%    fail. It should only be used to run existing legacy
+%    \pkg{atbegshi} code but not in newly developed applications.
+%
+%    The kernel alternative is \cs{RawShipout} which is integrated
+%    with the \LaTeX{} mechanisms and updates, for example, the
+%    \cs{ReadonlyShipoutCounter} counter. Please use \cs{RawShipout}
+%    for new code if you want to bypass the before, foreground and
+%    background hooks.
+% \end{function}
+%
 % \begin{function}{\AtBeginShipoutInit}
 %   By default \pkg{atbegshi} delayed its action until
 %    \verb=\begin{document}=.  This command was forcing it in an earlier
@@ -591,8 +713,43 @@
 %  \end{macro}
 %
 %
+%  \begin{macro}{\l_@@_raw_box}
+%    The \cs{RawShipout} gets its own box but it is internal as there
+%    is no hook manipulation for it.
+%    \begin{macrocode}
+\box_new:N  \l_@@_raw_box
+%    \end{macrocode}
+%  \end{macro}
 %
 %
+%  \begin{macro}{\@@_finalize_box:}
+%    For Lua\TeX{} invoke the \texttt{pre\_shipout\_filter} callback.
+%  \changes{v1.0i}{2021/01/22}{Add \texttt{pre\_shipout\_filter} Lua callback}
+%    \begin{macrocode}
+\sys_if_engine_luatex:TF
+  {
+    \newluafunction \@@_finalize_box:
+    \exp_args:Nx \everyjob {
+      \exp_not:V \everyjob
+      \exp_not:N \lua_now:n {
+        luatexbase.create_callback('pre_shipout_filter', 'list')
+        local~call, getbox, setbox = luatexbase.call_callback, tex.getbox, tex.setbox~
+        lua.get_functions_table()[\the \@@_finalize_box:] = function()
+          local~result = call('pre_shipout_filter', getbox(\the \l_shipout_box))
+          if~not (result == true) then~
+            setbox(\the \l_shipout_box, result~or~nil)
+          end~
+        end
+      }
+    }
+    \protected \luadef \@@_finalize_box: \the \@@_finalize_box:
+  } {
+    \cs_set_eq:NN \@@_finalize_box: \scan_stop:
+  }
+%    \end{macrocode}
+%  \end{macro}
+%
+%
 %  \begin{macro}{\@@_execute:}
 %    This is going to the be the code run by \cs{shipout}. The code
 %    follows closely the  ideas from \pkg{atbegshi}, so not
@@ -618,7 +775,8 @@
 %
 %  \begin{macro}{\l_@@_group_level_tl}
 %    Helper token list to record the group level at which
-%    \cs{@@_execute:} is encountered.  \begin{macrocode}
+%    \cs{@@_execute:} is encountered.
+%    \begin{macrocode}
 \tl_new:N \l_@@_group_level_tl
 %    \end{macrocode}
 %  \end{macro}
@@ -632,8 +790,7 @@
 \cs_new:Npn \@@_execute_test_level: {
   \int_compare:nNnT
      \l_@@_group_level_tl < \tex_currentgrouplevel:D 
-     \tex_aftergroup:D
-  \@@_execute_cont:
+     \tex_aftergroup:D \@@_execute_cont:
 }
 %    \end{macrocode}
 %  \end{macro}
@@ -640,20 +797,71 @@
 %
 %
 %  \begin{macro}{\@@_execute_cont:}
+%    This does the actual shipout running several hooks as part of it.
+%    The code for them is passed as argument \verb=#2= to \verb=#4=
+%    to \cs{@@_execute_main_cont:Nnnn}; the first argument is the box
+%    to be shipped out.
+%    \begin{macrocode}
+\cs_new:Npn \@@_execute_cont: {
+  \@@_execute_main_cont:Nnnn
+     \l_shipout_box
+     { \hook_use:n {shipout/before} }
+     { \hook_if_empty:nF {shipout/foreground}
+         { \@@_add_foreground_picture:n
+             { \hook_use:n {shipout/foreground} } }
+%    \end{macrocode}
+%    If the user hook for the background (\hook{shipout/background}) has
+%    no code, there might still code in the kernel hook so we need to
+%    test for this too.
+%    We only test for the \cs{@kernel at before@shipout at background}
+%    though. If the  \cs{@kernel at after@shipout at background} needs
+%    executing even if the user hook is empty then we can add another
+%    test (or the kernel could put something into the before hook).
+%                   
+% \changes{v1.0d}{2020/11/23}{Check for both kernel and user hook (gh/431)}
+% \changes{v1.0f}{2021/01/08}{Added another kernel hook for more
+%    flexibility (cf \texttt{https://github.com/pgf-tikz/pgf/issues/960}}
+%    \begin{macrocode}
+       \bool_lazy_and:nnF
+         { \hook_if_empty_p:n {shipout/background} }
+         { \tl_if_empty_p:N \@kernel at before@shipout at background }
+         { \@@_add_background_picture:n
+           { \@kernel at before@shipout at background
+             \hook_use:n {shipout/background}
+             \@kernel at after@shipout at background }
+         }
+     }
+     { \hook_use:n {shipout/after} }
+}
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%  \begin{macro}{\@@_execute_main_cont:Nnnn}
 %    When we have reached this point the shipout box has been
 %    processed and is available in \cs{l_shipout_box} and ready for
-%    real ship out (perhaps)..
+%    real ship out (unless it gets discarded during the process).
 %
+%    The three arguments hold hook code that is executed just before the
+%    actual shipout (\verb=#1=), within the shipout adding
+%    background and foreground material (\verb=#2=) and after the
+%    shipout has happened (\verb=#3=).
+%    These are passed as arguments because the same code without those
+%    hooks is also used when doing a ``raw'' shipout implemented by
+%    \cs{RawShipout}.
+%    The only hook that is always executed is that for the very last
+%    page, i.e., \hook{shipout/lastpage}.
+%
 %    First we quickly check if it is void (can't happen in the
 %    standard \LaTeX{} output routine but \cs{shipout} might be called
 %    from a package that has some special processing logic). If it is
 %    void we aren't shipping anything out and processing ends.\footnote{In that
-%    case we don't reset the deadcyles, that would be up to the OR
+%    case we don't reset the deadcycles, that would be up to the OR
 %    processing logic to do.}
 %    \begin{macrocode}
-\cs_new:Npn \@@_execute_cont: {
-  \box_if_empty:NTF \l_shipout_box
-    { \PackageWarning{ltshipout}{Ignoring~ void~ shipout~ box} }
+\cs_new:Npn \@@_execute_main_cont:Nnnn #1#2#3#4 {
+  \box_if_empty:NTF #1
+    { \@latex at warning{Ignoring~ void~ shipout~ box} }
     {
 %    \end{macrocode}
 %    Otherwise we assume that we will ship something and prepare for
@@ -661,7 +869,8 @@
 %    \cs{protect} while we are running the hook code).
 %    We also save the current \cs{protect} state to restore it later.
 %    \begin{macrocode}
-      \bool_gset_false:N \g_@@_discard_bool
+%      \bool_gset_false:N \g_@@_discard_bool  % setting this would disable
+                                              % \DiscardShipoutBox on doc-level
       \cs_set_eq:NN \@@_saved_protect: \protect
       \set at typeset@protect
 %    \end{macrocode}
@@ -670,11 +879,12 @@
 %    necessary as the code could access them via \cs{box_ht:N}, etc.,
 %    but it is perhaps convenient.}
 %    \begin{macrocode}
-      \@@_get_box_size:N \l_shipout_box
+      \@@_get_box_size:N #1
 %    \end{macrocode}
-%    Then we execute the \hook{shipout/before} hook.
+%    Then we execute the \hook{shipout/before} hook (or nothing in
+%    case of \cs{RawShipout}).
 %    \begin{macrocode}
-      \hook_use:n {shipout/before}
+      #2
 %    \end{macrocode}
 %    In \cs{g_shipout_totalpages_int} we count all shipout attempts so
 %    we increment that counter already here (the other one is
@@ -693,7 +903,7 @@
 %    we now test for it.
 %    \begin{macrocode}
       \bool_if:NTF \g_@@_discard_bool
-        { \PackageInfo{ltshipout}{Completed~ page~ discarded}
+        { \@latex at info@no at line{Completed~ page~ discarded}
           \bool_gset_false:N \g_@@_discard_bool
 %    \end{macrocode}
 %    As we are discarding the page box and not shipping anything out,
@@ -707,7 +917,7 @@
 %    needed? Or the resetting of \cs{protect} to its kernel value?}
 %    \begin{macrocode}
 %          \group_begin:
-%            \box_set_eq_drop:NN \l_shipout_box \l_shipout_box
+%            \box_set_eq_drop:NN #1 #1
 %          \group_end:
 %          \cs_set_eq:NN \protect \exp_not:N
         }
@@ -718,8 +928,8 @@
 %    once more but this time make it a warning, because the best
 %    practice way is to use the request mechanism.
 %    \begin{macrocode}
-        { \box_if_empty:NTF \l_shipout_box
-            { \PackageWarning{ltshipout}{
+        { \box_if_empty:NTF #1
+            { \@latex at warning{
                 Shipout~ box~ was~ voided~ by~ hook,\MessageBreak
                 ignoring~ shipout~ box  }
             }
@@ -743,33 +953,36 @@
 %    changed) and then look at the hooks \hook{shipout/foreground}
 %    and \hook{shipout/background}. If either or both are non-empty
 %    we add a \texttt{picture} environment to the box (in the
-%    foreground and or in the background) and execute the hook code
+%    foreground and/or in the background) and execute the hook code
 %    inside that environment.
 %    
 %    \begin{macrocode}
-              \@@_get_box_size:N \l_shipout_box
-              \hook_if_empty:nF {shipout/foreground}
-                   { \@@_add_foreground_picture:n
-                     { \hook_use:n {shipout/foreground} } }
+              \@@_get_box_size:N #1
 %    \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)}
+%    The first hook we run is the \hook{shipout/firstpage} hook. This
+%    is only done once, then the \cs{@@_run_firstpage_hook:}
+%    command redefines itself to do nothing. If the hook contains
+%    \cs{special}s for integration at the top of the page they will be
+%    temporarily stored in a safe place and added later with
+%    \cs{@@_add_firstpage_specials:}.
 %    \begin{macrocode}
-              \bool_lazy_and:nnF
-                   { \hook_if_empty_p:n {shipout/background} }
-                   { \tl_if_empty_p:N \@kernel at before@shipout at background }
-                   { \@@_add_background_picture:n
-                     { \@kernel at before@shipout at background
-                       \hook_use:n {shipout/background} } }
+              \@@_run_firstpage_hook:
 %    \end{macrocode}
-%    We then run \cs{@@_execute_firstpage_hook:} that adds
+%    Run the hooks for background and foreground or, if this
+%    is called by \cs{RawShipout}, copy the box \cs{l_@@_raw_box} to
+%    \cs{l_shipout_box} so that firstpage and lastpage material gets
+%    added if necessary (that is always done to \cs{l_shipout_box}.
+%    \begin{macrocode}
+              #3
+%    \end{macrocode}
+%    We then run \cs{@@_add_firstpage_specials:} that adds
 %    the content of the hook \hook{shipout/firstpage} to the
 %    start of the first page (if non-empty). It is then redefined to
 %    do nothing on later pages.
 %    \begin{macrocode}
-              \@@_execute_firstpage_hook:
+              \@@_add_firstpage_specials:
 %    \end{macrocode}
-%    The we check if we have to add the \hook{shipout/lastpage} hook
+%    Then 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.
@@ -780,12 +993,14 @@
                     { \hook_if_empty_p:n {shipout/lastpage} }
                     { \tl_if_empty_p:N \@kernel at after@shipout at lastpage }
                     { \@@_debug:n { \typeout{Executing~ lastpage~ hook~
-                          on~ page~ \int_use:N \g_shipout_readonly_int }        }
-                      \_@@_add_foreground_box:n { \UseHook{shipout/lastpage}
-                                                  \@kernel at after@shipout at lastpage }
+                          on~ page~ \int_use:N \g_shipout_readonly_int } }
+                      \_@@_add_foreground_box:n
+                          { \UseHook{shipout/lastpage}
+                            \@kernel at after@shipout at lastpage }
                     }
                     \bool_gset_true:N \g_@@_lastpage_handled_bool
                 }
+              \@@_finalize_box:
 %    \end{macrocode}
 %    Finally we run the actual \TeX{} primitive for shipout. As that will
 %    expand delayed \cs{write} statements inside the page in which
@@ -794,6 +1009,21 @@
 %    \begin{macrocode}
               \cs_set_eq:NN \protect \exp_not:N
               \tex_shipout:D \box_use:N \l_shipout_box
+%    \end{macrocode}
+%    The \cs{l_shipout_box} may contain the firstpage material if this
+%    was the very first shipout. That makes it unsuitable for reuse in
+%    another shipout, so as a safety measure the next command resets
+%    \cs{l_shipout_box} to its earlier state if that is necessary. On
+%    later pages this is then a no-op.
+%    \begin{macrocode}
+              \@@_drop_firstpage_specials:
+%    \end{macrocode}
+%    The \hook{shipout/after} hook (if in \verb=#4=) needs to run with
+%    \cs{protect}ed commands again being executed, because that hook
+%    will ``typeset'' material added at the top of the next page.
+%    \begin{macrocode}
+              \set at typeset@protect
+              #4
             }
         }
 %    \end{macrocode}
@@ -808,6 +1038,54 @@
 %  \end{macro}
 %
 %
+%
+%
+%  \begin{macro}{\@@_execute_raw:,
+%                \@@_execute_test_level_raw:}
+%
+%    This implements the ``raw'' shipout which bypasses the before,
+%    foreground, background and after hooks. It follows the same pattern than
+%    \cs{_@@_execute_raw:} except that it finally calls
+%    \cs{_@@_execute_main_cont:Nnnn} with three empty arguments.
+%    instead of the hook code.
+%    \begin{macrocode}
+\cs_set_protected:Npn \@@_execute_raw: {
+  \tl_set:Nx \l_@@_group_level_tl
+     { \int_value:w \tex_currentgrouplevel:D }
+  \tex_afterassignment:D \@@_execute_test_level_raw:
+  \tex_setbox:D \l_@@_raw_box
+}
+%    \end{macrocode}
+%    
+%    \begin{macrocode}
+\cs_new:Npn \@@_execute_test_level_raw: {
+  \int_compare:nNnT
+     \l_@@_group_level_tl < \tex_currentgrouplevel:D
+     \tex_aftergroup:D \@@_execute_nohooks_cont:
+}
+%    \end{macrocode}
+%    Well, not totally empty arguments, we add some debugging if we
+%    are actually doing a shipout.
+%    \begin{macrocode}
+\cs_new:Npn \@@_execute_nohooks_cont: {
+  \@@_execute_main_cont:Nnnn \l_@@_raw_box
+     {} { \@@_debug:n{ \typeout{Doing~ raw~ shipout~ ...} }
+          \box_set_eq:NN \l_shipout_box \l_@@_raw_box } {} 
+} 
+%    \end{macrocode}
+%  \end{macro}
+
+%  \begin{macro}{\RawShipout}
+%    The interface name for raw shipout.
+% \changes{v1.0g}{2021/01/10}{Macro added}
+%    \begin{macrocode}
+\cs_gset_eq:NN \RawShipout \@@_execute_raw:
+%    \end{macrocode}
+%  \end{macro}
+%
+%
+%
+%
 %  \begin{macro}{\@@_saved_protect:}
 %    Remember the current \cs{protect} state.
 %    \begin{macrocode}
@@ -815,7 +1093,7 @@
 %    \end{macrocode}
 %  \end{macro}
 %
-%  \begin{macro}{shipout/before,
+%  \begin{macro}{shipout/before,shipout/after,
 %                   shipout/foreground,shipout/background,
 %                   shipout/firstpage,
 %                   shipout/lastpage}
@@ -822,6 +1100,7 @@
 %    Declaring all hooks for the shipout code.
 %    \begin{macrocode}
 \hook_new:n{shipout/before}
+\hook_new:n{shipout/after}
 \hook_new:n{shipout/foreground}
 \hook_new:n{shipout/background}
 \hook_new:n{shipout/firstpage}
@@ -832,36 +1111,71 @@
 %
 %
 %  \begin{macro}{\@kernel at after@shipout at lastpage,
-%                \@kernel at before@shipout at background}
+%                \@kernel at before@shipout at background,
+%                \@kernel at after@shipout at background}
 %    And here are the internal kernel hooks going before or after the
 %    public ones where needed.
+% \changes{v1.0g}{2021/01/10}{Internal hook
+%                             \cs{@kernel at after@shipout at background} added}
 %    \begin{macrocode}
 \let\@kernel at after@shipout at lastpage\@empty
 \let\@kernel at before@shipout at background\@empty
+\let\@kernel at after@shipout at background\@empty
 %    \end{macrocode}
 %  \end{macro}
 %
 %
-%  \begin{macro}{\@@_execute_firstpage_hook: }
-%    This command adds any specials into a box and adds that to the
-%    very beginning of the first box shipped out. After that we
-%    redefine it to do nothing on later pages.
+%  \begin{macro}{\@@_run_firstpage_hook:}
+%
+% \changes{v1.0h}{2021/01/19}{Handling of firstpage hook altered}
+%
+%    There are three commands to handle the \hook{shipout/firstpage}
+%    hook:
+%    \cs{@@_run_firstpage_hook:}, \cs{@@_add_firstpage_specials:} and
+%    \cs{@@_drop_firstpage_specials:}. 
+%
+%    That hook is supposed to contain \cs{special}s and similar
+%    material to be placed at the very beginning of the output page
+%    and so it needs careful placing to avoid that anything else gets
+%    in front of it. And this means we have to wait with this until
+%    other hooks such as \hook{shipout/background} have added their
+%    bits. It is also important that such \cs{special}s show up only
+%    on the very first page, so if this page gets saved before
+%    \cs{shipout} for later reuse, we have to make sure that they
+%    aren't in the saved version.
+%
+%    In addition the hook may also contain code to be executed ``first'', e.g.,
+%    visible from code in \hook{shipout/background} and this conflicts
+%    with adding the \cs{special}s late.
+%
+%    Therefore the processing is split into different parts:
+%    \cs{@@_run_firstpage_hook:} is done early and checks if there is
+%    any material in the hook. 
 %    \begin{macrocode}
-\cs_new:Npn \@@_execute_firstpage_hook: {
+\cs_new:Npn \@@_run_firstpage_hook: {
+  \hook_if_empty:nTF {shipout/firstpage}
 %    \end{macrocode}
-%    Adding something to the beginning means adding it to the
-%    background as that  layer is done first in the output. Of course
-%    that is only needed if the hook actually contains anything.
+%    If not then we define the other two commands to do nothing.
 %    \begin{macrocode}
-  \hook_if_empty:nF {shipout/firstpage}
-       { \@@_add_background_box:n { \UseHook{shipout/firstpage} } }
+       {
+         \cs_gset_eq:NN \@@_add_firstpage_specials:  \prg_do_nothing:
+         \cs_gset_eq:NN \@@_drop_firstpage_specials: \prg_do_nothing:
+       }
 %    \end{macrocode}
+%    If there is material we execute inside a box, which means any
+%    \cs{special} will end up in that box and any other code is
+%    executed and can have side effects (as long as they are global).
+%    \begin{macrocode}
+       {
+         \hbox_set:Nn \l_@@_firstpage_box { \UseHook{shipout/firstpage} }
+       }
+%    \end{macrocode}
 %    Once we are here we change the definition to do nothing next time
 %    and we also change the command used to implement \cs{AtBeginDvi}
-%    to become a warning and not  add further material to a hook that
+%    to become a warning and not add further material to a hook that
 %    is never used again.
 %    \begin{macrocode}
-  \cs_gset_eq:NN \@@_execute_firstpage_hook: \prg_do_nothing:
+  \cs_gset_eq:NN \@@_run_firstpage_hook: \prg_do_nothing:
   \cs_gset:Npn \@@_add_firstpage_material:Nn ##1 ##2 {
     \@latex at warning{
         First~ page~ is~ already~ shipped~ out,~ ignoring\MessageBreak
@@ -869,8 +1183,67 @@
   }
 }
 %    \end{macrocode}
+% \end{macro}
+%
+%
+%
+%  \begin{macro}{\@@_add_firstpage_specials:,\@@_drop_firstpage_specials:}
+%    The \cs{@@_add_firstpage_specials:} then adds the \cs{special}s
+%    stored in \cs{l_@@_firstpage_box} to the page to be shipped out
+%    when the time is ready. Note that if there was no material in the
+%    \hook{shipout/firstpage} hook then this command gets redefined to
+%    do nothing. But for most documents there is something, e.g., some
+%    PostScript header, or some meta data declaration, etc.\ so by 
+%    default we assume there is something to do.
+%    \begin{macrocode}
+\cs_new:Npn \@@_add_firstpage_specials: {
+%    \end{macrocode}
+%    First we make a copy of the \cs{l_shipout_box} that we can
+%    restore it later on.
+%    \begin{macrocode}
+  \box_set_eq:NN \l_@@_raw_box \l_shipout_box
+%    \end{macrocode}
+%    Adding something to the beginning means adding it to the
+%    background as that layer is done first in the output. 
+%    \begin{macrocode}
+  \@@_add_background_box:n { \hbox_unpack_drop:N \l_@@_firstpage_box }
+%    \end{macrocode}
+%    After the actual shipout \cs{@@_drop_firstpage_specials:} is
+%    run to
+%    restore the earlier content of \cs{l_shipout_box} and then
+%    redefines itself again to do nothing.
+%
+%    As a final act we change the definition to do nothing next time.
+%    \begin{macrocode}
+  \cs_gset_eq:NN \@@_add_firstpage_specials: \prg_do_nothing:
+}
+%    \end{macrocode}
+%
+%    The \cs{@@_drop_firstpage_specials:} is run after the shipout has
+%    occurred but before the \hook{shipout/afterpage} hook is executed.
+%    That is the point where we have to restore the \cs{ShipoutBox} to
+%    its state without the \hook{shipout/firstpage} material.
+%    \begin{macrocode}
+\cs_new:Npn \@@_drop_firstpage_specials: {
+    \box_set_eq:NN \l_shipout_box \l_@@_raw_box
+%    \end{macrocode}
+%    If there was no such material then \cs{@@_run_firstpage_hook:}
+%    will have changed the definition to a no-op already. Otherwise
+%    this is what we do here.
+%    \begin{macrocode}
+    \cs_gset_eq:NN \@@_drop_firstpage_specials:  \prg_do_nothing:
+  }
+%    \end{macrocode}
 %  \end{macro}
 %
+
+%  \begin{macro}{\l_@@_firstpage_box}
+%    The box to hold any firstpage \cs{special}s.
+%    \begin{macrocode}
+\box_new:N \l_@@_firstpage_box
+%    \end{macrocode}
+%  \end{macro}
+
 %
 %  \begin{macro}{\g_@@_lastpage_handled_bool}
 %    A boolean to signal if we have already handled the
@@ -911,8 +1284,8 @@
   \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_set:Nn \l_shipout_box_ht_plus_dp_dim
+      { \l_shipout_box_ht_dim + \l_shipout_box_dp_dim }
 }
 %    \end{macrocode}
 %  \end{macro}
@@ -1442,7 +1815,8 @@
 %    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_set_protected:Npn \AtBeginDvi {\@@_add_firstpage_material:Nn \AtBeginDvi}
+\cs_set_protected:Npn \AtBeginDvi
+                      {\@@_add_firstpage_material:Nn \AtBeginDvi}
 %    \end{macrocode}
 %  \end{macro}
 %
@@ -1471,6 +1845,7 @@
 %                \@expl@@@shipout at add@foreground at picture@@n}
 %    Some internals needed elsewhere.
 %
+%  \InternalDetectionOff
 %    \begin{macrocode}
 \cs_set_eq:NN \@expl@@@shipout at add@firstpage at material@@Nn
               \__shipout_add_firstpage_material:Nn
@@ -1495,6 +1870,7 @@
 \cs_set_eq:NN \@expl@@@shipout at add@foreground at picture@@n
               \__shipout_add_foreground_picture:n
 %    \end{macrocode}
+%  \InternalDetectionOn
 %  \end{macro}
 %
 %    \begin{macrocode}
@@ -1524,6 +1900,7 @@
 %<latexrelease>                \csname tex_shipout:D\endcsname
 %<latexrelease>\fi
 %<latexrelease>
+%<latexrelease>\let \RawShipout\@undefined
 %<latexrelease>\let \ShipoutBox\@undefined
 %<latexrelease>\let \ReadonlyShipoutCounter \@undefined
 %<latexrelease>\let \c at totalpages \@undefined
@@ -1547,23 +1924,13 @@
 %<latexrelease>\let \ShipoutBoxDepth \@undefined
 %<latexrelease>\let \ShipoutBoxWidth \@undefined
 %<latexrelease>
-%<latexrelease>\let \AtBeginShipoutDiscard \@undefined
-%<latexrelease>
-%<latexrelease>\let \AtBeginShipoutAddToBox \@undefined
-%<latexrelease>\let \AtBeginShipoutAddToBoxForeground \@undefined
-%<latexrelease>\let \AtBeginShipoutUpperLeft \@undefined
-%<latexrelease>\let \AtBeginShipoutUpperLeftForeground \@undefined
-%<latexrelease>
 %    \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 it should not interfere with existing
 %    commands) and properly removing it would mean we need to make the
-%    \cs{unclare at ...} and its support macros available in all earlier
+%    \cs{undeclare at ...} and its support macros available in all earlier
 %    kernel releases which is pointless (and actually worse).
-%    \begin{macrocode}
-%\undeclare at file@substitution{everyshi.sty}
-%    \end{macrocode}
 %    
 %    \begin{macrocode}
 %<latexrelease>
@@ -1647,7 +2014,7 @@
 %    \begin{macrocode}
 %<*atbegshi-ltx>
 \ProvidesPackage{atbegshi-ltx}
-   [2020/10/15 v1.0b
+   [2021/01/10 v1.0c
      Emulation of the original atbegshi^^Jpackage with kernel methods]
 %    \end{macrocode}
 %
@@ -1659,6 +2026,7 @@
 %  \end{macro}
 %
 %
+%
 %  \begin{macro}{\AtBeginShipoutInit}
 %    Compatibility only, we aren't delaying \ldots
 %    \begin{macrocode}
@@ -1712,6 +2080,19 @@
 %    \end{macrocode}
 %  \end{macro}
 %
+%  \begin{macro}{\AtBeginShipoutOriginalShipout}
+%    This offers the raw \cs{shipout} primitive of the engine. A page
+%    shipped out with this is not counted by
+%    \cs{ReadonlyShipoutCounter} counter and thus the mechanism to
+%    place \cs{special}s at the very end of the output might fail,
+%    etc. It should therefore not be used in new applications but is
+%    only provided to allow  running legacy code. For new code use the
+%    commands provided by the kernel instead.
+%    \begin{macrocode}
+\ExplSyntaxOn
+\cs_new_eq:NN \AtBeginShipoutOriginalShipout \tex_shipout:D
+%    \end{macrocode}
+%  \end{macro}
 %
 %
 %  \begin{macro}{\ShipoutBoxHeight,\ShipoutBoxWidth,\ShipoutBoxDepth}
@@ -1720,7 +2101,6 @@
 %    \verb=\the\ht<box>= value. This may has some implications in some
 %    use cases and if that is a problem then it might need changing.
 %    \begin{macrocode}
-\ExplSyntaxOn  
 \cs_new:Npn \ShipoutBoxHeight { \dim_use:N \l_shipout_box_ht_dim }
 \cs_new:Npn \ShipoutBoxDepth  { \dim_use:N \l_shipout_box_dp_dim }
 \cs_new:Npn \ShipoutBoxWidth  { \dim_use:N \l_shipout_box_wd_dim }
@@ -1747,58 +2127,10 @@
 %
 % \subsection{Package \pkg{everyshi} emulation}
 %
-%    \begin{macrocode}
-%<*everyshi-ltx>
-%    \end{macrocode}
+%    This is now directly handled in that package so emulation is not
+%    necessary any more.
 %
-%    \begin{macrocode}
-\ProvidesPackage{everyshi-ltx}
-   [2020/10/15 v1.0b
-    Emulation of the original everyshi^^Jpackage with kernel methods]
-%    \end{macrocode}
-%    
-%  \begin{macro}{\EveryShipout,\AtNextShipout}
-%    This package has only two public commands so simulating it is easy:
-%    \begin{macrocode}
-\protected \def \EveryShipout  {\AddToHook{shipout/before}}
-\protected \def \AtNextShipout {\AddToHookNext{shipout/before}}
-%    \end{macrocode}
-%  \end{macro}
 %
-%    \begin{macrocode}
-%    This is one difference between \pkg{everyshi} and the kernel
-%    implementation, the latter does not directly use box 255.
-%
-%    For usage by ordinary users this makes no difference but of a
-%    package use complicated code together with \pkg{everyshi} and
-%    directly manipulates box 255 then this package needs updating.
-%    In most cases the updates are simple because the kernel offers
-%    hooks that makes such complicated code unnecessary.
-%
-%    We therefore add a little file into the adjusted package
-%    \begin{macrocode}
-%%
-%%   In normal circumstances the above emulation is sufficient and in
-%%   all known packages (we know of) that use everyshi it either works or
-%%   the packages have been adjusted. 
-%%
-%%   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 sufficient to avoid such manipulations (or
-%%   replace box 255 with \ShipoutBox in the code.
-%%
-%</everyshi-ltx>
-%    \end{macrocode}
-%
-%
-%    If the package is requested we substitute the one above:
-%    \begin{macrocode}
-%<*2ekernel>
-\declare at file@substitution{everyshi.sty}{everyshi-ltx.sty}
-%</2ekernel>
-%    \end{macrocode}
-%
-%
 %    Rather important :-)
 %    \begin{macrocode}
 %<@@=>

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltspace.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltspace.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltspace.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttab.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttab.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttab.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/lttextcomp.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 2019-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -26,6 +26,9 @@
 % extension .ins) which are part of the distribution.
 %
 % \fi
+%
+%%% From File: lttextcomp.dtx
+%
 % \iffalse
 %
 %<*driver>
@@ -33,7 +36,7 @@
 %
 %
 \ProvidesFile{lttextcomp.dtx}
-             [2020/12/05 v1.0d LaTeX Kernel (text companion symbols)]
+             [2021/01/20 v1.0d LaTeX Kernel (text companion symbols)]
 % \iffalse
 \documentclass{ltxdoc}
 \begin{document}
@@ -362,13 +365,14 @@
 }
 %    \end{macrocode}
 %  \end{macro}
-
-
-
-
+%
+%
+%
+%
+%
 % \begin{macro}{\tc at fake@euro}
 %    |\tc at fake@euro|  is an example of a ``fake'' definition to use in  arg |#3| of
-%    |\CheckEncodingSubset| when a symbol is not available in a
+%    the command |\CheckEncodingSubset| when a symbol is not available in a
 %    certain font family. Here we produce a poor man's Euro symbol by combining
 %    a ``C'' with a ``=''.
 %    \begin{macrocode}
@@ -386,10 +390,10 @@
 }
 %    \end{macrocode}
 % \end{macro}
-
-
-
-
+%
+%
+%
+%
 % \begin{macro}{\tc at check@symbol}
 % \begin{macro}{\tc at check@accent}
 %    These are two abbreviations that we use below to check symbols
@@ -401,12 +405,12 @@
 %    to ensure that |\textcurrency| is only typeset if the current
 %    font has a \texttt{TS1} subset id of less than 3. Otherwise
 %    |\tc at error| is called telling the user that for this font family
-%    |\textcurreny| is not available.
+%    |\textcurrency| is not available.
 %    \begin{macrocode}
 \def\tc at check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc at subst}
 %    \end{macrocode}
 %
-%    Accents and been mad an error in the \texttt{textcomp} package when
+%    Accents have been made an error in the \texttt{textcomp} package when
 %    not available. Now that we provide the functionality in the
 %    kernel we avoid the error by swapping in a \texttt{T1} accent if
 %    the \texttt{TS1} accent is not available.
@@ -415,7 +419,8 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc at swap@accent#1}}
+\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent
+                                           {TS1}{\tc at swap@accent#1}}
 \def\tc at swap@accent#1#2{\UseTextAccent{T1}#1}
 %    \end{macrocode}
 % \end{macro}
@@ -430,17 +435,17 @@
 %
 %    \begin{macrocode}
 \DeclareTextSymbolDefault{\textdollar}{TS1}
-\UndeclareTextCommand{\textdollar}  {OT1}         % don't use the OT1 def any longer
+\UndeclareTextCommand{\textdollar}{OT1}  % don't use the OT1 def any longer
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \DeclareTextSymbolDefault{\textsterling}{TS1}
-\UndeclareTextCommand{\textsterling}{OT1}         % don't use the OT1 def any longer
+\UndeclareTextCommand{\textsterling}{OT1}% don't use the OT1 def any longer
 %    \end{macrocode}
 %
 %    \begin{macrocode}
 \DeclareTextSymbolDefault{\textperthousand}{TS1}
-\UndeclareTextCommand{\textperthousand}{T1}       % don't use the T1 def
+\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def
 %    \end{macrocode}
 %    Using \cs{UndeclareTextCommand} above is enough only if the
 %    encoding definition files are not reloaded afterwards. In the
@@ -462,9 +467,9 @@
 %    \end{macrocode}
 %
 %    And here are the other \texttt{TS1} glyphs that are implemented
-%    by every font (or nearly everyone---a few are commented out and
+%    by every font (or nearly every---a few are commented out and
 %    moved to sub-encoding 9,
-%    because they aren't around in one or two fonts.
+%    because they aren't around in some fonts.
 %    \begin{macrocode}
 %%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above
 \DeclareTextSymbolDefault{\textbrokenbar}{TS1}
@@ -541,31 +546,49 @@
 %
 %    \begin{macrocode}
 \ifx\Umathcode\@undefined
-  \DeclareTextCommandDefault{\capitalacute}       {\tc at check@accent{\'}2\capitalacute}
-  \DeclareTextCommandDefault{\capitalbreve}       {\tc at check@accent{\u}2\capitalbreve}
-  \DeclareTextCommandDefault{\capitalcaron}       {\tc at check@accent{\v}2\capitalcaron}
-  \DeclareTextCommandDefault{\capitalcedilla}     {\tc at check@accent{\c}2\capitalcedilla}
-  \DeclareTextCommandDefault{\capitalcircumflex}  {\tc at check@accent{\^}2\capitalcircumflex}
-  \DeclareTextCommandDefault{\capitaldieresis}    {\tc at check@accent{\"}2\capitaldieresis}
-  \DeclareTextCommandDefault{\capitaldotaccent}   {\tc at check@accent{\.}2\capitaldotaccent}
-  \DeclareTextCommandDefault{\capitalgrave}       {\tc at check@accent{\`}2\capitalgrave}
-  \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc at check@accent{\H}2\capitalhungarumlaut}
-  \DeclareTextCommandDefault{\capitalmacron}      {\tc at check@accent{\=}2\capitalmacron}
-  \DeclareTextCommandDefault{\capitalogonek}      {\tc at check@accent{\k}2\capitalogonek}
-  \DeclareTextCommandDefault{\capitalring}        {\tc at check@accent{\r}2\capitalring}
-  \DeclareTextCommandDefault{\capitaltie}         {\tc at check@accent{\t}2\capitaltie}
-  \DeclareTextCommandDefault{\capitaltilde}       {\tc at check@accent{\~}2\capitaltilde}
+  \DeclareTextCommandDefault{\capitalacute}
+                            {\tc at check@accent{\'}2\capitalacute}
+  \DeclareTextCommandDefault{\capitalbreve}
+                            {\tc at check@accent{\u}2\capitalbreve}
+  \DeclareTextCommandDefault{\capitalcaron}
+                            {\tc at check@accent{\v}2\capitalcaron}
+  \DeclareTextCommandDefault{\capitalcedilla}
+                            {\tc at check@accent{\c}2\capitalcedilla}
+  \DeclareTextCommandDefault{\capitalcircumflex}
+                            {\tc at check@accent{\^}2\capitalcircumflex}
+  \DeclareTextCommandDefault{\capitaldieresis}
+                            {\tc at check@accent{\"}2\capitaldieresis}
+  \DeclareTextCommandDefault{\capitaldotaccent}
+                            {\tc at check@accent{\.}2\capitaldotaccent}
+  \DeclareTextCommandDefault{\capitalgrave}
+                            {\tc at check@accent{\`}2\capitalgrave}
+  \DeclareTextCommandDefault{\capitalhungarumlaut}
+                            {\tc at check@accent{\H}2\capitalhungarumlaut}
+  \DeclareTextCommandDefault{\capitalmacron}
+                            {\tc at check@accent{\=}2\capitalmacron}
+  \DeclareTextCommandDefault{\capitalogonek}
+                            {\tc at check@accent{\k}2\capitalogonek}
+  \DeclareTextCommandDefault{\capitalring}
+                            {\tc at check@accent{\r}2\capitalring}
+  \DeclareTextCommandDefault{\capitaltie}
+                            {\tc at check@accent{\t}2\capitaltie}
+  \DeclareTextCommandDefault{\capitaltilde}
+                            {\tc at check@accent{\~}2\capitaltilde}
 %    \end{macrocode}
 %    For \cs{newtie} and \cs{capitalnewtie} this is actually wrong, they should pick up
 %    the accent from the substitution font (not done yet).
 %    \begin{macrocode}
-  \DeclareTextCommandDefault{\newtie}             {\tc at check@accent{\t}2\newtie}
-  \DeclareTextCommandDefault{\capitalnewtie}      {\tc at check@accent{\t}2\capitalnewtie}
+  \DeclareTextCommandDefault{\newtie}
+                            {\tc at check@accent{\t}2\newtie}
+  \DeclareTextCommandDefault{\capitalnewtie}
+                            {\tc at check@accent{\t}2\capitalnewtie}
 %    \end{macrocode}
 %
 %    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 capital accents text commands for hyperref (gh/332)}
+% \changes{v1.0c}{2020/02/10}{Use \cs{@tabacckludge} for
+%      tabbing where necessary (gh/271)}
+% \changes{v1.0d}{2020/04/29}{Make all capital accents text
+%      commands for hyperref (gh/332)}
 %    \begin{macrocode}
 \else
   \DeclareTextCommandDefault\capitalacute{\@tabacckludge'}
@@ -593,8 +616,10 @@
 %    The next two symbols exist in some fonts (faked?), but we ignore
 %    that to keep the subsets reasonable compact and most important linear.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textlbrackdbl}      {\tc at check@symbol2\textlbrackdbl}
-\DeclareTextCommandDefault{\textrbrackdbl}      {\tc at check@symbol2\textrbrackdbl}
+\DeclareTextCommandDefault{\textlbrackdbl}
+                          {\tc at check@symbol2\textlbrackdbl}
+\DeclareTextCommandDefault{\textrbrackdbl}
+                          {\tc at check@symbol2\textrbrackdbl}
 %    \end{macrocode}
 %
 %
@@ -603,35 +628,54 @@
 %    claim they aren't in sub-encoding 2 as that's true for most
 %    fonts.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\texteightoldstyle}  {\tc at check@symbol2\texteightoldstyle}
-\DeclareTextCommandDefault{\textfiveoldstyle}   {\tc at check@symbol2\textfiveoldstyle}
-\DeclareTextCommandDefault{\textfouroldstyle}   {\tc at check@symbol2\textfouroldstyle}
-\DeclareTextCommandDefault{\textnineoldstyle}   {\tc at check@symbol2\textnineoldstyle}
-\DeclareTextCommandDefault{\textoneoldstyle}    {\tc at check@symbol2\textoneoldstyle}
-\DeclareTextCommandDefault{\textsevenoldstyle}  {\tc at check@symbol2\textsevenoldstyle}
-\DeclareTextCommandDefault{\textsixoldstyle}    {\tc at check@symbol2\textsixoldstyle}
-\DeclareTextCommandDefault{\textthreeoldstyle}  {\tc at check@symbol2\textthreeoldstyle}
-\DeclareTextCommandDefault{\texttwooldstyle}    {\tc at check@symbol2\texttwooldstyle}
-\DeclareTextCommandDefault{\textzerooldstyle}   {\tc at check@symbol2\textzerooldstyle}
+\DeclareTextCommandDefault{\texteightoldstyle}
+                          {\tc at check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}
+                          {\tc at check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}
+                          {\tc at check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}
+                          {\tc at check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}
+                          {\tc at check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}
+                          {\tc at check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}
+                          {\tc at check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}
+                          {\tc at check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}
+                          {\tc at check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textzerooldstyle}
+                          {\tc at check@symbol2\textzerooldstyle}
 %    \end{macrocode}
 %
 %
 %
-%    The next set of glyphs is special to TeX fonts (and available
-%    with a few older PS fonts supported in the virtual fonts), but
+%    The next set of glyphs is special to \TeX{} fonts (and available
+%    with a few older PS fonts supported through virtual fonts), but
 %    not any longer in the majority of fonts provided through
 %    autoinst, so we pretend there aren't available in sub-encoding 2
 %    and below.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textacutedbl}       {\tc at check@symbol2\textacutedbl}
-\DeclareTextCommandDefault{\textasciiacute}     {\tc at check@symbol2\textasciiacute}
-\DeclareTextCommandDefault{\textasciibreve}     {\tc at check@symbol2\textasciibreve}
-\DeclareTextCommandDefault{\textasciicaron}     {\tc at check@symbol2\textasciicaron}
-\DeclareTextCommandDefault{\textasciidieresis}  {\tc at check@symbol2\textasciidieresis}
-\DeclareTextCommandDefault{\textasciigrave}     {\tc at check@symbol2\textasciigrave}
-\DeclareTextCommandDefault{\textasciimacron}    {\tc at check@symbol2\textasciimacron}
-\DeclareTextCommandDefault{\textgravedbl}       {\tc at check@symbol2\textgravedbl}
-\DeclareTextCommandDefault{\texttildelow}       {\tc at check@symbol2\texttildelow}
+\DeclareTextCommandDefault{\textacutedbl}
+                          {\tc at check@symbol2\textacutedbl}
+\DeclareTextCommandDefault{\textasciiacute}
+                          {\tc at check@symbol2\textasciiacute}
+\DeclareTextCommandDefault{\textasciibreve}
+                          {\tc at check@symbol2\textasciibreve}
+\DeclareTextCommandDefault{\textasciicaron}
+                          {\tc at check@symbol2\textasciicaron}
+\DeclareTextCommandDefault{\textasciidieresis}
+                          {\tc at check@symbol2\textasciidieresis}
+\DeclareTextCommandDefault{\textasciigrave}
+                          {\tc at check@symbol2\textasciigrave}
+\DeclareTextCommandDefault{\textasciimacron}
+                          {\tc at check@symbol2\textasciimacron}
+\DeclareTextCommandDefault{\textgravedbl}
+                          {\tc at check@symbol2\textgravedbl}
+\DeclareTextCommandDefault{\texttildelow}
+                          {\tc at check@symbol2\texttildelow}
 %    \end{macrocode}
 %
 %
@@ -638,37 +682,64 @@
 %    Finally those below are only available in CM-based fonts but in
 %    no font that has its origin outside of the \TeX{} world.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textbaht}           {\tc at check@symbol2\textbaht}
-\DeclareTextCommandDefault{\textbigcircle}      {\tc at check@symbol2\textbigcircle}
-\DeclareTextCommandDefault{\textborn}           {\tc at check@symbol2\textborn}
-\DeclareTextCommandDefault{\textcentoldstyle}   {\tc at check@symbol2\textcentoldstyle}
-\DeclareTextCommandDefault{\textcircledP}       {\tc at check@symbol2\textcircledP}
-\DeclareTextCommandDefault{\textcopyleft}       {\tc at check@symbol2\textcopyleft}
-\DeclareTextCommandDefault{\textdblhyphenchar}  {\tc at check@symbol2\textdblhyphenchar}
-\DeclareTextCommandDefault{\textdblhyphen}      {\tc at check@symbol2\textdblhyphen}
-\DeclareTextCommandDefault{\textdied}           {\tc at check@symbol2\textdied}
-\DeclareTextCommandDefault{\textdiscount}       {\tc at check@symbol2\textdiscount}
-\DeclareTextCommandDefault{\textdivorced}       {\tc at check@symbol2\textdivorced}
-\DeclareTextCommandDefault{\textdollaroldstyle} {\tc at check@symbol2\textdollaroldstyle}
-\DeclareTextCommandDefault{\textguarani}        {\tc at check@symbol2\textguarani}
-\DeclareTextCommandDefault{\textleaf}           {\tc at check@symbol2\textleaf}
-\DeclareTextCommandDefault{\textlquill}         {\tc at check@symbol2\textlquill}
-\DeclareTextCommandDefault{\textmarried}        {\tc at check@symbol2\textmarried}
-\DeclareTextCommandDefault{\textmho}            {\tc at check@symbol2\textmho}
-\DeclareTextCommandDefault{\textmusicalnote}    {\tc at check@symbol2\textmusicalnote}
-\DeclareTextCommandDefault{\textnaira}          {\tc at check@symbol2\textnaira}
-\DeclareTextCommandDefault{\textopenbullet}     {\tc at check@symbol2\textopenbullet}
-\DeclareTextCommandDefault{\textpeso}           {\tc at check@symbol2\textpeso}
-\DeclareTextCommandDefault{\textpilcrow}        {\tc at check@symbol2\textpilcrow}
-\DeclareTextCommandDefault{\textrecipe}         {\tc at check@symbol2\textrecipe}
-\DeclareTextCommandDefault{\textreferencemark}  {\tc at check@symbol2\textreferencemark}
-\DeclareTextCommandDefault{\textrquill}         {\tc at check@symbol2\textrquill}
-\DeclareTextCommandDefault{\textservicemark}    {\tc at check@symbol2\textservicemark}
-\DeclareTextCommandDefault{\textsurd}           {\tc at check@symbol2\textsurd}
+\DeclareTextCommandDefault{\textbaht}
+                          {\tc at check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textbigcircle}
+                          {\tc at check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textborn}
+                          {\tc at check@symbol2\textborn}
+\DeclareTextCommandDefault{\textcentoldstyle}
+                          {\tc at check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcircledP}
+                          {\tc at check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textcopyleft}
+                          {\tc at check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textdblhyphenchar}
+                          {\tc at check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdblhyphen}
+                          {\tc at check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textdied}
+                          {\tc at check@symbol2\textdied}
+\DeclareTextCommandDefault{\textdiscount}
+                          {\tc at check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textdivorced}
+                          {\tc at check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdollaroldstyle}
+                          {\tc at check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textguarani}
+                          {\tc at check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textleaf}
+                          {\tc at check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textlquill}
+                          {\tc at check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textmarried}
+                          {\tc at check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmho}
+                          {\tc at check@symbol2\textmho}
+\DeclareTextCommandDefault{\textmusicalnote}
+                          {\tc at check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textnaira}
+                          {\tc at check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textopenbullet}
+                          {\tc at check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textpeso}
+                          {\tc at check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textpilcrow}
+                          {\tc at check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textrecipe}
+                          {\tc at check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textreferencemark}
+                          {\tc at check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textrquill}
+                          {\tc at check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textservicemark}
+                          {\tc at check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textsurd}
+                          {\tc at check@symbol2\textsurd}
 %    \end{macrocode}
 %
 %    The \cs{textpertenthousand} also belongs in this group but here
-%    we have a choice: in T1 there is definition for
+%    we have a choice: in T1 there is a definition for
 %    \cs{textpertenthousand} making the symbol up from \% and
 %    \verb=\char 24= (twice) but in many fonts that char doesn't exist
 %    and the slot is reused for random ligatures. So better not use it
@@ -679,7 +750,8 @@
 %    Alternatively we could just state that the symbol is unavailable in
 %    those fonts. For now I substitute.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textpertenthousand} {\tc at check@symbol2\textpertenthousand}
+\DeclareTextCommandDefault{\textpertenthousand}
+                          {\tc at check@symbol2\textpertenthousand}
 \UndeclareTextCommand{\textpertenthousand}{T1}
 %    \end{macrocode}
 %
@@ -691,8 +763,10 @@
 %    symbols. In the higher-numbered sub-encodings we see only a few
 %    dropped additionally.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textlangle}         {\tc at check@symbol3\textlangle}
-\DeclareTextCommandDefault{\textrangle}         {\tc at check@symbol3\textrangle}
+\DeclareTextCommandDefault{\textlangle}
+                          {\tc at check@symbol3\textlangle}
+\DeclareTextCommandDefault{\textrangle}
+                          {\tc at check@symbol3\textrangle}
 %    \end{macrocode}
 %
 %
@@ -702,14 +776,22 @@
 % \subsection{Sub-encoding \texttt{4}}
 %
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textcolonmonetary}  {\tc at check@symbol4\textcolonmonetary}
-\DeclareTextCommandDefault{\textdong}           {\tc at check@symbol4\textdong}
-\DeclareTextCommandDefault{\textdownarrow}      {\tc at check@symbol4\textdownarrow}
-\DeclareTextCommandDefault{\textleftarrow}      {\tc at check@symbol4\textleftarrow}
-\DeclareTextCommandDefault{\textlira}           {\tc at check@symbol4\textlira}
-\DeclareTextCommandDefault{\textrightarrow}     {\tc at check@symbol4\textrightarrow}
-\DeclareTextCommandDefault{\textuparrow}        {\tc at check@symbol4\textuparrow}
-\DeclareTextCommandDefault{\textwon}            {\tc at check@symbol4\textwon}
+\DeclareTextCommandDefault{\textcolonmonetary}
+                          {\tc at check@symbol4\textcolonmonetary}
+\DeclareTextCommandDefault{\textdong}
+                          {\tc at check@symbol4\textdong}
+\DeclareTextCommandDefault{\textdownarrow}
+                          {\tc at check@symbol4\textdownarrow}
+\DeclareTextCommandDefault{\textleftarrow}
+                          {\tc at check@symbol4\textleftarrow}
+\DeclareTextCommandDefault{\textlira}
+                          {\tc at check@symbol4\textlira}
+\DeclareTextCommandDefault{\textrightarrow}
+                          {\tc at check@symbol4\textrightarrow}
+\DeclareTextCommandDefault{\textuparrow}
+                          {\tc at check@symbol4\textuparrow}
+\DeclareTextCommandDefault{\textwon}
+                          {\tc at check@symbol4\textwon}
 %    \end{macrocode}
 %
 %
@@ -727,15 +809,17 @@
 %
 %    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 would put them all into
-%    sub-encoding \texttt{9} so that's a compromise really.
+%    glyphs that are really  always available, we would have to put them all into
+%    sub-encoding \texttt{9}; so putting them into 5 is really a compromise.
 %
-%    Modern fonts that don't typeset a tofu character if a glyph is
-%    missing are only cataloged as sub-encoding \texttt{5} if they
-%    really support of its glyph set.
+%    Modern fonts usually don't typeset a tofu character if a glyph is
+%    missing. They are therefore only classified as sub-encoding \texttt{5} if they
+%    really support its glyph set completely.
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textestimated}      {\tc at check@symbol5\textestimated}
-\DeclareTextCommandDefault{\textnumero}         {\tc at check@symbol5\textnumero}
+\DeclareTextCommandDefault{\textestimated}
+                          {\tc at check@symbol5\textestimated}
+\DeclareTextCommandDefault{\textnumero}
+                          {\tc at check@symbol5\textnumero}
 %    \end{macrocode}
 %
 %
@@ -744,8 +828,10 @@
 % \subsection{Sub-encoding \texttt{6}}
 %
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textflorin}         {\tc at check@symbol6\textflorin}
-\DeclareTextCommandDefault{\textcurrency}       {\tc at check@symbol6\textcurrency}
+\DeclareTextCommandDefault{\textflorin}
+                          {\tc at check@symbol6\textflorin}
+\DeclareTextCommandDefault{\textcurrency}
+                          {\tc at check@symbol6\textcurrency}
 %    \end{macrocode}
 %
 %
@@ -753,10 +839,14 @@
 % \subsection{Sub-encoding \texttt{7}}
 %
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textfractionsolidus}{\tc at check@symbol7\textfractionsolidus}
-\DeclareTextCommandDefault{\textohm}            {\tc at check@symbol7\textohm}
-\DeclareTextCommandDefault{\textmu}             {\tc at check@symbol7\textmu}
-\DeclareTextCommandDefault{\textminus}          {\tc at check@symbol7\textminus}
+\DeclareTextCommandDefault{\textfractionsolidus}
+                          {\tc at check@symbol7\textfractionsolidus}
+\DeclareTextCommandDefault{\textohm}
+                          {\tc at check@symbol7\textohm}
+\DeclareTextCommandDefault{\textmu}
+                          {\tc at check@symbol7\textmu}
+\DeclareTextCommandDefault{\textminus}
+                          {\tc at check@symbol7\textminus}
 %    \end{macrocode}
 %
 %
@@ -764,9 +854,12 @@
 % \subsection{Sub-encoding \texttt{8}}
 %
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textblank}          {\tc at check@symbol{8}\textblank}
-\DeclareTextCommandDefault{\textinterrobangdown}{\tc at check@symbol{8}\textinterrobangdown}
-\DeclareTextCommandDefault{\textinterrobang}    {\tc at check@symbol{8}\textinterrobang}
+\DeclareTextCommandDefault{\textblank}
+                          {\tc at check@symbol{8}\textblank}
+\DeclareTextCommandDefault{\textinterrobangdown}
+                          {\tc at check@symbol{8}\textinterrobangdown}
+\DeclareTextCommandDefault{\textinterrobang}
+                          {\tc at check@symbol{8}\textinterrobang}
 %    \end{macrocode}
 %
 %    Fonts with this sub-encoding don't have a Euro symbol, but
@@ -773,7 +866,7 @@
 %    instead of substituting we fake it.
 %    \begin{macrocode}
 \DeclareTextCommandDefault{\texteuro}
-            {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
+  {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
 %    \end{macrocode}
 %
 %
@@ -782,13 +875,20 @@
 % \subsection{Sub-encoding \texttt{9} (most missing)}
 %
 %    \begin{macrocode}
-\DeclareTextCommandDefault{\textcelsius}{\tc at check@symbol{9}\textcelsius}
-\DeclareTextCommandDefault{\textonesuperior}{\tc at check@symbol{9}\textonesuperior}
-\DeclareTextCommandDefault{\textthreequartersemdash}{\tc at check@symbol{9}\textthreequartersemdash}
-\DeclareTextCommandDefault{\textthreesuperior}{\tc at check@symbol{9}\textthreesuperior}
-\DeclareTextCommandDefault{\texttwelveudash}{\tc at check@symbol{9}\texttwelveudash}
-\DeclareTextCommandDefault{\texttwosuperior}{\tc at check@symbol{9}\texttwosuperior}
-\DeclareTextCommandDefault{\textbardbl}{\tc at check@symbol{9}\textbardbl}
+\DeclareTextCommandDefault{\textcelsius}
+                          {\tc at check@symbol{9}\textcelsius}
+\DeclareTextCommandDefault{\textonesuperior}
+                          {\tc at check@symbol{9}\textonesuperior}
+\DeclareTextCommandDefault{\textthreequartersemdash}
+                          {\tc at check@symbol{9}\textthreequartersemdash}
+\DeclareTextCommandDefault{\textthreesuperior}
+                          {\tc at check@symbol{9}\textthreesuperior}
+\DeclareTextCommandDefault{\texttwelveudash}
+                          {\tc at check@symbol{9}\texttwelveudash}
+\DeclareTextCommandDefault{\texttwosuperior}
+                          {\tc at check@symbol{9}\texttwosuperior}
+\DeclareTextCommandDefault{\textbardbl}
+                          {\tc at check@symbol{9}\textbardbl}
 %    \end{macrocode}
 %
 %
@@ -832,18 +932,18 @@
 %    \end{macrocode}
 %    These have Unicode slots so this should be integrated into TU explicitly
 %    \begin{macrocode}
-\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{\textpilcrow}        \UnicodeEncodingName{"00B6}
+\DeclareTextSymbol{\textborn}           \UnicodeEncodingName{"002A}
+\DeclareTextSymbol{\textdied}           \UnicodeEncodingName{"2020}
+\DeclareTextSymbol{\textlbrackdbl}      \UnicodeEncodingName{"27E6}
+\DeclareTextSymbol{\textrbrackdbl}      \UnicodeEncodingName{"27E7}
+\DeclareTextSymbol{\textguarani}        \UnicodeEncodingName{"20B2}
 %    \end{macrocode}
 %    We could make \cs{textcentoldstyle} and \cs{textdollaroldstyle}
 %    point to dollar and cent in the Unicode encoding
 %    \begin{macrocode}
-%\DeclareTextSymbol{\textcentoldstyle}            \UnicodeEncodingName{"00A2}
-%\DeclareTextSymbol{\textdollaroldstyle}          \UnicodeEncodingName{"0024}
+%\DeclareTextSymbol{\textcentoldstyle}  \UnicodeEncodingName{"00A2}
+%\DeclareTextSymbol{\textdollaroldstyle}\UnicodeEncodingName{"0024}
 %    \end{macrocode}
 %    but I think it is better to pick them up from TS1 even if that
 %    usually means LMR fonts
@@ -908,7 +1008,8 @@
 \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}{lmtt}    {1} % missing TM, SM and
+                                         % pertenthousand for some reason
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -918,33 +1019,33 @@
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\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}{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
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\DeclareEncodingSubset{TS1}{dayroms} {6}  % tofu for blank, interrobang/down, ohm
-\DeclareEncodingSubset{TS1}{dayrom}  {6}  % 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
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\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}{augie}{8} % really only missing euro
+\DeclareEncodingSubset{TS1}{put}  {8}
+\DeclareEncodingSubset{TS1}{uag}  {8} % probably (currently broken distrib)
+\DeclareEncodingSubset{TS1}{ugq}  {8}
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -976,14 +1077,14 @@
 %    substituted.
 %
 %    \begin{macrocode}
-\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}{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
 %    \end{macrocode}
 %
 %    \begin{macrocode}
-\DeclareEncodingSubset{TS1}{tli}                      {1}  % with lots of tofu inside
+\DeclareEncodingSubset{TS1}{tli}          {1}  % with lots of tofu inside
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -1109,7 +1210,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}{Forum-LF}      {7}  % the superiors are missing
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -1237,7 +1338,8 @@
 %<latexrelease>\let\textbrokenbar\@undefined
 %<latexrelease>\let\textcelsius\@undefined
 %<latexrelease>\let\textcent\@undefined
-%<latexrelease>\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
+%<latexrelease>\DeclareTextCommandDefault{\textcopyright}
+%<latexrelease>                          {\textcircled{c}}
 %<latexrelease>\let\textdegree\@undefined
 %<latexrelease>\let\textdiv\@undefined
 %<latexrelease>\let\textlnot\@undefined
@@ -1244,19 +1346,24 @@
 %<latexrelease>\let\textonehalf\@undefined
 %<latexrelease>\let\textonequarter\@undefined
 %<latexrelease>\let\textonesuperior\@undefined
-%<latexrelease>\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
-%<latexrelease>\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
+%<latexrelease>\DeclareTextCommandDefault{\textordfeminine}
+%<latexrelease>                          {\textsuperscript{a}}
+%<latexrelease>\DeclareTextCommandDefault{\textordmasculine}
+%<latexrelease>                          {\textsuperscript{o}}
 %<latexrelease>\let\textpm\@undefined
 %<latexrelease>\let\textquotesingle\@undefined
 %<latexrelease>\let\textquotestraightbase\@undefined
 %<latexrelease>\let\textquotestraightdblbase\@undefined
-%<latexrelease>\DeclareTextCommandDefault{\textregistered}{\textcircled{%
-%<latexrelease>     \check at mathfonts\fontsize\sf at size\z@\math at fontsfalse\selectfont R}}
+%<latexrelease>\DeclareTextCommandDefault{\textregistered}
+%<latexrelease>    {\textcircled{%
+%<latexrelease>        \check at mathfonts\fontsize\sf at size\z@
+%<latexrelease>        \math at fontsfalse\selectfont R}}
 %<latexrelease>\let\textthreequartersemdash\@undefined
 %<latexrelease>\let\textthreequarters\@undefined
 %<latexrelease>\let\textthreesuperior\@undefined
 %<latexrelease>\let\texttimes\@undefined
-%<latexrelease>\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
+%<latexrelease>\DeclareTextCommandDefault{\texttrademark}
+%<latexrelease>                          {\textsuperscript{TM}}
 %<latexrelease>\let\texttwelveudash\@undefined
 %<latexrelease>\let\texttwosuperior\@undefined
 %<latexrelease>\let\textyen\@undefined
@@ -1433,9 +1540,12 @@
 %    kernel is info only). Using the package options you can change this behavior.
 % \changes{v2.0n}{2020/02/05}{Changed the package default to info (gh/262)}
 %    \begin{macrocode}
-\DeclareOption{error}{\gdef\tc at errorwarn{\PackageError{textcomp}}}
-\DeclareOption{warn}{\gdef\tc at errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
-\DeclareOption{info}{\gdef\tc at errorwarn#1#2{\PackageInfo{textcomp}{#1}}}
+\DeclareOption{error}
+              {\gdef\tc at errorwarn{\PackageError{textcomp}}}
+\DeclareOption{warn}
+              {\gdef\tc at errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
+\DeclareOption{info}
+              {\gdef\tc at errorwarn#1#2{\PackageInfo{textcomp}{#1}}}
 \DeclareOption{quiet}{\gdef\tc at errorwarn#1#2{}}
 %    \end{macrocode}
 %
@@ -1773,7 +1883,7 @@
 %    to ensure that |\textcurrency| is only typeset if the current
 %    font has a \texttt{TS1} subset id of less than 3. Otherwise
 %    |\tc at error| is called telling the user that for this font family
-%    |\textcurreny| is not available.
+%    |\textcurrency| is not available.
 %    \begin{macrocode}
 \def\tc at check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc at subst}
 \def\tc at check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc at error}
@@ -2008,7 +2118,7 @@
 %
 %    Finally input the encoding-specific definitions for
 %    \texttt{TS1} thus making the top-level definitions
-%    optimised for this encoding (and not for the default
+%    optimized for this encoding (and not for the default
 %    encoding).
 % \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.}
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltthm.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltthm.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltthm.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltvers.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltvers.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -33,7 +33,7 @@
 %<*driver>
 % \fi
 \ProvidesFile{ltvers.dtx}
-             [2020/12/05 v1.1e LaTeX Kernel (Version Info)]
+             [2021/01/15 v1.1e LaTeX Kernel (Version Info)]
 % \iffalse
 \documentclass{ltxdoc}
 \GetFileInfo{ltvers.dtx}
@@ -115,7 +115,7 @@
    {2021-05-01}
 %</2ekernel|latexrelease>
 %<*2ekernel>
-\def\patch at level{-1}
+\def\patch at level{-2}
 %    \end{macrocode}
 %
 % \begin{macro}{\development at branch@name}
@@ -181,28 +181,30 @@
 %    \begin{macrocode}
   \ifnum0\ifnum\patch at level=0 \ifx\development at branch@name\@empty 1\fi\fi>0 %
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion>}}
+      \typeout{\fmtname\space <\fmtversion>}}
     \immediate
     \write16{\fmtname \space<\fmtversion>}
   \else\ifnum\patch at level>0
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion> patch level \patch at level}}
+      \typeout{\fmtname\space <\fmtversion> patch level \patch at level}}
     \immediate
-    \write16{\fmtname \space<\fmtversion> patch level \patch at level}
+    \write16{\fmtname\space <\fmtversion> patch level \patch at level}
   \else
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion> pre-release-\number-\patch at level\space
-        \ifx\development at branch@name\@undefined  \else
-          \ifx\development at branch@name\@empty  \else
-            \space (\development at branch@name\space branch)%
+      \typeout{\fmtname\space <\fmtversion>
+               pre-release-\number-\patch at level\space
+               \ifx\development at branch@name\@undefined  \else
+                 \ifx\development at branch@name\@empty  \else
+                  \space (\development at branch@name\space branch)%
           \fi
         \fi
     }}
     \immediate
-    \write16{\fmtname \space<\fmtversion> pre-release-\number-\patch at level\space
-        \ifx\development at branch@name\@undefined  \else
-          \ifx\development at branch@name\@empty  \else
-            \space (\development at branch@name\space branch)%
+    \write16{\fmtname\space <\fmtversion>
+             pre-release-\number-\patch at level\space
+            \ifx\development at branch@name\@undefined  \else
+             \ifx\development at branch@name\@empty  \else
+               \space (\development at branch@name\space branch)%
           \fi
         \fi
     }

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxdoc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxref.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxref.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/ltxref.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -28,7 +28,7 @@
 % \fi
 %\iffalse
 % Copyright (C) 1985 by Leslie Lamport
-% Copyright (C) 1994-98 by \LaTeX3 Project and Johannes Braams
+% Copyright (C) 1994-98 by LaTeX Project and Johannes Braams
 %\fi
 %
 % \changes{1.0b}{1994/01/21}{added a missing \cs{end\{macro\}}, a

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/makeindx.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newdc.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newdc.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newdc.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newlfont.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newlfont.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/newlfont.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/nfssfont.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/olddc.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/olddc.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/olddc.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/oldlfont.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/preload.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/preload.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/preload.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -28,8 +28,8 @@
 % \fi
 %
 % \iffalse
-% Copyright (C) 1991,1992 by Leslie Lamport \and
-% Copyright (C) 1994-2020 by the \LaTeX3 project \and Johannes Braams
+% Copyright (C) 1991,1992 by Leslie Lamport and
+% Copyright (C) 1994-2020 by the LaTeX Project and Johannes Braams
 %
 % \changes{v1.1}{1994/01/25}{Made `proc' a document class and provide
 %    a .sty file for compatibility mode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/proc.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -28,7 +28,7 @@
 % \fi
 %
 % \iffalse
-% Copyright (C) 1994-97 LaTeX3 project, Frank Mittelbach
+% Copyright (C) 1994-97 LaTeX Project, Frank Mittelbach
 % and Rainer Sch\"opf, all rights reserved.
 %
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slides.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -97,7 +97,7 @@
 This is a generated file.
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.
@@ -139,7 +139,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slifonts.fdd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slifonts.fdd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/slifonts.fdd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993-2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -30,7 +30,7 @@
 %\iffalse        This is a META comment
 %
 % File `slifonts.fdd'.
-% Copyright (C) 1989-1998 LaTeX3 project, Frank Mittelbach and
+% Copyright (C) 1989-1998 LaTeX Project, Frank Mittelbach and
 % Rainer Sch\"opf, all rights reserved.
 %
 %<lcmss&!ec>\ProvidesFile{ot1lcmss.fd}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/syntonly.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 1993-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.fdd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.fdd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.fdd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 2016-2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -30,7 +30,7 @@
 %\iffalse        This is a META comment
 %
 % File `cmfonts.fdd'.
-% Copyright (C) 2016-2019 LaTeX3 Project
+% Copyright (C) 2016-2019 LaTeX Project
 %
 %
 %<TUlmr>\ProvidesFile{tulmr.fd}
@@ -51,7 +51,7 @@
 \title{The file \texttt{tulm.fdd} for use with
       \LaTeXe.\thanks{This file has version
            number \fileversion, dated \filedate.}}
-\date{\filedate}\author{LaTeX3 Project}
+\date{\filedate}\author{\LaTeX\ Project}
 \addtolength\textwidth{30pt}
 \begin{document}
 \MaintainedByLaTeXTeam{latex}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/tulm.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.
@@ -49,7 +49,7 @@
 
 
 Copyright (C) 2016-2021
-The LaTeX3 Project and any individual authors listed elsewhere
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/unpack.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/unpack.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/unpack.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -4,7 +4,7 @@
 %% LaTeX or TeX.
 %%
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/base/utf8ienc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -216,7 +216,7 @@
 %<+ts1> \ProvidesFile{ts1enc.dfu}
 %<+x2>  \ProvidesFile{x2enc.dfu}
 %<+all> \ProvidesFile{utf8enc.dfu}
-%<-utf8-2018>   [2020/11/26 v1.2k UTF-8 support for inputenc]
+%<-utf8-2018>   [2021/01/27 v1.2l UTF-8 support for inputenc]
 %    \end{macrocode}
 %
 %    \begin{macrocode}
@@ -1137,7 +1137,7 @@
 % \changes{v1.1q}{2015/12/02}{Add remaining latin uses of accents in T1}
 % \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}
+% \changes{v1.1t}{2017/01/28}{Add caron combinations for GgYy}
 %    \begin{macrocode}
 %<all,t1,ot1,ly1>\DeclareUnicodeCharacter{00A0}{\nobreakspace}
 %<all,t1,ot1,ly1>\DeclareUnicodeCharacter{00A1}{\textexclamdown}
@@ -1701,6 +1701,18 @@
 %<all,ts1>\DeclareUnicodeCharacter{0E3F}{\textbaht}
 %<all,t1>\DeclareUnicodeCharacter{1E02}{\.B}
 %<all,t1>\DeclareUnicodeCharacter{1E03}{\.b}
+%    \end{macrocode}
+% \changes{v1.2k}{2021/01/27}{Added various additional dot accents (gh/484)}
+%    \begin{macrocode}
+%<all,t1>\DeclareUnicodeCharacter{1E0D}{\d d}
+%<all,t1>\DeclareUnicodeCharacter{1E25}{\d h}
+%<all,t1>\DeclareUnicodeCharacter{1E37}{\d l}
+%<all,t1>\DeclareUnicodeCharacter{1E43}{\d m}
+%<all,t1>\DeclareUnicodeCharacter{1E45}{\.n}
+%<all,t1>\DeclareUnicodeCharacter{1E47}{\d n}
+%<all,t1>\DeclareUnicodeCharacter{1E5B}{\d r}
+%<all,t1>\DeclareUnicodeCharacter{1E63}{\d s}
+%<all,t1>\DeclareUnicodeCharacter{1E6D}{\d t}
 %<all,t1>\DeclareUnicodeCharacter{1E9E}{\SS}
 %<all,x2,t2c,t2b,t2a,t1,utf8>\DeclareUnicodeCharacter{200C}{\textcompwordmark}
 %    \end{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/afterpage.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/array.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/array.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/array.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -33,7 +33,7 @@
 %<+package>\DeclareCurrentRelease{}{2020-10-01}
 %<+package>
 %<+package>\ProvidesPackage{array}
-%<+package>         [2020/10/01 v2.5c Tabular extension package (FMi)]
+%<+package>         [2021/02/10 v2.5d Tabular extension package (FMi)]
 %
 % \fi
 %
@@ -188,7 +188,7 @@
 %         David Carlisle\thanks{David kindly agreed on the inclusion
 %         of the \texttt{\textbackslash{}newcolumntype} implementation,
 %         formerly in
-%         \texttt{newarray.sty} into this package }}
+%         \texttt{newarray.sty} into this package.}}
 %
 % \date{Printed \today}
 %
@@ -361,6 +361,56 @@
 %       columns have predefined widths.
 % \end{itemize}
 %
+%
+% \subsection{The behavior of the \texttt{\string\\} command}
+%
+% In the basic \texttt{tabular} implementation of \LaTeX{} the \cs{\bslash}
+% command ending the rows of the \texttt{tabular} or \texttt{array} has
+% a somewhat inconsistent behavior if its optional argument is used. The
+% result then depends on the type of rightmost column and as remarked in
+% Leslie Lamport's \LaTeX{} manual~\cite{bk:lamport} may not always produce the
+% expected extra space.
+%
+%
+% Without the \textsf{array} package the extra space requested by the
+% optional argument of \cs{\bslash} is measured from the last baseline of
+% the rightmost column (indicated by ``x'' in the following
+% example). As a result, swapping the column will give different
+% results:
+% \begin{verbatim}
+%   \begin{tabular}[t]{lp{1cm}}
+%       1 & 1\newline x   \\[20pt]     2 & 2    \end{tabular}
+%   \begin{tabular}[t]{p{1cm}l}
+%       1\newline 1 & x   \\[20pt]     2 & 2    \end{tabular}
+%   \end{verbatim}
+% \pagebreak
+% If you run this without the \textsf{array} package you will get the
+% following result:
+% \begin{center}
+% \begin{tabular}[t]{lp{1cm}}
+%   1 & 1\newline x \\[32pt]      2 & 2 \end{tabular}
+% \begin{tabular}[t]{p{1cm}l}
+%   1\newline 1 & x \\[20pt]      2 & 2 \end{tabular}
+% \end{center}
+% In contrast, when the \textsf{array} package is loaded, the requested
+% space in the optional argument is always measured from the baseline of
+% the whole row and not from the last baseline of the rightmost column, thus
+% swapping columns doesn't change the spacing and we same table height
+% with an effective 8pt of extra space (as the second line already takes
+% up 12pt of the requested 20pt):
+% \begin{center}
+% \begin{tabular}[t]{lp{1cm}}
+%   1 & 1\newline x \\[20pt]      2 & 2 \end{tabular}
+% \begin{tabular}[t]{p{1cm}l}
+%   1\newline 1 & x \\[20pt]      2 & 2 \end{tabular}
+% \end{center}
+%
+% This correction of behavior only makes a difference if the rightmost column
+% is a \texttt{p}-column. Thus if you add the \textsf{array}
+% package to an existing document, you should verify the spacing in all
+% tables that have this kind of structure.
+%
+%
 % \subsection{Defining new column specifiers}
 %
 % \DeleteShortVerb{\=}
@@ -1958,8 +2008,9 @@
 % \changes{v2.2d}{1994/05/16}{Use \LaTeXe \cs{@finalstrut}}
 % \changes{v2.3g}{1996/05/07}{Add \cs{hfil} for tools/2120}
 % \changes{v2.4i}{2018/09/13}{Add group to prevent color leak (gh/72)}
+% \changes{v2.5d}{2021/02/10}{Explicitly run \cs{par} at the end of pboxes}
 %    \begin{macrocode}
-\def\@endpbox{\@finalstrut\@arstrutbox \color at endgroup \egroup\hfil}
+\def\@endpbox{\@finalstrut\@arstrutbox \par \color at endgroup \egroup\hfil}
 %    \end{macrocode}
 % \end{macro}
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/bm.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/calc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/calc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/calc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -25,7 +25,7 @@
 %% Copyright (C) 1992--1995
 %%          Kresten Krab Thorup and Frank Jensen.
 %% Copyright (C) 1997--2007
-%%          Kresten Krab Thorup, Frank Jensen and the LaTeX3 Project.
+%%          Kresten Krab Thorup, Frank Jensen and the LaTeX Project.
 %%
 %% The original authors (fj at hugin.dk and  krab at daimi.aau.dk) have
 %% contributed this package to the LaTeX distribution.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/dcolumn.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/delarray.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/delarray.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/delarray.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/enumerate.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fileerr.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/fontsmpl.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/ftnright.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -314,7 +314,7 @@
 % \newblock Addison-Wesley, Reading, Massachusetts, 1986.
 %
 % \bibitem{src:ltxiii94}
-% \LaTeX3 project.
+% \LaTeX\ Project.
 % \newblock \LaTeXe distribution, 1994.
 % \newblock Sources for {\LaTeXe} the successor to \LaTeX~2.09.
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/hhline.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/hhline.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/hhline.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/indentfirst.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/layout.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/layout.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/layout.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -30,7 +30,7 @@
 %<+package>\ProvidesPackage{layout}
 %<+driver>\ProvidesFile{layout.drv}
 %\ProvidesFile{layout.dtx}
-                [2014/10/28 v1.2c Show layout parameters]
+                [2020-07-25 v1.2d Show layout parameters]
 %
 %    A short driver is provided that can be extracted if necessary by
 %    the \textsf{DocStrip} program provided with \LaTeXe.
@@ -54,6 +54,17 @@
 % \changes{v1.1d}{1994/09/08}{Stored texts in control sequences to
 %    allow other languages}
 %
+% \makeatletter
+% \def\allowtofu{^^A
+%\def\UTFviii at undefined@err##1{^^A
+%  \PackageWarning{inputenc}{Unicode character \expandafter
+%                          \UTFviii at splitcsname\string##1\relax
+%                          \MessageBreak
+%                          not set up for use with LaTeX}^^A
+%  \raisebox{.8pt}{\fboxsep1pt\kern.1pt\fbox{$\cdot$}\kern.1pt}^^A
+%   }}
+% \makeatother
+%
 % \GetFileInfo{layout.dtx}
 % \title{Displaying page layout variables}
 % \author{Kent McPherson a.o.\thanks{Converted for \LaTeXe\ by
@@ -172,6 +183,20 @@
   \def\notshown{non mostrato}
   }
 %    \end{macrocode}
+%    
+%    \changes{v1.2d}{2020-07-25}{Added option for Japanese (gh353)}
+% \begin{allowtofu}
+%    \begin{macrocode}
+\DeclareOption{japanese}{%
+  \def\Headertext{天}
+  \def\Bodytext{基本版面}
+  \def\Footertext{地}
+  \def\MarginNotestext{傍\\注}
+  \def\oneinchtext{1インチ}
+  \def\notshown{非表示}
+  }
+%    \end{macrocode}
+% \end{allowtofu}
 %
 %    This package has an option \Lopt{verbose}. Using it will make the
 %    command |\layout| type some of the parameters on the terminal.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -27,11 +27,17 @@
           \ProvidesFile{longtable.dtx}
 %</dtx>
 %<package>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+%<package>\providecommand\DeclareRelease[3]{}
+%<package>\providecommand\DeclareCurrentRelease[2]{}
+%<package>
+%<package>\DeclareRelease{}{2020-01-02}{longtable-2020-01-07.sty}
+%<package>\DeclareCurrentRelease{}{2020-02-07}
+%<package>
 %<package>\ProvidesPackage{longtable}
 %<driver> \ProvidesFile{longtable.drv}
 % \fi
 %         \ProvidesFile{longtable.dtx}
-          [2020/01/07 v4.13 Multi-page Table package (DPC)]
+          [2020-02-07 v4.14 Multi-page Table package (DPC)]
 %
 % \iffalse
 %<*driver>
@@ -303,7 +309,7 @@
 % (see below), the "LTchunksize" must be at least  as large as the
 % number of rows in each of the head or foot sections.
 %
-% This document specifies "\setcounter{LTchunksize}{10}".  If you look
+% This document specifies "\setcounter{LTchunksize}{200}".  If you look
 % at the previous table, after the \emph{first} run of \LaTeX\  you will
 % see that various parts of the table do not line up.
 % \LaTeX\ will also have printed a warning that the column
@@ -877,9 +883,11 @@
 % \end{macro}
 %
 % \begin{macro}{\LTchunksize}
-% Chunk size (The number of rows taken per "\halign"). Default 20.
+% \changes{v4.14}{2020/02/07}
+%      {Increase default chunksize from 20 to 200}
+% Chunk size (The number of rows taken per "\halign"). Default 200.
 %    \begin{macrocode}
-\newcount\LTchunksize \LTchunksize=20
+\newcount\LTchunksize \LTchunksize=200
 %    \end{macrocode}
 % \end{macro}
 %
@@ -916,6 +924,14 @@
 % \end{macro}
 % \end{macro}
 %
+% \begin{macro}{\LT at gbox}
+% \changes{v4.14}{2020/02/07}
+%      {global box added (tools/2914)}
+%    \begin{macrocode}
+\newbox\LT at gbox
+%    \end{macrocode}
+% \end{macro}
+%
 % \begin{macro}{\LT at cols}
 % Counter for number of columns.
 %    \begin{macrocode}
@@ -1212,7 +1228,7 @@
 % \end{macro}
 %
 % \begin{macro}{\LT at start}
-% % \changes{v4.13}{2020/01/07}
+% \changes{v4.13}{2020/01/07}
 %      {fix issue https://github.com/davidcarlisle/dpctex/issues/8}
 % This macro starts the process of putting the table on the current
 % page. It is not called until either a "\\" or "\endlongtable" command
@@ -1228,6 +1244,34 @@
   \let\LT at start\endgraf
   \endgraf\penalty\z@\vskip\LTpre\endgraf
 %    \end{macrocode}
+% \changes{v4.14}{2020/02/07}
+%      {Guard against shrink glue on current page tools/3396 and github 183}
+% This next block was suggested by Lars Hellström in pr tools/3396
+% He documents it as:
+%
+% The original problem occurs because TeX has not yet found an awfully bad
+% "(b=*)" breakpoint and is therefore still collecting material to see if there
+% is a really good break somewhere just ahead. As we know there aren't, we
+% want to make it stop looking and break the page, so that "\pagetotal" will be
+% for the page  where the table will actually end up. To achieve this, we
+% need to give \TeX\ an awfully bad, but legal, breakpoint. The simplest way of
+% doing this seems to be to insert a "\kern" that counters the "\pageshrink" for
+% the page, followed by a "\penalty" and a "\par" (to exercise the page builder).
+% We also have to make sure that this breakpoint doesn't affect how the next
+% page is broken, so we make the penalty 9999 (10000 is infinite and thus not
+% a legal breakpoint) and cancel out the "\kern" with a new "\kern".
+% 
+% I don't think this is the \emph{right} solution to the problem (that would be
+% that the standard output routine has a feature for syncronizing with
+% typesetting, as part of the preparations for switching output routine), but
+% it's OK. Perhaps XOR will make it better.
+%    \begin{macrocode}
+   \ifdim \pagetotal<\pagegoal \else
+      \dimen@=\pageshrink
+      \advance \dimen@ 1sp %
+      \kern\dimen@\penalty 9999\endgraf \kern-\dimen@
+   \fi
+%    \end{macrocode}
 % Start a new page if there is not enough room for the table head, foot,
 % and one extra line.
 %    \begin{macrocode}
@@ -1259,8 +1303,19 @@
 %
 %    \begin{macrocode}
   \advance\dimen@ -\pagegoal
-  \ifdim \dimen@>\z@\vfil\break\fi
+  \ifdim \dimen@>\z@
+    \vfil\break
+  \else
 %    \end{macrocode}
+%
+% \changes{v4.14}{2020/02/07}
+%      {Guard against shrink glue on current page see github 183}
+% The LT output routine does not handle shrink on the page, which can cause
+% The first page to be over-long, so forget it is there.
+%    \begin{macrocode}
+    \ifdim\pageshrink>\z@\pageshrink\z@\fi
+  \fi
+%    \end{macrocode}
 % Store height of page minus table foot in  "\@colroom".
 % \changes{v3.14}{1995/05/02}
 %      {Set \cs{@colroom}, for tools/1584}
@@ -1269,9 +1324,12 @@
 %    \end{macrocode}
 % If the foot is non empty, reduce the "\vsize" and "\@colroom"
 % accordingly.
+% \changes{v4.14}{2020/02/07}
+%      {Rearrange vertical space tests for tools/3512 (floats on same page)}
 %    \begin{macrocode}
   \ifvoid\LT at foot\else
-    \advance\vsize-\ht\LT at foot
+%    \advance\vsize-\ht\LT at foot
+    \global\advance\vsize-\ht\LT at foot
     \global\advance\@colroom-\ht\LT at foot
     \dimen@\pagegoal\advance\dimen at -\ht\LT at foot\pagegoal\dimen@
     \maxdepth\z@
@@ -1350,8 +1408,15 @@
   \fi
 %    \end{macrocode}
 % Force one more go with the \env{longtable} output routine.
+% \changes{v4.14}{2020/02/07}
+%      {Rearrange vertical space tests for tools/3512 (floats on same page)}
 %    \begin{macrocode}
   \endgraf\penalty -\LT at end@pen
+  \ifvoid\LT at foot\else
+    \global\advance\vsize\ht\LT at foot
+    \global\advance\@colroom\ht\LT at foot
+    \dimen@\pagegoal\advance\dimen@\ht\LT at foot\pagegoal\dimen@
+  \fi
 %    \end{macrocode}
 % Now close the group to return to the standard routine.
 %    \begin{macrocode}
@@ -1361,9 +1426,11 @@
 % table.\footnote{This can not be the correct. However if it is omitted,
 % there is a problem with marginpars, for example on page~3 of this
 % document. Any Output Routine Gurus out there?}
+% \changes{v4.14}{2020/02/07}
+%      {Rearrange vertical space tests for tools/3512 (floats on same page)}
 %    \begin{macrocode}
   \global\@mparbottom\z@
-  \pagegoal\vsize
+%  \pagegoal\vsize
   \endgraf\penalty\z@\addvspace\LTpost
 %    \end{macrocode}
 % Footnotes. As done in  the \package{multicol} package.
@@ -1452,6 +1519,8 @@
 % \begin{macro}{\LT at setprevdepth}
 % \changes{v4.05}{1996/11/12}
 %      {Macro added}
+% \changes{v4.14}{2020/02/07}
+%      {spurious \cs{global} removed}
 % This will be redefined to set the "\prevdepth"
 %  at the start of a chunk.
 %    \begin{macrocode}
@@ -1471,7 +1540,7 @@
   \global\advance\LT at rows\@ne
   \ifnum\LT at rows=\LTchunksize
     \gdef\LT at setprevdepth{%
-      \prevdepth\z@\global
+      \prevdepth\z@
       \global\let\LT at setprevdepth\relax}%
     \expandafter\LT at xtabularcr
   \else
@@ -1528,11 +1597,13 @@
 % \begin{macro}{\LT at echunk}
 % \changes{v4.05}{1996/11/12}
 %      {\cs{unskip} added for pagebreak support}
+% \changes{v4.14}{2020/02/07}
+%      {allocated global box  (tools/2914)}
 % This ends the current chunk, and removes the dummy row.
 %    \begin{macrocode}
 \def\LT at echunk{%
   \crcr\LT at save@row\cr\egroup
-  \global\setbox\@ne\lastbox
+  \global\setbox\LT at gbox\lastbox
 %    \end{macrocode}
 % The following line was added in v4.05.
 % \package{longtable} relies on "\lineskip" glue (which is 0pt) to
@@ -1753,9 +1824,11 @@
 % Loop through the last row, discarding glue, and saving box widths. At
 % V3.04 changed the scratch box to 2, as the new "\kill" requires that
 % "\box0" be preserved.
+% \changes{v4.14}{2020/02/07}
+%      {allocated global box  (tools/2914)}
 %    \begin{macrocode}
   \setbox\tw@\hbox{%
-    \unhbox\@ne
+    \unhbox\LT at gbox
     \let\LT at old@row\LT at save@row
     \global\let\LT at save@row\@empty
     \count@\LT at cols
@@ -1973,13 +2046,17 @@
 % vsplit off a bit of the last chunk, so that the last page did not just
 % have head and foot sections, but it is hard to do this in a consistent
 % manner.}
+% \changes{v4.14}{2020/02/07}
+%      {Rearrange vertical space tests for tools/3512 (floats on same page)}
 %    \begin{macrocode}
         \dimen@\pagegoal
+        \advance\dimen@\ht\LT at foot
         \advance\dimen at -\ht\LT at lastfoot
         \ifdim\dimen@<\ht\z@
           \setbox\@cclv\vbox{\unvbox\z@\copy\LT at foot\vss}%
           \@makecol
           \@outputpage
+          \global\vsize\@colroom
           \setbox\z@\vbox{\box\LT at head}%
 %    \end{macrocode}
 % End of "\ifdim\dimen@<\ht\@cclc".
@@ -1993,14 +2070,17 @@
 % Reset "\@colroom".
 % \changes{v3.14}{1995/05/02}
 %      {Reset \cs{@colroom}, for tools/1584}
+% \changes{v4.14}{2020/02/07}
+%      {Rearrange vertical space tests for tools/3512 (floats on same page)}
 %    \begin{macrocode}
-      \global\@colroom\@colht
-      \global\vsize\@colht
+%      \global\@colroom\@colht
+%      \global\vsize\@colht
 %    \end{macrocode}
 % Put the last page of the table on to the main vertical list.
+% \changes{v4.14}{2020/02/07}
+%      {Remove box from final page tools/3512}
 %    \begin{macrocode}
-      \vbox
-        {\unvbox\z@\box\ifvoid\LT at lastfoot\LT at foot\else\LT at lastfoot\fi}%
+        \unvbox\z@\box\ifvoid\LT at lastfoot\LT at foot\else\LT at lastfoot\fi
 %    \end{macrocode}
 % End of "\ifnum\outputpenalty > -\LT at end@pen".
 %    \begin{macrocode}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/longtable.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -77,7 +77,7 @@
 %% not for the payment of a license fee per se (which might or might
 %% not follow from this evaluation).
 %%
-%% The license fee, if any, can be payed either to the LaTeX3 fund
+%% The license fee, if any, can be payed either to the LaTeX fund
 %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
 %% the program who can be contacted at
 %%

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/multicol.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/rawfonts.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/shellesc.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse
 %% Source File: shellesc.dtx
-%% Copyright (C) 2015-2020
+%% Copyright (C) 2015-2021
 %%
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file may be distributed under the terms of the LPPL.
@@ -36,7 +36,7 @@
 % \title{The \textsf{shellesc} Package\thanks{This file
 %        has version number \fileversion, last
 %        revised \filedate.}}
-% \author{\LaTeX3 project}
+% \author{\LaTeX\ project}
 % \date{\filedate}
 %
 %

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/showkeys.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.
@@ -22,7 +22,7 @@
 % \fi
 % \iffalse
 %% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle
-%% File: showkeys.dtx Copyright (C) 2006-2019 David Carlisle, LaTeX3 Project
+%% File: showkeys.dtx Copyright (C) 2006-2019 David Carlisle, LaTeX Project
 %
 %<*dtx>
           \ProvidesFile{showkeys.dtx}

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/somedefs.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tabularx.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/theorem.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/theorem.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/theorem.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tools.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tools.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/tools.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -49,8 +49,8 @@
 (but please observe conditions on bug reports sent to that address!)
 
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/trace.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/trace.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/trace.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.ins
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.ins	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/varioref.ins	2021-02-28 16:33:40 UTC (rev 57998)
@@ -3,8 +3,8 @@
 %% driver files from the doc files in this package when run through
 %% LaTeX or TeX.
 %%
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file is part of the Standard LaTeX `Tools Bundle'.
@@ -45,8 +45,8 @@
 reports for it can be opened at https://latex-project.org/bugs/
 (but please observe conditions on bug reports sent to that address!)
 
-Copyright (C) 1993-2020
-The LaTeX3 Project and any individual authors listed elsewhere
+Copyright (C) 1993-2021
+The LaTeX Project and any individual authors listed elsewhere
 in this file.
 
 This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/verbatim.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xr.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xr.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xr.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xspace.dtx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xspace.dtx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/source/latex-dev/tools/xspace.dtx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,8 +1,8 @@
 % \iffalse meta-comment
 %
-% Copyright (C) 1993-2020
+% Copyright (C) 1993-2021
 %
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/alltt.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/alltt.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/alltt.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,12 +44,12 @@
 %%
 %% File `alltt.dtx'.
 %% Copyright (C) 1987 by Leslie Lamport
-%% Copyright (C) 1994--2020 LaTeX3 project, Johannes Braams
+%% Copyright (C) 1994-2021 LaTeX Project, Johannes Braams
 %%                       all rights reserved.
 %%
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{alltt}
-              [2020/11/23 v2.0g defines alltt environment]
+              [2021/01/29 v2.0g defines alltt environment]
 \begingroup
 \lccode`\~=`\'
 \lowercase{\endgroup

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ansinew.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ansinew.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ansinew.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{ansinew.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/applemac.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/applemac.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/applemac.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{applemac.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textflorin}{\textit{f}}
 \ProvideTextCommandDefault{\textcent}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{article}
-              [2020/11/23 v1.4m
+              [2021/02/12 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol
@@ -355,7 +355,7 @@
 \newcommand\labelitemi  {\labelitemfont \textbullet}
 \newcommand\labelitemii {\labelitemfont \bfseries \textendash}
 \newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
-\newcommand\labelitemiv{ \labelitemfont \textperiodcentered}
+\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
 \newcommand\labelitemfont{\normalfont}
 \newenvironment{description}
                {\list{}{\labelwidth\z@ \itemindent-\leftmargin

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/article.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ascii.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ascii.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ascii.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{ascii.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \@inpenc at test
 \endinput
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atbegshi-ltx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -42,13 +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,2021 Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2021
+%%               Frank Mittelbach, LaTeX Team
 %%
 %%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0d}
-\providecommand\ltshipoutdate{2020/12/06}
+\providecommand\ltshipoutversion{v1.0i}
+\providecommand\ltshipoutdate{2021/01/25}
 \ProvidesPackage{atbegshi-ltx}
-   [2020/10/15 v1.0b
+   [2021/01/10 v1.0c
      Emulation of the original atbegshi^^Jpackage with kernel methods]
 \let \AtBeginShipoutBox \ShipoutBox
 \let \AtBeginShipoutInit \@empty
@@ -66,6 +67,7 @@
 \let \AtBeginShipoutUpperLeftForeground
               \@expl@@@shipout at add@foreground at picture@@n
 \ExplSyntaxOn
+\cs_new_eq:NN \AtBeginShipoutOriginalShipout \tex_shipout:D
 \cs_new:Npn \ShipoutBoxHeight { \dim_use:N \l_shipout_box_ht_dim }
 \cs_new:Npn \ShipoutBoxDepth  { \dim_use:N \l_shipout_box_dp_dim }
 \cs_new:Npn \ShipoutBoxWidth  { \dim_use:N \l_shipout_box_wd_dim }

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/atveryend-ltx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -41,12 +41,9 @@
 %% 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.
-%%
-%% 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}
+\providecommand\ltfilehookversion{v1.0g}
+\providecommand\ltfilehookdate{2021/02/08}
 \ProvidesPackage{atveryend-ltx}
    [2020/08/19 v1.0a
      Emulation of the original atvery package^^Jwith kernel methods]

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bezier.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bezier.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bezier.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk10.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk10.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk10.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xpt\@xiipt

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk11.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk11.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk11.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xipt{13.6}%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk12.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk12.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/bk12.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xiipt{14.5}%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{book}
-              [2020/11/23 v1.4m
+              [2021/02/12 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol
@@ -457,7 +457,7 @@
 \newcommand\labelitemi  {\labelitemfont \textbullet}
 \newcommand\labelitemii {\labelitemfont \bfseries \textendash}
 \newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
-\newcommand\labelitemiv{ \labelitemfont \textperiodcentered}
+\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
 \newcommand\labelitemfont{\normalfont}
 \newenvironment{description}
                {\list{}{\labelwidth\z@ \itemindent-\leftmargin

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/book.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1250.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1250.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1250.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp1250.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textcurrency}
    {\TextSymbolUnavailable\textcurrency}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1252.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1252.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1252.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp1252.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1257.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1257.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp1257.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp1257.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp437.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textflorin}{\textit{f}}
 \ProvideTextCommandDefault{\textpeseta}{Pt}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437de.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437de.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp437de.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp437de.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textflorin}{\textit{f}}
 \ProvideTextCommandDefault{\textpeseta}{Pt}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp850.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp850.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp850.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp850.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 %%
 %% If you need a Euro symbol, try cp858 instead.
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp852.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp852.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp852.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp852.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp858.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp858.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp858.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp858.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp865.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp865.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/cp865.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{cp865.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textflorin}{\textit{f}}
 \ProvideTextCommandDefault{\textpeseta}{Pt}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/decmulti.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/decmulti.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/decmulti.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{decmulti.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Added: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc-v3beta.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc-v3beta.sty	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc-v3beta.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,1241 @@
+%%
+%% This is file `doc-v3beta.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% doc.dtx  (with options: `package,beta')
+%% 
+%% This is a generated file.
+%% 
+%% The source is maintained by the LaTeX Project team and bug
+%% 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 1993-2018
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%% 
+%% This file was generated from file(s) 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
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This file has the LPPL maintenance status "maintained".
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% base system. You may however distribute the LaTeX base system without
+%% such generated files.
+%% 
+%% 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.
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{v2}{2016-02-15.sty}
+               {doc-2016-02-15.sty}
+\DeclareCurrentRelease{v3}{2018-04-16}
+
+\ProvidesPackage{doc-v3beta}
+  [2021/02/07 v3.0e
+   Standard LaTeX documentation package V3 (FMi)]
+%%
+%% Package `doc' to use with LaTeX 2e
+%% Copyright (C) 1989-2018 Frank Mittelbach, all rights reserved.
+
+
+
+
+
+\@ifundefined{macro at cnt}{}{\endinput}
+\catcode`\^^A=14
+\AtBeginDocument{\catcode`\^^A=14\relax}
+\RequirePackage{kvoptions}
+\SetupKeyvalOptions{family=doc,prefix=doc@}
+\DeclareBoolOption{noprint}
+\DeclareBoolOption{noindex}
+\DeclareBoolOption[true]{hyperref}
+\DeclareBoolOption[true]{multicol}
+\DeclareBoolOption[false]{debugshow}
+\DeclareBoolOption[true]{toplevel}
+\DeclareComplementaryOption{notoplevel}{toplevel}
+\DeclareBoolOption{macrolike}
+\DeclareComplementaryOption{envlike}{macrolike}
+\DeclareStringOption{idxtype}
+\DeclareStringOption{idxgroup}
+\DeclareStringOption{printtype}
+\DeclareBoolOption[false]{outer}
+\ProcessKeyvalOptions*
+\newif\ifscan at allowed    \scan at allowedtrue
+\def\SetupDoc#1{%
+  \setkeys{doc}{#1}%
+    \edef\doc at noprintdefault{\ifdoc at noprint true\else false\fi}%
+  \ifdoc at noindex
+    \def\doc at noindexdefault{true}%
+    \scan at allowedfalse
+  \else
+    \def\doc at noindexdefault{false}%
+  \fi
+}
+\SetupDoc{}              % just save the default values
+\def\macrocode{\macro at code
+   \frenchspacing \@vobeyspaces
+   \xmacro at code}
+\def\macro at code{%
+   \topsep \MacrocodeTopsep
+   \@beginparpenalty \predisplaypenalty
+   \if at inlabel\leavevmode\fi
+   \trivlist \parskip \z@ \item[]%
+   \macro at font
+   \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
+   \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
+   \blank at linefalse \def\par{\ifblank at line
+                             \leavevmode\fi
+                             \blank at linetrue\@@par
+                             \penalty\interlinepenalty}
+   \obeylines
+   \let\do\do at noligs \verbatim at nolig@list
+   \let\do\@makeother \dospecials
+   \global\@newlistfalse
+   \global\@minipagefalse
+   \ifcodeline at index
+     \everypar{\global\advance\c at CodelineNo\@ne
+               \llap{\theCodelineNo\ \hskip\@totalleftmargin}%
+               \check at module}%
+   \else \everypar{\check at module}%
+   \fi
+   \init at crossref}
+\newif\ifblank at line
+\def\endmacrocode{%
+                 \ifpm at module \endgroup \pm at modulefalse \fi
+                 \everypar{}%
+                 \global\@inlabelfalse
+                 \endtrivlist
+                 \close at crossref}
+\@ifundefined{MacroFont}{%
+  \if at compatibility
+    \def\MacroFont{\small
+                   \usefont\encodingdefault
+                           \ttdefault
+                           \mddefault
+                           \updefault
+                   }%
+  \else
+    \def\MacroFont{\fontencoding\encodingdefault
+                   \fontfamily\ttdefault
+                   \fontseries\mddefault
+                   \fontshape\updefault
+                   \small}%
+  \fi
+  }{}
+\@ifundefined{AltMacroFont}{%
+  \if at compatibility
+    \def\AltMacroFont{\small
+                      \usefont\encodingdefault
+                              \ttdefault
+                              \mddefault
+                              \sldefault
+                      }%
+  \else
+    \def\AltMacroFont{\fontencoding\encodingdefault
+                      \fontfamily\ttdefault
+                      \fontseries\mddefault
+                      \fontshape\sldefault
+                      \small
+                      }%
+ \fi
+  }{}
+\AtBeginDocument{\let\macro at font\MacroFont}
+\def\check at module{%
+  \ifcheck at modules
+    \ifpm at module \endgroup \pm at modulefalse \fi
+    \expandafter\futurelet\expandafter\next\expandafter\ch at percent
+  \fi}
+\newif\ifpm at module
+\def\DontCheckModules{\check at modulesfalse}
+\def\CheckModules{\check at modulestrue}
+\newif\ifcheck at modules  \check at modulestrue
+\def\ch at percent{%
+  \if \percentchar\next
+    \expandafter\check at angle
+  \fi}
+\def\check at angle#1{\futurelet\next\ch at angle}
+\begingroup
+\catcode`\<\active
+\gdef\ch at angle{\ifx<\next
+    \expandafter\ch at plus@etc
+  \else \percentchar \fi}
+\gdef\ch at plus@etc<{\futurelet\next\check at plus@etc}
+\gdef\check at plus@etc{%
+    \if +\next
+      \let\next\pm at module
+    \else\if -\next
+      \let\next\pm at module
+    \else\if *\next
+      \let\next\star at module
+    \else\if /\next
+      \let\next\slash at module
+    \else\ifx <\next
+      \percentchar
+    \else
+      \let\next\pm at module
+    \fi\fi\fi\fi\fi
+    \next}
+\endgroup
+\begingroup
+\catcode`\~=\active
+\lccode`\~=`\>
+\lowercase{\gdef\pm at module#1~}{\pm at moduletrue
+   \Module{#1}\begingroup
+     \advance\guard at level\@ne
+     \ifnum\guard at level>\c at StandardModuleDepth\AltMacroFont\fi
+}
+\lowercase{\gdef\star at module#1~}{%
+  \Module{#1}%
+  \global \advance \guard at level\@ne
+  \ifnum \guard at level>\c at StandardModuleDepth
+    \global\let\macro at font=\AltMacroFont \macro at font
+  \fi}
+\catcode`\>=\active
+\gdef\slash at module#1>{%
+  \Module{#1}%
+  \global \advance \guard at level\m at ne
+  \ifnum \guard at level=\c at StandardModuleDepth
+    \global\let\macro at font\MacroFont  \macro at font
+  \fi
+}
+\endgroup
+\newcounter{StandardModuleDepth}
+\newcount \guard at level
+
+\@ifundefined{Module}{%
+      \def\Module#1{\mod at math@codes$\langle\mathsf{#1}\rangle$}
+  }{}
+\def\mod at math@codes{\mathcode`\|="226A \mathcode`\&="2026
+                    \mathcode`\-="702D \mathcode`\+="702B
+                    \mathcode`\:="703A \mathcode`\=="703D }
+\newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
+\newdimen\MacroIndent
+\settowidth\MacroIndent{\rmfamily\scriptsize 00\ }
+\@namedef{macrocode*}{\macro at code\sxmacro at code}
+\expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
+\catcode`\!=\catcode`\%   ^^A In this section there must not be
+                              ^^A any exclamation marks.
+                              ^^A
+\begingroup
+\catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
+\catcode`\{=12 \catcode`\}=12
+\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
+!%    \end{macrocode*}
+!    Next follows the actual definition of  |\macro at code|;
+!    notice the
+!    use of the new escape character.  We manage to get the argument
+!    surrounded by the string |\end{macrocode}|, but at the end
+!    however, in spite of the actual characters used during the
+!    definition of
+!    this macro, |\end| with the argument |{macrocode}|
+!    will be executed, to ensure a balanced environment.
+!    \begin{macrocode*}
+|gdef|xmacro at code#1%    \end{macrocode}[#1|end[macrocode]]
+!%    \end{macrocode*}
+! \begin{macro}{\sxmacro at code}
+!    The definition of |\sxmacro at code| is completely analogous,
+!    only
+!    here a slightly different terminating string will be used.
+!    Note that the space is not active in this environment.
+!    \begin{macrocode}
+|catcode`| =12
+|gdef|sxmacro at code#1%    \end{macrocode*}[#1|end[macrocode*]]
+!%    \end{macrocode}
+!    because the |\catcode| changes have been made local by
+!    commencing a
+!    new group, there now follows the matching |\endgroup|
+!    in a rather
+!    unusual style of writing.
+!    \begin{macrocode}
+|endgroup
+!%    \end{macrocode}
+\catcode`\!=12
+
+\reversemarginpar
+\setlength\marginparpush{0pt}  \setlength\marginparwidth{8pc}
+\setlength\marginparsep{\labelsep}
+{\catcode`\|=\z@ \catcode`\\=12
+|gdef|bslash{\}}
+\def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
+              \MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
+\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
+              \MacroFont \@sxverbatim}
+\def\@verbatim{\trivlist \item[]\if at minipage\else\vskip\parskip\fi
+      \leftskip\@totalleftmargin\rightskip\z@
+      \parindent\z@\parfillskip\@flushglue\parskip\z@
+      \@@par
+      \@tempswafalse
+ \def\par{\if at tempswa\hbox{}\fi\@tempswatrue\@@par
+          \penalty\interlinepenalty
+   \check at percent}%
+ \obeylines
+ \let\do\do at noligs \verbatim at nolig@list
+ \let\do\@makeother \dospecials}
+{\catcode`\%=12
+ \long\gdef\check at percent#1{\ifx #1%\let\next\@empty \else
+                                    \let\next=#1\fi \next}}
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+  \bgroup \let\do\do at noligs \verbatim at nolig@list
+    \ttfamily \verb at eol@error \let\do\@makeother \dospecials
+    \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+\let\verb at balance@group\@empty
+
+\def\verb at egroup{\global\let\verb at balance@group\@empty\egroup}
+
+\begingroup
+  \obeylines%
+  \gdef\verb at eol@error{\obeylines%
+    \def^^M{\verb at egroup\@latex at error{%
+           Text for \noexpand\verb command ended by end of line}\@ehc}}%
+\endgroup
+\def\@sverb#1{%
+  \catcode`#1\active  \lccode`\~`#1%
+  \gdef\verb at balance@group{\verb at egroup
+     \@latex at error{Illegal use of \noexpand\verb command}\@ehc}%
+  \aftergroup\verb at balance@group
+  \lowercase{\let~\verb at egroup}}
+\def\verbatim at nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
+\def\do at noligs#1{%
+  \catcode`#1\active
+  \begingroup
+     \lccode`\~=`#1\relax
+     \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
+\newcount\macro at cnt \macro at cnt=0
+\newskip\MacroTopsep     \MacroTopsep = 7pt plus 2pt minus 2pt
+\begingroup
+\catcode`\~\active
+\gdef\SpecialEscapechar#1{%
+    \begingroup
+     \uccode`\~`#1%
+     \uppercase{\gdef\active at escape@char{~}}%
+     \escapechar\m at ne  \xdef\special at escape@char{\string#1}%
+   \endgroup}
+\endgroup
+\begingroup   \catcode`\|=\z@  \catcode`\\=\active
+|gdef|init at crossref{|catcode`|\|active   |let\|bslash
+    |MakePrivateLetters
+    |catcode|expandafter`|special at escape@char|active
+    |expandafter|let|active at escape@char|scan at macro}
+|endgroup
+\SpecialEscapechar{\\}
+\@ifundefined{MakePrivateLetters}
+    {\let\MakePrivateLetters\makeatletter}{}
+\def\close at crossref{\SpecialEscapechar\\}
+\def\scan at macro{%
+   \special at escape@char
+   \step at checksum
+   \ifscan at allowed
+      \let\macro at namepart\@empty
+      \def\next{\futurelet\next\macro at switch}%
+   \else \let\next\@empty \fi
+   \next}
+\def\DisableCrossrefs{\@bsphack\scan at allowedfalse\@esphack}
+\def\EnableCrossrefs{\@bsphack\scan at allowedtrue
+                     \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
+\def\macro at switch{\ifcat\noexpand\next a%
+     \let\next\macro at name
+     \else \let\next\short at macro  \fi
+   \next}
+\begingroup
+\catcode`\&=12
+\gdef\short at macro#1{\begingroup
+   \uccode`\&=\expandafter`\string#1%
+   \uppercase{\def\x{\def\macro at namepart{&}}}%
+   \expandafter\endgroup\x
+     \maybe at index@short at macro\macro at namepart
+    \scan at allowedfalse#1%
+    \scan at allowedtrue }
+\endgroup
+\def\macro at name#1{\edef\macro at namepart{\macro at namepart#1}%
+     \futurelet\next\more at macroname}
+\def\more at macroname{\ifcat\noexpand\next a%
+     \let\next\macro at name
+     \else \let\next\macro at finish \fi
+     \next}
+\def\macro at finish{%
+  \macro at namepart
+  \maybe at index@macro \macro at namepart
+}
+
+\RequirePackage{expl3}
+\ExplSyntaxOn
+\seq_new:N  \l__doc_donotindex_seq
+\prop_new:N \g__doc_idxtype_prop
+\cs_new:Npn\__doc_trace:x {
+  \ifdoc at debugshow
+    \expandafter \iow_term:x
+  \else
+    \expandafter \use_none:n
+  \fi
+}
+\cs_new:Npn \doc_dont_index:n {
+  \group_begin:
+    \MakePrivateLetters
+    \__doc_dont_index:n
+}
+\cs_new:Npn \__doc_dont_index:n #1 {
+  \group_end:
+  \__doc_trace:x{Disable~ indexing~ for~ '\tl_to_str:n{#1}' }
+  \clist_map_function:nN {#1} \__doc_dont_index_aux:n
+}
+\cs_new:Npn \__doc_dont_index_aux:n #1 {
+  \seq_put_right:Nx \l__doc_donotindex_seq {\expandafter\@gobble \string#1}
+}
+\cs_set_eq:NN \DoNotIndex \doc_dont_index:n
+\def \ShowIndexingState {
+  \__doc_trace:x{Show~ doc~ indexing~ state:}
+  \seq_show:N  \l__doc_donotindex_seq
+  \prop_show:N \g__doc_idxtype_prop
+}
+
+\cs_new:Npn \__doc_idxtype_put:Nn #1#2 {
+  \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
+  \protected at write\@auxout{}
+     {\string\RecordIndexTypeAux {\string#1 }{#2} }
+}
+\cs_new:Npn \RecordIndexTypeAux #1#2 {
+  \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
+}
+\AtEndDocument{
+  \cs_set_eq:NN \RecordIndexTypeAux \use_none:nn
+}
+\cs_set_eq:NN \RecordIndexType \__doc_idxtype_put:Nn
+\cs_new:Npn \__doc_idxtype_put_scan:nn #1#2 {
+  \exp_args:Nf \__doc_idxtype_put:nn { \tl_to_str:n {#1} }{#2}
+  \protected at write\@auxout{}
+     {\string\RecordIndexTypeAux {\bslash #1 }{#2} }
+}
+\cs_generate_variant:Nn \__doc_idxtype_put_scan:nn {o}
+\cs_set_eq:NN \record at index@type at save \__doc_idxtype_put_scan:on
+\cs_new:Npn \__doc_idxtype_put:nn #1#2 {
+  \exp_args:NNf
+  \seq_if_in:NnTF \l__doc_donotindex_seq {\tl_to_str:n{#1}}
+     {
+       \__doc_trace:x{Not~ recording~ index~ type~ for~ '\bslash #1' }
+     }
+     {
+       \__doc_trace:x{Recording~ index~ type~ for~ '\bslash #1' ~ as~ #2 }
+       \prop_gput:Nnn \g__doc_idxtype_prop {#1}{#2}
+     }
+}
+\cs_new:Npn \exp_args:co #1#2
+   { \cs:w #1 \exp_after:wN \cs_end:\exp_after:wN {#2} }
+\cs_generate_variant:Nn \tl_to_str:n {o}
+
+\cs_new:Npn \__doc_maybe_index:o #1 {
+  \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+                                         \SpecialIndex
+}
+\cs_set_eq:NN \maybe at index@macro \__doc_maybe_index:o
+\cs_new:Npn \__doc_maybe_index_short:o #1 {
+  \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+                                         \SpecialShortIndex
+}
+\cs_set_eq:NN \maybe at index@short at macro \__doc_maybe_index_short:o
+\cs_new:Npn \__doc_maybe_index_aux:nN #1#2 {
+  \__doc_trace:x{Searching~ for~ '\bslash #1'}
+  \seq_if_in:NnTF \l__doc_donotindex_seq {#1}
+    {
+     \__doc_trace:x{Not~ indexing~ '\bslash #1' }
+    }
+    {
+     \prop_get:NnNTF \g__doc_idxtype_prop {#1} \l__doc_idxtype_tl
+       {
+        \exp_args:Ncno \__doc_maybe_index_aux:Nnn
+              { Code \tl_use:N \l__doc_idxtype_tl Index }
+              {code} {\bslash #1}
+        }
+        {
+          \__doc_trace:x{Indexing~ '\bslash #1'\space (\string #2)}
+          \exp_args:No #2 {\bslash #1}
+        }
+    }
+}
+\cs_new:Npn \SpecialShortIndex #1 {
+    \@SpecialIndexHelper@ #1\@nil
+  \@bsphack
+  \ifdoc at noindex \else
+    \str_case_e:nnF {\@gtempa }
+        {
+          {\cs_to_str:N \^^M } {\def\reserved at a{ \string \space \actualchar }
+                                \def\reserved at b { \space }
+                                \let\reserved at c \@empty                          }
+          { }                  {\def\reserved at a{ \string \space \actualchar }
+                                \def\reserved at b { \space }
+                                \let\reserved at c \@empty                          }
+          {\c_left_brace_str} { \def\reserved at a{ \bgroup \actualchar }
+                                \def\reserved at b { \c_left_brace_str }
+                                \def\reserved at c { \noexpand\iffalse
+                                                  \c_right_brace_str
+                                                  \noexpand\fi }                 }
+          {\c_right_brace_str} { \def\reserved at a{ \egroup \actualchar
+                                                  \noexpand\iffalse
+                                                    \c_left_brace_str
+                                                  \noexpand\fi }
+                                 \def\reserved at b { \c_right_brace_str }
+                                 \let\reserved at c \@empty                         }
+          {\verbatimchar}  { \def\reserved at a{ \quotechar\verbatimchar
+                                              \actualchar }
+                             \let\reserved at b \@empty
+                             \def\reserved at c
+                                 { \string\texttt{\string\string\verbatimchar} } }
+        }
+        { \def\reserved at a {\quotechar \@gtempa \actualchar }
+          \def\reserved at b {\quotechar \@gtempa  }
+          \let\reserved at c \@empty                             }
+    \special at index {
+    \reserved at a
+    \string\verb
+    \quotechar *\verbatimchar \quotechar \bslash
+    \reserved at b
+    \verbatimchar
+    \reserved at c
+    \encapchar code}
+  \fi
+  \@esphack
+}
+
+\cs_new:Npn \__doc_maybe_index_aux:Nnn #1#2#3 {
+    \cs_if_exist:NTF #1
+      {
+        \__doc_trace:x{Indexing~ '#3'\space as~
+                       \tl_use:N \l__doc_idxtype_tl }
+        #1{#2}{#3}
+      }
+      {
+        \PackageError{doc}{Doc~ element~
+           '\tl_use:N \l__doc_idxtype_tl'~ unknown}%
+
+          {When~ using~ '\string\RecordIndexType'~ the~ type~ must~
+           be~ known~\MessageBreak
+           to~ the~ system,~ i.e.,~ declared~ via~
+           '\string\NewDocElement'\MessageBreak
+           before~ it~ can~ be~ used~ in~ indexing.}
+     }
+}
+\ExplSyntaxOff
+\@ifundefined{actualchar}{\def\actualchar{=}}{}
+\@ifundefined{quotechar}{\def\quotechar{!}}{}
+\@ifundefined{levelchar}{\def\levelchar{>}}{}
+\@ifundefined{encapchar}{\def\encapchar{|}}{}
+\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
+\begingroup
+ \catcode`\|=0
+ \catcode`\\=12
+ |gdef|@SpecialIndexHelper@#1#2|@nil{%
+   |if |noexpand#1\%
+     |gdef|@gtempa{#2}%
+   |else
+     |begingroup
+       |escapechar|m at ne
+       |expandafter|gdef|expandafter|@gtempa|expandafter{|string#1#2}%
+     |endgroup
+   |fi}
+|endgroup
+\def\SortIndex#1#2{%
+  \ifdoc at noindex\else
+    \index{#1\actualchar#2}%
+  \fi
+}
+\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
+   \special at index{\bgroup\actualchar
+                  \string\verb% % to fool emacs highlighting
+                  \quotechar*\verbatimchar
+                  \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
+
+\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
+ \special at index{\egroup\actualchar\string\iffalse{\string\fi
+           \string\verb% % to fool emacs highlighting
+           \quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
+\@ifundefined{PercentIndex}
+  {\def\PercentIndex{\it at is@a\percentchar}}{}
+\def\OldMakeindex{\def\PercentIndex{%
+    \special at index{\quotechar\percentchar\actualchar
+           \string\verb% % to fool emacs highlighting
+           \quotechar*\verbatimchar\quotechar\bslash
+           \percentchar\percentchar\verbatimchar}}}
+{\catcode`\%=12 \gdef\percentchar{%}}
+\def\it at is@a#1{\special at index{\quotechar #1\actualchar
+                          \string\verb% % to fool emacs highlighting
+                          \quotechar*\verbatimchar
+                          \quotechar\bslash\quotechar#1\verbatimchar}}
+
+\newdimen\IndexMin         \IndexMin       = 80pt
+\newcount\c at IndexColumns   \c at IndexColumns = 3
+\ifdoc at multicol
+  \RequirePackage{multicol}
+  \renewenvironment{theindex}
+    {\begin{multicols}\c at IndexColumns[\index at prologue][\IndexMin]%
+      \IndexParms \let\item\@idxitem \ignorespaces}%
+    {\end{multicols}}
+\else
+  \def\theindex{\@restonecoltrue\if at twocolumn\@restonecolfalse\fi
+    \columnseprule \z@  \columnsep 35\p@
+    \twocolumn[\index at prologue]%
+    \IndexParms \let\item\@idxitem \ignorespaces}
+  \def\endtheindex{\if at restonecol\onecolumn\else\clearpage\fi}
+\fi
+\long\def\IndexPrologue#1{\@bsphack\def\index at prologue{#1}\@esphack}
+\@ifundefined{index at prologue}
+     {\def\index at prologue{\section*{Index}%
+                 \markboth{Index}{Index}%
+                 Numbers written in italic refer to the page
+                 where the corresponding entry is described;
+                 numbers underlined refer to the
+                 \ifcodeline at index
+                   code line of the
+                 \fi
+                 definition; numbers in roman refer to the
+                 \ifcodeline at index
+                   code lines
+                 \else
+                   pages
+                 \fi
+                 where the entry is used.
+                 }}{}
+\@ifundefined{IndexParms}
+    {\def\IndexParms{%
+       \parindent \z@
+       \columnsep 15pt
+       \parskip 0pt plus 1pt
+       \rightskip 15pt
+       \mathsurround \z@
+       \parfillskip=-15pt
+        \small
+       \def\@idxitem{\par\hangindent 30pt}%
+       \def\subitem{\@idxitem\hspace*{15pt}}%
+       \def\subsubitem{\@idxitem\hspace*{25pt}}%
+       \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
+      }}{}
+\def\efill{\hfill\nopagebreak}%
+\def\pfill{\unskip~%
+           \leaders\hbox to.6em{\hss .\hss}\hfill
+           \penalty500\strut\nobreak
+           \leaders\hbox to.6em{\hss .\hss}\hfil
+           ~\ignorespaces}%
+\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
+\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
+\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
+\@ifundefined{code}{\def\code#1{#1}}{}
+\def\PrintIndex{\@input@{\jobname.ind}%
+                \global\let\PrintIndex\@empty}
+\def\changes{\@bsphack\begingroup\@sanitize
+   \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
+   \changes@}
+\def\changes@#1#2#3{%
+  \protected at edef\@tempa{\noexpand\glossary{#1\levelchar
+                   \ifx\saved at macroname\@empty
+                      \quotechar!%
+                      \actualchar
+                      \generalname
+                   \else
+                      \saved at indexname
+                      \actualchar
+                      \string\verb% % to fool emacs highlighting
+                      \quotechar*%
+                      \verbatimchar\saved at macroname
+                      \verbatimchar
+                   \fi
+                   :\levelchar #3}}%
+  \@tempa\endgroup\@esphack}
+\def\saved at macroname{}
+\def\saved at indexname{}
+\def\generalname{General}
+\let\RecordChanges\makeglossary
+\newdimen\GlossaryMin         \GlossaryMin       = 80pt
+\newcount\c at GlossaryColumns   \c at GlossaryColumns = 2
+\ifdoc at multicol
+  \newenvironment{theglossary}{%
+    \begin{multicols}\c at GlossaryColumns
+                     [\glossary at prologue][\GlossaryMin]%
+    \GlossaryParms \let\item\@idxitem \ignorespaces}%
+   {\end{multicols}}
+\else
+  \newenvironment{theglossary}{%
+      \@restonecoltrue\if at twocolumn\@restonecolfalse\fi
+      \columnseprule \z@  \columnsep 35\p@
+      \twocolumn[\glossary at prologue]%
+      \GlossaryParms \let\item\@idxitem \ignorespaces}
+    {\if at restonecol\onecolumn\else\clearpage\fi}
+\fi
+\long\def\GlossaryPrologue#1{\@bsphack
+                             \def\glossary at prologue{#1}%
+                             \@esphack}
+\@ifundefined{glossary at prologue}
+     {\def\glossary at prologue{\section*{{Change History}}%
+                 \markboth{{Change History}}{{Change History}}%
+                 }}{}
+\@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms
+  \expandafter\def\expandafter\GlossaryParms\expandafter{\GlossaryParms
+     \rightskip 15pt plus 1fil
+     \parfillskip -15pt plus -1fil\relax}
+}{}
+\def\PrintChanges{\@input@{\jobname.gls}%
+                  \global\let\PrintChanges\@empty}
+\newcommand\AlsoImplementation{%
+   \long\def\MaybeStopHere##1{\@bsphack\gdef\Finale{##1%
+                  \check at checksum}%
+              \init at checksum
+              \@esphack}%
+         }
+\AlsoImplementation
+\def\OnlyDescription{\@bsphack\long\def\MaybeStopHere##1{%
+           ##1\endinput}\@esphack}
+\let\Finale\relax
+\def\StopEventually{\MaybeStopHere}
+\ifx\l at nohyphenation\undefined
+  \newlanguage\l at nohyphenation
+\fi
+\DeclareRobustCommand\meta[1]{%
+     \ensuremath\langle
+     \ifmmode \expandafter \nfss at text \fi
+     {%
+      \meta at font@select
+      \edef\meta at hyphen@restore
+        {\hyphenchar\the\font\the\hyphenchar\font}%
+      \hyphenchar\font\m at ne
+      \language\l at nohyphenation
+      #1\/%
+      \meta at hyphen@restore
+     }\ensuremath\rangle
+}
+\def\meta at font@select{\itshape}
+\def\IndexInput#1{%
+     \begingroup \macro at code
+   \frenchspacing \@vobeyspaces
+     \input{#1}\endmacrocode
+     \endgroup}
+\def\maketitle{\par
+      \begingroup \def \thefootnote {\fnsymbol {footnote}}%
+      \setcounter {footnote}\z@
+      \def\@makefnmark{\hbox to\z@{$\m at th^{\@thefnmark}$\hss}}%
+      \long\def\@makefntext##1{\parindent 1em\noindent
+            \hbox to1.8em{\hss$\m at th^{\@thefnmark}$}##1}%
+      \if at twocolumn \twocolumn [\@maketitle ]%
+      \else \newpage \global \@topnum \z@ \@maketitle \fi
+       \thispagestyle{titlepage}\@thanks \endgroup
+      \setcounter {footnote}\z@
+      \gdef\@date{\today}\gdef\@thanks{}%
+      \gdef\@author{}\gdef\@title{}}
+\@ifundefined{ps at titlepage}
+    {\let\ps at titlepage=\ps at plain}{}
+\def\MakeShortVerb{%
+  \@ifstar
+    {\def\@shortvrbdef{\verb*}\@MakeShortVerb}%
+    {\def\@shortvrbdef{\verb}\@MakeShortVerb}}
+\def\@MakeShortVerb#1{%
+  \expandafter\ifx\csname cc\string#1\endcsname\relax
+    \@shortvrbinfo{Made }{#1}\@shortvrbdef
+    \add at special{#1}%
+    \expandafter
+    \xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
+    \begingroup
+      \catcode`\~\active  \lccode`\~`#1%
+      \lowercase{%
+      \global\expandafter\let
+         \csname ac\string#1\endcsname~%
+      \expandafter\gdef\expandafter~\expandafter{\@shortvrbdef~}}%
+    \endgroup
+    \global\catcode`#1\active
+  \else
+    \@shortvrbinfo\@empty{#1 already}%
+                         {\@empty\verb% % to fool emacs highlighting
+                          (*)}%
+  \fi}
+\def\DeleteShortVerb#1{%
+  \expandafter\ifx\csname cc\string#1\endcsname\relax
+    \@shortvrbinfo\@empty{#1 not}%
+                         {\@empty\verb% % to fool emacs highlighting
+                          (*)}%
+  \else
+    \@shortvrbinfo{Deleted }{#1 as}%
+                            {\@empty\verb% % to fool emacs
+                                           % highlighting
+                            (*)}%
+    \rem at special{#1}%
+    \global\catcode`#1\csname cc\string#1\endcsname
+    \global \expandafter\let \csname cc\string#1\endcsname \relax
+    \ifnum\catcode`#1=\active
+      \begingroup
+        \catcode`\~\active   \lccode`\~`#1%
+        \lowercase{%
+          \global\expandafter\let\expandafter~%
+          \csname ac\string#1\endcsname}%
+      \endgroup \fi \fi}
+\def\@shortvrbinfo#1#2#3{%
+  \PackageInfo{doc}{%
+     #1\expandafter\@gobble\string#2 a short reference
+                                          for \expandafter\string#3}}
+\def\add at special#1{%
+  \rem at special{#1}%
+  \expandafter\gdef\expandafter\dospecials\expandafter
+    {\dospecials \do #1}%
+  \expandafter\gdef\expandafter\@sanitize\expandafter
+    {\@sanitize \@makeother #1}}
+\def\rem at special#1{%
+  \def\do##1{%
+    \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
+  \xdef\dospecials{\dospecials}%
+  \begingroup
+    \def\@makeother##1{%
+      \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
+    \xdef\@sanitize{\@sanitize}%
+  \endgroup}
+\def\init at checksum{\relax
+    \global\bslash at cnt\z@}
+\def\check at checksum{\relax
+  \ifnum\check at sum>\m at ne
+     \ifnum\check at sum=\z@
+       \typeout{**********************************}%
+       \typeout{* This macro file has no checksum!}%
+       \typeout{* The checksum should be \the\bslash at cnt!}%
+       \typeout{**********************************}%
+     \else
+       \ifnum\check at sum=\bslash at cnt
+         \typeout{*******************}%
+         \typeout{* Checksum passed *}%
+         \typeout{*******************}%
+       \else
+         \PackageError{doc}{Checksum not passed
+                    (\the\check at sum<>\the\bslash at cnt)}%
+          {The file currently documented seems to be wrong.^^J%
+           Try to get a correct version.}%
+       \fi
+     \fi
+  \fi
+  \global\check at sum\m at ne}
+\newcount\check at sum           \check at sum  = \m at ne
+\newcount\bslash at cnt          \bslash at cnt = \z@
+\def\CheckSum#1{\@bsphack\global\check at sum#1\relax\@esphack}
+\def\step at checksum{\global\advance\bslash at cnt\@ne}
+\def\CharacterTable{\begingroup \CharTableChanges \character at table}
+\begingroup
+  \catcode`\~=11
+  \gdef\character at table#1{\def\used~table{#1}%
+      \ifx\used~table\default~table
+           \typeout{***************************}%
+           \typeout{* Character table correct *}%
+           \typeout{***************************}%
+      \else
+         \PackageError{doc}{Character table corrupted}
+                           {\the\wrong at table}
+         \show\default~table
+         \show\used~table
+      \fi
+      \endgroup}
+  \global\let\CharTableChanges\@empty
+  \makeatother
+  \gdef\default~table
+     {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+      Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+      Digits        \0\1\2\3\4\5\6\7\8\9
+      Exclamation   \!     Double quote  \"     Hash (number) \#
+      Dollar        \$     Percent       \%     Ampersand     \&
+      Acute accent  \'     Left paren    \(     Right paren   \)
+      Asterisk      \*     Plus          \+     Comma         \,
+      Minus         \-     Point         \.     Solidus       \/
+      Colon         \:     Semicolon     \;     Less than     \<
+      Equals        \=     Greater than  \>     Question mark \?
+      Commercial at \@     Left bracket  \[     Backslash     \\
+      Right bracket \]     Circumflex    \^     Underscore    \_
+      Grave accent  \`     Left brace    \{     Vertical bar  \|
+      Right brace   \}     Tilde         \~}
+\endgroup
+  \newhelp\wrong at table{Some of the ASCII characters are corrupted.^^J
+            I now \string\show\space you both tables for comparison.}
+\newif\ifcodeline at index \codeline at indexfalse
+\let\CodelineNumbered\codeline at indextrue
+\def\codeline at wrindex#1{\if at filesw
+     \begingroup
+        \set at display@protect
+        \immediate\write\@indexfile
+            {\string\indexentry{#1}%
+             {\number\c at CodelineNo}}%
+      \endgroup
+    \fi}
+\let\special at index = \@gobble
+\def\CodelineIndex{\makeindex
+                   \codeline at indextrue
+                   \let\special at index\codeline at wrindex}
+\def\PageIndex{\makeindex
+               \codeline at indexfalse
+               \let\special at index\index}
+\newcount\c at CodelineNo  \c at CodelineNo\z@
+\@ifundefined{theCodelineNo}
+  {\ifx\selectfont\undefined
+     \def\theCodelineNo{\rmfamily\scriptsize\arabic{CodelineNo}}%
+   \else
+     \def\theCodelineNo{\reset at font\scriptsize\arabic{CodelineNo}}%
+   \fi}
+  {}
+       \tolerance=1000\relax
+{ \catcode`\"=12
+  \global\mathcode`\\="705C \global\mathcode`\@="7040 }
+\@ifundefined{DocstyleParms}{}{\DocstyleParms}
+ \let\DocstyleParms\relax
+\@ifundefined{AmSTeX}
+   {\def\AmSTeX{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
+        \hbox{$\mathcal M$}\kern-.2em\mathcal S$-\TeX}}}{}
+\@ifundefined{BibTeX}
+   {\def\BibTeX{{\rmfamily B\kern-.05em%
+    \textsc{i\kern-.025em b}\kern-.08em%
+    T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
+\@ifundefined{SliTeX}
+   {\def\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox
+                {\scshape i}\kern -.03em\TeX}}}{}
+\@ifundefined{PlainTeX}{\def\PlainTeX{\textsc{Plain}\kern2pt\TeX}}{}
+\@ifundefined{Web}{\def\Web{\textsc{Web}}}{}
+\def\MakePercentIgnore{\catcode`\%9\relax}
+\def\MakePercentComment{\catcode`\%14\relax}
+\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
+\def\GetFileInfo#1{%
+  \def\filename{#1}%
+  \def\@tempb##1 ##2 ##3\relax##4\relax{%
+    \def\filedate{##1}%
+    \def\fileversion{##2}%
+    \def\fileinfo{##3}}%
+  \edef\@tempa{\csname ver@#1\endcsname}%
+  \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+
+\ifdoc at hyperref
+  \let\PrintDescribeMacro \@empty
+  \let\PrintDescribeEnv   \@empty
+  \let\PrintMacroName     \@empty
+  \let\PrintEnvName       \@empty
+  \let\SpecialUsageIndex  \@empty
+  \let\SpecialEnvIndex    \@empty
+  \expandafter\let\expandafter\doc at eoph@@k\csname doc.sty-h@@k\endcsname
+  \RequirePackage{hypdoc}
+  \expandafter\let\csname doc.sty-h@@k\endcsname\doc at eoph@@k
+  \let\PrintDescribeMacro \relax
+  \let\PrintDescribeEnv   \relax
+  \let\PrintMacroName     \relax
+  \let\PrintEnvName       \relax
+  \def\doc at providetarget{\HD at target}
+  \def\doc at handleencap#1{\encapchar hdclindex{\the\c at HD@hypercount}{#1}}
+\else
+  \let\doc at providetarget\@empty
+  \def\doc at handleencap#1{\encapchar #1}
+  \def\hdclindex#1#2{\ifx\@nil#2\@nil\else\csname #2\expandafter\endcsname\fi}
+  \def\hdpindex   #1{\ifx\@nil#1\@nil\else\csname #1\expandafter\endcsname\fi}
+\fi
+
+
+\ExplSyntaxOn
+
+\long\def\@doc at env#1#2#3{
+  \endgroup
+  \clist_map_inline:nn {#3} { \@doc at env@{#1}{#2}{##1} }
+}
+
+\ExplSyntaxOff
+\long\def\@doc at env@#1#2#3{%
+  \topsep\MacroTopsep
+  \trivlist
+    \edef\saved at macroname{\string#3}%
+    \if #1%
+      \edef\saved at indexname{\expandafter\@gobble\saved at macroname}%
+      \expandafter\ifx
+                  \csname Code#2Index\endcsname
+                  \CodeMacroIndex
+      \else
+        \record at index@type at save
+          {\saved at indexname}{#2}%
+      \fi
+    \else
+      \let\saved at indexname\saved at macroname
+    \fi
+    \def\makelabel##1{\llap{##1}}%
+    \if at inlabel
+      \let\@tempa\@empty
+      \count@\macro at cnt
+      \loop\ifnum\count@>\z@
+        \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m at ne
+      \repeat
+      \edef\makelabel##1{\llap{\vtop to\baselineskip{\@tempa\hbox{##1}\vss}}}%
+      \advance\macro at cnt\@ne
+    \else
+      \macro at cnt\@ne
+    \fi
+    \ifdoc at noprint
+      \item
+    \else
+      \edef\@tempa{%
+        \noexpand\item[%
+        \noexpand\doc at providetarget
+        \noexpand\strut
+        \noexpand\@nameuse{Print#2Name}{\saved at macroname}]}%
+      \@tempa
+    \fi
+    \ifdoc at noindex\else
+      \global\advance\c at CodelineNo\@ne
+      \csname SpecialMain#2Index\expandafter\endcsname
+        \expandafter{\saved at macroname}\nobreak
+      \global\advance\c at CodelineNo\m at ne
+    \fi
+    \if#1\expandafter\DoNotIndex \expandafter {\saved at macroname}\fi
+    \ignorespaces}
+
+\def\doc at env#1#2[#3]{%
+  \@nameuse{doc at noprint\doc at noprintdefault}%
+  \@nameuse{doc at noindex\doc at noindexdefault}%
+  \setkeys{doc}{#3}%
+  \begingroup
+    \ifdoc at outer
+      \catcode`\\12
+    \fi
+    \MakePrivateLetters
+    \@doc at env{#1}{#2}%
+}
+
+\def\@doc at describe#1#2{%
+    \ifdoc at noprint\else
+      \marginpar{\raggedleft
+                 \strut
+                 \doc at providetarget
+                 \@nameuse{PrintDescribe#1}{#2}}%
+    \fi
+    \ifdoc at noindex\else
+      \@nameuse{Special#1Index}{#2}%
+    \fi
+  \@esphack
+  \endgroup
+  \ignorespaces}
+\def\doc at describe#1[#2]{%
+  \leavevmode\@bsphack
+    \setkeys{doc}{#2}%
+      \@doc at describe{#1}}
+\@ifundefined{temptokenb}{\newtoks\@temptokenb}{}
+\def\doc at createspecialindexes#1#2#3{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{SpecialMain#1Index}##1{%
+    \noexpand\@bsphack
+  \ifdoc at toplevel
+    \noexpand\special at index{##1\noexpand\actualchar
+    {\string\ttfamily\space##1}%
+    \ifx\@nil#2\@nil\else \the\@temptokena \fi
+    \noexpand\encapchar main}%
+  \fi
+  \ifx\@nil#3\@nil\else
+    \noexpand\special at index{\the\@temptokenb\noexpand\levelchar
+      ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+      \noexpand\encapchar main}%
+  \fi
+    \noexpand\@esphack}%
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@bsphack
+  \ifdoc at toplevel
+    \noexpand\doc at providetarget
+    \noexpand\index{##1\noexpand\actualchar{\string\ttfamily\space##1}%
+    \ifx\@nil#2\@nil\else \the\@temptokena \fi
+           \noexpand\doc at handleencap{usage}}%
+  \fi
+  \ifx\@nil#3\@nil\else
+    \noexpand\index{\the\@temptokenb\noexpand\levelchar
+       ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+           \noexpand\doc at handleencap{usage}}%
+  \fi
+    \noexpand\@esphack}}
+\def\doc at createspecialmacrolikeindexes#1#2#3{%
+  \@temptokena{\space (#2)}%
+  \@temptokenb{#3:}%
+  \@nameedef{Code#1Index}##1##2{%
+    \noexpand\@SpecialIndexHelper@##2\noexpand\@nil
+    \noexpand\@bsphack
+  \noexpand\ifdoc at noindex\noexpand\else
+    \ifdoc at toplevel
+      \noexpand\special at index{\noexpand\@gtempa\noexpand\actualchar
+\string\verb% % to fool emacs highlighting
+\noexpand\quotechar*\noexpand\verbatimchar
+\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+\ifx\@nil#2\@nil\else \the\@temptokena \fi
+\noexpand\encapchar ##1}%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\special at index{\the\@temptokenb\noexpand\levelchar
+\noexpand\@gtempa\noexpand\actualchar
+\string\verb% % to fool emacs highlighting
+\noexpand\quotechar*\noexpand\verbatimchar
+\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+\noexpand\encapchar ##1}%
+    \fi
+  \noexpand\fi
+    \noexpand\@esphack}%
+  \@nameedef{SpecialMain#1Index}##1{%
+    \expandafter\noexpand\csname Code#1Index\endcsname
+        {main}{##1}}%
+  \@nameedef{Special#1Index}##1{%
+    \noexpand\@SpecialIndexHelper@##1\noexpand\@nil
+    \noexpand\@bsphack
+  \noexpand\ifdoc at noindex\noexpand\else
+    \ifdoc at toplevel
+      \noexpand\doc at providetarget
+      \noexpand\index{\noexpand\@gtempa\noexpand\actualchar
+\string\verb% % to fool emacs highlighting
+\noexpand\quotechar*\noexpand\verbatimchar
+\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+\ifx\@nil#2\@nil\else \the\@temptokena \fi
+\noexpand\doc at handleencap{usage}}%
+    \fi
+    \ifx\@nil#3\@nil\else
+      \noexpand\index{\the\@temptokenb\noexpand\levelchar
+\noexpand\@gtempa\noexpand\actualchar
+\string\verb% % to fool emacs highlighting
+\noexpand\quotechar*\noexpand\verbatimchar
+\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+\noexpand\doc at handleencap{usage}}%
+    \fi
+  \noexpand\fi
+    \noexpand\@esphack}}
+
+\def\doc at createdescribe#1{%
+  \@namedef{Describe#1}{%
+    \begingroup
+      \MakePrivateLetters
+      \@ifnextchar[%]
+      {\doc at describe{#1}}{\doc at describe{#1}[]}}}
+\def\doc at createenv#1#2#3{%
+  \@namedef{#3}{%
+    \@ifnextchar[%]
+    {\doc at env{#1}{#2}}{\doc at env{#1}{#2}[]}}%
+  \@namedef{end#3}{\endtrivlist}%
+}
+
+\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
+
+
+\def\doc at declareerror#1#2{%
+   \PackageError{doc}{Doc element '#1/#2' already defined?\@gobble}%
+      {There is already a definition for
+       '\string\Print#1Name',\MessageBreak
+       '\string\PrintDescribe#1'
+       or the environment '#2'.\MessageBreak
+       Maybe you are overwriting something by mistake!\MessageBreak
+       Otherwise use '\string\RenewDocElement' instead.}%
+}
+
+\def\doc at notdeclarederror#1#2{%
+   \PackageError{doc}{Doc element '#1/#2' unknown}%
+      {I expected an existing definition for
+       '\string\Print#1Name',\MessageBreak
+       '\string\PrintDescribe#1' and
+       the environment '#2' but\MessageBreak
+       not all of them are defined.\MessageBreak
+       Maybe you wanted to use
+       '\string\NewDocElement'?}%
+}
+\newcommand\NewDocElement[3][]{%
+  \@ifundefined{Print#2Name}%
+      {\@ifundefined{PrintDescribe#2}%
+           {\@ifundefined{#3}%
+               {\@ifundefined{end#3}%
+                    {\@NewDocElement{#1}}%
+                    \doc at declareerror
+               }\doc at declareerror
+           }\doc at declareerror
+      }\doc at declareerror
+  {#2}{#3}%
+}
+\newcommand\RenewDocElement[3][]{%
+  \@ifundefined{Print#2Name}\doc at notdeclarederror
+      {\@ifundefined{PrintDescribe#2}\doc at notdeclarederror
+           {\@ifundefined{#3}\doc at notdeclarederror
+               {\@ifundefined{end#3}\doc at notdeclarederror
+                    {\@NewDocElement{#1}}%
+               }%
+           }%
+      }%
+  {#2}{#3}%
+}
+\def\@NewDocElement#1#2#3{%
+  \doc at macrolikefalse
+  \doc at topleveltrue
+  \def\doc at idxtype{#3}%
+  \def\doc at idxgroup{#3s}%
+  \let\doc at printtype\@empty
+  \setkeys{doc}{#1}%
+  \ifx\doc at printtype\@empty
+    \@temptokena{}%
+  \else
+    \@temptokena\expandafter{\expandafter
+         \textnormal\expandafter{\expandafter
+         \space\expandafter
+         (\doc at printtype)}}%
+  \fi
+  \@nameedef{Print#2Name}##1{%
+     {\noexpand\MacroFont
+      \ifdoc at macrolike
+         \noexpand\string
+      \fi
+      ##1%
+      \the\@temptokena
+     }}%
+  \expandafter\let\csname PrintDescribe#2\expandafter\endcsname
+                  \csname Print#2Name\endcsname
+  \edef\doc at expr{%
+     \ifdoc at macrolike
+       \noexpand\doc at createspecialmacrolikeindexes
+     \else
+       \noexpand\doc at createspecialindexes
+     \fi
+     {#2}%
+    }%
+   \expandafter\expandafter\expandafter
+   \doc at expr
+   \expandafter\expandafter\expandafter
+     {\expandafter\doc at idxtype\expandafter}\expandafter
+     {\doc at idxgroup}%
+  \doc at createdescribe{#2}%
+    \ifdoc at macrolike
+      \doc at createenv{TT}{#2}{#3}%
+    \else
+      \doc at createenv{TF}{#2}{#3}%
+    \fi
+}
+
+
+\NewDocElement[macrolike = true ,
+                idxtype   = ,
+                idxgroup  = ,
+                printtype =
+               ]{Macro}{macro}
+
+\def\SpecialMainIndex{\SpecialMainMacroIndex}
+
+\def\SpecialUsageIndex{\SpecialMacroIndex}
+
+\def\SpecialIndex     {\CodeMacroIndex{code}}
+
+\NewDocElement[macrolike = false ,
+                idxtype   = env.  ,
+                idxgroup  = environments ,
+                printtype = \textit{env.}
+               ]{Env}{environment}
+
+
+\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}
+
+\endinput
+%%
+%% End of file `doc-v3beta.sty'.


Property changes on: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc-v3beta.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/doc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/docstrip.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/docstrip.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/docstrip.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -54,7 +54,7 @@
 %%                         Frank Mittelbach
 %% Copyright (C) 1995 Marcin Woli\'nski
 %% Copyright (C) 1996-1997 Mark Wooding, Marcin Woli\'nski
-%% Copyright (C) 1998-2020 LaTeX3 project and the above authors
+%% Copyright (C) 1998-2021 LaTeX Project and the above authors.
 %% All rights are reserved.
 %%
 \catcode`\Z=\catcode`\%

Deleted: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/everyshi-ltx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,68 +0,0 @@
-%%
-%% This is file `everyshi-ltx.sty',
-%% generated with the docstrip utility.
-%%
-%% The original source files were:
-%%
-%% ltshipout.dtx  (with options: `everyshi-ltx')
-%% 
-%% This is a generated file.
-%% 
-%% The source is maintained by the LaTeX Project team and bug
-%% 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-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
-%% in this file.
-%% 
-%% This file was generated from file(s) 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
-%%    https://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".
-%% 
-%% This file may only be distributed together with a copy of the LaTeX
-%% base system. You may however distribute the LaTeX base system without
-%% such generated files.
-%% 
-%% 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.
-%%
-%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
-%%
-%%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0d}
-\providecommand\ltshipoutdate{2020/12/06}
-\ProvidesPackage{everyshi-ltx}
-   [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}}
-%%
-%%   In normal circumstances the above emulation is sufficient and in
-%%   all known packages (we know of) that use everyshi it either works or
-%%   the packages have been adjusted.
-%%
-%%   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 sufficient to avoid such manipulations (or
-%%   replace box 255 with \ShipoutBox in the code.
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\endinput
-%%
-%% End of file `everyshi-ltx.sty'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/exscale.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/exscale.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/exscale.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fix-cm.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fixltx2e.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/flafter.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/flafter.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/flafter.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fleqn.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fltrace.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fltrace.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fltrace.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontenc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontenc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontenc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesPackage{fontenc}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
                         Standard LaTeX package]
 \def\update at uclc@with at cyrillic{%
  \expandafter\def\expandafter\@uclclist\expandafter

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.cfg	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -37,7 +37,7 @@
 %% 
 %%% From File: fontdef.dtx
 \ProvidesFile{fontmath.cfg}
-           [2020/11/24 v3.0i LaTeX Kernel
+           [2021/01/15 v3.0i LaTeX Kernel
 (Uncustomized math
            font setup)]
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fontmath.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -37,7 +37,7 @@
 %% 
 %%% From File: fontdef.dtx
 \ProvidesFile{fontmath.ltx}
-           [2020/11/24 v3.0i LaTeX Kernel
+           [2021/01/15 v3.0i LaTeX Kernel
 (Math
            font setup)]
 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.cfg	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -37,7 +37,7 @@
 %% 
 %%% From File: fontdef.dtx
 \ProvidesFile{fonttext.cfg}
-           [2020/11/24 v3.0i LaTeX Kernel
+           [2021/01/15 v3.0i LaTeX Kernel
 (Uncustomized text
            font setup)]
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/fonttext.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -37,7 +37,7 @@
 %% 
 %%% From File: fontdef.dtx
 \ProvidesFile{fonttext.ltx}
-           [2020/11/24 v3.0i LaTeX Kernel
+           [2021/01/15 v3.0i LaTeX Kernel
 (Text
            font setup)]
 \typeout{=== Don't modify this file, use a .cfg file instead ===^^J}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/graphpap.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/graphpap.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/graphpap.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/hyphen.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/idx.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/idx.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/idx.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ifthen.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ifthen.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ifthen.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 %%
 %% File `ifthen.dtx'.
 %% Copyright (C) 1991 by Leslie Lamport
-%% Copyright (C) 1994-2001 LaTeX3 project, David Carlisle
+%% Copyright (C) 1994-2001 LaTeX project, David Carlisle
 %%                       all rights reserved.
 %%
 \NeedsTeXFormat{LaTeX2e}[1994/12/01]

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/inputenc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/inputenc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/inputenc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -45,7 +45,7 @@
 
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesPackage{inputenc}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \def\DeclareInputMath#1{%
    \@inpenc at test
    \bgroup

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lablst.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lablst.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lablst.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -10,6 +10,7 @@
 %% ltluatex.dtx  (with options: `2ekernel')
 %% ltexpl.dtx  (with options: `2ekernel')
 %% ltdefns.dtx  (with options: `2ekernel')
+%% ltcmd.dtx  (with options: `2ekernel')
 %% lthooks.dtx  (with options: `2ekernel')
 %% ltalloc.dtx  (with options: `2ekernel')
 %% ltcntrl.dtx  (with options: `2ekernel')
@@ -56,7 +57,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -710,7 +711,7 @@
 \def\fmtname{LaTeX2e}
 \edef\fmtversion
    {2021-05-01}
-\def\patch at level{-1}
+\def\patch at level{-2}
 \edef\development at branch@name{develop \the\year-\the\month-\the\day}
 \iffalse
 \def\reserved at a#1/#2/#3\@nil{%
@@ -738,28 +739,30 @@
 \fi
   \ifnum0\ifnum\patch at level=0 \ifx\development at branch@name\@empty 1\fi\fi>0 %
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion>}}
+      \typeout{\fmtname\space <\fmtversion>}}
     \immediate
     \write16{\fmtname \space<\fmtversion>}
   \else\ifnum\patch at level>0
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion> patch level \patch at level}}
+      \typeout{\fmtname\space <\fmtversion> patch level \patch at level}}
     \immediate
-    \write16{\fmtname \space<\fmtversion> patch level \patch at level}
+    \write16{\fmtname\space <\fmtversion> patch level \patch at level}
   \else
     \everyjob\expandafter{\the\everyjob
-      \typeout{\fmtname \space<\fmtversion> pre-release-\number-\patch at level\space
-        \ifx\development at branch@name\@undefined  \else
-          \ifx\development at branch@name\@empty  \else
-            \space (\development at branch@name\space branch)%
+      \typeout{\fmtname\space <\fmtversion>
+               pre-release-\number-\patch at level\space
+               \ifx\development at branch@name\@undefined  \else
+                 \ifx\development at branch@name\@empty  \else
+                  \space (\development at branch@name\space branch)%
           \fi
         \fi
     }}
     \immediate
-    \write16{\fmtname \space<\fmtversion> pre-release-\number-\patch at level\space
-        \ifx\development at branch@name\@undefined  \else
-          \ifx\development at branch@name\@empty  \else
-            \space (\development at branch@name\space branch)%
+    \write16{\fmtname\space <\fmtversion>
+             pre-release-\number-\patch at level\space
+            \ifx\development at branch@name\@undefined  \else
+             \ifx\development at branch@name\@empty  \else
+               \space (\development at branch@name\space branch)%
           \fi
         \fi
     }
@@ -990,10 +993,11 @@
 %%% From File: ltexpl.dtx
 \let\@kernel at after@enddocument\@empty
 \let\@kernel at after@enddocument at afterlastpage\@empty
-\def\@expl at sys@load at backend@@{}
-\def\@expl at push@filename@@{}
-\def\@expl at push@filename at aux@@{}
-\def\@expl at pop@filename@@{}
+\def\reserved at a#1{\ifdefined#1\else\def#1{}\fi}
+\reserved at a\@expl at sys@load at backend@@
+\reserved at a\@expl at push@filename@@
+\reserved at a\@expl at push@filename at aux@@
+\reserved at a\@expl at pop@filename@@
 \def\@expl at finalise@setup@@{}
 \long\def\@gobble#1{}
 \long\def\@firstofone#1{#1}
@@ -1051,15 +1055,7 @@
         \errmessage{LaTeX requires expl3}%
         \batchmode \read -1 to \reserved at a
       }%
-      {%
-        \input expl3.ltx
-        \ifdefined\NewDocumentCommand
-        \else
-          \IfFileExists{xparse.ltx}
-            {\input xparse.ltx }
-            {}%
-         \fi
-      }%
+      {\input expl3.ltx }%
   }
 \ExplSyntaxOn
 \cs_gset_eq:NN \@expl at cs@to at str@@N \cs_to_str:N
@@ -1626,12 +1622,2269 @@
     \toks@\expandafter{#1#2}%
     \xdef#1{\the\toks@}%
   \endgroup}
-%%
-%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
-%%                                      Phelype Oleinik & LaTeX Team
+%%% From File: ltcmd.dtx
+\def\ltcmdversion{v1.0a}
+\def\ltcmddate{2021/01/21}
+\message{document commands,}
+\ExplSyntaxOn
+\tl_new:N \l__cmd_arg_spec_tl
+\tl_new:N \l__cmd_args_tl
+\tl_new:N \l__cmd_args_i_tl
+\tl_new:N \l__cmd_args_ii_tl
+\int_new:N \l__cmd_current_arg_int
+\bool_new:N \l__cmd_defaults_bool
+\tl_new:N \l__cmd_defaults_tl
+\bool_new:N \l__cmd_environment_bool
+\str_new:N \l__cmd_environment_str
+\bool_new:N \l__cmd_expandable_bool
+\tl_new:N \l__cmd_expandable_aux_name_tl
+\tl_set:Nn \l__cmd_expandable_aux_name_tl
+  {
+    \l__cmd_function_tl \c_space_tl
+    ( arg~ \int_use:N \l__cmd_current_arg_int )
+  }
+\int_new:N \g__cmd_grabber_int
+\tl_new:N \l__cmd_fn_tl
+\tl_new:N \l__cmd_fn_code_tl
+\tl_new:N \l__cmd_function_tl
+\bool_new:N \l__cmd_grab_expandably_bool
+\bool_new:N \l__cmd_obey_spaces_bool
+\tl_new:N \l__cmd_last_delimiters_tl
+\bool_new:N \l__cmd_long_bool
+\int_new:N \l__cmd_m_args_int
+\bool_new:N \l__cmd_prefixed_bool
+\tl_new:N \l__cmd_process_all_tl
+\tl_new:N \l__cmd_process_one_tl
+\bool_new:N \l__cmd_process_some_bool
+\tl_new:N \l__cmd_saved_args_tl
+\tl_new:N \l__cmd_signature_tl
+\bool_new:N \l__cmd_some_obey_spaces_bool
+\bool_new:N \l__cmd_some_long_bool
+\bool_new:N \l__cmd_some_short_bool
+\prop_new:N \l__cmd_tmp_prop
+\tl_new:N \l__cmd_tmpa_tl
+\tl_new:N \l__cmd_tmpb_tl
+\cs_new_eq:NN \__cmd_tmp:w ?
+\msg_redirect_module:nnn { LaTeX / ltcmd } { info } { none }
+\cs_new_protected:Npn \__cmd_declare_cmd:Nnn
+  {
+    \bool_set_false:N \l__cmd_expandable_bool
+    \__cmd_declare_cmd_aux:Nnn
+  }
+\cs_new_protected:Npn \__cmd_declare_expandable_cmd:Nnn
+  {
+    \bool_set_true:N \l__cmd_expandable_bool
+    \__cmd_declare_cmd_aux:Nnn
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_aux:Nnn #1#2#3
+  {
+    \cs_if_exist:NTF #1
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+      {
+        \bool_lazy_or:nnT
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ code } }
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ defaults } }
+          {
+            \__kernel_msg_warning:nnx { ltcmd } { unsupported-let }
+              { \token_to_str:N #1 }
+          }
+        \__kernel_msg_info:nnxx { ltcmd } { define-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l__cmd_environment_bool
+    \__cmd_declare_cmd_internal:Nnnn #1 {#2} {#3} { }
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_internal:Nnnn #1#2#3#4
+  {
+    \tl_set:Nx \l__cmd_function_tl { \cs_to_str:N #1 }
+    \tl_set:Nx \l__cmd_fn_tl
+      { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
+    \__cmd_normalize_arg_spec:n {#2}
+    \exp_args:No \__cmd_prepare_signature:n \l__cmd_arg_spec_tl
+    \__cmd_declare_cmd_code:Nnn #1 {#2} {#3}
+    #4
+    \__cmd_break_point:n {#2}
+  }
+\cs_generate_variant:Nn \__cmd_declare_cmd_internal:Nnnn { cnx }
+\cs_new_eq:NN \__cmd_break_point:n \use_none:n
+\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn
+  {
+    \bool_if:NTF \l__cmd_grab_expandably_bool
+      { \__cmd_declare_cmd_code_expandable:Nnn }
+      { \__cmd_declare_cmd_code_aux:Nnn }
+   }
+\cs_new_protected:Npn \__cmd_declare_cmd_code_aux:Nnn #1#2#3
+  {
+    \cs_generate_from_arg_count:cNnn
+      { \l__cmd_function_tl \c_space_tl code }
+      \cs_set_protected:Npn \l__cmd_current_arg_int {#3}
+    \cs_set_protected_nopar:Npx #1
+      {
+        \bool_if:NTF \l__cmd_environment_bool
+          {
+            \__cmd_start_env:nnnnn { \exp_not:n {#2} }
+              { \l__cmd_environment_str }
+          }
+          {
+            \__cmd_start:nNNnnn { \exp_not:n {#2} }
+              \exp_not:c { \l__cmd_function_tl \c_space_tl }
+              \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+          }
+          { \exp_not:o \l__cmd_signature_tl }
+          {
+            \bool_if:NT \l__cmd_defaults_bool
+              { \exp_not:o \l__cmd_defaults_tl }
+          }
+          {
+            \bool_if:NT \l__cmd_process_some_bool
+              { \exp_not:o \l__cmd_process_all_tl }
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_code_expandable:Nnn #1#2#3
+  {
+    \exp_args:Ncc \cs_generate_from_arg_count:NNnn
+      { \l__cmd_function_tl \c_space_tl code }
+      { cs_set \bool_if:NF \l__cmd_expandable_bool { _protected } :Npn }
+      \l__cmd_current_arg_int {#3}
+    \bool_if:NT \l__cmd_defaults_bool
+      {
+        \use:x
+          {
+            \cs_generate_from_arg_count:cNnn
+              { \l__cmd_function_tl \c_space_tl defaults }
+              \cs_set:Npn \l__cmd_current_arg_int
+              { \exp_not:o \l__cmd_defaults_tl }
+          }
+      }
+    \bool_if:NTF \l__cmd_expandable_bool
+      { \cs_set_nopar:Npx } { \cs_set_protected_nopar:Npx } #1
+      {
+        \exp_not:N \__cmd_start_expandable:nNNNNn
+          { \exp_not:n {#2} }
+          \exp_not:c { \l__cmd_function_tl \c_space_tl }
+          \exp_not:c
+            {
+              \l__cmd_function_tl \c_space_tl
+              \bool_if:NT \l__cmd_some_short_bool
+                { \bool_if:NT \l__cmd_some_long_bool { \c_space_tl } }
+            }
+          \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+          \bool_if:NTF \l__cmd_defaults_bool
+            { \exp_not:c { \l__cmd_function_tl \c_space_tl defaults } }
+            { ? }
+          { \exp_not:o \l__cmd_signature_tl }
+      }
+    \bool_if:NTF \l__cmd_some_long_bool
+      {
+        \bool_if:NT \l__cmd_some_short_bool
+          {
+            \cs_set_nopar:cpx { \l__cmd_function_tl \c_space_tl \c_space_tl }
+              ##1##2 { ##1 {##2} }
+          }
+        \cs_set:cpx
+      }
+      { \cs_set_nopar:cpx }
+          { \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
+  }
+\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
+  {
+    \str_set:Nx \l__cmd_environment_str {#1}
+    \str_set:Nx \l__cmd_environment_str
+      { \tl_trim_spaces:o { \l__cmd_environment_str } }
+    \cs_if_exist:cTF { \l__cmd_environment_str }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-environment }
+          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
+      }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { define-environment }
+          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l__cmd_expandable_bool
+    \bool_set_true:N \l__cmd_environment_bool
+    \exp_args:NV \__cmd_declare_env_internal:nnnn
+      \l__cmd_environment_str {#2}
+  }
+\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
+  {
+    \__cmd_declare_cmd_internal:cnxn { environment~ #1 } {#2}
+      {
+        \cs_set_nopar:Npx \exp_not:c { environment~ #1 ~end~aux }
+          {
+            \exp_not:N \exp_not:N \exp_not:c { environment~ #1~end~aux~ }
+            \exp_not:n { \exp_not:o \l__cmd_args_tl }
+          }
+        \exp_not:n {#3}
+      }
+      {
+        \cs_set_nopar:cpx { environment~ #1 ~end }
+          { \exp_not:c { environment~ #1 ~end~aux } }
+        \cs_generate_from_arg_count:cNnn
+          { environment~ #1 ~end~aux~ } \cs_set:Npn
+          \l__cmd_current_arg_int {#4}
+        \cs_set_eq:cc {#1}       { environment~ #1 }
+        \cs_set_eq:cc { end #1 } { environment~ #1 ~end }
+      }
+  }
+\cs_new_protected:Npn \__cmd_start_env:nnnnn #1#2
+  {
+    \conditionally at traceoff
+    \group_align_safe_begin:
+    \str_set:Nn \l__cmd_environment_str {#2}
+    \bool_set_true:N \l__cmd_environment_bool
+    \__cmd_start_aux:ccnnnn
+      { environment~ \l__cmd_environment_str \c_space_tl }
+      { environment~ \l__cmd_environment_str \c_space_tl code }
+      {#1}
+  }
+\cs_new_protected:Npx \__cmd_start:nNNnnn #1#2#3
+  {
+    \exp_not:c { xparse~function~is~not~expandable }
+    \exp_not:N \conditionally at traceoff
+    \exp_not:N \group_align_safe_begin:
+    \exp_not:n { \bool_set_false:N \l__cmd_environment_bool }
+    \exp_not:N \__cmd_start_aux:NNnnnn
+    #2 #3 {#1}
+  }
+\cs_new_protected:Npn \__cmd_start_aux:NNnnnn #1#2#3#4#5#6
+  {
+    \tl_clear:N \l__cmd_args_tl
+    \tl_set:Nn \l__cmd_fn_tl {#1}
+    \tl_set:Nn \l__cmd_fn_code_tl {#2}
+    \tl_set:Nn \l__cmd_defaults_tl {#5}
+    \tl_set:Nn \l__cmd_process_all_tl {#6}
+    #4 \__cmd_run_code:
+  }
+\cs_generate_variant:Nn \__cmd_start_aux:NNnnnn { cc }
+\cs_new_protected:Npn \__cmd_run_code:
+  {
+    \tl_if_empty:NF \l__cmd_defaults_tl { \__cmd_defaults: }
+    \tl_if_empty:NF \l__cmd_process_all_tl { \__cmd_args_process: }
+    \group_align_safe_end:
+    \conditionally at traceon
+    \exp_after:wN \l__cmd_fn_code_tl \l__cmd_args_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults:
+  {
+    \__cmd_defaults_def:
+    \tl_set_eq:NN \l__cmd_args_i_tl \l__cmd_args_tl
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_error:w
+    \q_recursion_stop
+    \tl_set_eq:NN \l__cmd_args_tl \l__cmd_args_i_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults_aux:
+  {
+    \tl_set:Nx \l__cmd_args_ii_tl
+      { \exp_after:wN \__cmd_tmp:w \l__cmd_args_i_tl }
+    \tl_if_eq:NNT \l__cmd_args_ii_tl \l__cmd_args_i_tl
+      { \use_none_delimit_by_q_recursion_stop:w }
+    \tl_set_eq:NN \l__cmd_args_i_tl \l__cmd_args_ii_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults_error:w \q_recursion_stop
+  {
+    \__kernel_msg_error:nnx { ltcmd } { loop-in-defaults }
+      { \__cmd_environment_or_command: }
+  }
+\cs_new_protected:Npn \__cmd_defaults_def:
+  {
+    \tl_clear:N \l__cmd_tmpa_tl
+    \int_zero:N \l__cmd_current_arg_int
+    \__cmd_tl_mapthread_function:NNN \l__cmd_args_tl \l__cmd_defaults_tl
+      \__cmd_defaults_def:nn
+    \cs_generate_from_arg_count:NNVo \__cmd_tmp:w \cs_set:Npn
+      \l__cmd_current_arg_int \l__cmd_tmpa_tl
+  }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo }
+\cs_new_protected:Npn \__cmd_defaults_def:nn
+  {
+    \int_incr:N \l__cmd_current_arg_int
+    \exp_args:NV \__cmd_defaults_def:nnn \l__cmd_current_arg_int
+  }
+\cs_new_protected:Npn \__cmd_defaults_def:nnn #1#2#3
+  {
+    \tl_put_right:Nx \l__cmd_tmpa_tl
+      {
+        {
+          \exp_not:N \exp_not:n
+            {
+              \tl_if_novalue:nTF {#2}
+                { \exp_not:o {#3} }
+                { \exp_not:n { ## #1 } }
+            }
+        }
+      }
+  }
+\cs_new_protected:Npn \__cmd_args_process:
+  {
+    \tl_clear:N \l__cmd_args_ii_tl
+    \__cmd_tl_mapthread_function:NNN
+      \l__cmd_args_tl
+      \l__cmd_process_all_tl
+      \__cmd_args_process_loop:nn
+    \tl_set_eq:NN \l__cmd_args_tl \l__cmd_args_ii_tl
+  }
+\cs_new_protected:Npn \__cmd_args_process_loop:nn #1#2
+  {
+    \tl_set:Nn \ProcessedArgument {#1}
+    \tl_if_novalue:nF {#1}
+      { \tl_map_function:nN {#2} \__cmd_args_process_aux:n }
+    \tl_put_right:No \l__cmd_args_ii_tl
+      { \exp_after:wN { \ProcessedArgument } }
+  }
+\cs_new_protected:Npn \__cmd_args_process_aux:n #1
+  {
+    \cs_generate_from_arg_count:NNnn \__cmd_tmp:w \cs_set:Npn
+      { \tl_count:N \l__cmd_args_tl } {#1}
+    \exp_args:NNNo \exp_after:wN \__cmd_tmp:w \l__cmd_args_tl
+      { \ProcessedArgument }
+  }
+\cs_new:Npn \__cmd_start_expandable:nNNNNn #1#2#3#4#5#6
+  {
+    \group_align_safe_begin:
+    #6 \__cmd_end_expandable:NNw #5 #4 \q__cmd #2#3
+  }
+\cs_new:Npn \__cmd_end_expandable:NNw #1#2
+  { \__cmd_end_expandable_aux:w #1#2 \prg_do_nothing: }
+\cs_new:Npn \__cmd_end_expandable_aux:w #1#2#3 \q__cmd
+  { \exp_args:No \__cmd_end_expandable_aux:nNNNN {#3} #1 #2 }
+\cs_new:Npn \__cmd_end_expandable_aux:nNNNN #1#2#3#4#5
+  {
+    \token_if_eq_charcode:NNT ? #2 { \exp_after:wN \use_iv:nnnn }
+    \__cmd_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3
+      { } { } { } { } { } { } { } { } { } { }
+      {
+        \__kernel_msg_expandable_error:nnf
+          { ltcmd } { loop-in-defaults }
+          { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N #4 } }
+        \use_iv:nnnn
+      }
+    \q_stop
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nnnNNn #1#2#3#4#5#6
+  {
+    #6
+    \str_if_eq:nnTF {#1} {#2}
+      { \use_i_delimit_by_q_stop:nw { \group_align_safe_end: #5 #1 } }
+      {
+        \exp_args:No \__cmd_tl_mapthread_function:nnN
+          { #4 #1 } {#3}
+          \__cmd_end_expandable_defaults:nnw
+        \__cmd_end_expandable_defaults:nnnNNn { } {#1} {#3} #4 #5
+      }
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nnw #1#2
+  {
+    \tl_if_novalue:nTF {#2}
+      { \exp_args:No \__cmd_end_expandable_defaults:nw {#1} }
+      { \__cmd_end_expandable_defaults:nw {#2} }
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nw
+    #1#2 \__cmd_end_expandable_defaults:nnnNNn #3
+  { #2 \__cmd_end_expandable_defaults:nnnNNn { #3 {#1} } }
+\cs_new_protected:Npn \__cmd_normalize_arg_spec:n #1
+  {
+    \int_zero:N \l__cmd_current_arg_int
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \tl_clear:N \l__cmd_arg_spec_tl
+    \bool_set_true:N \l__cmd_grab_expandably_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_some_obey_spaces_bool
+    \bool_set_false:N \l__cmd_some_long_bool
+    \bool_set_false:N \l__cmd_some_short_bool
+    \__cmd_normalize_arg_spec_loop:n #1
+      \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop
+    \int_compare:nNnT \l__cmd_current_arg_int > 9
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { too-many-arguments }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \tl_if_empty:NF \l__cmd_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { expandable-ending-optional }
+              { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+            \__cmd_bad_def:wn
+          }
+      }
+    \bool_if:NT \l__cmd_expandable_bool
+      { \bool_set_true:N \l__cmd_grab_expandably_bool }
+    \bool_if:NT \l__cmd_environment_bool
+      { \bool_set_false:N \l__cmd_grab_expandably_bool }
+  }
+\cs_new_protected:Npn \__cmd_normalize_arg_spec_loop:n #1
+  {
+    \quark_if_recursion_tail_stop:n {#1}
+    \int_incr:N \l__cmd_current_arg_int
+    \cs_if_exist_use:cF { __cmd_normalize_type_ \tl_to_str:n {#1} :w }
+      {
+        \bool_lazy_any:nTF
+          {
+            { \str_if_eq_p:nn {#1} { G } }
+            { \str_if_eq_p:nn {#1} { g } }
+            { \str_if_eq_p:nn {#1} { l } }
+            { \str_if_eq_p:nn {#1} { u } }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { xparse-argument-type }
+              { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { unknown-argument-type }
+              { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new_protected:Npn \__cmd_normalize_type_d:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_D:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_e:w ##1
+      {
+        \quark_if_recursion_tail_stop_do:nn {##1} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_E:w {##1} { }
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_o:w
+      { \__cmd_normalize_type_D:w [ ] {#1} }
+    \cs_new_protected:Npn \__cmd_normalize_type_O:w
+      { \__cmd_normalize_type_D:w [ ] }
+    \cs_new_protected:Npn \__cmd_normalize_type_r:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_R:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_s:w
+      { \__cmd_normalize_type_t:w * }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new_protected:cpn { __cmd_normalize_type_>:w } #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { processor-in-expandable }
+          { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \tl_put_right:Nx \l__cmd_arg_spec_tl { > { \tl_trim_spaces:n {#1} } }
+    \int_decr:N \l__cmd_current_arg_int
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_normalize_arg_spec_loop:n {#2}
+  }
+\cs_new_protected:cpn { __cmd_normalize_type_+:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_long_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \__cmd_environment_or_command: } { + }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_true:N \l__cmd_long_bool
+    \int_decr:N \l__cmd_current_arg_int
+    \__cmd_normalize_arg_spec_loop:n {#1}
+  }
+\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \__cmd_environment_or_command: } { ! }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_true:N \l__cmd_obey_spaces_bool
+    \bool_set_true:N \l__cmd_some_obey_spaces_bool
+    \int_decr:N \l__cmd_current_arg_int
+    \__cmd_normalize_arg_spec_loop:n {#1}
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_D:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \__cmd_single_token_check:n {#2}
+    \__cmd_add_arg_spec:n { D #1 #2 {#3} }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_E:w #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn }
+    \tl_if_blank:nT {#1} { \__cmd_bad_arg_spec:wn }
+    \tl_map_function:nN {#1} \__cmd_single_token_check:n
+    \tl_map_function:nN {#1} \__cmd_allowed_token_check:N
+    \__cmd_normalize_E_unique_check:w #1 \q_nil \q_stop
+    \int_compare:nNnT { \tl_count:n {#2} } > { \tl_count:n {#1} }
+      { \__cmd_bad_arg_spec:wn }
+    \__cmd_add_arg_spec:n { E {#1} {#2} }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \int_add:Nn \l__cmd_current_arg_int { \tl_count:n {#1} - 1 }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_E_unique_check:w #1#2 \q_stop
+  {
+    \quark_if_nil:NF #1
+      {
+        \tl_if_in:nnT {#2} {#1} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_E_unique_check:w #2 \q_stop
+      }
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_t:w #1
+  {
+    \quark_if_recursion_tail_stop_do:Nn #1 { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \tl_put_right:Nx \l__cmd_arg_spec_tl
+      {
+        \bool_if:NT \l__cmd_obey_spaces_bool { ! }
+        t \exp_not:n {#1}
+      }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \bool_set_false:N \l__cmd_long_bool
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_m:w
+  {
+    \__cmd_delimiter_check:nnn { } { m } { \iow_char:N \{ }
+    \__cmd_add_arg_spec_mandatory:n { m }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_R:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \__cmd_single_token_check:n {#2}
+    \__cmd_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} }
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_add_arg_spec_mandatory:n { R #1 #2 {#3} }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_v:w
+  {
+    \__cmd_normalize_check_gv:N v
+    \__cmd_add_arg_spec_mandatory:n { v }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_b:w #1
+  {
+    \bool_if:NF \l__cmd_environment_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-command-arg }
+          { \__cmd_environment_or_command: } { b }
+        \__cmd_bad_def:wn
+      }
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \__cmd_add_arg_spec:n { b }
+    \quark_if_recursion_tail_stop:n {#1}
+    \__kernel_msg_error:nnxx { ltcmd } { arg-after-body }
+      { \__cmd_environment_or_command: }
+      { \tl_to_str:n {#1} }
+    \__cmd_bad_def:wn
+  }
+\cs_new_protected:Npn \__cmd_single_token_check:n #1
+  {
+    \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nF
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-single-token }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_new_protected:Npn \__cmd_allowed_token_check:N #1
+  {
+    \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+        { \use:n }
+        {
+          \token_if_eq_meaning:NNTF #1 \c_group_end_token
+            { \use:n }
+            { \use_none:n }
+        }
+      {
+        \__kernel_msg_error:nnxxx
+          { ltcmd } { forbidden-implicit-group-token }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          {
+            \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+              { begin } { end }
+          }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_new_protected:Npn \__cmd_normalize_check_gv:N #1
+  {
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-expandable-argument-type }
+          { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+  }
+\cs_new_protected:Npn \__cmd_normalize_check_lu:N #1
+  {
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \tl_if_empty:NF \l__cmd_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx
+              { ltcmd } { invalid-after-optional-expandably }
+              { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+            \__cmd_bad_def:wn
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_delimiter_check:nnn #1#2#3
+  {
+    \tl_map_inline:Nn \l__cmd_last_delimiters_tl
+      {
+        \tl_if_eq:nnT {##1} {#1}
+          {
+            \__kernel_msg_warning:nnxx { ltcmd } { optional-mandatory }
+              {#2} {#3}
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_bad_arg_spec:wn #1 \__cmd_break_point:n #2
+  {
+    \__kernel_msg_error:nnxx { ltcmd } { bad-arg-spec }
+      { \__cmd_environment_or_command: } { \tl_to_str:n {#2} }
+  }
+\cs_new_protected:Npn \__cmd_bad_def:wn #1 \__cmd_break_point:n #2 { }
+\cs_new_protected:Npn \__cmd_add_arg_spec:n #1
+  {
+    \bool_lazy_and:nnT
+      { ! \l__cmd_long_bool }
+      { \l__cmd_some_long_bool }
+      {
+        \bool_if:NT \l__cmd_expandable_bool
+          {
+            \__kernel_msg_error:nnx { ltcmd } { inconsistent-long }
+              { \iow_char:N \\ \l__cmd_function_tl }
+            \__cmd_bad_def:wn
+          }
+        \bool_set_false:N \l__cmd_grab_expandably_bool
+      }
+    \bool_if:NTF \l__cmd_long_bool
+      { \bool_set_true:N \l__cmd_some_long_bool }
+      { \bool_set_true:N \l__cmd_some_short_bool }
+    \tl_put_right:Nx \l__cmd_arg_spec_tl
+      {
+        \bool_if:NT \l__cmd_long_bool { + }
+        \bool_if:NT \l__cmd_obey_spaces_bool { ! }
+        \exp_not:n {#1}
+      }
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+  }
+\cs_new_protected:Npn \__cmd_add_arg_spec_mandatory:n #1
+  {
+    \bool_if:NT \l__cmd_some_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { non-trailing-obey-spaces }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \__cmd_add_arg_spec:n {#1}
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature:n #1
+  {
+    \int_zero:N \l__cmd_current_arg_int
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \int_zero:N \l__cmd_m_args_int
+    \bool_set_false:N \l__cmd_defaults_bool
+    \tl_clear:N \l__cmd_defaults_tl
+    \tl_clear:N \l__cmd_process_all_tl
+    \tl_clear:N \l__cmd_process_one_tl
+    \bool_set_false:N \l__cmd_process_some_bool
+    \tl_clear:N \l__cmd_signature_tl
+    \__cmd_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop
+    \bool_if:NF \l__cmd_expandable_bool { \__cmd_flush_m_args: }
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature:N
+  {
+    \bool_set_false:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature_bypass:N #1
+  {
+    \quark_if_recursion_tail_stop:N #1
+    \use:c
+      {
+         __cmd_add
+         \bool_if:NT \l__cmd_grab_expandably_bool { _expandable }
+         _type_  \token_to_str:N #1 :w
+      }
+  }
+\cs_new_protected:cpn { __cmd_add_type_+:w }
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_long_bool
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:cpn { __cmd_add_type_!:w }
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_obey_spaces_bool
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:cpn { __cmd_add_type_>:w } #1
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \bool_set_true:N \l__cmd_process_some_bool
+    \tl_put_left:Nn \l__cmd_process_one_tl { {#1} }
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_b:w
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:
+    \__cmd_add_grabber:N b
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_D:w #1#2#3
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:n {#3}
+    \__cmd_add_grabber:N D
+    \tl_put_right:Nn \l__cmd_signature_tl { #1 #2 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_E:w #1#2
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default_E:nn {#1} {#2}
+    \__cmd_add_grabber:N E
+    \tl_put_right:Nn \l__cmd_signature_tl { {#1} }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_m:w
+  {
+    \__cmd_add_default:
+    \bool_if:NTF \l__cmd_prefixed_bool
+      { \__cmd_add_grabber:N m }
+      { \int_incr:N \l__cmd_m_args_int }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_R:w #1#2#3
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:n {#3}
+    \__cmd_add_grabber:N R
+    \tl_put_right:Nn \l__cmd_signature_tl { #1 #2 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_t:w #1
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:
+    \__cmd_add_grabber:N t
+    \tl_put_right:Nn \l__cmd_signature_tl {#1}
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_v:w
+  {
+    \__cmd_flush_m_args:
+    \exp_args:No \__cmd_add_default:n \c_novalue_tl
+    \__cmd_add_grabber:N v
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_flush_m_args:
+  {
+    \int_compare:nNnT \l__cmd_m_args_int > 0
+      {
+        \tl_put_right:Nx \l__cmd_signature_tl
+          { \exp_not:c { __cmd_grab_m_ \int_use:N \l__cmd_m_args_int :w } }
+        \tl_put_right:Nx \l__cmd_process_all_tl
+          { \prg_replicate:nn { \l__cmd_m_args_int } { { } } }
+      }
+    \int_zero:N \l__cmd_m_args_int
+  }
+\cs_new_protected:Npn \__cmd_add_grabber:N #1
+  {
+    \tl_put_right:Nx \l__cmd_signature_tl
+      {
+        \exp_not:c
+          {
+            __cmd_grab_ #1
+            \bool_if:NT \l__cmd_long_bool { _long }
+            \bool_if:NT \l__cmd_obey_spaces_bool { _obey_spaces }
+            :w
+          }
+      }
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \tl_put_right:Nx \l__cmd_process_all_tl
+      { { \exp_not:o \l__cmd_process_one_tl } }
+    \tl_clear:N \l__cmd_process_one_tl
+  }
+\cs_new_protected:Npn \__cmd_add_default:n #1
+  {
+    \tl_if_novalue:nTF {#1}
+      { \__cmd_add_default: }
+      {
+        \int_incr:N \l__cmd_current_arg_int
+        \bool_set_true:N \l__cmd_defaults_bool
+        \tl_put_right:Nn \l__cmd_defaults_tl { { \prg_do_nothing: #1 } }
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_default:
+  {
+    \int_incr:N \l__cmd_current_arg_int
+    \tl_put_right:Nn \l__cmd_defaults_tl { \c_novalue_tl }
+  }
+\cs_new_protected:Npn \__cmd_add_default_E:nn #1#2
+  {
+    \tl_map_function:nN {#2} \__cmd_add_default:n
+    \prg_replicate:nn
+      { \tl_count:n {#1} - \tl_count:n {#2} }
+      { \__cmd_add_default: }
+  }
+\cs_new_protected:cpn { __cmd_add_expandable_type_+:w }
+  {
+    \bool_set_true:N \l__cmd_long_bool
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D:w
+  { \__cmd_add_expandable_type_D_aux:NNNn D }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NNNn #1#2#3#4
+  {
+    \__cmd_add_default:n {#4}
+    \tl_if_eq:nnTF {#2} {#3}
+      { \__cmd_add_expandable_type_D_aux:NN #1 #2 }
+      { \__cmd_add_expandable_type_D_aux:NNN #1 #2 #3 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NNN #1#2#3
+  {
+    \bool_if:NTF \l__cmd_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l__cmd_expandable_aux_name_tl } ##1 ##2 #2 ##3 \q__cmd ##4 #3
+      { ##1 {##2} {##3} {##4} }
+    \__cmd_add_expandable_grabber:nn {#1}
+      {
+        \exp_not:c  { \l__cmd_expandable_aux_name_tl }
+        \exp_not:n { #2 #3 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NN #1#2
+  {
+    \bool_if:NTF \l__cmd_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l__cmd_expandable_aux_name_tl } ##1 #2 ##2 #2
+      { ##1 {##2} }
+    \__cmd_add_expandable_grabber:nn { #1_alt }
+      {
+        \exp_not:c  { \l__cmd_expandable_aux_name_tl }
+        \exp_not:n {#2}
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_E:w #1#2
+  {
+    \__cmd_add_default_E:nn {#1} {#2}
+    \tl_clear:N \l__cmd_tmpb_tl
+    \tl_map_function:nN {#1} \__cmd_add_expandable_type_E_aux:n
+    \__cmd_add_expandable_grabber:nn
+      { E \bool_if:NT \l__cmd_long_bool { _long } }
+      {
+        { \exp_not:o \l__cmd_tmpb_tl }
+        {
+          \prg_replicate:nn { \tl_count:n {#1} }
+            { { \c_novalue_tl } }
+        }
+      }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_E_aux:n #1
+  {
+    \__cmd_get_grabber:NN #1 \l__cmd_tmpa_tl
+    \tl_put_right:Nx \l__cmd_tmpb_tl
+      { \exp_not:o \l__cmd_tmpa_tl \exp_not:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_m:w
+  {
+    \__cmd_add_default:
+    \__cmd_add_expandable_grabber:nn
+      { m \bool_if:NT \l__cmd_long_bool { _long } } { }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_R:w
+  { \__cmd_add_expandable_type_D_aux:NNNn R }
+\cs_new_protected:Npn \__cmd_add_expandable_type_t:w #1
+  {
+    \__cmd_add_default:
+    \__cmd_get_grabber:NN #1 \l__cmd_tmpa_tl
+    \__cmd_add_expandable_grabber:nn { t }
+      {
+        \exp_not:o \l__cmd_tmpa_tl
+        \exp_not:N #1
+      }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_grabber:nn #1#2
+  {
+    \tl_put_right:Nx \l__cmd_signature_tl
+      { \exp_not:c { __cmd_expandable_grab_ #1 :w } #2 }
+  }
+\cs_new_protected:Npn \__cmd_get_grabber:NN #1#2
+  {
+    \cs_set:Npn \__cmd_tmp:w ##1 #1 {##1}
+    \exp_args:Nc \__cmd_get_grabber_auxi:NN
+      { __cmd_grabber_ \token_to_str:N #1 :w } #2
+  }
+\cs_new_protected:Npn \__cmd_get_grabber_auxi:NN #1#2
+  {
+    \cs_if_eq:NNTF \__cmd_tmp:w #1
+      { \tl_set:Nn #2 {#1} }
+      {
+        \cs_if_exist:NTF #1
+          {
+            \int_gincr:N \g__cmd_grabber_int
+            \exp_args:Nc \__cmd_get_grabber_auxi:NN
+              {
+                __cmd_grabber_
+                - \int_use:N \g__cmd_grabber_int :w
+              }
+              #2
+          }
+          { \__cmd_get_grabber_auxii:NN #1 #2 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_get_grabber_auxii:NN #1#2
+  {
+    \cs_set_eq:NN #1 \__cmd_tmp:w
+    \tl_set:Nn #2 {#1}
+  }
+\cs_new_protected:Npn \__cmd_grab_b:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected_nopar:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \__cmd_grab_b_long:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \__cmd_grab_b_obey_spaces:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected_nopar:Npn \exp_not:n }
+\cs_new_protected:Npn \__cmd_grab_b_long_obey_spaces:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n }
+\cs_new_protected:Npn \__cmd_grab_b_aux:NNw #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnN \begin \end {#3} #1
+    \tl_put_left:Nn \l__cmd_signature_tl { \__cmd_grab_b_end:Nw #2 }
+    \tl_set_eq:NN \l__cmd_saved_args_tl \l__cmd_args_tl
+    \tl_clear:N \l__cmd_args_tl
+    \exp_args:Nc \l__cmd_fn_tl { begin ~ }
+  }
+\cs_new_protected:Npn \__cmd_grab_b_end:Nw #1#2 \__cmd_run_code:
+  {
+    \tl_set:Nx \l__cmd_args_tl
+      {
+        \exp_not:V \l__cmd_saved_args_tl
+        { \exp_after:wN #1 \l__cmd_args_tl }
+      }
+    #2
+    \__cmd_run_code:
+    \end
+  }
+\cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5
+  {
+    \__cmd_grab_D_aux:NNnN #1#2 {#3} #4
+    #5 #1
+      { \__cmd_grab_D_call:Nw #1 }
+      { \__cmd_add_arg:o \c_novalue_tl }
+  }
+\cs_new_protected:Npn \__cmd_grab_D_aux:NNnN #1#2#3#4
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#3}
+    \exp_after:wN #4 \l__cmd_fn_tl ##1 #2
+      {
+        \tl_if_in:nnTF {##1} {#1}
+          { \__cmd_grab_D_nested:NNnN #1 #2 {##1} #4 }
+          {
+            \tl_if_blank:oTF { \use_none:n ##1 }
+              { \__cmd_add_arg:o { \use_none:n ##1 } }
+              {
+                \str_if_eq:eeTF
+                  { \exp_not:o { \use_none:n ##1 } }
+                  { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } }
+                  { \__cmd_add_arg:o { \use_ii:nn ##1 } }
+                  { \__cmd_add_arg:o { \use_none:n ##1 } }
+              }
+          }
+      }
+  }
+\tl_new:N \l__cmd_nesting_a_tl
+\tl_new:N \l__cmd_nesting_b_tl
+\quark_new:N \q__cmd
+\cs_new_protected:Npn \__cmd_grab_D_nested:NNnN #1#2#3#4
+  {
+    \tl_clear:N \l__cmd_nesting_a_tl
+    \tl_clear:N \l__cmd_nesting_b_tl
+    \exp_after:wN #4 \l__cmd_fn_tl ##1 #1 ##2 \q__cmd ##3 #2
+      {
+        \tl_put_right:No \l__cmd_nesting_a_tl { \use_none:n ##1 #1 }
+        \tl_put_right:No \l__cmd_nesting_b_tl { \use_i:nn #2 ##3 }
+        \tl_if_in:nnTF {##2} {#1}
+          {
+            \l__cmd_fn_tl
+              \q_nil ##2 \q__cmd \ERROR
+          }
+          {
+            \tl_put_right:Nx \l__cmd_nesting_a_tl
+              { \__cmd_grab_D_nested:w \q_nil ##2 \q_stop }
+            \tl_if_in:NnTF \l__cmd_nesting_b_tl {#1}
+              {
+                \tl_set_eq:NN \l__cmd_tmpa_tl \l__cmd_nesting_b_tl
+                \tl_clear:N \l__cmd_nesting_b_tl
+                \exp_after:wN \l__cmd_fn_tl \exp_after:wN
+                  \q_nil \l__cmd_tmpa_tl \q_nil \q__cmd \ERROR
+              }
+              {
+                \tl_put_right:No \l__cmd_nesting_a_tl
+                  \l__cmd_nesting_b_tl
+                \__cmd_add_arg:V \l__cmd_nesting_a_tl
+              }
+          }
+      }
+    \l__cmd_fn_tl #3 \q_nil \q__cmd \ERROR
+  }
+\cs_new:Npn \__cmd_grab_D_nested:w #1 \q_nil \q_stop
+  { \exp_not:o { \use_none:n #1 } }
+\cs_new_protected_nopar:Npn \__cmd_grab_D_call:Nw #1
+  {
+    \token_if_eq_catcode:NNTF + #1
+      {
+        \exp_after:wN \exp_after:wN \exp_after:wN
+          \l__cmd_fn_tl \char_generate:nn { `#1 } { 11 }
+      }
+      {
+        \__cmd_token_if_cs:NTF #1
+          {
+            \exp_after:wN \l__cmd_fn_tl
+            \cs:w \cs_to_str:N #1 ~ \cs_end:
+          }
+          {
+            \exp_after:wN \l__cmd_fn_tl
+            \token_to_str:N #1
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_E:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_long:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_obey_spaces:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_long_obey_spaces:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E:nnNN #1#2#3#4
+  {
+    \exp_after:wN #3 \l__cmd_fn_tl ##1##2##3
+      {
+        \prop_put:Nnn \l__cmd_tmp_prop {##1} {##3}
+        \__cmd_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop
+      }
+    \prop_clear:N \l__cmd_tmp_prop
+    \tl_set:Nn \l__cmd_signature_tl {#2}
+    \cs_set_protected:Npn \__cmd_grab_E_finalise:
+      {
+        \tl_map_inline:nn {#1}
+          {
+            \prop_get:NnNF \l__cmd_tmp_prop {####1} \l__cmd_tmpb_tl
+              { \tl_set_eq:NN \l__cmd_tmpb_tl \c_novalue_tl }
+            \tl_put_right:Nx \l__cmd_args_tl
+              { { \exp_not:V \l__cmd_tmpb_tl } }
+          }
+        \l__cmd_signature_tl \__cmd_run_code:
+      }
+    \__cmd_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new_protected:Npn \__cmd_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop
+  {
+    \cs_if_eq:NNTF #3 \q_recursion_tail
+      { \__cmd_grab_E_finalise: }
+      {
+        #1 #3
+          { \l__cmd_fn_tl #3 {#2#4} }
+          { \__cmd_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_E_finalise: { }
+\cs_new_protected:Npn \__cmd_grab_m:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_protected_nopar:Npn \l__cmd_fn_tl ##1
+      { \__cmd_add_arg:n {##1} }
+    \l__cmd_fn_tl
+  }
+\cs_new_protected:Npn \__cmd_grab_m_long:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_protected:Npn \l__cmd_fn_tl ##1
+      { \__cmd_add_arg:n {##1} }
+    \l__cmd_fn_tl
+  }
+\cs_new_protected_nopar:Npn \__cmd_grab_m_aux:Nnnnnnnnn #1#2#3#4#5#6#7#8#9
+  {
+    \tl_put_right:No \l__cmd_args_tl
+      { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
+    \l__cmd_signature_tl \__cmd_run_code:
+  }
+\cs_new_protected:cpn { __cmd_grab_m_1:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnnnn { } { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_2:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnnn { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_3:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnn { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_4:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnn { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_5:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnn { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_6:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nn { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_7:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:n { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_8:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \prg_do_nothing:
+  }
+\cs_new_protected:cpx { __cmd_grab_m_9:w }
+  {
+    \exp_not:c { __cmd_grab_m_5:w }
+    \exp_not:c { __cmd_grab_m_4:w }
+  }
+\cs_new_protected:Npn \__cmd_grab_R:w #1#2#3 \__cmd_run_code:
+  { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected_nopar:Npn }
+\cs_new_protected:Npn \__cmd_grab_R_long:w #1#2#3 \__cmd_run_code:
+  { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn }
+\cs_new_protected:Npn \__cmd_grab_R_aux:NNnN #1#2#3#4
+  {
+    \__cmd_grab_D_aux:NNnN #1 #2 {#3} #4
+    \__cmd_peek_nonspace_remove:NTF #1
+      { \__cmd_grab_D_call:Nw #1 }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { missing-required }
+          { \__cmd_environment_or_command: }
+          { \token_to_str:N #1 }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_t:w
+  { \__cmd_grab_t_aux:NNw \__cmd_peek_nonspace_remove:NTF }
+\cs_new_protected:Npn \__cmd_grab_t_obey_spaces:w
+  { \__cmd_grab_t_aux:NNw \__cmd_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \__cmd_grab_t_aux:NNw #1#2#3 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#3}
+    \exp_after:wN \cs_set_protected:Npn \l__cmd_fn_tl
+      {
+        #1 #2
+          { \__cmd_add_arg:n { \BooleanTrue } }
+          { \__cmd_add_arg:n { \BooleanFalse } }
+      }
+    \l__cmd_fn_tl
+  }
+\tl_new:N \l__cmd_v_arg_tl
+\cs_new_protected:Npn \__cmd_grab_v:w
+  {
+    \bool_set_false:N \l__cmd_long_bool
+    \__cmd_grab_v_aux:w
+  }
+\cs_new_protected:Npn \__cmd_grab_v_long:w
+  {
+    \bool_set_true:N \l__cmd_long_bool
+    \__cmd_grab_v_aux:w
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \group_begin:
+      \tex_escapechar:D = 92 \scan_stop:
+      \tl_clear:N \l__cmd_v_arg_tl
+      \peek_remove_spaces:n
+        {
+          \peek_meaning_remove:NTF \c_group_begin_token
+            {
+              \group_align_safe_end:
+              \__cmd_grab_v_bgroup:
+            }
+            {
+              \peek_N_type:TF
+                { \__cmd_grab_v_aux_test:N }
+                { \__cmd_grab_v_aux_abort:n { } }
+            }
+        }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_group_end:
+  {
+        \exp_args:NNNo
+      \group_end:
+    \tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_test:N #1
+  {
+    \__cmd_grab_v_token_if_char:NTF #1
+      {
+        \__cmd_grab_v_aux_put:N #1
+        \__cmd_grab_v_aux_catcodes:
+        \__cmd_grab_v_aux_loop:N #1
+      }
+      { \__cmd_grab_v_aux_abort:n {#1} #1 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop:N #1
+  {
+    \peek_N_type:TF
+      { \__cmd_grab_v_aux_loop:NN #1 }
+      { \__cmd_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop:NN #1#2
+  {
+    \__cmd_grab_v_token_if_char:NTF #2
+      {
+        \token_if_eq_charcode:NNTF #1 #2
+          { \__cmd_grab_v_aux_loop_end: }
+          {
+            \__cmd_grab_v_aux_put:N #2
+            \__cmd_grab_v_aux_loop:N #1
+          }
+      }
+      { \__cmd_grab_v_aux_abort:n {#2} #2 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop_end:
+  {
+    \__cmd_grab_v_group_end:
+    \__cmd_add_arg:x { \tl_tail:N \l__cmd_v_arg_tl }
+  }
+\int_new:N \l__cmd_v_nesting_int
+\cs_new_protected:Npx \__cmd_grab_v_bgroup:
+  {
+    \exp_not:N \__cmd_grab_v_aux_catcodes:
+    \exp_not:n { \int_set:Nn \l__cmd_v_nesting_int { 1 } }
+    \exp_not:N \__cmd_grab_v_aux_put:N \iow_char:N \{
+    \exp_not:N \__cmd_grab_v_bgroup_loop:
+  }
+\cs_new_protected:Npn \__cmd_grab_v_bgroup_loop:
+  {
+    \peek_N_type:TF
+      { \__cmd_grab_v_bgroup_loop:N }
+      { \__cmd_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_bgroup_loop:N #1
+  {
+    \__cmd_grab_v_token_if_char:NTF #1
+      {
+        \token_if_eq_charcode:NNTF \c_group_end_token #1
+          {
+            \int_decr:N \l__cmd_v_nesting_int
+            \int_compare:nNnTF \l__cmd_v_nesting_int > 0
+              {
+                \__cmd_grab_v_aux_put:N #1
+                \__cmd_grab_v_bgroup_loop:
+              }
+              { \__cmd_grab_v_aux_loop_end: }
+          }
+          {
+            \token_if_eq_charcode:NNT \c_group_begin_token #1
+              { \int_incr:N \l__cmd_v_nesting_int }
+            \__cmd_grab_v_aux_put:N #1
+            \__cmd_grab_v_bgroup_loop:
+          }
+      }
+      { \__cmd_grab_v_aux_abort:n {#1} #1 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_catcodes:
+  {
+    \cs_set_eq:NN \do \char_set_catcode_other:N
+    \dospecials
+    \tex_endlinechar:D = `\^^M \scan_stop:
+    \bool_if:NTF \l__cmd_long_bool
+      { \char_set_catcode_other:n { \tex_endlinechar:D } }
+      { \char_set_catcode_parameter:n { \tex_endlinechar:D } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_abort:n #1
+  {
+    \__cmd_grab_v_group_end:
+    \exp_after:wN \exp_after:wN \exp_after:wN
+      \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-newline }
+          { \__cmd_environment_or_command: }
+          { \tl_to_str:N \l__cmd_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-tokenized }
+          { \__cmd_environment_or_command: }
+          { \tl_to_str:N \l__cmd_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_put:N #1
+  {
+    \tl_put_right:Nx \l__cmd_v_arg_tl
+      {
+        \token_if_active:NTF #1
+          { \exp_not:N #1 } { \token_to_str:N #1 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_token_if_char:NTF #1
+  { \str_if_eq:eeTF { } { \str_tail:n {#1} } }
+\cs_new_protected:Npn \__cmd_add_arg:n #1
+  {
+    \tl_put_right:Nn \l__cmd_args_tl { {#1} }
+    \l__cmd_signature_tl \__cmd_run_code:
+  }
+\cs_generate_variant:Nn \__cmd_add_arg:n { V , o , x }
+\cs_new:Npn \__cmd_expandable_grab_D:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_D:NNNwNNn #1 \q__cmd #2 #3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_D:NNNwNNn ##1##2##3##4 \q__cmd ##5##6##7
+      {
+        \str_if_eq:nnTF {##2} {##7}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q__cmd ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__cmd ##5##6 }
+              \q_nil { } ##2 \ERROR \q__cmd \ERROR
+          }
+          { ##4 {#1} \q__cmd ##5 ##6 {##7} }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_D:NNNwNNnnn #1#2#3#4 \q__cmd #5#6#7#8#9
+  {
+    \exp_args:Nof \__cmd_expandable_grab_D:nnNNNwNN
+      { \use_ii:nn #7 #2 }
+      { \__cmd_expandable_grab_D:Nw #3 \exp_stop_f: #8 #9 }
+    #1#2#3 #4 \q__cmd #5 #6
+  }
+\cs_new:Npn \__cmd_expandable_grab_D:Nw #1#2 \ERROR \ERROR { #2 #1 }
+\cs_new:Npn \__cmd_expandable_grab_D:nnNNNwNN #1#2#3#4#5#6 \q__cmd #7#8
+  {
+    \exp_args:No \tl_if_empty:oTF
+      { #3 { \use_none:nnn } #2 \q__cmd #5 #4 \q__cmd #5 }
+      {
+        \tl_if_blank:oTF { \use_none:nn #1#2 }
+          { \__cmd_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          {
+            \str_if_eq:eeTF
+              { \exp_not:o { \use_none:nn #1#2 } }
+              { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } }
+              { \__cmd_put_arg_expandable:ow { \use_iii:nnn #1#2 } }
+              { \__cmd_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          }
+            #6 \q__cmd #7 #8
+      }
+      {
+        #3
+          { \__cmd_expandable_grab_D:NNNwNNnnn #3#4#5#6 \q__cmd #7 #8 }
+          \q_nil {#1} #2 \ERROR \q__cmd \ERROR
+      }
+  }
+\cs_new:Npn \__cmd_expandable_grab_D_alt:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_D_alt:NNwNNn #1 \q__cmd #2 #3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_D_alt:NNwNNn ##1##2##3 \q__cmd ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__cmd }
+              ##6 \ERROR
+          }
+          { ##3 {#1} \q__cmd ##4 ##5 {##6} }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_D_alt:NNwn #1#2#3 \q__cmd #4
+  {
+    \tl_if_blank:oTF { \use_none:n #4 }
+      { \__cmd_put_arg_expandable:ow { \use_none:n #4 } }
+      {
+        \str_if_eq:eeTF
+          { \exp_not:o { \use_none:n #4 } }
+          { { \exp_not:o { \use_ii:nnn #4 \q_nil } } }
+          { \__cmd_put_arg_expandable:ow { \use_ii:nn #4 } }
+          { \__cmd_put_arg_expandable:ow { \use_none:n #4 } }
+      }
+        #3 \q__cmd #1 #2
+  }
+\cs_new:Npn \__cmd_expandable_grab_E:w #1 \q__cmd #2#3
+  { \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2 #3 #3 }
+\cs_new:Npn \__cmd_expandable_grab_E_long:w #1 \q__cmd #2#3
+  { \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2 #3 #2 }
+\cs_new:Npn \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2#3#4
+  { #2 { \__cmd_expandable_grab_E_test:nnw #1 \q__cmd #2 #3 #4 } }
+\cs_new:Npn \__cmd_expandable_grab_E_test:nnw #1#2#3 \q__cmd #4#5#6#7
+  {
+    \__cmd_expandable_grab_E_loop:nnnNNw {#7} { } { }
+      #1 \q_nil \q_nil \q_nil \q_mark #2 \q_nil
+    #3 \q__cmd #4 #5 #6
+  }
+\cs_new:Npn \__cmd_expandable_grab_E_loop:nnnNNw
+    #1#2#3#4#5#6 \q_nil #7 \q_mark #8
+  {
+    \quark_if_nil:NTF #4
+      { \__cmd_expandable_grab_E_end:nnw {#1} {#3} }
+      {
+        \tl_if_novalue:nTF {#8}
+          { \str_if_eq:onTF { #4 { } #1 #5 } {#5} }
+          { \use_ii:nn }
+            { \__cmd_expandable_grab_E_find:w { #2 #4 #5 #6 } {#3} ~ }
+            {
+              \__cmd_expandable_grab_E_loop:nnnNNw
+                {#1} { #2 #4 #5 } { #3 {#8} }
+                #6 \q_nil #7 \q_mark
+            }
+      }
+  }
+\cs_new:Npn \__cmd_expandable_grab_E_find:w #1 \q__cmd #2#3#4
+  { #4 { \__cmd_expandable_grab_E_find:nnw #1 \q__cmd #2 #3 #4 } }
+\cs_new:Npn \__cmd_expandable_grab_E_find:nnw #1#2#3 \q_nil #4 \q__cmd #5#6#7#8
+  { \__cmd_expandable_grab_E_aux:w {#1} { #2 {#8} #3 } #4 \q__cmd #5 #6 #7 }
+\cs_new:Npn \__cmd_expandable_grab_E_end:nnw #1#2#3 \q__cmd #4#5#6
+  { #3 #2 \q__cmd #4 #5 {#1} }
+\cs_new:Npn \__cmd_expandable_grab_m:w #1 \q__cmd #2#3
+  { #3 { \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_m_long:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2#3#4
+  { #1 {#4} \q__cmd #2 #3 }
+\cs_new:Npn \__cmd_expandable_grab_R:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_R_aux:NNNwNNn #1 \q__cmd #2#3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_R_aux:NNNwNNn ##1##2##3##4 \q__cmd ##5##6##7
+      {
+        \str_if_eq:nnTF {##7} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q__cmd ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__cmd ##5##6 }
+              \q_nil { } ##2 \ERROR \q__cmd \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##5 } }
+              { \tl_to_str:n {##2} }
+            ##4 {#1} \q__cmd ##5 ##6 {##7}
+          }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_R_alt:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_R_alt_aux:NNwNNn #1 \q__cmd #2#3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_R_alt_aux:NNwNNn ##1##2##3 \q__cmd ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__cmd }
+              ##6 \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##4 } }
+              { \tl_to_str:n {##2} }
+            ##3 {#1} \q__cmd ##4 ##5 {##6}
+          }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_t:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_t_aux:NNwn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_t_aux:NNwn #1#2#3 \q__cmd #4#5#6
+  {
+    \str_if_eq:onTF { #1 { } #6 #2 } {#2}
+      { #3 { \BooleanTrue } \q__cmd #4 #5 }
+      { #3 { \BooleanFalse } \q__cmd #4 #5 {#6} }
+  }
+\cs_new:Npn \__cmd_put_arg_expandable:nw #1#2 \q__cmd { #2 {#1} \q__cmd }
+\cs_generate_variant:Nn \__cmd_put_arg_expandable:nw { o }
+\cs_new_protected:Npn \__cmd_bool_reverse:N #1
+  {
+    \bool_if:NTF #1
+      { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+      { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
+  }
+\seq_new:N \l__cmd_split_list_seq
+\tl_new:N \l__cmd_split_list_tl
+\cs_new_protected:Npn \__cmd_split_list:nn #1#2
+  {
+    \tl_if_single:nTF {#1}
+      {
+        \token_if_cs:NTF #1
+          { \__cmd_split_list_multi:nn {#1} {#2} }
+          { \__cmd_split_list_single:Nn #1 {#2} }
+      }
+      { \__cmd_split_list_multi:nn {#1} {#2} }
+  }
+\cs_new_protected:Npn \__cmd_split_list_multi:nn #1#2
+  {
+    \seq_set_split:Nnn \l__cmd_split_list_seq {#1} {#2}
+    \tl_clear:N \ProcessedArgument
+    \seq_map_inline:Nn \l__cmd_split_list_seq
+      { \tl_put_right:Nn \ProcessedArgument { {##1} } }
+  }
+\cs_generate_variant:Nn \__cmd_split_list_multi:nn { nV }
+\group_begin:
+\char_set_catcode_active:N \^^@
+\cs_new_protected:Npn \__cmd_split_list_single:Nn #1#2
+  {
+    \tl_set:Nn \l__cmd_split_list_tl {#2}
+    \group_begin:
+    \char_set_lccode:nn { `\^^@ } { `#1 }
+    \tex_lowercase:D
+      {
+        \group_end:
+        \tl_replace_all:Nnn \l__cmd_split_list_tl { ^^@ }
+      }   {#1}
+     \__cmd_split_list_multi:nV {#1} \l__cmd_split_list_tl
+   }
+\group_end:
+\cs_new_protected:Npn \__cmd_split_argument:nnn #1#2#3
+  {
+    \__cmd_split_list:nn {#2} {#3}
+    \exp_args:Nf \__cmd_split_argument_aux:nnnn
+      { \tl_count:N \ProcessedArgument }
+      {#1} {#2} {#3}
+  }
+\cs_new_protected:Npn \__cmd_split_argument_aux:nnnn #1#2#3#4
+  {
+    \int_compare:nNnF {#1} = { #2 + 1 }
+      {
+        \int_compare:nNnTF {#1} > { #2 + 1 }
+          {
+            \tl_set:Nx \ProcessedArgument
+              {
+                \exp_last_unbraced:NnNo
+                  \__cmd_split_argument_aux:n
+                  { #2 + 1 }
+                  \use_none_delimit_by_q_stop:w
+                  \ProcessedArgument
+                  \q_stop
+              }
+            \__kernel_msg_error:nnxxx { ltcmd } { split-excess-tokens }
+              { \tl_to_str:n {#3} } { \int_eval:n { #2 + 1 } }
+              { \tl_to_str:n {#4} }
+          }
+          {
+            \tl_put_right:Nx \ProcessedArgument
+              {
+                \prg_replicate:nn { #2 + 1 - (#1) }
+                  { { \exp_not:V \c_novalue_tl } }
+              }
+          }
+      }
+  }
+\cs_new:Npn \__cmd_split_argument_aux:n #1
+  { \prg_replicate:nn {#1} { \__cmd_split_argument_aux:wn } }
+\cs_new:Npn \__cmd_split_argument_aux:wn #1 \use_none_delimit_by_q_stop:w #2
+  {
+    \exp_not:n { {#2} }
+    #1
+    \use_none_delimit_by_q_stop:w
+  }
+\cs_new_protected:Npn \__cmd_trim_spaces:n #1
+  { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1
+  {
+    \bool_set_false:N \l__cmd_environment_bool
+    \tl_set:Nn \l__cmd_fn_tl {#1}
+    \__cmd_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error:n #1
+  {
+    \bool_set_true:N \l__cmd_environment_bool
+    \str_set:Nx \l__cmd_environment_str {#1}
+    \__cmd_get_arg_spec_error_aux:n
+      { \cs_if_exist:cTF { \l__cmd_environment_str } }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error_aux:n #1
+  {
+    #1
+      {
+        \__kernel_msg_error:nnx { ltcmd } { non-xparse }
+          { \__cmd_environment_or_command: }
+      }
+      {
+        \__kernel_msg_error:nnx { ltcmd } { unknown }
+          { \__cmd_environment_or_command: }
+      }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3
+  {
+    \__cmd_cmd_if_xparse:NTF #1
+      {
+        \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+        #2
+      }
+      {#3}
+  }
+\tl_new:N \ArgumentSpecification
+\cs_new_protected:Npn \__cmd_get_arg_spec:N #1
+  {
+    \__cmd_get_arg_spec:NTF #1 { }
+      { \__cmd_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec:n #1
+  {
+    \exp_args:Nc \__cmd_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { }
+      { \__cmd_get_arg_spec_error:n {#1} }
+  }
+\cs_new_protected:Npn \__cmd_show_arg_spec:N #1
+  {
+    \__cmd_get_arg_spec:NTF #1
+      { \tl_show:N \ArgumentSpecification }
+      { \__cmd_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_show_arg_spec:n #1
+  {
+    \exp_args:Nc \__cmd_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { \tl_show:N \ArgumentSpecification }
+      { \__cmd_get_arg_spec_error:n {#1} }
+  }
+\cs_new_protected:Npn \__cmd_check_definable:nNT #1
+  { \tl_trim_spaces_apply:nN {#1} \__cmd_check_definable_aux:nN }
+\group_begin:
+  \char_set_catcode_active:n { `? }
+  \cs_new_protected:Npn \__cmd_check_definable_aux:nN #1#2
+    {
+      \group_begin:
+      \tl_if_single_token:nTF {#1}
+        {
+          \int_set:Nn \tex_escapechar:D { 92 }
+          \exp_args:Nx \tl_if_empty:nTF
+            { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+            {
+              \exp_args:Nx \char_set_lccode:nn
+                { ` \str_head:n {#1} } { `? }
+              \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { ? }
+                { \group_end: \use_iii:nnn }
+                { \group_end: \use_i:nnn }
+            }
+            { \group_end: \use_iii:nnn }
+        }
+        { \group_end: \use_ii:nnn }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-definable }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-one-token }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+    }
+\group_end:
+\cs_new_protected:Npn \__cmd_token_if_cs:NTF #1
+  {
+    \group_begin:
+      \int_set:Nn \tex_escapechar:D { 92 }
+      \exp_args:Nx \tl_if_empty:nTF
+          { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+        { \group_end: \use_ii:nn }
+        { \group_end: \use_i:nn }
+  }
+\cs_new:Npn \__cmd_tl_mapthread_function:NNN #1#2#3
+  {
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN \__cmd_tl_mapthread_loop:w
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN #3
+    \exp_after:wN #1
+    \exp_after:wN \q_recursion_tail
+    \exp_after:wN \q_mark
+    #2
+    \q_recursion_tail
+    \q_recursion_stop
+  }
+\cs_new:Npn \__cmd_tl_mapthread_function:nnN #1#2#3
+  {
+    \__cmd_tl_mapthread_loop:w #3
+      #1 \q_recursion_tail \q_mark
+      #2 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new:Npn \__cmd_tl_mapthread_loop:w #1#2#3 \q_mark #4
+  {
+    \quark_if_recursion_tail_stop:n {#2}
+    \quark_if_recursion_tail_stop:n {#4}
+    #1 {#2} {#4}
+    \__cmd_tl_mapthread_loop:w #1#3 \q_mark
+  }
+\cs_new_protected:Npn \__cmd_cmd_if_xparse:NTF #1
+  {
+    \exp_args:Nf \str_case_e:nnTF
+      {
+        \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 }
+          {
+            \exp_last_unbraced:Nf \__cmd_cmd_if_xparse_aux:w
+              { \cs_replacement_spec:N #1 } ~ \q_stop
+          }
+      }
+      {
+        { \token_to_str:N \__cmd_start:nNNnnn } { }
+        { \token_to_str:N \__cmd_start_expandable:nNNNNn } { }
+        { \token_to_str:N \__cmd_start_env:nnnnn } { }
+      }
+  }
+\cs_new:Npn \__cmd_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1}
+\cs_new_protected:Npn \__cmd_peek_nonspace:NTF
+  { \__cmd_peek_nonspace_aux:nNNTF { } \__cmd_peek_meaning:NTF }
+\cs_new_protected:Npn \__cmd_peek_nonspace_remove:NTF
+  { \__cmd_peek_nonspace_aux:nNNTF { } \__cmd_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \__cmd_peek_nonspace_aux:nNNTF #1#2#3#4#5
+  {
+    \peek_meaning_remove:NTF \c_space_token
+      { \__cmd_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} }
+      { #2 #3 { #4 } { #5 #1 } }
+  }
+\cs_new_protected:Npn \__cmd_peek_meaning:NTF
+  { \__cmd_peek_meaning_aux:NNTF \c_false_bool }
+\cs_new_protected:Npn \__cmd_peek_meaning_remove:NTF
+  { \__cmd_peek_meaning_aux:NNTF \c_true_bool }
+\cs_new_protected:Npn \__cmd_peek_meaning_aux:NNTF #1#2#3#4
+  {
+    \tl_set:Nn \l__cmd_tmpa_tl {#3}
+    \tl_set:Nn \l__cmd_tmpb_tl {#4}
+    \peek_meaning:NTF #2
+      {
+        \token_if_eq_meaning:NNTF #2 \c_group_begin_token
+          { \__cmd_peek_true_remove:Nw #1 }
+          {
+            \__cmd_token_if_cs:NTF #2
+              { \__cmd_peek_cs_check_equal:NNN #1 #2 }
+              { \__cmd_peek_true_remove:Nw #1 }
+          }
+      }
+      { \l__cmd_tmpb_tl }
+  }
+\cs_new_protected:Npn \__cmd_peek_cs_check_equal:NNN #1#2#3
+  {
+    \str_if_eq:nnTF {#2} {#3}
+      { \__cmd_peek_true_remove:Nw #1 }
+      { \l__cmd_tmpb_tl }
+    #3
+  }
+\cs_new_protected:Npn \__cmd_peek_true_remove:Nw #1
+  {
+    \bool_if:NTF #1
+      {
+        \tex_afterassignment:D \l__cmd_tmpa_tl
+        \cs_set_eq:NN \__cmd_tmp:w
+      }
+      { \l__cmd_tmpa_tl }
+  }
+\tl_const:Nn \c__cmd_ignore_def_tl
+  { \\ \\ LaTeX~will~ignore~this~entire~definition. }
+\cs_new:Npn \__cmd_environment_or_command:
+  {
+    \bool_if:NTF \l__cmd_environment_bool
+      { environment ~ ' \l__cmd_environment_str ' }
+      {
+        command ~ '
+        \exp_args:Nf \tl_trim_spaces:n
+          { \exp_after:wN \token_to_str:N \l__cmd_fn_tl }
+        '
+      }
+  }
+\__kernel_msg_new:nnnn { ltcmd } { arg-after-body }
+  { In~the~definition~of~#1,~b~(body)~argument~must~be~last. }
+  {
+    The~'body'~argument~type~is~followed~by~'#2'~in~the~argument~
+    specification~of~the~#1.~This~is~not~allowed.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { bad-arg-spec }
+  { Bad~argument~specification~'#2'~for~#1. }
+  {
+    The~argument~specification~provided~was~not~valid:~
+    one~or~more~mandatory~pieces~of~information~were~missing.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-already-defined }
+  { Command~'#1'~already~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-not-yet-defined }
+  { Command ~'#1'~not~yet~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~was~never~defined.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-already-defined }
+  { Environment~'#1'~already~defined! }
+  {
+    You~have~used~\NewDocumentEnvironment
+    with~an~environment~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-not-yet-defined }
+  { Environment~'#1'~not~yet~defined! }
+  {
+    You~have~used~\RenewDocumentEnvironment
+    with~an~environment~that~was~never~defined.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { expandable-ending-optional }
+  {
+    Argument~specification~'#2'~for~expandable~command~'#1'~
+    ends~with~optional~argument.
+  }
+  {
+    Expandable~commands~must~have~a~final~mandatory~argument~
+    (or~no~arguments~at~all).~You~cannot~have~a~terminal~optional~
+    argument~with~expandable~commands.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { inconsistent-long }
+  { Inconsistent~long~arguments~for~expandable~command~'#1'. }
+  {
+    The~arguments~for~an~expandable~command~must~not~involve~short~
+    arguments~after~long~arguments.~You~have~tried~to~mix~the~two~types.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-command-arg }
+  { Argument~type~'#2'~not~available~for~#1. }
+  {
+    The~letter~'#2'~can~only~be~used~in~environment~argument~
+    specifications,~not~for~commands.
+    \\ \\
+    LaTeX~will~ignore~this~entire~definition.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-expandable-argument-type }
+  { Argument~type~'#2'~not~available~for~expandable~command~'#1'. }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-after-optional-expandably }
+  {
+    Argument~type~'#2'~not~available~after~optional~argument~
+    for~expandable~command~'#1'.
+  }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command~after~an~optional~argument.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-trailing-obey-spaces }
+  { Prefix~'!'~used~before~mandatory~argument~'#2'~of~#1. }
+  {
+    The~prefix~'!'~can~only~apply~to~trailing~optional~arguments.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-definable }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~is~a~character.~Perhaps~a~
+    backslash~is~missing?
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-one-token }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~contains~more~than~one~
+    token.~Perhaps~a~backslash~is~missing?
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-single-token }
+  {
+    Argument~delimiter~'#2'~for~the~#1~should~be~
+    a~single~non-space~token.
+  }
+  {
+    The~argument~specification~provided~was~not~valid:~in~a~place~
+    where~a~single~token~is~required,~LaTeX~found~'#2'.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { forbidden-implicit-group-token }
+  { Argument~delimiter~'#2'~for~the~#1~is~not~allowed. }
+  {
+    The~argument~specification~provided~was~not~valid:~the~implicit~
+    #3-group~token~'#2'~is~not~allowed~as~an~argument~delimiter.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { processor-in-expandable }
+  { Argument~processor~'>{#2}'~cannot~be~used~for~the~expandable~command~'#1'. }
+  {
+    The~argument~specification~for~#1~contains~a~processor~function:~
+    this~is~only~supported~for~standard~robust~commands.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { too-many-arguments }
+  { Too~many~arguments~in~argument~specification~'#2'~of~#1. }
+  {
+    The~argument~specification~provided~has~more~than~9~arguments.~
+    This~cannot~be~implemented.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { two-markers }
+  { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~#1. }
+  {
+    The~argument~specification~provided~has~two~markers~'#2'~applying~
+    to~the~same~argument;~these~are~redundant.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown-argument-type }
+  { Unknown~argument~type~'#2'~for~the~#1. }
+  {
+    The~letter~'#2'~does~not~specify~a~known~argument~type.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { xparse-argument-type }
+  { Deprecated~argument~type~'#2'~for~the~#1~requires~xparse. }
+  {
+    The~letter~'#2'~specifies~a~known~argument~type~that~requires~
+    the~xparse~package.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnn { ltcmd } { if-boolean }
+  { Invalid~use~\iow_char:N\\IfBooleanTF~{#1} }
+\__kernel_msg_new:nnnn { ltcmd } { loop-in-defaults }
+  { Defaults~of~#1~have~circular~dependency. }
+  {
+    The~default~values~of~two~or~more~arguments~of~the~#1~
+    depend~on~each~other~in~a~way~that~cannot~be~resolved.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { missing-required }
+  { Missing~required~argument~for~#1. }
+  {
+    The~current~#1~expects~an~argument~starting~with~'#2'.~
+    LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-xparse }
+  { \str_uppercase:n #1~not~defined~using~xparse. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~this~was~not~defined~using~xparse.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { split-excess-tokens }
+  { Too~many~'#1'~tokens~when~trying~to~split~argument. }
+  {
+    LaTeX~was~asked~to~split~the~input~'#3'~
+    at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~parts.~
+    There~were~too~many~'#1'~tokens.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown }
+  { Unknown~document~#1. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~it~is~not~defined.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-newline }
+  { Verbatim~argument~of~#1~ended~by~end~of~line. }
+  {
+    The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~
+    but~the~end~
+    of~the~current~line~has~been~reached.~You~may~have~forgotten~the~
+    closing~delimiter.
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-tokenized }
+  { The~verbatim~#1~cannot~be~used~inside~an~argument. }
+  {
+    The~#1~takes~a~verbatim~argument.~
+    It~may~not~appear~within~the~argument~of~another~function.~
+    It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } .
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+\__kernel_msg_new:nnn { ltcmd } { define-command }
+  {
+    Defining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { define-environment }
+  {
+    Defining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-command }
+  {
+    Redefining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-environment }
+  {
+    Redefining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { optional-mandatory }
+  {
+    Since~the~mandatory~argument~'#1'~has~the~same~delimiter~'#2'~
+    as~a~previous~optional~argument,~it~will~not~be~possible~to~
+    omit~all~optional~arguments~when~calling~this~command.
+  }
+\__kernel_msg_new:nnn { ltcmd } { unsupported-let }
+  {
+    The~command~'#1'~was~undefined~but~not~the~associated~commands~
+    '#1~code'~and/or~'#1~defaults'.~Maybe~you~tried~using~
+    \iow_char:N\\let.~This~may~lead~to~an~infinite~loop.
+  }
+\cs_new_eq:NN \BooleanFalse \c_false_bool
+\cs_new_eq:NN \BooleanTrue  \c_true_bool
+\cs_new_protected:Npn \NewDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \NewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewDocumentCommand }
+          }
+          { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \RenewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \ProvideDocumentCommand
+      { \cs_if_exist:NF #1 { \__cmd_declare_cmd:Nnn #1 {#2} {#3} } }
+ }
+\cs_new_protected:Npn \DeclareDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \DeclareDocumentCommand
+      { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+  }
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \__kernel_msg_error:nnx { ltcmd } { environment-already-defined } {#1} }
+      { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+      { \__kernel_msg_error:nnx { ltcmd } { environment-not-yet-defined } {#1} }
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewExpandableDocumentCommand }
+          }
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \RenewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewExpandableDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \ProvideExpandableDocumentCommand
+      {
+        \cs_if_exist:NF #1
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+ }
+\cs_new_protected:Npn \DeclareExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \DeclareExpandableDocumentCommand
+      { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+  }
+\cs_new:Npn \IfBooleanTF #1
+  {
+    \tl_if_single:nF {#1}
+      { \prg_break:n { \use:n } }
+    \tl_if_single_token:nF #1
+      { \prg_break:n { \use:n } }
+    \token_if_eq_meaning:NNT #1 \c_true_bool
+      { \prg_break:n { \use_ii:nnn } }
+    \token_if_eq_meaning:NNT #1 \c_false_bool
+      { \prg_break:n { \use_iii:nnn } }
+    \prg_break:n { \use:n }
+    \prg_break_point:
+    {
+      \__kernel_msg_expandable_error:nnn { ltcmd } { if-boolean } {#1}
+      \use_ii:nn
+    }
+  }
+\cs_new:Npn \IfBooleanT #1#2 { \IfBooleanTF {#1} {#2} { } }
+\cs_new:Npn \IfBooleanF #1 { \IfBooleanTF {#1} { } }
+\cs_new_eq:NN \IfNoValueF  \tl_if_novalue:nF
+\cs_new_eq:NN \IfNoValueT  \tl_if_novalue:nT
+\cs_new_eq:NN \IfNoValueTF \tl_if_novalue:nTF
+\cs_new:Npn \IfValueF { \tl_if_novalue:nT }
+\cs_new:Npn \IfValueT { \tl_if_novalue:nF }
+\cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} }
+\tl_new:N \ProcessedArgument
+\cs_new_eq:NN \ReverseBoolean \__cmd_bool_reverse:N
+\cs_new_eq:NN \SplitArgument  \__cmd_split_argument:nnn
+\cs_new_eq:NN \SplitList      \__cmd_split_list:nn
+\cs_new_eq:NN \TrimSpaces     \__cmd_trim_spaces:n
+\cs_new_eq:NN \ProcessList \tl_map_function:nN
+\cs_new_protected:Npn \GetDocumentCommandArgSpec #1
+  {
+    \__cmd_check_definable:nNT {#1} \GetDocumentCommandArgSpec
+      { \__cmd_get_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \__cmd_get_arg_spec:n
+\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1
+  {
+    \__cmd_check_definable:nNT {#1} \ShowDocumentCommandArgSpec
+      { \__cmd_show_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__cmd_show_arg_spec:n
+\ExplSyntaxOff
 %%% From File: lthooks.dtx
 \def\lthooksversion{v1.0h}
-\def\lthooksdate{2021/01/07}
+\def\lthooksdate{2021/01/15}
 \ExplSyntaxOn
 \bool_new:N \g__hook_debug_bool
 \cs_new_eq:NN \__hook_debug:n \use_none:n
@@ -2037,9 +4290,11 @@
       { \__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 } }
+  { \__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 } }
+  { \__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 } }
@@ -5090,7 +7345,7 @@
               {\reinstall at nfss@defs\init at series@setup}
 %%% 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.
+%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
 \def\tracingfonts{%
   \@font at warning{Command \noexpand\tracingfonts
            not provided.\MessageBreak
@@ -5533,7 +7788,7 @@
                    in version \math at version}%
         \@eha
   \fi
- \else \expandafter\non at alpherr\fi
+ \else \expandafter\expandafter\expandafter\non at alpherr\fi
  \expandafter#1\ifx\math at bgroup\bgroup{#4}\else#4\fi
  }%
 }
@@ -6501,16 +8756,12 @@
         \@font at series@contexttrue
   \fi\fi\fi
 }
-
 \newif\if at font@series at context
-
 \def\DeclareEmphSequence#1{%
   \protected at edef\emfontdeclare at clist{\zap at space#1, \@empty\emforce\emreset}%
 }
 \let\emfontdeclare at clist\@empty
-
 \DeclareRobustCommand\emreset{\upshape\ulcshape}
-
 \DeclareRobustCommand\em{%
   \@nomath\em
   \ifx\emfontdeclare at clist\@empty
@@ -6775,6 +9026,7 @@
               there is probably something wrong with
               the class file}\@eha
 }
+%%% From File: lttextcomp.dtx
 \DeclareRobustCommand\legacyoldstylenums[1]{%
    \begingroup
     \spaceskip\fontdimen\tw@\font
@@ -6873,7 +9125,6 @@
       \selectfont#1%
   \egroup
 }
-
 \def\tc at fake@euro#1{%
    \leavevmode
    \@font at info{Faking \noexpand#1for font family
@@ -6886,17 +9137,17 @@
       \hbox{C}\crcr
    }%
 }
-
 \def\tc at check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc at subst}
-\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc at swap@accent#1}}
+\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent
+                                           {TS1}{\tc at swap@accent#1}}
 \def\tc at swap@accent#1#2{\UseTextAccent{T1}#1}
 
 \DeclareTextSymbolDefault{\textdollar}{TS1}
-\UndeclareTextCommand{\textdollar}  {OT1}         % don't use the OT1 def any longer
+\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
+\UndeclareTextCommand{\textsterling}{OT1}% don't use the OT1 def any longer
 \DeclareTextSymbolDefault{\textperthousand}{TS1}
-\UndeclareTextCommand{\textperthousand}{T1}       % don't use the T1 def
+\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def
 \DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
 \DeclareTextSymbolDefault{\textbullet}{TS1}
 \DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
@@ -6937,22 +9188,38 @@
 \DeclareTextCommandDefault{\t}
   {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t}
 \ifx\Umathcode\@undefined
-  \DeclareTextCommandDefault{\capitalacute}       {\tc at check@accent{\'}2\capitalacute}
-  \DeclareTextCommandDefault{\capitalbreve}       {\tc at check@accent{\u}2\capitalbreve}
-  \DeclareTextCommandDefault{\capitalcaron}       {\tc at check@accent{\v}2\capitalcaron}
-  \DeclareTextCommandDefault{\capitalcedilla}     {\tc at check@accent{\c}2\capitalcedilla}
-  \DeclareTextCommandDefault{\capitalcircumflex}  {\tc at check@accent{\^}2\capitalcircumflex}
-  \DeclareTextCommandDefault{\capitaldieresis}    {\tc at check@accent{\"}2\capitaldieresis}
-  \DeclareTextCommandDefault{\capitaldotaccent}   {\tc at check@accent{\.}2\capitaldotaccent}
-  \DeclareTextCommandDefault{\capitalgrave}       {\tc at check@accent{\`}2\capitalgrave}
-  \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc at check@accent{\H}2\capitalhungarumlaut}
-  \DeclareTextCommandDefault{\capitalmacron}      {\tc at check@accent{\=}2\capitalmacron}
-  \DeclareTextCommandDefault{\capitalogonek}      {\tc at check@accent{\k}2\capitalogonek}
-  \DeclareTextCommandDefault{\capitalring}        {\tc at check@accent{\r}2\capitalring}
-  \DeclareTextCommandDefault{\capitaltie}         {\tc at check@accent{\t}2\capitaltie}
-  \DeclareTextCommandDefault{\capitaltilde}       {\tc at check@accent{\~}2\capitaltilde}
-  \DeclareTextCommandDefault{\newtie}             {\tc at check@accent{\t}2\newtie}
-  \DeclareTextCommandDefault{\capitalnewtie}      {\tc at check@accent{\t}2\capitalnewtie}
+  \DeclareTextCommandDefault{\capitalacute}
+                            {\tc at check@accent{\'}2\capitalacute}
+  \DeclareTextCommandDefault{\capitalbreve}
+                            {\tc at check@accent{\u}2\capitalbreve}
+  \DeclareTextCommandDefault{\capitalcaron}
+                            {\tc at check@accent{\v}2\capitalcaron}
+  \DeclareTextCommandDefault{\capitalcedilla}
+                            {\tc at check@accent{\c}2\capitalcedilla}
+  \DeclareTextCommandDefault{\capitalcircumflex}
+                            {\tc at check@accent{\^}2\capitalcircumflex}
+  \DeclareTextCommandDefault{\capitaldieresis}
+                            {\tc at check@accent{\"}2\capitaldieresis}
+  \DeclareTextCommandDefault{\capitaldotaccent}
+                            {\tc at check@accent{\.}2\capitaldotaccent}
+  \DeclareTextCommandDefault{\capitalgrave}
+                            {\tc at check@accent{\`}2\capitalgrave}
+  \DeclareTextCommandDefault{\capitalhungarumlaut}
+                            {\tc at check@accent{\H}2\capitalhungarumlaut}
+  \DeclareTextCommandDefault{\capitalmacron}
+                            {\tc at check@accent{\=}2\capitalmacron}
+  \DeclareTextCommandDefault{\capitalogonek}
+                            {\tc at check@accent{\k}2\capitalogonek}
+  \DeclareTextCommandDefault{\capitalring}
+                            {\tc at check@accent{\r}2\capitalring}
+  \DeclareTextCommandDefault{\capitaltie}
+                            {\tc at check@accent{\t}2\capitaltie}
+  \DeclareTextCommandDefault{\capitaltilde}
+                            {\tc at check@accent{\~}2\capitaltilde}
+  \DeclareTextCommandDefault{\newtie}
+                            {\tc at check@accent{\t}2\newtie}
+  \DeclareTextCommandDefault{\capitalnewtie}
+                            {\tc at check@accent{\t}2\capitalnewtie}
 \else
   \DeclareTextCommandDefault\capitalacute{\@tabacckludge'}
   \DeclareTextCommandDefault\capitalbreve{\u}
@@ -6971,86 +9238,163 @@
   \DeclareTextCommandDefault\capitaltilde{\~}
   \DeclareTextCommandDefault\newtie{\t}
 \fi
-\DeclareTextCommandDefault{\textlbrackdbl}      {\tc at check@symbol2\textlbrackdbl}
-\DeclareTextCommandDefault{\textrbrackdbl}      {\tc at check@symbol2\textrbrackdbl}
-\DeclareTextCommandDefault{\texteightoldstyle}  {\tc at check@symbol2\texteightoldstyle}
-\DeclareTextCommandDefault{\textfiveoldstyle}   {\tc at check@symbol2\textfiveoldstyle}
-\DeclareTextCommandDefault{\textfouroldstyle}   {\tc at check@symbol2\textfouroldstyle}
-\DeclareTextCommandDefault{\textnineoldstyle}   {\tc at check@symbol2\textnineoldstyle}
-\DeclareTextCommandDefault{\textoneoldstyle}    {\tc at check@symbol2\textoneoldstyle}
-\DeclareTextCommandDefault{\textsevenoldstyle}  {\tc at check@symbol2\textsevenoldstyle}
-\DeclareTextCommandDefault{\textsixoldstyle}    {\tc at check@symbol2\textsixoldstyle}
-\DeclareTextCommandDefault{\textthreeoldstyle}  {\tc at check@symbol2\textthreeoldstyle}
-\DeclareTextCommandDefault{\texttwooldstyle}    {\tc at check@symbol2\texttwooldstyle}
-\DeclareTextCommandDefault{\textzerooldstyle}   {\tc at check@symbol2\textzerooldstyle}
-\DeclareTextCommandDefault{\textacutedbl}       {\tc at check@symbol2\textacutedbl}
-\DeclareTextCommandDefault{\textasciiacute}     {\tc at check@symbol2\textasciiacute}
-\DeclareTextCommandDefault{\textasciibreve}     {\tc at check@symbol2\textasciibreve}
-\DeclareTextCommandDefault{\textasciicaron}     {\tc at check@symbol2\textasciicaron}
-\DeclareTextCommandDefault{\textasciidieresis}  {\tc at check@symbol2\textasciidieresis}
-\DeclareTextCommandDefault{\textasciigrave}     {\tc at check@symbol2\textasciigrave}
-\DeclareTextCommandDefault{\textasciimacron}    {\tc at check@symbol2\textasciimacron}
-\DeclareTextCommandDefault{\textgravedbl}       {\tc at check@symbol2\textgravedbl}
-\DeclareTextCommandDefault{\texttildelow}       {\tc at check@symbol2\texttildelow}
-\DeclareTextCommandDefault{\textbaht}           {\tc at check@symbol2\textbaht}
-\DeclareTextCommandDefault{\textbigcircle}      {\tc at check@symbol2\textbigcircle}
-\DeclareTextCommandDefault{\textborn}           {\tc at check@symbol2\textborn}
-\DeclareTextCommandDefault{\textcentoldstyle}   {\tc at check@symbol2\textcentoldstyle}
-\DeclareTextCommandDefault{\textcircledP}       {\tc at check@symbol2\textcircledP}
-\DeclareTextCommandDefault{\textcopyleft}       {\tc at check@symbol2\textcopyleft}
-\DeclareTextCommandDefault{\textdblhyphenchar}  {\tc at check@symbol2\textdblhyphenchar}
-\DeclareTextCommandDefault{\textdblhyphen}      {\tc at check@symbol2\textdblhyphen}
-\DeclareTextCommandDefault{\textdied}           {\tc at check@symbol2\textdied}
-\DeclareTextCommandDefault{\textdiscount}       {\tc at check@symbol2\textdiscount}
-\DeclareTextCommandDefault{\textdivorced}       {\tc at check@symbol2\textdivorced}
-\DeclareTextCommandDefault{\textdollaroldstyle} {\tc at check@symbol2\textdollaroldstyle}
-\DeclareTextCommandDefault{\textguarani}        {\tc at check@symbol2\textguarani}
-\DeclareTextCommandDefault{\textleaf}           {\tc at check@symbol2\textleaf}
-\DeclareTextCommandDefault{\textlquill}         {\tc at check@symbol2\textlquill}
-\DeclareTextCommandDefault{\textmarried}        {\tc at check@symbol2\textmarried}
-\DeclareTextCommandDefault{\textmho}            {\tc at check@symbol2\textmho}
-\DeclareTextCommandDefault{\textmusicalnote}    {\tc at check@symbol2\textmusicalnote}
-\DeclareTextCommandDefault{\textnaira}          {\tc at check@symbol2\textnaira}
-\DeclareTextCommandDefault{\textopenbullet}     {\tc at check@symbol2\textopenbullet}
-\DeclareTextCommandDefault{\textpeso}           {\tc at check@symbol2\textpeso}
-\DeclareTextCommandDefault{\textpilcrow}        {\tc at check@symbol2\textpilcrow}
-\DeclareTextCommandDefault{\textrecipe}         {\tc at check@symbol2\textrecipe}
-\DeclareTextCommandDefault{\textreferencemark}  {\tc at check@symbol2\textreferencemark}
-\DeclareTextCommandDefault{\textrquill}         {\tc at check@symbol2\textrquill}
-\DeclareTextCommandDefault{\textservicemark}    {\tc at check@symbol2\textservicemark}
-\DeclareTextCommandDefault{\textsurd}           {\tc at check@symbol2\textsurd}
-\DeclareTextCommandDefault{\textpertenthousand} {\tc at check@symbol2\textpertenthousand}
+\DeclareTextCommandDefault{\textlbrackdbl}
+                          {\tc at check@symbol2\textlbrackdbl}
+\DeclareTextCommandDefault{\textrbrackdbl}
+                          {\tc at check@symbol2\textrbrackdbl}
+\DeclareTextCommandDefault{\texteightoldstyle}
+                          {\tc at check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}
+                          {\tc at check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}
+                          {\tc at check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}
+                          {\tc at check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}
+                          {\tc at check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}
+                          {\tc at check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}
+                          {\tc at check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}
+                          {\tc at check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}
+                          {\tc at check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textzerooldstyle}
+                          {\tc at check@symbol2\textzerooldstyle}
+\DeclareTextCommandDefault{\textacutedbl}
+                          {\tc at check@symbol2\textacutedbl}
+\DeclareTextCommandDefault{\textasciiacute}
+                          {\tc at check@symbol2\textasciiacute}
+\DeclareTextCommandDefault{\textasciibreve}
+                          {\tc at check@symbol2\textasciibreve}
+\DeclareTextCommandDefault{\textasciicaron}
+                          {\tc at check@symbol2\textasciicaron}
+\DeclareTextCommandDefault{\textasciidieresis}
+                          {\tc at check@symbol2\textasciidieresis}
+\DeclareTextCommandDefault{\textasciigrave}
+                          {\tc at check@symbol2\textasciigrave}
+\DeclareTextCommandDefault{\textasciimacron}
+                          {\tc at check@symbol2\textasciimacron}
+\DeclareTextCommandDefault{\textgravedbl}
+                          {\tc at check@symbol2\textgravedbl}
+\DeclareTextCommandDefault{\texttildelow}
+                          {\tc at check@symbol2\texttildelow}
+\DeclareTextCommandDefault{\textbaht}
+                          {\tc at check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textbigcircle}
+                          {\tc at check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textborn}
+                          {\tc at check@symbol2\textborn}
+\DeclareTextCommandDefault{\textcentoldstyle}
+                          {\tc at check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcircledP}
+                          {\tc at check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textcopyleft}
+                          {\tc at check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textdblhyphenchar}
+                          {\tc at check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdblhyphen}
+                          {\tc at check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textdied}
+                          {\tc at check@symbol2\textdied}
+\DeclareTextCommandDefault{\textdiscount}
+                          {\tc at check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textdivorced}
+                          {\tc at check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdollaroldstyle}
+                          {\tc at check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textguarani}
+                          {\tc at check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textleaf}
+                          {\tc at check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textlquill}
+                          {\tc at check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textmarried}
+                          {\tc at check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmho}
+                          {\tc at check@symbol2\textmho}
+\DeclareTextCommandDefault{\textmusicalnote}
+                          {\tc at check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textnaira}
+                          {\tc at check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textopenbullet}
+                          {\tc at check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textpeso}
+                          {\tc at check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textpilcrow}
+                          {\tc at check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textrecipe}
+                          {\tc at check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textreferencemark}
+                          {\tc at check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textrquill}
+                          {\tc at check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textservicemark}
+                          {\tc at check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textsurd}
+                          {\tc at check@symbol2\textsurd}
+\DeclareTextCommandDefault{\textpertenthousand}
+                          {\tc at check@symbol2\textpertenthousand}
 \UndeclareTextCommand{\textpertenthousand}{T1}
-\DeclareTextCommandDefault{\textlangle}         {\tc at check@symbol3\textlangle}
-\DeclareTextCommandDefault{\textrangle}         {\tc at check@symbol3\textrangle}
-\DeclareTextCommandDefault{\textcolonmonetary}  {\tc at check@symbol4\textcolonmonetary}
-\DeclareTextCommandDefault{\textdong}           {\tc at check@symbol4\textdong}
-\DeclareTextCommandDefault{\textdownarrow}      {\tc at check@symbol4\textdownarrow}
-\DeclareTextCommandDefault{\textleftarrow}      {\tc at check@symbol4\textleftarrow}
-\DeclareTextCommandDefault{\textlira}           {\tc at check@symbol4\textlira}
-\DeclareTextCommandDefault{\textrightarrow}     {\tc at check@symbol4\textrightarrow}
-\DeclareTextCommandDefault{\textuparrow}        {\tc at check@symbol4\textuparrow}
-\DeclareTextCommandDefault{\textwon}            {\tc at check@symbol4\textwon}
-\DeclareTextCommandDefault{\textestimated}      {\tc at check@symbol5\textestimated}
-\DeclareTextCommandDefault{\textnumero}         {\tc at check@symbol5\textnumero}
-\DeclareTextCommandDefault{\textflorin}         {\tc at check@symbol6\textflorin}
-\DeclareTextCommandDefault{\textcurrency}       {\tc at check@symbol6\textcurrency}
-\DeclareTextCommandDefault{\textfractionsolidus}{\tc at check@symbol7\textfractionsolidus}
-\DeclareTextCommandDefault{\textohm}            {\tc at check@symbol7\textohm}
-\DeclareTextCommandDefault{\textmu}             {\tc at check@symbol7\textmu}
-\DeclareTextCommandDefault{\textminus}          {\tc at check@symbol7\textminus}
-\DeclareTextCommandDefault{\textblank}          {\tc at check@symbol{8}\textblank}
-\DeclareTextCommandDefault{\textinterrobangdown}{\tc at check@symbol{8}\textinterrobangdown}
-\DeclareTextCommandDefault{\textinterrobang}    {\tc at check@symbol{8}\textinterrobang}
+\DeclareTextCommandDefault{\textlangle}
+                          {\tc at check@symbol3\textlangle}
+\DeclareTextCommandDefault{\textrangle}
+                          {\tc at check@symbol3\textrangle}
+\DeclareTextCommandDefault{\textcolonmonetary}
+                          {\tc at check@symbol4\textcolonmonetary}
+\DeclareTextCommandDefault{\textdong}
+                          {\tc at check@symbol4\textdong}
+\DeclareTextCommandDefault{\textdownarrow}
+                          {\tc at check@symbol4\textdownarrow}
+\DeclareTextCommandDefault{\textleftarrow}
+                          {\tc at check@symbol4\textleftarrow}
+\DeclareTextCommandDefault{\textlira}
+                          {\tc at check@symbol4\textlira}
+\DeclareTextCommandDefault{\textrightarrow}
+                          {\tc at check@symbol4\textrightarrow}
+\DeclareTextCommandDefault{\textuparrow}
+                          {\tc at check@symbol4\textuparrow}
+\DeclareTextCommandDefault{\textwon}
+                          {\tc at check@symbol4\textwon}
+\DeclareTextCommandDefault{\textestimated}
+                          {\tc at check@symbol5\textestimated}
+\DeclareTextCommandDefault{\textnumero}
+                          {\tc at check@symbol5\textnumero}
+\DeclareTextCommandDefault{\textflorin}
+                          {\tc at check@symbol6\textflorin}
+\DeclareTextCommandDefault{\textcurrency}
+                          {\tc at check@symbol6\textcurrency}
+\DeclareTextCommandDefault{\textfractionsolidus}
+                          {\tc at check@symbol7\textfractionsolidus}
+\DeclareTextCommandDefault{\textohm}
+                          {\tc at check@symbol7\textohm}
+\DeclareTextCommandDefault{\textmu}
+                          {\tc at check@symbol7\textmu}
+\DeclareTextCommandDefault{\textminus}
+                          {\tc at check@symbol7\textminus}
+\DeclareTextCommandDefault{\textblank}
+                          {\tc at check@symbol{8}\textblank}
+\DeclareTextCommandDefault{\textinterrobangdown}
+                          {\tc at check@symbol{8}\textinterrobangdown}
+\DeclareTextCommandDefault{\textinterrobang}
+                          {\tc at check@symbol{8}\textinterrobang}
 \DeclareTextCommandDefault{\texteuro}
-            {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
-\DeclareTextCommandDefault{\textcelsius}{\tc at check@symbol{9}\textcelsius}
-\DeclareTextCommandDefault{\textonesuperior}{\tc at check@symbol{9}\textonesuperior}
-\DeclareTextCommandDefault{\textthreequartersemdash}{\tc at check@symbol{9}\textthreequartersemdash}
-\DeclareTextCommandDefault{\textthreesuperior}{\tc at check@symbol{9}\textthreesuperior}
-\DeclareTextCommandDefault{\texttwelveudash}{\tc at check@symbol{9}\texttwelveudash}
-\DeclareTextCommandDefault{\texttwosuperior}{\tc at check@symbol{9}\texttwosuperior}
-\DeclareTextCommandDefault{\textbardbl}{\tc at check@symbol{9}\textbardbl}
+  {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
+\DeclareTextCommandDefault{\textcelsius}
+                          {\tc at check@symbol{9}\textcelsius}
+\DeclareTextCommandDefault{\textonesuperior}
+                          {\tc at check@symbol{9}\textonesuperior}
+\DeclareTextCommandDefault{\textthreequartersemdash}
+                          {\tc at check@symbol{9}\textthreequartersemdash}
+\DeclareTextCommandDefault{\textthreesuperior}
+                          {\tc at check@symbol{9}\textthreesuperior}
+\DeclareTextCommandDefault{\texttwelveudash}
+                          {\tc at check@symbol{9}\texttwelveudash}
+\DeclareTextCommandDefault{\texttwosuperior}
+                          {\tc at check@symbol{9}\texttwosuperior}
+\DeclareTextCommandDefault{\textbardbl}
+                          {\tc at check@symbol{9}\textbardbl}
 
 \ifx \Umathcode\@undefined  \else
 \DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}}
@@ -7063,12 +9407,12 @@
 \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{\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
@@ -7100,31 +9444,32 @@
 \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}{lmtt}    {1} % missing TM, SM and
+                                         % 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}{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}
@@ -7135,11 +9480,11 @@
 \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}{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}
@@ -7247,7 +9592,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}{Forum-LF}      {7}  % the superiors are missing
 \DeclareEncodingSubset{TS1}{Cochineal-*}              {8}
 \DeclareEncodingSubset{TS1}{AlgolRevived-TLF}         {9}
 \def\UseLegacyTextSymbols{%
@@ -8160,13 +10505,13 @@
     \mb at b
     \kern\z@}}
 \let\set at color\relax
-\let\color at begingroup\relax
-\let\color at endgroup\relax
-\let\color at setgroup\relax
-\let\normalcolor\relax
-\let\color at hbox\relax
-\let\color at vbox\relax
-\let\color at endbox\relax
+\let\color at begingroup\begingroup
+\def\color at endgroup{\endgraf\endgroup}
+\def\color at setgroup{\color at begingroup}        % changed further in color package
+\let\normalcolor\relax                        % remains untouched; only changed in a color package
+\def\color at hbox{\hbox\bgroup\color at begingroup}
+\def\color at vbox{\vbox\bgroup\color at begingroup}
+\def\color at endbox{\color at endgroup\egroup}
 \def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
 \DeclareRobustCommand\savebox[1]{%
   \@ifnextchar(%)
@@ -8363,6 +10708,7 @@
     \color at begingroup
       \@makefntext{%
         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
     \color at endgroup}}
 \newif\if at pboxsw
 \DeclareRobustCommand\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
@@ -9599,7 +11945,7 @@
         \hsize\marginparwidth
         \@parboxrestore
         \@marginparreset
-        #2%
+        #2\par
         \@minipagefalse
         \outer at nobreak
         }%
@@ -9663,6 +12009,7 @@
     \color at begingroup
       \@makefntext{%
         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
     \color at endgroup}}%
 \def\footnotemark{%
    \@ifnextchar[\@xfootnotemark
@@ -9693,6 +12040,18 @@
   \@footnotetext}
 \def\@mpfn{footnote}
 \def\thempfn{\thefootnote}
+\def\footref#1{%
+  \begingroup
+    \unrestored at protected@xdef\@thefnmark{\ref{#1}}%
+  \endgroup
+  \@footnotemark
+}
+%%<latexrelease>\IncludeInRelease{0000/00/00}%
+%%<latexrelease>                 {\footref}{Add footref}%
+%%<latexrelease>
+%%<latexrelease>\let\footref\@undefined
+%%<latexrelease>
+%%<latexrelease>\EndIncludeInRelease
 %%% From File: ltidxglo.dtx
 \message{index,}
 \def\makeindex{%
@@ -9999,7 +12358,11 @@
     \zap at space#2 \@empty}%
   \expandafter\let
     \csname opt@#3.#1\expandafter\endcsname
-    \csname opt@\reserved at a\endcsname}
+    \csname opt@\reserved at a\endcsname
+    \@ifundefined{@raw at opt@#3.#1}%
+      {\expandafter\gdef\csname @raw at opt@#3.#1\endcsname{#2}}%
+      {\expandafter\g at addto@macro\csname @raw at opt@#3.#1\endcsname{,#2}}%
+}
 \@onlypreamble\@pass at ptions
 \def\PassOptionsToPackage{\@pass at ptions\@pkgextension}
 \def\PassOptionsToClass{\@pass at ptions\@clsextension}
@@ -10018,11 +12381,12 @@
 \@onlypreamble\DeclareOption
 \@onlypreamble\@declareoption
 \@onlypreamble\@defdefault at ds
+\def\@remove at eq@value#1=#2\@nil{#1}
 \def\OptionNotUsed{%
   \ifx\@currext\@clsextension
     \xdef\@unusedoptionlist{%
       \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
-      \CurrentOption}%
+      \expandafter\@remove at eq@value\CurrentOption=\@nil}%
   \fi}
 \@onlypreamble\OptionNotUsed
 \def\ProcessOptions{%
@@ -10073,7 +12437,8 @@
 \def\@options{\ProcessOptions*}
 \@onlypreamble\@options
 \def\@use at ption{%
-  \@expandtwoargs\@removeelement\CurrentOption
+  \@expandtwoargs\@removeelement
+     {\expandafter\@remove at eq@value\CurrentOption=\@nil}%
   \@unusedoptionlist\@unusedoptionlist
   \csname ds@\CurrentOption\endcsname}
 \@onlypreamble\@use at ption
@@ -10171,6 +12536,7 @@
   \ifx#1\@clsextension
     \ifx\@classoptionslist\relax
       \xdef\@classoptionslist{\zap at space#2 \@empty}%
+      \gdef\@raw at classoptionslist{#2}%
       \def\reserved at a{%
         \@onefilewithoptions#3[{#2}][{#4}]#1%
         \@documentclasshook}%
@@ -10485,7 +12851,8 @@
       \ifx\relax##1\relax%
       \else%
           \@latex at warning{Writing text `##1' before %
-             \string\end{\@currenvir}\MessageBreak as last line of \@curr at file}%
+            \string\end{\@currenvir}\MessageBreak
+            as last line of \@curr at file}%
         \immediate\write\reserved at c{##1}%
       \fi%
       \ifx\relax##2\relax%
@@ -10709,12 +13076,9 @@
     \expandafter\@secondoftwo
   \fi
 }
-%%
-%% 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}
+\providecommand\ltfilehookversion{v1.0g}
+\providecommand\ltfilehookdate{2021/02/08}
 \ExplSyntaxOn
 \tl_new:N \CurrentFile
 \tl_new:N \CurrentFilePath
@@ -10819,7 +13183,8 @@
           @file-subst@
           \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
         }
-        { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn {#2} }
+        { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn
+                                      {#2} }
     \group_end:
   }
 \cs_new_protected:Npn \__filehook_subst_remove:n #1
@@ -10852,6 +13217,7 @@
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
+    \let\protect\string
     \expandafter\def\csname\expandafter\endcsname
       \expandafter{\csname\endcsname}%
     \@expl@@@filehook at if@no at extension@@nTF{#1}%
@@ -10983,11 +13349,12 @@
 \declare at file@substitution{atveryend.sty}{atveryend-ltx.sty}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%
-%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2021
+%%               Frank Mittelbach, LaTeX Team
 %%
 %%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0d}
-\providecommand\ltshipoutdate{2020/12/06}
+\providecommand\ltshipoutversion{v1.0i}
+\providecommand\ltshipoutdate{2021/01/25}
 \ExplSyntaxOn
 \bool_new:N \g__shipout_debug_bool
 \cs_new_eq:NN \__shipout_debug:n  \use_none:n
@@ -11008,6 +13375,27 @@
   }
 \box_new:N  \l_shipout_box
 \cs_set_eq:NN \ShipoutBox \l_shipout_box
+\box_new:N  \l__shipout_raw_box
+\sys_if_engine_luatex:TF
+  {
+    \newluafunction \__shipout_finalize_box:
+    \exp_args:Nx \everyjob {
+      \exp_not:V \everyjob
+      \exp_not:N \lua_now:n {
+        luatexbase.create_callback('pre_shipout_filter', 'list')
+        local~call, getbox, setbox = luatexbase.call_callback, tex.getbox, tex.setbox~
+        lua.get_functions_table()[\the \__shipout_finalize_box:] = function()
+          local~result = call('pre_shipout_filter', getbox(\the \l_shipout_box))
+          if~not (result == true) then~
+            setbox(\the \l_shipout_box, result~or~nil)
+          end~
+        end
+      }
+    }
+    \protected \luadef \__shipout_finalize_box: \the \__shipout_finalize_box:
+  } {
+    \cs_set_eq:NN \__shipout_finalize_box: \scan_stop:
+  }
 \cs_set_protected:Npn \__shipout_execute: {
   \tl_set:Nx \l__shipout_group_level_tl
      { \int_value:w \tex_currentgrouplevel:D }
@@ -11019,26 +13407,43 @@
 \cs_new:Npn \__shipout_execute_test_level: {
   \int_compare:nNnT
      \l__shipout_group_level_tl < \tex_currentgrouplevel:D
-     \tex_aftergroup:D
-  \__shipout_execute_cont:
+     \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} }
+  \__shipout_execute_main_cont:Nnnn
+     \l_shipout_box
+     { \hook_use:n {shipout/before} }
+     { \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 at before@shipout at background }
+         { \__shipout_add_background_picture:n
+           { \@kernel at before@shipout at background
+             \hook_use:n {shipout/background}
+             \@kernel at after@shipout at background }
+         }
+     }
+     { \hook_use:n {shipout/after} }
+}
+\cs_new:Npn \__shipout_execute_main_cont:Nnnn #1#2#3#4 {
+  \box_if_empty:NTF #1
+    { \@latex at warning{Ignoring~ void~ shipout~ box} }
     {
-      \bool_gset_false:N \g__shipout_discard_bool
+                                              % \DiscardShipoutBox on doc-level
       \cs_set_eq:NN \__shipout_saved_protect: \protect
       \set at typeset@protect
-      \__shipout_get_box_size:N \l_shipout_box
-      \hook_use:n {shipout/before}
+      \__shipout_get_box_size:N #1
+      #2
       \int_gincr:N \g_shipout_totalpages_int
       \bool_if:NTF \g__shipout_discard_bool
-        { \PackageInfo{ltshipout}{Completed~ page~ discarded}
+        { \@latex at info@no at line{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}{
+        { \box_if_empty:NTF #1
+            { \@latex at warning{
                 Shipout~ box~ was~ voided~ by~ hook,\MessageBreak
                 ignoring~ shipout~ box  }
             }
@@ -11048,37 +13453,54 @@
                 \typeout{Absolute~ page~ =~ \int_use:N \g_shipout_readonly_int
                          \space (target:~ \@abspage at 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 at before@shipout at background }
-                   { \__shipout_add_background_picture:n
-                     { \@kernel at before@shipout at background
-                       \hook_use:n {shipout/background} } }
-              \__shipout_execute_firstpage_hook:
+              \__shipout_get_box_size:N #1
+              \__shipout_run_firstpage_hook:
+              #3
+              \__shipout_add_firstpage_specials:
               \int_compare:nNnT \@abspage at last = \g_shipout_readonly_int
                 { \bool_lazy_and:nnF
                     { \hook_if_empty_p:n {shipout/lastpage} }
                     { \tl_if_empty_p:N \@kernel at after@shipout at 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 at after@shipout at lastpage }
+                          on~ page~ \int_use:N \g_shipout_readonly_int } }
+                      \__shipout_add_foreground_box:n
+                          { \UseHook{shipout/lastpage}
+                            \@kernel at after@shipout at lastpage }
                     }
                     \bool_gset_true:N \g__shipout_lastpage_handled_bool
                 }
+              \__shipout_finalize_box:
               \cs_set_eq:NN \protect \exp_not:N
               \tex_shipout:D \box_use:N \l_shipout_box
+              \__shipout_drop_firstpage_specials:
+              \set at typeset@protect
+              #4
             }
         }
       \cs_set_eq:NN \protect \__shipout_saved_protect:
     }
 }
+\cs_set_protected:Npn \__shipout_execute_raw: {
+  \tl_set:Nx \l__shipout_group_level_tl
+     { \int_value:w \tex_currentgrouplevel:D }
+  \tex_afterassignment:D \__shipout_execute_test_level_raw:
+  \tex_setbox:D \l__shipout_raw_box
+}
+\cs_new:Npn \__shipout_execute_test_level_raw: {
+  \int_compare:nNnT
+     \l__shipout_group_level_tl < \tex_currentgrouplevel:D
+     \tex_aftergroup:D \__shipout_execute_nohooks_cont:
+}
+\cs_new:Npn \__shipout_execute_nohooks_cont: {
+  \__shipout_execute_main_cont:Nnnn \l__shipout_raw_box
+     {} { \__shipout_debug:n{ \typeout{Doing~ raw~ shipout~ ...} }
+          \box_set_eq:NN \l_shipout_box \l__shipout_raw_box } {}
+}
+
+\cs_gset_eq:NN \RawShipout \__shipout_execute_raw:
 \cs_new_eq:NN  \__shipout_saved_protect: \protect
 \hook_new:n{shipout/before}
+\hook_new:n{shipout/after}
 \hook_new:n{shipout/foreground}
 \hook_new:n{shipout/background}
 \hook_new:n{shipout/firstpage}
@@ -11085,10 +13507,17 @@
 \hook_new:n{shipout/lastpage}
 \let\@kernel at after@shipout at lastpage\@empty
 \let\@kernel at before@shipout at 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:
+\let\@kernel at after@shipout at background\@empty
+\cs_new:Npn \__shipout_run_firstpage_hook: {
+  \hook_if_empty:nTF {shipout/firstpage}
+       {
+         \cs_gset_eq:NN \__shipout_add_firstpage_specials:  \prg_do_nothing:
+         \cs_gset_eq:NN \__shipout_drop_firstpage_specials: \prg_do_nothing:
+       }
+       {
+         \hbox_set:Nn \l__shipout_firstpage_box { \UseHook{shipout/firstpage} }
+       }
+  \cs_gset_eq:NN \__shipout_run_firstpage_hook: \prg_do_nothing:
   \cs_gset:Npn \__shipout_add_firstpage_material:Nn ##1 ##2 {
     \@latex at warning{
         First~ page~ is~ already~ shipped~ out,~ ignoring\MessageBreak
@@ -11095,6 +13524,18 @@
         \string##1 }
   }
 }
+\cs_new:Npn \__shipout_add_firstpage_specials: {
+  \box_set_eq:NN \l__shipout_raw_box \l_shipout_box
+  \__shipout_add_background_box:n { \hbox_unpack_drop:N \l__shipout_firstpage_box }
+  \cs_gset_eq:NN \__shipout_add_firstpage_specials: \prg_do_nothing:
+}
+\cs_new:Npn \__shipout_drop_firstpage_specials: {
+    \box_set_eq:NN \l_shipout_box \l__shipout_raw_box
+    \cs_gset_eq:NN \__shipout_drop_firstpage_specials:  \prg_do_nothing:
+  }
+
+\box_new:N \l__shipout_firstpage_box
+
 \bool_new:N \g__shipout_lastpage_handled_bool
 \cs_new:Npn \__shipout_add_firstpage_material:Nn #1#2 {
    \AddToHook{shipout/firstpage}{#2}
@@ -11103,8 +13544,8 @@
   \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_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
@@ -11310,7 +13751,8 @@
   {\ifnum\@abspage at last<\maxdimen
      \xdef\PreviousTotalPages{\@abspage at last}\fi}
 \cs_new_eq:NN \DiscardShipoutBox \shipout_discard:
-\cs_set_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 at add@firstpage at material@@Nn
@@ -11335,7 +13777,6 @@
       and you can safely remove it.\MessageBreak
       Found on}}
 \declare at file@substitution{atbegshi.sty}{atbegshi-ltx.sty}
-\declare at file@substitution{everyshi.sty}{everyshi-ltx.sty}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%% From File: ltoutput.dtx
 \expandafter\let\csname ver at autoout1.sty\endcsname\fmtversion
@@ -12516,6 +14957,22 @@
    \errmessage{}
 \def\font at submax{0pt}
 \fi
+\ifx \pdfgentounicode \@undefined \else
+  \ifnum 0=0%
+    \ifdefined\pdftexversion
+      \ifnum \pdftexversion=140 \ifnum\pdftexrevision<22 1\fi\fi
+    \fi
+    \relax
+    \input glyphtounicode
+  \else
+    \begingroup
+      \everyeof{\noexpand}\endlinechar-1
+      \edef\x{\endgroup
+        \everyjob{\the\everyjob\@@input glyphtounicode }%
+    }\x
+  \fi
+  \pdfgentounicode=1
+\fi
 \ifnum0%
   \ifx\Umathcode\@undefined\else 1\fi
   \ifx\mubyte\@undefined\else 1\fi
@@ -12718,6 +15175,7 @@
 \let\@filelist\@gobble
 \def\@addtofilelist#1{\xdef\@filelist{\@filelist,#1}}%
 \@input{latex2e-first-aid-for-external-files.ltx}
+\@input{ltpara.ltx}
 \makeatother
 \errorstopmode
 \dump

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex209.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex209.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latex209.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -16,7 +16,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexrelease.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,6 +12,7 @@
 %% ltluatex.dtx  (with options: `latexrelease')
 %% ltexpl.dtx  (with options: `latexrelease')
 %% ltdefns.dtx  (with options: `latexrelease')
+%% ltcmd.dtx  (with options: `latexrelease')
 %% lthooks.dtx  (with options: `latexrelease')
 %% ltalloc.dtx  (with options: `latexrelease')
 %% ltcntrl.dtx  (with options: `latexrelease')
@@ -60,7 +61,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -329,9 +330,11 @@
     \PackageError{latexrelease}{skipped IncludeInRelease for tag \string#2}{}%
   \fi}
 \ProvidesPackage{latexrelease}
-          [2020/12/06 v1.0k LaTeX release emulation and tests
+          [2021/01/23 v1.0l LaTeX release emulation and tests
               (including releases up to \latexreleaseversion)]
 \NeedsTeXFormat{LaTeX2e}[1996/06/01]
+\edef\sourceLaTeXdate{%
+  \expandafter\@parse at version\fmtversion//00\@nil}
 \DeclareOption*{%
   \def\@IncludeInRelease#1[#2]{\@IncludeInRele at se{#1}}%
   \let\requestedpatchdate\CurrentOption}
@@ -991,10 +994,11 @@
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
             {\@expl at sys@load at backend@@}{Roll forward support}%
-\def\@expl at sys@load at backend@@{}
-\def\@expl at push@filename@@{}
-\def\@expl at push@filename at aux@@{}
-\def\@expl at pop@filename@@{}
+\def\reserved at a#1{\ifdefined#1\else\def#1{}\fi}
+\reserved at a\@expl at sys@load at backend@@
+\reserved at a\@expl at push@filename@@
+\reserved at a\@expl at push@filename at aux@@
+\reserved at a\@expl at pop@filename@@
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
                  {expl3}{Pre-load expl3}%
@@ -1034,17 +1038,9 @@
            --- I'm giving up!\MessageBreak\MessageBreak
            Note that manually loading the expl3 package\MessageBreak
            from your distribution is not enough}%
-        \@@end  % die
+        \batchmode \read -1 to \reserved at a
       }%
-      {%
-        \input expl3.ltx
-        \ifdefined\NewDocumentCommand
-        \else
-          \IfFileExists{xparse.ltx}
-            {\input xparse.ltx }
-            {}%
-         \fi
-      }%
+      {\input expl3.ltx }%
   }
 \EndIncludeInRelease
 
@@ -1068,14 +1064,6 @@
   }%
 \input{expl3.ltx}
 \EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
-                 {\NewDocumentCommand}{Emergency loading xparse}%
-
-\ifdefined\NewDocumentCommand \else
-  \RequirePackage{xparse}
-\fi
-
-\EndIncludeInRelease
 \IncludeInRelease{2020/10/01}{\@expl at cs@to at str@@N}%
         {expl3 macros added for the 2020-10-01 release}%
 \ExplSyntaxOn
@@ -1576,12 +1564,2294 @@
 \kernel at make@fragile\underbar
 
 \EndIncludeInRelease
-%%
-%% File: lthooks.dtx (C) Copyright 2020,2021 Frank Mittelbach,
-%%                                      Phelype Oleinik & LaTeX Team
+%%% From File: ltcmd.dtx
+\def\ltcmdversion{v1.0a}
+\def\ltcmddate{2021/01/21}
+\edef\@latexrelease at catcode@null{\the\catcode`\^^@ }
+\catcode`\^^@=12
+\IncludeInRelease{2021/05/01}%
+                 {\NewDocumentCommand}{Document commands}%
+\ExplSyntaxOn
+\tl_new:N \l__cmd_arg_spec_tl
+\tl_new:N \l__cmd_args_tl
+\tl_new:N \l__cmd_args_i_tl
+\tl_new:N \l__cmd_args_ii_tl
+\int_new:N \l__cmd_current_arg_int
+\bool_new:N \l__cmd_defaults_bool
+\tl_new:N \l__cmd_defaults_tl
+\bool_new:N \l__cmd_environment_bool
+\str_new:N \l__cmd_environment_str
+\bool_new:N \l__cmd_expandable_bool
+\tl_new:N \l__cmd_expandable_aux_name_tl
+\tl_set:Nn \l__cmd_expandable_aux_name_tl
+  {
+    \l__cmd_function_tl \c_space_tl
+    ( arg~ \int_use:N \l__cmd_current_arg_int )
+  }
+\int_new:N \g__cmd_grabber_int
+\tl_new:N \l__cmd_fn_tl
+\tl_new:N \l__cmd_fn_code_tl
+\tl_new:N \l__cmd_function_tl
+\bool_new:N \l__cmd_grab_expandably_bool
+\bool_new:N \l__cmd_obey_spaces_bool
+\tl_new:N \l__cmd_last_delimiters_tl
+\bool_new:N \l__cmd_long_bool
+\int_new:N \l__cmd_m_args_int
+\bool_new:N \l__cmd_prefixed_bool
+\tl_new:N \l__cmd_process_all_tl
+\tl_new:N \l__cmd_process_one_tl
+\bool_new:N \l__cmd_process_some_bool
+\tl_new:N \l__cmd_saved_args_tl
+\tl_new:N \l__cmd_signature_tl
+\bool_new:N \l__cmd_some_obey_spaces_bool
+\bool_new:N \l__cmd_some_long_bool
+\bool_new:N \l__cmd_some_short_bool
+\prop_new:N \l__cmd_tmp_prop
+\tl_new:N \l__cmd_tmpa_tl
+\tl_new:N \l__cmd_tmpb_tl
+\cs_new_eq:NN \__cmd_tmp:w ?
+\msg_redirect_module:nnn { LaTeX / ltcmd } { info } { none }
+\cs_new_protected:Npn \__cmd_declare_cmd:Nnn
+  {
+    \bool_set_false:N \l__cmd_expandable_bool
+    \__cmd_declare_cmd_aux:Nnn
+  }
+\cs_new_protected:Npn \__cmd_declare_expandable_cmd:Nnn
+  {
+    \bool_set_true:N \l__cmd_expandable_bool
+    \__cmd_declare_cmd_aux:Nnn
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_aux:Nnn #1#2#3
+  {
+    \cs_if_exist:NTF #1
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+      {
+        \bool_lazy_or:nnT
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ code } }
+          { \cs_if_exist_p:c { \cs_to_str:N #1 ~ defaults } }
+          {
+            \__kernel_msg_warning:nnx { ltcmd } { unsupported-let }
+              { \token_to_str:N #1 }
+          }
+        \__kernel_msg_info:nnxx { ltcmd } { define-command }
+          { \token_to_str:N #1 } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l__cmd_environment_bool
+    \__cmd_declare_cmd_internal:Nnnn #1 {#2} {#3} { }
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_internal:Nnnn #1#2#3#4
+  {
+    \tl_set:Nx \l__cmd_function_tl { \cs_to_str:N #1 }
+    \tl_set:Nx \l__cmd_fn_tl
+      { \exp_not:c { \l__cmd_function_tl \c_space_tl } }
+    \__cmd_normalize_arg_spec:n {#2}
+    \exp_args:No \__cmd_prepare_signature:n \l__cmd_arg_spec_tl
+    \__cmd_declare_cmd_code:Nnn #1 {#2} {#3}
+    #4
+    \__cmd_break_point:n {#2}
+  }
+\cs_generate_variant:Nn \__cmd_declare_cmd_internal:Nnnn { cnx }
+\cs_new_eq:NN \__cmd_break_point:n \use_none:n
+\cs_new_protected:Npn \__cmd_declare_cmd_code:Nnn
+  {
+    \bool_if:NTF \l__cmd_grab_expandably_bool
+      { \__cmd_declare_cmd_code_expandable:Nnn }
+      { \__cmd_declare_cmd_code_aux:Nnn }
+   }
+\cs_new_protected:Npn \__cmd_declare_cmd_code_aux:Nnn #1#2#3
+  {
+    \cs_generate_from_arg_count:cNnn
+      { \l__cmd_function_tl \c_space_tl code }
+      \cs_set_protected:Npn \l__cmd_current_arg_int {#3}
+    \cs_set_protected_nopar:Npx #1
+      {
+        \bool_if:NTF \l__cmd_environment_bool
+          {
+            \__cmd_start_env:nnnnn { \exp_not:n {#2} }
+              { \l__cmd_environment_str }
+          }
+          {
+            \__cmd_start:nNNnnn { \exp_not:n {#2} }
+              \exp_not:c { \l__cmd_function_tl \c_space_tl }
+              \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+          }
+          { \exp_not:o \l__cmd_signature_tl }
+          {
+            \bool_if:NT \l__cmd_defaults_bool
+              { \exp_not:o \l__cmd_defaults_tl }
+          }
+          {
+            \bool_if:NT \l__cmd_process_some_bool
+              { \exp_not:o \l__cmd_process_all_tl }
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_declare_cmd_code_expandable:Nnn #1#2#3
+  {
+    \exp_args:Ncc \cs_generate_from_arg_count:NNnn
+      { \l__cmd_function_tl \c_space_tl code }
+      { cs_set \bool_if:NF \l__cmd_expandable_bool { _protected } :Npn }
+      \l__cmd_current_arg_int {#3}
+    \bool_if:NT \l__cmd_defaults_bool
+      {
+        \use:x
+          {
+            \cs_generate_from_arg_count:cNnn
+              { \l__cmd_function_tl \c_space_tl defaults }
+              \cs_set:Npn \l__cmd_current_arg_int
+              { \exp_not:o \l__cmd_defaults_tl }
+          }
+      }
+    \bool_if:NTF \l__cmd_expandable_bool
+      { \cs_set_nopar:Npx } { \cs_set_protected_nopar:Npx } #1
+      {
+        \exp_not:N \__cmd_start_expandable:nNNNNn
+          { \exp_not:n {#2} }
+          \exp_not:c { \l__cmd_function_tl \c_space_tl }
+          \exp_not:c
+            {
+              \l__cmd_function_tl \c_space_tl
+              \bool_if:NT \l__cmd_some_short_bool
+                { \bool_if:NT \l__cmd_some_long_bool { \c_space_tl } }
+            }
+          \exp_not:c { \l__cmd_function_tl \c_space_tl code }
+          \bool_if:NTF \l__cmd_defaults_bool
+            { \exp_not:c { \l__cmd_function_tl \c_space_tl defaults } }
+            { ? }
+          { \exp_not:o \l__cmd_signature_tl }
+      }
+    \bool_if:NTF \l__cmd_some_long_bool
+      {
+        \bool_if:NT \l__cmd_some_short_bool
+          {
+            \cs_set_nopar:cpx { \l__cmd_function_tl \c_space_tl \c_space_tl }
+              ##1##2 { ##1 {##2} }
+          }
+        \cs_set:cpx
+      }
+      { \cs_set_nopar:cpx }
+          { \l__cmd_function_tl \c_space_tl } ##1##2 { ##1 {##2} }
+  }
+\cs_new_protected:Npn \__cmd_declare_env:nnnn #1#2
+  {
+    \str_set:Nx \l__cmd_environment_str {#1}
+    \str_set:Nx \l__cmd_environment_str
+      { \tl_trim_spaces:o { \l__cmd_environment_str } }
+    \cs_if_exist:cTF { \l__cmd_environment_str }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { redefine-environment }
+          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
+      }
+      {
+        \__kernel_msg_info:nnxx { ltcmd } { define-environment }
+          { \l__cmd_environment_str } { \tl_to_str:n {#2} }
+      }
+    \bool_set_false:N \l__cmd_expandable_bool
+    \bool_set_true:N \l__cmd_environment_bool
+    \exp_args:NV \__cmd_declare_env_internal:nnnn
+      \l__cmd_environment_str {#2}
+  }
+\cs_new_protected:Npn \__cmd_declare_env_internal:nnnn #1#2#3#4
+  {
+    \__cmd_declare_cmd_internal:cnxn { environment~ #1 } {#2}
+      {
+        \cs_set_nopar:Npx \exp_not:c { environment~ #1 ~end~aux }
+          {
+            \exp_not:N \exp_not:N \exp_not:c { environment~ #1~end~aux~ }
+            \exp_not:n { \exp_not:o \l__cmd_args_tl }
+          }
+        \exp_not:n {#3}
+      }
+      {
+        \cs_set_nopar:cpx { environment~ #1 ~end }
+          { \exp_not:c { environment~ #1 ~end~aux } }
+        \cs_generate_from_arg_count:cNnn
+          { environment~ #1 ~end~aux~ } \cs_set:Npn
+          \l__cmd_current_arg_int {#4}
+        \cs_set_eq:cc {#1}       { environment~ #1 }
+        \cs_set_eq:cc { end #1 } { environment~ #1 ~end }
+      }
+  }
+\cs_new_protected:Npn \__cmd_start_env:nnnnn #1#2
+  {
+    \conditionally at traceoff
+    \group_align_safe_begin:
+    \str_set:Nn \l__cmd_environment_str {#2}
+    \bool_set_true:N \l__cmd_environment_bool
+    \__cmd_start_aux:ccnnnn
+      { environment~ \l__cmd_environment_str \c_space_tl }
+      { environment~ \l__cmd_environment_str \c_space_tl code }
+      {#1}
+  }
+\cs_new_protected:Npx \__cmd_start:nNNnnn #1#2#3
+  {
+    \exp_not:c { xparse~function~is~not~expandable }
+    \exp_not:N \conditionally at traceoff
+    \exp_not:N \group_align_safe_begin:
+    \exp_not:n { \bool_set_false:N \l__cmd_environment_bool }
+    \exp_not:N \__cmd_start_aux:NNnnnn
+    #2 #3 {#1}
+  }
+\cs_new_protected:Npn \__cmd_start_aux:NNnnnn #1#2#3#4#5#6
+  {
+    \tl_clear:N \l__cmd_args_tl
+    \tl_set:Nn \l__cmd_fn_tl {#1}
+    \tl_set:Nn \l__cmd_fn_code_tl {#2}
+    \tl_set:Nn \l__cmd_defaults_tl {#5}
+    \tl_set:Nn \l__cmd_process_all_tl {#6}
+    #4 \__cmd_run_code:
+  }
+\cs_generate_variant:Nn \__cmd_start_aux:NNnnnn { cc }
+\cs_new_protected:Npn \__cmd_run_code:
+  {
+    \tl_if_empty:NF \l__cmd_defaults_tl { \__cmd_defaults: }
+    \tl_if_empty:NF \l__cmd_process_all_tl { \__cmd_args_process: }
+    \group_align_safe_end:
+    \conditionally at traceon
+    \exp_after:wN \l__cmd_fn_code_tl \l__cmd_args_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults:
+  {
+    \__cmd_defaults_def:
+    \tl_set_eq:NN \l__cmd_args_i_tl \l__cmd_args_tl
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_aux: \__cmd_defaults_aux: \__cmd_defaults_aux:
+    \__cmd_defaults_error:w
+    \q_recursion_stop
+    \tl_set_eq:NN \l__cmd_args_tl \l__cmd_args_i_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults_aux:
+  {
+    \tl_set:Nx \l__cmd_args_ii_tl
+      { \exp_after:wN \__cmd_tmp:w \l__cmd_args_i_tl }
+    \tl_if_eq:NNT \l__cmd_args_ii_tl \l__cmd_args_i_tl
+      { \use_none_delimit_by_q_recursion_stop:w }
+    \tl_set_eq:NN \l__cmd_args_i_tl \l__cmd_args_ii_tl
+  }
+\cs_new_protected:Npn \__cmd_defaults_error:w \q_recursion_stop
+  {
+    \__kernel_msg_error:nnx { ltcmd } { loop-in-defaults }
+      { \__cmd_environment_or_command: }
+  }
+\cs_new_protected:Npn \__cmd_defaults_def:
+  {
+    \tl_clear:N \l__cmd_tmpa_tl
+    \int_zero:N \l__cmd_current_arg_int
+    \__cmd_tl_mapthread_function:NNN \l__cmd_args_tl \l__cmd_defaults_tl
+      \__cmd_defaults_def:nn
+    \cs_generate_from_arg_count:NNVo \__cmd_tmp:w \cs_set:Npn
+      \l__cmd_current_arg_int \l__cmd_tmpa_tl
+  }
+\cs_generate_variant:Nn \cs_generate_from_arg_count:NNnn { NNVo }
+\cs_new_protected:Npn \__cmd_defaults_def:nn
+  {
+    \int_incr:N \l__cmd_current_arg_int
+    \exp_args:NV \__cmd_defaults_def:nnn \l__cmd_current_arg_int
+  }
+\cs_new_protected:Npn \__cmd_defaults_def:nnn #1#2#3
+  {
+    \tl_put_right:Nx \l__cmd_tmpa_tl
+      {
+        {
+          \exp_not:N \exp_not:n
+            {
+              \tl_if_novalue:nTF {#2}
+                { \exp_not:o {#3} }
+                { \exp_not:n { ## #1 } }
+            }
+        }
+      }
+  }
+\cs_new_protected:Npn \__cmd_args_process:
+  {
+    \tl_clear:N \l__cmd_args_ii_tl
+    \__cmd_tl_mapthread_function:NNN
+      \l__cmd_args_tl
+      \l__cmd_process_all_tl
+      \__cmd_args_process_loop:nn
+    \tl_set_eq:NN \l__cmd_args_tl \l__cmd_args_ii_tl
+  }
+\cs_new_protected:Npn \__cmd_args_process_loop:nn #1#2
+  {
+    \tl_set:Nn \ProcessedArgument {#1}
+    \tl_if_novalue:nF {#1}
+      { \tl_map_function:nN {#2} \__cmd_args_process_aux:n }
+    \tl_put_right:No \l__cmd_args_ii_tl
+      { \exp_after:wN { \ProcessedArgument } }
+  }
+\cs_new_protected:Npn \__cmd_args_process_aux:n #1
+  {
+    \cs_generate_from_arg_count:NNnn \__cmd_tmp:w \cs_set:Npn
+      { \tl_count:N \l__cmd_args_tl } {#1}
+    \exp_args:NNNo \exp_after:wN \__cmd_tmp:w \l__cmd_args_tl
+      { \ProcessedArgument }
+  }
+\cs_new:Npn \__cmd_start_expandable:nNNNNn #1#2#3#4#5#6
+  {
+    \group_align_safe_begin:
+    #6 \__cmd_end_expandable:NNw #5 #4 \q__cmd #2#3
+  }
+\cs_new:Npn \__cmd_end_expandable:NNw #1#2
+  { \__cmd_end_expandable_aux:w #1#2 \prg_do_nothing: }
+\cs_new:Npn \__cmd_end_expandable_aux:w #1#2#3 \q__cmd
+  { \exp_args:No \__cmd_end_expandable_aux:nNNNN {#3} #1 #2 }
+\cs_new:Npn \__cmd_end_expandable_aux:nNNNN #1#2#3#4#5
+  {
+    \token_if_eq_charcode:NNT ? #2 { \exp_after:wN \use_iv:nnnn }
+    \__cmd_end_expandable_defaults:nnnNNn {#1} { } {#1} #2#3
+      { } { } { } { } { } { } { } { } { } { }
+      {
+        \__kernel_msg_expandable_error:nnf
+          { ltcmd } { loop-in-defaults }
+          { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N #4 } }
+        \use_iv:nnnn
+      }
+    \q_stop
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nnnNNn #1#2#3#4#5#6
+  {
+    #6
+    \str_if_eq:nnTF {#1} {#2}
+      { \use_i_delimit_by_q_stop:nw { \group_align_safe_end: #5 #1 } }
+      {
+        \exp_args:No \__cmd_tl_mapthread_function:nnN
+          { #4 #1 } {#3}
+          \__cmd_end_expandable_defaults:nnw
+        \__cmd_end_expandable_defaults:nnnNNn { } {#1} {#3} #4 #5
+      }
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nnw #1#2
+  {
+    \tl_if_novalue:nTF {#2}
+      { \exp_args:No \__cmd_end_expandable_defaults:nw {#1} }
+      { \__cmd_end_expandable_defaults:nw {#2} }
+  }
+\cs_new:Npn \__cmd_end_expandable_defaults:nw
+    #1#2 \__cmd_end_expandable_defaults:nnnNNn #3
+  { #2 \__cmd_end_expandable_defaults:nnnNNn { #3 {#1} } }
+\cs_new_protected:Npn \__cmd_normalize_arg_spec:n #1
+  {
+    \int_zero:N \l__cmd_current_arg_int
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \tl_clear:N \l__cmd_arg_spec_tl
+    \bool_set_true:N \l__cmd_grab_expandably_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_some_obey_spaces_bool
+    \bool_set_false:N \l__cmd_some_long_bool
+    \bool_set_false:N \l__cmd_some_short_bool
+    \__cmd_normalize_arg_spec_loop:n #1
+      \q_recursion_tail \q_recursion_tail \q_recursion_tail \q_recursion_stop
+    \int_compare:nNnT \l__cmd_current_arg_int > 9
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { too-many-arguments }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \tl_if_empty:NF \l__cmd_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { expandable-ending-optional }
+              { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+            \__cmd_bad_def:wn
+          }
+      }
+    \bool_if:NT \l__cmd_expandable_bool
+      { \bool_set_true:N \l__cmd_grab_expandably_bool }
+    \bool_if:NT \l__cmd_environment_bool
+      { \bool_set_false:N \l__cmd_grab_expandably_bool }
+  }
+\cs_new_protected:Npn \__cmd_normalize_arg_spec_loop:n #1
+  {
+    \quark_if_recursion_tail_stop:n {#1}
+    \int_incr:N \l__cmd_current_arg_int
+    \cs_if_exist_use:cF { __cmd_normalize_type_ \tl_to_str:n {#1} :w }
+      {
+        \bool_lazy_any:nTF
+          {
+            { \str_if_eq_p:nn {#1} { G } }
+            { \str_if_eq_p:nn {#1} { g } }
+            { \str_if_eq_p:nn {#1} { l } }
+            { \str_if_eq_p:nn {#1} { u } }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { xparse-argument-type }
+              { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { unknown-argument-type }
+              { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new_protected:Npn \__cmd_normalize_type_d:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_D:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_e:w ##1
+      {
+        \quark_if_recursion_tail_stop_do:nn {##1} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_E:w {##1} { }
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_o:w
+      { \__cmd_normalize_type_D:w [ ] {#1} }
+    \cs_new_protected:Npn \__cmd_normalize_type_O:w
+      { \__cmd_normalize_type_D:w [ ] }
+    \cs_new_protected:Npn \__cmd_normalize_type_r:w ##1##2
+      {
+        \quark_if_recursion_tail_stop_do:nn {##2} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_type_R:w {##1} {##2} {#1}
+      }
+    \cs_new_protected:Npn \__cmd_normalize_type_s:w
+      { \__cmd_normalize_type_t:w * }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new_protected:cpn { __cmd_normalize_type_>:w } #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { processor-in-expandable }
+          { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \tl_put_right:Nx \l__cmd_arg_spec_tl { > { \tl_trim_spaces:n {#1} } }
+    \int_decr:N \l__cmd_current_arg_int
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_normalize_arg_spec_loop:n {#2}
+  }
+\cs_new_protected:cpn { __cmd_normalize_type_+:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_long_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \__cmd_environment_or_command: } { + }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_true:N \l__cmd_long_bool
+    \int_decr:N \l__cmd_current_arg_int
+    \__cmd_normalize_arg_spec_loop:n {#1}
+  }
+\cs_new_protected:cpn { __cmd_normalize_type_!:w } #1
+  {
+    \quark_if_recursion_tail_stop_do:nn {#1} { \__cmd_bad_arg_spec:wn }
+    \bool_if:NT \l__cmd_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { two-markers }
+          { \__cmd_environment_or_command: } { ! }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_true:N \l__cmd_obey_spaces_bool
+    \bool_set_true:N \l__cmd_some_obey_spaces_bool
+    \int_decr:N \l__cmd_current_arg_int
+    \__cmd_normalize_arg_spec_loop:n {#1}
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_D:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \__cmd_single_token_check:n {#2}
+    \__cmd_add_arg_spec:n { D #1 #2 {#3} }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_E:w #1#2
+  {
+    \quark_if_recursion_tail_stop_do:nn {#2} { \__cmd_bad_arg_spec:wn }
+    \tl_if_blank:nT {#1} { \__cmd_bad_arg_spec:wn }
+    \tl_map_function:nN {#1} \__cmd_single_token_check:n
+    \tl_map_function:nN {#1} \__cmd_allowed_token_check:N
+    \__cmd_normalize_E_unique_check:w #1 \q_nil \q_stop
+    \int_compare:nNnT { \tl_count:n {#2} } > { \tl_count:n {#1} }
+      { \__cmd_bad_arg_spec:wn }
+    \__cmd_add_arg_spec:n { E {#1} {#2} }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \int_add:Nn \l__cmd_current_arg_int { \tl_count:n {#1} - 1 }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_E_unique_check:w #1#2 \q_stop
+  {
+    \quark_if_nil:NF #1
+      {
+        \tl_if_in:nnT {#2} {#1} { \__cmd_bad_arg_spec:wn }
+        \__cmd_normalize_E_unique_check:w #2 \q_stop
+      }
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_t:w #1
+  {
+    \quark_if_recursion_tail_stop_do:Nn #1 { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \tl_put_right:Nx \l__cmd_arg_spec_tl
+      {
+        \bool_if:NT \l__cmd_obey_spaces_bool { ! }
+        t \exp_not:n {#1}
+      }
+    \tl_put_right:Nn \l__cmd_last_delimiters_tl {#1}
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \bool_set_false:N \l__cmd_long_bool
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_m:w
+  {
+    \__cmd_delimiter_check:nnn { } { m } { \iow_char:N \{ }
+    \__cmd_add_arg_spec_mandatory:n { m }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_R:w #1#2#3
+  {
+    \quark_if_recursion_tail_stop_do:nn {#3} { \__cmd_bad_arg_spec:wn }
+    \__cmd_single_token_check:n {#1} \__cmd_allowed_token_check:N #1
+    \__cmd_single_token_check:n {#2}
+    \__cmd_delimiter_check:nnn {#1} { R/r } { \tl_to_str:n {#1} }
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+    \__cmd_add_arg_spec_mandatory:n { R #1 #2 {#3} }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_v:w
+  {
+    \__cmd_normalize_check_gv:N v
+    \__cmd_add_arg_spec_mandatory:n { v }
+    \__cmd_normalize_arg_spec_loop:n
+  }
+\cs_new_protected:Npn \__cmd_normalize_type_b:w #1
+  {
+    \bool_if:NF \l__cmd_environment_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-command-arg }
+          { \__cmd_environment_or_command: } { b }
+        \__cmd_bad_def:wn
+      }
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \__cmd_add_arg_spec:n { b }
+    \quark_if_recursion_tail_stop:n {#1}
+    \__kernel_msg_error:nnxx { ltcmd } { arg-after-body }
+      { \__cmd_environment_or_command: }
+      { \tl_to_str:n {#1} }
+    \__cmd_bad_def:wn
+  }
+\cs_new_protected:Npn \__cmd_single_token_check:n #1
+  {
+    \tl_trim_spaces_apply:nN {#1} \tl_if_single_token:nF
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-single-token }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_new_protected:Npn \__cmd_allowed_token_check:N #1
+  {
+    \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+        { \use:n }
+        {
+          \token_if_eq_meaning:NNTF #1 \c_group_end_token
+            { \use:n }
+            { \use_none:n }
+        }
+      {
+        \__kernel_msg_error:nnxxx
+          { ltcmd } { forbidden-implicit-group-token }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+          {
+            \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+              { begin } { end }
+          }
+        \__cmd_bad_def:wn
+      }
+  }
+\cs_new_protected:Npn \__cmd_normalize_check_gv:N #1
+  {
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \__kernel_msg_error:nnxx
+          { ltcmd } { invalid-expandable-argument-type }
+          { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \bool_set_false:N \l__cmd_grab_expandably_bool
+  }
+\cs_new_protected:Npn \__cmd_normalize_check_lu:N #1
+  {
+    \bool_if:NT \l__cmd_expandable_bool
+      {
+        \tl_if_empty:NF \l__cmd_last_delimiters_tl
+          {
+            \__kernel_msg_error:nnxx
+              { ltcmd } { invalid-after-optional-expandably }
+              { \iow_char:N \\ \l__cmd_function_tl } { \tl_to_str:n {#1} }
+            \__cmd_bad_def:wn
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_delimiter_check:nnn #1#2#3
+  {
+    \tl_map_inline:Nn \l__cmd_last_delimiters_tl
+      {
+        \tl_if_eq:nnT {##1} {#1}
+          {
+            \__kernel_msg_warning:nnxx { ltcmd } { optional-mandatory }
+              {#2} {#3}
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_bad_arg_spec:wn #1 \__cmd_break_point:n #2
+  {
+    \__kernel_msg_error:nnxx { ltcmd } { bad-arg-spec }
+      { \__cmd_environment_or_command: } { \tl_to_str:n {#2} }
+  }
+\cs_new_protected:Npn \__cmd_bad_def:wn #1 \__cmd_break_point:n #2 { }
+\cs_new_protected:Npn \__cmd_add_arg_spec:n #1
+  {
+    \bool_lazy_and:nnT
+      { ! \l__cmd_long_bool }
+      { \l__cmd_some_long_bool }
+      {
+        \bool_if:NT \l__cmd_expandable_bool
+          {
+            \__kernel_msg_error:nnx { ltcmd } { inconsistent-long }
+              { \iow_char:N \\ \l__cmd_function_tl }
+            \__cmd_bad_def:wn
+          }
+        \bool_set_false:N \l__cmd_grab_expandably_bool
+      }
+    \bool_if:NTF \l__cmd_long_bool
+      { \bool_set_true:N \l__cmd_some_long_bool }
+      { \bool_set_true:N \l__cmd_some_short_bool }
+    \tl_put_right:Nx \l__cmd_arg_spec_tl
+      {
+        \bool_if:NT \l__cmd_long_bool { + }
+        \bool_if:NT \l__cmd_obey_spaces_bool { ! }
+        \exp_not:n {#1}
+      }
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+  }
+\cs_new_protected:Npn \__cmd_add_arg_spec_mandatory:n #1
+  {
+    \bool_if:NT \l__cmd_some_obey_spaces_bool
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { non-trailing-obey-spaces }
+          { \__cmd_environment_or_command: } { \tl_to_str:n {#1} }
+        \__cmd_bad_def:wn
+      }
+    \tl_clear:N \l__cmd_last_delimiters_tl
+    \__cmd_add_arg_spec:n {#1}
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature:n #1
+  {
+    \int_zero:N \l__cmd_current_arg_int
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \int_zero:N \l__cmd_m_args_int
+    \bool_set_false:N \l__cmd_defaults_bool
+    \tl_clear:N \l__cmd_defaults_tl
+    \tl_clear:N \l__cmd_process_all_tl
+    \tl_clear:N \l__cmd_process_one_tl
+    \bool_set_false:N \l__cmd_process_some_bool
+    \tl_clear:N \l__cmd_signature_tl
+    \__cmd_prepare_signature:N #1 \q_recursion_tail \q_recursion_stop
+    \bool_if:NF \l__cmd_expandable_bool { \__cmd_flush_m_args: }
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature:N
+  {
+    \bool_set_false:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:Npn \__cmd_prepare_signature_bypass:N #1
+  {
+    \quark_if_recursion_tail_stop:N #1
+    \use:c
+      {
+         __cmd_add
+         \bool_if:NT \l__cmd_grab_expandably_bool { _expandable }
+         _type_  \token_to_str:N #1 :w
+      }
+  }
+\cs_new_protected:cpn { __cmd_add_type_+:w }
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_long_bool
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:cpn { __cmd_add_type_!:w }
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_obey_spaces_bool
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:cpn { __cmd_add_type_>:w } #1
+  {
+    \__cmd_flush_m_args:
+    \bool_set_true:N \l__cmd_prefixed_bool
+    \bool_set_true:N \l__cmd_process_some_bool
+    \tl_put_left:Nn \l__cmd_process_one_tl { {#1} }
+    \__cmd_prepare_signature_bypass:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_b:w
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:
+    \__cmd_add_grabber:N b
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_D:w #1#2#3
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:n {#3}
+    \__cmd_add_grabber:N D
+    \tl_put_right:Nn \l__cmd_signature_tl { #1 #2 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_E:w #1#2
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default_E:nn {#1} {#2}
+    \__cmd_add_grabber:N E
+    \tl_put_right:Nn \l__cmd_signature_tl { {#1} }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_m:w
+  {
+    \__cmd_add_default:
+    \bool_if:NTF \l__cmd_prefixed_bool
+      { \__cmd_add_grabber:N m }
+      { \int_incr:N \l__cmd_m_args_int }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_R:w #1#2#3
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:n {#3}
+    \__cmd_add_grabber:N R
+    \tl_put_right:Nn \l__cmd_signature_tl { #1 #2 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_t:w #1
+  {
+    \__cmd_flush_m_args:
+    \__cmd_add_default:
+    \__cmd_add_grabber:N t
+    \tl_put_right:Nn \l__cmd_signature_tl {#1}
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_type_v:w
+  {
+    \__cmd_flush_m_args:
+    \exp_args:No \__cmd_add_default:n \c_novalue_tl
+    \__cmd_add_grabber:N v
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_flush_m_args:
+  {
+    \int_compare:nNnT \l__cmd_m_args_int > 0
+      {
+        \tl_put_right:Nx \l__cmd_signature_tl
+          { \exp_not:c { __cmd_grab_m_ \int_use:N \l__cmd_m_args_int :w } }
+        \tl_put_right:Nx \l__cmd_process_all_tl
+          { \prg_replicate:nn { \l__cmd_m_args_int } { { } } }
+      }
+    \int_zero:N \l__cmd_m_args_int
+  }
+\cs_new_protected:Npn \__cmd_add_grabber:N #1
+  {
+    \tl_put_right:Nx \l__cmd_signature_tl
+      {
+        \exp_not:c
+          {
+            __cmd_grab_ #1
+            \bool_if:NT \l__cmd_long_bool { _long }
+            \bool_if:NT \l__cmd_obey_spaces_bool { _obey_spaces }
+            :w
+          }
+      }
+    \bool_set_false:N \l__cmd_long_bool
+    \bool_set_false:N \l__cmd_obey_spaces_bool
+    \tl_put_right:Nx \l__cmd_process_all_tl
+      { { \exp_not:o \l__cmd_process_one_tl } }
+    \tl_clear:N \l__cmd_process_one_tl
+  }
+\cs_new_protected:Npn \__cmd_add_default:n #1
+  {
+    \tl_if_novalue:nTF {#1}
+      { \__cmd_add_default: }
+      {
+        \int_incr:N \l__cmd_current_arg_int
+        \bool_set_true:N \l__cmd_defaults_bool
+        \tl_put_right:Nn \l__cmd_defaults_tl { { \prg_do_nothing: #1 } }
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_default:
+  {
+    \int_incr:N \l__cmd_current_arg_int
+    \tl_put_right:Nn \l__cmd_defaults_tl { \c_novalue_tl }
+  }
+\cs_new_protected:Npn \__cmd_add_default_E:nn #1#2
+  {
+    \tl_map_function:nN {#2} \__cmd_add_default:n
+    \prg_replicate:nn
+      { \tl_count:n {#1} - \tl_count:n {#2} }
+      { \__cmd_add_default: }
+  }
+\cs_new_protected:cpn { __cmd_add_expandable_type_+:w }
+  {
+    \bool_set_true:N \l__cmd_long_bool
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D:w
+  { \__cmd_add_expandable_type_D_aux:NNNn D }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NNNn #1#2#3#4
+  {
+    \__cmd_add_default:n {#4}
+    \tl_if_eq:nnTF {#2} {#3}
+      { \__cmd_add_expandable_type_D_aux:NN #1 #2 }
+      { \__cmd_add_expandable_type_D_aux:NNN #1 #2 #3 }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NNN #1#2#3
+  {
+    \bool_if:NTF \l__cmd_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l__cmd_expandable_aux_name_tl } ##1 ##2 #2 ##3 \q__cmd ##4 #3
+      { ##1 {##2} {##3} {##4} }
+    \__cmd_add_expandable_grabber:nn {#1}
+      {
+        \exp_not:c  { \l__cmd_expandable_aux_name_tl }
+        \exp_not:n { #2 #3 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_D_aux:NN #1#2
+  {
+    \bool_if:NTF \l__cmd_long_bool
+      { \cs_set:cpx }
+      { \cs_set_nopar:cpx }
+      { \l__cmd_expandable_aux_name_tl } ##1 #2 ##2 #2
+      { ##1 {##2} }
+    \__cmd_add_expandable_grabber:nn { #1_alt }
+      {
+        \exp_not:c  { \l__cmd_expandable_aux_name_tl }
+        \exp_not:n {#2}
+      }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_E:w #1#2
+  {
+    \__cmd_add_default_E:nn {#1} {#2}
+    \tl_clear:N \l__cmd_tmpb_tl
+    \tl_map_function:nN {#1} \__cmd_add_expandable_type_E_aux:n
+    \__cmd_add_expandable_grabber:nn
+      { E \bool_if:NT \l__cmd_long_bool { _long } }
+      {
+        { \exp_not:o \l__cmd_tmpb_tl }
+        {
+          \prg_replicate:nn { \tl_count:n {#1} }
+            { { \c_novalue_tl } }
+        }
+      }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_E_aux:n #1
+  {
+    \__cmd_get_grabber:NN #1 \l__cmd_tmpa_tl
+    \tl_put_right:Nx \l__cmd_tmpb_tl
+      { \exp_not:o \l__cmd_tmpa_tl \exp_not:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_m:w
+  {
+    \__cmd_add_default:
+    \__cmd_add_expandable_grabber:nn
+      { m \bool_if:NT \l__cmd_long_bool { _long } } { }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_type_R:w
+  { \__cmd_add_expandable_type_D_aux:NNNn R }
+\cs_new_protected:Npn \__cmd_add_expandable_type_t:w #1
+  {
+    \__cmd_add_default:
+    \__cmd_get_grabber:NN #1 \l__cmd_tmpa_tl
+    \__cmd_add_expandable_grabber:nn { t }
+      {
+        \exp_not:o \l__cmd_tmpa_tl
+        \exp_not:N #1
+      }
+    \__cmd_prepare_signature:N
+  }
+\cs_new_protected:Npn \__cmd_add_expandable_grabber:nn #1#2
+  {
+    \tl_put_right:Nx \l__cmd_signature_tl
+      { \exp_not:c { __cmd_expandable_grab_ #1 :w } #2 }
+  }
+\cs_new_protected:Npn \__cmd_get_grabber:NN #1#2
+  {
+    \cs_set:Npn \__cmd_tmp:w ##1 #1 {##1}
+    \exp_args:Nc \__cmd_get_grabber_auxi:NN
+      { __cmd_grabber_ \token_to_str:N #1 :w } #2
+  }
+\cs_new_protected:Npn \__cmd_get_grabber_auxi:NN #1#2
+  {
+    \cs_if_eq:NNTF \__cmd_tmp:w #1
+      { \tl_set:Nn #2 {#1} }
+      {
+        \cs_if_exist:NTF #1
+          {
+            \int_gincr:N \g__cmd_grabber_int
+            \exp_args:Nc \__cmd_get_grabber_auxi:NN
+              {
+                __cmd_grabber_
+                - \int_use:N \g__cmd_grabber_int :w
+              }
+              #2
+          }
+          { \__cmd_get_grabber_auxii:NN #1 #2 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_get_grabber_auxii:NN #1#2
+  {
+    \cs_set_eq:NN #1 \__cmd_tmp:w
+    \tl_set:Nn #2 {#1}
+  }
+\cs_new_protected:Npn \__cmd_grab_b:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected_nopar:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \__cmd_grab_b_long:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \tl_trim_spaces:n }
+\cs_new_protected:Npn \__cmd_grab_b_obey_spaces:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected_nopar:Npn \exp_not:n }
+\cs_new_protected:Npn \__cmd_grab_b_long_obey_spaces:w
+  { \__cmd_grab_b_aux:NNw \cs_set_protected:Npn \exp_not:n }
+\cs_new_protected:Npn \__cmd_grab_b_aux:NNw #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnN \begin \end {#3} #1
+    \tl_put_left:Nn \l__cmd_signature_tl { \__cmd_grab_b_end:Nw #2 }
+    \tl_set_eq:NN \l__cmd_saved_args_tl \l__cmd_args_tl
+    \tl_clear:N \l__cmd_args_tl
+    \exp_args:Nc \l__cmd_fn_tl { begin ~ }
+  }
+\cs_new_protected:Npn \__cmd_grab_b_end:Nw #1#2 \__cmd_run_code:
+  {
+    \tl_set:Nx \l__cmd_args_tl
+      {
+        \exp_not:V \l__cmd_saved_args_tl
+        { \exp_after:wN #1 \l__cmd_args_tl }
+      }
+    #2
+    \__cmd_run_code:
+    \end
+  }
+\cs_new_protected:Npn \__cmd_grab_D:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_long:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_obey_spaces:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected_nopar:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_long_obey_spaces:w #1#2#3 \__cmd_run_code:
+  {
+    \__cmd_grab_D_aux:NNnNN #1 #2 {#3} \cs_set_protected:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_D_aux:NNnNN #1#2#3#4#5
+  {
+    \__cmd_grab_D_aux:NNnN #1#2 {#3} #4
+    #5 #1
+      { \__cmd_grab_D_call:Nw #1 }
+      { \__cmd_add_arg:o \c_novalue_tl }
+  }
+\cs_new_protected:Npn \__cmd_grab_D_aux:NNnN #1#2#3#4
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#3}
+    \exp_after:wN #4 \l__cmd_fn_tl ##1 #2
+      {
+        \tl_if_in:nnTF {##1} {#1}
+          { \__cmd_grab_D_nested:NNnN #1 #2 {##1} #4 }
+          {
+            \tl_if_blank:oTF { \use_none:n ##1 }
+              { \__cmd_add_arg:o { \use_none:n ##1 } }
+              {
+                \str_if_eq:eeTF
+                  { \exp_not:o { \use_none:n ##1 } }
+                  { { \exp_not:o { \use_ii:nnn ##1 \q_nil } } }
+                  { \__cmd_add_arg:o { \use_ii:nn ##1 } }
+                  { \__cmd_add_arg:o { \use_none:n ##1 } }
+              }
+          }
+      }
+  }
+\tl_new:N \l__cmd_nesting_a_tl
+\tl_new:N \l__cmd_nesting_b_tl
+\quark_new:N \q__cmd
+\cs_new_protected:Npn \__cmd_grab_D_nested:NNnN #1#2#3#4
+  {
+    \tl_clear:N \l__cmd_nesting_a_tl
+    \tl_clear:N \l__cmd_nesting_b_tl
+    \exp_after:wN #4 \l__cmd_fn_tl ##1 #1 ##2 \q__cmd ##3 #2
+      {
+        \tl_put_right:No \l__cmd_nesting_a_tl { \use_none:n ##1 #1 }
+        \tl_put_right:No \l__cmd_nesting_b_tl { \use_i:nn #2 ##3 }
+        \tl_if_in:nnTF {##2} {#1}
+          {
+            \l__cmd_fn_tl
+              \q_nil ##2 \q__cmd \ERROR
+          }
+          {
+            \tl_put_right:Nx \l__cmd_nesting_a_tl
+              { \__cmd_grab_D_nested:w \q_nil ##2 \q_stop }
+            \tl_if_in:NnTF \l__cmd_nesting_b_tl {#1}
+              {
+                \tl_set_eq:NN \l__cmd_tmpa_tl \l__cmd_nesting_b_tl
+                \tl_clear:N \l__cmd_nesting_b_tl
+                \exp_after:wN \l__cmd_fn_tl \exp_after:wN
+                  \q_nil \l__cmd_tmpa_tl \q_nil \q__cmd \ERROR
+              }
+              {
+                \tl_put_right:No \l__cmd_nesting_a_tl
+                  \l__cmd_nesting_b_tl
+                \__cmd_add_arg:V \l__cmd_nesting_a_tl
+              }
+          }
+      }
+    \l__cmd_fn_tl #3 \q_nil \q__cmd \ERROR
+  }
+\cs_new:Npn \__cmd_grab_D_nested:w #1 \q_nil \q_stop
+  { \exp_not:o { \use_none:n #1 } }
+\cs_new_protected_nopar:Npn \__cmd_grab_D_call:Nw #1
+  {
+    \token_if_eq_catcode:NNTF + #1
+      {
+        \exp_after:wN \exp_after:wN \exp_after:wN
+          \l__cmd_fn_tl \char_generate:nn { `#1 } { 11 }
+      }
+      {
+        \__cmd_token_if_cs:NTF #1
+          {
+            \exp_after:wN \l__cmd_fn_tl
+            \cs:w \cs_to_str:N #1 ~ \cs_end:
+          }
+          {
+            \exp_after:wN \l__cmd_fn_tl
+            \token_to_str:N #1
+          }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_E:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_long:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \__cmd_peek_nonspace_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_obey_spaces:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected_nopar:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E_long_obey_spaces:w #1#2 \__cmd_run_code:
+  {
+    \__cmd_grab_E:nnNN {#1} {#2}
+      \cs_set_protected:Npn
+      \__cmd_peek_meaning_remove:NTF
+  }
+\cs_new_protected:Npn \__cmd_grab_E:nnNN #1#2#3#4
+  {
+    \exp_after:wN #3 \l__cmd_fn_tl ##1##2##3
+      {
+        \prop_put:Nnn \l__cmd_tmp_prop {##1} {##3}
+        \__cmd_grab_E_loop:NnN #4 { } ##2 \q_recursion_stop
+      }
+    \prop_clear:N \l__cmd_tmp_prop
+    \tl_set:Nn \l__cmd_signature_tl {#2}
+    \cs_set_protected:Npn \__cmd_grab_E_finalise:
+      {
+        \tl_map_inline:nn {#1}
+          {
+            \prop_get:NnNF \l__cmd_tmp_prop {####1} \l__cmd_tmpb_tl
+              { \tl_set_eq:NN \l__cmd_tmpb_tl \c_novalue_tl }
+            \tl_put_right:Nx \l__cmd_args_tl
+              { { \exp_not:V \l__cmd_tmpb_tl } }
+          }
+        \l__cmd_signature_tl \__cmd_run_code:
+      }
+    \__cmd_grab_E_loop:NnN #4 { } #1 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new_protected:Npn \__cmd_grab_E_loop:NnN #1#2#3#4 \q_recursion_stop
+  {
+    \cs_if_eq:NNTF #3 \q_recursion_tail
+      { \__cmd_grab_E_finalise: }
+      {
+        #1 #3
+          { \l__cmd_fn_tl #3 {#2#4} }
+          { \__cmd_grab_E_loop:NnN #1 {#2#3} #4 \q_recursion_stop }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_E_finalise: { }
+\cs_new_protected:Npn \__cmd_grab_m:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_protected_nopar:Npn \l__cmd_fn_tl ##1
+      { \__cmd_add_arg:n {##1} }
+    \l__cmd_fn_tl
+  }
+\cs_new_protected:Npn \__cmd_grab_m_long:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_protected:Npn \l__cmd_fn_tl ##1
+      { \__cmd_add_arg:n {##1} }
+    \l__cmd_fn_tl
+  }
+\cs_new_protected_nopar:Npn \__cmd_grab_m_aux:Nnnnnnnnn #1#2#3#4#5#6#7#8#9
+  {
+    \tl_put_right:No \l__cmd_args_tl
+      { #1 {#2} {#3} {#4} {#5} {#6} {#7} {#8} {#9} }
+    \l__cmd_signature_tl \__cmd_run_code:
+  }
+\cs_new_protected:cpn { __cmd_grab_m_1:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnnnn { } { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_2:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnnn { } { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_3:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnnn { } { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_4:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnnn { } { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_5:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nnn { } { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_6:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:nn { } { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_7:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \use_none:n { }
+  }
+\cs_new_protected:cpn { __cmd_grab_m_8:w } #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \exp_after:wN \cs_set_eq:NN \l__cmd_fn_tl \__cmd_grab_m_aux:Nnnnnnnnn
+    \l__cmd_fn_tl \prg_do_nothing:
+  }
+\cs_new_protected:cpx { __cmd_grab_m_9:w }
+  {
+    \exp_not:c { __cmd_grab_m_5:w }
+    \exp_not:c { __cmd_grab_m_4:w }
+  }
+\cs_new_protected:Npn \__cmd_grab_R:w #1#2#3 \__cmd_run_code:
+  { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected_nopar:Npn }
+\cs_new_protected:Npn \__cmd_grab_R_long:w #1#2#3 \__cmd_run_code:
+  { \__cmd_grab_R_aux:NNnN #1 #2 {#3} \cs_set_protected:Npn }
+\cs_new_protected:Npn \__cmd_grab_R_aux:NNnN #1#2#3#4
+  {
+    \__cmd_grab_D_aux:NNnN #1 #2 {#3} #4
+    \__cmd_peek_nonspace_remove:NTF #1
+      { \__cmd_grab_D_call:Nw #1 }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { missing-required }
+          { \__cmd_environment_or_command: }
+          { \token_to_str:N #1 }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_t:w
+  { \__cmd_grab_t_aux:NNw \__cmd_peek_nonspace_remove:NTF }
+\cs_new_protected:Npn \__cmd_grab_t_obey_spaces:w
+  { \__cmd_grab_t_aux:NNw \__cmd_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \__cmd_grab_t_aux:NNw #1#2#3 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#3}
+    \exp_after:wN \cs_set_protected:Npn \l__cmd_fn_tl
+      {
+        #1 #2
+          { \__cmd_add_arg:n { \BooleanTrue } }
+          { \__cmd_add_arg:n { \BooleanFalse } }
+      }
+    \l__cmd_fn_tl
+  }
+\tl_new:N \l__cmd_v_arg_tl
+\cs_new_protected:Npn \__cmd_grab_v:w
+  {
+    \bool_set_false:N \l__cmd_long_bool
+    \__cmd_grab_v_aux:w
+  }
+\cs_new_protected:Npn \__cmd_grab_v_long:w
+  {
+    \bool_set_true:N \l__cmd_long_bool
+    \__cmd_grab_v_aux:w
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux:w #1 \__cmd_run_code:
+  {
+    \tl_set:Nn \l__cmd_signature_tl {#1}
+    \group_begin:
+      \tex_escapechar:D = 92 \scan_stop:
+      \tl_clear:N \l__cmd_v_arg_tl
+      \peek_remove_spaces:n
+        {
+          \peek_meaning_remove:NTF \c_group_begin_token
+            {
+              \group_align_safe_end:
+              \__cmd_grab_v_bgroup:
+            }
+            {
+              \peek_N_type:TF
+                { \__cmd_grab_v_aux_test:N }
+                { \__cmd_grab_v_aux_abort:n { } }
+            }
+        }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_group_end:
+  {
+        \exp_args:NNNo
+      \group_end:
+    \tl_set:Nn \l__cmd_v_arg_tl { \l__cmd_v_arg_tl }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_test:N #1
+  {
+    \__cmd_grab_v_token_if_char:NTF #1
+      {
+        \__cmd_grab_v_aux_put:N #1
+        \__cmd_grab_v_aux_catcodes:
+        \__cmd_grab_v_aux_loop:N #1
+      }
+      { \__cmd_grab_v_aux_abort:n {#1} #1 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop:N #1
+  {
+    \peek_N_type:TF
+      { \__cmd_grab_v_aux_loop:NN #1 }
+      { \__cmd_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop:NN #1#2
+  {
+    \__cmd_grab_v_token_if_char:NTF #2
+      {
+        \token_if_eq_charcode:NNTF #1 #2
+          { \__cmd_grab_v_aux_loop_end: }
+          {
+            \__cmd_grab_v_aux_put:N #2
+            \__cmd_grab_v_aux_loop:N #1
+          }
+      }
+      { \__cmd_grab_v_aux_abort:n {#2} #2 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_loop_end:
+  {
+    \__cmd_grab_v_group_end:
+    \__cmd_add_arg:x { \tl_tail:N \l__cmd_v_arg_tl }
+  }
+\int_new:N \l__cmd_v_nesting_int
+\cs_new_protected:Npx \__cmd_grab_v_bgroup:
+  {
+    \exp_not:N \__cmd_grab_v_aux_catcodes:
+    \exp_not:n { \int_set:Nn \l__cmd_v_nesting_int { 1 } }
+    \exp_not:N \__cmd_grab_v_aux_put:N \iow_char:N \{
+    \exp_not:N \__cmd_grab_v_bgroup_loop:
+  }
+\cs_new_protected:Npn \__cmd_grab_v_bgroup_loop:
+  {
+    \peek_N_type:TF
+      { \__cmd_grab_v_bgroup_loop:N }
+      { \__cmd_grab_v_aux_abort:n { } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_bgroup_loop:N #1
+  {
+    \__cmd_grab_v_token_if_char:NTF #1
+      {
+        \token_if_eq_charcode:NNTF \c_group_end_token #1
+          {
+            \int_decr:N \l__cmd_v_nesting_int
+            \int_compare:nNnTF \l__cmd_v_nesting_int > 0
+              {
+                \__cmd_grab_v_aux_put:N #1
+                \__cmd_grab_v_bgroup_loop:
+              }
+              { \__cmd_grab_v_aux_loop_end: }
+          }
+          {
+            \token_if_eq_charcode:NNT \c_group_begin_token #1
+              { \int_incr:N \l__cmd_v_nesting_int }
+            \__cmd_grab_v_aux_put:N #1
+            \__cmd_grab_v_bgroup_loop:
+          }
+      }
+      { \__cmd_grab_v_aux_abort:n {#1} #1 }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_catcodes:
+  {
+    \cs_set_eq:NN \do \char_set_catcode_other:N
+    \dospecials
+    \tex_endlinechar:D = `\^^M \scan_stop:
+    \bool_if:NTF \l__cmd_long_bool
+      { \char_set_catcode_other:n { \tex_endlinechar:D } }
+      { \char_set_catcode_parameter:n { \tex_endlinechar:D } }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_abort:n #1
+  {
+    \__cmd_grab_v_group_end:
+    \exp_after:wN \exp_after:wN \exp_after:wN
+      \peek_meaning_remove:NTF \char_generate:nn { \tex_endlinechar:D } { 6 }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-newline }
+          { \__cmd_environment_or_command: }
+          { \tl_to_str:N \l__cmd_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+      {
+        \__kernel_msg_error:nnxxx { ltcmd } { verbatim-tokenized }
+          { \__cmd_environment_or_command: }
+          { \tl_to_str:N \l__cmd_v_arg_tl }
+          { \tl_to_str:n {#1} }
+        \__cmd_add_arg:o \c_novalue_tl
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_aux_put:N #1
+  {
+    \tl_put_right:Nx \l__cmd_v_arg_tl
+      {
+        \token_if_active:NTF #1
+          { \exp_not:N #1 } { \token_to_str:N #1 }
+      }
+  }
+\cs_new_protected:Npn \__cmd_grab_v_token_if_char:NTF #1
+  { \str_if_eq:eeTF { } { \str_tail:n {#1} } }
+\cs_new_protected:Npn \__cmd_add_arg:n #1
+  {
+    \tl_put_right:Nn \l__cmd_args_tl { {#1} }
+    \l__cmd_signature_tl \__cmd_run_code:
+  }
+\cs_generate_variant:Nn \__cmd_add_arg:n { V , o , x }
+\cs_new:Npn \__cmd_expandable_grab_D:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_D:NNNwNNn #1 \q__cmd #2 #3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_D:NNNwNNn ##1##2##3##4 \q__cmd ##5##6##7
+      {
+        \str_if_eq:nnTF {##2} {##7}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q__cmd ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__cmd ##5##6 }
+              \q_nil { } ##2 \ERROR \q__cmd \ERROR
+          }
+          { ##4 {#1} \q__cmd ##5 ##6 {##7} }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_D:NNNwNNnnn #1#2#3#4 \q__cmd #5#6#7#8#9
+  {
+    \exp_args:Nof \__cmd_expandable_grab_D:nnNNNwNN
+      { \use_ii:nn #7 #2 }
+      { \__cmd_expandable_grab_D:Nw #3 \exp_stop_f: #8 #9 }
+    #1#2#3 #4 \q__cmd #5 #6
+  }
+\cs_new:Npn \__cmd_expandable_grab_D:Nw #1#2 \ERROR \ERROR { #2 #1 }
+\cs_new:Npn \__cmd_expandable_grab_D:nnNNNwNN #1#2#3#4#5#6 \q__cmd #7#8
+  {
+    \exp_args:No \tl_if_empty:oTF
+      { #3 { \use_none:nnn } #2 \q__cmd #5 #4 \q__cmd #5 }
+      {
+        \tl_if_blank:oTF { \use_none:nn #1#2 }
+          { \__cmd_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          {
+            \str_if_eq:eeTF
+              { \exp_not:o { \use_none:nn #1#2 } }
+              { { \exp_not:o { \use_iii:nnnn #1#2 \q_nil } } }
+              { \__cmd_put_arg_expandable:ow { \use_iii:nnn #1#2 } }
+              { \__cmd_put_arg_expandable:ow { \use_none:nn #1#2 } }
+          }
+            #6 \q__cmd #7 #8
+      }
+      {
+        #3
+          { \__cmd_expandable_grab_D:NNNwNNnnn #3#4#5#6 \q__cmd #7 #8 }
+          \q_nil {#1} #2 \ERROR \q__cmd \ERROR
+      }
+  }
+\cs_new:Npn \__cmd_expandable_grab_D_alt:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_D_alt:NNwNNn #1 \q__cmd #2 #3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_D_alt:NNwNNn ##1##2##3 \q__cmd ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__cmd }
+              ##6 \ERROR
+          }
+          { ##3 {#1} \q__cmd ##4 ##5 {##6} }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_D_alt:NNwn #1#2#3 \q__cmd #4
+  {
+    \tl_if_blank:oTF { \use_none:n #4 }
+      { \__cmd_put_arg_expandable:ow { \use_none:n #4 } }
+      {
+        \str_if_eq:eeTF
+          { \exp_not:o { \use_none:n #4 } }
+          { { \exp_not:o { \use_ii:nnn #4 \q_nil } } }
+          { \__cmd_put_arg_expandable:ow { \use_ii:nn #4 } }
+          { \__cmd_put_arg_expandable:ow { \use_none:n #4 } }
+      }
+        #3 \q__cmd #1 #2
+  }
+\cs_new:Npn \__cmd_expandable_grab_E:w #1 \q__cmd #2#3
+  { \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2 #3 #3 }
+\cs_new:Npn \__cmd_expandable_grab_E_long:w #1 \q__cmd #2#3
+  { \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2 #3 #2 }
+\cs_new:Npn \__cmd_expandable_grab_E_aux:w #1 \q__cmd #2#3#4
+  { #2 { \__cmd_expandable_grab_E_test:nnw #1 \q__cmd #2 #3 #4 } }
+\cs_new:Npn \__cmd_expandable_grab_E_test:nnw #1#2#3 \q__cmd #4#5#6#7
+  {
+    \__cmd_expandable_grab_E_loop:nnnNNw {#7} { } { }
+      #1 \q_nil \q_nil \q_nil \q_mark #2 \q_nil
+    #3 \q__cmd #4 #5 #6
+  }
+\cs_new:Npn \__cmd_expandable_grab_E_loop:nnnNNw
+    #1#2#3#4#5#6 \q_nil #7 \q_mark #8
+  {
+    \quark_if_nil:NTF #4
+      { \__cmd_expandable_grab_E_end:nnw {#1} {#3} }
+      {
+        \tl_if_novalue:nTF {#8}
+          { \str_if_eq:onTF { #4 { } #1 #5 } {#5} }
+          { \use_ii:nn }
+            { \__cmd_expandable_grab_E_find:w { #2 #4 #5 #6 } {#3} ~ }
+            {
+              \__cmd_expandable_grab_E_loop:nnnNNw
+                {#1} { #2 #4 #5 } { #3 {#8} }
+                #6 \q_nil #7 \q_mark
+            }
+      }
+  }
+\cs_new:Npn \__cmd_expandable_grab_E_find:w #1 \q__cmd #2#3#4
+  { #4 { \__cmd_expandable_grab_E_find:nnw #1 \q__cmd #2 #3 #4 } }
+\cs_new:Npn \__cmd_expandable_grab_E_find:nnw #1#2#3 \q_nil #4 \q__cmd #5#6#7#8
+  { \__cmd_expandable_grab_E_aux:w {#1} { #2 {#8} #3 } #4 \q__cmd #5 #6 #7 }
+\cs_new:Npn \__cmd_expandable_grab_E_end:nnw #1#2#3 \q__cmd #4#5#6
+  { #3 #2 \q__cmd #4 #5 {#1} }
+\cs_new:Npn \__cmd_expandable_grab_m:w #1 \q__cmd #2#3
+  { #3 { \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_m_long:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_m_aux:wNn #1 \q__cmd #2#3#4
+  { #1 {#4} \q__cmd #2 #3 }
+\cs_new:Npn \__cmd_expandable_grab_R:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_R_aux:NNNwNNn #1 \q__cmd #2#3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_R_aux:NNNwNNn ##1##2##3##4 \q__cmd ##5##6##7
+      {
+        \str_if_eq:nnTF {##7} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } { } ##7 ##2 \q__cmd ##3 }
+              { { } {##2} { } }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D:NNNwNNnnn ##1##2##3##4 \q__cmd ##5##6 }
+              \q_nil { } ##2 \ERROR \q__cmd \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##5 } }
+              { \tl_to_str:n {##2} }
+            ##4 {#1} \q__cmd ##5 ##6 {##7}
+          }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_R_alt:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_R_alt_aux:NNwNNn #1 \q__cmd #2#3 } }
+\cs_set_protected:Npn \__cmd_tmp:w #1
+  {
+    \cs_new:Npn \__cmd_expandable_grab_R_alt_aux:NNwNNn ##1##2##3 \q__cmd ##4##5##6
+      {
+        \str_if_eq:nnTF {##6} {##2}
+          {
+            \str_if_eq:onTF
+              { ##1 { } ##6 ##2 ##2 }
+              { { } ##2 }
+          }
+          { \use_ii:nn }
+          {
+            ##1
+              { \__cmd_expandable_grab_D_alt:NNwn ##4 ##5 ##3 \q__cmd }
+              ##6 \ERROR
+          }
+          {
+            \__kernel_msg_expandable_error:nnff
+              { ltcmd } { missing-required }
+              { \exp_args:Nf \tl_trim_spaces:n { \token_to_str:N ##4 } }
+              { \tl_to_str:n {##2} }
+            ##3 {#1} \q__cmd ##4 ##5 {##6}
+          }
+      }
+  }
+\exp_args:No \__cmd_tmp:w { \c_novalue_tl }
+\cs_new:Npn \__cmd_expandable_grab_t:w #1 \q__cmd #2#3
+  { #2 { \__cmd_expandable_grab_t_aux:NNwn #1 \q__cmd #2 #3 } }
+\cs_new:Npn \__cmd_expandable_grab_t_aux:NNwn #1#2#3 \q__cmd #4#5#6
+  {
+    \str_if_eq:onTF { #1 { } #6 #2 } {#2}
+      { #3 { \BooleanTrue } \q__cmd #4 #5 }
+      { #3 { \BooleanFalse } \q__cmd #4 #5 {#6} }
+  }
+\cs_new:Npn \__cmd_put_arg_expandable:nw #1#2 \q__cmd { #2 {#1} \q__cmd }
+\cs_generate_variant:Nn \__cmd_put_arg_expandable:nw { o }
+\cs_new_protected:Npn \__cmd_bool_reverse:N #1
+  {
+    \bool_if:NTF #1
+      { \tl_set:Nn \ProcessedArgument { \c_false_bool } }
+      { \tl_set:Nn \ProcessedArgument { \c_true_bool } }
+  }
+\seq_new:N \l__cmd_split_list_seq
+\tl_new:N \l__cmd_split_list_tl
+\cs_new_protected:Npn \__cmd_split_list:nn #1#2
+  {
+    \tl_if_single:nTF {#1}
+      {
+        \token_if_cs:NTF #1
+          { \__cmd_split_list_multi:nn {#1} {#2} }
+          { \__cmd_split_list_single:Nn #1 {#2} }
+      }
+      { \__cmd_split_list_multi:nn {#1} {#2} }
+  }
+\cs_new_protected:Npn \__cmd_split_list_multi:nn #1#2
+  {
+    \seq_set_split:Nnn \l__cmd_split_list_seq {#1} {#2}
+    \tl_clear:N \ProcessedArgument
+    \seq_map_inline:Nn \l__cmd_split_list_seq
+      { \tl_put_right:Nn \ProcessedArgument { {##1} } }
+  }
+\cs_generate_variant:Nn \__cmd_split_list_multi:nn { nV }
+\group_begin:
+\char_set_catcode_active:N \^^@
+\cs_new_protected:Npn \__cmd_split_list_single:Nn #1#2
+  {
+    \tl_set:Nn \l__cmd_split_list_tl {#2}
+    \group_begin:
+    \char_set_lccode:nn { `\^^@ } { `#1 }
+    \tex_lowercase:D
+      {
+        \group_end:
+        \tl_replace_all:Nnn \l__cmd_split_list_tl { ^^@ }
+      }   {#1}
+     \__cmd_split_list_multi:nV {#1} \l__cmd_split_list_tl
+   }
+\group_end:
+\cs_new_protected:Npn \__cmd_split_argument:nnn #1#2#3
+  {
+    \__cmd_split_list:nn {#2} {#3}
+    \exp_args:Nf \__cmd_split_argument_aux:nnnn
+      { \tl_count:N \ProcessedArgument }
+      {#1} {#2} {#3}
+  }
+\cs_new_protected:Npn \__cmd_split_argument_aux:nnnn #1#2#3#4
+  {
+    \int_compare:nNnF {#1} = { #2 + 1 }
+      {
+        \int_compare:nNnTF {#1} > { #2 + 1 }
+          {
+            \tl_set:Nx \ProcessedArgument
+              {
+                \exp_last_unbraced:NnNo
+                  \__cmd_split_argument_aux:n
+                  { #2 + 1 }
+                  \use_none_delimit_by_q_stop:w
+                  \ProcessedArgument
+                  \q_stop
+              }
+            \__kernel_msg_error:nnxxx { ltcmd } { split-excess-tokens }
+              { \tl_to_str:n {#3} } { \int_eval:n { #2 + 1 } }
+              { \tl_to_str:n {#4} }
+          }
+          {
+            \tl_put_right:Nx \ProcessedArgument
+              {
+                \prg_replicate:nn { #2 + 1 - (#1) }
+                  { { \exp_not:V \c_novalue_tl } }
+              }
+          }
+      }
+  }
+\cs_new:Npn \__cmd_split_argument_aux:n #1
+  { \prg_replicate:nn {#1} { \__cmd_split_argument_aux:wn } }
+\cs_new:Npn \__cmd_split_argument_aux:wn #1 \use_none_delimit_by_q_stop:w #2
+  {
+    \exp_not:n { {#2} }
+    #1
+    \use_none_delimit_by_q_stop:w
+  }
+\cs_new_protected:Npn \__cmd_trim_spaces:n #1
+  { \tl_set:Nx \ProcessedArgument { \tl_trim_spaces:n {#1} } }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error:N #1
+  {
+    \bool_set_false:N \l__cmd_environment_bool
+    \tl_set:Nn \l__cmd_fn_tl {#1}
+    \__cmd_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error:n #1
+  {
+    \bool_set_true:N \l__cmd_environment_bool
+    \str_set:Nx \l__cmd_environment_str {#1}
+    \__cmd_get_arg_spec_error_aux:n
+      { \cs_if_exist:cTF { \l__cmd_environment_str } }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec_error_aux:n #1
+  {
+    #1
+      {
+        \__kernel_msg_error:nnx { ltcmd } { non-xparse }
+          { \__cmd_environment_or_command: }
+      }
+      {
+        \__kernel_msg_error:nnx { ltcmd } { unknown }
+          { \__cmd_environment_or_command: }
+      }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec:NTF #1#2#3
+  {
+    \__cmd_cmd_if_xparse:NTF #1
+      {
+        \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
+        #2
+      }
+      {#3}
+  }
+\cs_new_eq:NN \__cmd_chk_if_free_cs:N \__kernel_chk_if_free_cs:N
+\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \use_none:n
+\tl_new:N \ArgumentSpecification
+\cs_new_protected:Npn \__cmd_get_arg_spec:N #1
+  {
+    \__cmd_get_arg_spec:NTF #1 { }
+      { \__cmd_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_get_arg_spec:n #1
+  {
+    \exp_args:Nc \__cmd_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { }
+      { \__cmd_get_arg_spec_error:n {#1} }
+  }
+\cs_new_protected:Npn \__cmd_show_arg_spec:N #1
+  {
+    \__cmd_get_arg_spec:NTF #1
+      { \tl_show:N \ArgumentSpecification }
+      { \__cmd_get_arg_spec_error:N #1 }
+  }
+\cs_new_protected:Npn \__cmd_show_arg_spec:n #1
+  {
+    \exp_args:Nc \__cmd_get_arg_spec:NTF
+      { environment~ \tl_to_str:n {#1} }
+      { \tl_show:N \ArgumentSpecification }
+      { \__cmd_get_arg_spec_error:n {#1} }
+  }
+\cs_new_protected:Npn \__cmd_check_definable:nNT #1
+  { \tl_trim_spaces_apply:nN {#1} \__cmd_check_definable_aux:nN }
+\group_begin:
+  \char_set_catcode_active:n { `? }
+  \cs_new_protected:Npn \__cmd_check_definable_aux:nN #1#2
+    {
+      \group_begin:
+      \tl_if_single_token:nTF {#1}
+        {
+          \int_set:Nn \tex_escapechar:D { 92 }
+          \exp_args:Nx \tl_if_empty:nTF
+            { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+            {
+              \exp_args:Nx \char_set_lccode:nn
+                { ` \str_head:n {#1} } { `? }
+              \tex_lowercase:D { \tl_if_eq:nnTF {#1} } { ? }
+                { \group_end: \use_iii:nnn }
+                { \group_end: \use_i:nnn }
+            }
+            { \group_end: \use_iii:nnn }
+        }
+        { \group_end: \use_ii:nnn }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-definable }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+      {
+        \__kernel_msg_error:nnxx { ltcmd } { not-one-token }
+          { \tl_to_str:n {#1} } { \token_to_str:N #2 }
+      }
+    }
+\group_end:
+\cs_new_protected:Npn \__cmd_token_if_cs:NTF #1
+  {
+    \group_begin:
+      \int_set:Nn \tex_escapechar:D { 92 }
+      \exp_args:Nx \tl_if_empty:nTF
+          { \exp_args:No \str_tail:n { \token_to_str:N #1 } }
+        { \group_end: \use_ii:nn }
+        { \group_end: \use_i:nn }
+  }
+\cs_new:Npn \__cmd_tl_mapthread_function:NNN #1#2#3
+  {
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN \__cmd_tl_mapthread_loop:w
+    \exp_after:wN \exp_after:wN
+    \exp_after:wN #3
+    \exp_after:wN #1
+    \exp_after:wN \q_recursion_tail
+    \exp_after:wN \q_mark
+    #2
+    \q_recursion_tail
+    \q_recursion_stop
+  }
+\cs_new:Npn \__cmd_tl_mapthread_function:nnN #1#2#3
+  {
+    \__cmd_tl_mapthread_loop:w #3
+      #1 \q_recursion_tail \q_mark
+      #2 \q_recursion_tail \q_recursion_stop
+  }
+\cs_new:Npn \__cmd_tl_mapthread_loop:w #1#2#3 \q_mark #4
+  {
+    \quark_if_recursion_tail_stop:n {#2}
+    \quark_if_recursion_tail_stop:n {#4}
+    #1 {#2} {#4}
+    \__cmd_tl_mapthread_loop:w #1#3 \q_mark
+  }
+\cs_new_protected:Npn \__cmd_cmd_if_xparse:NTF #1
+  {
+    \exp_args:Nf \str_case_e:nnTF
+      {
+        \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 }
+          {
+            \exp_last_unbraced:Nf \__cmd_cmd_if_xparse_aux:w
+              { \cs_replacement_spec:N #1 } ~ \q_stop
+          }
+      }
+      {
+        { \token_to_str:N \__cmd_start:nNNnnn } { }
+        { \token_to_str:N \__cmd_start_expandable:nNNNNn } { }
+        { \token_to_str:N \__cmd_start_env:nnnnn } { }
+      }
+  }
+\cs_new:Npn \__cmd_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1}
+\cs_new_protected:Npn \__cmd_peek_nonspace:NTF
+  { \__cmd_peek_nonspace_aux:nNNTF { } \__cmd_peek_meaning:NTF }
+\cs_new_protected:Npn \__cmd_peek_nonspace_remove:NTF
+  { \__cmd_peek_nonspace_aux:nNNTF { } \__cmd_peek_meaning_remove:NTF }
+\cs_new_protected:Npn \__cmd_peek_nonspace_aux:nNNTF #1#2#3#4#5
+  {
+    \peek_meaning_remove:NTF \c_space_token
+      { \__cmd_peek_nonspace_aux:nNNTF { #1 ~ } #2 #3 {#4} {#5} }
+      { #2 #3 { #4 } { #5 #1 } }
+  }
+\cs_new_protected:Npn \__cmd_peek_meaning:NTF
+  { \__cmd_peek_meaning_aux:NNTF \c_false_bool }
+\cs_new_protected:Npn \__cmd_peek_meaning_remove:NTF
+  { \__cmd_peek_meaning_aux:NNTF \c_true_bool }
+\cs_new_protected:Npn \__cmd_peek_meaning_aux:NNTF #1#2#3#4
+  {
+    \tl_set:Nn \l__cmd_tmpa_tl {#3}
+    \tl_set:Nn \l__cmd_tmpb_tl {#4}
+    \peek_meaning:NTF #2
+      {
+        \token_if_eq_meaning:NNTF #2 \c_group_begin_token
+          { \__cmd_peek_true_remove:Nw #1 }
+          {
+            \__cmd_token_if_cs:NTF #2
+              { \__cmd_peek_cs_check_equal:NNN #1 #2 }
+              { \__cmd_peek_true_remove:Nw #1 }
+          }
+      }
+      { \l__cmd_tmpb_tl }
+  }
+\cs_new_protected:Npn \__cmd_peek_cs_check_equal:NNN #1#2#3
+  {
+    \str_if_eq:nnTF {#2} {#3}
+      { \__cmd_peek_true_remove:Nw #1 }
+      { \l__cmd_tmpb_tl }
+    #3
+  }
+\cs_new_protected:Npn \__cmd_peek_true_remove:Nw #1
+  {
+    \bool_if:NTF #1
+      {
+        \tex_afterassignment:D \l__cmd_tmpa_tl
+        \cs_set_eq:NN \__cmd_tmp:w
+      }
+      { \l__cmd_tmpa_tl }
+  }
+\tl_const:Nn \c__cmd_ignore_def_tl
+  { \\ \\ LaTeX~will~ignore~this~entire~definition. }
+\cs_new:Npn \__cmd_environment_or_command:
+  {
+    \bool_if:NTF \l__cmd_environment_bool
+      { environment ~ ' \l__cmd_environment_str ' }
+      {
+        command ~ '
+        \exp_args:Nf \tl_trim_spaces:n
+          { \exp_after:wN \token_to_str:N \l__cmd_fn_tl }
+        '
+      }
+  }
+\__kernel_msg_new:nnnn { ltcmd } { arg-after-body }
+  { In~the~definition~of~#1,~b~(body)~argument~must~be~last. }
+  {
+    The~'body'~argument~type~is~followed~by~'#2'~in~the~argument~
+    specification~of~the~#1.~This~is~not~allowed.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { bad-arg-spec }
+  { Bad~argument~specification~'#2'~for~#1. }
+  {
+    The~argument~specification~provided~was~not~valid:~
+    one~or~more~mandatory~pieces~of~information~were~missing.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-already-defined }
+  { Command~'#1'~already~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { command-not-yet-defined }
+  { Command ~'#1'~not~yet~defined! }
+  {
+    You~have~used~#2~
+    with~a~command~that~was~never~defined.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-already-defined }
+  { Environment~'#1'~already~defined! }
+  {
+    You~have~used~\NewDocumentEnvironment
+    with~an~environment~that~already~has~a~definition. \\ \\
+    The~existing~definition~of~'#1'~will~not~be~altered.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { environment-not-yet-defined }
+  { Environment~'#1'~not~yet~defined! }
+  {
+    You~have~used~\RenewDocumentEnvironment
+    with~an~environment~that~was~never~defined.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { expandable-ending-optional }
+  {
+    Argument~specification~'#2'~for~expandable~command~'#1'~
+    ends~with~optional~argument.
+  }
+  {
+    Expandable~commands~must~have~a~final~mandatory~argument~
+    (or~no~arguments~at~all).~You~cannot~have~a~terminal~optional~
+    argument~with~expandable~commands.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { inconsistent-long }
+  { Inconsistent~long~arguments~for~expandable~command~'#1'. }
+  {
+    The~arguments~for~an~expandable~command~must~not~involve~short~
+    arguments~after~long~arguments.~You~have~tried~to~mix~the~two~types.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-command-arg }
+  { Argument~type~'#2'~not~available~for~#1. }
+  {
+    The~letter~'#2'~can~only~be~used~in~environment~argument~
+    specifications,~not~for~commands.
+    \\ \\
+    LaTeX~will~ignore~this~entire~definition.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-expandable-argument-type }
+  { Argument~type~'#2'~not~available~for~expandable~command~'#1'. }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { invalid-after-optional-expandably }
+  {
+    Argument~type~'#2'~not~available~after~optional~argument~
+    for~expandable~command~'#1'.
+  }
+  {
+    The~letter~'#2'~specifies~an~argument~type~which~cannot~be~used~
+    in~an~expandable~command~after~an~optional~argument.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-trailing-obey-spaces }
+  { Prefix~'!'~used~before~mandatory~argument~'#2'~of~#1. }
+  {
+    The~prefix~'!'~can~only~apply~to~trailing~optional~arguments.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-definable }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~is~a~character.~Perhaps~a~
+    backslash~is~missing?
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-one-token }
+  { First~argument~of~'#2'~must~be~a~command. }
+  {
+    The~first~argument~of~'#2'~should~be~the~document~command~that~will~
+    be~defined.~The~provided~argument~'#1'~contains~more~than~one~
+    token.~Perhaps~a~backslash~is~missing?
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { not-single-token }
+  {
+    Argument~delimiter~'#2'~for~the~#1~should~be~
+    a~single~non-space~token.
+  }
+  {
+    The~argument~specification~provided~was~not~valid:~in~a~place~
+    where~a~single~token~is~required,~LaTeX~found~'#2'.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { forbidden-implicit-group-token }
+  { Argument~delimiter~'#2'~for~the~#1~is~not~allowed. }
+  {
+    The~argument~specification~provided~was~not~valid:~the~implicit~
+    #3-group~token~'#2'~is~not~allowed~as~an~argument~delimiter.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { processor-in-expandable }
+  { Argument~processor~'>{#2}'~cannot~be~used~for~the~expandable~command~'#1'. }
+  {
+    The~argument~specification~for~#1~contains~a~processor~function:~
+    this~is~only~supported~for~standard~robust~commands.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { too-many-arguments }
+  { Too~many~arguments~in~argument~specification~'#2'~of~#1. }
+  {
+    The~argument~specification~provided~has~more~than~9~arguments.~
+    This~cannot~be~implemented.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { two-markers }
+  { Two~'#2'~apply~to~the~same~argument~in~argument~specification~of~#1. }
+  {
+    The~argument~specification~provided~has~two~markers~'#2'~applying~
+    to~the~same~argument;~these~are~redundant.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown-argument-type }
+  { Unknown~argument~type~'#2'~for~the~#1. }
+  {
+    The~letter~'#2'~does~not~specify~a~known~argument~type.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnnn { ltcmd } { xparse-argument-type }
+  { Deprecated~argument~type~'#2'~for~the~#1~requires~xparse. }
+  {
+    The~letter~'#2'~specifies~a~known~argument~type~that~requires~
+    the~xparse~package.
+    \c__cmd_ignore_def_tl
+  }
+\__kernel_msg_new:nnn { ltcmd } { if-boolean }
+  { Invalid~use~\iow_char:N\\IfBooleanTF~{#1} }
+\__kernel_msg_new:nnnn { ltcmd } { loop-in-defaults }
+  { Defaults~of~#1~have~circular~dependency. }
+  {
+    The~default~values~of~two~or~more~arguments~of~the~#1~
+    depend~on~each~other~in~a~way~that~cannot~be~resolved.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { missing-required }
+  { Missing~required~argument~for~#1. }
+  {
+    The~current~#1~expects~an~argument~starting~with~'#2'.~
+    LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { non-xparse }
+  { \str_uppercase:n #1~not~defined~using~xparse. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~this~was~not~defined~using~xparse.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { split-excess-tokens }
+  { Too~many~'#1'~tokens~when~trying~to~split~argument. }
+  {
+    LaTeX~was~asked~to~split~the~input~'#3'~
+    at~each~occurrence~of~the~token~'#1',~up~to~a~maximum~of~#2~parts.~
+    There~were~too~many~'#1'~tokens.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { unknown }
+  { Unknown~document~#1. }
+  {
+    You~have~asked~for~the~argument~specification~for~the~#1,~
+    but~it~is~not~defined.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-newline }
+  { Verbatim~argument~of~#1~ended~by~end~of~line. }
+  {
+    The~verbatim~argument~of~the~#1~cannot~contain~more~than~one~line,~
+    but~the~end~
+    of~the~current~line~has~been~reached.~You~may~have~forgotten~the~
+    closing~delimiter.
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+\__kernel_msg_new:nnnn { ltcmd } { verbatim-tokenized }
+  { The~verbatim~#1~cannot~be~used~inside~an~argument. }
+  {
+    The~#1~takes~a~verbatim~argument.~
+    It~may~not~appear~within~the~argument~of~another~function.~
+    It~received~an~illegal~token \tl_if_empty:nF {#3} { ~'#3' } .
+    \\ \\
+    LaTeX~will~ignore~'#2'.
+  }
+\__kernel_msg_new:nnn { ltcmd } { define-command }
+  {
+    Defining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { define-environment }
+  {
+    Defining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-command }
+  {
+    Redefining~command~#1~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { redefine-environment }
+  {
+    Redefining~environment~'#1'~
+    with~sig.~'#2'~\msg_line_context:.
+  }
+\__kernel_msg_new:nnn { ltcmd } { optional-mandatory }
+  {
+    Since~the~mandatory~argument~'#1'~has~the~same~delimiter~'#2'~
+    as~a~previous~optional~argument,~it~will~not~be~possible~to~
+    omit~all~optional~arguments~when~calling~this~command.
+  }
+\__kernel_msg_new:nnn { ltcmd } { unsupported-let }
+  {
+    The~command~'#1'~was~undefined~but~not~the~associated~commands~
+    '#1~code'~and/or~'#1~defaults'.~Maybe~you~tried~using~
+    \iow_char:N\\let.~This~may~lead~to~an~infinite~loop.
+  }
+\cs_new_eq:NN \BooleanFalse \c_false_bool
+\cs_new_eq:NN \BooleanTrue  \c_true_bool
+\cs_new_protected:Npn \NewDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \NewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewDocumentCommand }
+          }
+          { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \RenewDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \ProvideDocumentCommand
+      { \cs_if_exist:NF #1 { \__cmd_declare_cmd:Nnn #1 {#2} {#3} } }
+ }
+\cs_new_protected:Npn \DeclareDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \DeclareDocumentCommand
+      { \__cmd_declare_cmd:Nnn #1 {#2} {#3} }
+  }
+\cs_new_protected:Npn \NewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \__kernel_msg_error:nnx { ltcmd } { environment-already-defined } {#1} }
+      { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+  }
+\cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4
+  {
+    \cs_if_exist:cTF {#1}
+      { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+      { \__kernel_msg_error:nnx { ltcmd } { environment-not-yet-defined } {#1} }
+  }
+\cs_new_protected:Npn \ProvideDocumentEnvironment #1#2#3#4
+  { \cs_if_exist:cF {#1} { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} } }
+\cs_new_protected:Npn \DeclareDocumentEnvironment #1#2#3#4
+  { \__cmd_declare_env:nnnn {#1} {#2} {#3} {#4} }
+\cs_new_protected:Npn \NewExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \NewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-already-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \NewExpandableDocumentCommand }
+          }
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+  }
+\cs_new_protected:Npn \RenewExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \RenewExpandableDocumentCommand
+      {
+        \cs_if_exist:NTF #1
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+          {
+            \__kernel_msg_error:nnxx { ltcmd } { command-not-yet-defined }
+              { \use:nnn \token_to_str:N #1 { } }
+              { \token_to_str:N \RenewExpandableDocumentCommand }
+          }
+      }
+  }
+\cs_new_protected:Npn \ProvideExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \ProvideExpandableDocumentCommand
+      {
+        \cs_if_exist:NF #1
+          { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+      }
+ }
+\cs_new_protected:Npn \DeclareExpandableDocumentCommand #1#2#3
+  {
+    \__cmd_check_definable:nNT {#1} \DeclareExpandableDocumentCommand
+      { \__cmd_declare_expandable_cmd:Nnn #1 {#2} {#3} }
+  }
+\cs_new:Npn \IfBooleanTF #1
+  {
+    \tl_if_single:nF {#1}
+      { \prg_break:n { \use:n } }
+    \tl_if_single_token:nF #1
+      { \prg_break:n { \use:n } }
+    \token_if_eq_meaning:NNT #1 \c_true_bool
+      { \prg_break:n { \use_ii:nnn } }
+    \token_if_eq_meaning:NNT #1 \c_false_bool
+      { \prg_break:n { \use_iii:nnn } }
+    \prg_break:n { \use:n }
+    \prg_break_point:
+    {
+      \__kernel_msg_expandable_error:nnn { ltcmd } { if-boolean } {#1}
+      \use_ii:nn
+    }
+  }
+\cs_new:Npn \IfBooleanT #1#2 { \IfBooleanTF {#1} {#2} { } }
+\cs_new:Npn \IfBooleanF #1 { \IfBooleanTF {#1} { } }
+\cs_new_eq:NN \IfNoValueF  \tl_if_novalue:nF
+\cs_new_eq:NN \IfNoValueT  \tl_if_novalue:nT
+\cs_new_eq:NN \IfNoValueTF \tl_if_novalue:nTF
+\cs_new:Npn \IfValueF { \tl_if_novalue:nT }
+\cs_new:Npn \IfValueT { \tl_if_novalue:nF }
+\cs_new:Npn \IfValueTF #1#2#3 { \tl_if_novalue:nTF {#1} {#3} {#2} }
+\tl_new:N \ProcessedArgument
+\cs_new_eq:NN \ReverseBoolean \__cmd_bool_reverse:N
+\cs_new_eq:NN \SplitArgument  \__cmd_split_argument:nnn
+\cs_new_eq:NN \SplitList      \__cmd_split_list:nn
+\cs_new_eq:NN \TrimSpaces     \__cmd_trim_spaces:n
+\cs_new_eq:NN \ProcessList \tl_map_function:nN
+\cs_new_protected:Npn \GetDocumentCommandArgSpec #1
+  {
+    \__cmd_check_definable:nNT {#1} \GetDocumentCommandArgSpec
+      { \__cmd_get_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \__cmd_get_arg_spec:n
+\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1
+  {
+    \__cmd_check_definable:nNT {#1} \ShowDocumentCommandArgSpec
+      { \__cmd_show_arg_spec:N #1 }
+  }
+\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \__cmd_show_arg_spec:n
+\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \__cmd_chk_if_free_cs:N
+\cs_undefine:N \__cmd_chk_if_free_cs:N
+\ExplSyntaxOff
+\EndIncludeInRelease
+\catcode`\^^@=\@latexrelease at catcode@null\relax
+
+\IncludeInRelease{2020/10/01}%
+                 {\NewDocumentCommand}{Document commands}%
+\@ifundefined{NewDocumentCommand}
+  {%
+    \IfFileExists{xparse.ltx}
+      {\input xparse.ltx }
+      {\@latex at error{LaTeX requires xparse}\@ehd}%
+  }
+  {}
+\EndIncludeInRelease
+
+\IncludeInRelease{0000/00/00}%
+                 {\NewDocumentCommand}{Document commands}%
+
+\EndIncludeInRelease
 %%% From File: lthooks.dtx
 \def\lthooksversion{v1.0h}
-\def\lthooksdate{2021/01/07}
+\def\lthooksdate{2021/01/15}
 \IncludeInRelease{2020/10/01}%
                  {\NewHook}{The hook management}%
 \ExplSyntaxOn
@@ -1989,9 +4259,11 @@
       { \__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 } }
+  { \__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 } }
+  { \__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 } }
@@ -4527,8 +6799,10 @@
 \IncludeInRelease{2020/02/02}%
                  {\fontseries}{delay fontseries update}%
 
-\DeclareRobustCommand\fontseries[1]{\@forced at seriesfalse\merge at font@series{#1}}
-\DeclareRobustCommand\fontseriesforce[1]{\@forced at seriestrue\edef\f at series{#1}}
+\DeclareRobustCommand\fontseries[1]{\@forced at seriesfalse
+                                    \merge at font@series{#1}}
+\DeclareRobustCommand\fontseriesforce[1]{\@forced at seriestrue
+                                         \edef\f at series{#1}}
 \let\delayed at f@adjustment\@undefined
 
 \ifx\@forced at seriestrue\@undefined \else
@@ -4837,7 +7111,7 @@
 \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.
+%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
 
 \IncludeInRelease{2021/05/01}%
                  {\selectfont}{Add hook to \selectfont}%
@@ -4985,7 +7259,7 @@
                    in version \math at version}%
         \@eha
   \fi
- \else \expandafter\non at alpherr\fi
+ \else \expandafter\expandafter\expandafter\non at alpherr\fi
  \expandafter#1\ifx\math at bgroup\bgroup{#4}\else#4\fi
  }%
 }
@@ -5500,7 +7774,6 @@
         \@font at series@contexttrue
   \fi\fi\fi
 }
-
 \newif\if at font@series at context
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}%
@@ -5518,9 +7791,7 @@
   \protected at edef\emfontdeclare at clist{\zap at space#1, \@empty\emforce\emreset}%
 }
 \let\emfontdeclare at clist\@empty
-
 \DeclareRobustCommand\emreset{\upshape\ulcshape}
-
 \DeclareRobustCommand\em{%
   \@nomath\em
   \ifx\emfontdeclare at clist\@empty
@@ -5686,6 +7957,7 @@
 \let\textsw\@undefined
 \let\textssc\@undefined
 \EndIncludeInRelease
+%%% From File: lttextcomp.dtx
 \IncludeInRelease{2020/02/02}%
                  {\oldstylenums}{Old style numerals}%
 \DeclareRobustCommand\legacyoldstylenums[1]{%
@@ -5803,7 +8075,6 @@
       \selectfont#1%
   \egroup
 }
-
 \def\tc at fake@euro#1{%
    \leavevmode
    \@font at info{Faking \noexpand#1for font family
@@ -5816,17 +8087,17 @@
       \hbox{C}\crcr
    }%
 }
-
 \def\tc at check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc at subst}
-\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc at swap@accent#1}}
+\def\tc at check@accent#1{\CheckEncodingSubset\UseTextAccent
+                                           {TS1}{\tc at swap@accent#1}}
 \def\tc at swap@accent#1#2{\UseTextAccent{T1}#1}
 
 \DeclareTextSymbolDefault{\textdollar}{TS1}
-\UndeclareTextCommand{\textdollar}  {OT1}         % don't use the OT1 def any longer
+\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
+\UndeclareTextCommand{\textsterling}{OT1}% don't use the OT1 def any longer
 \DeclareTextSymbolDefault{\textperthousand}{TS1}
-\UndeclareTextCommand{\textperthousand}{T1}       % don't use the T1 def
+\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def
 \DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
 \DeclareTextSymbolDefault{\textbullet}{TS1}
 \DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
@@ -5867,22 +8138,38 @@
 \DeclareTextCommandDefault{\t}
   {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t}
 \ifx\Umathcode\@undefined
-  \DeclareTextCommandDefault{\capitalacute}       {\tc at check@accent{\'}2\capitalacute}
-  \DeclareTextCommandDefault{\capitalbreve}       {\tc at check@accent{\u}2\capitalbreve}
-  \DeclareTextCommandDefault{\capitalcaron}       {\tc at check@accent{\v}2\capitalcaron}
-  \DeclareTextCommandDefault{\capitalcedilla}     {\tc at check@accent{\c}2\capitalcedilla}
-  \DeclareTextCommandDefault{\capitalcircumflex}  {\tc at check@accent{\^}2\capitalcircumflex}
-  \DeclareTextCommandDefault{\capitaldieresis}    {\tc at check@accent{\"}2\capitaldieresis}
-  \DeclareTextCommandDefault{\capitaldotaccent}   {\tc at check@accent{\.}2\capitaldotaccent}
-  \DeclareTextCommandDefault{\capitalgrave}       {\tc at check@accent{\`}2\capitalgrave}
-  \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc at check@accent{\H}2\capitalhungarumlaut}
-  \DeclareTextCommandDefault{\capitalmacron}      {\tc at check@accent{\=}2\capitalmacron}
-  \DeclareTextCommandDefault{\capitalogonek}      {\tc at check@accent{\k}2\capitalogonek}
-  \DeclareTextCommandDefault{\capitalring}        {\tc at check@accent{\r}2\capitalring}
-  \DeclareTextCommandDefault{\capitaltie}         {\tc at check@accent{\t}2\capitaltie}
-  \DeclareTextCommandDefault{\capitaltilde}       {\tc at check@accent{\~}2\capitaltilde}
-  \DeclareTextCommandDefault{\newtie}             {\tc at check@accent{\t}2\newtie}
-  \DeclareTextCommandDefault{\capitalnewtie}      {\tc at check@accent{\t}2\capitalnewtie}
+  \DeclareTextCommandDefault{\capitalacute}
+                            {\tc at check@accent{\'}2\capitalacute}
+  \DeclareTextCommandDefault{\capitalbreve}
+                            {\tc at check@accent{\u}2\capitalbreve}
+  \DeclareTextCommandDefault{\capitalcaron}
+                            {\tc at check@accent{\v}2\capitalcaron}
+  \DeclareTextCommandDefault{\capitalcedilla}
+                            {\tc at check@accent{\c}2\capitalcedilla}
+  \DeclareTextCommandDefault{\capitalcircumflex}
+                            {\tc at check@accent{\^}2\capitalcircumflex}
+  \DeclareTextCommandDefault{\capitaldieresis}
+                            {\tc at check@accent{\"}2\capitaldieresis}
+  \DeclareTextCommandDefault{\capitaldotaccent}
+                            {\tc at check@accent{\.}2\capitaldotaccent}
+  \DeclareTextCommandDefault{\capitalgrave}
+                            {\tc at check@accent{\`}2\capitalgrave}
+  \DeclareTextCommandDefault{\capitalhungarumlaut}
+                            {\tc at check@accent{\H}2\capitalhungarumlaut}
+  \DeclareTextCommandDefault{\capitalmacron}
+                            {\tc at check@accent{\=}2\capitalmacron}
+  \DeclareTextCommandDefault{\capitalogonek}
+                            {\tc at check@accent{\k}2\capitalogonek}
+  \DeclareTextCommandDefault{\capitalring}
+                            {\tc at check@accent{\r}2\capitalring}
+  \DeclareTextCommandDefault{\capitaltie}
+                            {\tc at check@accent{\t}2\capitaltie}
+  \DeclareTextCommandDefault{\capitaltilde}
+                            {\tc at check@accent{\~}2\capitaltilde}
+  \DeclareTextCommandDefault{\newtie}
+                            {\tc at check@accent{\t}2\newtie}
+  \DeclareTextCommandDefault{\capitalnewtie}
+                            {\tc at check@accent{\t}2\capitalnewtie}
 \else
   \DeclareTextCommandDefault\capitalacute{\@tabacckludge'}
   \DeclareTextCommandDefault\capitalbreve{\u}
@@ -5901,86 +8188,163 @@
   \DeclareTextCommandDefault\capitaltilde{\~}
   \DeclareTextCommandDefault\newtie{\t}
 \fi
-\DeclareTextCommandDefault{\textlbrackdbl}      {\tc at check@symbol2\textlbrackdbl}
-\DeclareTextCommandDefault{\textrbrackdbl}      {\tc at check@symbol2\textrbrackdbl}
-\DeclareTextCommandDefault{\texteightoldstyle}  {\tc at check@symbol2\texteightoldstyle}
-\DeclareTextCommandDefault{\textfiveoldstyle}   {\tc at check@symbol2\textfiveoldstyle}
-\DeclareTextCommandDefault{\textfouroldstyle}   {\tc at check@symbol2\textfouroldstyle}
-\DeclareTextCommandDefault{\textnineoldstyle}   {\tc at check@symbol2\textnineoldstyle}
-\DeclareTextCommandDefault{\textoneoldstyle}    {\tc at check@symbol2\textoneoldstyle}
-\DeclareTextCommandDefault{\textsevenoldstyle}  {\tc at check@symbol2\textsevenoldstyle}
-\DeclareTextCommandDefault{\textsixoldstyle}    {\tc at check@symbol2\textsixoldstyle}
-\DeclareTextCommandDefault{\textthreeoldstyle}  {\tc at check@symbol2\textthreeoldstyle}
-\DeclareTextCommandDefault{\texttwooldstyle}    {\tc at check@symbol2\texttwooldstyle}
-\DeclareTextCommandDefault{\textzerooldstyle}   {\tc at check@symbol2\textzerooldstyle}
-\DeclareTextCommandDefault{\textacutedbl}       {\tc at check@symbol2\textacutedbl}
-\DeclareTextCommandDefault{\textasciiacute}     {\tc at check@symbol2\textasciiacute}
-\DeclareTextCommandDefault{\textasciibreve}     {\tc at check@symbol2\textasciibreve}
-\DeclareTextCommandDefault{\textasciicaron}     {\tc at check@symbol2\textasciicaron}
-\DeclareTextCommandDefault{\textasciidieresis}  {\tc at check@symbol2\textasciidieresis}
-\DeclareTextCommandDefault{\textasciigrave}     {\tc at check@symbol2\textasciigrave}
-\DeclareTextCommandDefault{\textasciimacron}    {\tc at check@symbol2\textasciimacron}
-\DeclareTextCommandDefault{\textgravedbl}       {\tc at check@symbol2\textgravedbl}
-\DeclareTextCommandDefault{\texttildelow}       {\tc at check@symbol2\texttildelow}
-\DeclareTextCommandDefault{\textbaht}           {\tc at check@symbol2\textbaht}
-\DeclareTextCommandDefault{\textbigcircle}      {\tc at check@symbol2\textbigcircle}
-\DeclareTextCommandDefault{\textborn}           {\tc at check@symbol2\textborn}
-\DeclareTextCommandDefault{\textcentoldstyle}   {\tc at check@symbol2\textcentoldstyle}
-\DeclareTextCommandDefault{\textcircledP}       {\tc at check@symbol2\textcircledP}
-\DeclareTextCommandDefault{\textcopyleft}       {\tc at check@symbol2\textcopyleft}
-\DeclareTextCommandDefault{\textdblhyphenchar}  {\tc at check@symbol2\textdblhyphenchar}
-\DeclareTextCommandDefault{\textdblhyphen}      {\tc at check@symbol2\textdblhyphen}
-\DeclareTextCommandDefault{\textdied}           {\tc at check@symbol2\textdied}
-\DeclareTextCommandDefault{\textdiscount}       {\tc at check@symbol2\textdiscount}
-\DeclareTextCommandDefault{\textdivorced}       {\tc at check@symbol2\textdivorced}
-\DeclareTextCommandDefault{\textdollaroldstyle} {\tc at check@symbol2\textdollaroldstyle}
-\DeclareTextCommandDefault{\textguarani}        {\tc at check@symbol2\textguarani}
-\DeclareTextCommandDefault{\textleaf}           {\tc at check@symbol2\textleaf}
-\DeclareTextCommandDefault{\textlquill}         {\tc at check@symbol2\textlquill}
-\DeclareTextCommandDefault{\textmarried}        {\tc at check@symbol2\textmarried}
-\DeclareTextCommandDefault{\textmho}            {\tc at check@symbol2\textmho}
-\DeclareTextCommandDefault{\textmusicalnote}    {\tc at check@symbol2\textmusicalnote}
-\DeclareTextCommandDefault{\textnaira}          {\tc at check@symbol2\textnaira}
-\DeclareTextCommandDefault{\textopenbullet}     {\tc at check@symbol2\textopenbullet}
-\DeclareTextCommandDefault{\textpeso}           {\tc at check@symbol2\textpeso}
-\DeclareTextCommandDefault{\textpilcrow}        {\tc at check@symbol2\textpilcrow}
-\DeclareTextCommandDefault{\textrecipe}         {\tc at check@symbol2\textrecipe}
-\DeclareTextCommandDefault{\textreferencemark}  {\tc at check@symbol2\textreferencemark}
-\DeclareTextCommandDefault{\textrquill}         {\tc at check@symbol2\textrquill}
-\DeclareTextCommandDefault{\textservicemark}    {\tc at check@symbol2\textservicemark}
-\DeclareTextCommandDefault{\textsurd}           {\tc at check@symbol2\textsurd}
-\DeclareTextCommandDefault{\textpertenthousand} {\tc at check@symbol2\textpertenthousand}
+\DeclareTextCommandDefault{\textlbrackdbl}
+                          {\tc at check@symbol2\textlbrackdbl}
+\DeclareTextCommandDefault{\textrbrackdbl}
+                          {\tc at check@symbol2\textrbrackdbl}
+\DeclareTextCommandDefault{\texteightoldstyle}
+                          {\tc at check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}
+                          {\tc at check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}
+                          {\tc at check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}
+                          {\tc at check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}
+                          {\tc at check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}
+                          {\tc at check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}
+                          {\tc at check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}
+                          {\tc at check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}
+                          {\tc at check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textzerooldstyle}
+                          {\tc at check@symbol2\textzerooldstyle}
+\DeclareTextCommandDefault{\textacutedbl}
+                          {\tc at check@symbol2\textacutedbl}
+\DeclareTextCommandDefault{\textasciiacute}
+                          {\tc at check@symbol2\textasciiacute}
+\DeclareTextCommandDefault{\textasciibreve}
+                          {\tc at check@symbol2\textasciibreve}
+\DeclareTextCommandDefault{\textasciicaron}
+                          {\tc at check@symbol2\textasciicaron}
+\DeclareTextCommandDefault{\textasciidieresis}
+                          {\tc at check@symbol2\textasciidieresis}
+\DeclareTextCommandDefault{\textasciigrave}
+                          {\tc at check@symbol2\textasciigrave}
+\DeclareTextCommandDefault{\textasciimacron}
+                          {\tc at check@symbol2\textasciimacron}
+\DeclareTextCommandDefault{\textgravedbl}
+                          {\tc at check@symbol2\textgravedbl}
+\DeclareTextCommandDefault{\texttildelow}
+                          {\tc at check@symbol2\texttildelow}
+\DeclareTextCommandDefault{\textbaht}
+                          {\tc at check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textbigcircle}
+                          {\tc at check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textborn}
+                          {\tc at check@symbol2\textborn}
+\DeclareTextCommandDefault{\textcentoldstyle}
+                          {\tc at check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcircledP}
+                          {\tc at check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textcopyleft}
+                          {\tc at check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textdblhyphenchar}
+                          {\tc at check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdblhyphen}
+                          {\tc at check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textdied}
+                          {\tc at check@symbol2\textdied}
+\DeclareTextCommandDefault{\textdiscount}
+                          {\tc at check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textdivorced}
+                          {\tc at check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdollaroldstyle}
+                          {\tc at check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textguarani}
+                          {\tc at check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textleaf}
+                          {\tc at check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textlquill}
+                          {\tc at check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textmarried}
+                          {\tc at check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmho}
+                          {\tc at check@symbol2\textmho}
+\DeclareTextCommandDefault{\textmusicalnote}
+                          {\tc at check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textnaira}
+                          {\tc at check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textopenbullet}
+                          {\tc at check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textpeso}
+                          {\tc at check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textpilcrow}
+                          {\tc at check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textrecipe}
+                          {\tc at check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textreferencemark}
+                          {\tc at check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textrquill}
+                          {\tc at check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textservicemark}
+                          {\tc at check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textsurd}
+                          {\tc at check@symbol2\textsurd}
+\DeclareTextCommandDefault{\textpertenthousand}
+                          {\tc at check@symbol2\textpertenthousand}
 \UndeclareTextCommand{\textpertenthousand}{T1}
-\DeclareTextCommandDefault{\textlangle}         {\tc at check@symbol3\textlangle}
-\DeclareTextCommandDefault{\textrangle}         {\tc at check@symbol3\textrangle}
-\DeclareTextCommandDefault{\textcolonmonetary}  {\tc at check@symbol4\textcolonmonetary}
-\DeclareTextCommandDefault{\textdong}           {\tc at check@symbol4\textdong}
-\DeclareTextCommandDefault{\textdownarrow}      {\tc at check@symbol4\textdownarrow}
-\DeclareTextCommandDefault{\textleftarrow}      {\tc at check@symbol4\textleftarrow}
-\DeclareTextCommandDefault{\textlira}           {\tc at check@symbol4\textlira}
-\DeclareTextCommandDefault{\textrightarrow}     {\tc at check@symbol4\textrightarrow}
-\DeclareTextCommandDefault{\textuparrow}        {\tc at check@symbol4\textuparrow}
-\DeclareTextCommandDefault{\textwon}            {\tc at check@symbol4\textwon}
-\DeclareTextCommandDefault{\textestimated}      {\tc at check@symbol5\textestimated}
-\DeclareTextCommandDefault{\textnumero}         {\tc at check@symbol5\textnumero}
-\DeclareTextCommandDefault{\textflorin}         {\tc at check@symbol6\textflorin}
-\DeclareTextCommandDefault{\textcurrency}       {\tc at check@symbol6\textcurrency}
-\DeclareTextCommandDefault{\textfractionsolidus}{\tc at check@symbol7\textfractionsolidus}
-\DeclareTextCommandDefault{\textohm}            {\tc at check@symbol7\textohm}
-\DeclareTextCommandDefault{\textmu}             {\tc at check@symbol7\textmu}
-\DeclareTextCommandDefault{\textminus}          {\tc at check@symbol7\textminus}
-\DeclareTextCommandDefault{\textblank}          {\tc at check@symbol{8}\textblank}
-\DeclareTextCommandDefault{\textinterrobangdown}{\tc at check@symbol{8}\textinterrobangdown}
-\DeclareTextCommandDefault{\textinterrobang}    {\tc at check@symbol{8}\textinterrobang}
+\DeclareTextCommandDefault{\textlangle}
+                          {\tc at check@symbol3\textlangle}
+\DeclareTextCommandDefault{\textrangle}
+                          {\tc at check@symbol3\textrangle}
+\DeclareTextCommandDefault{\textcolonmonetary}
+                          {\tc at check@symbol4\textcolonmonetary}
+\DeclareTextCommandDefault{\textdong}
+                          {\tc at check@symbol4\textdong}
+\DeclareTextCommandDefault{\textdownarrow}
+                          {\tc at check@symbol4\textdownarrow}
+\DeclareTextCommandDefault{\textleftarrow}
+                          {\tc at check@symbol4\textleftarrow}
+\DeclareTextCommandDefault{\textlira}
+                          {\tc at check@symbol4\textlira}
+\DeclareTextCommandDefault{\textrightarrow}
+                          {\tc at check@symbol4\textrightarrow}
+\DeclareTextCommandDefault{\textuparrow}
+                          {\tc at check@symbol4\textuparrow}
+\DeclareTextCommandDefault{\textwon}
+                          {\tc at check@symbol4\textwon}
+\DeclareTextCommandDefault{\textestimated}
+                          {\tc at check@symbol5\textestimated}
+\DeclareTextCommandDefault{\textnumero}
+                          {\tc at check@symbol5\textnumero}
+\DeclareTextCommandDefault{\textflorin}
+                          {\tc at check@symbol6\textflorin}
+\DeclareTextCommandDefault{\textcurrency}
+                          {\tc at check@symbol6\textcurrency}
+\DeclareTextCommandDefault{\textfractionsolidus}
+                          {\tc at check@symbol7\textfractionsolidus}
+\DeclareTextCommandDefault{\textohm}
+                          {\tc at check@symbol7\textohm}
+\DeclareTextCommandDefault{\textmu}
+                          {\tc at check@symbol7\textmu}
+\DeclareTextCommandDefault{\textminus}
+                          {\tc at check@symbol7\textminus}
+\DeclareTextCommandDefault{\textblank}
+                          {\tc at check@symbol{8}\textblank}
+\DeclareTextCommandDefault{\textinterrobangdown}
+                          {\tc at check@symbol{8}\textinterrobangdown}
+\DeclareTextCommandDefault{\textinterrobang}
+                          {\tc at check@symbol{8}\textinterrobang}
 \DeclareTextCommandDefault{\texteuro}
-            {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
-\DeclareTextCommandDefault{\textcelsius}{\tc at check@symbol{9}\textcelsius}
-\DeclareTextCommandDefault{\textonesuperior}{\tc at check@symbol{9}\textonesuperior}
-\DeclareTextCommandDefault{\textthreequartersemdash}{\tc at check@symbol{9}\textthreequartersemdash}
-\DeclareTextCommandDefault{\textthreesuperior}{\tc at check@symbol{9}\textthreesuperior}
-\DeclareTextCommandDefault{\texttwelveudash}{\tc at check@symbol{9}\texttwelveudash}
-\DeclareTextCommandDefault{\texttwosuperior}{\tc at check@symbol{9}\texttwosuperior}
-\DeclareTextCommandDefault{\textbardbl}{\tc at check@symbol{9}\textbardbl}
+  {\CheckEncodingSubset\UseTextSymbol{TS1}\tc at fake@euro{8}\texteuro}
+\DeclareTextCommandDefault{\textcelsius}
+                          {\tc at check@symbol{9}\textcelsius}
+\DeclareTextCommandDefault{\textonesuperior}
+                          {\tc at check@symbol{9}\textonesuperior}
+\DeclareTextCommandDefault{\textthreequartersemdash}
+                          {\tc at check@symbol{9}\textthreequartersemdash}
+\DeclareTextCommandDefault{\textthreesuperior}
+                          {\tc at check@symbol{9}\textthreesuperior}
+\DeclareTextCommandDefault{\texttwelveudash}
+                          {\tc at check@symbol{9}\texttwelveudash}
+\DeclareTextCommandDefault{\texttwosuperior}
+                          {\tc at check@symbol{9}\texttwosuperior}
+\DeclareTextCommandDefault{\textbardbl}
+                          {\tc at check@symbol{9}\textbardbl}
 
 \ifx \Umathcode\@undefined  \else
 \DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}}
@@ -5993,12 +8357,12 @@
 \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{\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
@@ -6030,31 +8394,32 @@
 \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}{lmtt}    {1} % missing TM, SM and
+                                         % 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}{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}
@@ -6065,11 +8430,11 @@
 \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}{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}
@@ -6177,7 +8542,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}{Forum-LF}      {7}  % the superiors are missing
 \DeclareEncodingSubset{TS1}{Cochineal-*}              {8}
 \DeclareEncodingSubset{TS1}{AlgolRevived-TLF}         {9}
 \def\UseLegacyTextSymbols{%
@@ -6249,7 +8614,8 @@
 \let\textbrokenbar\@undefined
 \let\textcelsius\@undefined
 \let\textcent\@undefined
-\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
+\DeclareTextCommandDefault{\textcopyright}
+                          {\textcircled{c}}
 \let\textdegree\@undefined
 \let\textdiv\@undefined
 \let\textlnot\@undefined
@@ -6256,19 +8622,24 @@
 \let\textonehalf\@undefined
 \let\textonequarter\@undefined
 \let\textonesuperior\@undefined
-\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
-\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
+\DeclareTextCommandDefault{\textordfeminine}
+                          {\textsuperscript{a}}
+\DeclareTextCommandDefault{\textordmasculine}
+                          {\textsuperscript{o}}
 \let\textpm\@undefined
 \let\textquotesingle\@undefined
 \let\textquotestraightbase\@undefined
 \let\textquotestraightdblbase\@undefined
-\DeclareTextCommandDefault{\textregistered}{\textcircled{%
-     \check at mathfonts\fontsize\sf at size\z@\math at fontsfalse\selectfont R}}
+\DeclareTextCommandDefault{\textregistered}
+    {\textcircled{%
+        \check at mathfonts\fontsize\sf at size\z@
+        \math at fontsfalse\selectfont R}}
 \let\textthreequartersemdash\@undefined
 \let\textthreequarters\@undefined
 \let\textthreesuperior\@undefined
 \let\texttimes\@undefined
-\DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
+\DeclareTextCommandDefault{\texttrademark}
+                          {\textsuperscript{TM}}
 \let\texttwelveudash\@undefined
 \let\texttwosuperior\@undefined
 \let\textyen\@undefined
@@ -6678,6 +9049,9 @@
   \expandafter\endgroup\if at endpe\@doendpe\fi
   \if at ignore\@ignorefalse\ignorespaces\fi}
 
+\expandafter\let\csname begin \endcsname\@undefined
+\expandafter\let\csname end \endcsname\@undefined
+
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
                  {\AtBeginEnvironment}{Hooks for environments}%
@@ -7124,6 +9498,28 @@
     \mb at b
     \kern\z@}}
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\color at begingroup}{color group settings}%
+\let\color at begingroup\begingroup
+\def\color at endgroup{\endgraf\endgroup}
+\def\color at setgroup{\color at begingroup}        % changed further in color package
+\let\normalcolor\relax                        % remains untouched; only changed in a color package
+\def\color at hbox{\hbox\bgroup\color at begingroup}
+\def\color at vbox{\vbox\bgroup\color at begingroup}
+\def\color at endbox{\color at endgroup\egroup}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\color at begingroup}{color group settings}%
+
+\let\color at begingroup\relax
+\let\color at endgroup\relax
+\let\color at setgroup\relax
+\let\normalcolor\relax
+\let\color at hbox\relax
+\let\color at vbox\relax
+\let\color at endbox\relax
+
+\EndIncludeInRelease
 \IncludeInRelease{2015/01/01}%
                  {\savebox}{Make \savebox robust}%
 \DeclareRobustCommand\savebox[1]{%
@@ -7203,6 +9599,39 @@
   \baselineskip\normalbaselineskip
   \sloppy}
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\@mpfootnotetext}{footnotetext tagging}%
+\long\def\@mpfootnotetext#1{%
+  \global\setbox\@mpfootins\vbox{%
+    \unvbox\@mpfootins
+    \reset at font\footnotesize
+    \hsize\columnwidth
+    \@parboxrestore
+    \protected at edef\@currentlabel
+         {\csname p at mpfootnote\endcsname\@thefnmark}%
+    \color at begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
+    \color at endgroup}}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\@mpfootnotetext}{footnotetext tagging}%
+
+\long\def\@mpfootnotetext#1{%
+  \global\setbox\@mpfootins\vbox{%
+    \unvbox\@mpfootins
+    \reset at font\footnotesize
+    \hsize\columnwidth
+    \@parboxrestore
+    \protected at edef\@currentlabel
+         {\csname p at mpfootnote\endcsname\@thefnmark}%
+    \color at begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \color at endgroup}}
+
+\EndIncludeInRelease
 \IncludeInRelease{2015/01/01}%
                  {\rule}{Make \rule robust}%
 \DeclareRobustCommand\rule{\@ifnextchar[\@rule{\@rule[\z@]}}%
@@ -8145,6 +10574,39 @@
   \@fpbot \@dblfpbot
 }%
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\@savemarbox}{Explicit par for marginpar}%
+\long\def \@savemarbox #1#2{%
+  \global\setbox #1%
+    \color at vbox
+      \vtop{%
+        \hsize\marginparwidth
+        \@parboxrestore
+        \@marginparreset
+        #2\par
+        \@minipagefalse
+        \outer at nobreak
+        }%
+    \color at endbox
+}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\@savemarbox}{Explicit par for marginpar}%
+
+\long\def \@savemarbox #1#2{%
+  \global\setbox #1%
+    \color at vbox
+      \vtop{%
+        \hsize\marginparwidth
+        \@parboxrestore
+        \@marginparreset
+        #2%
+        \@minipagefalse
+        \outer at nobreak
+        }%
+    \color at endbox
+}
+\EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
                  {\@textsuperscript}{superscript baseline}%
 \def\@textsuperscript#1{%
@@ -8180,6 +10642,56 @@
                  {\@textsubscript}{subscript baseline}%
 \let\@textsubscript\@undefined
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\@footnotetext}{footnotetext tagging}%
+\long\def\@footnotetext#1{\insert\footins{%
+    \reset at font\footnotesize
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+    \hsize\columnwidth \@parboxrestore
+    \protected at edef\@currentlabel{%
+       \csname p at footnote\endcsname\@thefnmark
+    }%
+    \color at begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \par
+    \color at endgroup}}%
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\@footnotetext}{footnotetext tagging}%
+
+\long\def\@footnotetext#1{\insert\footins{%
+    \reset at font\footnotesize
+    \interlinepenalty\interfootnotelinepenalty
+    \splittopskip\footnotesep
+    \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
+    \hsize\columnwidth \@parboxrestore
+    \protected at edef\@currentlabel{%
+       \csname p at footnote\endcsname\@thefnmark
+    }%
+    \color at begingroup
+      \@makefntext{%
+        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+    \color at endgroup}}%
+
+\EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\footref}{Add footref}%
+\def\footref#1{%
+  \begingroup
+    \unrestored at protected@xdef\@thefnmark{\ref{#1}}%
+  \endgroup
+  \@footnotemark
+}
+\EndIncludeInRelease
+%%<latexrelease>\IncludeInRelease{0000/00/00}%
+%%<latexrelease>                 {\footref}{Add footref}%
+%%<latexrelease>
+%%<latexrelease>\let\footref\@undefined
+%%<latexrelease>
+%%<latexrelease>\EndIncludeInRelease
 %%% From File: ltidxglo.dtx
 %%% From File: ltbibl.dtx
 \IncludeInRelease{2021/05/01}%
@@ -8311,6 +10823,7 @@
 \IncludeInRelease{2020/10/01}{\@kernel at currpathstack}%
   {Add \@kernel at currpathstack}%
 \gdef\@kernel at currpathstack{}
+\g at addto@macro\@kernel at currpathstack{{}}
 \def\@p at pfilepath#1{%
   \gdef\@currpath{#1}\@p at pfilepath@aux\@empty}
 \def\@p at pfilepath@aux#1\@nil{%
@@ -8465,8 +10978,28 @@
 \let\ProvidesClass\ProvidesPackage
 \@onlypreamble\ProvidesClass
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\@pass at ptions}{Raw option lists}%
+\def\@pass at ptions#1#2#3{%
+  \@expl@@@filehook at set@curr at file@@nNN
+    {\@expl@@@filehook at resolve@file at subst@@w #3.#1\@nil}%
+      \reserved at a\reserved at b
+  \@expl@@@filehook at clear@replacement at flag@@
+  \expandafter\xdef\csname opt@\reserved at a\endcsname{%
+    \@ifundefined{opt@\reserved at a}\@empty
+      {\csname opt@\reserved at a\endcsname,}%
+    \zap at space#2 \@empty}%
+  \expandafter\let
+    \csname opt@#3.#1\expandafter\endcsname
+    \csname opt@\reserved at a\endcsname
+    \@ifundefined{@raw at opt@#3.#1}%
+      {\expandafter\gdef\csname @raw at opt@#3.#1\endcsname{#2}}%
+      {\expandafter\g at addto@macro\csname @raw at opt@#3.#1\endcsname{,#2}}%
+}
+\EndIncludeInRelease
 \IncludeInRelease{2020/10/01}{\@pass at ptions}
   {Add file replacement in \@pass at ptions}%
+
 \def\@pass at ptions#1#2#3{%
   \@expl@@@filehook at set@curr at file@@nNN
     {\@expl@@@filehook at resolve@file at subst@@w #3.#1\@nil}%
@@ -8482,6 +11015,7 @@
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}{\@pass at ptions}
   {\@pass at ptions}%
+
 \def\@pass at ptions#1#2#3{%
   \expandafter\xdef\csname opt@#3.#1\endcsname{%
     \@ifundefined{opt@#3.#1}\@empty
@@ -8488,6 +11022,26 @@
       {\csname opt@#3.#1\endcsname,}%
     \zap at space#2 \@empty}}
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\OptionNotUsed}{filter unused option list}%
+\def\@remove at eq@value#1=#2\@nil{#1}
+\def\OptionNotUsed{%
+  \ifx\@currext\@clsextension
+    \xdef\@unusedoptionlist{%
+      \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
+      \expandafter\@remove at eq@value\CurrentOption=\@nil}%
+  \fi}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\OptionNotUsed}{filter unused option list}%
+\let\@remove at eq@value\@undefined
+\def\OptionNotUsed{%
+  \ifx\@currext\@clsextension
+    \xdef\@unusedoptionlist{%
+      \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
+      \CurrentOption}%
+  \fi}
+\EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
                  {\@process at pti@ns}{Unused options issue}%
 \def\@process at pti@ns{%
@@ -8520,6 +11074,21 @@
   \let\@fileswith at pti@ns\@@fileswith at pti@ns
   \AtEndOfPackage{\let\@unprocessedoptions\relax}}
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\@use at ption}{filter unused option list}%
+\def\@use at ption{%
+  \@expandtwoargs\@removeelement
+     {\expandafter\@remove at eq@value\CurrentOption=\@nil}%
+  \@unusedoptionlist\@unusedoptionlist
+  \csname ds@\CurrentOption\endcsname}
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\@use at ption}{filter unused option list}%
+\def\@use at ption{%
+  \@expandtwoargs\@removeelement\CurrentOption
+  \@unusedoptionlist\@unusedoptionlist
+  \csname ds@\CurrentOption\endcsname}
+\EndIncludeInRelease
 \IncludeInRelease{2017/01/01}%
                  {\ExecuteOptions}{Spaces in \ExecuteOptions}%
 \def\ExecuteOptions#1{%
@@ -8555,6 +11124,34 @@
   \AtEndOfPackage{\let\@unprocessedoptions\relax}%
   \@loadwithoptions\@pkgextension\RequirePackage}
 \EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+        {\@fileswith at pti@ns}{ifx tests in \@fileswith at pti@ns}%
+\def\@fileswith at pti@ns#1[#2]#3[#4]{%
+  \ifx#1\@clsextension
+    \ifx\@classoptionslist\relax
+      \xdef\@classoptionslist{\zap at space#2 \@empty}%
+      \gdef\@raw at classoptionslist{#2}%
+      \def\reserved at a{%
+        \@onefilewithoptions#3[{#2}][{#4}]#1%
+        \@documentclasshook}%
+    \else
+      \def\reserved at a{%
+        \@onefilewithoptions#3[{#2}][{#4}]#1}%
+    \fi
+  \else
+    \def\reserved at b##1,{%
+      \ifx\@nnil##1\relax\else
+        \ifx\@nnil##1\@nnil\else
+         \noexpand\@onefilewithoptions##1[{#2}][{#4}]%
+         \noexpand\@pkgextension
+        \fi
+        \expandafter\reserved at b
+      \fi}%
+      \edef\reserved at a{\zap at space#3 \@empty}%
+      \edef\reserved at a{\expandafter\reserved at b\reserved at a,\@nnil,}%
+  \fi
+  \reserved at a}
+\EndIncludeInRelease
 \IncludeInRelease{2017/01/01}%
         {\@fileswith at pti@ns}{ifx tests in \@fileswith at pti@ns}%
 \def\@fileswith at pti@ns#1[#2]#3[#4]{%
@@ -8911,7 +11508,8 @@
       \ifx\relax##1\relax%
       \else%
           \@latex at warning{Writing text `##1' before %
-             \string\end{\@currenvir}\MessageBreak as last line of \@curr at file}%
+            \string\end{\@currenvir}\MessageBreak
+            as last line of \@curr at file}%
         \immediate\write\reserved at c{##1}%
       \fi%
       \ifx\relax##2\relax%
@@ -8933,7 +11531,8 @@
 \endgroup%
 \EndIncludeInRelease
 \IncludeInRelease{2019/10/01}%
-                 {\filec at ntents}{Spaces in file names + optional arg}%
+    {\filec at ntents}{Spaces in file names + optional arg}%
+
 \def\filecontents{\@tempswatrue\@fileswtrue
   \@ifnextchar[\filec at ntents@opt\filec at ntents
 }
@@ -9063,7 +11662,7 @@
 \endgroup%
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}%
-                 {\filec at ntents}{Spaces in file names + optional arg}%
+    {\filec at ntents}{Spaces in file names + optional arg}%
 
 \let\filec at ntents@opt        \@undefined
 \let\filec at ntents@force      \@undefined
@@ -9152,12 +11751,9 @@
     \noexpand\reserved at 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}
+\providecommand\ltfilehookversion{v1.0g}
+\providecommand\ltfilehookdate{2021/02/08}
 \IncludeInRelease{2020/10/01}%
                  {\CurrentFile}{Hook management file}%
 \ExplSyntaxOn
@@ -9256,7 +11852,8 @@
   {
     \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 }
+      { \__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
   {
@@ -9270,7 +11867,8 @@
           }
           { \__file_parse_full_name_tidy:nnnN {#1} { .#2 } }
       }
-      { \__file_parse_full_name_base:nw { #1 . #2 } #3 \s__file_stop }
+      { \__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
   {
@@ -9335,6 +11933,7 @@
 \long\def \InputIfFileExists#1#2{%
   \IfFileExists{#1}%
     {#2\@addtofilelist{#1}\@@input \@filef at und}}
+\expandafter\let\csname InputIfFileExists \endcsname\@undefined
 \let\@input at file@exists at with@hooks\@undefined
 \let\unqu at tefilef@und\@undefined
 \EndIncludeInRelease
@@ -9351,7 +11950,8 @@
           @file-subst@
           \__filehook_subst_file_normalize:Nn \use_ii_iii:nnn {#1}
         }
-        { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn {#2} }
+        { \__filehook_subst_file_normalize:Nn \__filehook_file_name_compose:nnn
+                                      {#2} }
     \group_end:
   }
 \cs_new_protected:Npn \__filehook_subst_remove:n #1
@@ -9391,11 +11991,12 @@
 \let \undeclare at file@substitution \@gobble
 
 \EndIncludeInRelease
-\IncludeInRelease{2020/10/01}%
+\IncludeInRelease{2021/05/01}%
           {\set at curr@file}{Setting current file name}%
 \def\set at curr@file#1{%
   \begingroup
     \escapechar\m at ne
+    \let\protect\string
     \expandafter\def\csname\expandafter\endcsname
       \expandafter{\csname\endcsname}%
     \@expl@@@filehook at if@no at extension@@nTF{#1}%
@@ -9411,6 +12012,25 @@
     \@expl@@@filehook at clear@replacement at flag@@
   \endgroup}
 \EndIncludeInRelease
+\IncludeInRelease{2020/10/01}%
+\def\set at curr@file#1{%
+  \begingroup
+    \escapechar\m at ne
+    \expandafter\def\csname\expandafter\endcsname
+      \expandafter{\csname\endcsname}%
+    \@expl@@@filehook at if@no at extension@@nTF{#1}%
+      {\@tempswatrue}{\@tempswafalse}%
+    \@kernel at make@file at csname\@curr at file
+      \@expl@@@filehook at resolve@file at subst@@w {#1}%
+    \@expl@@@filehook at if@file at replaced@@TF
+      {\@kernel at make@file at csname\@curr at file@reqd
+         \@expl@@@filehook at normalize@file at name@@w{#1}%
+       \if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file@reqd \fi}%
+      {\if at tempswa \@expl@@@filehook at drop@extension@@N\@curr at file \fi
+       \global\let\@curr at file@reqd\@curr at file}%
+    \@expl@@@filehook at clear@replacement at flag@@
+  \endgroup}
+\EndIncludeInRelease
 \IncludeInRelease{2019/10/01}%
           {\set at curr@file}{Setting current file name}%
 \def\set at curr@file#1{%
@@ -9463,7 +12083,7 @@
 \ExplSyntaxOff
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
-          {\__filehook_resolve_file_subst:w}{Replace files detect loops}%
+     {\__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 }
@@ -9484,7 +12104,7 @@
 \ExplSyntaxOff
 \EndIncludeInRelease
 \IncludeInRelease{2020/10/01}%
-         {\__filehook_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
+  {\__filehook_file_subst_tortoise_hare:nn}{Tortoise and Hare}%
 \ExplSyntaxOn
 \cs_new:Npn \__filehook_file_subst_tortoise_hare:nn #1 #2 #3
   {
@@ -9574,11 +12194,12 @@
 \EndIncludeInRelease
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %%
-%% File: ltshipout.dtx (C) Copyright 2020,2021 Frank Mittelbach, LaTeX Team
+%% Copyright (C) 2020-2021
+%%               Frank Mittelbach, LaTeX Team
 %%
 %%% From File: ltshipout.dtx
-\providecommand\ltshipoutversion{v1.0d}
-\providecommand\ltshipoutdate{2020/12/06}
+\providecommand\ltshipoutversion{v1.0i}
+\providecommand\ltshipoutdate{2021/01/25}
 \IncludeInRelease{2020/10/01}%
                  {\shipout}{Hook management (shipout)}%
 \ExplSyntaxOn
@@ -9601,6 +12222,27 @@
   }
 \box_new:N  \l_shipout_box
 \cs_set_eq:NN \ShipoutBox \l_shipout_box
+\box_new:N  \l__shipout_raw_box
+\sys_if_engine_luatex:TF
+  {
+    \newluafunction \__shipout_finalize_box:
+    \exp_args:Nx \everyjob {
+      \exp_not:V \everyjob
+      \exp_not:N \lua_now:n {
+        luatexbase.create_callback('pre_shipout_filter', 'list')
+        local~call, getbox, setbox = luatexbase.call_callback, tex.getbox, tex.setbox~
+        lua.get_functions_table()[\the \__shipout_finalize_box:] = function()
+          local~result = call('pre_shipout_filter', getbox(\the \l_shipout_box))
+          if~not (result == true) then~
+            setbox(\the \l_shipout_box, result~or~nil)
+          end~
+        end
+      }
+    }
+    \protected \luadef \__shipout_finalize_box: \the \__shipout_finalize_box:
+  } {
+    \cs_set_eq:NN \__shipout_finalize_box: \scan_stop:
+  }
 \cs_set_protected:Npn \__shipout_execute: {
   \tl_set:Nx \l__shipout_group_level_tl
      { \int_value:w \tex_currentgrouplevel:D }
@@ -9612,26 +12254,43 @@
 \cs_new:Npn \__shipout_execute_test_level: {
   \int_compare:nNnT
      \l__shipout_group_level_tl < \tex_currentgrouplevel:D
-     \tex_aftergroup:D
-  \__shipout_execute_cont:
+     \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} }
+  \__shipout_execute_main_cont:Nnnn
+     \l_shipout_box
+     { \hook_use:n {shipout/before} }
+     { \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 at before@shipout at background }
+         { \__shipout_add_background_picture:n
+           { \@kernel at before@shipout at background
+             \hook_use:n {shipout/background}
+             \@kernel at after@shipout at background }
+         }
+     }
+     { \hook_use:n {shipout/after} }
+}
+\cs_new:Npn \__shipout_execute_main_cont:Nnnn #1#2#3#4 {
+  \box_if_empty:NTF #1
+    { \@latex at warning{Ignoring~ void~ shipout~ box} }
     {
-      \bool_gset_false:N \g__shipout_discard_bool
+                                              % \DiscardShipoutBox on doc-level
       \cs_set_eq:NN \__shipout_saved_protect: \protect
       \set at typeset@protect
-      \__shipout_get_box_size:N \l_shipout_box
-      \hook_use:n {shipout/before}
+      \__shipout_get_box_size:N #1
+      #2
       \int_gincr:N \g_shipout_totalpages_int
       \bool_if:NTF \g__shipout_discard_bool
-        { \PackageInfo{ltshipout}{Completed~ page~ discarded}
+        { \@latex at info@no at line{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}{
+        { \box_if_empty:NTF #1
+            { \@latex at warning{
                 Shipout~ box~ was~ voided~ by~ hook,\MessageBreak
                 ignoring~ shipout~ box  }
             }
@@ -9641,37 +12300,54 @@
                 \typeout{Absolute~ page~ =~ \int_use:N \g_shipout_readonly_int
                          \space (target:~ \@abspage at 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 at before@shipout at background }
-                   { \__shipout_add_background_picture:n
-                     { \@kernel at before@shipout at background
-                       \hook_use:n {shipout/background} } }
-              \__shipout_execute_firstpage_hook:
+              \__shipout_get_box_size:N #1
+              \__shipout_run_firstpage_hook:
+              #3
+              \__shipout_add_firstpage_specials:
               \int_compare:nNnT \@abspage at last = \g_shipout_readonly_int
                 { \bool_lazy_and:nnF
                     { \hook_if_empty_p:n {shipout/lastpage} }
                     { \tl_if_empty_p:N \@kernel at after@shipout at 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 at after@shipout at lastpage }
+                          on~ page~ \int_use:N \g_shipout_readonly_int } }
+                      \__shipout_add_foreground_box:n
+                          { \UseHook{shipout/lastpage}
+                            \@kernel at after@shipout at lastpage }
                     }
                     \bool_gset_true:N \g__shipout_lastpage_handled_bool
                 }
+              \__shipout_finalize_box:
               \cs_set_eq:NN \protect \exp_not:N
               \tex_shipout:D \box_use:N \l_shipout_box
+              \__shipout_drop_firstpage_specials:
+              \set at typeset@protect
+              #4
             }
         }
       \cs_set_eq:NN \protect \__shipout_saved_protect:
     }
 }
+\cs_set_protected:Npn \__shipout_execute_raw: {
+  \tl_set:Nx \l__shipout_group_level_tl
+     { \int_value:w \tex_currentgrouplevel:D }
+  \tex_afterassignment:D \__shipout_execute_test_level_raw:
+  \tex_setbox:D \l__shipout_raw_box
+}
+\cs_new:Npn \__shipout_execute_test_level_raw: {
+  \int_compare:nNnT
+     \l__shipout_group_level_tl < \tex_currentgrouplevel:D
+     \tex_aftergroup:D \__shipout_execute_nohooks_cont:
+}
+\cs_new:Npn \__shipout_execute_nohooks_cont: {
+  \__shipout_execute_main_cont:Nnnn \l__shipout_raw_box
+     {} { \__shipout_debug:n{ \typeout{Doing~ raw~ shipout~ ...} }
+          \box_set_eq:NN \l_shipout_box \l__shipout_raw_box } {}
+}
+
+\cs_gset_eq:NN \RawShipout \__shipout_execute_raw:
 \cs_new_eq:NN  \__shipout_saved_protect: \protect
 \hook_new:n{shipout/before}
+\hook_new:n{shipout/after}
 \hook_new:n{shipout/foreground}
 \hook_new:n{shipout/background}
 \hook_new:n{shipout/firstpage}
@@ -9678,10 +12354,17 @@
 \hook_new:n{shipout/lastpage}
 \let\@kernel at after@shipout at lastpage\@empty
 \let\@kernel at before@shipout at 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:
+\let\@kernel at after@shipout at background\@empty
+\cs_new:Npn \__shipout_run_firstpage_hook: {
+  \hook_if_empty:nTF {shipout/firstpage}
+       {
+         \cs_gset_eq:NN \__shipout_add_firstpage_specials:  \prg_do_nothing:
+         \cs_gset_eq:NN \__shipout_drop_firstpage_specials: \prg_do_nothing:
+       }
+       {
+         \hbox_set:Nn \l__shipout_firstpage_box { \UseHook{shipout/firstpage} }
+       }
+  \cs_gset_eq:NN \__shipout_run_firstpage_hook: \prg_do_nothing:
   \cs_gset:Npn \__shipout_add_firstpage_material:Nn ##1 ##2 {
     \@latex at warning{
         First~ page~ is~ already~ shipped~ out,~ ignoring\MessageBreak
@@ -9688,6 +12371,18 @@
         \string##1 }
   }
 }
+\cs_new:Npn \__shipout_add_firstpage_specials: {
+  \box_set_eq:NN \l__shipout_raw_box \l_shipout_box
+  \__shipout_add_background_box:n { \hbox_unpack_drop:N \l__shipout_firstpage_box }
+  \cs_gset_eq:NN \__shipout_add_firstpage_specials: \prg_do_nothing:
+}
+\cs_new:Npn \__shipout_drop_firstpage_specials: {
+    \box_set_eq:NN \l_shipout_box \l__shipout_raw_box
+    \cs_gset_eq:NN \__shipout_drop_firstpage_specials:  \prg_do_nothing:
+  }
+
+\box_new:N \l__shipout_firstpage_box
+
 \bool_new:N \g__shipout_lastpage_handled_bool
 \cs_new:Npn \__shipout_add_firstpage_material:Nn #1#2 {
    \AddToHook{shipout/firstpage}{#2}
@@ -9696,8 +12391,8 @@
   \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_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
@@ -9903,7 +12598,8 @@
   {\ifnum\@abspage at last<\maxdimen
      \xdef\PreviousTotalPages{\@abspage at last}\fi}
 \cs_new_eq:NN \DiscardShipoutBox \shipout_discard:
-\cs_set_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 at add@firstpage at material@@Nn
@@ -9926,6 +12622,7 @@
                 \csname tex_shipout:D\endcsname
 \fi
 
+\let \RawShipout\@undefined
 \let \ShipoutBox\@undefined
 \let \ReadonlyShipoutCounter \@undefined
 \let \c at totalpages \@undefined
@@ -9949,14 +12646,7 @@
 \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
@@ -11038,13 +13728,26 @@
   \fi
 \EndIncludeInRelease
 \IncludeInRelease{2017/04/15}%
-                 {\document at default@language}{Save language for hyphenation}%
+       {\document at default@language}{Save language for hyphenation}%
 \let\document at default@language\m at ne
 \EndIncludeInRelease
 \IncludeInRelease{0000/00/00}%
-                 {\document at default@language}{Save language for hyphenation}%
+       {\document at default@language}{Save language for hyphenation}%
 \let\document at default@language\@undefined
 \EndIncludeInRelease
+\IncludeInRelease{2021/05/01}%
+                 {\pdfgentounicode}{Preload glyphtounicode}%
+\ifx \pdfgentounicode \@undefined \else
+    \input glyphtounicode
+  \pdfgentounicode=1
+\fi
+\EndIncludeInRelease
+\IncludeInRelease{0000/00/00}%
+                 {\pdfgentounicode}{Preload glyphtounicode}%
+\ifx \pdfgentounicode \@undefined \else
+  \pdfgentounicode=0
+\fi
+\EndIncludeInRelease
 \IncludeInRelease{2018/04/01}%
                  {\UTFviii at invalid}{UTF-8 default}%
 \ifnum0%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexsym.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexsym.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latexsym.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin1.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin1.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin1.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin1.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin10.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin10.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin10.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin10.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\texteuro}
    {\TextSymbolUnavailable\texteuro}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin2.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin2.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin2.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin2.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textcurrency}
    {\TextSymbolUnavailable\textcurrency}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin3.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin3.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin3.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin3.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textcurrency}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin4.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin4.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin4.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin4.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textcurrency}
    {\TextSymbolUnavailable\textcurrency}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin5.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin5.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin5.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin5.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin9.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin9.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/latin9.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
  \ProvidesFile{latin9.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textcent}
    {\TextSymbolUnavailable\textcent}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/lcyenc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}
 \DeclareUnicodeCharacter{00BB}{\guillemotright}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/leqno.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/letter.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.lua	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 -- (but please observe conditions on bug reports sent to that address!)
 -- 
 -- 
--- Copyright 2015
--- The LaTeX3 Project and any individual authors listed elsewhere
+-- Copyright (C) 2015-2021
+-- The LaTeX Project and any individual authors listed elsewhere
 -- in this file.
 -- 
 -- This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltluatex.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -47,7 +47,7 @@
   #1#2[#3]{\endgroup\immediate\write-1{File: #1 #3}}
 \fi
 \ProvidesFile{ltluatex.tex}%
-[2020/12/06 v1.1s
+[2021/01/15 v1.1s
   LuaTeX support for plain TeX (core)
 ]
 \edef\etatcatcode{\the\catcode`\@}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltnews.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltnews.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltnews.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993-2020
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -35,7 +35,7 @@
 % with LaTeX.  The changes log is at the end of the file.
 
 % Copyright 1994-2004
-% Alan Jeffrey and the LaTeX3 project.
+% Alan Jeffrey and the LaTeX Project.
 
 % This is a LaTeX2e document class.
 
@@ -437,7 +437,7 @@
 \newcommand{\indicia}{\renewcommand{\@indicia}}
 \newcommand{\@indicia}{%
    \LaTeXNews, and the \LaTeX{} software,
-   are brought to you by the \LaTeX3 Project Team;
+   are brought to you by the \LaTeX\ Project Team;
    Copyright \@year, all rights reserved.
 }
 

Added: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,171 @@
+%%
+%% This is file `ltpara.ltx',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% ltpara.dtx  (with options: `2ekernel')
+%% 
+%% This is a generated file.
+%% 
+%% The source is maintained by the LaTeX Project team and bug
+%% 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-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%% 
+%% This file was generated from file(s) 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
+%%    https://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".
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% base system. You may however distribute the LaTeX base system without
+%% such generated files.
+%% 
+%% 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.
+%% File: ltpara.dtx (C) Copyright 2020-2021
+%%% From File: lthooks.dtx
+\def\ltparaversion{v1.0d}
+\def\ltparadate{2021/02/18}
+
+
+\ExplSyntaxOn
+
+\hook_new_pair:nn{para/before}{para/after}
+\hook_new_pair:nn{para/begin}{para/end}
+\let \@kernel at before@para at before \@empty
+\let \@kernel at before@para at begin  \@empty
+\let \@kernel at after@para at end     \@empty
+\let \@kernel at after@para at after   \@empty
+\tl_new:N \g__para_standard_everypar_tl
+\tl_gset:Nn \g__para_standard_everypar_tl {
+  \box_gset_to_last:N \g_para_indentation_box
+  \group_begin:
+    \tex_par:D
+  \group_end:
+  \tex_everypar:D { \__kernel_msg_error:nnnn {para}{mode}{before}{vertical} }
+  \@kernel at before@para at before
+  \hook_use:n {para/before}
+  \group_begin:
+    \tex_everypar:D {}
+    \skip_zero:N \tex_parskip:D
+    \tex_noindent:D
+  \group_end:
+  \tex_everypar:D{\g__para_standard_everypar_tl}
+  \cs_set_eq:NN \__para_handle_indent: \__para_add_indentation_box:
+  \@kernel at before@para at begin
+  \hook_use:n {para/begin}
+  \if_mode_horizontal: \else:
+    \__kernel_msg_error:nnnn {para}{mode}{begin}{vertical} \fi:
+  \__para_handle_indent:
+}
+\tex_everypar:D{\g__para_standard_everypar_tl}
+\newtoks \everypar
+
+\tl_gput_right:Nx \g__para_standard_everypar_tl {
+    \exp_not:N \the
+    \exp_not:N \toks
+    \the \allocationnumber
+    \c_space_tl
+}
+\box_new:N \g_para_indentation_box
+
+\cs_new:Npn \__para_add_indentation_box: {
+  \box_use_drop:N \g_para_indentation_box
+}
+\cs_new_eq:NN \__para_handle_indent: \__para_add_indentation_box:
+\cs_new:Npn \para_suppress_indentation: {
+  \cs_set_eq:NN \__para_handle_indent: \prg_do_nothing:
+}
+\cs_set_eq:NN \IndentationBox \g_para_indentation_box
+\cs_set_eq:NN \SuppressIndentationBox \para_suppress_indentation:
+\cs_new_protected:Npn \para_end: {
+  \mode_if_horizontal:TF {
+    \mode_if_inner:F {
+         \tex_unskip:D
+         \hook_use:n{para/end}
+         \@kernel at after@para at end
+         \mode_if_horizontal:TF {
+           \if_int_compare:w 0 < \tex_lastnodetype:D
+             \tex_kern:D \c_zero_dim
+           \fi:
+           \tex_par:D
+           \hook_use:n{para/after}
+           \@kernel at after@para at after
+         }
+         { \__kernel_msg_error:nnnn {para}{mode}{end}{horizontal} }
+    }
+  }
+  \tex_par:D
+}
+\cs_set_eq:NN \par     \para_end:
+\cs_set_eq:NN \@@par   \para_end:
+\cs_set_eq:NN \endgraf \para_end:
+\everypar{\@nodocument} %% To get an error if text appears before the
+\__kernel_msg_new:nnnn {para} {mode}
+  {
+    Illegal~mode~ change~ in~ hook~ 'para/#1'.\\
+    Hook~ code~ did~ not~ remain~ in~ #2~ mode.
+  }
+  {
+    Paragraph~ hooks~ cannot~ change~ the~ TeX~ mode~ without~ causing~
+    endless~ recursion.~ The~ hook~ code~ in~ 'para/#1'~ needs~ to~ stay~
+    in~ #2~ mode,~ but~ it~ didn't.~ Examine~ the~ hook~
+    code~ with~ \ShowHook~ to~ find~ the~ issue.
+  }
+\ExplSyntaxOff
+\IfFormatAtLeastTF{2021/05/01}{}
+{
+\long\def \@savemarbox #1#2{%
+  \global\setbox #1%
+    \color at vbox
+      \vtop{%
+        \hsize\marginparwidth
+        \@parboxrestore
+        \@marginparreset
+        #2\par                    % <-- needed
+        \@minipagefalse
+        \outer at nobreak
+        }%
+    \color at endbox
+}
+\newcounter{paracnt}
+\def\@kernel at before@para at begin{%
+  \stepcounter{paracnt}%
+  \typeout{PARA: \arabic{paracnt} start
+    (\@currenvir\space level\on at line)}%
+}
+\def\@kernel at after@para at end  {%
+  \typeout{PARA: \arabic{paracnt} end \space\space
+    (\@currenvir\space level\on at line)}%
+  \addtocounter{paracnt}{-1}%
+}
+\let\color at begingroup\begingroup
+\def\color at endgroup{\endgraf\endgroup}
+\def\color at setgroup{\color at begingroup}  % \def\color at setgroup{\color at begingroup\set at color}
+\def\color at hbox{\hbox\bgroup\color at begingroup}
+\def\color at vbox{\vbox\bgroup\color at begingroup}
+\def\color at endbox{\color at endgroup\egroup}
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%
+%% End of file `ltpara.ltx'.


Property changes on: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltpara.ltx
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxcheck.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -29,7 +29,7 @@
 %
 % \iffalse
 %% File `ltxcheck.tex'.
-%% Copyright (C) 1994-1997 LaTeX3 project, David Carlisle
+%% Copyright (C) 1994-1997 LaTeX Project, David Carlisle
 %%
 % LaTeX Test File.
 % ================

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxdoc.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ltxguide.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993-2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.
@@ -34,7 +34,7 @@
 % and `LaTeX2e for class and package writers'.  The changes log is at
 % the end of the file.
 
-% Copyright 1994 1999 Alan Jeffrey and the LaTeX3 project.
+% Copyright 1994-1999 Alan Jeffrey and the LaTeX Project.
 
 % This is a LaTeX2e document class.
 

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ly1enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A2}{\textcent}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/macce.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/macce.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/macce.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{macce.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textdiv}
    {\TextSymbolUnavailable\textdiv}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/makeidx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/makeidx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/makeidx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/minimal.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/minimal.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/minimal.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright 1993-2019
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/newlfont.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/newlfont.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/newlfont.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/next.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/next.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/next.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -44,7 +44,7 @@
 
 
   \ProvidesFile{next.def}
-   [2020/11/26 v1.3d Input encoding file]
+   [2021/02/14 v1.3d Input encoding file]
 \ProvideTextCommandDefault{\textdegree}{\ensuremath{{^\circ}}}
 \ProvideTextCommandDefault{\textonehalf}{\ensuremath{\frac12}}
 \ProvideTextCommandDefault{\textonequarter}{\ensuremath{\frac14}}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/nfssfont.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/oldlfont.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmm.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlcmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlenc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlenc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omlenc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{omlenc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \DeclareFontEncoding{OML}{}{}
 \DeclareTextSymbol{\textless}{OML}{`\<}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omllcmm.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omscmsy.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{omsenc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \DeclareFontEncoding{OMS}{}{}
 \DeclareTextSymbol{\textasteriskcentered}{OMS}{3}   % "03

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omsenc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00B6}{\textparagraph}
 \DeclareUnicodeCharacter{00B7}{\textperiodcentered}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omslcmsy.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxcmex.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/omxlcmex.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/openbib.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/openbib.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/openbib.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmdh.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfib.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmfr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1cmvtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{ot1enc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \DeclareFontEncoding{OT1}{}{}
 \DeclareTextAccent{\"}{OT1}{127}
@@ -77,6 +77,9 @@
 \DeclareTextSymbol{\ss}{OT1}{25}
 \DeclareTextSymbol{\textemdash}{OT1}{124}
 \DeclareTextSymbol{\textendash}{OT1}{123}
+\DeclareTextCommand{\textnonbreakinghyphen}{OT1}{\mbox{-}\nobreak\hskip\z@}
+\DeclareTextCommand{\textfiguredash}       {OT1}{\textendash}
+\DeclareTextCommand{\texthorizontalbar}    {OT1}{\textemdash}
 \DeclareTextCommand{\textexclamdown}{OT1}{!`}
 \DeclareTextCommand{\textquestiondown}{OT1}{?`}
 \DeclareTextSymbol{\textquotedblleft}{OT1}{92}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A3}{\textsterling}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot1lcmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot2enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}
 \DeclareUnicodeCharacter{00BB}{\guillemotright}
 \DeclareUnicodeCharacter{0131}{\i}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot4enc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot4enc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ot4enc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{ot4enc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \DeclareFontEncoding{OT4}{}{}
 \DeclareFontSubstitution{OT4}{cmr}{m}{n}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.cfg
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.cfg	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.cfg	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -37,7 +37,7 @@
 %% 
 %%% From File: fontdef.dtx
 \ProvidesFile{preload.cfg}
-           [2020/11/24 v3.0i LaTeX Kernel
+           [2021/01/15 v3.0i LaTeX Kernel
 (Uncustomized preload
            font setup)]
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.ltx
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.ltx	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/preload.ltx	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/proc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
 \ProvidesClass{report}
-              [2020/11/23 v1.4m
+              [2021/02/12 v1.4n
  Standard LaTeX document class]
 \newcommand\@ptsize{}
 \newif\if at restonecol
@@ -430,7 +430,7 @@
 \newcommand\labelitemi  {\labelitemfont \textbullet}
 \newcommand\labelitemii {\labelitemfont \bfseries \textendash}
 \newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
-\newcommand\labelitemiv{ \labelitemfont \textperiodcentered}
+\newcommand\labelitemiv {\labelitemfont \textperiodcentered}
 \newcommand\labelitemfont{\normalfont}
 \newenvironment{description}
                {\list{}{\labelwidth\z@ \itemindent-\leftmargin

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/report.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/sfonts.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/sfonts.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/sfonts.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -9,7 +9,7 @@
 %% This is a generated file.
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/shortvrb.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/showidx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/showidx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/showidx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size10.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size10.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size10.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xpt\@xiipt

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size11.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size11.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size11.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xipt{13.6}%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size12.clo
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size12.clo	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/size12.clo	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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/11/23 v1.4m
+              [2021/02/12 v1.4n
       Standard LaTeX file (size option)]
 \renewcommand\normalsize{%
    \@setfontsize\normalsize\@xiipt{14.5}%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/slides.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/source2edoc.cls	2021-02-28 16:33:40 UTC (rev 57998)
@@ -2,7 +2,7 @@
 % This class is buggy and needs fixing
 
 \ProvidesClass{source2edoc}
-              [2020/12/02 v0.2 Quick hack to typeset source2.tex
+              [2021/01/14 v0.2b Quick hack to typeset source2.tex
                (not usable for anything else and buggy -- will vanish again)!]
 
 \LoadClass{l3doc}
@@ -106,6 +106,31 @@
     \fi
     \cs_set_eq:NN \@auxout \@mainaux
   }
+
+
+% change the setup here: we have a lot of long names so better run raggeded
+  
+\cs_set_protected:Npn \__codedoc_macro_end_style:n #1
+  {
+    \nobreak \noindent
+    { \raggedright\hangindent1pc \footnotesize ( \emph{#1} ) \par }
+  }
+
+  
+% next two declarations should move to l3doc.cls in the l3kernel eventually
+% they should be ``new'' not ``set'' but to avoid getting in timing issues
+% when they will be officially defined we use ``set'' here
+  
+\cs_set_eq:NN \__codedoc_saved_detect_internals:N \__codedoc_detect_internals:N
+
+% maybe this change should be local so that it automatically reverts on \verb=\end{macro}=
+% without the need to explicitly turn it on again.
+
+\cs_new_protected:Npn \InternalDetectionOff
+  { \cs_gset_eq:NN \__codedoc_detect_internals:N \use_none:n }
+\cs_new_protected:Npn \InternalDetectionOn
+  { \cs_gset_eq:NN \__codedoc_detect_internals:N \__codedoc_saved_detect_internals:N }
+  
 \ExplSyntaxOff
 
 \def\partname{File}
@@ -257,7 +282,7 @@
            {}
 
 
-%\errorstopmode
+\errorstopmode
 \batchmode           
-           
+
 \endinput

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/structuredlog.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -41,12 +41,9 @@
 %% 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.
-%%
-%% 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}
+\providecommand\ltfilehookversion{v1.0g}
+\providecommand\ltfilehookdate{2021/02/08}
 \ProvidesExplPackage
     {structuredlog}{\ltfilehookdate}{\ltfilehookversion}
     {Structuring the TeX transcript file}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/syntonly.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/syntonly.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/syntonly.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmdh.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfib.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmfr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1cmvtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{t1enc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \DeclareFontEncoding{T1}{}{}
 \DeclareTextAccent{\`}{T1}{0}
@@ -147,6 +147,9 @@
 \DeclareTextSymbol{\textdollar}{T1}{`\$}
 \DeclareTextSymbol{\textemdash}{T1}{22}
 \DeclareTextSymbol{\textendash}{T1}{21}
+\DeclareTextCommand{\textnonbreakinghyphen}{T1}{\mbox{-}\nobreak\hskip\z@}
+\DeclareTextCommand{\textfiguredash}       {T1}{\textendash}
+\DeclareTextCommand{\texthorizontalbar}    {T1}{\textemdash}
 \DeclareTextSymbol{\textexclamdown}{T1}{189}
 \DeclareTextSymbol{\textgreater}{T1}{`\>}
 \DeclareTextSymbol{\textless}{T1}{`\<}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A3}{\textsterling}
@@ -261,6 +261,15 @@
 \DeclareUnicodeCharacter{02DB}{\k{}}
 \DeclareUnicodeCharacter{1E02}{\.B}
 \DeclareUnicodeCharacter{1E03}{\.b}
+\DeclareUnicodeCharacter{1E0D}{\d d}
+\DeclareUnicodeCharacter{1E25}{\d h}
+\DeclareUnicodeCharacter{1E37}{\d l}
+\DeclareUnicodeCharacter{1E43}{\d m}
+\DeclareUnicodeCharacter{1E45}{\.n}
+\DeclareUnicodeCharacter{1E47}{\d n}
+\DeclareUnicodeCharacter{1E5B}{\d r}
+\DeclareUnicodeCharacter{1E63}{\d s}
+\DeclareUnicodeCharacter{1E6D}{\d t}
 \DeclareUnicodeCharacter{1E9E}{\SS}
 \DeclareUnicodeCharacter{200C}{\textcompwordmark}
 \DeclareUnicodeCharacter{2010}{-}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1enc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t1lcmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2aenc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2benc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/t2cenc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/testpage.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/testpage.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/testpage.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -1,7 +1,7 @@
 % \iffalse meta-comment
 %
 % Copyright (C) 1993-2021
-% The LaTeX3 Project and any individual authors listed elsewhere
+% The LaTeX Project and any individual authors listed elsewhere
 % in this file.
 %
 % This file is part of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/texsys.cfg
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/texsys.cfg	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/texsys.cfg	2021-02-28 16:33:40 UTC (rev 57998)
@@ -49,14 +49,16 @@
 % |{}| group.
 %
 %
+% \begin{sloppypar}
 % \DescribeMacro{\filename at parse}
 % After a call of the form: |\filename at parse{|\meta{filename}|}|, the
-% three macros |\filename at area|,|\filename at base|,|\filename at ext| should
+% three macros |\filename at area|, |\filename at base|, |\filename at ext| should
 % be defined to be the `area' (or directory), basename and
 % extension respectively. If there was no extension specified in
 % \meta{filename}, |\filename at ext| should be |\let| to |\relax| (so this
 % case may be tested with |\@ifundefined{filename at ext}| and, perhaps a
 % default extension substituted).
+% \end{sloppypar}
 %
 % 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

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp-2018-08-11.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -41,6 +41,7 @@
 %% 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.
+%%% From File: lttextcomp.dtx
 
 \ProvidesPackage{textcomp}
    [2018/08/11 v2.0j Standard LaTeX package]

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/textcomp.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -41,6 +41,7 @@
 %% 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.
+%%% From File: lttextcomp.dtx
 
 \providecommand\DeclareRelease[3]{}
 \providecommand\DeclareCurrentRelease[2]{}
@@ -55,9 +56,12 @@
 \DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
 \DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{8}}
 \DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{9}}
-\DeclareOption{error}{\gdef\tc at errorwarn{\PackageError{textcomp}}}
-\DeclareOption{warn}{\gdef\tc at errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
-\DeclareOption{info}{\gdef\tc at errorwarn#1#2{\PackageInfo{textcomp}{#1}}}
+\DeclareOption{error}
+              {\gdef\tc at errorwarn{\PackageError{textcomp}}}
+\DeclareOption{warn}
+              {\gdef\tc at errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
+\DeclareOption{info}
+              {\gdef\tc at errorwarn#1#2{\PackageInfo{textcomp}{#1}}}
 \DeclareOption{quiet}{\gdef\tc at errorwarn#1#2{}}
 \DeclareOption{force}{%
     \def\CheckEncodingSubset#1#2#3#4#5{%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tracefnt.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% 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.
+%% Copyright (C) 1994-97 by LaTeX Project. All rights reserved.
 \NeedsTeXFormat{LaTeX2e}[2021/05/01]
 \ProvidesPackage{tracefnt}
      [2020/12/22 v3.0n  Standard LaTeX package (font tracing)]

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1cmvtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -78,7 +78,17 @@
 \DeclareTextSymbol{\textblank}{TS1}{32}
 \DeclareTextSymbol{\textdollar}{TS1}{36}
 \DeclareTextSymbol{\textquotesingle}{TS1}{39}
-\DeclareTextSymbol{\textasteriskcentered}{TS1}{42}
+\DeclareTextCommand \textasteriskcentered{TS1}{%    % and that's needed
+  \iffontchar\font 42 \char42 \else
+   \begingroup\fontencoding{T1}%
+       \fontsize
+       {\the\dimexpr1.3\dimexpr\f at size pt\relax}%
+       {\f at baselineskip}%
+      \selectfont
+      \raisebox{-0.7ex}[\dimexpr\height-0.7ex][0pt]{*}%
+    \endgroup
+    \fi
+}
 \DeclareTextSymbol{\textdblhyphen}{TS1}{45}
 \DeclareTextSymbol{\textfractionsolidus}{TS1}{47}
 \DeclareTextSymbol{\textzerooldstyle}{TS1}{48}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ts1enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A2}{\textcent}
 \DeclareUnicodeCharacter{00A3}{\textsterling}
 \DeclareUnicodeCharacter{00A4}{\textcurrency}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tuenc.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tuenc.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tuenc.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -43,7 +43,7 @@
 %% extension .ins) which are part of the distribution.
 %%% From File: ltoutenc.dtx
 \ProvidesFile{tuenc.def}
- [2020/08/10 v2.0s
+ [2021/02/19 v2.0u
       Standard LaTeX file]
 \providecommand\UnicodeEncodingName{TU}
 \begingroup\expandafter\expandafter\expandafter\endgroup
@@ -215,6 +215,12 @@
 \DeclareTextSymbol{\textcompwordmark}    \UnicodeEncodingName{"200C}
 \DeclareTextSymbol{\textendash}          \UnicodeEncodingName{"2013}
 \DeclareTextSymbol{\textemdash}          \UnicodeEncodingName{"2014}
+\DeclareTextCommand{\textnonbreakinghyphen} \UnicodeEncodingName
+     {\iffontchar\font "2011 \char "2011 \else \mbox{-}\nobreak\hskip\z@ \fi}
+\DeclareTextCommand{\textfiguredash}     \UnicodeEncodingName
+     {\iffontchar\font "2012 \char "2012 \else \char "2013 \fi}
+\DeclareTextCommand{\texthorizontalbar}     \UnicodeEncodingName
+     {\iffontchar\font "2015 \char "2015 \else \char "2014 \fi}
 \DeclareTextSymbol{\textbardbl}          \UnicodeEncodingName{"2016}
 \DeclareTextSymbol{\textquoteleft}       \UnicodeEncodingName{"2018}
 \DeclareTextSymbol{\textquoteright}      \UnicodeEncodingName{"2019}
@@ -264,10 +270,10 @@
   \iffontchar\font"2217 \char"2217 \else
     \begingroup
       \fontsize
-       {\the\dimexpr1.2\dimexpr\f at size pt\relax}%
+       {\the\dimexpr1.3\dimexpr\f at size pt\relax}%
        {\f at baselineskip}%
       \selectfont
-      \raisebox{-0.6ex}[\dimexpr\height-0.6ex][0pt]{*}%
+      \raisebox{-0.7ex}[\dimexpr\height-0.7ex][0pt]{*}%
     \endgroup
   \fi
 }

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmdh.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmssq.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/tulmvtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 2016-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmr.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmr.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmr.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmss.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmss.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmss.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ucmtt.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ulasy.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ulasy.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ulasy.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ullasy.fd
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ullasy.fd	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/ullasy.fd	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8-2018.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8.def
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8.def	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8.def	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \ifx\ifincsname\@undefined  % old e-pTeX or e-upTeX engines
   \input utf8-2018.def
   \expandafter\@firstofone

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/utf8enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A0}{\nobreakspace}
 \DeclareUnicodeCharacter{00A1}{\textexclamdown}
 \DeclareUnicodeCharacter{00A2}{\textcent}
@@ -512,6 +512,15 @@
 \DeclareUnicodeCharacter{0E3F}{\textbaht}
 \DeclareUnicodeCharacter{1E02}{\.B}
 \DeclareUnicodeCharacter{1E03}{\.b}
+\DeclareUnicodeCharacter{1E0D}{\d d}
+\DeclareUnicodeCharacter{1E25}{\d h}
+\DeclareUnicodeCharacter{1E37}{\d l}
+\DeclareUnicodeCharacter{1E43}{\d m}
+\DeclareUnicodeCharacter{1E45}{\.n}
+\DeclareUnicodeCharacter{1E47}{\d n}
+\DeclareUnicodeCharacter{1E5B}{\d r}
+\DeclareUnicodeCharacter{1E63}{\d s}
+\DeclareUnicodeCharacter{1E6D}{\d t}
 \DeclareUnicodeCharacter{1E9E}{\SS}
 \DeclareUnicodeCharacter{200C}{\textcompwordmark}
 \DeclareUnicodeCharacter{2010}{-}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/base/x2enc.dfu	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2021
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the LaTeX base system.
@@ -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}
-   [2020/11/26 v1.2k UTF-8 support for inputenc]
+   [2021/01/27 v1.2l UTF-8 support for inputenc]
 \DeclareUnicodeCharacter{00A4}{\textcurrency}
 \DeclareUnicodeCharacter{00A7}{\textsection}
 \DeclareUnicodeCharacter{00AB}{\guillemotleft}

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/afterpage.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2016-10-06.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2016-10-06.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2016-10-06.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -2,7 +2,7 @@
 %% This is an old release of `array.sty',
 %%
 %% Copyright 1993-2016
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2020-02-10.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2020-02-10.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array-2020-02-10.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -14,7 +14,7 @@
 %% 
 %% 
 %% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/array.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -46,7 +46,7 @@
 \DeclareCurrentRelease{}{2020-10-01}
 
 \ProvidesPackage{array}
-         [2020/10/01 v2.5c Tabular extension package (FMi)]
+         [2021/02/10 v2.5d Tabular extension package (FMi)]
 %%
 
 \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
@@ -158,7 +158,7 @@
       \vrule \@height \ht\@arstrutbox \@width \z@
       \everypar{}}%
    }
-\def\@endpbox{\@finalstrut\@arstrutbox \color at endgroup \egroup\hfil}
+\def\@endpbox{\@finalstrut\@arstrutbox \par \color at endgroup \egroup\hfil}
 \def\@array[#1]#2{%
   \@tempdima \ht \strutbox
   \advance \@tempdima by\extrarowheight

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/bm.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/bm.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/bm.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/calc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/calc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/calc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -39,7 +39,7 @@
 %% Copyright (C) 1992--1995
 %%          Kresten Krab Thorup and Frank Jensen.
 %% Copyright (C) 1997--2007
-%%          Kresten Krab Thorup, Frank Jensen and the LaTeX3 Project.
+%%          Kresten Krab Thorup, Frank Jensen and the LaTeX Project.
 %%
 %% The original authors (fj at hugin.dk and  krab at daimi.aau.dk) have
 %% contributed this package to the LaTeX distribution.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/dcolumn.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/delarray.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/delarray.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/delarray.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/e.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/e.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/e.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/enumerate.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/fontsmpl.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/ftnright.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/h.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/h.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/h.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/hhline.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/hhline.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/hhline.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/indentfirst.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/layout.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/layout.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/layout.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -37,7 +37,7 @@
 %% 
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{layout}
-                [2014/10/28 v1.2c Show layout parameters]
+                [2020-07-25 v1.2d Show layout parameters]
 \DeclareOption{dutch}{%
   \def\Headertext{Kopregel}
   \def\Bodytext{Broodtekst}
@@ -104,6 +104,14 @@
   \def\oneinchtext{un pollice}
   \def\notshown{non mostrato}
   }
+\DeclareOption{japanese}{%
+  \def\Headertext{天}
+  \def\Bodytext{基本版面}
+  \def\Footertext{地}
+  \def\MarginNotestext{傍\\注}
+  \def\oneinchtext{1インチ}
+  \def\notshown{非表示}
+  }
 \DeclareOption{verbose}{\let\LayOuttype\typeout}
 \DeclareOption{silent}{\let\LayOuttype\@gobble}
 \def\lay at value{}

Added: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable-2020-01-07.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable-2020-01-07.sty	                        (rev 0)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable-2020-01-07.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -0,0 +1,448 @@
+%%
+%% This is file `longtable.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% longtable.dtx  (with options: `package')
+%% 
+%% This is a generated file.
+%% 
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs/
+%% (but please observe conditions on bug reports sent to that address!)
+%% 
+%% Copyright (C) 1993-2020
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%% 
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%% 
+%% 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
+%%    https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%% 
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%% 
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%% 
+%% File: longtable.dtx Copyright (C) 1990-2020 David Carlisle
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\ProvidesPackage{longtable}
+          [2020/01/07 v4.13 Multi-page Table package (DPC)]
+\def\LT at err{\PackageError{longtable}}
+\def\LT at warn{\PackageWarning{longtable}}
+\def\LT at final@warn{%
+  \AtEndDocument{%
+    \LT at warn{Table \@width s have changed. Rerun LaTeX.\@gobbletwo}}%
+  \global\let\LT at final@warn\relax}
+\DeclareOption{errorshow}{%
+  \def\LT at warn{\PackageInfo{longtable}}}
+\DeclareOption{pausing}{%
+  \def\LT at warn#1{%
+    \LT at err{#1}{This is not really an error}}}
+\DeclareOption{set}{}
+\DeclareOption{final}{}
+\ProcessOptions
+\newskip\LTleft       \LTleft=\fill
+\newskip\LTright      \LTright=\fill
+\newskip\LTpre        \LTpre=\bigskipamount
+\newskip\LTpost       \LTpost=\bigskipamount
+\newcount\LTchunksize \LTchunksize=20
+\let\c at LTchunksize\LTchunksize
+\newdimen\LTcapwidth  \LTcapwidth=4in
+\newbox\LT at head
+\newbox\LT at firsthead
+\newbox\LT at foot
+\newbox\LT at lastfoot
+\newcount\LT at cols
+\newcount\LT at rows
+\newcounter{LT at tables}
+\newcounter{LT at chunks}[LT at tables]
+\ifx\c at table\undefined
+  \newcounter{table}
+  \def\fnum at table{\tablename~\thetable}
+\fi
+\ifx\tablename\undefined
+  \def\tablename{Table}
+\fi
+\newtoks\LT at p@ftn
+\mathchardef\LT at end@pen=30000
+\def\longtable{%
+  \par
+  \ifx\multicols\@undefined
+  \else
+     \ifnum\col at number>\@ne
+       \@twocolumntrue
+     \fi
+  \fi
+  \if at twocolumn
+    \LT at err{longtable not in 1-column mode}\@ehc
+  \fi
+  \begingroup
+  \@ifnextchar[\LT at array{\LT at array[x]}}
+\def\LT at array[#1]#2{%
+  \refstepcounter{table}\stepcounter{LT at tables}%
+  \if l#1%
+    \LTleft\z@ \LTright\fill
+  \else\if r#1%
+    \LTleft\fill \LTright\z@
+  \else\if c#1%
+    \LTleft\fill \LTright\fill
+  \fi\fi\fi
+  \let\LT at mcol\multicolumn
+  \let\LT@@tabarray\@tabarray
+  \let\LT@@hl\hline
+  \def\@tabarray{%
+    \let\hline\LT@@hl
+    \LT@@tabarray}%
+  \let\\\LT at tabularcr\let\tabularnewline\\%
+  \def\newpage{\noalign{\break}}%
+  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT at no@pgbk-}4}%
+  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT at no@pgbk4}%
+  \let\hline\LT at hline \let\kill\LT at kill\let\caption\LT at caption
+  \@tempdima\ht\strutbox
+  \let\@endpbox\LT at endpbox
+  \ifx\extrarowheight\@undefined
+    \let\@acol\@tabacol
+    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
+    \def\@startpbox{\vtop\LT at startpbox}%
+    \let\@@startpbox\@startpbox
+    \let\@@endpbox\@endpbox
+    \let\LT at LL@FM at cr\@tabularcr
+  \else
+    \advance\@tempdima\extrarowheight
+    \col at sep\tabcolsep
+    \let\@startpbox\LT at startpbox\let\LT at LL@FM at cr\@arraycr
+  \fi
+  \setbox\@arstrutbox\hbox{\vrule
+    \@height \arraystretch \@tempdima
+    \@depth \arraystretch \dp \strutbox
+    \@width \z@}%
+  \let\@sharp##\let\protect\relax
+   \begingroup
+    \@mkpream{#2}%
+    \xdef\LT at bchunk{%
+       \global\advance\c at LT@chunks\@ne
+       \global\LT at rows\z@\setbox\z@\vbox\bgroup
+       \LT at setprevdepth
+       \tabskip\LTleft \noexpand\halign to\hsize\bgroup
+      \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
+  \endgroup
+  \expandafter\LT at nofcols\LT at bchunk&\LT at nofcols
+  \LT at make@row
+  \m at th\let\par\@empty
+  \everycr{}\lineskip\z@\baselineskip\z@
+  \LT at bchunk}
+\def\LT at no@pgbk#1[#2]{\penalty #1\@getpen{#2}\ifnum`{=0\fi}}
+\def\LT at start{%
+  \let\LT at start\endgraf
+  \endgraf\penalty\z@\vskip\LTpre\endgraf
+  \dimen@\pagetotal
+  \advance\dimen@ \ht\ifvoid\LT at firsthead\LT at head\else\LT at firsthead\fi
+  \advance\dimen@ \dp\ifvoid\LT at firsthead\LT at head\else\LT at firsthead\fi
+  \advance\dimen@ \ht\LT at foot
+  \dimen at ii\vfuzz
+  \vfuzz\maxdimen
+    \setbox\tw@\copy\z@
+    \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
+    \setbox\tw@\vbox{\unvbox\tw@}%
+  \vfuzz\dimen at ii
+  \advance\dimen@ \ht
+        \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
+  \advance\dimen@\dp
+        \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
+  \advance\dimen@ -\pagegoal
+  \ifdim \dimen@>\z@\vfil\break\fi
+      \global\@colroom\@colht
+  \ifvoid\LT at foot\else
+    \advance\vsize-\ht\LT at foot
+    \global\advance\@colroom-\ht\LT at foot
+    \dimen@\pagegoal\advance\dimen at -\ht\LT at foot\pagegoal\dimen@
+    \maxdepth\z@
+  \fi
+  \ifvoid\LT at firsthead\copy\LT at head\else\box\LT at firsthead\fi\nobreak
+  \output{\LT at output}}
+\def\endlongtable{%
+  \crcr
+  \noalign{%
+    \let\LT at entry\LT at entry@chop
+    \xdef\LT at save@row{\LT at save@row}}%
+  \LT at echunk
+  \LT at start
+  \unvbox\z@
+  \LT at get@widths
+  \if at filesw
+    {\let\LT at entry\LT at entry@write\immediate\write\@auxout{%
+      \gdef\expandafter\noexpand
+        \csname LT@\romannumeral\c at LT@tables\endcsname
+          {\LT at save@row}}}%
+  \fi
+  \ifx\LT at save@row\LT@@save at row
+  \else
+    \LT at warn{Column \@width s have changed\MessageBreak
+             in table \thetable}%
+    \LT at final@warn
+  \fi
+  \endgraf\penalty -\LT at end@pen
+  \endgroup
+  \global\@mparbottom\z@
+  \pagegoal\vsize
+  \endgraf\penalty\z@\addvspace\LTpost
+  \ifvoid\footins\else\insert\footins{}\fi}
+\def\LT at nofcols#1&{%
+  \futurelet\@let at token\LT at n@fcols}
+\def\LT at n@fcols{%
+  \advance\LT at cols\@ne
+  \ifx\@let at token\LT at nofcols
+    \expandafter\@gobble
+  \else
+    \expandafter\LT at nofcols
+  \fi}
+\def\LT at tabularcr{%
+  \relax\iffalse{\fi\ifnum0=`}\fi
+  \@ifstar
+    {\def\crcr{\LT at crcr\noalign{\nobreak}}\let\cr\crcr
+     \LT at t@bularcr}%
+    {\LT at t@bularcr}}
+\let\LT at crcr\crcr
+\let\LT at setprevdepth\relax
+\def\LT at t@bularcr{%
+  \global\advance\LT at rows\@ne
+  \ifnum\LT at rows=\LTchunksize
+    \gdef\LT at setprevdepth{%
+      \prevdepth\z@\global
+      \global\let\LT at setprevdepth\relax}%
+    \expandafter\LT at xtabularcr
+  \else
+    \ifnum0=`{}\fi
+    \expandafter\LT at LL@FM at cr
+  \fi}
+\def\LT at xtabularcr{%
+  \@ifnextchar[\LT at argtabularcr\LT at ntabularcr}
+\def\LT at ntabularcr{%
+  \ifnum0=`{}\fi
+  \LT at echunk
+  \LT at start
+  \unvbox\z@
+  \LT at get@widths
+  \LT at bchunk}
+\def\LT at argtabularcr[#1]{%
+  \ifnum0=`{}\fi
+  \ifdim #1>\z@
+    \unskip\@xargarraycr{#1}%
+  \else
+    \@yargarraycr{#1}%
+  \fi
+  \LT at echunk
+  \LT at start
+  \unvbox\z@
+  \LT at get@widths
+  \LT at bchunk}
+\def\LT at echunk{%
+  \crcr\LT at save@row\cr\egroup
+  \global\setbox\@ne\lastbox
+    \unskip
+  \egroup}
+\def\LT at entry#1#2{%
+  \ifhmode\@firstofone{&}\fi\omit
+  \ifnum#1=\c at LT@chunks
+  \else
+    \kern#2\relax
+  \fi}
+\def\LT at entry@chop#1#2{%
+  \noexpand\LT at entry
+    {\ifnum#1>\c at LT@chunks
+       1}{0pt%
+     \else
+       #1}{#2%
+     \fi}}
+\def\LT at entry@write{%
+  \noexpand\LT at entry^^J%
+  \@spaces}
+\def\LT at kill{%
+  \LT at echunk
+  \LT at get@widths
+  \expandafter\LT at rebox\LT at bchunk}
+\def\LT at rebox#1\bgroup{%
+  #1\bgroup
+  \unvbox\z@
+  \unskip
+  \setbox\z@\lastbox}
+\def\LT at blank@row{%
+  \xdef\LT at save@row{\expandafter\LT at build@blank
+    \romannumeral\number\LT at cols 001 }}
+\def\LT at build@blank#1{%
+  \if#1m%
+    \noexpand\LT at entry{1}{0pt}%
+    \expandafter\LT at build@blank
+  \fi}
+\def\LT at make@row{%
+  \global\expandafter\let\expandafter\LT at save@row
+    \csname LT@\romannumeral\c at LT@tables\endcsname
+  \ifx\LT at save@row\relax
+    \LT at blank@row
+  \else
+    {\let\LT at entry\or
+     \if!%
+         \ifcase\expandafter\expandafter\expandafter\LT at cols
+         \expandafter\@gobble\LT at save@row
+         \or
+         \else
+           \relax
+         \fi
+        !%
+     \else
+       \aftergroup\LT at blank@row
+     \fi}%
+  \fi}
+\let\setlongtables\relax
+\def\LT at get@widths{%
+  \setbox\tw@\hbox{%
+    \unhbox\@ne
+    \let\LT at old@row\LT at save@row
+    \global\let\LT at save@row\@empty
+    \count@\LT at cols
+    \loop
+      \unskip
+      \setbox\tw@\lastbox
+    \ifhbox\tw@
+      \LT at def@row
+      \advance\count@\m at ne
+    \repeat}%
+  \ifx\LT@@save at row\@undefined
+    \let\LT@@save at row\LT at save@row
+  \fi}
+\def\LT at def@row{%
+  \let\LT at entry\or
+  \edef\@tempa{%
+    \ifcase\expandafter\count@\LT at old@row
+    \else
+      {1}{0pt}%
+    \fi}%
+  \let\LT at entry\relax
+  \xdef\LT at save@row{%
+    \LT at entry
+    \expandafter\LT at max@sel\@tempa
+    \LT at save@row}}
+\def\LT at max@sel#1#2{%
+  {\ifdim#2=\wd\tw@
+     #1%
+   \else
+     \number\c at LT@chunks
+   \fi}%
+  {\the\wd\tw@}}
+\def\LT at hline{%
+  \noalign{\ifnum0=`}\fi
+    \penalty\@M
+    \futurelet\@let at token\LT@@hline}
+\def\LT@@hline{%
+  \ifx\@let at token\hline
+    \global\let\@gtempa\@gobble
+    \gdef\LT at sep{\penalty-\@medpenalty\vskip\doublerulesep}%
+  \else
+    \global\let\@gtempa\@empty
+    \gdef\LT at sep{\penalty-\@lowpenalty\vskip-\arrayrulewidth}%
+  \fi
+  \ifnum0=`{\fi}%
+  \multispan\LT at cols
+     \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
+  \noalign{\LT at sep}%
+  \multispan\LT at cols
+     \unskip\leaders\hrule\@height\arrayrulewidth\hfill\cr
+  \noalign{\penalty\@M}%
+  \@gtempa}
+\def\LT at caption{%
+  \noalign\bgroup
+    \@ifnextchar[{\egroup\LT at c@ption\@firstofone}\LT at capti@n}
+\def\LT at c@ption#1[#2]#3{%
+  \LT at makecaption#1\fnum at table{#3}%
+  \def\@tempa{#2}%
+  \ifx\@tempa\@empty\else
+     {\let\\\space
+     \addcontentsline{lot}{table}{\protect\numberline{\thetable}{#2}}}%
+  \fi}
+\def\LT at capti@n{%
+  \@ifstar
+    {\egroup\LT at c@ption\@gobble[]}%
+    {\egroup\@xdblarg{\LT at c@ption\@firstofone}}}
+\def\LT at makecaption#1#2#3{%
+  \LT at mcol\LT at cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+    \sbox\@tempboxa{#1{#2: }#3}%
+    \ifdim\wd\@tempboxa>\hsize
+      #1{#2: }#3%
+    \else
+      \hbox to\hsize{\hfil\box\@tempboxa\hfil}%
+    \fi
+    \endgraf\vskip\baselineskip}%
+  \hss}}}
+\def\LT at output{%
+  \ifnum\outputpenalty <-\@Mi
+    \ifnum\outputpenalty > -\LT at end@pen
+      \LT at err{floats and marginpars not allowed in a longtable}\@ehc
+    \else
+      \setbox\z@\vbox{\unvbox\@cclv}%
+      \ifdim \ht\LT at lastfoot>\ht\LT at foot
+        \dimen@\pagegoal
+        \advance\dimen at -\ht\LT at lastfoot
+        \ifdim\dimen@<\ht\z@
+          \setbox\@cclv\vbox{\unvbox\z@\copy\LT at foot\vss}%
+          \@makecol
+          \@outputpage
+          \setbox\z@\vbox{\box\LT at head}%
+        \fi
+      \fi
+      \global\@colroom\@colht
+      \global\vsize\@colht
+      \vbox
+        {\unvbox\z@\box\ifvoid\LT at lastfoot\LT at foot\else\LT at lastfoot\fi}%
+    \fi
+  \else
+    \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT at foot\vss}%
+    \@makecol
+    \@outputpage
+      \global\vsize\@colroom
+    \copy\LT at head\nobreak
+  \fi}
+\def\LT at end@hd at ft#1{%
+  \LT at echunk
+  \ifx\LT at start\endgraf
+    \LT at err
+     {Longtable head or foot not at start of table}%
+     {Increase LTchunksize}%
+  \fi
+  \setbox#1\box\z@
+  \LT at get@widths
+  \LT at bchunk}
+\def\endfirsthead{\LT at end@hd at ft\LT at firsthead}
+\def\endhead{\LT at end@hd at ft\LT at head}
+\def\endfoot{\LT at end@hd at ft\LT at foot}
+\def\endlastfoot{\LT at end@hd at ft\LT at lastfoot}
+\def\LT at startpbox#1{%
+  \bgroup
+    \color at begingroup
+    \let\@footnotetext\LT at p@ftntext
+    \setlength\hsize{#1}%
+    \@arrayparboxrestore
+    \vrule \@height \ht\@arstrutbox \@width \z@}
+\def\LT at endpbox{%
+  \@finalstrut\@arstrutbox
+  \color at endgroup
+  \egroup
+  \the\LT at p@ftn
+  \global\LT at p@ftn{}%
+  \hfil}
+\def\LT at p@ftntext#1{%
+  \edef\@tempa{\the\LT at p@ftn\noexpand\footnotetext[\the\c at footnote]}%
+  \global\LT at p@ftn\expandafter{\@tempa{#1}}}%
+\endinput
+%%
+%% End of file `longtable.sty'.


Property changes on: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable-2020-01-07.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/longtable.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -36,8 +36,14 @@
 %% 
 %% File: longtable.dtx Copyright (C) 1990-2020 David Carlisle
 \NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{2020-01-02}{longtable-2020-01-07.sty}
+\DeclareCurrentRelease{}{2020-02-07}
+
 \ProvidesPackage{longtable}
-          [2020/01/07 v4.13 Multi-page Table package (DPC)]
+          [2020-02-07 v4.14 Multi-page Table package (DPC)]
 \def\LT at err{\PackageError{longtable}}
 \def\LT at warn{\PackageWarning{longtable}}
 \def\LT at final@warn{%
@@ -56,7 +62,7 @@
 \newskip\LTright      \LTright=\fill
 \newskip\LTpre        \LTpre=\bigskipamount
 \newskip\LTpost       \LTpost=\bigskipamount
-\newcount\LTchunksize \LTchunksize=20
+\newcount\LTchunksize \LTchunksize=200
 \let\c at LTchunksize\LTchunksize
 \newdimen\LTcapwidth  \LTcapwidth=4in
 \newbox\LT at head
@@ -63,6 +69,7 @@
 \newbox\LT at firsthead
 \newbox\LT at foot
 \newbox\LT at lastfoot
+\newbox\LT at gbox
 \newcount\LT at cols
 \newcount\LT at rows
 \newcounter{LT at tables}
@@ -146,6 +153,11 @@
 \def\LT at start{%
   \let\LT at start\endgraf
   \endgraf\penalty\z@\vskip\LTpre\endgraf
+   \ifdim \pagetotal<\pagegoal \else
+      \dimen@=\pageshrink
+      \advance \dimen@ 1sp %
+      \kern\dimen@\penalty 9999\endgraf \kern-\dimen@
+   \fi
   \dimen@\pagetotal
   \advance\dimen@ \ht\ifvoid\LT at firsthead\LT at head\else\LT at firsthead\fi
   \advance\dimen@ \dp\ifvoid\LT at firsthead\LT at head\else\LT at firsthead\fi
@@ -161,10 +173,14 @@
   \advance\dimen@\dp
         \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
   \advance\dimen@ -\pagegoal
-  \ifdim \dimen@>\z@\vfil\break\fi
+  \ifdim \dimen@>\z@
+    \vfil\break
+  \else
+    \ifdim\pageshrink>\z@\pageshrink\z@\fi
+  \fi
       \global\@colroom\@colht
   \ifvoid\LT at foot\else
-    \advance\vsize-\ht\LT at foot
+    \global\advance\vsize-\ht\LT at foot
     \global\advance\@colroom-\ht\LT at foot
     \dimen@\pagegoal\advance\dimen at -\ht\LT at foot\pagegoal\dimen@
     \maxdepth\z@
@@ -193,9 +209,13 @@
     \LT at final@warn
   \fi
   \endgraf\penalty -\LT at end@pen
+  \ifvoid\LT at foot\else
+    \global\advance\vsize\ht\LT at foot
+    \global\advance\@colroom\ht\LT at foot
+    \dimen@\pagegoal\advance\dimen@\ht\LT at foot\pagegoal\dimen@
+  \fi
   \endgroup
   \global\@mparbottom\z@
-  \pagegoal\vsize
   \endgraf\penalty\z@\addvspace\LTpost
   \ifvoid\footins\else\insert\footins{}\fi}
 \def\LT at nofcols#1&{%
@@ -219,7 +239,7 @@
   \global\advance\LT at rows\@ne
   \ifnum\LT at rows=\LTchunksize
     \gdef\LT at setprevdepth{%
-      \prevdepth\z@\global
+      \prevdepth\z@
       \global\let\LT at setprevdepth\relax}%
     \expandafter\LT at xtabularcr
   \else
@@ -249,7 +269,7 @@
   \LT at bchunk}
 \def\LT at echunk{%
   \crcr\LT at save@row\cr\egroup
-  \global\setbox\@ne\lastbox
+  \global\setbox\LT at gbox\lastbox
     \unskip
   \egroup}
 \def\LT at entry#1#2{%
@@ -307,7 +327,7 @@
 \let\setlongtables\relax
 \def\LT at get@widths{%
   \setbox\tw@\hbox{%
-    \unhbox\@ne
+    \unhbox\LT at gbox
     \let\LT at old@row\LT at save@row
     \global\let\LT at save@row\@empty
     \count@\LT at cols
@@ -392,18 +412,17 @@
       \setbox\z@\vbox{\unvbox\@cclv}%
       \ifdim \ht\LT at lastfoot>\ht\LT at foot
         \dimen@\pagegoal
+        \advance\dimen@\ht\LT at foot
         \advance\dimen at -\ht\LT at lastfoot
         \ifdim\dimen@<\ht\z@
           \setbox\@cclv\vbox{\unvbox\z@\copy\LT at foot\vss}%
           \@makecol
           \@outputpage
+          \global\vsize\@colroom
           \setbox\z@\vbox{\box\LT at head}%
         \fi
       \fi
-      \global\@colroom\@colht
-      \global\vsize\@colht
-      \vbox
-        {\unvbox\z@\box\ifvoid\LT at lastfoot\LT at foot\else\LT at lastfoot\fi}%
+        \unvbox\z@\box\ifvoid\LT at lastfoot\LT at foot\else\LT at lastfoot\fi
     \fi
   \else
     \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT at foot\vss}%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol-2017-04-11.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol-2017-04-11.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol-2017-04-11.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -6,7 +6,7 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %%
 %% Copyright 1993-2016
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -79,7 +79,7 @@
 %% not for the payment of a license fee per se (which might or might
 %% not follow from this evaluation).
 %%
-%% The license fee, if any, can be payed either to the LaTeX3 fund
+%% The license fee, if any, can be payed either to the LaTeX fund
 %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
 %% the program who can be contacted at
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/multicol.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -92,7 +92,7 @@
 %% not for the payment of a license fee per se (which might or might
 %% not follow from this evaluation).
 %%
-%% The license fee, if any, can be payed either to the LaTeX3 fund
+%% The license fee, if any, can be payed either to the LaTeX fund
 %% (see ltx3info.txt in the base LaTeX distribution) or to the author of
 %% the program who can be contacted at
 %%

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/q.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/q.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/q.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/r.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/r.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/r.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/rawfonts.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/s.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/s.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/s.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/shellesc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -36,9 +36,9 @@
 %% given in the file `manifest.txt'.
 %% 
 %% Source File: shellesc.dtx
-%% Copyright (C) 2015-2020
+%% Copyright (C) 2015-2021
 %%
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file may be distributed under the terms of the LPPL.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/showkeys.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
@@ -36,7 +36,7 @@
 %% given in the file `manifest.txt'.
 %% 
 %% File: showkeys.dtx Copyright (C) 1992-1997 David Carlisle
-%% File: showkeys.dtx Copyright (C) 2006-2019 David Carlisle, LaTeX3 Project
+%% File: showkeys.dtx Copyright (C) 2006-2019 David Carlisle, LaTeX Project
 \NeedsTeXFormat{LaTeX2e}
 \ProvidesPackage{showkeys}
           [2014/10/28 v3.17 Show cite and label keys (DPC, MH)]

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/somedefs.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/tabularx.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thb.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thb.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thb.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thc.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thc.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thc.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thcb.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thcb.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thcb.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/theorem.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/theorem.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/theorem.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thm.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thm.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thm.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thmb.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thmb.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thmb.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thp.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thp.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/thp.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/trace.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/trace.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/trace.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref-2016-02-16.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref-2016-02-16.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref-2016-02-16.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,7 +13,7 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %%
 %% Copyright 1993-2017
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %%
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/varioref.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -12,8 +12,8 @@
 %% reports for it can be opened at https://latex-project.org/bugs/
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbatim.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/verbtest.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/x.tex
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/x.tex	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/x.tex	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xr.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xr.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xr.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.

Modified: branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xspace.sty
===================================================================
--- branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xspace.sty	2021-02-28 16:29:58 UTC (rev 57997)
+++ branches/branch2020.0/Master/texmf-dist/tex/latex-dev/tools/xspace.sty	2021-02-28 16:33:40 UTC (rev 57998)
@@ -13,8 +13,8 @@
 %% (but please observe conditions on bug reports sent to that address!)
 %% 
 %% 
-%% Copyright (C) 1993-2020
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
 %% in this file.
 %% 
 %% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.



More information about the tex-live-commits mailing list.