summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2020-01-14 03:00:43 +0000
committerNorbert Preining <norbert@preining.info>2020-01-14 03:00:43 +0000
commitb3225c4301e7724de481f410444fef5463799b9d (patch)
tree537c4ee5a5bda1ac7ea14c96cb3fcc453061ecd6
parentd8d4c8c20f235a6610baf22bea580063cc19e9a6 (diff)
CTAN sync 202001140300
-rw-r--r--FILES.byname1518
-rw-r--r--FILES.byname.gzbin2160689 -> 2161088 bytes
-rw-r--r--FILES.last07days1008
-rw-r--r--fonts/firamath/FiraMath-Regular.otfbin177732 -> 152644 bytes
-rw-r--r--fonts/firamath/README.md2
-rw-r--r--fonts/firamath/firamath-demo.pdfbin36461 -> 55995 bytes
-rw-r--r--fonts/firamath/firamath-demo.tex29
-rw-r--r--fonts/firamath/firamath-glyph-list.tex2
-rw-r--r--fonts/firamath/firamath-specimen.pdfbin544741 -> 516193 bytes
-rw-r--r--fonts/firamath/firamath-specimen.tex7
-rw-r--r--graphics/svg/README.md5
-rw-r--r--graphics/svg/doc/LICENSE.md4
-rw-r--r--graphics/svg/doc/svg.pdfbin1028970 -> 1028543 bytes
-rw-r--r--graphics/svg/source/examples/root.C6
-rw-r--r--graphics/svg/source/svg.dtx101
-rw-r--r--macros/latex-dev/base/README.md2
-rw-r--r--macros/latex-dev/base/alltt.dtx2
-rw-r--r--macros/latex-dev/base/alltt.ins4
-rw-r--r--macros/latex-dev/base/alltt.pdfbin172925 -> 173077 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin219609 -> 220187 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.tex2
-rw-r--r--macros/latex-dev/base/changes.txt86
-rw-r--r--macros/latex-dev/base/classes.dtx32
-rw-r--r--macros/latex-dev/base/classes.ins4
-rw-r--r--macros/latex-dev/base/classes.pdfbin521012 -> 521068 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin371678 -> 372505 bytes
-rw-r--r--macros/latex-dev/base/clsguide.tex2
-rw-r--r--macros/latex-dev/base/cmextra.ins4
-rw-r--r--macros/latex-dev/base/cmfonts.fdd19
-rw-r--r--macros/latex-dev/base/cmfonts.ins4
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin270758 -> 264453 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin223439 -> 216976 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.tex2
-rw-r--r--macros/latex-dev/base/doc.dtx9
-rw-r--r--macros/latex-dev/base/doc.pdfbin629059 -> 629843 bytes
-rw-r--r--macros/latex-dev/base/docstrip.dtx2
-rw-r--r--macros/latex-dev/base/docstrip.ins4
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin470025 -> 469409 bytes
-rw-r--r--macros/latex-dev/base/ec.ins4
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1244549 -> 1530505 bytes
-rw-r--r--macros/latex-dev/base/encguide.tex2
-rw-r--r--macros/latex-dev/base/exscale.dtx2
-rw-r--r--macros/latex-dev/base/exscale.ins4
-rw-r--r--macros/latex-dev/base/exscale.pdfbin195881 -> 195880 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.dtx2
-rw-r--r--macros/latex-dev/base/fix-cm.ins4
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin261915 -> 262051 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin356976 -> 360943 bytes
-rw-r--r--macros/latex-dev/base/fntguide.tex91
-rw-r--r--macros/latex-dev/base/fontdef.dtx149
-rw-r--r--macros/latex-dev/base/format.ins16
-rw-r--r--macros/latex-dev/base/graphpap.dtx2
-rw-r--r--macros/latex-dev/base/graphpap.ins4
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin156288 -> 156280 bytes
-rw-r--r--macros/latex-dev/base/idx.tex2
-rw-r--r--macros/latex-dev/base/ifthen.dtx2
-rw-r--r--macros/latex-dev/base/ifthen.ins4
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin205211 -> 205205 bytes
-rw-r--r--macros/latex-dev/base/inputenc.dtx2
-rw-r--r--macros/latex-dev/base/inputenc.ins4
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin294776 -> 294824 bytes
-rw-r--r--macros/latex-dev/base/lablst.tex2
-rw-r--r--macros/latex-dev/base/latex209.dtx2
-rw-r--r--macros/latex-dev/base/latex209.ins4
-rw-r--r--macros/latex-dev/base/latexchanges.pdfbin393049 -> 227574 bytes
-rw-r--r--macros/latex-dev/base/latexchanges.tex2
-rw-r--r--macros/latex-dev/base/latexrelease.dtx2
-rw-r--r--macros/latex-dev/base/latexrelease.ins8
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin245922 -> 246174 bytes
-rw-r--r--macros/latex-dev/base/latexsym.dtx2
-rw-r--r--macros/latex-dev/base/latexsym.ins6
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin192302 -> 192293 bytes
-rw-r--r--macros/latex-dev/base/lb2.pdfbin238183 -> 138223 bytes
-rw-r--r--macros/latex-dev/base/letter.dtx2
-rw-r--r--macros/latex-dev/base/letter.ins4
-rw-r--r--macros/latex-dev/base/letter.pdfbin305243 -> 305288 bytes
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin202897 -> 101344 bytes
-rw-r--r--macros/latex-dev/base/ltalloc.dtx2
-rw-r--r--macros/latex-dev/base/ltbibl.dtx2
-rw-r--r--macros/latex-dev/base/ltboxes.dtx2
-rw-r--r--macros/latex-dev/base/ltclass.dtx72
-rw-r--r--macros/latex-dev/base/ltcntrl.dtx2
-rw-r--r--macros/latex-dev/base/ltcounts.dtx2
-rw-r--r--macros/latex-dev/base/ltdefns.dtx2
-rw-r--r--macros/latex-dev/base/ltdirchk.dtx2
-rw-r--r--macros/latex-dev/base/lterror.dtx2
-rw-r--r--macros/latex-dev/base/ltexpl.dtx2
-rw-r--r--macros/latex-dev/base/ltfiles.dtx2
-rw-r--r--macros/latex-dev/base/ltfinal.dtx20
-rw-r--r--macros/latex-dev/base/ltfloat.dtx2
-rw-r--r--macros/latex-dev/base/ltfntcmd.dtx33
-rw-r--r--macros/latex-dev/base/ltfssaxes.dtx1231
-rw-r--r--macros/latex-dev/base/ltfssbas.dtx156
-rw-r--r--macros/latex-dev/base/ltfsscmp.dtx2
-rw-r--r--macros/latex-dev/base/ltfssdcl.dtx2
-rw-r--r--macros/latex-dev/base/ltfssini.dtx940
-rw-r--r--macros/latex-dev/base/ltfsstrc.dtx42
-rw-r--r--macros/latex-dev/base/lthyphen.dtx2
-rw-r--r--macros/latex-dev/base/ltidxglo.dtx2
-rw-r--r--macros/latex-dev/base/ltlength.dtx2
-rw-r--r--macros/latex-dev/base/ltlists.dtx4
-rw-r--r--macros/latex-dev/base/ltlogos.dtx2
-rw-r--r--macros/latex-dev/base/ltluatex.dtx2
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin302613 -> 302606 bytes
-rw-r--r--macros/latex-dev/base/ltmath.dtx2
-rw-r--r--macros/latex-dev/base/ltmiscen.dtx4
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin883720 -> 911022 bytes
-rw-r--r--macros/latex-dev/base/ltnews.tex11
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin150027 -> 150020 bytes
-rw-r--r--macros/latex-dev/base/ltnews01.tex2
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin141559 -> 134750 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.tex2
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin141541 -> 134730 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.tex2
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin135577 -> 128768 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.tex2
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin163984 -> 157174 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.tex2
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin133140 -> 133132 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.tex2
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin130835 -> 124028 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.tex2
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin144478 -> 144471 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.tex2
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin120216 -> 120208 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.tex2
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin147946 -> 147941 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.tex2
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin104948 -> 104942 bytes
-rw-r--r--macros/latex-dev/base/ltnews11.tex2
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin137925 -> 137918 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.tex2
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin161072 -> 161066 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.tex2
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin150928 -> 150920 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.tex2
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin122094 -> 122088 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.tex2
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin137500 -> 130688 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.tex2
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin156557 -> 149740 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.tex2
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin36010 -> 36003 bytes
-rw-r--r--macros/latex-dev/base/ltnews18.tex2
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin235074 -> 235068 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.tex2
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin283179 -> 283173 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin236105 -> 233341 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin302720 -> 302711 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.tex2
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin274333 -> 274326 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.tex2
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin255302 -> 252518 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.tex2
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin196332 -> 196325 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.tex2
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin365466 -> 362703 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.tex2
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin239763 -> 239755 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.tex2
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin368514 -> 368086 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.tex2
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin435463 -> 432667 bytes
-rw-r--r--macros/latex-dev/base/ltnews29.tex2
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin490976 -> 490969 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin337112 -> 424281 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.tex548
-rw-r--r--macros/latex-dev/base/ltoutenc.dtx775
-rw-r--r--macros/latex-dev/base/ltoutenc.ins9
-rw-r--r--macros/latex-dev/base/ltoutput.dtx2
-rw-r--r--macros/latex-dev/base/ltpage.dtx2
-rw-r--r--macros/latex-dev/base/ltpageno.dtx2
-rw-r--r--macros/latex-dev/base/ltpar.dtx2
-rw-r--r--macros/latex-dev/base/ltpictur.dtx2
-rw-r--r--macros/latex-dev/base/ltplain.dtx2
-rw-r--r--macros/latex-dev/base/ltsect.dtx2
-rw-r--r--macros/latex-dev/base/ltspace.dtx4
-rw-r--r--macros/latex-dev/base/lttab.dtx2
-rw-r--r--macros/latex-dev/base/lttextcomp.dtx2215
-rw-r--r--macros/latex-dev/base/ltthm.dtx2
-rw-r--r--macros/latex-dev/base/ltvers.dtx6
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin197804 -> 191533 bytes
-rw-r--r--macros/latex-dev/base/ltx3info.tex2
-rw-r--r--macros/latex-dev/base/ltxcheck.tex2
-rw-r--r--macros/latex-dev/base/ltxdoc.dtx2
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin215387 -> 215600 bytes
-rw-r--r--macros/latex-dev/base/ltxref.dtx2
-rw-r--r--macros/latex-dev/base/makeindx.dtx2
-rw-r--r--macros/latex-dev/base/makeindx.ins4
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin160679 -> 160673 bytes
-rw-r--r--macros/latex-dev/base/manual.pdfbin151360 -> 151354 bytes
-rw-r--r--macros/latex-dev/base/modguide.pdfbin226766 -> 220384 bytes
-rw-r--r--macros/latex-dev/base/modguide.tex2
-rw-r--r--macros/latex-dev/base/newdc.ins4
-rw-r--r--macros/latex-dev/base/newlfont.dtx2
-rw-r--r--macros/latex-dev/base/nfssfont.dtx2
-rw-r--r--macros/latex-dev/base/nfssfont.ins4
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin202434 -> 202429 bytes
-rw-r--r--macros/latex-dev/base/olddc.ins4
-rw-r--r--macros/latex-dev/base/oldlfont.dtx2
-rw-r--r--macros/latex-dev/base/preload.dtx2
-rw-r--r--macros/latex-dev/base/proc.dtx2
-rw-r--r--macros/latex-dev/base/proc.ins4
-rw-r--r--macros/latex-dev/base/proc.pdfbin216907 -> 216899 bytes
-rw-r--r--macros/latex-dev/base/slides.dtx10
-rw-r--r--macros/latex-dev/base/slides.ins8
-rw-r--r--macros/latex-dev/base/slides.pdfbin351771 -> 352152 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin214301 -> 214708 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin2878515 -> 3126387 bytes
-rw-r--r--macros/latex-dev/base/source2e.tex8
-rw-r--r--macros/latex-dev/base/syntonly.dtx2
-rw-r--r--macros/latex-dev/base/syntonly.ins4
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin182088 -> 181687 bytes
-rw-r--r--macros/latex-dev/base/testpage.tex2
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin273653 -> 164949 bytes
-rw-r--r--macros/latex-dev/base/tulm.ins4
-rw-r--r--macros/latex-dev/base/tulm.pdfbin156541 -> 156534 bytes
-rw-r--r--macros/latex-dev/base/unpack.ins2
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin396690 -> 398281 bytes
-rw-r--r--macros/latex-dev/base/usrguide.tex2
-rw-r--r--macros/latex-dev/base/utf8ienc.dtx2
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin337692 -> 330882 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin136159 -> 136153 bytes
-rw-r--r--macros/latex-dev/required/tools/afterpage.pdfbin189855 -> 189848 bytes
-rw-r--r--macros/latex-dev/required/tools/array.pdfbin481483 -> 481463 bytes
-rw-r--r--macros/latex-dev/required/tools/bm.pdfbin306786 -> 306782 bytes
-rw-r--r--macros/latex-dev/required/tools/calc.pdfbin340608 -> 340877 bytes
-rw-r--r--macros/latex-dev/required/tools/changes.txt10
-rw-r--r--macros/latex-dev/required/tools/dcolumn.pdfbin199053 -> 199221 bytes
-rw-r--r--macros/latex-dev/required/tools/delarray.pdfbin183440 -> 183432 bytes
-rw-r--r--macros/latex-dev/required/tools/enumerate.pdfbin199056 -> 199049 bytes
-rw-r--r--macros/latex-dev/required/tools/fileerr.pdfbin180550 -> 180048 bytes
-rw-r--r--macros/latex-dev/required/tools/fontsmpl.pdfbin144826 -> 138025 bytes
-rw-r--r--macros/latex-dev/required/tools/ftnright.pdfbin347382 -> 346873 bytes
-rw-r--r--macros/latex-dev/required/tools/hhline.dtx19
-rw-r--r--macros/latex-dev/required/tools/hhline.pdfbin175724 -> 175678 bytes
-rw-r--r--macros/latex-dev/required/tools/indentfirst.pdfbin144786 -> 144779 bytes
-rw-r--r--macros/latex-dev/required/tools/layout.pdfbin246939 -> 246931 bytes
-rw-r--r--macros/latex-dev/required/tools/longtable.pdfbin350096 -> 350326 bytes
-rw-r--r--macros/latex-dev/required/tools/multicol.dtx43
-rw-r--r--macros/latex-dev/required/tools/multicol.pdfbin490977 -> 491417 bytes
-rw-r--r--macros/latex-dev/required/tools/rawfonts.pdfbin135695 -> 135688 bytes
-rw-r--r--macros/latex-dev/required/tools/shellesc.pdfbin169764 -> 169757 bytes
-rw-r--r--macros/latex-dev/required/tools/showkeys.pdfbin242793 -> 242786 bytes
-rw-r--r--macros/latex-dev/required/tools/somedefs.pdfbin156466 -> 156511 bytes
-rw-r--r--macros/latex-dev/required/tools/tabularx.pdfbin254089 -> 254340 bytes
-rw-r--r--macros/latex-dev/required/tools/theorem.pdfbin323501 -> 323427 bytes
-rw-r--r--macros/latex-dev/required/tools/tools-overview.pdfbin68295 -> 68288 bytes
-rw-r--r--macros/latex-dev/required/tools/trace.pdfbin212747 -> 212742 bytes
-rw-r--r--macros/latex-dev/required/tools/varioref.pdfbin355234 -> 355228 bytes
-rw-r--r--macros/latex-dev/required/tools/verbatim.pdfbin308886 -> 302239 bytes
-rw-r--r--macros/latex-dev/required/tools/xr.pdfbin163793 -> 163785 bytes
-rw-r--r--macros/latex-dev/required/tools/xspace.pdfbin238011 -> 238007 bytes
-rw-r--r--macros/latex/contrib/apa6/README2
-rw-r--r--macros/latex/contrib/apa6/apa6.dtx64
-rw-r--r--macros/latex/contrib/apa6/apa6.ins8
-rw-r--r--macros/latex/contrib/apa6/apa6.pdfbin596112 -> 595965 bytes
-rw-r--r--macros/latex/contrib/apa6/config/APAamerican.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAbritish.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAczech.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAdutch.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAendfloat.cfg4
-rw-r--r--macros/latex/contrib/apa6/config/APAenglish.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAgerman.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAgreek.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAngerman.txt4
-rw-r--r--macros/latex/contrib/apa6/config/APAturkish.txt4
-rw-r--r--macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas4
-rw-r--r--macros/latex/contrib/apa6/pseudoTeX/apa6.ptex4
-rw-r--r--macros/latex/contrib/apa6/samples/bibliography.bib4
-rw-r--r--macros/latex/contrib/apa6/samples/longsample.tex12
-rw-r--r--macros/latex/contrib/apa6/samples/shortsample.tex8
-rw-r--r--macros/latex/contrib/ascmac/LICENSE8
-rw-r--r--macros/latex/contrib/ascmac/README.md2
-rw-r--r--macros/latex/contrib/ascmac/ascmac.dtx20
-rw-r--r--macros/latex/contrib/ascmac/ascmac.ins2
-rw-r--r--macros/latex/contrib/ascmac/ascmac.pdfbin153604 -> 158813 bytes
-rw-r--r--macros/latex/contrib/fancyvrb/Changes1
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdfbin142045 -> 133221 bytes
-rw-r--r--macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex15
-rw-r--r--macros/latex/contrib/fancyvrb/latex/fancyvrb.sty22
-rw-r--r--macros/latex/contrib/hep-paper/README.md21
-rw-r--r--macros/latex/contrib/hep-paper/bibliography.bib316
-rw-r--r--macros/latex/contrib/hep-paper/hep-paper.dtx886
-rw-r--r--macros/latex/contrib/hep-paper/hep-paper.ins46
-rw-r--r--macros/latex/contrib/hep-paper/hep-paper.pdfbin0 -> 425702 bytes
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md27
-rw-r--r--macros/latex/contrib/l3experimental/README.md4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin314260 -> 314019 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3cctab.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3cctab.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3cctab.pdfbin337589 -> 337341 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3color.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3color.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3color.pdfbin349925 -> 349685 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin623881 -> 624175 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx5
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin491346 -> 491117 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin385758 -> 385522 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx10
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin363110 -> 362861 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf-code.pdfbin277245 -> 277030 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3pdf.pdfbin349784 -> 349545 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin344902 -> 344664 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.ins4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin311673 -> 311429 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.ins4
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin372901 -> 372664 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.ins4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin285678 -> 285447 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md103
-rw-r--r--macros/latex/contrib/l3kernel/README.md4
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx136
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin585033 -> 584331 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1534997 -> 1538470 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins8
-rw-r--r--macros/latex/contrib/l3kernel/l3alloc.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx1927
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3color-base.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx81
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin263406 -> 263041 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx157
-rw-r--r--macros/latex/contrib/l3kernel/l3final.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3format.ins9
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx60
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin0 -> 413933 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news.tex157
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin0 -> 113527 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.tex102
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin0 -> 140776 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.tex153
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin0 -> 144780 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.tex128
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin0 -> 107119 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.tex123
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin0 -> 105092 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.tex64
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin0 -> 140796 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.tex141
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin0 -> 118976 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.tex111
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin0 -> 152413 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.tex170
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin0 -> 235323 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.tex1433
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin0 -> 147099 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.tex220
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin0 -> 174241 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.tex206
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin0 -> 244282 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.tex352
-rw-r--r--macros/latex/contrib/l3kernel/l3obsolete.txt639
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv3
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin59064 -> 59384 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx60
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin280166 -> 279782 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin227888 -> 227512 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin186679 -> 186295 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex4
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx1421
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx903
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx332
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx71
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin5694617 -> 5757322 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex4
-rw-r--r--macros/latex/contrib/l3kernel/source3body.tex7
-rw-r--r--macros/latex/contrib/l3packages/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/l3packages/README.md6
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.dtx6
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.ins4
-rw-r--r--macros/latex/contrib/l3packages/l3keys2e.pdfbin327046 -> 326866 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfp.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xfp.ins4
-rw-r--r--macros/latex/contrib/l3packages/xfp.pdfbin309901 -> 309651 bytes
-rw-r--r--macros/latex/contrib/l3packages/xfrac.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xfrac.ins4
-rw-r--r--macros/latex/contrib/l3packages/xfrac.pdfbin454315 -> 454084 bytes
-rw-r--r--macros/latex/contrib/l3packages/xparse.dtx8
-rw-r--r--macros/latex/contrib/l3packages/xparse.ins4
-rw-r--r--macros/latex/contrib/l3packages/xparse.pdfbin501992 -> 501747 bytes
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.dtx6
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.ins4
-rw-r--r--macros/latex/contrib/l3packages/xtemplate.pdfbin416401 -> 416174 bytes
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb118
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.md52
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha5122
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc14
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2153084 -> 2150904 bytes
-rw-r--r--systems/win32/miktex/tm/packages/files.csv.lzmabin515085 -> 518736 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/files.csv.lzmabin515136 -> 518770 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini10
-rw-r--r--systems/win32/w32tex/ChangeLog16
-rw-r--r--timestamp2
459 files changed, 15660 insertions, 5257 deletions
diff --git a/FILES.byname b/FILES.byname
index 035b78ef4d..4716907f70 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -4993,7 +4993,7 @@
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
2014/04/13 | 4600576 | dviware/xdvi/22.87/xdvik-22.87.tar.gz
-2020/01/12 | 123993 | FILES.last07days
+2020/01/13 | 121147 | FILES.last07days
2018/06/27 | 99883 | fonts/academicons/academicons.pdf
2018/06/27 | 10779 | fonts/academicons/academicons.sty
2018/06/27 | 5774 | fonts/academicons/academicons.tex
@@ -37575,20 +37575,20 @@
2019/10/10 | 7072 | fonts/fira/latex/TS1FiraSans-TLF.fd
2019/10/10 | 7201 | fonts/fira/latex/TS1FiraSans-TOsF.fd
2019/10/10 | 136456 | fonts/fira/map/fira.map
-2019/06/03 | 36461 | fonts/firamath/firamath-demo.pdf
-2019/06/03 | 3722 | fonts/firamath/firamath-demo.tex
-2019/06/03 | 25559 | fonts/firamath/firamath-glyph-list.tex
-2019/06/03 | 177732 | fonts/firamath/FiraMath-Regular.otf
-2019/06/03 | 544741 | fonts/firamath/firamath-specimen.pdf
-2019/06/03 | 15896 | fonts/firamath/firamath-specimen.tex
+2020/01/13 | 55995 | fonts/firamath/firamath-demo.pdf
+2020/01/13 | 4902 | fonts/firamath/firamath-demo.tex
+2020/01/13 | 25619 | fonts/firamath/firamath-glyph-list.tex
+2020/01/13 | 152644 | fonts/firamath/FiraMath-Regular.otf
+2020/01/13 | 516193 | fonts/firamath/firamath-specimen.pdf
+2020/01/13 | 15841 | fonts/firamath/firamath-specimen.tex
2019/04/03 | 132 | fonts/firamath-otf/Changes
2019/04/03 | 117979 | fonts/firamath-otf/doc/firamath-otf-doc.pdf
2019/04/03 | 42683 | fonts/firamath-otf/doc/firamath-otf-doc.tex
2019/04/03 | 2834 | fonts/firamath-otf/latex/firamath-otf.sty
2019/03/27 | 329 | fonts/firamath-otf/README.md
2019/04/03 | 125822 | fonts/firamath-otf.zip
-2019/06/03 | 1069 | fonts/firamath/README.md
-2019/06/03 | 685271 | fonts/firamath.zip
+2020/01/13 | 1074 | fonts/firamath/README.md
+2020/01/13 | 660240 | fonts/firamath.zip
2019/10/10 | 206760 | fonts/fira/opentype/FiraMono-BoldOblique.otf
2019/10/10 | 138776 | fonts/fira/opentype/FiraMono-Bold.otf
2019/10/10 | 202752 | fonts/fira/opentype/FiraMono-MediumOblique.otf
@@ -135369,15 +135369,15 @@
2016/12/30 | 5870 | graphics/sparklines/sparklines.sty
2016/12/30 | 11611 | graphics/sparklines/sparklines.tex
2016/12/31 | 142004 | graphics/sparklines.zip
-2019/10/23 | 1465 | graphics/svg/doc/LICENSE.md
-2019/10/23 | 1028970 | graphics/svg/doc/svg.pdf
-2019/10/23 | 3810 | graphics/svg/README.md
-2019/10/23 | 996 | graphics/svg/source/examples/root.C
+2020/01/13 | 1461 | graphics/svg/doc/LICENSE.md
+2020/01/13 | 1028543 | graphics/svg/doc/svg.pdf
+2020/01/13 | 3886 | graphics/svg/README.md
+2020/01/13 | 981 | graphics/svg/source/examples/root.C
2017/11/28 | 702157 | graphics/svg/source/examples/root.svg
2017/11/29 | 28014 | graphics/svg/source/examples/svg-example.svg
2018/09/08 | 110 | graphics/svg/source/examples/svg-preamble.tex
-2019/10/23 | 218295 | graphics/svg/source/svg.dtx
-2019/10/23 | 1150944 | graphics/svg.zip
+2020/01/13 | 218137 | graphics/svg/source/svg.dtx
+2020/01/13 | 1150532 | graphics/svg.zip
2016/08/13 | 770 | graphics/table-fct/README
2016/08/13 | 62044 | graphics/table-fct/table-fct-doc.pdf
2016/08/13 | 49811 | graphics/table-fct/table-fct-exemples.pdf
@@ -159640,7 +159640,7 @@
2017/09/11 | 2838552 | install/fonts/fbb.tds.zip
2012/05/28 | 1585477 | install/fonts/fdsymbol.tds.zip
2013/01/24 | 104073 | install/fonts/figbas.tds.zip
-2019/06/03 | 686795 | install/fonts/firamath.tds.zip
+2020/01/13 | 661758 | install/fonts/firamath.tds.zip
2019/10/10 | 26131420 | install/fonts/fira.tds.zip
2019/12/17 | 651168 | install/fonts/forum.tds.zip
2013/04/04 | 75615 | install/fonts/fouriernc.tds.zip
@@ -159818,7 +159818,7 @@
2019/12/03 | 3237505 | install/macros/latex/contrib/animate.tds.zip
2014/08/24 | 220789 | install/macros/latex/contrib/answers.tds.zip
2009/09/08 | 175772 | install/macros/latex/contrib/appendix.tds.zip
-2018/03/09 | 187753 | install/macros/latex/contrib/ascmac.tds.zip
+2020/01/13 | 191979 | install/macros/latex/contrib/ascmac.tds.zip
2019/12/10 | 605616 | install/macros/latex/contrib/askinclude.tds.zip
2010/03/20 | 235440 | install/macros/latex/contrib/asyfig.tds.zip
2019/12/05 | 418377 | install/macros/latex/contrib/atbegshi.tds.zip
@@ -159972,9 +159972,9 @@
2019/12/15 | 385518 | install/macros/latex/contrib/kvsetkeys.tds.zip
2019/11/25 | 785272 | install/macros/latex/contrib/l3backend.tds.zip
2019/11/27 | 785828 | install/macros/latex/contrib/l3build.tds.zip
-2019/10/11 | 4942596 | install/macros/latex/contrib/l3experimental.tds.zip
-2019/11/07 | 9430371 | install/macros/latex/contrib/l3kernel.tds.zip
-2019/10/11 | 2111774 | install/macros/latex/contrib/l3packages.tds.zip
+2020/01/13 | 4940260 | install/macros/latex/contrib/l3experimental.tds.zip
+2020/01/13 | 11795151 | install/macros/latex/contrib/l3kernel.tds.zip
+2020/01/13 | 2110761 | install/macros/latex/contrib/l3packages.tds.zip
2015/03/29 | 573323 | install/macros/latex/contrib/lastpage.tds.zip
2009/09/02 | 556672 | install/macros/latex/contrib/layouts.tds.zip
2008/07/25 | 125603 | install/macros/latex/contrib/lcyw.tds.zip
@@ -160139,10 +160139,10 @@
2018/09/08 | 733096 | install/macros/latex/contrib/zhlipsum.tds.zip
2019/04/07 | 292635 | install/macros/latex/contrib/zhnumber.tds.zip
2019/11/29 | 738022 | install/macros/latex/contrib/zref.tds.zip
-2019/11/20 | 22333461 | install/macros/latex-dev/latex-base-dev.tds.zip
+2020/01/12 | 22124063 | install/macros/latex-dev/latex-base-dev.tds.zip
2019/11/18 | 2636412 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip
2019/11/18 | 2535792 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip
-2019/11/18 | 6968219 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
+2020/01/13 | 6935353 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
2019/11/10 | 21967509 | install/macros/latex/latex-base.tds.zip
2017/12/18 | 1359749 | install/macros/latex/required/amscls.tds.zip
2013/03/08 | 2480846 | install/macros/latex/required/amslatex/math.tds.zip
@@ -176359,32 +176359,32 @@
2017/12/14 | 1410 | macros/latex/contrib/aomart/Makefile
2017/12/14 | 2276 | macros/latex/contrib/aomart/README
2017/12/16 | 1636114 | macros/latex/contrib/aomart.zip
-2018/09/02 | 171076 | macros/latex/contrib/apa6/apa6.dtx
-2018/09/02 | 6704 | macros/latex/contrib/apa6/apa6.ins
-2018/09/02 | 596112 | macros/latex/contrib/apa6/apa6.pdf
-2018/09/02 | 3169 | macros/latex/contrib/apa6/config/APAamerican.txt
-2018/09/02 | 3164 | macros/latex/contrib/apa6/config/APAbritish.txt
-2018/09/02 | 3204 | macros/latex/contrib/apa6/config/APAczech.txt
-2018/09/02 | 3193 | macros/latex/contrib/apa6/config/APAdutch.txt
-2018/09/02 | 5548 | macros/latex/contrib/apa6/config/APAendfloat.cfg
-2018/09/02 | 3169 | macros/latex/contrib/apa6/config/APAenglish.txt
-2018/09/02 | 3214 | macros/latex/contrib/apa6/config/APAgerman.txt
-2018/09/02 | 3221 | macros/latex/contrib/apa6/config/APAgreek.txt
-2018/09/02 | 3223 | macros/latex/contrib/apa6/config/APAngerman.txt
-2018/09/02 | 3213 | macros/latex/contrib/apa6/config/APAturkish.txt
+2020/01/13 | 172025 | macros/latex/contrib/apa6/apa6.dtx
+2020/01/13 | 6704 | macros/latex/contrib/apa6/apa6.ins
+2020/01/13 | 595965 | macros/latex/contrib/apa6/apa6.pdf
+2020/01/13 | 3169 | macros/latex/contrib/apa6/config/APAamerican.txt
+2020/01/13 | 3164 | macros/latex/contrib/apa6/config/APAbritish.txt
+2020/01/13 | 3204 | macros/latex/contrib/apa6/config/APAczech.txt
+2020/01/13 | 3193 | macros/latex/contrib/apa6/config/APAdutch.txt
+2020/01/13 | 5548 | macros/latex/contrib/apa6/config/APAendfloat.cfg
+2020/01/13 | 3169 | macros/latex/contrib/apa6/config/APAenglish.txt
+2020/01/13 | 3214 | macros/latex/contrib/apa6/config/APAgerman.txt
+2020/01/13 | 3221 | macros/latex/contrib/apa6/config/APAgreek.txt
+2020/01/13 | 3223 | macros/latex/contrib/apa6/config/APAngerman.txt
+2020/01/13 | 3213 | macros/latex/contrib/apa6/config/APAturkish.txt
2011/07/03 | 21981 | macros/latex/contrib/apa6e/apa6e.dtx
2011/02/13 | 3882 | macros/latex/contrib/apa6e/apa6e.ins
2011/07/03 | 260826 | macros/latex/contrib/apa6e/apa6e.pdf
2011/02/13 | 1450 | macros/latex/contrib/apa6e/README
2012/12/30 | 255227 | macros/latex/contrib/apa6e.zip
-2018/09/02 | 13798 | macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
-2018/09/02 | 13269 | macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
-2018/09/02 | 1422 | macros/latex/contrib/apa6/README
-2018/09/02 | 7724 | macros/latex/contrib/apa6/samples/bibliography.bib
+2020/01/13 | 13798 | macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
+2020/01/13 | 13269 | macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
+2020/01/13 | 1422 | macros/latex/contrib/apa6/README
+2020/01/13 | 7724 | macros/latex/contrib/apa6/samples/bibliography.bib
2011/11/12 | 5068 | macros/latex/contrib/apa6/samples/Figure1.pdf
-2018/09/02 | 6904 | macros/latex/contrib/apa6/samples/longsample.tex
-2018/09/02 | 6247 | macros/latex/contrib/apa6/samples/shortsample.tex
-2018/09/02 | 626993 | macros/latex/contrib/apa6.zip
+2020/01/13 | 6908 | macros/latex/contrib/apa6/samples/longsample.tex
+2020/01/13 | 6249 | macros/latex/contrib/apa6/samples/shortsample.tex
+2020/01/13 | 627172 | macros/latex/contrib/apa6.zip
2019/12/30 | 144735 | macros/latex/contrib/apa7/apa7.dtx
2019/12/30 | 515208 | macros/latex/contrib/apa7/apa7.pdf
2019/12/30 | 3045 | macros/latex/contrib/apa7/config/APA7american.txt
@@ -176518,23 +176518,23 @@
2018/11/03 | 386568 | macros/latex/contrib/asciilist/asciilist.pdf
2018/11/03 | 2221 | macros/latex/contrib/asciilist/README.md
2018/11/03 | 396438 | macros/latex/contrib/asciilist.zip
-2018/03/09 | 10099 | macros/latex/contrib/ascmac/ascgrp.mf
-2018/03/09 | 7700 | macros/latex/contrib/ascmac/ascgrp.pfb
-2018/03/09 | 448 | macros/latex/contrib/ascmac/ascgrp.tfm
-2018/03/09 | 32 | macros/latex/contrib/ascmac/ascii10.mf
-2018/03/09 | 2910 | macros/latex/contrib/ascmac/ascii10.pfb
-2018/03/09 | 204 | macros/latex/contrib/ascmac/ascii10.tfm
-2018/03/09 | 32 | macros/latex/contrib/ascmac/ascii36.mf
-2018/03/09 | 2892 | macros/latex/contrib/ascmac/ascii36.pfb
-2018/03/09 | 208 | macros/latex/contrib/ascmac/ascii36.tfm
-2018/03/09 | 6074 | macros/latex/contrib/ascmac/ascii.mf
-2018/03/09 | 27283 | macros/latex/contrib/ascmac/ascmac.dtx
-2018/03/09 | 478 | macros/latex/contrib/ascmac/ascmac.ins
-2018/03/09 | 153604 | macros/latex/contrib/ascmac/ascmac.pdf
-2018/03/09 | 1539 | macros/latex/contrib/ascmac/LICENSE
-2018/03/09 | 1675 | macros/latex/contrib/ascmac/Makefile
-2018/03/09 | 793 | macros/latex/contrib/ascmac/README.md
-2018/03/09 | 179175 | macros/latex/contrib/ascmac.zip
+2020/01/13 | 10099 | macros/latex/contrib/ascmac/ascgrp.mf
+2020/01/13 | 7700 | macros/latex/contrib/ascmac/ascgrp.pfb
+2020/01/13 | 448 | macros/latex/contrib/ascmac/ascgrp.tfm
+2020/01/13 | 32 | macros/latex/contrib/ascmac/ascii10.mf
+2020/01/13 | 2910 | macros/latex/contrib/ascmac/ascii10.pfb
+2020/01/13 | 204 | macros/latex/contrib/ascmac/ascii10.tfm
+2020/01/13 | 32 | macros/latex/contrib/ascmac/ascii36.mf
+2020/01/13 | 2892 | macros/latex/contrib/ascmac/ascii36.pfb
+2020/01/13 | 208 | macros/latex/contrib/ascmac/ascii36.tfm
+2020/01/13 | 6074 | macros/latex/contrib/ascmac/ascii.mf
+2020/01/13 | 27400 | macros/latex/contrib/ascmac/ascmac.dtx
+2020/01/13 | 478 | macros/latex/contrib/ascmac/ascmac.ins
+2020/01/13 | 158813 | macros/latex/contrib/ascmac/ascmac.pdf
+2020/01/13 | 1553 | macros/latex/contrib/ascmac/LICENSE
+2020/01/13 | 1675 | macros/latex/contrib/ascmac/Makefile
+2020/01/13 | 793 | macros/latex/contrib/ascmac/README.md
+2020/01/13 | 183380 | macros/latex/contrib/ascmac.zip
2019/12/10 | 55095 | macros/latex/contrib/askinclude/askinclude.dtx
2019/12/10 | 594585 | macros/latex/contrib/askinclude/askinclude.pdf
2019/12/10 | 117 | macros/latex/contrib/askinclude/README.md
@@ -184407,15 +184407,15 @@
2010/12/16 | 32810 | macros/latex/contrib/fancytooltips/tip.pdf
2010/12/16 | 586 | macros/latex/contrib/fancytooltips/tip.tex
2012/09/26 | 1590569 | macros/latex/contrib/fancytooltips.zip
-2019/11/09 | 1231 | macros/latex/contrib/fancyvrb/Changes
-2019/10/22 | 142045 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
-2019/10/22 | 40034 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
-2019/11/09 | 4642 | macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty
-2019/11/09 | 42834 | macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
-2019/01/16 | 5109 | macros/latex/contrib/fancyvrb/latex/hbaw.sty
-2019/01/16 | 5245 | macros/latex/contrib/fancyvrb/latex/hcolor.sty
-2019/01/15 | 1768 | macros/latex/contrib/fancyvrb/README
-2019/11/09 | 164667 | macros/latex/contrib/fancyvrb.zip
+2020/01/13 | 1309 | macros/latex/contrib/fancyvrb/Changes
+2020/01/13 | 133221 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+2020/01/13 | 40082 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
+2019/11/25 | 4642 | macros/latex/contrib/fancyvrb/latex/fancyvrb-ex.sty
+2020/01/13 | 43158 | macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
+2019/11/25 | 5109 | macros/latex/contrib/fancyvrb/latex/hbaw.sty
+2019/11/25 | 5245 | macros/latex/contrib/fancyvrb/latex/hcolor.sty
+2019/11/25 | 1768 | macros/latex/contrib/fancyvrb/README
+2020/01/13 | 155856 | macros/latex/contrib/fancyvrb.zip
2018/12/18 | 29200 | macros/latex/contrib/fascicules/fascicules.dtx
2018/12/18 | 1592 | macros/latex/contrib/fascicules/fascicules.ins
2018/12/19 | 181208 | macros/latex/contrib/fascicules/fascicules.pdf
@@ -187672,6 +187672,12 @@
2014/07/08 | 4071 | macros/latex/contrib/hepnames/mkmacrotables
2012/05/07 | 1678 | macros/latex/contrib/hepnames/README
2014/12/02 | 1462454 | macros/latex/contrib/hepnames.zip
+2020/01/13 | 7681 | macros/latex/contrib/hep-paper/bibliography.bib
+2020/01/13 | 30613 | macros/latex/contrib/hep-paper/hep-paper.dtx
+2020/01/13 | 1424 | macros/latex/contrib/hep-paper/hep-paper.ins
+2020/01/13 | 425702 | macros/latex/contrib/hep-paper/hep-paper.pdf
+2020/01/13 | 1008 | macros/latex/contrib/hep-paper/README.md
+2020/01/13 | 435337 | macros/latex/contrib/hep-paper.zip
2014/12/01 | 2025 | macros/latex/contrib/hepparticles/ChangeLog
2014/12/01 | 39760 | macros/latex/contrib/hepparticles/hepparticles.pdf
2014/12/02 | 16682 | macros/latex/contrib/hepparticles/hepparticles.sty
@@ -189561,147 +189567,174 @@
2019/11/27 | 6790 | macros/latex/contrib/l3build/l3build-variables.lua
2019/11/27 | 1024 | macros/latex/contrib/l3build/README.md
2019/11/27 | 781880 | macros/latex/contrib/l3build.zip
-2019/10/11 | 3539 | macros/latex/contrib/l3experimental/CHANGELOG.md
-2019/10/11 | 17815 | macros/latex/contrib/l3experimental/l3benchmark.dtx
-2019/10/11 | 1564 | macros/latex/contrib/l3experimental/l3benchmark.ins
-2019/10/11 | 314260 | macros/latex/contrib/l3experimental/l3benchmark.pdf
-2019/10/11 | 17934 | macros/latex/contrib/l3experimental/l3cctab.dtx
-2019/10/11 | 1559 | macros/latex/contrib/l3experimental/l3cctab.ins
-2019/10/11 | 337589 | macros/latex/contrib/l3experimental/l3cctab.pdf
-2019/10/11 | 29901 | macros/latex/contrib/l3experimental/l3color.dtx
-2019/10/11 | 1547 | macros/latex/contrib/l3experimental/l3color.ins
-2019/10/11 | 349925 | macros/latex/contrib/l3experimental/l3color.pdf
-2019/10/11 | 4328 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
-2019/10/11 | 623881 | macros/latex/contrib/l3experimental/l3draw-code.pdf
-2019/10/11 | 1356 | macros/latex/contrib/l3experimental/l3draw-code.tex
-2019/10/11 | 40718 | macros/latex/contrib/l3experimental/l3draw.dtx
-2019/10/11 | 1912 | macros/latex/contrib/l3experimental/l3draw.ins
-2019/10/11 | 5662 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
-2019/10/11 | 32473 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
-2019/10/11 | 491346 | macros/latex/contrib/l3experimental/l3draw.pdf
-2019/10/11 | 31299 | macros/latex/contrib/l3experimental/l3draw-points.dtx
-2019/10/11 | 7488 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
-2019/10/11 | 20463 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
-2019/10/11 | 6163 | macros/latex/contrib/l3experimental/l3draw-state.dtx
-2019/10/11 | 9888 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
-2019/10/11 | 96866 | macros/latex/contrib/l3experimental/l3galley.dtx
-2019/10/11 | 385758 | macros/latex/contrib/l3experimental/l3galley.pdf
-2019/10/11 | 24771 | macros/latex/contrib/l3experimental/l3graphics.dtx
-2019/10/11 | 1549 | macros/latex/contrib/l3experimental/l3graphics.ins
-2019/10/11 | 363110 | macros/latex/contrib/l3experimental/l3graphics.pdf
-2019/10/11 | 277245 | macros/latex/contrib/l3experimental/l3pdf-code.pdf
-2019/10/11 | 1116 | macros/latex/contrib/l3experimental/l3pdf-code.tex
-2019/10/11 | 9857 | macros/latex/contrib/l3experimental/l3pdf.dtx
-2019/10/11 | 1526 | macros/latex/contrib/l3experimental/l3pdf.ins
-2019/10/11 | 349784 | macros/latex/contrib/l3experimental/l3pdf.pdf
-2019/10/11 | 31787 | macros/latex/contrib/l3experimental/l3str-format.dtx
-2019/10/11 | 344902 | macros/latex/contrib/l3experimental/l3str-format.pdf
-2019/10/11 | 1565 | macros/latex/contrib/l3experimental/l3str.ins
-2019/10/11 | 10937 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
-2019/10/11 | 1571 | macros/latex/contrib/l3experimental/l3sys-shell.ins
-2019/10/11 | 311673 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
-2019/10/11 | 4549 | macros/latex/contrib/l3experimental/README.md
-2019/10/11 | 35177 | macros/latex/contrib/l3experimental/xcoffins.dtx
-2019/10/11 | 1570 | macros/latex/contrib/l3experimental/xcoffins.ins
-2019/10/11 | 372901 | macros/latex/contrib/l3experimental/xcoffins.pdf
-2019/10/11 | 58429 | macros/latex/contrib/l3experimental/xgalley.dtx
-2019/10/11 | 1625 | macros/latex/contrib/l3experimental/xgalley.ins
-2019/10/11 | 285678 | macros/latex/contrib/l3experimental/xgalley.pdf
-2019/10/12 | 4900116 | macros/latex/contrib/l3experimental.zip
-2019/11/07 | 17754 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2019/11/07 | 62239 | macros/latex/contrib/l3kernel/expl3.dtx
-2019/11/07 | 585033 | macros/latex/contrib/l3kernel/expl3.pdf
-2019/11/07 | 1534997 | macros/latex/contrib/l3kernel/interface3.pdf
-2019/11/07 | 1909 | macros/latex/contrib/l3kernel/interface3.tex
-2019/11/07 | 6236 | macros/latex/contrib/l3kernel/l3alloc.dtx
-2019/11/07 | 127036 | macros/latex/contrib/l3kernel/l3basics.dtx
-2019/11/07 | 19309 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
-2019/11/07 | 77128 | macros/latex/contrib/l3kernel/l3box.dtx
-2019/11/07 | 127602 | macros/latex/contrib/l3kernel/l3candidates.dtx
-2019/11/07 | 74349 | macros/latex/contrib/l3kernel/l3clist.dtx
-2019/11/07 | 85507 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2019/11/07 | 6203 | macros/latex/contrib/l3kernel/l3color-base.dtx
-2019/11/07 | 42137 | macros/latex/contrib/l3kernel/l3debug.dtx
-2019/11/07 | 35123 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2019/11/07 | 149143 | macros/latex/contrib/l3kernel/l3doc.dtx
-2019/11/07 | 9772 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2019/11/07 | 263406 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2019/11/07 | 106688 | macros/latex/contrib/l3kernel/l3expan.dtx
-2019/11/07 | 122056 | macros/latex/contrib/l3kernel/l3file.dtx
-2019/11/07 | 15708 | macros/latex/contrib/l3kernel/l3final.dtx
-2019/11/07 | 9450 | macros/latex/contrib/l3kernel/l3flag.dtx
-2019/11/07 | 5667 | macros/latex/contrib/l3kernel/l3format.ins
-2019/11/07 | 11826 | macros/latex/contrib/l3kernel/l3fparray.dtx
-2019/11/07 | 6970 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
-2019/11/07 | 47215 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2019/11/07 | 84833 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
-2019/11/07 | 19661 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
-2019/11/07 | 70287 | macros/latex/contrib/l3kernel/l3fp.dtx
-2019/11/07 | 49394 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2019/11/07 | 51073 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
-2019/11/07 | 23068 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
-2019/11/07 | 105630 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2019/11/07 | 25753 | macros/latex/contrib/l3kernel/l3fp-random.dtx
-2019/11/07 | 18605 | macros/latex/contrib/l3kernel/l3fp-round.dtx
-2019/11/07 | 12979 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
-2019/11/07 | 73859 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
-2019/11/07 | 5990 | macros/latex/contrib/l3kernel/l3.ins
-2019/11/07 | 19693 | macros/latex/contrib/l3kernel/l3intarray.dtx
-2019/11/07 | 88273 | macros/latex/contrib/l3kernel/l3int.dtx
-2019/11/07 | 19219 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
-2019/11/07 | 97721 | macros/latex/contrib/l3kernel/l3keys.dtx
-2019/11/07 | 2479 | macros/latex/contrib/l3kernel/l3legacy.dtx
-2019/11/07 | 16725 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2019/11/07 | 71688 | macros/latex/contrib/l3kernel/l3msg.dtx
-2019/11/07 | 112671 | macros/latex/contrib/l3kernel/l3names.dtx
-2019/11/07 | 35785 | macros/latex/contrib/l3kernel/l3obsolete.txt
-2019/11/07 | 29531 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2019/11/07 | 59064 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2019/11/07 | 2592 | macros/latex/contrib/l3kernel/l3prefixes.tex
-2019/11/07 | 64264 | macros/latex/contrib/l3kernel/l3prg.dtx
-2019/11/07 | 49619 | macros/latex/contrib/l3kernel/l3prop.dtx
-2019/11/07 | 21817 | macros/latex/contrib/l3kernel/l3quark.dtx
-2019/11/07 | 250949 | macros/latex/contrib/l3kernel/l3regex.dtx
-2019/11/07 | 82562 | macros/latex/contrib/l3kernel/l3seq.dtx
-2019/11/07 | 75907 | macros/latex/contrib/l3kernel/l3skip.dtx
-2019/11/07 | 40930 | macros/latex/contrib/l3kernel/l3sort.dtx
-2019/11/07 | 109736 | macros/latex/contrib/l3kernel/l3str-convert.dtx
-2019/11/07 | 72900 | macros/latex/contrib/l3kernel/l3str.dtx
-2019/11/07 | 280166 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2019/11/07 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2019/11/07 | 227888 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
-2019/11/07 | 6104 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2019/11/07 | 26532 | macros/latex/contrib/l3kernel/l3sys.dtx
-2019/11/07 | 186679 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
-2019/11/07 | 1642 | macros/latex/contrib/l3kernel/l3term-glossary.tex
-2019/11/07 | 40709 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2019/11/07 | 132279 | macros/latex/contrib/l3kernel/l3tl.dtx
-2019/11/07 | 98506 | macros/latex/contrib/l3kernel/l3token.dtx
-2019/11/07 | 8973 | macros/latex/contrib/l3kernel/l3unicode.dtx
-2019/11/07 | 2997 | macros/latex/contrib/l3kernel/README.md
-2019/11/07 | 21047 | macros/latex/contrib/l3kernel/source3body.tex
-2019/11/07 | 5694617 | macros/latex/contrib/l3kernel/source3.pdf
-2019/11/07 | 2153 | macros/latex/contrib/l3kernel/source3.tex
-2019/11/07 | 9222507 | macros/latex/contrib/l3kernel.zip
-2019/10/11 | 1947 | macros/latex/contrib/l3packages/CHANGELOG.md
-2019/10/11 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
-2019/10/11 | 11156 | macros/latex/contrib/l3packages/l3keys2e.dtx
-2019/10/11 | 1229 | macros/latex/contrib/l3packages/l3keys2e.ins
-2019/10/11 | 327046 | macros/latex/contrib/l3packages/l3keys2e.pdf
-2019/10/11 | 3409 | macros/latex/contrib/l3packages/README.md
-2019/10/11 | 6990 | macros/latex/contrib/l3packages/xfp.dtx
-2019/10/11 | 1192 | macros/latex/contrib/l3packages/xfp.ins
-2019/10/11 | 309901 | macros/latex/contrib/l3packages/xfp.pdf
-2019/10/11 | 39276 | macros/latex/contrib/l3packages/xfrac.dtx
-2019/10/11 | 1262 | macros/latex/contrib/l3packages/xfrac.ins
-2019/10/11 | 454315 | macros/latex/contrib/l3packages/xfrac.pdf
-2019/10/11 | 179681 | macros/latex/contrib/l3packages/xparse.dtx
-2019/10/11 | 1218 | macros/latex/contrib/l3packages/xparse.ins
-2019/10/11 | 501992 | macros/latex/contrib/l3packages/xparse.pdf
-2019/10/11 | 99543 | macros/latex/contrib/l3packages/xtemplate.dtx
-2019/10/11 | 1562 | macros/latex/contrib/l3packages/xtemplate.ins
-2019/10/11 | 416401 | macros/latex/contrib/l3packages/xtemplate.pdf
-2019/10/11 | 2083042 | macros/latex/contrib/l3packages.zip
+2020/01/13 | 3714 | macros/latex/contrib/l3experimental/CHANGELOG.md
+2020/01/13 | 17815 | macros/latex/contrib/l3experimental/l3benchmark.dtx
+2020/01/13 | 1564 | macros/latex/contrib/l3experimental/l3benchmark.ins
+2020/01/13 | 314019 | macros/latex/contrib/l3experimental/l3benchmark.pdf
+2020/01/13 | 17934 | macros/latex/contrib/l3experimental/l3cctab.dtx
+2020/01/13 | 1559 | macros/latex/contrib/l3experimental/l3cctab.ins
+2020/01/13 | 337341 | macros/latex/contrib/l3experimental/l3cctab.pdf
+2020/01/13 | 29901 | macros/latex/contrib/l3experimental/l3color.dtx
+2020/01/13 | 1547 | macros/latex/contrib/l3experimental/l3color.ins
+2020/01/13 | 349685 | macros/latex/contrib/l3experimental/l3color.pdf
+2020/01/13 | 4328 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+2020/01/13 | 624175 | macros/latex/contrib/l3experimental/l3draw-code.pdf
+2020/01/13 | 1356 | macros/latex/contrib/l3experimental/l3draw-code.tex
+2020/01/13 | 40718 | macros/latex/contrib/l3experimental/l3draw.dtx
+2020/01/13 | 1912 | macros/latex/contrib/l3experimental/l3draw.ins
+2020/01/13 | 5667 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
+2020/01/13 | 32522 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
+2020/01/13 | 491117 | macros/latex/contrib/l3experimental/l3draw.pdf
+2020/01/13 | 31299 | macros/latex/contrib/l3experimental/l3draw-points.dtx
+2020/01/13 | 7488 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+2020/01/13 | 20463 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+2020/01/13 | 6163 | macros/latex/contrib/l3experimental/l3draw-state.dtx
+2020/01/13 | 9888 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+2020/01/13 | 96866 | macros/latex/contrib/l3experimental/l3galley.dtx
+2020/01/13 | 385522 | macros/latex/contrib/l3experimental/l3galley.pdf
+2020/01/13 | 24769 | macros/latex/contrib/l3experimental/l3graphics.dtx
+2020/01/13 | 1559 | macros/latex/contrib/l3experimental/l3graphics.ins
+2020/01/13 | 362861 | macros/latex/contrib/l3experimental/l3graphics.pdf
+2020/01/13 | 277030 | macros/latex/contrib/l3experimental/l3pdf-code.pdf
+2020/01/13 | 1116 | macros/latex/contrib/l3experimental/l3pdf-code.tex
+2020/01/13 | 9862 | macros/latex/contrib/l3experimental/l3pdf.dtx
+2020/01/13 | 1536 | macros/latex/contrib/l3experimental/l3pdf.ins
+2020/01/13 | 349545 | macros/latex/contrib/l3experimental/l3pdf.pdf
+2020/01/13 | 31787 | macros/latex/contrib/l3experimental/l3str-format.dtx
+2020/01/13 | 344664 | macros/latex/contrib/l3experimental/l3str-format.pdf
+2020/01/13 | 1570 | macros/latex/contrib/l3experimental/l3str.ins
+2020/01/13 | 10937 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
+2020/01/13 | 1571 | macros/latex/contrib/l3experimental/l3sys-shell.ins
+2020/01/13 | 311429 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
+2020/01/13 | 4549 | macros/latex/contrib/l3experimental/README.md
+2020/01/13 | 35177 | macros/latex/contrib/l3experimental/xcoffins.dtx
+2020/01/13 | 1575 | macros/latex/contrib/l3experimental/xcoffins.ins
+2020/01/13 | 372664 | macros/latex/contrib/l3experimental/xcoffins.pdf
+2020/01/13 | 58429 | macros/latex/contrib/l3experimental/xgalley.dtx
+2020/01/13 | 1630 | macros/latex/contrib/l3experimental/xgalley.ins
+2020/01/13 | 285447 | macros/latex/contrib/l3experimental/xgalley.pdf
+2020/01/13 | 4897760 | macros/latex/contrib/l3experimental.zip
+2020/01/13 | 18295 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2020/01/13 | 61208 | macros/latex/contrib/l3kernel/expl3.dtx
+2020/01/13 | 584331 | macros/latex/contrib/l3kernel/expl3.pdf
+2020/01/13 | 1538470 | macros/latex/contrib/l3kernel/interface3.pdf
+2020/01/13 | 1909 | macros/latex/contrib/l3kernel/interface3.tex
+2020/01/13 | 6236 | macros/latex/contrib/l3kernel/l3alloc.dtx
+2020/01/13 | 127036 | macros/latex/contrib/l3kernel/l3basics.dtx
+2020/01/13 | 19309 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2020/01/13 | 77128 | macros/latex/contrib/l3kernel/l3box.dtx
+2020/01/13 | 68272 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2020/01/13 | 74349 | macros/latex/contrib/l3kernel/l3clist.dtx
+2020/01/13 | 85507 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2020/01/13 | 6203 | macros/latex/contrib/l3kernel/l3color-base.dtx
+2020/01/13 | 42142 | macros/latex/contrib/l3kernel/l3debug.dtx
+2020/01/13 | 38561 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2020/01/13 | 149148 | macros/latex/contrib/l3kernel/l3doc.dtx
+2020/01/13 | 9772 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2020/01/13 | 263041 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2020/01/13 | 106742 | macros/latex/contrib/l3kernel/l3expan.dtx
+2020/01/13 | 126798 | macros/latex/contrib/l3kernel/l3file.dtx
+2020/01/13 | 15708 | macros/latex/contrib/l3kernel/l3final.dtx
+2020/01/13 | 9450 | macros/latex/contrib/l3kernel/l3flag.dtx
+2020/01/13 | 5701 | macros/latex/contrib/l3kernel/l3format.ins
+2020/01/13 | 11826 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2020/01/13 | 6970 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2020/01/13 | 47215 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2020/01/13 | 84833 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2020/01/13 | 19661 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2020/01/13 | 70305 | macros/latex/contrib/l3kernel/l3fp.dtx
+2020/01/13 | 49394 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2020/01/13 | 51073 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2020/01/13 | 23068 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2020/01/13 | 105629 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2020/01/13 | 25753 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2020/01/13 | 18605 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2020/01/13 | 12979 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2020/01/13 | 73859 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2020/01/13 | 6074 | macros/latex/contrib/l3kernel/l3.ins
+2020/01/13 | 19693 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2020/01/13 | 88271 | macros/latex/contrib/l3kernel/l3int.dtx
+2020/01/13 | 19219 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2020/01/13 | 97800 | macros/latex/contrib/l3kernel/l3keys.dtx
+2020/01/13 | 2484 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2020/01/13 | 17918 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2020/01/13 | 71688 | macros/latex/contrib/l3kernel/l3msg.dtx
+2020/01/13 | 112873 | macros/latex/contrib/l3kernel/l3names.dtx
+2020/01/13 | 113527 | macros/latex/contrib/l3kernel/l3news01.pdf
+2020/01/13 | 4935 | macros/latex/contrib/l3kernel/l3news01.tex
+2020/01/13 | 140776 | macros/latex/contrib/l3kernel/l3news02.pdf
+2020/01/13 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2020/01/13 | 144780 | macros/latex/contrib/l3kernel/l3news03.pdf
+2020/01/13 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2020/01/13 | 107119 | macros/latex/contrib/l3kernel/l3news04.pdf
+2020/01/13 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2020/01/13 | 105092 | macros/latex/contrib/l3kernel/l3news05.pdf
+2020/01/13 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2020/01/13 | 140796 | macros/latex/contrib/l3kernel/l3news06.pdf
+2020/01/13 | 6431 | macros/latex/contrib/l3kernel/l3news06.tex
+2020/01/13 | 118976 | macros/latex/contrib/l3kernel/l3news07.pdf
+2020/01/13 | 4974 | macros/latex/contrib/l3kernel/l3news07.tex
+2020/01/13 | 152413 | macros/latex/contrib/l3kernel/l3news08.pdf
+2020/01/13 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2020/01/13 | 235323 | macros/latex/contrib/l3kernel/l3news09.pdf
+2020/01/13 | 107379 | macros/latex/contrib/l3kernel/l3news09.tex
+2020/01/13 | 147099 | macros/latex/contrib/l3kernel/l3news10.pdf
+2020/01/13 | 9990 | macros/latex/contrib/l3kernel/l3news10.tex
+2020/01/13 | 174241 | macros/latex/contrib/l3kernel/l3news11.pdf
+2020/01/13 | 8424 | macros/latex/contrib/l3kernel/l3news11.tex
+2020/01/13 | 244282 | macros/latex/contrib/l3kernel/l3news12.pdf
+2020/01/13 | 14139 | macros/latex/contrib/l3kernel/l3news12.tex
+2020/01/13 | 413933 | macros/latex/contrib/l3kernel/l3news.pdf
+2020/01/13 | 4022 | macros/latex/contrib/l3kernel/l3news.tex
+2020/01/13 | 29845 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2020/01/13 | 59384 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2020/01/13 | 2592 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2020/01/13 | 64264 | macros/latex/contrib/l3kernel/l3prg.dtx
+2020/01/13 | 49619 | macros/latex/contrib/l3kernel/l3prop.dtx
+2020/01/13 | 21817 | macros/latex/contrib/l3kernel/l3quark.dtx
+2020/01/13 | 250949 | macros/latex/contrib/l3kernel/l3regex.dtx
+2020/01/13 | 82562 | macros/latex/contrib/l3kernel/l3seq.dtx
+2020/01/13 | 75907 | macros/latex/contrib/l3kernel/l3skip.dtx
+2020/01/13 | 40930 | macros/latex/contrib/l3kernel/l3sort.dtx
+2020/01/13 | 109736 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2020/01/13 | 72855 | macros/latex/contrib/l3kernel/l3str.dtx
+2020/01/13 | 279782 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2020/01/13 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2020/01/13 | 227512 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2020/01/13 | 6104 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2020/01/13 | 26532 | macros/latex/contrib/l3kernel/l3sys.dtx
+2020/01/13 | 186295 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2020/01/13 | 1642 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2020/01/13 | 46646 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2020/01/13 | 28521 | macros/latex/contrib/l3kernel/l3text.dtx
+2020/01/13 | 40709 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2020/01/13 | 132279 | macros/latex/contrib/l3kernel/l3tl.dtx
+2020/01/13 | 108823 | macros/latex/contrib/l3kernel/l3token.dtx
+2020/01/13 | 9656 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2020/01/13 | 2997 | macros/latex/contrib/l3kernel/README.md
+2020/01/13 | 21165 | macros/latex/contrib/l3kernel/source3body.tex
+2020/01/13 | 5757322 | macros/latex/contrib/l3kernel/source3.pdf
+2020/01/13 | 2153 | macros/latex/contrib/l3kernel/source3.tex
+2020/01/13 | 11579075 | macros/latex/contrib/l3kernel.zip
+2020/01/13 | 2102 | macros/latex/contrib/l3packages/CHANGELOG.md
+2020/01/13 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
+2020/01/13 | 11156 | macros/latex/contrib/l3packages/l3keys2e.dtx
+2020/01/13 | 1234 | macros/latex/contrib/l3packages/l3keys2e.ins
+2020/01/13 | 326866 | macros/latex/contrib/l3packages/l3keys2e.pdf
+2020/01/13 | 3406 | macros/latex/contrib/l3packages/README.md
+2020/01/13 | 6990 | macros/latex/contrib/l3packages/xfp.dtx
+2020/01/13 | 1197 | macros/latex/contrib/l3packages/xfp.ins
+2020/01/13 | 309651 | macros/latex/contrib/l3packages/xfp.pdf
+2020/01/13 | 39276 | macros/latex/contrib/l3packages/xfrac.dtx
+2020/01/13 | 1267 | macros/latex/contrib/l3packages/xfrac.ins
+2020/01/13 | 454084 | macros/latex/contrib/l3packages/xfrac.pdf
+2020/01/13 | 179680 | macros/latex/contrib/l3packages/xparse.dtx
+2020/01/13 | 1223 | macros/latex/contrib/l3packages/xparse.ins
+2020/01/13 | 501747 | macros/latex/contrib/l3packages/xparse.pdf
+2020/01/13 | 99543 | macros/latex/contrib/l3packages/xtemplate.dtx
+2020/01/13 | 1567 | macros/latex/contrib/l3packages/xtemplate.ins
+2020/01/13 | 416174 | macros/latex/contrib/l3packages/xtemplate.pdf
+2020/01/13 | 2082028 | macros/latex/contrib/l3packages.zip
2008/03/30 | 76250 | macros/latex/contrib/labbook/labboode.pdf
2003/08/06 | 81327 | macros/latex/contrib/labbook/labbook.dtx
2003/06/03 | 1041 | macros/latex/contrib/labbook/labbook.el
@@ -204621,238 +204654,240 @@
2013/01/13 | 471045 | macros/latex/contrib/zwpagelayout/zwpagelayout.pdf
2013/01/13 | 36184 | macros/latex/contrib/zwpagelayout/zwpagelayout.sty
2013/01/13 | 68514 | macros/latex/contrib/zwpagelayout/zwpagelayout.tex
-2019/10/06 | 6654 | macros/latex-dev/base/alltt.dtx
-2019/10/06 | 2906 | macros/latex-dev/base/alltt.ins
-2019/11/20 | 172925 | macros/latex-dev/base/alltt.pdf
-2019/10/06 | 3293 | macros/latex-dev/base/bugs.txt
-2019/11/20 | 219609 | macros/latex-dev/base/cfgguide.pdf
-2019/10/06 | 22480 | macros/latex-dev/base/cfgguide.tex
-2019/10/06 | 42717 | macros/latex-dev/base/changes.old.txt
-2019/11/17 | 307714 | macros/latex-dev/base/changes.txt
-2019/11/17 | 154914 | macros/latex-dev/base/classes.dtx
-2019/10/06 | 4104 | macros/latex-dev/base/classes.ins
-2019/11/20 | 521012 | macros/latex-dev/base/classes.pdf
-2019/11/20 | 371678 | macros/latex-dev/base/clsguide.pdf
-2019/10/06 | 69216 | macros/latex-dev/base/clsguide.tex
-2019/10/06 | 5299 | macros/latex-dev/base/cmextra.ins
-2019/11/16 | 43246 | macros/latex-dev/base/cmfonts.fdd
-2019/10/06 | 4341 | macros/latex-dev/base/cmfonts.ins
-2019/11/20 | 270758 | macros/latex-dev/base/cmfonts.pdf
-2019/11/20 | 223439 | macros/latex-dev/base/cyrguide.pdf
-2019/10/06 | 17520 | macros/latex-dev/base/cyrguide.tex
-2019/11/16 | 203424 | macros/latex-dev/base/doc.dtx
-2019/11/20 | 629059 | macros/latex-dev/base/doc.pdf
-2019/10/06 | 163682 | macros/latex-dev/base/docstrip.dtx
-2019/10/06 | 4237 | macros/latex-dev/base/docstrip.ins
-2019/11/20 | 470025 | macros/latex-dev/base/docstrip.pdf
-2019/10/06 | 4406 | macros/latex-dev/base/ec.ins
-2019/11/20 | 1244549 | macros/latex-dev/base/encguide.pdf
-2019/10/06 | 52927 | macros/latex-dev/base/encguide.tex
-2019/10/06 | 7227 | macros/latex-dev/base/exscale.dtx
-2019/10/06 | 3354 | macros/latex-dev/base/exscale.ins
-2019/11/20 | 195881 | macros/latex-dev/base/exscale.pdf
-2019/10/06 | 23521 | macros/latex-dev/base/fix-cm.dtx
-2019/10/06 | 2908 | macros/latex-dev/base/fix-cm.ins
-2019/11/20 | 261915 | macros/latex-dev/base/fix-cm.pdf
-2019/11/20 | 356976 | macros/latex-dev/base/fntguide.pdf
-2019/10/13 | 70758 | macros/latex-dev/base/fntguide.tex
-2019/10/13 | 55836 | macros/latex-dev/base/fontdef.dtx
-2019/11/17 | 8488 | macros/latex-dev/base/format.ins
-2019/10/06 | 5515 | macros/latex-dev/base/graphpap.dtx
-2019/10/06 | 2908 | macros/latex-dev/base/graphpap.ins
-2019/11/20 | 156288 | macros/latex-dev/base/graphpap.pdf
-2019/10/06 | 2726 | macros/latex-dev/base/idx.tex
-2019/10/06 | 18305 | macros/latex-dev/base/ifthen.dtx
-2019/10/06 | 2904 | macros/latex-dev/base/ifthen.ins
-2019/11/20 | 205211 | macros/latex-dev/base/ifthen.pdf
-2019/10/06 | 107001 | macros/latex-dev/base/inputenc.dtx
-2019/10/06 | 5733 | macros/latex-dev/base/inputenc.ins
-2019/11/20 | 294776 | macros/latex-dev/base/inputenc.pdf
-2019/10/06 | 4103 | macros/latex-dev/base/lablst.tex
-2019/10/06 | 38533 | macros/latex-dev/base/latex209.dtx
-2019/10/06 | 4236 | macros/latex-dev/base/latex209.ins
-2019/11/20 | 393049 | macros/latex-dev/base/latexchanges.pdf
-2019/11/16 | 34809 | macros/latex-dev/base/latexchanges.tex
-2019/10/06 | 32179 | macros/latex-dev/base/latexrelease.dtx
-2019/11/17 | 5292 | macros/latex-dev/base/latexrelease.ins
-2019/11/20 | 245922 | macros/latex-dev/base/latexrelease.pdf
-2019/10/06 | 6719 | macros/latex-dev/base/latexsym.dtx
-2019/10/06 | 5065 | macros/latex-dev/base/latexsym.ins
-2019/11/20 | 192302 | macros/latex-dev/base/latexsym.pdf
-2019/11/06 | 52630 | macros/latex-dev/base/lb2.err
-2019/11/20 | 238183 | macros/latex-dev/base/lb2.pdf
-2019/10/06 | 1384 | macros/latex-dev/base/legal.txt
-2019/10/06 | 61549 | macros/latex-dev/base/letter.dtx
-2019/10/06 | 3391 | macros/latex-dev/base/letter.ins
-2019/11/20 | 305243 | macros/latex-dev/base/letter.pdf
-2019/11/06 | 20485 | macros/latex-dev/base/lgc2.err
-2019/11/20 | 202897 | macros/latex-dev/base/lgc2.pdf
-2019/10/06 | 9081 | macros/latex-dev/base/lppl-1-0.txt
-2019/10/06 | 14357 | macros/latex-dev/base/lppl-1-1.txt
-2019/10/06 | 14440 | macros/latex-dev/base/lppl-1-2.txt
-2019/10/06 | 19107 | macros/latex-dev/base/lppl.txt
-2019/10/06 | 4304 | macros/latex-dev/base/ltalloc.dtx
-2019/10/06 | 14440 | macros/latex-dev/base/ltbibl.dtx
-2019/10/13 | 40203 | macros/latex-dev/base/ltboxes.dtx
-2019/11/17 | 94207 | macros/latex-dev/base/ltclass.dtx
-2019/10/06 | 9562 | macros/latex-dev/base/ltcntrl.dtx
-2019/10/06 | 22712 | macros/latex-dev/base/ltcounts.dtx
-2019/10/13 | 55754 | macros/latex-dev/base/ltdefns.dtx
-2019/11/15 | 35167 | macros/latex-dev/base/ltdirchk.dtx
-2019/10/13 | 24024 | macros/latex-dev/base/lterror.dtx
-2019/11/17 | 2469 | macros/latex-dev/base/ltexpl.dtx
-2019/11/17 | 38132 | macros/latex-dev/base/ltfiles.dtx
-2019/11/17 | 40112 | macros/latex-dev/base/ltfinal.dtx
-2019/10/06 | 49835 | macros/latex-dev/base/ltfloat.dtx
-2019/10/06 | 28334 | macros/latex-dev/base/ltfntcmd.dtx
-2019/10/13 | 71304 | macros/latex-dev/base/ltfssbas.dtx
-2019/10/06 | 10376 | macros/latex-dev/base/ltfsscmp.dtx
-2019/10/13 | 62037 | macros/latex-dev/base/ltfssdcl.dtx
-2019/10/13 | 20809 | macros/latex-dev/base/ltfssini.dtx
-2019/10/14 | 65861 | macros/latex-dev/base/ltfsstrc.dtx
-2019/10/06 | 4952 | macros/latex-dev/base/lthyphen.dtx
-2019/10/13 | 5865 | macros/latex-dev/base/ltidxglo.dtx
-2019/10/13 | 4762 | macros/latex-dev/base/ltlength.dtx
-2019/10/06 | 36085 | macros/latex-dev/base/ltlists.dtx
-2019/10/13 | 3731 | macros/latex-dev/base/ltlogos.dtx
-2019/11/15 | 59897 | macros/latex-dev/base/ltluatex.dtx
-2019/11/20 | 302613 | macros/latex-dev/base/ltluatex.pdf
-2019/10/13 | 34845 | macros/latex-dev/base/ltmath.dtx
-2019/11/17 | 44844 | macros/latex-dev/base/ltmiscen.dtx
-2019/11/20 | 150027 | macros/latex-dev/base/ltnews01.pdf
-2019/10/06 | 5290 | macros/latex-dev/base/ltnews01.tex
-2019/11/20 | 141559 | macros/latex-dev/base/ltnews02.pdf
-2019/10/06 | 5308 | macros/latex-dev/base/ltnews02.tex
-2019/11/20 | 141541 | macros/latex-dev/base/ltnews03.pdf
-2019/10/06 | 5213 | macros/latex-dev/base/ltnews03.tex
-2019/11/20 | 135577 | macros/latex-dev/base/ltnews04.pdf
-2019/10/06 | 5521 | macros/latex-dev/base/ltnews04.tex
-2019/11/20 | 163984 | macros/latex-dev/base/ltnews05.pdf
-2019/10/06 | 5621 | macros/latex-dev/base/ltnews05.tex
-2019/11/20 | 133140 | macros/latex-dev/base/ltnews06.pdf
-2019/10/06 | 5405 | macros/latex-dev/base/ltnews06.tex
-2019/11/20 | 130835 | macros/latex-dev/base/ltnews07.pdf
-2019/10/06 | 5436 | macros/latex-dev/base/ltnews07.tex
-2019/11/20 | 144478 | macros/latex-dev/base/ltnews08.pdf
-2019/10/06 | 5710 | macros/latex-dev/base/ltnews08.tex
-2019/11/20 | 120216 | macros/latex-dev/base/ltnews09.pdf
-2019/10/06 | 5313 | macros/latex-dev/base/ltnews09.tex
-2019/11/20 | 147946 | macros/latex-dev/base/ltnews10.pdf
-2019/10/06 | 5682 | macros/latex-dev/base/ltnews10.tex
-2019/11/20 | 104948 | macros/latex-dev/base/ltnews11.pdf
-2019/10/06 | 5544 | macros/latex-dev/base/ltnews11.tex
-2019/11/20 | 137925 | macros/latex-dev/base/ltnews12.pdf
-2019/10/06 | 5430 | macros/latex-dev/base/ltnews12.tex
-2019/11/20 | 161072 | macros/latex-dev/base/ltnews13.pdf
-2019/10/06 | 6893 | macros/latex-dev/base/ltnews13.tex
-2019/11/20 | 150928 | macros/latex-dev/base/ltnews14.pdf
-2019/10/06 | 6292 | macros/latex-dev/base/ltnews14.tex
-2019/11/20 | 122094 | macros/latex-dev/base/ltnews15.pdf
-2019/10/06 | 5859 | macros/latex-dev/base/ltnews15.tex
-2019/11/20 | 137500 | macros/latex-dev/base/ltnews16.pdf
-2019/10/06 | 5808 | macros/latex-dev/base/ltnews16.tex
-2019/11/20 | 156557 | macros/latex-dev/base/ltnews17.pdf
-2019/10/06 | 8900 | macros/latex-dev/base/ltnews17.tex
-2019/11/20 | 36010 | macros/latex-dev/base/ltnews18.pdf
-2019/10/06 | 1353 | macros/latex-dev/base/ltnews18.tex
-2019/11/20 | 235074 | macros/latex-dev/base/ltnews19.pdf
-2019/10/06 | 4171 | macros/latex-dev/base/ltnews19.tex
-2019/11/20 | 283179 | macros/latex-dev/base/ltnews20.pdf
-2019/10/06 | 7326 | macros/latex-dev/base/ltnews20.tex
-2019/11/20 | 236105 | macros/latex-dev/base/ltnews21.pdf
-2019/10/06 | 9814 | macros/latex-dev/base/ltnews21.tex
-2019/11/20 | 302720 | macros/latex-dev/base/ltnews22.pdf
-2019/10/06 | 10673 | macros/latex-dev/base/ltnews22.tex
-2019/11/20 | 274333 | macros/latex-dev/base/ltnews23.pdf
-2019/10/06 | 10692 | macros/latex-dev/base/ltnews23.tex
-2019/11/20 | 255302 | macros/latex-dev/base/ltnews24.pdf
-2019/10/06 | 12227 | macros/latex-dev/base/ltnews24.tex
-2019/11/20 | 196332 | macros/latex-dev/base/ltnews25.pdf
-2019/10/06 | 5475 | macros/latex-dev/base/ltnews25.tex
-2019/11/20 | 365466 | macros/latex-dev/base/ltnews26.pdf
-2019/10/06 | 10699 | macros/latex-dev/base/ltnews26.tex
-2019/11/20 | 239763 | macros/latex-dev/base/ltnews27.pdf
-2019/10/06 | 5513 | macros/latex-dev/base/ltnews27.tex
-2019/11/20 | 368514 | macros/latex-dev/base/ltnews28.pdf
-2019/10/06 | 14908 | macros/latex-dev/base/ltnews28.tex
-2019/11/20 | 435463 | macros/latex-dev/base/ltnews29.pdf
-2019/10/06 | 19022 | macros/latex-dev/base/ltnews29.tex
-2019/11/20 | 490976 | macros/latex-dev/base/ltnews30.pdf
-2019/10/13 | 23793 | macros/latex-dev/base/ltnews30.tex
-2019/11/20 | 337112 | macros/latex-dev/base/ltnews31.pdf
-2019/11/17 | 8712 | macros/latex-dev/base/ltnews31.tex
-2019/10/06 | 20270 | macros/latex-dev/base/ltnews.cls
-2019/11/20 | 883720 | macros/latex-dev/base/ltnews.pdf
-2019/11/17 | 7018 | macros/latex-dev/base/ltnews.tex
-2019/11/17 | 168346 | macros/latex-dev/base/ltoutenc.dtx
-2019/10/06 | 3336 | macros/latex-dev/base/ltoutenc.ins
-2019/10/13 | 175370 | macros/latex-dev/base/ltoutput.dtx
-2019/10/13 | 11451 | macros/latex-dev/base/ltpage.dtx
-2019/10/06 | 2733 | macros/latex-dev/base/ltpageno.dtx
-2019/10/06 | 5854 | macros/latex-dev/base/ltpar.dtx
-2019/10/13 | 50170 | macros/latex-dev/base/ltpictur.dtx
-2019/10/06 | 47764 | macros/latex-dev/base/ltplain.dtx
-2019/11/17 | 31903 | macros/latex-dev/base/ltsect.dtx
-2019/11/17 | 40792 | macros/latex-dev/base/ltspace.dtx
-2019/11/07 | 46389 | macros/latex-dev/base/lttab.dtx
-2019/10/06 | 8737 | macros/latex-dev/base/ltthm.dtx
-2019/11/20 | 9764 | macros/latex-dev/base/ltvers.dtx
-2019/11/20 | 197804 | macros/latex-dev/base/ltx3info.pdf
-2019/10/06 | 18350 | macros/latex-dev/base/ltx3info.tex
-2019/10/06 | 27139 | macros/latex-dev/base/ltxcheck.tex
-2019/10/13 | 18558 | macros/latex-dev/base/ltxdoc.dtx
-2019/11/20 | 215387 | macros/latex-dev/base/ltxdoc.pdf
-2019/10/06 | 7578 | macros/latex-dev/base/ltxguide.cls
-2019/10/13 | 14838 | macros/latex-dev/base/ltxref.dtx
-2019/10/06 | 10606 | macros/latex-dev/base/makeindx.dtx
-2019/10/06 | 3450 | macros/latex-dev/base/makeindx.ins
-2019/11/20 | 160679 | macros/latex-dev/base/makeindx.pdf
-2019/10/06 | 9882 | macros/latex-dev/base/manifest.txt
-2019/11/06 | 12967 | macros/latex-dev/base/manual.err
-2019/11/20 | 151360 | macros/latex-dev/base/manual.pdf
-2019/10/06 | 1948 | macros/latex-dev/base/minimal.cls
-2019/11/20 | 226766 | macros/latex-dev/base/modguide.pdf
-2019/10/06 | 16262 | macros/latex-dev/base/modguide.tex
-2019/10/06 | 4272 | macros/latex-dev/base/newdc.ins
-2019/10/06 | 6363 | macros/latex-dev/base/newlfont.dtx
-2019/11/07 | 18407 | macros/latex-dev/base/nfssfont.dtx
-2019/10/06 | 2909 | macros/latex-dev/base/nfssfont.ins
-2019/11/20 | 202434 | macros/latex-dev/base/nfssfont.pdf
-2019/10/06 | 3980 | macros/latex-dev/base/olddc.ins
-2019/10/06 | 8632 | macros/latex-dev/base/oldlfont.dtx
-2019/10/06 | 9374 | macros/latex-dev/base/preload.dtx
-2019/10/06 | 13305 | macros/latex-dev/base/proc.dtx
-2019/10/06 | 3417 | macros/latex-dev/base/proc.ins
-2019/11/20 | 216907 | macros/latex-dev/base/proc.pdf
-2019/11/20 | 3755 | macros/latex-dev/base/README.md
-2019/10/06 | 7247 | macros/latex-dev/base/sample2e.tex
-2019/11/16 | 89474 | macros/latex-dev/base/slides.dtx
-2019/10/06 | 6784 | macros/latex-dev/base/slides.ins
-2019/11/20 | 351771 | macros/latex-dev/base/slides.pdf
-2019/10/06 | 15821 | macros/latex-dev/base/slifonts.fdd
-2019/11/20 | 214301 | macros/latex-dev/base/slifonts.pdf
-2019/10/06 | 1700 | macros/latex-dev/base/small2e.tex
-2019/11/20 | 2878515 | macros/latex-dev/base/source2e.pdf
-2019/10/06 | 14570 | macros/latex-dev/base/source2e.tex
-2019/10/06 | 9401 | macros/latex-dev/base/syntonly.dtx
-2019/10/06 | 2913 | macros/latex-dev/base/syntonly.ins
-2019/11/20 | 182088 | macros/latex-dev/base/syntonly.pdf
-2019/10/06 | 12537 | macros/latex-dev/base/testpage.tex
-2019/10/06 | 2738 | macros/latex-dev/base/tex2.txt
-2019/10/06 | 8541 | macros/latex-dev/base/texpert.txt
-2019/11/06 | 172455 | macros/latex-dev/base/tlc2.err
-2019/11/20 | 273653 | macros/latex-dev/base/tlc2.pdf
-2019/10/06 | 12130 | macros/latex-dev/base/tulm.fdd
-2019/10/06 | 3798 | macros/latex-dev/base/tulm.ins
-2019/11/20 | 156541 | macros/latex-dev/base/tulm.pdf
-2019/10/06 | 3194 | macros/latex-dev/base/unpack.ins
-2019/11/20 | 396690 | macros/latex-dev/base/usrguide.pdf
-2019/10/06 | 67931 | macros/latex-dev/base/usrguide.tex
-2019/11/17 | 89423 | macros/latex-dev/base/utf8ienc.dtx
-2019/11/20 | 337692 | macros/latex-dev/base/utf8ienc.pdf
-2019/11/06 | 10061 | macros/latex-dev/base/webcomp.err
-2019/11/20 | 136159 | macros/latex-dev/base/webcomp.pdf
-2019/11/20 | 21935352 | macros/latex-dev/base.zip
+2020/01/12 | 6654 | macros/latex-dev/base/alltt.dtx
+2020/01/12 | 2906 | macros/latex-dev/base/alltt.ins
+2020/01/12 | 173077 | macros/latex-dev/base/alltt.pdf
+2020/01/12 | 3293 | macros/latex-dev/base/bugs.txt
+2020/01/12 | 220187 | macros/latex-dev/base/cfgguide.pdf
+2020/01/12 | 22480 | macros/latex-dev/base/cfgguide.tex
+2020/01/12 | 42717 | macros/latex-dev/base/changes.old.txt
+2020/01/12 | 310709 | macros/latex-dev/base/changes.txt
+2020/01/12 | 155570 | macros/latex-dev/base/classes.dtx
+2020/01/12 | 4104 | macros/latex-dev/base/classes.ins
+2020/01/12 | 521068 | macros/latex-dev/base/classes.pdf
+2020/01/12 | 372505 | macros/latex-dev/base/clsguide.pdf
+2020/01/12 | 69216 | macros/latex-dev/base/clsguide.tex
+2020/01/12 | 5299 | macros/latex-dev/base/cmextra.ins
+2020/01/12 | 43662 | macros/latex-dev/base/cmfonts.fdd
+2020/01/12 | 4341 | macros/latex-dev/base/cmfonts.ins
+2020/01/12 | 264453 | macros/latex-dev/base/cmfonts.pdf
+2020/01/12 | 216976 | macros/latex-dev/base/cyrguide.pdf
+2020/01/12 | 17520 | macros/latex-dev/base/cyrguide.tex
+2020/01/12 | 203521 | macros/latex-dev/base/doc.dtx
+2020/01/12 | 629843 | macros/latex-dev/base/doc.pdf
+2020/01/12 | 163682 | macros/latex-dev/base/docstrip.dtx
+2020/01/12 | 4237 | macros/latex-dev/base/docstrip.ins
+2020/01/12 | 469409 | macros/latex-dev/base/docstrip.pdf
+2020/01/12 | 4406 | macros/latex-dev/base/ec.ins
+2020/01/12 | 1530505 | macros/latex-dev/base/encguide.pdf
+2020/01/12 | 52927 | macros/latex-dev/base/encguide.tex
+2020/01/12 | 7227 | macros/latex-dev/base/exscale.dtx
+2020/01/12 | 3354 | macros/latex-dev/base/exscale.ins
+2020/01/12 | 195880 | macros/latex-dev/base/exscale.pdf
+2020/01/12 | 23521 | macros/latex-dev/base/fix-cm.dtx
+2020/01/12 | 2908 | macros/latex-dev/base/fix-cm.ins
+2020/01/12 | 262051 | macros/latex-dev/base/fix-cm.pdf
+2020/01/12 | 360943 | macros/latex-dev/base/fntguide.pdf
+2020/01/12 | 73400 | macros/latex-dev/base/fntguide.tex
+2020/01/12 | 58866 | macros/latex-dev/base/fontdef.dtx
+2020/01/12 | 8806 | macros/latex-dev/base/format.ins
+2020/01/12 | 5515 | macros/latex-dev/base/graphpap.dtx
+2020/01/12 | 2908 | macros/latex-dev/base/graphpap.ins
+2020/01/12 | 156280 | macros/latex-dev/base/graphpap.pdf
+2020/01/12 | 2726 | macros/latex-dev/base/idx.tex
+2020/01/12 | 18305 | macros/latex-dev/base/ifthen.dtx
+2020/01/12 | 2904 | macros/latex-dev/base/ifthen.ins
+2020/01/12 | 205205 | macros/latex-dev/base/ifthen.pdf
+2020/01/12 | 107001 | macros/latex-dev/base/inputenc.dtx
+2020/01/12 | 5733 | macros/latex-dev/base/inputenc.ins
+2020/01/12 | 294824 | macros/latex-dev/base/inputenc.pdf
+2020/01/12 | 4103 | macros/latex-dev/base/lablst.tex
+2020/01/12 | 38533 | macros/latex-dev/base/latex209.dtx
+2020/01/12 | 4236 | macros/latex-dev/base/latex209.ins
+2020/01/12 | 227574 | macros/latex-dev/base/latexchanges.pdf
+2020/01/12 | 34809 | macros/latex-dev/base/latexchanges.tex
+2020/01/12 | 32179 | macros/latex-dev/base/latexrelease.dtx
+2020/01/12 | 5368 | macros/latex-dev/base/latexrelease.ins
+2020/01/12 | 246174 | macros/latex-dev/base/latexrelease.pdf
+2020/01/12 | 6719 | macros/latex-dev/base/latexsym.dtx
+2020/01/12 | 5065 | macros/latex-dev/base/latexsym.ins
+2020/01/12 | 192293 | macros/latex-dev/base/latexsym.pdf
+2020/01/12 | 52630 | macros/latex-dev/base/lb2.err
+2020/01/12 | 138223 | macros/latex-dev/base/lb2.pdf
+2020/01/12 | 1384 | macros/latex-dev/base/legal.txt
+2020/01/12 | 61549 | macros/latex-dev/base/letter.dtx
+2020/01/12 | 3391 | macros/latex-dev/base/letter.ins
+2020/01/12 | 305288 | macros/latex-dev/base/letter.pdf
+2020/01/12 | 20485 | macros/latex-dev/base/lgc2.err
+2020/01/12 | 101344 | macros/latex-dev/base/lgc2.pdf
+2020/01/12 | 9081 | macros/latex-dev/base/lppl-1-0.txt
+2020/01/12 | 14357 | macros/latex-dev/base/lppl-1-1.txt
+2020/01/12 | 14440 | macros/latex-dev/base/lppl-1-2.txt
+2020/01/12 | 19107 | macros/latex-dev/base/lppl.txt
+2020/01/12 | 4304 | macros/latex-dev/base/ltalloc.dtx
+2020/01/12 | 14440 | macros/latex-dev/base/ltbibl.dtx
+2020/01/12 | 40203 | macros/latex-dev/base/ltboxes.dtx
+2020/01/12 | 95977 | macros/latex-dev/base/ltclass.dtx
+2020/01/12 | 9562 | macros/latex-dev/base/ltcntrl.dtx
+2020/01/12 | 22712 | macros/latex-dev/base/ltcounts.dtx
+2020/01/12 | 55754 | macros/latex-dev/base/ltdefns.dtx
+2020/01/12 | 35167 | macros/latex-dev/base/ltdirchk.dtx
+2020/01/12 | 24024 | macros/latex-dev/base/lterror.dtx
+2020/01/12 | 2469 | macros/latex-dev/base/ltexpl.dtx
+2020/01/12 | 38132 | macros/latex-dev/base/ltfiles.dtx
+2020/01/12 | 40593 | macros/latex-dev/base/ltfinal.dtx
+2020/01/12 | 49835 | macros/latex-dev/base/ltfloat.dtx
+2020/01/12 | 29199 | macros/latex-dev/base/ltfntcmd.dtx
+2020/01/12 | 46676 | macros/latex-dev/base/ltfssaxes.dtx
+2020/01/12 | 76499 | macros/latex-dev/base/ltfssbas.dtx
+2020/01/12 | 10376 | macros/latex-dev/base/ltfsscmp.dtx
+2020/01/12 | 62037 | macros/latex-dev/base/ltfssdcl.dtx
+2020/01/12 | 51719 | macros/latex-dev/base/ltfssini.dtx
+2020/01/12 | 67330 | macros/latex-dev/base/ltfsstrc.dtx
+2020/01/12 | 4952 | macros/latex-dev/base/lthyphen.dtx
+2020/01/12 | 5865 | macros/latex-dev/base/ltidxglo.dtx
+2020/01/12 | 4762 | macros/latex-dev/base/ltlength.dtx
+2020/01/12 | 36085 | macros/latex-dev/base/ltlists.dtx
+2020/01/12 | 3731 | macros/latex-dev/base/ltlogos.dtx
+2020/01/12 | 59897 | macros/latex-dev/base/ltluatex.dtx
+2020/01/12 | 302606 | macros/latex-dev/base/ltluatex.pdf
+2020/01/12 | 34845 | macros/latex-dev/base/ltmath.dtx
+2020/01/12 | 44844 | macros/latex-dev/base/ltmiscen.dtx
+2020/01/12 | 150020 | macros/latex-dev/base/ltnews01.pdf
+2020/01/12 | 5290 | macros/latex-dev/base/ltnews01.tex
+2020/01/12 | 134750 | macros/latex-dev/base/ltnews02.pdf
+2020/01/12 | 5308 | macros/latex-dev/base/ltnews02.tex
+2020/01/12 | 134730 | macros/latex-dev/base/ltnews03.pdf
+2020/01/12 | 5213 | macros/latex-dev/base/ltnews03.tex
+2020/01/12 | 128768 | macros/latex-dev/base/ltnews04.pdf
+2020/01/12 | 5521 | macros/latex-dev/base/ltnews04.tex
+2020/01/12 | 157174 | macros/latex-dev/base/ltnews05.pdf
+2020/01/12 | 5621 | macros/latex-dev/base/ltnews05.tex
+2020/01/12 | 133132 | macros/latex-dev/base/ltnews06.pdf
+2020/01/12 | 5405 | macros/latex-dev/base/ltnews06.tex
+2020/01/12 | 124028 | macros/latex-dev/base/ltnews07.pdf
+2020/01/12 | 5436 | macros/latex-dev/base/ltnews07.tex
+2020/01/12 | 144471 | macros/latex-dev/base/ltnews08.pdf
+2020/01/12 | 5710 | macros/latex-dev/base/ltnews08.tex
+2020/01/12 | 120208 | macros/latex-dev/base/ltnews09.pdf
+2020/01/12 | 5313 | macros/latex-dev/base/ltnews09.tex
+2020/01/12 | 147941 | macros/latex-dev/base/ltnews10.pdf
+2020/01/12 | 5682 | macros/latex-dev/base/ltnews10.tex
+2020/01/12 | 104942 | macros/latex-dev/base/ltnews11.pdf
+2020/01/12 | 5544 | macros/latex-dev/base/ltnews11.tex
+2020/01/12 | 137918 | macros/latex-dev/base/ltnews12.pdf
+2020/01/12 | 5430 | macros/latex-dev/base/ltnews12.tex
+2020/01/12 | 161066 | macros/latex-dev/base/ltnews13.pdf
+2020/01/12 | 6893 | macros/latex-dev/base/ltnews13.tex
+2020/01/12 | 150920 | macros/latex-dev/base/ltnews14.pdf
+2020/01/12 | 6292 | macros/latex-dev/base/ltnews14.tex
+2020/01/12 | 122088 | macros/latex-dev/base/ltnews15.pdf
+2020/01/12 | 5859 | macros/latex-dev/base/ltnews15.tex
+2020/01/12 | 130688 | macros/latex-dev/base/ltnews16.pdf
+2020/01/12 | 5808 | macros/latex-dev/base/ltnews16.tex
+2020/01/12 | 149740 | macros/latex-dev/base/ltnews17.pdf
+2020/01/12 | 8900 | macros/latex-dev/base/ltnews17.tex
+2020/01/12 | 36003 | macros/latex-dev/base/ltnews18.pdf
+2020/01/12 | 1353 | macros/latex-dev/base/ltnews18.tex
+2020/01/12 | 235068 | macros/latex-dev/base/ltnews19.pdf
+2020/01/12 | 4171 | macros/latex-dev/base/ltnews19.tex
+2020/01/12 | 283173 | macros/latex-dev/base/ltnews20.pdf
+2020/01/12 | 7326 | macros/latex-dev/base/ltnews20.tex
+2020/01/12 | 233341 | macros/latex-dev/base/ltnews21.pdf
+2020/01/12 | 9814 | macros/latex-dev/base/ltnews21.tex
+2020/01/12 | 302711 | macros/latex-dev/base/ltnews22.pdf
+2020/01/12 | 10673 | macros/latex-dev/base/ltnews22.tex
+2020/01/12 | 274326 | macros/latex-dev/base/ltnews23.pdf
+2020/01/12 | 10692 | macros/latex-dev/base/ltnews23.tex
+2020/01/12 | 252518 | macros/latex-dev/base/ltnews24.pdf
+2020/01/12 | 12227 | macros/latex-dev/base/ltnews24.tex
+2020/01/12 | 196325 | macros/latex-dev/base/ltnews25.pdf
+2020/01/12 | 5475 | macros/latex-dev/base/ltnews25.tex
+2020/01/12 | 362703 | macros/latex-dev/base/ltnews26.pdf
+2020/01/12 | 10699 | macros/latex-dev/base/ltnews26.tex
+2020/01/12 | 239755 | macros/latex-dev/base/ltnews27.pdf
+2020/01/12 | 5513 | macros/latex-dev/base/ltnews27.tex
+2020/01/12 | 368086 | macros/latex-dev/base/ltnews28.pdf
+2020/01/12 | 14908 | macros/latex-dev/base/ltnews28.tex
+2020/01/12 | 432667 | macros/latex-dev/base/ltnews29.pdf
+2020/01/12 | 19022 | macros/latex-dev/base/ltnews29.tex
+2020/01/12 | 490969 | macros/latex-dev/base/ltnews30.pdf
+2020/01/12 | 23793 | macros/latex-dev/base/ltnews30.tex
+2020/01/12 | 424281 | macros/latex-dev/base/ltnews31.pdf
+2020/01/12 | 27627 | macros/latex-dev/base/ltnews31.tex
+2020/01/12 | 20270 | macros/latex-dev/base/ltnews.cls
+2020/01/12 | 911022 | macros/latex-dev/base/ltnews.pdf
+2020/01/12 | 7148 | macros/latex-dev/base/ltnews.tex
+2020/01/12 | 142081 | macros/latex-dev/base/ltoutenc.dtx
+2020/01/12 | 3390 | macros/latex-dev/base/ltoutenc.ins
+2020/01/12 | 175370 | macros/latex-dev/base/ltoutput.dtx
+2020/01/12 | 11451 | macros/latex-dev/base/ltpage.dtx
+2020/01/12 | 2733 | macros/latex-dev/base/ltpageno.dtx
+2020/01/12 | 5854 | macros/latex-dev/base/ltpar.dtx
+2020/01/12 | 50170 | macros/latex-dev/base/ltpictur.dtx
+2020/01/12 | 47764 | macros/latex-dev/base/ltplain.dtx
+2020/01/12 | 31903 | macros/latex-dev/base/ltsect.dtx
+2020/01/12 | 40792 | macros/latex-dev/base/ltspace.dtx
+2020/01/12 | 46389 | macros/latex-dev/base/lttab.dtx
+2020/01/12 | 87732 | macros/latex-dev/base/lttextcomp.dtx
+2020/01/12 | 8737 | macros/latex-dev/base/ltthm.dtx
+2020/01/12 | 9760 | macros/latex-dev/base/ltvers.dtx
+2020/01/12 | 191533 | macros/latex-dev/base/ltx3info.pdf
+2020/01/12 | 18350 | macros/latex-dev/base/ltx3info.tex
+2020/01/12 | 27139 | macros/latex-dev/base/ltxcheck.tex
+2020/01/12 | 18558 | macros/latex-dev/base/ltxdoc.dtx
+2020/01/12 | 215600 | macros/latex-dev/base/ltxdoc.pdf
+2020/01/12 | 7578 | macros/latex-dev/base/ltxguide.cls
+2020/01/12 | 14838 | macros/latex-dev/base/ltxref.dtx
+2020/01/12 | 10606 | macros/latex-dev/base/makeindx.dtx
+2020/01/12 | 3450 | macros/latex-dev/base/makeindx.ins
+2020/01/12 | 160673 | macros/latex-dev/base/makeindx.pdf
+2020/01/12 | 9882 | macros/latex-dev/base/manifest.txt
+2020/01/12 | 12967 | macros/latex-dev/base/manual.err
+2020/01/12 | 151354 | macros/latex-dev/base/manual.pdf
+2020/01/12 | 1948 | macros/latex-dev/base/minimal.cls
+2020/01/12 | 220384 | macros/latex-dev/base/modguide.pdf
+2020/01/12 | 16262 | macros/latex-dev/base/modguide.tex
+2020/01/12 | 4272 | macros/latex-dev/base/newdc.ins
+2020/01/12 | 6363 | macros/latex-dev/base/newlfont.dtx
+2020/01/12 | 18407 | macros/latex-dev/base/nfssfont.dtx
+2020/01/12 | 2909 | macros/latex-dev/base/nfssfont.ins
+2020/01/12 | 202429 | macros/latex-dev/base/nfssfont.pdf
+2020/01/12 | 3980 | macros/latex-dev/base/olddc.ins
+2020/01/12 | 8632 | macros/latex-dev/base/oldlfont.dtx
+2020/01/12 | 9374 | macros/latex-dev/base/preload.dtx
+2020/01/12 | 13305 | macros/latex-dev/base/proc.dtx
+2020/01/12 | 3417 | macros/latex-dev/base/proc.ins
+2020/01/12 | 216899 | macros/latex-dev/base/proc.pdf
+2020/01/12 | 3755 | macros/latex-dev/base/README.md
+2020/01/12 | 7247 | macros/latex-dev/base/sample2e.tex
+2020/01/12 | 89738 | macros/latex-dev/base/slides.dtx
+2020/01/12 | 6784 | macros/latex-dev/base/slides.ins
+2020/01/12 | 352152 | macros/latex-dev/base/slides.pdf
+2020/01/12 | 15821 | macros/latex-dev/base/slifonts.fdd
+2020/01/12 | 214708 | macros/latex-dev/base/slifonts.pdf
+2020/01/12 | 1700 | macros/latex-dev/base/small2e.tex
+2020/01/12 | 3126387 | macros/latex-dev/base/source2e.pdf
+2020/01/12 | 14689 | macros/latex-dev/base/source2e.tex
+2020/01/12 | 9401 | macros/latex-dev/base/syntonly.dtx
+2020/01/12 | 2913 | macros/latex-dev/base/syntonly.ins
+2020/01/12 | 181687 | macros/latex-dev/base/syntonly.pdf
+2020/01/12 | 12537 | macros/latex-dev/base/testpage.tex
+2020/01/12 | 2738 | macros/latex-dev/base/tex2.txt
+2020/01/12 | 8541 | macros/latex-dev/base/texpert.txt
+2020/01/12 | 172455 | macros/latex-dev/base/tlc2.err
+2020/01/12 | 164949 | macros/latex-dev/base/tlc2.pdf
+2020/01/12 | 12130 | macros/latex-dev/base/tulm.fdd
+2020/01/12 | 3798 | macros/latex-dev/base/tulm.ins
+2020/01/12 | 156534 | macros/latex-dev/base/tulm.pdf
+2020/01/12 | 3194 | macros/latex-dev/base/unpack.ins
+2020/01/12 | 398281 | macros/latex-dev/base/usrguide.pdf
+2020/01/12 | 67931 | macros/latex-dev/base/usrguide.tex
+2020/01/12 | 89423 | macros/latex-dev/base/utf8ienc.dtx
+2020/01/12 | 330882 | macros/latex-dev/base/utf8ienc.pdf
+2020/01/12 | 10061 | macros/latex-dev/base/webcomp.err
+2020/01/12 | 136153 | macros/latex-dev/base/webcomp.pdf
+2020/01/13 | 21717442 | macros/latex-dev/base.zip
2019/10/06 | 8657 | macros/latex-dev/required/amsmath/amsbsy.dtx
2019/10/06 | 1470 | macros/latex-dev/required/amsmath/amsbsy.ins
2019/11/18 | 161330 | macros/latex-dev/required/amsmath/amsbsy.pdf
@@ -204920,74 +204955,74 @@
2019/10/06 | 10651 | macros/latex-dev/required/graphics/trig.dtx
2019/11/18 | 191699 | macros/latex-dev/required/graphics/trig.pdf
2019/11/18 | 2500841 | macros/latex-dev/required/graphics.zip
-2019/10/06 | 14078 | macros/latex-dev/required/tools/afterpage.dtx
-2019/10/06 | 2549 | macros/latex-dev/required/tools/afterpage.ins
-2019/11/18 | 189855 | macros/latex-dev/required/tools/afterpage.pdf
-2019/10/06 | 11755 | macros/latex-dev/required/tools/array-2016-10-06.sty
-2019/10/13 | 123627 | macros/latex-dev/required/tools/array.dtx
-2019/11/18 | 481483 | macros/latex-dev/required/tools/array.pdf
-2019/10/06 | 59414 | macros/latex-dev/required/tools/bm.dtx
-2019/10/06 | 2535 | macros/latex-dev/required/tools/bm.ins
-2019/11/18 | 306786 | macros/latex-dev/required/tools/bm.pdf
-2019/10/06 | 53174 | macros/latex-dev/required/tools/calc.dtx
-2019/11/18 | 340608 | macros/latex-dev/required/tools/calc.pdf
-2019/11/17 | 54973 | macros/latex-dev/required/tools/changes.txt
-2019/10/06 | 12715 | macros/latex-dev/required/tools/dcolumn.dtx
-2019/11/18 | 199053 | macros/latex-dev/required/tools/dcolumn.pdf
-2019/10/06 | 6795 | macros/latex-dev/required/tools/delarray.dtx
-2019/11/18 | 183440 | macros/latex-dev/required/tools/delarray.pdf
-2019/10/06 | 10650 | macros/latex-dev/required/tools/enumerate.dtx
-2019/11/18 | 199056 | macros/latex-dev/required/tools/enumerate.pdf
-2019/10/06 | 4965 | macros/latex-dev/required/tools/fileerr.dtx
-2019/11/18 | 180550 | macros/latex-dev/required/tools/fileerr.pdf
-2019/10/06 | 10777 | macros/latex-dev/required/tools/fontsmpl.dtx
-2019/11/18 | 144826 | macros/latex-dev/required/tools/fontsmpl.pdf
-2019/10/06 | 39702 | macros/latex-dev/required/tools/ftnright.dtx
-2019/11/18 | 347382 | macros/latex-dev/required/tools/ftnright.pdf
-2019/10/06 | 10752 | macros/latex-dev/required/tools/hhline.dtx
-2019/11/18 | 175724 | macros/latex-dev/required/tools/hhline.pdf
-2019/10/06 | 2226 | macros/latex-dev/required/tools/indentfirst.dtx
-2019/11/18 | 144786 | macros/latex-dev/required/tools/indentfirst.pdf
-2019/10/06 | 30962 | macros/latex-dev/required/tools/layout.dtx
-2019/11/18 | 246939 | macros/latex-dev/required/tools/layout.pdf
-2019/10/06 | 72030 | macros/latex-dev/required/tools/longtable.dtx
-2019/10/06 | 2549 | macros/latex-dev/required/tools/longtable.ins
-2019/11/18 | 350096 | macros/latex-dev/required/tools/longtable.pdf
-2019/10/06 | 3292 | macros/latex-dev/required/tools/manifest.txt
-2019/10/06 | 29720 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
-2019/11/17 | 181307 | macros/latex-dev/required/tools/multicol.dtx
-2019/10/06 | 2587 | macros/latex-dev/required/tools/multicol.ins
-2019/11/18 | 490977 | macros/latex-dev/required/tools/multicol.pdf
-2019/10/06 | 8982 | macros/latex-dev/required/tools/rawfonts.dtx
-2019/11/18 | 135695 | macros/latex-dev/required/tools/rawfonts.pdf
-2019/11/17 | 1666 | macros/latex-dev/required/tools/README.md
-2019/11/16 | 9498 | macros/latex-dev/required/tools/shellesc.dtx
-2019/11/18 | 169764 | macros/latex-dev/required/tools/shellesc.pdf
-2019/10/06 | 29571 | macros/latex-dev/required/tools/showkeys.dtx
-2019/11/18 | 242793 | macros/latex-dev/required/tools/showkeys.pdf
-2019/10/06 | 5797 | macros/latex-dev/required/tools/somedefs.dtx
-2019/11/18 | 156466 | macros/latex-dev/required/tools/somedefs.pdf
-2019/10/06 | 35816 | macros/latex-dev/required/tools/tabularx.dtx
-2019/10/06 | 2546 | macros/latex-dev/required/tools/tabularx.ins
-2019/11/18 | 254089 | macros/latex-dev/required/tools/tabularx.pdf
-2019/10/06 | 43454 | macros/latex-dev/required/tools/theorem.dtx
-2019/11/18 | 323501 | macros/latex-dev/required/tools/theorem.pdf
-2019/10/06 | 5692 | macros/latex-dev/required/tools/tools.ins
-2019/11/18 | 68295 | macros/latex-dev/required/tools/tools-overview.pdf
-2019/10/06 | 5213 | macros/latex-dev/required/tools/tools-overview.tex
-2019/10/06 | 24664 | macros/latex-dev/required/tools/trace.dtx
-2019/11/18 | 212747 | macros/latex-dev/required/tools/trace.pdf
-2019/10/13 | 33872 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
-2019/11/16 | 103606 | macros/latex-dev/required/tools/varioref.dtx
-2019/10/13 | 2542 | macros/latex-dev/required/tools/varioref.ins
-2019/11/18 | 355234 | macros/latex-dev/required/tools/varioref.pdf
-2019/11/16 | 71308 | macros/latex-dev/required/tools/verbatim.dtx
-2019/11/18 | 308886 | macros/latex-dev/required/tools/verbatim.pdf
-2019/11/15 | 5968 | macros/latex-dev/required/tools/xr.dtx
-2019/11/18 | 163793 | macros/latex-dev/required/tools/xr.pdf
-2019/10/06 | 17862 | macros/latex-dev/required/tools/xspace.dtx
-2019/11/18 | 238011 | macros/latex-dev/required/tools/xspace.pdf
-2019/11/18 | 6883602 | macros/latex-dev/required/tools.zip
+2020/01/13 | 14078 | macros/latex-dev/required/tools/afterpage.dtx
+2020/01/13 | 2549 | macros/latex-dev/required/tools/afterpage.ins
+2020/01/13 | 189848 | macros/latex-dev/required/tools/afterpage.pdf
+2020/01/13 | 11755 | macros/latex-dev/required/tools/array-2016-10-06.sty
+2020/01/13 | 123627 | macros/latex-dev/required/tools/array.dtx
+2020/01/13 | 481463 | macros/latex-dev/required/tools/array.pdf
+2020/01/13 | 59414 | macros/latex-dev/required/tools/bm.dtx
+2020/01/13 | 2535 | macros/latex-dev/required/tools/bm.ins
+2020/01/13 | 306782 | macros/latex-dev/required/tools/bm.pdf
+2020/01/13 | 53174 | macros/latex-dev/required/tools/calc.dtx
+2020/01/13 | 340877 | macros/latex-dev/required/tools/calc.pdf
+2020/01/13 | 55286 | macros/latex-dev/required/tools/changes.txt
+2020/01/13 | 12715 | macros/latex-dev/required/tools/dcolumn.dtx
+2020/01/13 | 199221 | macros/latex-dev/required/tools/dcolumn.pdf
+2020/01/13 | 6795 | macros/latex-dev/required/tools/delarray.dtx
+2020/01/13 | 183432 | macros/latex-dev/required/tools/delarray.pdf
+2020/01/13 | 10650 | macros/latex-dev/required/tools/enumerate.dtx
+2020/01/13 | 199049 | macros/latex-dev/required/tools/enumerate.pdf
+2020/01/13 | 4965 | macros/latex-dev/required/tools/fileerr.dtx
+2020/01/13 | 180048 | macros/latex-dev/required/tools/fileerr.pdf
+2020/01/13 | 10777 | macros/latex-dev/required/tools/fontsmpl.dtx
+2020/01/13 | 138025 | macros/latex-dev/required/tools/fontsmpl.pdf
+2020/01/13 | 39702 | macros/latex-dev/required/tools/ftnright.dtx
+2020/01/13 | 346873 | macros/latex-dev/required/tools/ftnright.pdf
+2020/01/13 | 11154 | macros/latex-dev/required/tools/hhline.dtx
+2020/01/13 | 175678 | macros/latex-dev/required/tools/hhline.pdf
+2020/01/13 | 2226 | macros/latex-dev/required/tools/indentfirst.dtx
+2020/01/13 | 144779 | macros/latex-dev/required/tools/indentfirst.pdf
+2020/01/13 | 30962 | macros/latex-dev/required/tools/layout.dtx
+2020/01/13 | 246931 | macros/latex-dev/required/tools/layout.pdf
+2020/01/13 | 72030 | macros/latex-dev/required/tools/longtable.dtx
+2020/01/13 | 2549 | macros/latex-dev/required/tools/longtable.ins
+2020/01/13 | 350326 | macros/latex-dev/required/tools/longtable.pdf
+2020/01/13 | 3292 | macros/latex-dev/required/tools/manifest.txt
+2020/01/13 | 29720 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
+2020/01/13 | 182427 | macros/latex-dev/required/tools/multicol.dtx
+2020/01/13 | 2587 | macros/latex-dev/required/tools/multicol.ins
+2020/01/13 | 491417 | macros/latex-dev/required/tools/multicol.pdf
+2020/01/13 | 8982 | macros/latex-dev/required/tools/rawfonts.dtx
+2020/01/13 | 135688 | macros/latex-dev/required/tools/rawfonts.pdf
+2020/01/13 | 1666 | macros/latex-dev/required/tools/README.md
+2020/01/13 | 9498 | macros/latex-dev/required/tools/shellesc.dtx
+2020/01/13 | 169757 | macros/latex-dev/required/tools/shellesc.pdf
+2020/01/13 | 29571 | macros/latex-dev/required/tools/showkeys.dtx
+2020/01/13 | 242786 | macros/latex-dev/required/tools/showkeys.pdf
+2020/01/13 | 5797 | macros/latex-dev/required/tools/somedefs.dtx
+2020/01/13 | 156511 | macros/latex-dev/required/tools/somedefs.pdf
+2020/01/13 | 35816 | macros/latex-dev/required/tools/tabularx.dtx
+2020/01/13 | 2546 | macros/latex-dev/required/tools/tabularx.ins
+2020/01/13 | 254340 | macros/latex-dev/required/tools/tabularx.pdf
+2020/01/13 | 43454 | macros/latex-dev/required/tools/theorem.dtx
+2020/01/13 | 323427 | macros/latex-dev/required/tools/theorem.pdf
+2020/01/13 | 5692 | macros/latex-dev/required/tools/tools.ins
+2020/01/13 | 68288 | macros/latex-dev/required/tools/tools-overview.pdf
+2020/01/13 | 5213 | macros/latex-dev/required/tools/tools-overview.tex
+2020/01/13 | 24664 | macros/latex-dev/required/tools/trace.dtx
+2020/01/13 | 212742 | macros/latex-dev/required/tools/trace.pdf
+2020/01/13 | 33872 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
+2020/01/13 | 103606 | macros/latex-dev/required/tools/varioref.dtx
+2020/01/13 | 2542 | macros/latex-dev/required/tools/varioref.ins
+2020/01/13 | 355228 | macros/latex-dev/required/tools/varioref.pdf
+2020/01/13 | 71308 | macros/latex-dev/required/tools/verbatim.dtx
+2020/01/13 | 302239 | macros/latex-dev/required/tools/verbatim.pdf
+2020/01/13 | 5968 | macros/latex-dev/required/tools/xr.dtx
+2020/01/13 | 163785 | macros/latex-dev/required/tools/xr.pdf
+2020/01/13 | 17862 | macros/latex-dev/required/tools/xspace.dtx
+2020/01/13 | 238007 | macros/latex-dev/required/tools/xspace.pdf
+2020/01/13 | 6870179 | macros/latex-dev/required/tools.zip
1999/05/03 | 8998 | macros/latex/exptl/delimtxt/delimtxt.dtx
1999/03/28 | 143 | macros/latex/exptl/delimtxt/delimtxt.ins
2006/03/21 | 55074 | macros/latex/exptl/delimtxt/delimtxt.pdf
@@ -249359,17 +249394,17 @@
2019/02/28 | 851936 | systems/texlive/tlnet/archive/achemso.doc.tar.xz
2019/02/28 | 33072 | systems/texlive/tlnet/archive/achemso.source.tar.xz
2019/02/28 | 18216 | systems/texlive/tlnet/archive/achemso.tar.xz
-2019/12/20 | 3771372 | systems/texlive/tlnet/archive/acmart.doc.r53188.tar.xz
-2019/12/20 | 36664 | systems/texlive/tlnet/archive/acmart.r53188.tar.xz
-2019/12/20 | 51400 | systems/texlive/tlnet/archive/acmart.source.r53188.tar.xz
+2020/01/13 | 3804080 | systems/texlive/tlnet/archive/acmart.doc.r53381.tar.xz
+2020/01/13 | 36624 | systems/texlive/tlnet/archive/acmart.r53381.tar.xz
+2020/01/13 | 51448 | systems/texlive/tlnet/archive/acmart.source.r53381.tar.xz
2019/02/28 | 89944 | systems/texlive/tlnet/archive/acmconf.doc.tar.xz
2019/02/28 | 18700 | systems/texlive/tlnet/archive/acmconf.source.tar.xz
2019/02/28 | 4192 | systems/texlive/tlnet/archive/acmconf.tar.xz
-2020/01/12 | 617304 | systems/texlive/tlnet/archive/acro.doc.r53368.tar.xz
+2020/01/13 | 615836 | systems/texlive/tlnet/archive/acro.doc.r53383.tar.xz
2019/11/18 | 276732 | systems/texlive/tlnet/archive/acronym.doc.tar.xz
2019/11/18 | 16528 | systems/texlive/tlnet/archive/acronym.source.tar.xz
2019/11/18 | 4696 | systems/texlive/tlnet/archive/acronym.tar.xz
-2020/01/12 | 23092 | systems/texlive/tlnet/archive/acro.r53368.tar.xz
+2020/01/13 | 24536 | systems/texlive/tlnet/archive/acro.r53383.tar.xz
2019/02/28 | 157936 | systems/texlive/tlnet/archive/acroterm.doc.tar.xz
2019/02/28 | 3832 | systems/texlive/tlnet/archive/acroterm.source.tar.xz
2019/02/28 | 1424 | systems/texlive/tlnet/archive/acroterm.tar.xz
@@ -251121,8 +251156,8 @@
2019/10/16 | 39128 | systems/texlive/tlnet/archive/cinzel.doc.tar.xz
2019/10/16 | 533328 | systems/texlive/tlnet/archive/cinzel.tar.xz
2019/02/28 | 207692 | systems/texlive/tlnet/archive/circ.doc.tar.xz
-2020/01/10 | 415320 | systems/texlive/tlnet/archive/circledsteps.doc.r53356.tar.xz
-2020/01/10 | 1768 | systems/texlive/tlnet/archive/circledsteps.r53356.tar.xz
+2020/01/13 | 415380 | systems/texlive/tlnet/archive/circledsteps.doc.r53382.tar.xz
+2020/01/13 | 1852 | systems/texlive/tlnet/archive/circledsteps.r53382.tar.xz
2019/02/28 | 38440 | systems/texlive/tlnet/archive/circ.source.tar.xz
2019/02/28 | 23692 | systems/texlive/tlnet/archive/circ.tar.xz
2019/12/23 | 916064 | systems/texlive/tlnet/archive/circuitikz.doc.r53208.tar.xz
@@ -252353,9 +252388,9 @@
2019/02/28 | 16468 | systems/texlive/tlnet/archive/drv.tar.xz
2019/02/28 | 170156 | systems/texlive/tlnet/archive/dsptricks.doc.tar.xz
2019/02/28 | 11588 | systems/texlive/tlnet/archive/dsptricks.tar.xz
-2019/02/28 | 247164 | systems/texlive/tlnet/archive/dsserif.doc.tar.xz
-2019/02/28 | 1716 | systems/texlive/tlnet/archive/dsserif.source.tar.xz
-2019/02/28 | 78412 | systems/texlive/tlnet/archive/dsserif.tar.xz
+2020/01/13 | 247184 | systems/texlive/tlnet/archive/dsserif.doc.r53384.tar.xz
+2020/01/13 | 78396 | systems/texlive/tlnet/archive/dsserif.r53384.tar.xz
+2020/01/13 | 1720 | systems/texlive/tlnet/archive/dsserif.source.r53384.tar.xz
2019/12/05 | 80796 | systems/texlive/tlnet/archive/dtk.doc.r53020.tar.xz
2019/12/05 | 17300 | systems/texlive/tlnet/archive/dtk.r53020.tar.xz
2019/02/28 | 18052 | systems/texlive/tlnet/archive/dtl.aarch64-linux.tar.xz
@@ -252935,13 +252970,13 @@
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.armhf-linux.tar.xz
2019/02/28 | 417580 | systems/texlive/tlnet/archive/epspdfconversion.doc.tar.xz
2019/02/28 | 3692 | systems/texlive/tlnet/archive/epspdfconversion.tar.xz
-2019/02/28 | 235256 | systems/texlive/tlnet/archive/epspdf.doc.tar.xz
+2020/01/13 | 237488 | systems/texlive/tlnet/archive/epspdf.doc.r53378.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.i386-cygwin.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.i386-freebsd.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.i386-linux.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.i386-netbsd.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.i386-solaris.tar.xz
-2019/02/28 | 31484 | systems/texlive/tlnet/archive/epspdf.tar.xz
+2020/01/13 | 31900 | systems/texlive/tlnet/archive/epspdf.r53378.tar.xz
2019/02/28 | 5252 | systems/texlive/tlnet/archive/epspdf.win32.tar.xz
2019/02/28 | 364 | systems/texlive/tlnet/archive/epspdf.x86_64-cygwin.tar.xz
2019/02/28 | 372 | systems/texlive/tlnet/archive/epspdf.x86_64-darwinlegacy.tar.xz
@@ -256827,8 +256862,8 @@
2019/02/28 | 196212 | systems/texlive/tlnet/archive/newspaper.doc.tar.xz
2019/02/28 | 6804 | systems/texlive/tlnet/archive/newspaper.source.tar.xz
2019/02/28 | 1924 | systems/texlive/tlnet/archive/newspaper.tar.xz
-2019/12/30 | 839820 | systems/texlive/tlnet/archive/newtx.doc.r53255.tar.xz
-2019/12/30 | 4527664 | systems/texlive/tlnet/archive/newtx.r53255.tar.xz
+2020/01/13 | 835796 | systems/texlive/tlnet/archive/newtx.doc.r53379.tar.xz
+2020/01/13 | 4527676 | systems/texlive/tlnet/archive/newtx.r53379.tar.xz
2019/02/28 | 332220 | systems/texlive/tlnet/archive/newtxsf.doc.tar.xz
2019/02/28 | 105228 | systems/texlive/tlnet/archive/newtxsf.tar.xz
2019/02/28 | 80548 | systems/texlive/tlnet/archive/newtxtt.doc.tar.xz
@@ -259793,8 +259828,8 @@
2019/04/06 | 280 | systems/texlive/tlnet/archive/texlive-cz.tar.xz
2019/03/28 | 1299960 | systems/texlive/tlnet/archive/texlive-de.doc.tar.xz
2019/03/28 | 272 | systems/texlive/tlnet/archive/texlive-de.tar.xz
-2020/01/12 | 157808 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53367.tar.xz
-2020/01/12 | 392 | systems/texlive/tlnet/archive/texlive-docindex.r53367.tar.xz
+2020/01/13 | 157948 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53374.tar.xz
+2020/01/13 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r53374.tar.xz
2019/12/23 | 1857600 | systems/texlive/tlnet/archive/texlive-en.doc.r53213.tar.xz
2019/12/23 | 272 | systems/texlive/tlnet/archive/texlive-en.r53213.tar.xz
2019/04/01 | 2279380 | systems/texlive/tlnet/archive/texlive-es.doc.tar.xz
@@ -261437,21 +261472,21 @@
2019/02/28 | 8900 | systems/texlive/tlnet/archive/zwpagelayout.tar.xz
2019/02/28 | 1708 | systems/texlive/tlnet/archive/zxjafbfont.doc.tar.xz
2019/02/28 | 1052 | systems/texlive/tlnet/archive/zxjafbfont.tar.xz
-2019/07/03 | 145684 | systems/texlive/tlnet/archive/zxjafont.doc.tar.xz
-2019/07/03 | 3724 | systems/texlive/tlnet/archive/zxjafont.tar.xz
+2020/01/13 | 146432 | systems/texlive/tlnet/archive/zxjafont.doc.r53380.tar.xz
+2020/01/13 | 3740 | systems/texlive/tlnet/archive/zxjafont.r53380.tar.xz
2019/02/28 | 136844 | systems/texlive/tlnet/archive/zxjatype.doc.tar.xz
2019/02/28 | 8412 | systems/texlive/tlnet/archive/zxjatype.tar.xz
2019/12/21 | 107147 | systems/texlive/tlnet/install-tl
-2020/01/12 | 3954135 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2020/01/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/01/13 | 3954088 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2019/05/09 | 4543 | systems/texlive/tlnet/install-tl-windows.bat
-2020/01/12 | 18703305 | systems/texlive/tlnet/install-tl-windows.exe
-2020/01/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/01/12 | 22546427 | systems/texlive/tlnet/install-tl.zip
-2020/01/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/01/13 | 18703377 | systems/texlive/tlnet/install-tl-windows.exe
+2020/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/01/13 | 22546427 | systems/texlive/tlnet/install-tl.zip
+2020/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2019/04/29 | 1221 | systems/texlive/tlnet/README.md
2019/03/13 | 5351 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
2016/04/12 | 600 | systems/texlive/tlnet/tlpkg/gpg/random_seed
@@ -261506,12 +261541,12 @@
2019/09/23 | 18176 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2016/10/11 | 4618 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2017/11/14 | 27560 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2020/01/12 | 15984490 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2020/01/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/01/13 | 15984496 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2019/12/10 | 87503 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2020/01/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2020/01/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/01/12 | 2153084 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/01/13 | 2150904 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2019/12/22 | 58727 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2020/01/03 | 40906 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2018/08/31 | 14972 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -263718,13 +263753,13 @@
2009/04/21 | 35717 | systems/win32/miktex/tm/packages/accfonts.tar.lzma
2019/12/06 | 338331 | systems/win32/miktex/tm/packages/accsupp.tar.lzma
2019/02/16 | 904854 | systems/win32/miktex/tm/packages/achemso.tar.lzma
-2019/12/20 | 3871480 | systems/win32/miktex/tm/packages/acmart.tar.lzma
+2020/01/13 | 3903906 | systems/win32/miktex/tm/packages/acmart.tar.lzma
2016/07/19 | 105378 | systems/win32/miktex/tm/packages/acmconf.tar.lzma
2016/08/30 | 774465 | systems/win32/miktex/tm/packages/acroflex.tar.lzma
2017/03/28 | 591918 | systems/win32/miktex/tm/packages/acromemory.tar.lzma
2019/11/12 | 296640 | systems/win32/miktex/tm/packages/acronym.tar.lzma
2012/01/02 | 1774663 | systems/win32/miktex/tm/packages/acrosort.tar.lzma
-2019/12/31 | 616591 | systems/win32/miktex/tm/packages/acro.tar.lzma
+2020/01/13 | 645129 | systems/win32/miktex/tm/packages/acro.tar.lzma
2010/11/24 | 163309 | systems/win32/miktex/tm/packages/acroterm.tar.lzma
2020/01/08 | 3192617 | systems/win32/miktex/tm/packages/acrotex.tar.lzma
2008/05/23 | 333795 | systems/win32/miktex/tm/packages/active-conf.tar.lzma
@@ -264312,7 +264347,7 @@
2018/09/04 | 197918 | systems/win32/miktex/tm/packages/chs-physics-report.tar.lzma
2016/12/20 | 183884 | systems/win32/miktex/tm/packages/churchslavonic.tar.lzma
2019/10/17 | 570908 | systems/win32/miktex/tm/packages/cinzel.tar.lzma
-2020/01/09 | 419043 | systems/win32/miktex/tm/packages/circledsteps.tar.lzma
+2020/01/13 | 419261 | systems/win32/miktex/tm/packages/circledsteps.tar.lzma
2010/03/08 | 182332 | systems/win32/miktex/tm/packages/circle.tar.lzma
2009/07/13 | 270032 | systems/win32/miktex/tm/packages/circ.tar.lzma
2019/12/23 | 1017114 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma
@@ -264841,7 +264876,7 @@
2019/01/04 | 232811 | systems/win32/miktex/tm/packages/exercisepoints.tar.lzma
2015/09/29 | 365912 | systems/win32/miktex/tm/packages/exercises.tar.lzma
2014/11/20 | 341246 | systems/win32/miktex/tm/packages/exercise.tar.lzma
-2019/06/17 | 425613 | systems/win32/miktex/tm/packages/exframe.tar.lzma
+2020/01/13 | 427670 | systems/win32/miktex/tm/packages/exframe.tar.lzma
2008/06/26 | 80109 | systems/win32/miktex/tm/packages/expdlist.tar.lzma
2017/05/29 | 494705 | systems/win32/miktex/tm/packages/expex.tar.lzma
2016/07/15 | 296374 | systems/win32/miktex/tm/packages/export.tar.lzma
@@ -264911,7 +264946,7 @@
2019/10/04 | 281928 | systems/win32/miktex/tm/packages/filehook.tar.lzma
2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma
2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma
-2020/01/12 | 515085 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/01/13 | 518736 | systems/win32/miktex/tm/packages/files.csv.lzma
2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma
2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma
2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma
@@ -265237,7 +265272,7 @@
2006/09/13 | 10444 | systems/win32/miktex/tm/packages/histogr.cab
2016/12/05 | 9399 | systems/win32/miktex/tm/packages/historische-zeitschrift.tar.lzma
2016/07/20 | 22329 | systems/win32/miktex/tm/packages/hitec.tar.lzma
-2019/02/20 | 1041548 | systems/win32/miktex/tm/packages/hithesis.tar.lzma
+2020/01/13 | 1052279 | systems/win32/miktex/tm/packages/hithesis.tar.lzma
2013/04/22 | 2535236 | systems/win32/miktex/tm/packages/hletter.tar.lzma
2017/08/12 | 399713 | systems/win32/miktex/tm/packages/hlist.tar.lzma
2019/08/08 | 989598 | systems/win32/miktex/tm/packages/hmtrump.tar.lzma
@@ -266034,9 +266069,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2019/11/11 | 38784 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2019/11/11 | 42872 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/01/12 | 195201 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/01/12 | 1160233 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/01/12 | 1080706 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/01/13 | 195262 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/01/13 | 1160021 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/01/13 | 1081090 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2019/11/11 | 13040 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2019/11/11 | 14027 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma
2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma
@@ -266180,192 +266215,192 @@
2005/06/25 | 43902 | systems/win32/miktex/tm/packages/newsletr.cab
2007/12/30 | 204631 | systems/win32/miktex/tm/packages/newspaper.tar.lzma
2018/06/08 | 440019 | systems/win32/miktex/tm/packages/newtxsf.tar.lzma
-2019/12/31 | 5368065 | systems/win32/miktex/tm/packages/newtx.tar.lzma
+2020/01/13 | 5363575 | systems/win32/miktex/tm/packages/newtx.tar.lzma
2017/05/23 | 196873 | systems/win32/miktex/tm/packages/newtxtt.tar.lzma
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2019/09/11 | 231430 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2020/01/12 | 515136 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2020/01/12 | 29240 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2020/01/12 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2020/01/12 | 863199 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2020/01/12 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2020/01/12 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2020/01/12 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2020/01/12 | 29296 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2020/01/12 | 34846 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2020/01/12 | 49770 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2020/01/12 | 57221 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2020/01/12 | 84531 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2020/01/12 | 94240 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2020/01/12 | 60330 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2020/01/12 | 67258 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2020/01/12 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2020/01/12 | 30242 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2020/01/12 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2020/01/12 | 391462 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2020/01/12 | 32268 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2020/01/12 | 36380 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2020/01/12 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2020/01/12 | 53999 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2020/01/12 | 198080 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2020/01/12 | 214153 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2020/01/12 | 169202 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2020/01/12 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2020/01/12 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2020/01/12 | 58796 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2020/01/12 | 20739 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2020/01/12 | 22959 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2020/01/12 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
-2020/01/12 | 40991 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2020/01/12 | 45811 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2020/01/12 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2020/01/12 | 308661 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2020/01/12 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2020/01/12 | 44982 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2020/01/12 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2020/01/12 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2020/01/12 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2020/01/12 | 1329053 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2020/01/12 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2020/01/12 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2020/01/12 | 43440 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2020/01/12 | 47979 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2020/01/12 | 45468 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2020/01/12 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2020/01/12 | 56622 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2020/01/12 | 61656 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2020/01/12 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2020/01/12 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2020/01/12 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2020/01/12 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2020/01/12 | 68675 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2020/01/12 | 77320 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2020/01/12 | 246458 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2020/01/12 | 281673 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2020/01/12 | 25330 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2020/01/12 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2020/01/12 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2020/01/12 | 116801 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2020/01/12 | 63291 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2020/01/12 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2020/01/12 | 94640 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2020/01/12 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2020/01/12 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2020/01/12 | 39847 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2020/01/12 | 457346 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2020/01/12 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2020/01/12 | 137172 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2020/01/12 | 150088 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2020/01/12 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2020/01/12 | 108761 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2020/01/12 | 15897 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2020/01/12 | 17698 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2020/01/12 | 27820 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2020/01/12 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2020/01/12 | 498555 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2020/01/12 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2020/01/12 | 538878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2020/01/12 | 575921 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2020/01/12 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2020/01/12 | 102382 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2020/01/12 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2020/01/12 | 1945836 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2020/01/12 | 67253 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2020/01/12 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2020/01/12 | 26978 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2020/01/12 | 31295 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2020/01/12 | 7506 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2020/01/12 | 8485 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2020/01/12 | 167847 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2020/01/12 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2020/01/12 | 247501 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2020/01/12 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2020/01/12 | 87276 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2020/01/12 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2020/01/12 | 77962 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2020/01/12 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2020/01/12 | 166014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2020/01/12 | 185301 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2020/01/12 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2020/01/12 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2020/01/12 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2020/01/12 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2020/01/12 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2020/01/12 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2020/01/12 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2020/01/12 | 34836 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2020/01/12 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2020/01/12 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2020/01/12 | 41881 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2020/01/12 | 45742 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2020/01/12 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2020/01/12 | 52143 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2020/01/12 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma
-2020/01/12 | 387515 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma
-2020/01/12 | 321502 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2020/01/12 | 356322 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2020/01/12 | 187298 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2020/01/12 | 193315 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2020/01/12 | 202430 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2020/01/12 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2020/01/12 | 77935 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2020/01/12 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2020/01/12 | 932883 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2020/01/12 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2020/01/12 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2020/01/12 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2020/01/12 | 31156 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2020/01/12 | 36632 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2020/01/12 | 63275 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2020/01/12 | 71699 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2020/01/12 | 42575 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2020/01/12 | 50791 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2020/01/12 | 1068591 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2020/01/12 | 1195622 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2020/01/12 | 41864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2020/01/12 | 50827 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2020/01/12 | 53448 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
-2020/01/12 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
-2020/01/12 | 26801 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2020/01/12 | 29144 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2020/01/12 | 16044 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2020/01/12 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2020/01/12 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2020/01/12 | 69213 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2020/01/12 | 147097 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2020/01/12 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2020/01/12 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2020/01/12 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2020/01/12 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2020/01/12 | 96209 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2020/01/12 | 2459485 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2020/01/12 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2020/01/12 | 54741 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2020/01/12 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2020/01/12 | 26510 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2020/01/12 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2020/01/12 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2020/01/12 | 65025 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2020/01/12 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2020/01/12 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2020/01/12 | 533457 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2020/01/12 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2020/01/12 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2020/01/12 | 42944 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/01/12 | 195227 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2020/01/12 | 1160501 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2020/01/12 | 1080838 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2020/01/12 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2020/01/12 | 14051 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2020/01/13 | 518770 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2020/01/13 | 29241 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2020/01/13 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2020/01/13 | 863200 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2020/01/13 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2020/01/13 | 24071 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2020/01/13 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2020/01/13 | 29297 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2020/01/13 | 34847 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2020/01/13 | 49772 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2020/01/13 | 57220 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2020/01/13 | 84535 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2020/01/13 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2020/01/13 | 60330 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2020/01/13 | 67258 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2020/01/13 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2020/01/13 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2020/01/13 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2020/01/13 | 391462 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2020/01/13 | 32268 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2020/01/13 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2020/01/13 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2020/01/13 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2020/01/13 | 198079 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2020/01/13 | 214152 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2020/01/13 | 169203 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2020/01/13 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2020/01/13 | 51772 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2020/01/13 | 58795 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2020/01/13 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2020/01/13 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2020/01/13 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
+2020/01/13 | 40992 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2020/01/13 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2020/01/13 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2020/01/13 | 308660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2020/01/13 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2020/01/13 | 44983 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2020/01/13 | 112995 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2020/01/13 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2020/01/13 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2020/01/13 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2020/01/13 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2020/01/13 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2020/01/13 | 43441 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2020/01/13 | 47980 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2020/01/13 | 45467 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2020/01/13 | 50581 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2020/01/13 | 56622 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2020/01/13 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2020/01/13 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2020/01/13 | 152166 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2020/01/13 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2020/01/13 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2020/01/13 | 68676 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2020/01/13 | 77318 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2020/01/13 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2020/01/13 | 281676 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2020/01/13 | 25329 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2020/01/13 | 28710 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2020/01/13 | 100683 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2020/01/13 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2020/01/13 | 63289 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2020/01/13 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2020/01/13 | 94641 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2020/01/13 | 111237 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2020/01/13 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2020/01/13 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2020/01/13 | 457348 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2020/01/13 | 544016 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2020/01/13 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2020/01/13 | 150091 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2020/01/13 | 92937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2020/01/13 | 108761 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2020/01/13 | 15898 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2020/01/13 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2020/01/13 | 27821 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2020/01/13 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2020/01/13 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2020/01/13 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2020/01/13 | 538880 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2020/01/13 | 575925 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2020/01/13 | 93476 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2020/01/13 | 102381 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2020/01/13 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2020/01/13 | 1945836 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2020/01/13 | 67253 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2020/01/13 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2020/01/13 | 26979 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2020/01/13 | 31294 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2020/01/13 | 7506 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2020/01/13 | 8485 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2020/01/13 | 167847 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2020/01/13 | 182760 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2020/01/13 | 247501 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2020/01/13 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2020/01/13 | 87276 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2020/01/13 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2020/01/13 | 77961 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2020/01/13 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2020/01/13 | 166015 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2020/01/13 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2020/01/13 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2020/01/13 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2020/01/13 | 194998 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2020/01/13 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2020/01/13 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2020/01/13 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2020/01/13 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2020/01/13 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2020/01/13 | 56424 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2020/01/13 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2020/01/13 | 41880 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2020/01/13 | 45742 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2020/01/13 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2020/01/13 | 52142 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2020/01/13 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma
+2020/01/13 | 387512 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma
+2020/01/13 | 321499 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2020/01/13 | 356321 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2020/01/13 | 187297 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2020/01/13 | 193315 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2020/01/13 | 202429 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2020/01/13 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2020/01/13 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2020/01/13 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2020/01/13 | 932886 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2020/01/13 | 1042664 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2020/01/13 | 19793 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2020/01/13 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2020/01/13 | 31155 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2020/01/13 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2020/01/13 | 63275 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2020/01/13 | 71698 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2020/01/13 | 42574 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2020/01/13 | 50793 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2020/01/13 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2020/01/13 | 1195625 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2020/01/13 | 41865 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2020/01/13 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2020/01/13 | 53448 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
+2020/01/13 | 59459 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
+2020/01/13 | 26801 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2020/01/13 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2020/01/13 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2020/01/13 | 17764 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2020/01/13 | 63118 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2020/01/13 | 69213 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2020/01/13 | 147096 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2020/01/13 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2020/01/13 | 70252 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2020/01/13 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2020/01/13 | 91338 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2020/01/13 | 96208 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2020/01/13 | 2459485 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2020/01/13 | 2579408 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2020/01/13 | 54743 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2020/01/13 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2020/01/13 | 26510 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2020/01/13 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2020/01/13 | 61567 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2020/01/13 | 65024 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2020/01/13 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2020/01/13 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2020/01/13 | 533458 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2020/01/13 | 563307 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2020/01/13 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2020/01/13 | 42945 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2020/01/13 | 195265 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2020/01/13 | 1160988 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2020/01/13 | 1080016 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2020/01/13 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2020/01/13 | 14051 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma
-2020/01/12 | 652 | systems/win32/miktex/tm/packages/next/pr.ini
+2020/01/13 | 652 | systems/win32/miktex/tm/packages/next/pr.ini
2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma
2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma
2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma
2017/06/22 | 263407 | systems/win32/miktex/tm/packages/niceframe.tar.lzma
2017/06/22 | 276883 | systems/win32/miktex/tm/packages/niceframe-type1.tar.lzma
-2020/01/03 | 1039340 | systems/win32/miktex/tm/packages/nicematrix.tar.lzma
+2020/01/13 | 1054938 | systems/win32/miktex/tm/packages/nicematrix.tar.lzma
2015/11/25 | 2555178 | systems/win32/miktex/tm/packages/nicetext.tar.lzma
2018/07/30 | 243633 | systems/win32/miktex/tm/packages/nidanfloat.tar.lzma
2016/01/26 | 74424 | systems/win32/miktex/tm/packages/nihbiosketch.tar.lzma
@@ -266668,7 +266703,7 @@
2008/11/07 | 35981 | systems/win32/miktex/tm/packages/prettyref.tar.lzma
2017/07/26 | 201385 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
-2020/01/12 | 364 | systems/win32/miktex/tm/packages/pr.ini
+2020/01/13 | 321 | systems/win32/miktex/tm/packages/pr.ini
2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma
2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma
2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma
@@ -267058,6 +267093,7 @@
2005/06/12 | 46888 | systems/win32/miktex/tm/packages/sides.cab
2016/02/18 | 315728 | systems/win32/miktex/tm/packages/signchart.tar.lzma
2012/07/11 | 489410 | systems/win32/miktex/tm/packages/silence.tar.lzma
+2020/01/13 | 41238 | systems/win32/miktex/tm/packages/simplebnf.tar.lzma
2013/03/01 | 939150 | systems/win32/miktex/tm/packages/simplecd.tar.lzma
2014/11/20 | 300788 | systems/win32/miktex/tm/packages/simplecv.tar.lzma
2017/11/03 | 228224 | systems/win32/miktex/tm/packages/simpleinvoice.tar.lzma
@@ -267248,7 +267284,7 @@
2006/08/17 | 125942 | systems/win32/miktex/tm/packages/t-angles.cab
2004/09/09 | 107770 | systems/win32/miktex/tm/packages/tapir.cab
2016/07/20 | 37664 | systems/win32/miktex/tm/packages/tap.tar.lzma
-2019/11/04 | 464594 | systems/win32/miktex/tm/packages/tasks.tar.lzma
+2020/01/13 | 464631 | systems/win32/miktex/tm/packages/tasks.tar.lzma
2016/07/18 | 511088 | systems/win32/miktex/tm/packages/tclldoc.tar.lzma
2019/11/16 | 4686625 | systems/win32/miktex/tm/packages/tcolorbox.tar.lzma
2014/02/28 | 248700 | systems/win32/miktex/tm/packages/tdclock.tar.lzma
@@ -267406,7 +267442,7 @@
2019/06/24 | 446730 | systems/win32/miktex/tm/packages/tlc-article.tar.lzma
2010/10/16 | 327380 | systems/win32/miktex/tm/packages/tocbibind.tar.lzma
2019/07/20 | 932365 | systems/win32/miktex/tm/packages/tocdata.tar.lzma
-2017/09/01 | 531531 | systems/win32/miktex/tm/packages/tocloft.tar.lzma
+2020/01/13 | 532318 | systems/win32/miktex/tm/packages/tocloft.tar.lzma
2014/03/14 | 312556 | systems/win32/miktex/tm/packages/tocvsec2.tar.lzma
2019/01/26 | 452981 | systems/win32/miktex/tm/packages/todonotes.tar.lzma
2010/04/13 | 187962 | systems/win32/miktex/tm/packages/todo.tar.lzma
@@ -267493,7 +267529,7 @@
2005/06/02 | 106881 | systems/win32/miktex/tm/packages/uiucthesis.cab
2016/07/19 | 296774 | systems/win32/miktex/tm/packages/ukrhyph.tar.lzma
2014/06/23 | 4617548 | systems/win32/miktex/tm/packages/uk-tex-faq.tar.lzma
-2012/06/11 | 106508 | systems/win32/miktex/tm/packages/ulem.tar.lzma
+2020/01/13 | 173224 | systems/win32/miktex/tm/packages/ulem.tar.lzma
2009/06/20 | 275807 | systems/win32/miktex/tm/packages/ulqda.tar.lzma
2005/05/04 | 18879 | systems/win32/miktex/tm/packages/ulsy.cab
2019/11/30 | 342398 | systems/win32/miktex/tm/packages/ulthese.tar.lzma
@@ -267749,7 +267785,7 @@
2008/06/26 | 246879 | systems/win32/miktex/tm/packages/zwgetfdate.tar.lzma
2013/07/09 | 601588 | systems/win32/miktex/tm/packages/zwpagelayout.tar.lzma
2012/12/20 | 2657 | systems/win32/miktex/tm/packages/zxjafbfont.tar.lzma
-2019/07/05 | 150057 | systems/win32/miktex/tm/packages/zxjafont.tar.lzma
+2020/01/13 | 150776 | systems/win32/miktex/tm/packages/zxjafont.tar.lzma
2018/05/04 | 147363 | systems/win32/miktex/tm/packages/zxjatype.tar.lzma
2002/06/26 | 178694 | systems/win32/oletex/OLETeX1b4.exe
2002/06/26 | 7223 | systems/win32/oletex/README
@@ -267788,7 +267824,7 @@
2019/12/17 | 4906836 | systems/win32/w32tex/aleph-w32.tar.xz
2020/01/07 | 64194980 | systems/win32/w32tex/biblatex-biber.tar.xz
2016/12/13 | 65971452 | systems/win32/w32tex/cbfonts.tar.xz
-2020/01/10 | 570832 | systems/win32/w32tex/ChangeLog
+2020/01/12 | 571380 | systems/win32/w32tex/ChangeLog
2009/08/03 | 141221 | systems/win32/w32tex/ChangeLog.0
2009/08/03 | 221890 | systems/win32/w32tex/ChangeLog.1
2009/08/03 | 116462 | systems/win32/w32tex/ChangeLog.2
@@ -267802,7 +267838,7 @@
2019/08/14 | 838256 | systems/win32/w32tex/dvi2ps-w32.tar.xz
2019/09/11 | 483568 | systems/win32/w32tex/dvi2tty-w32.tar.xz
2019/11/14 | 4650996 | systems/win32/w32tex/dvipdfm-w32.tar.xz
-2019/11/13 | 4450520 | systems/win32/w32tex/dvipsk-w32.tar.xz
+2020/01/12 | 4610464 | systems/win32/w32tex/dvipsk-w32.tar.xz
2020/01/06 | 2599468 | systems/win32/w32tex/dvitools-w32.tar.xz
2019/12/31 | 684944 | systems/win32/w32tex/extractpdfmark-w32.tar.xz
2019/08/14 | 17348028 | systems/win32/w32tex/gregorio-w32.tar.xz
@@ -267814,10 +267850,10 @@
2020/01/10 | 388167056 | systems/win32/w32tex/ltxpkgdocs.tar.xz
2020/01/10 | 34263556 | systems/win32/w32tex/ltxpkgs.tar.xz
2019/12/08 | 3920232 | systems/win32/w32tex/luajittex-dev-w32.tar.xz
-2020/01/03 | 3930032 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
+2020/01/11 | 3929416 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
2019/12/08 | 3926748 | systems/win32/w32tex/luajittex-w32.tar.xz
2019/12/23 | 15898924 | systems/win32/w32tex/luatex-dev-w32.tar.xz
-2020/01/03 | 15916924 | systems/win32/w32tex/luatex-exp-w32.tar.xz
+2020/01/11 | 15915704 | systems/win32/w32tex/luatex-exp-w32.tar.xz
2019/11/19 | 17264772 | systems/win32/w32tex/luatexja.tar.xz
2019/12/23 | 14927692 | systems/win32/w32tex/luatex-w32.tar.xz
2019/10/05 | 1598764 | systems/win32/w32tex/makeindex-w32.tar.xz
@@ -267826,7 +267862,7 @@
2019/11/04 | 524272 | systems/win32/w32tex/mftrace-w32.tar.xz
2018/07/14 | 6364952 | systems/win32/w32tex/minitoc.tar.xz
2019/01/25 | 882860 | systems/win32/w32tex/m-tx.tar.xz
-2020/01/10 | 8249396 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz
+2020/01/11 | 8244584 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz
2019/11/07 | 1217272 | systems/win32/w32tex/omegaj-w32.tar.xz
2019/09/08 | 357888 | systems/win32/w32tex/otfbeta.tar.xz
2019/12/31 | 18705792 | systems/win32/w32tex/pdftex-w32.tar.xz
@@ -267850,7 +267886,7 @@
2019/04/15 | 97136 | systems/win32/w32tex/tiff2png-w32.tar.xz
2013/04/08 | 308444 | systems/win32/w32tex/timesnew.tar.xz
2020/01/01 | 2022 | systems/win32/w32tex/TLW64/00README.TLW64
-2020/01/06 | 91174748 | systems/win32/w32tex/TLW64/tl-win64.zip
+2020/01/12 | 91177533 | systems/win32/w32tex/TLW64/tl-win64.zip
2019/08/14 | 819188 | systems/win32/w32tex/ttf2pk-w32.tar.xz
2019/08/14 | 830416 | systems/win32/w32tex/ttf2pt1-w32.tar.xz
2017/10/13 | 1773368 | systems/win32/w32tex/tuftelatex.tar.xz
@@ -267871,7 +267907,7 @@
2019/08/14 | 745316 | systems/win32/w32tex/win64/dvi2ps-w64.tar.xz
2019/09/11 | 447424 | systems/win32/w32tex/win64/dvi2tty-w64.tar.xz
2019/11/14 | 853664 | systems/win32/w32tex/win64/dvipdfm-w64.tar.xz
-2019/09/18 | 784496 | systems/win32/w32tex/win64/dvipsk-w64.tar.xz
+2020/01/12 | 787376 | systems/win32/w32tex/win64/dvipsk-w64.tar.xz
2020/01/06 | 2328048 | systems/win32/w32tex/win64/dvitools-w64.tar.xz
2019/12/31 | 591464 | systems/win32/w32tex/win64/extractpdfmark-w64.tar.xz
2019/08/28 | 304752 | systems/win32/w32tex/win64/gregorio-w64.tar.xz
@@ -267879,10 +267915,10 @@
2019/11/11 | 2568 | systems/win32/w32tex/win64/latex-dev-w64.tar.xz
2019/08/28 | 799776 | systems/win32/w32tex/win64/lcdf-typetools-w64.tar.xz
2019/12/08 | 3502768 | systems/win32/w32tex/win64/luajittex-dev-w64.tar.xz
-2020/01/03 | 3520500 | systems/win32/w32tex/win64/luajittex-exp-w64.tar.xz
+2020/01/11 | 3508608 | systems/win32/w32tex/win64/luajittex-exp-w64.tar.xz
2019/12/08 | 3515860 | systems/win32/w32tex/win64/luajittex-w64.tar.xz
2019/12/08 | 3116832 | systems/win32/w32tex/win64/luatex-dev-w64.tar.xz
-2020/01/03 | 3116052 | systems/win32/w32tex/win64/luatex-exp-w64.tar.xz
+2020/01/11 | 3124068 | systems/win32/w32tex/win64/luatex-exp-w64.tar.xz
2019/12/08 | 3115992 | systems/win32/w32tex/win64/luatex-w64.tar.xz
2019/10/05 | 1068520 | systems/win32/w32tex/win64/makeindex-w64.tar.xz
2019/08/14 | 430688 | systems/win32/w32tex/win64/mftools-w64.tar.xz
@@ -268002,7 +268038,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2020/01/13 | 186 | timestamp
+2020/01/14 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2017/06/30 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index bff658ab00..8999772020 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index ff45ba50b2..a1f71455fd 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,227 +1,796 @@
+2020/01/13 | 9990 | macros/latex/contrib/l3kernel/l3news10.tex
+2020/01/13 | 99543 | macros/latex/contrib/l3packages/xtemplate.dtx
+2020/01/13 | 9888 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+2020/01/13 | 9862 | macros/latex/contrib/l3experimental/l3pdf.dtx
+2020/01/13 | 981 | graphics/svg/source/examples/root.C
+2020/01/13 | 97800 | macros/latex/contrib/l3kernel/l3keys.dtx
+2020/01/13 | 9772 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2020/01/13 | 96866 | macros/latex/contrib/l3experimental/l3galley.dtx
+2020/01/13 | 9656 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2020/01/13 | 96208 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2020/01/13 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2020/01/13 | 9498 | macros/latex-dev/required/tools/shellesc.dtx
+2020/01/13 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2020/01/13 | 94641 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2020/01/13 | 9450 | macros/latex/contrib/l3kernel/l3flag.dtx
+2020/01/13 | 94239 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2020/01/13 | 93476 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2020/01/13 | 932886 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2020/01/13 | 92937 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2020/01/13 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2020/01/13 | 91338 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2020/01/13 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2020/01/13 | 8982 | macros/latex-dev/required/tools/rawfonts.dtx
+2020/01/13 | 88271 | macros/latex/contrib/l3kernel/l3int.dtx
+2020/01/13 | 87276 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2020/01/13 | 87219 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2020/01/13 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
+2020/01/13 | 863200 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2020/01/13 | 85507 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2020/01/13 | 8485 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2020/01/13 | 84833 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2020/01/13 | 84535 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2020/01/13 | 8424 | macros/latex/contrib/l3kernel/l3news11.tex
+2020/01/13 | 835796 | systems/texlive/tlnet/archive/newtx.doc.r53379.tar.xz
+2020/01/13 | 82562 | macros/latex/contrib/l3kernel/l3seq.dtx
+2020/01/13 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2020/01/13 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2020/01/13 | 793 | macros/latex/contrib/ascmac/README.md
+2020/01/13 | 78396 | systems/texlive/tlnet/archive/dsserif.r53384.tar.xz
+2020/01/13 | 77961 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
+2020/01/13 | 77936 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2020/01/13 | 77318 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2020/01/13 | 7724 | macros/latex/contrib/apa6/samples/bibliography.bib
+2020/01/13 | 77128 | macros/latex/contrib/l3kernel/l3box.dtx
+2020/01/13 | 7700 | macros/latex/contrib/ascmac/ascgrp.pfb
+2020/01/13 | 7681 | macros/latex/contrib/hep-paper/bibliography.bib
+2020/01/13 | 75907 | macros/latex/contrib/l3kernel/l3skip.dtx
+2020/01/13 | 7506 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2020/01/13 | 7488 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+2020/01/13 | 74349 | macros/latex/contrib/l3kernel/l3clist.dtx
+2020/01/13 | 73859 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2020/01/13 | 73635 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2020/01/13 | 72855 | macros/latex/contrib/l3kernel/l3str.dtx
+2020/01/13 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2020/01/13 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2020/01/13 | 72030 | macros/latex-dev/required/tools/longtable.dtx
+2020/01/13 | 71698 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2020/01/13 | 71688 | macros/latex/contrib/l3kernel/l3msg.dtx
+2020/01/13 | 71308 | macros/latex-dev/required/tools/verbatim.dtx
+2020/01/13 | 70305 | macros/latex/contrib/l3kernel/l3fp.dtx
+2020/01/13 | 70252 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2020/01/13 | 6990 | macros/latex/contrib/l3packages/xfp.dtx
+2020/01/13 | 6970 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2020/01/13 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2020/01/13 | 6935353 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
+2020/01/13 | 69213 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2020/01/13 | 6908 | macros/latex/contrib/apa6/samples/longsample.tex
+2020/01/13 | 6870179 | macros/latex-dev/required/tools.zip
+2020/01/13 | 68676 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2020/01/13 | 68288 | macros/latex-dev/required/tools/tools-overview.pdf
+2020/01/13 | 68272 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2020/01/13 | 6795 | macros/latex-dev/required/tools/delarray.dtx
+2020/01/13 | 67258 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2020/01/13 | 67253 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2020/01/13 | 6704 | macros/latex/contrib/apa6/apa6.ins
+2020/01/13 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2020/01/13 | 661758 | install/fonts/firamath.tds.zip
+2020/01/13 | 660240 | fonts/firamath.zip
+2020/01/13 | 652 | systems/win32/miktex/tm/packages/next/pr.ini
+2020/01/13 | 65024 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2020/01/13 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2020/01/13 | 645129 | systems/win32/miktex/tm/packages/acro.tar.lzma
+2020/01/13 | 6431 | macros/latex/contrib/l3kernel/l3news06.tex
+2020/01/13 | 64264 | macros/latex/contrib/l3kernel/l3prg.dtx
+2020/01/13 | 63289 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2020/01/13 | 63275 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2020/01/13 | 63118 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2020/01/13 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2020/01/13 | 627172 | macros/latex/contrib/apa6.zip
+2020/01/13 | 6249 | macros/latex/contrib/apa6/samples/shortsample.tex
+2020/01/13 | 624175 | macros/latex/contrib/l3experimental/l3draw-code.pdf
+2020/01/13 | 6236 | macros/latex/contrib/l3kernel/l3alloc.dtx
+2020/01/13 | 6203 | macros/latex/contrib/l3kernel/l3color-base.dtx
+2020/01/13 | 61657 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2020/01/13 | 6163 | macros/latex/contrib/l3experimental/l3draw-state.dtx
+2020/01/13 | 615836 | systems/texlive/tlnet/archive/acro.doc.r53383.tar.xz
+2020/01/13 | 61567 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2020/01/13 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2020/01/13 | 61208 | macros/latex/contrib/l3kernel/expl3.dtx
+2020/01/13 | 6104 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2020/01/13 | 6074 | macros/latex/contrib/l3kernel/l3.ins
+2020/01/13 | 6074 | macros/latex/contrib/ascmac/ascii.mf
+2020/01/13 | 60330 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2020/01/13 | 5968 | macros/latex-dev/required/tools/xr.dtx
+2020/01/13 | 595965 | macros/latex/contrib/apa6/apa6.pdf
+2020/01/13 | 59459 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
+2020/01/13 | 59414 | macros/latex-dev/required/tools/bm.dtx
+2020/01/13 | 59384 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2020/01/13 | 58795 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2020/01/13 | 584331 | macros/latex/contrib/l3kernel/expl3.pdf
+2020/01/13 | 58429 | macros/latex/contrib/l3experimental/xgalley.dtx
+2020/01/13 | 5797 | macros/latex-dev/required/tools/somedefs.dtx
+2020/01/13 | 575925 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2020/01/13 | 5757322 | macros/latex/contrib/l3kernel/source3.pdf
+2020/01/13 | 57220 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2020/01/13 | 5701 | macros/latex/contrib/l3kernel/l3format.ins
+2020/01/13 | 5692 | macros/latex-dev/required/tools/tools.ins
+2020/01/13 | 5667 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
+2020/01/13 | 56622 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2020/01/13 | 56424 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2020/01/13 | 563307 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2020/01/13 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2020/01/13 | 55995 | fonts/firamath/firamath-demo.pdf
+2020/01/13 | 5548 | macros/latex/contrib/apa6/config/APAendfloat.cfg
+2020/01/13 | 55286 | macros/latex-dev/required/tools/changes.txt
+2020/01/13 | 54743 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2020/01/13 | 544016 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2020/01/13 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2020/01/13 | 53996 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2020/01/13 | 538880 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2020/01/13 | 5363575 | systems/win32/miktex/tm/packages/newtx.tar.lzma
+2020/01/13 | 53448 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
+2020/01/13 | 533458 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2020/01/13 | 532318 | systems/win32/miktex/tm/packages/tocloft.tar.lzma
+2020/01/13 | 53174 | macros/latex-dev/required/tools/calc.dtx
+2020/01/13 | 52142 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2020/01/13 | 5213 | macros/latex-dev/required/tools/tools-overview.tex
+2020/01/13 | 518770 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2020/01/13 | 518736 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/01/13 | 51772 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2020/01/13 | 516193 | fonts/firamath/firamath-specimen.pdf
+2020/01/13 | 51448 | systems/texlive/tlnet/archive/acmart.source.r53381.tar.xz
+2020/01/13 | 51073 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2020/01/13 | 50828 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2020/01/13 | 50793 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2020/01/13 | 50581 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2020/01/13 | 501747 | macros/latex/contrib/l3packages/xparse.pdf
+2020/01/13 | 498554 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2020/01/13 | 49772 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2020/01/13 | 4974 | macros/latex/contrib/l3kernel/l3news07.tex
+2020/01/13 | 4965 | macros/latex-dev/required/tools/fileerr.dtx
+2020/01/13 | 49619 | macros/latex/contrib/l3kernel/l3prop.dtx
+2020/01/13 | 4940260 | install/macros/latex/contrib/l3experimental.tds.zip
+2020/01/13 | 49394 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2020/01/13 | 4935 | macros/latex/contrib/l3kernel/l3news01.tex
+2020/01/13 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2020/01/13 | 491417 | macros/latex-dev/required/tools/multicol.pdf
+2020/01/13 | 491117 | macros/latex/contrib/l3experimental/l3draw.pdf
+2020/01/13 | 4902 | fonts/firamath/firamath-demo.tex
+2020/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2020/01/13 | 4897760 | macros/latex/contrib/l3experimental.zip
+2020/01/13 | 481463 | macros/latex-dev/required/tools/array.pdf
+2020/01/13 | 47980 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2020/01/13 | 478 | macros/latex/contrib/ascmac/ascmac.ins
+2020/01/13 | 47215 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2020/01/13 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2020/01/13 | 46646 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2020/01/13 | 464631 | systems/win32/miktex/tm/packages/tasks.tar.lzma
+2020/01/13 | 45810 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2020/01/13 | 45742 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2020/01/13 | 457348 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2020/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2020/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2020/01/13 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2020/01/13 | 4549 | macros/latex/contrib/l3experimental/README.md
+2020/01/13 | 45467 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2020/01/13 | 454084 | macros/latex/contrib/l3packages/xfrac.pdf
+2020/01/13 | 4527676 | systems/texlive/tlnet/archive/newtx.r53379.tar.xz
+2020/01/13 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
+2020/01/13 | 44983 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2020/01/13 | 448 | macros/latex/contrib/ascmac/ascgrp.tfm
+2020/01/13 | 435337 | macros/latex/contrib/hep-paper.zip
+2020/01/13 | 43454 | macros/latex-dev/required/tools/theorem.dtx
+2020/01/13 | 43441 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2020/01/13 | 4328 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+2020/01/13 | 43158 | macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
+2020/01/13 | 42945 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2020/01/13 | 427670 | systems/win32/miktex/tm/packages/exframe.tar.lzma
+2020/01/13 | 42574 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2020/01/13 | 425702 | macros/latex/contrib/hep-paper/hep-paper.pdf
+2020/01/13 | 42142 | macros/latex/contrib/l3kernel/l3debug.dtx
+2020/01/13 | 419261 | systems/win32/miktex/tm/packages/circledsteps.tar.lzma
+2020/01/13 | 41880 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2020/01/13 | 41865 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2020/01/13 | 416174 | macros/latex/contrib/l3packages/xtemplate.pdf
+2020/01/13 | 415380 | systems/texlive/tlnet/archive/circledsteps.doc.r53382.tar.xz
+2020/01/13 | 413933 | macros/latex/contrib/l3kernel/l3news.pdf
+2020/01/13 | 41238 | systems/win32/miktex/tm/packages/simplebnf.tar.lzma
+2020/01/13 | 40992 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2020/01/13 | 40930 | macros/latex/contrib/l3kernel/l3sort.dtx
+2020/01/13 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2020/01/13 | 40718 | macros/latex/contrib/l3experimental/l3draw.dtx
+2020/01/13 | 40709 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2020/01/13 | 4022 | macros/latex/contrib/l3kernel/l3news.tex
+2020/01/13 | 40082 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
+2020/01/13 | 39846 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2020/01/13 | 39702 | macros/latex-dev/required/tools/ftnright.dtx
+2020/01/13 | 3954088 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/01/13 | 39276 | macros/latex/contrib/l3packages/xfrac.dtx
+2020/01/13 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2020/01/13 | 391462 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2020/01/13 | 3903906 | systems/win32/miktex/tm/packages/acmart.tar.lzma
+2020/01/13 | 388 | systems/texlive/tlnet/archive/texlive-docindex.r53374.tar.xz
+2020/01/13 | 3886 | graphics/svg/README.md
+2020/01/13 | 38863 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2020/01/13 | 387512 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma
+2020/01/13 | 38561 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2020/01/13 | 385522 | macros/latex/contrib/l3experimental/l3galley.pdf
+2020/01/13 | 3804080 | systems/texlive/tlnet/archive/acmart.doc.r53381.tar.xz
+2020/01/13 | 3740 | systems/texlive/tlnet/archive/zxjafont.r53380.tar.xz
+2020/01/13 | 372664 | macros/latex/contrib/l3experimental/xcoffins.pdf
+2020/01/13 | 3714 | macros/latex/contrib/l3experimental/CHANGELOG.md
+2020/01/13 | 36633 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2020/01/13 | 36624 | systems/texlive/tlnet/archive/acmart.r53381.tar.xz
+2020/01/13 | 36381 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2020/01/13 | 362861 | macros/latex/contrib/l3experimental/l3graphics.pdf
+2020/01/13 | 35816 | macros/latex-dev/required/tools/tabularx.dtx
+2020/01/13 | 356321 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2020/01/13 | 355228 | macros/latex-dev/required/tools/varioref.pdf
+2020/01/13 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma
+2020/01/13 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2020/01/13 | 35177 | macros/latex/contrib/l3experimental/xcoffins.dtx
+2020/01/13 | 350326 | macros/latex-dev/required/tools/longtable.pdf
+2020/01/13 | 349685 | macros/latex/contrib/l3experimental/l3color.pdf
+2020/01/13 | 349545 | macros/latex/contrib/l3experimental/l3pdf.pdf
+2020/01/13 | 34847 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2020/01/13 | 34834 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2020/01/13 | 346873 | macros/latex-dev/required/tools/ftnright.pdf
+2020/01/13 | 344664 | macros/latex/contrib/l3experimental/l3str-format.pdf
+2020/01/13 | 340877 | macros/latex-dev/required/tools/calc.pdf
+2020/01/13 | 3406 | macros/latex/contrib/l3packages/README.md
+2020/01/13 | 33872 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
+2020/01/13 | 337341 | macros/latex/contrib/l3experimental/l3cctab.pdf
+2020/01/13 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2020/01/13 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2020/01/13 | 32 | macros/latex/contrib/ascmac/ascii36.mf
+2020/01/13 | 32 | macros/latex/contrib/ascmac/ascii10.mf
+2020/01/13 | 3292 | macros/latex-dev/required/tools/manifest.txt
+2020/01/13 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2020/01/13 | 326866 | macros/latex/contrib/l3packages/l3keys2e.pdf
+2020/01/13 | 32522 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
+2020/01/13 | 32349 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2020/01/13 | 323427 | macros/latex-dev/required/tools/theorem.pdf
+2020/01/13 | 32268 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2020/01/13 | 3223 | macros/latex/contrib/apa6/config/APAngerman.txt
+2020/01/13 | 3221 | macros/latex/contrib/apa6/config/APAgreek.txt
+2020/01/13 | 321 | systems/win32/miktex/tm/packages/pr.ini
+2020/01/13 | 3214 | macros/latex/contrib/apa6/config/APAgerman.txt
+2020/01/13 | 321499 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2020/01/13 | 3213 | macros/latex/contrib/apa6/config/APAturkish.txt
+2020/01/13 | 3204 | macros/latex/contrib/apa6/config/APAczech.txt
+2020/01/13 | 3193 | macros/latex/contrib/apa6/config/APAdutch.txt
+2020/01/13 | 31900 | systems/texlive/tlnet/archive/epspdf.r53378.tar.xz
+2020/01/13 | 31787 | macros/latex/contrib/l3experimental/l3str-format.dtx
+2020/01/13 | 3169 | macros/latex/contrib/apa6/config/APAenglish.txt
+2020/01/13 | 3169 | macros/latex/contrib/apa6/config/APAamerican.txt
+2020/01/13 | 3164 | macros/latex/contrib/apa6/config/APAbritish.txt
+2020/01/13 | 314019 | macros/latex/contrib/l3experimental/l3benchmark.pdf
+2020/01/13 | 31299 | macros/latex/contrib/l3experimental/l3draw-points.dtx
+2020/01/13 | 31294 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2020/01/13 | 31155 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2020/01/13 | 311429 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
+2020/01/13 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2020/01/13 | 309651 | macros/latex/contrib/l3packages/xfp.pdf
+2020/01/13 | 30962 | macros/latex-dev/required/tools/layout.dtx
+2020/01/13 | 308660 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2020/01/13 | 306782 | macros/latex-dev/required/tools/bm.pdf
+2020/01/13 | 30613 | macros/latex/contrib/hep-paper/hep-paper.dtx
+2020/01/13 | 30240 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2020/01/13 | 302239 | macros/latex-dev/required/tools/verbatim.pdf
+2020/01/13 | 2997 | macros/latex/contrib/l3kernel/README.md
+2020/01/13 | 29901 | macros/latex/contrib/l3experimental/l3color.dtx
+2020/01/13 | 29845 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2020/01/13 | 29720 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
+2020/01/13 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2020/01/13 | 29571 | macros/latex-dev/required/tools/showkeys.dtx
+2020/01/13 | 29297 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2020/01/13 | 29241 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2020/01/13 | 29145 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2020/01/13 | 2910 | macros/latex/contrib/ascmac/ascii10.pfb
+2020/01/13 | 2892 | macros/latex/contrib/ascmac/ascii36.pfb
+2020/01/13 | 28710 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2020/01/13 | 285447 | macros/latex/contrib/l3experimental/xgalley.pdf
+2020/01/13 | 28521 | macros/latex/contrib/l3kernel/l3text.dtx
+2020/01/13 | 281676 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2020/01/13 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2020/01/13 | 279782 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2020/01/13 | 27821 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2020/01/13 | 277030 | macros/latex/contrib/l3experimental/l3pdf-code.pdf
+2020/01/13 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2020/01/13 | 27400 | macros/latex/contrib/ascmac/ascmac.dtx
+2020/01/13 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2020/01/13 | 26979 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2020/01/13 | 26801 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2020/01/13 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2020/01/13 | 26532 | macros/latex/contrib/l3kernel/l3sys.dtx
+2020/01/13 | 26510 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2020/01/13 | 263041 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2020/01/13 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2020/01/13 | 2592 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2020/01/13 | 2587 | macros/latex-dev/required/tools/multicol.ins
+2020/01/13 | 2579408 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2020/01/13 | 25753 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2020/01/13 | 25619 | fonts/firamath/firamath-glyph-list.tex
+2020/01/13 | 2549 | macros/latex-dev/required/tools/longtable.ins
+2020/01/13 | 2549 | macros/latex-dev/required/tools/afterpage.ins
+2020/01/13 | 2546 | macros/latex-dev/required/tools/tabularx.ins
+2020/01/13 | 254340 | macros/latex-dev/required/tools/tabularx.pdf
+2020/01/13 | 2542 | macros/latex-dev/required/tools/varioref.ins
+2020/01/13 | 2535 | macros/latex-dev/required/tools/bm.ins
+2020/01/13 | 25329 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2020/01/13 | 250949 | macros/latex/contrib/l3kernel/l3regex.dtx
+2020/01/13 | 2484 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2020/01/13 | 24769 | macros/latex/contrib/l3experimental/l3graphics.dtx
+2020/01/13 | 247501 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2020/01/13 | 247184 | systems/texlive/tlnet/archive/dsserif.doc.r53384.tar.xz
+2020/01/13 | 246931 | macros/latex-dev/required/tools/layout.pdf
+2020/01/13 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2020/01/13 | 24664 | macros/latex-dev/required/tools/trace.dtx
+2020/01/13 | 246456 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2020/01/13 | 2459485 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2020/01/13 | 24536 | systems/texlive/tlnet/archive/acro.r53383.tar.xz
+2020/01/13 | 244282 | macros/latex/contrib/l3kernel/l3news12.pdf
+2020/01/13 | 242786 | macros/latex-dev/required/tools/showkeys.pdf
+2020/01/13 | 24071 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2020/01/13 | 238007 | macros/latex-dev/required/tools/xspace.pdf
+2020/01/13 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2020/01/13 | 237488 | systems/texlive/tlnet/archive/epspdf.doc.r53378.tar.xz
+2020/01/13 | 235323 | macros/latex/contrib/l3kernel/l3news09.pdf
+2020/01/13 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2020/01/13 | 23068 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2020/01/13 | 22960 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2020/01/13 | 227512 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2020/01/13 | 22546427 | systems/texlive/tlnet/install-tl.zip
+2020/01/13 | 2226 | macros/latex-dev/required/tools/indentfirst.dtx
+2020/01/13 | 21817 | macros/latex/contrib/l3kernel/l3quark.dtx
+2020/01/13 | 218137 | graphics/svg/source/svg.dtx
+2020/01/13 | 21717442 | macros/latex-dev/base.zip
+2020/01/13 | 2153 | macros/latex/contrib/l3kernel/source3.tex
+2020/01/13 | 2150904 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2020/01/13 | 214152 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2020/01/13 | 212742 | macros/latex-dev/required/tools/trace.pdf
+2020/01/13 | 21165 | macros/latex/contrib/l3kernel/source3body.tex
+2020/01/13 | 2110761 | install/macros/latex/contrib/l3packages.tds.zip
+2020/01/13 | 2102 | macros/latex/contrib/l3packages/CHANGELOG.md
2020/01/13 | 2090 | language/japanese/zxjafont/README-ja.md
+2020/01/13 | 208 | macros/latex/contrib/ascmac/ascii36.tfm
+2020/01/13 | 2082028 | macros/latex/contrib/l3packages.zip
+2020/01/13 | 20738 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2020/01/13 | 204 | macros/latex/contrib/ascmac/ascii10.tfm
+2020/01/13 | 20463 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+2020/01/13 | 202429 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2020/01/13 | 199221 | macros/latex-dev/required/tools/dcolumn.pdf
+2020/01/13 | 199049 | macros/latex-dev/required/tools/enumerate.pdf
+2020/01/13 | 198079 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2020/01/13 | 19793 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2020/01/13 | 19693 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2020/01/13 | 19661 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2020/01/13 | 195265 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2020/01/13 | 195262 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2020/01/13 | 194998 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2020/01/13 | 1945836 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2020/01/13 | 193315 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2020/01/13 | 19309 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2020/01/13 | 19219 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2020/01/13 | 191979 | install/macros/latex/contrib/ascmac.tds.zip
+2020/01/13 | 1912 | macros/latex/contrib/l3experimental/l3draw.ins
+2020/01/13 | 1909 | macros/latex/contrib/l3kernel/interface3.tex
+2020/01/13 | 189848 | macros/latex-dev/required/tools/afterpage.pdf
+2020/01/13 | 187297 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2020/01/13 | 18703377 | systems/texlive/tlnet/install-tl-windows.exe
+2020/01/13 | 186295 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2020/01/13 | 18605 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2020/01/13 | 1852 | systems/texlive/tlnet/archive/circledsteps.r53382.tar.xz
+2020/01/13 | 185299 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2020/01/13 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2020/01/13 | 183432 | macros/latex-dev/required/tools/delarray.pdf
+2020/01/13 | 183380 | macros/latex/contrib/ascmac.zip
+2020/01/13 | 18295 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2020/01/13 | 182760 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2020/01/13 | 182427 | macros/latex-dev/required/tools/multicol.dtx
+2020/01/13 | 180048 | macros/latex-dev/required/tools/fileerr.pdf
+2020/01/13 | 179680 | macros/latex/contrib/l3packages/xparse.dtx
+2020/01/13 | 17934 | macros/latex/contrib/l3experimental/l3cctab.dtx
+2020/01/13 | 17918 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2020/01/13 | 17862 | macros/latex-dev/required/tools/xspace.dtx
+2020/01/13 | 17815 | macros/latex/contrib/l3experimental/l3benchmark.dtx
+2020/01/13 | 17764 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2020/01/13 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2020/01/13 | 17699 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2020/01/13 | 175678 | macros/latex-dev/required/tools/hhline.pdf
+2020/01/13 | 174241 | macros/latex/contrib/l3kernel/l3news11.pdf
+2020/01/13 | 173224 | systems/win32/miktex/tm/packages/ulem.tar.lzma
+2020/01/13 | 1720 | systems/texlive/tlnet/archive/dsserif.source.r53384.tar.xz
+2020/01/13 | 172025 | macros/latex/contrib/apa6/apa6.dtx
2020/01/13 | 1718 | language/japanese/zxjafont/README.md
+2020/01/13 | 169757 | macros/latex-dev/required/tools/shellesc.pdf
+2020/01/13 | 169203 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2020/01/13 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2020/01/13 | 167847 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2020/01/13 | 1675 | macros/latex/contrib/ascmac/Makefile
+2020/01/13 | 1666 | macros/latex-dev/required/tools/README.md
+2020/01/13 | 166015 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2020/01/13 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2020/01/13 | 1642 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2020/01/13 | 163785 | macros/latex-dev/required/tools/xr.pdf
+2020/01/13 | 1630 | macros/latex/contrib/l3experimental/xgalley.ins
2020/01/13 | 16186 | language/japanese/zxjafont/zxjafont.sty
+2020/01/13 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2020/01/13 | 16042 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2020/01/13 | 15984496 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2020/01/13 | 15898 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2020/01/13 | 158813 | macros/latex/contrib/ascmac/ascmac.pdf
+2020/01/13 | 15841 | fonts/firamath/firamath-specimen.tex
+2020/01/13 | 157948 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53374.tar.xz
+2020/01/13 | 1575 | macros/latex/contrib/l3experimental/xcoffins.ins
+2020/01/13 | 1571 | macros/latex/contrib/l3experimental/l3sys-shell.ins
+2020/01/13 | 1570 | macros/latex/contrib/l3experimental/l3str.ins
+2020/01/13 | 15708 | macros/latex/contrib/l3kernel/l3final.dtx
+2020/01/13 | 1567 | macros/latex/contrib/l3packages/xtemplate.ins
+2020/01/13 | 156511 | macros/latex-dev/required/tools/somedefs.pdf
+2020/01/13 | 1564 | macros/latex/contrib/l3experimental/l3benchmark.ins
+2020/01/13 | 1559 | macros/latex/contrib/l3experimental/l3graphics.ins
+2020/01/13 | 1559 | macros/latex/contrib/l3experimental/l3cctab.ins
+2020/01/13 | 155856 | macros/latex/contrib/fancyvrb.zip
+2020/01/13 | 1553 | macros/latex/contrib/ascmac/LICENSE
+2020/01/13 | 1547 | macros/latex/contrib/l3experimental/l3color.ins
+2020/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2020/01/13 | 1538470 | macros/latex/contrib/l3kernel/interface3.pdf
+2020/01/13 | 1536 | macros/latex/contrib/l3experimental/l3pdf.ins
+2020/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2020/01/13 | 152644 | fonts/firamath/FiraMath-Regular.otf
+2020/01/13 | 152413 | macros/latex/contrib/l3kernel/l3news08.pdf
+2020/01/13 | 152166 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2020/01/13 | 150776 | systems/win32/miktex/tm/packages/zxjafont.tar.lzma
+2020/01/13 | 150091 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2020/01/13 | 149148 | macros/latex/contrib/l3kernel/l3doc.dtx
+2020/01/13 | 147099 | macros/latex/contrib/l3kernel/l3news10.pdf
+2020/01/13 | 147096 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2020/01/13 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2020/01/13 | 146432 | systems/texlive/tlnet/archive/zxjafont.doc.r53380.tar.xz
+2020/01/13 | 1461 | graphics/svg/doc/LICENSE.md
+2020/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2020/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2020/01/13 | 144780 | macros/latex/contrib/l3kernel/l3news03.pdf
+2020/01/13 | 144779 | macros/latex-dev/required/tools/indentfirst.pdf
+2020/01/13 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
2020/01/13 | 142626 | language/japanese/zxjafont/zxjafont.pdf
+2020/01/13 | 1424 | macros/latex/contrib/hep-paper/hep-paper.ins
+2020/01/13 | 1422 | macros/latex/contrib/apa6/README
+2020/01/13 | 14139 | macros/latex/contrib/l3kernel/l3news12.tex
+2020/01/13 | 140796 | macros/latex/contrib/l3kernel/l3news06.pdf
+2020/01/13 | 14078 | macros/latex-dev/required/tools/afterpage.dtx
+2020/01/13 | 140776 | macros/latex/contrib/l3kernel/l3news02.pdf
+2020/01/13 | 14051 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2020/01/13 | 138025 | macros/latex-dev/required/tools/fontsmpl.pdf
+2020/01/13 | 13798 | macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
+2020/01/13 | 137170 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2020/01/13 | 1356 | macros/latex/contrib/l3experimental/l3draw-code.tex
+2020/01/13 | 135688 | macros/latex-dev/required/tools/rawfonts.pdf
+2020/01/13 | 133221 | macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+2020/01/13 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2020/01/13 | 1329052 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2020/01/13 | 13269 | macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
+2020/01/13 | 132279 | macros/latex/contrib/l3kernel/l3tl.dtx
+2020/01/13 | 1309 | macros/latex/contrib/fancyvrb/Changes
+2020/01/13 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2020/01/13 | 12979 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2020/01/13 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2020/01/13 | 12715 | macros/latex-dev/required/tools/dcolumn.dtx
+2020/01/13 | 127036 | macros/latex/contrib/l3kernel/l3basics.dtx
+2020/01/13 | 1267 | macros/latex/contrib/l3packages/xfrac.ins
+2020/01/13 | 126798 | macros/latex/contrib/l3kernel/l3file.dtx
+2020/01/13 | 123627 | macros/latex-dev/required/tools/array.dtx
+2020/01/13 | 1234 | macros/latex/contrib/l3packages/l3keys2e.ins
+2020/01/13 | 1223 | macros/latex/contrib/l3packages/xparse.ins
+2020/01/13 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2020/01/13 | 1197 | macros/latex/contrib/l3packages/xfp.ins
+2020/01/13 | 1195625 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2020/01/13 | 118976 | macros/latex/contrib/l3kernel/l3news07.pdf
+2020/01/13 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2020/01/13 | 11826 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2020/01/13 | 11795151 | install/macros/latex/contrib/l3kernel.tds.zip
+2020/01/13 | 11755 | macros/latex-dev/required/tools/array-2016-10-06.sty
+2020/01/13 | 116802 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2020/01/13 | 1160988 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2020/01/13 | 1160021 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2020/01/13 | 11579075 | macros/latex/contrib/l3kernel.zip
+2020/01/13 | 1150532 | graphics/svg.zip
+2020/01/13 | 113527 | macros/latex/contrib/l3kernel/l3news01.pdf
+2020/01/13 | 112995 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2020/01/13 | 112873 | macros/latex/contrib/l3kernel/l3names.dtx
+2020/01/13 | 1116 | macros/latex/contrib/l3experimental/l3pdf-code.tex
+2020/01/13 | 11156 | macros/latex/contrib/l3packages/l3keys2e.dtx
+2020/01/13 | 11154 | macros/latex-dev/required/tools/hhline.dtx
+2020/01/13 | 111237 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2020/01/13 | 109736 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2020/01/13 | 10937 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
2020/01/13 | 1091 | language/japanese/zxjafont/LICENSE
+2020/01/13 | 108823 | macros/latex/contrib/l3kernel/l3token.dtx
+2020/01/13 | 108761 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2020/01/13 | 1081090 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2020/01/13 | 1080016 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
2020/01/13 | 10797 | language/japanese/zxjafont/zxjafont.tex
+2020/01/13 | 10777 | macros/latex-dev/required/tools/fontsmpl.dtx
+2020/01/13 | 1074 | fonts/firamath/README.md
+2020/01/13 | 107379 | macros/latex/contrib/l3kernel/l3news09.tex
+2020/01/13 | 107119 | macros/latex/contrib/l3kernel/l3news04.pdf
+2020/01/13 | 1068588 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2020/01/13 | 106742 | macros/latex/contrib/l3kernel/l3expan.dtx
+2020/01/13 | 10650 | macros/latex-dev/required/tools/enumerate.dtx
+2020/01/13 | 105629 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2020/01/13 | 1054938 | systems/win32/miktex/tm/packages/nicematrix.tar.lzma
+2020/01/13 | 1052279 | systems/win32/miktex/tm/packages/hithesis.tar.lzma
+2020/01/13 | 105092 | macros/latex/contrib/l3kernel/l3news05.pdf
+2020/01/13 | 1042664 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2020/01/13 | 103606 | macros/latex-dev/required/tools/varioref.dtx
+2020/01/13 | 1028543 | graphics/svg/doc/svg.pdf
+2020/01/13 | 102381 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2020/01/13 | 10099 | macros/latex/contrib/ascmac/ascgrp.mf
+2020/01/13 | 1008 | macros/latex/contrib/hep-paper/README.md
+2020/01/13 | 100683 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2020/01/12 | 9882 | macros/latex-dev/base/manifest.txt
+2020/01/12 | 9814 | macros/latex-dev/base/ltnews21.tex
2020/01/12 | 9776 | systems/texlive/tlnet/archive/exframe.r53369.tar.xz
-2020/01/12 | 96209 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2020/01/12 | 9760 | macros/latex-dev/base/ltvers.dtx
2020/01/12 | 9609315 | macros/latex/contrib/acmart.zip
-2020/01/12 | 954075 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2020/01/12 | 94640 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2020/01/12 | 94240 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2020/01/12 | 93475 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2020/01/12 | 932883 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2020/01/12 | 92936 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2020/01/12 | 91982 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2020/01/12 | 91337 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2020/01/12 | 91156 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2020/01/12 | 87276 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2020/01/12 | 87218 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2020/01/12 | 86582 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma
-2020/01/12 | 863199 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2020/01/12 | 8485 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2020/01/12 | 84531 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2020/01/12 | 95977 | macros/latex-dev/base/ltclass.dtx
+2020/01/12 | 9562 | macros/latex-dev/base/ltcntrl.dtx
+2020/01/12 | 9401 | macros/latex-dev/base/syntonly.dtx
+2020/01/12 | 9374 | macros/latex-dev/base/preload.dtx
+2020/01/12 | 91177533 | systems/win32/w32tex/TLW64/tl-win64.zip
+2020/01/12 | 911022 | macros/latex-dev/base/ltnews.pdf
+2020/01/12 | 9081 | macros/latex-dev/base/lppl-1-0.txt
+2020/01/12 | 89738 | macros/latex-dev/base/slides.dtx
+2020/01/12 | 89423 | macros/latex-dev/base/utf8ienc.dtx
+2020/01/12 | 8900 | macros/latex-dev/base/ltnews17.tex
+2020/01/12 | 8806 | macros/latex-dev/base/format.ins
+2020/01/12 | 87732 | macros/latex-dev/base/lttextcomp.dtx
+2020/01/12 | 8737 | macros/latex-dev/base/ltthm.dtx
+2020/01/12 | 8632 | macros/latex-dev/base/oldlfont.dtx
+2020/01/12 | 8541 | macros/latex-dev/base/texpert.txt
2020/01/12 | 8435 | macros/latex/contrib/circledsteps/circledsteps-manual.tex
2020/01/12 | 83344 | systems/texlive/tlnet/archive/texlive-scripts.r53367.tar.xz
-2020/01/12 | 80507 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2020/01/12 | 79845 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2020/01/12 | 77962 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma
-2020/01/12 | 77935 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2020/01/12 | 77320 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2020/01/12 | 7506 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2020/01/12 | 73636 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2020/01/12 | 72600 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2020/01/12 | 72573 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2020/01/12 | 71699 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2020/01/12 | 70250 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2020/01/12 | 787376 | systems/win32/w32tex/win64/dvipsk-w64.tar.xz
+2020/01/12 | 76499 | macros/latex-dev/base/ltfssbas.dtx
+2020/01/12 | 7578 | macros/latex-dev/base/ltxguide.cls
+2020/01/12 | 73400 | macros/latex-dev/base/fntguide.tex
+2020/01/12 | 7326 | macros/latex-dev/base/ltnews20.tex
+2020/01/12 | 7247 | macros/latex-dev/base/sample2e.tex
+2020/01/12 | 7227 | macros/latex-dev/base/exscale.dtx
+2020/01/12 | 7148 | macros/latex-dev/base/ltnews.tex
2020/01/12 | 7000 | systems/texlive/tlnet/archive/tasks.r53371.tar.xz
-2020/01/12 | 69609 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2020/01/12 | 69213 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2020/01/12 | 68675 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2020/01/12 | 67258 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2020/01/12 | 67253 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2020/01/12 | 652 | systems/win32/miktex/tm/packages/next/pr.ini
-2020/01/12 | 65025 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2020/01/12 | 63291 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2020/01/12 | 63275 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2020/01/12 | 63117 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2020/01/12 | 62910 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2020/01/12 | 617304 | systems/texlive/tlnet/archive/acro.doc.r53368.tar.xz
-2020/01/12 | 61656 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2020/01/12 | 61568 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2020/01/12 | 61219 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2020/01/12 | 60330 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2020/01/12 | 59458 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64-2.9.tar.lzma
-2020/01/12 | 58796 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2020/01/12 | 575921 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2020/01/12 | 57221 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2020/01/12 | 56622 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2020/01/12 | 56423 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2020/01/12 | 563305 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2020/01/12 | 560770 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2020/01/12 | 54741 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2020/01/12 | 544015 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2020/01/12 | 53999 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2020/01/12 | 538878 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2020/01/12 | 53448 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-2.9.tar.lzma
-2020/01/12 | 533457 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2020/01/12 | 52143 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2020/01/12 | 51773 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2020/01/12 | 515136 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2020/01/12 | 515085 | systems/win32/miktex/tm/packages/files.csv.lzma
+2020/01/12 | 69216 | macros/latex-dev/base/clsguide.tex
+2020/01/12 | 6893 | macros/latex-dev/base/ltnews13.tex
+2020/01/12 | 67931 | macros/latex-dev/base/usrguide.tex
+2020/01/12 | 6784 | macros/latex-dev/base/slides.ins
+2020/01/12 | 67330 | macros/latex-dev/base/ltfsstrc.dtx
+2020/01/12 | 6719 | macros/latex-dev/base/latexsym.dtx
+2020/01/12 | 6654 | macros/latex-dev/base/alltt.dtx
+2020/01/12 | 6363 | macros/latex-dev/base/newlfont.dtx
+2020/01/12 | 629843 | macros/latex-dev/base/doc.pdf
+2020/01/12 | 6292 | macros/latex-dev/base/ltnews14.tex
+2020/01/12 | 62037 | macros/latex-dev/base/ltfssdcl.dtx
+2020/01/12 | 61549 | macros/latex-dev/base/letter.dtx
+2020/01/12 | 59897 | macros/latex-dev/base/ltluatex.dtx
+2020/01/12 | 58866 | macros/latex-dev/base/fontdef.dtx
+2020/01/12 | 5865 | macros/latex-dev/base/ltidxglo.dtx
+2020/01/12 | 5859 | macros/latex-dev/base/ltnews15.tex
+2020/01/12 | 5854 | macros/latex-dev/base/ltpar.dtx
+2020/01/12 | 5808 | macros/latex-dev/base/ltnews16.tex
+2020/01/12 | 5733 | macros/latex-dev/base/inputenc.ins
+2020/01/12 | 571380 | systems/win32/w32tex/ChangeLog
+2020/01/12 | 5710 | macros/latex-dev/base/ltnews08.tex
+2020/01/12 | 5682 | macros/latex-dev/base/ltnews10.tex
+2020/01/12 | 5621 | macros/latex-dev/base/ltnews05.tex
+2020/01/12 | 55754 | macros/latex-dev/base/ltdefns.dtx
+2020/01/12 | 5544 | macros/latex-dev/base/ltnews11.tex
+2020/01/12 | 5521 | macros/latex-dev/base/ltnews04.tex
+2020/01/12 | 5515 | macros/latex-dev/base/graphpap.dtx
+2020/01/12 | 5513 | macros/latex-dev/base/ltnews27.tex
+2020/01/12 | 5475 | macros/latex-dev/base/ltnews25.tex
+2020/01/12 | 5436 | macros/latex-dev/base/ltnews07.tex
+2020/01/12 | 5430 | macros/latex-dev/base/ltnews12.tex
+2020/01/12 | 5405 | macros/latex-dev/base/ltnews06.tex
+2020/01/12 | 5368 | macros/latex-dev/base/latexrelease.ins
+2020/01/12 | 5313 | macros/latex-dev/base/ltnews09.tex
+2020/01/12 | 5308 | macros/latex-dev/base/ltnews02.tex
+2020/01/12 | 5299 | macros/latex-dev/base/cmextra.ins
+2020/01/12 | 52927 | macros/latex-dev/base/encguide.tex
+2020/01/12 | 5290 | macros/latex-dev/base/ltnews01.tex
+2020/01/12 | 52630 | macros/latex-dev/base/lb2.err
+2020/01/12 | 5213 | macros/latex-dev/base/ltnews03.tex
+2020/01/12 | 521068 | macros/latex-dev/base/classes.pdf
+2020/01/12 | 51719 | macros/latex-dev/base/ltfssini.dtx
2020/01/12 | 5110 | macros/latex/contrib/circledsteps/circledsteps.sty
-2020/01/12 | 50827 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2020/01/12 | 50791 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2020/01/12 | 50579 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2020/01/12 | 498555 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2020/01/12 | 49770 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2020/01/12 | 49264 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2020/01/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2020/01/12 | 47979 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2020/01/12 | 5065 | macros/latex-dev/base/latexsym.ins
+2020/01/12 | 50170 | macros/latex-dev/base/ltpictur.dtx
+2020/01/12 | 49835 | macros/latex-dev/base/ltfloat.dtx
+2020/01/12 | 4952 | macros/latex-dev/base/lthyphen.dtx
+2020/01/12 | 490969 | macros/latex-dev/base/ltnews30.pdf
+2020/01/12 | 47764 | macros/latex-dev/base/ltplain.dtx
+2020/01/12 | 4762 | macros/latex-dev/base/ltlength.dtx
+2020/01/12 | 469409 | macros/latex-dev/base/docstrip.pdf
+2020/01/12 | 46676 | macros/latex-dev/base/ltfssaxes.dtx
2020/01/12 | 4639575 | support/epspdf-setup/epspdf.0.6.5.exe
+2020/01/12 | 46389 | macros/latex-dev/base/lttab.dtx
+2020/01/12 | 4610464 | systems/win32/w32tex/dvipsk-w32.tar.xz
2020/01/12 | 4610450 | support/epspdf-setup.zip
-2020/01/12 | 45811 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2020/01/12 | 45742 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2020/01/12 | 457346 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2020/01/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2020/01/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
-2020/01/12 | 45591 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2020/01/12 | 45468 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
2020/01/12 | 453264 | systems/texlive/tlnet/archive/tasks.doc.r53371.tar.xz
-2020/01/12 | 449940 | systems/win32/miktex/tm/packages/next/miktex-doc-2.9.tar.lzma
-2020/01/12 | 44982 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2020/01/12 | 43440 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2020/01/12 | 42944 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2020/01/12 | 42575 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2020/01/12 | 41881 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2020/01/12 | 41864 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2020/01/12 | 44844 | macros/latex-dev/base/ltmiscen.dtx
+2020/01/12 | 4406 | macros/latex-dev/base/ec.ins
+2020/01/12 | 43662 | macros/latex-dev/base/cmfonts.fdd
+2020/01/12 | 4341 | macros/latex-dev/base/cmfonts.ins
+2020/01/12 | 432667 | macros/latex-dev/base/ltnews29.pdf
+2020/01/12 | 4304 | macros/latex-dev/base/ltalloc.dtx
+2020/01/12 | 4272 | macros/latex-dev/base/newdc.ins
+2020/01/12 | 42717 | macros/latex-dev/base/changes.old.txt
+2020/01/12 | 424281 | macros/latex-dev/base/ltnews31.pdf
+2020/01/12 | 4237 | macros/latex-dev/base/docstrip.ins
+2020/01/12 | 4236 | macros/latex-dev/base/latex209.ins
+2020/01/12 | 4171 | macros/latex-dev/base/ltnews19.tex
2020/01/12 | 415731 | macros/latex/contrib/circledsteps.zip
-2020/01/12 | 40991 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2020/01/12 | 40739 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2020/01/12 | 4104 | macros/latex-dev/base/classes.ins
+2020/01/12 | 4103 | macros/latex-dev/base/lablst.tex
+2020/01/12 | 40792 | macros/latex-dev/base/ltspace.dtx
+2020/01/12 | 40593 | macros/latex-dev/base/ltfinal.dtx
2020/01/12 | 40496 | systems/texlive/tlnet/archive/exframe.source.r53369.tar.xz
2020/01/12 | 404880 | macros/latex/contrib/circledsteps/circledsteps-manual.pdf
-2020/01/12 | 39847 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2020/01/12 | 3954135 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2020/01/12 | 40203 | macros/latex-dev/base/ltboxes.dtx
+2020/01/12 | 398281 | macros/latex-dev/base/usrguide.pdf
+2020/01/12 | 3980 | macros/latex-dev/base/olddc.ins
2020/01/12 | 39520 | systems/texlive/tlnet/archive/simplebnf.doc.r53370.tar.xz
-2020/01/12 | 392 | systems/texlive/tlnet/archive/texlive-docindex.r53367.tar.xz
-2020/01/12 | 39221 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2020/01/12 | 391462 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2020/01/12 | 38864 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2020/01/12 | 387515 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-x64-2.9.tar.lzma
+2020/01/12 | 38533 | macros/latex-dev/base/latex209.dtx
2020/01/12 | 382856 | systems/texlive/tlnet/archive/exframe.doc.r53369.tar.xz
-2020/01/12 | 36632 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2020/01/12 | 364 | systems/win32/miktex/tm/packages/pr.ini
-2020/01/12 | 36380 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2020/01/12 | 356322 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2020/01/12 | 354501 | systems/win32/miktex/tm/packages/next/miktex-omega-bin-2.9.tar.lzma
-2020/01/12 | 35216 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2020/01/12 | 34846 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2020/01/12 | 34836 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2020/01/12 | 33549 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2020/01/12 | 33400 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2020/01/12 | 328876 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2020/01/12 | 32348 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2020/01/12 | 32268 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2020/01/12 | 321502 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2020/01/12 | 31295 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2020/01/12 | 31156 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2020/01/12 | 30990 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2020/01/12 | 308661 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2020/01/12 | 30242 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2020/01/12 | 29690 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2020/01/12 | 29296 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2020/01/12 | 29240 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2020/01/12 | 29144 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2020/01/12 | 28711 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2020/01/12 | 281673 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2020/01/12 | 281285 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2020/01/12 | 27820 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2020/01/12 | 276601 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2020/01/12 | 271814 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2020/01/12 | 26978 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2020/01/12 | 26801 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2020/01/12 | 26663 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2020/01/12 | 26510 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2020/01/12 | 26177 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2020/01/12 | 2579407 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2020/01/12 | 25330 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2020/01/12 | 247501 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2020/01/12 | 246892 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2020/01/12 | 246458 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2020/01/12 | 2459485 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2020/01/12 | 24073 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2020/01/12 | 237541 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2020/01/12 | 23345 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2020/01/12 | 23092 | systems/texlive/tlnet/archive/acro.r53368.tar.xz
-2020/01/12 | 22959 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2020/01/12 | 22546427 | systems/texlive/tlnet/install-tl.zip
-2020/01/12 | 2153084 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
-2020/01/12 | 214153 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2020/01/12 | 20739 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2020/01/12 | 202430 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2020/01/12 | 198080 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2020/01/12 | 19792 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2020/01/12 | 38132 | macros/latex-dev/base/ltfiles.dtx
+2020/01/12 | 3798 | macros/latex-dev/base/tulm.ins
+2020/01/12 | 3755 | macros/latex-dev/base/README.md
+2020/01/12 | 3731 | macros/latex-dev/base/ltlogos.dtx
+2020/01/12 | 372505 | macros/latex-dev/base/clsguide.pdf
+2020/01/12 | 368086 | macros/latex-dev/base/ltnews28.pdf
+2020/01/12 | 362703 | macros/latex-dev/base/ltnews26.pdf
+2020/01/12 | 360943 | macros/latex-dev/base/fntguide.pdf
+2020/01/12 | 36085 | macros/latex-dev/base/ltlists.dtx
+2020/01/12 | 36003 | macros/latex-dev/base/ltnews18.pdf
+2020/01/12 | 352152 | macros/latex-dev/base/slides.pdf
+2020/01/12 | 35167 | macros/latex-dev/base/ltdirchk.dtx
+2020/01/12 | 34845 | macros/latex-dev/base/ltmath.dtx
+2020/01/12 | 34809 | macros/latex-dev/base/latexchanges.tex
+2020/01/12 | 3450 | macros/latex-dev/base/makeindx.ins
+2020/01/12 | 3417 | macros/latex-dev/base/proc.ins
+2020/01/12 | 3391 | macros/latex-dev/base/letter.ins
+2020/01/12 | 3390 | macros/latex-dev/base/ltoutenc.ins
+2020/01/12 | 3354 | macros/latex-dev/base/exscale.ins
+2020/01/12 | 330882 | macros/latex-dev/base/utf8ienc.pdf
+2020/01/12 | 3293 | macros/latex-dev/base/bugs.txt
+2020/01/12 | 32179 | macros/latex-dev/base/latexrelease.dtx
+2020/01/12 | 3194 | macros/latex-dev/base/unpack.ins
+2020/01/12 | 31903 | macros/latex-dev/base/ltsect.dtx
+2020/01/12 | 3126387 | macros/latex-dev/base/source2e.pdf
+2020/01/12 | 310709 | macros/latex-dev/base/changes.txt
+2020/01/12 | 305288 | macros/latex-dev/base/letter.pdf
+2020/01/12 | 302711 | macros/latex-dev/base/ltnews22.pdf
+2020/01/12 | 302606 | macros/latex-dev/base/ltluatex.pdf
+2020/01/12 | 294824 | macros/latex-dev/base/inputenc.pdf
+2020/01/12 | 29199 | macros/latex-dev/base/ltfntcmd.dtx
+2020/01/12 | 2913 | macros/latex-dev/base/syntonly.ins
+2020/01/12 | 2909 | macros/latex-dev/base/nfssfont.ins
+2020/01/12 | 2908 | macros/latex-dev/base/graphpap.ins
+2020/01/12 | 2908 | macros/latex-dev/base/fix-cm.ins
+2020/01/12 | 2906 | macros/latex-dev/base/alltt.ins
+2020/01/12 | 2904 | macros/latex-dev/base/ifthen.ins
+2020/01/12 | 283173 | macros/latex-dev/base/ltnews20.pdf
+2020/01/12 | 27627 | macros/latex-dev/base/ltnews31.tex
+2020/01/12 | 274326 | macros/latex-dev/base/ltnews23.pdf
+2020/01/12 | 2738 | macros/latex-dev/base/tex2.txt
+2020/01/12 | 2733 | macros/latex-dev/base/ltpageno.dtx
+2020/01/12 | 2726 | macros/latex-dev/base/idx.tex
+2020/01/12 | 27139 | macros/latex-dev/base/ltxcheck.tex
+2020/01/12 | 264453 | macros/latex-dev/base/cmfonts.pdf
+2020/01/12 | 262051 | macros/latex-dev/base/fix-cm.pdf
+2020/01/12 | 252518 | macros/latex-dev/base/ltnews24.pdf
+2020/01/12 | 2469 | macros/latex-dev/base/ltexpl.dtx
+2020/01/12 | 246174 | macros/latex-dev/base/latexrelease.pdf
+2020/01/12 | 24024 | macros/latex-dev/base/lterror.dtx
+2020/01/12 | 239755 | macros/latex-dev/base/ltnews27.pdf
+2020/01/12 | 23793 | macros/latex-dev/base/ltnews30.tex
+2020/01/12 | 23521 | macros/latex-dev/base/fix-cm.dtx
+2020/01/12 | 235068 | macros/latex-dev/base/ltnews19.pdf
+2020/01/12 | 233341 | macros/latex-dev/base/ltnews21.pdf
+2020/01/12 | 227574 | macros/latex-dev/base/latexchanges.pdf
+2020/01/12 | 22712 | macros/latex-dev/base/ltcounts.dtx
+2020/01/12 | 22480 | macros/latex-dev/base/cfgguide.tex
+2020/01/12 | 22124063 | install/macros/latex-dev/latex-base-dev.tds.zip
+2020/01/12 | 220384 | macros/latex-dev/base/modguide.pdf
+2020/01/12 | 220187 | macros/latex-dev/base/cfgguide.pdf
+2020/01/12 | 216976 | macros/latex-dev/base/cyrguide.pdf
+2020/01/12 | 216899 | macros/latex-dev/base/proc.pdf
+2020/01/12 | 215600 | macros/latex-dev/base/ltxdoc.pdf
+2020/01/12 | 214708 | macros/latex-dev/base/slifonts.pdf
+2020/01/12 | 205205 | macros/latex-dev/base/ifthen.pdf
+2020/01/12 | 20485 | macros/latex-dev/base/lgc2.err
+2020/01/12 | 203521 | macros/latex-dev/base/doc.dtx
+2020/01/12 | 20270 | macros/latex-dev/base/ltnews.cls
+2020/01/12 | 202429 | macros/latex-dev/base/nfssfont.pdf
2020/01/12 | 1976 | systems/texlive/tlnet/archive/simplebnf.r53370.tar.xz
-2020/01/12 | 195227 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2020/01/12 | 195201 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2020/01/12 | 194997 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2020/01/12 | 1945836 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2020/01/12 | 193315 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2020/01/12 | 196325 | macros/latex-dev/base/ltnews25.pdf
+2020/01/12 | 195880 | macros/latex-dev/base/exscale.pdf
+2020/01/12 | 1948 | macros/latex-dev/base/minimal.cls
+2020/01/12 | 192293 | macros/latex-dev/base/latexsym.pdf
+2020/01/12 | 191533 | macros/latex-dev/base/ltx3info.pdf
+2020/01/12 | 19107 | macros/latex-dev/base/lppl.txt
2020/01/12 | 19106 | macros/latex/contrib/circledsteps/lppl-1-3c_license.txt
-2020/01/12 | 187298 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2020/01/12 | 18703305 | systems/texlive/tlnet/install-tl-windows.exe
-2020/01/12 | 185301 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2020/01/12 | 184160 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2020/01/12 | 182759 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2020/01/12 | 17763 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2020/01/12 | 177583 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2020/01/12 | 17698 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2020/01/12 | 169202 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2020/01/12 | 1679153 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2020/01/12 | 167847 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2020/01/12 | 166014 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2020/01/12 | 165965 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2020/01/12 | 160559 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2020/01/12 | 16044 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2020/01/12 | 15984490 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2020/01/12 | 15897 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2020/01/12 | 157808 | systems/texlive/tlnet/archive/texlive-docindex.doc.r53367.tar.xz
-2020/01/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2020/01/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2020/01/12 | 152165 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2020/01/12 | 19022 | macros/latex-dev/base/ltnews29.tex
+2020/01/12 | 18558 | macros/latex-dev/base/ltxdoc.dtx
+2020/01/12 | 18407 | macros/latex-dev/base/nfssfont.dtx
+2020/01/12 | 18350 | macros/latex-dev/base/ltx3info.tex
+2020/01/12 | 18305 | macros/latex-dev/base/ifthen.dtx
+2020/01/12 | 181687 | macros/latex-dev/base/syntonly.pdf
+2020/01/12 | 175370 | macros/latex-dev/base/ltoutput.dtx
+2020/01/12 | 17520 | macros/latex-dev/base/cyrguide.tex
+2020/01/12 | 173077 | macros/latex-dev/base/alltt.pdf
+2020/01/12 | 172455 | macros/latex-dev/base/tlc2.err
+2020/01/12 | 1700 | macros/latex-dev/base/small2e.tex
+2020/01/12 | 164949 | macros/latex-dev/base/tlc2.pdf
+2020/01/12 | 163682 | macros/latex-dev/base/docstrip.dtx
+2020/01/12 | 16262 | macros/latex-dev/base/modguide.tex
+2020/01/12 | 161066 | macros/latex-dev/base/ltnews13.pdf
+2020/01/12 | 160673 | macros/latex-dev/base/makeindx.pdf
+2020/01/12 | 15821 | macros/latex-dev/base/slifonts.fdd
+2020/01/12 | 157174 | macros/latex-dev/base/ltnews05.pdf
+2020/01/12 | 156534 | macros/latex-dev/base/tulm.pdf
+2020/01/12 | 156280 | macros/latex-dev/base/graphpap.pdf
+2020/01/12 | 155570 | macros/latex-dev/base/classes.dtx
+2020/01/12 | 1530505 | macros/latex-dev/base/encguide.pdf
2020/01/12 | 1519 | macros/latex/contrib/circledsteps/ctikzexample.tex
-2020/01/12 | 150088 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2020/01/12 | 151354 | macros/latex-dev/base/manual.pdf
+2020/01/12 | 150920 | macros/latex-dev/base/ltnews14.pdf
2020/01/12 | 150062 | language/japanese/zxjafont.zip
-2020/01/12 | 147097 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2020/01/12 | 146765 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2020/01/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2020/01/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2020/01/12 | 14051 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2020/01/12 | 150020 | macros/latex-dev/base/ltnews01.pdf
+2020/01/12 | 149740 | macros/latex-dev/base/ltnews17.pdf
+2020/01/12 | 14908 | macros/latex-dev/base/ltnews28.tex
+2020/01/12 | 14838 | macros/latex-dev/base/ltxref.dtx
+2020/01/12 | 147941 | macros/latex-dev/base/ltnews10.pdf
+2020/01/12 | 14689 | macros/latex-dev/base/source2e.tex
+2020/01/12 | 144471 | macros/latex-dev/base/ltnews08.pdf
+2020/01/12 | 14440 | macros/latex-dev/base/ltbibl.dtx
+2020/01/12 | 14440 | macros/latex-dev/base/lppl-1-2.txt
+2020/01/12 | 14357 | macros/latex-dev/base/lppl-1-1.txt
+2020/01/12 | 142081 | macros/latex-dev/base/ltoutenc.dtx
+2020/01/12 | 1384 | macros/latex-dev/base/legal.txt
+2020/01/12 | 138223 | macros/latex-dev/base/lb2.pdf
2020/01/12 | 1380 | systems/texlive/tlnet/archive/collection-mathscience.r53370.tar.xz
-2020/01/12 | 137172 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2020/01/12 | 133205 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2020/01/12 | 1329053 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2020/01/12 | 13062 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2020/01/12 | 137918 | macros/latex-dev/base/ltnews12.pdf
+2020/01/12 | 136153 | macros/latex-dev/base/webcomp.pdf
+2020/01/12 | 1353 | macros/latex-dev/base/ltnews18.tex
+2020/01/12 | 134750 | macros/latex-dev/base/ltnews02.pdf
+2020/01/12 | 134730 | macros/latex-dev/base/ltnews03.pdf
+2020/01/12 | 133132 | macros/latex-dev/base/ltnews06.pdf
+2020/01/12 | 13305 | macros/latex-dev/base/proc.dtx
+2020/01/12 | 130688 | macros/latex-dev/base/ltnews16.pdf
2020/01/12 | 130232 | systems/texlive/tlnet/archive/texlive-scripts.doc.r53367.tar.xz
-2020/01/12 | 127172 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2020/01/12 | 1203298 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2020/01/12 | 12967 | macros/latex-dev/base/manual.err
+2020/01/12 | 128768 | macros/latex-dev/base/ltnews04.pdf
+2020/01/12 | 12537 | macros/latex-dev/base/testpage.tex
+2020/01/12 | 124028 | macros/latex-dev/base/ltnews07.pdf
+2020/01/12 | 12227 | macros/latex-dev/base/ltnews24.tex
+2020/01/12 | 122088 | macros/latex-dev/base/ltnews15.pdf
+2020/01/12 | 12130 | macros/latex-dev/base/tulm.fdd
+2020/01/12 | 120208 | macros/latex-dev/base/ltnews09.pdf
2020/01/12 | 1196 | macros/latex/contrib/circledsteps/README.md
-2020/01/12 | 1195622 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2020/01/12 | 116801 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2020/01/12 | 1160501 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2020/01/12 | 1160233 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2020/01/12 | 112993 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2020/01/12 | 111236 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2020/01/12 | 108761 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2020/01/12 | 1080838 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2020/01/12 | 1080706 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2020/01/12 | 1068591 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2020/01/12 | 1042663 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2020/01/12 | 102382 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2020/01/12 | 100682 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2020/01/12 | 11451 | macros/latex-dev/base/ltpage.dtx
+2020/01/12 | 107001 | macros/latex-dev/base/inputenc.dtx
+2020/01/12 | 10699 | macros/latex-dev/base/ltnews26.tex
+2020/01/12 | 10692 | macros/latex-dev/base/ltnews23.tex
+2020/01/12 | 10673 | macros/latex-dev/base/ltnews22.tex
+2020/01/12 | 10606 | macros/latex-dev/base/makeindx.dtx
+2020/01/12 | 104942 | macros/latex-dev/base/ltnews11.pdf
+2020/01/12 | 10376 | macros/latex-dev/base/ltfsscmp.dtx
+2020/01/12 | 101344 | macros/latex-dev/base/lgc2.pdf
+2020/01/12 | 10061 | macros/latex-dev/base/webcomp.err
2020/01/11 | 998468 | systems/texlive/tlnet/archive/nicematrix.doc.r53363.tar.xz
2020/01/11 | 996956 | macros/latex/contrib/acmart/samples/sample-sigconf.pdf
2020/01/11 | 979836 | systems/texlive/tlnet/archive/hithesis.doc.r53362.tar.xz
@@ -229,6 +798,7 @@
2020/01/11 | 86622 | macros/latex/contrib/acro/acro-manual.tex
2020/01/11 | 84022 | macros/latex/contrib/acmart/ACM-Reference-Format.bst
2020/01/11 | 834371 | macros/latex/contrib/acmart/acmart.pdf
+2020/01/11 | 8244584 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz
2020/01/11 | 6946024 | install/fonts/newtx.tds.zip
2020/01/11 | 69418 | fonts/newtx/doc/newtxdoc.tex
2020/01/11 | 6884136 | fonts/newtx.zip
@@ -253,10 +823,13 @@
2020/01/11 | 420591 | macros/latex/contrib/exframe.zip
2020/01/11 | 41227 | macros/latex/contrib/simplebnf.zip
2020/01/11 | 405658 | macros/latex/contrib/acmart/acmguide.pdf
+2020/01/11 | 3929416 | systems/win32/w32tex/luajittex-exp-w32.tar.xz
2020/01/11 | 390818 | macros/latex/contrib/exframe/exframe.pdf
2020/01/11 | 3857 | macros/latex/contrib/simplebnf/simplebnf.sty
+2020/01/11 | 3508608 | systems/win32/w32tex/win64/luajittex-exp-w64.tar.xz
2020/01/11 | 33499 | fonts/newtx/README
2020/01/11 | 3251 | macros/latex/contrib/acro/example_two.tex
+2020/01/11 | 3124068 | systems/win32/w32tex/win64/luatex-exp-w64.tar.xz
2020/01/11 | 29576 | macros/latex/contrib/tasks/tasks.sty
2020/01/11 | 29068 | systems/texlive/tlnet/archive/tocloft.source.r53364.tar.xz
2020/01/11 | 25980 | systems/texlive/tlnet/archive/hithesis.r53362.tar.xz
@@ -266,6 +839,7 @@
2020/01/11 | 1969 | macros/latex/contrib/acro/example_one.tex
2020/01/11 | 18873 | macros/latex/contrib/tasks/tasks_en.tex
2020/01/11 | 166256 | systems/texlive/tlnet/archive/ulem.doc.r53365.tar.xz
+2020/01/11 | 15915704 | systems/win32/w32tex/luatex-exp-w32.tar.xz
2020/01/11 | 15882 | macros/latex/contrib/acro/acro.history
2020/01/11 | 1367 | macros/latex/contrib/acro/README
2020/01/11 | 133812 | macros/latex/contrib/acro/acro.sty
@@ -282,13 +856,11 @@
2020/01/11 | 1000733 | macros/latex/contrib/acmart/samples/sample-authordraft.pdf
2020/01/10 | 83328 | systems/texlive/tlnet/archive/fontspec.source.r53357.tar.xz
2020/01/10 | 831 | macros/latex/contrib/hithesis/back/conclusion.tex
-2020/01/10 | 8249396 | systems/win32/w32tex/newtxpx-boondoxfonts.tar.xz
2020/01/10 | 7044 | macros/latex/contrib/hithesis/main.tex
2020/01/10 | 699309 | macros/latex/contrib/nicematrix/nicematrix.pdf
2020/01/10 | 695 | macros/latex/contrib/hithesis/back/resume.tex
2020/01/10 | 610073 | macros/latex/contrib/hithesis/hithesis.pdf
2020/01/10 | 571177 | systems/win32/miktex/tm/packages/aeb-mlink.tar.lzma
-2020/01/10 | 570832 | systems/win32/w32tex/ChangeLog
2020/01/10 | 546 | macros/latex/contrib/ulem/README
2020/01/10 | 526360 | macros/latex/contrib/tocloft.zip
2020/01/10 | 503876 | macros/latex/contrib/tocloft/tocloft.pdf
@@ -296,7 +868,6 @@
2020/01/10 | 444904 | systems/texlive/tlnet/archive/newpx.doc.r53355.tar.xz
2020/01/10 | 44019536 | systems/win32/w32tex/web2c-w32.tar.xz
2020/01/10 | 4395 | macros/latex/contrib/tocloft/README
-2020/01/10 | 415320 | systems/texlive/tlnet/archive/circledsteps.doc.r53356.tar.xz
2020/01/10 | 3985 | macros/latex/contrib/hithesis/hithesis.ins
2020/01/10 | 3971 | macros/latex/contrib/hithesis/front/cover.tex
2020/01/10 | 388167056 | systems/win32/w32tex/ltxpkgdocs.tar.xz
@@ -321,7 +892,6 @@
2020/01/10 | 1943476 | systems/win32/w32tex/win64/context-w64.tar.xz
2020/01/10 | 1921 | macros/latex/contrib/hithesis/latexmkrc
2020/01/10 | 1865 | macros/latex/contrib/hithesis/back/publications.tex
-2020/01/10 | 1768 | systems/texlive/tlnet/archive/circledsteps.r53356.tar.xz
2020/01/10 | 1730 | macros/latex/contrib/hithesis/reference.bib
2020/01/10 | 171494 | macros/latex/contrib/ulem.zip
2020/01/10 | 1702116 | systems/texlive/tlnet/archive/newpx.r53355.tar.xz
@@ -369,7 +939,6 @@
2020/01/09 | 457167 | graphics/pstricks/contrib/pst-eucl/tex/pst-eucl.tex
2020/01/09 | 44611 | macros/latex/contrib/fontspec/fontspec-doc-opentype.tex
2020/01/09 | 426 | graphics/pstricks/contrib/pst-eucl/README
-2020/01/09 | 419043 | systems/win32/miktex/tm/packages/circledsteps.tar.lzma
2020/01/09 | 4071 | macros/latex/contrib/fontspec/fontspec-doc-luatex.tex
2020/01/09 | 4037 | macros/latex/contrib/fontspec/fontspec-code-fontload.dtx
2020/01/09 | 3968 | macros/latex/contrib/fontspec/fontspec-code-graphite.dtx
@@ -1397,38 +1966,3 @@
2020/01/07 | 1047 | macros/latex/contrib/biblatex-contrib/biblatex-manuscripts-philology/manuscripts-noautoshorthand.bbx
2020/01/07 | 102344 | support/pdfxup.zip
2020/01/07 | 100109 | macros/latex/contrib/biblatex-contrib/biblatex-manuscripts-philology/documentation/biblatex-manuscripts-philology.pdf
-2020/01/06 | 9312 | systems/texlive/tlnet/archive/curve2e.r53331.tar.xz
-2020/01/06 | 9133592 | install/fonts/cormorantgaramond.tds.zip
-2020/01/06 | 91174748 | systems/win32/w32tex/TLW64/tl-win64.zip
-2020/01/06 | 9047840 | fonts/cormorantgaramond.zip
-2020/01/06 | 89898 | support/pdfxup/pdfxup.pdf
-2020/01/06 | 898176 | systems/texlive/tlnet/archive/tex4ht.r53327.tar.xz
-2020/01/06 | 8613 | info/impatient/errata.future
-2020/01/06 | 812 | support/pdfxup/RELEASES
-2020/01/06 | 7621 | fonts/cormorantgaramond/latex/CormorantGaramond.sty
-2020/01/06 | 7476 | systems/texlive/tlnet/archive/thesis-ekf.source.r53332.tar.xz
-2020/01/06 | 708944 | systems/texlive/tlnet/archive/curve2e.doc.r53331.tar.xz
-2020/01/06 | 61192 | systems/texlive/tlnet/archive/tex4ht.doc.r53327.tar.xz
-2020/01/06 | 59236 | systems/texlive/tlnet/archive/thesis-ekf.r53332.tar.xz
-2020/01/06 | 52436 | systems/texlive/tlnet/archive/curve2e.source.r53331.tar.xz
-2020/01/06 | 48441 | systems/texlive/tlnet/tlpkg/installer/config.guess
-2020/01/06 | 4710 | support/pdfxup/pdfxup.1
-2020/01/06 | 464356 | systems/texlive/tlnet/archive/embrac.doc.r53334.tar.xz
-2020/01/06 | 39172 | support/pdfxup/pdfxup
-2020/01/06 | 3780 | systems/texlive/tlnet/archive/embrac.r53334.tar.xz
-2020/01/06 | 33216 | systems/texlive/tlnet/archive/thuthesis.source.r53329.tar.xz
-2020/01/06 | 3143 | macros/latex/contrib/acrotex/exerquiz.ins
-2020/01/06 | 30539045 | info/impatient.zip
-2020/01/06 | 2803 | fonts/cormorantgaramond/README
-2020/01/06 | 2599468 | systems/win32/w32tex/dvitools-w32.tar.xz
-2020/01/06 | 251688 | systems/texlive/tlnet/archive/thesis-ekf.doc.r53332.tar.xz
-2020/01/06 | 2469144 | systems/win32/w32tex/tex4htk-w32.tar.xz
-2020/01/06 | 2328048 | systems/win32/w32tex/win64/dvitools-w64.tar.xz
-2020/01/06 | 22432 | systems/texlive/tlnet/archive/hyphen-base.r53326.tar.xz
-2020/01/06 | 217085 | macros/latex/contrib/acrotex/eforms.dtx
-2020/01/06 | 214592 | systems/texlive/tlnet/archive/scholax.doc.r53330.tar.xz
-2020/01/06 | 2059552 | systems/texlive/tlnet/archive/thuthesis.doc.r53329.tar.xz
-2020/01/06 | 19660 | systems/texlive/tlnet/archive/thuthesis.r53329.tar.xz
-2020/01/06 | 1730408 | systems/texlive/tlnet/archive/scholax.r53330.tar.xz
-2020/01/06 | 1390 | support/pdfxup/README
-2020/01/06 | 10312 | macros/latex/contrib/acrotex/aeb-comment.sty
diff --git a/fonts/firamath/FiraMath-Regular.otf b/fonts/firamath/FiraMath-Regular.otf
index 624bab4898..01c94b075b 100644
--- a/fonts/firamath/FiraMath-Regular.otf
+++ b/fonts/firamath/FiraMath-Regular.otf
Binary files differ
diff --git a/fonts/firamath/README.md b/fonts/firamath/README.md
index aba39883f8..59f74b7287 100644
--- a/fonts/firamath/README.md
+++ b/fonts/firamath/README.md
@@ -39,4 +39,4 @@ This Font Software is licensed under the [SIL Open Font License](http://scripts.
-----
-Copyright (C) 2018, 2019 by Xiangdong Zeng <xdzeng96@gmail.com>.
+Copyright (C) 2018&ndash;2020 by Xiangdong Zeng <xdzeng96@gmail.com>.
diff --git a/fonts/firamath/firamath-demo.pdf b/fonts/firamath/firamath-demo.pdf
index 84038b87be..4aabc86878 100644
--- a/fonts/firamath/firamath-demo.pdf
+++ b/fonts/firamath/firamath-demo.pdf
Binary files differ
diff --git a/fonts/firamath/firamath-demo.tex b/fonts/firamath/firamath-demo.tex
index c2515a65aa..bb222e0b2f 100644
--- a/fonts/firamath/firamath-demo.tex
+++ b/fonts/firamath/firamath-demo.tex
@@ -13,16 +13,18 @@
\makeatletter
% https://tex.stackexchange.com/q/66519
\apptocmd{\beamer@@frametitle}{\only<1>{\bookmark[page=\the\c@page,level=3]{#1}}}{}{}
-\makeatother
\unimathsetup{math-style=ISO, bold-style=ISO, mathrm=sym}
\setsansfont{FiraGO}[BoldFont=* SemiBold, Numbers=Monospaced]
-\setmathfont{Fira Math Regular}
-
-\newCJKfontfamily\fontzhhans{Source Han Sans SC}
-\newCJKfontfamily\fontzhhant{Source Han Sans TC}
-\newCJKfontfamily\fontja{Source Han Sans}
+ { \setmathfont { FiraMath-##1.otf } [ version = ##1 ] }
+\cs_new:Npn \MultipleWeights #1
+ {
+ \seq_map_inline:Nn \c_@@_weight_seq
+ { \group_begin: \mathversion {##1} #1 \group_end: }
+ }
+\ExplSyntaxOff
+\makeatother
\def\ii{\symrm{i}}
\def\pp{\symrm{\pi}}
@@ -30,7 +32,7 @@
\title{Fira Math}
\subtitle{Sans-serif font with Unicode math support}
\author{Xiangdong Zeng}
-\date{2019/06/03\quad v0.3.2}
+\date{2020/01/13\quad v0.3.3}
\begin{document}
@@ -106,4 +108,17 @@
\end{itemize}
\end{frame}
+\begin{frame}{Multiple weights (preview)}
+\centering
+\everymath{\displaystyle}
+\begin{tabular}{p{5cm}l}
+ \mathversion{Thin} $ \pdv{\alpha} \sin\alpha = \cos \alpha $ & \mathversion{Medium} $ \int \sin x \dd{x} = -\cos x + C_1 $ \\[12pt]
+ \mathversion{UltraLight} $ \pdv{\beta } \cos\beta = -\sin \beta $ & \mathversion{SemiBold} $ \int \cos y \dd{y} = \sin y + C_2 $ \\[12pt]
+ \mathversion{ExtraLight} $ \pdv{\gamma} \tan\gamma = \sec^2\gamma $ & \mathversion{Bold} $ \int \tan z \dd{z} = -\ln|\cos z \, | + C_3 $ \\[12pt]
+ \mathversion{Light} $ \pdv{\theta} \cot\theta = -\csc^2\theta $ & \mathversion{ExtraBold} $ \int \cot p \dd{p} = \ln|\sin p \, | + C_4 $ \\[12pt]
+ \mathversion{Book} $ \pdv{\phi } \sec\phi = \tan\phi \sec\phi $ & \mathversion{Heavy} $ \int \sec q \dd{q} = \ln|\sec q + \tan q \, | + C_5 $ \\[12pt]
+ \mathversion{Regular} $ \pdv{\zeta } \csc\zeta = -\cot\zeta\csc\zeta $ & \mathversion{Ultra} $ \int \csc r \dd{r} = -\ln|\csc r + \cot r \, | + C_6 $
+\end{tabular}
+\end{frame}
+
\end{document}
diff --git a/fonts/firamath/firamath-glyph-list.tex b/fonts/firamath/firamath-glyph-list.tex
index 0880601282..c266912053 100644
--- a/fonts/firamath/firamath-glyph-list.tex
+++ b/fonts/firamath/firamath-glyph-list.tex
@@ -1,6 +1,6 @@
% Generated by ./scripts/glyph_list.py
\seq_const_from_clist:Nn \c_@@_glyph_unicode_seq
- {"0020,"0021,"0022,"0023,"0024,"0025,"0026,"0027,"0028,"0029,"002A,"002B,"002C,"002D,"002E,"002F,"0030,"0031,"0032,"0033,"0034,"0035,"0036,"0037,"0038,"0039,"003A,"003B,"003C,"003D,"003E,"003F,"0040,"0041,"0042,"0043,"0044,"0045,"0046,"0047,"0048,"0049,"004A,"004B,"004C,"004D,"004E,"004F,"0050,"0051,"0052,"0053,"0054,"0055,"0056,"0057,"0058,"0059,"005A,"005B,"005C,"005D,"005E,"005F,"0060,"0061,"0062,"0063,"0064,"0065,"0066,"0067,"0068,"0069,"006A,"006B,"006C,"006D,"006E,"006F,"0070,"0071,"0072,"0073,"0074,"0075,"0076,"0077,"0078,"0079,"007A,"007B,"007C,"007D,"007E,"00A0,"00A1,"00A2,"00A3,"00A4,"00A5,"00A6,"00A7,"00A8,"00A9,"00AA,"00AB,"00AC,"00AD,"00AE,"00AF,"00B0,"00B1,"00B2,"00B3,"00B4,"00B5,"00B6,"00B7,"00B8,"00B9,"00BA,"00BB,"00BC,"00BD,"00BE,"00BF,"00C0,"00C1,"00C2,"00C3,"00C4,"00C5,"00C6,"00C7,"00C8,"00C9,"00CA,"00CB,"00CC,"00CD,"00CE,"00CF,"00D0,"00D1,"00D2,"00D3,"00D4,"00D5,"00D6,"00D7,"00D8,"00D9,"00DA,"00DB,"00DC,"00DD,"00DE,"00DF,"00E0,"00E1,"00E2,"00E3,"00E4,"00E5,"00E6,"00E7,"00E8,"00E9,"00EA,"00EB,"00EC,"00ED,"00EE,"00EF,"00F0,"00F1,"00F2,"00F3,"00F4,"00F5,"00F6,"00F7,"00F8,"00F9,"00FA,"00FB,"00FC,"00FD,"00FE,"00FF,"0100,"0101,"0102,"0103,"0104,"0105,"0106,"0107,"010C,"010D,"010E,"010F,"0110,"0111,"0112,"0113,"0116,"0117,"0118,"0119,"011A,"011B,"011E,"011F,"0122,"0123,"012A,"012B,"012E,"012F,"0130,"0131,"0136,"0137,"0139,"013A,"013B,"013C,"013D,"013E,"0141,"0142,"0143,"0144,"0145,"0146,"0147,"0148,"014C,"014D,"0150,"0151,"0152,"0153,"0154,"0155,"0156,"0157,"0158,"0159,"015A,"015B,"015E,"015F,"0160,"0161,"0162,"0163,"0164,"0165,"016A,"016B,"016E,"016F,"0170,"0171,"0172,"0173,"0178,"0179,"017A,"017B,"017C,"017D,"017E,"0192,"0218,"0219,"021A,"021B,"0237,"0300,"0301,"0302,"0303,"0304,"0305,"0306,"0307,"0308,"0309,"030A,"030B,"030C,"030D,"030F,"0311,"0312,"0313,"0316,"0317,"0318,"0319,"031A,"031B,"031C,"031D,"031E,"031F,"0320,"0321,"0323,"0324,"0325,"0326,"0327,"0328,"0329,"032A,"032B,"032C,"032D,"032F,"0330,"0331,"0332,"0334,"0335,"0336,"0337,"0338,"0339,"033A,"033B,"033C,"033D,"0342,"0345,"035C,"0361,"037E,"0384,"0385,"0386,"0387,"0388,"0389,"038A,"038C,"038E,"038F,"0390,"0391,"0392,"0393,"0394,"0395,"0396,"0397,"0398,"0399,"039A,"039B,"039C,"039D,"039E,"039F,"03A0,"03A1,"03A3,"03A4,"03A5,"03A6,"03A7,"03A8,"03A9,"03AA,"03AB,"03AC,"03AD,"03AE,"03AF,"03B0,"03B1,"03B2,"03B3,"03B4,"03B5,"03B6,"03B7,"03B8,"03B9,"03BA,"03BB,"03BC,"03BD,"03BE,"03BF,"03C0,"03C1,"03C2,"03C3,"03C4,"03C5,"03C6,"03C7,"03C8,"03C9,"03CA,"03CB,"03CC,"03CD,"03CE,"03D0,"03D1,"03D2,"03D5,"03D6,"03D7,"03F0,"03F1,"03F2,"03F4,"03F5,"03F6,"0400,"0401,"0402,"0403,"0404,"0405,"0406,"0407,"0408,"0409,"040A,"040B,"040C,"040D,"040E,"040F,"0410,"0411,"0412,"0413,"0414,"0415,"0416,"0417,"0418,"0419,"041A,"041B,"041C,"041D,"041E,"041F,"0420,"0421,"0422,"0423,"0424,"0425,"0426,"0427,"0428,"0429,"042A,"042B,"042C,"042D,"042E,"042F,"0430,"0431,"0432,"0433,"0434,"0435,"0436,"0437,"0438,"0439,"043A,"043B,"043C,"043D,"043E,"043F,"0440,"0441,"0442,"0443,"0444,"0445,"0446,"0447,"0448,"0449,"044A,"044B,"044C,"044D,"044E,"044F,"0450,"0451,"0452,"0453,"0454,"0455,"0456,"0457,"0458,"0459,"045A,"045B,"045C,"045D,"045E,"045F,"0462,"0463,"0472,"0473,"0474,"0475,"0490,"0491,"2007,"2008,"200B,"200C,"200D,"200E,"200F,"2010,"2011,"2012,"2013,"2014,"2015,"2016,"2018,"2019,"201A,"201C,"201D,"201E,"2020,"2021,"2022,"2026,"2030,"2032,"2033,"2034,"2035,"2036,"2037,"2039,"203A,"203F,"2044,"2057,"20AC,"20B4,"20BA,"20BD,"20D0,"20D1,"20D2,"20D3,"20D6,"20D7,"20DB,"20DC,"20E1,"20E7,"20E8,"20E9,"20EC,"20ED,"20EE,"20EF,"20F0,"2102,"210A,"210D,"210E,"210F,"2113,"2115,"2116,"2119,"211A,"211D,"2122,"2124,"2126,"2127,"212A,"212B,"212E,"2135,"2136,"2137,"2138,"2140,"2153,"2154,"2155,"2156,"2157,"2158,"2159,"215A,"215B,"215C,"215D,"215E,"215F,"2190,"2191,"2192,"2193,"2194,"2195,"2196,"2197,"2198,"2199,"219A,"219B,"219C,"219D,"219E,"219F,"21A0,"21A1,"21A2,"21A3,"21A4,"21A5,"21A6,"21A7,"21A8,"21A9,"21AA,"21AB,"21AC,"21AD,"21AE,"21AF,"21B0,"21B1,"21B2,"21B3,"21B4,"21B5,"21B6,"21B7,"21B8,"21B9,"21BA,"21BB,"21BC,"21BD,"21BE,"21BF,"21C0,"21C1,"21C2,"21C3,"21C4,"21C5,"21C6,"21C7,"21C8,"21C9,"21CA,"21CB,"21CC,"21CD,"21CE,"21CF,"21D0,"21D1,"21D2,"21D3,"21D4,"21D5,"21D6,"21D7,"21D8,"21D9,"21DA,"21DB,"21DC,"21DD,"21DE,"21DF,"21E0,"21E1,"21E2,"21E3,"21E4,"21E5,"21E6,"21E7,"21E8,"21E9,"21EA,"21EB,"21EC,"21ED,"21EE,"21EF,"21F0,"21F1,"21F2,"21F3,"21F4,"21F5,"21F6,"21F7,"21F8,"21F9,"21FA,"21FB,"21FC,"21FD,"21FE,"21FF,"2200,"2201,"2202,"2203,"2204,"2205,"2206,"2207,"2208,"2209,"220A,"220B,"220C,"220D,"220E,"220F,"2210,"2211,"2212,"2213,"2214,"2215,"2217,"2218,"2219,"221A,"221B,"221C,"221D,"221E,"221F,"2220,"2221,"2222,"2223,"2224,"2225,"2226,"2227,"2228,"2229,"222A,"222B,"222C,"222D,"222E,"222F,"2230,"2234,"2235,"2236,"2237,"2238,"2239,"223A,"223B,"223C,"223D,"2240,"2241,"2242,"2243,"2244,"2245,"2246,"2247,"2248,"2249,"224A,"224B,"224C,"2250,"2251,"2252,"2253,"2254,"2255,"2260,"2261,"2262,"2263,"2264,"2265,"2266,"2267,"2268,"2269,"226A,"226B,"226E,"226F,"2270,"2271,"2272,"2273,"2274,"2275,"2276,"2277,"2278,"2279,"227A,"227B,"227C,"227D,"227E,"227F,"2280,"2281,"2282,"2283,"2284,"2285,"2286,"2287,"2288,"2289,"228A,"228B,"228C,"228D,"228E,"228F,"2290,"2291,"2292,"2293,"2294,"2295,"2296,"2297,"2298,"2299,"22C5,"22CD,"22CE,"22CF,"22D6,"22D7,"22D8,"22D9,"22DA,"22DB,"22DC,"22DD,"22DE,"22DF,"22E0,"22E1,"22E2,"22E3,"22E4,"22E5,"22E6,"22E7,"22E8,"22E9,"22EF,"2302,"2308,"2309,"230A,"230B,"2310,"239B,"239C,"239D,"239E,"239F,"23A0,"23A1,"23A2,"23A3,"23A4,"23A5,"23A6,"23A7,"23A8,"23A9,"23AA,"23AB,"23AC,"23AD,"23B4,"23B5,"23DC,"23DD,"23DE,"23DF,"2580,"2581,"2582,"2583,"2584,"2585,"2586,"2587,"2588,"2589,"258A,"258B,"258C,"258D,"258E,"258F,"2590,"2594,"2595,"2596,"2597,"2598,"2599,"259A,"259B,"259C,"259D,"259E,"259F,"25A0,"25A1,"25A2,"25A3,"25AA,"25AB,"25AC,"25AD,"25AE,"25AF,"25B2,"25B6,"25BA,"25BC,"25C0,"25C4,"25C6,"25C7,"25C9,"25CA,"25CB,"25CE,"25CF,"25D0,"25D1,"25D2,"25D3,"25D5,"25D6,"25D7,"25D9,"25DA,"25DB,"25DC,"25DD,"25DE,"25DF,"25E0,"25E1,"25E2,"25E3,"25E4,"25E5,"25E6,"25E7,"25E8,"25E9,"25EA,"25EB,"25EF,"25F0,"25F1,"25F2,"25F3,"25F4,"25F5,"25F6,"25F7,"2620,"2639,"263A,"263B,"263C,"2640,"2642,"2660,"2663,"2665,"2666,"266A,"266B,"26AA,"26AB,"26AC,"27C2,"27E8,"27E9,"27EA,"27EB,"27EE,"27EF,"27F5,"27F6,"27F7,"27F8,"27F9,"27FA,"27FB,"27FC,"27FD,"27FE,"2900,"2901,"2902,"2903,"2904,"2905,"2906,"2907,"2908,"2909,"290A,"290B,"2912,"2913,"2914,"2915,"2916,"2917,"2918,"2919,"291A,"291B,"291C,"2921,"2922,"2927,"2928,"2929,"292A,"292B,"292C,"292D,"292E,"292F,"2930,"2931,"2932,"294A,"294B,"294C,"294D,"294E,"294F,"2950,"2951,"2952,"2953,"2954,"2955,"2956,"2957,"2958,"2959,"295A,"295B,"295C,"295D,"295E,"295F,"2960,"2961,"2962,"2963,"2964,"2965,"2966,"2967,"2968,"2969,"296A,"296B,"296C,"296D,"296E,"296F,"2980,"2981,"299F,"29A0,"29A1,"29A2,"29A3,"29A6,"29A7,"29B0,"2A0C,"2A7D,"2A7E,"2B24,"2B31,"2B34,"2B35,"2B36,"2B39,"2B3A,"2B3B,"2B3C,"2B3D,"2BFE,"FB00,"FB01,"FB02,"FB03,"FB04,"FEFF,"1D400,"1D401,"1D402,"1D403,"1D404,"1D405,"1D406,"1D407,"1D408,"1D409,"1D40A,"1D40B,"1D40C,"1D40D,"1D40E,"1D40F,"1D410,"1D411,"1D412,"1D413,"1D414,"1D415,"1D416,"1D417,"1D418,"1D419,"1D41A,"1D41B,"1D41C,"1D41D,"1D41E,"1D41F,"1D420,"1D421,"1D422,"1D423,"1D424,"1D425,"1D426,"1D427,"1D428,"1D429,"1D42A,"1D42B,"1D42C,"1D42D,"1D42E,"1D42F,"1D430,"1D431,"1D432,"1D433,"1D434,"1D435,"1D436,"1D437,"1D438,"1D439,"1D43A,"1D43B,"1D43C,"1D43D,"1D43E,"1D43F,"1D440,"1D441,"1D442,"1D443,"1D444,"1D445,"1D446,"1D447,"1D448,"1D449,"1D44A,"1D44B,"1D44C,"1D44D,"1D44E,"1D44F,"1D450,"1D451,"1D452,"1D453,"1D454,"1D456,"1D457,"1D458,"1D459,"1D45A,"1D45B,"1D45C,"1D45D,"1D45E,"1D45F,"1D460,"1D461,"1D462,"1D463,"1D464,"1D465,"1D466,"1D467,"1D468,"1D469,"1D46A,"1D46B,"1D46C,"1D46D,"1D46E,"1D46F,"1D470,"1D471,"1D472,"1D473,"1D474,"1D475,"1D476,"1D477,"1D478,"1D479,"1D47A,"1D47B,"1D47C,"1D47D,"1D47E,"1D47F,"1D480,"1D481,"1D482,"1D483,"1D484,"1D485,"1D486,"1D487,"1D488,"1D489,"1D48A,"1D48B,"1D48C,"1D48D,"1D48E,"1D48F,"1D490,"1D491,"1D492,"1D493,"1D494,"1D495,"1D496,"1D497,"1D498,"1D499,"1D49A,"1D49B,"1D538,"1D539,"1D53B,"1D53C,"1D53D,"1D53E,"1D540,"1D541,"1D542,"1D543,"1D544,"1D546,"1D54A,"1D54B,"1D54C,"1D54D,"1D54E,"1D54F,"1D550,"1D552,"1D553,"1D554,"1D555,"1D556,"1D557,"1D558,"1D559,"1D55A,"1D55B,"1D55C,"1D55D,"1D55E,"1D55F,"1D560,"1D561,"1D562,"1D563,"1D564,"1D565,"1D566,"1D567,"1D568,"1D569,"1D56A,"1D56B,"1D670,"1D671,"1D672,"1D673,"1D674,"1D675,"1D676,"1D677,"1D678,"1D679,"1D67A,"1D67B,"1D67C,"1D67D,"1D67E,"1D67F,"1D680,"1D681,"1D682,"1D683,"1D684,"1D685,"1D686,"1D687,"1D688,"1D689,"1D68A,"1D68B,"1D68C,"1D68D,"1D68E,"1D68F,"1D690,"1D691,"1D692,"1D693,"1D694,"1D695,"1D696,"1D697,"1D698,"1D699,"1D69A,"1D69B,"1D69C,"1D69D,"1D69E,"1D69F,"1D6A0,"1D6A1,"1D6A2,"1D6A3,"1D6A4,"1D6A5,"1D6A8,"1D6A9,"1D6AA,"1D6AB,"1D6AC,"1D6AD,"1D6AE,"1D6AF,"1D6B0,"1D6B1,"1D6B2,"1D6B3,"1D6B4,"1D6B5,"1D6B6,"1D6B7,"1D6B8,"1D6B9,"1D6BA,"1D6BB,"1D6BC,"1D6BD,"1D6BE,"1D6BF,"1D6C0,"1D6C1,"1D6C2,"1D6C3,"1D6C4,"1D6C5,"1D6C6,"1D6C7,"1D6C8,"1D6C9,"1D6CA,"1D6CB,"1D6CC,"1D6CD,"1D6CE,"1D6CF,"1D6D0,"1D6D1,"1D6D2,"1D6D3,"1D6D4,"1D6D5,"1D6D6,"1D6D7,"1D6D8,"1D6D9,"1D6DA,"1D6DB,"1D6DC,"1D6DD,"1D6DE,"1D6DF,"1D6E0,"1D6E1,"1D6E2,"1D6E3,"1D6E4,"1D6E5,"1D6E6,"1D6E7,"1D6E8,"1D6E9,"1D6EA,"1D6EB,"1D6EC,"1D6ED,"1D6EE,"1D6EF,"1D6F0,"1D6F1,"1D6F2,"1D6F3,"1D6F4,"1D6F5,"1D6F6,"1D6F7,"1D6F8,"1D6F9,"1D6FA,"1D6FB,"1D6FC,"1D6FD,"1D6FE,"1D6FF,"1D700,"1D701,"1D702,"1D703,"1D704,"1D705,"1D706,"1D707,"1D708,"1D709,"1D70A,"1D70B,"1D70C,"1D70D,"1D70E,"1D70F,"1D710,"1D711,"1D712,"1D713,"1D714,"1D715,"1D716,"1D717,"1D718,"1D719,"1D71A,"1D71B,"1D71C,"1D71D,"1D71E,"1D71F,"1D720,"1D721,"1D722,"1D723,"1D724,"1D725,"1D726,"1D727,"1D728,"1D729,"1D72A,"1D72B,"1D72C,"1D72D,"1D72E,"1D72F,"1D730,"1D731,"1D732,"1D733,"1D734,"1D735,"1D736,"1D737,"1D738,"1D739,"1D73A,"1D73B,"1D73C,"1D73D,"1D73E,"1D73F,"1D740,"1D741,"1D742,"1D743,"1D744,"1D745,"1D746,"1D747,"1D748,"1D749,"1D74A,"1D74B,"1D74C,"1D74D,"1D74E,"1D74F,"1D750,"1D751,"1D752,"1D753,"1D754,"1D755,"1D7CA,"1D7CB,"1D7CE,"1D7CF,"1D7D0,"1D7D1,"1D7D2,"1D7D3,"1D7D4,"1D7D5,"1D7D6,"1D7D7,"1F784}
+ {"0020,"0021,"0022,"0023,"0024,"0025,"0026,"0027,"0028,"0029,"002A,"002B,"002C,"002D,"002E,"002F,"0030,"0031,"0032,"0033,"0034,"0035,"0036,"0037,"0038,"0039,"003A,"003B,"003C,"003D,"003E,"003F,"0040,"0041,"0042,"0043,"0044,"0045,"0046,"0047,"0048,"0049,"004A,"004B,"004C,"004D,"004E,"004F,"0050,"0051,"0052,"0053,"0054,"0055,"0056,"0057,"0058,"0059,"005A,"005B,"005C,"005D,"005E,"005F,"0060,"0061,"0062,"0063,"0064,"0065,"0066,"0067,"0068,"0069,"006A,"006B,"006C,"006D,"006E,"006F,"0070,"0071,"0072,"0073,"0074,"0075,"0076,"0077,"0078,"0079,"007A,"007B,"007C,"007D,"007E,"00A0,"00A1,"00A2,"00A3,"00A4,"00A5,"00A6,"00A7,"00A8,"00A9,"00AA,"00AB,"00AC,"00AD,"00AE,"00AF,"00B0,"00B1,"00B2,"00B3,"00B4,"00B5,"00B6,"00B7,"00B8,"00B9,"00BA,"00BB,"00BC,"00BD,"00BE,"00BF,"00C0,"00C1,"00C2,"00C3,"00C4,"00C5,"00C6,"00C7,"00C8,"00C9,"00CA,"00CB,"00CC,"00CD,"00CE,"00CF,"00D0,"00D1,"00D2,"00D3,"00D4,"00D5,"00D6,"00D7,"00D8,"00D9,"00DA,"00DB,"00DC,"00DD,"00DE,"00DF,"00E0,"00E1,"00E2,"00E3,"00E4,"00E5,"00E6,"00E7,"00E8,"00E9,"00EA,"00EB,"00EC,"00ED,"00EE,"00EF,"00F0,"00F1,"00F2,"00F3,"00F4,"00F5,"00F6,"00F7,"00F8,"00F9,"00FA,"00FB,"00FC,"00FD,"00FE,"00FF,"0100,"0101,"0102,"0103,"0104,"0105,"0106,"0107,"010C,"010D,"010E,"010F,"0110,"0111,"0112,"0113,"0116,"0117,"0118,"0119,"011A,"011B,"011E,"011F,"0122,"0123,"012A,"012B,"012E,"012F,"0130,"0131,"0136,"0137,"0139,"013A,"013B,"013C,"013D,"013E,"0141,"0142,"0143,"0144,"0145,"0146,"0147,"0148,"014C,"014D,"0150,"0151,"0152,"0153,"0154,"0155,"0156,"0157,"0158,"0159,"015A,"015B,"015E,"015F,"0160,"0161,"0162,"0163,"0164,"0165,"016A,"016B,"016E,"016F,"0170,"0171,"0172,"0173,"0178,"0179,"017A,"017B,"017C,"017D,"017E,"0192,"0218,"0219,"021A,"021B,"0237,"0300,"0301,"0302,"0303,"0304,"0305,"0306,"0307,"0308,"0309,"030A,"030B,"030C,"030D,"030F,"0311,"0312,"0313,"0316,"0317,"0318,"0319,"031A,"031B,"031C,"031D,"031E,"031F,"0320,"0321,"0323,"0324,"0325,"0326,"0327,"0328,"0329,"032A,"032B,"032C,"032D,"032F,"0330,"0331,"0332,"0334,"0335,"0336,"0337,"0338,"0339,"033A,"033B,"033C,"033D,"0342,"0345,"035C,"0361,"037E,"0384,"0385,"0386,"0387,"0388,"0389,"038A,"038C,"038E,"038F,"0390,"0391,"0392,"0393,"0394,"0395,"0396,"0397,"0398,"0399,"039A,"039B,"039C,"039D,"039E,"039F,"03A0,"03A1,"03A3,"03A4,"03A5,"03A6,"03A7,"03A8,"03A9,"03AA,"03AB,"03AC,"03AD,"03AE,"03AF,"03B0,"03B1,"03B2,"03B3,"03B4,"03B5,"03B6,"03B7,"03B8,"03B9,"03BA,"03BB,"03BC,"03BD,"03BE,"03BF,"03C0,"03C1,"03C2,"03C3,"03C4,"03C5,"03C6,"03C7,"03C8,"03C9,"03CA,"03CB,"03CC,"03CD,"03CE,"03D0,"03D1,"03D2,"03D5,"03D6,"03D7,"03F0,"03F1,"03F2,"03F4,"03F5,"03F6,"0400,"0401,"0402,"0403,"0404,"0405,"0406,"0407,"0408,"0409,"040A,"040B,"040C,"040D,"040E,"040F,"0410,"0411,"0412,"0413,"0414,"0415,"0416,"0417,"0418,"0419,"041A,"041B,"041C,"041D,"041E,"041F,"0420,"0421,"0422,"0423,"0424,"0425,"0426,"0427,"0428,"0429,"042A,"042B,"042C,"042D,"042E,"042F,"0430,"0431,"0432,"0433,"0434,"0435,"0436,"0437,"0438,"0439,"043A,"043B,"043C,"043D,"043E,"043F,"0440,"0441,"0442,"0443,"0444,"0445,"0446,"0447,"0448,"0449,"044A,"044B,"044C,"044D,"044E,"044F,"0450,"0451,"0452,"0453,"0454,"0455,"0456,"0457,"0458,"0459,"045A,"045B,"045C,"045D,"045E,"045F,"0462,"0463,"0472,"0473,"0474,"0475,"0490,"0491,"2007,"2008,"200B,"200C,"200D,"200E,"200F,"2010,"2011,"2012,"2013,"2014,"2015,"2016,"2018,"2019,"201A,"201C,"201D,"201E,"2020,"2021,"2022,"2026,"2030,"2032,"2033,"2034,"2035,"2036,"2037,"2039,"203A,"203F,"2044,"2057,"20AC,"20B4,"20BA,"20BD,"20D0,"20D1,"20D2,"20D3,"20D6,"20D7,"20DB,"20DC,"20E1,"20E7,"20E8,"20E9,"20EC,"20ED,"20EE,"20EF,"20F0,"2102,"210A,"210D,"210E,"210F,"2113,"2115,"2116,"2119,"211A,"211D,"2122,"2124,"2126,"2127,"212A,"212B,"212E,"2135,"2136,"2137,"2138,"2140,"2153,"2154,"2155,"2156,"2157,"2158,"2159,"215A,"215B,"215C,"215D,"215E,"215F,"2190,"2191,"2192,"2193,"2194,"2195,"2196,"2197,"2198,"2199,"219A,"219B,"219C,"219D,"219E,"219F,"21A0,"21A1,"21A2,"21A3,"21A4,"21A5,"21A6,"21A7,"21A8,"21A9,"21AA,"21AB,"21AC,"21AD,"21AE,"21AF,"21B0,"21B1,"21B2,"21B3,"21B4,"21B5,"21B6,"21B7,"21B8,"21B9,"21BA,"21BB,"21BC,"21BD,"21BE,"21BF,"21C0,"21C1,"21C2,"21C3,"21C4,"21C5,"21C6,"21C7,"21C8,"21C9,"21CA,"21CB,"21CC,"21CD,"21CE,"21CF,"21D0,"21D1,"21D2,"21D3,"21D4,"21D5,"21D6,"21D7,"21D8,"21D9,"21DA,"21DB,"21DC,"21DD,"21DE,"21DF,"21E0,"21E1,"21E2,"21E3,"21E4,"21E5,"21E6,"21E7,"21E8,"21E9,"21EA,"21EB,"21EC,"21ED,"21EE,"21EF,"21F0,"21F1,"21F2,"21F3,"21F4,"21F5,"21F6,"21F7,"21F8,"21F9,"21FA,"21FB,"21FC,"21FD,"21FE,"21FF,"2200,"2201,"2202,"2203,"2204,"2205,"2206,"2207,"2208,"2209,"220A,"220B,"220C,"220D,"220E,"220F,"2210,"2211,"2212,"2213,"2214,"2215,"2217,"2218,"2219,"221A,"221B,"221C,"221D,"221E,"221F,"2220,"2221,"2222,"2223,"2224,"2225,"2226,"2227,"2228,"2229,"222A,"222B,"222C,"222D,"222E,"222F,"2230,"2234,"2235,"2236,"2237,"2238,"2239,"223A,"223B,"223C,"223D,"2240,"2241,"2242,"2243,"2244,"2245,"2246,"2247,"2248,"2249,"224A,"224B,"224C,"2250,"2251,"2252,"2253,"2254,"2255,"2260,"2261,"2262,"2263,"2264,"2265,"2266,"2267,"2268,"2269,"226A,"226B,"226E,"226F,"2270,"2271,"2272,"2273,"2274,"2275,"2276,"2277,"2278,"2279,"227A,"227B,"227C,"227D,"227E,"227F,"2280,"2281,"2282,"2283,"2284,"2285,"2286,"2287,"2288,"2289,"228A,"228B,"228C,"228D,"228E,"228F,"2290,"2291,"2292,"2293,"2294,"2295,"2296,"2297,"2298,"2299,"22C5,"22CD,"22CE,"22CF,"22D6,"22D7,"22D8,"22D9,"22DA,"22DB,"22DC,"22DD,"22DE,"22DF,"22E0,"22E1,"22E2,"22E3,"22E4,"22E5,"22E6,"22E7,"22E8,"22E9,"22EF,"2302,"2308,"2309,"230A,"230B,"2310,"239B,"239C,"239D,"239E,"239F,"23A0,"23A1,"23A2,"23A3,"23A4,"23A5,"23A6,"23A7,"23A8,"23A9,"23AA,"23AB,"23AC,"23AD,"23B4,"23B5,"23DC,"23DD,"23DE,"23DF,"2580,"2581,"2582,"2583,"2584,"2585,"2586,"2587,"2588,"2589,"258A,"258B,"258C,"258D,"258E,"258F,"2590,"2594,"2595,"2596,"2597,"2598,"2599,"259A,"259B,"259C,"259D,"259E,"259F,"25A0,"25A1,"25A2,"25A3,"25AA,"25AB,"25AC,"25AD,"25AE,"25AF,"25B2,"25B6,"25BA,"25BC,"25C0,"25C4,"25C6,"25C7,"25C9,"25CA,"25CB,"25CE,"25CF,"25D0,"25D1,"25D2,"25D3,"25D5,"25D6,"25D7,"25D9,"25DA,"25DB,"25DC,"25DD,"25DE,"25DF,"25E0,"25E1,"25E2,"25E3,"25E4,"25E5,"25E6,"25E7,"25E8,"25E9,"25EA,"25EB,"25EF,"25F0,"25F1,"25F2,"25F3,"25F4,"25F5,"25F6,"25F7,"2620,"2639,"263A,"263B,"263C,"2640,"2642,"2660,"2663,"2665,"2666,"266A,"266B,"26AA,"26AB,"26AC,"27C2,"27E8,"27E9,"27EA,"27EB,"27EE,"27EF,"27F0,"27F1,"27F2,"27F3,"27F4,"27F5,"27F6,"27F7,"27F8,"27F9,"27FA,"27FB,"27FC,"27FD,"27FE,"27FF,"2900,"2901,"2902,"2903,"2904,"2905,"2906,"2907,"2908,"2909,"290A,"290B,"2912,"2913,"2914,"2915,"2916,"2917,"2918,"2919,"291A,"291B,"291C,"2921,"2922,"2927,"2928,"2929,"292A,"292B,"292C,"292D,"292E,"292F,"2930,"2931,"2932,"294A,"294B,"294C,"294D,"294E,"294F,"2950,"2951,"2952,"2953,"2954,"2955,"2956,"2957,"2958,"2959,"295A,"295B,"295C,"295D,"295E,"295F,"2960,"2961,"2962,"2963,"2964,"2965,"2966,"2967,"2968,"2969,"296A,"296B,"296C,"296D,"296E,"296F,"2980,"2981,"299F,"29A0,"29A1,"29A2,"29A3,"29A6,"29A7,"29B0,"2A0C,"2A7D,"2A7E,"2B24,"2B30,"2B31,"2B32,"2B33,"2B34,"2B35,"2B36,"2B39,"2B3A,"2B3B,"2B3C,"2B3D,"2B45,"2B46,"2BFE,"FB00,"FB01,"FB02,"FB03,"FB04,"1D400,"1D401,"1D402,"1D403,"1D404,"1D405,"1D406,"1D407,"1D408,"1D409,"1D40A,"1D40B,"1D40C,"1D40D,"1D40E,"1D40F,"1D410,"1D411,"1D412,"1D413,"1D414,"1D415,"1D416,"1D417,"1D418,"1D419,"1D41A,"1D41B,"1D41C,"1D41D,"1D41E,"1D41F,"1D420,"1D421,"1D422,"1D423,"1D424,"1D425,"1D426,"1D427,"1D428,"1D429,"1D42A,"1D42B,"1D42C,"1D42D,"1D42E,"1D42F,"1D430,"1D431,"1D432,"1D433,"1D434,"1D435,"1D436,"1D437,"1D438,"1D439,"1D43A,"1D43B,"1D43C,"1D43D,"1D43E,"1D43F,"1D440,"1D441,"1D442,"1D443,"1D444,"1D445,"1D446,"1D447,"1D448,"1D449,"1D44A,"1D44B,"1D44C,"1D44D,"1D44E,"1D44F,"1D450,"1D451,"1D452,"1D453,"1D454,"1D456,"1D457,"1D458,"1D459,"1D45A,"1D45B,"1D45C,"1D45D,"1D45E,"1D45F,"1D460,"1D461,"1D462,"1D463,"1D464,"1D465,"1D466,"1D467,"1D468,"1D469,"1D46A,"1D46B,"1D46C,"1D46D,"1D46E,"1D46F,"1D470,"1D471,"1D472,"1D473,"1D474,"1D475,"1D476,"1D477,"1D478,"1D479,"1D47A,"1D47B,"1D47C,"1D47D,"1D47E,"1D47F,"1D480,"1D481,"1D482,"1D483,"1D484,"1D485,"1D486,"1D487,"1D488,"1D489,"1D48A,"1D48B,"1D48C,"1D48D,"1D48E,"1D48F,"1D490,"1D491,"1D492,"1D493,"1D494,"1D495,"1D496,"1D497,"1D498,"1D499,"1D49A,"1D49B,"1D538,"1D539,"1D53B,"1D53C,"1D53D,"1D53E,"1D540,"1D541,"1D542,"1D543,"1D544,"1D546,"1D54A,"1D54B,"1D54C,"1D54D,"1D54E,"1D54F,"1D550,"1D552,"1D553,"1D554,"1D555,"1D556,"1D557,"1D558,"1D559,"1D55A,"1D55B,"1D55C,"1D55D,"1D55E,"1D55F,"1D560,"1D561,"1D562,"1D563,"1D564,"1D565,"1D566,"1D567,"1D568,"1D569,"1D56A,"1D56B,"1D670,"1D671,"1D672,"1D673,"1D674,"1D675,"1D676,"1D677,"1D678,"1D679,"1D67A,"1D67B,"1D67C,"1D67D,"1D67E,"1D67F,"1D680,"1D681,"1D682,"1D683,"1D684,"1D685,"1D686,"1D687,"1D688,"1D689,"1D68A,"1D68B,"1D68C,"1D68D,"1D68E,"1D68F,"1D690,"1D691,"1D692,"1D693,"1D694,"1D695,"1D696,"1D697,"1D698,"1D699,"1D69A,"1D69B,"1D69C,"1D69D,"1D69E,"1D69F,"1D6A0,"1D6A1,"1D6A2,"1D6A3,"1D6A4,"1D6A5,"1D6A8,"1D6A9,"1D6AA,"1D6AB,"1D6AC,"1D6AD,"1D6AE,"1D6AF,"1D6B0,"1D6B1,"1D6B2,"1D6B3,"1D6B4,"1D6B5,"1D6B6,"1D6B7,"1D6B8,"1D6B9,"1D6BA,"1D6BB,"1D6BC,"1D6BD,"1D6BE,"1D6BF,"1D6C0,"1D6C1,"1D6C2,"1D6C3,"1D6C4,"1D6C5,"1D6C6,"1D6C7,"1D6C8,"1D6C9,"1D6CA,"1D6CB,"1D6CC,"1D6CD,"1D6CE,"1D6CF,"1D6D0,"1D6D1,"1D6D2,"1D6D3,"1D6D4,"1D6D5,"1D6D6,"1D6D7,"1D6D8,"1D6D9,"1D6DA,"1D6DB,"1D6DC,"1D6DD,"1D6DE,"1D6DF,"1D6E0,"1D6E1,"1D6E2,"1D6E3,"1D6E4,"1D6E5,"1D6E6,"1D6E7,"1D6E8,"1D6E9,"1D6EA,"1D6EB,"1D6EC,"1D6ED,"1D6EE,"1D6EF,"1D6F0,"1D6F1,"1D6F2,"1D6F3,"1D6F4,"1D6F5,"1D6F6,"1D6F7,"1D6F8,"1D6F9,"1D6FA,"1D6FB,"1D6FC,"1D6FD,"1D6FE,"1D6FF,"1D700,"1D701,"1D702,"1D703,"1D704,"1D705,"1D706,"1D707,"1D708,"1D709,"1D70A,"1D70B,"1D70C,"1D70D,"1D70E,"1D70F,"1D710,"1D711,"1D712,"1D713,"1D714,"1D715,"1D716,"1D717,"1D718,"1D719,"1D71A,"1D71B,"1D71C,"1D71D,"1D71E,"1D71F,"1D720,"1D721,"1D722,"1D723,"1D724,"1D725,"1D726,"1D727,"1D728,"1D729,"1D72A,"1D72B,"1D72C,"1D72D,"1D72E,"1D72F,"1D730,"1D731,"1D732,"1D733,"1D734,"1D735,"1D736,"1D737,"1D738,"1D739,"1D73A,"1D73B,"1D73C,"1D73D,"1D73E,"1D73F,"1D740,"1D741,"1D742,"1D743,"1D744,"1D745,"1D746,"1D747,"1D748,"1D749,"1D74A,"1D74B,"1D74C,"1D74D,"1D74E,"1D74F,"1D750,"1D751,"1D752,"1D753,"1D754,"1D755,"1D7CA,"1D7CB,"1D7CE,"1D7CF,"1D7D0,"1D7D1,"1D7D2,"1D7D3,"1D7D4,"1D7D5,"1D7D6,"1D7D7,"1F784}
\seq_const_from_clist:Nn \c_@@_glyph_non_unicode_seq
{.notdef,uni2032.ssty1,uni2033.ssty1,uni2034.ssty1,uni2057.ssty1,uni2035.ssty1,uni2036.ssty1,uni2037.ssty1,uni2032.ssty2,uni2033.ssty2,uni2034.ssty2,uni2057.ssty2,uni2035.ssty2,uni2036.ssty2,uni2037.ssty2,uni2140.display,uni220F.display,uni2210.display,uni2211.display,uni222B.display,uni222C.display,uni222D.display,uni2A0C.display,uni222E.display,uni222F.display,uni2230.display,uni221A.size1,uni221A.size2,uni221A.size3,uni221A.size4,uni221A.size5,uni221A.size6,uni221A.size7,uni221A.size8,uni221A.size9,uni221A.size10,uni221A.size11,uni221A.size12,uni221A.size13,uni221A.size14,uni221A.size15,uni221B.size1,uni221B.size2,uni221B.size3,uni221B.size4,uni221B.size5,uni221B.size6,uni221B.size7,uni221B.size8,uni221B.size9,uni221B.size10,uni221B.size11,uni221B.size12,uni221B.size13,uni221B.size14,uni221B.size15,uni221C.size1,uni221C.size2,uni221C.size3,uni221C.size4,uni221C.size5,uni221C.size6,uni221C.size7,uni221C.size8,uni221C.size9,uni221C.size10,uni221C.size11,uni221C.size12,uni221C.size13,uni221C.size14,uni221C.size15,uni0028.size1,uni0028.size2,uni0028.size3,uni0028.size4,uni0028.size5,uni0028.size6,uni0028.size7,uni0028.size8,uni0028.size9,uni0028.size10,uni0028.size11,uni0028.size12,uni0028.size13,uni0028.size14,uni0028.size15,uni0029.size1,uni0029.size2,uni0029.size3,uni0029.size4,uni0029.size5,uni0029.size6,uni0029.size7,uni0029.size8,uni0029.size9,uni0029.size10,uni0029.size11,uni0029.size12,uni0029.size13,uni0029.size14,uni0029.size15,uni005B.size1,uni005B.size2,uni005B.size3,uni005B.size4,uni005B.size5,uni005B.size6,uni005B.size7,uni005B.size8,uni005B.size9,uni005B.size10,uni005B.size11,uni005B.size12,uni005B.size13,uni005B.size14,uni005B.size15,uni005D.size1,uni005D.size2,uni005D.size3,uni005D.size4,uni005D.size5,uni005D.size6,uni005D.size7,uni005D.size8,uni005D.size9,uni005D.size10,uni005D.size11,uni005D.size12,uni005D.size13,uni005D.size14,uni005D.size15,uni007B.size1,uni007B.size2,uni007B.size3,uni007B.size4,uni007B.size5,uni007B.size6,uni007B.size7,uni007B.size8,uni007B.size9,uni007B.size10,uni007B.size11,uni007B.size12,uni007B.size13,uni007B.size14,uni007B.size15,uni007D.size1,uni007D.size2,uni007D.size3,uni007D.size4,uni007D.size5,uni007D.size6,uni007D.size7,uni007D.size8,uni007D.size9,uni007D.size10,uni007D.size11,uni007D.size12,uni007D.size13,uni007D.size14,uni007D.size15,uni2308.size1,uni2308.size2,uni2308.size3,uni2308.size4,uni2308.size5,uni2308.size6,uni2308.size7,uni2308.size8,uni2308.size9,uni2308.size10,uni2308.size11,uni2308.size12,uni2308.size13,uni2308.size14,uni2308.size15,uni2309.size1,uni2309.size2,uni2309.size3,uni2309.size4,uni2309.size5,uni2309.size6,uni2309.size7,uni2309.size8,uni2309.size9,uni2309.size10,uni2309.size11,uni2309.size12,uni2309.size13,uni2309.size14,uni2309.size15,uni230A.size1,uni230A.size2,uni230A.size3,uni230A.size4,uni230A.size5,uni230A.size6,uni230A.size7,uni230A.size8,uni230A.size9,uni230A.size10,uni230A.size11,uni230A.size12,uni230A.size13,uni230A.size14,uni230A.size15,uni230B.size1,uni230B.size2,uni230B.size3,uni230B.size4,uni230B.size5,uni230B.size6,uni230B.size7,uni230B.size8,uni230B.size9,uni230B.size10,uni230B.size11,uni230B.size12,uni230B.size13,uni230B.size14,uni230B.size15,uni27E8.size1,uni27E8.size2,uni27E8.size3,uni27E8.size4,uni27E8.size5,uni27E8.size6,uni27E8.size7,uni27E8.size8,uni27E8.size9,uni27E8.size10,uni27E8.size11,uni27E8.size12,uni27E8.size13,uni27E8.size14,uni27E8.size15,uni27E9.size1,uni27E9.size2,uni27E9.size3,uni27E9.size4,uni27E9.size5,uni27E9.size6,uni27E9.size7,uni27E9.size8,uni27E9.size9,uni27E9.size10,uni27E9.size11,uni27E9.size12,uni27E9.size13,uni27E9.size14,uni27E9.size15,uni27EA.size1,uni27EA.size2,uni27EA.size3,uni27EA.size4,uni27EA.size5,uni27EA.size6,uni27EA.size7,uni27EA.size8,uni27EA.size9,uni27EA.size10,uni27EA.size11,uni27EA.size12,uni27EA.size13,uni27EA.size14,uni27EA.size15,uni27EB.size1,uni27EB.size2,uni27EB.size3,uni27EB.size4,uni27EB.size5,uni27EB.size6,uni27EB.size7,uni27EB.size8,uni27EB.size9,uni27EB.size10,uni27EB.size11,uni27EB.size12,uni27EB.size13,uni27EB.size14,uni27EB.size15,uni27EE.size1,uni27EE.size2,uni27EE.size3,uni27EE.size4,uni27EE.size5,uni27EE.size6,uni27EE.size7,uni27EE.size8,uni27EE.size9,uni27EE.size10,uni27EE.size11,uni27EE.size12,uni27EE.size13,uni27EE.size14,uni27EE.size15,uni27EF.size1,uni27EF.size2,uni27EF.size3,uni27EF.size4,uni27EF.size5,uni27EF.size6,uni27EF.size7,uni27EF.size8,uni27EF.size9,uni27EF.size10,uni27EF.size11,uni27EF.size12,uni27EF.size13,uni27EF.size14,uni27EF.size15,uni007C.size1,uni007C.size2,uni007C.size3,uni007C.size4,uni007C.size5,uni007C.size6,uni007C.size7,uni007C.size8,uni007C.size9,uni007C.size10,uni007C.size11,uni007C.size12,uni007C.size13,uni007C.size14,uni007C.size15,uni2016.size1,uni2016.size2,uni2016.size3,uni2016.size4,uni2016.size5,uni2016.size6,uni2016.size7,uni2016.size8,uni2016.size9,uni2016.size10,uni2016.size11,uni2016.size12,uni2016.size13,uni2016.size14,uni2016.size15,uni2980.size1,uni2980.size2,uni2980.size3,uni2980.size4,uni2980.size5,uni2980.size6,uni2980.size7,uni2980.size8,uni2980.size9,uni2980.size10,uni2980.size11,uni2980.size12,uni2980.size13,uni2980.size14,uni2980.size15,uni221A.top,uni221A.ext,uni221A.bot,uni221B.top,uni221B.ext,uni221B.bot,uni221C.top,uni221C.ext,uni221C.bot,uni2308.top,uni2308.ext,uni2309.top,uni2309.ext,uni230A.ext,uni230A.bot,uni230B.ext,uni230B.bot,uni27EE.top,uni27EE.ext,uni27EE.bot,uni27EF.top,uni27EF.ext,uni27EF.bot,uni007C.ext,uni2016.ext,uni2980.ext,uni23DC.size1,uni23DC.size2,uni23DC.size3,uni23DC.size4,uni23DC.size5,uni23DC.size6,uni23DC.size7,uni23DC.size8,uni23DC.size9,uni23DC.size10,uni23DC.size11,uni23DC.size12,uni23DC.size13,uni23DC.size14,uni23DC.size15,uni23DD.size1,uni23DD.size2,uni23DD.size3,uni23DD.size4,uni23DD.size5,uni23DD.size6,uni23DD.size7,uni23DD.size8,uni23DD.size9,uni23DD.size10,uni23DD.size11,uni23DD.size12,uni23DD.size13,uni23DD.size14,uni23DD.size15,uni23B4.size1,uni23B4.size2,uni23B4.size3,uni23B4.size4,uni23B4.size5,uni23B4.size6,uni23B4.size7,uni23B4.size8,uni23B4.size9,uni23B4.size10,uni23B4.size11,uni23B4.size12,uni23B4.size13,uni23B4.size14,uni23B4.size15,uni23B5.size1,uni23B5.size2,uni23B5.size3,uni23B5.size4,uni23B5.size5,uni23B5.size6,uni23B5.size7,uni23B5.size8,uni23B5.size9,uni23B5.size10,uni23B5.size11,uni23B5.size12,uni23B5.size13,uni23B5.size14,uni23B5.size15,uni23DE.size1,uni23DE.size2,uni23DE.size3,uni23DE.size4,uni23DE.size5,uni23DE.size6,uni23DE.size7,uni23DE.size8,uni23DE.size9,uni23DE.size10,uni23DE.size11,uni23DE.size12,uni23DE.size13,uni23DE.size14,uni23DE.size15,uni23DF.size1,uni23DF.size2,uni23DF.size3,uni23DF.size4,uni23DF.size5,uni23DF.size6,uni23DF.size7,uni23DF.size8,uni23DF.size9,uni23DF.size10,uni23DF.size11,uni23DF.size12,uni23DF.size13,uni23DF.size14,uni23DF.size15,uni23DC.left,uni23DC.ext,uni23DC.right,uni23DD.left,uni23DD.ext,uni23DD.right,uni23B4.left,uni23B4.ext,uni23B4.right,uni23B5.left,uni23B5.ext,uni23B5.right,uni23DE.left,uni23DE.ext,uni23DE.mid,uni23DE.right,uni23DF.left,uni23DF.ext,uni23DF.mid,uni23DF.right,uni0030.pnum,uni0031.pnum,uni0032.pnum,uni0033.pnum,uni0034.pnum,uni0035.pnum,uni0036.pnum,uni0037.pnum,uni0038.pnum,uni0039.pnum,u1D7CE.pnum,u1D7CF.pnum,u1D7D0.pnum,u1D7D1.pnum,u1D7D2.pnum,u1D7D3.pnum,u1D7D4.pnum,u1D7D5.pnum,u1D7D6.pnum,u1D7D7.pnum,uni222B.up,uni222C.up,uni222D.up,uni2A0C.up,uni222E.up,uni222F.up,uni2230.up,uni222B.display.up,uni222C.display.up,uni222D.display.up,uni2A0C.display.up,uni222E.display.up,uni222F.display.up,uni2230.display.up,uni210F.ss02,uni2201.ss03}
\seq_const_from_clist:Nn \c_@@_glyph_non_unicode_with_type_seq
diff --git a/fonts/firamath/firamath-specimen.pdf b/fonts/firamath/firamath-specimen.pdf
index 8fc17a113a..dd2296c21b 100644
--- a/fonts/firamath/firamath-specimen.pdf
+++ b/fonts/firamath/firamath-specimen.pdf
Binary files differ
diff --git a/fonts/firamath/firamath-specimen.tex b/fonts/firamath/firamath-specimen.tex
index d9986b32bc..c1b4044798 100644
--- a/fonts/firamath/firamath-specimen.tex
+++ b/fonts/firamath/firamath-specimen.tex
@@ -69,7 +69,7 @@
{ \tex_char:D \int_eval:n {#1} \scan_stop: }
\prg_new_protected_conditional:Npnn \@@_if_char_exist:n #1 { T, F, TF }
{
- \etex_iffontchar:D \tex_font:D \int_eval:n {#1} \scan_stop:
+ \tex_iffontchar:D \tex_font:D \int_eval:n {#1} \scan_stop:
\prg_return_true:
\else:
\prg_return_false:
@@ -410,7 +410,7 @@
\fancyfoot [ R ]
{
\footnotesize \itshape
- Copyright~ \copyright{}~ 2018,~ 2019~ by~ Xiangdong~ Zeng
+ Copyright~ \copyright{}~ 2018--2020~ by~ Xiangdong~ Zeng
}
% `\headrulewidth` is not a dim variable.
\cs_set:Npn \headrulewidth { 0 pt }
@@ -439,7 +439,7 @@
\title{\bfseries\huge Fira Math\\
\itshape\Large Sans-serif font with Unicode math support}
\author{Xiangdong Zeng}
-\date{2019/06/03\quad v0.3.2}
+\date{2020/01/13\quad v0.3.3}
\begin{document}
@@ -494,7 +494,6 @@
\fonttable{Supplemental Mathematical Operators}{"2A00-"2AFF}
\fonttable{Miscellaneous Symbols and Arrows}{"2B00-"2BFF}
\fonttable{Alphabetic Presentation Forms}{"FB00-"FB4F}
-\fonttable{Arabic Presentation Forms-B}{"FE70-"FEFF}
\fonttable{Mathematical Alphanumeric Symbols}{"1D400-"1D7FF}
\fonttable{Geometric Shapes Extended}{"1F780-"1F7FF}
\fonttable*{Non-Unicode Glyphs}
diff --git a/graphics/svg/README.md b/graphics/svg/README.md
index 60a6fffae9..f03a2b4f75 100644
--- a/graphics/svg/README.md
+++ b/graphics/svg/README.md
@@ -5,7 +5,7 @@
Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016<br>
Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
- svg 2019/10/22 v2.02d
+ **svg 2020/01/13 v2.02e**
----------------------------------------------------------------------------
@@ -39,6 +39,9 @@ can be invoked.
Versions
--------
+**v2.02e** (2020/01/13)
++ fixes for new version of package **scrbase**
+
**v2.02d** (2019/10/22)
+ fix bugs with current kernel (2019/10/01) regarding file name parsing, see
https://github.com/mrpiggi/svg/issues/16
diff --git a/graphics/svg/doc/LICENSE.md b/graphics/svg/doc/LICENSE.md
index 868ed7778c..f514ada9d4 100644
--- a/graphics/svg/doc/LICENSE.md
+++ b/graphics/svg/doc/LICENSE.md
@@ -1,8 +1,8 @@
- svg and svg-extract -- Include and extract SVG pictures in LaTeX documents
+ svg and svg-extract &ndash; Handling SVG pictures in LaTeX documents
----------------------------------------------------------------------------
- Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
+ Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016<br>
Copyright (C) Falk Hanisch <hanisch.latex@outlook.com>, 2017-
----------------------------------------------------------------------------
diff --git a/graphics/svg/doc/svg.pdf b/graphics/svg/doc/svg.pdf
index 292d4b1b9b..0ee433d3e7 100644
--- a/graphics/svg/doc/svg.pdf
+++ b/graphics/svg/doc/svg.pdf
Binary files differ
diff --git a/graphics/svg/source/examples/root.C b/graphics/svg/source/examples/root.C
index 495fb60dc1..b7169abbcb 100644
--- a/graphics/svg/source/examples/root.C
+++ b/graphics/svg/source/examples/root.C
@@ -17,9 +17,9 @@ void root() {
// Draw additional text.
TText *t = new TText(); t->SetTextAlign(31);
t->DrawText(0.7, 0.9, "\\larger[2]$z(x,y) = \\frac{1}{\\sigma_x\\sigma_y"
- "\\sqrt{4\\pi^2}}\\exp\\left(- \\left(\\frac{(x-\\mu_x)^2}"
- "{2\\sigma_x^2} + \\frac{(y-\\mu_y)^2}{2\\sigma_y^2} \\right)"
- "\\right)$");
+ "\\sqrt{4\\pi^2}}\\exp\\left(- \\left(\\frac{(x-\\mu_x)^2}"
+ "{2\\sigma_x^2} + \\frac{(y-\\mu_y)^2}{2\\sigma_y^2} \\right)"
+ "\\right)$");
// Print the plot.
gPad->Print("root.svg");
diff --git a/graphics/svg/source/svg.dtx b/graphics/svg/source/svg.dtx
index 8952e01128..b2ccb234b8 100644
--- a/graphics/svg/source/svg.dtx
+++ b/graphics/svg/source/svg.dtx
@@ -1,7 +1,7 @@
-% \CheckSum{3884}
+% \CheckSum{3882}
% \iffalse meta-comment
%
-% svg and svg-extract -- Include and extract SVG pictures in LaTeX documents
+% svg and svg-extract -- Handling SVG pictures in LaTeX documents
% ----------------------------------------------------------------------------
%
% Copyright (C) Philip Ilten <philten@cern.ch>, 2012-2016
@@ -107,15 +107,15 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Right brace \} Tilde \~}
%
% \iffalse
+%<package&option>\NeedsTeXFormat{LaTeX2e}[2019-10-01]
%<*driver>
\ifx\ProvidesFile\@undefined\def\ProvidesFile#1[#2]{}\fi
\ProvidesFile{svg.dtx}[%
%</driver>
-%<package&option>\NeedsTeXFormat{LaTeX2e}[2019-10-01]
%<package&option&base>\ProvidesPackage{svg}[%
%<package&option&extract>\ProvidesPackage{svg-extract}[%
%<*driver|package&option>
- 2019/10/22 v2.02d\space%
+ 2020/01/13 v2.02e\space%
%<package&option&base> (include SVG pictures)%
%<package&option&extract> (extract independent graphics from SVG pictures)%
]
@@ -301,10 +301,10 @@ svg-extract -- Extract independent graphic files from SVG pictures
% loaded by packages \pkg{svg} and \pkg{svg-extract} to provide the
% functionallity. These are:
% \begin{description}[parsep=.5\smallskipamount]
+% \item[\pkg{iftex}]
+% for flow control depending on the used \LaTeX~engine
% \item[\pkg{scrbase}]
% for the definition and handling of options in key-value-syntax
-% \item[\pkg{ifpdf}, \pkg{ifluatex}, \pkg{ifxetex}]
-% for flow control depending on the used \LaTeX~engine
% \item[\pkg{pdftexcmds}, \pkg{shellesc}]
% to allocate the same primitives independent of the used \LaTeX~engine
% \item[\pkg{ifplatform}]
@@ -313,7 +313,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% to remove unwanted spaces in file paths
% \item[\pkg{graphicx}]
% for including the graphic~files after the \app{Inkscape}~export
-% \item[\pkg{xcolor},\pkg{transparent}]
+% \item[\pkg{xcolor}, \pkg{transparent}]
% are possibly needed by the separate \LaTeX~files created by \app{Inkscape}
% \item[\pkg{xr}]
% is used by \pkg{svg-extract} in order to include labels within the
@@ -1301,20 +1301,17 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \section{Initialization}
% \subsection{Packages}
%
-% The package \pkg{svg} requires \pkg{scrbase} for options processing, the
-% packages \pkg{ifluatex}, \pkg{ifpdf} and \pkg{ifxetex} for detecting the
-% used \LaTeX~engine, \pkg{pdftexcmds} for pdf\TeX{} primitives when using
-% Lua\TeX, \pkg{shellesc} and \pkg{ifplatform} for engine independent access to
-% systems commands and files as well as \pkg{graphicx} for the inclusion of
-% PDF~files. The usage of packages \pkg{xcolor} and \pkg{transparent}
-% can be switched of with the corresponding options. Package \pkg{svg-extract}
-% only needs package \pkg{svg} itself.
+% The package \pkg{svg} requires package \pkg{iftex} for detecting the used
+% \LaTeX~engine, \pkg{scrbase} for options processing, \pkg{pdftexcmds} for
+% pdf\TeX{} primitives when using Lua\TeX, \pkg{shellesc} and \pkg{ifplatform}
+% for engine independent access to systems commands and files as well as
+% \pkg{graphicx} for the inclusion of PDF~files. The usage of packages
+% \pkg{xcolor} and \pkg{transparent} can be switched of with the corresponding
+% options. Package \pkg{svg-extract} only needs package \pkg{svg} itself.
% \begin{macrocode}
%<*base>
-\RequirePackage{scrbase}[2016/06/14]
-\RequirePackage{ifpdf}[2016/05/14]
-\RequirePackage{ifluatex}[2016/05/16]
-\RequirePackage{ifxetex}[2010/09/12]
+\RequirePackage{iftex}[2019/11/07]
+\RequirePackage{scrbase}[2019/12/23]
\RequirePackage{pdftexcmds}[2016/05/21]
\RequirePackage{shellesc}[2016/06/07]
\RequirePackage{trimspaces}[2009/09/17]
@@ -1514,7 +1511,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\else% dpi
\def\svg@tempa##1dpi##2\@nil{%
- \ifstr{##2}{dpi}{\FamilyOptions{SVG}{inkscapedpi=##1}}{}%
+ \Ifstr{##2}{dpi}{\FamilyOptions{SVG}{inkscapedpi=##1}}{}%
}%
\lowercase{\expandafter\svg@tempa\svg@tempb dpi\@nil}%
% \end{macrocode}
@@ -1671,7 +1668,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
}{%
\def\svg@tempa##1dpi##2\@nil{\def\svg@tempa{##1}}%
\lowercase{\svg@tempa#1dpi\@nil}%
- \ifnumber{\svg@tempa}{%
+ \Ifnumber{\svg@tempa}{%
\edef\svg@ink@dpi{\svg@tempa}%
\FamilyKeyStateProcessed%
}{}%
@@ -1886,7 +1883,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svg@param@scale{1}%
\FamilyKeyStateProcessed%
}{%
- \ifisdimension{#1\p@}{%
+ \Ifisdimension{#1\p@}{%
\ifdim\dimexpr#1\p@\relax>\z@\relax%
\renewcommand*\svg@param@scale{#1}%
\FamilyKeyStateProcessed%
@@ -2387,7 +2384,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\newcommand*\svg@extension@parse[1]{%
\IfArgIsEmpty{#1}{}{%
- \@expandtwoargs\ifstr%
+ \@expandtwoargs\Ifstr%
{\detokenize\expandafter{\filename@ext}}{\detokenize\expandafter{#1}}{}{%
\begingroup%
% \end{macrocode}
@@ -2427,7 +2424,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\def\svg@extension@@parse#1.#2\@nil#3\@nil{%
\edef\svg@tempa{\svg@tempa.#1}%
\IfArgIsEmpty{#2}{}{%
- \ifstr{\detokenize{#2}}{\detokenize{#3.}}{%
+ \Ifstr{\detokenize{#2}}{\detokenize{#3.}}{%
% \end{macrocode}
% If the trailing extension is found, \cs{svg@tempb} is definied.
% \begin{macrocode}
@@ -2458,12 +2455,12 @@ svg-extract -- Extract independent graphic files from SVG pictures
}%
}{%
\edef\filename@ext{#1}%
- \ifstr{\filename@area}{./}{\let\filename@area\@empty}{}%
+ \Ifstr{\filename@area}{./}{\let\filename@area\@empty}{}%
% \end{macrocode}
% Collecting all considered path for the error message.
% \begin{macrocode}
\edef\svg@tempb{#3}%
- \ifstr{\svg@tempb}{./}{\let\svg@tempb\@empty}{}%
+ \Ifstr{\svg@tempb}{./}{\let\svg@tempb\@empty}{}%
\ifx\svg@tempb\@empty%
\svg@set@input@path%
\else%
@@ -2564,7 +2561,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% to set \opt{inkscapelatex} to \val{false}, if the output format was set to
% \val{png} with option \opt{inkscapeformat}.
% \begin{macrocode}
- \ifstr{\svg@ink@format}{png}{\FamilyOptions{SVG}{inkscapelatex=false}}{}%
+ \Ifstr{\svg@ink@format}{png}{\FamilyOptions{SVG}{inkscapelatex=false}}{}%
% \end{macrocode}
% Using \opt{distort=true} is only reasonable, if \opt{height} and \opt{width}
% are given.
@@ -2770,7 +2767,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\newcommand*\svg@param@angle{0}
\svg@local@param@def{%
\DefineFamilyKey[.param]{SVG}{angle}{%
- \ifisdimension{#1\p@}{%
+ \Ifisdimension{#1\p@}{%
\renewcommand*\svg@param@angle{#1}%
\FamilyKeyStateProcessed%
}{}%
@@ -2812,7 +2809,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
}%
\def\svg@tempb##1_tex##2\@nil{%
\IfArgIsEmpty{##1}{}{\def\filename@ext{##1}}%
- \ifstr{##2}{_tex}{\@svg@tempswatrue}{\@svg@tempswafalse}%
+ \Ifstr{##2}{_tex}{\@svg@tempswatrue}{\@svg@tempswafalse}%
}%
\@svg@tempswafalse%
\@tfor\svg@tempa:={pdf}{eps}{ps}{png}\do{%
@@ -3006,7 +3003,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% value was given.
% \begin{macrocode}
\ifx\svg@ink@dpi\relax%
- \ifstr{\svg@ink@format}{png}{%
+ \Ifstr{\svg@ink@format}{png}{%
\FamilyOptions{SVG}{inkscapedpi=300}%
}{}%
\fi%
@@ -3077,7 +3074,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% purpose, the total page number is read from the PDF~file.
% \begin{macrocode}
\newcommand*\svg@get@lastpage[1]{%
- \ifstr{\svg@ink@format}{pdf}{%
+ \Ifstr{\svg@ink@format}{pdf}{%
\begingroup%
\@tempcnta=\m@ne\relax%
\ifx\XeTeXpdfpagecount\@undefined%
@@ -4178,7 +4175,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svgx@param@width{\z@}%
\FamilyKeyStateProcessed%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@width{\svg@param@width}%
\FamilyKeyStateProcessed%
}{%
@@ -4198,7 +4195,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svgx@param@height{\z@}%
\FamilyKeyStateProcessed%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@height{\svg@param@height}%
\FamilyKeyStateProcessed%
}{%
@@ -4218,7 +4215,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\@svgx@param@distortfalse%
\FamilyKeyStateProcessed%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\if@svgx@param@distort{\if@svg@param@distort}%
\FamilyKeyStateProcessed%
}{%
@@ -4245,11 +4242,11 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svgx@param@scale{1}%
\FamilyKeyStateProcessed%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@scale{\svg@param@scale}%
\FamilyKeyStateProcessed%
}{%
- \ifisdimension{#1\p@}{%
+ \Ifisdimension{#1\p@}{%
\ifdim\dimexpr#1\p@\relax>\z@\relax%
\renewcommand*\svgx@param@scale{#1}%
\FamilyKeyStateProcessed%
@@ -4290,7 +4287,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\svg@ifvalueisrelax{#1}{%
\let\svgx@param@pretex\relax%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@pretex{\svg@param@pretex}%
}{%
\renewcommand*\svgx@param@pretex{#1}%
@@ -4303,7 +4300,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
\svg@ifvalueisrelax{#1}{%
\let\svgx@param@apptex\relax%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@apptex{\svg@param@apptex}%
}{%
\renewcommand*\svgx@param@apptex{#1}%
@@ -4456,11 +4453,11 @@ svg-extract -- Extract independent graphic files from SVG pictures
\renewcommand*\svgx@param@angle{0}%
\FamilyKeyStateProcessed%
}{%
- \ifstr{#1}{inherit}{%
+ \Ifstr{#1}{inherit}{%
\renewcommand*\svgx@param@angle{\svg@param@angle}%
\FamilyKeyStateProcessed%
}{%
- \ifisdimension{#1\p@}{%
+ \Ifisdimension{#1\p@}{%
\renewcommand*\svgx@param@angle{#1}%
\FamilyKeyStateProcessed%
}{}%
@@ -4822,7 +4819,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \begin{macrocode}
\let\svg@tempa\@empty%
\if@svg@ink@latex%
- \ifstr{\svg@ink@format}{pdf}{%
+ \Ifstr{\svg@ink@format}{pdf}{%
\ifnum\value{svg@param@lastpage}>\z@\relax%
\edef\svg@tempa{lastpage=\the\value{svg@param@lastpage}}%
\else%
@@ -4879,7 +4876,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% After creating the separate auxiliary \LaTeX~file, the actual extraction and
% conversion can be done.
% \begin{macrocode}
- \ifstr{\svgx@format\svgx@cnv@format}{}{%
+ \Ifstr{\svgx@format\svgx@cnv@format}{}{%
\PackageWarning{svg-extract}{%
Both keys `extractformat' and `convertformat' are\MessageBreak%
empty, so nothing to do so far%
@@ -5119,7 +5116,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Write everything which was found right before the macro which starts hiding
% area to the output stream and stop writing with \cs{if@svgx@preamble@write}.
% \begin{macrocode}
- \ifstr{#2}{till}{%
+ \Ifstr{#2}{till}{%
\IfArgIsEmpty{####1}{}{%
\immediate\write\svgx@stream@out{####1}%
}%
@@ -5129,7 +5126,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% Write everything which was found right after the macro which ends the hiding
% area and start writing again with \cs{if@svgx@preamble@write}.
% \begin{macrocode}
- \ifstr{#2}{from}{%
+ \Ifstr{#2}{from}{%
\IfArgIsEmpty{####2}{%
\def\svgx@read@line{}%
}{%
@@ -5311,7 +5308,7 @@ svg-extract -- Extract independent graphic files from SVG pictures
% like \val{\meta{key}=\{\meta{format}=\meta{value}\}}.
% \begin{macrocode}
\newcommand*\svgx@ifkeyandval[3]{%
- \def\svg@tempa##1=##2=##3\@nil{\ifstr{##3}{=}{#2}{#3}}%
+ \def\svg@tempa##1=##2=##3\@nil{\Ifstr{##3}{=}{#2}{#3}}%
\svg@tempa#1==\@nil%
}
% \end{macrocode}
@@ -5338,9 +5335,9 @@ svg-extract -- Extract independent graphic files from SVG pictures
% was given and there's nothing more to do. If the argument is something like
% \val{300dpix400dpi}, the third argument is the second number.
% \begin{macrocode}
- \ifnumber{##1}{%
+ \Ifnumber{##1}{%
\IfArgIsEmpty{##3}{\@svg@tempswatrue}{%
- \ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
+ \Ifnumber{##3}{\edef\svg@tempa{##1x##3}}{}%
}%
}{}%
\if@svg@tempswa\else%
@@ -5352,13 +5349,13 @@ svg-extract -- Extract independent graphic files from SVG pictures
% \val{300x400} was given. If true, the value is stored in \cs{svg@tempa}.
% \begin{macrocode}
\def\svg@tempb##1x##2x##3\@nil{%
- \ifstr{##3}{x}{%
+ \Ifstr{##3}{x}{%
\@svg@tempswatrue%
\IfArgIsEmpty{##1}{\@svg@tempswafalse}{%
- \ifnumber{##1}{}{\@svg@tempswafalse}%
+ \Ifnumber{##1}{}{\@svg@tempswafalse}%
}%
\IfArgIsEmpty{##2}{\@svg@tempswafalse}{%
- \ifnumber{##2}{}{\@svg@tempswafalse}%
+ \Ifnumber{##2}{}{\@svg@tempswafalse}%
}%
\if@svg@tempswa%
\edef\svg@tempa{##1x##2}%
@@ -5637,8 +5634,8 @@ svg-extract -- Extract independent graphic files from SVG pictures
\begingroup%
\svg@quotes@remove[{#1}]{\svg@tempa}%
\@svg@tempswatrue%
- \ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
- \ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
+ \Ifstr{\svg@tempa}{}{\@svg@tempswafalse}{%
+ \Ifstr{\svg@tempa}{./}{\@svg@tempswafalse}{%
}}%
\if@svg@tempswa%
\ShellEscape{\svg@shell@@mkdir{\svg@tempa}}%
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index 2514e10177..a8b6195bfe 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2020-02-01 pre-release 2
+Release 2020-02-02 pre-release 3
Overview
--------
diff --git a/macros/latex-dev/base/alltt.dtx b/macros/latex-dev/base/alltt.dtx
index c106b5a97f..2c9e22a124 100644
--- a/macros/latex-dev/base/alltt.dtx
+++ b/macros/latex-dev/base/alltt.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/alltt.ins b/macros/latex-dev/base/alltt.ins
index e60d1f6df3..197637dfb1 100644
--- a/macros/latex-dev/base/alltt.ins
+++ b/macros/latex-dev/base/alltt.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf
index 30aebe01bc..e60420986f 100644
--- a/macros/latex-dev/base/alltt.pdf
+++ b/macros/latex-dev/base/alltt.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf
index 31e0c133f0..801ea74acb 100644
--- a/macros/latex-dev/base/cfgguide.pdf
+++ b/macros/latex-dev/base/cfgguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cfgguide.tex b/macros/latex-dev/base/cfgguide.tex
index 651b59bc20..0edfaf8d83 100644
--- a/macros/latex-dev/base/cfgguide.tex
+++ b/macros/latex-dev/base/cfgguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt
index ea882e939f..686a62b4a5 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -4,6 +4,87 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2020-01-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssini.dtx (section{Custom series settings for main document families}):
+ Cleaning up the code for \rmfamily, \sffamily, \ttfamily and adding
+ hooks to support Japanese implementations.
+
+2020-01-05 David Carlisle <David.Carlisle@latex-project.org>
+
+ * base/ltclass.dtx: Support more write streams for
+ filecontents in LuaTeX (gh/238)
+
+2019-12-24 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * lttextcomp.dtx: Implement text companion symbols in the kernel
+ (formerly textcomp package).
+
+2019-12-21 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * fontdef.dtx:
+ Make remaing alias definition robust independently (gh/184)
+
+2019-12-20 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * classes.dtx (subsubsection{Itemize}):
+ Normalize the itemlabels by providing \itemlabelfont
+ (defaulting to \normalfont)
+
+2019-12-18 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltoutenc.dtx: improve \add@accent
+
+ * ltoutenc.dtx (subsubsection{Default encodings}):
+ Don't fake \textcompwordmark; take default from T1 instead
+
+2019-12-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * fontdef.dtx (subsection{Defaults}): Set
+ \shapedefault explicitly to "n" not \updefault
+ \bfdefault set to to "b" not "bx" (but bx for CM fonts)
+ \updefault set to to "up" not "n".
+ Part of extending the series and shape handling, see ltnews31.
+
+2019-12-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssini.dtx (section{Supporting nested emphasis}):
+ Support nested \emph sequences a generalization \eminnershape.
+ See ltnews31 for details.
+
+ * ltfssini.dtx (section{Custom series settings for main document families}):
+ Provide custom series settings a la mweights package.
+ See ltnews31 for details.
+
+2019-12-17 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfssaxes.dtx: Code for additional series and shape axes added
+ See ltnews31 for details.
+
+2019-12-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx (subsection{Macros surrounding the `definition parts'}):
+ Use \shapedefault not \updefault for extended NFSS
+
+2019-12-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * cmfonts.fdd: Provide substitutions for cmtt/bx/sl
+
+2019-12-02 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * cmfonts.fdd: Silent warning for cmss/it substitution (gh/172)}
+
+2019-11-29 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltclass.dtx: Be careful when displaying the package or
+ class info text as it may contain UTF-8 chars (gh/52)}
+
+2019-11-22 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltoutenc.dtx (subsection{The fontenc package}):
+ Avoid spurious warning if fontenc selects LY1 as default
+ encoding (gh/199)
+
2019-11-14 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
* utf8ienc.dtx (subsection{The mapping table}):
@@ -31,6 +112,11 @@ are not part of the distribution.
* ltclass.dtx (section{Implementation}): Initialize
\...-h@@k only when loading the package or class (gh/198)
+2019-10-11 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltfsstrc.dtx (subsection{Sizefunctions}):
+ Added 'alias' size function (mainly for autoinst fonts)
+
#########################
# 2019-10-01 PL 3 Release
#########################
diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx
index 1de8095a6e..b43ae84f37 100644
--- a/macros/latex-dev/base/classes.dtx
+++ b/macros/latex-dev/base/classes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{classes.drv}
%</driver>
- [2019/10/25 v1.4k
+ [2019/12/20 v1.4l
%<article|report|book> Standard LaTeX document class]
%<10pt|11pt|12pt> Standard LaTeX file (size option)]
% \end{macrocode}
@@ -2949,15 +2949,33 @@
% \begin{macro}{\labelitemiv}
% Itemization is controlled by four commands: |\labelitemi|,
% |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define
-% the labels of thevarious itemization levels: the symbols used are
+% the labels of the various itemization levels: the symbols used are
% bullet, bold en-dash, centered asterisk and centred dot.
%
% \begin{macrocode}
-\newcommand\labelitemi{\textbullet}
-\newcommand\labelitemii{\normalfont\bfseries \textendash}
-\newcommand\labelitemiii{\textasteriskcentered}
-\newcommand\labelitemiv{\textperiodcentered}
+\newcommand\labelitemi {\labelitemfont \textbullet}
+\newcommand\labelitemii {\labelitemfont \bfseries \textendash}
+\newcommand\labelitemiii{\labelitemfont \textasteriskcentered}
+\newcommand\labelitemiv{ \labelitemfont \textperiodcentered}
% \end{macrocode}
+%
+% \begin{macro}{\labelitemfont}
+% The default definition for \cs{labelitemfont} is to reset the
+% font to \cs{normalfont} so that always the same symbol is
+% produced regardless of surrounding conditions.
+%
+% \changes{v1.4l}{2019/12/20}{Normalize label fonts}
+% A possible alternative would be
+%\begin{verbatim}
+%\renewcommand\labelitemfont{%
+% \fontseries\seriesdefault
+% \fontshape\shapedefault\selectfont}
+%\end{verbatim}
+% which resets series and shape doesn't touch the family.
+% \begin{macrocode}
+\newcommand\labelitemfont{\normalfont}
+% \end{macrocode}
+% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
diff --git a/macros/latex-dev/base/classes.ins b/macros/latex-dev/base/classes.ins
index b56871b111..c6f1696a1d 100644
--- a/macros/latex-dev/base/classes.ins
+++ b/macros/latex-dev/base/classes.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf
index 46e254f6a6..9a7dfeeac2 100644
--- a/macros/latex-dev/base/classes.pdf
+++ b/macros/latex-dev/base/classes.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf
index d65fb12386..fc1f4dc5ef 100644
--- a/macros/latex-dev/base/clsguide.pdf
+++ b/macros/latex-dev/base/clsguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/clsguide.tex b/macros/latex-dev/base/clsguide.tex
index 2b3c4b3b00..4b50a0b312 100644
--- a/macros/latex-dev/base/clsguide.tex
+++ b/macros/latex-dev/base/clsguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/cmextra.ins b/macros/latex-dev/base/cmextra.ins
index 00a8554464..6490133296 100644
--- a/macros/latex-dev/base/cmextra.ins
+++ b/macros/latex-dev/base/cmextra.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/cmfonts.fdd b/macros/latex-dev/base/cmfonts.fdd
index f330394792..b7b97ccf1c 100644
--- a/macros/latex-dev/base/cmfonts.fdd
+++ b/macros/latex-dev/base/cmfonts.fdd
@@ -26,7 +26,6 @@
% extension .ins) which are part of the distribution.
%
% \fi
-% \CheckSum{295}
%
%\iffalse This is a META comment
%
@@ -68,7 +67,7 @@
%<*driver, >
\ProvidesFile{cmfonts.drv}
%</driver, >
- [2014/09/29 v2.5h Standard LaTeX font definitions]
+ [2019/12/16 v2.5j Standard LaTeX font definitions]
%
%<*driver>
\documentclass{ltxdoc}
@@ -915,8 +914,13 @@
%<+OT1cmss,Ucmss>% Font undefined, therefore substituted
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{it}
%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{it}%
-%<-nowarn> {<->sub*cmss/m/sl}{}
-%<+nowarn> {<->ssub*cmss/m/sl}{}
+% \end{macrocode}
+% Never warn about substituting \texttt{sl} for \texttt{it} because
+% that is common practise for sans serif fonts.
+% \changes{v2.5i}{2019/12/02}{Silent warning for cmss/it substitution
+% (gh/172)}
+% \begin{macrocode}
+ {<->ssub*cmss/m/sl}{}
%<+OT1cmss>\DeclareFontShape{OT1}{cmss}{m}{sl}
%<+Ucmss>\DeclareFontShape{U}{cmss}{m}{sl}%
{%
@@ -1021,6 +1025,13 @@
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{it}%
%<-nowarn> {<->sub*cmtt/m/it}{}
%<+nowarn> {<->ssub*cmtt/m/it}{}
+% \end{macrocode}
+%
+% \changes{v2.5j}{2019/12/16}{Provide substitutions for cmtt/bx/sl}
+% \begin{macrocode}
+%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{sl}
+%<-nowarn> {<->sub*cmtt/m/n}{}
+%<+nowarn> {<->ssub*cmtt/m/n}{}
%<+OT1cmtt>\DeclareFontShape{OT1}{cmtt}{bx}{ui}
%<+Ucmtt>\DeclareFontShape{U}{cmtt}{bx}{ui}%
%<-nowarn> {<->sub*cmtt/m/it}{}
diff --git a/macros/latex-dev/base/cmfonts.ins b/macros/latex-dev/base/cmfonts.ins
index b28cb7ba29..a290b22cd3 100644
--- a/macros/latex-dev/base/cmfonts.ins
+++ b/macros/latex-dev/base/cmfonts.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf
index 85eb37d861..c6b67359bb 100644
--- a/macros/latex-dev/base/cmfonts.pdf
+++ b/macros/latex-dev/base/cmfonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf
index 7c66ffc92e..e5700cd659 100644
--- a/macros/latex-dev/base/cyrguide.pdf
+++ b/macros/latex-dev/base/cyrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/cyrguide.tex b/macros/latex-dev/base/cyrguide.tex
index ed73423510..c3feb2c14b 100644
--- a/macros/latex-dev/base/cyrguide.tex
+++ b/macros/latex-dev/base/cyrguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/doc.dtx b/macros/latex-dev/base/doc.dtx
index e7f2b44c2f..31c36b88c7 100644
--- a/macros/latex-dev/base/doc.dtx
+++ b/macros/latex-dev/base/doc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -35,7 +35,7 @@
%<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
%<+package> \ProvidesPackage{doc}
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2019/11/10 v2.1k
+%<+package|shortvrb> [2019/12/16 v2.1l
%<+package|shortvrb> Standard LaTeX documentation package (FMi)]
%\catcode`\<=12
%
@@ -1448,18 +1448,19 @@
% bothered since doc-sources should be up-to-date but since the
% request came from someone called David Carlisle \ldots :-)
% \changes{v1.9y}{1996/01/26}{Support compat mode}
+% \changes{v2.1l}{2019/12/16}{Use \cs{shapedefault} not \cs{updefault} for extended NFSS}
% \begin{macrocode}
\def\MacroFont{\small
\usefont\encodingdefault
\ttdefault
\mddefault
- \updefault
+ \shapedefault
}%
\else
\def\MacroFont{\fontencoding\encodingdefault
\fontfamily\ttdefault
\fontseries\mddefault
- \fontshape\updefault
+ \fontshape\shapedefault
\small}%
\fi
}{}
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index 5d99480994..771be50d69 100644
--- a/macros/latex-dev/base/doc.pdf
+++ b/macros/latex-dev/base/doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/docstrip.dtx b/macros/latex-dev/base/docstrip.dtx
index 5ee3d1b7ae..31245a1ef8 100644
--- a/macros/latex-dev/base/docstrip.dtx
+++ b/macros/latex-dev/base/docstrip.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/docstrip.ins b/macros/latex-dev/base/docstrip.ins
index 7b68b7ce85..aa4d869dfd 100644
--- a/macros/latex-dev/base/docstrip.ins
+++ b/macros/latex-dev/base/docstrip.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -52,7 +52,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf
index 450c3bcf52..b79e99ed02 100644
--- a/macros/latex-dev/base/docstrip.pdf
+++ b/macros/latex-dev/base/docstrip.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ec.ins b/macros/latex-dev/base/ec.ins
index 196396a24a..9c10479eae 100644
--- a/macros/latex-dev/base/ec.ins
+++ b/macros/latex-dev/base/ec.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf
index 51fffb6777..cd3e045000 100644
--- a/macros/latex-dev/base/encguide.pdf
+++ b/macros/latex-dev/base/encguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/encguide.tex b/macros/latex-dev/base/encguide.tex
index ec18fab6f8..8032f2cce9 100644
--- a/macros/latex-dev/base/encguide.tex
+++ b/macros/latex-dev/base/encguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/exscale.dtx b/macros/latex-dev/base/exscale.dtx
index 575a89ce68..0267d94794 100644
--- a/macros/latex-dev/base/exscale.dtx
+++ b/macros/latex-dev/base/exscale.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/exscale.ins b/macros/latex-dev/base/exscale.ins
index cc8d8d9ae9..13941ca647 100644
--- a/macros/latex-dev/base/exscale.ins
+++ b/macros/latex-dev/base/exscale.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf
index 518c658f77..e38b5e759f 100644
--- a/macros/latex-dev/base/exscale.pdf
+++ b/macros/latex-dev/base/exscale.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fix-cm.dtx b/macros/latex-dev/base/fix-cm.dtx
index 7f770cf8c0..e4c384ee70 100644
--- a/macros/latex-dev/base/fix-cm.dtx
+++ b/macros/latex-dev/base/fix-cm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/fix-cm.ins b/macros/latex-dev/base/fix-cm.ins
index eb4547d576..0e587d80ba 100644
--- a/macros/latex-dev/base/fix-cm.ins
+++ b/macros/latex-dev/base/fix-cm.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf
index 5672a24f77..c3fc4b7734 100644
--- a/macros/latex-dev/base/fix-cm.pdf
+++ b/macros/latex-dev/base/fix-cm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf
index 5b0191c09d..f6e8ef39ca 100644
--- a/macros/latex-dev/base/fntguide.pdf
+++ b/macros/latex-dev/base/fntguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/fntguide.tex b/macros/latex-dev/base/fntguide.tex
index f3231a8183..59c6499962 100644
--- a/macros/latex-dev/base/fntguide.tex
+++ b/macros/latex-dev/base/fntguide.tex
@@ -38,7 +38,7 @@
\author{\copyright~Copyright 1995--2019, \LaTeX3 Project Team.\\
All rights reserved.}
-\date{July 2019}
+\date{October 2019}
\begin{document}
@@ -170,7 +170,7 @@ Addresses and other details can be found at:
This section describes the commands available to class and package
writers for specifying and selecting fonts.
-\subsection{Text font attributes}
+\subsection{Text font attributes} \label{sec:textfontattributes}
Every text font in \LaTeX{} has five \emph{attributes}:
\begin{description}
@@ -1214,6 +1214,13 @@ Tries to load a font from a different font shape declaration given by
\item[ssub]
Silent variant of `sub', only loggings.
+\item[alias]
+\NEWfeature{2019/10/15}
+Same as `ssub' but with a different logging message. Intended for
+cases where the substitution is only done to change the name, e.g.,
+going from \texttt{regular} series to the official name \texttt{m}. In
+that case given a warning that some shape is not found is not correct.
+
\item[subf]
Like the empty function but issues a warning that it has to substitute
the external font \m{fontarg} because the desired font shape was not
@@ -1603,6 +1610,9 @@ Example:
\DeclareFontSubstitution{T1}{cmr}{m}{n}
\end{verbatim}
+
+
+
\subsection{Case changing}
\label{sec:case}
@@ -1810,15 +1820,25 @@ with |L|, experimental encodings intended for wide distribution will
start with |E|, whilst |U| is for Unknown or Unclassified encodings.
\item
-Font family names should contain up to five lower case letters.
-Where possible, these should conform to the \emph{Filenames for fonts}
-font naming scheme.
+\NEWdescription{2019/10/15}
+Font family names should contain only upper and lower case letters and
+hyphen characters. Where possible, these should conform to the
+\emph{Filenames for fonts} font naming scheme of the scheme
+implemented by \texttt{autoinst} with suffixes such as \texttt{-LF},
+\texttt{-OsF}, etc.\ to indicate different figure styles.
\item
-Font series names should contain up to four lower case letters.
+\NEWdescription{2019/10/15}
+Font series names should contain up to four lower case letters. If at
+all possible standard names as suggested in
+Section~\ref{sec:textfontattributes} should be used. Font specific
+names such as \texttt{regular} or \texttt{black}, etc.\ should be at
+least aliased to a corresponding standard name.
\item
-Font shapes should contain up to two letters lower case.
+\NEWdescription{2019/10/15}
+Font shapes should contain up to four letters lower case. Use the
+names suggested in Section~\ref{sec:textfontattributes}.
\item
Names for symbol fonts are built from lower and upper case letters
@@ -1844,6 +1864,63 @@ fonts with existing fonts.
Note that commands defined in this way must be robust, in case they
get put into a section title or other moving argument.
+
+
+\subsection{The order of declaration}
+
+
+\NEWdescription{2019/10/15}
+\NFSS{} forces you to give all declarations in a specific order so
+that it can check whether you have specified all necessary
+information. If you declare objects in the wrong order, it will
+complain. Here are the dependencies that you have to obey:
+\begin{itemize}
+\item
+|\DeclareFontFamily| checks that the encoding scheme was previously
+declared with |\DeclareFontEncoding|.
+
+\item
+|\DeclareFontShape| checks that the font
+family was declared to be available in the requested
+encoding (|\DeclareFontFamily|).
+
+\item
+|\DeclareSymbolFont| checks that the encoding scheme is valid.
+
+\item
+|\SetSymbolFont| additionally ensures that the requested math
+version was declared (|\DeclareMathVersion|) and that the requested
+symbol font was declared (|\DeclareSymbolFont|).
+
+
+\item
+|\DeclareSymbolFontAlphabet| checks that the command name for the
+alphabet identifier can be used and that the symbol font was declared.
+
+\item
+|\DeclareMathAlphabet| checks that the chosen command name can be
+used and that the encoding scheme was declared.
+
+\item
+|\SetMathAlphabet| checks that the alphabet identifier was
+previously declared with |\DeclareMathAlphabet| or
+|\DeclareSymbolFontAlphabet| and that the math version and the
+encoding scheme are known.
+
+\item
+|\DeclareMathSymbol| makes sure that the command name can be used
+(i.e., is undefined or was previously declared to be a math symbol)
+and that the symbol font was previously declared.
+
+\item
+When the |\begin{document}| command is reached, \NFSS{} makes
+some additional checks---for example, verifying that substitution
+defaults for every encoding scheme point to known font shape group
+declarations.
+\end{itemize}
+
+
+
\section{If you need to know more \ldots}
\NEWdescription{1996/06/01}
diff --git a/macros/latex-dev/base/fontdef.dtx b/macros/latex-dev/base/fontdef.dtx
index c9c5f5d77d..d1931e8652 100644
--- a/macros/latex-dev/base/fontdef.dtx
+++ b/macros/latex-dev/base/fontdef.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -39,7 +39,7 @@
%<driver, >\ProvidesFile{fontdef.drv}
% \fi
% \ProvidesFile{fontdef.dtx}
-%<-latexrelease> [2019/09/21 v3.0d LaTeX Kernel
+%<-latexrelease> [2019/12/17 v3.0e LaTeX Kernel
% \iftrue (\else
%<text, >(Text
%<math, >(Math
@@ -253,6 +253,10 @@
\input {ot1enc.def} % <- should come after T1 for speed
\input {omsenc.def}
% \end{macrocode}
+%
+% \begin{macrocode}
+\input{ts1enc.def}
+% \end{macrocode}
% \changes{v3.0a}{2016/12/03}{(DPC) Default to TU encoding for Unicode TeX engines}
% \begin{macrocode}
\ifx\Umathchar\@undefined
@@ -265,6 +269,16 @@
\fontencoding{OT1}
% \end{macrocode}
%
+%
+%
+%
+% \begin{macrocode}
+\def\rmsubstdefault{cmr}
+\def\sfsubstdefault{cmss}
+\def\ttsubstdefault{cmtt}
+\LoadFontDefinitionFile{TS1}{cmr}
+% \end{macrocode}
+%
% \begin{macrocode}
\else
% \end{macrocode}
@@ -273,12 +287,16 @@
\input {tuenc.def}
\fontencoding{TU}
\DeclareFontSubstitution{TU}{lmr}{m}{n}
-\begingroup
-\nfss@catcodes
-\input {tulmr.fd}
-\input {tulmss.fd}
-\input {tulmtt.fd}
-\endgroup
+\LoadFontDefinitionFile{TU}{lmr}
+\LoadFontDefinitionFile{TU}{lmss}
+\LoadFontDefinitionFile{TU}{lmtt}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\rmsubstdefault{lmr}
+\def\sfsubstdefault{lmss}
+\def\ttsubstdefault{lmtt}
+\LoadFontDefinitionFile{TS1}{lmr}
% \end{macrocode}
%
% \begin{macrocode}
@@ -442,8 +460,9 @@
% \begin{macro}{\bfdefault}
% \begin{macro}{\mddefault}
% Series changing commands are influenced by the following hooks.
+% \changes{v3.0e}{2019/12/17}{Set \cs{bfdefault} to ``b''}
% \begin{macrocode}
-\newcommand\bfdefault{bx}
+\newcommand\bfdefault{b} % overwritten below
\newcommand\mddefault{m}
% \end{macrocode}
% \end{macro}
@@ -453,18 +472,39 @@
% \begin{macro}{\sldefault}
% \begin{macro}{\scdefault}
% \begin{macro}{\updefault}
+%
% Shape changing commands use the following hooks.
+% \changes{v3.0e}{2019/12/17}{Set \cs{updefault} to ``up''}
% \begin{macrocode}
\newcommand\itdefault{it}
\newcommand\sldefault{sl}
\newcommand\scdefault{sc}
-\newcommand\updefault{n}
+\newcommand\updefault{up} % overwritten below
% \end{macrocode}
% \end{macro}
% \end{macro}
% \end{macro}
% \end{macro}
%
+
+% \begin{macrocode}
+%</text>
+%<*text|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\updefault}{font defaults change}%
+\renewcommand\updefault{up}
+\renewcommand\bfdefault{b}
+%</text|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\updefault}{font defaults change}%
+%<latexrelease>
+%<latexrelease>\renewcommand\updefault{n}
+%<latexrelease>\renewcommand\bfdefault{bx}
+%<latexrelease>\EndIncludeInRelease
+%<*text>
+% \end{macrocode}
+%
% \begin{macro}{\familydefault}
% \begin{macro}{\seriesdefault}
% \begin{macro}{\shapedefault}
@@ -477,7 +517,14 @@
% \begin{macrocode}
\newcommand\familydefault{\rmdefault}
\newcommand\seriesdefault{\mddefault}
-\newcommand\shapedefault{\updefault}
+% \end{macrocode}
+% In previous releases \cs{shapedefault} pointed to \cs{updefault}
+% which resolved to \texttt{n}, but these days that is no longer
+% the case (and \texttt{up} is wrong when you want to do a
+% reset. So we now use \texttt{n} explicitly.
+% \begin{macrocode}
+% \changes{v3.0e}{2019/12/17}{Set \cs{shapedefault} explicitly to ``n''}
+\newcommand\shapedefault{n}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -854,7 +901,15 @@
\DeclareMathSymbol{\forall}{\mathord}{symbols}{"38}
\DeclareMathSymbol{\exists}{\mathord}{symbols}{"39}
\DeclareMathSymbol{\neg}{\mathord}{symbols}{"3A}
- \let\lnot=\neg
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let\lnot=\neg
+\DeclareMathSymbol{\lnot}{\mathord}{symbols}{"3A}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareMathSymbol{\flat}{\mathord}{letters}{"5B}
\DeclareMathSymbol{\natural}{\mathord}{letters}{"5C}
\DeclareMathSymbol{\sharp}{\mathord}{letters}{"5D}
@@ -908,18 +963,33 @@
\DeclareMathSymbol{\triangleright}{\mathbin}{letters}{"2E}
\DeclareMathSymbol{\bigtriangleup}{\mathbin}{symbols}{"34}
\DeclareMathSymbol{\bigtriangledown}{\mathbin}{symbols}{"35}
- \let \varbigtriangledown \bigtriangledown
- \let \varbigtriangleup \bigtriangleup
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let \varbigtriangledown \bigtriangledown
+% \let \varbigtriangleup \bigtriangleup
+\DeclareMathSymbol{\varbigtriangleup}{\mathbin}{symbols}{"34}
+\DeclareMathSymbol{\varbigtriangledown}{\mathbin}{symbols}{"35}
% \end{macrocode}
%
-% These last two synonyms are needed because the \textsf{stamryrd}
+% These last two synonyms are needed because the \textsf{stmaryrd}
% package redefines them as Operators.
%
% \begin{macrocode}
\DeclareMathSymbol{\wedge}{\mathbin}{symbols}{"5E}
- \let\land=\wedge
\DeclareMathSymbol{\vee}{\mathbin}{symbols}{"5F}
- \let\lor=\vee
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let\land=\wedge
+% \let\lor=\vee
+\DeclareMathSymbol{\land}{\mathbin}{symbols}{"5E}
+\DeclareMathSymbol{\lor}{\mathbin}{symbols}{"5F}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareMathSymbol{\cap}{\mathbin}{symbols}{"5C}
\DeclareMathSymbol{\cup}{\mathbin}{symbols}{"5B}
\DeclareMathSymbol{\ddagger}{\mathbin}{symbols}{"7A}
@@ -966,21 +1036,31 @@
\DeclareMathSymbol{\Leftrightarrow}{\mathrel}{symbols}{"2C}
\DeclareMathSymbol{\Leftarrow}{\mathrel}{symbols}{"28}
\DeclareMathSymbol{\Rightarrow}{\mathrel}{symbols}{"29}
-\DeclareRobustCommand\neq{\not=}
+ \DeclareRobustCommand\neq{\not=}
% \end{macrocode}
% As \cs{neq} is robust we should not use \cs{let} to define
% \cs{ne} as then then it would change if \cs{neq} changes.
% \changes{v3.0d}{2019/09/21}{Distangle alias (gh/184)}
% \begin{macrocode}
-%\let\ne=\neq
-\DeclareRobustCommand\ne{\not=}
+ \DeclareRobustCommand\ne{\not=}
% \end{macrocode}
-% It is ok to use \cs{let} for those declared by \cs{DeclareMathSymbol}.
+% It would ok to use \cs{let} for those declared by
+% \cs{DeclareMathSymbol} but for a cleaner interface we avoid it
+% always (just in case the internals change).
% \begin{macrocode}
\DeclareMathSymbol{\leq}{\mathrel}{symbols}{"14}
- \let\le=\leq
\DeclareMathSymbol{\geq}{\mathrel}{symbols}{"15}
- \let\ge=\geq
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let\le=\leq
+% \let\ge=\geq
+\DeclareMathSymbol{\le}{\mathrel}{symbols}{"14}
+\DeclareMathSymbol{\ge}{\mathrel}{symbols}{"15}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareMathSymbol{\succ}{\mathrel}{symbols}{"1F}
\DeclareMathSymbol{\prec}{\mathrel}{symbols}{"1E}
\DeclareMathSymbol{\approx}{\mathrel}{symbols}{"19}
@@ -992,15 +1072,32 @@
\DeclareMathSymbol{\subseteq}{\mathrel}{symbols}{"12}
\DeclareMathSymbol{\in}{\mathrel}{symbols}{"32}
\DeclareMathSymbol{\ni}{\mathrel}{symbols}{"33}
- \let\owns=\ni
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let\owns=\ni
+\DeclareMathSymbol{\owns}{\mathrel}{symbols}{"33}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareMathSymbol{\gg}{\mathrel}{symbols}{"1D}
\DeclareMathSymbol{\ll}{\mathrel}{symbols}{"1C}
\DeclareMathSymbol{\not}{\mathrel}{symbols}{"36}
\DeclareMathSymbol{\leftrightarrow}{\mathrel}{symbols}{"24}
\DeclareMathSymbol{\leftarrow}{\mathrel}{symbols}{"20}
- \let\gets=\leftarrow
\DeclareMathSymbol{\rightarrow}{\mathrel}{symbols}{"21}
- \let\to=\rightarrow
+% \end{macrocode}
+% Alias:
+% \changes{v3.0e}{2019/12/21}{Distangle alias (gh/184)}
+% \begin{macrocode}
+% \let\gets=\leftarrow
+% \let\to=\rightarrow
+\DeclareMathSymbol{\gets}{\mathrel}{symbols}{"20}
+\DeclareMathSymbol{\to}{\mathrel}{symbols}{"21}
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareMathSymbol{\mapstochar}{\mathrel}{symbols}{"37}
\DeclareRobustCommand\mapsto{\mapstochar\rightarrow}
\DeclareMathSymbol{\sim}{\mathrel}{symbols}{"18}
diff --git a/macros/latex-dev/base/format.ins b/macros/latex-dev/base/format.ins
index d060044552..2a4b68e4f6 100644
--- a/macros/latex-dev/base/format.ins
+++ b/macros/latex-dev/base/format.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -123,7 +123,7 @@ extension .ins) which are part of the distribution.
This is a generated file.
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -173,11 +173,13 @@ the system are in the document `cfgguide.tex'.
\from{ltcounts.dtx}{2ekernel}
\from{ltlength.dtx}{2ekernel}
\from{ltfssbas.dtx}{2ekernel}
+ \from{ltfssaxes.dtx}{2ekernel}
\from{ltfsstrc.dtx}{2ekernel}
-% \from{ltfsscmp.dtx}{compat,2ekernel}
+% \from{ltfsscmp.dtx}{compat,2ekernel} % only provided as part of latexrelease.sty!
\from{ltfssdcl.dtx}{compat,2ekernel}
\from{ltfssini.dtx}{compat,2ekernel}
\from{ltfntcmd.dtx}{2ekernel}
+ \from{lttextcomp.dtx}{2ekernel}
\from{ltpageno.dtx}{2ekernel}
\from{ltxref.dtx}{2ekernel}
\from{ltmiscen.dtx}{2ekernel}
@@ -207,6 +209,11 @@ the system are in the document `cfgguide.tex'.
\from{ltmath.dtx}{fleqn}}
\file{leqno.clo}{%
\from{ltmath.dtx}{leqno}}
+%%% generate the textcomp package
+ \file{textcomp.sty}{%
+ \from{lttextcomp.dtx}{TS1sty}}
+ \file{textcomp-2018-08-11.sty}{%
+ \from{lttextcomp.dtx}{TS1oldsty}}
}
\generateFile{oldlfont.sty}{t}{%
@@ -217,6 +224,7 @@ the system are in the document `cfgguide.tex'.
\from{newlfont.dtx}{package}
}
+
% expl3-based extensions
\generate{\file{ltexpl.ltx}{\from{ltexpl.dtx}{2ekernel}}}
diff --git a/macros/latex-dev/base/graphpap.dtx b/macros/latex-dev/base/graphpap.dtx
index 7e4b322f32..ac72f4dca5 100644
--- a/macros/latex-dev/base/graphpap.dtx
+++ b/macros/latex-dev/base/graphpap.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/graphpap.ins b/macros/latex-dev/base/graphpap.ins
index eb1d356edc..8563ac0f43 100644
--- a/macros/latex-dev/base/graphpap.ins
+++ b/macros/latex-dev/base/graphpap.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf
index ca875d0861..54846e7394 100644
--- a/macros/latex-dev/base/graphpap.pdf
+++ b/macros/latex-dev/base/graphpap.pdf
Binary files differ
diff --git a/macros/latex-dev/base/idx.tex b/macros/latex-dev/base/idx.tex
index 1d74b1fca0..6eb3ddad7b 100644
--- a/macros/latex-dev/base/idx.tex
+++ b/macros/latex-dev/base/idx.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ifthen.dtx b/macros/latex-dev/base/ifthen.dtx
index 1a289df1c3..f2157e094a 100644
--- a/macros/latex-dev/base/ifthen.dtx
+++ b/macros/latex-dev/base/ifthen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ifthen.ins b/macros/latex-dev/base/ifthen.ins
index acfa2fcf43..71e17c118d 100644
--- a/macros/latex-dev/base/ifthen.ins
+++ b/macros/latex-dev/base/ifthen.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf
index c08cf1dee0..616b1c350b 100644
--- a/macros/latex-dev/base/ifthen.pdf
+++ b/macros/latex-dev/base/ifthen.pdf
Binary files differ
diff --git a/macros/latex-dev/base/inputenc.dtx b/macros/latex-dev/base/inputenc.dtx
index 65f260826d..641125cc75 100644
--- a/macros/latex-dev/base/inputenc.dtx
+++ b/macros/latex-dev/base/inputenc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/inputenc.ins b/macros/latex-dev/base/inputenc.ins
index 0831576d76..4b866f2a5c 100644
--- a/macros/latex-dev/base/inputenc.ins
+++ b/macros/latex-dev/base/inputenc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf
index 2bfc9177d5..23f26939d5 100644
--- a/macros/latex-dev/base/inputenc.pdf
+++ b/macros/latex-dev/base/inputenc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lablst.tex b/macros/latex-dev/base/lablst.tex
index fd65579713..2b588cb1ae 100644
--- a/macros/latex-dev/base/lablst.tex
+++ b/macros/latex-dev/base/lablst.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/latex209.dtx b/macros/latex-dev/base/latex209.dtx
index 10de2958ba..6523e65286 100644
--- a/macros/latex-dev/base/latex209.dtx
+++ b/macros/latex-dev/base/latex209.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/latex209.ins b/macros/latex-dev/base/latex209.ins
index 7bd0eed06a..7e51808ae0 100644
--- a/macros/latex-dev/base/latex209.ins
+++ b/macros/latex-dev/base/latex209.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/latexchanges.pdf b/macros/latex-dev/base/latexchanges.pdf
index 7be0efc653..ecaba431fe 100644
--- a/macros/latex-dev/base/latexchanges.pdf
+++ b/macros/latex-dev/base/latexchanges.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexchanges.tex b/macros/latex-dev/base/latexchanges.tex
index 3c04b9362e..54ceb498fc 100644
--- a/macros/latex-dev/base/latexchanges.tex
+++ b/macros/latex-dev/base/latexchanges.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2019
+% Copyright (C) 2015-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/latexrelease.dtx b/macros/latex-dev/base/latexrelease.dtx
index cfb1bff8aa..4a59e76e30 100644
--- a/macros/latex-dev/base/latexrelease.dtx
+++ b/macros/latex-dev/base/latexrelease.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/latexrelease.ins b/macros/latex-dev/base/latexrelease.ins
index e515143740..2f6d4cdb40 100644
--- a/macros/latex-dev/base/latexrelease.ins
+++ b/macros/latex-dev/base/latexrelease.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -115,8 +115,10 @@ extension .ins) which are part of the distribution.
\from{ltfssini.dtx} {latexrelease}%
\from{fontdef.dtx} {latexrelease}% (covering fontmath and fonttext)
\from{ltfntcmd.dtx} {latexrelease}% empty
+ \from{lttextcomp.dtx} {latexrelease}%
\from{ltfssbas.dtx} {latexrelease}%
- \from{ltfsstrc.dtx} {latexrelease}% empty
+ \from{ltfssaxes.dtx} {latexrelease}%
+ \from{ltfsstrc.dtx} {latexrelease}%
\from{ltfsscmp.dtx} {latexrelease}%
\from{ltpageno.dtx} {latexrelease}% empty
\from{ltxref.dtx} {latexrelease}% empty
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index 3ce4c2981a..7861985f57 100644
--- a/macros/latex-dev/base/latexrelease.pdf
+++ b/macros/latex-dev/base/latexrelease.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latexsym.dtx b/macros/latex-dev/base/latexsym.dtx
index 52b12e0c36..36a3346f3e 100644
--- a/macros/latex-dev/base/latexsym.dtx
+++ b/macros/latex-dev/base/latexsym.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/latexsym.ins b/macros/latex-dev/base/latexsym.ins
index 7b42cf9132..f354e188b7 100644
--- a/macros/latex-dev/base/latexsym.ins
+++ b/macros/latex-dev/base/latexsym.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -87,7 +87,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf
index 25e4db36ac..0de636570d 100644
--- a/macros/latex-dev/base/latexsym.pdf
+++ b/macros/latex-dev/base/latexsym.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf
index 5f5bd10430..a8636e9213 100644
--- a/macros/latex-dev/base/lb2.pdf
+++ b/macros/latex-dev/base/lb2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/letter.dtx b/macros/latex-dev/base/letter.dtx
index b8a8f0a257..ee9a87cf84 100644
--- a/macros/latex-dev/base/letter.dtx
+++ b/macros/latex-dev/base/letter.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/letter.ins b/macros/latex-dev/base/letter.ins
index b71c06b95a..9143e88c13 100644
--- a/macros/latex-dev/base/letter.ins
+++ b/macros/latex-dev/base/letter.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf
index 347fa214b0..dfca14c9f9 100644
--- a/macros/latex-dev/base/letter.pdf
+++ b/macros/latex-dev/base/letter.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf
index 7ee5ba62fd..9af35fe4e4 100644
--- a/macros/latex-dev/base/lgc2.pdf
+++ b/macros/latex-dev/base/lgc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltalloc.dtx b/macros/latex-dev/base/ltalloc.dtx
index 4932dc707b..d18df9ad89 100644
--- a/macros/latex-dev/base/ltalloc.dtx
+++ b/macros/latex-dev/base/ltalloc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltbibl.dtx b/macros/latex-dev/base/ltbibl.dtx
index 0823620f99..a3a25308fe 100644
--- a/macros/latex-dev/base/ltbibl.dtx
+++ b/macros/latex-dev/base/ltbibl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx
index 7e1c2c38b0..61ea87235a 100644
--- a/macros/latex-dev/base/ltboxes.dtx
+++ b/macros/latex-dev/base/ltboxes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index 9dc65d2bb9..e14fb1ef40 100644
--- a/macros/latex-dev/base/ltclass.dtx
+++ b/macros/latex-dev/base/ltclass.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2019/10/18 v1.3d LaTeX Kernel (Class & Package Interface)]
+ [2020/01/05 v1.3f LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -791,19 +791,69 @@
\@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
\@onlypreamble\ProvidesPackage
% \end{macrocode}
+% \end{macro}
+%
+%
%
+% \begin{macro}{\@pr@videpackage}
+% This is the helper command for \cs{ProvidesPackage}. It tries to
+% be cautious when handling the identification string in case it
+% contains UTF-8 characters.
+% \changes{v1.3e}{2019/11/29}{Protect package info text (gh/52)}
% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\@pr@videpackage}{Protection for package info}%
\def\@pr@videpackage[#1]{%
- \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
+ \expandafter\protected@xdef % <-- protected...
+ \csname ver@\@currname.\@currext\endcsname{#1}%
\ifx\@currext\@clsextension
\typeout{Document Class: \@gtempa\space#1}%
\else
- \wlog{Package: \@gtempa\space#1}%
+ \protected@wlog{Package: \@gtempa\space#1}% <--- protected
\fi}
-\@onlypreamble\@pr@videpackage
% \end{macrocode}
% \end{macro}
%
+%
+%
+% \begin{macro}{\protected@wlog}
+% This is like plain \TeX's \cs{wlog} but gracefully handles
+% protected commands.
+% \begin{macrocode}
+\long\def\protected@wlog#1{\begingroup
+ \set@display@protect
+ \immediate \write \m@ne {#1}\endgroup }
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@pr@videpackage}{Protection for package info}%
+%<latexrelease>
+%<latexrelease>\def\@pr@videpackage[#1]{%
+%<latexrelease> \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
+%<latexrelease> \ifx\@currext\@clsextension
+%<latexrelease> \typeout{Document Class: \@gtempa\space#1}%
+%<latexrelease> \else
+%<latexrelease> \wlog{Package: \@gtempa\space#1}%
+%<latexrelease> \fi}
+%<latexrelease>\let\protected@wlog\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\@onlypreamble\@pr@videpackage
+% \end{macrocode}
+%
+%
+%
% \begin{macro}{\ProvidesClass}
% Like |\ProvidesPackage|, but for classes.
% \begin{macrocode}
@@ -1731,6 +1781,7 @@
% filecontents environment file name}
% \changes{v1.3b}{2019/08/27}{Make various commands robust}
% \changes{v1.3c}{2019/09/11}{Support optional argument for filecontents}
+% \changes{v1.3f}{2020/01/05}{Support more write streams in LuaTeX gh/238}
%
%</2ekernel>
%<*2ekernel|latexrelease>
@@ -1805,6 +1856,11 @@
\gdef\filec@ntents#1{%
\set@curr@file{\filec@ntents@checkdir#1}%
\edef\q@curr@file{\expandafter\quote@name\expandafter{\@curr@file}}%
+% \end{macrocode}
+%
+% Lua\TeX\ has more writes (and 18 is safe here).
+% \begin{macrocode}
+ \chardef\reserved@c\ifx\directlua\@undefined 15 \else 127 \fi%
\openin\@inputcheck\q@curr@file \space %
\ifeof\@inputcheck%
\@latex@warning@no@line%
@@ -1814,8 +1870,7 @@
% \changes{v1.0y}{1997/10/10}
% {\cs{reserved@c} not \cs{verbatim@out} to save a csname}
% \begin{macrocode}
- \chardef\reserved@c15 %
- \ch@ck7\reserved@c\write%
+ \ch@ck7\reserved@c\write\relax%
\immediate\openout\reserved@c\q@curr@file\relax%
\else%
% \end{macrocode}
@@ -1853,8 +1908,7 @@
% (hopefully) safe. If not opened that means we are going to write
% on the terminal.
% \begin{macrocode}
- \chardef\reserved@c15 %
- \ch@ck7\reserved@c\write%
+ \ch@ck7\reserved@c\write\relax%
\if@filesw% % Foul ... trying to overwrite \jobname!
\@latex@error{Trying to overwrite `\jobname.tex'}{You can't %
write to the file you a reading from!\MessageBreak%
diff --git a/macros/latex-dev/base/ltcntrl.dtx b/macros/latex-dev/base/ltcntrl.dtx
index eb1b931957..b779d27fb6 100644
--- a/macros/latex-dev/base/ltcntrl.dtx
+++ b/macros/latex-dev/base/ltcntrl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltcounts.dtx b/macros/latex-dev/base/ltcounts.dtx
index 8217b3f91b..4759fdfee6 100644
--- a/macros/latex-dev/base/ltcounts.dtx
+++ b/macros/latex-dev/base/ltcounts.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx
index 44d7bfde64..0cc925bb74 100644
--- a/macros/latex-dev/base/ltdefns.dtx
+++ b/macros/latex-dev/base/ltdefns.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltdirchk.dtx b/macros/latex-dev/base/ltdirchk.dtx
index 744759f317..8cc21eca90 100644
--- a/macros/latex-dev/base/ltdirchk.dtx
+++ b/macros/latex-dev/base/ltdirchk.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/lterror.dtx b/macros/latex-dev/base/lterror.dtx
index 3f6c436970..2583b1f348 100644
--- a/macros/latex-dev/base/lterror.dtx
+++ b/macros/latex-dev/base/lterror.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx
index 92676a1298..c3f64306ad 100644
--- a/macros/latex-dev/base/ltexpl.dtx
+++ b/macros/latex-dev/base/ltexpl.dtx
@@ -66,7 +66,7 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/02/01}%
+%<latexrelease>\IncludeInRelease{2020/02/02}%
%<latexrelease> {expl3}{Pre-load expl3}%
\IfFileExists{expl3.ltx}
{%
diff --git a/macros/latex-dev/base/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx
index 7c43abc079..65995c292f 100644
--- a/macros/latex-dev/base/ltfiles.dtx
+++ b/macros/latex-dev/base/ltfiles.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx
index f4f97ba020..a6468178fd 100644
--- a/macros/latex-dev/base/ltfinal.dtx
+++ b/macros/latex-dev/base/ltfinal.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -1124,6 +1124,24 @@
% \end{macro}
% \end{macro}
%
+% \subsection{Some last minute initializations \ldots}
+%
+% This initializes the 2020/02/02 extensions to NFSS after any changes
+% in the preamble.
+% \begin{macrocode}
+\AtBeginDocument{\reinstall@nfss@defs\init@series@setup}
+% \end{macrocode}
+%
+%
+%
+% \subsection{Do some temporary work for pre-release}
+%
+% This is a good place to load code that hasn't yet been
+% integrated into the other files \ldots
+% \begin{macrocode}
+%\input ...
+% \end{macrocode}
+%
% \subsection{Dumping the format}
% Finally we make |@| into a letter, ensure the format will
% be in the `normal' error mode, and dump everything into the
diff --git a/macros/latex-dev/base/ltfloat.dtx b/macros/latex-dev/base/ltfloat.dtx
index 7e0c35df22..23c3f464d3 100644
--- a/macros/latex-dev/base/ltfloat.dtx
+++ b/macros/latex-dev/base/ltfloat.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltfntcmd.dtx b/macros/latex-dev/base/ltfntcmd.dtx
index e214057bc4..0869be20d5 100644
--- a/macros/latex-dev/base/ltfntcmd.dtx
+++ b/macros/latex-dev/base/ltfntcmd.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfntcmd.dtx}
- [2019/01/27 v3.4b LaTeX Kernel (Font commands)]
+ [2019/12/17 v3.4c LaTeX Kernel (Font commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfntcmd.dtx}
@@ -391,6 +391,35 @@
% \end{macro}
% \end{macro}
% \end{macro}
+
+
+% \begin{macro}{textulc}
+% \begin{macro}{textsw}
+% \begin{macro}{textssc}
+%
+% \changes{v3.4c}{2019/12/17}{Macro added}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\textulc}{Additional text commands}%
+\DeclareTextFontCommand{\textulc}{\ulcshape}
+\DeclareTextFontCommand{\textsw}{\swshape}
+\DeclareTextFontCommand{\textssc}{\sscshape}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\textulc}{Additional text commands}%
+%<latexrelease>
+%<latexrelease>\let\textulc\@undefined
+%<latexrelease>\let\textsw\@undefined
+%<latexrelease>\let\textssc\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
% \begin{macro}{\emph}
% \changes{v3.0a}{1993/12/11}{Macro changed}
diff --git a/macros/latex-dev/base/ltfssaxes.dtx b/macros/latex-dev/base/ltfssaxes.dtx
new file mode 100644
index 0000000000..62c97f389d
--- /dev/null
+++ b/macros/latex-dev/base/ltfssaxes.dtx
@@ -0,0 +1,1231 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% 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: ltfssbas.dtx
+%% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
+%
+%<*driver>
+% \fi
+%
+%
+\ProvidesFile{ltfssaxes.dtx}
+ [2019/12/16 v1.0a LaTeX Kernel (NFSS Axes handing)]
+% \iffalse
+\documentclass{ltxdoc}
+\begin{document}
+\DocInput{ltfssaxes.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+%
+%
+% \GetFileInfo{ltfssaxes.dtx}
+% \title{A new font selection scheme for \TeX{} macro packages\\
+% (Axes Handling)\thanks
+% {This file has version number
+% \fileversion\ dated \filedate}}
+%
+% \author{Frank Mittelbach}
+%
+% \MaintainedByLaTeXTeam{latex}
+% \maketitle
+%
+% This file contains the implementation for handling extra axes
+% splitting the series and the values into sub-categories. selection
+% commands. See other parts of the \LaTeX\ distribution, or \emph{The
+% \LaTeX\ Companion} for higher level documentation of the
+% \LaTeX\ Font Selection Scheme.
+%
+%
+%
+% \StopEventually{}
+%
+% Everything in the this file got introduced 2020/02/02, so we do a
+% single rollback (for now).
+% \begin{macrocode}
+%<*2ekernel>
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}%
+% \end{macrocode}
+%
+%
+%
+% \section{Changing the font series}
+%
+% In the original NFSS implementation the series was a single
+% attribute stored in \cs{f@series} and so one always had to specify
+% both weight and width together. This means it was impossible to
+% typeset, a paragraph in a condensed font and inside have a few words
+% in bold weight (but still condensed) without doing this manually by
+% requesting \verb=\fontseries{bc}\selectfont=.
+%
+% The new implementation now works differently by looking both at the
+% current value of \cs{f@series} and the requested new series and out
+% of that combination selects a resulting series value. Thus, if the
+% current series is \texttt{c} and we ask for \texttt{b} we now get
+% \texttt{bc}.
+%
+% This is done by consulting a simple lookup table. This table is
+% configurable (though most likely that flexibility will seldom of
+% ever be needed) Adding or changing entries in this table are done
+% with \cs{DeclareFontSeriesChangeRule}.
+%
+% \subsection{The series lookup table}
+%
+%
+% \begin{macro}{\DeclareFontSeriesChangeRule}
+% The \cs{DeclareFontSeriesChangeRule} defines entries in a simple
+% database (implemented as a set of commands) that define mappings
+% between from an existing series and requested new series and maps
+% that to a result series (and additionally offers an alternative
+% if the desired one is not existing):
+% \begin{itemize}
+% \item[\texttt{\#1}] current \cs{f@series}
+% \item[\texttt{\#2}] requested new series
+% \item[\texttt{\#3}] result (if that exist for the given font family
+% \item[\texttt{\#4}] alternative result (if \texttt{\#3} does not exist)
+% \end{itemize}
+% If an \texttt{.fd} file has its own substitution rules then
+% \texttt{\#3} exist and thus \texttt{\#4} is not applied.
+%
+% If there is no matching database entry or if neither the result
+% nor the alternate result exist in the font family the requested
+% new series is used (which then may trigger substitutions later on.
+% \begin{macrocode}
+\def\DeclareFontSeriesChangeRule#1#2#3#4{%
+ \@namedef{series@#1@#2}{{#3}{#4}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Mapping rules for series changes}
+%
+% The rules set up use explicit series values not \cs{..default}
+% indirections; my current feeling is that this is in fact better.
+%
+% With 9 weights and 9 width classes this table is getting a bit large
+% in the end (324 entries) but on the other hand it doesn't change and
+% accessing speed and it is fast this way.
+%
+% We could alternatively split the axis and maintain weight and width
+% separately, but that would take more processing time and would not
+% allow for setting up explicit exceptions nicely (not sure that that
+% would ever get used though).
+%
+% Design considerations for mapping entries:
+% \begin{itemize}
+% \item
+%
+% We make \texttt{m} to reset both weight and width (as this is
+% how it always worked). To reset just the width \texttt{?m} is
+% provided and to reset just the weight \texttt{m?}.
+%
+% \item
+%
+% We do support ``\texttt{m}\textit{width}'' and
+% ``\textit{weight}\texttt{m}'', e.g., \texttt{mec} to mean ``go to
+% medium weight and extra-condensed width''. At the end of the
+% process we automatically drop any leftover \texttt{m} in the
+% series name (unless it is just a single \texttt{m}).
+%
+%
+% \item
+%
+% If there is no table entry then the target series is used
+% unconditionally. This means that any request to set both weight
+% and width (e.g. \texttt{bx} or \texttt{ulc}) needs no table
+% entries.
+% For that reason there are no entries which have a weight+width as
+% request (i.e., second argument).
+%
+% In particular this is also true for cases involving \texttt{m},
+% e.g., \texttt{bm} (bold medium width) which automatially gets
+% reduced result in \texttt{b} or \texttt{mc} (medium weight
+% condensed) which becomes \texttt{c} as a result.
+%
+% \item
+%
+% Only a few entries have ``alterative'' values and perhaps most of
+% them should get dropped. Or maybe not \ldots{} needs some thought
+% perhaps.
+%
+% The idea is that you don't want the normal substitution to kick
+% in because that would reset the shape first and it may be better
+% to stay with \texttt{b} when a change to \texttt{c} is requested
+% and \texttt{bc} doesn't exist, than to go to first change the
+% shape to \texttt{n} and then find that \texttt{bc/n} doesn't
+% exist either and thus ending up wth \texttt{m/n}.
+%
+% \item
+%
+% Also: while I did set up all nine standard weight values from
+% \texttt{ul} to \texttt{ub} I only bothered to provide entries for
+% \texttt{ec}, \texttt{sc}, \texttt{c} and \texttt{x}, because other levels of
+% compression/expansion are not in any real fonts that I know.
+%
+% Could and perhaps should be eventually extended to cover the
+% whole set.
+%
+% \end{itemize}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {bc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {bc}{c}{bc}{}
+\DeclareFontSeriesChangeRule {bc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {bc}{ec}{bec} {bc}
+\DeclareFontSeriesChangeRule {bc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {bc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {bc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {bc}{sc}{bsc} {bc}
+\DeclareFontSeriesChangeRule {bc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {bc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {bc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {bc}{x}{bx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {bx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {bx}{c} {bc} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {bx}{ec} {bec} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {bx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {bx}{sb} {sbx} {}
+\DeclareFontSeriesChangeRule {bx}{sc} {bsc} {bx} %<-----
+\DeclareFontSeriesChangeRule {bx}{sl}{slx} {}
+\DeclareFontSeriesChangeRule {bx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {bx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {bx}{x}{bx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {b}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{c} {bc} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{ec} {bec} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{sb} {sb} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{sc} {bsc} {b} %<-----
+\DeclareFontSeriesChangeRule {b}{x} {bx} {b} %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {c}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {c}{b}{bc}{}
+\DeclareFontSeriesChangeRule {c}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {c}{el}{elc}{}
+\DeclareFontSeriesChangeRule {c}{l}{lc}{}
+\DeclareFontSeriesChangeRule {c}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {c}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {c}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {c}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {c}{x}{x}{m} %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ebc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ebc}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {ebc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ebc}{ec}{ebec}{ebc}
+\DeclareFontSeriesChangeRule {ebc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ebc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ebc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ebc}{sc}{ebsc}{ebc}
+\DeclareFontSeriesChangeRule {ebc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ebc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ebc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ebc}{x}{ebx}{}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ec}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {ec}{b}{bec}{}
+\DeclareFontSeriesChangeRule {ec}{eb}{ebec}{}
+\DeclareFontSeriesChangeRule {ec}{el}{elec}{}
+\DeclareFontSeriesChangeRule {ec}{l}{lec}{}
+\DeclareFontSeriesChangeRule {ec}{sb}{sbec}{}
+\DeclareFontSeriesChangeRule {ec}{sl}{slec}{}
+\DeclareFontSeriesChangeRule {ec}{ub}{ubec}{}
+\DeclareFontSeriesChangeRule {ec}{ul}{ulec}{}
+\DeclareFontSeriesChangeRule {ec}{x}{x}{m} %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {sc}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {sc}{b}{bsc}{}
+\DeclareFontSeriesChangeRule {sc}{eb}{ebsc}{}
+\DeclareFontSeriesChangeRule {sc}{el}{elsc}{}
+\DeclareFontSeriesChangeRule {sc}{l}{lsc}{}
+\DeclareFontSeriesChangeRule {sc}{sb}{sbsc}{}
+\DeclareFontSeriesChangeRule {sc}{sl}{slsc}{}
+\DeclareFontSeriesChangeRule {sc}{ub}{ubsc}{}
+\DeclareFontSeriesChangeRule {sc}{ul}{ulsc}{}
+\DeclareFontSeriesChangeRule {sc}{x}{x}{m} %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ebx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ebx}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {ebx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ebx}{ec}{ebec}{}
+\DeclareFontSeriesChangeRule {ebx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ebx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ebx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ebx}{sc}{ebsc}{}
+\DeclareFontSeriesChangeRule {ebx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ebx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ebx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ebx}{x}{ebx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {eb}{c}{ebc}{}
+\DeclareFontSeriesChangeRule {eb}{ec}{ebec}{}
+\DeclareFontSeriesChangeRule {eb}{sc}{ebsc}{}
+\DeclareFontSeriesChangeRule {eb}{x}{ebx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {elc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {elc}{c}{elc}{}
+\DeclareFontSeriesChangeRule {elc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {elc}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {elc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {elc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {elc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {elc}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {elc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {elc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {elc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {elc}{x}{elx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {elx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {elx}{c}{elc}{}
+\DeclareFontSeriesChangeRule {elx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {elx}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {elx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {elx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {elx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {elx}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {elx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {elx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {elx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {elx}{x}{elx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {el}{c}{elc}{}
+\DeclareFontSeriesChangeRule {el}{ec}{elec}{}
+\DeclareFontSeriesChangeRule {el}{sc}{elsc}{}
+\DeclareFontSeriesChangeRule {el}{x}{elx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {lc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {lc}{c}{lc}{}
+\DeclareFontSeriesChangeRule {lc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {lc}{ec}{lec}{}
+\DeclareFontSeriesChangeRule {lc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {lc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {lc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {lc}{sc}{lsc}{}
+\DeclareFontSeriesChangeRule {lc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {lc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {lc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {lc}{x}{lx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {lx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {lx}{c}{lc}{}
+\DeclareFontSeriesChangeRule {lx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {lx}{ec}{lec}{}
+\DeclareFontSeriesChangeRule {lx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {lx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {lx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {lx}{sc}{lsc}{}
+\DeclareFontSeriesChangeRule {lx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {lx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {lx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {lx}{x}{lx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {l}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {l}{b} {b} {bx} %<-----
+\DeclareFontSeriesChangeRule {l}{c} {lc} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{ec} {lec} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{sb} {sb} {b} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{sc} {lsc} {l} % ? %<-----
+\DeclareFontSeriesChangeRule {l}{x} {lx} {l} % ? %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {m}{bx} {bx} {b} %<-----
+\DeclareFontSeriesChangeRule {m}{b} {b} {bx} %<-----
+\DeclareFontSeriesChangeRule {m}{c} {c} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{ec} {ec} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{l} {l} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{sb} {sb} {b} %<-----
+\DeclareFontSeriesChangeRule {m}{sc} {sc} {m} %<-----
+\DeclareFontSeriesChangeRule {m}{x} {x} {m} %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {sbc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {sbc}{c}{sbc}{}
+\DeclareFontSeriesChangeRule {sbc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {sbc}{ec}{sbec}{sbc}
+\DeclareFontSeriesChangeRule {sbc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {sbc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {sbc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {sbc}{sc}{sbsc}{sbc}
+\DeclareFontSeriesChangeRule {sbc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {sbc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {sbc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {sbc}{x}{sbx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {sbx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {sbx}{c}{sbc}{}
+\DeclareFontSeriesChangeRule {sbx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {sbx}{ec}{sbec}{}
+\DeclareFontSeriesChangeRule {sbx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {sbx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {sbx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {sbx}{sc}{sbsc}{}
+\DeclareFontSeriesChangeRule {sbx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {sbx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {sbx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {sbx}{x}{sbx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {sb}{c} {sbc} {bc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{ec} {sbec} {sbc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{sc} {sbsc} {sbc} %? %<-----
+\DeclareFontSeriesChangeRule {sb}{x} {sbx} {bx} %? %<-----
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {slc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {slc}{c}{slc}{}
+\DeclareFontSeriesChangeRule {slc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {slc}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {slc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {slc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {slc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {slc}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {slc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {slc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {slc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {slc}{x}{slx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {slx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {slx}{c}{slc}{}
+\DeclareFontSeriesChangeRule {slx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {slx}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {slx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {slx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {slx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {slx}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {slx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {slx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {slx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {slx}{x}{slx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {sl}{c}{slc}{}
+\DeclareFontSeriesChangeRule {sl}{ec}{slec}{}
+\DeclareFontSeriesChangeRule {sl}{sc}{slsc}{}
+\DeclareFontSeriesChangeRule {sl}{x}{slx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ubc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ubc}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ubc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ubc}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ubc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ubc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ubc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ubc}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ubc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ubc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ubc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ubc}{x}{ubx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ubx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ubx}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ubx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ubx}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ubx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ubx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ubx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ubx}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ubx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ubx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ubx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ubx}{x}{ubx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ub}{c}{ubc}{}
+\DeclareFontSeriesChangeRule {ub}{ec}{ubec}{}
+\DeclareFontSeriesChangeRule {ub}{sc}{ubsc}{}
+\DeclareFontSeriesChangeRule {ub}{x}{ubx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ulc}{b}{bc}{}
+\DeclareFontSeriesChangeRule {ulc}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ulc}{eb}{ebc}{}
+\DeclareFontSeriesChangeRule {ulc}{ec}{ulec}{ulc}
+\DeclareFontSeriesChangeRule {ulc}{el}{elc}{}
+\DeclareFontSeriesChangeRule {ulc}{l}{lc}{}
+\DeclareFontSeriesChangeRule {ulc}{sb}{sbc}{}
+\DeclareFontSeriesChangeRule {ulc}{sc}{ulsc}{ulc}
+\DeclareFontSeriesChangeRule {ulc}{sl}{slc}{}
+\DeclareFontSeriesChangeRule {ulc}{ub}{ubc}{}
+\DeclareFontSeriesChangeRule {ulc}{ul}{ulc}{}
+\DeclareFontSeriesChangeRule {ulc}{x}{ulx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ulx}{b}{bx}{}
+\DeclareFontSeriesChangeRule {ulx}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ulx}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {ulx}{ec}{ulec}{}
+\DeclareFontSeriesChangeRule {ulx}{el}{elx}{}
+\DeclareFontSeriesChangeRule {ulx}{l}{lx}{}
+\DeclareFontSeriesChangeRule {ulx}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {ulx}{sc}{ulsc}{}
+\DeclareFontSeriesChangeRule {ulx}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {ulx}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {ulx}{ul}{ulx}{}
+\DeclareFontSeriesChangeRule {ulx}{x}{ulx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {ul}{c}{ulc}{}
+\DeclareFontSeriesChangeRule {ul}{ec}{ulec}{}
+\DeclareFontSeriesChangeRule {ul}{sc}{ulsc}{}
+\DeclareFontSeriesChangeRule {ul}{x}{ulx}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {x}{b}{bx}{}
+\DeclareFontSeriesChangeRule {x}{c}{c}{}
+\DeclareFontSeriesChangeRule {x}{eb}{ebx}{}
+\DeclareFontSeriesChangeRule {x}{ec}{ec}{}
+\DeclareFontSeriesChangeRule {x}{el}{elx}{}
+\DeclareFontSeriesChangeRule {x}{l}{lx}{}
+\DeclareFontSeriesChangeRule {x}{sb}{sbx}{}
+\DeclareFontSeriesChangeRule {x}{sc}{sc}{}
+\DeclareFontSeriesChangeRule {x}{sl}{slx}{}
+\DeclareFontSeriesChangeRule {x}{ub}{ubx}{}
+\DeclareFontSeriesChangeRule {x}{ul}{ulx}{}
+% \end{macrocode}
+%
+%
+% Special rules for \texttt{lm} etc.\ aren't needed because if the
+% target \texttt{lm} is request it will used if there is no rule
+% and that id then reduced to \texttt{l}
+% automatically. Same for \texttt{mc} and friends. Only \texttt{?m}
+% and \texttt{m?} need rules.
+%
+% So here are the special rules for \texttt{m?}:
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {bc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {bec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {bsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {bx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {b}{m?}{m}{}
+\DeclareFontSeriesChangeRule {c}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ebc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ebec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ebsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ebx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {eb}{m?}{m}{}
+\DeclareFontSeriesChangeRule {ec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {elc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {elec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {elsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {elx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {el}{m?}{m}{}
+\DeclareFontSeriesChangeRule {lc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {lec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {lsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {lx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {l}{m?}{m}{}
+\DeclareFontSeriesChangeRule {m}{m?}{m}{}
+\DeclareFontSeriesChangeRule {sbc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {sbec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {sbsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {sbx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {sb}{m?}{m}{}
+\DeclareFontSeriesChangeRule {sc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {slc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {slec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {slsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {slx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {sl}{m?}{m}{}
+\DeclareFontSeriesChangeRule {ubc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ubec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ubsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ubx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {ub}{m?}{ub}{}
+\DeclareFontSeriesChangeRule {ulc}{m?}{c}{}
+\DeclareFontSeriesChangeRule {ulec}{m?}{ec}{}
+\DeclareFontSeriesChangeRule {ulsc}{m?}{sc}{}
+\DeclareFontSeriesChangeRule {ulx}{m?}{x}{}
+\DeclareFontSeriesChangeRule {ul}{m?}{m}{}
+\DeclareFontSeriesChangeRule {x}{m?}{x}{}
+% \end{macrocode}
+%
+% And there the special rules for \texttt{?m}:
+% \begin{macrocode}
+\DeclareFontSeriesChangeRule {bc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bec}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bsc}{?m}{b}{}
+\DeclareFontSeriesChangeRule {bx}{?m}{b}{}
+\DeclareFontSeriesChangeRule {b}{?m}{b}{}
+\DeclareFontSeriesChangeRule {c}{?m}{m}{}
+\DeclareFontSeriesChangeRule {ebc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebec}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebsc}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ebx}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {eb}{?m}{eb}{}
+\DeclareFontSeriesChangeRule {ec}{?m}{m}{}
+\DeclareFontSeriesChangeRule {elc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elec}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elsc}{?m}{el}{}
+\DeclareFontSeriesChangeRule {elx}{?m}{el}{}
+\DeclareFontSeriesChangeRule {el}{?m}{el}{}
+\DeclareFontSeriesChangeRule {lc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lec}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lsc}{?m}{l}{}
+\DeclareFontSeriesChangeRule {lx}{?m}{l}{}
+\DeclareFontSeriesChangeRule {l}{?m}{l}{}
+\DeclareFontSeriesChangeRule {m}{?m}{m}{}
+\DeclareFontSeriesChangeRule {sbc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbec}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbsc}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sbx}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sb}{?m}{sb}{}
+\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
+\DeclareFontSeriesChangeRule {sc}{?m}{m}{}
+\DeclareFontSeriesChangeRule {slc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slec}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slsc}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {slx}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {sl}{?m}{sl}{}
+\DeclareFontSeriesChangeRule {ubc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubec}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubsc}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ubx}{?m}{ub}{}
+\DeclareFontSeriesChangeRule {ub}{?m}{m}{}
+\DeclareFontSeriesChangeRule {ulc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulec}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulsc}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ulx}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {ul}{?m}{ul}{}
+\DeclareFontSeriesChangeRule {x}{?m}{m}{}
+% \end{macrocode}
+%
+%
+
+
+% \subsection{Changing to a new series}
+%
+
+% \begin{macro}{\fontseriesforce}
+% To change unconditionally to a new series you can use
+% \cs{fontseriesforce}. If course, if the series doesn't exist for
+% the current family substitution still happens, but there is not
+% dependency on the current series.
+% \begin{macrocode}
+\DeclareRobustCommand\fontseriesforce[1]{\edef\f@series{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\fontseries}
+% The \cs{fontseries} command takes one argument which is the requested new
+% font series. In the orginal implementation it simply saved the
+% expanded value in \cs{f@series}. Now we do a bit more processing
+% and look up the final value in the font series data base. This is
+% done by \cs{merge@font@series}.
+% \begin{macrocode}
+\DeclareRobustCommand\fontseries[1]{\merge@font@series{#1}}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\merge@font@series}
+% We look up the data base value by expanding the right command
+% twice. If no such value exist then the result will be \cs{relax}
+% otherwise it will be the two brace groups: the desired result and
+% the alternate result. The first case means that the third
+% argument to \cs{merge@font@series} will be empty.
+% \begin{macrocode}
+\def\merge@font@series#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@series@
+ \csname series@\f@series @#1\endcsname
+ {#1}%
+ \@nil
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\merge@font@series@}
+% This now defines the new \cs{f@series}:
+% \begin{macrocode}
+\def\merge@font@series@#1#2#3\@nil{%
+% \end{macrocode}
+% If the third argument is empty there is no database entry for the
+% combination and the second argument holds the new series so we
+% return that.
+%
+% Originally the test was simply \verb=\ifx!#3!= but that actually
+% dies if \texttt{\#3} starts with a conditional and in the
+% definition of \cs{AmSfont} that is actually the case.
+% \begin{macrocode}
+%\ifcat\expandafter X\detokenize{#1}X%
+ \def\@reserveda{#3}%
+ \ifx\@reserveda\@empty
+ \set@target@series{#2}%
+ \else
+% \end{macrocode}
+% Otherwise we check if the desired result for the series
+% (\texttt{\#1}) exists for the font family and the current shape.
+% As the \texttt{.fd} is perhaps not loaded yet, we first
+% have to do that, otherwise the test would fail even if the face
+% is actually available.
+% \begin{macrocode}
+ \maybe@load@fontshape
+ \edef\@reserveda{\f@encoding /\f@family /#1/\f@shape}%
+ \ifcsname \@reserveda \endcsname
+% \end{macrocode}
+% If the desired result is available then we use that. However, we
+% do need some post-processing because we need to drop surplus
+% \texttt{m}s due to the way naming convention was designed in the
+% '90s (sigh).
+% \begin{macrocode}
+ \set@target@series{#1}%
+% \end{macrocode}
+% If not, then we try the alternate result (\texttt{\#2}).
+% \begin{macrocode}
+ \else
+ \ifcsname \f@encoding /\f@family /#2/\f@shape \endcsname
+% \end{macrocode}
+% If the alternate result exist we use that and also issue a
+% warning (or rather a log entry) that we didn't managed to change
+% to the desired font.
+% \begin{macrocode}
+ \set@target@series{#2}%
+ \@font@shape@subst@warning
+% \end{macrocode}
+% If that doesn't exist either, then we use the requested series unmodified
+% (again with a warning).
+% \begin{macrocode}
+ \else
+ \set@target@series{#3}%
+ \@font@shape@subst@warning
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% It is possible that the previous font and the new one are
+% actually identical (and the font was not found because it still
+% needs loading) in which case a warning would look rather odd. So
+% we make a quick check for that (which is the reason why we defined
+% \cs{@reserveda} above.
+% \begin{macrocode}
+\def\@font@shape@subst@warning{%
+ \edef\@reservedb{\curr@fontshape}%
+ \ifx\@reserveda\@reservedb \else
+ \@font@warning{Font shape `\@reserveda' undefined\MessageBreak
+ using `\@reservedb' instead}%
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \begin{macro}{\maybe@load@fontshape}
+% A small helper that we use a couple of times: try loading a
+% fontshape (in a group because \cs{try@load@fontshape} normalizes
+% catcodes).
+% \begin{macrocode}
+\def\maybe@load@fontshape{\begingroup\try@load@fontshape\endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\set@target@series}
+% \begin{macro}{\series@drop@one@m}
+%
+% Finally the code for normalizing the \cs{f@series} value.
+%
+% The combined series value determined by the mapping may still
+% contain an \texttt{m} that we have to remove (as the \texttt{.fd}
+% files use \texttt{c} not \texttt{mc} to denote a medium weight
+% condensed series, etc.). We do this in all branches above because a user
+% might have written
+%\begin{verbatim}
+\DeclareFontSeriesChangeRule {m}{sc}{msc}{mc}
+%\end{verbatim}
+% instead of of using \texttt{sc} and \texttt{c} as needed in the
+% \texttt{.fd} file.
+% \begin{macrocode}
+\def\set@target@series#1{%
+% \end{macrocode}
+% We need to \cs{edef} the argument first in case it starts with a
+% conditional.
+% \begin{macrocode}
+ \edef\f@series{#1}%
+ \edef\f@series{\expandafter\series@drop@one@m\f@series mm\series@drop@one@m}%
+}
+% \end{macrocode}
+% Drop up to two \texttt{m}s but keep one if that makes the series
+% value empty.
+% \begin{macrocode}
+\def\series@drop@one@m#1m#2m#3\series@drop@one@m{%
+ \ifx\relax#1#2\relax m\else#1#2\fi
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+
+
+% \section{Changing the shape}
+%
+% Shapes are also split in two axes (though it could be more if
+% that is desirable), essentially building in an ``sc''
+% axis).
+%
+%
+%
+% \begin{macro}{\DeclareFontShapeChangeRule}
+% The database for shapes is done in exactly the same way, only
+% that it is much smaller and we usually have no alternative shape
+% (or rather it is empty thus not used).
+% \begin{macrocode}
+\def\DeclareFontShapeChangeRule #1#2#3#4{%
+ \@namedef{shape@#1@#2}{{#3}{#4}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% There is kind of the same problem with returning back from
+% \texttt{sc} to normal. It sort of needs its own letter. In
+% \texttt{fontspec} this was solved by the first time \cs{upshape} changes
+% \texttt{it} or \texttt{sl} back (so only \texttt{sc} remains) and
+% second time it changes then \texttt{sc} back to normal. Maybe
+% that's not a bad way to handle it, but decided for a slightly
+% different approach: \texttt{n} always returns to ``normal'', ie
+% resets everything and \texttt{up} changes italic or slanted to
+% upright and \texttt{ulc} undoes small caps.
+%
+% So we now offer \cs{normalshape} (using \cs{shapedefault} which is normally the same as
+% calling both \cs{ulcshape} and \cs{upshape}, only more efficient.
+%
+%
+% \begin{macro}{\ulcshape}
+% \begin{macro}{\textulc}
+% \begin{macro}{\ulcdefault}
+% To request going back to upper/lowercase we need a new
+% command. It uses \texttt{ulc} as shape name but this shape is
+% virtual, i.e., it doesn't exist as a real shape, it is only used
+% as part of the database table entries and thus only appears in
+% the second argument there (but not in the first).
+% \begin{macrocode}
+\DeclareRobustCommand\ulcshape
+ {\not@math@alphabet\ulcshape\relax
+ \fontshape\ulcdefault\selectfont}
+\newcommand\ulcdefault{ulc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\swshape}
+% \begin{macro}{\textsw}
+% \begin{macro}{\swdefault}
+% New command to select a swash shape. The standard rules put this
+% in the same category as italics or slanted, i.e., if you ask for
+% it then italics are undone. One could provide more complicated
+% rules so that \texttt{it} + \texttt{sw} becomes \texttt{swit} but
+% given that there are only very few fonts that have swash letters
+% that level of flexibility (these days) would be just resulting in
+% a lot of combinations that do not exist.
+% \begin{macrocode}
+\DeclareRobustCommand\swshape
+ {\not@math@alphabet\swshape\relax
+ \fontshape\swdefault\selectfont}
+\newcommand\swdefault{sw}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\sscshape}
+% \begin{macro}{\textssc}
+% \begin{macro}{\sscdefault}
+% New command to select spaced small capitals. This is only here
+% because \texttt{fontaxes} offered it. There isn't a single free
+% font that supports it. However, some commercial ones do, so we
+% offer it so that at some point \texttt{fontaxes} could be
+% retired.
+%
+% So far there aren't any rules for it---probably there should be
+% some putting it in the same category as \texttt{sc}.
+% \begin{macrocode}
+\DeclareRobustCommand\sscshape
+ {\not@math@alphabet\sscshape\relax
+ \fontshape\sscdefault\selectfont}
+\newcommand\sscdefault{ssc}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \subsection{Mapping rules for shape combinations}
+%
+% Many of the entries are commented out as we will get that result
+% without any entry.
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {n}{n} {n} {}
+\DeclareFontShapeChangeRule {n}{it} {it} {sl}
+\DeclareFontShapeChangeRule {n}{sl} {sl} {it}
+%\DeclareFontShapeChangeRule {n}{sw} {sw} {}
+%\DeclareFontShapeChangeRule {n}{sc} {sc} {}
+\DeclareFontShapeChangeRule {n}{ulc} {n} {}
+\DeclareFontShapeChangeRule {n}{up} {n} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {it}{n} {n} {}
+%\DeclareFontShapeChangeRule {it}{it} {it} {}
+\DeclareFontShapeChangeRule {it}{sl} {sl} {it}
+%\DeclareFontShapeChangeRule {it}{sw} {sw} {}
+% \end{macrocode}
+% If neither \texttt{scit} nor \texttt{scsl} exist then \texttt{sc}
+% will be used as a fallback albeit with a log entry, so except for
+% the latter there will be no change for CM or Latin Modern fonts.
+% \begin{macrocode}
+\DeclareFontShapeChangeRule {it}{sc} {scit} {scsl}
+\DeclareFontShapeChangeRule {it}{ulc} {it} {}
+\DeclareFontShapeChangeRule {it}{up} {n} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {sl}{n} {n} {}
+\DeclareFontShapeChangeRule {sl}{it} {it} {sl}
+%\DeclareFontShapeChangeRule {sl}{sl} {sl} {}
+%\DeclareFontShapeChangeRule {sl}{sw} {sw} {}
+\DeclareFontShapeChangeRule {sl}{sc} {scsl} {scit}
+\DeclareFontShapeChangeRule {sl}{ulc} {sl} {}
+\DeclareFontShapeChangeRule {sl}{up} {n} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {sc}{n} {n} {}
+\DeclareFontShapeChangeRule {sc}{it} {scit} {scsl}
+\DeclareFontShapeChangeRule {sc}{sl} {scsl} {scit}
+\DeclareFontShapeChangeRule {sc}{sw} {scsw} {sw}
+%\DeclareFontShapeChangeRule {sc}{sc} {sc} {}
+\DeclareFontShapeChangeRule {sc}{ulc} {n} {}
+% \end{macrocode}
+%
+% The next rule might be a bit surprising and rightly so. Correct
+% would be that \texttt{sc} is not affected by \texttt{up}, i.e.,
+% remains \texttt{sc} as showed in the commented out rule. However,
+% for nearly three decades commands such as \upshape{sc} or
+% \cs{textup} changed small caps back to the ``normal'' shape. So
+% for backward compatibility we keep hat behavior.
+%
+% As a result you are currently typesetting in \texttt{scit} or
+% \texttt{scsl} using \cs{upshape} twice will return you to the
+% normal shape too, the first will change to \texttt{sc} and the
+% second (because of the rule below) change that to
+% \texttt{n}. This is the way \texttt{fontspec} implemented its
+% version on this interface, so this rule means we are also
+% compatible with the way \texttt{fontspec} behaved. Still it
+% remains an odditywhic I would rather liked to have avoided.
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {sc}{up} {sc} {}
+\DeclareFontShapeChangeRule {sc}{up} {n} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {scit}{n} {n} {}
+\DeclareFontShapeChangeRule {scit}{it} {scit} {}
+\DeclareFontShapeChangeRule {scit}{sl} {scsl} {scit}
+\DeclareFontShapeChangeRule {scit}{sw} {scsw} {sc} % or scit?
+\DeclareFontShapeChangeRule {scit}{sc} {scit} {}
+\DeclareFontShapeChangeRule {scit}{ulc} {it} {}
+\DeclareFontShapeChangeRule {scit}{up} {sc} {}
+% \end{macrocode}
+% The previous rule assumes that if \texttt{scit} exists then
+% \texttt{it} exists as well. If not, the mechanism will save
+% \texttt{ulc} in \cs{f@series} which most certainly doesn't
+% exist. So when a font is later selected that would result in a
+% substitution (so no harm done really). Alternatively, we could in
+% this case use \texttt{n} as aternative, which may be a bit
+% faster, but such a setup would be so weird in the first place
+% that this isn't worth the effort.
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {scsl}{n} {n} {}
+\DeclareFontShapeChangeRule {scsl}{it} {scit} {scsl}
+\DeclareFontShapeChangeRule {scsl}{sl} {scsl} {}
+\DeclareFontShapeChangeRule {scsl}{sw} {scsw} {sc} % or scsl?
+\DeclareFontShapeChangeRule {scsl}{sc} {scsl} {}
+\DeclareFontShapeChangeRule {scsl}{ulc} {sl} {}
+\DeclareFontShapeChangeRule {scsl}{up} {sc} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {scsw}{n} {n} {}
+\DeclareFontShapeChangeRule {scsw}{it} {scit} {scsw}
+\DeclareFontShapeChangeRule {scsw}{sl} {scsl} {}
+\DeclareFontShapeChangeRule {scsw}{sw} {scsw} {}
+\DeclareFontShapeChangeRule {scsw}{sc} {scsw} {}
+\DeclareFontShapeChangeRule {scsw}{ulc} {sw} {}
+\DeclareFontShapeChangeRule {scsw}{up} {sc} {}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%\DeclareFontShapeChangeRule {sw}{n} {n} {}
+%\DeclareFontShapeChangeRule {sw}{it} {it} {}
+%\DeclareFontShapeChangeRule {sw}{sl} {sl} {}
+%\DeclareFontShapeChangeRule {sw}{sw} {sw} {}
+\DeclareFontShapeChangeRule {sw}{sc} {scsw} {}
+\DeclareFontShapeChangeRule {sw}{ulc} {sw} {}
+\DeclareFontShapeChangeRule {sw}{up} {n} {}
+% \end{macrocode}
+%
+%
+% \subsection{Changing to a new shape}
+%
+% \begin{macro}{\fontshape}
+% Again the \cs{fontshape} now has to do a lookup to get to its new
+% value in \cs{f@shape}. The method is exactly the same as in
+% \cs{fontseries}.
+% \begin{macrocode}
+\DeclareRobustCommand\fontshape[1]{\merge@font@shape{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\fontshapeforce}
+% The unconditional version:
+% \begin{macrocode}
+\DeclareRobustCommand\fontshapeforce[1]{\edef\f@shape{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\merge@font@shape}
+% Look up the database entry (if existing) and act accordingly.
+% \begin{macrocode}
+\def\merge@font@shape#1{%
+ \expandafter\expandafter\expandafter
+ \merge@font@shape@
+ \csname shape@\f@shape @#1\endcsname
+ {#1}%
+ \@nil
+}
+% \end{macrocode}
+% \end{macro}
+%
+
+% \begin{macro}{\merge@font@shape@}
+% Same game now, except that we look at shapes not series values
+% and we can set the shape without the complication of dropping
+% ``m''s from the name as we had to for the series.
+% \begin{macrocode}
+\def\merge@font@shape@#1#2#3\@nil{%
+ \def\@reserveda{#3}%
+ \ifx\@reserveda\@empty
+ \edef\f@shape{#2}%
+ \else
+ \maybe@load@fontshape
+ \edef\@reserveda{\f@encoding /\f@family /\f@series/#1}%
+ \ifcsname \@reserveda\endcsname
+ \edef\f@shape{#1}%
+ \else
+ \ifcsname \f@encoding /\f@family /\f@series/#2\endcsname
+ \edef\f@shape{#2}%
+ \@font@shape@subst@warning
+ \else
+ \edef\f@shape{#3}%
+ \@font@shape@subst@warning
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\normalshape}
+%
+% \cs{normalshape} resets both sub-axes if the default rules are used.
+% \begin{macrocode}
+\protected\def\normalshape
+ {\not@math@alphabet\normalshape\relax
+ \fontshape\shapedefault\selectfont}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \section{Make sure we win \ldots}
+%
+% This code implements one aspect of what the package \textsf{fontaxes}
+% provide. So its redefinitions for the various shape commands,
+% such as \cs{itshape} should no longer happen. We therefore force
+% the standard definitions at \cs{AtBeginDocument} (later when this
+% is defined. Once
+% \texttt{fontaxes} is no longer doing such redefinitions that could
+% be taken out again.
+%
+% We use a separate macro so that we can easily disable this (in
+% case of rollback).
+%
+% \begin{macro}{\reinstall@nfss@defs}
+%
+% I use \cs{protected} here not \cs{DeclareRobustCommand} to avoid
+% extra status lines.
+% \begin{macrocode}
+\def\reinstall@nfss@defs{%
+ \protected\def\upshape
+ {\not@math@alphabet\upshape\relax
+ \fontshape\updefault\selectfont}%
+ \protected\def\slshape
+ {\not@math@alphabet\slshape\relax
+ \fontshape\sldefault\selectfont}%
+ \protected\def\scshape
+ {\not@math@alphabet\scshape\relax
+ \fontshape\scdefault\selectfont}%
+ \protected\def\itshape
+ {\not@math@alphabet\itshape\mathit
+ \fontshape\itdefault\selectfont}%
+ \protected\def\ulcshape
+ {\not@math@alphabet\ulcshape\relax
+ \fontshape{ulc}\selectfont}%
+ \protected\def\swshape
+ {\not@math@alphabet\swshape\relax
+ \fontshape\swdefault\selectfont}%
+ \protected\def\sscshape
+ {\not@math@alphabet\sscshape\relax
+ \fontshape\sscdefault\selectfont}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontSeriesChangeRule}{Series change rules}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
+%<latexrelease>\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
+%<latexrelease>\let\fontseriesforce\@undefined
+%<latexrelease>\let\fontshapeforce\@undefined
+%<latexrelease>
+%<latexrelease>\let\DeclareFontSeriesChangeRule\@undefined
+%<latexrelease>\let\merge@font@series\@undefined
+%<latexrelease>\let\merge@font@series@\@undefined
+%<latexrelease>\let\@font@shape@subst@warning\@undefined
+%<latexrelease>\let\maybe@load@fontshape\@undefined
+%<latexrelease>\let\set@target@series\@undefined
+%<latexrelease>\let\series@drop@one@m\@undefined
+%<latexrelease>\let\DeclareFontShapeChangeRule\@undefined
+%<latexrelease>\let\merge@font@shape\@undefined
+%<latexrelease>\let\merge@font@shape@\@undefined
+%<latexrelease>\let\normalshape\@undefined
+%<latexrelease>\let\ulcshape\@undefined
+%<latexrelease>\let\ulcdefault\@undefined
+%<latexrelease>\let\swshape\@undefined
+%<latexrelease>\let\swdefault\@undefined
+%<latexrelease>\let\sscshape\@undefined
+%<latexrelease>\let\sscdefault\@undefined
+%<latexrelease>\let\normalshape\@undefined
+% \end{macrocode}
+% This is always called in \cs{document} so don't make it undefined.
+% \begin{macrocode}
+%<latexrelease>
+%<latexrelease>\let\reinstall@nfss@defs\relax
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%</2ekernel>
+% \end{macrocode}
+%
+% \Finale
+%
+
+
diff --git a/macros/latex-dev/base/ltfssbas.dtx b/macros/latex-dev/base/ltfssbas.dtx
index da9dab5d38..e87f154b3d 100644
--- a/macros/latex-dev/base/ltfssbas.dtx
+++ b/macros/latex-dev/base/ltfssbas.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssbas.dtx}
- [2019/08/27 v3.2d LaTeX Kernel (NFSS Basic Macros)]
+ [2019/12/17 v3.2e LaTeX Kernel (NFSS Basic Macros)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -800,16 +800,11 @@
% \begin{macro}{\f@shape}
% \begin{macrocode}
\DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}}
-\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
-\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
% \end{macrocode}
-% Some handy abbreviation if you want to get some particular font
-% in the current size. If also the size should change one has to
-% issue a |\fontsize| command first.
+% There are now defined later (and differently).
% \begin{macrocode}
-\DeclareRobustCommand\usefont[4]{\fontencoding{#1}\fontfamily{#2}%
- \fontseries{#3}\fontshape{#4}\selectfont
- \ignorespaces}
+%\DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
+%\DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -819,6 +814,31 @@
% \end{macro}
%
%
+%
+% \begin{macro}{\usefont}
+% Some handy abbreviation if you want to get some particular font
+% in the current size. If also the size should change one has to
+% issue a |\fontsize| command first.
+%
+% \cs{fontencoding} needs to do some setup work so we call that,
+% but instead of calling \cs{fontfamily}, \cs{fontseries} and
+% \cs{fontshape} it earlier versions of this code did, we now set
+% \cs{f@family}, etc.\ directly. If we would call \cs{fontseries}
+% or \cs{fontshape} as it
+% was done in the past, they would now interact with the existing
+% series and shape which is not desired if we intend to use an
+% explicit font shape!
+% \changes{v3.2e}{2019/12/17}{Don't call \cs{fontseries} or \cs{fontshape}}
+% \begin{macrocode}
+\DeclareRobustCommand\usefont[4]{\fontencoding{#1}%
+ \edef\f@family{#2}%
+ \edef\f@series{#3}%
+ \edef\f@shape{#4}\selectfont
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+%
% \begin{macro}{\linespread}
% \changes{v2.1j}{1994/05/12}{New macro}
% \changes{v2.1p}{1994/05/16}{Remove surplus braces}
@@ -1269,6 +1289,122 @@
% \end{macro}
%
%
+%
+% \begin{macro}{\LoadFontDefinitionFile}
+% Load and \texttt{.fd} files for some encoding and family (if it exists).
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\LoadFontDefinitionFile}{Loading .fd files}%
+\def\LoadFontDefinitionFile#1#2{%
+ \begingroup
+ \edef\f@encoding{#1}%
+ \edef\f@family{#2}%
+ \try@load@fontshape
+ \endgroup
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\LoadFontDefinitionFile}{Loading .fd files}%
+%<latexrelease>
+%<latexrelease>\let\LoadFontDefinitionFile\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+
+% \begin{macro}{\DeclareFontFamilySubstitution}
+% The idea for this macro is stolen from the \texttt{substitutefont}
+% package by Günter Milde, with some modifications and a new name.
+%
+% Its purpose is to provide characters in a special encoding tht
+% are not available in the current font family to be taken from a
+% different family that is visually compatible (or not if you
+% choose badly). For example, you can match the GFS Didot Greek
+% characters with \TeX{} Gyre Pagella (Palatino) by specifying
+%\begin{verbatim}
+% \DeclareFontFamilySubstitution{LGR}{qpl}{udidot}
+%\end{verbatim}
+% This way if you ask for the \texttt{LGR} encoding in for the
+% \texttt{qpl} family you get the characters from the
+% \texttt{udidot} family substituted.
+%
+% We need to ensure that the macro is defined with
+% \cs{nfss@catcodes} in force (not quite sure why at the moment to
+% be honest).
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}%
+\begingroup
+\nfss@catcodes
+\gdef\DeclareFontFamilySubstitution#1#2#3{%
+% \end{macrocode}
+% We only provide a set of silent substitutions. The package also
+% (re)declared the family, but this is incorrect in my eyes and it
+% is better to handle that differently.
+%
+% Of course the families may still need loading at
+% this point and so we arange for this. Otherwise we might run into
+% trouble because the necessary \cs{DeclareFontFamily} has not been
+% seen.
+% \begin{macrocode}
+ \LoadFontDefinitionFile{#1}{#2}%
+ \LoadFontDefinitionFile{#1}{#3}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \DeclareFontShape{#1}{#2}{m}{it}{<->ssub * #3/m/it}{}%
+ \DeclareFontShape{#1}{#2}{m}{n}{<->ssub * #3/m/n}{}%
+ \DeclareFontShape{#1}{#2}{m}{sc}{<->ssub * #3/m/sc}{}%
+ \DeclareFontShape{#1}{#2}{m}{sl}{<->ssub * #3/m/sl}{}%
+% \end{macrocode}
+% These days a few more shapes might be around, so we declare those
+% too. If they don't exist then after the first substitution normal
+% fallbacks will happen.
+% \begin{macrocode}
+ \DeclareFontShape{#1}{#2}{m}{sw}{<->ssub * #3/m/sw}{}%
+ \DeclareFontShape{#1}{#2}{m}{scit}{<->ssub * #3/m/scit}{}%
+ \DeclareFontShape{#1}{#2}{m}{scsl}{<->ssub * #3/m/scsl}{}%
+% \end{macrocode}
+% Same game with \texttt{b} and \texttt{bx}, for other weights you
+% are on your own:
+% \begin{macrocode}
+ \DeclareFontShape{#1}{#2}{b}{it}{<->ssub * #3/b/it}{}%
+ \DeclareFontShape{#1}{#2}{b}{n}{<->ssub * #3/b/n}{}%
+ \DeclareFontShape{#1}{#2}{b}{scit}{<->ssub * #3/b/scit}{}%
+ \DeclareFontShape{#1}{#2}{b}{scsl}{<->ssub * #3/b/scsl}{}%
+ \DeclareFontShape{#1}{#2}{b}{sc}{<->ssub * #3/b/sc}{}%
+ \DeclareFontShape{#1}{#2}{b}{sl}{<->ssub * #3/b/sl}{}%
+ \DeclareFontShape{#1}{#2}{b}{sw}{<->ssub * #3/b/sw}{}%
+ \DeclareFontShape{#1}{#2}{bx}{it}{<->ssub * #3/bx/it}{}%
+ \DeclareFontShape{#1}{#2}{bx}{n}{<->ssub * #3/bx/n}{}%
+ \DeclareFontShape{#1}{#2}{bx}{scit}{<->ssub * #3/bx/scit}{}%
+ \DeclareFontShape{#1}{#2}{bx}{scsl}{<->ssub * #3/bx/scsl}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sc}{<->ssub * #3/bx/sc}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sl}{<->ssub * #3/bx/sl}{}%
+ \DeclareFontShape{#1}{#2}{bx}{sw}{<->ssub * #3/bx/sw}{}%
+}
+\endgroup
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontFamilySubstitution}{Provide family substituation}%
+%<latexrelease>
+%<latexrelease>\let\DeclareFontFamilySubstitution\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
% \begin{macro}{\DeclareErrorFont}
% Declare the last resort shape! We assume that in this fontshape
% there is a 10pt font but it doesn't really matter. We only loose
diff --git a/macros/latex-dev/base/ltfsscmp.dtx b/macros/latex-dev/base/ltfsscmp.dtx
index d62eeb6f47..8583fb1a9b 100644
--- a/macros/latex-dev/base/ltfsscmp.dtx
+++ b/macros/latex-dev/base/ltfsscmp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx
index d1284a08e8..1c546e921c 100644
--- a/macros/latex-dev/base/ltfssdcl.dtx
+++ b/macros/latex-dev/base/ltfssdcl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltfssini.dtx b/macros/latex-dev/base/ltfssini.dtx
index b073a5cc37..e948aa4809 100644
--- a/macros/latex-dev/base/ltfssini.dtx
+++ b/macros/latex-dev/base/ltfssini.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -36,7 +36,7 @@
%
%
\ProvidesFile{ltfssini.dtx}
- [2019/08/27 v3.1d LaTeX Kernel (NFSS Initialisation)]
+ [2020/01/11 v3.1f LaTeX Kernel (NFSS Initialisation)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -157,26 +157,28 @@
% Now we define the standard font change commands.
% We don't allow the use of |\rmfamily| etc.\ in math mode.
%
+% (Actually most are now defined further down in the file.)
+%
% First the changes to another \emph{family}:
% \begin{macrocode}
-\DeclareRobustCommand\rmfamily
- {\not@math@alphabet\rmfamily\mathrm
- \fontfamily\rmdefault\selectfont}
-\DeclareRobustCommand\sffamily
- {\not@math@alphabet\sffamily\mathsf
- \fontfamily\sfdefault\selectfont}
-\DeclareRobustCommand\ttfamily
- {\not@math@alphabet\ttfamily\mathtt
- \fontfamily\ttdefault\selectfont}
+%\DeclareRobustCommand\rmfamily
+% {\not@math@alphabet\rmfamily\mathrm
+% \fontfamily\rmdefault\selectfont}
+%\DeclareRobustCommand\sffamily
+% {\not@math@alphabet\sffamily\mathsf
+% \fontfamily\sfdefault\selectfont}
+%\DeclareRobustCommand\ttfamily
+% {\not@math@alphabet\ttfamily\mathtt
+% \fontfamily\ttdefault\selectfont}
% \end{macrocode}
% Then the commands changing the \emph{series}:
% \begin{macrocode}
-\DeclareRobustCommand\bfseries
- {\not@math@alphabet\bfseries\mathbf
- \fontseries\bfdefault\selectfont}
-\DeclareRobustCommand\mdseries
- {\not@math@alphabet\mdseries\relax
- \fontseries\mddefault\selectfont}
+%\DeclareRobustCommand\bfseries
+% {\not@math@alphabet\bfseries\mathbf
+% \fontseries\bfdefault\selectfont}
+%\DeclareRobustCommand\mdseries
+% {\not@math@alphabet\mdseries\relax
+% \fontseries\mddefault\selectfont}
\DeclareRobustCommand\upshape
{\not@math@alphabet\upshape\relax
\fontshape\updefault\selectfont}
@@ -196,29 +198,873 @@
%
%
%
+%
+% \section{Custom series settings for main document families}
+%
+% This section was introduced 2020/02/02 and for now we support a
+% full rollback (may need splitting later).
+% \changes{v3.1e}{2019/12/17}{Provide custom series settings a la mweights}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareFontSeriesDefault}{Custom series}%
+% \end{macrocode}
+%
+% One problem with the NFSS approach of handling the series axis
+% turned out to be that (especially with respect to ``boldness'')
+% different font families implemented different strategies. For
+% example, with Computer Modern fonts you normally only have
+% \texttt{bx} whereas most PostScript fonts offered only \texttt{b}
+% but not \texttt{bx}. As a result \LaTeX's standard setting for
+% \cs{bfdefault} didn't work with such fonts, but if it got changed
+% to produce \texttt{b}, then that didn't work with Computer Modern
+% if the fonts got combined (e.g., using Computer Modern Typewriter
+% with such fonts).
+%
+% The solution back then was to provide substitution rules in the
+% font \texttt{.fd} such that if a \texttt{bx} series got requested
+% the \texttt{b} series got used. While this works in that
+% particular case, it isn't a very
+% general solution. For example, if you happen to have a font family that
+% has several weights you may want to typeset the whole document
+% in a somewhat lighter or darker font but if you then modify
+% \cs{mddefault} to allow for this, then of course your change only
+% works with that particular family but not with the typewriter
+% or sans serif family you also want to use.
+%
+% A better solution was provided by the \texttt{mweights} package by
+% Bob Tennent that offers defaults on the level of the three main
+% font families in the document: for ``rm'', ``sf'' and ``tt'' so
+% that font packages could define defaults for the sans serif
+% document font by providing \cs{bfseries@sf} which then was used
+% when \cs{bfseries} got executed and the current family was the
+% \cs{sffamily}.
+%
+% \DescribeMacro\DeclareFontSeriesDefault
+% We now support this concept directly from within \LaTeX{} and for
+% use in font packages (or the document preamble) we offer
+% \cs{DeclareSeriesDefault}. This declaration takes three
+% arguments:
+% \begin{description}
+% \item[document family interface:] Can either be \texttt{rm},
+% \texttt{sf} or \texttt{tt}. This is optional and if not given the
+% overall default.
+% \item[document series interface:] Can be \texttt{md} or
+% \texttt{bf}.
+% \item[series value:] This is the value that is going to be used
+% with the combination is requested.
+% \end{description}
+%
+% For example, \verb=\DeclareFontSeriesDefault[rm]{bf}{sb}= would
+% use \texttt{sb} (semi-bold) when \cs{rmfamily} \cs{bfseries} is
+% asked for.
+%
+% If used without the optional argument, e.g.,
+% \verb=\DeclareFontSeriesDefault{bf}{b}= then this is like
+% redefining \cs{bfdefault} or \cs{mddefault}.
+%
+% If some family specify defaults aren't given, e.g. if there are
+% no declarations for, say, \texttt{tt} then the format defaults
+% of \cs{mddefault} and \cs{bfdefault} are assumed. If those are
+% later changed this is \emph{not} reflected!\footnote{I see no
+% easy way to achieve this without compromising compatibility with
+% existing packages that currently use \textsf{mweights} and directly
+% define (some) of the \cs{mdseries@..} commands but not others.}
+%
+%
+%
+% \begin{macro}{\DeclareFontSeriesDefault}
+% The command to declare font series defaults for the ``rm'', ``sf'' or
+% ``tt'' family.
+% \begin{macrocode}
+\newcommand\DeclareFontSeriesDefault[3][]{%
+ \def\@reserveda{#1}%
+% \end{macrocode}
+% No optional argument: set up general default.
+% \begin{macrocode}
+ \ifx\@resereda\@empty
+ \ifcsname #2series\endcsname % supported are
+ % \[md/bf]default
+ \expandafter\def
+ \csname #2default\endcsname{#3}%
+ \else
+ \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}%
+ {Mandatory first argument must be 'md' or 'bf'.}
+ \fi
+% \end{macrocode}
+% Optional argument given, set up specific default.
+% \begin{macrocode}
+ \else
+ \ifcsname #2series@#1\endcsname % supported are
+ % \[md/bf]series@[rm/sf/tt]
+ \expandafter\edef
+ \csname #2series@#1\endcsname{#3}%
+% \end{macrocode}
+%
+% If the interface is used we remove the frozen kernel
+% default. This way, we know that something was explicitly set up
+% (even if the setup has the same value as the default).
+% \begin{macrocode}
+ \expandafter\let
+ \csname #2series@#1@kernel\endcsname\@undefined
+ \else
+ \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}%
+ {Optional first argument must be 'rm', 'sf', or 'tt'. \MessageBreak
+ Second argument must be 'md' or 'bf'.}
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+% \begin{macro}{\mdseries@rm}
+% \begin{macro}{\mdseries@sf}
+% \begin{macro}{\mdseries@tt}
+% \begin{macro}{\bfseries@rm}
+% \begin{macro}{\bfseries@sf}
+% \begin{macro}{\bfseries@tt}
+% We initialize the family specific default at the end of the
+% format generation. Later on they may get overwritten in the
+% preamble or a package via \cs{DeclareFontSeriesDefault} (or
+% possibly directly).
+%
+% Conceptual change: The \cs{bfdefault} will be \texttt{b} not
+% \texttt{bx} because that is what it should be really for nearly
+% every font except Computer/Latin Modern.
+%
+% To account for the fact that by default we typeset in CM or LM we
+% set up the \cs{bfseries@..} defaults to use \texttt{bx} instead.
+%
+% This means that it behaves like before because if the default
+% fonts are used then \cs{bfseries@rm} etc kick in and make
+% \cs{textbf} use \texttt{bx}. However, if the font gets changed
+% then \cs{bfdefault} will get used.
+%
+% \begin{macrocode}
+\def\bfseries@rm{bx}
+\def\bfseries@sf{bx}
+\def\bfseries@tt{bx}
+% \end{macrocode}
+%
+% Frozen version of the kernel defaults so we can see if they have changed.
+% \begin{macrocode}
+\let\bfseries@rm@kernel\bfseries@rm
+\let\bfseries@sf@kernel\bfseries@sf
+\let\bfseries@tt@kernel\bfseries@tt
+% \end{macrocode}
+%
+% The default for the medium series is \texttt{m} and this will be
+% interpreted as resetting both weight and width. To reset only one
+% of them the virtual value \texttt{?m} and \texttt{m?} are available.
+% \begin{macrocode}
+\def\mdseries@rm{m}
+\def\mdseries@sf{m}
+\def\mdseries@tt{m}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+
+
+% \begin{macro}{\expand@font@defaults}
+%
+% The family specific defaults are fully expanded, i.e., they are
+% defined via \cs{edef} inside \cs{DeclareFontSeriesDefault}.
+% However, the overall defaults, e.g., \cs{bfdefault} may have been
+% redefined by the user and thus may not be fully expanded. So to
+% enable reliable comparison we make expanded versions of
+% them. That we rerun each time. The alternative would be to only
+% allow for changes before begin document.
+% \begin{macrocode}
+\def\expand@font@defaults{%
+ \edef\rmdef@ult{\rmdefault}%
+ \edef\sfdef@ult{\sfdefault}%
+ \edef\ttdef@ult{\ttdefault}%
+ \edef\bfdef@ult{\bfdefault}%
+ \edef\mddef@ult{\mddefault}%
+ \edef\famdef@ult{\familydefault}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+
+
+
+% \begin{macro}{\bfseries}
+% This document command switches to the bold series.
+% \begin{macrocode}
+\DeclareRobustCommand\bfseries{%
+ \not@math@alphabet\bfseries\mathbf
+% \end{macrocode}
+% In the original NFSS definition it then called \cs{fontseries}
+% with the value \cs{bfdefault}. In the new scheme we have more
+% alternatives and therefore check if the current family
+% (\cs{f@family}) is the current \cs{rmdef@ult}, \cs{sfdef@ult} or
+% \cs{ttdef@ult} and the select the correct family default in that case.
+% \begin{macrocode}
+ \expand@font@defaults
+ \fontseries{%
+ \ifx\f@family\rmdef@ult \bfseries@rm
+ \else\ifx\f@family\sfdef@ult \bfseries@sf
+ \else\ifx\f@family\ttdef@ult \bfseries@tt
+% \end{macrocode}
+% If not \cs{bfdefault} is used.
+% \begin{macrocode}
+ \else \bfdefault
+ \fi\fi\fi
+ }%
+ \selectfont
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\mdseries}
+% This document command switches to the medium series.
+% \begin{macrocode}
+\DeclareRobustCommand\mdseries{%
+ \not@math@alphabet\mdseries\relax
+ \expand@font@defaults
+ \fontseries{%
+ \ifx\f@family\rmdef@ult \mdseries@rm
+ \else\ifx\f@family\sfdef@ult \mdseries@sf
+ \else\ifx\f@family\ttdef@ult \mdseries@tt
+ \else \mddefault
+ \fi\fi\fi
+ }%
+ \selectfont
+}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\rmfamily}
+% Here are the document level commands for changing the main font
+% families, or rather, here is a documented outline of the code,
+% the actual code is then streamlined and somewhat generalized.
+%\begin{verbatim}
+%\DeclareRobustCommand\rmfamily{%
+% \not@math@alphabet\rmfamily\mathrm
+%\end{verbatim}
+% If families are changed then we have to do a bit more work.
+% In the original NFSS implementation
+% a family change kept encoding, series shape and size unchanged
+% but now we can't any
+% longer simply reuse the current series value. Instead we may have
+% to change it from one family default to the next.
+%\begin{verbatim}
+% \expand@font@defaults
+%\end{verbatim}
+% We have to do the testing while while the current family is still
+% unchanged but we have to do the adjustment of the series after it
+% got changed (because the new family might has different sets
+% ofshapes available and we certainly don't want to see
+% substituation going on. So we use \cs{target@series@value} to
+% hold the target series (if any).
+%\begin{verbatim}
+% \let\target@series@value\@empty
+%\end{verbatim}
+% Thus, if the current family is the sans family
+%\begin{verbatim}
+% \ifx\f@family\sfdef@ult
+%\end{verbatim}
+% and if we using the medium series of the sans family
+%\begin{verbatim}
+% \ifx\f@series\mdseries@sf
+%\end{verbatim}
+% then lets switch to the medium series for the serif family
+%\begin{verbatim}
+% \let\target@series@value\mdseries@rm
+%\end{verbatim}
+% and if we use the bold series of the sans family switch to the
+% bold default of the serif family:
+%\begin{verbatim}
+% \else\ifx\f@series\bfseries@sf \let\target@series@value\bfseries@rm
+%\end{verbatim}
+% However, the sans family may not have any specific defaults set,
+% so we also compare with the overall defaults.
+%\begin{verbatim}
+% \else\ifx\f@series\mddef@ult \let\target@series@value\mdseries@rm
+% \else\ifx\f@series\bfdef@ult \let\target@series@value\bfseries@rm
+%\end{verbatim}
+% If neither test was true we leave the series alone. This way a
+% special manual setting such as \verb=\fontseries{lc}= is not
+% undone if the family changes (of course there may not be any
+% support for it in the new family but then the NFSS
+% substitution kicks in and sorts it out).
+%\begin{verbatim}
+% \fi\fi\fi\fi
+%
+%\end{verbatim}
+% We need to do the same if the current family is the typewriter family:
+%\begin{verbatim}
+% \else\ifx\f@family\ttdef@ult
+% \ifx\f@series\mdseries@tt \let\target@series@value\mdseries@rm
+% \else\ifx\f@series\bfseries@tt \let\target@series@value\bfseries@rm
+% \else\ifx\f@series\mddef@ult \let\target@series@value\mdseries@rm
+% \else\ifx\f@series\bfdef@ult \let\target@series@value\bfseries@rm
+% \fi\fi\fi\fi
+% \fi\fi
+%\end{verbatim}
+% With these preparations for series out of the way we can now
+% change the font family to \cs{rmdefault}.
+%\begin{verbatim}
+% \fontfamily\rmdefault
+%\end{verbatim}
+%
+% If \cs{target@series@value} is still empty there is nothing more
+% to do other than selecting the new family. However, if not then
+% we should update the font series now as well. But there is one
+% further subtle issue. We may not have loaded an \texttt{.fd} file
+% for our target font family yet. In the past that was done in
+% \cs{selectfont} if necessary but since we are now doing all the
+% comparisons in \cs{fontseries} we need to make sure that the font
+% family specifications are already loaded prior to calling
+% \cs{fontseries}.
+%\begin{verbatim}
+% \ifx\target@series@value\@empty \else
+% \maybe@load@fontshape
+%\end{verbatim}
+% Updating the series in this case means directly changing
+% \cs{f@series} to the target value. We don't want to go through
+% \cs{fontseries} because that would apply the mappings and then
+% \texttt{bx + b} would keep \texttt{bx} instead of changing to
+% \texttt{b} as desired.
+% as
+%\begin{verbatim}
+% \let\f@series\target@series@value
+% \fi
+% \selectfont}
+%\end{verbatim}
+%
+% So now for the real definition: most of the code above gets
+% delegated to a helper command \cs{prepare@family@series@update}
+% so that the definition becomes again fairly short. In addition we
+% add a hook, mainly for our Japanese friends so that the code can
+% be extended prior to the call to \cs{selectfont}.
+%
+% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook}
+% \begin{macrocode}
+\DeclareRobustCommand\rmfamily{%
+ \not@math@alphabet\rmfamily\mathrm
+% \end{macrocode}
+% This holds all the code discussed above, first argument is the
+% meta family, i.e., \texttt{rm} in this case, and second argument
+% is the default family name, e.g., \texttt{cmr} indirectly
+% accessed via \cs{rmdefault}. This is calling \cs{fontfamily} and
+% if necessary \cs{fontseries} as outline above.
+% \begin{macrocode}
+ \prepare@family@series@update{rm}\rmdefault
+% \end{macrocode}
+% The comes the hook code (by default a no-op) and finally the call
+% to \cs{selectfont}.
+% \begin{macrocode}
+ \@rmfamilyhook
+ \selectfont}
+% \end{macrocode}
+%
+% \begin{macro}{\sffamily}
+% \begin{macro}{\ttfamily}
+% The definitions for \cs{sffamily} and \cs{ttfamily} are similar,
+% the differences are only in what font families get checked.
+% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook}
+% \begin{macrocode}
+\DeclareRobustCommand\sffamily{%
+ \not@math@alphabet\sffamily\mathsf
+ \prepare@family@series@update{sf}\sfdefault
+ \@sffamilyhook
+ \selectfont}
+% \end{macrocode}
+%
+% \changes{v3.1f}{2020/01/11}{Streamlined implementation with hook}
+% \begin{macrocode}
+\DeclareRobustCommand\ttfamily{%
+ \not@math@alphabet\ttfamily\mathtt
+ \prepare@family@series@update{tt}\ttdefault
+ \@ttfamilyhook
+ \selectfont}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\@rmfamilyhook}
+% \begin{macro}{\@sffamilyhook}
+% \begin{macro}{\@ttfamilyhook}
+% By default the hooks do nothing.
+% \begin{macrocode}
+\let\@rmfamilyhook\@empty
+\let\@sffamilyhook\@empty
+\let\@ttfamilyhook\@empty
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+
+
+% \begin{macro}{\prepare@family@series@update}
+% This is core command that prepares for the family update. The big
+% difference to the documented code above is that the nested
+% \cs{ifx} statements seem to be missing. Instead we loop through
+% an internal list that holds the names of the three meta
+% families. This approach allows us to extend the mechanism at a
+% later stage to allow for additional named meta families.
+%
+% \begin{macro}{\@meta@family@list}
+% Here is the current definition of that list:
+% \begin{macrocode}
+\def\@meta@family@list{\@elt{rm}\@elt{sf}\@elt{tt}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\prepare@family@series@update#1#2{%
+ \expand@font@defaults
+% \end{macrocode}
+% We prepare for changing the current series. We have to find it
+% before changing the family as discussed above.
+% \begin{macrocode}
+ \let\target@series@value\@empty
+ \def\target@meta@family@value{#1}%
+% \end{macrocode}
+% To find it we loop over the meta family list with a suitable
+% definition of \cs{@elt}.
+% \begin{macrocode}
+ \let\@elt\update@series@target@value
+ \@meta@family@list
+ \let\@elt\relax
+% \end{macrocode}
+% That will figure out the correct series value to use without updating
+% it. Now we can change the family.
+% \begin{macrocode}
+ \fontfamily#2%
+% \end{macrocode}
+% After that we update the series. That code is again like the one
+% above.
+% \begin{macrocode}
+ \ifx\target@series@value\@empty
+ \else
+ \maybe@load@fontshape
+ \let\f@series\target@series@value
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\update@series@target@value}
+% In this macro used in the look you basically find the nested
+% \cs{ifx}s from the outline above. The only difference is that is
+% it is parameterized instead of being written out and only for one
+% block of tests because the code is called reatedly when looping
+% over the meta family list. From the list we get each meta family
+% name in turn.
+% \begin{macrocode}
+\def\update@series@target@value#1{%
+% \end{macrocode}
+% There is one additional test at the beginning, because the list
+% contains all meta families and we need to ignore the case where
+% current one from the list and target one are identical.
+% \begin{macrocode}
+ \def\@reserveda{#1}%
+ \ifx\target@meta@family@value\@reserveda % rm -> rm do nothing
+ \else
+% \end{macrocode}
+% We only ``do'' something if the current font family matches the
+% current meta family.
+% \begin{macrocode}
+ \expandafter\ifx\csname#1def@ult\endcsname\f@family
+% \end{macrocode}
+% If that's the case we know that this is the block that applies
+% (only one meta family can match). So to speed things up we
+% change \cs{@elt} so that the rest of the loop gets gobbled.
+% \begin{macrocode}
+ \let\@elt\@gobble
+% \end{macrocode}
+% Then we try to find the right new value for the series (as
+% explained above). The two macros defined first are only there
+% because we now need to use \cs{csname} and this way the code will
+% be a little faster.
+% \begin{macrocode}
+ \expandafter\let\expandafter\@reservedb
+ \csname mdseries@\target@meta@family@value\endcsname
+ \expandafter\let\expandafter\@reservedc
+ \csname bfseries@\target@meta@family@value\endcsname
+% \end{macrocode}
+% This here is now identical to the nested \cs{ifx} block from the
+% outline, except that it there appeared twice in
+% \cs{rmfamily}. This is now covered by looping and stopping the
+% loop when a match was found.
+% \begin{macrocode}
+ \expandafter\ifx\csname mdseries@#1\endcsname\f@series
+ \let\target@series@value\@reservedb
+ \else\expandafter\ifx\csname bfseries@#1\endcsname\f@series
+ \let\target@series@value\@reservedc
+ \else\ifx\f@series\mddef@ult \let\target@series@value\@reservedb
+ \else\ifx\f@series\bfdef@ult \let\target@series@value\@reservedc
+ \fi\fi\fi\fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%
+%
+%
+%
+%
+% \begin{macro}{\init@series@setup}
+% This is code to be run at begin document \ldots
+% \begin{macrocode}
+\def\init@series@setup{%
+% \end{macrocode}
+%
+% We only want \texttt{bx} in \cs{bfseries@rm} if the roman font is
+% Computer Modern or Latin Modern, otherwise it should be
+% \texttt{b}. It was set to \texttt{bx} in the kernel so that any
+% font use with the default families in the preamble get this
+% value. Now at the real document start we check if the fonts have
+% been changed. If there was a \cs{DeclareFontSeriesDefault}
+% declaration or \cs{bfseries@rm} was directly altered then it
+% differs from \cs{bfseries@rm@kernel} and we do nothing.
+% Otherwise we check if \cs{rmdefault} is one of the CM/LM font
+% families and if so we keep \texttt{bx} otherwise we change it to
+% \texttt{b}.
+%
+% This approach doesn't cover one case: CM/LM got changed to a
+% different family that supports \texttt{bx}, but the support
+% package for that family used \verb=\def\bfseries@rm{bx}= instead
+% of using \cs{DeclareFontSeriesDefault}. In that case the code
+% here changes it to \texttt{b}. Solution: use the
+% \cs{DeclareFontSeriesDefault} interface.
+% \begin{macrocode}
+ \ifx\bfseries@rm@kernel\bfseries@rm
+ \expandafter\in@\expandafter{\rmdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}%
+ \ifin@ \else \def\bfseries@rm{b}\fi\fi
+% \end{macrocode}
+% Same approach for \cs{bfseries@sf} and \cs{bfseries@tt}:
+% \begin{macrocode}
+ \ifx\bfseries@sf@kernel\bfseries@sf
+ \expandafter\in@\expandafter{\sfdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}%
+ \ifin@ \else \def\bfseries@sf{b}\fi\fi
+ \ifx\bfseries@tt@kernel\bfseries@tt
+ \expandafter\in@\expandafter{\ttdefault}{cmr,cmss,cmtt,lcmss,lcmtt,lmr,lmss,lmtt}%
+ \ifin@ \else \def\bfseries@tt{b}\fi\fi
+% \end{macrocode}
+%
+% If the document preamble has changed the \cs{familydefault} or if
+% the if the \cs{rmdefault} contains a new font family, we have to
+% adjust the series defaults accordingly, before starting
+% typesetting.
+%
+% On the other hand if we still typeset in CM or LM then
+% \cs{bfdefault} is wrong since it is now saying \texttt{b} and not
+% \texttt{bx}.
+
+% To fix this we run \cs{rmfamily}, \cs{sffamily} or
+% \cs{ttfamily} depending on the situation and this will correct
+% the setup for us.
+% \begin{macrocode}
+ \expand@font@defaults
+ \ifx\famdef@ult\rmdef@ult \rmfamily
+ \else\ifx\famdef@ult\sfdef@ult \sffamily
+ \else\ifx\famdef@ult\ttdef@ult \ttfamily
+ \fi\fi\fi
+}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% As the kernel code now implements the same functionality as
+% \textsf{mweights}, albeit internally coded slightly differently,
+% that package shouldn't be loaded any more. We therefore pretend
+% that it already got loaded. Thus, a font package that tries to
+% load it and then sets \cs{mdseries@..}, etc.\ will continue to
+% work but will now use the kernel code.
+%
+% Of course, mid-term such package should probably use
+% \cs{DeclareFontSeriesDefault} instead of making using low-level
+% definitions.
+%
+% \begin{macrocode}
+\expandafter\let\csname ver@mweights.sty\endcsname\fmtversion
+% \end{macrocode}
+%
+%
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareFontSeriesDefault}{Custom series}%
+%<latexrelease>
+%<latexrelease>\let\DeclareFontSeriesDefault\@undefined
+%<latexrelease>\let\bfseries@rm\@undefined
+%<latexrelease>\let\bfseries@sf\@undefined
+%<latexrelease>\let\bfseries@tt\@undefined
+%<latexrelease>\let\bfseries@rm@kernel\@undefined
+%<latexrelease>\let\bfseries@sf@kernel\@undefined
+%<latexrelease>\let\bfseries@tt@kernel\@undefined
+%<latexrelease>\let\mdseries@rm\@undefined
+%<latexrelease>\let\mdseries@sf\@undefined
+%<latexrelease>\let\mdseries@tt\@undefined
+%<latexrelease>\let\expand@font@defaults\@undefined
+%<latexrelease>\expandafter\let\csname ver@mweights.sty\endcsname\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\bfseries
+%<latexrelease> {\not@math@alphabet\bfseries\mathbf
+%<latexrelease> \fontseries\bfdefault\selectfont}
+%<latexrelease>\DeclareRobustCommand\mdseries
+%<latexrelease> {\not@math@alphabet\mdseries\relax
+%<latexrelease> \fontseries\mddefault\selectfont}
+%<latexrelease>\DeclareRobustCommand\rmfamily
+%<latexrelease> {\not@math@alphabet\rmfamily\mathrm
+%<latexrelease> \fontfamily\rmdefault\selectfont}
+%<latexrelease>\DeclareRobustCommand\sffamily
+%<latexrelease> {\not@math@alphabet\sffamily\mathsf
+%<latexrelease> \fontfamily\sfdefault\selectfont}
+%<latexrelease>\DeclareRobustCommand\ttfamily
+%<latexrelease> {\not@math@alphabet\ttfamily\mathtt
+%<latexrelease> \fontfamily\ttdefault\selectfont}
+%<latexrelease>
+%<latexrelease>\let\@rmfamilyhook\@undefined
+%<latexrelease>\let\@sffamilyhook\@undefined
+%<latexrelease>\let\@ttfamilyhook\@undefined
+%<latexrelease>\let\@meta@family@list\@undefined
+%<latexrelease>\let\prepare@family@series@update\@undefined
+%<latexrelease>\let\update@series@target@value\@undefined
+%<latexrelease>
+% \end{macrocode}
+% This is always called in \cs{document} so don't make it undefined.
+% \begin{macrocode}
+%<latexrelease>\let\init@series@setup\relax
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+
+%
+%
+%
+% \section{Supporting nested emphasis}
+%
+% By default \LaTeXe{} supports two levels of nested emphasis: if
+% the current font has an upright shape then it switches to
+% \cs{itshape} otherwise to \cs{eminnershape} (which defaults to
+% \cs{upshape}). This means nested emphasis will ocssilate between
+% italic and upright shapes.
+%
+% Sometimes it would be nice to allow for a more lengthly sequence,
+% but instead of providing a fixed one \LaTeX{} now offers a
+% general mechanism that allows to define arbitrary sequences.
+%
+% \DescribeMacro\DeclareEmphSequence
+% \DescribeMacro\emforce
+%
+% This declaration expects a comma separated list of (font) change
+% declarations corresponding to increasing levels of emphasis.
+% The mechanism tries to be ``smart'' and verifies that the
+% declarations actually alter the font. If not it will ignore this
+% level and tries the next one---the assumption being that
+% there was a manual font change in the document to the font that
+% is now supposed to be used for emphasis. Of course, this only
+% works if the declarations in the list actually change the font
+% and not, say, just the color.
+% In such a case one has to use \cs{emforce} to which directs the
+% mechanism to use the level even if the font attributes haven't changed.
+%
+% \DescribeMacro\emreset
+% If the nesting is so deep, that the specified levels are
+% exhausted then \cs{emreset} is used as a final set of
+% declarations (which by default returns
+% back to the upright shape). Any additional nesting levels will
+% then reuse the list from its beginning.
+%
+%
+%
+% \begin{macro}{\DeclareEmphSequence}
+%
+% \cs{DeclareEmphSequence} expects a clist of declaration. Spaces in the
+% argument are dropped to avoid surious spaces in the output. The
+% declarations are additive. At the very end the shape is reset
+% using |\emreset| and |\emforce| so that this case is never
+% skipped.\footnote{Maybe we should not add \cs{emforce} but allow
+% that case to be skipped as well. Of course, that might result in
+% an endless loop if somebody defines a sequence without any font
+% change and without \cs{emforce} but \ldots}
+% Further nested calls restart at the beginning.
+% \changes{v3.1e}{2019/12/17}{Provide \cs{emph} sequences}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareEmphSequence}{Nested emph}%
+\def\DeclareEmphSequence#1{%
+ \protected@edef\emfontdeclare@clist{\zap@space#1, \@empty\emforce\emreset}%
+}
+% \end{macrocode}
+% By default the it is empty, in which case \cs{eminnershape} is
+% used by \LaTeX.
+% \begin{macrocode}
+\let\emfontdeclare@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
+% do it like this:
+% \begin{macrocode}
+\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@clist} is empty.
+% \begin{macrocode}
+\DeclareRobustCommand\em{%
+ \@nomath\em
+ \ifx\emfontdeclare@clist\@empty
+ \ifdim \fontdimen\@ne\font >\z@
+ \eminnershape \else \itshape \fi
+ \else
+% \end{macrocode}
+% But if not we use the list to decide how to do emphasis.
+%
+% We use the current font to check if the declarations have any
+% effect, so even a size change is allowed and identified as a
+% modification (but a color change, for example, isn't). So first
+% we save the current status.
+% \begin{macrocode}
+ \edef\em@currfont{\csname\curr@fontshape/\f@size\endcsname}%
+% \end{macrocode}
+% Then we grab the next element from the list and check if it can
+% be used.
+% \begin{macrocode}
+ \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update
+ \fi
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\eminnershape{\upshape}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\do@emfont@update}
+% We know that the list (if not empty) has at least 2 elements
+% separated by a comma, so we pick up the first in \texttt{\#1} and
+% the rest in \texttt{\#2}.
+% \begin{macrocode}
+\def\do@emfont@update#1,#2\do@emfont@update{%
+% \end{macrocode}
+% First action is to alter the list and move the first entry to the end
+% \begin{macrocode}
+ \def\emfontdeclare@clist{#2,#1}%
+% \end{macrocode}
+% Then we execute current declaration. Appending |\selectfont| means one
+% can write just |\fontshape{it}}| and that works then too.
+% \begin{macrocode}
+% \typeout{Use: \detokenize{#1}}%
+ #1\selectfont
+% \end{macrocode}
+% We then compare the current font with our saved version, but with
+% a slight twist: we add \cs{em@force} at the end of the
+% name. Normally this is empty so has no effect but if there was an
+% \cs{emforce} as part of \texttt{\#1} it will append a |/| to the
+% font name (making it invalid) thus this will then always fail the
+% test.
+%
+% If the test fails we are done and the declarations will be used.
+% Otherwise we will try the next declaration in the sequence.
+% \begin{macrocode}
+ \expandafter\ifx\csname \curr@fontshape/\f@size\em@force
+% \end{macrocode}
+% For the comparison with \cs{ifx} we have to exand
+% \cs{em@currfont} once as the relevant info is inside.
+% \begin{macrocode}
+ \expandafter\endcsname
+ \em@currfont
+ \expandafter\do@emfont@update\emfontdeclare@clist\do@emfont@update
+% \end{macrocode}
+% If \cs{emforce} was used, we have to undo its effect:
+% \begin{macrocode}
+ \else
+ \let\em@force\@empty
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\emforce}
+% \begin{macro}{\em@force}
+% The definition of \cs{emforce} is simple: change \cs{em@force} to
+% make the above test always invalid.
+% \begin{macrocode}
+\protected\def\emforce{\def\em@force{/}}
+\let\em@force\@empty
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+
+
+%
% \begin{macro}{\em}
% \changes{v1.2b}{1990/01/28}{Call to \cs{@nomath} added.}
% \changes{v3.1a}{2015/01/09}{Allow \cs{emph} to produce small caps (latexrelease)}
% \begin{macro}{\eminnershape}
% \changes{v3.1a}{2015/01/09}{macro added (latexrelease)}
+%
+% These are the older definitions for \cs{em}, prior to 2020.
+%
% We also have to define the {\em emphasize\/} font change command
% (i.e.\ |\em|). This command will look is the current font is
% sloped (i.e.\ has a positive |\fontdimen1|) and will then
% select either |\upshape| or |\itshape|.
% \begin{macrocode}
-%</2ekernel>
-%<latexrelease>\IncludeInRelease{2015/01/01}{\eminnershape}{\eminnershape}%
-%<*2ekernel|latexrelease>
-\DeclareRobustCommand\em
- {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
- \eminnershape \else \itshape \fi}%
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\eminnershape{\upshape}%
-%</2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2015/01/01}{\DeclareEmphSequence}{Nested emph}%
+%<latexrelease>\let\DeclareEmphSequence\@undefined
+%<latexrelease>\let\emfontdeclare@clist\@undefined
+%<latexrelease>\let\emreset\@undefined
+%<latexrelease>\let\do@emfont@update\@undefined
+%<latexrelease>\let\emforce\@undefined
+%<latexrelease>\let\em@force\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\em
+%<latexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
+%<latexrelease> \eminnershape \else \itshape \fi}%
%<latexrelease>\EndIncludeInRelease
-%<latexrelease>\IncludeInRelease{0000/00/00}{\eminnershape}{\eminnershape}%
+%<latexrelease>
+%<latexrelease>\IncludeInRelease{0000/00/00}{\DeclareEmphSequence}{Nested emph}%
%<latexrelease>\DeclareRobustCommand\em
%<latexrelease> {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
%<latexrelease> \upshape \else \itshape \fi}%
@@ -230,6 +1076,12 @@
% \end{macro}
%
%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
% \begin{macro}{\not@math@alphabet}
% This function generates an error message when it is called in
% math mode. The same function should be defined in
@@ -331,35 +1183,6 @@
% \end{macro}
%
%
-% \begin{macro}{\oldstylenums}
-% This macro implements old style numerals but only works if we
-% assume that the standard math fonts are used. Thus it needs
-% changing in case other math encodings are used.
-% \begin{macrocode}
-\DeclareRobustCommand\oldstylenums[1]{%
- \begingroup
-% \end{macrocode}
-% Provide spacing using the interword space of the current font.
-% \begin{macrocode}
- \spaceskip\fontdimen\tw@\font
-% \end{macrocode}
-% Then switch to the math italic font. We don't change the current
-% value of |\f@series| which means that you can use bold numerals
-% if |\bfseries| is in force. As family we use |\rmdefault| which
-% means that this only works if there exist an |OML| encoded
-% version of that font or rather a corresponding |.fd| file (which
-% is the case for standard \LaTeX{} fonts even though they only
-% contain substitutions).
-% \changes{v3.0j}{1999/02/12}{Use \cs{rmdefault} instead of \texttt{cmm}
-% (pr/2954)}
-% \begin{macrocode}
- \usefont{OML}{\rmdefault}{\f@series}{it}%
- \mathgroup\symletters #1%
- \endgroup
-}
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\hexnumber@}
% To set up \LaTeX's special math character
% definitions we first provide a macro to generate hexadecimal
@@ -528,6 +1351,7 @@
\let\@addtofilelist\@gobble
% \end{macrocode}
%
+%
% Ditto for math although I don't think that we will get a lot of
% customisation :-)
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltfsstrc.dtx b/macros/latex-dev/base/ltfsstrc.dtx
index 05dafa20c6..bb82627de1 100644
--- a/macros/latex-dev/base/ltfsstrc.dtx
+++ b/macros/latex-dev/base/ltfsstrc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -34,10 +34,10 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}[1995/05/16]
%<package>\ProvidesPackage{tracefnt}
-%<package> [2015/02/21 v3.0k Standard LaTeX package (font tracing)]
+%<package> [2019/10/11 v3.0l Standard LaTeX package (font tracing)]
% \fi
% \ProvidesFile{ltfsstrc.dtx}
-% [2015/02/21 v3.0k LaTeX Kernel (NFSS tracing)]
+% [2019/10/11 v3.0l LaTeX Kernel (NFSS tracing)]
%
% \iffalse
%<+checkmem>\CHECKMEM
@@ -1731,7 +1731,7 @@
% the optional argument (if present) is ignored. The font encoding
% scheme cannot be changed. Therefore, the first thing we do is to
% prepend the encoding scheme.
-% \changes{v2.0b}{1992/07/26}{}
+% {documentation fixes}
% \begin{macrocode}
\DeclareSizeFunction{sub}{\sub@sfcnt\@font@warning}
\DeclareSizeFunction{ssub}{\sub@sfcnt\@font@info}
@@ -1787,6 +1787,40 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@font@aliasinfo}
+% \changes{v3.0l}{2019/10/11}{Added 'alias' size function}
+% Sometimes a substitution is only done to map a long font name to
+% a standard shape or series, e.g.,
+%\begin{verbatim}
+%\DeclareFontShape{T1}{Roboto-LF}{b}{it}{<-> alias * Roboto-LF/bold/it}{}
+%\end{verbatim}
+% Using the \texttt{ssub} function in that case will give a strange
+% (and incorrect) warning. As an alternative we therefore offer the
+% size function \texttt{alias}. It will still add some info into
+% the \texttt{.log} file, but no longer complains that the font
+% shape is not available. It is implemented by grabbing the default
+% warning text and replacing it with a new one.
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/01}%
+%<latexrelease> {\@font@aliasinfo}{alias size function}%
+\DeclareSizeFunction{alias}{\sub@sfcnt\@font@aliasinfo}
+\def\@font@aliasinfo#1{%
+ \@font@info{Font\space shape\space `\curr@fontshape'\space
+ aliased\space to\MessageBreak `\mandatory@arg'}%
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@font@aliasinfo}{alias size function}%
+%<latexrelease>\let\s@fct@alias\@undefined
+%<latexrelease>\let\@font@aliasinfo\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\s@fct@subf}
% The |subf| size function allows substitution of another font. The
diff --git a/macros/latex-dev/base/lthyphen.dtx b/macros/latex-dev/base/lthyphen.dtx
index ba4b018dce..71ab081c66 100644
--- a/macros/latex-dev/base/lthyphen.dtx
+++ b/macros/latex-dev/base/lthyphen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltidxglo.dtx b/macros/latex-dev/base/ltidxglo.dtx
index 19349c17dc..dcb88e83e9 100644
--- a/macros/latex-dev/base/ltidxglo.dtx
+++ b/macros/latex-dev/base/ltidxglo.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltlength.dtx b/macros/latex-dev/base/ltlength.dtx
index 7b72946d6e..f5b63ed35e 100644
--- a/macros/latex-dev/base/ltlength.dtx
+++ b/macros/latex-dev/base/ltlength.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltlists.dtx b/macros/latex-dev/base/ltlists.dtx
index 4dcbb8b56a..d1cafa6cd0 100644
--- a/macros/latex-dev/base/ltlists.dtx
+++ b/macros/latex-dev/base/ltlists.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -772,13 +772,13 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\item}
% \changes{LaTeX2.09}{1992/09/18}
% {(RmS) Added warning if \cs{item} is used in math mode}
% \changes{v1.0c}{1994/04/28}
% {Replaced \cs{@ltxnomath} by \cs{@inmatherr}}
% \changes{v1.0d}{1994/05/03}
% {Removed superfluous braces}
-% \begin{macro}{\item}
% \begin{macrocode}
\def\item{%
\@inmatherr\item
diff --git a/macros/latex-dev/base/ltlogos.dtx b/macros/latex-dev/base/ltlogos.dtx
index ab20b60c59..6784cb41c0 100644
--- a/macros/latex-dev/base/ltlogos.dtx
+++ b/macros/latex-dev/base/ltlogos.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx
index 41f2344a37..51fa46f695 100644
--- a/macros/latex-dev/base/ltluatex.dtx
+++ b/macros/latex-dev/base/ltluatex.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2019
+% Copyright (C) 2015-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index 216eb085ca..1b9dde398c 100644
--- a/macros/latex-dev/base/ltluatex.pdf
+++ b/macros/latex-dev/base/ltluatex.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltmath.dtx b/macros/latex-dev/base/ltmath.dtx
index c38f42b4f9..379dbf1afd 100644
--- a/macros/latex-dev/base/ltmath.dtx
+++ b/macros/latex-dev/base/ltmath.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltmiscen.dtx b/macros/latex-dev/base/ltmiscen.dtx
index f60a4090b6..1c05a08ec5 100644
--- a/macros/latex-dev/base/ltmiscen.dtx
+++ b/macros/latex-dev/base/ltmiscen.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -710,7 +710,7 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/02/01}%
+%<latexrelease>\IncludeInRelease{2020/02/02}%
%<latexrelease> {\@centercr}{Make robust}%
\protected\def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
\par\@ifstar{\nobreak\@xcentercr}\@xcentercr}
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index a23406531a..4629bf3c6b 100644
--- a/macros/latex-dev/base/ltnews.pdf
+++ b/macros/latex-dev/base/ltnews.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews.tex b/macros/latex-dev/base/ltnews.tex
index 9f8a1a715b..a771dc3763 100644
--- a/macros/latex-dev/base/ltnews.tex
+++ b/macros/latex-dev/base/ltnews.tex
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
% Copyright 2006, 2009, 2011, 2014 Heiko Oberdiek
-% Copyright (C) 2014-2019 The LaTeX3 Project
+% Copyright (C) 2014-2020 The LaTeX3 Project
%
% This file is part of the LaTeX base system.
% -------------------------------------------
@@ -32,7 +32,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltnews.tex}%
- [2015/02/16 v1.4b Master file for ltnews*.tex (LaTeX Project)]
+ [2020/01/09 v1.4c Master file for ltnews*.tex (LaTeX Project)]
\providecommand*{\lastissue}{31}
@@ -83,6 +83,7 @@
\RequirePackage{hyperref}
\hypersetup{colorlinks}
\RequirePackage{bookmark}
+\RequirePackage{multicol}
\makeatletter
@@ -189,7 +190,11 @@
\def\y{|graphicx}%
\ifx\x\y
\else
- \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc
+ \def\y{|multicol}%
+ \ifx\x\y
+ \else
+ \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc
+ \fi
\fi
\fi
\fi
diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf
index 5406ef38b5..53568f1ab9 100644
--- a/macros/latex-dev/base/ltnews01.pdf
+++ b/macros/latex-dev/base/ltnews01.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews01.tex b/macros/latex-dev/base/ltnews01.tex
index 9df213931f..9f0639b6db 100644
--- a/macros/latex-dev/base/ltnews01.tex
+++ b/macros/latex-dev/base/ltnews01.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf
index cbe548dd31..2dd68c1783 100644
--- a/macros/latex-dev/base/ltnews02.pdf
+++ b/macros/latex-dev/base/ltnews02.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews02.tex b/macros/latex-dev/base/ltnews02.tex
index ee386cb2e0..5b1c665282 100644
--- a/macros/latex-dev/base/ltnews02.tex
+++ b/macros/latex-dev/base/ltnews02.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf
index 362cb19388..c13742cc6f 100644
--- a/macros/latex-dev/base/ltnews03.pdf
+++ b/macros/latex-dev/base/ltnews03.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews03.tex b/macros/latex-dev/base/ltnews03.tex
index 8784c3b8e0..46d1bdc52c 100644
--- a/macros/latex-dev/base/ltnews03.tex
+++ b/macros/latex-dev/base/ltnews03.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf
index 4523c88d1b..e29a80e424 100644
--- a/macros/latex-dev/base/ltnews04.pdf
+++ b/macros/latex-dev/base/ltnews04.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews04.tex b/macros/latex-dev/base/ltnews04.tex
index b42e10da57..fe9cb35a9c 100644
--- a/macros/latex-dev/base/ltnews04.tex
+++ b/macros/latex-dev/base/ltnews04.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf
index d2ef5b415c..5ac5daefe5 100644
--- a/macros/latex-dev/base/ltnews05.pdf
+++ b/macros/latex-dev/base/ltnews05.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews05.tex b/macros/latex-dev/base/ltnews05.tex
index dfa9e23d78..4b31845f35 100644
--- a/macros/latex-dev/base/ltnews05.tex
+++ b/macros/latex-dev/base/ltnews05.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf
index f49ba834d4..483d8d8234 100644
--- a/macros/latex-dev/base/ltnews06.pdf
+++ b/macros/latex-dev/base/ltnews06.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews06.tex b/macros/latex-dev/base/ltnews06.tex
index 250675ea2e..a5134441f9 100644
--- a/macros/latex-dev/base/ltnews06.tex
+++ b/macros/latex-dev/base/ltnews06.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf
index 9e60136533..32bd59914c 100644
--- a/macros/latex-dev/base/ltnews07.pdf
+++ b/macros/latex-dev/base/ltnews07.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews07.tex b/macros/latex-dev/base/ltnews07.tex
index 6c08629d67..0f0e1fa385 100644
--- a/macros/latex-dev/base/ltnews07.tex
+++ b/macros/latex-dev/base/ltnews07.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf
index bde46974f0..31206f3f0a 100644
--- a/macros/latex-dev/base/ltnews08.pdf
+++ b/macros/latex-dev/base/ltnews08.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews08.tex b/macros/latex-dev/base/ltnews08.tex
index 891d13b302..ce84df9125 100644
--- a/macros/latex-dev/base/ltnews08.tex
+++ b/macros/latex-dev/base/ltnews08.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf
index d3617ff94f..29f6bd8e06 100644
--- a/macros/latex-dev/base/ltnews09.pdf
+++ b/macros/latex-dev/base/ltnews09.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews09.tex b/macros/latex-dev/base/ltnews09.tex
index 61cb8ced9c..975a69302c 100644
--- a/macros/latex-dev/base/ltnews09.tex
+++ b/macros/latex-dev/base/ltnews09.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf
index 9d477c4a64..8ddcc903a9 100644
--- a/macros/latex-dev/base/ltnews10.pdf
+++ b/macros/latex-dev/base/ltnews10.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews10.tex b/macros/latex-dev/base/ltnews10.tex
index 3214260a6a..49129ad71d 100644
--- a/macros/latex-dev/base/ltnews10.tex
+++ b/macros/latex-dev/base/ltnews10.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf
index d2f9f12f5a..a0cd85920e 100644
--- a/macros/latex-dev/base/ltnews11.pdf
+++ b/macros/latex-dev/base/ltnews11.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews11.tex b/macros/latex-dev/base/ltnews11.tex
index e39ff4cc86..64715a0c26 100644
--- a/macros/latex-dev/base/ltnews11.tex
+++ b/macros/latex-dev/base/ltnews11.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf
index 1eb1f713a5..786c3fb845 100644
--- a/macros/latex-dev/base/ltnews12.pdf
+++ b/macros/latex-dev/base/ltnews12.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews12.tex b/macros/latex-dev/base/ltnews12.tex
index ede8bb5362..360ed35de4 100644
--- a/macros/latex-dev/base/ltnews12.tex
+++ b/macros/latex-dev/base/ltnews12.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf
index f4d8242ec8..1d86f2a1d9 100644
--- a/macros/latex-dev/base/ltnews13.pdf
+++ b/macros/latex-dev/base/ltnews13.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews13.tex b/macros/latex-dev/base/ltnews13.tex
index 65e09b9871..d84bd7824f 100644
--- a/macros/latex-dev/base/ltnews13.tex
+++ b/macros/latex-dev/base/ltnews13.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf
index 2bd1505521..2710da0d0a 100644
--- a/macros/latex-dev/base/ltnews14.pdf
+++ b/macros/latex-dev/base/ltnews14.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews14.tex b/macros/latex-dev/base/ltnews14.tex
index 0444d75689..f374800768 100644
--- a/macros/latex-dev/base/ltnews14.tex
+++ b/macros/latex-dev/base/ltnews14.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf
index d6be28c34f..c59315e7a6 100644
--- a/macros/latex-dev/base/ltnews15.pdf
+++ b/macros/latex-dev/base/ltnews15.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews15.tex b/macros/latex-dev/base/ltnews15.tex
index 9c2d393c6b..487b399613 100644
--- a/macros/latex-dev/base/ltnews15.tex
+++ b/macros/latex-dev/base/ltnews15.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf
index a958c52952..a00f7fc058 100644
--- a/macros/latex-dev/base/ltnews16.pdf
+++ b/macros/latex-dev/base/ltnews16.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews16.tex b/macros/latex-dev/base/ltnews16.tex
index 96ca1ddf68..49bddf84a2 100644
--- a/macros/latex-dev/base/ltnews16.tex
+++ b/macros/latex-dev/base/ltnews16.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf
index f515036706..bb44c48413 100644
--- a/macros/latex-dev/base/ltnews17.pdf
+++ b/macros/latex-dev/base/ltnews17.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews17.tex b/macros/latex-dev/base/ltnews17.tex
index f55300f447..42c4d8401b 100644
--- a/macros/latex-dev/base/ltnews17.tex
+++ b/macros/latex-dev/base/ltnews17.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf
index fca9a36a20..13a4e7cc33 100644
--- a/macros/latex-dev/base/ltnews18.pdf
+++ b/macros/latex-dev/base/ltnews18.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews18.tex b/macros/latex-dev/base/ltnews18.tex
index 33f0d7310d..bf41992fe5 100644
--- a/macros/latex-dev/base/ltnews18.tex
+++ b/macros/latex-dev/base/ltnews18.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf
index a42783165a..21961f0012 100644
--- a/macros/latex-dev/base/ltnews19.pdf
+++ b/macros/latex-dev/base/ltnews19.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews19.tex b/macros/latex-dev/base/ltnews19.tex
index af99d329dd..a6f1fa9512 100644
--- a/macros/latex-dev/base/ltnews19.tex
+++ b/macros/latex-dev/base/ltnews19.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf
index c810b80103..a2d03ead66 100644
--- a/macros/latex-dev/base/ltnews20.pdf
+++ b/macros/latex-dev/base/ltnews20.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf
index f0a66f5964..8b01fdf485 100644
--- a/macros/latex-dev/base/ltnews21.pdf
+++ b/macros/latex-dev/base/ltnews21.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf
index 702dd58e0f..1bbc82c1fd 100644
--- a/macros/latex-dev/base/ltnews22.pdf
+++ b/macros/latex-dev/base/ltnews22.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews22.tex b/macros/latex-dev/base/ltnews22.tex
index 65d7db900a..cef9497a19 100644
--- a/macros/latex-dev/base/ltnews22.tex
+++ b/macros/latex-dev/base/ltnews22.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2019
+% Copyright (C) 2015-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf
index eb38d64694..4b84e393a4 100644
--- a/macros/latex-dev/base/ltnews23.pdf
+++ b/macros/latex-dev/base/ltnews23.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews23.tex b/macros/latex-dev/base/ltnews23.tex
index 693e22de83..38a500531c 100644
--- a/macros/latex-dev/base/ltnews23.tex
+++ b/macros/latex-dev/base/ltnews23.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2019
+% Copyright (C) 2015-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf
index b6a7d8fb38..aae89aa0a3 100644
--- a/macros/latex-dev/base/ltnews24.pdf
+++ b/macros/latex-dev/base/ltnews24.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews24.tex b/macros/latex-dev/base/ltnews24.tex
index 6cba173b60..a3893ad409 100644
--- a/macros/latex-dev/base/ltnews24.tex
+++ b/macros/latex-dev/base/ltnews24.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2015-2019
+% Copyright (C) 2015-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf
index a1139c9692..f78b08eaf7 100644
--- a/macros/latex-dev/base/ltnews25.pdf
+++ b/macros/latex-dev/base/ltnews25.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews25.tex b/macros/latex-dev/base/ltnews25.tex
index 9d675015c3..5d4450b430 100644
--- a/macros/latex-dev/base/ltnews25.tex
+++ b/macros/latex-dev/base/ltnews25.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2016-2019
+% Copyright (C) 2016-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf
index 0141fd4f68..52bdd00dc3 100644
--- a/macros/latex-dev/base/ltnews26.pdf
+++ b/macros/latex-dev/base/ltnews26.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews26.tex b/macros/latex-dev/base/ltnews26.tex
index a1362b3475..3147bcf1a7 100644
--- a/macros/latex-dev/base/ltnews26.tex
+++ b/macros/latex-dev/base/ltnews26.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2019
+% Copyright (C) 2017-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf
index 761da8a88b..64721b96d7 100644
--- a/macros/latex-dev/base/ltnews27.pdf
+++ b/macros/latex-dev/base/ltnews27.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews27.tex b/macros/latex-dev/base/ltnews27.tex
index 37b2fcf89e..14c4e4adac 100644
--- a/macros/latex-dev/base/ltnews27.tex
+++ b/macros/latex-dev/base/ltnews27.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2019
+% Copyright (C) 2017-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf
index 607b871600..0645fc5471 100644
--- a/macros/latex-dev/base/ltnews28.pdf
+++ b/macros/latex-dev/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews28.tex b/macros/latex-dev/base/ltnews28.tex
index c8af784081..09a8da8874 100644
--- a/macros/latex-dev/base/ltnews28.tex
+++ b/macros/latex-dev/base/ltnews28.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2017-2019
+% Copyright (C) 2017-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf
index 33ee86a199..269a64dcde 100644
--- a/macros/latex-dev/base/ltnews29.pdf
+++ b/macros/latex-dev/base/ltnews29.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews29.tex b/macros/latex-dev/base/ltnews29.tex
index 78a1b2e60f..045a692c22 100644
--- a/macros/latex-dev/base/ltnews29.tex
+++ b/macros/latex-dev/base/ltnews29.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2018-2019
+% Copyright (C) 2018-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf
index 29982202d7..0704a96666 100644
--- a/macros/latex-dev/base/ltnews30.pdf
+++ b/macros/latex-dev/base/ltnews30.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf
index 25b62b88e1..bdd68335cc 100644
--- a/macros/latex-dev/base/ltnews31.pdf
+++ b/macros/latex-dev/base/ltnews31.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews31.tex b/macros/latex-dev/base/ltnews31.tex
index 69f8dd3cd1..c365e527c0 100644
--- a/macros/latex-dev/base/ltnews31.tex
+++ b/macros/latex-dev/base/ltnews31.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright 2019
+% Copyright 2019-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -36,6 +36,7 @@
\usepackage{lmodern,url,hologo}
\usepackage{csquotes}
+\usepackage{multicol}
\providecommand\acro[1]{\textsc{#1}}
\providecommand\meta[1]{$\langle$\textit{#1}$\rangle$}
@@ -136,72 +137,41 @@
This document is under construction \ldots
-\section{Primitive requirements}
+\section{Experiences with the \LaTeX\texttt{-dev} formats}
-Since the finalisation of \eTeX{} in 1999, a number of additional `utility'
-primitives have been added to \pdfTeX{}. Several of these are broadly useful
-and have been requirements for \pkg{expl3} for some time, most notably
-\cs{pdfstrcmp}. Over time, a common set of these `post-\eTeX{}' primitives have
-been incorporated into \XeTeX{} and (u)p-\TeX{}; they were available in
-\LuaTeX{} already.
+As reported in the previous \emph{\LaTeX{} News}, we have made a pre-release
+version of the \LaTeX{} kernel available as \LaTeX\texttt{-dev}. Overall, the
+approach of having an explicit testing release has been positive: it is now
+readily-available in \TeX{} systems and is getting real use beyond the team.
-A number of the additional primitives are needed to support new or improved
-functionality in \LaTeX{}. This is seen for example in improved UTF-8 handling,
-which uses \cs{ifincsname}. The following primitive functionality (which in
-\LuaTeX{} may be achieved using Lua code) will therefore be \emph{required} by
-the \LaTeX{} kernel after [INSERT DATE HERE]:
-\begin{itemize}
- \item \cs{expanded}
- \item \cs{ifincsname}
- \item \cs{ifpdfprimitive}
- \item \cs{pdfcreationdate}
- \item \cs{pdfelapsedtime}
- \item \cs{pdffiledump}
- \item \cs{pdffilemoddate}
- \item \cs{pdffilesize}
- \item \cs{pdflastxpos}
- \item \cs{pdflastypos}
- \item \cs{pdfmdfivesum}
- \item \cs{pdfnormaldeviate}
- \item \cs{pdfpageheight}
- \item \cs{pdfpagewidth}
- \item \cs{pdfprimitive}
- \item \cs{pdfrandomseed}
- \item \cs{pdfresettimer}
- \item \cs{pdfsavepos}
- \item \cs{pdfsetrandomseed}
- \item \cs{pdfshellescape}
- \item \cs{pdfstrcmp}
- \item \cs{pdfuniformdeviate}
-\end{itemize}
-For ease of reference, these primitives will be referred to as the
-`\pdfTeX{} utilities'.
+The current
+release has been tested by a number of users, and we have had useful feedback
+on a range of new ideas. This has allowed us to fix issues in several of the
+new features described below. We thank the dedicated users who have been
+trying out the development formats, and encourage others to do so. Pre-testing
+in this way does mean that for the vast majority of users, problems are solved
+before they even appear!
-Engines which are fully Unicode-capable must all provide the following
-primitives
-\begin{itemize}
- \item \cs{Uchar}
- \item \cs{Ucharcat}
- \item \cs{Umathcode}
-\end{itemize}
-In particular, note that \cs{Umathcode} is used as a marker primitive for
-this capability.
+\section{Concerning this pre-release \ldots}
-\section{Experiences with the \LaTeX\texttt{-dev} formats}
+In \TeX{}Live 2020 the Lua\LaTeX{} format will use the new LuaHB\TeX{}
+engine, which is Lua\TeX{} with an embedded HarfBuzz library.
+HarfBuzz can be used by setting a suitable renderer in the font
+declaration. A basic interface for that is provided by \pkg{fontspec}.
+This additional font renderer will greatly improve the shaping of
+various scripts, which are currently handled correctly only by
+\XeTeX{}. To simplify the testing of the new engine, binaries have
+been already added to MiK\TeX{} and \TeX{}Live 2019 and both have changed
+the Lua\LaTeX-dev format to use it.
-\emph{write}
-In TeXLive 2020 the Lua\LaTeX{} format will use the new LuaHB\TeX{} engine, which is Lua\TeX{} with an embedded HarfBuzz library.
-HarfBuzz can be used by setting a suitable renderer in the font declaration. An interface for that is provided by \pkg{fontspec}.
-This additional font renderer will greatly improve the shaping of various scripts, which are currently handled correctly only by \XeTeX{}.
-To simplify the testing of the new engine, binaries have been added to MiKTeX and TeXLive 2019 and both have changed the Lua\LaTeX-dev format to use it.
\section{Improved load-times for \pkg{expl3}}
The \LaTeX3 programming layer, \pkg{expl3}, has over the past decade moved from
being largely experimental to broadly stable. It is now used in a significant
number of third-party packages, most notably \pkg{xparse} for defining
-interfaces in cases where no \pkg{expl3} code is \enquote{visible}. Most
+interfaces in cases where no \pkg{expl3} code is \enquote{visible}. In addition, most
\LaTeX{} documents compiled using \XeTeX{} or \LuaTeX{} load \pkg{fontspec},
which is written using \pkg{expl3}.
@@ -221,28 +191,482 @@ eventually, it will be possible to omit
\end{verbatim}
entirely, but to support older formats, this is still recommended at present.
+
+
+
+
+
+\section[Improvements to \LaTeX{}'s font selection\\ mechanism (NFSS)]
+ {Improvements to \LaTeX{}'s font selection\\ mechanism (NFSS)}
+
+
+\subsection{Extending the shape management of NFSS}
+
+Over time more and more fonts have become available for use with
+\LaTeX{}. Many such font families offer additional shapes, e.g., small
+caps italics (\texttt{scit}), small caps slanted (\texttt{scsl} or
+swash letters (\texttt{sw}). By using \cs{fontshape} those shapes can
+be explicitly selected and for the swash letter shapes there is also
+\cs{swshape} and \cs{textsw} available.
+
+In the original font selection implementation a request to select a new shape
+always overrode the current shape. With the 2020 release of \LaTeX{}
+this has changed and \cs{fontshape} can now be used to combine small
+capitals with italics, slanted or swash letters, either by explicitly
+asking for \texttt{scit}, etc., or by asking for italics when typesetting
+already in small caps and so forth.
+
+Using \cs{upshape} will still change italics or slanted back to an
+upright shape but will not any longer alter the small caps setting. To
+change small capitals back to upper/lower case you can now use
+\cs{ulcshape} (or \cs{textulc}) which in turn will not change the font
+with respect to italics, slanted or swash.
+%
+There is one exception: for compatibility reasons \cs{upshape} will
+change small capitals back to upright (\texttt{n} shape), if the
+current shape is \texttt{sc}. This is done so that something like
+\cs{scshape}\allowbreak\texttt{...}\allowbreak\cs{upshape} continues
+to work, but we suggest that you don't use that deprecated method in
+new documents.
+
+Finally, if you want to
+reset the shape back to normal you can use \cs{normalshape} which is a
+shorthand for \cs{upshape}\cs{ulcshape}.
+
+The way that shapes combine with each other is not hardwired but is
+customizable and extensible if there is ever a need for it. The
+mappings are defined through \cs{DeclareFontShapeChangeRule} and the
+details for developers are documented in \texttt{source2e.pdf}.
+
+The ideas for this interface extension have been pioneered in
+\pkg{fontspec} by Will Robertson for Unicode engines and in
+\pkg{fontaxes} by Andreas Bühmann and Michael Ummels for \pdfTeX{} and
+used in many font support packages.
+
+
+
+\subsection{Extending the series management of NFSS}
+
+Many of the the newer font families also come provided with additional
+weights (thin, semi-bold, ultra-bold, etc.\@) or several running lengths
+such a condensed or extra-condensed. In some cases the number of
+different series values is really impressive, for example, Noto Sans
+offers 36 fonts from ultra-light extra condensed to ultra-bold medium width.
+
+Already in its original design, NFSS supported 9 weight levels from
+ultra-light (\texttt{ul}) to ultra-bold (\texttt{ub}) and also 9 width
+levels from ultra-condensed (\texttt{uc}) to ultra-expanded
+(\texttt{ux}) so more than enough even for a font family like Noto
+Sans. Unfortunately, some font support packages nevertheless invented
+their own names so in recent years you could find all kinds of
+non-standard series names like \texttt{k}, \texttt{i}, \texttt{j} and
+others making it impossible to combine different fonts successfully
+using the standard NFSS mechanisms.
+
+Over the course of the last year a small number of individuals,
+notably, Bob Tennent, Michael Sharpe and Marc Penninga worked hard to
+bring this unsatisfying situation back under control and today we are
+happy to report that the internal font support files for more than a
+hundred font families are back to following the standard NFSS conventions
+so that combining them is now again rather nice and easy (of course,
+there is still the task of choosing combinations that visually work
+well together, but from a technical perspective they can now easily
+matched).
+
+
+In the original font selection implementation, a request to select a new series
+always overrode the current one. This was reasonable because there
+were nearly no fonts available that offered anything other than a
+medium or a bold series. Now that this has changed and families such
+as Noto Sans are available, combining weight and width into a single
+attribute is no longer appropriate. With the 2020 release of \LaTeX{}
+the series management therefore changed to allow for independently
+setting the weight and the width attribute of the series.
+
+For most users this change will be largely transparent as \LaTeX{}
+offers only \cs{textbf} or \cs{bfseries} to select a bolder face (and
+\cs{textmd} and \cs{mdseries} to return to a medium series) but no
+high-level command for selecting a condensed face, etc. However, with
+the NFSS low-level interface, it is now possible to ask for, say,
+\verb=\fontseries{c}\selectfont= in a marginal note to get a condensed
+face and that would still allow using \cs{textbf} inside. This then would
+select a bold condensed face and not a rather odd-looking
+bold-extended face in the middle of condensed type.
+
+The expectation is that this functionality is largely used by class and package
+designers, but given that the low-level NFSS commands are usable on
+the document level and not really difficult to apply, there are
+probably also a number of users who will enjoy using the new
+possibilities that bring \LaTeX{} back into the front league when it
+comes to font usage.
+
+The way different series values combine with each other is not
+hardwired but is again customizable and extensible. The mappings are
+defined through \cs{DeclareFontSeriesChangeRule} and the details for
+developers are documented in \texttt{source2e.pdf}.
+
+
+
+\subsection{Font series defaults per document family}
+
+With additional weights and widths available in many font families it
+becomes more likely that somebody wants to match, say, a medium weight
+serif family with a semi-light sans serif family or that with one
+family one wants to use the bold-extend face when \cs{textbf} is used
+while with another it should be bold (not extended) or semibold, etc.
+
+In the past this kind of extension was made available with the
+\pkg{mweights} package by Bob Tennent which has been used in many font
+support packages.
+
+With the 2020 release of \LaTeX{} this feature is now available out
+of the box. In addition we also offer a document-level interface to adjust the
+behavior of the high-level series commands \cs{textbf}, \cs{textmd} and their
+declaration forms \cs{bfseries} and \cs{mdseries} so that they can
+have different effects for the serif, sans serif and typewriter
+families used in a document.
+
+For example, specifying
+\begin{verbatim}
+ \DeclareFontSeriesDefault[rm]{bf}{sb}
+ \DeclareFontSeriesDefault[tt]{md}{lc}
+\end{verbatim}
+in the document preamble would result in \cs{textbf} producing
+semi-bold (\texttt{sb}) when typesetting in roman typeface and
+that typewriter is by default (medium series \texttt{md}) using
+a light-condensed face. The optional argument here can be either
+\texttt{rm}, \texttt{sf} or \texttt{tt} to indicate one of the three
+main font families in a document; if omitted you will change the
+overall document default instead. In the first mandatory argument you
+specify either \texttt{md} or \texttt{bf} and the second mandatory
+argument then gives the desired series value in NFSS nomenclature.
+
+
+\subsection{Emphasis handling generalized}
+
+With previous releases of \LaTeX{} nested \cs{emph} commands
+automatically alternated between italics and upright. This mechanism
+has now been generalized and you can now specify for arbitrary nesting
+levels how emphasis should be handled.
+
+The declaration \cs{DeclareEmphSequence} expects a comma separated
+list of font declarations corresponding to increasing levels of
+emphasis. For example,
+\begin{verbatim}
+ \DeclareEmphSequence{\itshape,%
+ \upshape\scshape,\itshape}
+\end{verbatim}
+uses italics for the first, small capitals for the second, and italic
+small capitals for the third level (provided you use a font that
+supports these shapes). If there are a more nesting levels than
+provided, \LaTeX{} uses the declarations stored in \cs{emreset} (by
+default \cs{ulcshape}\cs{upshape}) for the next level and then
+restarts the list.
+
+The mechanism tries to be \enquote{smart} and verifies that the given
+declarations actually alter the current font. If not it continues and
+tries the next level---the assumption being that there was already a
+manual font change in the document to the font that is now supposed to
+be used for emphasis.
+%
+Of course, this only works if the declarations in the list entries
+actually change the font and not, for example, just the color. In such
+a scenario one has to add \cs{emforce} to the entry which directs the
+mechanism to use the level, even if the font attributes appear to be
+unchanged.
+
+
+
+\subsection{Providing font family substitutions}
+
+Given that \pdfTeX{} can only handle fonts with up to 256 glyphs a
+single font encoding can only support a few languages. The \texttt{T1}
+encoding, for example, does support many of the Latin based scripts,
+but if you want to write in Greek or Russian you need to switch
+encodings to \texttt{LGR} or \texttt{T2A}. Given that not every font
+family offers glyphs in such encodings, you may end up with some
+default family (e.g., Computer Modern) that doesn’t blend in well
+chosen document font. For such cases NFSS now offers
+\cs{DeclareFontFamilySubstitution}, for example:
+\begin{verbatim}
+ \DeclareFontFamilySubstitution{LGR}
+ {Montserrat-LF}{IBMPlexSans-TLF}
+\end{verbatim}
+tells \LaTeX{} that if you are typesetting in the sans serif font
+\texttt{Montserrat-LF} and the Greek encoding \texttt{LGR} is asked
+for, then \LaTeX{} should use \texttt{IBMPlexSans-TLF} to fulfill the
+encoding request.
+
+The code is based on ideas from the \pkg{substitutefont}
+package by Günter Milde, but implemented differently.
+
+
+\subsection{Providing all text companion symbols by default}
+
+The text companion encoding \texttt{TS1} was originally not available
+by default, but only when the \pkg{textcomp} package was loaded. The
+main reason for this was limited availability in fonts other than
+Computer Modern and memory restrictions back in the nineties. These
+days neither limitation exists any more so with the 2020 release all
+the symbols provided with the \pkg{textcomp} package are available out
+of the box.
+
+Furthermore, an intelligent substitution mechanism has been
+implemented so that missing glyphs are automatically substituted with
+defaults that are sans serif if you typeset in \cs{textsf} and
+monospaced if you typeset using \cs{texttt} and not always serifed.
+
+
+\textsf{This is most noticeable with \cs{oldstylenums} which are now
+ taken from \texttt{TS1} so that you no longer get
+ \textrm{\oldstylenums{123}} but \oldstylenums{123} when typesetting
+ in sans serif fonts}\texttt{ and \oldstylenums{123} when using
+ typewriter fonts.}
+
+If there ever is a need to use the original (inferior) definition,
+then that remains available as \cs{legacyoldstylenums} and to fully
+revert to the old behavior there is also
+\cs{UseLegacyTextSymbols}. That declaration reverts \cs{oldstylenums}
+and also changes the footnote symbols, such as \cs{textdagger},
+\cs{textparagraph}, etc.\ pick up their glyphs again from the math
+fonts instead of the current text font (this means they always keep
+the same shape and do not nicely blend in with the text font).
+
+With the text companion symbols as part of the kernel it is normally
+no longer necessary to load the \pkg{textcomp} package, but for
+backwards compatibility this package will remain available. There is,
+however, one use case where it remains useful: if you load the package
+with the option \texttt{error} or \texttt{warn} then substitutions
+will change their behavior and result in a \LaTeX{} error or a
+\LaTeX{} warning (on the terminal), respectively. Without the package
+the substitution information only appears in the \texttt{.log}
+file. If you use the option \texttt{quit}, then even the information in
+the transcript is suppressed (which is not really recommended).
+
\section{Other changes to the \LaTeX{} kernel}
-\emph{fixed gh198}
+\subsection{New \texttt{alias} size function for use in \texttt{.fd} files}
+Most of the newer fonts supported in \TeX{} have been set up with the
+\texttt{autoinst} tool by Marc Penninga. In the past this program did
+set up the font faces using the face names chosen by its designer,
+e.g., \enquote{\texttt{regular}}, \enquote{\texttt{bold}}, etc., and
+then mapped those via substitution to the standard NFSS shape names,
+i.e., \enquote{\texttt{m}} or \enquote{\texttt{b}}. As a result one
+got unnecessary substitution warnings such as \enquote{\texttt{Font
+ T1/abc/bold/n not found using T1/abc/b/n instead}}.
-\section{Changes to packages in the \pkg{tools} category}
+We now provide a new NFSS \texttt{alias} size function that can and will be
+used by \texttt{autoinst} in the future. It provides the same
+functionality as the \texttt{subst} function but is less vocal about
+its actions, such that only relevant font substitutions show up as
+warnings.
+
+
+
+
+
+\subsection{UTF-8 characters in package descriptions}
+
+In 2018 we made UTF-8 the default input encoding for \LaTeX{} but we
+overlooked the case of package descriptions in declarations such as
+\cs{ProvidesPackage} which worked (sometimes) before but now died
+always. This has been corrected.
+\githubissue{52}
+
+
+\subsection{Suppress unnecessary font substitution warnings}
-\emph{fixed gh190}
+Many sans serif fonts do not have real italics but usually only
+oblique/slanted shapes, so the substitution of slanted for italics is
+natural and in fact many designers talk about italic sans serif faces
+even if in reality they are oblique. With nearly all sans serif font
+family the \LaTeX{} support files therefore silently substitute
+slanted if you ask for \cs{itshape} or \cs{textit}. This is also true
+for Computer Modern in \texttt{T1} encoding but in \texttt{OT1} you
+got a warning on the terminal even though there is nothing you can do
+about it. This has now been changed to an information message only
+written to the \texttt{.log} file.
+%
+\githubissue{172}
+
+
+\subsection{Fix inconsistent hook setting when loading packages}
+
+When a package is loaded
+\texttt{\textbackslash}\textit{package}\texttt{.sty-h@@k} is set, but
+it was loaded several times it was unset again. Relevant only to
+package developers.
+%
+\githubissue{198}
+\subsection{Avoid spurious warning if \texttt{LY1} is made the default encoding}
+
+Making \texttt{LY1} the default encoding as done by some font support
+packages gave a spurious warning even if \cs{rmdefault} was changed
+first. This was corrected.
+%
+\githubissue{199}
-\section{Changes to packages in the \pkg{amsmath} category}
+\subsection{Ensure that \cs{\textbackslash} remains robust}
+In the last release we made most document-level commands robust, but
+\cs{\textbackslash} became fragile again if \cs{raggedright}
+typesetting was used.
+%
+\githubissue{203}
-\section{Documentation updates}
+\subsection{Allow more write streams with \texttt{filecontents} in \LuaTeX}
+
+Most \TeX{} engines only support a maximum of sixteen concurrently
+open write streams and if those have been used up, then
+\texttt{filecontents} or any other code trying to open another one
+will fail. In \LuaTeX{} more write streams are available and those can
+now be utilized as well.
+%
+\githubissue{238}
+\section{Changes to packages in the \pkg{graphics} category}
+
+\subsection[Make \pkg{color}/\pkg{graphics} user-level commands robust]
+ {Make \pkg{color} \& \pkg{graphics} user-level commands robust}
+
+Some of the user-level commands of \pkg{color}, \pkg{graphics} and
+\pkg{graphicx} such as \cs{textcolor} or \cs{includegraphics} were
+still fragile, so didn't work in moving arguments without extra
+protection. All of them have now been made robust.
+%
+\githubissue{208}
+
+
+
+
+\section{Changes to packages in the \pkg{tools} category}
+
+\subsection{Fixed column depth in boxed \texttt{multicols}}
+
+The \texttt{multicols} environment was setting \cs{maxdepth} when
+splitting boxes but the way the internal interfaces of \LaTeX{} are
+designed it should have used \cs{@maxdepth} instead. As a result
+balanced boxed multicols sometimes ended up having different height
+even if they had exactly the same content.
+%
+\githubissue{190}
+
+
+\subsection{Ensure that \texttt{multicols} is not losing text}
+
+The \texttt{multicols} environment needs a set of consecutive boxes to
+collect column material. The way those got allocated could result in
+disaster if other packages allocated most boxes below box 255 (which
+\TeX{} always uses for the output page). In the original
+implementation that problem was identified because one could only
+allocate boxes below 255, but nowadays the \LaTeX{} allocation routine
+allows allocating boxes below and above 255. So the assumption that
+asking for, say 20 boxes you get a consecutive sequence of box
+registers was no longer true and so some of the column material could
+end in box 255 and be overwritten. This has now been corrected by
+allocating all necessary boxes above 255 if there aren't enough
+registers available.
+%
+\githubissue{237}
+
+\subsection{Allow spaces in \cs{hhline} arguments}
+
+The verb \verb|\hhline| command which allows
+specification of rule segments in \texttt{tabular} environments now
+allows (and ignores) spaces between its tokens so
+\verb|\hhline{: = : =}| is now allowed and equivalent to
+\verb|\hhline{:=:=}|. This matches similar token arguments in \LaTeX{}
+such as the \verb|[h t p]| argument on floats. A similar change has
+been made to the extended \verb|\hhline| command in the
+\texttt{colortbl} package.
+%
+\githubissue{242}
+
+
+
+\section{Primitive requirements}
+
+Since the finalization of \eTeX{} in 1999, a number of additional `utility'
+primitives have been added to \pdfTeX{}. Several of these are broadly useful
+and have been requirements for \pkg{expl3} for some time, most notably
+\cs{pdfstrcmp}. Over time, a common set of these `post-\eTeX{}' primitives have
+been incorporated into \XeTeX{} and (u)p-\TeX{}; they were available in
+\LuaTeX{} already.
+
+A number of the additional primitives are needed to support new or improved
+functionality in \LaTeX{}. This is seen for example in improved UTF-8 handling,
+which uses \cs{ifincsname}. The following primitive functionality (which in
+\LuaTeX{} may be achieved using Lua code) will therefore be \emph{required} by
+the \LaTeX{} kernel from the start of 2021:
+%
+\begingroup\setlength\columnsep{0pt}
+\begin{multicols}{2}
+\begin{itemize}
+ \item \cs{expanded}
+ \item \cs{ifincsname}
+ \item \cs{ifpdfprimitive}
+ \item \cs{pdfcreationdate}
+ \item \cs{pdfelapsedtime}
+ \item \cs{pdffiledump}
+ \item \cs{pdffilemoddate}
+ \item \cs{pdffilesize}
+ \item \cs{pdflastxpos}
+ \item \cs{pdflastypos}
+ \item \cs{pdfmdfivesum}
+ \item \cs{pdfnormaldeviate}
+ \item \cs{pdfpageheight}
+ \item \cs{pdfpagewidth}
+ \item \cs{pdfprimitive}
+ \item \cs{pdfrandomseed}
+ \item \cs{pdfresettimer}
+ \item \cs{pdfsavepos}
+ \item \cs{pdfsetrandomseed}
+ \item \cs{pdfshellescape}
+ \item \cs{pdfstrcmp}
+ \item \cs{pdfuniformdeviate}
+\end{itemize}
+\end{multicols}
+\endgroup
+%
+For ease of reference, these primitives will be referred to
+as the `\pdfTeX{} utilities'. With the exception of \cs{expanded},
+these have been present in \pdfTeX{} since the release of version
+1.40.0 in 2007; \cs{expanded} was added for \TeX{}~Live
+2019. Similarly, the full set of utility primitives have been
+available in \XeTeX{} from the 2019 \TeX{}~Live release, and have
+always been available in \LuaTeX{} (some by Lua emulation). p\TeX{}
+and up\TeX{} gained all of the above bar \cs{ifincsname} for
+\TeX{}~Live 2019, and will have that primitive from the 2020 release.
+
+At the same time, engines which are fully Unicode-capable must all
+provide the following primitives
+%
+\begingroup\setlength\columnsep{0pt}
+\begin{multicols}{2}
+\begin{itemize}
+ \item \cs{Uchar}
+ \item \cs{Ucharcat}
+ \item \cs{Umathcode}
+\end{itemize}
+\end{multicols}
+\endgroup
+%
+Note that it has become standard practice to check for Unicode-aware
+engines with the existence of the \cs{Umathcode} primitive. As such,
+this is already a requirement: engines lacking these primitives cannot
+access Unicode features of the \LaTeXe{} kernel or of
+\pkg{expl3}. Note that up\TeX{} has facilities for handling Unicode
+but is not classed as a Unicode engine by the base LaTeX code.
+
\begin{thebibliography}{9}
%\fontsize{9.3}{11.3}\selectfont
@@ -261,10 +685,6 @@ entirely, but to support older formats, this is still recommended at present.
\emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
\url{https://latex-project.org/documentation/}
-%\bibitem{31:site-pub}
-% \emph{\LaTeX{} Project publications on the \LaTeX{} Project Website}.\\
-% \url{https://latex-project.org/publications/}
-
\end{thebibliography}
\end{document}
diff --git a/macros/latex-dev/base/ltoutenc.dtx b/macros/latex-dev/base/ltoutenc.dtx
index b16af5c8c6..fb437d4ad2 100644
--- a/macros/latex-dev/base/ltoutenc.dtx
+++ b/macros/latex-dev/base/ltoutenc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -37,15 +37,14 @@
%<TS1>\ProvidesFile{ts1enc.def}[2001/06/05 v3.0e (jk/car/fm)
%<TU>\ProvidesFile{tuenc.def}
%<package>\ProvidesPackage{fontenc}
-%<TS1sty>\ProvidesPackage{textcomp}
-%<OT1|T1|OMS|OML|OT4|TU|package|TS1sty> [2018/08/11 v2.0j
-%<OT1|T1|OMS|OML|OT4|TS1|TU> Standard LaTeX file]
-%<package|TS1sty> Standard LaTeX package]
+%<OT1|T1|OMS|OML|OT4|TU|package> [2019/11/22 v2.0l
+%<OT1|T1|OMS|OML|OT4|TS1|TU> Standard LaTeX file]
+%<package> Standard LaTeX package]
%
%<*driver>
% \fi
\ProvidesFile{ltoutenc.dtx}
- [2018/11/18 v2.0k LaTeX Kernel (font encodings)]
+ [2019/12/18 v2.0m LaTeX Kernel (font encodings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutenc.dtx}
@@ -834,8 +833,23 @@
% {Explicitly set \cs{spacefactor} after \cs{accent} (pr/2877)}
% \begin{macrocode}
\global\mathchardef\accent@spacefactor\spacefactor}%
+% \end{macrocode}
+% The accent primitive doesn't allow things \cs{begingroup} to
+% interfere between accent and base character. Therefore we need to
+% avoid that (they are some hidden inside \cs{maybe@load@fontshape}).
+% As we don't have to load the fontshape in this case
+% (as that happened in the box above if necessary, we simply
+% disable that part of the code temporaily.
+% We also ignore \cs{ignorespaces} which has the same issue and may
+% show up as part of \cs{normalfont} if that is used.
+% \changes{v2.0m}{2019/12/18}{Avoid code that breaks \cs{accent}}
+% \begin{macrocode}
+ \let\maybe@load@fontshape\relax
+ \let\ignorespaces\relax
\accent#1 #2\egroup\spacefactor\accent@spacefactor}
% \end{macrocode}
+%
+%
% Default definition for |\accent@spacefactor| prevents a horrible
% death of the above macro inside an unprotected |\edef|.
% \changes{v1.9w}{1999/10/28}{Give \cs{accent@spacefactor} a default
@@ -1107,7 +1121,8 @@
%<*2ekernel>
% \end{macrocode}
%
-%
+% Switch to a different text encoding without any grouping for use in
+% \cs{UseTextAccent} or \cs{UseTextSymbol} (and for \cs{oldstylenums}).
% \begin{macrocode}
\def\@use@text@encoding#1{%
\edef\f@encoding{#1}%
@@ -1445,11 +1460,18 @@
% \begin{macrocode}
\DeclareTextCommandDefault{\textasciicircum}{\^{}}
\DeclareTextCommandDefault{\textasciitilde}{\~{}}
-\DeclareTextCommandDefault{\textcompwordmark}{\leavevmode\kern\z@}
\DeclareTextCommandDefault{\textunderscore}{%
\leavevmode \kern.06em\vbox{\hrule\@width.3em}}
% \end{macrocode}
%
+% There is no good reason anymore to fake \cs{textcompwordmark}.
+% \changes{v2.0m}{2019/12/18}{Don't fake \cs{textcompwordmark}; take
+% default from T1 instead}
+% \begin{macrocode}
+%\DeclareTextCommandDefault{\textcompwordmark}{\leavevmode\kern\z@}
+\DeclareTextSymbolDefault{\textcompwordmark}{T1}
+% \end{macrocode}
+%
% \begin{macrocode}
\DeclareTextCommandDefault{\textvisiblespace}{%
\mbox{\kern.06em\vrule \@height.3ex}%
@@ -3508,8 +3530,21 @@
\ProcessOptions*
% \end{macrocode}
%
+% We select the new font encoding default (i.e., the last encoding
+% specified in the option list. But this encoding may not work with
+% the current |\f@shape|, e.g., \texttt{LY1} is not defined for
+% \texttt{cmr} and therefore packages switching to \texttt{LY1}
+% usually also change \cs{rmdefault}. But that only applies at
+% |\begin{document}| so we get a spurious warning if we use what
+% \LaTeX{} previously used:
+% \changes{v2.0l}{2019/11/22}{Avoid spurious if fontenc selects LY1 as
+% default encoding (gh/199)}
+% \begin{macrocode}
+%\fontencoding\encodingdefault\selectfont
+% \end{macrocode}
+% So instead we do this here:
% \begin{macrocode}
-\fontencoding\encodingdefault\selectfont
+\usefont\encodingdefault\familydefault\seriesdefault\shapedefault
% \end{macrocode}
%
% To save some space we get rid of the macro extending the
@@ -3538,728 +3573,6 @@
% \end{macrocode}
%
%
-% \subsection{The textcomp package}
-%
-% This one is for the |TS1| encoding which contains text symbols
-% for use with the |T1|-encoded text fonts. It therefore first
-% inputs the file |TS1enc.def| and then sets (or resets) the
-% defaults for the symbols it contains. The result of this is that
-% when one of these symbols is accessed and the current encoding
-% does not provide it, the symbol will be supplied by a silent,
-% local change to this encoding.
-%
-% \begin{macrocode}
-%<*TS1sty>
-% \end{macrocode}
-% Since many PostScript fonts only implement a subset of |TS1| many
-% commands only produce black blobs of ink. To resolve the
-% resulting problems a number of options have been introduced and
-% some code has been developed to distinguish sub-encodings.
-%
-% The sub-encodings have a numerical id and are defined as follows
-% for \texttt{TS1}:
-% \begin{description}
-%
-% \item[\#5] those \texttt{TS1} symbols that are also in the ISO-Adobe
-% character set; without \verb=textcurrency=, which is often
-% misused for the Euro. Older Type1 fonts from the non-\TeX{}
-% world provide only this subset.
-%
-% \item[\#4] = \#5 + \verb=\texteuro=. Most newer fonts provide this.
-%
-% \item[\#3] = \#4 + \verb=\textomega=. Can also be described as
-% $\texttt{TS1} \cap (\texttt{ISO-Adobe} \cup
-% \texttt{MacRoman})$. (Except for the missing "currency".)
-
-%
-% \item[\#2] = \#3 + \verb=\textestimated= + \verb=\textcurrency=. Can
-% also be described as $\texttt{TS1} \cap
-% \texttt{Adobe-Western-2}$. This may be relevant for OpenType
-% fonts, which usually show the Adobe-Western-2 character set.
-%
-% \item[\#1] = \texttt{TS1} without \verb=\textcircled= and \verb=\t=.
-% These two glyphs are often not implemented and if their kernel
-% defaults are changed commands like \verb=\copyright=
-% unnecessarily fail.
-%
-% \item[\#0] = full \texttt{TS1}
-% \end{description}
-%
-% And here a summary to go in the transcript file:
-% \begin{macrocode}
-\PackageInfo{textcomp}{Sub-encoding information:\MessageBreak
- \space\space 5 = only ISO-Adobe without
- \string\textcurrency\MessageBreak
- \space\space 4 = 5 + \string\texteuro\MessageBreak
- \space\space 3 = 4 + \string\textohm\MessageBreak
- \space\space 2 = 3 + \noexpand\textestimated+
- \string\textcurrency\MessageBreak
- \space\space 1 = TS1 - \noexpand\textcircled-
- \string\t\MessageBreak
- \space\space 0 = TS1 (full)\MessageBreak
- Font families with sub-encoding setting implement\MessageBreak
- only a restricted character set as indicated.\MessageBreak
- Family '?' is the default used for unknown fonts.\MessageBreak
- See the documentation for details\@gobble}
-% \end{macrocode}
-%
-% \begin{macro}{\DeclareEncodingSubset}
-% An encoding subset to which a font family belongs is declared by
-% the command |\DeclareEncodingSubset| that takes the major encoding as the
-% first argument (e.g., |TS1|), the family name as the second
-% argument (e.g., |cmr|), and the subset encoding id as a third,
-% (e.g., |0| for |cmr|).
-%
-% The default encoding subset to use when nothing is known about
-% the current font family is named |?|.
-% \begin{macrocode}
-\def\DeclareEncodingSubset#1#2#3{%
- \@ifundefined{#1:#2}%
- {\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
- {\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
- \@namedef{#1:#2}{#3}}
-\@onlypreamble\DeclareEncodingSubset
-% \end{macrocode}
-% \end{macro}
-%
-%
-% The options for the package are the following:
-% \begin{description}
-% \item[safe]
-% for unknown font families enables only symbols that are also
-% in the ISO-Adobe character set; without "currency", which is
-% often misused for the Euro. Older Type1 fonts from the
-% non-TeX world provide only this subset.
-%
-% \item[euro]
-% enables the ``safe'' symbols plus the |\texteuro|
-% command. Most newer fonts provide this.
-%
-% \item[full] enables all |TS1| commands; useful only with fonts
-% like EC or CM bright.
-%
-% \item[almostfull]
-% same as ``full'', except that |\textcircled|
-% and |\t| are \emph{not} redefined from their defaults to avoid
-% that commands like |\copyright| suddenly no longer work.
-%
-% \item[force]
-% ignore all subset encoding definitions stored in the package
-% itself or in the configuration file and always use the default
-% subset as specified by one of the other options (seldom useful,
-% only dangerous).
-% \end{description}
-
-% \begin{macro}{\iftc@forced}
-% Switch used to implement the \texttt{force} option
-% \begin{macrocode}
-\newif\iftc@forced \tc@forcedfalse
-% \end{macrocode}
-% \end{macro}
-
-% This is implemented by defining the default subset:
-% \begin{macrocode}
-\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
-\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
-\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}}
-\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}}
-% \end{macrocode}
-% The default is ``almostfull'' which means that old documents will
-% work except that |\textcircled| and |\t| will use the kernel
-% defaults (with the advantage that this also works if the current
-% font (as often the case) doesn't implement these glyphs.
-%
-% The ``force'' option simply sets the switch to true.
-% \begin{macrocode}
-\DeclareOption{force}{\tc@forcedtrue}
-% \end{macrocode}
-%
-% The suggestions to user is to use the ``safe'' option always
-% unless that balks in which case they could switch to
-% ``almostfull'' but then better check their output manually.
-%
-% \begin{macrocode}
-\def\tc@errorwarn{\PackageError}
-\DeclareOption{warn}{\gdef\tc@errorwarn#1#2#3{\PackageWarning{#1}{#2}}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\ExecuteOptions{almostfull}
-\ProcessOptions\relax
-% \end{macrocode}
-%
-% \begin{macro}{\CheckEncodingSubset}
-% The command |\CheckEncodingSubset| will check if the current font
-% family has the right encoding subset to typeset a certain
-% command. It takes five arguments as follows:
-% first argument is either |\UseTextSymbol|, |\UseTextAccent|
-% depending on whether or not the symbol is a text symbol or a text
-% accent.
-
-% The second argument is the encoding from which this symbol should
-% be fetched.
-%
-% The third argument is either a fake accessor command or an error
-% message. the code in that argument (if ever executed) receives
-% two arguments: |#2| and |#5| of |\CheckEncodingSubset|.
-%
-% Argument four is the subset encoding id to test against: if this
-% value is higher than the subset id of the current font family
-% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise
-% it runs |#3#5|, e.g., to produce an error message or fake the
-% glyph somehow.
-%
-% Argument five is the symbol or accent command that is being
-% checked.
-%
-% For usage examples see definitions below.
-% \begin{macrocode}
-\iftc@forced
-% \end{macrocode}
-% If the ``force'' option was given we always use the default for
-% testing against.
-% \begin{macrocode}
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- 0\csname #2:?\endcsname
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-% \end{macrocode}
-% In normal circumstances the test is a bit more complicated: first
-% check if there exists a macro
-% |\|\meta{arg2}|:|\meta{current-family} and if so use that value
-% to test against, otherwise use the default to test against.
-% \begin{macrocode}
-\else
-\def\CheckEncodingSubset#1#2#3#4#5{%
- \ifnum #4>%
- \expandafter\ifx\csname #2:\f@family\endcsname\relax
- 0\csname #2:?\endcsname
- \else
- \csname #2:\f@family\endcsname
- \fi
- \relax
- \expandafter\@firstoftwo
- \else
- \expandafter\@secondoftwo
- \fi
- {#1{#2}}{#3}%
- #5%
-}
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tc@subst}
-% \begin{macrocode}
-\def\tc@subst#1{%
- \tc@errorwarn{textcomp}% % should be latex error if general
- {Symbol \string#1 not provided by\MessageBreak
- font family \f@family\space
- in TS1 encoding.\MessageBreak Default family used instead}\@eha
- \bgroup\fontfamily\textcompsubstdefault\selectfont#1\egroup
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\textcompsubstdefault}
-% \begin{macrocode}
-\def\textcompsubstdefault{cmr}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\tc@error}
-% |\tc@error| is going to be used in arg |#3| of
-% |\CheckEncodingSubset| when a symbol is not available in a
-% certain font family. It gets pass the encoding it normally lives
-% in (arg one) and the name of the symbol or accent that has a
-% problem.
-%
-% \begin{macrocode}
-% error commands take argument:
-% #1 symbol to be used
-\def\tc@error#1{%
- \PackageError{textcomp}% % should be latex error if general
- {Accent \string#1 not provided by\MessageBreak
- font family \f@family\space
- in TS1 encoding}\@eha
-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\tc@fake@euro}
-% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of
-% |\CheckEncodingSubset| when a symbol is not available in a
-% certain font family. Here we produce an Euro symbol by combining
-% a ``C'' with a ``=''.
-% \begin{macrocode}
-\def\tc@fake@euro#1{%
- \leavevmode
- \PackageInfo{textcomp}{Faking \noexpand#1for font family
- \f@family\MessageBreak in TS1 encoding}%
- \valign{##\cr
- \vfil\hbox to 0.07em{\dimen@\f@size\p@
- \math@fontsfalse
- \fontsize{.7\dimen@}\z@\selectfont=\hss}%
- \vfil\cr%
- \hbox{C}\crcr
- }%
-}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tc@check@symbol}
-% \begin{macro}{\tc@check@accent}
-% These are two abbreviations that we use below to check symbols
-% and accents in TS1. Only there to save some space, e.g., we can
-% then write
-%\begin{verbatim}
-%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}
-%\end{verbatim}
-% to ensure that |\textcurrency| is only typeset if the current
-% font has a \texttt{TS1} subset id of less than 3. Otherwise
-% |\tc@error| is called telling the user that for this font family
-% |\textcurreny| is not available.
-% \begin{macrocode}
-\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst}
-\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% We start with the commands that are ``safe'' and which can be
-% unconditionally set up, first the accents\ldots
-% \begin{macrocode}
-\DeclareTextAccentDefault{\capitalcedilla}{TS1}
-\DeclareTextAccentDefault{\capitalogonek}{TS1}
-\DeclareTextAccentDefault{\capitalgrave}{TS1}
-\DeclareTextAccentDefault{\capitalacute}{TS1}
-\DeclareTextAccentDefault{\capitalcircumflex}{TS1}
-\DeclareTextAccentDefault{\capitaltilde}{TS1}
-\DeclareTextAccentDefault{\capitaldieresis}{TS1}
-\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1}
-\DeclareTextAccentDefault{\capitalring}{TS1}
-\DeclareTextAccentDefault{\capitalcaron}{TS1}
-\DeclareTextAccentDefault{\capitalbreve}{TS1}
-\DeclareTextAccentDefault{\capitalmacron}{TS1}
-\DeclareTextAccentDefault{\capitaldotaccent}{TS1}
-% \end{macrocode}
-% \ldots and then the other glyphs.
-% \changes{v1.9p}{1998/06/12}{Renamed \cs{textmacron} pr/2840}
-% \begin{macrocode}
-\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
-\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}
-\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
-\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}
-\DeclareTextSymbolDefault{\texttwelveudash}{TS1}
-\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1}
-\DeclareTextSymbolDefault{\textdollar}{TS1}
-\DeclareTextSymbolDefault{\textquotesingle}{TS1}
-\DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
-\DeclareTextSymbolDefault{\textfractionsolidus}{TS1}
-\DeclareTextSymbolDefault{\textminus}{TS1}
-\DeclareTextSymbolDefault{\textlbrackdbl}{TS1}
-\DeclareTextSymbolDefault{\textrbrackdbl}{TS1}
-\DeclareTextSymbolDefault{\textasciigrave}{TS1}
-\DeclareTextSymbolDefault{\texttildelow}{TS1}
-\DeclareTextSymbolDefault{\textasciibreve}{TS1}
-\DeclareTextSymbolDefault{\textasciicaron}{TS1}
-\DeclareTextSymbolDefault{\textgravedbl}{TS1}
-\DeclareTextSymbolDefault{\textacutedbl}{TS1}
-\DeclareTextSymbolDefault{\textdagger}{TS1}
-\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
-\DeclareTextSymbolDefault{\textbardbl}{TS1}
-\DeclareTextSymbolDefault{\textperthousand}{TS1}
-\DeclareTextSymbolDefault{\textbullet}{TS1}
-\DeclareTextSymbolDefault{\textcelsius}{TS1}
-\DeclareTextSymbolDefault{\textflorin}{TS1}
-\DeclareTextSymbolDefault{\texttrademark}{TS1}
-\DeclareTextSymbolDefault{\textcent}{TS1}
-\DeclareTextSymbolDefault{\textsterling}{TS1}
-\DeclareTextSymbolDefault{\textyen}{TS1}
-\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
-\DeclareTextSymbolDefault{\textsection}{TS1}
-\DeclareTextSymbolDefault{\textasciidieresis}{TS1}
-\DeclareTextSymbolDefault{\textcopyright}{TS1}
-\DeclareTextSymbolDefault{\textordfeminine}{TS1}
-\DeclareTextSymbolDefault{\textlnot}{TS1}
-\DeclareTextSymbolDefault{\textregistered}{TS1}
-\DeclareTextSymbolDefault{\textasciimacron}{TS1}
-\DeclareTextSymbolDefault{\textdegree}{TS1}
-\DeclareTextSymbolDefault{\textpm}{TS1}
-\DeclareTextSymbolDefault{\texttwosuperior}{TS1}
-\DeclareTextSymbolDefault{\textthreesuperior}{TS1}
-\DeclareTextSymbolDefault{\textasciiacute}{TS1}
-\DeclareTextSymbolDefault{\textmu}{TS1}
-\DeclareTextSymbolDefault{\textparagraph}{TS1}
-\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
-\DeclareTextSymbolDefault{\textonesuperior}{TS1}
-\DeclareTextSymbolDefault{\textordmasculine}{TS1}
-\DeclareTextSymbolDefault{\textonequarter}{TS1}
-\DeclareTextSymbolDefault{\textonehalf}{TS1}
-\DeclareTextSymbolDefault{\textthreequarters}{TS1}
-\DeclareTextSymbolDefault{\texttimes}{TS1}
-\DeclareTextSymbolDefault{\textdiv}{TS1}
-% \end{macrocode}
-%
-% The |\texteuro| is only available for subsets with id 4 or
-% less. Otherwise we fake the glyph using |\tc@fake@euro|
-% \begin{macrocode}
-\DeclareTextCommandDefault{\texteuro}
- {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro}
-% \end{macrocode}
-%
-% The |\textohm| is only available for subsets with id 3 or
-% less. Otherwise we produce an error.
-% \begin{macrocode}
-\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm}
-% \end{macrocode}
-% The |\textestimated| and |\textcurrency| are only provided for
-% fonts with subset encoding with id 2 or less.
-% \begin{macrocode}
-\DeclareTextCommandDefault{\textestimated}%
- {\tc@check@symbol3\textestimated}
-\DeclareTextCommandDefault{\textcurrency}%
- {\tc@check@symbol3\textcurrency}
-% \end{macrocode}
-% Nearly all of the remaining glyphs are provided only with fonts
-% with id 1 or 0, i.e., are essentially complete.
-% \begin{macrocode}
-\DeclareTextCommandDefault{\capitaltie}%
- {\tc@check@accent2\capitaltie}
-\DeclareTextCommandDefault{\newtie}%
- {\tc@check@accent2\newtie}
-\DeclareTextCommandDefault{\capitalnewtie}%
- {\tc@check@accent2\capitalnewtie}
-\DeclareTextCommandDefault{\textleftarrow}%
- {\tc@check@symbol2\textleftarrow}
-\DeclareTextCommandDefault{\textrightarrow}%
- {\tc@check@symbol2\textrightarrow}
-\DeclareTextCommandDefault{\textblank}%
- {\tc@check@symbol2\textblank}
-\DeclareTextCommandDefault{\textdblhyphen}%
- {\tc@check@symbol2\textdblhyphen}
-\DeclareTextCommandDefault{\textzerooldstyle}%
- {\tc@check@symbol2\textzerooldstyle}
-\DeclareTextCommandDefault{\textoneoldstyle}%
- {\tc@check@symbol2\textoneoldstyle}
-\DeclareTextCommandDefault{\texttwooldstyle}%
- {\tc@check@symbol2\texttwooldstyle}
-\DeclareTextCommandDefault{\textthreeoldstyle}%
- {\tc@check@symbol2\textthreeoldstyle}
-\DeclareTextCommandDefault{\textfouroldstyle}%
- {\tc@check@symbol2\textfouroldstyle}
-\DeclareTextCommandDefault{\textfiveoldstyle}%
- {\tc@check@symbol2\textfiveoldstyle}
-\DeclareTextCommandDefault{\textsixoldstyle}%
- {\tc@check@symbol2\textsixoldstyle}
-\DeclareTextCommandDefault{\textsevenoldstyle}%
- {\tc@check@symbol2\textsevenoldstyle}
-\DeclareTextCommandDefault{\texteightoldstyle}%
- {\tc@check@symbol2\texteightoldstyle}
-\DeclareTextCommandDefault{\textnineoldstyle}%
- {\tc@check@symbol2\textnineoldstyle}
-\DeclareTextCommandDefault{\textlangle}%
- {\tc@check@symbol2\textlangle}
-\DeclareTextCommandDefault{\textrangle}%
- {\tc@check@symbol2\textrangle}
-\DeclareTextCommandDefault{\textmho}%
- {\tc@check@symbol2\textmho}
-\DeclareTextCommandDefault{\textbigcircle}%
- {\tc@check@symbol2\textbigcircle}
-\DeclareTextCommandDefault{\textuparrow}%
- {\tc@check@symbol2\textuparrow}
-\DeclareTextCommandDefault{\textdownarrow}%
- {\tc@check@symbol2\textdownarrow}
-\DeclareTextCommandDefault{\textborn}%
- {\tc@check@symbol2\textborn}
-\DeclareTextCommandDefault{\textdivorced}%
- {\tc@check@symbol2\textdivorced}
-\DeclareTextCommandDefault{\textdied}%
- {\tc@check@symbol2\textdied}
-\DeclareTextCommandDefault{\textleaf}%
- {\tc@check@symbol2\textleaf}
-\DeclareTextCommandDefault{\textmarried}%
- {\tc@check@symbol2\textmarried}
-\DeclareTextCommandDefault{\textmusicalnote}%
- {\tc@check@symbol2\textmusicalnote}
-\DeclareTextCommandDefault{\textdblhyphenchar}%
- {\tc@check@symbol2\textdblhyphenchar}
-\DeclareTextCommandDefault{\textdollaroldstyle}%
- {\tc@check@symbol2\textdollaroldstyle}
-\DeclareTextCommandDefault{\textcentoldstyle}%
- {\tc@check@symbol2\textcentoldstyle}
-\DeclareTextCommandDefault{\textcolonmonetary}%
- {\tc@check@symbol2\textcolonmonetary}
-\DeclareTextCommandDefault{\textwon}%
- {\tc@check@symbol2\textwon}
-\DeclareTextCommandDefault{\textnaira}%
- {\tc@check@symbol2\textnaira}
-\DeclareTextCommandDefault{\textguarani}%
- {\tc@check@symbol2\textguarani}
-\DeclareTextCommandDefault{\textpeso}%
- {\tc@check@symbol2\textpeso}
-\DeclareTextCommandDefault{\textlira}%
- {\tc@check@symbol2\textlira}
-\DeclareTextCommandDefault{\textrecipe}%
- {\tc@check@symbol2\textrecipe}
-\DeclareTextCommandDefault{\textinterrobang}%
- {\tc@check@symbol2\textinterrobang}
-\DeclareTextCommandDefault{\textinterrobangdown}%
- {\tc@check@symbol2\textinterrobangdown}
-\DeclareTextCommandDefault{\textdong}%
- {\tc@check@symbol2\textdong}
-\DeclareTextCommandDefault{\textpertenthousand}%
- {\tc@check@symbol2\textpertenthousand}
-\DeclareTextCommandDefault{\textpilcrow}%
- {\tc@check@symbol2\textpilcrow}
-\DeclareTextCommandDefault{\textbaht}%
- {\tc@check@symbol2\textbaht}
-\DeclareTextCommandDefault{\textnumero}%
- {\tc@check@symbol2\textnumero}
-\DeclareTextCommandDefault{\textdiscount}%
- {\tc@check@symbol2\textdiscount}
-\DeclareTextCommandDefault{\textopenbullet}%
- {\tc@check@symbol2\textopenbullet}
-\DeclareTextCommandDefault{\textservicemark}%
- {\tc@check@symbol2\textservicemark}
-\DeclareTextCommandDefault{\textlquill}%
- {\tc@check@symbol2\textlquill}
-\DeclareTextCommandDefault{\textrquill}%
- {\tc@check@symbol2\textrquill}
-\DeclareTextCommandDefault{\textcopyleft}%
- {\tc@check@symbol2\textcopyleft}
-\DeclareTextCommandDefault{\textcircledP}%
- {\tc@check@symbol2\textcircledP}
-\DeclareTextCommandDefault{\textreferencemark}%
- {\tc@check@symbol2\textreferencemark}
-\DeclareTextCommandDefault{\textsurd}%
- {\tc@check@symbol2\textsurd}
-% \end{macrocode}
-% The |\textcircled| and |\t| are handled specially, unless the
-% current font has a subset id of 0 (i.e. full \texttt{TS1}) we
-% pick the symbols up from the the math font encodings, i.e., the
-% third argument to |\CheckEncodingSubset| uses |\UseTextAccent| to
-% get them from there.
-% \begin{macrocode}
-\DeclareTextCommandDefault{\textcircled}
- {\CheckEncodingSubset\UseTextAccent{TS1}%
- {\UseTextAccent{OMS}}1\textcircled}
-\DeclareTextCommandDefault{\t}
- {\CheckEncodingSubset\UseTextAccent{TS1}%
- {\UseTextAccent{OML}}1\t}
-% \end{macrocode}
-
-
-%
-% Finally input the encoding-specific definitions for
-% \texttt{TS1} thus making the top-level definitions
-% optimised for this encoding (and not for the default
-% encoding, see section~\ref{sec:orderofdecls}).
-% \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.}
-% \begin{macrocode}
-\input{ts1enc.def}
-% \end{macrocode}
-% Now having the new glyphs available we also want to make sure
-% that they are used. For most cases this will automatically happen
-% but for some glyphs there are inferior definitions already known
-% to \LaTeX{} which will prevent the usage of the \texttt{TS1}
-% versions (see section~\ref{sec:removeencspec} above). So we better
-% get rid of them:
-% \changes{v1.9o}{1998/03/20}{Added various \cs{UndeclareTextCommand}
-% declarations for pr/2783}
-% \begin{macrocode}
-\UndeclareTextCommand{\textsterling}{OT1}
-\UndeclareTextCommand{\textdollar} {OT1}
-% \end{macrocode}
-% Similar declarations should probably be made for other encodings
-% like \texttt{OT4} if they are in use.
-% \begin{macrocode}
-%\UndeclareTextCommand{\textsterling}{OT4}
-%\UndeclareTextCommand{\textdollar} {OT4}
-% \end{macrocode}
-% From the \texttt{T1} encoding there are two candidates for removal:
-% \textperthousand{} and \textpertenthousand{} since these are both
-% constructed from \% followed by a tiny
-% `{\fontencoding{T1}\selectfont \char 24}'
-% rather than being a single glyph. The problem with this
-% approach is that in PostScript fonts this small zero is usually not
-% available resulting in \%\rule{3pt}{3pt} rather than
-% \textperthousand{} while the real glyph (at least for
-% |\textperthousand|) is available in the PostScript version of
-% \texttt{TS1}. So for the moment we compromise by removing the
-% \texttt{T1} declaration for |\textperthousand| but keeping the one
-% for |\textpertenthousand|. This will have the effect that with
-% Computer Modern fonts everything will come out (although
-% \textperthousand{} and \textpertenthousand{} are not taken from the
-% same physical font) and with PostScript fonts \textperthousand{}
-% will come out correctly while \textpertenthousand{} will most
-% likely look like \%\rule{6pt}{3pt} --- which is probably an
-% improvement over just getting a single `\rule{3pt}{3pt}' to
-% indicate a completely missing glyph, which would happen if we
-% also `undeclared' |\textpertenthousand|.
-% \begin{macrocode}
-\UndeclareTextCommand{\textperthousand}{T1}
-%\UndeclareTextCommand{\textpertenthousand}{T1}
-% \end{macrocode}
-%
-%
-% \subsubsection{Supporting oldstyle digits}
-%
-% \begin{macrocode}
-\DeclareRobustCommand\oldstylenums[1]{%
- \begingroup
- \ifmmode
- \mathgroup\symletters #1%
- \else
- \CheckEncodingSubset\@use@text@encoding{TS1}%
- {\PackageWarning{textcomp}%
- {Oldstyle digits unavailable for
- family \f@family.\MessageBreak
- Lining digits used instead}}%
- \tw@{#1}%
- \fi
- \endgroup
-}
-% \end{macrocode}
-%
-% \subsubsection{Subset encoding defaults}
-%
-% For many font families commonly used in the \TeX{} world we
-% provide the subset encoding data here. Users can add additional
-% font families in the file \texttt{textcomp.cfg} if they own other
-% fonts.
-%
-% However, if the option ``forced'' was given then all subset
-% encoding specifications are ignored, so there is no point in
-% setting any of them up:
-% \begin{macrocode}
-\iftc@forced \else
-% \end{macrocode}
-%
-% Computer modern based fonts (e.g., CM, CM-Bright, Concrete):
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{cmr} {0}
-\DeclareEncodingSubset{TS1}{cmss} {0}
-\DeclareEncodingSubset{TS1}{cmtt} {0}
-\DeclareEncodingSubset{TS1}{cmvtt} {0}
-\DeclareEncodingSubset{TS1}{cmbr} {0}
-\DeclareEncodingSubset{TS1}{cmtl} {0}
-\DeclareEncodingSubset{TS1}{ccr} {0}
-% \end{macrocode}
-%
-% PSNFSS fonts:
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{ptm} {4}
-\DeclareEncodingSubset{TS1}{pcr} {4}
-\DeclareEncodingSubset{TS1}{phv} {4}
-\DeclareEncodingSubset{TS1}{ppl} {3}
-\DeclareEncodingSubset{TS1}{pag} {4}
-\DeclareEncodingSubset{TS1}{pbk} {4}
-\DeclareEncodingSubset{TS1}{pnc} {4}
-\DeclareEncodingSubset{TS1}{pzc} {4}
-\DeclareEncodingSubset{TS1}{bch} {4}
-\DeclareEncodingSubset{TS1}{put} {5}
-% \end{macrocode}
-%
-% Other CTAN fonts (probably not complete):
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{uag} {5}
-\DeclareEncodingSubset{TS1}{ugq} {5}
-\DeclareEncodingSubset{TS1}{ul8} {4}
-\DeclareEncodingSubset{TS1}{ul9} {4} % (LuxiSans, one day)
-\DeclareEncodingSubset{TS1}{augie} {5}
-\DeclareEncodingSubset{TS1}{dayrom} {3}
-\DeclareEncodingSubset{TS1}{dayroms} {3}
-\DeclareEncodingSubset{TS1}{pxr} {0}
-\DeclareEncodingSubset{TS1}{pxss} {0}
-\DeclareEncodingSubset{TS1}{pxtt} {0}
-\DeclareEncodingSubset{TS1}{txr} {0}
-\DeclareEncodingSubset{TS1}{txss} {0}
-\DeclareEncodingSubset{TS1}{txtt} {0}
-% \end{macrocode}
-%
-% Latin Modern and TeX Gyre:
-% \changes{v1.99k}{2009/10/28}{Added Latin Modern and TeX Gyre subsets}
-% \changes{v1.99l}{2009/11/04}{Added more Latin Modern and TeX Gyre subsets}
-% \changes{v1.99m}{2015/02/16}{Added lmtt (Heiko Oberdiek) latex/4415}
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{lmr} {0}
-\DeclareEncodingSubset{TS1}{lmdh} {0}
-\DeclareEncodingSubset{TS1}{lmss} {0}
-\DeclareEncodingSubset{TS1}{lmssq} {0}
-\DeclareEncodingSubset{TS1}{lmvtt} {0}
-\DeclareEncodingSubset{TS1}{lmtt} {0}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{qhv} {0}
-\DeclareEncodingSubset{TS1}{qag} {0}
-\DeclareEncodingSubset{TS1}{qbk} {0}
-\DeclareEncodingSubset{TS1}{qcr} {0}
-\DeclareEncodingSubset{TS1}{qcs} {0}
-\DeclareEncodingSubset{TS1}{qpl} {0}
-\DeclareEncodingSubset{TS1}{qtm} {0}
-\DeclareEncodingSubset{TS1}{qzc} {0}
-\DeclareEncodingSubset{TS1}{qhvc} {0}
-% \end{macrocode}
-%
-% Fourier-GUTenberg:
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{futs} {4}
-\DeclareEncodingSubset{TS1}{futx} {4}
-\DeclareEncodingSubset{TS1}{futj} {4}
-% \end{macrocode}
-%
-% Y\&Y's Lucida Bright
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{hlh} {3}
-\DeclareEncodingSubset{TS1}{hls} {3}
-\DeclareEncodingSubset{TS1}{hlst} {3}
-% \end{macrocode}
-% The remaining settings for Lucida are conservative: the following
-% fonts contain the |\textohm| character but not the |\texteuro|,
-% i.e., belong to neither subset~4 nor subset~3. If you want to
-% use the |\textohm| with these fonts copy these definition to
-% \texttt{textcomp.cfg} and change the subset to~3. However in that
-% case make sure that you do not use the |\texteuro|.
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{hlct} {5}
-\DeclareEncodingSubset{TS1}{hlx} {5}
-\DeclareEncodingSubset{TS1}{hlce} {5}
-\DeclareEncodingSubset{TS1}{hlcn} {5}
-\DeclareEncodingSubset{TS1}{hlcw} {5}
-\DeclareEncodingSubset{TS1}{hlcf} {5}
-% \end{macrocode}
-%
-% Other commercial families\ldots
-% \begin{macrocode}
-\DeclareEncodingSubset{TS1}{pplx} {3}
-\DeclareEncodingSubset{TS1}{pplj} {3}
-\DeclareEncodingSubset{TS1}{ptmx} {4}
-\DeclareEncodingSubset{TS1}{ptmj} {4}
-% \end{macrocode}
-%
-% If the file \texttt{textcomp.cfg} exists it will be loaded at
-% this point. This allows to define further subset encodings for
-% font families not covered by default.
-%
-% \begin{macrocode}
-\InputIfFileExists{textcomp.cfg}
- {\PackageInfo{textcomp}{Local configuration file used}}{}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\fi
-%</TS1sty>
-% \end{macrocode}
%
% \Finale
%
diff --git a/macros/latex-dev/base/ltoutenc.ins b/macros/latex-dev/base/ltoutenc.ins
index e3f436fbc1..71bee61f57 100644
--- a/macros/latex-dev/base/ltoutenc.ins
+++ b/macros/latex-dev/base/ltoutenc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -96,8 +96,9 @@ extension .ins) which are part of the distribution.
\from{ltoutenc.dtx}{TS1}}
\file{tuenc.def}{
\from{ltoutenc.dtx}{TU}}
- \file{textcomp.sty}{
- \from{ltoutenc.dtx}{TS1sty}}
+% no longer in this file since 2020/02 release
+% \file{textcomp.sty}{
+% \from{ltoutenc.dtx}{TS1sty}}
\file{fontenc.sty}{
\from{ltoutenc.dtx}{package}}
}
diff --git a/macros/latex-dev/base/ltoutput.dtx b/macros/latex-dev/base/ltoutput.dtx
index 138bc85ba3..131560b22e 100644
--- a/macros/latex-dev/base/ltoutput.dtx
+++ b/macros/latex-dev/base/ltoutput.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltpage.dtx b/macros/latex-dev/base/ltpage.dtx
index c5ce52b1c6..bf203fb9c9 100644
--- a/macros/latex-dev/base/ltpage.dtx
+++ b/macros/latex-dev/base/ltpage.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltpageno.dtx b/macros/latex-dev/base/ltpageno.dtx
index f6b10985b8..6374f58b89 100644
--- a/macros/latex-dev/base/ltpageno.dtx
+++ b/macros/latex-dev/base/ltpageno.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltpar.dtx b/macros/latex-dev/base/ltpar.dtx
index 75b4894eb1..ed1b439e9d 100644
--- a/macros/latex-dev/base/ltpar.dtx
+++ b/macros/latex-dev/base/ltpar.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltpictur.dtx b/macros/latex-dev/base/ltpictur.dtx
index ad82cd477f..da3cdf897d 100644
--- a/macros/latex-dev/base/ltpictur.dtx
+++ b/macros/latex-dev/base/ltpictur.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltplain.dtx b/macros/latex-dev/base/ltplain.dtx
index 2337133f2f..2e5a345ecb 100644
--- a/macros/latex-dev/base/ltplain.dtx
+++ b/macros/latex-dev/base/ltplain.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltsect.dtx b/macros/latex-dev/base/ltsect.dtx
index b4851f28e2..c658c23818 100644
--- a/macros/latex-dev/base/ltsect.dtx
+++ b/macros/latex-dev/base/ltsect.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltspace.dtx b/macros/latex-dev/base/ltspace.dtx
index 2abc1a4f23..078da324d2 100644
--- a/macros/latex-dev/base/ltspace.dtx
+++ b/macros/latex-dev/base/ltspace.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -397,7 +397,7 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/02/01}%
+%<latexrelease>\IncludeInRelease{2020/02/02}%
%<latexrelease> {\@normalcr}{Make robust}%
\protected\def\@normalcr{%
\let \reserved@e \relax
diff --git a/macros/latex-dev/base/lttab.dtx b/macros/latex-dev/base/lttab.dtx
index aa2a00390f..dcb82dece7 100644
--- a/macros/latex-dev/base/lttab.dtx
+++ b/macros/latex-dev/base/lttab.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/lttextcomp.dtx b/macros/latex-dev/base/lttextcomp.dtx
new file mode 100644
index 0000000000..fc208c2e74
--- /dev/null
+++ b/macros/latex-dev/base/lttextcomp.dtx
@@ -0,0 +1,2215 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019
+% The LaTeX3 Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% 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
+%
+%<*driver>
+% \fi
+%
+%
+\ProvidesFile{lttextcomp.dtx}
+ [2019/12/24 v1.0a LaTeX Kernel (text companion symbols)]
+% \iffalse
+\documentclass{ltxdoc}
+\begin{document}
+\DocInput{lttextcomp.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+%
+%
+%
+% \GetFileInfo{lttextcomp.dtx}
+% \title{Providing addtional text symbols\\
+% (previously available through the \texttt{textcomp} package)\thanks
+% {This file has version number
+% \fileversion\ dated \filedate}}
+%
+% \author{Frank Mittelbach}
+%
+% \MaintainedByLaTeXTeam{latex}
+% \maketitle
+%
+% This file contains the implementation for accessing the glyphs
+% provided by the \texttt{TS1} encoding (Text Companion
+% Encoding). This is now offered as part of the kernel and so the
+% \texttt{textcomp} package which used to provide the definitions is
+% now mainly needed for compatibility reasons (and doesn't do much any
+% more).
+%
+%
+%
+% \StopEventually{}
+%
+%
+% \begin{macro}{\oldstylenums}
+% \begin{macro}{\legacyoldstylenums}
+%
+%
+% Preserve the old definition of \cs{oldstylenums} under a different name.
+%
+% This macro implements old style numerals but only works if we
+% assume that the standard math fonts are used. Thus it needs
+% changing in case other math encodings are used.
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\oldstylenums}{Old style numerals}%
+\DeclareRobustCommand\legacyoldstylenums[1]{%
+ \begingroup
+% \end{macrocode}
+% Provide spacing using the interword space of the current font.
+% \begin{macrocode}
+ \spaceskip\fontdimen\tw@\font
+% \end{macrocode}
+% Then switch to the math italic font. We don't change the current
+% value of |\f@series| which means that you can use bold numerals
+% if |\bfseries| is in force. As family we use |\rmdefault| which
+% means that this only works if there exist an |OML| encoded
+% version of that font or rather a corresponding |.fd| file (which
+% is the case for standard \LaTeX{} fonts even though they only
+% contain substitutions).
+% \changes{v3.0j}{1999/02/12}{Use \cs{rmdefault} instead of \texttt{cmm}
+% (pr/2954)}
+% \begin{macrocode}
+ \usefont{OML}{\rmdefault}{\f@series}{it}%
+ \mathgroup\symletters #1%
+ \endgroup
+}
+% \end{macrocode}
+%
+% And here is the improved one that adjusts depending on surroundings.
+% \begin{macrocode}
+\DeclareRobustCommand\oldstylenums[1]{%
+ \begingroup
+ \ifmmode
+ \mathgroup\symletters #1%
+ \else
+% \end{macrocode}
+% The \cs{CheckEncodingSubset} is discused below.
+% \begin{macrocode}
+ \CheckEncodingSubset\@use@text@encoding{TS1}\tc@oldstylesubst2{{#1}}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+% The helper to select the substitution if needed.
+% \begin{macrocode}
+\def\tc@oldstylesubst#1{%
+ \tc@errorwarn
+ {Oldstyle digits unavailable for
+ family \f@family.\MessageBreak
+ Default oldstyle digits used instead}\@eha
+ \bgroup
+ \expand@font@defaults
+% \end{macrocode}
+% The substitution defaults are provided in the file \texttt{fonttext.ltx}.
+% \begin{macrocode}
+ \ifx\f@family\rmdef@ult
+ \fontfamily\rmsubstdefault
+ \else\ifx\f@family\sfdef@ult
+ \fontfamily\sfsubstdefault
+ \else\ifx\f@family\ttdef@ult
+ \fontfamily\ttsubstdefault
+ \else
+ \fontfamily\textcompsubstdefault
+ \fi\fi\fi
+ \fontencoding{TS1}\selectfont#1%
+ \egroup
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\textcompsubstdefault}
+% Here is the default for the ``unknown'' case:
+% \begin{macrocode}
+\def\textcompsubstdefault{\rmsubstdefault}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\oldstylenums}{Old style numerals}%
+%<latexrelease>
+%<latexrelease>\DeclareRobustCommand\oldstylenums[1]{%
+%<latexrelease> \begingroup
+%<latexrelease> \spaceskip\fontdimen\tw@\font
+%<latexrelease> \usefont{OML}{\rmdefault}{\f@series}{it}%
+%<latexrelease> \mathgroup\symletters #1%
+%<latexrelease> \endgroup
+%<latexrelease>}
+%<latexrelease>\let\legacyoldstylenums\@undefined
+%<latexrelease>\def\textcompsubstdefault{cmr}
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+%
+
+
+
+
+
+% Everything else in the this file got introduced 2020/02/02, so we do a
+% single rollback (for now).
+% \begin{macrocode}
+%<*2ekernel>
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2020/02/02}%
+%<latexrelease> {\DeclareEncodingSubset}{Text companion symbols}%
+% \end{macrocode}
+%
+%
+%
+% \begin{macro}{\DeclareEncodingSubset}
+%
+% The declaration takes 3 mandatory arguments: an \emph{encoding}
+% for which a subsetting is wanted (currently always \texttt{TS1},
+% and most likely forever), the \emph{font family} for which we
+% declare the subset and finally the \emph{subset} number (between \texttt{0} (all
+% of the encoding is supported) and \texttt{9} many glyphs are missing.
+%
+% For \texttt{TS1} the numbers have been choosen in a way that most
+% fonts can be fairly correctly categorized, but the default
+% settings are always conservative, that is they may claim that
+% less glyphs are supported than there actually are.
+%
+% As these days many font families are set up to end in \texttt{-LF}
+% (lining figures), \texttt{-OsF} (oldstyle figures), etc.\ the
+% declaration supports a shortcut: if the \emph{font family} name
+% ends in \texttt{-*} then the star gets replaced by these common
+% ending, e.g.,
+%\begin{verbatim}
+% \DeclareEncodingSubeset{TS1}{Alegreya-*}{2}
+%\end{verbatim}
+% is the same as writing
+%\begin{verbatim}
+% \DeclareEncodingSubeset{TS1}{Alegreya-LF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-OsF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-TLF}{2}
+% \DeclareEncodingSubeset{TS1}{Alegreya-TOsF}{2}
+%\end{verbatim}
+% If only some are needed then one can define them individually but
+% in many cases all four are wanted, hence the shortcut.
+%
+%
+% The coding of the declaration has no error checking as it is
+% mostly for internal use.
+% \begin{macrocode}
+\def\DeclareEncodingSubset#1#2{%
+ \DeclareEncodingSubset@aux{#1}#2*\DeclareEncodingSubset@aux
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\DeclareEncodingSubset@aux#1#2*#3\DeclareEncodingSubset@aux#4{%
+% \end{macrocode}
+% if \verb=#3= is empty then there was no star, otherwise we we
+% define all four variants.
+% \begin{macrocode}
+ \expandafter\ifx\expandafter X\detokenize{#3}X%
+ \@DeclareEncodingSubset{#1}{#2}{#4}%
+ \else
+ \@DeclareEncodingSubset{#1}{#2LF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TLF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2OsF}{#4}%
+ \@DeclareEncodingSubset{#1}{#2TOsF}{#4}%
+ \fi
+}
+% \end{macrocode}
+%
+% The subset info is stored in a command with the name
+% \texttt{\bslash}\emph{family}\texttt{:}\emph{subset} so if that
+% already exists we change otherwise declare a subset.
+% \begin{macrocode}
+\def\@DeclareEncodingSubset#1#2#3{%
+ \@ifundefined{#1:#2}%
+ {\@font@info{Setting #2 sub-encoding to #1/#3}}%
+ {\@font@info{Changing #2 sub-encoding to #1/#3}}%
+ \@namedef{#1:#2}{#3}}
+% \end{macrocode}
+%
+% Any reason to allow those in the middle of documents?
+% \begin{macrocode}
+\@onlypreamble\DeclareEncodingSubset
+\@onlypreamble\DeclareEncodingSubset@aux
+\@onlypreamble\@DeclareEncodingSubset
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\CheckEncodingSubset}
+% The command |\CheckEncodingSubset| will check if the current font
+% family has the right encoding subset to typeset a certain
+% command. It takes five arguments as follows:
+% first argument is either |\UseTextSymbol|, |\UseTextAccent|
+% depending on whether or not the symbol is a text symbol or a text
+% accent.
+
+% The second argument is the encoding from which this symbol should
+% be fetched.
+%
+% The third argument is either a fake accessor command or an error
+% message. the code in that argument (if ever executed) receives
+% two arguments: |#2| and |#5| of |\CheckEncodingSubset|.
+%
+% Argument four is the subset encoding id to test against: if this
+% value is higher than the subset id of the current font family
+% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise
+% it runs |#3#5|, e.g., to produce an error message or fake the
+% glyph somehow.
+%
+% Argument five is the symbol or accent command that is being
+% checked.
+%
+% For usage examples see definitions below.
+%
+% \begin{macrocode}
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ \expandafter\ifx\csname #2:\f@family\endcsname\relax
+ 0\csname #2:?\endcsname
+ \else
+ \csname #2:\f@family\endcsname
+ \fi
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+
+% To set up the glyphs for the subsets we need a number helpers.
+%
+% \begin{macro}{\tc@errorwarn}
+% To we produce errors, warnings, or only info in the transcripts
+% if glyphs require substitutions? By default it is ``info''
+% only. With the \texttt{textcomp} package that can be changed.
+% \begin{macrocode}
+\def\tc@errorwarn#1#2{\@latex@info{#1}}
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\tc@subst}
+%
+% \begin{macrocode}
+\def\tc@subst#1{%
+ \tc@errorwarn
+ {Symbol \string#1 not provided by\MessageBreak
+ font family \f@family\space
+ in TS1 encoding.\MessageBreak Default family used instead}\@eha
+ \bgroup
+ \expand@font@defaults
+ \ifx\f@family\rmdef@ult
+ \fontfamily\rmsubstdefault
+ \else\ifx\f@family\sfdef@ult
+ \fontfamily\sfsubstdefault
+ \else\ifx\f@family\ttdef@ult
+ \fontfamily\ttsubstdefault
+ \else
+ \fontfamily\substdefault
+ \fi\fi\fi
+% \end{macrocode}
+% Whatever default was chosen, we claim now (locally hopefully)
+% that it can handle all slots (even if not true) to avoid looping
+% in certain situations, e.g., when something was set up incorrectly.
+% \begin{macrocode}
+ \@namedef{TS1:\f@family}{0}%
+ \selectfont#1%
+ \egroup
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+% \begin{macro}{\tc@fake@euro}
+% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of
+% |\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}
+\def\tc@fake@euro#1{%
+ \leavevmode
+ \@font@info{Faking \noexpand#1for font family
+ \f@family\MessageBreak in TS1 encoding}%
+ \valign{##\cr
+ \vfil\hbox to 0.07em{\dimen@\f@size\p@
+ \math@fontsfalse
+ \fontsize{.7\dimen@}\z@\selectfont=\hss}%
+ \vfil\cr%
+ \hbox{C}\crcr
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+% \begin{macro}{\tc@check@symbol}
+% \begin{macro}{\tc@check@accent}
+% These are two abbreviations that we use below to check symbols
+% and accents in TS1. Only there to save some space, e.g., we can
+% then write
+%\begin{verbatim}
+%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}
+%\end{verbatim}
+% to ensure that |\textcurrency| is only typeset if the current
+% font has a \texttt{TS1} subset id of less than 3. Otherwise
+% |\tc@error| is called telling the user that for this font family
+% |\textcurreny| is not available.
+% \begin{macrocode}
+\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst}
+% \end{macrocode}
+%
+% Accents and been mad an error in the \texttt{textcomp} package when
+% not available. Now that we provide the functionality in the
+% kernel we avoid the eror by swapping in a \texttt{T1} accent if
+% the \texttt{TS1} accent is not available.
+% \begin{macrocode}
+%\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\tc@check@accent#1{\CheckEncodingSubset\UseTextAccent{TS1}{\tc@swap@accent#1}}
+\def\tc@swap@accent#1#2{\UseTextAccent{T1}#1}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+
+% \section{Sub-encodings}
+%
+% Here are the default definitions for the \texttt{TS1} symbols.
+% First those that we assume are always available if a font
+% implements \texttt{TS1}.
+%
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textdollar}{TS1}
+\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
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textperthousand}{TS1}
+\UndeclareTextCommand{\textperthousand}{T1} % don't use the T1 def
+ % should actually not be declaed
+ % in the t1enc.def file instead
+ % otherwise fontenc would overwrite
+ % it again (legacy tests!)
+% \end{macrocode}
+%
+% These are the standard \texttt{itemize} and footnote symbols
+% originally taken from \texttt{OMS} and now from \texttt{TS1}:
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
+\DeclareTextSymbolDefault{\textbullet}{TS1}
+\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
+\DeclareTextSymbolDefault{\textdagger}{TS1}
+\DeclareTextSymbolDefault{\textparagraph}{TS1}
+\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
+\DeclareTextSymbolDefault{\textsection}{TS1}
+% \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
+% moved to sub-encoding 9,
+% because they aren't around in one or two fonts.
+% \begin{macrocode}
+%%\DeclareTextSymbolDefault{\textbardbl}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
+%%\DeclareTextSymbolDefault{\textcelsius}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textcent}{TS1}
+\DeclareTextSymbolDefault{\textcopyright}{TS1}
+\DeclareTextSymbolDefault{\textdegree}{TS1}
+\DeclareTextSymbolDefault{\textdiv}{TS1}
+\DeclareTextSymbolDefault{\textlnot}{TS1}
+\DeclareTextSymbolDefault{\textonehalf}{TS1}
+\DeclareTextSymbolDefault{\textonequarter}{TS1}
+%%\DeclareTextSymbolDefault{\textonesuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textordfeminine}{TS1}
+\DeclareTextSymbolDefault{\textordmasculine}{TS1}
+\DeclareTextSymbolDefault{\textpm}{TS1}
+\DeclareTextSymbolDefault{\textquotesingle}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}
+\DeclareTextSymbolDefault{\textregistered}{TS1}
+%%\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textthreequarters}{TS1}
+%%\DeclareTextSymbolDefault{\textthreesuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\texttimes}{TS1}
+\DeclareTextSymbolDefault{\texttrademark}{TS1}
+%%\DeclareTextSymbolDefault{\texttwelveudash}{TS1} % subst in sub-enc 9 above
+%%\DeclareTextSymbolDefault{\texttwosuperior}{TS1} % subst in sub-enc 9 above
+\DeclareTextSymbolDefault{\textyen}{TS1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}
+% \end{macrocode}
+%
+%
+% In the following sections the remaining default definitions are ordered by
+% sub-encoding in which they are become unavailable (i.e., they are
+% not provided in the sub-encoding with that number and all
+% sub-encodings with higher numbers.
+%
+% Thus the symbols that are available in sub-encoding $x$ are the
+% symbols above (always available) and the symbols list in the
+% sections for sub-encodings $x+1$ and higher.
+%
+% \subsection{Sub-encoding \texttt{1} (drop symbols not working in
+% Latin Modern)}
+%
+% The \cs{textcircled} is available but the glyph is simply too
+% small so we keep using the \texttt{OMS} glyph.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textcircled}
+ {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OMS}}1\textcircled}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{2} (majority of new OTF fonts via autoinst)}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\t}
+ {\CheckEncodingSubset\UseTextAccent{TS1}{\UseTextAccent{OML}}2\t}
+% \end{macrocode}
+%
+% Capital accents are really only very seldom implemented, so from
+% sub-encoding \texttt{2} onwards we use the normal \texttt{T1}
+% accents if they are asked for in the document.
+%
+% In Unicode engines we don't implement them at all but always use
+% the basic accents instead. whether that works or not really
+% depends on the font, something like \verb=\"X= usually comes out
+% wrong in Unicode engines.
+%
+% \begin{macrocode}
+\ifx\Umathcode\@undefined
+ \DeclareTextCommandDefault{\capitalacute} {\tc@check@accent{\'}2\capitalacute}
+ \DeclareTextCommandDefault{\capitalbreve} {\tc@check@accent{\u}2\capitalbreve}
+ \DeclareTextCommandDefault{\capitalcaron} {\tc@check@accent{\v}2\capitalcaron}
+ \DeclareTextCommandDefault{\capitalcedilla} {\tc@check@accent{\c}2\capitalcedilla}
+ \DeclareTextCommandDefault{\capitalcircumflex} {\tc@check@accent{\^}2\capitalcircumflex}
+ \DeclareTextCommandDefault{\capitaldieresis} {\tc@check@accent{\"}2\capitaldieresis}
+ \DeclareTextCommandDefault{\capitaldotaccent} {\tc@check@accent{\.}2\capitaldotaccent}
+ \DeclareTextCommandDefault{\capitalgrave} {\tc@check@accent{\`}2\capitalgrave}
+ \DeclareTextCommandDefault{\capitalhungarumlaut}{\tc@check@accent{\H}2\capitalhungarumlaut}
+ \DeclareTextCommandDefault{\capitalmacron} {\tc@check@accent{\=}2\capitalmacron}
+ \DeclareTextCommandDefault{\capitalogonek} {\tc@check@accent{\k}2\capitalogonek}
+ \DeclareTextCommandDefault{\capitalring} {\tc@check@accent{\r}2\capitalring}
+ \DeclareTextCommandDefault{\capitaltie} {\tc@check@accent{\t}2\capitaltie}
+ \DeclareTextCommandDefault{\capitaltilde} {\tc@check@accent{\~}2\capitaltilde}
+% \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@check@accent{\t}2\newtie}
+ \DeclareTextCommandDefault{\capitalnewtie} {\tc@check@accent{\t}2\capitalnewtie}
+% \end{macrocode}
+%
+% In Unicode engines we just execute the simple accents:
+% \begin{macrocode}
+\else
+ \def\capitalacute{\'}
+ \def\capitalbreve{\u}
+ \def\capitalcaron{\v}
+ \def\capitalcedilla{\c}
+ \def\capitalcircumflex{\^}
+ \def\capitaldieresis{\"}
+ \def\capitaldotaccent{\.}
+ \def\capitalgrave{\`}
+ \def\capitalhungarumlaut{\H}
+ \def\capitalmacron{\=}
+ \def\capitalnewtie{\t}
+ \def\capitalogonek{\k}
+ \def\capitalring{\r}
+ \def\capitaltie{\t}
+ \def\capitaltilde{\~}
+ \def\newtie{\t}
+\fi
+% \end{macrocode}
+%
+%
+%
+%
+% 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@check@symbol2\textlbrackdbl}
+\DeclareTextCommandDefault{\textrbrackdbl} {\tc@check@symbol2\textrbrackdbl}
+% \end{macrocode}
+%
+%
+% Old style numerals are again in some fonts but using
+% \texttt{-OsF}, etc.\ is the better approach to get them, so we
+% claim they aren't in sub-encoding 2 as that's true for most
+% fonts.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\texteightoldstyle} {\tc@check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle} {\tc@check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle} {\tc@check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle} {\tc@check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle} {\tc@check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle} {\tc@check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle} {\tc@check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle} {\tc@check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle} {\tc@check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textzerooldstyle} {\tc@check@symbol2\textzerooldstyle}
+% \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
+% 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@check@symbol2\textacutedbl}
+\DeclareTextCommandDefault{\textasciiacute} {\tc@check@symbol2\textasciiacute}
+\DeclareTextCommandDefault{\textasciibreve} {\tc@check@symbol2\textasciibreve}
+\DeclareTextCommandDefault{\textasciicaron} {\tc@check@symbol2\textasciicaron}
+\DeclareTextCommandDefault{\textasciidieresis} {\tc@check@symbol2\textasciidieresis}
+\DeclareTextCommandDefault{\textasciigrave} {\tc@check@symbol2\textasciigrave}
+\DeclareTextCommandDefault{\textasciimacron} {\tc@check@symbol2\textasciimacron}
+\DeclareTextCommandDefault{\textgravedbl} {\tc@check@symbol2\textgravedbl}
+\DeclareTextCommandDefault{\texttildelow} {\tc@check@symbol2\texttildelow}
+% \end{macrocode}
+%
+%
+% 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@check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textbigcircle} {\tc@check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textborn} {\tc@check@symbol2\textborn}
+\DeclareTextCommandDefault{\textcentoldstyle} {\tc@check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcircledP} {\tc@check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textcopyleft} {\tc@check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textdblhyphenchar} {\tc@check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdblhyphen} {\tc@check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textdied} {\tc@check@symbol2\textdied}
+\DeclareTextCommandDefault{\textdiscount} {\tc@check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textdivorced} {\tc@check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdollaroldstyle} {\tc@check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textguarani} {\tc@check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textleaf} {\tc@check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textlquill} {\tc@check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textmarried} {\tc@check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmho} {\tc@check@symbol2\textmho}
+\DeclareTextCommandDefault{\textmusicalnote} {\tc@check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textnaira} {\tc@check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textopenbullet} {\tc@check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textpeso} {\tc@check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textpilcrow} {\tc@check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textrecipe} {\tc@check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textreferencemark} {\tc@check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textrquill} {\tc@check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textservicemark} {\tc@check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textsurd} {\tc@check@symbol2\textsurd}
+% \end{macrocode}
+%
+% The \cs{textpertenthousand} also belongs in this group but here
+% we have a choice: in T1 there is 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
+% because often it is wrong. But pointing to TS1 is also not great
+% as only a few fonts have it as a real symbol, so we get a
+% substitution to CM or LM.
+%
+% Alternatively we could just state that the symbol is unavailable in
+% those fonts. For now I substitute.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textpertenthousand} {\tc@check@symbol2\textpertenthousand}
+\UndeclareTextCommand{\textpertenthousand}{T1}
+% \end{macrocode}
+%
+%
+%
+% \subsection{Sub-encoding \texttt{3}}
+%
+% Sub-encoding \texttt{2} is the one where we loose many
+% symbols. In the higher-numbered sub-encodings we see only a few
+% dropped additionally.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textlangle} {\tc@check@symbol3\textlangle}
+\DeclareTextCommandDefault{\textrangle} {\tc@check@symbol3\textrangle}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{4}}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textcolonmonetary} {\tc@check@symbol4\textcolonmonetary}
+\DeclareTextCommandDefault{\textdong} {\tc@check@symbol4\textdong}
+\DeclareTextCommandDefault{\textdownarrow} {\tc@check@symbol4\textdownarrow}
+\DeclareTextCommandDefault{\textleftarrow} {\tc@check@symbol4\textleftarrow}
+\DeclareTextCommandDefault{\textlira} {\tc@check@symbol4\textlira}
+\DeclareTextCommandDefault{\textrightarrow} {\tc@check@symbol4\textrightarrow}
+\DeclareTextCommandDefault{\textuparrow} {\tc@check@symbol4\textuparrow}
+\DeclareTextCommandDefault{\textwon} {\tc@check@symbol4\textwon}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{5} (most older PS fonts)}
+%
+% Most older PS fonts (supported in \TeX{} since the early nineties
+% when virtual fonts became available) are sorted under this
+% sub-encoding. But in reality, many of them don't have all glpyhs
+% that should be available in sub-encoding \texttt{5}. Instead they
+% show little squares, i.e., they produce ``tofu'' if you are
+% unlucky.
+%
+% But the coverage is so random that it is impossible to sort them
+% properly and if we tried to ensure that they only typeset those
+% glyphs that are really always available wouput put them all into
+% sub-encoding \texttt{9} so that's a compromise really.
+%
+% 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.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textestimated} {\tc@check@symbol5\textestimated}
+\DeclareTextCommandDefault{\textnumero} {\tc@check@symbol5\textnumero}
+% \end{macrocode}
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{6}}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textflorin} {\tc@check@symbol6\textflorin}
+\DeclareTextCommandDefault{\textcurrency} {\tc@check@symbol6\textcurrency}
+% \end{macrocode}
+%
+%
+%
+% \subsection{Sub-encoding \texttt{7}}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textfractionsolidus}{\tc@check@symbol7\textfractionsolidus}
+\DeclareTextCommandDefault{\textohm} {\tc@check@symbol7\textohm}
+\DeclareTextCommandDefault{\textmu} {\tc@check@symbol7\textmu}
+\DeclareTextCommandDefault{\textminus} {\tc@check@symbol7\textminus}
+% \end{macrocode}
+%
+%
+%
+% \subsection{Sub-encoding \texttt{8}}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textblank} {\tc@check@symbol{8}\textblank}
+\DeclareTextCommandDefault{\textinterrobangdown}{\tc@check@symbol{8}\textinterrobangdown}
+\DeclareTextCommandDefault{\textinterrobang} {\tc@check@symbol{8}\textinterrobang}
+% \end{macrocode}
+%
+% Fonts with this sub-encoding don't have a Euro symbol, but
+% instead of substituting we fake it.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\texteuro}
+ {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro{8}\texteuro}
+% \end{macrocode}
+%
+%
+%
+%
+% \subsection{Sub-encoding \texttt{9} (most missing)}
+%
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textcelsius}{\tc@check@symbol{9}\textcelsius}
+\DeclareTextCommandDefault{\textonesuperior}{\tc@check@symbol{9}\textonesuperior}
+\DeclareTextCommandDefault{\textthreequartersemdash}{\tc@check@symbol{9}\textthreequartersemdash}
+\DeclareTextCommandDefault{\textthreesuperior}{\tc@check@symbol{9}\textthreesuperior}
+\DeclareTextCommandDefault{\texttwelveudash}{\tc@check@symbol{9}\texttwelveudash}
+\DeclareTextCommandDefault{\texttwosuperior}{\tc@check@symbol{9}\texttwosuperior}
+\DeclareTextCommandDefault{\textbardbl}{\tc@check@symbol{9}\textbardbl}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Unicode engine specials}
+%
+% If we are using a unicode engine we handle some glyphs differently,
+% so this here are the definitions for the Unicode encoding
+% (overwriting the defaults above).
+
+% \begin{macrocode}
+\ifx \Umathcode\@undefined \else
+% \end{macrocode}
+%
+% This set should be taken from \texttt{TS1} encoding even if it
+% means you get it from the default font for that encoding.
+% \begin{macrocode}
+%\DeclareTextSymbol{\textcopyleft}{TS1}{171}
+%\DeclareTextSymbol{\textdblhyphen}{TS1}{45}
+%\DeclareTextSymbol{\textdblhyphenchar}{TS1}{127}
+%\DeclareTextSymbol{\textquotestraightbase}{TS1}{13}
+%\DeclareTextSymbol{\textquotestraightdblbase}{TS1}{18}
+%\DeclareTextSymbol{\textleaf}{TS1}{108}
+%\DeclareTextSymbol{\texttwelveudash}{TS1}{21}
+%\DeclareTextSymbol{\textthreequartersemdash}{TS1}{22}
+% \end{macrocode}
+%
+% If oldstyle numerals are asked for we just use \cs{oldstylenums}.
+% \begin{macrocode}
+\DeclareTextCommand{\textzerooldstyle} \UnicodeEncodingName{\oldstylenums{0}}
+\DeclareTextCommand{\textoneoldstyle} \UnicodeEncodingName{\oldstylenums{1}}
+\DeclareTextCommand{\texttwooldstyle} \UnicodeEncodingName{\oldstylenums{2}}
+\DeclareTextCommand{\textthreeoldstyle}\UnicodeEncodingName{\oldstylenums{3}}
+\DeclareTextCommand{\textfouroldstyle} \UnicodeEncodingName{\oldstylenums{4}}
+\DeclareTextCommand{\textfiveoldstyle} \UnicodeEncodingName{\oldstylenums{5}}
+\DeclareTextCommand{\textsixoldstyle} \UnicodeEncodingName{\oldstylenums{6}}
+\DeclareTextCommand{\textsevenoldstyle}\UnicodeEncodingName{\oldstylenums{7}}
+\DeclareTextCommand{\texteightoldstyle}\UnicodeEncodingName{\oldstylenums{8}}
+\DeclareTextCommand{\textnineoldstyle} \UnicodeEncodingName{\oldstylenums{9}}
+% \end{macrocode}
+% These have Unicode slots so this should be integrated into TU explictly
+% \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}
+% \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}
+% \end{macrocode}
+% but I think it is better to pick them up from TS1 even if that
+% usually means LMR fonts
+% \begin{macrocode}
+\DeclareTextSymbol{\textdollaroldstyle}{TS1}{138}
+\DeclareTextSymbol{\textcentoldstyle} {TS1}{139}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\fi % --- END of Unicode engines specials
+% \end{macrocode}
+%
+% \section{Font family sub-encodings setup}
+%
+% We declare the subsets for a good number of fonts in the kernel
+% \ldots
+%
+% But first the default for anything that is not declared. We use
+% \texttt{9} which is most like much too conservative but with the
+% advantage that we aren't getting missing glyphs (or at least that
+% this very very unlikely).
+% For nearly all font in the \TeX{} Live distribution of 2019
+% ``correct'' classifications are given below, so that this default
+% is only used for new font families, and over time the right
+% classifications can be added here too.
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{?}{9}
+% \end{macrocode}
+%
+% This first block contains the fonts that have been already
+% supported by the \texttt{textcomp} package way back, i.e., the
+% font families that have \TeX{} support since the mid-nineties.
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ccr} {0}
+\DeclareEncodingSubset{TS1}{cmbr} {0}
+\DeclareEncodingSubset{TS1}{cmr} {0}
+\DeclareEncodingSubset{TS1}{cmss} {0}
+\DeclareEncodingSubset{TS1}{cmtl} {0}
+\DeclareEncodingSubset{TS1}{cmtt} {0}
+\DeclareEncodingSubset{TS1}{cmvtt} {0}
+\DeclareEncodingSubset{TS1}{pxr} {0}
+\DeclareEncodingSubset{TS1}{pxss} {0}
+\DeclareEncodingSubset{TS1}{pxtt} {0}
+\DeclareEncodingSubset{TS1}{qag} {0}
+\DeclareEncodingSubset{TS1}{qbk} {0}
+\DeclareEncodingSubset{TS1}{qcr} {0}
+\DeclareEncodingSubset{TS1}{qcs} {0}
+\DeclareEncodingSubset{TS1}{qhvc} {0}
+\DeclareEncodingSubset{TS1}{qhv} {0}
+\DeclareEncodingSubset{TS1}{qpl} {0}
+\DeclareEncodingSubset{TS1}{qtm} {0}
+\DeclareEncodingSubset{TS1}{qzc} {0}
+\DeclareEncodingSubset{TS1}{txr} {0}
+\DeclareEncodingSubset{TS1}{txss} {0}
+\DeclareEncodingSubset{TS1}{txtt} {0}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{lmr} {1}
+\DeclareEncodingSubset{TS1}{lmdh} {1}
+\DeclareEncodingSubset{TS1}{lmss} {1}
+\DeclareEncodingSubset{TS1}{lmssq} {1}
+\DeclareEncodingSubset{TS1}{lmvtt} {1}
+\DeclareEncodingSubset{TS1}{lmtt} {1} % missing TM, SM, pertenthousand for some reason
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ptmx} {2}
+\DeclareEncodingSubset{TS1}{ptmj} {2}
+\DeclareEncodingSubset{TS1}{ul8} {2}
+% \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
+% \end{macrocode}
+%
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{zi4} {9}
+% \end{macrocode}
+% LucidaBright (sold through TUG) probably not quite correct, I
+% guess as I have the older fonts \ldots
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hls} {5}
+\DeclareEncodingSubset{TS1}{hlst} {5}
+\DeclareEncodingSubset{TS1}{hlct} {5}
+\DeclareEncodingSubset{TS1}{hlh} {5}
+\DeclareEncodingSubset{TS1}{hlx} {8}
+\DeclareEncodingSubset{TS1}{hlce} {8}
+\DeclareEncodingSubset{TS1}{hlcn} {8}
+\DeclareEncodingSubset{TS1}{hlcw} {8}
+\DeclareEncodingSubset{TS1}{hlcf} {8}
+% \end{macrocode}
+%
+% Below are the newer fonts that have support files for
+% \LaTeX{}. With very few exceptions the classifications are done
+% so that that all characters are correctly produced (either being
+% available in the font or substituted.
+%
+% There are a few fonts that contain ``tofu'' squares in places
+% (instead of a real glyph) and in a few cases some really seldom
+% needed chars are unavailable, i.e., produce missing glyphs (to
+% avoid that a large number of available chars are unnecessarily
+% 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
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{tli} {1} % with lots of tofu inside
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Alegreya-*} {2}
+\DeclareEncodingSubset{TS1}{AlegreyaSans-*} {2}
+\DeclareEncodingSubset{TS1}{DejaVuSans-TLF} {2}
+\DeclareEncodingSubset{TS1}{DejaVuSansCondensed-TLF} {2}
+\DeclareEncodingSubset{TS1}{DejaVuSansMono-TLF} {2}
+\DeclareEncodingSubset{TS1}{EBGaramond-*} {2}
+\DeclareEncodingSubset{TS1}{Tempora-TLF} {2}
+\DeclareEncodingSubset{TS1}{Tempora-TOsF} {2}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Arimo-TLF} {3}
+\DeclareEncodingSubset{TS1}{Carlito-*} {3}
+\DeclareEncodingSubset{TS1}{FiraSans-*} {3}
+\DeclareEncodingSubset{TS1}{IBMPlexSans-TLF} {3}
+\DeclareEncodingSubset{TS1}{Merriweather-OsF} {3}
+\DeclareEncodingSubset{TS1}{Montserrat-*} {3}
+\DeclareEncodingSubset{TS1}{MontserratAlternates-*} {3}
+\DeclareEncodingSubset{TS1}{SourceCodePro-TLF} {3}
+\DeclareEncodingSubset{TS1}{SourceCodePro-TOsF} {3}
+\DeclareEncodingSubset{TS1}{SourceSansPro-*} {3}
+\DeclareEncodingSubset{TS1}{SourceSerifPro-*} {3}
+\DeclareEncodingSubset{TS1}{Tinos-TLF} {3}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{AccanthisADFStdNoThree-LF}{4}
+\DeclareEncodingSubset{TS1}{Cabin-TLF} {4}
+\DeclareEncodingSubset{TS1}{Caladea-TLF} {4}
+\DeclareEncodingSubset{TS1}{Chivo-*} {4}
+\DeclareEncodingSubset{TS1}{ClearSans-TLF} {4}
+\DeclareEncodingSubset{TS1}{Coelacanth-LF} {4}
+\DeclareEncodingSubset{TS1}{CrimsonPro-*} {4}
+\DeclareEncodingSubset{TS1}{FiraMono-TLF} {4}
+\DeclareEncodingSubset{TS1}{FiraMono-TOsF} {4}
+\DeclareEncodingSubset{TS1}{Go-TLF} {4}
+\DeclareEncodingSubset{TS1}{GoMono-TLF} {4}
+\DeclareEncodingSubset{TS1}{InriaSans-*} {4}
+\DeclareEncodingSubset{TS1}{InriaSerif-*} {4}
+\DeclareEncodingSubset{TS1}{LibertinusSans-*} {4}
+\DeclareEncodingSubset{TS1}{LibertinusSerif-*} {4}
+\DeclareEncodingSubset{TS1}{LibreBodoni-TLF} {4}
+\DeclareEncodingSubset{TS1}{LibreFranklin-TLF} {4}
+\DeclareEncodingSubset{TS1}{LinguisticsPro-LF} {4}
+\DeclareEncodingSubset{TS1}{LinguisticsPro-OsF} {4}
+\DeclareEncodingSubset{TS1}{LinuxBiolinumT-*} {4}
+\DeclareEncodingSubset{TS1}{LinuxLibertineT-*} {4}
+\DeclareEncodingSubset{TS1}{MerriweatherSans-OsF} {4}
+\DeclareEncodingSubset{TS1}{MintSpirit-*} {4}
+\DeclareEncodingSubset{TS1}{MintSpiritNoTwo-*} {4}
+\DeclareEncodingSubset{TS1}{PTMono-TLF} {4}
+\DeclareEncodingSubset{TS1}{PTSans-TLF} {4}
+\DeclareEncodingSubset{TS1}{PTSansCaption-TLF} {4}
+\DeclareEncodingSubset{TS1}{PTSansNarrow-TLF} {4}
+\DeclareEncodingSubset{TS1}{PTSerif-TLF} {4}
+\DeclareEncodingSubset{TS1}{PTSerifCaption-TLF} {4}
+\DeclareEncodingSubset{TS1}{Raleway-TLF} {4}
+\DeclareEncodingSubset{TS1}{Raleway-TOsF} {4}
+\DeclareEncodingSubset{TS1}{Roboto-*} {4}
+\DeclareEncodingSubset{TS1}{RobotoMono-TLF} {4}
+\DeclareEncodingSubset{TS1}{RobotoSlab-TLF} {4}
+\DeclareEncodingSubset{TS1}{Rosario-*} {4}
+\DeclareEncodingSubset{TS1}{SticksTooText-*} {4}
+\DeclareEncodingSubset{TS1}{UniversalisADFStd-LF} {4}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Almendra-OsF} {5}
+\DeclareEncodingSubset{TS1}{Baskervaldx-*} {5}
+\DeclareEncodingSubset{TS1}{BaskervilleF-*} {5}
+\DeclareEncodingSubset{TS1}{Bitter-TLF} {5}
+\DeclareEncodingSubset{TS1}{Cinzel-LF} {5}
+\DeclareEncodingSubset{TS1}{CinzelDecorative-LF} {5}
+\DeclareEncodingSubset{TS1}{DejaVuSerif-TLF} {5}
+\DeclareEncodingSubset{TS1}{DejaVuSerifCondensed-TLF} {5}
+\DeclareEncodingSubset{TS1}{GilliusADF-LF} {5}
+\DeclareEncodingSubset{TS1}{GilliusADFCond-LF} {5}
+\DeclareEncodingSubset{TS1}{GilliusADFNoTwo-LF} {5}
+\DeclareEncodingSubset{TS1}{GilliusADFNoTwoCond-LF} {5}
+\DeclareEncodingSubset{TS1}{LobsterTwo-LF} {5}
+\DeclareEncodingSubset{TS1}{OldStandard-TLF} {5}
+\DeclareEncodingSubset{TS1}{PlayfairDisplay-TLF} {5}
+\DeclareEncodingSubset{TS1}{PlayfairDisplay-TOsF} {5}
+\DeclareEncodingSubset{TS1}{TheanoDidot-TLF} {5}
+\DeclareEncodingSubset{TS1}{TheanoDidot-TOsF} {5}
+\DeclareEncodingSubset{TS1}{TheanoModern-TLF} {5}
+\DeclareEncodingSubset{TS1}{TheanoModern-TOsF} {5}
+\DeclareEncodingSubset{TS1}{TheanoOldStyle-TLF} {5}
+\DeclareEncodingSubset{TS1}{TheanoOldStyle-TOsF} {5}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Crimson-TLF} {6}
+\DeclareEncodingSubset{TS1}{IBMPlexMono-TLF} {6}
+\DeclareEncodingSubset{TS1}{IBMPlexSerif-TLF} {6}
+\DeclareEncodingSubset{TS1}{LibertinusMono-TLF} {6}
+\DeclareEncodingSubset{TS1}{LibertinusSerifDisplay-LF}{6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineDisplayT-*} {6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-LF} {6}
+\DeclareEncodingSubset{TS1}{LinuxLibertineMonoT-TLF} {6}
+\DeclareEncodingSubset{TS1}{Overlock-LF} {6}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{CormorantGaramond-*} {7}
+\DeclareEncodingSubset{TS1}{Heuristica-TLF} {7}
+\DeclareEncodingSubset{TS1}{Heuristica-TOsF} {7}
+\DeclareEncodingSubset{TS1}{IMFELLEnglish-TLF} {7}
+\DeclareEncodingSubset{TS1}{LibreBaskerville-TLF} {7}
+\DeclareEncodingSubset{TS1}{LibreCaslon-*} {7}
+\DeclareEncodingSubset{TS1}{Marcellus-LF} {7}
+\DeclareEncodingSubset{TS1}{NotoSans-*} {7}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TLF} {7}
+\DeclareEncodingSubset{TS1}{NotoSansMono-TOsF} {7}
+\DeclareEncodingSubset{TS1}{NotoSerif-*} {7}
+\DeclareEncodingSubset{TS1}{Quattrocento-TLF} {7}
+\DeclareEncodingSubset{TS1}{QuattrocentoSans-TLF} {7}
+\DeclareEncodingSubset{TS1}{XCharter-TLF} {7}
+\DeclareEncodingSubset{TS1}{XCharter-TOsF} {7}
+\DeclareEncodingSubset{TS1}{erewhon-*} {7}
+\DeclareEncodingSubset{TS1}{ComicNeue-TLF} {7}
+\DeclareEncodingSubset{TS1}{ComicNeueAngular-TLF} {7}
+\DeclareEncodingSubset{TS1}{Forum-LF} {7} % the superiors are missing
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{Cochineal-*} {8}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{AlgolRevived-TLF} {9}
+% \end{macrocode}
+%
+%
+%
+%
+% \section{Legacy symbol support for lists and footnote symbols}
+%
+% \begin{macro}{\UseLegacyTextSymbols}
+%
+% \begin{macrocode}
+\def\UseLegacyTextSymbols{%
+ \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}%
+ \DeclareTextSymbolDefault{\textbardbl}{OMS}%
+ \DeclareTextSymbolDefault{\textbullet}{OMS}%
+ \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}%
+ \DeclareTextSymbolDefault{\textdagger}{OMS}%
+ \DeclareTextSymbolDefault{\textparagraph}{OMS}%
+ \DeclareTextSymbolDefault{\textperiodcentered}{OMS}%
+ \DeclareTextSymbolDefault{\textsection}{OMS}%
+ \UndeclareTextCommand{\textsection}{T1}%
+ \expandafter\let\csname oldstylenums \expandafter\endcsname
+ \csname legacyoldstylenums \endcsname
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\textlegacyasteriskcentered}
+% \begin{macro}{\textlegacybardbl}
+% \begin{macro}{\textlegacybullet}
+% \begin{macro}{\textlegacydaggerdbl}
+% \begin{macro}{\textlegacydagger}
+% \begin{macro}{\textlegacyparagraph}
+% \begin{macro}{\textlegacyperiodcentered}
+% \begin{macro}{\textlegacysection}
+%
+% Here are new names for the legacy symbols that \LaTeX{} used to
+% pick up from the \texttt{OMS} encoded fonts (and used dor itemize
+% lists or footnote symbols.
+%
+% We go the roundabout way via separate OMS declarations so that
+%\begin{verbatim}
+% \renewcommand\textbullet{\textlegacybullet}
+%\end{verbatim}
+% doesn't produce an endless loop.
+% \begin{macrocode}
+\DeclareTextSymbol{\textlegacyasteriskcentered}{OMS}{3} % "03
+\DeclareTextSymbol{\textlegacybardbl}{OMS}{107} % "6B
+\DeclareTextSymbol{\textlegacybullet}{OMS}{15} % "0F
+\DeclareTextSymbol{\textlegacydaggerdbl}{OMS}{122} % "7A
+\DeclareTextSymbol{\textlegacydagger}{OMS}{121} % "79
+\DeclareTextSymbol{\textlegacyparagraph}{OMS}{123} % "7B
+\DeclareTextSymbol{\textlegacyperiodcentered}{OMS}{1} % "01
+\DeclareTextSymbol{\textlegacysection}{OMS}{120} % "78
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textlegacyasteriskcentered}{OMS}
+\DeclareTextSymbolDefault{\textlegacybardbl}{OMS}
+\DeclareTextSymbolDefault{\textlegacybullet}{OMS}
+\DeclareTextSymbolDefault{\textlegacydaggerdbl}{OMS}
+\DeclareTextSymbolDefault{\textlegacydagger}{OMS}
+\DeclareTextSymbolDefault{\textlegacyparagraph}{OMS}
+\DeclareTextSymbolDefault{\textlegacyperiodcentered}{OMS}
+\DeclareTextSymbolDefault{\textlegacysection}{OMS}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+
+%
+%
+% Supporting rollback \ldots
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\DeclareEncodingSubset}{Text companion symbols}%
+%<latexrelease>
+%<latexrelease>\let\DeclareEncodingSubset\@undefined
+%<latexrelease>\let\CheckEncodingSubset\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textdollar}{OT1}
+%<latexrelease>\DeclareTextSymbolDefault{\textsterling}{OT1}
+%<latexrelease>\DeclareTextCommand{\textdollar}{OT1}{\hmode@bgroup
+%<latexrelease> \ifdim \fontdimen\@ne\font >\z@
+%<latexrelease> \slshape
+%<latexrelease> \else
+%<latexrelease> \upshape
+%<latexrelease> \fi
+%<latexrelease> \char`\$\egroup}
+%<latexrelease>\DeclareTextCommand{\textsterling}{OT1}{\hmode@bgroup
+%<latexrelease> \ifdim \fontdimen\@ne\font >\z@
+%<latexrelease> \itshape
+%<latexrelease> \else
+%<latexrelease> \fontshape{ui}\selectfont
+%<latexrelease> \fi
+%<latexrelease> \char`\$\egroup}
+%<latexrelease>\DeclareTextCommand{\textperthousand}{T1}
+%<latexrelease> {\%\char 24 }
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textasteriskcentered}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textbullet}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textdaggerdbl}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textdagger}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textparagraph}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textperiodcentered}{OMS}
+%<latexrelease>\DeclareTextSymbolDefault{\textsection}{OMS}
+%<latexrelease>
+%<latexrelease>\DeclareTextSymbolDefault{\textbardbl}{OMS}
+%<latexrelease>\let\textbrokenbar\@undefined
+%<latexrelease>\let\textcelsius\@undefined
+%<latexrelease>\let\textcent\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
+%<latexrelease>\let\textdegree\@undefined
+%<latexrelease>\let\textdiv\@undefined
+%<latexrelease>\let\textlnot\@undefined
+%<latexrelease>\let\textonehalf\@undefined
+%<latexrelease>\let\textonequarter\@undefined
+%<latexrelease>\let\textonesuperior\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
+%<latexrelease>\DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
+%<latexrelease>\let\textpm\@undefined
+%<latexrelease>\let\textquotesingle\@undefined
+%<latexrelease>\let\textquotestraightbase\@undefined
+%<latexrelease>\let\textquotestraightdblbase\@undefined
+%<latexrelease>\DeclareTextCommandDefault{\textregistered}{\textcircled{%
+%<latexrelease> \check@mathfonts\fontsize\sf@size\z@\math@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>\let\texttwelveudash\@undefined
+%<latexrelease>\let\texttwosuperior\@undefined
+%<latexrelease>\let\textyen\@undefined
+%<latexrelease>
+%<latexrelease>\let\textcapitalcompwordmark\@undefined
+%<latexrelease>\let\textascendercompwordmark\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextAccentDefault{\textcircled}{OMS}
+%<latexrelease>\DeclareTextAccentDefault{\t}{OML}
+%<latexrelease>
+%<latexrelease>\let\capitalacute\@undefined
+%<latexrelease>\let\capitalbreve\@undefined
+%<latexrelease>\let\capitalcaron\@undefined
+%<latexrelease>\let\capitalcedilla\@undefined
+%<latexrelease>\let\capitalcircumflex\@undefined
+%<latexrelease>\let\capitaldieresis\@undefined
+%<latexrelease>\let\capitaldotaccent\@undefined
+%<latexrelease>\let\capitalgrave\@undefined
+%<latexrelease>\let\capitalhungarumlaut\@undefined
+%<latexrelease>\let\capitalmacron\@undefined
+%<latexrelease>\let\capitalnewtie\@undefined
+%<latexrelease>\let\capitalogonek\@undefined
+%<latexrelease>\let\capitalring\@undefined
+%<latexrelease>\let\capitaltie\@undefined
+%<latexrelease>\let\capitaltilde\@undefined
+%<latexrelease>\let\newtie\@undefined
+%<latexrelease>
+%<latexrelease>\let\textlbrackdbl\@undefined
+%<latexrelease>\let\textrbrackdbl\@undefined
+%<latexrelease>
+%<latexrelease>\let\texteightoldstyle\@undefined
+%<latexrelease>\let\textfiveoldstyle\@undefined
+%<latexrelease>\let\textfouroldstyle\@undefined
+%<latexrelease>\let\textnineoldstyle\@undefined
+%<latexrelease>\let\textoneoldstyle\@undefined
+%<latexrelease>\let\textsevenoldstyle\@undefined
+%<latexrelease>\let\textsixoldstyle\@undefined
+%<latexrelease>\let\textthreeoldstyle\@undefined
+%<latexrelease>\let\texttwooldstyle\@undefined
+%<latexrelease>\let\textzerooldstyle\@undefined
+%<latexrelease>
+%<latexrelease>\let\textacutedbl\@undefined
+%<latexrelease>\let\textasciiacute\@undefined
+%<latexrelease>\let\textasciibreve\@undefined
+%<latexrelease>\let\textasciicaron\@undefined
+%<latexrelease>\let\textasciidieresis\@undefined
+%<latexrelease>\let\textasciigrave\@undefined
+%<latexrelease>\let\textasciimacron\@undefined
+%<latexrelease>\let\textgravedbl\@undefined
+%<latexrelease>\let\texttildelow\@undefined
+%<latexrelease>
+%<latexrelease>\let\textbaht\@undefined
+%<latexrelease>\let\textbigcircle\@undefined
+%<latexrelease>\let\textborn\@undefined
+%<latexrelease>\let\textcentoldstyle\@undefined
+%<latexrelease>\let\textcircledP\@undefined
+%<latexrelease>\let\textcopyleft\@undefined
+%<latexrelease>\let\textdblhyphenchar\@undefined
+%<latexrelease>\let\textdblhyphen\@undefined
+%<latexrelease>\let\textdied\@undefined
+%<latexrelease>\let\textdiscount\@undefined
+%<latexrelease>\let\textdivorced\@undefined
+%<latexrelease>\let\textdollaroldstyle\@undefined
+%<latexrelease>\let\textguarani\@undefined
+%<latexrelease>\let\textleaf\@undefined
+%<latexrelease>\let\textlquill\@undefined
+%<latexrelease>\let\textmarried\@undefined
+%<latexrelease>\let\textmho\@undefined
+%<latexrelease>\let\textmusicalnote\@undefined
+%<latexrelease>\let\textnaira\@undefined
+%<latexrelease>\let\textopenbullet\@undefined
+%<latexrelease>\let\textpeso\@undefined
+%<latexrelease>\let\textpilcrow\@undefined
+%<latexrelease>\let\textrecipe\@undefined
+%<latexrelease>\let\textreferencemark\@undefined
+%<latexrelease>\let\textrquill\@undefined
+%<latexrelease>\let\textservicemark\@undefined
+%<latexrelease>\let\textsurd\@undefined
+%<latexrelease>
+%<latexrelease>\DeclareTextCommand{\textpertenthousand}{T1}
+%<latexrelease> {\%\char 24\char 24 }
+%<latexrelease>
+%<latexrelease>\let\textlangle\@undefined
+%<latexrelease>\let\textrangle\@undefined
+%<latexrelease>
+%<latexrelease>\let\textcolonmonetary\@undefined
+%<latexrelease>\let\textdong\@undefined
+%<latexrelease>\let\textdownarrow\@undefined
+%<latexrelease>\let\textleftarrow\@undefined
+%<latexrelease>\let\textlira\@undefined
+%<latexrelease>\let\textrightarrow\@undefined
+%<latexrelease>\let\textuparrow\@undefined
+%<latexrelease>\let\textwon\@undefined
+%<latexrelease>
+%<latexrelease>\let\textestimated\@undefined
+%<latexrelease>\let\textnumero\@undefined
+%<latexrelease>
+%<latexrelease>\let\textflorin\@undefined
+%<latexrelease>\let\textcurrency\@undefined
+%<latexrelease>
+%<latexrelease>\let\textfractionsolidus\@undefined
+%<latexrelease>\let\textohm\@undefined
+%<latexrelease>\let\textmu\@undefined
+%<latexrelease>\let\textminus\@undefined
+%<latexrelease>
+%<latexrelease>\let\textblank\@undefined
+%<latexrelease>\let\textinterrobangdown\@undefined
+%<latexrelease>\let\textinterrobang\@undefined
+%<latexrelease>
+%<latexrelease>\let\texteuro\@undefined
+%<latexrelease>
+%<latexrelease>\let\textcelsius\@undefined
+%<latexrelease>\let\textonesuperior\@undefined
+%<latexrelease>\let\textthreequartersemdash\@undefined
+%<latexrelease>\let\textthreesuperior\@undefined
+%<latexrelease>\let\texttwelveudash\@undefined
+%<latexrelease>\let\texttwosuperior\@undefined
+%<latexrelease>\let\textbardbl\@undefined
+%<latexrelease>
+%<latexrelease>\let\UseLegacyTextSymbols\@undefined
+%<latexrelease>\let\textlegacyasteriskcentered\@undefined
+%<latexrelease>\let\textlegacybardbl\@undefined
+%<latexrelease>\let\textlegacybullet\@undefined
+%<latexrelease>\let\textlegacydaggerdbl\@undefined
+%<latexrelease>\let\textlegacydagger\@undefined
+%<latexrelease>\let\textlegacyparagraph\@undefined
+%<latexrelease>\let\textlegacyperiodcentered\@undefined
+%<latexrelease>\let\textlegacysection\@undefined
+%<latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+%</2ekernel>
+% \end{macrocode}
+%
+%
+%
+%
+% \section{The \texttt{textcomp} package}
+%
+%
+% \begin{macrocode}
+%<*TS1sty>
+\NeedsTeXFormat{LaTeX2e}[1995/06/01]
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{2018-08-11}{textcomp-2018-08-11.sty}
+\DeclareCurrentRelease{}{2020-02-02}
+
+\ProvidesPackage{textcomp}
+ [2020/02/02 v2.0m Standard LaTeX package]
+% \end{macrocode}
+%
+% This is implemented by defining the default subset:
+% \begin{macrocode}
+\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
+\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
+\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{8}}
+\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{9}}
+% \end{macrocode}
+% The default is set up in the kernel is ``safe'' these days for
+% unknown fonts but LaTeX has definitions for most families so it
+% seldom applies.
+%
+% If a different default is used then one needs to check the
+% results to ensure that there aren't ``missing glyphs''.
+%
+% The next set of options define the warning level (default in the
+% kernel is info only). If you load the package then the default
+% changes to produce an error message if any substitution happens.
+% \begin{macrocode}
+\def\tc@errorwarn{\PackageError{textcomp}}
+\DeclareOption{error}{\gdef\tc@errorwarn{\PackageError{textcomp}}}
+\DeclareOption{warn}{\gdef\tc@errorwarn#1#2{\PackageWarning{textcomp}{#1}}}
+\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2{}}
+% \end{macrocode}
+%
+% The ``force'' option basically changes the sub-encoding to that
+% of the default (which, unless changes, is 9 these days), i.e., it
+% no longer depends on the font in use. This is mainly there
+% because it might have been used in older documents, but not
+% somehting that is recommended.
+% \begin{macrocode}
+\DeclareOption{force}{%
+ \def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ 0\csname #2:?\endcsname
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5}%
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExecuteOptions{}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% There is not much else to do nowadays, because everything is
+% already set up in the \LaTeX{} kernel.
+%
+% \begin{macrocode}
+\InputIfFileExists{textcomp.cfg}
+ {\PackageInfo{textcomp}{Local configuration file used}}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</TS1sty>
+% \end{macrocode}
+%
+%
+%
+% \subsection{The old textcomp package code}
+%
+% This section contains the old code for the textcomp package and
+% its documentation. It is only used if we roll back prior to 2020.
+% Thus all the rest is mainly for historians. Note that the old
+% code categorised in the sub-encodings only into 6 classes not 10.
+%
+% \begin{macrocode}
+%<*TS1oldsty>
+\ProvidesPackage{textcomp}
+ [2018/08/11 v2.0j Standard LaTeX package]
+% \end{macrocode}
+%
+% This one is for the |TS1| encoding which contains text symbols
+% for use with the |T1|-encoded text fonts. It therefore first
+% inputs the file |TS1enc.def| and then sets (or resets) the
+% defaults for the symbols it contains. The result of this is that
+% when one of these symbols is accessed and the current encoding
+% does not provide it, the symbol will be supplied by a silent,
+% local change to this encoding.
+%
+% Since many PostScript fonts only implement a subset of |TS1| many
+% commands only produce black blobs of ink. To resolve the
+% resulting problems a number of options have been introduced and
+% some code has been developed to distinguish sub-encodings.
+%
+% The sub-encodings have a numerical id and are defined as follows
+% for \texttt{TS1}:
+% \begin{description}
+%
+% \item[\#5] those \texttt{TS1} symbols that are also in the ISO-Adobe
+% character set; without \verb=textcurrency=, which is often
+% misused for the Euro. Older Type1 fonts from the non-\TeX{}
+% world provide only this subset.
+%
+% \item[\#4] = \#5 + \verb=\texteuro=. Most newer fonts provide this.
+%
+% \item[\#3] = \#4 + \verb=\textomega=. Can also be described as
+% $\texttt{TS1} \cap (\texttt{ISO-Adobe} \cup
+% \texttt{MacRoman})$. (Except for the missing "currency".)
+
+%
+% \item[\#2] = \#3 + \verb=\textestimated= + \verb=\textcurrency=. Can
+% also be described as $\texttt{TS1} \cap
+% \texttt{Adobe-Western-2}$. This may be relevant for OpenType
+% fonts, which usually show the Adobe-Western-2 character set.
+%
+% \item[\#1] = \texttt{TS1} without \verb=\textcircled= and \verb=\t=.
+% These two glyphs are often not implemented and if their kernel
+% defaults are changed commands like \verb=\copyright=
+% unnecessarily fail.
+%
+% \item[\#0] = full \texttt{TS1}
+% \end{description}
+%
+% And here a summary to go in the transcript file:
+% \begin{macrocode}
+\PackageInfo{textcomp}{Sub-encoding information:\MessageBreak
+ \space\space 5 = only ISO-Adobe without
+ \string\textcurrency\MessageBreak
+ \space\space 4 = 5 + \string\texteuro\MessageBreak
+ \space\space 3 = 4 + \string\textohm\MessageBreak
+ \space\space 2 = 3 + \noexpand\textestimated+
+ \string\textcurrency\MessageBreak
+ \space\space 1 = TS1 - \noexpand\textcircled-
+ \string\t\MessageBreak
+ \space\space 0 = TS1 (full)\MessageBreak
+ Font families with sub-encoding setting implement\MessageBreak
+ only a restricted character set as indicated.\MessageBreak
+ Family '?' is the default used for unknown fonts.\MessageBreak
+ See the documentation for details\@gobble}
+% \end{macrocode}
+%
+% \begin{macro}{\DeclareEncodingSubset}
+% An encoding subset to which a font family belongs is declared by
+% the command |\DeclareEncodingSubset| that takes the major encoding as the
+% first argument (e.g., |TS1|), the family name as the second
+% argument (e.g., |cmr|), and the subset encoding id as a third,
+% (e.g., |0| for |cmr|).
+%
+% The default encoding subset to use when nothing is known about
+% the current font family is named |?|.
+% \begin{macrocode}
+\def\DeclareEncodingSubset#1#2#3{%
+ \@ifundefined{#1:#2}%
+ {\PackageInfo{textcomp}{Setting #2 sub-encoding to #1/#3}}%
+ {\PackageInfo{textcomp}{Changing #2 sub-encoding to #1/#3}}%
+ \@namedef{#1:#2}{#3}}
+\@onlypreamble\DeclareEncodingSubset
+% \end{macrocode}
+% \end{macro}
+%
+%
+% The options for the package are the following:
+% \begin{description}
+% \item[safe]
+% for unknown font families enables only symbols that are also
+% in the ISO-Adobe character set; without "currency", which is
+% often misused for the Euro. Older Type1 fonts from the
+% non-TeX world provide only this subset.
+%
+% \item[euro]
+% enables the ``safe'' symbols plus the |\texteuro|
+% command. Most newer fonts provide this.
+%
+% \item[full] enables all |TS1| commands; useful only with fonts
+% like EC or CM bright.
+%
+% \item[almostfull]
+% same as ``full'', except that |\textcircled|
+% and |\t| are \emph{not} redefined from their defaults to avoid
+% that commands like |\copyright| suddenly no longer work.
+%
+% \item[force]
+% ignore all subset encoding definitions stored in the package
+% itself or in the configuration file and always use the default
+% subset as specified by one of the other options (seldom useful,
+% only dangerous).
+% \end{description}
+%
+% \begin{macro}{\iftc@forced}
+% Switch used to implement the \texttt{force} option
+% \begin{macrocode}
+\newif\iftc@forced \tc@forcedfalse
+% \end{macrocode}
+% \end{macro}
+
+% This is implemented by defining the default subset:
+% \begin{macrocode}
+\DeclareOption{full}{\DeclareEncodingSubset{TS1}{?}{0}}
+\DeclareOption{almostfull}{\DeclareEncodingSubset{TS1}{?}{1}}
+\DeclareOption{euro}{\DeclareEncodingSubset{TS1}{?}{4}}
+\DeclareOption{safe}{\DeclareEncodingSubset{TS1}{?}{5}}
+% \end{macrocode}
+% The default is ``almostfull'' which means that old documents will
+% work except that |\textcircled| and |\t| will use the kernel
+% defaults (with the advantage that this also works if the current
+% font (as often the case) doesn't implement these glyphs.
+%
+% The ``force'' option simply sets the switch to true.
+% \begin{macrocode}
+\DeclareOption{force}{\tc@forcedtrue}
+% \end{macrocode}
+%
+% The suggestions to user is to use the ``safe'' option always
+% unless that balks in which case they could switch to
+% ``almostfull'' but then better check their output manually.
+%
+% \begin{macrocode}
+\def\tc@errorwarn{\PackageError}
+\DeclareOption{warn}{\gdef\tc@errorwarn#1#2#3{\PackageWarning{#1}{#2}}}
+\DeclareOption{quiet}{\gdef\tc@errorwarn#1#2#3{}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExecuteOptions{almostfull}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+%
+%
+%
+% \begin{macro}{\CheckEncodingSubset}
+% The command |\CheckEncodingSubset| will check if the current font
+% family has the right encoding subset to typeset a certain
+% command. It takes five arguments as follows:
+% first argument is either |\UseTextSymbol|, |\UseTextAccent|
+% depending on whether or not the symbol is a text symbol or a text
+% accent.
+
+% The second argument is the encoding from which this symbol should
+% be fetched.
+%
+% The third argument is either a fake accessor command or an error
+% message. the code in that argument (if ever executed) receives
+% two arguments: |#2| and |#5| of |\CheckEncodingSubset|.
+%
+% Argument four is the subset encoding id to test against: if this
+% value is higher than the subset id of the current font family
+% then we typeset the symbol, i.e., execute |#1{#2}#5| otherwise
+% it runs |#3#5|, e.g., to produce an error message or fake the
+% glyph somehow.
+%
+% Argument five is the symbol or accent command that is being
+% checked.
+%
+% For usage examples see definitions below.
+% \begin{macrocode}
+\iftc@forced
+% \end{macrocode}
+% If the ``force'' option was given we always use the default for
+% testing against.
+% \begin{macrocode}
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ 0\csname #2:?\endcsname
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
+% \end{macrocode}
+%
+% In normal circumstances the test is a bit more complicated: first
+% check if there exists a macro
+% |\|\meta{arg2}|:|\meta{current-family} and if so use that value
+% to test against, otherwise use the default to test against.
+% \begin{macrocode}
+\else
+\def\CheckEncodingSubset#1#2#3#4#5{%
+ \ifnum #4>%
+ \expandafter\ifx\csname #2:\f@family\endcsname\relax
+ 0\csname #2:?\endcsname
+ \else
+ \csname #2:\f@family\endcsname
+ \fi
+ \relax
+ \expandafter\@firstoftwo
+ \else
+ \expandafter\@secondoftwo
+ \fi
+ {#1{#2}}{#3}%
+ #5%
+}
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@subst}
+% \begin{macrocode}
+\def\tc@subst#1{%
+ \tc@errorwarn{textcomp}%
+ {Symbol \string#1 not provided by\MessageBreak
+ font family \f@family\space
+ in TS1 encoding.\MessageBreak Default family used instead}\@eha
+ \bgroup\fontfamily\textcompsubstdefault\selectfont#1\egroup
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@error}
+% |\tc@error| is going to be used in arg |#3| of
+% |\CheckEncodingSubset| when a symbol is not available in a
+% certain font family. It gets pass the encoding it normally lives
+% in (arg one) and the name of the symbol or accent that has a
+% problem.
+%
+% \begin{macrocode}
+% error commands take argument:
+% #1 symbol to be used
+\def\tc@error#1{%
+ \PackageError{textcomp}% % should be latex error if general
+ {Accent \string#1 not provided by\MessageBreak
+ font family \f@family\space
+ in TS1 encoding}\@eha
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\tc@fake@euro}
+% |\tc@fake@euro| is an example of a ``fake'' definition to use in arg |#3| of
+% |\CheckEncodingSubset| when a symbol is not available in a
+% certain font family. Here we produce an Euro symbol by combining
+% a ``C'' with a ``=''.
+% \begin{macrocode}
+\def\tc@fake@euro#1{%
+ \leavevmode
+ \PackageInfo{textcomp}{Faking \noexpand#1for font family
+ \f@family\MessageBreak in TS1 encoding}%
+ \valign{##\cr
+ \vfil\hbox to 0.07em{\dimen@\f@size\p@
+ \math@fontsfalse
+ \fontsize{.7\dimen@}\z@\selectfont=\hss}%
+ \vfil\cr%
+ \hbox{C}\crcr
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tc@check@symbol}
+% \begin{macro}{\tc@check@accent}
+% These are two abbreviations that we use below to check symbols
+% and accents in TS1. Only there to save some space, e.g., we can
+% then write
+%\begin{verbatim}
+%\DeclareTextCommandDefault{\textcurrency}{\tc@check@symbol3\textcurrency}
+%\end{verbatim}
+% to ensure that |\textcurrency| is only typeset if the current
+% font has a \texttt{TS1} subset id of less than 3. Otherwise
+% |\tc@error| is called telling the user that for this font family
+% |\textcurreny| is not available.
+% \begin{macrocode}
+\def\tc@check@symbol{\CheckEncodingSubset\UseTextSymbol{TS1}\tc@subst}
+\def\tc@check@accent{\CheckEncodingSubset\UseTextAccent{TS1}\tc@error}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% We start with the commands that are ``safe'' and which can be
+% unconditionally set up, first the accents\ldots
+% \begin{macrocode}
+\DeclareTextAccentDefault{\capitalcedilla}{TS1}
+\DeclareTextAccentDefault{\capitalogonek}{TS1}
+\DeclareTextAccentDefault{\capitalgrave}{TS1}
+\DeclareTextAccentDefault{\capitalacute}{TS1}
+\DeclareTextAccentDefault{\capitalcircumflex}{TS1}
+\DeclareTextAccentDefault{\capitaltilde}{TS1}
+\DeclareTextAccentDefault{\capitaldieresis}{TS1}
+\DeclareTextAccentDefault{\capitalhungarumlaut}{TS1}
+\DeclareTextAccentDefault{\capitalring}{TS1}
+\DeclareTextAccentDefault{\capitalcaron}{TS1}
+\DeclareTextAccentDefault{\capitalbreve}{TS1}
+\DeclareTextAccentDefault{\capitalmacron}{TS1}
+\DeclareTextAccentDefault{\capitaldotaccent}{TS1}
+% \end{macrocode}
+% \ldots and then the other glyphs.
+% \changes{v1.9p}{1998/06/12}{Renamed \cs{textmacron} pr/2840}
+% \begin{macrocode}
+\DeclareTextSymbolDefault{\textcapitalcompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textascendercompwordmark}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightbase}{TS1}
+\DeclareTextSymbolDefault{\textquotestraightdblbase}{TS1}
+\DeclareTextSymbolDefault{\texttwelveudash}{TS1}
+\DeclareTextSymbolDefault{\textthreequartersemdash}{TS1}
+\DeclareTextSymbolDefault{\textdollar}{TS1}
+\DeclareTextSymbolDefault{\textquotesingle}{TS1}
+\DeclareTextSymbolDefault{\textasteriskcentered}{TS1}
+\DeclareTextSymbolDefault{\textfractionsolidus}{TS1}
+\DeclareTextSymbolDefault{\textminus}{TS1}
+\DeclareTextSymbolDefault{\textlbrackdbl}{TS1}
+\DeclareTextSymbolDefault{\textrbrackdbl}{TS1}
+\DeclareTextSymbolDefault{\textasciigrave}{TS1}
+\DeclareTextSymbolDefault{\texttildelow}{TS1}
+\DeclareTextSymbolDefault{\textasciibreve}{TS1}
+\DeclareTextSymbolDefault{\textasciicaron}{TS1}
+\DeclareTextSymbolDefault{\textgravedbl}{TS1}
+\DeclareTextSymbolDefault{\textacutedbl}{TS1}
+\DeclareTextSymbolDefault{\textdagger}{TS1}
+\DeclareTextSymbolDefault{\textdaggerdbl}{TS1}
+\DeclareTextSymbolDefault{\textbardbl}{TS1}
+\DeclareTextSymbolDefault{\textperthousand}{TS1}
+\DeclareTextSymbolDefault{\textbullet}{TS1}
+\DeclareTextSymbolDefault{\textcelsius}{TS1}
+\DeclareTextSymbolDefault{\textflorin}{TS1}
+\DeclareTextSymbolDefault{\texttrademark}{TS1}
+\DeclareTextSymbolDefault{\textcent}{TS1}
+\DeclareTextSymbolDefault{\textsterling}{TS1}
+\DeclareTextSymbolDefault{\textyen}{TS1}
+\DeclareTextSymbolDefault{\textbrokenbar}{TS1}
+\DeclareTextSymbolDefault{\textsection}{TS1}
+\DeclareTextSymbolDefault{\textasciidieresis}{TS1}
+\DeclareTextSymbolDefault{\textcopyright}{TS1}
+\DeclareTextSymbolDefault{\textordfeminine}{TS1}
+\DeclareTextSymbolDefault{\textlnot}{TS1}
+\DeclareTextSymbolDefault{\textregistered}{TS1}
+\DeclareTextSymbolDefault{\textasciimacron}{TS1}
+\DeclareTextSymbolDefault{\textdegree}{TS1}
+\DeclareTextSymbolDefault{\textpm}{TS1}
+\DeclareTextSymbolDefault{\texttwosuperior}{TS1}
+\DeclareTextSymbolDefault{\textthreesuperior}{TS1}
+\DeclareTextSymbolDefault{\textasciiacute}{TS1}
+\DeclareTextSymbolDefault{\textmu}{TS1}
+\DeclareTextSymbolDefault{\textparagraph}{TS1}
+\DeclareTextSymbolDefault{\textperiodcentered}{TS1}
+\DeclareTextSymbolDefault{\textonesuperior}{TS1}
+\DeclareTextSymbolDefault{\textordmasculine}{TS1}
+\DeclareTextSymbolDefault{\textonequarter}{TS1}
+\DeclareTextSymbolDefault{\textonehalf}{TS1}
+\DeclareTextSymbolDefault{\textthreequarters}{TS1}
+\DeclareTextSymbolDefault{\texttimes}{TS1}
+\DeclareTextSymbolDefault{\textdiv}{TS1}
+% \end{macrocode}
+%
+% The |\texteuro| is only available for subsets with id 4 or
+% less. Otherwise we fake the glyph using |\tc@fake@euro|
+% \begin{macrocode}
+\DeclareTextCommandDefault{\texteuro}
+ {\CheckEncodingSubset\UseTextSymbol{TS1}\tc@fake@euro5\texteuro}
+% \end{macrocode}
+%
+% The |\textohm| is only available for subsets with id 3 or
+% less. Otherwise we produce an error.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textohm}{\tc@check@symbol4\textohm}
+% \end{macrocode}
+% The |\textestimated| and |\textcurrency| are only provided for
+% fonts with subset encoding with id 2 or less.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textestimated}%
+ {\tc@check@symbol3\textestimated}
+\DeclareTextCommandDefault{\textcurrency}%
+ {\tc@check@symbol3\textcurrency}
+% \end{macrocode}
+% Nearly all of the remaining glyphs are provided only with fonts
+% with id 1 or 0, i.e., are essentially complete.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\capitaltie}%
+ {\tc@check@accent2\capitaltie}
+\DeclareTextCommandDefault{\newtie}%
+ {\tc@check@accent2\newtie}
+\DeclareTextCommandDefault{\capitalnewtie}%
+ {\tc@check@accent2\capitalnewtie}
+\DeclareTextCommandDefault{\textleftarrow}%
+ {\tc@check@symbol2\textleftarrow}
+\DeclareTextCommandDefault{\textrightarrow}%
+ {\tc@check@symbol2\textrightarrow}
+\DeclareTextCommandDefault{\textblank}%
+ {\tc@check@symbol2\textblank}
+\DeclareTextCommandDefault{\textdblhyphen}%
+ {\tc@check@symbol2\textdblhyphen}
+\DeclareTextCommandDefault{\textzerooldstyle}%
+ {\tc@check@symbol2\textzerooldstyle}
+\DeclareTextCommandDefault{\textoneoldstyle}%
+ {\tc@check@symbol2\textoneoldstyle}
+\DeclareTextCommandDefault{\texttwooldstyle}%
+ {\tc@check@symbol2\texttwooldstyle}
+\DeclareTextCommandDefault{\textthreeoldstyle}%
+ {\tc@check@symbol2\textthreeoldstyle}
+\DeclareTextCommandDefault{\textfouroldstyle}%
+ {\tc@check@symbol2\textfouroldstyle}
+\DeclareTextCommandDefault{\textfiveoldstyle}%
+ {\tc@check@symbol2\textfiveoldstyle}
+\DeclareTextCommandDefault{\textsixoldstyle}%
+ {\tc@check@symbol2\textsixoldstyle}
+\DeclareTextCommandDefault{\textsevenoldstyle}%
+ {\tc@check@symbol2\textsevenoldstyle}
+\DeclareTextCommandDefault{\texteightoldstyle}%
+ {\tc@check@symbol2\texteightoldstyle}
+\DeclareTextCommandDefault{\textnineoldstyle}%
+ {\tc@check@symbol2\textnineoldstyle}
+\DeclareTextCommandDefault{\textlangle}%
+ {\tc@check@symbol2\textlangle}
+\DeclareTextCommandDefault{\textrangle}%
+ {\tc@check@symbol2\textrangle}
+\DeclareTextCommandDefault{\textmho}%
+ {\tc@check@symbol2\textmho}
+\DeclareTextCommandDefault{\textbigcircle}%
+ {\tc@check@symbol2\textbigcircle}
+\DeclareTextCommandDefault{\textuparrow}%
+ {\tc@check@symbol2\textuparrow}
+\DeclareTextCommandDefault{\textdownarrow}%
+ {\tc@check@symbol2\textdownarrow}
+\DeclareTextCommandDefault{\textborn}%
+ {\tc@check@symbol2\textborn}
+\DeclareTextCommandDefault{\textdivorced}%
+ {\tc@check@symbol2\textdivorced}
+\DeclareTextCommandDefault{\textdied}%
+ {\tc@check@symbol2\textdied}
+\DeclareTextCommandDefault{\textleaf}%
+ {\tc@check@symbol2\textleaf}
+\DeclareTextCommandDefault{\textmarried}%
+ {\tc@check@symbol2\textmarried}
+\DeclareTextCommandDefault{\textmusicalnote}%
+ {\tc@check@symbol2\textmusicalnote}
+\DeclareTextCommandDefault{\textdblhyphenchar}%
+ {\tc@check@symbol2\textdblhyphenchar}
+\DeclareTextCommandDefault{\textdollaroldstyle}%
+ {\tc@check@symbol2\textdollaroldstyle}
+\DeclareTextCommandDefault{\textcentoldstyle}%
+ {\tc@check@symbol2\textcentoldstyle}
+\DeclareTextCommandDefault{\textcolonmonetary}%
+ {\tc@check@symbol2\textcolonmonetary}
+\DeclareTextCommandDefault{\textwon}%
+ {\tc@check@symbol2\textwon}
+\DeclareTextCommandDefault{\textnaira}%
+ {\tc@check@symbol2\textnaira}
+\DeclareTextCommandDefault{\textguarani}%
+ {\tc@check@symbol2\textguarani}
+\DeclareTextCommandDefault{\textpeso}%
+ {\tc@check@symbol2\textpeso}
+\DeclareTextCommandDefault{\textlira}%
+ {\tc@check@symbol2\textlira}
+\DeclareTextCommandDefault{\textrecipe}%
+ {\tc@check@symbol2\textrecipe}
+\DeclareTextCommandDefault{\textinterrobang}%
+ {\tc@check@symbol2\textinterrobang}
+\DeclareTextCommandDefault{\textinterrobangdown}%
+ {\tc@check@symbol2\textinterrobangdown}
+\DeclareTextCommandDefault{\textdong}%
+ {\tc@check@symbol2\textdong}
+\DeclareTextCommandDefault{\textpertenthousand}%
+ {\tc@check@symbol2\textpertenthousand}
+\DeclareTextCommandDefault{\textpilcrow}%
+ {\tc@check@symbol2\textpilcrow}
+\DeclareTextCommandDefault{\textbaht}%
+ {\tc@check@symbol2\textbaht}
+\DeclareTextCommandDefault{\textnumero}%
+ {\tc@check@symbol2\textnumero}
+\DeclareTextCommandDefault{\textdiscount}%
+ {\tc@check@symbol2\textdiscount}
+\DeclareTextCommandDefault{\textopenbullet}%
+ {\tc@check@symbol2\textopenbullet}
+\DeclareTextCommandDefault{\textservicemark}%
+ {\tc@check@symbol2\textservicemark}
+\DeclareTextCommandDefault{\textlquill}%
+ {\tc@check@symbol2\textlquill}
+\DeclareTextCommandDefault{\textrquill}%
+ {\tc@check@symbol2\textrquill}
+\DeclareTextCommandDefault{\textcopyleft}%
+ {\tc@check@symbol2\textcopyleft}
+\DeclareTextCommandDefault{\textcircledP}%
+ {\tc@check@symbol2\textcircledP}
+\DeclareTextCommandDefault{\textreferencemark}%
+ {\tc@check@symbol2\textreferencemark}
+\DeclareTextCommandDefault{\textsurd}%
+ {\tc@check@symbol2\textsurd}
+% \end{macrocode}
+% The |\textcircled| and |\t| are handled specially, unless the
+% current font has a subset id of 0 (i.e. full \texttt{TS1}) we
+% pick the symbols up from the the math font encodings, i.e., the
+% third argument to |\CheckEncodingSubset| uses |\UseTextAccent| to
+% get them from there.
+% \begin{macrocode}
+\DeclareTextCommandDefault{\textcircled}
+ {\CheckEncodingSubset\UseTextAccent{TS1}%
+ {\UseTextAccent{OMS}}1\textcircled}
+\DeclareTextCommandDefault{\t}
+ {\CheckEncodingSubset\UseTextAccent{TS1}%
+ {\UseTextAccent{OML}}1\t}
+% \end{macrocode}
+
+
+%
+% Finally input the encoding-specific definitions for
+% \texttt{TS1} thus making the top-level definitions
+% optimised for this encoding (and not for the default
+% encoding).
+% \changes{v1.9o}{1998/03/20}{Load decls after defaults for speed.}
+% \begin{macrocode}
+\input{ts1enc.def}
+% \end{macrocode}
+% Now having the new glyphs available we also want to make sure
+% that they are used. For most cases this will automatically happen
+% but for some glyphs there are inferior definitions already known
+% to \LaTeX{} which will prevent the usage of the \texttt{TS1}
+% versions. So we better
+% get rid of them:
+% \changes{v1.9o}{1998/03/20}{Added various \cs{UndeclareTextCommand}
+% declarations for pr/2783}
+% \begin{macrocode}
+\UndeclareTextCommand{\textsterling}{OT1}
+\UndeclareTextCommand{\textdollar} {OT1}
+% \end{macrocode}
+% Similar declarations should probably be made for other encodings
+% like \texttt{OT4} if they are in use.
+% \begin{macrocode}
+%\UndeclareTextCommand{\textsterling}{OT4}
+%\UndeclareTextCommand{\textdollar} {OT4}
+% \end{macrocode}
+% From the \texttt{T1} encoding there are two candidates for removal:
+% \textperthousand{} and \textpertenthousand{} since these are both
+% constructed from \% followed by a tiny
+% `{\fontencoding{T1}\selectfont \char 24}'
+% rather than being a single glyph. The problem with this
+% approach is that in PostScript fonts this small zero is usually not
+% available resulting in \%\rule{3pt}{3pt} rather than
+% \textperthousand{} while the real glyph (at least for
+% |\textperthousand|) is available in the PostScript version of
+% \texttt{TS1}. So for the moment we compromise by removing the
+% \texttt{T1} declaration for |\textperthousand| but keeping the one
+% for |\textpertenthousand|. This will have the effect that with
+% Computer Modern fonts everything will come out (although
+% \textperthousand{} and \textpertenthousand{} are not taken from the
+% same physical font) and with PostScript fonts \textperthousand{}
+% will come out correctly while \textpertenthousand{} will most
+% likely look like \%\rule{6pt}{3pt} --- which is probably an
+% improvement over just getting a single `\rule{3pt}{3pt}' to
+% indicate a completely missing glyph, which would happen if we
+% also `undeclared' |\textpertenthousand|.
+% \begin{macrocode}
+\UndeclareTextCommand{\textperthousand}{T1}
+%\UndeclareTextCommand{\textpertenthousand}{T1}
+% \end{macrocode}
+%
+%
+% \subsubsection{Supporting oldstyle digits}
+%
+% \begin{macrocode}
+\DeclareRobustCommand\oldstylenums[1]{%
+ \begingroup
+ \ifmmode
+ \mathgroup\symletters #1%
+ \else
+ \CheckEncodingSubset\@use@text@encoding{TS1}%
+ {\PackageWarning{textcomp}%
+ {Oldstyle digits unavailable for
+ family \f@family.\MessageBreak
+ Lining digits used instead}}%
+ \tw@{#1}%
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%
+% \subsubsection{Subset encoding defaults}
+%
+% For many font families commonly used in the \TeX{} world we
+% provide the subset encoding data here. Users can add additional
+% font families in the file \texttt{textcomp.cfg} if they own other
+% fonts.
+%
+% However, if the option ``forced'' was given then all subset
+% encoding specifications are ignored, so there is no point in
+% setting any of them up:
+% \begin{macrocode}
+\iftc@forced \else
+% \end{macrocode}
+%
+% Computer modern based fonts (e.g., CM, CM-Bright, Concrete):
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{cmr} {0}
+\DeclareEncodingSubset{TS1}{cmss} {0}
+\DeclareEncodingSubset{TS1}{cmtt} {0}
+\DeclareEncodingSubset{TS1}{cmvtt} {0}
+\DeclareEncodingSubset{TS1}{cmbr} {0}
+\DeclareEncodingSubset{TS1}{cmtl} {0}
+\DeclareEncodingSubset{TS1}{ccr} {0}
+% \end{macrocode}
+%
+% PSNFSS fonts:
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{ptm} {4}
+\DeclareEncodingSubset{TS1}{pcr} {4}
+\DeclareEncodingSubset{TS1}{phv} {4}
+\DeclareEncodingSubset{TS1}{ppl} {3}
+\DeclareEncodingSubset{TS1}{pag} {4}
+\DeclareEncodingSubset{TS1}{pbk} {4}
+\DeclareEncodingSubset{TS1}{pnc} {4}
+\DeclareEncodingSubset{TS1}{pzc} {4}
+\DeclareEncodingSubset{TS1}{bch} {4}
+\DeclareEncodingSubset{TS1}{put} {5}
+% \end{macrocode}
+%
+% Other CTAN fonts (probably not complete):
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{uag} {5}
+\DeclareEncodingSubset{TS1}{ugq} {5}
+\DeclareEncodingSubset{TS1}{ul8} {4}
+\DeclareEncodingSubset{TS1}{ul9} {4} % (LuxiSans, one day)
+\DeclareEncodingSubset{TS1}{augie} {5}
+\DeclareEncodingSubset{TS1}{dayrom} {3}
+\DeclareEncodingSubset{TS1}{dayroms} {3}
+\DeclareEncodingSubset{TS1}{pxr} {0}
+\DeclareEncodingSubset{TS1}{pxss} {0}
+\DeclareEncodingSubset{TS1}{pxtt} {0}
+\DeclareEncodingSubset{TS1}{txr} {0}
+\DeclareEncodingSubset{TS1}{txss} {0}
+\DeclareEncodingSubset{TS1}{txtt} {0}
+% \end{macrocode}
+%
+% Latin Modern and TeX Gyre:
+% \changes{v1.99k}{2009/10/28}{Added Latin Modern and TeX Gyre subsets}
+% \changes{v1.99l}{2009/11/04}{Added more Latin Modern and TeX Gyre subsets}
+% \changes{v1.99m}{2015/02/16}{Added lmtt (Heiko Oberdiek) latex/4415}
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{lmr} {0}
+\DeclareEncodingSubset{TS1}{lmdh} {0}
+\DeclareEncodingSubset{TS1}{lmss} {0}
+\DeclareEncodingSubset{TS1}{lmssq} {0}
+\DeclareEncodingSubset{TS1}{lmvtt} {0}
+\DeclareEncodingSubset{TS1}{lmtt} {0}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{qhv} {0}
+\DeclareEncodingSubset{TS1}{qag} {0}
+\DeclareEncodingSubset{TS1}{qbk} {0}
+\DeclareEncodingSubset{TS1}{qcr} {0}
+\DeclareEncodingSubset{TS1}{qcs} {0}
+\DeclareEncodingSubset{TS1}{qpl} {0}
+\DeclareEncodingSubset{TS1}{qtm} {0}
+\DeclareEncodingSubset{TS1}{qzc} {0}
+\DeclareEncodingSubset{TS1}{qhvc} {0}
+% \end{macrocode}
+%
+% Fourier-GUTenberg:
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{futs} {4}
+\DeclareEncodingSubset{TS1}{futx} {4}
+\DeclareEncodingSubset{TS1}{futj} {4}
+% \end{macrocode}
+%
+% Y\&Y's Lucida Bright
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hlh} {3}
+\DeclareEncodingSubset{TS1}{hls} {3}
+\DeclareEncodingSubset{TS1}{hlst} {3}
+% \end{macrocode}
+% The remaining settings for Lucida are conservative: the following
+% fonts contain the |\textohm| character but not the |\texteuro|,
+% i.e., belong to neither subset~4 nor subset~3. If you want to
+% use the |\textohm| with these fonts copy these definition to
+% \texttt{textcomp.cfg} and change the subset to~3. However in that
+% case make sure that you do not use the |\texteuro|.
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{hlct} {5}
+\DeclareEncodingSubset{TS1}{hlx} {5}
+\DeclareEncodingSubset{TS1}{hlce} {5}
+\DeclareEncodingSubset{TS1}{hlcn} {5}
+\DeclareEncodingSubset{TS1}{hlcw} {5}
+\DeclareEncodingSubset{TS1}{hlcf} {5}
+% \end{macrocode}
+%
+% Other commercial families\ldots
+% \begin{macrocode}
+\DeclareEncodingSubset{TS1}{pplx} {3}
+\DeclareEncodingSubset{TS1}{pplj} {3}
+\DeclareEncodingSubset{TS1}{ptmx} {4}
+\DeclareEncodingSubset{TS1}{ptmj} {4}
+% \end{macrocode}
+%
+% If the file \texttt{textcomp.cfg} exists it will be loaded at
+% this point. This allows to define further subset encodings for
+% font families not covered by default.
+%
+% \begin{macrocode}
+\InputIfFileExists{textcomp.cfg}
+ {\PackageInfo{textcomp}{Local configuration file used}}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</TS1oldsty>
+% \end{macrocode}
+
+
+% \Finale
+%
+
+
+
+
+\endinput
+
+
+
+
+
diff --git a/macros/latex-dev/base/ltthm.dtx b/macros/latex-dev/base/ltthm.dtx
index ee1b51ac5d..4e3c51ab77 100644
--- a/macros/latex-dev/base/ltthm.dtx
+++ b/macros/latex-dev/base/ltthm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index 4782d77fa4..1a149f788d 100644
--- a/macros/latex-dev/base/ltvers.dtx
+++ b/macros/latex-dev/base/ltvers.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -115,7 +115,7 @@
{2020-02-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{-2}
+\def\patch@level{-3}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
@@ -125,7 +125,7 @@
% intended to help help us internally when we locally install a
% format out of some development branch.
% \begin{macrocode}
-\edef\development@branch@name{development \the\year-\the\month-\the\day}
+\edef\development@branch@name{develop \the\year-\the\month-\the\day}
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf
index d96568eb4c..6ee7ae0509 100644
--- a/macros/latex-dev/base/ltx3info.pdf
+++ b/macros/latex-dev/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltx3info.tex b/macros/latex-dev/base/ltx3info.tex
index d3a7542cfd..00ad96401b 100644
--- a/macros/latex-dev/base/ltx3info.tex
+++ b/macros/latex-dev/base/ltx3info.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltxcheck.tex b/macros/latex-dev/base/ltxcheck.tex
index 7446c06cea..a635602cd0 100644
--- a/macros/latex-dev/base/ltxcheck.tex
+++ b/macros/latex-dev/base/ltxcheck.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltxdoc.dtx b/macros/latex-dev/base/ltxdoc.dtx
index 2d3e5aad2a..f250b2cb19 100644
--- a/macros/latex-dev/base/ltxdoc.dtx
+++ b/macros/latex-dev/base/ltxdoc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index dc234911bb..4bd469ec33 100644
--- a/macros/latex-dev/base/ltxdoc.pdf
+++ b/macros/latex-dev/base/ltxdoc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltxref.dtx b/macros/latex-dev/base/ltxref.dtx
index 27d3250413..ae7d4ef589 100644
--- a/macros/latex-dev/base/ltxref.dtx
+++ b/macros/latex-dev/base/ltxref.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/makeindx.dtx b/macros/latex-dev/base/makeindx.dtx
index aa998bf3ca..a149bcf86c 100644
--- a/macros/latex-dev/base/makeindx.dtx
+++ b/macros/latex-dev/base/makeindx.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/makeindx.ins b/macros/latex-dev/base/makeindx.ins
index b31b967c41..2f70c39493 100644
--- a/macros/latex-dev/base/makeindx.ins
+++ b/macros/latex-dev/base/makeindx.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf
index 098a633051..e8efa6e3d3 100644
--- a/macros/latex-dev/base/makeindx.pdf
+++ b/macros/latex-dev/base/makeindx.pdf
Binary files differ
diff --git a/macros/latex-dev/base/manual.pdf b/macros/latex-dev/base/manual.pdf
index 6d11064c8e..b86b5408b8 100644
--- a/macros/latex-dev/base/manual.pdf
+++ b/macros/latex-dev/base/manual.pdf
Binary files differ
diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf
index e8f251f026..aa8f4b5c57 100644
--- a/macros/latex-dev/base/modguide.pdf
+++ b/macros/latex-dev/base/modguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/modguide.tex b/macros/latex-dev/base/modguide.tex
index ff796c7687..ac03564470 100644
--- a/macros/latex-dev/base/modguide.tex
+++ b/macros/latex-dev/base/modguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/newdc.ins b/macros/latex-dev/base/newdc.ins
index 5786282a87..3a4cd9341e 100644
--- a/macros/latex-dev/base/newdc.ins
+++ b/macros/latex-dev/base/newdc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/newlfont.dtx b/macros/latex-dev/base/newlfont.dtx
index 5bba5441dd..91a19196a7 100644
--- a/macros/latex-dev/base/newlfont.dtx
+++ b/macros/latex-dev/base/newlfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/nfssfont.dtx b/macros/latex-dev/base/nfssfont.dtx
index fc92f83451..ce47cb8554 100644
--- a/macros/latex-dev/base/nfssfont.dtx
+++ b/macros/latex-dev/base/nfssfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/nfssfont.ins b/macros/latex-dev/base/nfssfont.ins
index c1ac663471..ba890603ab 100644
--- a/macros/latex-dev/base/nfssfont.ins
+++ b/macros/latex-dev/base/nfssfont.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf
index f884e20d76..0bddd16d05 100644
--- a/macros/latex-dev/base/nfssfont.pdf
+++ b/macros/latex-dev/base/nfssfont.pdf
Binary files differ
diff --git a/macros/latex-dev/base/olddc.ins b/macros/latex-dev/base/olddc.ins
index b512ab2e3e..9ebc62468d 100644
--- a/macros/latex-dev/base/olddc.ins
+++ b/macros/latex-dev/base/olddc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/oldlfont.dtx b/macros/latex-dev/base/oldlfont.dtx
index bf39341488..c0c14f2aa2 100644
--- a/macros/latex-dev/base/oldlfont.dtx
+++ b/macros/latex-dev/base/oldlfont.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/preload.dtx b/macros/latex-dev/base/preload.dtx
index a6d7903299..fd9e03ac44 100644
--- a/macros/latex-dev/base/preload.dtx
+++ b/macros/latex-dev/base/preload.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/proc.dtx b/macros/latex-dev/base/proc.dtx
index a74dfa36e4..8db8fef7f1 100644
--- a/macros/latex-dev/base/proc.dtx
+++ b/macros/latex-dev/base/proc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/proc.ins b/macros/latex-dev/base/proc.ins
index 15161a4960..0b44705752 100644
--- a/macros/latex-dev/base/proc.ins
+++ b/macros/latex-dev/base/proc.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf
index 097fe26681..7b57b7168d 100644
--- a/macros/latex-dev/base/proc.pdf
+++ b/macros/latex-dev/base/proc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slides.dtx b/macros/latex-dev/base/slides.dtx
index 54cfaa20fd..d96773c590 100644
--- a/macros/latex-dev/base/slides.dtx
+++ b/macros/latex-dev/base/slides.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -53,7 +53,7 @@
%<*driver>
\ProvidesFile{slides.drv}
%</driver>
- [2016/03/29 v2.4a
+ [2019/11/04 v2.4b
%<+class> Standard LaTeX document class]
%<+cmd> SLiTeX definitions]
% \end{macrocode}
@@ -419,6 +419,12 @@
\def\sldefault{sl}
\def\bfdefault{bx}
% \end{macrocode}
+% As |\fontshape| gets redefined we need to make sure that the default
+% for |\upshape| is no longer \texttt{up} but again \texttt{n}.
+% \changes{v2.4b}{2019/11/04}{Explicitly set \cs{updefault}}
+% \begin{macrocode}
+\def\updefault{n}
+% \end{macrocode}
%
%
% Since the number of parameters to set are very large it seems
diff --git a/macros/latex-dev/base/slides.ins b/macros/latex-dev/base/slides.ins
index a25c3f8fe2..aed69c54c9 100644
--- a/macros/latex-dev/base/slides.ins
+++ b/macros/latex-dev/base/slides.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -96,7 +96,7 @@ extension .ins) which are part of the distribution.
This is a generated file.
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
@@ -138,7 +138,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf
index 377030d909..759248c815 100644
--- a/macros/latex-dev/base/slides.pdf
+++ b/macros/latex-dev/base/slides.pdf
Binary files differ
diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf
index 185ee5607f..cd581e14d3 100644
--- a/macros/latex-dev/base/slifonts.pdf
+++ b/macros/latex-dev/base/slifonts.pdf
Binary files differ
diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf
index b37b468743..8933047b64 100644
--- a/macros/latex-dev/base/source2e.pdf
+++ b/macros/latex-dev/base/source2e.pdf
Binary files differ
diff --git a/macros/latex-dev/base/source2e.tex b/macros/latex-dev/base/source2e.tex
index d34dabfa47..e9bacbfc45 100644
--- a/macros/latex-dev/base/source2e.tex
+++ b/macros/latex-dev/base/source2e.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
@@ -156,7 +156,7 @@ page_precedence "rnaA"
\setcounter{IndexColumns}{2}
% Needed for documentation in ltoutenc.dtx
-\usepackage{textcomp}
+% \usepackage{textcomp}
\begin{document}
\title{The \LaTeXe\ Sources}
@@ -266,6 +266,8 @@ page_precedence "rnaA"
\DocInclude{ltfssbas} % NFSS Base macros
+ \DocInclude{ltfssbas} % NFSS Axes handling (new in 2020)
+
\DocInclude{ltfsstrc} % NFSS Tracing (and tracefnt.sty)
\DocInclude{ltfsscmp} % NFSS1 Compatibility
@@ -280,6 +282,8 @@ page_precedence "rnaA"
\DocInclude{ltfntcmd} % \textrm etc
+ \DocInclude{lttextcomp} % companion symbols (new 2020)
+
\DocInclude{ltpageno} % Page numbering
\DocInclude{ltxref} % Cross referencing
diff --git a/macros/latex-dev/base/syntonly.dtx b/macros/latex-dev/base/syntonly.dtx
index 6d4c710d0d..1f7c5b651d 100644
--- a/macros/latex-dev/base/syntonly.dtx
+++ b/macros/latex-dev/base/syntonly.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/syntonly.ins b/macros/latex-dev/base/syntonly.ins
index 2adf6c3d78..018a1b2ebc 100644
--- a/macros/latex-dev/base/syntonly.ins
+++ b/macros/latex-dev/base/syntonly.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2019
+Copyright (C) 1993-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf
index a21c9f2ab7..5b34a7bab0 100644
--- a/macros/latex-dev/base/syntonly.pdf
+++ b/macros/latex-dev/base/syntonly.pdf
Binary files differ
diff --git a/macros/latex-dev/base/testpage.tex b/macros/latex-dev/base/testpage.tex
index d2b3919f93..75d81ec8d6 100644
--- a/macros/latex-dev/base/testpage.tex
+++ b/macros/latex-dev/base/testpage.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf
index a62bf4292d..a45edcc423 100644
--- a/macros/latex-dev/base/tlc2.pdf
+++ b/macros/latex-dev/base/tlc2.pdf
Binary files differ
diff --git a/macros/latex-dev/base/tulm.ins b/macros/latex-dev/base/tulm.ins
index d307956830..5192ab474a 100644
--- a/macros/latex-dev/base/tulm.ins
+++ b/macros/latex-dev/base/tulm.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 2016-2019
+%% Copyright (C) 2016-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -48,7 +48,7 @@ reports for it can be opened at https://latex-project.org/bugs.html
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 2016-2019
+Copyright (C) 2016-2020
The LaTeX3 Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf
index 6237acf9dd..eda06d2e44 100644
--- a/macros/latex-dev/base/tulm.pdf
+++ b/macros/latex-dev/base/tulm.pdf
Binary files differ
diff --git a/macros/latex-dev/base/unpack.ins b/macros/latex-dev/base/unpack.ins
index 5e6f36ca9d..cca77e20cb 100644
--- a/macros/latex-dev/base/unpack.ins
+++ b/macros/latex-dev/base/unpack.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2019
+%% Copyright (C) 1993-2020
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf
index 9056877662..6be6a0cc96 100644
--- a/macros/latex-dev/base/usrguide.pdf
+++ b/macros/latex-dev/base/usrguide.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide.tex b/macros/latex-dev/base/usrguide.tex
index 0805416837..d3fc8daff2 100644
--- a/macros/latex-dev/base/usrguide.tex
+++ b/macros/latex-dev/base/usrguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/utf8ienc.dtx b/macros/latex-dev/base/utf8ienc.dtx
index d8c41255b2..525e461a67 100644
--- a/macros/latex-dev/base/utf8ienc.dtx
+++ b/macros/latex-dev/base/utf8ienc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index 79a8aa8098..223dba41f5 100644
--- a/macros/latex-dev/base/utf8ienc.pdf
+++ b/macros/latex-dev/base/utf8ienc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf
index 773dba3d41..dff7854aa9 100644
--- a/macros/latex-dev/base/webcomp.pdf
+++ b/macros/latex-dev/base/webcomp.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf
index 5b85c9cf80..415be4a5c3 100644
--- a/macros/latex-dev/required/tools/afterpage.pdf
+++ b/macros/latex-dev/required/tools/afterpage.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf
index 1c22fd50db..19dcfe2c3e 100644
--- a/macros/latex-dev/required/tools/array.pdf
+++ b/macros/latex-dev/required/tools/array.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf
index ca74d1aa65..ac2816a7ed 100644
--- a/macros/latex-dev/required/tools/bm.pdf
+++ b/macros/latex-dev/required/tools/bm.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf
index 7400c60fde..ab4529968c 100644
--- a/macros/latex-dev/required/tools/calc.pdf
+++ b/macros/latex-dev/required/tools/calc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/changes.txt b/macros/latex-dev/required/tools/changes.txt
index fa501f839f..b99d32aa9b 100644
--- a/macros/latex-dev/required/tools/changes.txt
+++ b/macros/latex-dev/required/tools/changes.txt
@@ -5,6 +5,16 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2019-12-09 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * multicol.dtx:
+ Support up to 20 columns instead of 10; also ensure that
+ the insert boxes are not clobbered (gh/237)
+
+2019-10-15 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * multicol.dtx: Use \@maxdepth not \maxdepth (gh/190)
+
#########################
# 2019-11-10 PL 3 Release
#########################
diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf
index c2d3dfadee..64fc97daec 100644
--- a/macros/latex-dev/required/tools/dcolumn.pdf
+++ b/macros/latex-dev/required/tools/dcolumn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf
index 75cd28e31e..e9f2ed0285 100644
--- a/macros/latex-dev/required/tools/delarray.pdf
+++ b/macros/latex-dev/required/tools/delarray.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf
index e9bbf5e7cb..24df77450c 100644
--- a/macros/latex-dev/required/tools/enumerate.pdf
+++ b/macros/latex-dev/required/tools/enumerate.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf
index 2f800749cb..ba3c48bb07 100644
--- a/macros/latex-dev/required/tools/fileerr.pdf
+++ b/macros/latex-dev/required/tools/fileerr.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf
index efae6d5f87..0e040192b3 100644
--- a/macros/latex-dev/required/tools/fontsmpl.pdf
+++ b/macros/latex-dev/required/tools/fontsmpl.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf
index ae46d2bc0d..f6fcdc5364 100644
--- a/macros/latex-dev/required/tools/ftnright.pdf
+++ b/macros/latex-dev/required/tools/ftnright.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/hhline.dtx b/macros/latex-dev/required/tools/hhline.dtx
index 1da01d757b..b9234b5aa2 100644
--- a/macros/latex-dev/required/tools/hhline.dtx
+++ b/macros/latex-dev/required/tools/hhline.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2019
+% Copyright (C) 1993-2020
%
% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
@@ -25,7 +25,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{hhline}
-%<package> [2014/10/28 v2.03 Table rule package (DPC)]
+%<package> [2020/01/04 v2.04 Table rule package (DPC)]
%
%<*driver>
\documentclass{ltxdoc}
@@ -55,6 +55,8 @@
% {Update for LaTeX2e.}
% \changes{v2.03}{1994/05/23}
% {New style warning.}
+% \changes{v2.04}{2020/01/04}
+% {Ignore spaces.}
%
%
%
@@ -301,12 +303,16 @@
% \begin{macrocode}
\ifx\@tempb b\HH@add{\rlap{\HH@box\z@\doublerulesep}}\else
% \end{macrocode}
+% "space", Gobble the space and loop again.
+% \begin{macrocode}
+ \ifx\@tempb\@sptoken\let\next\HH@spacelet\else
+% \end{macrocode}
% Otherwise ignore the token, with a warning.
% \begin{macrocode}
\PackageWarning{hhline}%
{\meaning\@tempb\space ignored in \noexpand\hhline argument%
\MessageBreak}%
- \fi\fi\fi\fi\fi\fi\fi\fi\fi
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
% \end{macrocode}
% Go around the loop again.
% \begin{macrocode}
@@ -314,6 +320,13 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\HH@spacelet}
+% Helper macro to gobble a space token and continue the loop.
+% \begin{macrocode}
+\lowercase{\def\HH@spacelet} {\futurelet\@tempb \HH@loop}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf
index 6e73e19734..655efda07c 100644
--- a/macros/latex-dev/required/tools/hhline.pdf
+++ b/macros/latex-dev/required/tools/hhline.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf
index eb3909475d..298852f781 100644
--- a/macros/latex-dev/required/tools/indentfirst.pdf
+++ b/macros/latex-dev/required/tools/indentfirst.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf
index 16b14c5eff..72dae3a60b 100644
--- a/macros/latex-dev/required/tools/layout.pdf
+++ b/macros/latex-dev/required/tools/layout.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf
index 006b13acde..2b9970d1a2 100644
--- a/macros/latex-dev/required/tools/longtable.pdf
+++ b/macros/latex-dev/required/tools/longtable.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx
index 3a9f14927a..5adc4db0da 100644
--- a/macros/latex-dev/required/tools/multicol.dtx
+++ b/macros/latex-dev/required/tools/multicol.dtx
@@ -98,7 +98,7 @@
%<driver> \ProvidesFile{multicol.drv}
% \fi
% \ProvidesFile{multicol.dtx}
- [2019/10/15 v1.8x multicolumn formatting (FMi)]
+ [2019/12/09 v1.8y multicolumn formatting (FMi)]
%
%
%%
@@ -1034,19 +1034,20 @@
I therefore use two columns instead}%
\col@number\tw@ \fi
% \end{macrocode}
-% We have only enough box registers for ten columns, so we need to
+% We have only enough box registers for twenty columns, so we need to
% check that the user hasn't asked for more.
% \changes{v1.4k}{1992/06/27}{Maximum of 5 columns (temp)}
% \changes{v1.5a}{1992/11/04}{Allow 10 columns again}
+% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)}
% \begin{macrocode}
- \ifnum\col@number>10
+ \ifnum\col@number>20
\PackageError{multicol}%
{Too many columns}%
{Current implementation doesn't
- support more than 10 columns.%
+ support more than 20 columns.%
\MessageBreak
- I therefore use 10 columns instead}%
- \col@number10 \fi
+ I therefore use 20 columns instead}%
+ \col@number20 \fi
% \end{macrocode}
% Within the environment we need a special version of the
% kernel |\@footnotetext| command since the original sets the
@@ -3451,7 +3452,25 @@
% of this setup in the documentation, sigh.) This produced a problem
% at the moment we had more than 5 columns because then officially
% allocated boxes were overwritten by the algorithm.
-% The new release now uses private box registers
+% The new release now uses private box registers.
+%
+% There was in fact a bug in the new implementation because at one
+% point \LaTeX{} started to use the the extended registers and so
+% jumped from below 255 to above omitting the boxes allocated for
+% inserts and the output page box.
+%
+% So nowadays we really have to check if we get the full sequence
+% of boxes allocated without holes (i.e., $2\times\textit{max
+% cols}+1$) and if not alter the allocation registers to start
+% allocating after 255. This is all done quite low-level by looking
+% directly at the values of the allocation counters.
+% \changes{v1.8y}{2019/12/09}{Allow for 20 columns (gh/237)}
+% \begin{macrocode}
+\ifnum\numexpr \count20-\count14-1<41 % = 2 * 20 + 1
+ \count14=\@cclv
+\fi
+% \end{macrocode}
+%
% \begin{macrocode}
\newbox\mult@rightbox
\newbox\mult@grightbox
@@ -3465,6 +3484,16 @@
\newbox\@tempa\newbox\@tempa
\newbox\@tempa\newbox\@tempa
\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
\newbox\@tempa
\let\@tempa\relax
% \end{macrocode}
diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf
index 2b8c98fa83..91f6d12b14 100644
--- a/macros/latex-dev/required/tools/multicol.pdf
+++ b/macros/latex-dev/required/tools/multicol.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf
index f9f39493b6..a0f45cc61b 100644
--- a/macros/latex-dev/required/tools/rawfonts.pdf
+++ b/macros/latex-dev/required/tools/rawfonts.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf
index d678bf4c53..cfe2bbf739 100644
--- a/macros/latex-dev/required/tools/shellesc.pdf
+++ b/macros/latex-dev/required/tools/shellesc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf
index 86846be266..8eec87b9ae 100644
--- a/macros/latex-dev/required/tools/showkeys.pdf
+++ b/macros/latex-dev/required/tools/showkeys.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf
index 8c452a9872..d4cad493d0 100644
--- a/macros/latex-dev/required/tools/somedefs.pdf
+++ b/macros/latex-dev/required/tools/somedefs.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf
index a78cb2a0bf..1e7a707f6a 100644
--- a/macros/latex-dev/required/tools/tabularx.pdf
+++ b/macros/latex-dev/required/tools/tabularx.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf
index 9133236754..3544b73971 100644
--- a/macros/latex-dev/required/tools/theorem.pdf
+++ b/macros/latex-dev/required/tools/theorem.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/tools-overview.pdf b/macros/latex-dev/required/tools/tools-overview.pdf
index 09d96549b2..82aa1e1ec2 100644
--- a/macros/latex-dev/required/tools/tools-overview.pdf
+++ b/macros/latex-dev/required/tools/tools-overview.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf
index d25d5c34e3..96fbbab805 100644
--- a/macros/latex-dev/required/tools/trace.pdf
+++ b/macros/latex-dev/required/tools/trace.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf
index 138645c12a..5972e65a8a 100644
--- a/macros/latex-dev/required/tools/varioref.pdf
+++ b/macros/latex-dev/required/tools/varioref.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf
index 39e9200cfa..417ba04bbc 100644
--- a/macros/latex-dev/required/tools/verbatim.pdf
+++ b/macros/latex-dev/required/tools/verbatim.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf
index 760fc5e04b..09335836af 100644
--- a/macros/latex-dev/required/tools/xr.pdf
+++ b/macros/latex-dev/required/tools/xr.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf
index 7281d6b21a..51f99611fa 100644
--- a/macros/latex-dev/required/tools/xspace.pdf
+++ b/macros/latex-dev/required/tools/xspace.pdf
Binary files differ
diff --git a/macros/latex/contrib/apa6/README b/macros/latex/contrib/apa6/README
index 816a267391..c45a7bcc56 100644
--- a/macros/latex/contrib/apa6/README
+++ b/macros/latex/contrib/apa6/README
@@ -3,7 +3,7 @@
apa6 - A LaTeX class for formatting documents in compliance with the
American Psychological Association's Publication Manual, 6th edition
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/apa6.dtx b/macros/latex/contrib/apa6/apa6.dtx
index 9089571f67..647e6410a9 100644
--- a/macros/latex/contrib/apa6/apa6.dtx
+++ b/macros/latex/contrib/apa6/apa6.dtx
@@ -4,11 +4,11 @@
% %
% CHANGE THESE VALUES WITH EACH NEW RELEASE: %
% %
-%<class>\ProvidesClass{apa6}[2018/09/01 v2.33 APA formatting (6th edition)]
+%<class>\ProvidesClass{apa6}[2020/01/13 v2.34 APA formatting (6th edition)]
% %
%<*internal> %
-\def\apaSixVersionDate{2018/09/01}
-\def\apaSixVersionNumber{2.33}
+\def\apaSixVersionDate{2020/01/13}
+\def\apaSixVersionNumber{2.34}
% %
% %
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -20,7 +20,7 @@
apa6 - A LaTeX class for formatting documents in compliance with the
American Psychological Association's Publication Manual, 6th edition
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -64,7 +64,7 @@ details.
apa6 - A LaTeX class for formatting documents in compliance with the
American Psychological Association's Publication Manual, 6th edition
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -84,7 +84,7 @@ by, the American Psychological Association.
\endpreamble
\postamble
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -211,7 +211,7 @@ and the derived files apa6.ins,
% \thanks{This file describes version ^^A
% \apaSixVersionNumber, last revised \apaSixVersionDate.}^^A
% }
-% \author{Brian D. Beitzel\thanks{E-mail: brian@beitzel.com}}
+% \author{Brian D.\ Beitzel\thanks{E-mail: brian@beitzel.com}}
% \date{Released \apaSixVersionDate}
%
% \maketitle
@@ -315,6 +315,12 @@ and the derived files apa6.ins,
% \changes{v2.33}{2018/09/01}{Eliminated extra blank page before
% the References page under some circumstances}
%
+% \changes{v2.34}{2020/01/13}{Provided the full title as the short
+% title if the full title is 50 or fewer characters}
+%
+% \changes{v2.34}{2020/01/13}{Changed biblatex loading to freeze to
+% APA 6th Edition compatibility}
+%
% \begin{abstract}
% The \textit{Publication Manual} of the American Psychological
% Association is widely used in the social sciences. The most
@@ -792,9 +798,11 @@ and the derived files apa6.ins,
% Biblatex is the most APA-compliant bibiliography package. The
% \DescribeMacro{biblatex}|biblatex| option directs \textsf{apa6} to
% load the \textsf{biblatex} package with the following options:
-% style=apa,sortcites=true,sorting=nyt; however, the
+% style=apa6,sortcites=true,sorting=nyt; however, the
% |\DeclareLanguageMapping| and |\addbibresource| commands will need
-% to be specified by the user within the document preamble. In the
+% to be specified by the user within the document preamble. Please
+% note that the \textsf{biblatex-apa6} package must be installed (but
+% not explicitly loaded) for 6th Edition compatibility. In the
% absence of bibliographic options, \textsf{apa6} will mask references
% using \textsf{biblatex} commands if the |mask| option is specified.
% In other words, the only reason to use the |biblatex| option is to
@@ -914,8 +922,11 @@ and the derived files apa6.ins,
% |apacite| or |natbib| option has been specified
% \item \textsf{biblatex}: bibliographic package; used only if the
% |biblatex| option has been specified
+% \item \textsf{biblatex-apa6}: bibliographic package; this package
+% must must be installed (but not explicitly loaded) for 6th Edition
+% compatibility
% \item \textsf{booktabs}: formats tables that are much more
-% attractive than the standard \LaTeX\ tables.
+% attractive than the standard \LaTeX\ tables
% \item \textsf{caption}: formats table and figure captions
% \item \textsf{draftwatermark}: includes a ``DRAFT'' watermark; used
% only if the |draftfirst| or |draftall| options are specified
@@ -938,14 +949,14 @@ and the derived files apa6.ins,
% loads the \textsf{array} package.
% \item \textsf{lmodern}: needed for proper default text size for
% draft watermark, so used on all documents; may be suppressed from
-% loading with option |nolmodern|.
+% loading with option |nolmodern|
% \item \textsf{substr}: counts masked references; used only if the
% |mask| option is specified
% \item \textsf{threeparttable}: produces nicely formatted table notes
% that comply with APA style. See |longsample.tex| (in the
% ``samples'' subfolder of the \textsf{apa6} installation;
% specifically, Appendix B in that document) for how to set up a
-% table with notes.
+% table with notes
% \item \textsf{times}: for math definitions
% \end{itemize}
%
@@ -967,13 +978,13 @@ and the derived files apa6.ins,
% \usepackage[american]{babel}
%
% \usepackage{csquotes}
-% \usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+% \usepackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
% \DeclareLanguageMapping{american}{american-apa}
% \addbibresource{bibliography.bib}
%
% \title{Sample APA-Style Document Using the \textsf{apa6} Package}
%
-% \author{Brian D. Beitzel}
+% \author{Brian D.\ Beitzel}
% \affiliation{SUNY Oneonta}
%
% \leftheader{Beitzel}
@@ -1281,7 +1292,7 @@ and the derived files apa6.ins,
\ClassInfo{apa6}{No bibliography package was specified; defaulting to (but not loading) Biblatex}
}{%
\def\def@biblatex{\@biblatexmode}% the selected bibliography package is Biblatex
- \RequirePackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+ \RequirePackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\@ifundefined{def@man}{%
\defbibheading{bibliography}{\section*{\normalfont\refname}}%
}{%
@@ -1331,6 +1342,9 @@ and the derived files apa6.ins,
% {\ClassInfo{apa6}{Using BibTeX with apacite for citations and references}}%
% {\ClassInfo{apa6}{apacite not loaded -- User may load BibLaTeX}}
+% provide compatibility for authors who wish to use the \and command
+% in author lists
+\renewcommand\and{\vspace{0.25in}\\}
%==== Conditional compilation macros depending on mode ====
@@ -1979,13 +1993,17 @@ and the derived files apa6.ins,
\def\copnum#1{\def\@copnum{#1}}
\def\@error@toomanyauthors{\ClassWarningNoLine{apa6}{More authors than affiliations defined}}
\def\@error@toomanyaffils{\ClassWarningNoLine{apa6}{More affiliations than authors defined}}
+% \RequirePackage{xstring} %% need this if inserting default shorttitle (three lines commented out below)
\def\check@author{%
\@ifundefined{@author}{%
\ClassWarningNoLine{apa6}{Author not defined}\def\@author{Author}}{}
\@ifundefined{@title}{%
\ClassWarningNoLine{apa6}{Title not defined}\def\@title{Title}}{}
\@ifundefined{@shorttitle}{%
- \ClassWarningNoLine{apa6}{Short title not defined}\def\@shorttitle{INSERT SHORTTITLE COMMAND IN PREAMBLE}}{}
+ \ClassWarningNoLine{apa6}{Short title not defined}\def\@shorttitle{INSERT SHORTTITLE COMMAND IN PREAMBLE}}{}
+% \ClassWarningNoLine{apa6}{Short title not defined}%
+% \StrLen{\@title}[\titleLen]\def\@shorttitle{%
+% \ifnum\titleLen 50INSERT SHORTTITLE COMMAND IN PREAMBLE\else\@title\fi}}{}
\@ifundefined{@affil}{%
\ClassWarningNoLine{apa6}{Affiliation not defined}\def\@affil{Affiliation}}{}
\@ifundefined{@abstract}{%
@@ -3528,13 +3546,13 @@ and the derived files apa6.ins,
\usepackage[american]{babel}
\usepackage{csquotes}
-\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+\usepackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{bibliography.bib}
\title{Sample APA-Style Document Using the \textsf{apa6} Package}
-\author{Brian D. Beitzel}
+\author{Brian D.\ Beitzel}
\affiliation{SUNY Oneonta}
\leftheader{Beitzel}
@@ -3641,14 +3659,14 @@ skill in interpreting the results for the masses.
\usepackage[american]{babel}
\usepackage{csquotes}
-\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+\usepackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{bibliography.bib}
\title{Sample APA-Style Document Using the \textsf{apa6} Package}
\shorttitle{Sample Document}
-\author{Brian D. Beitzel}
+\author{Brian D.\ Beitzel}
\affiliation{SUNY Oneonta}
\leftheader{Beitzel}
@@ -3657,11 +3675,11 @@ skill in interpreting the results for the masses.
\keywords{APA style, demonstration}
-\authornote{Brian D. Beitzel, Department of Educational Psychology,
+\authornote{Brian D.\ Beitzel, Department of Educational Psychology,
Counseling and Special Education, SUNY Oneonta.
Correspondence concerning this article should be addressed to Brian
- D. Beitzel, Department of Educational Psychology, Counseling and
+ D.\ Beitzel, Department of Educational Psychology, Counseling and
Special Education, SUNY Oneonta, 366 Fitzelle Hall, Oneonta, NY
13820. E-mail: beitzebd@oneonta.edu}
@@ -4748,4 +4766,4 @@ End Sub
%\end{macro}
%
%
-%\Finale \ No newline at end of file
+%\Finale
diff --git a/macros/latex/contrib/apa6/apa6.ins b/macros/latex/contrib/apa6/apa6.ins
index 7aad72df9d..6d5485881b 100644
--- a/macros/latex/contrib/apa6/apa6.ins
+++ b/macros/latex/contrib/apa6/apa6.ins
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -36,7 +36,7 @@
apa6 - A LaTeX class for formatting documents in compliance with the
American Psychological Association's Publication Manual, 6th edition
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -56,7 +56,7 @@ by, the American Psychological Association.
\endpreamble
\postamble
-Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License (LPPL), either
@@ -127,7 +127,7 @@ and the derived files apa6.ins,
}
\endbatchfile
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/apa6.pdf b/macros/latex/contrib/apa6/apa6.pdf
index 91bb18902d..d6d3fc7cf6 100644
--- a/macros/latex/contrib/apa6/apa6.pdf
+++ b/macros/latex/contrib/apa6/apa6.pdf
Binary files differ
diff --git a/macros/latex/contrib/apa6/config/APAamerican.txt b/macros/latex/contrib/apa6/config/APAamerican.txt
index 8d11847de7..132ff75ecf 100644
--- a/macros/latex/contrib/apa6/config/APAamerican.txt
+++ b/macros/latex/contrib/apa6/config/APAamerican.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Footnotes}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAbritish.txt b/macros/latex/contrib/apa6/config/APAbritish.txt
index 1502891d7a..b4fe54695d 100644
--- a/macros/latex/contrib/apa6/config/APAbritish.txt
+++ b/macros/latex/contrib/apa6/config/APAbritish.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Footnotes}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAczech.txt b/macros/latex/contrib/apa6/config/APAczech.txt
index 13205ef8ef..242beee55c 100644
--- a/macros/latex/contrib/apa6/config/APAczech.txt
+++ b/macros/latex/contrib/apa6/config/APAczech.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Poznámky}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAdutch.txt b/macros/latex/contrib/apa6/config/APAdutch.txt
index 451c6c43e6..d8b28e16da 100644
--- a/macros/latex/contrib/apa6/config/APAdutch.txt
+++ b/macros/latex/contrib/apa6/config/APAdutch.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Voetnoten}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAendfloat.cfg b/macros/latex/contrib/apa6/config/APAendfloat.cfg
index 8481d40641..99c937cb39 100644
--- a/macros/latex/contrib/apa6/config/APAendfloat.cfg
+++ b/macros/latex/contrib/apa6/config/APAendfloat.cfg
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -99,7 +99,7 @@
\xdef\ef@endsidetabletest{\string\\end\string\{sidewaystable\string\}}
\xdef\ef@endlongtabletest{\string\\end\string\{longtable\string\}}}%
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAenglish.txt b/macros/latex/contrib/apa6/config/APAenglish.txt
index 3e3f00c6f3..68ab6237d4 100644
--- a/macros/latex/contrib/apa6/config/APAenglish.txt
+++ b/macros/latex/contrib/apa6/config/APAenglish.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Footnotes}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAgerman.txt b/macros/latex/contrib/apa6/config/APAgerman.txt
index 21be0c34d1..f2adf9a041 100644
--- a/macros/latex/contrib/apa6/config/APAgerman.txt
+++ b/macros/latex/contrib/apa6/config/APAgerman.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Fußnoten}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAgreek.txt b/macros/latex/contrib/apa6/config/APAgreek.txt
index 1d3164079a..665d23d965 100644
--- a/macros/latex/contrib/apa6/config/APAgreek.txt
+++ b/macros/latex/contrib/apa6/config/APAgreek.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Uposhmei'wseis}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAngerman.txt b/macros/latex/contrib/apa6/config/APAngerman.txt
index dde821c1c8..3b697bb7c2 100644
--- a/macros/latex/contrib/apa6/config/APAngerman.txt
+++ b/macros/latex/contrib/apa6/config/APAngerman.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Fußnoten}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/config/APAturkish.txt b/macros/latex/contrib/apa6/config/APAturkish.txt
index 49a3aeadcf..bd1674d9c1 100644
--- a/macros/latex/contrib/apa6/config/APAturkish.txt
+++ b/macros/latex/contrib/apa6/config/APAturkish.txt
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -35,7 +35,7 @@
\renewcommand{\notesname}{Dipnotlar}% Footnotes
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas b/macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
index 359c34ff79..239c8976a1 100644
--- a/macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
+++ b/macros/latex/contrib/apa6/pseudoTeX/TeX2WordForapa6.bas
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -360,7 +360,7 @@ Sub FormatAndMoveTex2WordFigures()
End Sub
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/pseudoTeX/apa6.ptex b/macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
index a7363d1dae..a98b14e6f2 100644
--- a/macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
+++ b/macros/latex/contrib/apa6/pseudoTeX/apa6.ptex
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -375,7 +375,7 @@
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/samples/bibliography.bib b/macros/latex/contrib/apa6/samples/bibliography.bib
index d65b959273..fe16588c9a 100644
--- a/macros/latex/contrib/apa6/samples/bibliography.bib
+++ b/macros/latex/contrib/apa6/samples/bibliography.bib
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -190,7 +190,7 @@ the design of multimedia instruction},
}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/samples/longsample.tex b/macros/latex/contrib/apa6/samples/longsample.tex
index a14ca85bfa..38d00b8546 100644
--- a/macros/latex/contrib/apa6/samples/longsample.tex
+++ b/macros/latex/contrib/apa6/samples/longsample.tex
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -34,14 +34,14 @@
\usepackage[american]{babel}
\usepackage{csquotes}
-\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+\usepackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{bibliography.bib}
\title{Sample APA-Style Document Using the \textsf{apa6} Package}
\shorttitle{Sample Document}
-\author{Brian D. Beitzel}
+\author{Brian D.\ Beitzel}
\affiliation{SUNY Oneonta}
\leftheader{Beitzel}
@@ -50,11 +50,11 @@
\keywords{APA style, demonstration}
-\authornote{Brian D. Beitzel, Department of Educational Psychology,
+\authornote{Brian D.\ Beitzel, Department of Educational Psychology,
Counseling and Special Education, SUNY Oneonta.
Correspondence concerning this article should be addressed to Brian
- D. Beitzel, Department of Educational Psychology, Counseling and
+ D.\ Beitzel, Department of Educational Psychology, Counseling and
Special Education, SUNY Oneonta, 366 Fitzelle Hall, Oneonta, NY
13820. E-mail: beitzebd@oneonta.edu}
@@ -185,7 +185,7 @@ The detailed results are shown in Table~\ref{tab:DeckedTable}. \lipsum[22]
\end{document}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/apa6/samples/shortsample.tex b/macros/latex/contrib/apa6/samples/shortsample.tex
index 739ed5c4f7..8c21c1004c 100644
--- a/macros/latex/contrib/apa6/samples/shortsample.tex
+++ b/macros/latex/contrib/apa6/samples/shortsample.tex
@@ -10,7 +10,7 @@
%% apa6 - A LaTeX class for formatting documents in compliance with the
%% American Psychological Association's Publication Manual, 6th edition
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
@@ -32,13 +32,13 @@
\usepackage[american]{babel}
\usepackage{csquotes}
-\usepackage[style=apa,sortcites=true,sorting=nyt,backend=biber]{biblatex}
+\usepackage[style=apa6,sortcites=true,sorting=nyt,backend=biber]{biblatex}
\DeclareLanguageMapping{american}{american-apa}
\addbibresource{bibliography.bib}
\title{Sample APA-Style Document Using the \textsf{apa6} Package}
-\author{Brian D. Beitzel}
+\author{Brian D.\ Beitzel}
\affiliation{SUNY Oneonta}
\leftheader{Beitzel}
@@ -132,7 +132,7 @@ skill in interpreting the results for the masses.
\end{document}
%%
-%% Copyright (C) 2011-2017 by Brian D. Beitzel <brian at beitzel.com>
+%% Copyright (C) 2011-2020 by Brian D. Beitzel <brian at beitzel.com>
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License (LPPL), either
diff --git a/macros/latex/contrib/ascmac/LICENSE b/macros/latex/contrib/ascmac/LICENSE
index c052ebeb9c..cd23b4d446 100644
--- a/macros/latex/contrib/ascmac/LICENSE
+++ b/macros/latex/contrib/ascmac/LICENSE
@@ -1,5 +1,5 @@
Copyright (c) 2010 ASCII MEDIA WORKS
-Copyright (c) 2016-2018 Japanese TeX Development Community
+Copyright (c) 2016-2020 Japanese TeX Development Community
All rights reserved.
Redistribution and use in source and binary forms, with or without
@@ -12,9 +12,9 @@ modification, are permitted provided that the following conditions are met:
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
-* Neither the name of platex nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
+* Neither the name of the copyright holder nor the names of its contributors
+ may be used to endorse or promote products derived from this software
+ without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
diff --git a/macros/latex/contrib/ascmac/README.md b/macros/latex/contrib/ascmac/README.md
index 0f9f11c633..1f47a8e110 100644
--- a/macros/latex/contrib/ascmac/README.md
+++ b/macros/latex/contrib/ascmac/README.md
@@ -26,6 +26,6 @@ the 3-clause BSD license (see [LICENSE](./LICENSE)).
## Release Date
-2018-03-09
+2020-01-13
Japanese TeX Development Community
diff --git a/macros/latex/contrib/ascmac/ascmac.dtx b/macros/latex/contrib/ascmac/ascmac.dtx
index 66badfe866..95ac10d90c 100644
--- a/macros/latex/contrib/ascmac/ascmac.dtx
+++ b/macros/latex/contrib/ascmac/ascmac.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
% Copyright (c) 2010 ASCII MEDIA WORKS
-% Copyright (c) 2016-2018 Japanese TeX Development Community
+% Copyright (c) 2016-2020 Japanese TeX Development Community
%
% This file is part of ascmac community edition.
% -------------------------------------------------------------
@@ -11,6 +11,8 @@
%
% \iffalse
%
+% 2020/01/13 v2.0i
+% - Fix a bug: latex in DVI mode of pdfTeX did not work.
% 2018/03/09 v2.0h
% - Moved to new GitHub repository:
% https://github.com/texjporg/ascmac
@@ -74,7 +76,7 @@
%</driver>
%<tascmac>\ProvidesPackage{tascmac}
%<ascmac>\ProvidesPackage{ascmac}
- [2018/03/09 v2.0h
+ [2020/01/13 v2.0i
%<driver|tascmac> ascmac package (community edition)
%<ascmac> ascmac wrapper (community edition)
]
@@ -347,16 +349,18 @@
% \begin{macrocode}
%%
%% Use Type1 font for ascgrp (pdfLaTeX, LuaLaTeX)
-\ifascmac@ptex\else
- \ifx\pdfextension\@undefined
- \ifx\pdfmapline\@undefined\else
- % pdfTeX, LuaTeX (<=0.81)
+\ifx\pdfextension\@undefined
+ \ifx\pdfmapline\@undefined\else
+ % pdfTeX, LuaTeX (<=0.81)
+ \ifnum\pdfoutput>\z@\relax
\pdfmapline{+ascgrp <ascgrp.pfb}
\pdfmapline{+ascii10 <ascii10.pfb}
\pdfmapline{+ascii36 <ascii36.pfb}
\fi
- \else
- % LuaTeX (>=0.85)
+ \fi
+\else
+ % LuaTeX (>=0.85)
+ \ifnum\outputmode>\z@\relax
\pdfextension mapline{+ascgrp <ascgrp.pfb}
\pdfextension mapline{+ascii10 <ascii10.pfb}
\pdfextension mapline{+ascii36 <ascii36.pfb}
diff --git a/macros/latex/contrib/ascmac/ascmac.ins b/macros/latex/contrib/ascmac/ascmac.ins
index 413b1eec2e..47b17c9cdb 100644
--- a/macros/latex/contrib/ascmac/ascmac.ins
+++ b/macros/latex/contrib/ascmac/ascmac.ins
@@ -8,7 +8,7 @@
\preamble
Copyright (c) 2010 ASCII MEDIA WORKS
-Copyright (c) 2016-2018 Japanese TeX Development Community
+Copyright (c) 2016-2020 Japanese TeX Development Community
This file is part of ascmac community edition.
-------------------------------------------------------------
diff --git a/macros/latex/contrib/ascmac/ascmac.pdf b/macros/latex/contrib/ascmac/ascmac.pdf
index 353dbb2e30..04a5b02e59 100644
--- a/macros/latex/contrib/ascmac/ascmac.pdf
+++ b/macros/latex/contrib/ascmac/ascmac.pdf
Binary files differ
diff --git a/macros/latex/contrib/fancyvrb/Changes b/macros/latex/contrib/fancyvrb/Changes
index 53b4516552..c59dc316ec 100644
--- a/macros/latex/contrib/fancyvrb/Changes
+++ b/macros/latex/contrib/fancyvrb/Changes
@@ -1,4 +1,5 @@
--- fancyvrb.sty
+3.5 2020/01/13 - use \verbvisiblespace instead of \textvisiblespace (hv)
3.4 2019/11/09 - use catcode change for space if \textvisiblespace doesn't exist (hv)
3.3 2019/10/22 - use \textvisiblespace for showspaces (hv)
3.2a 2019/01/15 - added missing style files (hv)
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
index b0ef26beab..7a929f1147 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
index 6d2d5e71ce..e28dc41408 100644
--- a/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
+++ b/macros/latex/contrib/fancyvrb/doc/fancyvrb-doc.tex
@@ -1,9 +1,9 @@
\documentclass{article}
%\usepackage[T1]{fontenc}
%\usepackage[charter]{mathdesign}
-\usepackage{libertinus}
+\usepackage{libertinus-otf}
%\usepackage[scaled=0.84]{beramono}
-\setmonofont[Scale=MatchLowercase,FakeStretch=0.9]{AnonymousPro}
+\setmonofont[Scale=MatchLowercase,FakeStretch=0.9]{AnonymousPro-Regular.ttf}
\newif\ifChangeBar \ChangeBarfalse
\usepackage{fancyvrb}
@@ -63,7 +63,7 @@
{\footnotesize and}\\[-2mm]
{\footnotesize Herbert Voß\ (FU Berlin -- DE)}
}
-\date{Version 3.3\\ \today}
+\date{Version 3.5\\ \today}
\fvset{frame=single,xrightmargin=0cm,numbers=left,numbersep=3pt,commentchar=Z}
@@ -90,6 +90,7 @@ Mikhail Kolodin, %\url{myke@morrigan.spb.su},
Andreas Matthias,
Frank Mittelbach,
Rolf Niepraschk, %\url{Rolf.Niepraschk@gmx.de},
+Will Robertson,
Ulrich M. Schwarz,
Thomas Siegel, % \url{siegel@aix520.informatik.uni-leipzig.de},
Clemens Steinke,
@@ -728,16 +729,16 @@ bit klunky. Initially you must define the strings with
(\emph{Default: false} \Dash spaces not shown).
\end{optlist}
-\begin{SideBySideExample}
- \begin{Verbatim}[showspaces=true]
+\begin{SideBySideExample}[gobble=0]
+\begin{Verbatim}[showspaces=true]
Verbatim line.
- \end{Verbatim}
+\end{Verbatim}
\end{SideBySideExample}
In practice, all verbatim environments have a~\texttt{*} variant, which
sets \texttt{showspaces=true}:
-\begin{SideBySideExample}
+\begin{SideBySideExample}[gobble=0]
\begin{Verbatim*}
Verbatim line.
\end{Verbatim*}
diff --git a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
index 5026b819e7..8eb3564af7 100644
--- a/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
+++ b/macros/latex/contrib/fancyvrb/latex/fancyvrb.sty
@@ -13,10 +13,10 @@
%% verbatim environments and commands and extensive documentation.
%%
\NeedsTeXFormat{LaTeX2e}
-\def\fileversion{3.4}
-\def\filedate{2019/11/09}
-\ProvidesPackage{fancyvrb}[\filedate]
-\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)}
+\def\fileversion{3.5}
+\def\filedate{2020/01/13}
+\ProvidesPackage{fancyvrb}[2020/01/13 v3.5 verbatim text (tvz,hv)]
+%\message{Style option: `fancyvrb' v\fileversion \space <\filedate> (tvz)}
\csname fancyvrb@loaded\endcsname
\let\fancyvrb@loaded\endinput
%\ProcessOptions
@@ -530,9 +530,19 @@
\define@booleankey{FV}{showspaces}%
{\def\FV@Space{{\FancyVerbSpace}}}%
{\def\FV@Space{\ }}
-\@ifundefined{textvisiblespace}%
+%
+% new definition for \verbvisiblespace 2020-01-13
+\@ifundefined{verbvisiblespace}%
+ {%
+ \@ifundefined{textvisiblespace}%
{\begingroup\catcode`\ =12 \gdef\FancyVerbSpace{\tt }\endgroup}
- {\let\FancyVerbSpace\textvisiblespace}
+ {\def\FancyVerbSpace{\textvisiblespace}}
+ }%
+ {\def\FancyVerbSpace{\verbvisiblespace}}
+%\@ifundefined{textvisiblespace}%
+% {\begingroup\catcode`\ =12 \gdef\FancyVerbSpace{\tt }\endgroup}
+% {\let\FancyVerbSpace\textvisiblespace}
+%
\fvset{showspaces=false}
\def\FV@Tab{\hbox to\FancyVerbTabSize\fontdimen2\font{\hss\FV@TabChar}}
\define@key{FV}{tabsize}{%
diff --git a/macros/latex/contrib/hep-paper/README.md b/macros/latex/contrib/hep-paper/README.md
new file mode 100644
index 0000000000..9479966148
--- /dev/null
+++ b/macros/latex/contrib/hep-paper/README.md
@@ -0,0 +1,21 @@
+# README for the hep-paper package
+
+A LaTeX package for publications in High Energy Physics
+
+## Introduction
+
+The hep-paper package aims to provide a single style file containing most configurations and macros necessary to write appealing publications in High Energy Physics.
+Instead of reinventing the wheel by introducing newly created macros hep-paper preferably loads third party packages as long as they are light weight enough.
+For usual publications it is enough to load additionally to the article class without optional arguments only the hep-paper package.
+
+ \documentclass{article}
+ \usepackage{hep-paper}
+
+## Author
+
+Jan Hajer
+
+## License
+
+This file may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3c of this license or (at your option) any later version.
+The latest version of this license is in http://www.latex-project.org/lppl.txt and version 1.3c or later is part of all distributions of LaTeX version 2005/12/01 or later.
diff --git a/macros/latex/contrib/hep-paper/bibliography.bib b/macros/latex/contrib/hep-paper/bibliography.bib
new file mode 100644
index 0000000000..2548f3b367
--- /dev/null
+++ b/macros/latex/contrib/hep-paper/bibliography.bib
@@ -0,0 +1,316 @@
+@software{hep-paper,
+ author = "Jan Hajer",
+ title = "hep-paper,
+ year = 2020,
+ doi = "10.5281/zenodo.3606437",
+ eprinttype = "ctan",
+ eprint = "hep-paper",
+}
+
+@online{cleveref,
+title = "cleveref",
+author = "Toby Cubitt",
+url = "http://mirrors.ctan.org/macros/latex/contrib/cleveref/cleveref.pdf",
+eprinttype = "ctan",
+eprint = "cleveref",
+}
+
+@online{foreign,
+title = "foreign",
+author = "Philip G. Ratcliffe",
+url = "http://mirrors.ctan.org/macros/latex/contrib/foreign/foreign.pdf",
+eprinttype = "ctan",
+eprint = "foreign",
+}
+
+@online{geometry,
+title = "geometry",
+author = "David Carlisle and Hideo Umeki",
+url = "http://mirrors.ctan.org/macros/latex/contrib/geometry/geometry.pdf",
+eprinttype = "ctan",
+eprint = "geometry",
+}
+
+@online{a4wide,
+title = "a4wide",
+author = "Alexander Holt and Jean-François Lamy",
+url = "http://mirrors.ctan.org/macros/latex/contrib/a4wide/a4wide.pdf",
+eprinttype = "ctan",
+eprint = "a4wide",
+}
+
+@online{microtype,
+title = "microtype",
+author = "Robert Schlicht",
+url = "http://mirrors.ctan.org/macros/latex/contrib/microtype/microtype.pdf",
+eprinttype = "ctan",
+eprint = "microtype",
+}
+
+@online{authblk,
+title = "authblk",
+author = "Patrick W. Daly",
+url = "http://mirrors.ctan.org/macros/latex/contrib/authblk/authblk.pdf",
+eprinttype = "ctan",
+eprint = "authblk",
+}
+
+@online{bm,
+title = "bm",
+author = "David Carlisle and Frank Mittelbach",
+url = "http://mirrors.ctan.org/macros/latex/required/tools/bm.pdf",
+eprinttype = "ctan",
+eprint = "bm",
+}
+
+@online{empheq,
+title = "empheq",
+author = "Lars Madsen and Morten Høgholm and Will Robertson and Joseph Wright",
+url = "http://mirrors.ctan.org/macros/latex/contrib/mathtools/empheq.pdf",
+eprinttype = "ctan",
+eprint = "empheq",
+}
+
+@online{mathtools,
+title = "mathtools",
+author = "Lars Madsen and Morten Høgholm and Will Robertson and Joseph Wright",
+url = "http://mirrors.ctan.org/macros/latex/contrib/mathtools/mathtools.pdf",
+eprinttype = "ctan",
+eprint = "mathtools",
+}
+
+@online{amsmath,
+title = "amsmath",
+author = "LaTeX",
+collaboration = "LaTeX",
+url = "http://mirrors.ctan.org/macros/latex/required/amsmath/amsldoc.pdf",
+eprinttype = "ctan",
+eprint = "amsmath",
+}
+
+@online{amsfonts,
+title = "amsfonts",
+author = "Michael Downes and David M. Jones and Frank Mittelbach and Rainer Schöpf",
+url = "http://mirrors.ctan.org/fonts/amsfonts/doc/amsfndoc.pdf",
+eprinttype = "ctan",
+eprint = "amsfonts",
+}
+
+@online{amssymb,
+title = "amssymb",
+author = "Michael Downes and David M. Jones and Frank Mittelbach and Rainer Schöpf",
+url = "http://mirrors.ctan.org/fonts/amsfonts/doc/amsfndoc.pdf",
+eprinttype = "ctan",
+eprint = "amsfonts",
+}
+
+@online{slashed,
+title = "slashed",
+author = "David Carlisle",
+eprinttype = "ctan",
+eprint = "slashed",
+}
+
+@online{physics,
+title = "physics",
+author = "Sergio C. de la Barrera",
+url = "http://mirrors.ctan.org/macros/latex/contrib/physics/physics.pdf",
+eprinttype = "ctan",
+eprint = "physics",
+}
+
+@online{units,
+title = "units",
+author = "Axel Reichert",
+url = "http://mirrors.ctan.org/macros/latex/contrib/units/units.pdf",
+eprinttype = "ctan",
+eprint = "units",
+}
+
+@online{subcaption,
+title = "subcaption",
+author = "Axel Sommerfeldt",
+url = "http://mirrors.ctan.org/macros/latex/contrib/caption/subcaption.pdf",
+eprinttype = "ctan",
+eprint = "subcaption",
+}
+
+@online{biblatex,
+title = "biblatex",
+author = "Philipp Lehman and Joseph Wright and Audrey Boruvka and Philip Kime",
+url = "http://mirrors.ctan.org/macros/latex/contrib/biblatex/doc/biblatex.pdf",
+eprinttype = "ctan",
+eprint = "biblatex",
+}
+
+@online{hyperref,
+title = "hyperref",
+author = "Sebastian Rahtz and Heiko Oberdiek",
+url = "http://mirrors.ctan.org/macros/latex/contrib/hyperref/doc/manual.pdf",
+eprinttype = "ctan",
+eprint = "hyperref",
+}
+
+@online{graphicx,
+title = "graphicx",
+author = "David Carlisle and Sebastian Rahtz",
+url = "http://mirrors.ctan.org/macros/latex/required/graphics/grfguide.pdf",
+eprinttype = "ctan",
+eprint = "graphicx",
+}
+
+@online{booktabs,
+title = "booktabs",
+author = "Danie Els and Simon Fear",
+url = "http://mirrors.ctan.org/macros/latex/contrib/booktabs/booktabs.pdf",
+eprinttype = "ctan",
+eprint = "booktabs",
+}
+
+@online{multirow,
+title = "multirow",
+author = "Piet van Oostrum and Jerry Leichter",
+url = "http://mirrors.ctan.org/macros/latex/contrib/multirow/multirow.pdf",
+eprinttype = "ctan",
+eprint = "multirow",
+}
+
+@online{fixmath,
+title = "fixmath",
+author = "Walter Schmidt",
+url = "http://mirrors.ctan.org/macros/latex/contrib/was/fixmath.pdf",
+eprinttype = "ctan",
+eprint = "fixmath",
+}
+
+@online{alphabeta,
+title = "alphabeta",
+author = "Günter Milde",
+url = "http://mirrors.ctan.org/language/greek/greek-fontenc/alphabeta-doc.pdf",
+eprinttype = "ctan",
+eprint = "greek-fontenc",
+}
+
+@online{arxiv-collector,
+title = "arxiv-collector",
+author = "Dougal Sutherland",
+eprinttype = "github",
+eprintclass = "dougalsutherland",
+eprint = "arxiv-collector",
+}
+
+@online{biber,
+title = "biber",
+author = "François Charette and Philip Kime",
+eprinttype = "github",
+eprintclass = "plk",
+eprint = "biber",
+url = "https://sourceforge.net/projects/biblatex-biber",
+}
+
+@online{lmodern,
+title = "lmodern",
+author = "B. Jackowski and J.M. Nowacki",
+url = "https://www.ctan.org/tex-archive/fonts/lm",
+eprinttype = "ctan",
+eprint = "lm",
+}
+
+@online{ifluatex,
+title = "ifluatex",
+collaboration = "LaTeX",
+author = "Heiko Oberdiek",
+url = "http://mirrors.ctan.org/macros/latex/contrib/iftex/README.md",
+eprinttype = "ctan",
+eprint = "ifluatex",
+}
+
+@online{fontspec,
+title = "fontspec",
+author = "Will Robertson and Khaled Hosny",
+url = "http://mirrors.ctan.org/macros/latex/contrib/fontspec/fontspec.pdf",
+eprinttype = "ctan",
+eprint = "fontspec",
+}
+
+@online{fontenc,
+title = "fontenc",
+collaboration = "LaTeX",
+author = "LaTeX",
+eprinttype = "ctan",
+eprint = "fontenc",
+}
+
+@online{inputenc,
+title = "inputenc",
+collaboration = "LaTeX",
+author = "Frank Mittelbach and Alan Jeffrey",
+url = "http://mirrors.ctan.org/macros/latex/base/inputenc.pdf",
+eprinttype = "ctan",
+eprint = "inputenc",
+}
+
+@online{textcomp,
+title = "textcomp",
+collaboration = "LaTeX",
+author = "LaTeX",
+url = "http://mirrors.ctan.org/obsolete/fonts/psfonts/ts1/README",
+eprinttype = "ctan",
+eprint = "textcomp",
+}
+
+@online{enumitem,
+title = "enumitem",
+author = "Javier Bezos",
+url = "http://mirrors.ctan.org/macros/latex/contrib/enumitem/enumitem.pdf",
+eprinttype = "ctan",
+eprint = "enumitem",
+}
+
+@online{atbegshi,
+title = "atbegshi",
+author = "Heiko Oberdiek",
+url = "http://mirrors.ctan.org/macros/latex/contrib/atbegshi/atbegshi.pdf",
+eprinttype = "ctan",
+eprint = "atbegshi",
+}
+
+@online{picture,
+title = "picture",
+author = "Heiko Oberdiek",
+url = "http://mirrors.ctan.org/macros/latex/contrib/picture/picture.pdf",
+eprinttype = "ctan",
+eprint = "picture",
+}
+
+@online{varwidth,
+title = "varwidth",
+author = "Donald Arseneau",
+url = "http://mirrors.ctan.org/macros/latex/contrib/varwidth/varwidth-doc.pdf",
+eprinttype = "ctan",
+eprint = "varwidth",
+}
+
+@online{csquotes,
+title = "csquotes",
+author = "Philipp Lehman and Joseph Wright",
+url = "http://mirrors.ctan.org/macros/latex/contrib/csquotes/csquotes.pdf",
+eprinttype = "ctan",
+eprint = "csquotes",
+}
+
+@online{babel,
+title = "babel",
+author = "Johannes Braams and Javier Bezos and at al.",
+url = "http://mirrors.ctan.org/macros/latex/required/babel/base/babel.pdf",
+eprinttype = "ctan",
+eprint = "babel",
+}
+
+@online{polyglossia,
+title = "polyglossia",
+author = "Arthur Reutenauer and François Charette and Elie Roux and Bastien Roucariès and Jürgen Spitzmüller",
+url = "http://mirrors.ctan.org/macros/latex/contrib/polyglossia/polyglossia.pdf",
+eprinttype = "ctan",
+eprint = "polyglossia",
+}
diff --git a/macros/latex/contrib/hep-paper/hep-paper.dtx b/macros/latex/contrib/hep-paper/hep-paper.dtx
new file mode 100644
index 0000000000..880dbe4ea8
--- /dev/null
+++ b/macros/latex/contrib/hep-paper/hep-paper.dtx
@@ -0,0 +1,886 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019-2020 by Jan Hajer
+% -----------------------------------
+%
+% This file may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in:
+%
+% http://www.latex-project.org/lppl.txt
+%
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% \fi
+%
+% \iffalse
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{hep-paper}[2020/01/01 v1.1 Publications in High Energy Physics]
+%
+%<*driver>
+\documentclass{ltxdoc}
+
+\usepackage{hep-paper}
+\usepackage{parskip}
+
+\bibliography{bibliography}
+
+\DeclareFieldFormat{eprint:ctan}{%
+ CTAN\addcolon\space
+ \ifhyperref{\href{https://ctan.org/pkg/#1}{\nolinkurl{#1}}}{\nolinkurl{#1}}
+}
+\DeclareFieldAlias{eprint:CTAN}{eprint:ctan}
+
+\DeclareFieldFormat{eprint:github}{%
+ GitHub\addcolon\space
+ \ifhyperref{%
+ \href{https://github.com/\thefield{eprintclass}/#1}{\nolinkurl{\thefield{eprintclass}/#1}}}%
+ {\nolinkurl{\thefield{eprintclass}/#1}}%
+ }
+\DeclareFieldAlias{eprint:GitHub}{eprint:github}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+\begin{document}
+\DocInput{hep-paper.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{442}
+%
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% 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 \~}
+%
+% \changes{v1.0}{2019/01/01}{Initial version}
+% \changes{v1.1}{2020/01/01}{Minor tweaks}
+%
+% \GetFileInfo{hep-paper.sty}
+%
+% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ }
+% \DoNotIndex{\@ne}
+% \DoNotIndex{\advance,\begingroup,\catcode,\closein}
+% \DoNotIndex{\closeout,\day,\def,\edef,\else,\empty,\endgroup}
+%
+% \title{The |hep-paper| package\thanks{This document corresponds to \protecting{|hep-paper|}~\fileversion, % dated \filedate.}}
+% \author{Jan Hajer \email{jan.hajer@uclouvain.be}}
+% \affiliation{UCLouvain}
+% \preprint{Preprint-Number}
+% \date{\today}
+% \date{\normalsize\filedate}
+%
+% \maketitle
+%
+% \begin{abstract}
+% The |hep-paper| package aims to provide a single style file containing most configurations and macros necessary to write appealing publications in High Energy Physics.
+% Instead of reinventing the wheel by introducing newly created macros |hep-paper| preferably loads third party packages as long as they are light weight enough.
+% \end{abstract}
+%
+% \clearpage\tableofcontents\clearpage
+%
+% \newgeometry{scale=0.76,vmarginratio={3:4}, left=10em, marginparwidth=4.6cm, marginparsep=3mm}
+%
+% \section{Introduction}
+%
+% For usual publications it is enough to load additionally to the |article| class without optional arguments only the |hep-paper| package.
+%
+% | \documentclass{article}|\\
+% | \usepackage{hep-paper}|
+%
+% The most notable changes after loading the |hep-paper| package is the change of some LaTeX defaults.
+% The paper and font sizes are set to A4 and \unit[11]{pt}, respectively.
+% Additionally, the paper geometry is set to the values known from the (depreciated) |a4wide| package \cite{a4wide} using the |geometry| package \cite{geometry}.
+% \footnote{Starting from this page the text of this document is additionally shifted to the right in order to facilitate a large left margin required by the |ltxdoc| package.
+% This combination leads to a less than optimal page layout.}
+% The font is changed to |lmodern| \cite{lmodern} with |microtype| \cite{microtype} optimizations.
+% Hyperlinks of the |hyperref| package \cite{hyperref} are activated and hidden.
+% Hyphenation is provided by the |babel| \cite{babel} and |polyglossia| \cite{polyglossia} packages in the case of normal TeX and LuaTeX repectively.
+% Finally, quotation commands are provided by the recommended |csquotes| package \cite{csquotes}.
+% \DescribeMacro{\MakeOuterQuote}
+% The last package provides the convenient macro |\MakeOuterQuote{"}| allowing to simply use |"| instead of the pair |``| and |''|.
+%
+% \section{Macros and environments}
+%
+% \subsection{Title page}
+%
+% The macros of this section are supposed to be used within the preamble.
+% \DescribeMacro{\author}
+% \DescribeMacro{\affiliation}
+% \DescribeMacro{\email}
+% In order to facilitate multiple authors with different affiliations the |authblk| package \cite{authblk} is loaded.
+% The following lines add \eg two authors with different affiliations
+%
+% | \author[1]{Author one \email{Email one}}|\\
+% | \affiliation{Affiliation one}|\\
+% | \author[2]{Author two \email{Email two}}|\\
+% | \affiliation[1,2]{Affiliation two}|
+%
+% \DescribeMacro{\preprint}
+% The |\preprint|\marg{text} macro places a preprint number in the upper right corner of the title page.
+% The PDF meta information is set according to the |\title|\marg{text} and |\author|\marg{text} information.
+% \DescribeEnv{abstract}
+% The |abstract| environment has been adjusted to not start with identation.
+%
+% \subsection{References and footnotes}
+%
+% \DescribeMacro{\eg}
+% \DescribeMacro{\ie}
+% The |foreign| package \cite{foreign} defines macros such as |\eg|, |\ie|, and |\cf| which are typeset as \eg, \ie, and \cf.
+
+% \DescribeMacro{\ref}
+% \DescribeMacro{\cite}
+% References and citations are adjusted to not start on a new line in order to avoid the repeated use of |~\ref|\marg{text} and |~\cite|\marg{text}.
+%
+% \DescribeMacro{\cref}
+% References are extended with the |cleveref| package \cite{cleveref}, which allows to \eg write just |\cref|\marg{figure} in order to get 'Figure 1'.
+% The |cleveref| package furthermore allows to reference multiple objects within one |\cref|\marg{text} (similar to the |\cite|\marg{text} macro).
+%
+% \DescribeMacro{\eqref}
+% The |\eqref|\marg{text} macro is also adjusted to not start on a new line and be able to reference multiple equations at once.
+%
+% \DescribeMacro{\footnote}
+% Footnotes are adjusted to swallow white space before the footnote mark and at the beginning of the footnote text.
+%
+% \subsection{Math}
+%
+% The |mathtools| \cite{mathtools} and |amssymb| \cite{amsfonts} packages are loaded.
+% They in turn load the |amsmath| \cite{amsmath} and |amsfonts| \cite{amsfonts} packages.
+% \DescribeMacro{\mathbf}
+% Bold math, including |\mathbf| is provided by the |bm| package \cite{bm}.
+% Macros switching to |bfseries| such as |\title|\marg{text} and |\section|\marg{text} are ensured to also typeset math in bold.
+% This may cause trouble if bold symbols carry an additional non-implicit meaning.
+% \DescribeMacro{\mathsfit}
+% Add an additional math italic sf font $\mathsfit A \mathsfit B \mathsfit C$ $\bm {\mathsfit A} \bm{\mathsfit B} \bm{\mathsfit C}$
+%
+% \DescribeMacro{\text}
+% The |\text|\marg{text} macro makes it possible to write text within math mode.
+% The often used |\mathrm|\marg{text} and |\rm|\marg{text} macros are \emph{not} the right tool for this purpose.
+%
+% \DescribeMacro{\nicefrac}
+% \DescribeMacro{\flatfrac}
+% The |\frac|\marg{number}\marg{number} macro is accompanied by |\nicefrac|\marg{number}\marg{number} and |\flatfrac|\marg{number}\marg{number}.
+% Providing the choices
+% \begin{align}
+% \frac12 \ ,&& \nicefrac 12 \ ,&& \flatfrac 12\ .
+% \end{align}
+% \DescribeMacro{\numberwithin}
+% For longer paper it can be useful to re-number the equation in accordance with the section |\numberwithin{equation}{section}|.
+% \DescribeMacro{\subequations}
+% In order to further reduce the size the of equation counter it can be useful to wrap |align| environments with multiple rows in a |subequations| environment.
+%
+% \subsubsection{Physics}
+%
+% Greek letters are adjusted to be italic and upright in math and text mode, respectively, using the |fixmath| \cite{fixmath} and |alphabeta| \cite{alphabeta} packages.
+% This allows differentiations like
+% \begin{align}
+% \sigma &= \unit[5]{fb} \ , & &\text{at \unit[5]{\sigma} C.L.} \ , & \mu &= \unit[5]{cm} \ , & l &= \text{\unit[5]{\mu m}} \ ,
+% \label{eq:greek}
+% \end{align}
+% and \eg to distinguish gauge $\nu$ and mass \nu\ eigenstates in models with massive light neutrinos.
+% Additionally, greek letters can now also typed directly using unicode.
+%
+% \DescribeMacro{\slashed}
+% The |\slashed|\marg{symbol} macro from the |slashed| \cite{slashed} package allows to use the Dirac slash notation.
+%
+% \DescribeMacro{\ev}
+% \DescribeMacro{\pdv}
+% \DescribeMacro{\comm}
+% \DescribeMacro{\order}
+% The |physics| package \cite{physics} provides additional macros such as
+% \begin{align}
+% &\ev{\phi} \ ,
+% &&\pdv[n]{f}{x} \ ,
+% &&\comm{A}{B} \ ,
+% &&\order{x^2} \ ,
+% &&\eval*{x}_0^\infty \ ,
+% &&\det(M)\ .
+% \end{align}
+%
+% \DescribeMacro{\overleftright}
+% A better looking over left right arrow is defined $\overleftright{\partial}$.
+% \DescribeMacro{\unit}
+% \DescribeMacro{\inv}
+% The correct spacing for units, \cf \cref{eq:greek}, is provided by the macro |\unit|\oarg{value}\marg{unit} from the |units| package \cite{units} which can also be used in text mode.
+% The macro |\inv|\oarg{power}\marg{text} allows to avoid math mode also for inverse units such as \unit[5]{\inv{fb}} typeset via |\unit[5]{\inv{fb}}|.
+%
+% \subsection{Floats}
+%
+% \DescribeEnv{figure}
+% \DescribeEnv{table}
+% Manual float placement is deactivated and automatic float placement is adjusted to place one float at the top of pages and to reduce the number of float pages.
+% The most useful float placement is usually archived by placing the float \emph{in front} of the paragraph it is referenced first.
+%
+% \begin{table}
+% \begin{panels}{.6}
+% \raggedright
+% |\begin{panels}{.6}|\\
+% |code|\\
+% |\panel{.4}|\\
+% |\begin{tabular}...\end{tabular}|\\
+% |\end{panels}|\\
+% \caption{Code for this panel environment.}
+% \label{tab:panels}
+% \panel{.4}
+% \begin{tabular}{cccc}
+% \toprule
+% \multicolumn{2}{c}{one}& \multicolumn{2}{c}{two} \\ \cmidrule(r){1-2} \cmidrule(l){3-4}
+% \multirow{2}{*}{a} & b & c & d \\
+% & b & c & d \\
+% \bottomrule
+% \end{tabular}
+% % \caption{The \protecting{|booktabs|} and \protecting{|multirow|} features.}
+% \label{tab:booktabs}
+% \end{panels}
+% \caption{Example use of the \protecting{|panels|} environment in Panel \subref{tab:panels} and the features from the \protecting{|booktabs|} and \protecting{|multirow|} packages in Panel \subref{tab:booktabs}.}
+% \label{tab:table}
+% \end{table}
+%
+% \DescribeEnv{panels}
+% \DescribeMacro{\panel}
+% The |panels| environment makes use of the |subcaption| package \cite{subcaption}.
+% It provides subfloats and takes as mandatory argument either the number of subfloats (default 2) or the width of the first subfloat as fraction of the |\linewidth|.
+% Within the |\begin{panels}|\oarg{vert}\marg{width} environment the |\panel| macro initiates a new subfloat, in case that the width of the first subfloat has been given as an optional argument to the |panels| environment the |\panel|\marg{width} macro takes the width of the next subfloat as mandatory argument.
+% The example code is presented in \cref{tab:panels}.
+%
+% \DescribeEnv{tabular}
+% The |booktabs| \cite{booktabs} and |multirow| \cite{multirow} packages are loaded enabling publication quality tabulars such as in \cref{tab:booktabs}.
+%
+% \DescribeMacro{\graphic}
+% \DescribeMacro{\graphicspath}
+% The |graphicx| package \cite{graphicx} is loaded and the |\graphic|\oarg{width}\marg{figure} macro is defined, which is a wrapper for the |\includegraphics|\marg{figure} macro and takes the figure width as fraction of the |\linewidth| as optional argument (default 1).
+% If the graphics are located in a subfolder its path can be indicated by |\graphicspath{{./|$\langle path\rangle$|/}}|.
+% \DescribeMacro{\raggedright}
+% The float environments have been adjusted to center their content.
+% The usual behaviour is reactived with |\raggedright|.
+%
+% \subsection{Bibliography}
+%
+% \DescribeMacro{\bibliography}
+% \DescribeMacro{\printbibliography}
+% For bibliography management the |biblatex| package \cite{biblatex} is loaded and extended to be able to cope with the |collaboration| and |report| fields provided by |inspire|.
+% The user has to add the line |\bibliography|\marg{mybib} to the preamble of the document and |\printbibliography| at the end of the document.
+% The bibliography is generated by |biber| \cite{biber}.
+%
+% \section{Conclusion}
+%
+% The majority of macros defined and packages loaded by this package are fairly lightweight and provide the author with the necessary tools to focus on the content instead of the layout.
+%
+% \DescribeMacro{arxiv-collector}
+% ArXiv requires the setup dependent |bbl| files instead of the original |bib| files, which causes trouble if the local LaTeX version differes from the one used by ArXiv.
+% The |arxiv-collector| python script \cite{arxiv-collector} alleviates this problem by collecting all files necessary for publication on ArXiv (including figures) .
+%
+% \StopEventually{
+% \printbibliography
+% }
+%
+% \appendix
+%
+% \section{Implementation}
+%
+% \subsection{Options}
+%
+% Redefine article options and choose sane values.
+%
+% \subsubsection{Paper size}
+%
+% Redefine the article paper sizes options without any changes.
+% \paragraph{A4 paper}
+% \begin{macrocode}
+\DeclareOption{a4paper}{%
+ \setlength\paperheight{297mm}%
+ \setlength\paperwidth{210mm}%
+}
+% \end{macrocode}
+%
+% \paragraph{A5 paper}
+%
+% \begin{macrocode}
+\DeclareOption{a5paper}{%
+ \setlength\paperheight{210mm}%
+ \setlength\paperwidth{148mm}%
+}
+% \end{macrocode}
+%
+% \paragraph{B5 paper}
+% \begin{macrocode}
+\DeclareOption{b5paper}{%
+ \setlength\paperheight{250mm}%
+ \setlength\paperwidth{176mm}%
+}
+% \end{macrocode}
+%
+% \paragraph{Letter paper}
+% \begin{macrocode}
+\DeclareOption{letterpaper}{%
+ \setlength\paperheight{11in}%
+ \setlength\paperwidth{8.5in}%
+}
+% \end{macrocode}
+%
+% \paragraph{Legal paper}
+% \begin{macrocode}
+\DeclareOption{legalpaper}{%
+ \setlength\paperheight{14in}%
+ \setlength\paperwidth{8.5in}%
+}
+% \end{macrocode}
+%
+% \paragraph{Executive paper}
+% \begin{macrocode}
+\DeclareOption{executivepaper}{%
+ \setlength\paperheight{10.5in}%
+ \setlength\paperwidth{7.25in}%
+}
+% \end{macrocode}
+% Define the landscape option
+% \begin{macrocode}
+\DeclareOption{landscape}{%
+ \setlength\@tempdima{\paperheight}%
+ \setlength\paperheight{\paperwidth}%
+ \setlength\paperwidth{\@tempdima}%
+}
+% \end{macrocode}
+
+% \subsubsection{Font size}
+%
+% Redefine the article font sizes options.
+% \begin{macrocode}
+\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
+\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
+\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
+% \end{macrocode}
+% Define the package option |placement|.
+
+% \subsubsection{Placement}
+%
+% \begin{macrocode}
+\DeclareOption{placement}{\def\@placement}
+% \end{macrocode}
+
+% \subsubsection{Execute options}
+%
+% Change the paper size to a4 and the font size to \unit[11]{pt}.
+% \begin{macrocode}
+\ExecuteOptions{a4paper,11pt}
+\ProcessOptions\relax
+% \end{macrocode}
+%
+% \subsection{Font size}
+%
+% Undefine previously defined font sizes and load the LaTeX font size file corresponding to the font size option loaded before.
+% \begin{macrocode}
+\let\small\relax
+\let\footnotesize\relax
+\let\scriptsize\relax
+\let\tiny\relax
+\let\large\relax
+\let\Large\relax
+\let\LARGE\relax
+\let\huge\relax
+\let\Huge\relax
+\input{size1\@ptsize.clo}
+% \end{macrocode}
+
+% \subsection{Geometry}
+%
+% Load the |geometry| package \cite{geometry} and adjust the text width and height to the values of the |a4wide| package \cite{a4wide}.
+% \begin{macrocode}
+\RequirePackage[hscale=.76, vscale=.8, vmarginratio=3:4, includeheadfoot]{geometry}
+% \end{macrocode}
+
+% \subsection{Text}
+%
+% Load the |ifluatex| package \cite{ifluatex} and check if |lualatex| is being used.
+% In this case load the |fontspec| package \cite{fontspec} and the default font features together with the |polyglossia| package \cite{polyglossia}.
+% In the case of traditional LaTeX load the |inputenc| \cite{inputenc}, |fontenc| \cite{fontenc}, and |textcomp| \cite{textcomp} packages, in order to set the input and output properties of the font encoding and extend the known characters.
+% Additionally, load the the |babel| package \cite{babel} for hyphenation.
+% In both cases load also the recommended |csquotes| package \cite{csquotes}.
+% \begin{macrocode}
+\RequirePackage{ifluatex}
+\ifluatex
+ \RequirePackage{fontspec}
+ \defaultfontfeatures{Ligatures=TeX}
+ \RequirePackage{polyglossia}
+ \setmainlanguage{british}
+\else
+ \RequirePackage[utf8]{inputenc}
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{textcomp}
+ \RequirePackage[british]{babel}
+\fi
+\RequirePackage{csquotes}
+% \end{macrocode}
+% Load the |lmodern| font, and the |microtype| font optimization.
+% \begin{macrocode}
+\RequirePackage{lmodern}
+\RequirePackage{microtype}
+% \end{macrocode}
+
+% \subsubsection{Text macros}
+%
+%\begin{macro}{\vs}
+% Load the |foreign| package \cite{foreign} in order to highlight abbreviations and vocabularies from foreign languages.
+% Add the missing |\vs| command.
+% \begin{macrocode}
+\RequirePackage[all,british]{foreign}
+\DeclareRobustCommand\vs{\xperiodafter{{\foreignabbrfont{vs}}}}
+% \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\no}
+% Define the macro |\no|\marg{number} for the use of \textnumero\ with appropriate spacing.
+% \begin{macrocode}
+\newcommand{\no}[1]{\textnumero~#1}
+% \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\software}\label{test}
+% Define a macro for software with optional version information |\software|\oarg{version}\marg{text}.
+% \begin{macrocode}
+\newcommand{\software}[2][\hspace{-\fontdimen2\font}]{\texttt{#2}~#1}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\sloppy}
+% Redefine |sloppy| to be less invasive \cf |\printbibliography|
+% \begin{macrocode}
+\def\sloppy{%
+ \emergencystretch 3em \hfuzz .5\p@ \vfuzz\hfuzz%
+}
+% \end{macrocode}
+% \end{macro}
+
+%\begin{macro}{\no@break@before}
+% Provide macro able to prevent line breaks.
+% \begin{macrocode}
+\newcommand\no@break@before{%
+ \relax\ifvmode\else%
+ \ifhmode%
+ \ifdim\lastskip > 0pt%
+ \relax\unskip\nobreakspace%
+ \fi%
+ \fi%
+ \fi%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \subsubsection{Lists}
+%
+% \begin{environment}{inlinelist}
+% Load the |enumitem| package \cite{enumitem} and define an inline list.
+% \begin{macrocode}
+\RequirePackage[inline]{enumitem}
+\newlist{inlinelist}{enumerate*}{1}
+\setlist*[inlinelist,1]{itemjoin={,\ }, itemjoin*={, and\ }, after=.}
+% \end{macrocode}
+% \end{environment}
+
+% \subsubsection{Footnotes}
+%
+% \begin{macro}{\footnote}
+% Ensure that no spaces appear before the footmark or at the beginning of the footnote.
+% \begin{macrocode}
+\let\@foot@note\footnote
+\renewcommand{\footnote}[1]{\unskip\@foot@note{\ignorespaces#1}}
+% \end{macrocode}
+% \end{macro}
+
+% \subsection{Math}
+%
+% Load the |mathtools| package \cite{mathtools} which loads the |amsmath| package \cite{amsmath}.
+% Additionally, load the |amssymb| package \cite{amsfonts} which provides further math symbols and also loads the |amsfont| package \cite{amsfonts}.
+% Allow pagebreaks within equations if necessary.
+% \begin{macrocode}
+\RequirePackage{mathtools}
+\RequirePackage{amssymb}
+\allowdisplaybreaks[1]
+% \end{macrocode}
+
+% \begin{macro}{\diag}
+% Provide a diag operator
+% \begin{macrocode}
+\DeclareMathOperator{\diag}{diag}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\i}
+% Provide an upright imaginary unit. This will cause trouble in languages where the letter |\i| is used.
+% \begin{macrocode}
+\AtEndOfClass{\let\i\undefined\DeclareMathOperator{\i}{i}}
+% \end{macrocode}
+% \end{macro}
+
+% \subsubsection{Greek letters}
+%
+% Load the |fixmath| package \cite{fixmath} which makes upper Greek letters in math mode italic and load the |alphabeta| package \cite{alphabeta} which allows upright italic letters in text mode.
+% \begin{macrocode}
+\RequirePackage{fixmath}
+\RequirePackage{alphabeta}
+% \end{macrocode}
+
+% \subsubsection{Physics notation}
+%
+% \begin{macro}{\slashed}
+% \begin{macro}{\units}
+% Load the |physics| package \cite{physics} which provides macros useful for publications in physics.
+% Additionally, load the |slashed| package \cite{slashed} which provides the slashed macro for Dirac notation.
+% Finally, load the |units| package \cite{units} which provides the |\units| and |\nicefrac| macros.
+% \begin{macrocode}
+\RequirePackage{physics}
+\RequirePackage{slashed}
+\RequirePackage{units}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \begin{macro}{\inv}
+% Provide a macro for the inverse, useful in combination with the unit macro in text mode.
+% \begin{macrocode}
+\newcommand{\inv}[2][1]{#2\ensuremath{^{-#1}}}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\oset}
+% \begin{macro}{\overleftright}
+% Define a new overset macro |\oset|\oarg{offsest}\marg{over}\marg{base} and use it to define a over left right arrow |\overleftright|\marg{base}.
+% \begin{macrocode}
+\newcommand{\oset}[3][-1pt]{%
+ \raisebox{1pt}{%
+ \ensuremath{
+ \mathop{#3}\limits^{\vbox to#1{\kern-2\ex@\hbox{$\scriptscriptstyle#2$}\vss}}%
+ }%
+ }%
+}
+\newcommand{\overleftright}[1]{\oset{\leftrightarrow}{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+% \subsubsection{Math fonts}
+%
+% \begin{macro}{\mathsbf}
+% Load the |bm| package \cite{bm} for superior boldmath.
+% Make math symbols bold whenever they appear in bold macros such as title or subsection.
+% \begin{macrocode}
+\RequirePackage{bm}
+\let\mathbf\bm
+\g@addto@macro\bfseries{\boldmath}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\mathsfit}
+% Define a italc sf math font.
+% \begin{macrocode}
+\DeclareMathAlphabet{\mathsfit}{T1}{\sfdefault}{\mddefault}{\sldefault}
+\SetMathAlphabet{\mathsfit}{bold}{T1}{\sfdefault}{\bfdefault}{\sldefault}
+% \end{macrocode}
+% \end{macro}
+
+% \subsection{Floats}
+%
+% Adjust the LaTeX float placement defaults
+% \begin{macrocode}
+\renewcommand{\textfraction}{0.01}
+\setcounter{topnumber}{1}
+\renewcommand{\topfraction}{.9}
+\setcounter{bottomnumber}{0}
+\renewcommand{\floatpagefraction}{.8}
+% \end{macrocode}
+
+% \begin{environment}{figure}
+% \begin{environment}{table}
+% Ignore the manual placement if the |placement| option is set.
+% \begin{macrocode}
+\ifdefined\@placement%
+ \let\@figure@\figure%
+ \let\@end@figure@\endfigure%
+ \renewenvironment{figure}[1][tbp]{%
+ \@figure@[#1]\centering%
+ }{%
+ \@end@figure@%
+ }%
+ \let\@table@\table%
+ \let\@end@table@\endtable%
+ \renewenvironment{table}[1][tbp]{%
+ \@table@[#1]\centering%
+ }{%
+ \@end@table@%
+ }%
+\else%
+ \let\@figure@\figure%
+ \let\@end@figure@\endfigure%
+ \renewenvironment{figure}[1][]{%
+ \@figure@\centering%
+ }{%
+ \@end@figure@%
+ }%
+ \let\@table@\table%
+ \let\@end@table@\endtable%
+ \renewenvironment{table}[1][]{%
+ \@table@\centering%
+ }{%
+ \@end@table@%
+ }
+\fi%
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+
+% \subsubsection{Subfloats}
+%
+% \begin{environment}{panels}
+% \begin{macro}{\panel}
+% Load the |subcaption| package \cite{subcaption} and define the |panels| environment as well as the |\panel| macro.
+% \begin{macrocode}
+\RequirePackage[subrefformat = parens]{subcaption}
+\captionsetup{font=small}
+\captionsetup[sub]{font=small}
+\newcommand{\begin@subcaption@minipage}[2][b]{%
+ \caption@withoptargs\subcaption@minipage[#1]{#2}\centering\vskip 0pt%
+}
+\newenvironment{panels}[2][b]{%
+ \ifdim#2pt>1pt%
+ \newcommand{\panel}[1][b]{%
+ \endminipage\hfill\begin@subcaption@minipage[#1]{\linewidth/#2}%
+ }%
+ \begin@subcaption@minipage[#1]{\linewidth/#2}%
+ \else%
+ \newcommand{\panel}[2][b]{%
+ \endminipage\hfill\begin@subcaption@minipage[#1]{##2\linewidth}%
+ }%
+ \begin@subcaption@minipage[#1]{#2\linewidth}%
+ \fi%
+}{%
+ \endminipage%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+
+% \subsubsection{Tables}
+%
+% \begin{environment}{tabular}
+% Enhance tables using the |booktabs| and |multirow| packages \cite{booktabs, multirow}.
+% \begin{macrocode}
+\RequirePackage{booktabs}
+\RequirePackage{multirow}
+% \end{macrocode}
+% \end{environment}
+
+% \subsubsection{Figures}
+%
+% \begin{macro}{\graphic}
+% Provide the |graphic| macro for the inclusion of figures with the |graphicx| package \cite{graphicx}.
+% \begin{macrocode}
+\RequirePackage{graphicx}
+\providecommand{\tikzsetnextfilename}[1]{}
+\newcommand{\graphic}[2][1]{%
+ \tikzsetnextfilename{#2}\centering\includegraphics[width=#1\linewidth]{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \subsection{Titlepage}
+%
+% \begin{macro}{\date}
+% Allow empty date field.
+% \begin{macrocode}
+\date{}
+% \end{macrocode}
+% \end{macro}
+
+% \subsubsection{Authors}
+%
+% \begin{macro}{\author}
+% Allow empty author field.
+% \begin{macrocode}
+\author{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\email}
+% Provide macro for the email of authors used as |\author{|$\langle name\rangle$| \email{|$\langle email\rangle$|}}|.
+% \begin{macrocode}
+\AtEndOfClass{\newcommand{\email}[1]{%
+ \unskip\thanks{\href{mailto:#1}{\texttt{#1}}}%
+}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\affiliation}
+% Enable the handling of multiple authors with different affiliations using the |authblk| package \cite{authblk}.
+% \begin{macrocode}
+\RequirePackage{authblk}
+\renewcommand\Affilfont{\footnotesize}
+\newcommand{\affiliation}[2][]{\affil[#1]{\protecting{#2}}}
+% \end{macrocode}
+% \end{macro}
+
+% \subsubsection{Preprint}
+%
+% \begin{macro}{\preprint}
+% Places a preprint number in the top right corner of the titel page.
+% This code uses the |varwidth| \cite{varwidth}, |atbegshi| \cite{atbegshi}, and |picture| \cite{picture} packages.
+% \begin{macrocode}
+\let\@preprint\relax
+\newcommand\preprint[1]{\long\gdef\@preprint{#1}}
+\RequirePackage{varwidth}
+\newcommand{\@preprint@box}{%
+ \begin{varwidth}{\textwidth}\textsc{\small\@preprint}\end{varwidth}%
+}
+\RequirePackage{atbegshi}
+\RequirePackage{picture}
+\AtBeginShipoutFirst{%
+ \put(
+ \textwidth+\oddsidemargin-\widthof{\@preprint@box},
+ -2pt-\topmargin-\heightof{\@preprint@box}
+ ){\normalfont\@preprint@box}
+}
+% \end{macrocode}
+% \end{macro}
+
+% \subsubsection{Abstract}
+%
+% \begin{environment}{abstract}
+% Adjust the |abstract| environment to not start with identation.
+% \begin{macrocode}
+\let\old@abstract\abstract
+\renewcommand\abstract{\old@abstract\noindent\ignorespaces}
+% \end{macrocode}
+% \end{environment}
+
+% \subsection{Bibliography}
+%
+% \begin{macro}{\bibliography}
+% Load the |biblatex| package \cite{biblatex} with a JHEP like bibliography style.
+% Add the collaboration and preprint information if present.
+% \begin{macrocode}
+\RequirePackage[sorting=none,style=numeric-comp,giveninits=true]{biblatex}
+\DeclareSourcemap{%
+ \maps[datatype=bibtex,overwrite=true]{%
+ \map{%
+ \step[fieldsource=Collaboration,final=true]%
+ \step[fieldset=usera,origfieldval,final=true]
+ }%
+ \map{%
+ \step[fieldsource=reportNumber,final=true]%
+ \step[fieldset=userb,origfieldval,final=true]
+ }%
+ }%
+}
+\renewbibmacro*{author}{%
+ \iffieldundef{usera}{\printnames{author}}{\textbf{\printfield{usera}}}%
+}
+\renewbibmacro*{in:}{%
+ \iffieldundef{journal}{}{\printtext{\bibstring{in}\intitlepunct}}%
+}
+\renewbibmacro*{finentry}{%
+ \iffieldundef{userb}{}{%
+ \textls[0]{\small{\textsc{%
+ \newunitpunct\textnumero\intitlepunct\printfield{userb}%
+ }}}%
+ }\finentry%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\printbibliography}
+% Allow the bibliography to be printed sloppy \cf |\sloppy|
+% \begin{macrocode}
+\let\old@printbibliography\printbibliography
+\renewcommand{\printbibliography}{\sloppy\old@printbibliography}
+% \end{macrocode}
+% \end{macro}
+
+% \subsection{Hyperlinks}
+%
+% Load the |hyperref| package \cite{hyperref} enable unicode encoding and hide links.
+%
+% \begin{macrocode}
+\RequirePackage{hyperref}
+\hypersetup{
+ hidelinks,
+ linktoc=all,
+ pdfencoding=auto,
+ psdextra,
+ breaklinks=true,
+ pdfcreator={},
+ pdfproducer={}
+}
+% \end{macrocode}
+% Set the PDF meta data according to the paper information and ensure that unnecessary information are suppressed.
+%
+% \begin{macrocode}
+\pdfstringdefDisableCommands{\def\varepsilon{\textepsilon}}
+\AtBeginDocument{
+ \pdfstringdefDisableCommands{\let\ensuremath\@gobble}
+ \pdfstringdefDisableCommands{\let\mathsurround\@gobble}
+ \pdfstringdefDisableCommands{\let\unskip\@gobble}
+ \pdfstringdefDisableCommands{\let\thanks\@gobble}
+ \pdfstringdefDisableCommands{\let\footnote\@gobble}
+ \pdfstringdefDisableCommands{\let\\\@gobble}
+ \hypersetup{
+ pdfauthor={\AB@authlist},
+ pdftitle={\@title}
+ }
+}
+% \end{macrocode}
+
+% \subsection{References}
+%
+% \begin{macro}{\cref}
+% Improve reference using the |cleveref| package \cite{cleveref} and prevent preceding line breaks various reference macros.
+%
+% \begin{macrocode}
+\RequirePackage[noabbrev, capitalize, nameinlink]{cleveref}
+\crefname{enumi}{point}{points}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\eqref}
+% Adjust |\eqref|\marg{ref} in order to prevent preceding line breaks and to enable the possibility to cite multiple equations at once.
+% \begin{macrocode}
+\renewcommand\eqref{\no@break@before\labelcref}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\subref}
+% Adjust |\subref|\marg{ref} in order to prevent preceeding line breaks.
+% \begin{macrocode}
+\let\old@subref\subref
+\renewcommand\subref{\no@break@before\old@subref}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\cite}
+% Adjust |\cite|\marg{ref} in order to prevent preceeding line breaks.
+% \begin{macrocode}
+\let\old@cite\cite
+\renewcommand\cite{\no@break@before\old@cite}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\labelcrefrange}
+% Define the missing |\labelcrefrange|\marg{ref1}\marg{ref2} macro.
+% \begin{macrocode}
+\DeclareRobustCommand{\labelcrefrange}[2]{\@crefrangenostar{labelcref}{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+%
+% \Finale
+
+\endinput
diff --git a/macros/latex/contrib/hep-paper/hep-paper.ins b/macros/latex/contrib/hep-paper/hep-paper.ins
new file mode 100644
index 0000000000..b88c8423a5
--- /dev/null
+++ b/macros/latex/contrib/hep-paper/hep-paper.ins
@@ -0,0 +1,46 @@
+%%
+%% Copyright (C) 2019-2020 by Jan Hajer
+%%
+%% This file may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either
+%% version 1.3c of this license or (at your option) any later
+%% version. The latest version of this license is in:
+%%
+%% http://www.latex-project.org/lppl.txt
+%%
+%% and version 1.3c or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+
+\input docstrip.tex
+\keepsilent
+\usedir{tex/latex/hep-paper}
+
+\preamble
+This is a generated file.
+Copyright (C) 2019-2020 by Jan Hajer
+This file may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either
+version 1.3c of this license or (at your option) any later
+version. The latest version of this license is in:
+http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of
+LaTeX version 2005/12/01 or later.
+\endpreamble
+
+\generate{\file{hep-paper.sty}{\from{hep-paper.dtx}{package}}}
+
+\Msg{*********************************************************}
+\Msg{*}
+\Msg{* To finish the installation you have to move the}
+\Msg{* following file into a directory searched by TeX:}
+\Msg{*}
+\Msg{* \space\space hep-paper.sty}
+\Msg{*}
+\Msg{* To produce the documentation run the file hep-paper.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{*********************************************************}
+
+\endbatchfile
diff --git a/macros/latex/contrib/hep-paper/hep-paper.pdf b/macros/latex/contrib/hep-paper/hep-paper.pdf
new file mode 100644
index 0000000000..3b22335ba6
--- /dev/null
+++ b/macros/latex/contrib/hep-paper/hep-paper.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index aa89134c6f..ccdcd90dfe 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,59 +7,57 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
-## [2019-10-11]
+## [2020-01-12]
+
+### Changed
+- Track `l3kernel` changes
### Fixed
+- Bounding box for clipped paths (see #660)
+## [2019-10-11]
+
+### Fixed
- Error message for unknown colors (see #640)
## [2019-09-28]
### Changed
-
- `\sys_shell_get_pwd:N` renamed as `\sys_get_shell_pwd:N`
## [2019-09-19]
### Changed
-
- Various improvements to `l3cctab`
## [2019-08-25]
### Changed
-
- `\draw_unit_vector:n` returns a vertical vector when the length is
zero (see #609)
- Collect `pwd` data with no `\endlinechar` (see #613)
- Default precision in `\fp_format:nn` when no style is specified
### Fixed
-
- Corrected behaviour of catcode tables (see #610)
## [2019-07-01]
### Added
-
- New module `l3pdf`
### Changed
-
- Re-order arguments for polar points (`l3draw`)
### Removed
-
- `l3str-convert` module: moved to `l3kernel` (`expl3` core)
## [2019-05-28]
### Added
-
- New `l3graphics` module
### Fixed
-
- Missing `\scan_stop:` in benchmark code (fixes #577)
## [2019-05-03]
@@ -71,35 +69,29 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-03-05]
### Added
-
- Support for drawing layers
### Changed
-
- Update `l3draw` transformation names
## [2019-01-28]
### Changed
-
- Track `expl3` changes
## [2018-10-31]
### Added
-
- New module `l3cctab`
## [2018-10-26]
### Added
-
- New module `l3benchmark`
## [2018-08-24]
### Fixed
-
- Actually distribute `l3sys-shell`
## [2018-08-23]
@@ -130,7 +122,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-01-12...HEAD
+[2020-01-12]: https://github.com/latex3/latex3/compare/2019-10-11...2020-01-12
[2019-10-11]: https://github.com/latex3/latex3/compare/2019-09-28...2019-10-11
[2019-09-28]: https://github.com/latex3/latex3/compare/2019-09-19...2019-09-28
[2019-09-19]: https://github.com/latex3/latex3/compare/2019-08-25...2019-09-19
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index e0c3412ce3..4202fb71e6 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2019-10-11
+Release 2020-01-12
Overview
--------
@@ -142,6 +142,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2011,2015-2019 The LaTeX3 Project <br />
+<p>Copyright (C) 1998-2011,2015-2020 The LaTeX3 Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index e66d06bdcb..5383ac4624 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3benchmark.dtx
%
-% Copyright (C) 2011,2012,2014-2019 The LaTeX3 Project
+% Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -130,7 +130,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3benchmark}{2019-10-11}{}
+\ProvidesExplPackage{l3benchmark}{2020-01-12}{}
{L3 Experimental benchmarking}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.ins b/macros/latex/contrib/l3experimental/l3benchmark.ins
index d925b01b14..ca4c280f82 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.ins
+++ b/macros/latex/contrib/l3experimental/l3benchmark.ins
@@ -2,7 +2,7 @@
File: l3benchmark.ins
-Copyright (C) 2011,2018,2019 The LaTeX3 Project
+Copyright (C) 2011,2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index 4ca0a1f13e..1fd8c716f3 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3cctab.dtx b/macros/latex/contrib/l3experimental/l3cctab.dtx
index 3d6aadc98d..f7418e117f 100644
--- a/macros/latex/contrib/l3experimental/l3cctab.dtx
+++ b/macros/latex/contrib/l3experimental/l3cctab.dtx
@@ -2,7 +2,7 @@
%
%% File: l3cctab.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -171,7 +171,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3cctab}{2019-10-11}{}
+\ProvidesExplPackage{l3cctab}{2020-01-12}{}
{L3 Experimental category code tables}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3cctab.ins b/macros/latex/contrib/l3experimental/l3cctab.ins
index 3c7a9b05ae..e968f1bf83 100644
--- a/macros/latex/contrib/l3experimental/l3cctab.ins
+++ b/macros/latex/contrib/l3experimental/l3cctab.ins
@@ -2,7 +2,7 @@
File: l3cctab.ins
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3cctab.pdf b/macros/latex/contrib/l3experimental/l3cctab.pdf
index be1aa48523..00a402e93e 100644
--- a/macros/latex/contrib/l3experimental/l3cctab.pdf
+++ b/macros/latex/contrib/l3experimental/l3cctab.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3color.dtx b/macros/latex/contrib/l3experimental/l3color.dtx
index 16147a3fb2..de6616acf3 100644
--- a/macros/latex/contrib/l3experimental/l3color.dtx
+++ b/macros/latex/contrib/l3experimental/l3color.dtx
@@ -2,7 +2,7 @@
%
%% File: l3color.dtx
%
-% Copyright (C) 2017-2019 The LaTeX3 Project
+% Copyright (C) 2017-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -267,7 +267,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3color}{2019-10-11}{}
+\ProvidesExplPackage{l3color}{2020-01-12}{}
{L3 Experimental color support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3color.ins b/macros/latex/contrib/l3experimental/l3color.ins
index ae12ed89b6..a2601a4fde 100644
--- a/macros/latex/contrib/l3experimental/l3color.ins
+++ b/macros/latex/contrib/l3experimental/l3color.ins
@@ -2,7 +2,7 @@
File: l3color.ins
-Copyright (C) 2017-2019 The LaTeX3 Project
+Copyright (C) 2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2017-2019 The LaTeX3 Project
+Copyright (C) 2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3color.pdf b/macros/latex/contrib/l3experimental/l3color.pdf
index c6c42016e8..1c7f8f3153 100644
--- a/macros/latex/contrib/l3experimental/l3color.pdf
+++ b/macros/latex/contrib/l3experimental/l3color.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index 6424fbe6a1..572b4f2192 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-boxes.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 3f44b3e82c..296561bb05 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index e9b86fd30e..53c221d69e 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-layers.dtx
%
-% Copyright (C) 2019 The LaTeX3 Project
+% Copyright (C) 2019,2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 442b158fbc..846043faa4 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-paths.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -892,6 +892,7 @@
\bool_if:NT \l_@@_path_use_clip_bool
{
\@@_backend_clip:
+ \bool_set_false:N \l_draw_bb_update_bool
\bool_lazy_or:nnF
{ \l_@@_path_use_fill_bool }
{ \l_@@_path_use_stroke_bool }
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index 7c3749a956..dccb1fb677 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-points.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index de1036ef52..704d80652f 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-scopes.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 0b51687b9f..ce3b8b1ac8 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-softpath.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index 4bea6a4943..658982a49b 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-state.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 39873b59a2..bcfed70787 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw-transforms.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index 66b7b73f35..0ce74688f4 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -2,7 +2,7 @@
%
%% File: l3draw.dtx
%
-% Copyright(C) 2018,2019 The LaTeX3 Project
+% Copyright(C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -1146,7 +1146,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3draw}{2019-10-11}{}
+\ProvidesExplPackage{l3draw}{2020-01-12}{}
{L3 Experimental core drawing support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3draw.ins b/macros/latex/contrib/l3experimental/l3draw.ins
index 836d9a32d6..9b72ca17fd 100644
--- a/macros/latex/contrib/l3experimental/l3draw.ins
+++ b/macros/latex/contrib/l3experimental/l3draw.ins
@@ -2,7 +2,7 @@
File: l3draw.ins
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index 949c82acbf..ed46ba5f7f 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index a4d768b05e..14d9fc9e09 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -3,7 +3,7 @@
%% File: l3galley.dtx
%
% Copyright (C) 1999-2001,2004-2009 Frank Mittelbach
-% (C) 2010-2019 The LaTeX3 Project
+% (C) 2010-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -687,7 +687,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3galley}{2019-10-11}{}
+\ProvidesExplPackage{l3galley}{2020-01-12}{}
{L3 Experimental galley code}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 8de12d7da8..83e56ffd2c 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 8deb2335ed..e877b69ca5 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3graphics.dtx
%
-% Copyright (C) 2017-2019 The LaTeX3 Project
+% Copyright (C) 2017-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -241,7 +241,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3graphics}{2019-10-11}{}
+\ProvidesExplPackage{l3graphics}{2020-01-12}{}
{L3 Experimental graphics inclusion support}
%</package>
% \end{macrocode}
@@ -577,7 +577,7 @@
\exp_args:Ne \@@_include_auxi:n
{
\exp_args:Ne \str_tail:n
- { \str_fold_case:V \l_@@_ext_str }
+ { \str_foldcase:V \l_@@_ext_str }
}
}
\cs_new_protected:Npn \graphics_include:nn #1#2
@@ -587,7 +587,7 @@
\file_get_full_name:nNTF {#1} \l_@@_name_tl
{
\exp_args:Ne \@@_include_auxi:n
- { \str_fold_case:n {#1} }
+ { \str_foldcase:n {#1} }
}
{ \__kernel_msg_error:nnn { graphics } { graphic-not-found } {#1} }
\group_end:
diff --git a/macros/latex/contrib/l3experimental/l3graphics.ins b/macros/latex/contrib/l3experimental/l3graphics.ins
index 815535a352..ef345b5969 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.ins
+++ b/macros/latex/contrib/l3experimental/l3graphics.ins
@@ -1,6 +1,6 @@
\iffalse meta-comment
-File l3graphics.ins Copyright (C) 2017,2019 The LaTeX3 Project
+File l3graphics.ins Copyright (C) 2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2019 The LaTeX3 Project
+Copyright (C) 2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index d3c36505fe..91fd6d81c4 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf-code.pdf b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
index fcbbc8883d..7f232d74e5 100644
--- a/macros/latex/contrib/l3experimental/l3pdf-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3pdf.dtx b/macros/latex/contrib/l3experimental/l3pdf.dtx
index 61ac10ef89..dc36f172fa 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.dtx
+++ b/macros/latex/contrib/l3experimental/l3pdf.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdf.dtx
%
-% Copyright(C) 2019 The LaTeX3 Project
+% Copyright(C) 2019,2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -185,7 +185,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3pdf}{2019-10-11}{}
+\ProvidesExplPackage{l3pdf}{2020-01-12}{}
{L3 Experimental core PDF support}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3pdf.ins b/macros/latex/contrib/l3experimental/l3pdf.ins
index d39eefa114..e325be4520 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.ins
+++ b/macros/latex/contrib/l3experimental/l3pdf.ins
@@ -2,7 +2,7 @@
File: l3pdf.ins
-Copyright (C) 2019 The LaTeX3 Project
+Copyright (C) 2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2019 The LaTeX3 Project
+Copyright (C) 2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3pdf.pdf b/macros/latex/contrib/l3experimental/l3pdf.pdf
index fefcea1f74..c223f4db7c 100644
--- a/macros/latex/contrib/l3experimental/l3pdf.pdf
+++ b/macros/latex/contrib/l3experimental/l3pdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 03fd22c5ea..af34128e5b 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str-format.dtx
%
-% Copyright (C) 2012-2019 The LaTeX3 Project
+% Copyright (C) 2012-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -167,7 +167,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3str-format}{2019-10-11}{}
+\ProvidesExplPackage{l3str-format}{2020-01-12}{}
{L3 Experimental string formatting}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index 3b22a08fd4..b84115d4b9 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str.ins b/macros/latex/contrib/l3experimental/l3str.ins
index d3f00364e1..76fc36a116 100644
--- a/macros/latex/contrib/l3experimental/l3str.ins
+++ b/macros/latex/contrib/l3experimental/l3str.ins
@@ -2,7 +2,7 @@
File l3str.ins
-Copyright (C) 2011-2017,2019 The LaTeX3 Project
+Copyright (C) 2011-2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2011-2019 The LaTeX3 Project
+Copyright (C) 2011-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index f1aaa56c93..c166811e11 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -2,7 +2,7 @@
%
%% File: l3sys-shell.dtx
%
-% Copyright (C) 2018,2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -136,7 +136,7 @@
%
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{l3sys-shell}{2019-10-11}{}
+\ProvidesExplPackage{l3sys-shell}{2020-01-12}{}
{L3 Experimental system shell functions}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.ins b/macros/latex/contrib/l3experimental/l3sys-shell.ins
index acf3c1d710..9ee35460cb 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.ins
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.ins
@@ -2,7 +2,7 @@
File: l3sys-shell.ins
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2018,2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 271d03ab3e..59880cbf58 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index 7e3d89e7c2..9f4aec0bcd 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -2,7 +2,7 @@
%
%% File: xcoffins.dtx
%
-% Copyright (C) 2010-2012,2014,2016-2019 The LaTeX3 Project
+% Copyright (C) 2010-2012,2014,2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -56,7 +56,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -675,7 +675,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2019-10-11}{}
+\ProvidesExplPackage{xcoffins}{2020-01-12}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.ins b/macros/latex/contrib/l3experimental/xcoffins.ins
index 065cb5eae7..52d5c24a44 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.ins
+++ b/macros/latex/contrib/l3experimental/xcoffins.ins
@@ -2,7 +2,7 @@
File: xcoffins.ins
-Copyright (C) 2010,2011,2012,2016,2017,2019 The LaTeX3 Project
+Copyright (C) 2010,2011,2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2010-2019 The LaTeX3 Project
+Copyright (C) 2010-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 343b91a3c6..adf53b40ea 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index a0c9d83c80..5cd043a5e6 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -3,7 +3,7 @@
%% File: xgalley.dtx
%
% Copyright (C) 1999-2001,2004-2009 Frank Mittelbach
-% (C) 2010-2012,2014,2016-2019 The LaTeX3 Project
+% (C) 2010-2012,2014,2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -47,7 +47,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -734,7 +734,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2019-10-11}{}
+\ProvidesExplPackage{xgalley}{2020-01-12}{}
{L3 Experimental galley}
\RequirePackage{xparse,xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.ins b/macros/latex/contrib/l3experimental/xgalley.ins
index 13388c46d8..d0c89bcd2c 100644
--- a/macros/latex/contrib/l3experimental/xgalley.ins
+++ b/macros/latex/contrib/l3experimental/xgalley.ins
@@ -2,7 +2,7 @@
File: xgalley.ins
-Copyright (C) 2010-2012,2016,2017,2019 The LaTeX3 Project
+Copyright (C) 2010-2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2010-2019 The LaTeX3 Project
+Copyright (C) 2010-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index 287b12301d..fd0cb034f0 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 9aa72250fd..00a7689a9a 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,63 +7,75 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
-## [2019-11-07]
+## [2020-01-12]
+
+### Added
+- `bool_case_true:n(TF)` and `\bool_case_false:n(TF)`
+- `\file_hex_dump:n(nn)` and `\file_get_hex_dump:n(nn)N(TF)`
+- `\str_<type>case:n`
+- `\text_<type>case:n(n)`
+- `\text_expand:n` and supporting data structures
+
+### Changed
+- Distribute LaTeX3 News
+- Moved `\char_<type>case:N` to stable
+- Documentation improvements
### Fixed
+- Inherit key required/forbidden properties (see #653)
+- Set backend at the beginning of `\document` (see #657)
+### Deprecated
+- `\str_<type>_case:n`
+- `\tl_<type>_case:n(n)`
+
+## [2019-11-07]
+
+### Fixed
- Handling of repeated loading of a backend (issue #646)
-- Hanlding of repeated loading of deprecated functions
+- Handling of repeated loading of deprecated functions
## [2019-10-28]
### Fixed
-
- File searching when `\(pdf)filesize` is not available (fixes #644)
## [2019-10-27]
### Changed
-
- Internal structure of `\c_sys_jobname_str` altered
- Update upTeX test to follow guidance from developers
## [2019-10-24]
### Changed
-
- File names are now returned without quotes by `\file_full_name:n`
### Fixed
-
- `\file_if_exist:n(TF)`, etc., when dealing with file names containing
spaces (see #642)
## [2019-10-21]
### Added
-
- Lua function `l3kernel.shellescape()`
### Changed
-
- Better coverage of (u)pTeX primitives following publication of
pTeX manual in English
- Trim spaces surrounding file names
### Removed
-
- HarfTeX primitives
## [2019-10-14]
### Fixed
-
- Correct handling of 'traditional' class options for backend
## [2019-10-11]
### Changed
-
- Standard backend for (u)pTeX is now `dvips`
- Minimum LuaTeX version now v0.95
- Moved `\debug_on:`, `\debug_off:`, `\debug_suspend:` and `\debug_resume:`
@@ -72,7 +84,6 @@ this project uses date-based 'snapshot' version identifiers.
- Performance enhancements when loading `expl3`
### Fixed
-
- Handling of files with no extension
- Behaviour of Lua function `l3kernel.charcat` in some circumstances
- Loading under ConTeXt
@@ -80,19 +91,16 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-10-02]
### Fixed
-
- Variants using `\exp_args` functions with more than 9 arguments (see #636)
## [2019-09-30]
### Fixed
-
- File searching using `\file_full_name:n` (see #634)
## [2019-09-28]
### Changed
-
- Speed up variants and reduce their \tracingall output
- Debug and deprecation code are now loaded independently of expl3 core
- `\file_compare_timestamp:nNn(TF)` now usable in expansion contexts
@@ -120,46 +128,38 @@ this project uses date-based 'snapshot' version identifiers.
- Shell access functions
### Fixed
-
- Key `.initial:n` property when combined with inherited keys (see #631)
## [2019-09-19]
### Fixed
-
- Loading Unicode data when some chars may be active (see #627)
## [2019-09-08]
### Fixed
-
- Missing internal variant (fixes #624)
## [2019-09-05]
### Added
-
- `\file_full_name:n`, `\file_mdfive_hash:n`, `\file_size:n`,
`\file_timestamp:n`
- `\seq_map_tokens:Nn`, `\tl_map_tokens:nn`, `\tl_map_tokens:Nn`
### Changed
-
- Moved `\prop_map_tokens:Nn` to stable
- Generate chars with catcode as-supplied when case changing
## [2019-08-25]
### Added
-
- `\fp_if_nan:nTF`
### Changed
-
- Make round(.,nan)=nan with no "Invalid operation" error
### Fixed
-
- `\tl_rescan:nn` and `\tl_(g)set_rescan:Nnn` when single-line input
contains a comment character (see #607)
- Final value of the variable in `\tl_map_variable:NNn` and
@@ -169,76 +169,62 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-08-14]
### Deprecated
-
- `\c_term_ior`
### Fixed
-
- Coffin pole intersection in some cases (see #605)
## [2019-07-25]
### Fixed
-
- Loading for `expl3` with plain TeX
## [2019-07-01]
### Added
-
- Moved `l3str-convert` module to `l3kernel`
### Changed
-
- Ensure `\msg_fatal:nn` ends the TeX run if used inside an
hbox (see #587)
- Moved backend code to a separate release schedule
### Fixed
-
- Handling of control sequences in key names (see #594)
## [2019-05-28]
### Added
-
- Experimental `\file_compare_timestamp:nNn(TF)`
### Changed
-
-- Precedence of juxtaposition (implicit multiplication) in l3fp
+- Precedence of juxtaposition (implicit multiplication) in `l3fp`
now different for keywords/variables and factors in parentheses
## [2019-05-09]
### Added
-
- Experimental driver-level interfaces for image inclusion
- Experimental `\ior_shell_open:Nn`
### Fixed
-
- Some issues in `dvisvgm` driver
## [2019-05-07]
### Added
-
- `.muskip_set:N` property
### Changed
-
- Experimental `\driver_pdf_compress_objects:n` replaces
`\driver_pdf_objects_(en|dis)able:`
## [2019-05-05]
### Added
-
- `\char_str_<target>_case:N`
### Fixed
-
- Infinite loop in some cases in DVI mode due to link-breaking code
(see #570)
- Category code of output from `\char_<target>_case:N`, and
@@ -247,12 +233,10 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-05-03]
### Added
-
- New `l3legacy` module containing
- `\legacy_if:n(TF)`
### Changed
-
- Moved `\file_get_mdfive_hash:nN(TF)`, `\file_get_size:nN(TF)`
and `\file_get_timestamp:nN(TF)` to stable
- Moved `\file_if_exist_input:n` and `\file_if_exist_input:nF` to stable
@@ -262,30 +246,25 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-04-21]
### Added
-
- Experimental support for a range of PDF concepts at the lowest
(driver abstraction) level
## [2019-04-06]
### Changed
-
- Moved `\tl_if_single_token:n(TF)` to stable
### Fixed
-
- Support for ConTeXt from mid-December 2018
## [2019-03-26]
### Fixed
-
- Loading when pre-TL'18 XeTeX is in use (see #555)
## [2019-03-05]
### Added
-
- `\str_log:n`, `\str_log:N`
- `TF` versions for `\file_get_...:nN` and `\ior_(str_)get:NN` functions
- `\cs_prefix_spec:N`, `\cs_argument_spec:N`, `\cs_replacement_spec:N`
@@ -293,7 +272,6 @@ this project uses date-based 'snapshot' version identifiers.
- `factorial` function in `l3fp`
### Changed
-
- Return values from `\file_get:nnN`, `\file_get_...:nN`, `\ior_get:NN`,
`\sys_shell_get:nnN`
- Moved coffin affine transformations to stable
@@ -310,22 +288,18 @@ this project uses date-based 'snapshot' version identifiers.
`\cs_argument_spec:N`, `\cs_replacement_spec:N`, respectively
### Fixed
-
- Treatment of inherited keys when setting only known keys (see #548)
### Removed
-
- Experimental `\skip_split_finite_else_action:nnNN`
- Experimental `\tl_reverse_tokens:n`
## [2019-02-15]
### Changed
-
- Defensive code for redefinition of `\time`, `\day`, `\month` and `\year`
### Fixed
-
- Resetting of key inheritance (see #535)
- Issue in deprecated command `\tl_set_from_file:Nnn`
(see https://tex.stackexchange.com/q/474813/)
@@ -333,20 +307,17 @@ this project uses date-based 'snapshot' version identifiers.
## [2019-02-03]
### Added
-
- Support for return of whole path by `\keys_set_known:nnN`-like
function `\keys_set_known:nnnN` (see #508)
- `.prop_(g)put:N` key property (see #444)
### Fixed
-
- Handling of nested key setting when filtering, _etc._ (see #526)
- Inheritance of default values (see #504)
## [2019-01-28]
### Added
-
- Global versions of box affine functions, e.g. `\box_grotate:Nn`
- Global versions of box size adjustment functions
- `\box_(g)set_eq_drop:NN`, `\(h|v)box_unpack_drop:N`
@@ -354,63 +325,52 @@ this project uses date-based 'snapshot' version identifiers.
- Experimental functions `\sys_shell_get:nnN` and `\sys_shell_get:nnNTF`
### Changed
-
- `\char_generate:nn` now always takes exactly two expansions
- Move `\prg_generate_conditional_variant:Nnn` to stable
- Renamed experimental `\box_trim:Nnnnn` and `\box_viewport:Nnnnn` as
`\box_set_trim:Nnnnn` and `\box_set_viewport:Nnnnn`, respectively
### Deprecated
-
- `\box_(g)set_eq_clear:NN`, replaced by `\box_(g)set_eq_drop:NN`
- `\(h|v)box_unpack_clear:N`, replaced by `\(h|v)box_unpack_drop:N
- `\tl_(g)set_from_file(_x):Nnn`, replaced by `\file_get:nnN`
### Fixed
-
- Scope treatment of `\box_set_dp:N`, _etc._
- In (u)platex: detection of spaces in `\tl_rescan:nn` and related functions
### Removed
-
- Experimental function family `\tl_(g)set_from_shell:(N|c)nn`
(replaced by `\sys_shell_get:nnN`)
## [2019-01-13]
### Added
-
- `\ior_map_variable:NNn` and `\ior_str_map_variable:NNn`
### Fixed
-
- Unclosed conditional with Unicode engines
## [2019-01-12]
### Changed
-
- Improved `expl3` loading time with LuaTeX and XeTeX
- Improved performance of `\ior_map_inline:Nn` and related functions
### Fixed
-
- Handling of accented characters under mixed case changing in 8-bit engines
(see #514)
## [2019-01-01]
### Added
-
- `\iow_allow_break:`
### Fixed
-
- Correct fp randint with zero argument (see #507)
- Handling of `\current@color` with (x)dvipdfmx` (see #510)
### Removed
-
- Support for stand-alone `l3regex`, `l3sort`, `l3srt`, `l3tl-analysis`,
`l3tl-build`
- `\box_resize:Nnn`
@@ -427,61 +387,50 @@ this project uses date-based 'snapshot' version identifiers.
## [2018-12-12]
### Changed
-
- Move `\tl_range:nnn` to stable
### Fixed
-
- Loading in ConTeXt MkIV
## [2018-12-11]
### Changed
-
- Enable `\char_generate:nn` to create active tokens with XeTeX
## [2018-12-06]
### Changed
-
- Apply `\par` only at the end of vertical boxes
- Move `\int_rand:n` to stable
- Move `\<var>_rand_item:N` to stable
### Fixed
-
- Typo in `\lua_shipout_e:n` (see #503)
## [2018-11-19]
### Added
-
- Support for cross-compatibility primitives in XeTeX
- `\int_sign:n`, `\dim_sign:n` and `\fp_sign:n`
## [2018-10-19]
### Fixed
-
- Wrapping of text in messages, etc., for some line lengths (fixes #491)
## [2018-10-17]
### Added
-
- `\g_msg_module_documentation_prop` (see #471)
- `\peek_remove_spaces:n`
### Changed
-
- Formatting of messages: now follows LaTeX2e closely
### Deprecated
-
- `\msg_interrupt:nn`, `\msg_log:n` and `\msg_term:n`
### Fixed
-
- Handling of inheritance for choice keys (fixes #483)
## [2018-09-24]
@@ -552,7 +501,6 @@ this project uses date-based 'snapshot' version identifiers.
- Several internal optimisations
### Fixed
-
- Ex­pand boolean ex­pres­sion be­fore call­ing `\chardef` (fixes #461)
### Removed
@@ -609,7 +557,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step func­tions have been added for dim vari­ables,
e.g. `\dim_step_in­line:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-11-07...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-01-12...HEAD
+[2020-01-12]: https://github.com/latex3/latex3/compare/2019-11-07...2020-01-12
[2019-11-07]: https://github.com/latex3/latex3/compare/2019-10-28...2019-11-07
[2019-10-28]: https://github.com/latex3/latex3/compare/2019-10-27...2019-10-28
[2019-10-27]: https://github.com/latex3/latex3/compare/2019-10-24...2019-10-27
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index df7311fe84..d42a602ff8 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2019-11-07
+Release 2020-01-12
Overview
--------
@@ -80,6 +80,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2012,2015-2019 The LaTeX3 Project <br />
+<p>Copyright (C) 1998-2012,2015-2020 The LaTeX3 Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 89d18df298..7295b770db 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -2,7 +2,7 @@
%
%% File: expl3.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2019-11-07}%
+\def\ExplFileDate{2020-01-12}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -365,6 +365,23 @@
% distinguish variables from functions in the source when the |@@|
% convention is used.
%
+% \subsubsection{Variables: declaration}
+%
+% In well-formed \pkg{expl3} code, variables should always be declared before
+% assignment is attempted. This is true even for variable types where the
+% underlying \TeX{} implementation will allow direct assignment. This applies
+% both to setting directly (\cs{tl_set:Nn}, etc.) and to setting equal
+% (\cs{tl_set_eq:NN}, etc.).
+%
+% To help programmers to adhere to this approach, the debugging option
+% |check-declarations| may be given
+% \begin{verbatim}
+% \debug_on:n { check-declarations }
+% \end{verbatim}
+% and will issue an error whenever an assignment is made to a non-declared
+% variable. There is a performance implication, so this option should only
+% be used for testing.
+%
% \subsubsection{Variables: scope and type}
%
% The \meta{scope} part of the name describes how the variable can be
@@ -774,9 +791,8 @@
% \section{The distribution}
%
% At present, the \pkg{expl3} modules are designed to be loaded on top
-% of \LaTeXe{}. In time, a \LaTeX3 format will be produced based on this
-% code. This allows the code to be used in \LaTeXe{} packages \emph{now}
-% while a stand-alone \LaTeX3 is developed.
+% of \LaTeXe{}. In time, a \LaTeX3 format may be produced based on this
+% code.
%
% \begin{bfseries}
% While \pkg{expl3} is still experimental, the bundle is now regarded
@@ -786,87 +802,29 @@
% \pkg{expl3}.
% \end{bfseries}
%
-% New modules will be added to the distributed version of \pkg{expl3}
-% as they reach maturity. At present, the \pkg{expl3} bundle consists
-% of a number of modules, most of which are loaded by including the
-% line:
+% The distribution of \pkg{expl3} is split up into three packages on
+% CTAN: \pkg{l3kernel}, \pkg{l3packages} and \pkg{l3experimental}.
+% For historical reasons,
% \begin{verbatim}
% \RequirePackage{expl3}
% \end{verbatim}
-% in a \LaTeXe{} package, class or other file. The \pkg{expl3} modules
-% regarded as stable, and therefore suitable for basing real code on,
-% are as follows:
-%
-% \begin{description}
-% \providecommand\explpkg[2]{\item[#1]#2}
-% \explpkg{l3basics}{
-% This contains the basic definition modules used
-% by the other packages.
-% }
-% \explpkg{l3box}{
-% Primitives for dealing with boxes.
-% }
-% \explpkg{l3clist}{
-% Methods for manipulating comma-separated token lists.
-% }
-% \explpkg{l3coffins}{
-% Augmented box constructs for alignment operations.
-% }
-% \explpkg{l3expan}{
-% This is the argument expansion module discussed earlier in this
-% document.
-% }
-% \explpkg{l3int}{
-% This implements the integer data-type \texttt{int}.
-% }
-% \explpkg{l3keys}{
-% For processing lists of the form
-% \texttt{\{ key1=val1 , key2=val2 \}}, intended to work
-% as a \LaTeX3 version of \pkg{xkeyval}/\pkg{kvoptions}, although
-% with input syntax more like that of \pkg{pgfkeys}.
-% }
-% \explpkg{l3msg}{
-% Communicating with the user: includes low-level hooks to allow
-% messages to be filtered (higher-level interface for filtering
-% to be written!).
-% }
-% \explpkg{l3names}{
-% This sets up the basic naming scheme and renames all
-% the \TeX{} primitives.
-% }
-% \explpkg{l3prg}{
-% Program control structures such as boolean data type |bool|, generic
-% do-while loops, and conditional flow.
-% }
-% \explpkg{l3prop}{
-% This implements the data-type for \enquote{property lists} that are used, in
-% particular, for storing key/value pairs.
-% }
-% \explpkg{l3quark}{
-% A \enquote{quark} is a command that is defined to expand to
-% itself! Therefore they must never be expanded as this would generate an
-% infinite recursion; they do however have many uses, \emph{e.g.}~as
-% special markers and delimiters within code.
-% }
-% \explpkg{l3seq}{
-% This implements data-types such as queues and stacks.
-% }
-% \explpkg{l3skip}{
-% Implements the \enquote{rubber length} datatype \texttt{skip}, the
-% \enquote{rigid length} datatype |dim|, and the math mode
-% \enquote{rubber length} datatype \texttt{muskip}.
-% }
-% \explpkg{l3tl}{
-% This implements a basic data-type, called a \textit{token-list
-% variable} (|tl var.|), used for storing named token lists: these are
-% \TeX{} macros with no arguments.
-% }
-% \explpkg{l3token}{
-% Analysing token lists and token streams, including peeking ahead to
-% see what's coming next and inspecting tokens to detect which kind
-% they are.
-% }
-% \end{description}
+% loads the code now distributed as \pkg{l3kernel}. This monolithic
+% package contains all of the modules regarded by the team as stable,
+% and any changes in this code are very limited. This material is
+% therefore suitable for use in third-party packages without concern
+% about changes in support. All of this code is documented in
+% \texttt{interface3.pdf}.
+%
+% The material in \pkg{l3packages} is also stable, but is not always
+% at a programming level: most notably, \pkg{xparse} is stable and
+% suitable for wider use.
+%
+% Finally, \pkg{l3experimental} contains modules ready for public use
+% but not yet integrated into \pkg{l3kernel}. These modules have to
+% be loaded explicitly. The team anticipate that all of these modules
+% will move to stable status over time, but they may be more flexible
+% in terms of interface and functionality detail. Feedback on these
+% modules is extremely valuable.
%
% \section{Moving from \LaTeXe{} to \LaTeX3}
%
@@ -1171,7 +1129,7 @@
% \begin{macrocode}
%<*2ekernel>
\everyjob\expandafter{\the\everyjob
- \message{expl3 <\ExplFileDate> L3 programming layer}%
+ \message{L3 programming layer <\ExplFileDate>}%
}
%</2ekernel>
%<*!2ekernel>
@@ -1322,13 +1280,17 @@
}
% \end{macrocode}
%
-% A backend has to be in place by the start of the document.
+% A backend has to be in place by the start of the document: this has to be
+% before global options are checked for use. The odd group stuff avoids
+% needing to actually patch \tn{document}.
% \begin{macrocode}
%<*2ekernel>
-\AtBeginDocument
+\tl_put_left:Nn \document
{
+ \endgroup
\str_if_exist:NF \c_sys_backend_str
{ \sys_load_backend:n { } }
+ \begingroup
}
%</2ekernel>
%<*!2ekernel>
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 5ff3ded9e7..2cb019c335 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index 872a46e97c..e1ad66bb50 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index 5b08ade5dc..c8daecbd24 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -2,7 +2,7 @@
File: interfaces3.tex
-Copyright (C) 1990-2011,2017-2019 The LaTeX3 Project
+Copyright (C) 1990-2011,2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -54,7 +54,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-11-07}
+\date{Released 2020-01-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index d9c7f2e6cf..b509a2478f 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -2,7 +2,7 @@
File l3.ins
-Copyright (C) 2011,2012,2014-2019 The LaTeX3 Project
+Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 1990-2019 The LaTeX3 Project
+Copyright (C) 1990-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -104,6 +104,8 @@ and all files in that bundle must be distributed together.
\from{l3coffins.dtx} {package}
\from{l3luatex.dtx} {package,tex}
\from{l3unicode.dtx} {package}
+ \from{l3text.dtx} {package}
+ \from{l3text-case.dtx} {package}
\from{l3candidates.dtx} {package}
\from{l3legacy.dtx} {package}
\from{l3deprecation.dtx}{package,kernel}
@@ -149,7 +151,7 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-Copyright (C) 1990-2019 The LaTeX3 Project
+Copyright (C) 1990-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3kernel/l3alloc.dtx b/macros/latex/contrib/l3kernel/l3alloc.dtx
index 86076bb8f0..e3f88dfc94 100644
--- a/macros/latex/contrib/l3kernel/l3alloc.dtx
+++ b/macros/latex/contrib/l3kernel/l3alloc.dtx
@@ -2,7 +2,7 @@
%
%% File: l3alloc.dtx
%
-% Copyright (C) 1990-2012,2014-2019 The LaTeX3 Project
+% Copyright (C) 1990-2012,2014-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index aea1d1fbad..7814fd3089 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index 7066d5132e..c503774a49 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 55915ae859..16f74edd99 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -2,7 +2,7 @@
%
%% File: l3box.dtx
%
-% Copyright (C) 2005-2019 The LaTeX3 Project
+% Copyright (C) 2005-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 4e859699e0..adb399f9da 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -2,7 +2,7 @@
%
%% File: l3candidates.dtx
%
-% Copyright (C) 2012-2019 The LaTeX3 Project
+% Copyright (C) 2012-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -369,6 +369,47 @@
% conversely: sets it to the inverse of its current value.
% \end{function}
%
+% \begin{function}[added = 2019-02-10, EXP, noTF]
+% {\bool_case_true:n, \bool_case_false:n}
+% \begin{syntax}
+% \cs{bool_case_true:nTF} \\
+% ~~|{| \\
+% ~~~~\Arg{boolexpr case_1} \Arg{code case_1} \\
+% ~~~~\Arg{boolexpr case_2} \Arg{code case_2} \\
+% ~~~~\ldots \\
+% ~~~~\Arg{boolexpr case_n} \Arg{code case_n} \\
+% ~~|}| \\
+% ~~\Arg{true code}
+% ~~\Arg{false code}
+% \end{syntax}
+% Evaluates in turn each of the \meta{boolean expression cases} until
+% the first one that evaluates to \texttt{true} or to \texttt{false},
+% for \cs{bool_case_true:n} and \cs{bool_case_false:n}, respectively.
+% The \meta{code} associated to this first case is left in the input
+% stream, followed by the \meta{true code}, and other cases are
+% discarded. If none of the cases match then only the \meta{false
+% code} is inserted. The functions \cs{bool_case_true:n} and
+% \cs{bool_case_false:n}, which do nothing if there is no match, are
+% also available. For example
+% \begin{verbatim}
+% \bool_case_true:nF
+% {
+% { \dim_compare_p:n { \l__mypkg_wd_dim <= 10pt } }
+% { Fits }
+% { \int_compare_p:n { \l__mypkg_total_int >= 10 } }
+% { Many }
+% { \l__mypkg_special_bool }
+% { Special }
+% }
+% { No idea! }
+% \end{verbatim}
+% leaves \enquote{\texttt{Fits}} or \enquote{\texttt{Many}} or
+% \enquote{\texttt{Special}} or \enquote{\texttt{No idea!}} in the
+% input stream, in a way similar to some other language's
+% \enquote{\texttt{if} \ldots\ \texttt{elseif} \ldots\ \texttt{elseif} \ldots\
+% \texttt{else} \ldots}.
+% \end{function}
+%
% \section{Additions to \pkg{l3prop}}
%
% \begin{function}[EXP, added = 2016-12-06]
@@ -534,200 +575,6 @@
%
% \section{Additions to \pkg{l3tl}}
%
-% \begin{function}[EXP, added = 2014-06-30, updated = 2016-01-12]
-% {
-% \tl_lower_case:n, \tl_upper_case:n, \tl_mixed_case:n,
-% \tl_lower_case:nn, \tl_upper_case:nn, \tl_mixed_case:nn
-% }
-% \begin{syntax}
-% \cs{tl_upper_case:n} \Arg{tokens}
-% \cs{tl_upper_case:nn} \Arg{language} \Arg{tokens}
-% \end{syntax}
-% These functions are intended to be applied to input which may be
-% regarded broadly as \enquote{text}. They traverse the \meta{tokens} and
-% change the case of characters as discussed below. The character code of
-% the characters replaced may be arbitrary: the replacement characters
-% have standard document-level category codes ($11$ for letters, $12$ for
-% letter-like characters which can also be case-changed). Begin-group and
-% end-group characters in the \meta{tokens} are normalized and become |{|
-% and |}|, respectively.
-%
-% Importantly, notice that these functions are intended for working with
-% user text for typesetting. For case changing programmatic data see the
-% \pkg{l3str} module and discussion there of \cs{str_lower_case:n},
-% \cs{str_upper_case:n} and \cs{str_fold_case:n}.
-% \end{function}
-%
-% The functions perform expansion on the input in most cases. In particular,
-% input in the form of token lists or expandable functions is expanded
-% \emph{unless} it falls within one of the special handling classes described
-% below. This expansion approach means that in general the result of case
-% changing matches the \enquote{natural} outcome expected from a
-% \enquote{functional} approach to case modification. For example
-% \begin{verbatim}
-% \tl_set:Nn \l_tmpa_tl { hello }
-% \tl_upper_case:n { \l_tmpa_tl \c_space_tl world }
-% \end{verbatim}
-% produces
-% \begin{verbatim}
-% HELLO WORLD
-% \end{verbatim}
-% The expansion approach taken means that in package mode any \LaTeXe{}
-% \enquote{robust} commands which may appear in the input should be converted
-% to engine-protected versions using for example the \tn{robustify} command
-% from the \pkg{etoolbox} package.
-%
-% \begin{variable}{\l_tl_case_change_math_tl}
-% Case changing does not take place within math mode material so for example
-% \begin{verbatim}
-% \tl_upper_case:n { Some~text~$y = mx + c$~with~{Braces} }
-% \end{verbatim}
-% becomes
-% \begin{verbatim}
-% SOME TEXT $y = mx + c$ WITH {BRACES}
-% \end{verbatim}
-% Material inside math mode is left entirely unchanged: in particular, no
-% expansion is undertaken.
-%
-% Detection of math mode is controlled by the list of tokens in
-% \cs{l_tl_case_change_math_tl}, which should be in open--close pairs. In
-% package mode the standard settings is
-% \begin{verbatim}
-% $ $ \( \)
-% \end{verbatim}
-%
-% Note that while expansion occurs when searching the text it does not
-% apply to math mode material (which should be unaffected by case changing).
-% As such, whilst the opening token for math mode may be \enquote{hidden}
-% inside a command/macro, the closing one cannot be as this is being
-% searched for in math mode. Typically, in the types of \enquote{text}
-% the case changing functions are intended to apply to this should not be
-% an issue.
-% \end{variable}
-%
-% \begin{variable}{\l_tl_case_change_exclude_tl}
-% Case changing can be prevented by using any command on the list
-% \cs{l_tl_case_change_exclude_tl}. Each entry should be a function
-% to be followed by one argument: the latter will be preserved as-is
-% with no expansion. Thus for example following
-% \begin{verbatim}
-% \tl_put_right:Nn \l_tl_case_change_exclude_tl { \NoChangeCase }
-% \end{verbatim}
-% the input
-% \begin{verbatim}
-% \tl_upper_case:n
-% { Some~text~$y = mx + c$~with~\NoChangeCase {Protection} }
-% \end{verbatim}
-% will result in
-% \begin{verbatim}
-% SOME TEXT $y = mx + c$ WITH \NoChangeCase {Protection}
-% \end{verbatim}
-% Notice that the case changing mapping preserves the inclusion of
-% the escape functions: it is left to other code to provide suitable
-% definitions (typically equivalent to \cs{use:n}). In particular, the
-% result of case changing is returned protected by \cs{exp_not:n}.
-%
-% When used with \LaTeXe{} the commands |\cite|, |\ensuremath|, |\label|
-% and |\ref| are automatically included in the list for exclusion from
-% case changing.
-% \end{variable}
-%
-% \begin{variable}{\l_tl_case_change_accents_tl}
-% This list specifies accent commands which should be left unexpanded
-% in the output. This allows for example
-% \begin{verbatim}
-% \tl_upper_case:n { \" { a } }
-% \end{verbatim}
-% to yield
-% \begin{verbatim}
-% \" { A }
-% \end{verbatim}
-% irrespective of the expandability of |\"|.
-%
-% The standard contents of this variable is |\"|, |\'|, |\.|, |\^|, |\`|,
-% |\~|, |\c|, |\H|, |\k|, |\r|, |\t|, |\u| and |\v|.
-% \end{variable}
-%
-% \enquote{Mixed} case conversion may be regarded informally as converting the
-% first character of the \meta{tokens} to upper case and the rest to lower
-% case. However, the process is more complex than this as there are some
-% situations where a single lower case character maps to a special form, for
-% example \texttt{ij} in Dutch which becomes \texttt{IJ}. As such,
-% \cs[index=tl_mixed_case:n]{tl_mixed_case:n(n)}
-% implement a more sophisticated mapping which accounts
-% for this and for modifying accents on the first letter. Spaces at the start
-% of the \meta{tokens} are ignored when finding the first \enquote{letter} for
-% conversion.
-% \begin{verbatim}
-% \tl_mixed_case:n { hello~WORLD } % => "Hello world"
-% \tl_mixed_case:n { ~hello~WORLD } % => " Hello world"
-% \tl_mixed_case:n { {hello}~WORLD } % => "{Hello} world"
-% \end{verbatim}
-% When finding the first \enquote{letter} for this process, any content in
-% math mode or covered by \cs{l_tl_case_change_exclude_tl} is ignored.
-%
-% (Note that the Unicode Consortium describe this as \enquote{title case}, but
-% that in English title case applies on a word-by-word basis. The
-% \enquote{mixed} case implemented here is a lower level concept needed for
-% both \enquote{title} and \enquote{sentence} casing of text.)
-%
-% \begin{variable}{\l_tl_mixed_case_ignore_tl}
-% The list of characters to ignore when searching for the first
-% \enquote{letter} in mixed-casing is determined by
-% \cs{l_tl_mixed_change_ignore_tl}. This has the standard setting
-% \begin{verbatim}
-% ( [ { ` -
-% \end{verbatim}
-% where comparisons are made on a character basis.
-% \end{variable}
-%
-% As is generally true for \pkg{expl3}, these functions are designed to
-% work with Unicode input only. As such, UTF-8 input is assumed for
-% \emph{all} engines. When used with \XeTeX{} or \LuaTeX{} a full range of
-% Unicode transformations are enabled. Specifically, the standard mappings
-% here follow those defined by the \href{http://www.unicode.org}^^A
-% {Unicode Consortium} in \texttt{UnicodeData.txt} and
-% \texttt{SpecialCasing.txt}. In the case of $8$-bit engines, mappings
-% are provided for characters which can be represented in output typeset
-% using the |T1| font encoding. Thus for example |ä| can be case-changed
-% using \pdfTeX{}. For \pTeX{} only the ASCII range is covered as the
-% engine treats input outside of this range as east Asian.
-%
-% Context-sensitive mappings are enabled: language-dependent cases are
-% discussed below. Context detection expands input but treats any
-% unexpandable control sequences as \enquote{failures} to match a context.
-%
-% Language-sensitive conversions are enabled using the \meta{language}
-% argument, and follow Unicode Consortium guidelines. Currently, the
-% languages recognised for special handling are as follows.
-% \begin{itemize}
-% \item Azeri and Turkish (\texttt{az} and \texttt{tr}).
-% The case pairs I/i-dotless and I-dot/i are activated for these
-% languages. The combining dot mark is removed when lower
-% casing I-dot and introduced when upper casing i-dotless.
-% \item German (\texttt{de-alt}).
-% An alternative mapping for German in which the lower case
-% \emph{Eszett} maps to a \emph{gro\ss{}es Eszett}.
-% \item Lithuanian (\texttt{lt}).
-% The lower case letters i and j should retain a dot above when the
-% accents grave, acute or tilde are present. This is implemented for
-% lower casing of the relevant upper case letters both when input as
-% single Unicode codepoints and when using combining accents. The
-% combining dot is removed when upper casing in these cases. Note that
-% \emph{only} the accents used in Lithuanian are covered: the behaviour
-% of other accents are not modified.
-% \item Dutch (\texttt{nl}).
-% Capitalisation of \texttt{ij} at the beginning of mixed cased
-% input produces \texttt{IJ} rather than \texttt{Ij}. The output
-% retains two separate letters, thus this transformation \emph{is}
-% available using \pdfTeX{}.
-% \end{itemize}
-%
-% Creating additional context-sensitive mappings requires knowledge
-% of the underlying mapping implementation used here. The team are happy
-% to add these to the kernel where they are well-documented
-% (\emph{e.g.}~in Unicode Consortium or relevant government publications).
-%
% \begin{function}[EXP, added = 2017-07-15]
% {
% \tl_range_braced:Nnn, \tl_range_braced:cnn, \tl_range_braced:nnn,
@@ -848,38 +695,28 @@
% (\enquote{active}), and character code $32$ (space).
% \end{variable}
%
-% \begin{function}[added = 2018-04-06, updated = 2019-05-03, EXP]
-% {
-% \char_lower_case:N, \char_upper_case:N,
-% \char_mixed_case:N, \char_fold_case:N,
-% \char_str_lower_case:N, \char_str_upper_case:N,
-% \char_str_mixed_case:N, \char_str_fold_case:N,
-% }
+% \begin{function}[added = 2020-01-09, EXP]{\char_to_utfviii_bytes:n}
% \begin{syntax}
-% \cs{char_lower_case:N} \meta{char}
-% \end{syntax}
-% Converts the \meta{char} to the equivalent case-changed character
-% as detailed by the function name (see \cs{str_fold_case:n}
-% and \cs{tl_mixed_case:n} for details of these terms). The case mapping
-% is carried out with no context-dependence (\emph{cf.}~\cs{tl_upper_case:n},
-% \emph{etc.}) The \texttt{str} versions always generate \enquote{other}
-% (category code $12$) characters, whilst the standard versions generate
-% characters with the currently-active category code (\emph{i.e.}~as if
-% the character had been read directly here).
-% \end{function}
-%
-% \begin{function}[added = 2018-06-01, EXP]{\char_codepoint_to_bytes:n}
-% \begin{syntax}
-% \cs{char_codepoint_to_bytes:n} \Arg{codepoint}
+% \cs{char_to_utfviii_bytes:n} \Arg{codepoint}
% \end{syntax}
% Converts the (Unicode) \meta{codepoint} to UTF-8 bytes. The expansion
% of this function comprises four brace groups, each of which will contain
% a hexadecimal value: the appropriate byte. As UTF-8 is a variable-length,
-% one or more of the grouos may be empty: the bytes read in the logical order,
+% one or more of the groups may be empty: the bytes read in the logical order,
% such that a two-byte codepoint will have groups |#1| and |#2| filled
% and |#3| and |#4| empty.
% \end{function}
%
+% \begin{function}[added = 2020-01-02, rEXP]{\char_to_nfd:N}
+% \begin{syntax}
+% \cs{char_to_nfd:N} \meta{char}
+% \end{syntax}
+% Converts the \meta{char} to the Unicode Normalization Form Canonical
+% Decomposition. The category code of the generated character is the
+% same as the \meta{char}. With $8$-bit engines, no change is made to the
+% character.
+% \end{function}
+%
% \begin{function}[added = 2018-09-23]
% {
% \peek_catcode_collect_inline:Nn,
@@ -1238,6 +1075,52 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP, noTF]{\bool_case_true:n, \bool_case_false:n}
+% \begin{macro}{\@@_case:NnTF}
+% \begin{macro}{\@@_case_true:w, \@@_case_false:w, \@@_case_end:nw}
+% For boolean cases the overall idea is the same as for
+% \cs{tl_case:nn(TF)} as described in \pkg{l3tl}.
+% \begin{macrocode}
+\cs_new:Npn \bool_case_true:nTF
+ { \exp:w \@@_case:NnTF \c_true_bool }
+\cs_new:Npn \bool_case_true:nT #1#2
+ { \exp:w \@@_case:NnTF \c_true_bool {#1} {#2} { } }
+\cs_new:Npn \bool_case_true:nF #1
+ { \exp:w \@@_case:NnTF \c_true_bool {#1} { } }
+\cs_new:Npn \bool_case_true:n #1
+ { \exp:w \@@_case:NnTF \c_true_bool {#1} { } { } }
+\cs_new:Npn \bool_case_false:nTF
+ { \exp:w \@@_case:NnTF \c_false_bool }
+\cs_new:Npn \bool_case_false:nT #1#2
+ { \exp:w \@@_case:NnTF \c_false_bool {#1} {#2} { } }
+\cs_new:Npn \bool_case_false:nF #1
+ { \exp:w \@@_case:NnTF \c_false_bool {#1} { } }
+\cs_new:Npn \bool_case_false:n #1
+ { \exp:w \@@_case:NnTF \c_false_bool {#1} { } { } }
+\cs_new:Npn \@@_case:NnTF #1#2#3#4
+ {
+ \bool_if:NTF #1 \@@_case_true:w \@@_case_false:w
+ #2 #1 { } \q_mark {#3} \q_mark {#4} \q_stop
+ }
+\cs_new:Npn \@@_case_true:w #1#2
+ {
+ \bool_if:nTF {#1}
+ { \@@_case_end:nw {#2} }
+ { \@@_case_true:w }
+ }
+\cs_new:Npn \@@_case_false:w #1#2
+ {
+ \bool_if:nTF {#1}
+ { \@@_case_false:w }
+ { \@@_case_end:nw {#2} }
+ }
+\cs_new:Npn \@@_case_end:nw #1#2#3 \q_mark #4#5 \q_stop
+ { \exp_end: #1 #4 }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \subsection{Additions to \pkg{l3prop}}
%
% \begin{macrocode}
@@ -1544,1616 +1427,12 @@
% \end{macro}
% \end{macro}
%
-% \subsection{Additions to \pkg{l3tl}}
-%
-% \subsubsection{Unicode case changing}
-%
-% The mechanisms needed for case changing are somewhat involved, particularly
-% to allow for all of the special cases. These functions also require the
-% appropriate data extracted from the Unicode documentation (either manually
-% or automatically).
-%
-% First, some code which \enquote{belongs} in \pkg{l3tokens} but has to come
-% here.
-% \begin{macrocode}
-%<@@=char>
-% \end{macrocode}
-%
-% \begin{macro}[EXP]
-% {
-% \char_lower_case:N, \char_upper_case:N,
-% \char_mixed_case:N, \char_fold_case:N
-% }
-% \begin{macro}[EXP]{\@@_change_case:nNN}
-% \begin{macro}[EXP]{\@@_change_case:nN}
-% \begin{macro}[EXP]{\@@_change_case_multi:nN, \@@_change_case_multi:vN}
-% \begin{macro}[EXP]{\@@_change_case_multi:NNNNw}
-% \begin{macro}[EXP]{\@@_change_case:NNN}
-% \begin{macro}[EXP]{\@@_change_case:NNNN}
-% \begin{macro}[EXP]{\@@_change_case:NN}
-% \begin{macro}[EXP]{\@@_change_case_catcode:N}
-% \begin{macro}[EXP]
-% {
-% \char_str_lower_case:N, \char_str_upper_case:N,
-% \char_str_mixed_case:N, \char_str_fold_case:N
-% }
-% \begin{macro}[EXP]{\@@_str_change_case:nNN}
-% \begin{macro}[EXP]{\@@_str_change_case:nN}
-% Expandable character generation is done using a two-part approach.
-% First, see if the current character has a special mapping for the current
-% transformation. If it does, insert that. Otherwise, use the \TeX{} data
-% to look up the one-to-one mapping, and generate the appropriate character
-% with the appropriate category code. Mixed case needs an extra step as it
-% may be special-cased or might be a special upper case outcome. The internal
-% when using non-Unicode engines has to be set up to only do anything
-% with ASCII characters.
-%
-% To ensure that the category codes produced are predictable, every character
-% is re-generated even if it is otherwise unchanged. This makes life a little
-% interesting when we might have multiple output characters: we have to
-% grab each of them and case change them in reverse order to maintain
-% \texttt{f}-type expandability.
-% \begin{macrocode}
-\cs_new:Npn \char_lower_case:N #1
- { \@@_change_case:nNN { lower } \char_value_lccode:n #1 }
-\cs_new:Npn \char_upper_case:N #1
- { \@@_change_case:nNN { upper } \char_value_uccode:n #1 }
-\cs_new:Npn \char_mixed_case:N #1
- {
- \tl_if_exist:cTF { c_@@_mixed_case_ \token_to_str:N #1 _tl }
- {
- \@@_change_case_multi:vN
- { c_@@_mixed_case_ \token_to_str:N #1 _tl } #1
- }
- { \char_upper_case:N #1 }
- }
-\cs_new:Npn \char_fold_case:N #1
- { \@@_change_case:nNN { fold } \char_value_lccode:n #1 }
-\cs_new:Npn \@@_change_case:nNN #1#2#3
- {
- \tl_if_exist:cTF { c_@@_ #1 _case_ \token_to_str:N #3 _tl }
- {
- \@@_change_case_multi:vN
- { c_@@_ #1 _case_ \token_to_str:N #3 _tl } #3
- }
- { \exp_args:Nf \@@_change_case:nN { #2 { `#3 } } #3 }
- }
-\cs_new:Npn \@@_change_case:nN #1#2
- {
- \int_compare:nNnTF {#1} = 0
- { #2 }
- { \char_generate:nn {#1} { \@@_change_case_catcode:N #2 } }
- }
-\cs_new:Npn \@@_change_case_multi:nN #1#2
- { \@@_change_case_multi:NNNNw #2 #1 \q_no_value \q_no_value \q_stop }
-\cs_generate_variant:Nn \@@_change_case_multi:nN { v }
-\cs_new:Npn \@@_change_case_multi:NNNNw #1#2#3#4#5 \q_stop
- {
- \quark_if_no_value:NTF #4
- {
- \quark_if_no_value:NTF #3
- { \@@_change_case:NN #1 #2 }
- { \@@_change_case:NNN #1 #2#3 }
- }
- { \@@_change_case:NNNN #1 #2#3#4 }
- }
-\cs_new:Npn \@@_change_case:NNN #1#2#3
- {
- \exp_args:Nnf \use:nn
- { \@@_change_case:NN #1 #2 }
- { \@@_change_case:NN #1 #3 }
- }
-\cs_new:Npn \@@_change_case:NNNN #1#2#3#4
- {
- \exp_args:Nnff \use:nnn
- { \@@_change_case:NN #1 #2 }
- { \@@_change_case:NN #1 #3 }
- { \@@_change_case:NN #1 #4 }
- }
-\cs_new:Npn \@@_change_case:NN #1#2
- { \char_generate:nn { `#2 } { \@@_change_case_catcode:N #1 } }
-\cs_new:Npn \@@_change_case_catcode:N #1
- {
- \if_catcode:w \exp_not:N #1 \c_math_toggle_token
- 3
- \else:
- \if_catcode:w \exp_not:N #1 \c_alignment_token
- 4
- \else:
- \if_catcode:w \exp_not:N #1 \c_math_superscript_token
- 7
- \else:
- \if_catcode:w \exp_not:N #1 \c_math_subscript_token
- 8
- \else:
- \if_catcode:w \exp_not:N #1 \c_space_token
- 10
- \else:
- \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
- 11
- \else:
- \if_catcode:w \exp_not:N #1 \c_catcode_other_token
- 12
- \else:
- 13
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- \fi:
- }
-% \end{macrocode}
-% Same story for the string version, except category code is easier
-% to follow. This of course makes this version significantly faster.
-% \begin{macrocode}
-\cs_new:Npn \char_str_lower_case:N #1
- { \@@_str_change_case:nNN { lower } \char_value_lccode:n #1 }
-\cs_new:Npn \char_str_upper_case:N #1
- { \@@_str_change_case:nNN { upper } \char_value_uccode:n #1 }
-\cs_new:Npn \char_str_mixed_case:N #1
- {
- \tl_if_exist:cTF { c_@@_mixed_case_ \token_to_str:N #1 _tl }
- { \tl_to_str:c { c_@@_mixed_case_ \token_to_str:N #1 _tl } }
- { \char_str_upper_case:N #1 }
- }
-\cs_new:Npn \char_str_fold_case:N #1
- { \@@_str_change_case:nNN { fold } \char_value_lccode:n #1 }
-\cs_new:Npn \@@_str_change_case:nNN #1#2#3
- {
- \tl_if_exist:cTF { c_@@_ #1 _case_ \token_to_str:N #3 _tl }
- { \tl_to_str:c { c_@@_ #1 _case_ \token_to_str:N #3 _tl } }
- { \exp_args:Nf \@@_str_change_case:nN { #2 { `#3 } } #3 }
- }
-\cs_new:Npn \@@_str_change_case:nN #1#2
- {
- \int_compare:nNnTF {#1} = 0
- { \tl_to_str:n {#2} }
- { \char_generate:nn {#1} { 12 } }
- }
-\cs_if_exist:NF \tex_Uchar:D
- {
- \cs_set:Npn \@@_str_change_case:nN #1#2
- { \tl_to_str:n {#2} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\char_codepoint_to_bytes:n}
-% \begin{macro}[EXP]{\@@_codepoint_to_bytes_auxi:n}
-% \begin{macro}[EXP]{\@@_codepoint_to_bytes_auxii:Nnn}
-% \begin{macro}[EXP]{\@@_codepoint_to_bytes_auxiii:n}
-% \begin{macro}[EXP]
-% {
-% \@@_codepoint_to_bytes_outputi:nw ,
-% \@@_codepoint_to_bytes_outputii:nw ,
-% \@@_codepoint_to_bytes_outputiii:nw ,
-% \@@_codepoint_to_bytes_outputiv:nw
-% }
-% \begin{macro}[EXP]
-% {\@@_codepoint_to_bytes_output:nnn, \@@_codepoint_to_bytes_output:fnn}
-% \begin{macro}[EXP]{\@@_codepoint_to_bytes_end:}
-% This code converts a codepoint into the correct UTF-8 representation.
-% In terms of the algorithm itself, see
-% \url{https://en.wikipedia.org/wiki/UTF-8} for the octet pattern.
-% \begin{macrocode}
-\cs_new:Npn \char_codepoint_to_bytes:n #1
- {
- \exp_args:Nf \@@_codepoint_to_bytes_auxi:n
- { \int_eval:n {#1} }
- }
-\cs_new:Npn \@@_codepoint_to_bytes_auxi:n #1
- {
- \if_int_compare:w #1 > "80 \exp_stop_f:
- \if_int_compare:w #1 < "800 \exp_stop_f:
- \@@_codepoint_to_bytes_outputi:nw
- { \@@_codepoint_to_bytes_auxii:Nnn C {#1} { 64 } }
- \@@_codepoint_to_bytes_outputii:nw
- { \@@_codepoint_to_bytes_auxiii:n {#1} }
- \else:
- \if_int_compare:w #1 < "10000 \exp_stop_f:
- \@@_codepoint_to_bytes_outputi:nw
- { \@@_codepoint_to_bytes_auxii:Nnn E {#1} { 64 * 64 } }
- \@@_codepoint_to_bytes_outputii:nw
- {
- \@@_codepoint_to_bytes_auxiii:n
- { \int_div_truncate:nn {#1} { 64 } }
- }
- \@@_codepoint_to_bytes_outputiii:nw
- { \@@_codepoint_to_bytes_auxiii:n {#1} }
- \else:
- \@@_codepoint_to_bytes_outputi:nw
- {
- \@@_codepoint_to_bytes_auxii:Nnn F
- {#1} { 64 * 64 * 64 }
- }
- \@@_codepoint_to_bytes_outputii:nw
- {
- \@@_codepoint_to_bytes_auxiii:n
- { \int_div_truncate:nn {#1} { 64 * 64 } }
- }
- \@@_codepoint_to_bytes_outputiii:nw
- {
- \@@_codepoint_to_bytes_auxiii:n
- { \int_div_truncate:nn {#1} { 64 } }
- }
- \@@_codepoint_to_bytes_outputiv:nw
- { \@@_codepoint_to_bytes_auxiii:n {#1} }
- \fi:
- \fi:
- \else:
- \@@_codepoint_to_bytes_outputi:nw {#1}
- \fi:
- \@@_codepoint_to_bytes_end: { } { } { } { }
- }
-\cs_new:Npn \@@_codepoint_to_bytes_auxii:Nnn #1#2#3
- { "#10 + \int_div_truncate:nn {#2} {#3} }
-\cs_new:Npn \@@_codepoint_to_bytes_auxiii:n #1
- { \int_mod:nn {#1} { 64 } + 128 }
-\cs_new:Npn \@@_codepoint_to_bytes_outputi:nw
- #1 #2 \@@_codepoint_to_bytes_end: #3
- { \@@_codepoint_to_bytes_output:fnn { \int_eval:n {#1} } { } {#2} }
-\cs_new:Npn \@@_codepoint_to_bytes_outputii:nw
- #1 #2 \@@_codepoint_to_bytes_end: #3#4
- { \@@_codepoint_to_bytes_output:fnn { \int_eval:n {#1} } { {#3} } {#2} }
-\cs_new:Npn \@@_codepoint_to_bytes_outputiii:nw
- #1 #2 \@@_codepoint_to_bytes_end: #3#4#5
- {
- \@@_codepoint_to_bytes_output:fnn
- { \int_eval:n {#1} } { {#3} {#4} } {#2}
- }
-\cs_new:Npn \@@_codepoint_to_bytes_outputiv:nw
- #1 #2 \@@_codepoint_to_bytes_end: #3#4#5#6
- {
- \@@_codepoint_to_bytes_output:fnn
- { \int_eval:n {#1} } { {#3} {#4} {#5} } {#2}
- }
-\cs_new:Npn \@@_codepoint_to_bytes_output:nnn #1#2#3
- {
- #3
- \@@_codepoint_to_bytes_end: #2 {#1}
- }
-\cs_generate_variant:Nn \@@_codepoint_to_bytes_output:nnn { f }
-\cs_new:Npn \@@_codepoint_to_bytes_end: { }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \subsubsection{Building a token list}
%
% \begin{macrocode}
%<@@=tl>
% \end{macrocode}
%
-% \begin{macro}[EXP]{\tl_lower_case:n, \tl_upper_case:n, \tl_mixed_case:n}
-% \begin{macro}[EXP]{\tl_lower_case:nn, \tl_upper_case:nn, \tl_mixed_case:nn}
-% The user level functions here are all wrappers around the internal
-% functions for case changing.
-% \begin{macrocode}
-\cs_new:Npn \tl_lower_case:n { \@@_change_case:nnn { lower } { } }
-\cs_new:Npn \tl_upper_case:n { \@@_change_case:nnn { upper } { } }
-\cs_new:Npn \tl_mixed_case:n { \@@_change_case:nnn { mixed } { } }
-\cs_new:Npn \tl_lower_case:nn { \@@_change_case:nnn { lower } }
-\cs_new:Npn \tl_upper_case:nn { \@@_change_case:nnn { upper } }
-\cs_new:Npn \tl_mixed_case:nn { \@@_change_case:nnn { mixed } }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_change_case:nnn}
-% \begin{macro}[EXP]{\@@_change_case_aux:nnn}
-% \begin{macro}[EXP]{\@@_change_case_loop:wnn}
-% \begin{macro}[EXP]
-% {
-% \@@_change_case_output:nwn ,
-% \@@_change_case_output:Vwn ,
-% \@@_change_case_output:own ,
-% \@@_change_case_output:vwn ,
-% \@@_change_case_output:fwn ,
-% }
-% \begin{macro}[EXP]{\@@_change_case_end:wn}
-% \begin{macro}[EXP]{\@@_change_case_group:nwnn}
-% \begin{macro}[EXP]
-% {
-% \@@_change_case_group_lower:nnnn ,
-% \@@_change_case_group_upper:nnnn ,
-% \@@_change_case_group_mixed:nnnn
-% }
-% \begin{macro}[EXP]{\@@_change_case_space:wnn}
-% \begin{macro}[EXP]{\@@_change_case_N_type:Nwnn}
-% \begin{macro}[EXP]{\@@_change_case_N_type:NNNnnn}
-% \begin{macro}[EXP]{\@@_change_case_math:NNNnnn}
-% \begin{macro}[EXP]{\@@_change_case_math_loop:wNNnn}
-% \begin{macro}[EXP]{\@@_change_case_math:NwNNnn}
-% \begin{macro}[EXP]{\@@_change_case_math_group:nwNNnn}
-% \begin{macro}[EXP]{\@@_change_case_math_space:wNNnn}
-% \begin{macro}[EXP]{\@@_change_case_N_type:Nnnn}
-% \begin{macro}[EXP]
-% {
-% \@@_change_case_char_lower:Nnn ,
-% \@@_change_case_char_upper:Nnn ,
-% \@@_change_case_char_mixed:Nnn
-% }
-% \begin{macro}[EXP]{\@@_change_case_char:nN}
-% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNN}
-% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNNN}
-% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nNNNN}
-% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nn}
-% \begin{macro}[EXP]{\@@_change_case_cs_letterlike:Nn}
-% \begin{macro}[EXP]{\@@_change_case_cs_letterlike:NnN}
-% \begin{macro}[EXP]{\@@_change_case_cs_accents:NN}
-% \begin{macro}[EXP]{\@@_change_case_cs:N}
-% \begin{macro}[EXP]{\@@_change_case_cs:NN}
-% \begin{macro}[EXP]{\@@_change_case_cs:NNn}
-% \begin{macro}[EXP]{\@@_change_case_protect:wNN}
-% \begin{macro}[EXP]{\@@_change_case_if_expandable:NTF}
-% \begin{macro}[EXP]{\@@_change_case_cs_expand:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_cs_expand:NN}
-% \begin{macro}[EXP]{\@@_change_case_mixed_skip:N}
-% \begin{macro}[EXP]{\@@_change_case_mixed_skip:NN}
-% \begin{macro}[EXP]{\@@_change_case_mixed_skip_tidy:Nwn}
-% \begin{macro}[EXP]{\@@_change_case_mixed_switch:w}
-% The mechanism for the core conversion of case is based on the idea that
-% we can use a loop to grab the entire token list plus a quark: the latter is
-% used as an end marker and to avoid any brace stripping. Depending on the
-% nature of the first item in the grabbed argument, it can either processed
-% as a single token, treated as a group or treated as a space. These
-% different cases all work by re-reading |#1| in the appropriate way, hence
-% the repetition of |#1 \q_recursion_stop|.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case:nnn #1#2#3
- {
- \__kernel_exp_not:w \exp_after:wN
- {
- \exp:w
- \@@_change_case_aux:nnn {#1} {#2} {#3}
- }
- }
-\cs_new:Npn \@@_change_case_aux:nnn #1#2#3
- {
- \group_align_safe_begin:
- \@@_change_case_loop:wnn
- #3 \q_recursion_tail \q_recursion_stop {#1} {#2}
- \@@_change_case_result:n { }
- }
-\cs_new:Npn \@@_change_case_loop:wnn #1 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_change_case_N_type:Nwnn }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_change_case_group:nwnn }
- { \@@_change_case_space:wnn }
- }
- #1 \q_recursion_stop
- }
-% \end{macrocode}
-% Earlier versions of the code where only \texttt{x}-type expandable rather
-% than \texttt{f}-type: this causes issues with nesting and so the slight
-% performance hit is taken for a better outcome in usability terms. Setting
-% up for \texttt{f}-type expandability has two requirements: a marker
-% token after the main loop (see above) and a mechanism to \enquote{load}
-% and finalise the result. That is handled in the code below, which includes
-% the necessary material to end the \cs{exp:w} expansion.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_output:nwn #1#2 \@@_change_case_result:n #3
- { #2 \@@_change_case_result:n { #3 #1 } }
-\cs_generate_variant:Nn \@@_change_case_output:nwn { V , o , v , f }
-\cs_new:Npn \@@_change_case_end:wn #1 \@@_change_case_result:n #2
- {
- \group_align_safe_end:
- \exp_end:
- #2
- }
-% \end{macrocode}
-% Handling for the cases where the current argument is a brace group or
-% a space is relatively easy. For the brace case, the routine works
-% recursively, using the expandability of the mechanism to ensure that the
-% result is finalised before storage. For the space case it is simply a
-% question of removing the space in the input and storing it in the output.
-% In both cases, and indeed for the \texttt{N}-type grabber, after removing
-% the current item from the input \cs{@@_change_case_loop:wnn} is inserted
-% in front of the remaining tokens.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_group:nwnn #1#2 \q_recursion_stop #3#4
- {
- \use:c { @@_change_case_group_ #3 : nnnn } {#1} {#2} {#3} {#4}
- }
-\cs_new:Npn \@@_change_case_group_lower:nnnn #1#2#3#4
- {
- \@@_change_case_output:own
- {
- \exp_after:wN
- {
- \exp:w
- \@@_change_case_aux:nnn {#3} {#4} {#1}
- }
- }
- \@@_change_case_loop:wnn #2 \q_recursion_stop {#3} {#4}
- }
-\cs_new_eq:NN \@@_change_case_group_upper:nnnn
- \@@_change_case_group_lower:nnnn
-% \end{macrocode}
-% For the \enquote{mixed} case, a group is taken as forcing a switch to lower
-% casing. That means we need a separate auxiliary. (Tracking whether we have
-% found a first character inside a group and transferring the information out
-% looks pretty horrible.)
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_group_mixed:nnnn #1#2#3#4
- {
- \@@_change_case_output:own
- {
- \exp_after:wN
- {
- \exp:w
- \@@_change_case_aux:nnn {#3} {#4} {#1}
- }
- }
- \@@_change_case_loop:wnn #2 \q_recursion_stop { lower } {#4}
- }
-\exp_last_unbraced:NNo \cs_new:Npn \@@_change_case_space:wnn \c_space_tl
- {
- \@@_change_case_output:nwn { ~ }
- \@@_change_case_loop:wnn
- }
-% \end{macrocode}
-% For \texttt{N}-type arguments there are several stages to the approach.
-% First, a simply check for the end-of-input marker, which if found triggers
-% the final clean up and output step. Assuming that is not the case, the
-% first check is for math-mode escaping: this test can encompass control
-% sequences or other \texttt{N}-type tokens so is handled up front.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_N_type:Nwnn #1#2 \q_recursion_stop
- {
- \quark_if_recursion_tail_stop_do:Nn #1
- { \@@_change_case_end:wn }
- \exp_after:wN \@@_change_case_N_type:NNNnnn
- \exp_after:wN #1 \l_tl_case_change_math_tl
- \q_recursion_tail ? \q_recursion_stop {#2}
- }
-% \end{macrocode}
-% Looking for math mode escape first requires a loop over the possible
-% token pairs to see if the current input (|#1|) matches an open-math case
-% (|#2|). If if does then this test loop is ended and a new input-gathering
-% one is begun. The latter simply transfers material from the input to the
-% output without any expansion, testing each \texttt{N}-type token to see
-% if it matches the close-math case required. If that is the situation then
-% the \enquote{math loop} stops and resumes the main loop: as that might
-% be either the standard case-changing one or the mixed-case alternative,
-% it is not hard-coded into the math loop but is rather passed as argument
-% |#3| to \cs{@@_change_case_math:NNNnnn}. If no close-math token is found
-% then the final clean-up is forced (\emph{i.e.}~there is no assumption
-% of \enquote{well-behaved} input in terms of math mode).
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_N_type:NNNnnn #1#2#3
- {
- \quark_if_recursion_tail_stop_do:Nn #2
- { \@@_change_case_N_type:Nnnn #1 }
- \token_if_eq_meaning:NNTF #1 #2
- {
- \use_i_delimit_by_q_recursion_stop:nw
- {
- \@@_change_case_math:NNNnnn
- #1 #3 \@@_change_case_loop:wnn
- }
- }
- { \@@_change_case_N_type:NNNnnn #1 }
- }
-\cs_new:Npn \@@_change_case_math:NNNnnn #1#2#3#4
- {
- \@@_change_case_output:nwn {#1}
- \@@_change_case_math_loop:wNNnn #4 \q_recursion_stop #2 #3
- }
-\cs_new:Npn \@@_change_case_math_loop:wNNnn #1 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_change_case_math:NwNNnn }
- {
- \tl_if_head_is_group:nTF {#1}
- { \@@_change_case_math_group:nwNNnn }
- { \@@_change_case_math_space:wNNnn }
- }
- #1 \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_math:NwNNnn #1#2 \q_recursion_stop #3#4
- {
- \token_if_eq_meaning:NNTF \q_recursion_tail #1
- { \@@_change_case_end:wn }
- {
- \@@_change_case_output:nwn {#1}
- \token_if_eq_meaning:NNTF #1 #3
- { #4 #2 \q_recursion_stop }
- { \@@_change_case_math_loop:wNNnn #2 \q_recursion_stop #3#4 }
- }
- }
-\cs_new:Npn \@@_change_case_math_group:nwNNnn #1#2 \q_recursion_stop
- {
- \@@_change_case_output:nwn { {#1} }
- \@@_change_case_math_loop:wNNnn #2 \q_recursion_stop
- }
-\exp_last_unbraced:NNo
- \cs_new:Npn \@@_change_case_math_space:wNNnn \c_space_tl
- {
- \@@_change_case_output:nwn { ~ }
- \@@_change_case_math_loop:wNNnn
- }
-% \end{macrocode}
-% Once potential math-mode cases are filtered out the next stage is to
-% test if the token grabbed is a control sequence: they cannot be used in
-% the lookup table and also may require expansion. At this stage the loop
-% code starting \cs{@@_change_case_loop:wnn} is inserted: all subsequent
-% steps in the code which need a look-ahead are coded to rely on this and
-% thus have \texttt{w}-type arguments if they may do a look-ahead.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_N_type:Nnnn #1#2#3#4
- {
- \token_if_cs:NTF #1
- { \@@_change_case_cs_letterlike:Nn #1 {#3} }
- { \use:c { @@_change_case_char_ #3 :Nnn } #1 {#3} {#4} }
- \@@_change_case_loop:wnn #2 \q_recursion_stop {#3} {#4}
- }
-% \end{macrocode}
-% For character tokens there are some special cases to deal with then
-% the majority of changes are covered by using the \TeX{} data as a lookup
-% along with expandable character generation. This avoids needing a very
-% large number of macros or (as seen in earlier versions) a somewhat tricky
-% split of the characters into various blocks. Notice that the special case
-% code may do a look-ahead so requires a final \texttt{w}-type argument
-% whereas the core lookup table does not and also guarantees an output so
-% \texttt{f}-type expansion may be used to obtain the case-changed result.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_char_lower:Nnn #1#2#3
- {
- \cs_if_exist_use:cF { @@_change_case_ #2 _ #3 :Nnw }
- { \use_ii:nn }
- #1
- {
- \use:c { @@_change_case_ #2 _ sigma:Nnw } #1
- { \@@_change_case_char:nN {#2} #1 }
- }
- }
-\cs_new_eq:NN \@@_change_case_char_upper:Nnn
- \@@_change_case_char_lower:Nnn
-% \end{macrocode}
-% For mixed case, the code is somewhat different: there is a need to
-% look up both mixed and upper case chars and we have to cover the
-% situation where there is a character to skip over.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_char_mixed:Nnn #1#2#3
- {
- \@@_change_case_mixed_switch:w
- \cs_if_exist_use:cF { @@_change_case_mixed_ #3 :Nnw }
- {
- \cs_if_exist_use:cF { @@_change_case_upper_ #3 :Nnw }
- { \use_ii:nn }
- }
- #1
- { \@@_change_case_mixed_skip:N #1 }
- }
-% \end{macrocode}
-% For Unicode engines we can handle all characters directly. However, for
-% the $8$-bit engines the aim is to deal with (a subset of) Unicode (UTF-8)
-% input. They deal with that by making the upper half of the range active,
-% so we look for that and if found work out how many UTF-8 octets there
-% are to deal with. Those can then be grabbed to reconstruct the full
-% Unicode character, which is then used in a lookup. (As will become
-% obvious below, there is no intention here of covering all of Unicode.)
-% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_change_case_char:nN #1#2
- {
- \@@_change_case_output:fwn
- { \use:c { char_ #1 _case:N } #2 }
- }
- }
- {
- \cs_new:Npn \@@_change_case_char:nN #1#2
- {
- \int_compare:nNnTF { `#2 } > { "80 }
- {
- \int_compare:nNnTF { `#2 } < { "E0 }
- { \@@_change_case_char_UTFviii:nNNN {#1} #2 }
- {
- \int_compare:nNnTF { `#2 } < { "F0 }
- { \@@_change_case_char_UTFviii:nNNNN {#1} #2 }
- { \@@_change_case_char_UTFviii:nNNNNN {#1} #2 }
- }
- }
- {
- \@@_change_case_output:fwn
- { \use:c { char_ #1 _case:N } #2 }
- }
- }
- }
-% \end{macrocode}
-% To allow for the special case of mixed case, we insert here a
-% action-dependent auxiliary.
-% \begin{macrocode}
-\bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_change_case_char_UTFviii:nNNN #1#2#3#4
- { \@@_change_case_char_UTFviii:nnN {#1} {#2#4} #3 }
- \cs_new:Npn \@@_change_case_char_UTFviii:nNNNN #1#2#3#4#5
- { \@@_change_case_char_UTFviii:nnN {#1} {#2#4#5} #3 }
- \cs_new:Npn \@@_change_case_char_UTFviii:nNNNNN #1#2#3#4#5#6
- { \@@_change_case_char_UTFviii:nnN {#1} {#2#4#5#6} #3 }
- \cs_new:Npn \@@_change_case_char_UTFviii:nnN #1#2#3
- {
- \cs_if_exist:cTF { c_@@_ #1 _case_ \tl_to_str:n {#2} _tl }
- {
- \@@_change_case_output:vwn
- { c_@@_ #1 _case_ \tl_to_str:n {#2} _tl }
- }
- { \@@_change_case_output:nwn {#2} }
- #3
- }
- }
-% \end{macrocode}
-% Before dealing with general control sequences there are the special
-% ones to deal with. Letter-like control sequences are a simple look-up,
-% while for accents the loop is much as done elsewhere. Notice that
-% we have a no-op test to make sure there is no unexpected expansion of
-% letter-like input. The split into two parts here allows us to insert
-% the \enquote{switch} code for mixed casing.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_cs_letterlike:Nn #1#2
- {
- \str_if_eq:nnTF {#2} { mixed }
- {
- \@@_change_case_cs_letterlike:NnN #1 { upper }
- \@@_change_case_mixed_switch:w
- }
- { \@@_change_case_cs_letterlike:NnN #1 {#2} \prg_do_nothing: }
- }
-\cs_new:Npn \@@_change_case_cs_letterlike:NnN #1#2#3
- {
- \cs_if_exist:cTF { c_@@_change_case_ #2 _ \token_to_str:N #1 _tl }
- {
- \@@_change_case_output:vwn
- { c_@@_change_case_ #2 _ \token_to_str:N #1 _tl }
- #3
- }
- {
- \cs_if_exist:cTF
- {
- c_@@_change_case_
- \str_if_eq:nnTF {#2} { lower } { upper } { lower }
- _ \token_to_str:N #1 _tl
- }
- {
- \@@_change_case_output:nwn {#1}
- #3
- }
- {
- \exp_after:wN \@@_change_case_cs_accents:NN
- \exp_after:wN #1 \l_tl_case_change_accents_tl
- \q_recursion_tail \q_recursion_stop
- }
- }
- }
-\cs_new:Npn \@@_change_case_cs_accents:NN #1#2
- {
- \quark_if_recursion_tail_stop_do:Nn #2
- { \@@_change_case_cs:N #1 }
- \str_if_eq:nnTF {#1} {#2}
- {
- \use_i_delimit_by_q_recursion_stop:nw
- { \@@_change_case_output:nwn {#1} }
- }
- { \@@_change_case_cs_accents:NN #1 }
- }
-% \end{macrocode}
-% To deal with a control sequence there is first a need to test if it is
-% on the list which indicate that case changing should be skipped. That's
-% done using a loop as for the other special cases. If a hit is found then
-% the argument is grabbed: that comes \emph{after} the loop function which
-% is therefore rearranged. In a \LaTeXe{} context, \tn{protect} needs
-% to be treated specially, to prevent expansion of the next token but
-% output it without braces.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_cs:N #1
- {
-%<*package>
- \str_if_eq:nnTF {#1} { \protect } { \@@_change_case_protect:wNN }
-%</package>
- \exp_after:wN \@@_change_case_cs:NN
- \exp_after:wN #1 \l_tl_case_change_exclude_tl
- \q_recursion_tail \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_cs:NN #1#2
- {
- \quark_if_recursion_tail_stop_do:Nn #2
- {
- \@@_change_case_cs_expand:Nnw #1
- { \@@_change_case_output:nwn {#1} }
- }
- \str_if_eq:nnTF {#1} {#2}
- {
- \use_i_delimit_by_q_recursion_stop:nw
- { \@@_change_case_cs:NNn #1 }
- }
- { \@@_change_case_cs:NN #1 }
- }
-\cs_new:Npn \@@_change_case_cs:NNn #1#2#3
- {
- \@@_change_case_output:nwn { #1 {#3} }
- #2
- }
-%<*package>
-\cs_new:Npn \@@_change_case_protect:wNN #1 \q_recursion_stop #2 #3
- { \@@_change_case_output:nwn { \protect #3 } #2 }
-%</package>
-% \end{macrocode}
-% When a control sequence is not on the exclude list the other test if
-% to see if it is expandable. Once again, if there is a hit then the loop
-% function is grabbed as part of the clean-up and reinserted before the
-% now expanded material. The test for expandability has to check for
-% end-of-recursion as it is needed by the look-ahead code which might hit
-% the end of the input. The test is done in two parts as \cs{bool_if:nTF}
-% would choke if |#1| was |(|!
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_if_expandable:NTF #1
- {
- \token_if_expandable:NTF #1
- {
- \bool_lazy_any:nTF
- {
- { \token_if_eq_meaning_p:NN \q_recursion_tail #1 }
- { \token_if_protected_macro_p:N #1 }
- { \token_if_protected_long_macro_p:N #1 }
- }
- { \use_ii:nn }
- { \use_i:nn }
- }
- { \use_ii:nn }
- }
-\cs_new:Npn \@@_change_case_cs_expand:Nnw #1#2
- {
- \@@_change_case_if_expandable:NTF #1
- { \@@_change_case_cs_expand:NN #1 }
- { #2 }
- }
-\cs_new:Npn \@@_change_case_cs_expand:NN #1#2
- { \exp_after:wN #2 #1 }
-% \end{macrocode}
-% For mixed case, there is an additional list of exceptions to deal with:
-% once that is sorted, we can move on back to the main loop.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_mixed_skip:N #1
- {
- \exp_after:wN \@@_change_case_mixed_skip:NN
- \exp_after:wN #1 \l_tl_mixed_case_ignore_tl
- \q_recursion_tail \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_mixed_skip:NN #1#2
- {
- \quark_if_recursion_tail_stop_do:nn {#2}
- { \@@_change_case_char:nN { mixed } #1 }
- \int_compare:nNnT { `#1 } = { `#2 }
- {
- \use_i_delimit_by_q_recursion_stop:nw
- {
- \@@_change_case_output:nwn {#1}
- \@@_change_case_mixed_skip_tidy:Nwn
- }
- }
- \@@_change_case_mixed_skip:NN #1
- }
-\cs_new:Npn \@@_change_case_mixed_skip_tidy:Nwn #1#2 \q_recursion_stop #3
- {
- \@@_change_case_loop:wnn #2 \q_recursion_stop { mixed }
- }
-% \end{macrocode}
-% Needed to switch from mixed to lower casing when we have found a
-% first character in the former mode.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_mixed_switch:w
- #1 \@@_change_case_loop:wnn #2 \q_recursion_stop #3
- {
- #1
- \@@_change_case_loop:wnn #2 \q_recursion_stop { lower }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:w}
-% \begin{macro}[EXP]{\@@_change_case_lower_sigma:Nw}
-% \begin{macro}[EXP]{\@@_change_case_upper_sigma:Nnw}
-% If the current char is an upper case sigma, the a check is made on the next
-% item in the input. If it is \texttt{N}-type and not a control sequence
-% then there is a look-ahead phase.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_sigma:Nnw #1#2#3#4 \q_recursion_stop
- {
- \int_compare:nNnTF { `#1 } = { "03A3 }
- {
- \@@_change_case_output:fwn
- { \@@_change_case_lower_sigma:w #4 \q_recursion_stop }
- }
- {#2}
- #3 #4 \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_lower_sigma:w #1 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nTF {#1}
- { \@@_change_case_lower_sigma:Nw #1 \q_recursion_stop }
- { \c_@@_final_sigma_tl }
- }
-\cs_new:Npn \@@_change_case_lower_sigma:Nw #1#2 \q_recursion_stop
- {
- \@@_change_case_if_expandable:NTF #1
- {
- \exp_after:wN \@@_change_case_lower_sigma:w #1
- #2 \q_recursion_stop
- }
- {
- \token_if_letter:NTF #1
- { \c_@@_std_sigma_tl }
- { \c_@@_final_sigma_tl }
- }
- }
-% \end{macrocode}
-% Simply skip to the final step for upper casing.
-% \begin{macrocode}
-\cs_new_eq:NN \@@_change_case_upper_sigma:Nnw \use_ii:nn
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_change_case_lower_tr:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_tr_auxi:Nw}
-% \begin{macro}[EXP]{\@@_change_case_lower_tr_auxii:Nw}
-% \begin{macro}[EXP]{\@@_change_case_upper_tr:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_az:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_az:Nnw}
-% The Turkic languages need special treatment for dotted-i and dotless-i.
-% The lower casing rule can be expressed in terms of searching first for
-% either a dotless-I or a dotted-I. In the latter case the mapping is
-% easy, but in the former there is a second stage search.
-% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_new:Npn \@@_change_case_lower_tr:Nnw #1#2
- {
- \int_compare:nNnTF { `#1 } = { "0049 }
- { \@@_change_case_lower_tr_auxi:Nw }
- {
- \int_compare:nNnTF { `#1 } = { "0130 }
- { \@@_change_case_output:nwn { i } }
- {#2}
- }
- }
-% \end{macrocode}
-% After a dotless-I there may be a dot-above character. If there is then
-% a dotted-i should be produced, otherwise output a dotless-i. When the
-% combination is found both the dotless-I and the dot-above char have to
-% be removed from the input, which is done by the \cs{use_i:nn}
-% (it grabs \cs{@@_change_case_loop:wn} and the dot-above char and
-% discards the latter).
-% \begin{macrocode}
- \cs_new:Npn \@@_change_case_lower_tr_auxi:Nw #1#2 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nTF {#2}
- { \@@_change_case_lower_tr_auxii:Nw #2 \q_recursion_stop }
- { \@@_change_case_output:Vwn \c_@@_dotless_i_tl }
- #1 #2 \q_recursion_stop
- }
- \cs_new:Npn \@@_change_case_lower_tr_auxii:Nw #1#2 \q_recursion_stop
- {
- \@@_change_case_if_expandable:NTF #1
- {
- \exp_after:wN \@@_change_case_lower_tr_auxi:Nw #1
- #2 \q_recursion_stop
- }
- {
- \bool_lazy_or:nnTF
- { \token_if_cs_p:N #1 }
- { ! \int_compare_p:nNn { `#1 } = { "0307 } }
- { \@@_change_case_output:Vwn \c_@@_dotless_i_tl }
- {
- \@@_change_case_output:nwn { i }
- \use_i:nn
- }
- }
- }
- }
-% \end{macrocode}
-% For $8$-bit engines, dot-above is not available so there is a simple
-% test for an upper-case I. Then we can look for the UTF-8 representation of
-% an upper case dotted-I without the combining char. If it's not there,
-% preserve the UTF-8 sequence as-is.
-% \begin{macrocode}
- {
- \cs_new:Npn \@@_change_case_lower_tr:Nnw #1#2
- {
- \int_compare:nNnTF { `#1 } = { "0049 }
- { \@@_change_case_output:Vwn \c_@@_dotless_i_tl }
- {
- \int_compare:nNnTF { `#1 } = { 196 }
- { \@@_change_case_lower_tr_auxi:Nw #1 {#2} }
- {#2}
- }
- }
- \cs_new:Npn \@@_change_case_lower_tr_auxi:Nw #1#2#3#4
- {
- \int_compare:nNnTF { `#4 } = { 176 }
- {
- \@@_change_case_output:nwn { i }
- #3
- }
- {
- #2
- #3 #4
- }
- }
- }
-% \end{macrocode}
-% Upper casing is easier: just one exception with no context.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_tr:Nnw #1#2
- {
- \int_compare:nNnTF { `#1 } = { "0069 }
- { \@@_change_case_output:Vwn \c_@@_dotted_I_tl }
- {#2}
- }
-% \end{macrocode}
-% Straight copies.
-% \begin{macrocode}
-\cs_new_eq:NN \@@_change_case_lower_az:Nnw \@@_change_case_lower_tr:Nnw
-\cs_new_eq:NN \@@_change_case_upper_az:Nnw \@@_change_case_upper_tr:Nnw
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}[EXP]{\@@_change_case_lower_lt:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_lt:nNnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_lt:nnw}
-% \begin{macro}[EXP]{\@@_change_case_lower_lt:Nw}
-% \begin{macro}[EXP]{\@@_change_case_lower_lt:NNw}
-% \begin{macro}[EXP]{\@@_change_case_upper_lt:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_lt:nnw}
-% \begin{macro}[EXP]{\@@_change_case_upper_lt:Nw}
-% \begin{macro}[EXP]{\@@_change_case_upper_lt:NNw}
-% For Lithuanian, the issue to be dealt with is dots over lower case
-% letters: these should be present if there is another accent. That means
-% that there is some work to do when lower casing I and J. The first step
-% is a simple match attempt: \cs{c_@@_accents_lt_tl} contains
-% accented upper case letters which should gain a dot-above char in their
-% lower case form. This is done using \texttt{f}-type expansion so only one
-% pass is needed to find if it works or not. If there was no hit, the second
-% stage is to check for I, J and I-ogonek, and if the current char is a
-% match to look for a following accent.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_lt:Nnw #1
- {
- \exp_args:Nf \@@_change_case_lower_lt:nNnw
- { \str_case:nVF #1 \c_@@_accents_lt_tl \exp_stop_f: }
- #1
- }
-\cs_new:Npn \@@_change_case_lower_lt:nNnw #1#2
- {
- \tl_if_blank:nTF {#1}
- {
- \exp_args:Nf \@@_change_case_lower_lt:nnw
- {
- \int_case:nnF {`#2}
- {
- { "0049 } i
- { "004A } j
- { "012E } \c_@@_i_ogonek_tl
- }
- \exp_stop_f:
- }
- }
- {
- \@@_change_case_output:nwn {#1}
- \use_none:n
- }
- }
-\cs_new:Npn \@@_change_case_lower_lt:nnw #1#2
- {
- \tl_if_blank:nTF {#1}
- {#2}
- {
- \@@_change_case_output:nwn {#1}
- \@@_change_case_lower_lt:Nw
- }
- }
-% \end{macrocode}
-% Grab the next char and see if it is one of the accents used in Lithuanian:
-% if it is, add the dot-above char into the output.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_lower_lt:Nw #1#2 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nT {#2}
- { \@@_change_case_lower_lt:NNw }
- #1 #2 \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_lower_lt:NNw #1#2#3 \q_recursion_stop
- {
- \@@_change_case_if_expandable:NTF #2
- {
- \exp_after:wN \@@_change_case_lower_lt:Nw \exp_after:wN #1 #2
- #3 \q_recursion_stop
- }
- {
- \bool_lazy_and:nnT
- { ! \token_if_cs_p:N #2 }
- {
- \bool_lazy_any_p:n
- {
- { \int_compare_p:nNn { `#2 } = { "0300 } }
- { \int_compare_p:nNn { `#2 } = { "0301 } }
- { \int_compare_p:nNn { `#2 } = { "0303 } }
- }
- }
- { \@@_change_case_output:Vwn \c_@@_dot_above_tl }
- #1 #2#3 \q_recursion_stop
- }
- }
-% \end{macrocode}
-% For upper casing, the test required is for a dot-above char after an I,
-% J or I-ogonek. First a test for the appropriate letter, and if found a
-% look-ahead and potentially one token dropped.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_upper_lt:Nnw #1
- {
- \exp_args:Nf \@@_change_case_upper_lt:nnw
- {
- \int_case:nnF {`#1}
- {
- { "0069 } I
- { "006A } J
- { "012F } \c_@@_I_ogonek_tl
- }
- \exp_stop_f:
- }
- }
-\cs_new:Npn \@@_change_case_upper_lt:nnw #1#2
- {
- \tl_if_blank:nTF {#1}
- {#2}
- {
- \@@_change_case_output:nwn {#1}
- \@@_change_case_upper_lt:Nw
- }
- }
-\cs_new:Npn \@@_change_case_upper_lt:Nw #1#2 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nT {#2}
- { \@@_change_case_upper_lt:NNw }
- #1 #2 \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_upper_lt:NNw #1#2#3 \q_recursion_stop
- {
- \@@_change_case_if_expandable:NTF #2
- {
- \exp_after:wN \@@_change_case_upper_lt:Nw \exp_after:wN #1 #2
- #3 \q_recursion_stop
- }
- {
- \bool_lazy_and:nnTF
- { ! \token_if_cs_p:N #2 }
- { \int_compare_p:nNn { `#2 } = { "0307 } }
- { #1 }
- { #1 #2 }
- #3 \q_recursion_stop
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_change_case_upper_de-alt:Nnw}
-% A simple alternative version for German.
-% \begin{macrocode}
-\cs_new:cpn { @@_change_case_upper_de-alt:Nnw } #1#2
- {
- \int_compare:nNnTF { `#1 } = { 223 }
- { \@@_change_case_output:Vwn \c_@@_upper_Eszett_tl }
- {#2}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{variable}
-% {
-% \c_@@_std_sigma_tl ,
-% \c_@@_final_sigma_tl ,
-% \c_@@_accents_lt_tl ,
-% \c_@@_dot_above_tl ,
-% \c_@@_upper_Eszett_tl
-% }
-% The above needs various special token lists containing pre-formed characters.
-% This set are only available in Unicode engines, with no-op definitions
-% for $8$-bit use.
-% \begin{macrocode}
-\bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \group_begin:
- \cs_set:Npn \@@_tmp:n #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN \exp_not:N
- \char_generate:nn {#1} { \char_value_catcode:n {#1} }
- }
- \tl_const:Nx \c_@@_std_sigma_tl { \@@_tmp:n { "03C3 } }
- \tl_const:Nx \c_@@_final_sigma_tl { \@@_tmp:n { "03C2 } }
- \tl_const:Nx \c_@@_accents_lt_tl
- {
- \@@_tmp:n { "00CC }
- {
- \@@_tmp:n { "0069 }
- \@@_tmp:n { "0307 }
- \@@_tmp:n { "0300 }
- }
- \@@_tmp:n { "00CD }
- {
- \@@_tmp:n { "0069 }
- \@@_tmp:n { "0307 }
- \@@_tmp:n { "0301 }
- }
- \@@_tmp:n { "0128 }
- {
- \@@_tmp:n { "0069 }
- \@@_tmp:n { "0307 }
- \@@_tmp:n { "0303 }
- }
- }
- \tl_const:Nx \c_@@_dot_above_tl { \@@_tmp:n { "0307 } }
- \tl_const:Nx \c_@@_upper_Eszett_tl { \@@_tmp:n { "1E9E } }
- \group_end:
- }
- {
- \tl_const:Nn \c_@@_std_sigma_tl { }
- \tl_const:Nn \c_@@_final_sigma_tl { }
- \tl_const:Nn \c_@@_accents_lt_tl { }
- \tl_const:Nn \c_@@_dot_above_tl { }
- \tl_const:Nn \c_@@_upper_Eszett_tl { }
- }
-% \end{macrocode}
-% \end{variable}
-% \begin{variable}
-% {
-% \c_@@_dotless_i_tl ,
-% \c_@@_dotted_I_tl ,
-% \c_@@_i_ogonek_tl ,
-% \c_@@_I_ogonek_tl ,
-% }
-% For cases where there is an $8$-bit option in the |T1| font set up,
-% a variant is provided in both cases.
-% \begin{macrocode}
-\group_begin:
- \bool_lazy_or:nnTF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_set_protected:Npn \@@_tmp:w #1#2
- {
- \tl_const:Nx #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn
- {"#2} { \char_value_catcode:n {"#2} }
- }
- }
- }
- {
- \cs_set_protected:Npn \@@_tmp:w #1#2
- {
- \group_begin:
- \cs_set_protected:Npn \@@_tmp:w ##1##2##3##4
- {
- \tl_const:Nx #1
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {##1} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {##2} { 13 }
- }
- }
- \tl_set:Nx \l_@@_internal_a_tl
- { \char_codepoint_to_bytes:n {"#2} }
- \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl
- \group_end:
- }
- }
- \@@_tmp:w \c_@@_dotless_i_tl { 0131 }
- \@@_tmp:w \c_@@_dotted_I_tl { 0130 }
- \@@_tmp:w \c_@@_i_ogonek_tl { 012F }
- \@@_tmp:w \c_@@_I_ogonek_tl { 012E }
-\group_end:
-% \end{macrocode}
-% \end{variable}
-%
-% For $8$-bit engines we now need to define the case-change data for
-% the multi-octet mappings. These need a list of what code points are
-% doable in |T1| so the list is hard coded (there's no saving in loading
-% the mappings dynamically). All of the straight-forward ones have two
-% octets, so that is taken as read.
-% \begin{macrocode}
-\group_begin:
- \bool_lazy_or:nnF
- { \sys_if_engine_luatex_p: }
- { \sys_if_engine_xetex_p: }
- {
- \cs_set_protected:Npn \@@_loop:nn #1#2
- {
- \quark_if_recursion_tail_stop:n {#1}
- \tl_set:Nx \l_@@_internal_a_tl
- {
- \char_codepoint_to_bytes:n {"#1}
- \char_codepoint_to_bytes:n {"#2}
- }
- \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl
- \@@_loop:nn
- }
- \cs_set_protected:Npn \@@_tmp:nnnn #1#2#3#4#5
- {
- \tl_const:cx
- {
- c_@@_ #1 _case_
- \char_generate:nn {#2} { 12 }
- \char_generate:nn {#3} { 12 }
- _tl
- }
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#4} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#5} { 13 }
- }
- }
- \cs_set_protected:Npn \@@_tmp:w #1#2#3#4#5#6#7#8
- {
- \tl_const:cx
- {
- c_@@_lower_case_
- \char_generate:nn {#1} { 12 }
- \char_generate:nn {#2} { 12 }
- _tl
- }
- {
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#5} { 13 }
- \exp_after:wN \exp_after:wN \exp_after:wN
- \exp_not:N \char_generate:nn {#6} { 13 }
- }
- \@@_tmp:nnnn { upper } {#5} {#6} {#1} {#2}
- \@@_tmp:nnnn { mixed } {#5} {#6} {#1} {#2}
- }
- \@@_loop:nn
- { 00C0 } { 00E0 }
- { 00C2 } { 00E2 }
- { 00C3 } { 00E3 }
- { 00C4 } { 00E4 }
- { 00C5 } { 00E5 }
- { 00C6 } { 00E6 }
- { 00C7 } { 00E7 }
- { 00C8 } { 00E8 }
- { 00C9 } { 00E9 }
- { 00CA } { 00EA }
- { 00CB } { 00EB }
- { 00CC } { 00EC }
- { 00CD } { 00ED }
- { 00CE } { 00EE }
- { 00CF } { 00EF }
- { 00D0 } { 00F0 }
- { 00D1 } { 00F1 }
- { 00D2 } { 00F2 }
- { 00D3 } { 00F3 }
- { 00D4 } { 00F4 }
- { 00D5 } { 00F5 }
- { 00D6 } { 00F6 }
- { 00D8 } { 00F8 }
- { 00D9 } { 00F9 }
- { 00DA } { 00FA }
- { 00DB } { 00FB }
- { 00DC } { 00FC }
- { 00DD } { 00FD }
- { 00DE } { 00FE }
- { 0100 } { 0101 }
- { 0102 } { 0103 }
- { 0104 } { 0105 }
- { 0106 } { 0107 }
- { 0108 } { 0109 }
- { 010A } { 010B }
- { 010C } { 010D }
- { 010E } { 010F }
- { 0110 } { 0111 }
- { 0112 } { 0113 }
- { 0114 } { 0115 }
- { 0116 } { 0117 }
- { 0118 } { 0119 }
- { 011A } { 011B }
- { 011C } { 011D }
- { 011E } { 011F }
- { 0120 } { 0121 }
- { 0122 } { 0123 }
- { 0124 } { 0125 }
- { 0128 } { 0129 }
- { 012A } { 012B }
- { 012C } { 012D }
- { 012E } { 012F }
- { 0132 } { 0133 }
- { 0134 } { 0135 }
- { 0136 } { 0137 }
- { 0139 } { 013A }
- { 013B } { 013C }
- { 013E } { 013F }
- { 0141 } { 0142 }
- { 0143 } { 0144 }
- { 0145 } { 0146 }
- { 0147 } { 0148 }
- { 014A } { 014B }
- { 014C } { 014D }
- { 014E } { 014F }
- { 0150 } { 0151 }
- { 0152 } { 0153 }
- { 0154 } { 0155 }
- { 0156 } { 0157 }
- { 0158 } { 0159 }
- { 015A } { 015B }
- { 015C } { 015D }
- { 015E } { 015F }
- { 0160 } { 0161 }
- { 0162 } { 0163 }
- { 0164 } { 0165 }
- { 0168 } { 0169 }
- { 016A } { 016B }
- { 016C } { 016D }
- { 016E } { 016F }
- { 0170 } { 0171 }
- { 0172 } { 0173 }
- { 0174 } { 0175 }
- { 0176 } { 0177 }
- { 0178 } { 00FF }
- { 0179 } { 017A }
- { 017B } { 017C }
- { 017D } { 017E }
- { 01CD } { 01CE }
- { 01CF } { 01D0 }
- { 01D1 } { 01D2 }
- { 01D3 } { 01D4 }
- { 01E2 } { 01E3 }
- { 01E6 } { 01E7 }
- { 01E8 } { 01E9 }
- { 01EA } { 01EB }
- { 01F4 } { 01F5 }
- { 0218 } { 0219 }
- { 021A } { 021B }
- \q_recursion_tail ?
- \q_recursion_stop
- \cs_set_protected:Npn \@@_tmp:w #1#2#3
- {
- \group_begin:
- \cs_set_protected:Npn \@@_tmp:w ##1##2##3##4
- {
- \tl_const:cx
- {
- c_@@_ #3 _case_
- \char_generate:nn {##1} { 12 }
- \char_generate:nn {##2} { 12 }
- _tl
- }
- {#2}
- }
- \tl_set:Nx \l_@@_internal_a_tl
- { \char_codepoint_to_bytes:n { "#1 } }
- \exp_after:wN \@@_tmp:w \l_@@_internal_a_tl
- \group_end:
- }
- \@@_tmp:w { 00DF } { SS } { upper }
- \@@_tmp:w { 00DF } { Ss } { mixed }
- \@@_tmp:w { 0131 } { I } { upper }
- }
- \group_end:
-% \end{macrocode}
-%
-% The (fixed) look-up mappings for letter-like control sequences.
-% \begin{macrocode}
-\group_begin:
- \cs_set_protected:Npn \@@_change_case_setup:NN #1#2
- {
- \quark_if_recursion_tail_stop:N #1
- \tl_const:cn { c_@@_change_case_lower_ \token_to_str:N #1 _tl }
- { #2 }
- \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N #2 _tl }
- { #1 }
- \@@_change_case_setup:NN
- }
- \@@_change_case_setup:NN
- \AA \aa
- \AE \ae
- \DH \dh
- \DJ \dj
- \IJ \ij
- \L \l
- \NG \ng
- \O \o
- \OE \oe
- \SS \ss
- \TH \th
- \q_recursion_tail ?
- \q_recursion_stop
- \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \i _tl } { I }
- \tl_const:cn { c_@@_change_case_upper_ \token_to_str:N \j _tl } { J }
-\group_end:
-% \end{macrocode}
-%
-% \begin{variable}{\l_tl_case_change_accents_tl}
-% A list of accents to leave alone.
-% \begin{macrocode}
-\tl_new:N \l_tl_case_change_accents_tl
-\tl_set:Nn \l_tl_case_change_accents_tl
- { \" \' \. \^ \` \~ \c \H \k \r \t \u \v }
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}[EXP]{\@@_change_case_mixed_nl:Nnw}
-% \begin{macro}[EXP]{\@@_change_case_mixed_nl:Nw}
-% \begin{macro}[EXP]{\@@_change_case_mixed_nl:NNw}
-% For Dutch, there is a single look-ahead test for \texttt{ij} when
-% title casing. If the appropriate letters are found, produce \texttt{IJ}
-% and gobble the \texttt{j}/\texttt{J}.
-% \begin{macrocode}
-\cs_new:Npn \@@_change_case_mixed_nl:Nnw #1
- {
- \bool_lazy_or:nnTF
- { \int_compare_p:nNn { `#1 } = { `i } }
- { \int_compare_p:nNn { `#1 } = { `I } }
- {
- \@@_change_case_output:nwn { I }
- \@@_change_case_mixed_nl:Nw
- }
- }
-\cs_new:Npn \@@_change_case_mixed_nl:Nw #1#2 \q_recursion_stop
- {
- \tl_if_head_is_N_type:nT {#2}
- { \@@_change_case_mixed_nl:NNw }
- #1 #2 \q_recursion_stop
- }
-\cs_new:Npn \@@_change_case_mixed_nl:NNw #1#2#3 \q_recursion_stop
- {
- \@@_change_case_if_expandable:NTF #2
- {
- \exp_after:wN \@@_change_case_mixed_nl:Nw \exp_after:wN #1 #2
- #3 \q_recursion_stop
- }
- {
- \bool_lazy_and:nnTF
- { ! ( \token_if_cs_p:N #2 ) }
- {
- \bool_lazy_or_p:nn
- { \int_compare_p:nNn { `#2 } = { `j } }
- { \int_compare_p:nNn { `#2 } = { `J } }
- }
- {
- \@@_change_case_output:nwn { J }
- #1
- }
- { #1 #2 }
- #3 \q_recursion_stop
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-% \begin{variable}{\l_tl_case_change_math_tl}
-% The list of token pairs which are treated as math mode and so
-% not case changed.
-% \begin{macrocode}
-\tl_new:N \l_tl_case_change_math_tl
-%<*package>
-\tl_set:Nn \l_tl_case_change_math_tl
- { $ $ \( \) }
-%</package>
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\l_tl_case_change_exclude_tl}
-% The list of commands for which an argument is not case changed.
-% \begin{macrocode}
-\tl_new:N \l_tl_case_change_exclude_tl
-%<*package>
-\tl_set:Nn \l_tl_case_change_exclude_tl
- { \cite \ensuremath \label \ref }
-%</package>
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{variable}{\l_tl_mixed_case_ignore_tl}
-% Characters to skip over when finding the first letter in a word to be
-% mixed cased.
-% \begin{macrocode}
-\tl_new:N \l_tl_mixed_case_ignore_tl
-\tl_set:Nx \l_tl_mixed_case_ignore_tl
- {
- ( % )
- [ % ]
- \cs_to_str:N \{ % \}
- `
- -
- }
-% \end{macrocode}
-% \end{variable}
-%
-% \subsubsection{Building a token list}
-%
% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N}
% \meta{tl~var}, the \meta{tl~var} has the structure
% \begin{quote}
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index 9529c15070..ab7cc6cca4 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -3,7 +3,7 @@
%% File: l3clist.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
-% (C) 2012-2019 The LaTeX3 Project
+% (C) 2012-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index 92203d5d8c..0b27eddfdb 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -2,7 +2,7 @@
%
%% File: l3coffins.dtx
%
-% Copyright (C) 2010-2019 The LaTeX3 Project
+% Copyright (C) 2010-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color-base.dtx b/macros/latex/contrib/l3kernel/l3color-base.dtx
index 9361db0b98..f4fc3498f4 100644
--- a/macros/latex/contrib/l3kernel/l3color-base.dtx
+++ b/macros/latex/contrib/l3kernel/l3color-base.dtx
@@ -2,7 +2,7 @@
%
%% File: l3color-base.dtx
%
-% Copyright (C) 2011,2012,2014,2016-2019 The LaTeX3 Project
+% Copyright (C) 2011,2012,2014,2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index cb1eb81fd8..337fddffd7 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -2,7 +2,7 @@
%
%% File: l3debug.dtx
%
-% Copyright (C) 2019 The LaTeX3 Project
+% Copyright (C) 2019,2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 410f6891a9..32c5050d87 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -2,7 +2,7 @@
%
%% File: l3deprecation.dtx
%
-% Copyright (C) 2017-2019 The LaTeX3 Project
+% Copyright (C) 2017-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -873,6 +873,28 @@
%
% \subsection{Deprecated \pkg{l3str} functions}
%
+% \begin{macro}[EXP, deprecated = 2021-07-01]
+% {
+% \str_lower_case:n, \str_lower_case:f,
+% \str_upper_case:n, \str_upper_case:f,
+% \str_fold_case:n, \str_fold_case:V
+% }
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_lower_case:n }
+\cs_gset:Npn \str_lower_case:n { \str_lowercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_lower_case:f }
+\cs_gset:Npn \str_lower_case:f { \str_lowercase:f }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_upper_case:n }
+\cs_gset:Npn \str_upper_case:n { \str_uppercase:n }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_upper_case:f }
+\cs_gset:Npn \str_upper_case:f { \str_uppercase:f }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_fold_case:n }
+\cs_gset:Npn \str_fold_case:n { \str_foldcase:n }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \str_fold_case:V }
+\cs_gset:Npn \str_fold_case:V { \str_foldcase:V }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP, deprecated = 2020-07-01, noTF]{\str_case_x:nn}
% \begin{macro}[EXP, deprecated = 2020-07-01, pTF]{\str_if_eq_x:nn}
% \begin{macrocode}
@@ -947,6 +969,34 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[deprecated = 2022-07-01]
+% {
+% \tl_lower_case:n, \tl_lower_case:nn,
+% \tl_upper_case:n, \tl_upper_case:nn,
+% \tl_mixed_case:n, \tl_mixed_case:nn,
+% }
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_lowercase:n }
+\cs_gset:Npn \tl_lower_case:n #1
+ { \text_lowercase:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_lowercase:nn }
+\cs_gset:Npn \tl_lower_case:nn #1#2
+ { \text_lowercase:nn {#1} {#2} }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_uppercase:n }
+\cs_gset:Npn \tl_upper_case:n #1
+ { \text_uppercase:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_uppercase:nn }
+\cs_gset:Npn \tl_upper_case:nn #1#2
+ { \text_uppercase:nn {#1} {#2} }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_titlecase:n }
+\cs_gset:Npn \tl_mixed_case:n #1
+ { \text_titlecase:n {#1} }
+\__kernel_patch_deprecation:nnNNpn { 2022-01-01 } { \text_titlecase:nn }
+\cs_gset:Npn \tl_mixed_case:nn #1#2
+ { \text_titlecase:nn {#1} {#2} }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3tl-analysis} functions}
%
% \begin{macro}[deprecated = 2020-07-01]
@@ -978,6 +1028,33 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}[EXP, deprecated = 2021-07-01]
+% {
+% \char_lower_case:N, \char_upper_case:N,
+% \char_mixed_case:Nn, \char_fold_case:N,
+% \char_str_lower_case:N, \char_str_upper_case:N,
+% \char_str_mixed_case:Nn, \char_str_fold_case:N,
+% }
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_lower_case:N }
+\cs_gset:Npn \char_lower_case:N { \char_lowercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_upper_case:N }
+\cs_gset:Npn \char_upper_case:N { \char_uppercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_mixed_case:N }
+\cs_gset:Npn \char_mixed_case:N { \char_titlecase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_fold_case:N }
+\cs_gset:Npn \char_fold_case:N { \char_foldcase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_str_lower_case:N }
+\cs_gset:Npn \char_str_lower_case:N { \char_str_lowercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_str_upper_case:N }
+\cs_gset:Npn \char_str_upper_case:N { \char_str_uppercase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_str_mixed_case:N }
+\cs_gset:Npn \char_str_mixed_case:N { \char_str_titlecase:N }
+\__kernel_patch_deprecation:nnNNpn { 2021-01-01 } { \char_str_fold_case:N }
+\cs_gset:Npn \char_str_fold_case:N { \char_str_foldcase:N }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3file} functions}
%
% \begin{macro}[EXP, deprecated = 2021-07-01]{\c_term_ior}
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 7ddc695d4d..c294944482 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -2,7 +2,7 @@
%
%% File: l3doc.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -31,7 +31,7 @@
\askforoverwritefalse
\preamble
-Copyright (C) 1990-2017,2019 The LaTeX3 Project
+Copyright (C) 1990-2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -79,7 +79,7 @@ and all files in that bundle must be distributed together.
%
% \title{The \cls{l3doc} class}
% \author{\Team}
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
% \maketitle
% \tableofcontents
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 8c626f91f9..3f64b98edf 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -2,7 +2,7 @@
%
%% File l3dosctrip.dtx
%
-% Copyright (C) 2012,2014-2019 The LaTeX3 Project
+% Copyright (C) 2012,2014-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index dacf0e35d6..5f2bda13ce 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 7f3ea57e68..a2767d9692 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -2,7 +2,7 @@
%
%% File: l3expan.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -536,6 +536,7 @@
% \exp_args:Nooo,
% \exp_args:Noof,
% \exp_args:Nffo,
+% \exp_args:Neee
% }
% \begin{syntax}
% \cs{exp_args:NNoo} \meta{token_1} \meta{token_2} \Arg{token_3} \Arg{tokens}
@@ -2841,7 +2842,7 @@
% \exp_args:NNno, \exp_args:NNnV, \exp_args:NNoo, \exp_args:NNVV,
% \exp_args:Ncno, \exp_args:NcnV, \exp_args:Ncoo, \exp_args:NcVV,
% \exp_args:Nnnc, \exp_args:Nnno, \exp_args:Nnnf, \exp_args:Nnff,
-% \exp_args:Nooo, \exp_args:Noof, \exp_args:Nffo,
+% \exp_args:Nooo, \exp_args:Noof, \exp_args:Nffo, \exp_args:Neee
% }
% \begin{macro}
% {
@@ -2866,6 +2867,7 @@
\@@_tmp:w { ooo }
\@@_tmp:w { oof }
\@@_tmp:w { ffo }
+\@@_tmp:w { eee }
\@@_tmp:w { NNx }
\@@_tmp:w { Nnx }
\@@_tmp:w { Nox }
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index 2b6c86f8f8..274d5da8ec 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -2,7 +2,7 @@
%
%% File: l3file.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -702,6 +702,35 @@
% quote (|"|) characters or is surrounded by a pair of quotes.
% \end{function}
%
+% \begin{function}[rEXP, added = 2019-11-19]
+% {\file_hex_dump:n, \file_hex_dump:nnn}
+% \begin{syntax}
+% \cs{file_hex_dump:n} \Arg{file name}
+% \cs{file_hex_dump:nnn} \Arg{file name} \Arg{start index} \Arg{end index}
+% \end{syntax}
+% Searches for \meta{file name} using the current \TeX{} search
+% path and the additional paths controlled by \cs{l_file_search_path_seq}.
+% It then expands to leave the hexadecimal dump of the file content in the
+% input stream. The file is read as bytes, which means that in
+% contrast to most \TeX{} behaviour there will be a difference in result
+% depending on the line endings used in text files. The same file will
+% produce the same result between different engines: the algorithm used
+% is the same in all cases. When the file is not found, the result of
+% expansion is empty. The \Arg{start index} and \Arg{end index} values
+% work as described for \cs{str_range:nnn}.
+% \end{function}
+%
+% \begin{function}[noTF, added = 2019-11-19]
+% {\file_get_hex_dump:nN, \file_get_hex_dump:nnnN}
+% \begin{syntax}
+% \cs{file_get_hex_dump:nN} \Arg{file name} \meta{tl var}
+% \cs{file_get_hex_dump:nnnN} \Arg{file name} \Arg{start index} \Arg{end index} \meta{tl var}
+% \end{syntax}
+% Sets the \meta{tl var} to the result of applying
+% \cs{file_hex_dump:n}/\cs{file_hex_dump:nnn} to the \meta{file}.
+% If the file is not found, the \meta{tl var} will be set to \cs{q_no_value}.
+% \end{function}
+%
% \begin{function}[rEXP, added = 2019-09-03]{\file_mdfive_hash:n}
% \begin{syntax}
% \cs{file_mdfive_hash:n} \Arg{file name}
@@ -2858,18 +2887,119 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[rEXP]{\file_hex_dump:nnn, \@@_hex_dump_auxi:nnn}
+% \begin{macro}[rEXP]{\@@_hex_dump_auxii:nnnn, \@@_hex_dump_auxiii:nnnn}
+% \begin{macro}[rEXP]{\@@_hex_dump_auxiiv:nnn}
+% \begin{macro}[rEXP]{\file_hex_dump:n, \@@_hex_dump:n}
+% These are separate as they need multiple arguments \emph{or} the
+% file size. For \LuaTeX{}, the emulation does not need the file
+% size so we save a little on expansion.
+% \begin{macrocode}
+\cs_new:Npn \file_hex_dump:nnn #1#2#3
+ {
+ \exp_args:Neee \@@_hex_dump_auxi:nnn
+ { \file_full_name:n {#1} }
+ { \int_eval:n {#2} }
+ { \int_eval:n {#3} }
+ }
+\cs_new:Npn \@@_hex_dump_auxi:nnn #1#2#3
+ {
+ \bool_lazy_any:nF
+ {
+ { \tl_if_blank_p:n {#1} }
+ { \int_compare_p:nNn {#2} = 0 }
+ { \int_compare_p:nNn {#3} = 0 }
+ }
+ {
+ \exp_args:Ne \@@_hex_dump_auxii:nnnn
+ { \@@_details_aux:nn {#1} { size } }
+ {#1} {#2} {#3}
+ }
+ }
+\cs_new:Npn \@@_hex_dump_auxii:nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF {#3} > 0
+ { \@@_hex_dump_auxiii:nnnn {#3} }
+ {
+ \exp_args:Ne \@@_hex_dump_auxiii:nnnn
+ { \int_eval:n { #1 + #3 } }
+ }
+ {#1} {#2} {#4}
+ }
+\cs_new:Npn \@@_hex_dump_auxiii:nnnn #1#2#3#4
+ {
+ \int_compare:nNnTF {#4} > 0
+ { \@@_hex_dump_auxiv:nnn {#4} }
+ {
+ \exp_args:Ne \@@_hex_dump_auxiv:nnn
+ { \int_eval:n { #2 + #4 } }
+ }
+ {#1} {#3}
+ }
+\cs_new:Npn \@@_hex_dump_auxiv:nnn #1#2#3
+ {
+ \tex_filedump:D
+ offset ~ \int_eval:n { #2 - 1 } ~
+ length ~ \int_eval:n { #1 - #2 + 1 }
+ {#3}
+ }
+\sys_if_engine_luatex:T
+ {
+ \cs_gset:Npn \@@_hex_dump_auxiv:nnn #1#2#3
+ {
+ \lua_now:e
+ {
+ l3kernel.filedump
+ (
+ " \lua_escape:e {#3} " ,
+ \int_eval:n { #2 - 1 } ,
+ \int_eval:n { #1 - #2 + 1 }
+ )
+ }
+ }
+ }
+\cs_new:Npn \file_hex_dump:n #1
+ { \exp_args:Ne \@@_hex_dump:n { \file_full_name:n {#1} } }
+\cs_new:Npn \@@_hex_dump:n #1
+ {
+ \tl_if_blank:nF {#1}
+ { \tex_filedump:D length \tex_filesize:D {#1} {#1} }
+ }
+\sys_if_engine_luatex:T
+ {
+ \cs_gset:Npn \@@_hex_dump:n #1
+ {
+ \lua_now:e
+ { l3kernel.filedump ( " \lua_escape:e { #1 } " ) }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}[noTF]
-% {\file_get_mdfive_hash:nN, \file_get_size:nN, \file_get_timestamp:nN}
+% {
+% \file_get_hex_dump:nN,
+% \file_get_mdfive_hash:nN
+% \file_get_size:nN,
+% \file_get_timestamp:nN
+% }
% \begin{macro}{\@@_get_details:nnN}
% Non-expandable wrappers around the above in the case where appropriate
% primitive support exists.
% \begin{macrocode}
+\cs_new_protected:Npn \file_get_hex_dump:nN #1#2
+ { \file_get_hex_dump:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
\cs_new_protected:Npn \file_get_mdfive_hash:nN #1#2
{ \file_get_mdfive_hash:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
\cs_new_protected:Npn \file_get_size:nN #1#2
{ \file_get_size:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
\cs_new_protected:Npn \file_get_timestamp:nN #1#2
{ \file_get_timestamp:nNF {#1} #2 { \tl_set:Nn #2 { \q_no_value } } }
+\prg_new_protected_conditional:Npnn \file_get_hex_dump:nN #1#2 { T , F , TF }
+ { \@@_get_details:nnN {#1} { hex_dump } #2 }
\prg_new_protected_conditional:Npnn \file_get_mdfive_hash:nN #1#2 { T , F , TF }
{ \@@_get_details:nnN {#1} { mdfive_hash } #2 }
\prg_new_protected_conditional:Npnn \file_get_size:nN #1#2 { T , F , TF }
@@ -2901,6 +3031,7 @@
\token_to_str:N \(pdf)file
\str_case:nn {#2}
{
+ { hex_dump } { dump }
{ mdfive_hash } { mdfivesum }
{ timestamp } { moddate }
{ size } { size }
@@ -2913,6 +3044,26 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[noTF]{\file_get_hex_dump:nnnN}
+% Custom code due to the additional arguments.
+% \begin{macrocode}
+\cs_new_protected:Npn \file_get_hex_dump:nnnN #1#2#3#4
+ {
+ \file_get_hex_dump:nnnNF {#1} {#2} {#3} #4
+ { \tl_set:Nn #4 { \q_no_value } }
+ }
+\prg_new_protected_conditional:Npnn \file_get_hex_dump:nnnN #1#2#3#4
+ { T , F , TF }
+ {
+ \tl_set:Nx #4
+ { \file_hex_dump:nnn {#1} {#2} {#3} }
+ \tl_if_empty:NTF #4
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}[EXP]{\@@_str_cmp:nn}
% \begin{macro}[EXP]{\@@_str_escape:n}
% As we are doing a fixed-length \enquote{big} integer comparison, it
diff --git a/macros/latex/contrib/l3kernel/l3final.dtx b/macros/latex/contrib/l3kernel/l3final.dtx
index 853220d68a..a8677aeb68 100644
--- a/macros/latex/contrib/l3kernel/l3final.dtx
+++ b/macros/latex/contrib/l3kernel/l3final.dtx
@@ -2,7 +2,7 @@
%
%% File: l3final.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 742e3da3a4..2f8b6dcc77 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -2,7 +2,7 @@
%
%% File: l3flag.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3format.ins b/macros/latex/contrib/l3kernel/l3format.ins
index bdc5516701..6e0c98cb81 100644
--- a/macros/latex/contrib/l3kernel/l3format.ins
+++ b/macros/latex/contrib/l3kernel/l3format.ins
@@ -2,7 +2,7 @@
File l3format.ins
-Copyright (C) 2011,2012,2014-2019 The LaTeX3 Project
+Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -35,7 +35,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 1990-2019 The LaTeX3 Project
+Copyright (C) 1990-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -104,8 +104,9 @@ and all files in that bundle must be distributed together.
\from{l3coffins.dtx} {initex}
\from{l3luatex.dtx} {initex,tex}
\from{l3unicode.dtx} {initex}
+ \from{l3text.dtx} {initex}
+ \from{l3text-case.dtx} {initex}
\from{l3candidates.dtx} {initex}
- \from{l3deprecation.dtx}{initex,kernel}
% ======== FORMAT ONLY =========
\from{l3final.dtx} {initex}
% ==============================
@@ -141,7 +142,7 @@ and all files in that bundle must be distributed together.
\def\MetaPrefix{--}
\preamble
-Copyright (C) 1990-2019 The LaTeX3 Project
+Copyright (C) 1990-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index a09616c307..ee6abd5f55 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index 1d3faad843..f306cc12c1 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-aux.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index 776192abc7..bf0afbf7c4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-basics.dtx
%
-% Copyright (C) 2011-2014,2016-2019 The LaTeX3 Project
+% Copyright (C) 2011-2014,2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index c1443a3eaf..b6b9e0d7c9 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-convert.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index 394fe63f4c..d830b74036 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-expo.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index 8c28335acc..961655d05a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-extended.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 0b853df3ce..e6aab8c394 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-logic.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index a864190535..4c4c31c95e 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-parse.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -1025,7 +1025,7 @@
\cs_if_exist_use:cF { @@_parse_word_#2:N }
{
\cs_if_exist_use:cF
- { @@_parse_caseless_ \str_fold_case:n {#2} :N }
+ { @@_parse_caseless_ \str_foldcase:n {#2} :N }
{
\__kernel_msg_expandable_error:nnn
{ kernel } { unknown-fp-word } {#2}
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 7c6d18bc3c..e56642bd6d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-random.dtx
%
-% Copyright (C) 2016-2019 The LaTeX3 Project
+% Copyright (C) 2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 7c4e5b0b0f..672bfd9c8a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-round.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index f4e047b462..74809e6385 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-traps.dtx
%
-% Copyright (C) 2011-2014,2016-2019 The LaTeX3 Project
+% Copyright (C) 2011-2014,2016-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index d89f047751..fced52d759 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp-trig.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 8521414085..44530a1518 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fp.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -887,7 +887,7 @@
% \mathtt{1/2pi(pi+pi)} & = (2\pi)^{-1}(\pi+\pi) \simeq 1, \\
% \mathtt{sin 2pi} & = \sin(2)\pi \neq 0, \\
% \mathtt{2\char`\^2max(3,5)} & = 2^2 \max(3,5) = 20, \\
-% \mathtt{1in/1cm} & = (1in)/(1cm) = 2.54 .
+% \mathtt{1in/1cm} & = (1\mathrm{in})/(1\mathrm{cm}) = 2.54 .
% \end{align*}
% Functions are called on the value of their argument, contrarily to
% \TeX{} macros.
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 35cdb6353c..e7f0675fc9 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3fparray.dtx
%
-% Copyright (C) 2018-2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index 4459cc56b1..bc68230b3f 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -2,7 +2,7 @@
%
%% File: l3int.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -420,8 +420,8 @@
% { -2 * 10 } { Negative }
% }
% { No idea! }
-% \end{verbatim}
-% leaves \enquote{\texttt{Medium}} in the input stream.
+% \end{verbatim}
+% leaves \enquote{\texttt{Medium}} in the input stream.
% \end{function}
%
% \begin{function}[EXP,pTF]{\int_if_even:n, \int_if_odd:n}
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index f26e7416aa..6fc43aad65 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -2,7 +2,7 @@
%
%% File: l3intarray.dtx
%
-% Copyright (C) 2017-2019 The LaTeX3 Project
+% Copyright (C) 2017-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index 5ad373b5cc..98f588a53e 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index c8d5f71431..54167b15c2 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3keys.dtx
%
-% Copyright (C) 2006-2019 The LaTeX3 Project
+% Copyright (C) 2006-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -2523,6 +2523,7 @@
{ \c_@@_code_root_tl ##1 / \l_keys_key_tl }
{
\tl_set:Nn \l_@@_inherit_tl {##1}
+ \cs_if_exist_use:c { \c_@@_validate_root_tl ##1 / \l_keys_key_tl }
\cs:w \c_@@_code_root_tl ##1 / \l_keys_key_tl
\exp_after:wN \cs_end: \exp_after:wN
{ \l_keys_value_tl }
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index c49ac91e7f..21d6fe5146 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -2,7 +2,7 @@
%
%% File: l3legacy.dtx
%
-% Copyright (C) 2019 The LaTeX3 Project
+% Copyright (C) 2019,2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index 22780b77fd..a9f1f0c0a3 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3luatex.dtx
%
-% Copyright (C) 2010-2019 The LaTeX3 Project
+% Copyright (C) 2010-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -143,6 +143,17 @@
% for user input.
% \end{function}
%
+% \begin{function}{l3kernel.filedump}
+% \begin{syntax}
+% |l3kernel.filedump(|\meta{file}|,|\meta{offset}|,|\meta{length}|)|
+% \end{syntax}
+% Returns the uppercase hexadecimal representation of the content of the
+% \meta{file} read as bytes. If the \meta{length} is given, only this part
+% of the file is returned; similarly, one may specify the \meta{offset} from
+% the start of the file. If the \meta{length} is not given, the entire file
+% is read starting at the \meta{offset}.
+% \end{function}
+%
% \begin{function}{l3kernel.filemdfivesum}
% \begin{syntax}
% |l3kernel.filemdfivesum(|\meta{file}|)|
@@ -310,16 +321,17 @@ l3kernel = l3kernel or { }
%
% Local copies of global tables.
% \begin{macrocode}
-local io = io
-local kpse = kpse
-local lfs = lfs
-local math = math
-local md5 = md5
-local os = os
-local string = string
-local tex = tex
-local texio = texio
-local unicode = unicode
+local io = io
+local kpse = kpse
+local lfs = lfs
+local math = math
+local md5 = md5
+local os = os
+local string = string
+local tex = tex
+local texio = texio
+local tonumber = tonumber
+local unicode = unicode
% \end{macrocode}
%
% Local copies of standard functions.
@@ -395,6 +407,30 @@ l3kernel.resettimer = resettimer
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{l3kernel.filedump}
+% Similar comments here to the next function: read the file in binary mode
+% to avoid any line-end weirdness.
+% \begin{macrocode}
+local function filedump(name,offset,length)
+ local file = kpse_find(name,"tex",true)
+ if file then
+ local length = tonumber(length) or lfs_attr(file,"size")
+ local offset = tonumber(offset) or 0
+ local f = open(file,"rb")
+ if f then
+ if offset > 0 then
+ f:seek("set",offset)
+ end
+ local data = f:read(length)
+ escapehex(data)
+ f:close()
+ end
+ end
+end
+l3kernel.filedump = filedump
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{l3kernel.filemdfivesum}
% Read an entire file and hash it: the hash function itself is a built-in.
% As Lua is byte-based there is no work needed here in terms of UTF-8
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 969738d3aa..3b52246c27 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3msg.dtx
%
-% Copyright (C) 2009-2019 The LaTeX3 Project
+% Copyright (C) 2009-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index b0edf9235d..cce95b9866 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -1113,6 +1113,9 @@
% \begin{macrocode}
\@@_primitive:NN \autospacing \tex_autospacing:D
\@@_primitive:NN \autoxspacing \tex_autoxspacing:D
+ \@@_primitive:NN \currentcjktoken \tex_currentcjktoken:D
+ \@@_primitive:NN \currentspacingmode \tex_currentspacingmode:D
+ \@@_primitive:NN \currentxspacingmode \tex_currentxspacingmode:D
\@@_primitive:NN \disinhibitglue \tex_disinhibitglue:D
\@@_primitive:NN \dtou \tex_dtou:D
\@@_primitive:NN \epTeXinputencoding \tex_epTeXinputencoding:D
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
new file mode 100644
index 0000000000..404b6e0e82
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news.tex b/macros/latex/contrib/l3kernel/l3news.tex
new file mode 100644
index 0000000000..1c1b9eed79
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news.tex
@@ -0,0 +1,157 @@
+% Copyright 2019 The LaTeX3 Project
+
+\providecommand*{\lastissue}{12}
+
+\documentclass{ltnews}
+
+\AtBeginDocument{%
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}%
+ \RaggedRight
+ \setlength\parindent{1em}%
+}
+\usepackage{catchfile}
+\usepackage{csquotes}
+\usepackage{enumitem}
+\usepackage{fancyvrb}
+\usepackage{hologo}
+\usepackage{metalogo}
+\usepackage{multicol}
+\usepackage{ragged2e}
+\usepackage{siunitx}
+\usepackage{tikz}
+\usepackage{underscore}
+\usepackage{xparse}
+\usepackage{hyperref}
+\hypersetup{colorlinks}
+\usepackage{bookmark}
+
+\makeatletter
+\newcounter{issue}
+\renewcommand*{\theissue}{%
+ \ifnum\value{issue}<10 0\fi
+ \number\value{issue}%
+}
+\newcommand*{\MonthJanuary}{01}
+\newcommand*{\MonthFebruary}{02}
+\newcommand*{\MonthMarch}{03}
+\newcommand*{\MonthApril}{04}
+\newcommand*{\MonthMay}{05}
+\newcommand*{\MonthJune}{06}
+\newcommand*{\MonthJuly}{07}
+\newcommand*{\MonthAugust}{08}
+\newcommand*{\MonthSeptember}{09}
+\newcommand*{\MonthOctober}{10}
+\newcommand*{\MonthNovember}{11}
+\newcommand*{\MonthDecember}{12}
+\newcommand*{\printissue}{%
+ Issue %
+ \texorpdfstring{\number\value{issue}}{\theissue}, %
+ \texorpdfstring{\@month\space\@year}{\@year/\@nameuse{Month\@month}}%
+}
+\let\l@part\l@section
+\let\l@section\l@subsection
+\let\l@subsection\l@subsubsection
+\let\l@subsubsection\l@paragraph
+\let\l@paragraph\l@subparagraph
+\newcommand*{\makefirsttitle}{%
+ \twocolumn[{%
+ \parbox[t][4\baselineskip]{\textwidth}{%
+ \@titlefont\@title, Issues 1--\lastissue
+ }%
+ }]%
+}
+\makeatother
+
+\begin{document}
+
+%%% Title and Table of Contents
+
+\makefirsttitle
+\pdfbookmark[0]{\contentsname}{toc}
+\tableofcontents
+\clearpage
+
+\begingroup
+ \renewcommand*{\AtBeginDocument}[1]{#1}%
+ \renewcommand*{\PassOptionsToPackage}[2]{}%
+ \renewcommand*{\usepackage}[2][]{}%
+ \renewcommand*{\RequirePackage}[2][]{}%
+ \renewcommand*{\documentclass}[2][]{%
+ \setcounter{footnote}{0}%
+ \gobbleopt
+ }%
+ \newcommand*{\gobbleopt}[1][]{}%
+ \makeatletter
+ \let\org@twocolumn\twocolumn
+ \renewenvironment{document}{%
+ \clearpage
+ \ifnum\@issue=20 %
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{5}}%
+ \addtocontents{toc}{%
+ \protect\makeatletter
+ }%
+ \addtocontents{toc}{%
+ \let\protect\saved@l@paragraph\protect\l@paragraph
+ }%
+ \addtocontents{toc}{%
+ \let\protect\l@paragraph\protect\l@subsection
+ }%
+ \fi
+ \ifnum\@issue=\lastissue\space
+ \addtocontents{toc}{%
+ \let\protect\l@paragraph\protect\saved@l@paragraph
+ }%
+ \def\toclevel@subsection{1}%
+ \def\toclevel@subsubsection{2}%
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{4}}%
+ \renewcommand*{\tableofcontents}{%
+ \section*{\contentsname}%
+ \@starttoc{toc\lastissue}%
+ }%
+ \let\saved@addtocontents\addtocontents
+ \renewcommand*{\addtocontents}[2]{%
+ \saved@addtocontents{##1}{##2}%
+ \def\temp@toc{toc}%
+ \def\temp@param{##1}%
+ \ifx\temp@toc\temp@param
+ \saved@addtocontents{toc\lastissue}{##2}%
+ \fi
+ }%
+ \let\l@subsubsection\l@subsection
+ \let\l@subsection\l@section
+ \let\l@section\l@part
+ \let\l@part\@gobbletwo
+ \fi
+ \def\twocolumn[{%
+ \let\twocolumn\org@twocolumn
+ \org@twocolumn[%
+ {% because of optional argument of \twocolumn
+ \pdfbookmark[0]{\printissue}{issue\theissue}%
+ }%
+ \begingroup
+ \let\WriteBookmarks\relax
+ \@firstofone{% inside opt. arg. of \twocolumn: protect "]"
+ \renewcommand*{\Hy@writebookmark}[5]{}%
+ }%
+ \phantomsection
+ \addcontentsline{toc}{part}{\printissue}%
+ \endgroup
+ }%
+ }{%
+ \clearpage
+ }%
+ \makeatother
+ \loop
+ \ifnum\value{issue}<\lastissue
+ \stepcounter{issue}%
+ \input{l3news\theissue}%
+ \repeat
+ \stepcounter{issue}%
+ \IfFileExists{l3news\theissue}{%
+ \@latex@error{\jobname.tex is out of date,\MessageBreak
+ there is `l3news\theissue.tex'%
+ }\@ehc
+ }{}%
+\endgroup
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
new file mode 100644
index 0000000000..580bd304a1
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.tex b/macros/latex/contrib/l3kernel/l3news01.tex
new file mode 100644
index 0000000000..717f12ddbb
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news01.tex
@@ -0,0 +1,102 @@
+% Copyright 2009 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\publicationmonth{February}
+\publicationyear{2009}
+\publicationissue{1}
+
+\begin{document}
+\maketitle
+
+\section{Welcome to \LaTeX3}
+
+Momentum is again starting to build behind the \LaTeX3 project. For the
+last few releases of \TeX~Live, the experimental programming foundation for
+\LaTeX3 has been available under the name \package{expl3}. Despite large
+warnings that the code would probably change in the future, we wanted to show
+that there was progress being made, no matter how slowly. Since then, some
+people have looked at the code, provided feedback, and~--- most
+importantly~--- actually tried using it. Although it is yet early days, we
+believe that the ideas behind the code are sound and there are only `cosmetic
+improvements' that need to be made before \package{expl3} is ready for the
+\LaTeX~package author masses.
+
+\section{What currently exists}
+
+The current \LaTeX3 code consists of two main branches: the
+\package{expl3} modules that define the underlying programming environment,
+and the `\package{xpackage}s', which are a suite of packages that are written
+with the \package{expl3} programming interface and provide some higher-level
+functionality for what will one day become \LaTeX3 proper. Both \package{expl3} and
+parts of the \package{xpackages} are designed to be used \emph{on top} of
+\LaTeXe, so new packages can take advantage of the new features while still
+allowing to be used alongside many of the vast number of \LaTeXe\ packages on
+\textsc{ctan}.
+
+\section{What's happening now}
+
+In preparation for a minor overhaul of the \package{expl3} code, we are
+writing a comprehensive test suite for each module. These tests allow us to
+make implementation changes and then test if the code still works as before.
+They are also highlighting any minor shortcomings or omissions in the code.
+As the tests are being written, our assumptions about what should be called
+what and the underlying naming conventions for the functions and datatypes are
+being questioned, challenged, and noted for further rumination.
+
+At the time of writing, we are approximately half-way through writing the test
+suite. Once this task is complete, which we plan for the first
+half of 2009, we will be ready to make changes without worrying about breaking
+anything.
+
+\section{What's happening soon}
+
+So what do we want to change? The current \package{expl3} codebase has
+portions that date to the pre-\LaTeXe\ days, while other modules have been
+more recently conceived. It is quite apparent when reading through the sources
+that some unification and tidying up would improve the simplicity and
+consistency of the code. In many cases, such changes will mean nothing more
+than a tweak or a rename.
+
+Beyond these minor changes, we are also re-thinking the exact notation behind
+the way functions are defined. There are currently a handful of different
+types of arguments that functions may be passed (from an untouched single
+token to a complete expansion of a token list) and we're not entirely happy
+with how the original choices have evolved now that the system has grown
+somewhat. We have received good feedback from several people on ways that we
+could improve the argument syntax, and as part of the upcoming changes to the
+\package{expl3} packages we hope to address the problems that we currently
+perceive in the present syntax.
+
+\section{What's happening later}
+
+After the changes discussed above are finished, we will begin freezing the core
+interface of the \package{expl3} modules, and we hope that more package
+authors will be interested in using the new ideas to write their own code.
+While the core functions will then remain unchanged, more features and new
+modules will be added as \LaTeX3 starts to grow.
+
+Some new and/or experimental packages will be changing to use the
+\package{expl3} programming interface, including \package{breqn},
+\package{mathtools}, \package{empheq}, \package{fontspec}, and
+\package{unicode-math}. (Which is one reason for the lack of progress in
+these latter two in recent times.) There will also be a version of the
+\package{siunitx} package written in \package{expl3}, in parallel to the
+current \LaTeXe\ version. These developments will provide improvements to
+everyday \LaTeX\ users who haven't even heard of the \LaTeX3 Project.
+
+Looking towards the long term, \LaTeX3 as a document preparation system needs
+to be written almost from scratch. A high-level user syntax needs to be
+designed and scores of packages will be used as inspiration for the
+`out-of-the-box' default document templates. \LaTeXe\ has stood up to the test
+of time~--- some fifteen years and still going strong~--- and it is now time
+to write a successor that will survive another score.
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
new file mode 100644
index 0000000000..7b184b9e94
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.tex b/macros/latex/contrib/l3kernel/l3news02.tex
new file mode 100644
index 0000000000..a3d5467c8e
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news02.tex
@@ -0,0 +1,153 @@
+% Copyright 2009 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{url}
+\newcommand\TUG[1]{\textsc{tug}~#1}
+
+\publicationmonth{June}
+\publicationyear{2009}
+\publicationissue{2}
+
+\begin{document}
+\maketitle
+
+\section{\TeX~Live and the \textsf{expl3} code}
+
+\TeX~Live 2009 is almost upon us, and the \LaTeX3 team have been
+readying a new release of the experimental \LaTeX3 code for this.
+Very dramatic changes have occurred since the
+last public release of the code in \TeX~Live~2008; no backwards compatibility has been
+maintained (as warned in the beginning of the documentation) but we
+believe the changes made are all much for the better. Almost every
+single part of \textsf{expl3} has been scrutinized, resulting in a far
+more coherent code base.
+
+The \textsf{expl3} code is now considered to be much more stable than
+it was before; a comprehensive test suite has been written that helps
+to ensure that we don't make any mistakes as we change things in the
+future. In the process of writing the test
+suite, many minor bugs were fixed; we recommend such test suites for
+all similar developmental projects!
+Some small underlying changes are still expected in the
+\textsf{expl3} code, but major, disruptive, changes aren't planned.
+
+\section{Planned updates}
+
+Until now, the last update to \textsc{ctan} of the \textsf{expl3}
+bundle was for \TeX~Live~2008. Now that work on the code is happening
+on a semi-steady basis, we plan to keep updates rolling out to
+\textsc{ctan} more frequently. This will allow anyone who wishes to
+experiment with the new code to use the \TeX~Live or MiK\TeX\
+updaters to install a recent version without having to `check out' the
+\textsc{svn} repository and install the packages manually.
+
+\section{New members}
+
+We didn't say anything about it in the last status update, but Joseph
+Wright and Will Robertson are now members of the \LaTeX\ Team. They
+have been working fairly exclusively on the \textsf{expl3} code.
+
+It's worth repeating that \LaTeXe\ is essentially frozen in order to
+prevent any backwards compatibility problems. As desirable as it is
+to benefit from the new features offered by new engines \XeTeX\ and
+Lua\TeX, we cannot risk the stability of production servers running
+older versions of \LaTeXe\ which will inevitably end up processing
+documents written into the future.
+
+\LaTeX3 will not be inheriting the same restraints, so stay tuned.
+
+\newpage
+
+\section{Some specifics}
+
+Morten H\o gholm will be presenting the recent changes in much more detail at
+\TUG{2009}. Here are some quick specifics for those interested. New code written
+and broad changes made to the \textsf{expl3} modules:
+\begin{description}
+\item [More logical function names]
+ Many function names that were hold-outs from the \TeX\ naming system
+ have been changed to fit into the more logical scheme of \textsf{expl3}; e.g.,
+ \verb|\def:Npn| and \verb|\let:NN| are now \verb|\cs_set:Npn| and
+ \verb|\cs_set_eq:NN|.
+
+\item [Defining functions and conditionals]
+ Much thought was put into new ways to define
+ functions and conditionals with a minimum of code.
+ See \verb|\cs_set:Nn| and \verb|\prg_set_conditional:Nnn|.
+
+\item [Smart comparisons]
+ Comparisons can be made much more easily now, with familiar notation such as
+ \verb|\intexpr_compare_p:n{ #1+3 != \l_tmpa_int }|.
+
+\item [Data from variables] A new function argument specifier \texttt{V} has
+ been added for extracting information from variables of different types,
+ without needing to know the underlying variable structure. Some other
+ tidy-ups on the argument specifiers offered, partially as a result of the
+ addition of this new one.
+
+\item [l3msg] New module to deal with communication between \LaTeX3 code
+ and the user (info messages, warnings, and errors), including message
+ filtering partially inspired by the \textsf{silence} package.
+ \end{description}
+
+\section{The next six months}
+
+Having overhauled the \textsf{expl3} code, we now plan to perform an
+analogous process with the foundations of the
+\textsf{xpackages}. These are the higher-level packages that will
+provide the basic needs such as control of the page layout and rich
+document-level interaction with the user. As the groundwork for this
+layer of the document processing matures, we will be able to start
+building more packages for a \LaTeX3 kernel; these packages will also
+be usable on top of \LaTeXe\ and serve as broadly customisable
+templates for future document design.
+
+As gaps in the functionality offered by \textsf{expl3} are found (in
+some cases, we know that they exist already), the programming layer
+will be extended to support our needs. In other cases, wrappers around
+\TeX\ functions that can be more usefully handled at a higher level
+will be written.
+
+In terms of what we're planning to work on next, three \textsf{xpackage}s
+will take the focus of our attention.
+\begin{description}
+\item [xbase]
+ `\textsf{xbase}' is actually two packages: \textsf{xparse} and
+ \textsf{template}. These contain code for, respectively, defining new
+ document commands (such that a user would use; e.g., \verb|\section|,
+ \verb|\makebox|, \dots) and for handling keyval lists for user input and
+ document specification. \textsf{xparse} was presented at \TUG{1999}%
+ \footnote{\url{http://www.latex-project.org/papers/tug99.pdf}}
+ and Lars Hellstr\"om wrote some notes on \textsf{template} in 2000%
+ \footnote{\url{http://www.latex-project.org/papers/template-notes.pdf}}.
+ Functionality coverage for these packages is good but concepts need a good
+ ``airing''. There are various approaches taken for keyval input, some more
+ recent than the \textsf{template} code, so there are some alternatives to
+ evaluate.
+\item [galley2] Sophisticated handling for \mbox{constructing} paragraphs and
+ other document elements. Morten spoke on this at \TUG{2008}%
+ \footnote{\url{http://river-valley.tv/the-galley-module/}}.
+ Design needs to be revisited after some stress testing.
+\item [xor] This is the \LaTeX3 output routine for splitting the galley into
+ page and sub-page sized chunks. Ideas and code need work to move to
+ ``production ready'' status. Early developments with this package were
+ published by Frank in 2000%
+ \footnote{\url{http://www.latex-project.org/papers/xo-pfloat.pdf}}.
+\end{description}
+
+Expect to hear again from us at Christmas. If you'd like to discuss any
+of these ideas, please join us on the \textsc{latex-l} mailing list%
+\footnote{\url{http://www.latex-project.org/code.html}}.
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
new file mode 100644
index 0000000000..801fed2917
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.tex b/macros/latex/contrib/l3kernel/l3news03.tex
new file mode 100644
index 0000000000..e3e245f051
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news03.tex
@@ -0,0 +1,128 @@
+% Copyright 2009,2010 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{url}
+
+\publicationmonth{January}
+\publicationyear{2010}
+\publicationissue{3}
+
+\begin{document}
+\maketitle
+\raisefirstsection
+
+\section{Happy New Year}
+
+Welcome to the holiday season edition of `news of our activities' for
+the \LaTeX3 team.
+
+\section{Recent developments}
+
+The last six months has seen two significant releases in the \LaTeX3 code.
+In the \textsc{ctan} repository for the \pkg{xpackages},\footnote{\url{http://mirror.ctan.org/tex-archive/macros/latex/contrib/xpackages/}} you'll find two items of interest:
+\begin{itemize}
+\item A revised version of \textsf{xparse}; and
+\item The new package \textsf{xtemplate}, a re-implementation of \textsf{template} with a new syntax.
+\end{itemize}
+Special thanks to Joseph Wright who handled the implementations above almost single-handedly (with lots of input and feedback from other members of the team and members of the \textsc{latex-l} mailing list).
+
+These two packages are designed for the \LaTeX\ package author who wishes to define document commands and designer interfaces in a high-level manner.
+
+\paragraph{\textsf{xparse}}
+This package allows complex document commands to be constructed with all sorts of optional arguments and flags. Think of how \verb|\newcommand| allows you to create a command with a single optional argument and \textsf{xparse} is a generalisation of that idea.
+
+\paragraph{\textsf{xtemplate}}
+This package requires more explanation.
+\textsf{Xtemplate} is designed to separate the logical information in a
+document from its visual representation. `Templates' are constructed to fulfil
+individual typesetting requirements for each set of arguments; to change
+the look of a certain part of a document, instantiations of templates can be
+swapped out for another without (a) having to change the markup of the source
+document, or (b) having to edit some internal \LaTeX\ macro.
+
+
+\LaTeXe{} packages, such as \textsf{geometry} or \textsf{titlesec}, already provide
+parameterized interfaces to specific document elements. For example,
+one may use \textsf{titlesec} to change the
+layout of a \verb|\section|: one modifies its layout parameters via \verb|\titleformat| and \verb|\titlespacing|.
+In a way, such packages define a template for a specific document element and
+some manipulation commands to instantiate it.
+\pagebreak
+However, the moment the intended
+layout is not achievable with one package you are on your own: either you have
+to resort to low-level programming or find some other high-level package which, of course, comes with its own set of conventions and manipulation commands.
+
+The \textsf{xtemplate} package can be thought of a generalization of such
+ideas. It provides a uniform interface for defining and managing templates for
+any kind of document element and most importantly provides a uniform interface
+for instantiating the layout.
+
+Thus the designer activity of defining or modifying a document class is
+limited to selecting the document elements that should be provided by the
+class (e.g., \verb|\chapter|, \verb|\section| \verb|\footnote|, lists, \ldots), selecting
+appropriate ``named'' templates for each of them, and instantiating these
+templates by specifying values for their layout parameters. If a desired
+layout can't be achieved with a given template a different template for the
+same document element can be selected.
+
+Programming is only necessary
+if no suitable template for the intended layout is available.
+It is then that a \LaTeX{} programmer has to build a new template
+that supports the layout requirements. Once this task is complete, the
+template may be
+added to the selection of templates that designers and users may choose from
+to define or adjust document layouts seamlessly.
+
+This is a slight gloss over the complexities of the package itself, which you can read about in the documentation. We've tried to document \textsf{xtemplate} clearly but we'd love feedback on whether the ideas make sense to you.
+
+As an addendum to the introduction of \textsf{xtemplate}, the older \textsf{template} package will be retired in the near future. To our knowledge there is only a single package on \textsc{ctan} that uses \textsf{template}, namely \textsf{xfrac}, and members of the \LaTeX\ team are in the process of switching this package over to \textsf{xtemplate}. If you have any private code that uses \textsf{template}, please let us know!
+
+
+\section{Upcoming plans}
+
+Having announced the updated \textsf{xparse} and the new \textsf{xtemplate}, the next stage of development will revolve around using these two systems in the other components of the \textsf{xpackages}, feeding back our experience in practise with the original ideas behind the designs and evaluating if the packages are meeting our expectations.
+
+\subsection{Packages to tackle}
+
+\paragraph{\textsf{xhead}}
+The first work will be to create a new \textsf{xpackage} (probably called \textsf{xhead}), for typesetting section headings and other document divisions.
+Section headings are one of the more complex areas to work with, so
+the work should stress \textsf{xtemplate} enough to know if its
+current design is sufficient for most needs. Nothing has been
+released yet, but we'll announce further developments on the
+\textsc{latex-l} mailing
+list\footnote{For details, see
+ \url{http://www.latex-project.org/code.html}} in the
+mean time.
+
+
+\paragraph{\textsf{galley}}
+We also need to give \textsf{galley} the same treatment as
+\textsf{xparse} and \textsf{xtemplate} have already had. That is, we have an
+older implementation (in fact two) that needs some work before we're ready to release it to \textsc{ctan}.
+
+The \textsf{galley} package is used to place material into the
+vertical list while typesetting but before page breaks occur. Since it
+works at such a low level, it is important to solidify this package
+before writing higher level design templates.
+
+An issue we have to face is that to achieve best results,
+\textsf{galley} cannot be used in concert with \LaTeXe\ code. This
+could limit its usefulness, and we may decide that it's better to
+scale back the features we're attempting, to allow better
+interoperability for existing packages and documents. More work
+remains before we can decide between these options.
+
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
new file mode 100644
index 0000000000..28a8779ab6
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.tex b/macros/latex/contrib/l3kernel/l3news04.tex
new file mode 100644
index 0000000000..a0fc82f3de
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news04.tex
@@ -0,0 +1,123 @@
+% Copyright 2009,2010 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{url,hologo}
+
+\publicationmonth{July}
+\publicationyear{2010}
+\publicationissue{4}
+
+\begin{document}
+\maketitle
+
+\noindent
+Now that we're back from the \TeX\ Users Group conference in San
+Francisco, it's time to discuss what's been going on over the last six months.
+Due to some extra travel plans after the conference, this issue is slightly
+late in coming out.
+
+
+\section{\textsf{expl3} in practice}
+
+Joseph Wright and Will Robertson have both released significant new versions
+of their packages, resp., \textsf{siunitx} and \textsf{fontspec}. These have
+been re-written in the \LaTeX3 programming language \textsf{expl3}, which we
+have discussed here previously. Using \textsf{expl3} for production code has
+been very successful, both in demonstrating that the concepts are sound and
+highlighting areas that still need some attention.
+% The \textsf{expl3}
+% code will continue to evolve as more people use it for their work.
+
+In the case of \textsf{fontspec}, \textsf{expl3} programming is being used to
+target \LaTeX\ running on either \XeTeX\ and \hologo{LuaTeX}. In the latter
+case, the package is a mixture of Lua code and \pkg{expl3} code; Will
+presented the \pkg{unicode-math} package at TUG~2010, which is developed in
+the same style.
+
+
+\section{New \textsf{xpackages}}
+
+Frank Mittelbach has started to work on a new experimental \LaTeX3 package
+\textsf{xhead} that provides templates for one of the most complex areas of
+document design: section headings and document divisions. This
+is the beginning of an ambitious idea to map out the requirements for
+typesetting most documents currently processed with \LaTeX.
+
+One of the challenges here is providing a ``natural'' design language for
+describing the two-dimensional spatial relationships of objects participating
+in the design, e.g., the placement of a heading number in relation to the
+heading title, a possible sub-title, etc. In answer to this challenge Frank
+developed the \textsf{xcoffin} package, which he presented at TUG~2010. It is
+designed as a high-level interface for placing and aligning boxes on a page,
+allowing a `designer's approach' for indicating the positional relationship
+between boxes. (A `coffin' is a box with handles.) As an example, it is
+possible to represent ideas such as `align the lower-left corner of box A with
+the upper-right corner of box B after rotating it ninety degrees', without
+having to calculate the intermediate positions.
+
+We expect a future version of \textsf{xcoffin} (after some further work on its
+interface layer and its internal implementation) to play a major role in all
+packages providing layout templates for higher-level document objects, such as
+table of contents designs, floats, etc.
+
+Finally,
+Joseph Wright has begun work with the current `galley' packages, producing the
+new, minimal, \textsf{xgalley} based on \textsf{xfm-galley} as a testbed for
+what we need and what will work.
+
+
+\section{Developments with \textsf{expl3}}
+
+Meanwhile, Joseph's \emph{also} been writing a new floating-point calculation
+module, called \textsf{l3fp}, for \pkg{expl3}. This module allows manipulation
+and calculation of numbers with a much larger range than \TeX\ allows
+naturally. The \textsf{l3fp} module has already been utilised in the
+\pkg{xcoffin} code for calculatations such as coordinate rotations and
+intersection points of vectors.
+
+The modules \pkg{l3io} and \pkg{l3file} have been revised, rethinking the way
+that read and write streams are dealt with. \TeX\ has a hard limit of sixteen
+input and output streams open at any one time, and the new implementation for
+\pkg{expl3} provides more flexibility in how they are allocated; there's now
+much less chance of running into a `\verb|No room for a new \read|' (or
+\verb|\write|) error.
+
+Sometimes we discuss ideas for \textsf{expl3} that \emph{don't} end up making
+it into the final code. One example of this is the concept of having `local
+registers' for integers, boxes, and so on, that do not survive outside of the
+group they are defined in (in contrast to Plain \TeX\ and \LaTeX, where
+allocators such as \verb|\newcount| and \verb|\newbox| are always global).
+Despite the scope for some small benefit, we decided that the extra complexity
+that the additional functions required, in both syntax and documentation, was
+not justified.
+
+
+\section{TUG 2010 reflections}
+
+% added most of it back in: -fmi
+
+%% Most of the active \LaTeX3 Project team were able to attend the TUG~2010
+%% conference and (for Will) meet everyone in person for the first time.
+
+Our interpretation of the broad themes discussed at the conference are that
+\TeX-based systems are still thriving and there are some big problems to solve
+with robust solutions to transform \LaTeX\ source, including mathematics, into
+a form such as HTML. While there are big pushes for standardising various aspects
+of the \LaTeX\ syntax, we also believe that it is \LaTeX's very
+flexibility---its inherently non-standardised markup---that has allowed it to
+survive for so many years. There is a delicate trade-off here between moving
+forward into more standards-based territory while also retaining the
+extensibility of the third-party package system.
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
new file mode 100644
index 0000000000..3fa6010bab
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.tex b/macros/latex/contrib/l3kernel/l3news05.tex
new file mode 100644
index 0000000000..43ec2a8d19
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news05.tex
@@ -0,0 +1,64 @@
+% Copyright 2011 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{hologo}
+
+\publicationmonth{January}
+\publicationyear{2011}
+\publicationissue{5}
+
+\begin{document}
+\maketitle
+
+
+\section{Happy new year}
+
+Seasons greetings for 2011!
+As the previous news issue was released late, this season's issue will be shorter than usual.
+
+\section{The LPPL is now OSI-approved}
+
+We are happy to report that earlier this year the \LaTeX\ Project Public License (LPPL) has been approved by the OSI as an open source licence.\footnote{\url{http://www.opensource.org/licenses/lppl}} Frank Mittelbach will be publishing further details on this news in a retrospective on the LPPL in an upcoming TUGboat article.
+
+\section{Reflections on 2010}
+
+We are pleased to see the continued development and discussion in the \TeX\ world.
+The \LaTeX\ ecosystem continues to see new developments and a selection of notable news from the second half of last year include:
+\begin{itemize}
+\item[June] The TUG~2010 conference was held very successfully in San
+Francisco; videos, slides, and papers from \LaTeX3 Project members are available from our website.\footnote{\url{http://www.latex-project.org/papers/}}
+\item[Aug.]
+The \TeX\ Stack Exchange\footnote{\url{http://tex.stackexchange.com}} question\,\&\,answer website was created and has since grown quickly. At time of writing, some 2800 people have asked 2600 questions with 5600 answers total, and 2200 users are currently visiting daily.
+\item[Sept.] \TeX\ Live 2010 was released: each year the shipping date is earlier; the production process is becoming more streamlined and we congratulate all involved for their hard work. One of the most notable new components of \TeX\ Live 2010 includes the `restricted shell escape' feature to allow, among other things, automatic EPS figure conversion for pdf\LaTeX\ documents.
+\item[Oct.] TLContrib\footnote{\url{http://tlcontrib.metatex.org/}} was opened by Taco Hoekwater as a way to update a \TeX~Live installation with material that is not distributable through \verb|tlmgr| itself. Such material includes executables (e.g., new versions of Lua\TeX), non-free code, or test versions of packages.
+\item[Nov.] Philipp Lehman released the first stable version of \textsf{biblatex}. One of the most ambitious \LaTeX\ packages in recent memory, \textsf{biblatex} is a highly flexible package for managing citation cross-referencing and bibliography typesetting. In `beta' status for some years now, reaching this point is a great milestone.
+\item[Dec.] Lua\TeX\ 0.65. We are happy to see Lua\TeX\ development steadily continuing. \LaTeX\ users may use Lua\TeX\ with the \verb|lualatex| program. Like \verb|xelatex|, this allows \LaTeX\ documents to use multilingual OpenType fonts and Unicode text input.
+\end{itemize}
+
+\section{Current progress}
+
+The \textsf{expl3} programming modules continue to see revision and expansion; we have added a Lua\TeX\ module, but \textsf{expl3} continues to support all three of pdf\LaTeX, \XeLaTeX, and Lua\LaTeX\ equally.
+
+The \textsf{l3fp} module for performing floating-point arithmetic has been extended and improved. Floating point maths is important for some of the calculations required for complex box typesetting performed in the new `coffins' code.
+The \textsf{l3coffin} module has been added based on the original \textsf{xcoffins} package introduced at TUG~2010 as reported in the last news issue; this code is now available from CTAN for testing and feedback.
+
+We have consolidated the \textsf{l3int} and \textsf{l3intexpr} modules (which were separate for historical purposes); all integer/count-related functions are now contained within the `\textsf{int}' code and have prefix \verb|\int_|. Backwards compatibility is provided for, but eventually we will drop support for the older \verb|\intexpr_| function names.
+
+\section{Plans for 2011}
+
+In the following year, we plan to use the current \LaTeX3 infrastructure to continue work in building high-level code for designing \LaTeX\ documents using the \textsf{xtemplate} package. Our first priority is to look at section headings and document divisions, as we see this area as one of the most difficult, design-wise, of the areas to address. From there we will broaden our scope to more document elements.
+
+We will also do some low-level work on the `galley', which is the code that \LaTeX3 uses to build material for constructing pages, and we will continue to extend \textsf{expl3} into a more complete system from which we can, one day, create a pure \LaTeX3 format.
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
new file mode 100644
index 0000000000..a3c20b9140
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.tex b/macros/latex/contrib/l3kernel/l3news06.tex
new file mode 100644
index 0000000000..50484e6142
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news06.tex
@@ -0,0 +1,141 @@
+% Copyright 2011 The LaTeX Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{hologo}
+
+\publicationmonth{June}
+\publicationyear{2011}
+\publicationissue{6}
+
+\begin{document}
+\maketitle
+
+\noindent
+A key aim of releasing `stable' \LaTeX3 material to CTAN is to allow users to
+benefit from new ideas \emph{now}, and also to raise the profile of usable
+\LaTeX3 ideas. This is clearly being successful, with \pkg{xparse} being of
+particular utility to end users. This increase in interest has been
+particularly notable on the new
+\href{http://tex.stackexchange.com/}{TeX.SX Q\&A site}.
+
+\section{The \LaTeX3 Team expands}
+
+Raising interest in \LaTeX3 developments has inevitably led to feedback on
+cases where the code base has required attention. It has also attracted new
+programmers to using \LaTeX3 ideas, some more than others! Bruno Le Floch has
+over the past few months made many useful contributions to \LaTeX3, and we are
+very pleased that he has recently joined the \LaTeX3 Project.
+
+Bruno has taken a particular interest in improving the performance and
+reliability of the \pkg{expl3} language. This has already resulted in new
+implementations for the \texttt{prop} and \texttt{seq} data types. At the same
+time, he has identified and fixed several edge-case issues in core \pkg{expl3}
+macros.
+
+\section{The `Big Bang'}
+
+In parallel to Bruno's improvements, Joseph Wright initiated a series of `Big
+Bang' improvements to \LaTeX3. The aim of the Big Bang was to address a number
+of long-standing issues with the \LaTeX3 code base. Development has taken place
+over many years, with the status of some of the resulting code being less
+than clear, even to members of The \LaTeX3 Project! At the same time, different
+conventions had been applied to different parts of the code, which made reading
+some of the code rather `interesting'. A key part of the Big Bang has been to
+address these issues, cleaning up the existing code and ensuring that the
+status of each part is clear.
+
+The arrangement of \LaTeX3 code is now the same in the development
+repository and on CTAN, and splits the code into three parts.
+\begin{description}
+ \item[\pkg{l3kernel}] The core of \LaTeX3, code which
+ is expected to be used in a \LaTeX3 kernel in more or less the
+ current form. Currently, this part is made up of the \LaTeX3
+ programming layer, \pkg{expl3}.
+ \item[\pkg{l3packages}] \LaTeXe{} packages making use of \LaTeX3
+ concepts and with stable interfaces. The \pkg{xparse} and
+ \pkg{xtemplate} packages are the core of this area. While many of
+ the \emph{ideas} explored here may eventually appear in a \LaTeX3
+ kernel, the interfaces here are tied to \LaTeXe{}.
+ \item[\pkg{l3experimental}] \LaTeXe{} packages which explore more
+ experimental \LaTeX3 ideas, and which may see interface changes as
+ development continues. Over time, we expect code to move from this area
+ to either \pkg{l3kernel} or \pkg{l3packages}, as appropriate.
+\end{description}
+
+In addition to these release areas, the development code also features a
+\pkg{l3trial} section for exploring code ideas. Code in \pkg{l3trial} may be
+used to improve or replace other parts of \LaTeX3, or may simply be dropped!
+
+As well as these improvements to the \emph{code} used in \LaTeX3, much of the
+documentation for \pkg{expl3} has been made more precise as part of the Big
+Bang. This means that \texttt{source3.pdf} is now rather longer than it was
+previously, but also should mean that many of the inaccuracies in earlier
+versions have been removed. Of course, we are very pleased to receive
+suggestions for further improvement.
+
+\section{\LaTeX3 on GitHub}
+
+The core development repository for \LaTeX3 is held in an SVN repository, which
+is \href{http://www.latex-project.org/code.html}{publicly viewable \emph{via}
+the Project website}. However, this interface misses out on some of the `bells
+and whistles' of newer code-hosting sites such as
+\href{http://gitbug.com/}{GitHub} and \href{http://bitbucket.org/}{BitBucket}.
+We have therefore established a mirror of the master repository on GitHub%
+\footnote{\url{http://github.com/latex3/svn-mirror}}. This is kept in
+synchronisation with the main SVN repository by Will Robertson (or at least
+by his laptop!).
+
+The GitHub mirror offers several useful features for people who wish to
+follow the \LaTeX3 code changes. GitHub offers facilities such as highlighted
+differences and notification of changes. It also makes it possible for
+non-Team members to submit patches for \LaTeX3 as `pull requests' on
+GitHub.
+
+As well as offering a convenient interface to the \LaTeX3 code, the GitHub
+site also includes an issue database\footnote{%
+\url{http://github.com/latex3/svn-mirror/issues}}. Given the very
+active nature of \LaTeX3 development, and the transitory nature of many
+of the issues, this provides a better approach to tracking issues than
+the main \LaTeX{} bug database\footnote{\url{http://www.latex-project.org/bugs.html}}.
+Developers and users are
+therefore asked to report any issues with \LaTeX3 code \emph{via} the GitHub
+database, rather than on the main Project homepage.
+Discussion on the \href{http://www.latex-project.org/code.html}{\mbox{LaTeX-L} mailing list}
+is also encouraged.
+
+\section{Next steps}
+
+The `Big Bang' involves making a number of changes to \pkg{expl3} function
+names, and is likely to break at least some third-party code. As a result,
+the updates will not appear on the \TeX{} Live 2011 DVD release, but will
+instead be added to \TeX{} Live once regular updates restart (probably
+August).
+
+Bruno is working on a significant overhaul of the \pkg{l3fp} floating-point
+unit for \LaTeX3. He has developed an approach which allows expandable
+parsing of floating-point expressions, which will eventually allow syntax
+such as
+\begin{verbatim}
+ \fp_parse:n { 3 * 4 ( ln(5) + 1 ) }
+\end{verbatim}
+This will result in some changes in the interface for floating-point numbers, but
+we feel that the long-term benefit is worth a small amount of recoding in other
+areas.
+
+Joseph has completed documentation of the \pkg{xgalley} module, and this is
+currently being discussed. Joseph is hoping to move on to implement other
+more visible ideas based on the \pkg{xtemplate} concept over the next few
+months.
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
new file mode 100644
index 0000000000..7904107be8
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.tex b/macros/latex/contrib/l3kernel/l3news07.tex
new file mode 100644
index 0000000000..9889d5f094
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news07.tex
@@ -0,0 +1,111 @@
+% Copyright 2012 The LaTeX3 Project
+\documentclass{ltnews}
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\publicationmonth{February}
+\publicationyear{2012}
+\publicationissue{7}
+
+\begin{document}
+\maketitle
+
+\section{After the `Big Bang'}
+
+The last \LaTeX3 News gave details of the `Big Bang', in which the team have
+revised the layout and coverage of the \LaTeX3 codebase. This process has
+made the status of different modules clearer, so that both the team themselves
+and everyone else know what is going on.
+
+The `Big Bang' changes were not shipped to \textsc{ctan} until after the \TeX{}
+Live 2011 freeze, as we did not want to end up with a \textsc{dvd} containing
+badly broken code. The update went to \textsc{ctan} soon after \TeX{} Live 2011
+shipped, and has now propagated around the world. The new package naming
+(\pkg{l3kernel}, \pkg{l3packages} and \pkg{l3experimental}) has caused some
+surprises for a small number of users, but there have not been any major
+issues with the changes at the code level.
+
+The `Big Bang' has attracted attention from programmers outside of the
+\LaTeX3 team, with useful feedback arriving on the
+\texttt{LaTeX-L} list and TeX.sx, in particular. One area that this has
+highlighted is the need to document carefully when changes to the `stable'
+parts of the \LaTeX3 codebase occur. All changes to \pkg{l3kernel} now
+come with an explicit date for the change in the documentation, which means
+that programmers can check exactly when the features they want were introduced.
+
+Another key part of supporting \LaTeX3 use beyond the team is making it easy
+to check on the version of \LaTeX3 installed. To support that, the file date
+of the main \pkg{expl3} package is now set each time there is a release of the
+\LaTeX3 material to \textsc{ctan}. This means that the \LaTeXe{}
+\cs{@ifpackagelater} test can be used reliably to detect if the installed
+version of \LaTeX3 is going to supply the functions that a programmer is
+using.
+
+\section{Deforming boxes}
+
+Additions to both the \LaTeX3 stable material and more experimental modules
+continue. Joseph Wright has been working on adding `native' drivers for
+\LaTeX3 to support box transformations. These allow box rotation, clipping
+and scaling with the drivers \texttt{dvips}, \texttt{xdvipdfmx} and direct
+\textsc{pdf} output.
+
+The development of clipping support for the \texttt{xdvipdfmx} driver has also allowed
+us to suggest improvements to the \LaTeXe{} graphics drivers, enabling clipping
+with the \XeTeX{} engine.
+
+\section{A TeX-based regex engine}
+
+Bruno Le Floch has been %working across the codebase, %% omitted to avoid page break
+improving the efficiency
+and robustness of a number of \LaTeX3 functions. Most notably, he has
+created a purely \TeX{}-based regular expression (regex) system for \LaTeX3.
+This is currently experimental, but is already proving useful and will
+hopefully stabilise over the coming months.
+
+Bruno's regex system works with all of the supported engines (pdf\TeX{},
+\XeTeX{} and \LuaTeX{}). He has implemented the core ideas of standard
+regex systems, along with some \TeX{}-specifics to allow matching and
+replacing
+the content of token lists % correct?
+by category code.
+
+\section{\pkg{xparse} improves}
+
+The \pkg{xparse} module has been overhauled, making the internal code
+more efficient and adding additional argument types. This has also allowed
+us to deal with a number of internal bugs, meaning that argument grabbing
+is now more reliable.
+
+The argument grabbers themselves have been reworked so that in the event of an error,
+the user will normally get a meaningful message from \TeX{} rather than
+one pointing to \pkg{xparse} internal function names. This should help
+in tracking down erroneous input in real documents.
+
+\section{The galley}
+
+As detailed in the last issue, work on the galley module has been continuing.
+Discussion of Joseph's reimplementation of the galley concepts highlighted
+some important areas to work on, with the nature of the template concept
+being particularly significant.
+
+More work is still needed to finalise the galley concepts, but it is clear that
+some of this will require feedback from other areas. Joseph therefore hopes
+to finish work on the current round of galley improvements by the end of
+February, and to return to them once some other areas have been addressed.
+
+\section{Relationships between document items}
+
+The \textsc{tug}2011 meeting took place in October in India. Frank Mittelbach
+spoke there about ideas for describing the design relationship between document elements.
+% omit calling it "ldb" here because that name will likely change (last I heard?)
+These ideas allow a document designer to specify the design of a document element
+based on its context within a document, and progress in this area will likely
+lead to an extension in the \pkg{xtemplate} system.
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
new file mode 100644
index 0000000000..7a076e7bef
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.tex b/macros/latex/contrib/l3kernel/l3news08.tex
new file mode 100644
index 0000000000..17107f8360
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news08.tex
@@ -0,0 +1,170 @@
+% Copyright 2012 The LaTeX3 Project
+\documentclass{ltnews}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+}
+
+\usepackage{expl3,siunitx,catchfile}
+\usepackage{hologo}
+\usepackage{verbatim}% avoid ltnews' "special" verbatim processing
+
+\publicationmonth{July}
+\publicationyear{2012}
+\publicationissue{8}
+
+\def\DTX{\texttt{.dtx}}
+\def\STY{\texttt{.sty}}
+
+\ExplSyntaxOn
+\NewDocumentCommand { \calcnum } { m }
+ { \num { \fp_to_scientific:n {#1} } }
+\ExplSyntaxOff
+
+\begin{document}
+\maketitle
+
+\raisefirstsection
+\section{Extended floating point support}
+
+Bruno Le Floch has been re-writing the floating point module to function in an `expandable' manner. This allows floating point calculations to be computed far more flexibly and efficiently than before.
+The expandable nature of the new code allows its use inside operations such as writing to external files, for which previously any such calculations would have to be pre-calculated before any of the writing operations began.
+
+Bruno's work on the floating point module has been officially released into the main \textsc{svn} repository for \texttt{l3kernel}; \TeX\ Live 2012 will contain the `old' code for stability while this year is spent testing the new code in production environments and ironing out any wrinkles.
+
+Here's a neat example as suggested in the documentation, which produces `\calcnum { round ( 200 pi * sin ( 2.3 ^ 5 ) , 2 ) }':
+
+\begin{verbatim}
+\usepackage{xparse, siunitx}
+\ExplSyntaxOn
+\NewDocumentCommand { \calcnum } { m }
+ { \num { \fp_to_scientific:n {#1} } }
+\ExplSyntaxOff
+
+\calcnum {
+ round ( 200 pi * sin ( 2.3 ^ 5 ) , 2 )
+}
+\end{verbatim}
+
+This feature is invaluable for simple (and not-so-simple) calculations in document and package authoring, and has been lacking a robust solution for many years.
+While \hologo{LuaLaTeX} can perform similar tasks within its Lua environment, the floating point support is written using the \texttt{expl3} programming language only, and is thus available in \hologo{pdfLaTeX} and \hologo{XeLaTeX} as well.
+
+\section{Regular expressions in \TeX}
+
+As if expandable floating point support wasn't enough, Bruno has also written a complete regular expression engine in \texttt{expl3} as well.
+% [Ed: Consider my mind blown.]
+Many reading this will be familiar with the quote attributed to Jamie Zawinski:
+\begin{quote}\itshape
+Some people, when confronted with a problem, think
+``I know, I'll use regular expressions.''
+Now they have two problems.
+\end{quote}
+And as humorous as the saying is, it's still fair to say that regular expressions are a great tool for manipulating streams of text.
+We desperately hope that people will \emph{not} start using the regex code to do things like parse \textsc{xml} documents; however, for general search--replace duties, there's never been anything like \texttt{l3regex} for the \LaTeX\ world.
+As a trivial example, there are
+\CatchFileDef\thisfile{\jobname.tex}{}%
+\ExplSyntaxOn
+\exp_args:Nno \regex_count:nnN { \b (?i) W e \b } {\thisfile} \l_tmpa_int
+\int_use:N \l_tmpa_int
+\ExplSyntaxOff
+~instances of the word `We' or `we' in this document (including those two).
+This value is counted automatically in two lines of code.
+
+And again, it is available for \hologo{pdfLaTeX} and \hologo{XeLaTeX} users as well as \hologo{LuaLaTeX} ones; it also bears noting that this provides an easy solution for applying regular expression processing to \LaTeX\ documents and text data even on the Windows operating system that does not have native support for such things.
+
+
+\section{Separating internal and external code}
+
+\LaTeX\ packages are written by a wide range of package authors and consist of code and commands for various purposes.
+Some of these commands will be intended for use by document authors (such as \verb|\pbox| from the \textsf{pbox} package); others are intended for use by other package writers (such as \verb|\@ifmtarg| from the \textsf{ifmtarg} package).
+
+However, a large portion of them are internal, i.e., are intended to
+be used only within the package or within the \LaTeX{} kernel and
+should not be used elsewhere. For example, \verb|\@float| is the
+\LaTeX{} kernel interface for floats to be used in class files, but
+the actual work is done by a command called \verb|\@xfloat| which
+should not be used directly. Unfortunately the \LaTeXe{} language
+makes no clear distinction between the two, so it is tempting for
+programmers to directly call the latter to save some ``unnecessary''
+parsing activity.
+
+The downside of this is that the ``internal'' commands suddenly act as
+interfaces and a reimplementation or fix in any of them would then
+break add-on packages as they rely on internal behavior. Over the
+course of the last twenty years probably 80\% of such ``internal''
+commands have found their way into one or another package. The
+consequences of this is that nowadays it is next to impossible to
+change anything in the \LaTeXe{} kernel (even if it is clearly just an
+internal command) without breaking something.
+
+
+In \LaTeX3 we hope to improve this situation drastically by
+clearly separating public interfaces (that extension packages can use
+and rely on) and private functions and variables (that should not
+appear outside of their module). There is (nearly) no way to enforce
+this without severe computing overhead, so we implement it only
+through a naming convention, and some support mechanisms. However, we
+think that this naming convention is easy to understand and to follow,
+so that we are confident that this will be adopted and provides the
+desired results.
+
+\subsection{Naming convention for internals}
+
+We've been throwing around some ideas for this for a number of years but nothing quite fit; the issue comes down to the fact that \TeX\ does not have a `name-spacing' mechanism so any internal command needs to have a specific prefix to avoid clashing with other packages' commands.
+The prefix we have finally decided on for \textsf{expl3} code is a double underscore, such that functions like \verb|\seq_count:N| are intended for external use and \verb|\__seq_item:n| is an internal command that should not be used or relied upon by others.
+
+All this is well and good, but it can be inconvenient to type long prefixes such as \verb|\__seq_| before all command names, especially in a package for which nearly \emph{all} package functions are internal.
+
+We therefore also extended \textsf{DocStrip} slightly by adding a `shorthand' for internal package prefixes.
+Commands and variables in \DTX\ code may now contain \texttt{@@} which is expanded to the function prefix when the \STY\ file is extracted.
+As an example, writing
+\begin{verbatim}
+ %<@@=seq>
+ \cs_new:Npn \@@_item:n
+ ...
+\end{verbatim}
+is equivalent to
+\begin{verbatim}
+ \cs_new:Npn \__seq_item:n
+ ...
+\end{verbatim}
+There are clear advantages to this syntax.
+Function names are shorter and therefore easier to type, and code can still be prototyped using the \texttt{@@} syntax
+(e.g., pasting code between a \DTX\ file and a regular \texttt{.tex} document).
+Most importantly, it is explicitly clear from the code source which commands are intended to be used externally and which should be avoided.
+
+We hope that this syntax will prove popular; in our initial experiments we think it works very well. In fact we found a good number of smaller errors when being forced to think about what is internal and what is an external function.
+
+\section{Continual revolution---the `small bang'}
+
+In addition to the major additions introduced above, Frank Mittelbach has been examining \texttt{expl3} with a fresh eye to resolve any outstanding issues in the consistency or logic of the names of functions.
+
+We are very mindful of the fact that for people to find \texttt{expl3} a useful tool, it must have a stable interface.
+This said, there are still some musty corners that we can show where people simply haven't been using certain functions.
+In select cases, we're re-assessing whether all of the (sometimes esoteric) odds and ends that have been added to \texttt{expl3} really belong; in other cases, it's now clear that some naming or behaviour choices weren't correct the first time around.
+
+To address this tarnish, we're carefully making some minor changes to parts of the \texttt{expl3} interface and we'd like to allay any fears that \texttt{expl3} isn't stable.
+The \texttt{expl3} language now offers a wide range of functions plus their variants, and we're talking about changing but a very small percentage of these, and not common ones at that.
+We don't want it to become a mess, so we think it's better to tidy things up as we go.
+Follow the \texttt{LaTeX-L} mailing list for such details as they arise.
+
+\end{document}
+
+
+dropped/replaced:
+
+The \LaTeX3 codebases ranges between these two extremes; the packages
+in \texttt{l3packages} are largely the former while the modules
+composing \textsf{expl3} are largely the latter type. In both cases,
+the `external' commands (whether for document author or package
+writer) are usually defined in terms of other internal package
+commands that should not be used by anyone else, but often when
+reading the internal package code it's not always clear which is
+which.
+
+For \LaTeX3 we are experimenting with an extension to the \textsf{DocStrip} mechanism to provide a clear distinction between internal and external package commands.
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
new file mode 100644
index 0000000000..4f6b2ca8f3
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.tex b/macros/latex/contrib/l3kernel/l3news09.tex
new file mode 100644
index 0000000000..c0982a94a6
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news09.tex
@@ -0,0 +1,1433 @@
+% Copyright 2014 The LaTeX3 Project
+\documentclass{ltnews}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+\usepackage{metalogo,ragged2e}
+
+\AtBeginDocument{
+ \renewcommand{\LaTeXNews}{\LaTeX3~News}
+ \RaggedRight
+ \setlength\parindent{1em}
+}
+
+\hbadness=10000
+\def\Dash{\,---\,}
+
+\providecommand\LuaLaTeX{Lua\LaTeX}
+\setcounter{tocdepth}{2}
+
+\usepackage{enumitem,csquotes}
+\MakeOuterQuote{"}
+\usepackage{fancyvrb}% to allow \Verb"<ul>" to typeset properly since ltnews patches \verb
+
+\makeatletter
+\renewcommand{\@subheadingfont}{%
+ \sffamily\slshape
+ \let\LaTeX\cmssLaTeX\let\TeX\cmssTeX
+}
+\renewcommand{\subsection}{%
+ \@startsection
+ {subsection}{2}{\z@}{-1.3ex \@plus -1ex \@minus -.2ex}%
+ {0.8ex \@plus.2ex}{\@subheadingfont}%
+}
+\makeatother
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\RequirePackage{tikz}
+\definecolor{basecolor}{RGB}{0,128,128}
+\definecolor{maincolor}{RGB}{55,200,113}
+
+
+\newcommand \explbanner{%
+\begin{tikzpicture}[y=0.80pt,x=0.80pt,yscale=-1, inner sep=0pt, outer sep=0pt]
+ \path[fill=basecolor,rounded corners=0.0000cm] (248.7785,295.7529) rectangle
+ (465.3586,478.5802);
+ \path[fill=white,rounded corners=0.0000cm] (257.9199,304.5427) rectangle
+ (456.2172,469.7905);
+ \path[fill=basecolor] (283.2386,478.5760) -- (289.5259,453.4125) .. controls
+ (302.2770,439.6121) and (314.0060,425.3008) .. (319.5695,407.9067) .. controls
+ (355.0759,401.0374) and (383.7853,403.5174) .. (413.7371,404.2858) .. controls
+ (411.0072,403.8309) and (322.2852,388.7992) .. (322.2852,388.7992) .. controls
+ (298.7181,356.5528) and (264.6380,373.5409) .. (249.0663,403.2205) --
+ (248.7470,478.6397) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=1.253pt]
+ (288.4249,394.4251) -- (288.2061,394.8313) .. controls (287.2860,396.5455) and
+ (285.7381,397.6863) .. (283.5499,398.3938) .. controls (281.3616,399.1013) and
+ (278.5647,399.3476) .. (275.2999,399.2063) -- (273.2374,399.1126) --
+ (274.7061,400.5501) .. controls (275.4640,401.2791) and (275.6960,401.8541) ..
+ (275.7061,402.3626) .. controls (275.7162,402.8712) and (275.5103,403.4284) ..
+ (275.0186,404.0501) .. controls (274.0353,405.2935) and (272.0593,406.6472) ..
+ (270.2374,408.0189) -- (269.6749,408.4564) -- (270.0499,409.0501) .. controls
+ (271.5698,411.3818) and (272.2617,413.2035) .. (272.4249,414.5814) .. controls
+ (272.5880,415.9592) and (272.2796,416.9162) .. (271.6436,417.7689) .. controls
+ (270.3717,419.4743) and (267.6257,420.6198) .. (265.1124,422.0501) --
+ (264.6124,422.3314) -- (264.7061,422.8626) .. controls (264.9221,424.1742) and
+ (264.5793,425.2316) .. (263.6436,426.3001) .. controls (262.7079,427.3687) and
+ (261.1571,428.4020) .. (259.0498,429.3001) -- (258.4873,429.5189) --
+ (258.5810,430.1126) .. controls (259.0013,432.9207) and (259.8134,435.3978) ..
+ (261.5810,436.9564) .. controls (263.1945,438.3790) and (265.6272,438.7418) ..
+ (268.7373,438.1126) .. controls (269.2811,441.1124) and (270.0885,443.8463) ..
+ (271.8935,445.6439) .. controls (273.7365,447.4793) and (276.5967,448.0631) ..
+ (280.5185,447.0189) .. controls (281.3879,449.0885) and (282.6104,450.5771) ..
+ (284.0498,451.5501) .. controls (285.6426,452.6269) and (287.4312,453.1746) ..
+ (289.1435,453.7064) -- (289.5810,452.2376) .. controls (287.8816,451.7099) and
+ (286.2778,451.1522) .. (284.9248,450.2376) .. controls (283.5718,449.3230) and
+ (282.4412,448.0628) .. (281.6748,445.8939) -- (281.4248,445.1751) --
+ (280.7060,445.3939) .. controls (276.7309,446.6155) and (274.5047,446.0613) ..
+ (272.9873,444.5501) .. controls (271.4699,443.0389) and (270.6337,440.3179) ..
+ (270.1123,437.1439) -- (269.9873,436.3001) -- (269.1435,436.5189) .. controls
+ (265.8672,437.3737) and (263.9323,436.9328) .. (262.6123,435.7689) .. controls
+ (261.3919,434.6928) and (260.6559,432.7860) .. (260.2373,430.4251) .. controls
+ (262.1657,429.5404) and (263.7732,428.5395) .. (264.8310,427.3314) .. controls
+ (265.8589,426.1576) and (266.3097,424.7444) .. (266.2373,423.2376) .. controls
+ (268.5457,421.9725) and (271.2938,420.8514) .. (272.8935,418.7064) .. controls
+ (273.7344,417.5788) and (274.1920,416.1226) .. (273.9873,414.3939) .. controls
+ (273.8023,412.8317) and (273.0178,411.0042) .. (271.7060,408.8626) .. controls
+ (273.3411,407.6578) and (275.1128,406.4408) .. (276.2373,405.0189) .. controls
+ (276.8610,404.2302) and (277.3196,403.3287) .. (277.2998,402.3314) .. controls
+ (277.2890,401.7896) and (277.0912,401.2653) .. (276.7998,400.7376) .. controls
+ (279.5102,400.7514) and (281.9952,400.5582) .. (284.0498,399.8939) .. controls
+ (286.3053,399.1646) and (288.0426,397.8495) .. (289.2060,396.0189) .. controls
+ (292.5635,396.0371) and (296.0636,396.7806) .. (299.5810,397.2376) .. controls
+ (303.1955,397.7073) and (306.8484,397.8601) .. (310.3310,396.3314) --
+ (309.7060,394.8939) .. controls (306.6247,396.2464) and (303.2846,396.1632) ..
+ (299.7685,395.7064) .. controls (296.2524,395.2495) and (292.5819,394.3984) ..
+ (288.8935,394.4251) -- (288.4248,394.4251) -- cycle;
+ \path[fill=white] (301.5159,393.8637) .. controls (301.5159,397.5244) and
+ (298.5484,400.4920) .. (294.8877,400.4920) .. controls (291.2270,400.4920) and
+ (288.2595,397.5244) .. (288.2595,393.8637) .. controls (288.2595,390.2031) and
+ (291.2270,387.2355) .. (294.8877,387.2355) .. controls (298.5484,387.2355) and
+ (301.5159,390.2031) .. (301.5159,393.8637) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=1.253pt]
+ (321.0186,387.9251) .. controls (315.0680,395.6662) and (313.8600,393.4088) ..
+ (310.2374,394.7063) -- (309.6124,394.9251) -- (309.7374,395.5813) .. controls
+ (311.1321,403.3566) and (315.5160,405.7238) .. (319.1124,408.5501) --
+ (320.0811,407.3313) .. controls (316.4798,404.5012) and (312.9249,402.6094) ..
+ (311.4874,396.0188) .. controls (314.1361,395.3813) and (316.6278,396.2007) ..
+ (322.2686,388.8626) -- (321.0186,387.9251) -- cycle;
+ \path[fill=maincolor] (301.5159,393.8637) .. controls (301.5159,397.5244) and
+ (298.5484,400.4920) .. (294.8877,400.4920) .. controls (291.2270,400.4920) and
+ (288.2595,397.5244) .. (288.2595,393.8637) .. controls (288.2595,390.2031) and
+ (291.2270,387.2355) .. (294.8877,387.2355) .. controls (298.5484,387.2355) and
+ (301.5159,390.2031) .. (301.5159,393.8637) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=1.253pt]
+ (294.8936,386.4563) .. controls (290.8098,386.4563) and (287.4874,389.7788) ..
+ (287.4874,393.8626) .. controls (287.4874,397.9464) and (290.8098,401.2688) ..
+ (294.8936,401.2688) .. controls (298.9774,401.2688) and (302.2999,397.9464) ..
+ (302.2999,393.8626) .. controls (302.2999,389.7788) and (298.9774,386.4563) ..
+ (294.8936,386.4563) -- cycle(294.8936,388.0188) .. controls
+ (298.1312,388.0188) and (300.7374,390.6250) .. (300.7374,393.8626) .. controls
+ (300.7374,397.1002) and (298.1312,399.7063) .. (294.8936,399.7063) .. controls
+ (291.6560,399.7063) and (289.0499,397.1002) .. (289.0499,393.8626) .. controls
+ (289.0499,390.6250) and (291.6560,388.0188) .. (294.8936,388.0188) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=1.253pt]
+ (291.5499,370.7063) .. controls (288.4841,370.7722) and (285.4193,371.2673) ..
+ (282.4249,372.1438) .. controls (269.6164,375.8932) and (256.6677,387.2311) ..
+ (248.7622,400.8596) -- (248.7662,404.0176) .. controls (256.4832,389.5161) and
+ (269.8419,377.4553) .. (282.8625,373.6438) .. controls (286.1465,372.6825) and
+ (289.4914,372.1880) .. (292.8312,372.2376) .. controls (302.8507,372.3862) and
+ (312.9146,377.4187) .. (321.6437,389.3626) -- (321.8312,389.6126) --
+ (322.1437,389.6751) .. controls (322.1437,389.6751) and (383.4924,400.0668) ..
+ (402.2375,403.2376) .. controls (376.3035,402.3430) and (350.4290,401.2333) ..
+ (319.3937,407.2376) -- (318.9250,407.3313) -- (318.8000,407.7688) .. controls
+ (313.2958,424.9775) and (301.6553,439.2096) .. (288.9250,452.9875) --
+ (288.8000,453.1125) -- (288.7375,453.3313) -- (282.4611,478.5810) --
+ (283.9307,478.5810) -- (290.2375,453.8937) .. controls (302.8375,440.2444) and
+ (314.4843,426.0036) .. (320.1437,408.7062) .. controls (355.3332,401.9651) and
+ (383.8501,404.4090) .. (413.7062,405.1750) -- (413.8312,403.6125) .. controls
+ (413.8282,403.6120) and (413.7403,403.6129) .. (413.7375,403.6125) .. controls
+ (410.8928,403.1379) and (323.2219,388.2676) .. (322.6750,388.1750) .. controls
+ (313.7728,376.1342) and (303.2902,370.9006) .. (292.8625,370.7062) .. controls
+ (292.4247,370.6982) and (291.9880,370.6972) .. (291.5500,370.7062) -- cycle;
+ \path[fill=maincolor,miter limit=4.00,line width=0.977pt] (370.0353,433.6332) --
+ (333.5033,433.6332) -- (333.5033,428.6205) .. controls (334.6678,428.5193) and
+ (335.9083,428.4180) .. (337.2248,428.3167) .. controls (338.5413,428.1648) and
+ (339.6299,427.9623) .. (340.4907,427.7091) .. controls (341.9084,427.2534) and
+ (342.9717,426.4686) .. (343.6806,425.3547) .. controls (344.3895,424.1901) and
+ (344.7439,422.6964) .. (344.7439,420.8736) -- (344.7439,334.1385) .. controls
+ (344.7439,332.3158) and (344.3388,330.6195) .. (343.5287,329.0498) .. controls
+ (342.7692,327.4296) and (341.7565,326.1638) .. (340.4907,325.2523) .. controls
+ (339.5793,324.6448) and (337.9084,324.0878) .. (335.4780,323.5814) .. controls
+ (333.0476,323.0752) and (331.0982,322.7714) .. (329.6298,322.6700) --
+ (329.6298,317.8092) -- (357.8073,316.0623) -- (358.8706,317.2016) --
+ (358.8706,419.9622) .. controls (358.8706,421.7344) and (359.1997,423.2028) ..
+ (359.8580,424.3673) .. controls (360.5162,425.4813) and (361.5795,426.3420) ..
+ (363.0479,426.9496) .. controls (364.1618,427.4560) and (365.2504,427.8357) ..
+ (366.3138,428.0889) .. controls (367.4277,428.3420) and (368.6682,428.5193) ..
+ (370.0353,428.6205) -- (370.0353,433.6332);
+ \path[color=black,fill=white,nonzero rule,line width=0.977pt]
+ (357.7812,315.4375) -- (329.5938,317.1875) -- (329.0312,317.2500) --
+ (329.0312,317.8125) -- (329.0312,322.6562) -- (329.0312,323.2500) --
+ (329.5938,323.2813) .. controls (331.0155,323.3795) and (332.9294,323.6847) ..
+ (335.3438,324.1875) .. controls (337.7273,324.6842) and (339.3512,325.2404) ..
+ (340.1250,325.7500) .. controls (340.1300,325.7530) and (340.1517,325.7471) ..
+ (340.1563,325.7500) .. controls (341.3216,326.5942) and (342.2496,327.7784) ..
+ (342.9688,329.3125) -- (343.0001,329.3438) .. controls (343.7660,330.8280) and
+ (344.1251,332.3928) .. (344.1251,334.1251) -- (344.1251,420.8751) .. controls
+ (344.1251,422.6188) and (343.7916,423.9876) .. (343.1563,425.0313) .. controls
+ (342.5262,426.0216) and (341.6206,426.7047) .. (340.3126,427.1251) .. controls
+ (339.5087,427.3615) and (338.4639,427.5701) .. (337.1876,427.7188) .. controls
+ (337.1753,427.7198) and (337.1687,427.7178) .. (337.1563,427.7188) .. controls
+ (335.8502,427.8194) and (334.5947,427.8995) .. (333.4375,428.0001) --
+ (332.9063,428.0626) -- (332.9063,428.6251) -- (332.9063,433.6251) --
+ (332.9063,434.2501) -- (333.5000,434.2501) -- (370.0313,434.2501) --
+ (370.0313,433.6251) -- (370.6563,433.6251) -- (370.6563,428.6251) --
+ (370.6563,428.0626) -- (370.0938,428.0001) .. controls (368.7631,427.9015) and
+ (367.5404,427.7420) .. (366.4688,427.5001) .. controls (366.4598,427.4981) and
+ (366.4466,427.5021) .. (366.4375,427.5001) .. controls (365.4251,427.2570) and
+ (364.3851,426.8939) .. (363.3125,426.4063) -- (363.2812,426.3750) .. controls
+ (361.9048,425.8055) and (360.9567,425.0472) .. (360.3750,424.0625) .. controls
+ (359.7820,423.0135) and (359.4687,421.6654) .. (359.4687,419.9688) --
+ (359.4687,317.1875) -- (359.4687,316.9688) -- (359.3125,316.7813) --
+ (358.2500,315.6563) -- (358.0625,315.4375) -- (357.7812,315.4375) --
+ cycle(357.5625,316.6875) -- (358.2500,317.4062) -- (358.2500,419.9688) ..
+ controls (358.2500,421.8165) and (358.5889,423.3762) .. (359.3125,424.6562) --
+ (359.3438,424.6875) .. controls (360.0742,425.9238) and (361.2340,426.8546) ..
+ (362.7813,427.5000) .. controls (362.7903,427.5041) and (362.8037,427.4960) ..
+ (362.8126,427.5000) .. controls (363.9485,428.0145) and (365.0908,428.4264) ..
+ (366.1876,428.6875) .. controls (367.1668,428.9101) and (368.2823,429.0175) ..
+ (369.4376,429.1250) -- (369.4376,433.0313) -- (334.1251,433.0313) --
+ (334.1251,429.1875) .. controls (335.1314,429.1017) and (336.1652,429.0234) ..
+ (337.2813,428.9375) .. controls (338.6211,428.7830) and (339.7464,428.5489) ..
+ (340.6563,428.2813) -- (340.6876,428.2813) .. controls (342.2151,427.7903) and
+ (343.4000,426.9252) .. (344.1876,425.6875) .. controls (344.9701,424.4021) and
+ (345.3439,422.7770) .. (345.3439,420.8750) -- (345.3439,334.1250) .. controls
+ (345.3439,332.2119) and (344.9169,330.4366) .. (344.0626,328.7813) --
+ (344.0939,328.7813) .. controls (343.2978,327.0829) and (342.2020,325.7280) ..
+ (340.8439,324.7500) .. controls (339.7893,324.0471) and (338.0571,323.4821) ..
+ (335.5939,322.9688) .. controls (333.3923,322.5102) and (331.6955,322.2871) ..
+ (330.2502,322.1563) -- (330.2502,318.3750) -- (357.5627,316.6875) -- cycle;
+ \path[fill=basecolor,miter limit=4.00,line width=0.977pt] (411.1244,461.3551) ..
+ controls (406.3648,461.3550) and (402.0103,460.7474) .. (398.0609,459.5323) ..
+ controls (394.1115,458.3677) and (390.7191,456.7727) .. (387.8836,454.7474) ..
+ controls (385.0481,452.7220) and (382.8456,450.3929) .. (381.2759,447.7600) ..
+ controls (379.7569,445.1270) and (378.9974,442.4181) .. (378.9974,439.6333) ..
+ controls (378.9974,437.1523) and (379.6050,434.9244) .. (380.8202,432.9497) ..
+ controls (382.0354,430.9244) and (383.9848,429.9117) .. (386.6684,429.9117) ..
+ controls (389.7064,429.9117) and (392.0102,430.6712) .. (393.5799,432.1902) ..
+ controls (395.2001,433.6586) and (396.0103,435.3548) .. (396.0103,437.2789) ..
+ controls (396.0103,438.8991) and (395.7318,440.9498) .. (395.1748,443.4308) ..
+ controls (394.6685,445.9118) and (394.2634,447.6840) .. (393.9596,448.7473) ..
+ controls (394.3140,449.2030) and (394.9470,449.8106) .. (395.8584,450.5701) ..
+ controls (396.8204,451.3296) and (397.9850,452.0132) .. (399.3521,452.6208) ..
+ controls (400.9723,453.3803) and (402.6686,453.9879) .. (404.4408,454.4436) ..
+ controls (406.2129,454.8993) and (408.7192,455.1271) .. (411.9598,455.1272) ..
+ controls (414.9978,455.1271) and (417.9092,454.6208) .. (420.6941,453.6081) ..
+ controls (423.5295,452.5955) and (426.0106,450.9752) .. (428.1372,448.7473) ..
+ controls (430.3650,446.4182) and (432.0866,443.6840) .. (433.3018,440.5447) ..
+ controls (434.5676,437.4561) and (435.2005,433.3801) .. (435.2006,428.3167) ..
+ controls (435.2005,425.5825) and (434.8967,422.8736) .. (434.2892,420.1901) ..
+ controls (433.7322,417.5065) and (432.6689,415.1774) .. (431.0993,413.2026) ..
+ controls (429.5296,411.2280) and (427.3777,409.7090) .. (424.6435,408.6456) ..
+ controls (421.9599,407.5317) and (418.5421,406.9747) .. (414.3902,406.9747) --
+ (404.4408,406.9747) -- (404.4408,398.2404) -- (411.0484,398.2404) .. controls
+ (418.0358,398.2405) and (423.0738,396.3164) .. (426.1625,392.4682) .. controls
+ (429.2511,388.6201) and (430.7954,382.8226) .. (430.7955,375.0756) .. controls
+ (430.7954,368.7465) and (429.3017,363.9870) .. (426.3144,360.7970) .. controls
+ (423.3270,357.5565) and (419.0991,355.9363) .. (413.6307,355.9362) .. controls
+ (410.9978,355.9363) and (408.8205,356.2654) .. (407.0990,356.9235) .. controls
+ (405.4281,357.5312) and (404.0610,358.1388) .. (402.9977,358.7463) .. controls
+ (401.7318,359.4553) and (400.6939,360.2401) .. (399.8838,361.1008) .. controls
+ (399.0736,361.9616) and (398.4660,362.5946) .. (398.0609,362.9995) .. controls
+ (398.4153,364.6199) and (398.8457,366.6199) .. (399.3521,368.9996) .. controls
+ (399.8584,371.3288) and (400.1116,373.5567) .. (400.1116,375.6832) .. controls
+ (400.1116,377.5567) and (399.3014,379.2529) .. (397.6812,380.7719) .. controls
+ (396.1115,382.2403) and (393.7824,382.9745) .. (390.6938,382.9744) .. controls
+ (388.0102,382.9745) and (386.0355,382.0125) .. (384.7697,380.0883) .. controls
+ (383.5544,378.1643) and (382.9468,375.9365) .. (382.9469,373.4047) .. controls
+ (382.9468,370.7718) and (383.6810,368.0883) .. (385.1494,365.3540) .. controls
+ (386.6178,362.6199) and (388.7950,360.0629) .. (391.6811,357.6830) .. controls
+ (394.5672,355.3033) and (398.0862,353.3793) .. (402.2382,351.9108) .. controls
+ (406.3901,350.4425) and (411.1750,349.7083) .. (416.5928,349.7083) .. controls
+ (422.8207,349.7083) and (427.9599,350.6451) .. (432.0107,352.5184) .. controls
+ (436.1119,354.3413) and (439.3271,356.5692) .. (441.6564,359.2020) .. controls
+ (443.9348,361.7844) and (445.5044,364.4933) .. (446.3653,367.3287) .. controls
+ (447.2260,370.1642) and (447.6564,372.5947) .. (447.6564,374.6199) .. controls
+ (447.6563,377.1517) and (447.3019,379.7087) .. (446.5931,382.2909) .. controls
+ (445.8842,384.8226) and (444.7196,387.1771) .. (443.0994,389.3543) .. controls
+ (441.3272,391.7341) and (438.9727,393.9113) .. (436.0360,395.8860) .. controls
+ (433.1499,397.8101) and (429.5043,399.3797) .. (425.0992,400.5949) --
+ (425.0992,401.8101) .. controls (427.9346,402.0633) and (430.9473,402.6962) ..
+ (434.1373,403.7089) .. controls (437.3778,404.7216) and (440.2892,406.2152) ..
+ (442.8716,408.1899) .. controls (445.5551,410.2659) and (447.7576,412.9495) ..
+ (449.4792,416.2406) .. controls (451.2007,419.4812) and (452.0615,423.6078) ..
+ (452.0615,428.6205) .. controls (452.0615,438.3422) and (448.1627,446.2156) ..
+ (440.3652,452.2410) .. controls (432.5676,458.3170) and (422.8207,461.3550) ..
+ (411.1244,461.3551);
+ \path[color=black,fill=white,nonzero rule,line width=0.977pt]
+ (416.5938,349.0938) .. controls (411.1208,349.0938) and (406.2619,349.8476) ..
+ (402.0312,351.3438) .. controls (397.8235,352.8319) and (394.2307,354.7869) ..
+ (391.2812,357.2188) .. controls (388.3458,359.6393) and (386.1373,362.2465) ..
+ (384.6250,365.0625) .. controls (383.1180,367.8687) and (382.3437,370.6599) ..
+ (382.3438,373.4062) .. controls (382.3437,376.0357) and (382.9702,378.3800) ..
+ (384.2500,380.4062) -- (384.2500,380.4375) .. controls (385.6247,382.5272) and
+ (387.8580,383.5938) .. (390.6875,383.5938) .. controls (393.8729,383.5938) and
+ (396.3782,382.8237) .. (398.0938,381.2188) .. controls (399.8054,379.6142) and
+ (400.7187,377.7371) .. (400.7188,375.6875) .. controls (400.7187,373.5126) and
+ (400.4520,371.2419) .. (399.9375,368.8750) .. controls (399.4598,366.6301) and
+ (399.0615,364.7892) .. (398.7188,363.2188) .. controls (399.1249,362.8074) and
+ (399.6263,362.2937) .. (400.3438,361.5313) .. controls (401.1024,360.7253) and
+ (402.0588,359.9659) .. (403.2812,359.2813) -- (403.3125,359.2813) .. controls
+ (404.3323,358.6986) and (405.6639,358.0996) .. (407.3125,357.5000) .. controls
+ (408.9371,356.8790) and (411.0429,356.5314) .. (413.6250,356.5313) .. controls
+ (418.9728,356.5314) and (423.0134,358.1148) .. (425.8750,361.2188) .. controls
+ (428.7247,364.2617) and (430.1875,368.8295) .. (430.1875,375.0625) .. controls
+ (430.1875,382.7284) and (428.6509,388.4017) .. (425.6875,392.0938) .. controls
+ (422.7395,395.7667) and (417.9378,397.6251) .. (411.0625,397.6250) --
+ (404.4375,397.6250) -- (403.8438,397.6250) -- (403.8438,398.2500) --
+ (403.8438,406.9688) -- (403.8438,407.5938) -- (404.4375,407.5938) --
+ (414.3750,407.5938) .. controls (418.4724,407.5938) and (421.8256,408.1476) ..
+ (424.4063,409.2188) -- (424.4376,409.2188) .. controls (427.0895,410.2502) and
+ (429.1296,411.7125) .. (430.6251,413.5938) .. controls (432.1327,415.4906) and
+ (433.1477,417.7115) .. (433.6876,420.3125) .. controls (434.2853,422.9526) and
+ (434.5938,425.6236) .. (434.5938,428.3125) .. controls (434.5938,433.3250) and
+ (433.9715,437.3322) .. (432.7501,440.3125) -- (432.7188,440.3125) .. controls
+ (431.5305,443.3821) and (429.8590,446.0423) .. (427.6875,448.3125) .. controls
+ (425.6226,450.4758) and (423.2475,452.0501) .. (420.5000,453.0313) .. controls
+ (417.7822,454.0196) and (414.9389,454.5313) .. (411.9688,454.5313) .. controls
+ (408.7568,454.5313) and (406.2790,454.2771) .. (404.5938,453.8438) .. controls
+ (402.8574,453.3973) and (401.2103,452.8056) .. (399.6250,452.0625) --
+ (399.5938,452.0625) .. controls (398.2643,451.4717) and (397.1638,450.8152) ..
+ (396.2500,450.0938) .. controls (395.4421,449.4205) and (394.9503,448.9158) ..
+ (394.6250,448.5313) .. controls (394.9285,447.4218) and (395.3093,445.8751) ..
+ (395.7812,443.5625) .. controls (396.3444,441.0538) and (396.6250,438.9715) ..
+ (396.6250,437.2813) .. controls (396.6250,435.1859) and (395.7186,433.3075) ..
+ (394.0000,431.7500) .. controls (392.2889,430.0942) and (389.7960,429.3125) ..
+ (386.6562,429.3125) .. controls (383.8191,429.3125) and (381.5985,430.4297) ..
+ (380.2812,432.6250) -- (380.3125,432.6250) .. controls (379.0375,434.6970) and
+ (378.3750,437.0443) .. (378.3750,439.6250) .. controls (378.3750,442.5209) and
+ (379.1845,445.3489) .. (380.7500,448.0625) .. controls (382.3672,450.7752) and
+ (384.6374,453.1829) .. (387.5313,455.2500) .. controls (390.4308,457.3211) and
+ (393.8715,458.9445) .. (397.8750,460.1250) .. controls (401.8903,461.3605) and
+ (406.3135,461.9688) .. (411.1250,461.9688) .. controls (422.9271,461.9688) and
+ (432.8357,458.8858) .. (440.7500,452.7188) .. controls (448.6732,446.5963) and
+ (452.6875,438.5099) .. (452.6875,428.6250) .. controls (452.6875,423.5424) and
+ (451.8139,419.3245) .. (450.0313,415.9688) .. controls (448.2737,412.6089) and
+ (446.0071,409.8517) .. (443.2500,407.7188) .. controls (440.6098,405.6999) and
+ (437.6168,404.1577) .. (434.3125,403.1250) .. controls (431.2903,402.1656) and
+ (428.4437,401.5684) .. (425.7188,401.2813) -- (425.7188,401.0313) .. controls
+ (429.9462,399.8234) and (433.5316,398.3019) .. (436.3750,396.4063) .. controls
+ (439.3588,394.4000) and (441.7734,392.1633) .. (443.5938,389.7188) .. controls
+ (445.2562,387.4849) and (446.4583,385.0731) .. (447.1875,382.4688) --
+ (447.1875,382.4375) .. controls (447.9098,379.8061) and (448.2812,377.2137) ..
+ (448.2813,374.6250) .. controls (448.2812,372.5132) and (447.8100,370.0304) ..
+ (446.9375,367.1562) .. controls (446.0482,364.2269) and (444.4516,361.4494) ..
+ (442.1250,358.8125) .. controls (439.7295,356.1046) and (436.4304,353.8164) ..
+ (432.2813,351.9688) .. controls (432.2733,351.9647) and (432.2585,351.9728) ..
+ (432.2500,351.9688) .. controls (428.0952,350.0532) and (422.8701,349.0938) ..
+ (416.5938,349.0938) -- cycle(416.5938,350.3125) .. controls
+ (422.7604,350.3126) and (427.8075,351.2392) .. (431.7500,353.0625) .. controls
+ (435.7908,354.8585) and (438.9298,357.0417) .. (441.1875,359.5938) .. controls
+ (443.4178,362.1216) and (444.9489,364.7586) .. (445.7812,367.5000) .. controls
+ (446.6302,370.2969) and (447.0312,372.6862) .. (447.0312,374.6250) .. controls
+ (447.0312,377.0998) and (446.6953,379.5919) .. (446.0000,382.1250) .. controls
+ (445.3114,384.5842) and (444.2030,386.8795) .. (442.6250,389.0000) .. controls
+ (440.9009,391.3151) and (438.5771,393.4320) .. (435.6875,395.3750) .. controls
+ (432.8713,397.2525) and (429.2959,398.7977) .. (424.9375,400.0000) --
+ (424.5000,400.1250) -- (424.5000,400.5938) -- (424.5000,401.8125) --
+ (424.5000,402.3750) -- (425.0312,402.4063) .. controls (427.8151,402.6549) and
+ (430.7833,403.2800) .. (433.9375,404.2813) -- (433.9688,404.2813) .. controls
+ (437.1455,405.2741) and (439.9756,406.7571) .. (442.5000,408.6875) .. controls
+ (445.1100,410.7067) and (447.2519,413.3089) .. (448.9375,416.5313) .. controls
+ (450.5978,419.6567) and (451.4375,423.6822) .. (451.4375,428.6250) .. controls
+ (451.4375,438.1834) and (447.6718,445.8218) .. (440.0000,451.7500) .. controls
+ (432.3192,457.7351) and (422.7156,460.7500) .. (411.1250,460.7500) .. controls
+ (406.4174,460.7500) and (402.1335,460.1325) .. (398.2500,458.9375) --
+ (398.2188,458.9375) .. controls (394.3234,457.7889) and (391.0214,456.2296) ..
+ (388.2500,454.2500) .. controls (385.4806,452.2719) and (383.3338,450.0134) ..
+ (381.8125,447.4688) .. controls (381.8075,447.4598) and (381.8175,447.4462) ..
+ (381.8125,447.4375) .. controls (380.3501,444.8937) and (379.5938,442.2897) ..
+ (379.5938,439.6250) .. controls (379.5938,437.2436) and (380.1884,435.1587) ..
+ (381.3438,433.2812) -- (381.3438,433.2500) .. controls (382.4569,431.3946) and
+ (384.1263,430.5312) .. (386.6562,430.5312) .. controls (389.5925,430.5312) and
+ (391.7280,431.2428) .. (393.1562,432.6250) -- (393.1562,432.6562) .. controls
+ (394.6782,434.0355) and (395.4062,435.5285) .. (395.4062,437.2812) .. controls
+ (395.4062,438.8316) and (395.1445,440.8592) .. (394.5938,443.3125) --
+ (394.5625,443.3125) .. controls (394.0575,445.7868) and (393.6689,447.5649) ..
+ (393.3750,448.5938) -- (393.2812,448.8750) -- (393.4688,449.1250) .. controls
+ (393.8779,449.6511) and (394.5411,450.2582) .. (395.4688,451.0312) --
+ (395.4688,451.0625) .. controls (396.4790,451.8601) and (397.6889,452.5632) ..
+ (399.0938,453.1875) .. controls (400.7490,453.9634) and (402.4733,454.5664) ..
+ (404.2812,455.0313) .. controls (406.1403,455.5093) and (408.6995,455.7500) ..
+ (411.9688,455.7500) .. controls (415.0746,455.7500) and (418.0544,455.2246) ..
+ (420.9062,454.1875) .. controls (423.8297,453.1434) and (426.4054,451.4488) ..
+ (428.5938,449.1563) .. controls (430.8716,446.7748) and (432.6333,443.9792) ..
+ (433.8750,440.7813) .. controls (433.8780,440.7723) and (433.8720,440.7589) ..
+ (433.8750,440.7500) .. controls (435.1781,437.5565) and (435.8124,433.4132) ..
+ (435.8125,428.3125) .. controls (435.8124,425.5331) and (435.4924,422.7896) ..
+ (434.8750,420.0625) .. controls (434.3008,417.2964) and (433.1940,414.8651) ..
+ (431.5625,412.8125) .. controls (429.9186,410.7444) and (427.6914,409.1578) ..
+ (424.8750,408.0625) -- (424.8750,408.0938) .. controls (422.0884,406.9371) and
+ (418.5815,406.3751) .. (414.3750,406.3750) -- (405.0625,406.3750) --
+ (405.0625,398.8438) -- (411.0625,398.8438) .. controls (418.1619,398.8438) and
+ (423.3956,396.8673) .. (426.6250,392.8438) .. controls (429.8388,388.8397) and
+ (431.4062,382.8907) .. (431.4062,375.0625) .. controls (431.4062,368.6374) and
+ (429.8750,363.7121) .. (426.7500,360.3750) .. controls (423.6367,356.9981) and
+ (419.2140,355.3126) .. (413.6250,355.3125) .. controls (410.9412,355.3126) and
+ (408.6935,355.6486) .. (406.8750,356.3438) .. controls (405.1817,356.9596) and
+ (403.7942,357.5864) .. (402.6875,358.2188) .. controls (401.3782,358.9521) and
+ (400.2991,359.7722) .. (399.4375,360.6875) .. controls (398.6294,361.5462) and
+ (398.0210,362.1666) .. (397.6250,362.5625) -- (397.4062,362.8125) --
+ (397.4688,363.1250) .. controls (397.8228,364.7437) and (398.2438,366.7461) ..
+ (398.7500,369.1250) .. controls (399.2481,371.4166) and (399.5000,373.6095) ..
+ (399.5000,375.6875) .. controls (399.5000,377.3850) and (398.7789,378.8793) ..
+ (397.2500,380.3125) .. controls (395.8262,381.6445) and (393.6794,382.3751) ..
+ (390.6875,382.3750) .. controls (388.1498,382.3751) and (386.4382,381.5087) ..
+ (385.2812,379.7500) .. controls (384.1306,377.9283) and (383.5625,375.8403) ..
+ (383.5625,373.4063) .. controls (383.5625,370.8869) and (384.2578,368.3186) ..
+ (385.6875,365.6563) .. controls (387.1119,363.0040) and (389.2257,360.4955) ..
+ (392.0625,358.1563) .. controls (394.8853,355.8288) and (398.3413,353.9488) ..
+ (402.4375,352.5000) .. controls (406.5107,351.0596) and (411.2311,350.3126) ..
+ (416.5938,350.3125) -- cycle;
+\end{tikzpicture}
+}
+
+
+
+\newcommand \explogo{%
+\begin{tikzpicture}[y=0.45pt,x=0.45pt,yscale=-1, inner sep=0pt, outer sep=0pt]
+ \path[fill=black] (188.1546,427.4287) .. controls (190.5345,431.7164) and
+ (193.0099,435.4077) .. (195.5921,438.5850) -- (195.6233,438.6163) .. controls
+ (195.6323,438.6274) and (195.6455,438.6365) .. (195.6545,438.6476) .. controls
+ (194.4650,438.4740) and (193.2397,438.3529) .. (191.9670,438.3663) .. controls
+ (189.4530,438.3928) and (186.7534,438.8247) .. (183.8420,439.7413) .. controls
+ (188.8419,443.9283) and (193.0993,446.9893) .. (196.8420,449.3663) .. controls
+ (196.7505,449.3362) and (196.6520,449.3022) .. (196.5607,449.2726) --
+ (196.8420,449.4289) .. controls (191.0442,447.6143) and (184.7895,447.3923) ..
+ (177.4670,450.8664) .. controls (182.7247,454.1565) and (187.1369,456.5570) ..
+ (191.0295,458.3664) .. controls (190.9155,458.3495) and (190.7995,458.3198) ..
+ (190.6857,458.3039) -- (190.9670,458.4601) .. controls (184.8999,457.4153) and
+ (178.6035,458.0026) .. (171.7482,462.5226) .. controls (176.2179,464.5144) and
+ (180.1011,466.0179) .. (183.5607,467.1789) -- (183.5919,467.1789) --
+ (183.8107,467.3039) .. controls (178.0253,467.5288) and (172.2917,469.3302) ..
+ (166.6857,474.6476) .. controls (171.5829,475.8624) and (175.7757,476.6736) ..
+ (179.4669,477.2101) .. controls (179.3633,477.2310) and (179.2580,477.2503) ..
+ (179.1544,477.2726) .. controls (179.0103,477.2696) and (178.8604,477.2746) ..
+ (178.7169,477.2726) -- (178.8732,477.3351) .. controls (174.5605,478.3144) and
+ (170.3552,480.4767) .. (166.2482,484.6164) .. controls (169.5756,485.3353) and
+ (172.5696,485.8937) .. (175.3107,486.3039) .. controls (171.9361,487.9351) and
+ (168.7309,490.4629) .. (165.8107,494.3351) .. controls (169.6449,494.6328) and
+ (173.0419,494.7600) .. (176.0919,494.7726) .. controls (172.4017,496.4801) and
+ (168.9244,499.1610) .. (165.8419,503.4914) .. controls (171.3184,503.7651) and
+ (175.8960,503.7533) .. (179.8419,503.5226) .. controls (179.7681,503.5528) and
+ (179.6968,503.5855) .. (179.6232,503.6163) .. controls (179.3834,503.6377) and
+ (179.1427,503.6531) .. (178.9044,503.6788) -- (179.2482,503.8038) .. controls
+ (175.1462,505.6048) and (171.3495,508.5232) .. (168.0919,513.4600) .. controls
+ (174.8980,513.5594) and (180.2892,513.2381) .. (184.8107,512.6788) .. controls
+ (184.6730,512.7162) and (184.5417,512.7645) .. (184.4044,512.8038) .. controls
+ (184.2299,512.8144) and (184.0455,512.8223) .. (183.8732,512.8350) --
+ (184.0919,512.8975) .. controls (178.7598,514.4860) and (173.8363,517.5457) ..
+ (169.7482,523.7412) .. controls (175.2461,523.8214) and (179.8367,523.6133) ..
+ (183.7794,523.2412) .. controls (183.6938,523.2879) and (183.6146,523.3500) ..
+ (183.5294,523.3975) .. controls (178.8190,526.0253) and (174.7697,529.9721) ..
+ (172.0919,536.6475) .. controls (176.9272,535.7317) and (180.9801,534.7653) ..
+ (184.4982,533.7412) .. controls (184.4398,533.7875) and (184.3686,533.8191) ..
+ (184.3107,533.8662) -- (184.5294,533.8350) .. controls (180.9081,536.5374) and
+ (177.8636,540.3240) .. (175.8107,545.9288) .. controls (179.1397,545.1929) and
+ (182.1140,544.4194) .. (184.7794,543.6475) .. controls (182.3867,546.5404) and
+ (180.5386,550.1515) .. (179.4982,554.8975) .. controls (183.1131,553.5663) and
+ (186.2487,552.2854) .. (189.0294,551.0225) .. controls (188.9958,551.0619) and
+ (188.9691,551.1079) .. (188.9357,551.1475) .. controls (188.8789,551.1923) and
+ (188.8034,551.2277) .. (188.7482,551.2725) -- (188.8419,551.2413) .. controls
+ (186.2910,554.2981) and (184.3447,558.1421) .. (183.3732,563.2413) .. controls
+ (188.4628,561.2062) and (192.6027,559.2529) .. (196.0919,557.3976) .. controls
+ (195.9933,557.4930) and (195.8722,557.5825) .. (195.7794,557.6788) --
+ (195.8731,557.6476) .. controls (192.7873,561.0321) and (190.4833,565.3800) ..
+ (189.5606,571.3664) .. controls (195.5682,568.7142) and (200.1972,566.2494) ..
+ (203.9981,563.9289) .. controls (203.9580,563.9700) and (203.9127,564.0127) ..
+ (203.8731,564.0539) -- (204.1231,563.9289) .. controls (199.8075,567.6248) and
+ (196.4969,572.5288) .. (195.3419,580.0226) .. controls (203.4387,576.4482) and
+ (209.1016,573.2112) .. (213.4981,570.2101) .. controls (211.6101,574.0286) and
+ (210.6125,578.4777) .. (211.0919,584.0539) .. controls (218.9172,578.0502) and
+ (223.8713,573.2098) .. (227.5606,568.9289) .. controls (227.5546,568.9906) and
+ (227.5656,569.0545) .. (227.5606,569.1164) .. controls (227.3369,571.8296) and
+ (227.5060,574.7714) .. (228.3106,578.0226) .. controls (232.9500,570.0520) and
+ (237.5899,566.7480) .. (242.3106,564.0226) .. controls (236.4069,567.8493) and
+ (237.4669,570.9503) .. (237.4669,574.4914) .. controls (244.4870,567.0983) and
+ (254.2537,559.2459) .. (257.2481,554.3351) .. controls (253.2445,560.3478) and
+ (251.6457,566.0579) .. (250.5919,571.0851) .. controls (230.1065,581.9187) and
+ (217.6060,584.7541) .. (203.6231,589.0851) .. controls (209.0471,591.0745) and
+ (214.8691,593.0070) .. (212.4669,595.7726) -- (206.0606,602.1789) .. controls
+ (210.1567,600.9056) and (214.3405,599.0697) .. (217.9669,601.5539) .. controls
+ (217.6110,604.9137) and (213.3733,606.6264) .. (209.7481,608.5851) .. controls
+ (216.1304,606.2854) and (217.5075,606.8270) .. (219.1856,607.3664) .. controls
+ (220.0240,611.3923) and (217.1123,613.5511) .. (215.2169,616.2101) .. controls
+ (231.2927,603.9867) and (252.2574,594.3357) .. (267.0294,590.3039) .. controls
+ (287.8076,583.3065) and (314.6175,576.0122) .. (321.9044,558.2726) --
+ (329.1856,529.0226) .. controls (337.7280,519.7775) and (345.5838,510.2065) ..
+ (349.3108,498.5539) .. controls (373.0973,493.9520) and (392.3393,495.6016) ..
+ (412.4046,496.1164) .. controls (410.5758,495.8116) and (351.1546,485.7414) ..
+ (351.1546,485.7414) .. controls (333.7856,461.9756) and (307.8721,478.1391) ..
+ (299.3421,501.6164) .. controls (297.1891,507.5420) and (284.9022,507.5289) ..
+ (281.3421,501.5852) .. controls (267.2670,471.2820) and (224.5286,439.2367) ..
+ (188.1546,427.4289) -- cycle;
+ \path[fill=basecolor] (187.7346,425.7215) .. controls (190.1312,430.0392) and
+ (192.6231,433.7232) .. (195.2248,436.9158) .. controls (194.0353,436.7423) and
+ (192.8098,436.6402) .. (191.5371,436.6536) .. controls (189.0231,436.6801) and
+ (186.3356,437.0974) .. (183.4241,438.0140) .. controls (188.5047,442.2685) and
+ (192.7982,445.3733) .. (196.5852,447.7660) .. controls (190.7343,445.8972) and
+ (184.4338,445.6311) .. (177.0321,449.1427) .. controls (182.4382,452.5257) and
+ (186.9760,454.9705) .. (190.9471,456.7968) .. controls (184.7555,455.6556) and
+ (178.3356,456.1756) .. (171.3284,460.7959) .. controls (175.9548,462.8576) and
+ (179.9558,464.4054) .. (183.5061,465.5818) .. controls (177.6784,465.7855) and
+ (171.9101,467.5854) .. (166.2639,472.9408) .. controls (171.1611,474.1557) and
+ (175.3568,474.9612) .. (179.0480,475.4977) .. controls (174.5307,476.4104) and
+ (170.0996,478.5772) .. (165.8050,482.9059) .. controls (169.1324,483.6248) and
+ (172.1275,484.1674) .. (174.8686,484.5777) .. controls (171.4940,486.2088) and
+ (168.2990,488.7365) .. (165.3788,492.6087) .. controls (169.2130,492.9064) and
+ (172.6053,493.0386) .. (175.6553,493.0512) .. controls (171.9650,494.7587) and
+ (168.5104,497.4567) .. (165.4280,501.7871) .. controls (170.9044,502.0608) and
+ (175.4790,502.0342) .. (179.4250,501.8034) .. controls (175.0884,503.5763) and
+ (171.0915,506.5720) .. (167.6734,511.7521) .. controls (174.4795,511.8515) and
+ (179.8697,511.5247) .. (184.3911,510.9654) .. controls (178.7800,512.4888) and
+ (173.5859,515.5521) .. (169.3124,522.0286) .. controls (174.8103,522.1088) and
+ (179.3994,521.9089) .. (183.3421,521.5369) .. controls (178.5221,524.1635) and
+ (174.3823,528.1477) .. (171.6562,534.9438) .. controls (176.6186,534.0040) and
+ (180.7774,532.9979) .. (184.3583,531.9445) .. controls (180.6281,534.6591) and
+ (177.4926,538.4719) .. (175.3930,544.2041) .. controls (178.7220,543.4682) and
+ (181.6765,542.6978) .. (184.3419,541.9259) .. controls (181.9491,544.8188) and
+ (180.1048,548.4397) .. (179.0644,553.1858) .. controls (182.6793,551.8545) and
+ (185.8062,550.5643) .. (188.5869,549.3014) .. controls (185.9451,552.3928) and
+ (183.9273,556.3063) .. (182.9324,561.5282) .. controls (188.0220,559.4931) and
+ (192.1617,557.5487) .. (195.6510,555.6934) .. controls (192.4524,559.1128) and
+ (190.0726,563.5113) .. (189.1278,569.6412) .. controls (195.3243,566.9057) and
+ (200.0785,564.3715) .. (203.9442,561.9871) .. controls (199.5047,565.7077) and
+ (196.0910,570.6550) .. (194.9134,578.2951) .. controls (203.0102,574.7206) and
+ (208.6604,571.4786) .. (213.0570,568.4775) .. controls (211.1690,572.2961) and
+ (210.1683,576.7672) .. (210.6477,582.3434) .. controls (218.4730,576.3397) and
+ (223.4302,571.4800) .. (227.1195,567.1991) .. controls (226.8707,569.9634) and
+ (227.0669,572.9701) .. (227.8899,576.2955) .. controls (233.5078,566.6437) and
+ (239.0905,563.8256) .. (244.8678,560.6045) .. controls (235.6654,565.2375) and
+ (237.0296,568.7253) .. (237.0296,572.7723) .. controls (244.0497,565.3793) and
+ (253.8400,557.5393) .. (256.8344,552.6285) .. controls (252.8308,558.6412) and
+ (251.2011,564.3353) .. (250.1474,569.3626) .. controls (229.6620,580.1962) and
+ (217.1896,583.0276) .. (203.2067,587.3587) .. controls (208.6306,589.3481) and
+ (214.4431,591.2965) .. (212.0409,594.0622) -- (205.6324,600.4542) .. controls
+ (209.7285,599.1810) and (213.9051,597.3636) .. (217.5315,599.8478) .. controls
+ (217.1756,603.2077) and (212.9289,604.9040) .. (209.3037,606.8627) .. controls
+ (215.6860,604.5630) and (217.0662,605.0941) .. (218.7443,605.6335) .. controls
+ (219.5827,609.6594) and (216.6733,611.8250) .. (214.7780,614.4840) .. controls
+ (230.8537,602.2606) and (251.8308,592.6034) .. (266.6028,588.5716) .. controls
+ (287.3810,581.5741) and (314.1729,574.3016) .. (321.4598,556.5621) --
+ (328.7697,527.3061) .. controls (337.3119,518.0610) and (345.1694,508.4736) ..
+ (348.8965,496.8210) .. controls (372.6829,492.2191) and (391.9159,493.8805) ..
+ (411.9812,494.3952) .. controls (410.1524,494.0905) and (350.7157,484.0204) ..
+ (350.7157,484.0204) .. controls (333.3467,460.2547) and (307.4537,476.4086) ..
+ (298.9237,499.8859) .. controls (296.7707,505.8115) and (284.4877,505.8133) ..
+ (280.9276,499.8695) .. controls (266.8525,469.5663) and (224.1086,437.5293) ..
+ (187.7346,425.7216) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (328.0690,487.7425) -- (327.9127,487.9925) .. controls (327.2963,489.1409) and
+ (326.2537,489.9248) .. (324.7877,490.3988) .. controls (323.3218,490.8728) and
+ (321.4437,491.0247) .. (319.2565,490.9300) -- (317.8815,490.8675) --
+ (318.8815,491.8363) .. controls (319.3892,492.3246) and (319.5310,492.7144) ..
+ (319.5377,493.0550) .. controls (319.5447,493.3957) and (319.3983,493.7636) ..
+ (319.0690,494.1800) .. controls (318.4103,495.0130) and (317.1020,495.9174) ..
+ (315.8815,496.8363) -- (315.4752,497.1175) -- (315.7565,497.5238) .. controls
+ (316.7747,499.0858) and (317.2409,500.2883) .. (317.3502,501.2113) .. controls
+ (317.4595,502.1343) and (317.2450,502.7963) .. (316.8190,503.3675) .. controls
+ (315.9669,504.5101) and (314.0965,505.2843) .. (312.4127,506.2425) --
+ (312.1002,506.3988) -- (312.1627,506.7738) .. controls (312.3075,507.6524) and
+ (312.0708,508.3704) .. (311.4440,509.0863) .. controls (310.8171,509.8021) and
+ (309.7619,510.4847) .. (308.3502,511.0863) -- (307.9752,511.2425) --
+ (308.0377,511.6488) .. controls (308.3193,513.5300) and (308.8848,515.1671) ..
+ (310.0690,516.2113) .. controls (311.1523,517.1665) and (312.7911,517.4184) ..
+ (314.8815,516.9925) .. controls (315.2459,518.9979) and (315.7682,520.8217) ..
+ (316.9752,522.0238) .. controls (318.1986,523.2421) and (320.1355,523.6024) ..
+ (322.7252,522.9300) .. controls (323.3080,524.3346) and (324.1596,525.3355) ..
+ (325.1315,525.9925) .. controls (326.1986,526.7139) and (327.5930,527.0049) ..
+ (328.7401,527.3612) -- (329.4197,526.6303) .. controls (328.2812,526.2767) and
+ (326.6004,525.7302) .. (325.6940,525.1175) .. controls (324.7876,524.5048) and
+ (324.0512,523.6643) .. (323.5377,522.2113) -- (323.3815,521.7113) --
+ (322.8815,521.8675) .. controls (320.2185,522.6859) and (318.7418,522.3174) ..
+ (317.7252,521.3050) .. controls (316.7087,520.2927) and (316.1370,518.4626) ..
+ (315.7877,516.3363) -- (315.6940,515.7738) -- (315.1315,515.9300) .. controls
+ (312.9366,516.5027) and (311.6408,516.2098) .. (310.7565,515.4300) .. controls
+ (309.9304,514.7016) and (309.4415,513.4103) .. (309.1628,511.8050) .. controls
+ (310.4344,511.2171) and (311.5245,510.5741) .. (312.2253,509.7738) .. controls
+ (312.9099,508.9919) and (313.2063,508.0267) .. (313.1628,507.0238) .. controls
+ (314.7142,506.1705) and (316.5854,505.4372) .. (317.6628,503.9925) .. controls
+ (318.2261,503.2372) and (318.5187,502.2444) .. (318.3815,501.0863) .. controls
+ (318.2568,500.0326) and (317.7408,498.8152) .. (316.8503,497.3675) .. controls
+ (317.9434,496.5623) and (319.1300,495.7554) .. (319.8815,494.8050) .. controls
+ (320.2994,494.2767) and (320.6136,493.6919) .. (320.6003,493.0238) .. controls
+ (320.5933,492.6554) and (320.2387,492.3198) .. (320.0378,491.9613) .. controls
+ (321.9389,491.9861) and (323.6709,491.8609) .. (325.1003,491.3988) .. controls
+ (326.6062,490.9119) and (327.7892,490.0245) .. (328.5690,488.8050) .. controls
+ (330.8191,488.8168) and (333.1492,489.3112) .. (335.5065,489.6175) .. controls
+ (337.9280,489.9322) and (340.3922,490.0166) .. (342.7253,488.9925) --
+ (342.2878,488.0238) .. controls (340.2235,488.9299) and (338.0183,488.8923) ..
+ (335.6628,488.5863) .. controls (333.3073,488.2802) and (330.8524,487.7246) ..
+ (328.3815,487.7425) -- cycle;
+ \path[draw=white,fill=white,miter limit=4.00,line width=0.839pt]
+ (336.8186,487.3469) .. controls (336.8186,489.7993) and (334.8306,491.7873) ..
+ (332.3782,491.7873) .. controls (329.9259,491.7873) and (327.9379,489.7993) ..
+ (327.9379,487.3469) .. controls (327.9379,484.8946) and (329.9259,482.9065) ..
+ (332.3782,482.9065) .. controls (334.8306,482.9065) and (336.8186,484.8945) ..
+ (336.8186,487.3469) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (350.0784,483.1829) .. controls (346.0920,488.3688) and (345.0896,487.0295) ..
+ (342.6627,487.8988) -- (342.2565,488.0550) -- (342.3190,488.4925) .. controls
+ (343.2534,493.7013) and (346.3404,495.3564) .. (348.7497,497.2498) --
+ (348.8842,496.8285) -- (349.5255,496.7063) .. controls (347.1103,494.8083) and
+ (344.4675,493.2007) .. (343.5065,488.7738) .. controls (345.2738,488.3557) and
+ (346.9603,488.8903) .. (350.7252,483.9925) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (196.5832,447.7548) .. controls (204.1159,452.4256) and (216.5138,457.2421) ..
+ (224.4752,462.2738) .. controls (228.8554,465.0628) and (232.7896,467.8418) ..
+ (235.8502,470.2425) .. controls (238.9108,472.6433) and (241.1740,475.1236) ..
+ (242.0065,475.9300) .. controls (242.8390,476.7364) and (243.4041,476.3554) ..
+ (242.8502,475.3050) .. controls (242.2964,474.2547) and (239.5701,471.8264) ..
+ (236.4752,469.3988) .. controls (233.3804,466.9712) and (229.4438,464.2043) ..
+ (225.0377,461.3988) .. controls (216.2255,455.7878) and (205.8833,450.7708) ..
+ (196.5832,447.7548) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (195.2242,436.9074) .. controls (198.3819,437.6366) and (203.0426,440.3298) ..
+ (208.2252,443.2113) .. controls (213.4079,446.0928) and (219.0564,449.6386) ..
+ (224.2252,453.0863) .. controls (229.3940,456.5340) and (233.3791,459.5515) ..
+ (236.5649,461.9823) .. controls (239.5902,464.5711) and (241.0838,466.2475) ..
+ (241.6627,466.2425) .. controls (241.7421,466.2585) and (241.8203,466.2597) ..
+ (241.9440,466.2425) .. controls (242.0677,466.2253) and (242.2764,466.1299) ..
+ (242.3815,465.9300) .. controls (242.4865,465.7302) and (242.4459,465.5623) ..
+ (242.4128,465.4613) .. controls (242.3796,465.3603) and (242.3618,465.3067) ..
+ (242.3191,465.2425) .. controls (242.1482,464.9858) and (241.8873,464.7454) ..
+ (241.5066,464.3988) .. controls (240.7451,463.7056) and (239.4870,462.6862) ..
+ (237.8816,461.4613) .. controls (234.6708,459.0114) and (230.0051,455.6705) ..
+ (224.8191,452.2113) .. controls (219.6331,448.7521) and (213.9447,445.1757) ..
+ (208.7253,442.2738) .. controls (206.8700,441.5863) and (197.7714,436.7746) ..
+ (195.2243,436.9074) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (190.9046,456.7968) .. controls (200.5728,460.7431) and (214.3261,465.3785) ..
+ (223.5065,471.1488) .. controls (228.4392,474.2811) and (232.7356,477.4014) ..
+ (235.9440,479.9613) .. controls (237.5482,481.2412) and (238.8881,482.3917) ..
+ (239.8815,483.3050) .. controls (240.8749,484.2184) and (241.4352,485.0475) ..
+ (241.7565,485.2738) .. controls (242.4289,485.7475) and (242.9436,485.4328) ..
+ (242.6315,484.6800) .. controls (242.3958,484.1116) and (241.6181,483.4596) ..
+ (240.6002,482.5238) .. controls (239.5823,481.5880) and (238.2198,480.4410) ..
+ (236.6002,479.1488) .. controls (233.3611,476.5644) and (229.0363,473.3968) ..
+ (224.0690,470.2425) .. controls (214.1344,463.9341) and (202.2573,458.3877) ..
+ (190.9046,456.7968) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (183.4711,465.5716) .. controls (191.0060,465.5766) and (206.5713,472.4735) ..
+ (213.1315,475.9300) .. controls (223.7689,481.6031) and (233.4415,488.8954) ..
+ (238.7877,493.9925) .. controls (239.3805,494.5577) and (240.2465,494.0588) ..
+ (239.5690,493.2738) .. controls (234.6033,487.5198) and (224.3477,480.7388) ..
+ (213.6315,475.0238) .. controls (202.9153,469.3087) and (191.8189,465.5632) ..
+ (183.4711,465.5716) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (179.1133,475.4956) .. controls (190.4411,477.1531) and (204.0196,481.7255) ..
+ (213.9127,486.6800) .. controls (219.4336,489.4832) and (224.3566,492.4856) ..
+ (228.1315,495.1488) .. controls (231.9064,497.8120) and (234.6937,500.8104) ..
+ (235.3815,501.5863) .. controls (236.0693,502.3622) and (236.8886,502.3945) ..
+ (236.2565,501.0238) .. controls (235.6244,499.6531) and (232.5499,496.9721) ..
+ (228.7252,494.2738) .. controls (224.9006,491.5755) and (219.9456,488.5676) ..
+ (214.3815,485.7425) .. controls (203.2533,480.0924) and (190.5800,475.6473) ..
+ (179.1133,475.4956) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (182.8502,483.9300) .. controls (180.0362,483.6845) and (177.5032,484.2615) ..
+ (174.9224,484.5841) .. controls (184.9876,483.6409) and (199.0622,488.2631) ..
+ (208.4440,492.5863) .. controls (219.4960,497.7676) and (228.6734,504.8810) ..
+ (233.0690,509.3988) .. controls (233.7572,510.1061) and (234.2435,509.2048) ..
+ (233.8815,508.7425) .. controls (229.7881,503.5164) and (220.0397,496.8487) ..
+ (208.8815,491.6175) .. controls (200.5128,487.6942) and (191.2924,484.6668) ..
+ (182.8502,483.9300) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (175.7074,492.9973) .. controls (185.6124,493.7315) and (198.8738,496.1032) ..
+ (208.1627,500.3675) .. controls (217.5053,504.7372) and (224.5953,510.4032) ..
+ (228.1627,513.6175) .. controls (228.7116,514.1121) and (229.6823,513.7617) ..
+ (228.9127,512.8675) .. controls (225.6572,509.0849) and (218.0877,503.8529) ..
+ (208.6315,499.4300) .. controls (199.1753,495.0072) and (187.6892,492.1744) ..
+ (175.7074,492.9973) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (184.6002,501.2425) .. controls (182.5105,501.1718) and (181.5301,501.5628) ..
+ (179.5141,501.7805) .. controls (186.2367,502.0768) and (196.9195,503.8647) ..
+ (202.8190,505.8675) .. controls (210.4747,508.5236) and (216.7699,512.5245) ..
+ (220.3502,515.6488) .. controls (221.0416,516.2521) and (221.5570,515.4427) ..
+ (221.1002,514.9300) .. controls (217.7467,511.1667) and (210.9312,507.5627) ..
+ (203.1627,504.8675) .. controls (197.3364,502.8461) and (190.8693,501.4545) ..
+ (184.6002,501.2425) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (184.3157,510.9926) .. controls (198.6871,511.9623) and (207.3770,514.4944) ..
+ (214.0377,520.4613) .. controls (214.5368,520.9084) and (215.3247,520.2930) ..
+ (214.7877,519.7113) .. controls (207.9520,512.3054) and (194.4933,510.2417) ..
+ (184.3157,510.9926) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (195.3815,519.6175) .. controls (191.0251,519.2671) and (187.3797,520.2191) ..
+ (183.4094,521.5412) .. controls (195.0282,519.6893) and (199.8590,520.5773) ..
+ (208.6627,524.7113) .. controls (209.6662,525.1825) and (209.6073,524.0723) ..
+ (209.1627,523.8050) .. controls (204.4864,520.9942) and (199.7378,519.9679) ..
+ (195.3815,519.6175) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (194.9584,527.7065) .. controls (190.8394,528.0717) and (187.3420,529.4861) ..
+ (184.4584,531.8315) .. controls (195.9645,527.3967) and (199.1447,528.2791) ..
+ (207.9440,530.7738) .. controls (209.1013,531.1019) and (208.7417,529.9871) ..
+ (208.2877,529.8050) .. controls (203.0183,527.6924) and (199.0774,527.3413) ..
+ (194.9584,527.7065) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (217.7565,534.8363) .. controls (211.6177,534.1725) and (204.7011,534.9170) ..
+ (198.6315,536.0238) .. controls (192.5618,537.1306) and (187.3415,539.3794) ..
+ (184.3947,541.7762) .. controls (194.4866,537.5140) and (196.3258,537.5231) ..
+ (198.8190,537.0550) .. controls (204.7989,535.9646) and (210.7264,535.5394) ..
+ (217.6940,535.8675) .. controls (218.3258,535.8973) and (218.2935,534.8944) ..
+ (217.7565,534.8363) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (221.3190,539.8050) .. controls (214.6662,539.5537) and (207.7944,541.2000) ..
+ (201.8502,542.8988) .. controls (195.9061,544.5976) and (191.4940,546.9158) ..
+ (188.5846,549.2822) .. controls (194.4716,546.4504) and (199.9499,544.5335) ..
+ (202.1315,543.8988) .. controls (207.9926,542.2237) and (213.9052,540.7736) ..
+ (221.3815,540.8675) .. controls (221.9623,540.8745) and (222.3377,539.8435) ..
+ (221.3190,539.8050) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (226.7565,543.8988) .. controls (220.4907,544.8239) and (213.9208,546.6745) ..
+ (208.1940,548.6175) .. controls (202.4671,550.5606) and (198.3906,552.8682) ..
+ (195.7313,555.6308) .. controls (202.5433,551.7206) and (206.2895,550.3495) ..
+ (208.5065,549.5863) .. controls (214.1631,547.6670) and (219.4450,546.3315) ..
+ (226.9440,544.9300) .. controls (227.8440,544.7618) and (227.1212,543.8449) ..
+ (226.7565,543.8988) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (229.9440,549.1175) .. controls (217.3782,551.1190) and (209.2362,556.5404) ..
+ (204.0606,561.9168) .. controls (212.0814,555.8737) and (217.6610,552.6260) ..
+ (230.1627,550.1488) .. controls (230.9540,549.9920) and (230.7150,548.9947) ..
+ (229.9440,549.1175) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (236.0690,553.7113) .. controls (223.4309,555.6581) and (216.1430,563.3408) ..
+ (213.1075,568.4120) .. controls (221.1036,560.4242) and (227.3269,556.0769) ..
+ (236.2877,554.7425) .. controls (237.1946,554.6075) and (236.9632,553.5735) ..
+ (236.0690,553.7113) -- cycle;
+ \path[color=black,fill=white,nonzero rule,line width=0.839pt]
+ (239.8815,557.7113) .. controls (237.9104,557.9574) and (235.2282,559.3533) ..
+ (232.6940,560.9613) .. controls (230.1598,562.5693) and (228.2477,564.5258) ..
+ (227.1075,567.0466) .. controls (230.1601,563.8962) and (231.3821,563.0437) ..
+ (233.2565,561.8363) .. controls (235.6896,560.2924) and (238.1414,559.3201) ..
+ (240.1315,558.7425) .. controls (241.0644,558.4718) and (240.3594,557.6516) ..
+ (239.8815,557.7113) -- cycle;
+ \path[draw=white,fill=white,miter limit=4.00,line width=0.839pt]
+ (336.8186,487.3469) .. controls (336.8186,489.7993) and (334.8306,491.7873) ..
+ (332.3782,491.7873) .. controls (329.9259,491.7873) and (327.9379,489.7993) ..
+ (327.9379,487.3469) .. controls (327.9379,484.8946) and (329.9259,482.9065) ..
+ (332.3782,482.9065) .. controls (334.8306,482.9065) and (336.8186,484.8945) ..
+ (336.8186,487.3469) -- cycle;
+ \path[draw=white,fill=maincolor,miter limit=4.00,line width=0.839pt]
+ (336.8186,487.3469) .. controls (336.8186,489.7993) and (334.8306,491.7873) ..
+ (332.3782,491.7873) .. controls (329.9259,491.7873) and (327.9379,489.7993) ..
+ (327.9379,487.3469) .. controls (327.9379,484.8946) and (329.9259,482.9065) ..
+ (332.3782,482.9065) .. controls (334.8306,482.9065) and (336.8186,484.8945) ..
+ (336.8186,487.3469) -- cycle;
+ \path[fill=black] (240.9977,587.6605) .. controls (237.8583,593.6353) and
+ (233.6558,598.3948) .. (228.3899,601.9391) .. controls (223.1240,605.4835) and
+ (217.0733,607.2556) .. (210.2379,607.2556) .. controls (204.2124,607.2556) and
+ (198.9212,606.1923) .. (194.3643,604.0657) .. controls (189.8579,601.9391) and
+ (186.1363,599.0530) .. (183.1996,595.4074) .. controls (180.2628,591.7618) and
+ (178.0603,587.5086) .. (176.5919,582.6478) .. controls (175.1742,577.7870) and
+ (174.4653,572.6477) .. (174.4653,567.2299) .. controls (174.4653,562.3691) and
+ (175.2248,557.6096) .. (176.7438,552.9512) .. controls (178.3134,548.2424) and
+ (180.5919,544.0145) .. (183.5793,540.2676) .. controls (186.4654,536.6727) and
+ (190.0351,533.7866) .. (194.2883,531.6092) .. controls (198.5921,529.3814) and
+ (203.4023,528.2675) .. (208.7188,528.2674) .. controls (214.1872,528.2675) and
+ (218.8708,529.1283) .. (222.7696,530.8497) .. controls (226.6684,532.5713) and
+ (229.8329,534.9258) .. (232.2634,537.9131) .. controls (234.5925,540.7486) and
+ (236.3140,544.0905) .. (237.4280,547.9385) .. controls (238.5925,551.7867) and
+ (239.1748,555.9640) .. (239.1749,560.4703) -- (239.1749,565.4830) --
+ (189.5794,565.4830) .. controls (189.5794,570.3945) and (190.0351,574.8503) ..
+ (190.9465,578.8503) .. controls (191.9085,582.8503) and (193.4022,586.3694) ..
+ (195.4276,589.4073) .. controls (197.4022,592.3441) and (199.9845,594.6732) ..
+ (203.1745,596.3948) .. controls (206.3644,598.0657) and (210.1619,598.9011) ..
+ (214.5670,598.9011) .. controls (219.0733,598.9011) and (222.9468,597.8631) ..
+ (226.1874,595.7872) .. controls (229.4785,593.6606) and (232.6431,589.8631) ..
+ (235.6812,584.3946) -- (240.9977,587.6605)(224.2127,559.1032) .. controls
+ (224.2126,556.2678) and (223.9595,553.2298) .. (223.4532,549.9892) .. controls
+ (222.9974,546.7487) and (222.2379,544.0398) .. (221.1747,541.8625) .. controls
+ (220.0101,539.5334) and (218.4151,537.6347) .. (216.3898,536.1663) .. controls
+ (214.3644,534.6980) and (211.7568,533.9638) .. (208.5669,533.9637) .. controls
+ (203.2504,533.9638) and (198.8200,536.1916) .. (195.2757,540.6473) .. controls
+ (191.7819,545.0525) and (189.8832,551.2044) .. (189.5794,559.1032) --
+ (224.2127,559.1032);
+ \path[fill=black] (321.9606,605.2809) -- (287.6311,605.2809) --
+ (287.6311,600.2682) .. controls (289.9096,600.0151) and (291.8336,599.7619) ..
+ (293.4033,599.5087) .. controls (295.0236,599.2556) and (295.8337,598.5973) ..
+ (295.8337,597.5340) .. controls (295.8337,597.0783) and (295.5805,596.3695) ..
+ (295.0742,595.4074) .. controls (294.5679,594.4454) and (294.0615,593.5593) ..
+ (293.5552,592.7492) .. controls (292.2893,590.7745) and (290.5425,588.1415) ..
+ (288.3147,584.8503) .. controls (286.1374,581.5086) and (283.4538,577.5338) ..
+ (280.2639,572.9262) .. controls (277.6310,576.2174) and (275.2006,579.4326) ..
+ (272.9727,582.5718) .. controls (270.7448,585.6605) and (268.4157,588.9517) ..
+ (265.9853,592.4454) .. controls (265.6309,592.9517) and (265.2511,593.5846) ..
+ (264.8460,594.3441) .. controls (264.4916,595.1036) and (264.3144,595.7112) ..
+ (264.3144,596.1669) .. controls (264.3144,597.2809) and (265.0232,598.2176) ..
+ (266.4410,598.9771) .. controls (267.9093,599.6860) and (270.0866,600.1670) ..
+ (272.9727,600.4201) -- (272.9727,605.2809) -- (245.2509,605.2809) --
+ (245.2509,600.5720) .. controls (248.6940,599.5594) and (251.4535,598.3442) ..
+ (253.5295,596.9264) .. controls (255.6561,595.4581) and (257.6054,593.6606) ..
+ (259.3776,591.5340) .. controls (260.9472,589.5086) and (263.1245,586.7238) ..
+ (265.9093,583.1794) .. controls (268.7448,579.6351) and (272.3904,574.8249) ..
+ (276.8462,568.7489) .. controls (274.2638,565.0527) and (271.0993,560.5463) ..
+ (267.3524,555.2298) .. controls (263.6561,549.8627) and (260.5928,545.4069) ..
+ (258.1624,541.8625) .. controls (256.8459,539.9385) and (255.3269,538.3942) ..
+ (253.6054,537.2296) .. controls (251.9345,536.0144) and (249.5547,535.4068) ..
+ (246.4661,535.4068) -- (246.4661,530.3940) -- (279.0487,530.3940) --
+ (279.0487,535.4068) .. controls (277.4284,535.4068) and (275.8335,535.5081) ..
+ (274.2639,535.7106) .. controls (272.6942,535.9132) and (271.9094,536.3689) ..
+ (271.9094,537.0777) .. controls (271.9094,537.5334) and (272.0613,538.0398) ..
+ (272.3651,538.5967) .. controls (272.6689,539.1537) and (273.0486,539.7613) ..
+ (273.5044,540.4195) .. controls (274.6183,542.1411) and (276.3398,544.7993) ..
+ (278.6690,548.3942) .. controls (281.0487,551.9893) and (283.6057,555.7868) ..
+ (286.3400,559.7868) .. controls (288.1121,557.3564) and (290.1627,554.5209) ..
+ (292.4919,551.2803) .. controls (294.8716,548.0399) and (297.0489,544.9512) ..
+ (299.0236,542.0144) .. controls (299.2261,541.6600) and (299.4286,541.2297) ..
+ (299.6312,540.7233) .. controls (299.8337,540.1664) and (299.9350,539.6347) ..
+ (299.9350,539.1283) .. controls (299.9350,538.0651) and (299.0489,537.2296) ..
+ (297.2768,536.6220) .. controls (295.5552,535.9638) and (293.9096,535.5081) ..
+ (292.3400,535.2549) -- (292.3400,530.3940) -- (319.9859,530.3940) --
+ (319.9859,535.1030) .. controls (316.0870,536.1157) and (313.0490,537.3309) ..
+ (310.8719,538.7486) .. controls (308.6946,540.1157) and (306.8464,541.7107) ..
+ (305.3275,543.5334) .. controls (303.6565,545.6095) and (301.6565,548.1664) ..
+ (299.3274,551.2044) .. controls (297.0489,554.2425) and (293.8337,558.4957) ..
+ (289.6818,563.9640) .. controls (294.2894,570.4451) and (298.0362,575.7617) ..
+ (300.9224,579.9136) .. controls (303.8084,584.0655) and (306.7199,588.3441) ..
+ (309.6567,592.7492) .. controls (311.1250,594.9770) and (312.7452,596.7492) ..
+ (314.5175,598.0657) .. controls (316.3402,599.3315) and (318.8212,600.0657) ..
+ (321.9606,600.2682) -- (321.9606,605.2809);
+ \path[fill=black] (396.9235,539.2802) .. controls (399.9107,542.8246) and
+ (402.2146,546.9512) .. (403.8349,551.6601) .. controls (405.5057,556.3184) and
+ (406.3412,561.6602) .. (406.3413,567.6856) .. controls (406.3412,573.6097) and
+ (405.3538,579.0275) .. (403.3792,583.9389) .. controls (401.4044,588.7998) and
+ (398.7968,592.9517) .. (395.5563,596.3948) .. controls (392.1638,599.8885) and
+ (388.3916,602.5721) .. (384.2398,604.4455) .. controls (380.0878,606.3189) and
+ (375.6826,607.2556) .. (371.0244,607.2556) .. controls (366.5180,607.2556) and
+ (362.8218,606.7493) .. (359.9357,605.7366) .. controls (357.0495,604.7240) and
+ (354.6951,603.5341) .. (352.8723,602.1670) -- (352.2647,602.1670) --
+ (352.2647,624.6482) .. controls (352.2647,626.4710) and (352.6191,627.9900) ..
+ (353.3280,629.2053) .. controls (354.0369,630.4204) and (355.1255,631.3065) ..
+ (356.5939,631.8635) .. controls (357.8090,632.3192) and (359.5306,632.7496) ..
+ (361.7585,633.1547) .. controls (364.0370,633.6103) and (365.9104,633.8635) ..
+ (367.3788,633.9142) -- (367.3788,639.0028) -- (325.5302,639.0028) --
+ (325.5302,633.9142) .. controls (327.0999,633.8129) and (328.6189,633.6863) ..
+ (330.0873,633.5344) .. controls (331.5556,633.3825) and (332.8721,633.1293) ..
+ (334.0367,632.7749) .. controls (335.5557,632.2686) and (336.6190,631.3825) ..
+ (337.2266,630.1167) .. controls (337.8342,628.8508) and (338.1380,627.3571) ..
+ (338.1380,625.6356) -- (338.1380,545.9638) .. controls (338.1380,544.4449) and
+ (337.7582,542.9765) .. (336.9987,541.5587) .. controls (336.2392,540.1410) and
+ (335.2519,539.0018) .. (334.0367,538.1410) .. controls (333.1253,537.5334) and
+ (331.8594,537.0777) .. (330.2392,536.7739) .. controls (328.6189,536.4195) and
+ (327.0492,536.1916) .. (325.5302,536.0903) -- (325.5302,531.1535) --
+ (351.0495,529.4826) -- (352.1128,530.3940) -- (352.1128,538.8245) --
+ (352.7204,538.9764) .. controls (355.3533,535.9385) and (358.6192,533.4068) ..
+ (362.5180,531.3814) .. controls (366.4167,529.3561) and (370.2902,528.3435) ..
+ (374.1384,528.3434) .. controls (378.7966,528.3435) and (383.0498,529.3308) ..
+ (386.8980,531.3054) .. controls (390.7967,533.2802) and (394.1385,535.9385) ..
+ (396.9234,539.2802)(384.5436,593.1289) .. controls (386.5688,589.9896) and
+ (388.0625,586.3440) .. (389.0246,582.1921) .. controls (389.9866,578.0402) and
+ (390.4676,573.4072) .. (390.4677,568.2932) .. controls (390.4676,564.5464) and
+ (390.0625,560.7235) .. (389.2525,556.8247) .. controls (388.4423,552.9260) and
+ (387.1764,549.5335) .. (385.4550,546.6474) .. controls (383.7334,543.7107) and
+ (381.4802,541.3309) .. (378.6954,539.5081) .. controls (375.9105,537.6853) and
+ (372.5687,536.7739) .. (368.6700,536.7739) .. controls (364.9230,536.7739) and
+ (361.7331,537.6094) .. (359.1002,539.2802) .. controls (356.4673,540.9005) and
+ (354.1888,542.8499) .. (352.2647,545.1284) -- (352.2647,589.4073) .. controls
+ (352.7204,590.7745) and (353.4546,592.1922) .. (354.4673,593.6606) .. controls
+ (355.5305,595.1289) and (356.6951,596.3948) .. (357.9610,597.4581) .. controls
+ (359.5306,598.7239) and (361.2268,599.7619) .. (363.0496,600.5720) .. controls
+ (364.8724,601.3315) and (367.1003,601.7113) .. (369.7333,601.7113) .. controls
+ (372.5687,601.7113) and (375.3029,600.9771) .. (377.9359,599.5087) .. controls
+ (380.5688,597.9897) and (382.7713,595.8631) .. (384.5436,593.1289);
+ \path[fill=black] (452.5949,605.2809) -- (416.0629,605.2809) --
+ (416.0629,600.2682) .. controls (417.2275,600.1670) and (418.4680,600.0657) ..
+ (419.7845,599.9644) .. controls (421.1009,599.8125) and (422.1895,599.6100) ..
+ (423.0503,599.3568) .. controls (424.4680,598.9011) and (425.5313,598.1163) ..
+ (426.2402,597.0024) .. controls (426.9491,595.8378) and (427.3035,594.3441) ..
+ (427.3035,592.5213) -- (427.3035,505.7862) .. controls (427.3035,503.9635) and
+ (426.8985,502.2672) .. (426.0883,500.6975) .. controls (425.3288,499.0773) and
+ (424.3161,497.8115) .. (423.0503,496.9000) .. controls (422.1389,496.2925) and
+ (420.4680,495.7355) .. (418.0376,495.2291) .. controls (415.6072,494.7229) and
+ (413.6578,494.4191) .. (412.1894,494.3177) -- (412.1894,489.4569) --
+ (440.3670,487.7100) -- (441.4303,488.8493) -- (441.4303,591.6099) .. controls
+ (441.4302,593.3821) and (441.7593,594.8505) .. (442.4176,596.0150) .. controls
+ (443.0758,597.1290) and (444.1391,597.9897) .. (445.6075,598.5973) .. controls
+ (446.7214,599.1037) and (447.8100,599.4834) .. (448.8734,599.7366) .. controls
+ (449.9873,599.9897) and (451.2278,600.1670) .. (452.5949,600.2682) --
+ (452.5949,605.2809);
+ \path[fill=black] (493.6840,633.0028) .. controls (488.9244,633.0027) and
+ (484.5700,632.3951) .. (480.6206,631.1800) .. controls (476.6711,630.0154) and
+ (473.2787,628.4204) .. (470.4432,626.3951) .. controls (467.6078,624.3697) and
+ (465.4052,622.0406) .. (463.8356,619.4077) .. controls (462.3166,616.7747) and
+ (461.5571,614.0658) .. (461.5571,611.2810) .. controls (461.5571,608.8000) and
+ (462.1647,606.5721) .. (463.3799,604.5974) .. controls (464.5951,602.5721) and
+ (466.5445,601.5594) .. (469.2280,601.5594) .. controls (472.2660,601.5594) and
+ (474.5699,602.3189) .. (476.1395,603.8379) .. controls (477.7598,605.3063) and
+ (478.5699,607.0025) .. (478.5699,608.9266) .. controls (478.5699,610.5468) and
+ (478.2914,612.5975) .. (477.7345,615.0785) .. controls (477.2281,617.5596) and
+ (476.8230,619.3317) .. (476.5193,620.3950) .. controls (476.8737,620.8507) and
+ (477.5066,621.4583) .. (478.4180,622.2178) .. controls (479.3800,622.9773) and
+ (480.5446,623.6609) .. (481.9117,624.2685) .. controls (483.5320,625.0280) and
+ (485.2282,625.6356) .. (487.0004,626.0913) .. controls (488.7725,626.5470) and
+ (491.2789,626.7748) .. (494.5195,626.7749) .. controls (497.5574,626.7748) and
+ (500.4689,626.2685) .. (503.2537,625.2559) .. controls (506.0892,624.2432) and
+ (508.5702,622.6229) .. (510.6969,620.3950) .. controls (512.9247,618.0659) and
+ (514.6462,615.3317) .. (515.8615,612.1924) .. controls (517.1272,609.1038) and
+ (517.7602,605.0278) .. (517.7602,599.9644) .. controls (517.7602,597.2302) and
+ (517.4564,594.5213) .. (516.8488,591.8378) .. controls (516.2918,589.1542) and
+ (515.2285,586.8251) .. (513.6589,584.8503) .. controls (512.0892,582.8757) and
+ (509.9373,581.3566) .. (507.2031,580.2933) .. controls (504.5195,579.1794) and
+ (501.1018,578.6224) .. (496.9499,578.6224) -- (487.0004,578.6224) --
+ (487.0004,569.8881) -- (493.6081,569.8881) .. controls (500.5954,569.8882) and
+ (505.6335,567.9641) .. (508.7221,564.1159) .. controls (511.8107,560.2678) and
+ (513.3551,554.4703) .. (513.3551,546.7233) .. controls (513.3551,540.3942) and
+ (511.8614,535.6347) .. (508.8740,532.4447) .. controls (505.8866,529.2042) and
+ (501.6587,527.5840) .. (496.1904,527.5839) .. controls (493.5574,527.5840) and
+ (491.3801,527.9131) .. (489.6586,528.5712) .. controls (487.9877,529.1789) and
+ (486.6206,529.7865) .. (485.5573,530.3940) .. controls (484.2915,531.1030) and
+ (483.2535,531.8878) .. (482.4434,532.7485) .. controls (481.6332,533.6093) and
+ (481.0256,534.2423) .. (480.6206,534.6472) .. controls (480.9750,536.2676) and
+ (481.4054,538.2676) .. (481.9117,540.6473) .. controls (482.4180,542.9765) and
+ (482.6712,545.2044) .. (482.6712,547.3309) .. controls (482.6712,549.2044) and
+ (481.8611,550.9006) .. (480.2408,552.4196) .. controls (478.6712,553.8880) and
+ (476.3420,554.6222) .. (473.2534,554.6222) .. controls (470.5698,554.6222) and
+ (468.5951,553.6602) .. (467.3293,551.7360) .. controls (466.1141,549.8120) and
+ (465.5065,547.5842) .. (465.5065,545.0524) .. controls (465.5065,542.4195) and
+ (466.2407,539.7360) .. (467.7090,537.0017) .. controls (469.1774,534.2676) and
+ (471.3546,531.7106) .. (474.2408,529.3307) .. controls (477.1268,526.9510) and
+ (480.6459,525.0270) .. (484.7978,523.5585) .. controls (488.9497,522.0902) and
+ (493.7346,521.3560) .. (499.1524,521.3560) .. controls (505.3803,521.3560) and
+ (510.5196,522.2928) .. (514.5703,524.1661) .. controls (518.6716,525.9890) and
+ (521.8868,528.2169) .. (524.2160,530.8497) .. controls (526.4944,533.4321) and
+ (528.0641,536.1410) .. (528.9249,538.9764) .. controls (529.7856,541.8119) and
+ (530.2160,544.2424) .. (530.2161,546.2676) .. controls (530.2160,548.7994) and
+ (529.8615,551.3563) .. (529.1527,553.9386) .. controls (528.4438,556.4703) and
+ (527.2792,558.8248) .. (525.6590,561.0020) .. controls (523.8868,563.3818) and
+ (521.5323,565.5590) .. (518.5957,567.5337) .. controls (515.7095,569.4578) and
+ (512.0639,571.0274) .. (507.6588,572.2426) -- (507.6588,573.4578) .. controls
+ (510.4943,573.7110) and (513.5070,574.3439) .. (516.6969,575.3566) .. controls
+ (519.9374,576.3693) and (522.8488,577.8629) .. (525.4312,579.8376) .. controls
+ (528.1147,581.9136) and (530.3172,584.5972) .. (532.0389,587.8883) .. controls
+ (533.7603,591.1289) and (534.6211,595.2555) .. (534.6212,600.2682) .. controls
+ (534.6211,609.9898) and (530.7223,617.8633) .. (522.9248,623.8887) .. controls
+ (515.1272,629.9647) and (505.3803,633.0027) .. (493.6840,633.0028);
+ \path[fill=maincolor] (239.7096,586.3724) .. controls (236.5703,592.3472) and
+ (232.3677,597.1067) .. (227.1019,600.6510) .. controls (221.8359,604.1954) and
+ (215.7852,605.9676) .. (208.9498,605.9676) .. controls (202.9244,605.9676) and
+ (197.6332,604.9043) .. (193.0762,602.7777) .. controls (188.5698,600.6510) and
+ (184.8482,597.7649) .. (181.9115,594.1193) .. controls (178.9748,590.4737) and
+ (176.7722,586.2205) .. (175.3038,581.3597) .. controls (173.8861,576.4989) and
+ (173.1772,571.3596) .. (173.1772,565.9418) .. controls (173.1772,561.0810) and
+ (173.9367,556.3215) .. (175.4557,551.6632) .. controls (177.0254,546.9543) and
+ (179.3039,542.7264) .. (182.2913,538.9795) .. controls (185.1773,535.3846) and
+ (188.7470,532.4985) .. (193.0002,530.3212) .. controls (197.3040,528.0934) and
+ (202.1142,526.9794) .. (207.4308,526.9794) .. controls (212.8991,526.9794) and
+ (217.5827,527.8402) .. (221.4816,529.5617) .. controls (225.3803,531.2833) and
+ (228.5449,533.6377) .. (230.9753,536.6250) .. controls (233.3044,539.4606) and
+ (235.0259,542.8024) .. (236.1399,546.6505) .. controls (237.3045,550.4987) and
+ (237.8867,554.6759) .. (237.8868,559.1822) -- (237.8868,564.1950) --
+ (188.2913,564.1950) .. controls (188.2913,569.1064) and (188.7470,573.5622) ..
+ (189.6584,577.5622) .. controls (190.6204,581.5623) and (192.1141,585.0813) ..
+ (194.1395,588.1193) .. controls (196.1142,591.0560) and (198.6965,593.3852) ..
+ (201.8864,595.1067) .. controls (205.0763,596.7776) and (208.8738,597.6131) ..
+ (213.2789,597.6130) .. controls (217.7853,597.6131) and (221.6587,596.5751) ..
+ (224.8993,594.4991) .. controls (228.1904,592.3725) and (231.3550,588.5750) ..
+ (234.3931,583.1066) -- (239.7096,586.3724)(222.9246,557.8151) .. controls
+ (222.9246,554.9797) and (222.6714,551.9417) .. (222.1651,548.7011) .. controls
+ (221.7094,545.4606) and (220.9499,542.7517) .. (219.8866,540.5744) .. controls
+ (218.7220,538.2454) and (217.1270,536.3466) .. (215.1017,534.8782) .. controls
+ (213.0764,533.4099) and (210.4687,532.6757) .. (207.2789,532.6756) .. controls
+ (201.9623,532.6757) and (197.5319,534.9036) .. (193.9876,539.3592) .. controls
+ (190.4939,543.7644) and (188.5951,549.9164) .. (188.2913,557.8151) --
+ (222.9246,557.8151);
+ \path[fill=maincolor] (320.6725,603.9929) -- (286.3430,603.9929) --
+ (286.3430,598.9801) .. controls (288.6215,598.7270) and (290.5456,598.4738) ..
+ (292.1152,598.2206) .. controls (293.7355,597.9675) and (294.5456,597.3093) ..
+ (294.5457,596.2459) .. controls (294.5456,595.7902) and (294.2924,595.0814) ..
+ (293.7862,594.1193) .. controls (293.2798,593.1573) and (292.7734,592.2712) ..
+ (292.2672,591.4611) .. controls (291.0013,589.4864) and (289.2544,586.8535) ..
+ (287.0266,583.5623) .. controls (284.8493,580.2205) and (282.1657,576.2457) ..
+ (278.9759,571.6381) .. controls (276.3429,574.9293) and (273.9125,578.1445) ..
+ (271.6846,581.2838) .. controls (269.4567,584.3724) and (267.1276,587.6636) ..
+ (264.6972,591.1573) .. controls (264.3428,591.6636) and (263.9630,592.2965) ..
+ (263.5580,593.0560) .. controls (263.2035,593.8155) and (263.0263,594.4231) ..
+ (263.0263,594.8788) .. controls (263.0263,595.9928) and (263.7352,596.9295) ..
+ (265.1529,597.6890) .. controls (266.6213,598.3979) and (268.7985,598.8789) ..
+ (271.6846,599.1321) -- (271.6846,603.9929) -- (243.9628,603.9929) --
+ (243.9628,599.2840) .. controls (247.4059,598.2713) and (250.1654,597.0561) ..
+ (252.2414,595.6383) .. controls (254.3680,594.1700) and (256.3174,592.3725) ..
+ (258.0896,590.2459) .. controls (259.6592,588.2206) and (261.8364,585.4357) ..
+ (264.6213,581.8914) .. controls (267.4567,578.3470) and (271.1023,573.5369) ..
+ (275.5581,567.4608) .. controls (272.9758,563.7646) and (269.8112,559.2582) ..
+ (266.0643,553.9417) .. controls (262.3681,548.5746) and (259.3047,544.1188) ..
+ (256.8744,540.5744) .. controls (255.5579,538.6504) and (254.0389,537.1061) ..
+ (252.3173,535.9415) .. controls (250.6464,534.7263) and (248.2667,534.1187) ..
+ (245.1780,534.1187) -- (245.1780,529.1060) -- (277.7607,529.1060) --
+ (277.7607,534.1187) .. controls (276.1404,534.1187) and (274.5454,534.2200) ..
+ (272.9758,534.4225) .. controls (271.4061,534.6251) and (270.6213,535.0808) ..
+ (270.6213,535.7896) .. controls (270.6213,536.2453) and (270.7732,536.7517) ..
+ (271.0770,537.3086) .. controls (271.3808,537.8656) and (271.7606,538.4732) ..
+ (272.2163,539.1314) .. controls (273.3302,540.8530) and (275.0517,543.5112) ..
+ (277.3809,547.1062) .. controls (279.7606,550.7012) and (282.3176,554.4987) ..
+ (285.0519,558.4987) .. controls (286.8240,556.0683) and (288.8747,553.2329) ..
+ (291.2038,549.9923) .. controls (293.5836,546.7518) and (295.7608,543.6631) ..
+ (297.7356,540.7263) .. controls (297.9380,540.3720) and (298.1406,539.9416) ..
+ (298.3432,539.4352) .. controls (298.5456,538.8783) and (298.6469,538.3466) ..
+ (298.6470,537.8402) .. controls (298.6469,536.7770) and (297.7608,535.9415) ..
+ (295.9887,535.3339) .. controls (294.2671,534.6757) and (292.6215,534.2200) ..
+ (291.0519,533.9668) -- (291.0519,529.1060) -- (318.6978,529.1060) --
+ (318.6978,533.8149) .. controls (314.7990,534.8276) and (311.7610,536.0428) ..
+ (309.5838,537.4605) .. controls (307.4065,538.8277) and (305.5584,540.4226) ..
+ (304.0394,542.2453) .. controls (302.3685,544.3214) and (300.3684,546.8784) ..
+ (298.0394,549.9163) .. controls (295.7608,552.9544) and (292.5456,557.2076) ..
+ (288.3937,562.6760) .. controls (293.0013,569.1571) and (296.7482,574.4736) ..
+ (299.6343,578.6255) .. controls (302.5204,582.7775) and (305.4318,587.0560) ..
+ (308.3686,591.4611) .. controls (309.8369,593.6890) and (311.4572,595.4611) ..
+ (313.2294,596.7776) .. controls (315.0521,598.0434) and (317.5332,598.7776) ..
+ (320.6725,598.9801) -- (320.6725,603.9929);
+ \path[fill=maincolor] (395.6354,537.9921) .. controls (398.6227,541.5365) and
+ (400.9265,545.6632) .. (402.5468,550.3720) .. controls (404.2177,555.0303) and
+ (405.0531,560.3722) .. (405.0532,566.3975) .. controls (405.0531,572.3216) and
+ (404.0658,577.7394) .. (402.0911,582.6508) .. controls (400.1164,587.5117) and
+ (397.5087,591.6636) .. (394.2683,595.1067) .. controls (390.8758,598.6004) and
+ (387.1036,601.2840) .. (382.9517,603.1574) .. controls (378.7997,605.0308) and
+ (374.3946,605.9676) .. (369.7363,605.9676) .. controls (365.2299,605.9676) and
+ (361.5337,605.4612) .. (358.6476,604.4486) .. controls (355.7615,603.4359) and
+ (353.4070,602.2460) .. (351.5843,600.8789) -- (350.9766,600.8789) --
+ (350.9766,623.3602) .. controls (350.9766,625.1829) and (351.3311,626.7019) ..
+ (352.0400,627.9172) .. controls (352.7488,629.1323) and (353.8374,630.0184) ..
+ (355.3058,630.5754) .. controls (356.5210,631.0311) and (358.2425,631.4615) ..
+ (360.4704,631.8666) .. controls (362.7489,632.3223) and (364.6223,632.5754) ..
+ (366.0907,632.6261) -- (366.0907,637.7147) -- (324.2422,637.7147) --
+ (324.2422,632.6261) .. controls (325.8118,632.5248) and (327.3308,632.3982) ..
+ (328.7992,632.2463) .. controls (330.2676,632.0944) and (331.5840,631.8412) ..
+ (332.7486,631.4868) .. controls (334.2676,630.9805) and (335.3309,630.0944) ..
+ (335.9385,628.8286) .. controls (336.5461,627.5627) and (336.8499,626.0690) ..
+ (336.8499,624.3475) -- (336.8499,544.6758) .. controls (336.8499,543.1568) and
+ (336.4701,541.6884) .. (335.7107,540.2706) .. controls (334.9511,538.8530) and
+ (333.9638,537.7137) .. (332.7486,536.8529) .. controls (331.8372,536.2453) and
+ (330.5714,535.7896) .. (328.9511,535.4858) .. controls (327.3308,535.1314) and
+ (325.7612,534.9036) .. (324.2422,534.8022) -- (324.2422,529.8655) --
+ (349.7614,528.1945) -- (350.8247,529.1060) -- (350.8247,537.5364) --
+ (351.4323,537.6883) .. controls (354.0653,534.6504) and (357.3311,532.1187) ..
+ (361.2299,530.0933) .. controls (365.1287,528.0680) and (369.0021,527.0554) ..
+ (372.8503,527.0553) .. controls (377.5085,527.0554) and (381.7617,528.0427) ..
+ (385.6099,530.0174) .. controls (389.5087,531.9921) and (392.8505,534.6504) ..
+ (395.6354,537.9921)(383.2555,591.8408) .. controls (385.2808,588.7016) and
+ (386.7744,585.0560) .. (387.7365,580.9040) .. controls (388.6985,576.7521) and
+ (389.1795,572.1191) .. (389.1796,567.0051) .. controls (389.1795,563.2583) and
+ (388.7745,559.4354) .. (387.9644,555.5366) .. controls (387.1542,551.6379) and
+ (385.8884,548.2455) .. (384.1669,545.3593) .. controls (382.4453,542.4226) and
+ (380.1921,540.0428) .. (377.4073,538.2200) .. controls (374.6224,536.3972) and
+ (371.2806,535.4858) .. (367.3819,535.4858) .. controls (363.6350,535.4858) and
+ (360.4451,536.3213) .. (357.8122,537.9921) .. controls (355.1792,539.6125) and
+ (352.9007,541.5618) .. (350.9766,543.8403) -- (350.9766,588.1193) .. controls
+ (351.4323,589.4864) and (352.1665,590.9041) .. (353.1792,592.3725) .. controls
+ (354.2425,593.8409) and (355.4070,595.1067) .. (356.6729,596.1700) .. controls
+ (358.2425,597.4358) and (359.9387,598.4738) .. (361.7616,599.2839) .. controls
+ (363.5843,600.0434) and (365.8122,600.4232) .. (368.4452,600.4232) .. controls
+ (371.2806,600.4232) and (374.0148,599.6890) .. (376.6478,598.2206) .. controls
+ (379.2807,596.7016) and (381.4833,594.5750) .. (383.2555,591.8408);
+ \path[fill=basecolor] (451.3069,603.9929) -- (414.7748,603.9929) --
+ (414.7748,598.9801) .. controls (415.9394,598.8789) and (417.1799,598.7776) ..
+ (418.4964,598.6763) .. controls (419.8128,598.5245) and (420.9015,598.3219) ..
+ (421.7622,598.0687) .. controls (423.1800,597.6130) and (424.2433,596.8282) ..
+ (424.9521,595.7143) .. controls (425.6610,594.5497) and (426.0154,593.0560) ..
+ (426.0155,591.2332) -- (426.0155,504.4981) .. controls (426.0154,502.6754) and
+ (425.6104,500.9792) .. (424.8002,499.4094) .. controls (424.0407,497.7893) and
+ (423.0281,496.5234) .. (421.7622,495.6119) .. controls (420.8508,495.0044) and
+ (419.1799,494.4475) .. (416.7495,493.9410) .. controls (414.3191,493.4348) and
+ (412.3697,493.1310) .. (410.9014,493.0296) -- (410.9014,488.1688) --
+ (439.0789,486.4219) -- (440.1422,487.5612) -- (440.1422,590.3218) .. controls
+ (440.1422,592.0940) and (440.4713,593.5624) .. (441.1295,594.7269) .. controls
+ (441.7877,595.8409) and (442.8510,596.7016) .. (444.3195,597.3092) .. controls
+ (445.4334,597.8156) and (446.5220,598.1953) .. (447.5853,598.4485) .. controls
+ (448.6992,598.7017) and (449.9397,598.8789) .. (451.3069,598.9801) --
+ (451.3069,603.9929);
+ \path[fill=basecolor] (492.3959,631.7147) .. controls (487.6364,631.7147) and
+ (483.2819,631.1071) .. (479.3325,629.8919) .. controls (475.3831,628.7273) and
+ (471.9906,627.1323) .. (469.1552,625.1070) .. controls (466.3197,623.0817) and
+ (464.1171,620.7525) .. (462.5475,618.1196) .. controls (461.0285,615.4866) and
+ (460.2690,612.7778) .. (460.2690,609.9929) .. controls (460.2690,607.5119) and
+ (460.8766,605.2840) .. (462.0918,603.3093) .. controls (463.3070,601.2840) and
+ (465.2564,600.2713) .. (467.9400,600.2713) .. controls (470.9780,600.2713) and
+ (473.2818,601.0308) .. (474.8514,602.5498) .. controls (476.4717,604.0182) and
+ (477.2818,605.7144) .. (477.2819,607.6385) .. controls (477.2818,609.2587) and
+ (477.0033,611.3094) .. (476.4464,613.7904) .. controls (475.9400,616.2715) and
+ (475.5350,618.0436) .. (475.2312,619.1069) .. controls (475.5856,619.5626) and
+ (476.2185,620.1702) .. (477.1300,620.9298) .. controls (478.0920,621.6892) and
+ (479.2565,622.3728) .. (480.6237,622.9804) .. controls (482.2439,623.7399) and
+ (483.9401,624.3475) .. (485.7123,624.8032) .. controls (487.4845,625.2589) and
+ (489.9908,625.4868) .. (493.2314,625.4868) .. controls (496.2694,625.4868) and
+ (499.1808,624.9804) .. (501.9657,623.9678) .. controls (504.8011,622.9551) and
+ (507.2821,621.3348) .. (509.4088,619.1069) .. controls (511.6366,616.7778) and
+ (513.3581,614.0436) .. (514.5734,610.9043) .. controls (515.8392,607.8157) and
+ (516.4721,603.7397) .. (516.4721,598.6763) .. controls (516.4721,595.9421) and
+ (516.1683,593.2333) .. (515.5607,590.5497) .. controls (515.0037,587.8661) and
+ (513.9404,585.5370) .. (512.3708,583.5622) .. controls (510.8011,581.5876) and
+ (508.6492,580.0686) .. (505.9151,579.0052) .. controls (503.2314,577.8913) and
+ (499.8137,577.3344) .. (495.6618,577.3343) -- (485.7123,577.3343) --
+ (485.7123,568.6001) -- (492.3200,568.6001) .. controls (499.3074,568.6001) and
+ (504.3454,566.6760) .. (507.4341,562.8279) .. controls (510.5227,558.9797) and
+ (512.0670,553.1822) .. (512.0670,545.4352) .. controls (512.0670,539.1061) and
+ (510.5733,534.3466) .. (507.5860,531.1566) .. controls (504.5985,527.9162) and
+ (500.3707,526.2959) .. (494.9023,526.2958) .. controls (492.2693,526.2959) and
+ (490.0921,526.6250) .. (488.3706,527.2831) .. controls (486.6996,527.8908) and
+ (485.3325,528.4984) .. (484.2693,529.1060) .. controls (483.0034,529.8149) and
+ (481.9654,530.5997) .. (481.1553,531.4604) .. controls (480.3451,532.3213) and
+ (479.7375,532.9542) .. (479.3325,533.3592) .. controls (479.6869,534.9795) and
+ (480.1173,536.9795) .. (480.6237,539.3592) .. controls (481.1300,541.6884) and
+ (481.3831,543.9163) .. (481.3832,546.0429) .. controls (481.3831,547.9164) and
+ (480.5730,549.6126) .. (478.9527,551.1315) .. controls (477.3831,552.5999) and
+ (475.0539,553.3341) .. (471.9653,553.3341) .. controls (469.2817,553.3341) and
+ (467.3070,552.3721) .. (466.0412,550.4480) .. controls (464.8260,548.5240) and
+ (464.2184,546.2961) .. (464.2184,543.7643) .. controls (464.2184,541.1315) and
+ (464.9526,538.4479) .. (466.4210,535.7136) .. controls (467.8893,532.9795) and
+ (470.0666,530.4225) .. (472.9527,528.0426) .. controls (475.8388,525.6630) and
+ (479.3578,523.7389) .. (483.5098,522.2704) .. controls (487.6617,520.8021) and
+ (492.4465,520.0680) .. (497.8643,520.0679) .. controls (504.0922,520.0680) and
+ (509.2315,521.0047) .. (513.2822,522.8780) .. controls (517.3835,524.7009) and
+ (520.5987,526.9288) .. (522.9279,529.5617) .. controls (525.2064,532.1440) and
+ (526.7760,534.8529) .. (527.6368,537.6883) .. controls (528.4975,540.5239) and
+ (528.9279,542.9543) .. (528.9280,544.9795) .. controls (528.9279,547.5113) and
+ (528.5735,550.0683) .. (527.8647,552.6505) .. controls (527.1557,555.1822) and
+ (525.9912,557.5367) .. (524.3710,559.7139) .. controls (522.5987,562.0937) and
+ (520.2443,564.2709) .. (517.3076,566.2456) .. controls (514.4214,568.1697) and
+ (510.7758,569.7393) .. (506.3708,570.9545) -- (506.3708,572.1697) .. controls
+ (509.2062,572.4229) and (512.2189,573.0558) .. (515.4088,574.0685) .. controls
+ (518.6493,575.0812) and (521.5607,576.5749) .. (524.1431,578.5495) .. controls
+ (526.8266,580.6255) and (529.0292,583.3091) .. (530.7508,586.6003) .. controls
+ (532.4722,589.8408) and (533.3330,593.9674) .. (533.3331,598.9801) .. controls
+ (533.3330,608.7018) and (529.4342,616.5753) .. (521.6368,622.6007) .. controls
+ (513.8391,628.6766) and (504.0922,631.7147) .. (492.3959,631.7147);
+\end{tikzpicture}
+}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\publicationmonth{March}
+\publicationyear{2014}
+\publicationissue{9}
+
+\usepackage{multicol}
+\usepackage{xparse}
+\newcommand\ctanpkg[1]{\href{http://ctan.org/pkg/#1}{\pkg{#1}}}
+
+\begin{document}
+\maketitle
+
+\raisefirstsection
+
+\tableofcontents % could drop this and raise first section instead
+
+\section{Hiatus?}
+
+Well, it's been a busy couple of years.
+Work has slowed on the \LaTeX3 codebase as all active members of the team have been\Dash shall we say\Dash busily occupied with more pressing concerns in their day-to-day activities.
+
+Nonetheless, Joseph and Bruno have continued to fine-tune the \LaTeX3 kernel and add-on packages.
+Browsing through the commit history shows bug fixes and improvements to documentation, test files, and internal code across the entire breadth of the codebase.
+
+Members of the team have presented at two TUG conferences since the last \LaTeX3 news. (Has it really been so long?)
+In July 2012, Frank and Will travelled to Boston; Frank discussed the challenges faced in the past and continuing to the present day due to the limits of the various \TeX\ engines; and, Frank and Will together covered a brief history and recent developments of the \pkg{expl3} code.
+
+In 2013, Joseph and Frank wrote a talk on complex layouts, and the "layers" ideas discussed in \LaTeX3; Frank went to Tokyo in October to present the work.
+Slides of and recordings from these talks are available on the \LaTeX3 website.
+
+These conferences are good opportunities to introduce the \pkg{expl3} language to a wider group of people; in many cases, explaining the rationale behind why \pkg{expl3} looks a little strange at first helps to convince the audience that it's not so weird after all.
+In our experience, anyone that's been exposed to some of the more awkward expansion aspects of \TeX\ programming appreciates how \pkg{expl3} makes life much easier for us.
+
+\section{\pkg{expl3} in the community}
+
+While things have been slightly quieter for the team, more and more people are adopting \pkg{expl3} for their own use.
+A search on the \TeX\ Stack Exchange website for either "\texttt{expl3}" or "\texttt{latex3}" at time of writing yield around one thousand results each.
+
+In order to help standardise the prefixes used in \pkg{expl3} modules, we have developed a registration procedure for package authors (which amounts to little more than notifying us that their package uses a specific prefix, which will often be the name of the package itself).
+Please contact us via the \texttt{latex-l} mailing list to register your module prefixes and package names; we ask that you avoid using package names that begin with \texttt{l3...}\ since \pkg{expl3} packages use this internally.
+Some authors have started using the package prefix \texttt{lt3...}\ as a way of indicating their package builds on \pkg{expl3} in some way but is not maintained by the \LaTeX3 team.
+
+In the prefix database at present, some thirty package prefixes are registered by fifteen separate individuals (unrelated to the \LaTeX3 project\Dash the number of course grows if you include packages by members of the team).
+These packages cover a broad range of functionality:
+\begin{description}
+\item[\ctanpkg{acro}] Interface for creating (classes of) acronyms
+\item[\ctanpkg{hobby}]
+Hobby's algorithm in PGF/TiKZ for drawing optimally smooth curves.
+\item[\ctanpkg{chemmacros}] Typesetting in the field of chemistry.
+\item[\ctanpkg{classics}] Traditional-style citations for the classics.
+\item[\ctanpkg{conteq}] Continued (in)equalities in mathematics.
+\item[\ctanpkg{ctex}] A collection of macro packages and document classes for Chinese typesetting.
+\item[\ctanpkg{endiagram}] Draw potential energy curve diagrams.
+\item[\ctanpkg{enotez}] Support for end-notes.
+\item[\ctanpkg{exsheets}] Question sheets and exams with metadata.
+%(Note to self: remember to use this for teaching this semester!)
+\item[\ctanpkg{lt3graph}] A graph data structure.
+\item[\ctanpkg{newlfm}] The venerable class for memos and letters.
+\item[\ctanpkg{fnpct}] Interaction between footnotes and punctuation.
+\item[\ctanpkg{GS1}] Barcodes and so forth.
+\item[\ctanpkg{hobete}] Beamer theme for the Univ.\ of Hohenheim.
+\item[\ctanpkg{kantlipsum}] Generate sentences in Kant's style.
+\item[\ctanpkg{lualatex-math}] Extended support for mathematics in \LuaLaTeX.
+\item[\ctanpkg{media9}] Multimedia inclusion for Adobe Reader.
+\item[\ctanpkg{pkgloader}] Managing the options and loading order of other packages.
+\item[\ctanpkg{substances}] Lists of chemicals, etc., in a document.
+\item[\ctanpkg{withargs}] Ephemeral macro use.
+\item[\ctanpkg{xecjk}] Support for CJK documents in \XeLaTeX.
+\item[\ctanpkg{xpatch}, \ctanpkg{regexpatch}] Patch command definitions.
+\item[\ctanpkg{xpeek}] Commands that peek ahead in the input stream.
+\item[\ctanpkg{xpinjin}] Automatically add pinyin to Chinese characters
+\item[\ctanpkg{zhnumber}] Typeset Chinese representations of numbers
+\item[\ctanpkg{zxjatype}] Standards-conforming typesetting of Japanese for \XeLaTeX.
+\end{description}
+Some of these packages are marked by their authors as experimental, but it is clear that these packages have been developed to solve specific needs for typesetting and document production.
+
+The \pkg{expl3} language has well and truly gained traction after many years of waiting patiently.
+
+\section[Logo for the \LaTeX3 Programming Language]
+ {A logo for the \LaTeX3 Programming Language}
+
+To show that \pkg{expl3} is ready for general use Paulo Cereda drew up a nice logo for us, showing a \mbox{hummingbird} (agile and fast\Dash but needs huge amounts of energy) picking at "l3". Big thanks to Paulo!
+\begin{center}
+\explogo
+\end{center}
+
+\section{Recent activity}
+
+\LaTeX3 work has only slowed, not ground to a halt.
+While changes have tended to be minor in recent times, there are a number of improvements worth discussing explicitly.
+\begin{enumerate}
+\item
+Bruno has extended the floating point code to cover additional functions such as inverse trigonometric functions.
+These additions round out the functionality well and make it viable for use in most cases needing floating point mathematics.
+\item
+Joseph's refinement of the experimental galley code now allows separation of paragraph shapes from margins/cutouts.
+This still needs some testing!
+\item
+For some time now \pkg{expl3} has provided "native" drivers although they have not been selected by default in most cases.
+These have been revised to improve robustness, which makes them probably ready to enable by default.
+The improvements made to the drivers have also fed back to more "general" \LaTeX\ code.
+\end{enumerate}
+
+
+\section{Work in progress}
+
+We're still actively discussing a variety of areas to tackle next.
+We are aware of various "odds and ends" in \pkg{expl3} that still need sorting out.
+In particular, some experimental functions have been working quite well and it's time to assess moving them into the "stable" modules, in particular the \pkg{l3str} module for dealing with catcode-twelve token lists more commonly known in \pkg{expl3} as \emph{strings}.
+
+Areas of active discussion including issues around uppercasing and lowercasing (and the esoteric ways that this can be achieved in \TeX) and space skipping (or not) in commands and environments with optional arguments.
+These two issues are discussed next.
+
+\subsection{Uppercasing and lowercasing}
+
+The commands \verb"\tl_to_lowercase:n" and \verb"\tl_to_uppercase:n" have long been overdue for a good hard look.
+From a traditional \TeX\ viewpoint, these commands are simply the primitive \verb"\lowercase" and \verb"\uppercase", and in practice it's well known that there are various limitations and peculiarities associated with them.
+We know these commands are good, to one extent or another, for three things:
+\begin{enumerate}
+\item
+Uppercasing text for typesetting purposes such as all-uppercase titles.
+\item
+Lowercasing text for normalisation in sorting and other applications such as filename comparisons.
+\item
+Achieving special effects, in concert with manipulating \verb"\uccode" and the like, such as defining commands that contain characters with different catcodes than usual.
+\end{enumerate}
+We are working on providing a set of commands to achieve all three of these functions in a more direct and easy-to-use fashion, including support for Unicode in \LuaLaTeX\ and \XeLaTeX.
+
+\pagebreak
+
+\subsection{Space-skipping in \pkg{xparse}}
+
+We have also re-considered the behaviour of space-skipping in \pkg{xparse}.
+Consider the following examples:
+\begin{verbatim}
+\begin{dmath} \begin{dmath}[label=foo]
+[x y z] = [1 2 3] x^2 + y^2 = z^2
+\end{dmath} \end{dmath}
+\end{verbatim}
+In the first case, we are typesetting some mathematics that contains square brackets.
+In the second, we are assigning a label to the equation using an optional argument, which also uses brackets.
+The fact that both work correctly is due to behaviour that is specifically programmed into the workings of the \texttt{dmath} environment of \pkg{breqn}: spaces before an optional argument are explicitly forbidden.
+At present, this is also how commands and environments defined using \pkg{xparse} behave.
+But consider a \pkg{pgfplots} environment:
+\begin{verbatim}
+\begin{pgfplot}
+ [
+ % plot options
+ ]
+ \begin{axis}
+ [
+ % axis options
+ ]
+ ...
+ \end{axis}
+\end{pgfplot}
+\end{verbatim}
+This would seem like quite a natural way to write such environments, but with the current state of \pkg{xparse} this syntax would be incorrect. One would have to write either of these instead:
+\begin{multicols}{2}
+\begin{verbatim}
+\begin{pgfplot}%
+ [
+ % plot options
+ ]
+\end{verbatim}
+\begin{verbatim}
+\begin{pgfplot}[
+ % plot options
+ ]
+\end{verbatim}
+\end{multicols}
+Is this an acceptable compromise?
+We're not entirely sure here\Dash we're in a corner because the humble \texttt{[} has ended up being part of both the syntax and semantics of a \LaTeX\ document.
+
+%There is one further matter to consider and that is how "control symbols" such as \verb"\\" behave in such matters.
+%Because \TeX\ does not skip spaces after control symbols, neither does \pkg{xparse}; therefore control symbols are a solution if one desires a command to use in a mathematics context where an optional argument could cause issues.
+%An example for this from \pkg{amsmath} is line breaks in multi-line display equations:
+%\begin{verbatim}
+%\begin{align}
+%a &= b+c \\
+%[x y z] &= [1 2 3]
+%\end{align}
+%\end{verbatim}
+%In \pkg{amsmath} this requires specific measures to be taken to allow \verb"\\" to behave correctly; with \pkg{xparse} this functionality is built in.
+
+Despite the current design covering most regular use-cases, we have considered adding a further option to \pkg{xparse} to define the space-skipping behaviour as desired by a package author.
+But at this very moment we've rejected adding this additional complexity, because environments that change their parsing behaviour based on their intended use make a \LaTeX-based language more difficult to predict; one could imagine such behaviour causing difficulties down the road for automatic syntax checkers and so forth.
+However, we don't make such decisions in a vacuum and we're always happy to continue to discuss such matters.
+
+
+\section{\ldots and for 2014 onwards}
+
+There is one (understandable) misconception that shows up once in a while with people claiming that
+\[
+ \textrm{\pkg{expl3}} = \textrm{\LaTeX3}.
+\]
+However, the correct relation would be a subset,
+\[
+ \textrm{\pkg{expl3}} \subset \textrm{\LaTeX3},
+\]
+with \pkg{expl3} forming the Core Language Layer on which there will eventually be several other layers on top that \mbox{provide}
+\begin{itemize}
+\item higher-level concepts for typesetting (Typesetting Foundation Layer),
+\item a designer interface for specifying document structures and layouts (Designer Layer),
+\item and finally a Document Representation Layer that implements document level syntax.
+\end{itemize}
+Of those four layers, the lowest one\Dash\pkg{expl3}\Dash is available for use and with \pkg{xparse} we have an instance of the Document Representation Layer modeled largely after \LaTeXe{} syntax (there could be others). Both can be successfully used within the current \LaTeXe{} framework and as mentioned above this is increasingly happening.
+
+The middle layers, however, where the rubber meets the road, are still at the level of prototypes and ideas (templates, \pkg{ldb}, galley, \pkg{xor} and all the good stuff) that need to be revised and further developed to arrive at a \LaTeX3 environment that can stand on its own and that is to where we want to return in 2014.
+
+An overview on this can be found in the answer to "What can *I* do to help the \LaTeX3 project?"\ on Stack Exchange,\footnote{\url{http://tex.stackexchange.com/questions/45838}}
+which is reproduced below in slightly abridged form.
+This is of course not the first time that we have discussed such matters, and you can find similar material in other publications such as those at \url{http://latex-project.org}; e.g., the architecture talk given at the TUG 2011 conference.
+
+\bigskip
+
+\begin{center}
+\explbanner
+\end{center}
+
+\newpage
+\section{What can you do for the \LaTeX3 project?}
+\textbf{By Frank Mittelbach}
+
+My vision of \LaTeX3 is really a system with multiple layers that provide interfaces for different kinds of roles. These layers are
+\begin{itemize}
+\item the underlying engine (some \TeX\ variant)
+\item the programming layer (the core language, i.e., \pkg{expl3})
+\item the typesetting foundation layer (providing higher-level concepts for typesetting)
+\item the typesetting element layer (templates for all types of document elements)
+\item the designer interface foundation layer
+\item the class designer layer (where instances of document elements with specific settings are defined)
+\item document representation layer (that provides the input syntax, i.e., how the author uses elements)
+\end{itemize}
+If you look at it from the perspective of user roles then there are at least three or four roles that you can clearly distinguish:
+\begin{itemize}
+\item The Programmer (template and functionality provider)
+\item The Document Type Designer (defines which elements are available; abstract syntax and semantics)
+\item The Designer (typography and layout)
+\item The Author (content)
+\end{itemize}
+As a consequence the \LaTeX3 Project needs different kinds of help depending on what layer or role we are looking at.
+
+The "Author" is using, say, list structures by specifying something like \verb"\begin{itemize} \item" in his documents. Or perhaps by writing \Verb|<ul> ... </ul>| or whatever the UI representation offers to him.
+
+The "Document Type Designer" defines what kind of abstract document elements are available, and what attributes or arguments those elements provide at the author level. E.g., he may specify that a certain class of documents provides the display lists "enumerate", "itemize" and "description".
+
+The "Programmer" on the other hand implements templates (that offer customizations) for such document elements, e.g., for display lists. What kind of customization possibilities should be provided by the "Programmer" is the domain of the "Document Designer"; he drives what kind of flexibility he needs for the design. In most cases the "Document Designer" should be able to simply select templates (already written) from a template library and only focus on the design, i.e., instantiating the templates with values so that the desired layout for "itemize" lists, etc., is created.
+
+In real life a single person may end up playing more than one role, but it is important to recognise that all of them come with different requirements with respect to interfaces and functionality.
+
+\subsection{Programming Layer}
+
+The programming layer consists of a core language layer (called \pkg{expl3} (EXP erimental L aTeX 3) for historical reasons and now we are stuck with it \texttt{:-)}) and two more components: the "Typesetting Foundation Layer" that we are currently working on and the "Typesetting Element Layer" that is going to provide customizable objects for the design layer. While \pkg{expl3} is in many parts already fairly complete and usable the other two are under construction.
+
+Help is needed for the programming layer in
+\begin{itemize}
+\item helping by extending and completing the regression test suite for \pkg{expl3}
+\item helping with providing good or better documentation, including tutorials
+\item possibly helping in coding additional core functionality\Dash but that requires, in contrast to the first two points, a good amount of commitment and experience with the core language as otherwise the danger is too high that the final results will end up being inconsistent
+\end{itemize}
+Once we are a bit further along with the "Typesetting Foundation Layer" we would need help in
+providing higher-level functionality, perhaps rewriting existing packages/code for elements making use of extended possibilities.
+Two steps down the road (once the "\mbox{Designer} Layer" is closer to being finalized) we would need help with developing templates for all kinds of elements.
+
+In summary for this part, we need help from people interested in programming in \TeX\ and \pkg{expl3} and/or interested in providing documentation (but for this a thorough understanding of the programming concepts is necessary too).
+
+\subsection{Design Layer}
+
+The intention of the design layer is to provide interfaces that allow specifying layout and typography styles in a declarative way. On the implementation side there are a number of prototypes (most notably \pkg{xtemplate} and the recent reimplementation of \pkg{ldb}).
+These need to be unified into a common model which requires some more experimentation and probably also some further thoughts.
+
+But the real importance of this layer is not the implementation of its interfaces but the conceptual view of it: provisioning a rich declarative method (or methods) to describe design and layout. I.e., enabling a designer to think not in programs but in visual representations and relationships.
+
+So here is the big area where people who do not feel they can or want to program \TeX's bowels can help. What would be extremely helpful (and in fact not just for \LaTeX3) would be
+\begin{itemize}
+\item collecting and classifying a \emph{huge} set of layouts and designs
+\begin{itemize}[nosep]
+\item designs for individual document elements (such as headings, TOCs, etc)
+\item document designs that include relationships between document elements
+\end{itemize}
+\item thinking about good, declarative ways to specify such designs
+\begin{itemize}[nosep]
+\item what needs to be specified
+\item to what extent and with what flexibility
+\end{itemize}
+\end{itemize}
+I believe that this is a huge task (but rewarding in itself) and already the first part of collecting existing design specifications will be a major undertaking and will need coordination and probably a lot of work. But it will be a huge asset towards testing any implementations and interfaces for this layer later on.
+
+\subsection{Document Interface Layer}
+
+If we get the separation done correctly, then this layer should effectively offer nothing more than a front end for parsing the document syntax and transforming it into an internal standardised form. This means that on this layer one should not see any (or not much) coding or computation.
+
+It is envisioned that alternative document syntax models can be provided.
+At the moment we have a draft solution in \pkg{xparse}.
+This package offers a document syntax in the style of \LaTeXe, that is with \verb|*|-forms, optional arguments in brackets, etc., but with a few more bells and whistles such as a more generalized concept of default values, support for additional delimiters for arguments, verbatim-style arguments, and so on.
+It is fairly conventional though.
+In addition when it was written the clear separation of layers wasn't well-defined and so the package also contains components for conditional programming that I no longer think should be there.
+
+Bottom line on what is needed for this layer is to
+\begin{itemize}
+\item think about good syntax for providing document content from "the author" perspective
+\item think about good syntax for providing document content from an "application to typesetting" perspective, i.e., the syntax and structure for automated typesetting where the content is prepared by a system/application rather than by a human
+\end{itemize}
+These two areas most likely need strict structure (as automation works much better with structures that do not have a lot of alternative possibilities and shortcuts, etc.) and even when just looking at the human author a lot of open questions need answering.
+And these answers may or may not be to painfully stick with existing \LaTeXe\ conventions in all cases (or perhaps with any?).
+
+None of this requires coding or \pkg{expl3} experience. What it requires is familiarity with existing input concepts, a feel for where the pain points currently are and the willingness to think and discuss what alternatives and extensions could look like.
+
+\subsection{In Summary}
+
+Basically help is possible on any level and it doesn't need to involve programming. Thoughts are sprinkled throughout this article, but here are a few more highlights:
+\begin{itemize}
+\item help with developing/improving the core programming layer by
+\begin{itemize}[nosep]
+\item joining the effort to improve the test suite
+\item help improving the existing (or not existing) documentation
+\item joining the effort to produce core or auxiliary code modules
+\end{itemize}
+\item help on the design layer by
+\begin{itemize}[nosep]
+\item collecting and classifying design tasks
+\item thinking and suggesting ways to describe layout requirements in a declarative manner
+\end{itemize}
+\item help on shaping the document interface layer
+\end{itemize}
+These concepts, as well as their implementation, are under discussion on the list \texttt{latex-l}.\footnote{Instructions for joining and browsing archives at:\\ \url{http://latex-project.org/code.html}}
+The list has only a fairly low level of traffic right now as actual implementation and development tasks are typically discussed directly among the few active implementors. But this might change if more people join.
+
+\subsection{And something else \dots}
+
+The people on the \LaTeX3 team are also committed to keeping \LaTeXe\ stable and even while there isn't that much to do these days there remains the need to resolve bug reports (if they concern the 2e core), provide new distributions once in a while, etc. All this is work that takes effort or remains undone or incomplete. Thus here too, it helps the \LaTeX3 efforts if we get help to free up resources.
+
+\end{document}
+
+
+
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
new file mode 100644
index 0000000000..5f866c8906
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.tex b/macros/latex/contrib/l3kernel/l3news10.tex
new file mode 100644
index 0000000000..c8ac0dffbe
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news10.tex
@@ -0,0 +1,220 @@
+% Copyright 2016 The LaTeX3 Project
+\documentclass{ltnews}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{csquotes}
+\usepackage{hologo}
+\usepackage{ragged2e}
+\usepackage{underscore}
+
+\AtBeginDocument{%
+ \renewcommand*{\LaTeXNews}{\LaTeX3~News}%
+ \RaggedRight
+ \setlength\parindent{1em}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\publicationmonth{November}
+\publicationyear{2016}
+\publicationissue{10}
+
+% Avoid hyphenation of csnames
+\makeatletter
+\protected\edef\cs#1{%
+ \noexpand\path{\@backslashchar#1}%
+}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+There has been something of a gap since the last \LaTeX3 News, but this does
+not mean that work has not been going on. The Team have been working on a
+number of areas, many of which reflect wider take-up of \pkg{expl3}. There have
+also been a number of significant new developments in the \LaTeX3
+\enquote{sphere} in the last two years.
+
+\section{\pkg{l3build}: Testing \LaTeX{} packages}
+
+Testing has been an important part of the work of the team since they assumed
+maintenance of \LaTeX{} over twenty years ago. Various scripts have been used
+over that time by the team for testing, but these have until recently not been
+set up for wider use.
+
+With the general availability of \hologo{LuaTeX} it is now possible to be sure
+that every \TeX{} user has a powerful general scripting language available:
+Lua. The team have used this to create a new general testing system for \TeX{}
+code, \pkg{l3build}. This \emph{is} designed to be used beyond the team, so is
+now available in \TeX{} Live and \hologo{MiKTeX} and is fully documented.
+Testing using \pkg{l3build} makes use of a normalised version of the
+\texttt{.log} file, so can test any aspect of \TeX{} output (e.g., by using
+\cs{showbox}) or its algorithms (by displaying results in the \texttt{.log}).
+
+Part of the remit for creating \pkg{l3build} was to enable the team to work
+truly cross-platform and to allow testing using multiple \TeX{} engines
+(earlier systems were limited to a single engine, normally \eTeX{}). The new
+testing system means we are in a much stronger position to support a variety of
+engines (see below). It has also enabled us to give useful feedback on
+development of the \hologo{LuaTeX} engine.
+
+As well as the core capability in testing, \pkg{l3build} also provides a
+\enquote{one stop} script for creating release bundles. The script is
+sufficiently flexible that for many common \LaTeX{} package structures, setting
+up for creating releases will require only a few lines of configuration.
+
+In addition to the documentation distributed with \pkg{l3build}, the project
+website~\cite[publications in 2014]{project-publications} contains some
+articles, videos and conference presentations that explain how to use
+\pkg{l3build} to manage and test any type of (\LaTeX{}) package.
+
+\section{Automating \pkg{expl3} testing}
+
+As well as developing \pkg{l3build} for local use, the team have also set up
+integration testing for \pkg{expl3} using the Travis-CI system. This means that
+\emph{every} commit to the \LaTeX3 code base now results in a full set of tests
+being run. This has allowed us to significantly reduce the number of occasions
+where \pkg{expl3} needs attention before being released to CTAN.
+
+Automated testing has also enabled us to check that \pkg{expl3} updates do not
+break a number of key third-party packages which use the programming
+environment.
+
+\section{Refining \pkg{expl3}}
+
+Work continues to improve \pkg{expl3} both in scope and robustness. Increased
+use of the programming environment means that code which has to-date been
+under-explored is being used, and this sometimes requires changes to the code.
+
+The team have extended formal support in \pkg{expl3} to cover the engines
+p\TeX{} and up\TeX{}, principally used by Japanese \TeX{} users. This has been
+possible in part due to the \pkg{l3build} system discussed above.
+Engine-dependent variations between \hologo{pdfTeX}, \hologo{XeTeX},
+\hologo{LuaTeX} and (u)p\TeX{} are now well-understood and documented. As part
+of this process, the \enquote{low-level} part of \pkg{expl3}, which saves all
+primitives, now covers essentially all primitives found in all of these
+engines.
+
+The code in \pkg{expl3} is now entirely self-contained, loading no other
+third-party packages, and can also be loaded as a generic package with plain
+\TeX{}, \emph{etc.} These changes make it much easier to diagnose problems and
+make \pkg{expl3} more useful. In particular it can be used as a programming
+language for generic packages, that then can run without modifications under
+different formats!
+
+The team have made a range of small refinements to both internals and
+\pkg{expl3} interfaces. Internal self-consistency has also been improved, for
+example removing almost all use of \texttt{nopar} functions. Performance
+enhancements to the \pkg{l3keys} part of \pkg{expl3} are ongoing and should
+result in significantly faster key setting. As keyval methods are increasingly
+widely used in defining behaviours, this will have an impact on compile times
+for end users.
+
+\section{Replacing \cs{lowercase} and \cs{uppercase}}
+
+As discussed in the last \LaTeX3 News, the team have for some time been keen to
+provide new interfaces which do not directly expose (or in some cases even use)
+the \TeX{} primitives \cs{lowercase} and \cs{uppercase}. We have now created a
+series of different interfaces that provide support for the different
+conceptual uses which may flow from the primitives:
+\begin{itemize}
+ \item For case changing text, \cs{tl_upper_case:n}, \cs{tl_lower_case:n},
+ \cs{tl_mixed_case:n} and related language-aware functions. These are
+ Unicode-capable and designed for working with text. They also allow for
+ accents, expansion of stored text and leaving math mode unchanged. At
+ present some of the interface decisions are not finalised so they are
+ marked as experimental, but the team expect the core concept to be stable.
+ \item For case changing programming strings, \cs{str_upper_case:n},
+ \cs{str_lower_case:n} and \cs{str_fold_case:n}. Again these are
+ Unicode-aware, but in contrast to the functions for text are not
+ context-dependent. They are intended for caseless comparisons, constructing
+ command names on-the-fly and so forth.
+ \item For creating arbitrary character tokens, \cs{char_generate:nn}. This
+ is based on the \cs{Ucharcat} primitive introduced by \hologo{XeTeX}, but
+ with the ideas extended to other engines. This function can be used to
+ create almost any reasonable token.
+ \item For defining active characters, \cs{char_set_active_eq:NN} and
+ related functions. The concept here is that active characters should be
+ equivalent to some named function, so one does not directly define the
+ active character.
+\end{itemize}
+
+\section{Extending \pkg{xparse}}
+
+After discussions at TUG2015 and some experimentation, the team have added a
+new argument type, \texttt{e} (\enquote{embellishment}), to \pkg{xparse}.
+This allows arguments similar to
+\TeX{} primitive sub- and superscripts to be accepted. Thus
+\begin{verbatim}
+\DeclareDocumentCommand\foo{e{^_}}
+ {\showtokens{"#1"}}
+\foo^{Hello} world
+\end{verbatim}
+will show
+\begin{verbatim}
+"{Hello}{-NoValue-}".
+\end{verbatim}
+
+At present, this argument type is experimental: there are a number of models
+which may make sense for this interface.
+
+\section{A new \cs{parshape} model}
+
+As part of development of \pkg{l3galley}, Joseph Wright has proposed a new
+model for splitting up the functions of the \cs{parshape} primitive into three
+logical elements:
+\begin{itemize}
+ \item Margins between the edges of the galley and the paragraph (for example
+ an indented block);
+ \item Cut-out sections running over a fixed number of lines, to support
+ \enquote{in place} figures and so forth;
+ \item Running or single-paragraph shape.
+\end{itemize}
+
+There are additional elements to consider here, for example whether lines are
+the best way to model the length of shaping, how to handle headings, cut-outs
+at page breaks, \emph{etc.}
+
+
+\section{Globally optimized pagination of documents}
+
+Throughout 2016 Frank Mittelbach has worked on methods and algorithms for
+globally optimizing the pagination of documents including those that contain
+floats. Early research results have been presented at Bacho\TeX{} 2016, TUG
+2016 in Toronto and later in the year at \mbox{DocEng'16}, the ACM Symposium on
+Document Engineering in Vienna. A link to the ACM paper (that allows a download
+free of charge) can be found on the project
+website~\cite{project-publications}. The site also holds the speaker notes from
+Toronto and will host a link to a video of the presentation once it becomes
+available.
+
+The framework developed by Frank is based on the extended functionality
+provided by \hologo{LuaTeX}, in particular its callback functions that allow
+interacting with the typesetting process at various points. The algorithm that
+determines the optimal pagination of a given document is implemented in {Lua}
+and its results are then used to direct the formatting done by the \TeX{}
+engine.
+
+At the current point in time this a working prototype but not yet anywhere near
+a production-ready system. However, the work so far shows great potential and
+Frank is fairly confident that it will eventually become a generally usable
+solution.
+
+\section{Looking forward}
+
+The \hologo{LuaTeX} engine has recently reached version~1.0. This may presage a
+stable \hologo{LuaTeX} and is likely to result in wider use of this engine in
+production documents.If that happens we expect to implement some of the more
+complex functionality (such as complex pagination requirements and models) only
+for \hologo{LuaTeX}.
+
+\begin{thebibliography}{10}
+ \raggedright
+ \bibitem{project-publications}
+ Links to various publications by members of the \LaTeX{} Project Team.
+ \newblock \url{https://www.latex-project.org/publications}.
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
new file mode 100644
index 0000000000..2094a11805
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.tex b/macros/latex/contrib/l3kernel/l3news11.tex
new file mode 100644
index 0000000000..b88e7d2420
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news11.tex
@@ -0,0 +1,206 @@
+% Copyright 2017 The LaTeX3 Project
+\documentclass{ltnews}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+\usepackage{csquotes}
+\usepackage{hologo}
+\usepackage{ragged2e}
+\usepackage{underscore}
+
+
+%%% wrong in ltnews.cls ... so some tmp fix here at the moment:
+\makeatletter
+\renewcommand{\subsubsection}{%
+ \@startsection
+ {subsubsection}{2}{\leftmargini}{-1.5ex \@plus -1ex \@minus -.2ex}%
+ {1sp}{\@subheadingfont}%
+}
+\makeatother
+
+
+\AtBeginDocument{%
+ \renewcommand*{\LaTeXNews}{\LaTeX3~News}%
+ \RaggedRight
+ \setlength\parindent{1em}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\publicationmonth{February}
+\publicationyear{2018}
+\publicationissue{11}
+
+% Avoid hyphenation of csnames
+\makeatletter
+\protected\edef\cs#1{%
+ \noexpand\path{\@backslashchar#1}%
+}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+
+\section{Move of sources from Subversion to Git}
+
+The \LaTeX{} team have used a variety of version control systems over the life
+of the \LaTeX3 sources. For a long time we maintained the \LaTeX3 sources in
+Subversion (\textsc{svn}) but also provided a read-only clone of them on GitHub using
+SubGit from TMate Software~\cite{SubGit} to synchronize the two
+repositories---a solution that worked very well.
+
+We have now retired the Subversion repository and completely moved over to Git,
+with the master \LaTeX3 repository hosted on GitHub:
+\url{https://github.com/latex3/latex3}. This new approach means we are (slowly)
+adopting some new approaches to development, for example branches and accepting
+pull requests.
+
+\subsection{Version identifiers}
+
+Following this change, we have removed Subversion \verb=$Id= lines from the
+\LaTeX3 sources. At present, we will be retaining \cs{GetIdInfo} as there are
+several possible use cases. The \LaTeX3 sources now have only release date
+strings as identifiers. However, the team recommend that package authors
+include version information directly in \cs{ProvidesExplPackage} (or similar)
+lines.
+
+\section{\pkg{expl3} updates and extensions}
+
+Work has continued on the codebase over the last year, with both small
+changes/fixes and more substantial changes taking place. The following sections
+summarise some of the more notable changes.
+
+\subsection{\pkg{l3sort} moves to the kernel}
+
+Sorting is an important ability, and for some time the team have provided a
+stand-alone \pkg{l3sort} to support this. The functionality has seen wide take
+up, and so has now been integrated directly into the kernel. This took place in
+parallel with some interface changes to \enquote{round out} the code.
+
+\subsection{Boolean functions}
+
+For some time, the team have been aware that boolean expressions can fail in
+certain circumstances, leading to low-level errors. This is linked to two
+features of the long-standing \cs{bool_if:n(TF)} function: expandable operation
+and short-circuit evaluation.
+
+Addressing that has meant two changes: altering \cs{bool_if:n(TF)} to
+\emph{always} evaluate each part of the expression, and introducing new
+short-circuit functions without the issue. The latter are |lazy| in \pkg{expl3}
+terms:
+\begin{itemize}
+\item \cs{bool_lazy_all:n(TF)}
+\item \cs{bool_lazy_and:nn(TF)}
+\item \cs{bool_lazy_any:n(TF)}
+\item \cs{bool_lazy_or:nn(TF)}
+\end{itemize}
+These new, stable functions are now the recommended way of handling boolean
+evaluations. Package authors are encouraged to employ these new functions as
+appropriate.
+
+\subsection{Revision of \pkg{l3file}}
+
+Large parts of \pkg{l3file} have been revised to give a better separation of
+path/file/extension. This has resulted in addition of a number of new support
+functions and variables.
+
+At the same time, new experimental functions have been added to utilise a
+number of useful primitives in \hologo{pdfTeX}{}: \cs{file_get_mdfive_hash:nN},
+\cs{file_get_size:nN} and \cs{file_get_timestamp:nN}. Currently, \hologo{XeTeX}
+does not support getting file size/timestamp information: this is available in
+other engines.
+
+Paralleling these changes, we have added (experimental) support for shell
+escape to the \pkg{l3sys} module, most notably \cs{sys_shell_now:n}. A range of
+test booleans are also available to check whether shell escape is enabled.
+
+\subsection{Detection of \cs{cs_generate_variant:Nn} errors}
+
+The ability to generate variants is an important feature of \pkg{expl3}. At
+the same time, there are crucial aspects of this approach that can be
+misunderstood by users. In particular, the requirement that variants map
+correctly to an underlying \verb|N|- or \verb|n|-type base function is sometimes
+misunderstood.
+
+To help detect and correct these cases, \cs{cs_generate_variant:Nn} now
+carries out error checking on it's arguments, and raises a warning where
+it is mis-applied. At present, the team have avoided making this an error
+as it is likely to be seen by end users rather than directly by package
+developers. In time, we are likely to revisit this and tighten up
+further on this key requirement.
+
+\subsection{Accessing random data}
+
+To support randomised data selection, we have introduced a family of
+experimental functions which use underlying engine support for random values,
+and provide one entry at random from the data type.
+
+At the same time, we have addresses some issues with uniformity stemming from
+the random number function used by \hologo{pdfTeX}{} and inherited by other
+engines. This means that \pkg{expl3}'s \textsc{fpu} will generate \emph{pseudo}-random
+values across the range of possible outputs.
+
+\subsection{More powerful debugging}
+
+A new set of debugging functions have been added to the kernel. These allow
+debug code to be enabled locally using the new option \verb|enable-debug| along
+with functions \cs{debug_on:n} and \cs{debug_off:n}. A companying this change, we
+have improved the handling of global/local consistency in variable setting.
+
+\subsection{Mark-up changes in \pkg{l3doc}}
+
+Since the introduction of the \verb|__| syntax to mark internal function, the
+need for explicit mark-up of internal material in sources has been negated.
+As such, we have now dropped the requirement to mark internal material with
+\verb|[aux]| when using \pkg{l3doc}. Instead, the status of functions and
+variables is auto-detected from the presence of \verb|__|. For cases where
+non-standard names are used for internal code, the mark up \verb|[int]| is
+retained, \emph{e.g.}
+\begin{verbatim}
+\begin{macro}[int]{\l@expl@enable@debug@bool}
+\end{verbatim}
+
+\section{\pkg{l3build} updates}
+
+Work on \pkg{l3build} has continued in parallel with \pkg{expl3} work, in
+particular continuing to develop features to allow wider use of the tool.
+
+Paralleling the move of the \LaTeX3 codebase to Git, \pkg{l3build} now has it's
+own separate Git repository: \url{https://github.com/latex3/l3build}. This will
+enable us to involve other developers in the Lua code required for the build
+system. At the same time, we have split the code into a number of small source
+files, again to ease development both for the team ourselves and for potential
+collaborators.
+
+Another major change is that \pkg{l3build} can now retain the structure of
+source repositories when creating a CTAN archive. Whilst the team favor `flat'
+source set ups, other users prefer structures approaches. Most notably, this
+new \pkg{l3build} functionality means that it is now used to carry out
+\pkg{beamer} releases.
+
+The other major new feature is a new approach to multiple test set ups, which
+replaces the older \verb|--testfiledir| option. In the new approach, separate
+configuration files are listed in the main \verb|build.lua| script, and can be
+selected manually using a new \verb|--config| switch. This new approach allows
+complex test set ups to be run in a totally automated fashion, which is
+important for kernel testing.
+
+Some changes to the normalisation routines have been carried out, some to deal
+with upcoming \hologo{LuaTeX} changes, others to address aspects which show up
+only in some tests. This has required \verb|.tlg| updates in some cases: as far
+as possible, we strive to avoid requiring changes to the reference files.
+
+\begin{thebibliography}{10}
+ \raggedright
+ \bibitem{SubGit}
+ \emph{SubGit}, TMate Software, \url{https://subgit.com}
+ \bibitem{project-publications}
+ Links to various publications by members of the \LaTeX{} Project Team.
+ \newblock \url{https://www.latex-project.org/publications}.
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
new file mode 100644
index 0000000000..c64dcda56c
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.tex b/macros/latex/contrib/l3kernel/l3news12.tex
new file mode 100644
index 0000000000..05c89a608d
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3news12.tex
@@ -0,0 +1,352 @@
+% Copyright 2019 The LaTeX3 Project
+\documentclass{ltnews}
+
+\usepackage{csquotes}
+\usepackage{hologo}
+\usepackage{ragged2e}
+
+\PassOptionsToPackage{colorlinks}{hyperref}
+
+%%% wrong in ltnews.cls ... so some tmp fix here at the moment:
+\makeatletter
+\renewcommand{\subsubsection}{%
+ \@startsection
+ {subsubsection}{2}{\leftmargini}{-1.5ex \@plus -1ex \@minus -.2ex}%
+ {1sp}{\@subheadingfont}%
+}
+\makeatother
+
+\AtBeginDocument{%
+ \renewcommand*{\LaTeXNews}{\LaTeX3~News}%
+ \RaggedRight
+ \setlength\parindent{1em}%
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\publicationmonth{January}
+\publicationyear{2020}
+\publicationissue{12}
+
+% Avoid hyphenation of csnames
+\makeatletter
+\protected\edef\cs#1{%
+ \noexpand\path{\@backslashchar#1}%
+}
+\makeatother
+
+\begin{document}
+
+\maketitle
+
+\tableofcontents
+
+\section{Introduction}
+
+There has been quite a gap since the last \emph{\LaTeX3 News} (Issue~11,
+February 2018), and so there is quite a bit to cover here. Luckily, one of the
+things there \emph{is} to cover is that we are using a more formalised approach
+for logging changes, so writing up what has happened is a bit easier.
+(By mistake \LaTeX3 News~11 itself did not get \emph{published} when written, but is
+now available: we have kept the information it contains separate as it
+is a good summary of the work that had happened in 2017.)
+
+Work has continued apace across the \LaTeX3 codebase in the last (nearly) two
+years. A lot of this is ultimately focussed on making the core of \pkg{expl3}
+even more stable: \emph{squeezing} out more experimental ideas, refining
+ones we have and making it a serious option for core \LaTeX{} programming.
+
+As a result of these activities, the \LaTeX3 programming layer will be
+available as part of the kernel of \LaTeXe{} from 2020-02-02 onwards, i.e., can
+be used without explicitly loading \pkg{expl3}. See \emph{\LaTeX{}
+ News~31}~\cite{12:site-news} for more details on this.
+
+\section{New features in \pkg{expl3}}
+
+\subsection{A new argument specifier: \texttt{e}-type}
+
+During 2018, the team worked with the \TeX{} Live, \hologo{XeTeX} and
+(u)p\TeX{} developers to add the \cs{expanded} primitive to \hologo{pdfTeX}{},
+\hologo{XeTeX} and (u)p\TeX{}. This primitive was originally suggested for
+\hologo{pdfTeX}{} v1.50 (never released), and was present in \hologo{LuaTeX}{}
+from the start of that project.
+
+Adding \cs{expanded} lets us create a new argument specifier: \texttt{e}-type
+expansion. This is \emph{almost} the same as \texttt{x}-type, but is itself
+expandable. (It also doesn't need doubled \verb|#| tokens.) That's incredibly
+useful for creating function-like macros: you can ensure that \emph{everything}
+is expanded in an argument before you go near it, with not an \cs{expandafter}
+in sight.
+
+\subsection{New functions}
+
+New programming tools have appeared in various places across \pkg{expl3}.
+The highlights are
+\begin{itemize}
+ \item Shuffling of sequences to allow randomization
+ \item Arrays of integers and floating point values; these have constant-time
+ access
+ \item Functions to return values after system shell usage
+ \item Expandable access to file information, including file size, MD5
+ hash and modification date
+\end{itemize}
+
+For the latter, we have revised handling of file names considerably. There is
+now support for finding files in expansion contexts (by using the
+\cs{(pdf)filesize} primitive). Spaces and quotes in file names are now fully
+normalised, in a similar manner to the approach used by the latest \LaTeXe{}
+kernel.
+
+\subsection{String conversion moves to \pkg{expl3}}
+
+In addition to entirely new functions, the team have moved the
+\pkg{l3str-convert} module from the \pkg{l3experimental} bundle into the
+\pkg{expl3} core. This module is essential for dealing with the need to produce
+\textsc{utf}-16 and \textsc{utf}-32 strings in some contexts, and also offers
+built-in escape for \textsc{url}s and \textsc{pdf} strings.
+
+\subsection{Case changing of text}
+
+Within \pkg{expl3}, the team have re-named and reworked the ideas from
+\cs{tl_upper_case:n} and so on, creating a new module \pkg{l3text}. This is a
+\enquote{final} home for functions to manipulate \emph{text}; token lists that
+can reasonably expected to expand to plain text plus limited mark-up, for
+example emphasis and labels/references. Moving these functions, we have also
+made a small number of changes in other modules to give consistent names to
+functions: see the change log for full details.
+
+Over time, we anticipate that functions for other textual manipulation will be
+added to this module.
+
+\section{Notable fixes and changes}
+
+\subsection{File name parsing}
+
+The functions for parsing file names have been entirely re-written, partly as
+this is required for the expandable access to file information mentioned above.
+The new code correctly deals with spaces and quote marks in file names and
+splits the path/name/extension.
+
+\subsection{Message formatting}
+
+The format of messages in \pkg{expl3} was originally quite text-heavy, the idea
+being that they would stand out in the \texttt{.log} file. However, this made
+them hard to find by a regular expression search, and was very different from
+the \LaTeXe{} message approach. The formatting of \pkg{expl3} messages has been
+aligned with that from the \LaTeXe{} kernel, such that \textsc{ide} scripts and
+similar will be able to find and extract them directly.
+
+\subsection{Key inheritance}
+
+A number of changes have been made to the inheritance code for keys,
+to allow inheritance to work \enquote{as expected} in (almost) all
+cases.
+
+\subsection{Floating point juxtaposition}
+
+Implicit multiplication by juxtaposition, such as |2pi|, is now handled
+separately from parenthetic values. Thus for example |1in/1cm| is treated
+as equal to |(1in)/(1cm)| and thus yields |2.54|, and | 1/2(pi+pi)| is
+equal to |pi|.
+
+\subsection{Changing box dimensions}
+
+\TeX{}'s handling of boxes is subtly-different from other registers, and this
+shows up in particular when you want to resize a box. To bring treatment of
+boxes, or rather the grouping behavior of boxes, into line with other
+registers, we have made some internal changes to how functions such as
+\cs{box_set_wd:N} are implemented. This will be transparent for
+\enquote{well-behaved} use cases of these functions.
+
+\subsection{More functions moved to stable}
+
+A large number of functions which were introduced as candidates have been
+evaluated and moved to stable status. The team hopes to move all functions
+in \pkg{expl3} to stable status, or move them out of the core, over the coming
+months.
+
+\subsection{Deprecations}
+
+There have been two notable sets of deprecations over the past 18 months.
+First, we have rationalised all of the \enquote{raw} primitive names to the
+form \cs{tex_<name>:D}. This means that the older names, starting
+\cs{pdftex_...}, \cs{xetex_...}, etc., have been removed.
+
+Secondly, the use of integer constants, which dates back to the earliest days
+of \pkg{expl3}, is today more likely to make the code harder to read than
+anything else. Speed improvements in engines mean that the tiny enhancements in
+reading such constants are no longer required. Thus for example \cs{c_two} is
+deprecated in favour of simply using \texttt{2}.
+
+In parallel with this, a number of older \texttt{.sty} files have been removed.
+These older files provided legacy stubs for files which have now been
+integrated in the \pkg{expl3} core. They have now had sufficient time to allow
+users to update their code.
+
+\section{Internal improvements}
+
+\subsection{Cross-module functions}
+
+The team introduced the idea of internal module functions some time ago. Within
+the kernel, there are places where functions need to be used in multiple
+modules. To make the nature of the kernel interactions clearer, we have worked
+on several aspects
+\begin{itemize}
+ \item Reducing as far as possible cross-module functions
+ \item Making more generally-useful functions public, for example
+ scan marks
+ \item Creating an explicit cross-kernel naming convention for
+ functions which are internal but are essential to use in multiple
+ kernel modules
+\end{itemize}
+
+\subsection{The backend}
+
+Creating graphics, working with color, setting up hyperlinks and so on require
+backend-specific code. Here, backends are for example \texttt{dvips},
+\texttt{xdvipdfmx} and the direct \textsc{pdf} mode in \hologo{pdfTeX} and
+\hologo{LuaTeX}. These functions are needed across the \LaTeX3 codebase and
+have to be updated separate from the \pkg{expl3} core. To facilitate that, we
+have split those sources into a separate bundle, which can then be updated as
+required.
+
+At the same time, the code these files contain is very low-level and is best
+described as internal. We have re-structured how the entire set of functions
+are referred to such that they are now internal for the area they implement,
+for example image inclusion, box affine transformations, etc.
+
+\section{Better support for (u)p\TeX{}}
+
+The developers behind (u)p\TeX{} (Japanese \TeX{}) have recently enhanced their
+English documentation (see \url{https://github.com/texjporg/ptex-manual}).
+Using this new information, we have been able to make internal adjustments to
+\pkg{expl3} to better support these engines.
+
+\section{Options}
+
+A new option \texttt{undo-recent-deprecations} is now available for cases where
+a document (or package) requires some \pkg{expl3} functions that have been
+formally removed after deprecation. This is to allow \emph{temporary}
+work-arounds for documents to be compiled whilst code is begin updated.
+
+The \enquote{classical} options for selecting backends (\texttt{dvips},
+\texttt{pdftex}, etc.) are now recognised in addition to the native key--value
+versions. This should make it much easier to use \pkg{expl3} image and color
+support as it is brought up to fully-workable standards.
+
+\section{Engine requirements}
+
+The minimum engine versions needed to use \pkg{expl3} have been
+incremented a little:
+\begin{itemize}
+ \item \hologo{pdfTeX} v1.40
+ \item \hologo{XeTeX} v0.99992
+ \item \hologo{LuaTeX} v0.95
+ \item $\epsilon$-(u)p\TeX{} mid-2012
+\end{itemize}
+
+The team have also worked with the \hologo{XeTeX} and (u)p\TeX{} developers to
+standardise the set of post-\eTeX{} utility primitives that are available: the
+so-called \enquote{\hologo{pdfTeX} utilities}. These are now available in all
+supported engine, and in time will all be \emph{required}. This primarily
+impacts \hologo{XeTeX}, which gained most of these primitives in the 2019
+\TeX{} Live cycle. (Examples are the random number primitives and expandable
+file data provision.) See \emph{\LaTeX{} News~31}~\cite{12:site-news} for more on this.
+
+\section{Documentation}
+
+\subsection{News}
+
+The \emph{\LaTeX3 News} files were until recently only used to create
+\textsc{pdf} files on the team website~\cite{12:site}. We have now
+integrated those into the \pkg{l3kernel} (\pkg{expl3} core)
+bundle. The news files cover all of \LaTeX3 files, as the core files
+are always available.
+
+\subsection{ChangeLog}
+
+Since the start of 2018, the team have commenced a comprehensive
+change log for each of the bundles which make up the \LaTeX3 code.
+These are simple Markdown text files, which means that they can be displayed
+formatted in web views.
+
+\section{Changes in \pkg{xparse}}
+
+A number of new features have been added to \pkg{xparse}. To allow
+handling of the fact that skipping spaces may be required only in
+some cases when searching for optional arguments, a new modifier
+\texttt{!} is available in argument specifiers. This causes
+\pkg{xparse} to \emph{require} that an optional argument follows
+immediately with no intervening spaces.
+
+There is a new argument type purely for environments: \texttt{b}-type
+for collecting a \cs{begin}/\cs{end} pair, i.e., collecting the body of
+an environment. This is similar in concept to the \pkg{environ} package,
+but is integrated directly into \pkg{xparse}.
+
+Finally, it is now possible to refer to one argument as the
+default for another optional one, for example
+\begin{verbatim}
+\NewDocumentCommand{\caption}{O{#2} m}
+ ...
+\end{verbatim}
+
+\section{New experimental modules}
+
+A number of new experimental modules have been added within the
+\pkg{l3experimental} bundle
+\begin{itemize}
+ \item \pkg{l3benchmark} Performance-testing system using the timing
+ function in modern \TeX{} engines
+ \item \pkg{l3cctab} Category code tables for all engines, not
+ just \hologo{LuaTeX}
+ \item \pkg{l3color} Color support, similar in interface to \pkg{xcolor}
+ \item \pkg{l3draw} Creation of drawings, inspired by \pkg{pgf}, but
+ using the \LaTeX3 \textsc{fpu} for calculations
+ \item \pkg{l3pdf} Support for \textsc{pdf} features such as compression,
+ hyper-links, etc.
+ \item \pkg{l3sys-shell} Shell escape functions for file manipulation
+\end{itemize}
+
+\section{\pkg{l3build} changes}
+
+The \pkg{l3build} tool for testing and releasing \TeX{} packages
+has seen a number of incremental improvements. It is now available directly
+as a script in \TeX{} Live and MiK\TeX{}, meaning you can call it simply
+as
+\begin{verbatim}
+l3build <target>
+\end{verbatim}
+Accompanying this, we have added support for installing scripts and script
+\texttt{man} files.
+
+There is a new \texttt{upload} target that can take a zip file and send it to
+\textsc{ctan}: you just have to fill in release information for \emph{this}
+upload at the prompts.
+
+Testing using \textsc{pdf} files rather than logs has been heavily revised:
+this is vital for work on \textsc{pdf} tagging.
+
+There is also better support for complex directory structures, including the
+ability to manually specify \textsc{tds} location for all installed files. This
+is particularly targeted at package with both generic and format-specific file
+to install.
+
+
+\begin{thebibliography}{9}
+
+\fontsize{9.3}{11.3}\selectfont
+
+
+\bibitem{12:site}
+ \emph{\LaTeX{} Project Website}.
+ \url{https://latex-project.org/}
+
+\bibitem{12:site-news}
+ \emph{\LaTeXe{} release news letters on the \LaTeX{} Project Website}.
+ \url{https://latex-project.org/news/latex2e-news/}
+
+
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/contrib/l3kernel/l3obsolete.txt b/macros/latex/contrib/l3kernel/l3obsolete.txt
deleted file mode 100644
index 8706c0aba3..0000000000
--- a/macros/latex/contrib/l3kernel/l3obsolete.txt
+++ /dev/null
@@ -1,639 +0,0 @@
-This file lists functions and variables which were part of l3kernel
-but which are either deprecated or which have been removed entirely.
-The file is split into two parts. The first part lists functions
-which are deprecated but are still currently included in the
-extracted files. The second part lists functions which have been
-removed from the distribution entirely. Functions which were added
-with 'experimental' status only are not listed.
-
-Deprecated functions and variables
-==================================
-
-These functions are deprecated and should be removed from packages.
-They will be removed from the sources at the end of the given year.
-
---------------------------------------
-Function Expires end
---------------------------------------
-\box_gset_eq_clear:cc 2020
-\box_gset_eq_clear:cN 2020
-\box_gset_eq_clear:Nc 2020
-\box_gset_eq_clear:NN 2020
-\box_set_eq_clear:cc 2020
-\box_set_eq_clear:cN 2020
-\box_set_eq_clear:Nc 2020
-\box_set_eq_clear:NN 2020
-\c_zero 2019
-\c_one 2019
-\c_two 2019
-\c_three 2019
-\c_four 2019
-\c_five 2019
-\c_six 2019
-\c_seven 2019
-\c_eight 2019
-\c_nine 2019
-\c_ten 2019
-\c_eleven 2019
-\c_twelve 2019
-\c_thirteen 2019
-\c_fourteen 2019
-\c_fifteen 2019
-\c_sixteen 2019
-\c_thirty_two 2019
-\c_one_hundred 2019
-\c_two_hundred_fifty_five 2019
-\c_two_hundred_fifty_six 2019
-\c_one_thousand 2019
-\c_ten_thousand 2019
-\c_term_ior 2020
-\etex_....:D 2019
-\hbox_unpack_clear:c 2020
-\hbox_unpack_clear:N 2020
-\lua_escape_x:n 2019
-\lua_now_x:n 2019
-\lua_shipout_x:n 2019
-\luatex_...:D 2019
-\msg_interrupt:nn 2019
-\msg_log:n 2019
-\msg_term:n 2019
-\pdftex_...:D 2019
-\ptex_...:D 2019
-\str_case_x:nn 2019
-\str_case_x:nnF 2019
-\str_case_x:nnT 2019
-\str_case_x:nnTF 2019
-\str_if_eq_x:nnF 2019
-\str_if_eq_x:nnT 2019
-\str_if_eq_x:nnTF 2019
-\str_if_eq_x_p:nn 2019
-\tl_gset_from_file:cnn 2020
-\tl_gset_from_file:Nnn 2020
-\tl_gset_from_file_x:cnn 2020
-\tl_gset_from_file_x:Nnn 2020
-\tl_show_analysis:N 2019
-\tl_show_analysis:n 2019
-\tl_set_from_file:cnn 2020
-\tl_set_from_file:Nnn 2020
-\tl_set_from_file_x:cnn 2020
-\tl_set_from_file_x:Nnn 2020
-\token_get_arg_spec:N 2020
-\token_get_prefix_spec:N 2020
-\token_get_replacement_spec:N 2020
-\uptex_...:D 2019
-\utex_...:D 2019
-\vbox_unpack_clear:c 2020
-\vbox_unpack_clear:N 2020
-\xetex_...:D 2019
---------------------------------------
-
-Removed functions and variables
-===============================
-
-The 'Date removed' column details when the functions were
-removed from the sources.
-
-----------------------------------------------------------
-Function Date removed
-----------------------------------------------------------
-\box_resize:cnn 2018-12-27
-\box_resize:Nnn 2018-12-27
-\box_use_clear:c 2018-12-27
-\box_use_clear:N 2018-12-27
-\c_active_char_token 2011-09-08
-\c_alignment_tab_token 2011-09-08
-\c_empty_toks 2011-09-08
-\c_job_name_tl 2017-01-01
-\c_keys_code_root_tl 2013-01-08
-\c_letter_token 2011-09-08
-\c_luatex_is_engine_bool 2011-12-30
-\c_math_shift_token 2011-09-08
-\c_minus_one 2018-12-27
-\c_other_char_token 2011-09-08
-\c_pdftex_is_engine_bool 2011-12-30
-\c_string_cctab 2012-06-30
-\c_undefined_fp 2014-05-28
-\c_xetex_is_engine_bool 2011-12-30
-\char_make_active:N 2011-09-08
-\char_make_active:n 2011-09-08
-\char_make_alignment_tab:N 2011-09-08
-\char_make_alignment_tab:n 2011-09-08
-\char_make_begin_group:N 2011-09-08
-\char_make_begin_group:n 2011-09-08
-\char_make_comment:N 2011-09-08
-\char_make_comment:n 2011-09-08
-\char_make_end_group:N 2011-09-08
-\char_make_end_group:n 2011-09-08
-\char_make_end_line:N 2011-09-08
-\char_make_end_line:n 2011-09-08
-\char_make_escape:N 2011-09-08
-\char_make_escape:n 2011-09-08
-\char_make_ignore:N 2011-09-08
-\char_make_ignore:n 2011-09-08
-\char_make_invalid:N 2011-09-08
-\char_make_invalid:n 2011-09-08
-\char_make_letter:N 2011-09-08
-\char_make_letter:n 2011-09-08
-\char_make_math_shift:N 2011-09-08
-\char_make_math_shift:n 2011-09-08
-\char_make_math_subscript:N 2011-09-08
-\char_make_math_subscript:n 2011-09-08
-\char_make_math_superscript:N 2011-09-08
-\char_make_math_superscript:n 2011-09-08
-\char_make_other:N 2011-09-08
-\char_make_other:n 2011-09-08
-\char_make_parameter:N 2011-09-08
-\char_make_parameter:n 2011-09-08
-\char_make_space:N 2011-09-08
-\char_make_space:n 2011-09-08
-\char_set_catcode:w 2011-09-08
-\char_set_lccode:w 2011-09-08
-\char_set_mathcode:w 2011-09-08
-\char_set_sfcode:w 2011-09-08
-\char_set_uccode:w 2011-09-08
-\char_show_value_catcode:w 2011-09-08
-\char_show_value_lccode:w 2011-09-08
-\char_show_value_mathcode:w 2011-09-08
-\char_show_value_sfcode:w 2011-09-08
-\char_show_value_uccode:w 2011-09-08
-\char_value_catcode:w 2011-09-08
-\char_value_lccode:w 2011-09-08
-\char_value_mathcode:w 2011-09-08
-\char_value_sfcode:w 2011-09-08
-\char_value_uccode:w 2011-09-08
-\chk_if_free_cs:N 2013-01-08
-\clist_display:c 2011-09-08
-\clist_display:N 2011-09-08
-\clist_gremove_element:Nn 2011-09-08
-\clist_gtrim_spaces:c 2011-12-20
-\clist_gtrim_spaces:N 2011-12-20
-\clist_if_eq_p:cc 2013-01-08
-\clist_if_eq:ccF 2013-01-08
-\clist_if_eq:ccT 2013-01-08
-\clist_if_eq:ccTF 2013-01-08
-\clist_if_eq_p:cN 2013-01-08
-\clist_if_eq:cNF 2013-01-08
-\clist_if_eq:cNT 2013-01-08
-\clist_if_eq:cNTF 2013-01-08
-\clist_if_eq_p:Nc 2013-01-08
-\clist_if_eq:NcF 2013-01-08
-\clist_if_eq:NcT 2013-01-08
-\clist_if_eq:NcTF 2013-01-08
-\clist_length:c 2013-01-08
-\clist_length:N 2013-01-08
-\clist_length:n 2013-01-08
-\clist_remove_element:Nn 2011-09-08
-\clist_top:cN 2011-09-08
-\clist_trim_spaces:c 2011-12-20
-\clist_trim_spaces:N 2011-12-20
-\clist_use:c 2013-01-08
-\clist_use:N 2013-01-08
-\cs_gnew_eq:cc 2011-09-08
-\cs_gnew_eq:cN 2011-09-08
-\cs_gnew_eq:Nc 2011-09-08
-\cs_gnew_nopar:cpn 2011-09-08
-\cs_gnew_nopar:cpx 2011-09-08
-\cs_gnew_nopar:Npn 2011-09-08
-\cs_gnew_nopar:Npx 2011-09-08
-\cs_gnew_protected_nopar:cpn 2011-09-08
-\cs_gnew_protected_nopar:cpx 2011-09-08
-\cs_gnew_protected_nopar:Npn 2011-09-08
-\cs_gnew_protected_nopar:Npx 2011-09-08
-\cs_gnew_protected:cpn 2011-09-08
-\cs_gnew_protected:cpx 2011-09-08
-\cs_gnew_protected:Npn 2011-09-08
-\cs_gnew_protected:Npx 2011-09-08
-\cs_gnew:cpn 2011-09-08
-\cs_gnew:cpx 2011-09-08
-\cs_gnew:Npn 2011-09-08
-\cs_gnew:Npx 2011-09-08
-\cs_gundefine:c 2011-09-08
-\cs_gundefine:N 2011-09-08
-\cs_set_eq:NwN 2011-12-30
-\dim_case:nnn 2015-07-14
-\dim_eval:w 2013-01-08
-\dim_eval_end: 2013-01-08
-\dim_gset_max:cn 2013-01-08
-\dim_gset_max:Nn 2013-01-08
-\dim_gset_min:cn 2013-01-08
-\dim_gset_min:Nn 2013-01-08
-\dim_set_max:cn 2013-01-08
-\dim_set_max:Nn 2013-01-08
-\dim_set_min:cn 2013-01-08
-\dim_set_min:Nn 2013-01-08
-\ExplSyntaxNamesOff 2013-01-08
-\ExplSyntaxNamesOn 2013-01-08
-\file_add_path:nN 2018-12-27
-\file_if_exist_input:nT 2018-03-05
-\file_if_exist_input:nTF 2018-03-05
-\file_list: 2018-12-27
-\file_path_include:n 2018-12-27
-\file_path_remove:n 2018-12-27
-\fp_abs:c 2014-05-28
-\fp_abs:N 2014-05-28
-\fp_compare:NNNF 2014-05-28
-\fp_compare:NNNT 2014-05-28
-\fp_compare:NNNTF 2014-05-28
-\fp_cos:cn 2014-05-28
-\fp_cos:Nn 2014-05-28
-\fp_div:cn 2014-05-28
-\fp_div:Nn 2014-05-28
-\fp_exp:cn 2014-05-28
-\fp_exp:Nn 2014-05-28
-\fp_gabs:c 2014-05-28
-\fp_gabs:N 2014-05-28
-\fp_gcos:cn 2014-05-28
-\fp_gcos:Nn 2014-05-28
-\fp_gdiv:cn 2014-05-28
-\fp_gdiv:Nn 2014-05-28
-\fp_gexp:cn 2014-05-28
-\fp_gexp:Nn 2014-05-28
-\fp_gln:cn 2014-05-28
-\fp_gln:Nn 2014-05-28
-\fp_gmul:cn 2014-05-28
-\fp_gmul:Nn 2014-05-28
-\fp_gneg:c 2014-05-28
-\fp_gneg:N 2014-05-28
-\fp_gpow:cn 2014-05-28
-\fp_gpow:Nn 2014-05-28
-\fp_ground_figures:cn 2014-05-28
-\fp_ground_figures:Nn 2014-05-28
-\fp_ground_places:cn 2014-05-28
-\fp_ground_places:Nn 2014-05-28
-\fp_gsin:cn 2014-05-28
-\fp_gsin:Nn 2014-05-28
-\fp_gtan:cn 2014-05-28
-\fp_gtan:Nn 2014-05-28
-\fp_if_undefined_p:N 2014-05-28
-\fp_if_undefined:NF 2014-05-28
-\fp_if_undefined:NT 2014-05-28
-\fp_if_undefined:NTF 2014-05-28
-\fp_if_zero_p:N 2014-05-28
-\fp_if_zero:NF 2014-05-28
-\fp_if_zero:NT 2014-05-28
-\fp_if_zero:NTF 2014-05-28
-\fp_ln:cn 2014-05-28
-\fp_ln:Nn 2014-05-28
-\fp_mul:cn 2014-05-28
-\fp_mul:Nn 2014-05-28
-\fp_neg:c 2014-05-28
-\fp_neg:N 2014-05-28
-\fp_pow:cn 2014-05-28
-\fp_pow:Nn 2014-05-28
-\fp_round_figures:cn 2014-05-28
-\fp_round_figures:Nn 2014-05-28
-\fp_round_places:cn 2014-05-28
-\fp_round_places:Nn 2014-05-28
-\fp_sin:cn 2014-05-28
-\fp_sin:Nn 2014-05-28
-\fp_tan:cn 2014-05-28
-\fp_tan:Nn 2014-05-28
-\g_file_current_name_tl 2018-12-27
-\g_tmpa_toks 2011-09-08
-\g_tmpb_toks 2011-09-08
-\g_tmpc_toks 2011-09-08
-\group_execute_after:N 2011-09-08
-\hbox_gset_inline_begin:c 2014-08-09
-\hbox_gset_inline_begin:N 2014-08-09
-\hbox_gset_inline_end: 2014-08-09
-\hbox_set_inline_begin:c 2014-08-09
-\hbox_set_inline_begin:N 2014-08-09
-\hbox_set_inline_end: 2014-08-09
-\if_num:w 2013-01-08
-\int_case:nnn 2015-07-14
-\int_convert_from_base_ten:nn 2011-11-22
-\int_convert_from_symbols:nn 2011-11-22
-\int_convert_to_base_ten:nn 2011-11-22
-\int_eval:w 2013-01-08
-\int_eval_end: 2013-01-08
-\int_from_binary:n 2016-01-05
-\int_from_hexadecimal:n 2016-01-05
-\int_from_octal:n 2016-01-05
-\int_to_binary:n 2016-01-05
-\int_to_hexadecimal:n 2016-01-05
-\int_to_octal:n 2016-01-05
-\int_to_symbol:n 2011-11-22
-\int_value:w 2013-01-08
-\ior_get_str:NN 2018-03-05
-\ior_gto:NN 2013-07-28
-\ior_list_streams: 2018-12-27
-\ior_log_streams: 2018-12-27
-\ior_open_streams: 2011-09-08
-\ior_str_gto:NN 2013-07-28
-\ior_str_to:NN 2013-07-28
-\ior_to:NN 2013-07-28
-\iow_list_streams: 2018-12-27
-\iow_log_streams: 2018-12-27
-\iow_now_buffer_safe:Nn 2011-09-08
-\iow_now_buffer_safe:Nx 2011-09-08
-\iow_now_when_avail:Nn 2012-06-05
-\iow_now_when_avail:Nx 2012-06-05
-\iow_open_streams: 2011-09-08
-\iow_wrap:xnnnN 2013-01-08
-\KV_process_no_space_removal_no_sanitize:NNn 2011-09-08
-\KV_process_space_removal_no_sanitize:NNn 2011-09-08
-\KV_process_space_removal_sanitize:NNn 2011-09-08
-\l_iow_line_length_int 2013-01-08
-\l_last_box 2012-05-11
-\l_tl_replace_toks 2011-09-08
-\l_tmpa_toks 2011-09-08
-\l_tmpb_toks 2011-09-08
-\l_tmpc_int 2013-01-08
-\l_tmpc_toks 2011-09-08
-\luatex_if_engine_p: 2017-01-01
-\luatex_if_engine:F 2017-01-01
-\luatex_if_engine:T 2017-01-01
-\luatex_if_engine:TF 2017-01-01
-\msg_class_new:nn 2011-09-08
-\msg_class_set:nn 2013-01-08
-\msg_direct_interrupt:xxxxx 2011-09-08
-\msg_direct_log:xx 2011-09-08
-\msg_direct_term:xx 2011-09-08
-\msg_generic_new:nn 2011-09-08
-\msg_generic_new:nnn 2011-09-08
-\msg_generic_set:nn 2011-09-08
-\msg_generic_set:nnn 2011-09-08
-\msg_interrupt:xxx 2013-01-08
-\msg_log:x 2013-01-08
-\msg_newline: 2013-01-08
-\msg_term:x 2013-01-08
-\msg_trace:nn 2011-09-08
-\msg_trace:nnx 2011-09-08
-\msg_trace:nnxx 2011-09-08
-\msg_trace:nnxxx 2011-09-08
-\msg_trace:nnxxxx 2011-09-08
-\msg_two_newlines: 2013-01-08
-\pdftex_if_engine_p: 2017-01-01
-\pdftex_if_engine:F 2017-01-01
-\pdftex_if_engine:T 2017-01-01
-\pdftex_if_engine:TF 2017-01-01
-\peek_after:NN 2011-09-08
-\peek_gafter:NN 2011-09-08
-\prg_case_dim:nnn 2013-01-08
-\prg_case_int:nnn 2013-01-08
-\prg_case_str:nnn 2013-01-08
-\prg_case_str:onn 2013-01-08
-\prg_case_str:xxn 2013-01-08
-\prg_case_tl:cnn 2013-01-08
-\prg_case_tl:Nnn 2013-01-08
-\prg_new_map_functions:Nn 2011-09-08
-\prg_set_map_functions:Nn 2011-09-08
-\prg_stepwise_function:nnnN 2013-01-08
-\prg_stepwise_inline:nnnn 2013-01-08
-\prg_stepwise_variable:nnnNn 2013-01-08
-\prop_del:cn 2013-01-08
-\prop_del:cV 2013-01-08
-\prop_del:Nn 2013-01-08
-\prop_del:NV 2013-01-08
-\prop_display:c 2011-09-08
-\prop_display:N 2011-09-08
-\prop_gdel:cn 2013-01-08
-\prop_gdel:cV 2013-01-08
-\prop_gdel:Nn 2013-01-08
-\prop_gdel:NV 2013-01-08
-\prop_get:cn 2016-01-05
-\prop_get:Nn 2016-01-05
-\prop_get_gdel:NnN 2011-09-08
-\prop_gget:cnN 2011-09-08
-\prop_gget:cVN 2011-09-08
-\prop_gget:NnN 2011-09-08
-\prop_gget:NVN 2011-09-08
-\prop_gput:ccx 2011-09-08
-\prop_if_eq_p:cc 2011-09-08
-\prop_if_eq_p:cN 2011-09-08
-\prop_if_eq_p:Nc 2011-09-08
-\prop_if_eq_p:NN 2011-09-08
-\prop_if_eq:ccF 2011-09-08
-\prop_if_eq:ccT 2011-09-08
-\prop_if_eq:ccTF 2011-09-08
-\prop_if_eq:cNF 2011-09-08
-\prop_if_eq:cNT 2011-09-08
-\prop_if_eq:cNTF 2011-09-08
-\prop_if_eq:NcF 2011-09-08
-\prop_if_eq:NcT 2011-09-08
-\prop_if_eq:NcTF 2011-09-08
-\prop_if_eq:NNF 2011-09-08
-\prop_if_eq:NNT 2011-09-08
-\prop_if_eq:NNTF 2011-09-08
-\prop_if_in:ccF 2011-09-08
-\prop_if_in:ccT 2011-09-08
-\prop_if_in:ccTF 2011-09-08
-\quark_if_recursion_tail_break:N 2015-07-14
-\quark_if_recursion_tail_break:n 2015-07-14
-\scan_align_safe_stop: 2017-01-01
-\seq_display:c 2011-09-08
-\seq_display:N 2011-09-08
-\seq_length:c 2013-01-08
-\seq_length:N 2013-01-08
-\seq_top:cN 2011-09-08
-\seq_top:NN 2011-09-08
-\seq_use:c 2013-01-08
-\seq_use:N 2013-01-08
-\skip_if_infinite_glue_p:n 2013-01-08
-\skip_if_infinite_glue:nF 2013-01-08
-\skip_if_infinite_glue:nT 2013-01-08
-\skip_if_infinite_glue:nTF 2013-01-08
-\sort_ordered: 2018-12-27
-\sort_reversed: 2018-12-27
-\str_case:nnn 2015-07-14
-\str_case:onn 2015-07-14
-\str_case_x:nnn 2015-07-14
-\str_if_eq_p:xx 2013-01-08
-\str_if_eq:xxF 2013-01-08
-\str_if_eq:xxT 2013-01-08
-\str_if_eq:xxTF 2013-01-08
-\tl_case:cnn 2015-07-14
-\tl_case:Nnn 2015-07-14
-\tl_elt_count:c 2011-09-08
-\tl_elt_count:n 2011-09-08
-\tl_elt_count:N 2011-09-08
-\tl_elt_count:o 2011-09-08
-\tl_elt_count:V 2011-09-08
-\tl_gremove_all_in:cn 2011-09-08
-\tl_gremove_all_in:Nn 2011-09-08
-\tl_gremove_in:cn 2011-09-08
-\tl_gremove_in:Nn 2011-09-08
-\tl_greplace_all_in:cnn 2011-09-08
-\tl_greplace_all_in:Nnn 2011-09-08
-\tl_greplace_in:cnn 2011-09-08
-\tl_greplace_in:Nnn 2011-09-08
-\tl_gset:Nc 2011-09-08
-\tl_head_i:n 2011-09-08
-\tl_head_i:w 2011-09-08
-\tl_head_iii:f 2011-09-08
-\tl_head_iii:n 2011-09-08
-\tl_head_iii:w 2011-09-08
-\tl_if_empty:xF 2013-01-08
-\tl_if_empty:xT 2013-01-08
-\tl_if_empty:xTF 2013-01-08
-\tl_if_head_group_p:n 2013-01-08
-\tl_if_head_group:nF 2013-01-08
-\tl_if_head_group:nT 2013-01-08
-\tl_if_head_group:nTF 2013-01-08
-\tl_if_head_N_type_p:n 2013-01-08
-\tl_if_head_N_type:nF 2013-01-08
-\tl_if_head_N_type:nT 2013-01-08
-\tl_if_head_N_type:nTF 2013-01-08
-\tl_if_head_space_p:n 2013-01-08
-\tl_if_head_space:nF 2013-01-08
-\tl_if_head_space:nT 2013-01-08
-\tl_if_head_space:nTF 2013-01-08
-\tl_length:c 2013-01-08
-\tl_length:n 2013-01-08
-\tl_length:N 2013-01-08
-\tl_length:o 2013-01-08
-\tl_length:V 2013-01-08
-\tl_new:cn 2011-09-08
-\tl_new:Nn 2011-09-08
-\tl_new:Nx 2011-09-08
-\tl_remove_all_in:cn 2011-09-08
-\tl_remove_all_in:Nn 2011-09-08
-\tl_remove_in:cn 2011-09-08
-\tl_remove_in:Nn 2011-09-08
-\tl_replace_all_in:cnn 2011-09-08
-\tl_replace_all_in:Nnn 2011-09-08
-\tl_replace_in:cnn 2011-09-08
-\tl_replace_in:Nnn 2011-09-08
-\tl_set:Nc 2011-09-08
-\tl_tail:w 2013-01-08
-\tl_to_lowercase:n 2018-03-05
-\tl_to_uppercase:n 2018-03-05
-\token_if_active_char_p:N 2011-09-08
-\token_if_active_char:NF 2011-09-08
-\token_if_active_char:NT 2011-09-08
-\token_if_active_char:NTF 2011-09-08
-\token_if_alignment_tab_p:N 2011-09-08
-\token_if_alignment_tab:NF 2011-09-08
-\token_if_alignment_tab:NT 2011-09-08
-\token_if_alignment_tab:NTF 2011-09-08
-\token_if_math_shift_p:N 2011-09-08
-\token_if_math_shift:NF 2011-09-08
-\token_if_math_shift:NT 2011-09-08
-\token_if_math_shift:NTF 2011-09-08
-\token_if_other_char_p:N 2011-09-08
-\token_if_other_char:NF 2011-09-08
-\token_if_other_char:NT 2011-09-08
-\token_if_other_char:NTF 2011-09-08
-\token_new:Nn 2018-12-29
-\toks_clear:c 2011-09-08
-\toks_clear:N 2011-09-08
-\toks_gclear:c 2011-09-08
-\toks_gclear:N 2011-09-08
-\toks_gput_left:cn 2011-09-08
-\toks_gput_left:co 2011-09-08
-\toks_gput_left:cV 2011-09-08
-\toks_gput_left:Nn 2011-09-08
-\toks_gput_left:No 2011-09-08
-\toks_gput_left:NV 2011-09-08
-\toks_gput_left:Nx 2011-09-08
-\toks_gput_right:cn 2011-09-08
-\toks_gput_right:co 2011-09-08
-\toks_gput_right:cV 2011-09-08
-\toks_gput_right:Nn 2011-09-08
-\toks_gput_right:No 2011-09-08
-\toks_gput_right:NV 2011-09-08
-\toks_gput_right:Nx 2011-09-08
-\toks_gset_eq:cc 2011-09-08
-\toks_gset_eq:cN 2011-09-08
-\toks_gset_eq:Nc 2011-09-08
-\toks_gset_eq:NN 2011-09-08
-\toks_gset:cn 2011-09-08
-\toks_gset:co 2011-09-08
-\toks_gset:cV 2011-09-08
-\toks_gset:cx 2011-09-08
-\toks_gset:Nn 2011-09-08
-\toks_gset:No 2011-09-08
-\toks_gset:NV 2011-09-08
-\toks_gset:Nx 2011-09-08
-\toks_if_empty_p:c 2011-09-08
-\toks_if_empty_p:N 2011-09-08
-\toks_if_empty:cF 2011-09-08
-\toks_if_empty:cT 2011-09-08
-\toks_if_empty:cTF 2011-09-08
-\toks_if_empty:NF 2011-09-08
-\toks_if_empty:NT 2011-09-08
-\toks_if_empty:NTF 2011-09-08
-\toks_if_eq_p:cc 2011-09-08
-\toks_if_eq_p:cN 2011-09-08
-\toks_if_eq_p:Nc 2011-09-08
-\toks_if_eq_p:NN 2011-09-08
-\toks_if_eq:ccF 2011-09-08
-\toks_if_eq:ccT 2011-09-08
-\toks_if_eq:ccTF 2011-09-08
-\toks_if_eq:cNF 2011-09-08
-\toks_if_eq:cNT 2011-09-08
-\toks_if_eq:cNTF 2011-09-08
-\toks_if_eq:NcF 2011-09-08
-\toks_if_eq:NcT 2011-09-08
-\toks_if_eq:NcTF 2011-09-08
-\toks_if_eq:NNF 2011-09-08
-\toks_if_eq:NNT 2011-09-08
-\toks_if_eq:NNTF 2011-09-08
-\toks_new:c 2011-09-08
-\toks_new:N 2011-09-08
-\toks_put_left:cn 2011-09-08
-\toks_put_left:co 2011-09-08
-\toks_put_left:cV 2011-09-08
-\toks_put_left:Nn 2011-09-08
-\toks_put_left:No 2011-09-08
-\toks_put_left:NV 2011-09-08
-\toks_put_left:Nx 2011-09-08
-\toks_put_right:cn 2011-09-08
-\toks_put_right:co 2011-09-08
-\toks_put_right:cV 2011-09-08
-\toks_put_right:Nf 2011-09-08
-\toks_put_right:Nn 2011-09-08
-\toks_put_right:No 2011-09-08
-\toks_put_right:NV 2011-09-08
-\toks_put_right:Nx 2011-09-08
-\toks_set_eq:cc 2011-09-08
-\toks_set_eq:cN 2011-09-08
-\toks_set_eq:Nc 2011-09-08
-\toks_set_eq:NN 2011-09-08
-\toks_set:cf 2011-09-08
-\toks_set:cn 2011-09-08
-\toks_set:co 2011-09-08
-\toks_set:cV 2011-09-08
-\toks_set:cv 2011-09-08
-\toks_set:cx 2011-09-08
-\toks_set:Nf 2011-09-08
-\toks_set:Nn 2011-09-08
-\toks_set:No 2011-09-08
-\toks_set:NV 2011-09-08
-\toks_set:Nv 2011-09-08
-\toks_set:Nx 2011-09-08
-\toks_show:c 2011-09-08
-\toks_show:N 2011-09-08
-\toks_use_clear:c 2011-09-08
-\toks_use_clear:N 2011-09-08
-\toks_use_gclear:c 2011-09-08
-\toks_use_gclear:N 2011-09-08
-\toks_use:c 2011-09-08
-\toks_use:N 2011-09-08
-\use_i_after_else:nw 2011-12-30
-\use_i_after_fi:nw 2011-12-30
-\use_i_after_or:nw 2011-12-30
-\use_i_after_orelse:nw 2011-12-30
-\vbox_gset_inline_begin:c 2014-08-09
-\vbox_gset_inline_begin:N 2014-08-09
-\vbox_gset_inline_end: 2014-08-09
-\vbox_set_inline_begin:c 2014-08-09
-\vbox_set_inline_begin:N 2014-08-09
-\vbox_set_inline_end: 2014-08-09
-\xetex_if_engine_p: 2017-01-01
-\xetex_if_engine:F 2017-01-01
-\xetex_if_engine:T 2017-01-01
-\xetex_if_engine:TF 2017-01-01
-[fp function] round+ 2018-03-05
-[fp function] round- 2018-03-05
-[fp function] round0 2018-03-05
-[key property] .choice_code:n 2015-07-14
-[key property] .choice_code:x 2015-07-14
-[key property] .code:x 2013-07-10
-[key property] .generate_choices:n 2015-07-14
-[key property] .meta:x 2013-07-10
-[key property] .value_forbidden: 2017-01-01
-[key property] .value_required: 2017-01-01
-Variants of n into N/c 2018-12-27
-Variants of N into n/o/V/v/f/x 2018-12-27
-----------------------------------------------------------
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 0054b22ed2..c43913c283 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -107,6 +107,7 @@ morewrites,morewrites,Bruno Le Floch,https://github.com/blefloch/latex-morewrite
msg,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
muskip,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
nan,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
+nicematrix,nicematrix,François Pantigny,,,,2019-12-19,2019-12-19,
nil,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
no,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2018-05-12,2018-05-12,
notestobib,notes2bib,Joseph Wright,https://github.com/josephwright/notes2bib,https://github.com/josephwright/notes2bib.git,https://github.com/josephwright/notes2bib/issues,2012-11-07,2012-11-07,
@@ -138,6 +139,7 @@ right,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,http
rivbook,rivbook,Julien Rivaud,,,,2018-06-13,2018-06-14,
rivmath,rivmath,Julien Rivaud,,,,2018-06-13,2018-06-13,
scan,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
+scontents,scontents,Pablo González,https://github.com/pablgonz/scontents,git@github.com:pablgonz/scontents.git,https://github.com/pablgonz/scontents/issues,2019-12-05,2019-12-05,
seq,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
siunitx,siunitx,Joseph Wright,https://github.com/josephwright/siunitx,https://github.com/josephwright/siunitx.git,https://github.com/josephwright/siunitx/issues,2012-11-04,2012-11-04,
skip,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
@@ -169,6 +171,7 @@ utex,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https
vbox,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
vcoffin,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-28,2012-09-28,
withargs,withargs,Michiel Helvensteijn,,,,2014-02-05,2014-02-05,
+witharrows,witharrows,François Pantigny,,,,2019-12-19,2019-12-19,
xeCJK,xecjk,Qing Lee,https://github.com/CTeX-org/ctex-kit,https://github.com/CTeX-org/ctex-kit.git,https://github.com/CTeX-org/ctex-kit/issues,2013-05-26,2013-05-26,
xetex,l3kernel,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
xfrac,xfrac,The LaTeX3 Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2012-09-27,2012-09-27,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index cbb3f89304..8117582c19 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index 63b2f5845b..6a503a97f6 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prg.dtx
%
-% Copyright (C) 2005-2019 The LaTeX3 Project
+% Copyright (C) 2005-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 62cd9ba785..445695ac0f 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -2,7 +2,7 @@
%
%% File: l3prop.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index 401b66dfc1..d3ee404a2f 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3quark.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index bf7b19ccde..f096c3e65d 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -2,7 +2,7 @@
%
%% File: l3regex.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 811ac0a7d7..bc21d02688 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -2,7 +2,7 @@
%
%% File: l3seq.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 901595ae0d..cbb2345e78 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -3,7 +3,7 @@
%% File: l3skip.dtx
%
% Copyright (C) 2004-2011 Frank Mittelbach, The LaTeX3 Project
-% (C) 2012-2019 The LaTeX3 Project
+% (C) 2012-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 49686a77ab..1cb084742b 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -2,7 +2,7 @@
%
%% File l3sort.dtx
%
-% Copyright (C) 2012-2019 The LaTeX3 Project
+% Copyright (C) 2012-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index 05531a1e93..07343492cd 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str-convert.dtx
%
-% Copyright (C) 2013-2019 The LaTeX3 Project
+% Copyright (C) 2013-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 09dde6a4eb..9947592862 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -2,7 +2,7 @@
%
%% File: l3str.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -690,14 +690,14 @@
%
% \section{String manipulation}
%
-% \begin{function}[EXP, added = 2015-03-01]
+% \begin{function}[EXP, added = 2019-11-26]
% {
-% \str_lower_case:n, \str_lower_case:f,
-% \str_upper_case:n, \str_upper_case:f
+% \str_lowercase:n, \str_lowercase:f,
+% \str_uppercase:n, \str_uppercase:f
% }
% \begin{syntax}
-% \cs{str_lower_case:n} \Arg{tokens}
-% \cs{str_upper_case:n} \Arg{tokens}
+% \cs{str_lowercase:n} \Arg{tokens}
+% \cs{str_uppercase:n} \Arg{tokens}
% \end{syntax}
% Converts the input \meta{tokens} to their string representation, as
% described for \cs{tl_to_str:n}, and then to the lower or upper
@@ -716,8 +716,8 @@
% \cs_set_protected:cpn
% {
% user
-% \str_upper_case:f { \tl_head:n {#1} }
-% \str_lower_case:f { \tl_tail:n {#1} }
+% \str_uppercase:f { \tl_head:n {#1} }
+% \str_lowercase:f { \tl_tail:n {#1} }
% }
% { #2 }
% }
@@ -728,19 +728,19 @@
%
% These functions should \emph{not} be used for
% \begin{itemize}
-% \item Caseless comparisons: use \cs{str_fold_case:n} for this
+% \item Caseless comparisons: use \cs{str_foldcase:n} for this
% situation (case folding is distinct from lower casing).
% \item Case changing text for typesetting: see the
-% \cs[index=tl_lower_case:n]{tl_lower_case:n(n)},
-% \cs[index=tl_upper_case:n]{tl_upper_case:n(n)} and
-% \cs[index=tl_mixed_case:n]{tl_mixed_case:n(n)} functions which
+% \cs[index=text_lowercase:n]{text_lowercase:n(n)},
+% \cs[index=text_uppercase:n]{text_uppercase:n(n)} and
+% \cs[index=text_titlecase:n]{text_titlecase:n(n)} functions which
% correctly deal with context-dependence and other factors appropriate
% to text case changing.
% \end{itemize}
%
% \begin{texnote}
% As with all \pkg{expl3} functions, the input supported by
-% \cs{str_fold_case:n} is \emph{engine-native} characters which are or
+% \cs{str_foldcase:n} is \emph{engine-native} characters which are or
% interoperate with \textsc{utf-8}. As such, when used with \pdfTeX{}
% \emph{only} the Latin alphabet characters A--Z are case-folded
% (\emph{i.e.}~the \textsc{ascii} range which coincides with
@@ -749,10 +749,10 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[EXP, added = 2014-06-19, updated = 2016-03-07]
-% {\str_fold_case:n, \str_fold_case:V}
+% \begin{function}[EXP, added = 2019-11-26]
+% {\str_foldcase:n, \str_foldcase:V}
% \begin{syntax}
-% \cs{str_fold_case:n} \Arg{tokens}
+% \cs{str_foldcase:n} \Arg{tokens}
% \end{syntax}
% Converts the input \meta{tokens} to their string representation, as
% described for \cs{tl_to_str:n}, and then folds the case of the resulting
@@ -760,7 +760,7 @@
% left in the input stream.
%
% String folding is a process used for material such as identifiers rather
-% than for \enquote{text}. The folding provided by \cs{str_fold_case:n}
+% than for \enquote{text}. The folding provided by \cs{str_foldcase:n}
% follows the mappings provided by the \href{http://www.unicode.org}^^A
% {Unicode Consortium}, who
% \href{http://www.unicode.org/faq/casemap_charprop.html#2}{state}:
@@ -773,7 +773,7 @@
% should be used solely for internal processing and generally should not be
% stored or displayed to the end user.
% \end{quote}
-% The folding approach implemented by \cs{str_fold_case:n} follows the
+% The folding approach implemented by \cs{str_foldcase:n} follows the
% \enquote{full} scheme defined by the Unicode Consortium
% (\emph{e.g.}~\SS folds to \texttt{SS}). As case-folding is
% a language-insensitive process, there is no special treatment of
@@ -782,7 +782,7 @@
%
% \begin{texnote}
% As with all \pkg{expl3} functions, the input supported by
-% \cs{str_fold_case:n} is \emph{engine-native} characters which are or
+% \cs{str_foldcase:n} is \emph{engine-native} characters which are or
% interoperate with \textsc{utf-8}. As such, when used with \pdfTeX{}
% \emph{only} the Latin alphabet characters A--Z are case-folded
% (\emph{i.e.}~the \textsc{ascii} range which coincides with
@@ -1850,9 +1850,9 @@
%
% \begin{macro}[EXP]
% {
-% \str_fold_case:n, \str_fold_case:V,
-% \str_lower_case:n, \str_lower_case:f,
-% \str_upper_case:n, \str_upper_case:f
+% \str_foldcase:n, \str_foldcase:V,
+% \str_lowercase:n, \str_lowercase:f,
+% \str_uppercase:n, \str_uppercase:f
% }
% \begin{macro}[EXP]{\@@_change_case:nn}
% \begin{macro}[EXP]{\@@_change_case_aux:nn}
@@ -1867,12 +1867,12 @@
% and everything else. The output is detokenized to allow data sharing
% with text-based case changing.
% \begin{macrocode}
-\cs_new:Npn \str_fold_case:n #1 { \@@_change_case:nn {#1} { fold } }
-\cs_new:Npn \str_lower_case:n #1 { \@@_change_case:nn {#1} { lower } }
-\cs_new:Npn \str_upper_case:n #1 { \@@_change_case:nn {#1} { upper } }
-\cs_generate_variant:Nn \str_fold_case:n { V }
-\cs_generate_variant:Nn \str_lower_case:n { f }
-\cs_generate_variant:Nn \str_upper_case:n { f }
+\cs_new:Npn \str_foldcase:n #1 { \@@_change_case:nn {#1} { fold } }
+\cs_new:Npn \str_lowercase:n #1 { \@@_change_case:nn {#1} { lower } }
+\cs_new:Npn \str_uppercase:n #1 { \@@_change_case:nn {#1} { upper } }
+\cs_generate_variant:Nn \str_foldcase:n { V }
+\cs_generate_variant:Nn \str_lowercase:n { f }
+\cs_generate_variant:Nn \str_uppercase:n { f }
\cs_new:Npn \@@_change_case:nn #1
{
\exp_after:wN \@@_change_case_aux:nn \exp_after:wN
@@ -1906,7 +1906,7 @@
\quark_if_recursion_tail_stop_do:Nn #2
{ \@@_change_case_end:wn }
\@@_change_case_output:fw
- { \use:c { char_str_ #1 _case:N } #2 }
+ { \use:c { char_str_ #1 case:N } #2 }
\@@_change_case_loop:nw {#1}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index d00c3f0601..c8be704965 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 28948cc82c..9b48213e4a 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -2,7 +2,7 @@
File: l3styleguide.tex
-Copyright (C) 2011,2012,2014-2019 The LaTeX3 Project
+Copyright (C) 2011,2012,2014-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-11-07}
+\date{Released 2020-01-12}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index e6b56c4699..5d9e1b7053 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index a27fb842d0..26c5850c23 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -2,7 +2,7 @@
File: l3syntax-changes.tex
-Copyright (C) 2011-2012,2017-2019 The LaTeX3 Project
+Copyright (C) 2011-2012,2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-11-07}
+\date{Released 2020-01-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 24e79512c7..12ebc542a5 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -2,7 +2,7 @@
%
%% File: l3sys.dtx
%
-% Copyright (C) 2015-2019 The LaTeX3 Project
+% Copyright (C) 2015-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -837,7 +837,7 @@
}
% \end{macrocode}
% If there is a class option set, and recognised, we pick it up: these
-% will over-ride anything set automatically but will themsevles be
+% will over-ride anything set automatically but will themselves be
% over-written if there is a package option.
% \begin{macrocode}
\@@_finalise:n
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index 062c6794b9..60440afea3 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index 0f7ed542b3..e982eb5761 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -2,7 +2,7 @@
File: l3term-glossary.tex
-Copyright (C) 2018-2019 The LaTeX3 Project
+Copyright (C) 2018-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-11-07}
+\date{Released 2020-01-12}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
new file mode 100644
index 0000000000..3c608eacb9
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -0,0 +1,1421 @@
+% \iffalse meta-comment
+%
+%% File: l3text-case.dtx
+%
+% Copyright (C) 2020 The LaTeX3 Project
+%
+% 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
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3text-case} package: text processing (case changing)^^A
+% }
+%
+% \author{^^A
+% The \LaTeX3 Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2020-01-12}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3text-case} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=text>
+% \end{macrocode}
+%
+% \subsection{Case changing}
+%
+% \begin{macro}[EXP]
+% {
+% \text_lowercase:n,
+% \text_uppercase:n,
+% \text_titlecase:n,
+% \text_titlecase_first:n
+% }
+% \begin{macro}[EXP]
+% {
+% \text_lowercase:nn,
+% \text_uppercase:nn,
+% \text_titlecase:nn,
+% \text_titlecase_first:nn
+% }
+% The user level functions here are all wrappers around the internal
+% functions for case changing.
+% \begin{macrocode}
+\cs_new:Npn \text_lowercase:n #1
+ { \@@_change_case:nnn { lower } { } {#1} }
+\cs_new:Npn \text_uppercase:n #1
+ { \@@_change_case:nnn { upper } { } {#1} }
+\cs_new:Npn \text_titlecase:n #1
+ { \@@_change_case:nnn { title } { } {#1} }
+\cs_new:Npn \text_titlecase_first:n #1
+ { \@@_change_case:nnn { titleonly } { } {#1} }
+\cs_new:Npn \text_lowercase:nn #1#2
+ { \@@_change_case:nnn { lower } {#1} {#2} }
+\cs_new:Npn \text_uppercase:nn #1#2
+ { \@@_change_case:nnn { upper } {#1} {#2} }
+\cs_new:Npn \text_titlecase:nn #1#2
+ { \@@_change_case:nnn { title } {#1} {#2} }
+\cs_new:Npn \text_titlecase_first:nn #1#2
+ { \@@_change_case:nnn { titleonly } {#1} {#2} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_change_case:nnn, \@@_change_case_aux:nnn}
+% \begin{macro}[EXP]{\@@_change_case_store:n}
+% \begin{macro}[EXP]{\@@_change_case_store:nw}
+% \begin{macro}[EXP]{\@@_change_case_result:n}
+% \begin{macro}[EXP]{\@@_change_case_end:w}
+% \begin{macro}[EXP]{\@@_change_case_loop:nnw}
+% \begin{macro}[EXP]{\@@_change_case_break:w}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_group_lower:nnn ,
+% \@@_change_case_group_upper:nnn ,
+% \@@_change_case_group_title:nnn ,
+% \@@_change_case_group_titleonly:nnn
+% }
+% \begin{macro}[EXP]{\@@_change_case_space:nnw}
+% \begin{macro}[EXP]{\@@_change_case_N_type:nnN, \@@_change_case_N_type_aux:nnN}
+% \begin{macro}[EXP]{\@@_change_case_N_type:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_math_search:nnNNN}
+% \begin{macro}[EXP]{\@@_change_case_math_loop:nnNw}
+% \begin{macro}[EXP]{\@@_change_case_math_N_type:nnNN}
+% \begin{macro}[EXP]{\@@_change_case_math_group:nnNn}
+% \begin{macro}[EXP]{\@@_change_case_math_space:nnNw}
+% \begin{macro}[EXP]{\@@_change_case_cs_check:nnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnNN}
+% \begin{macro}[EXP]{\@@_change_case_exclude:nnNn}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_letterlike_lower:nnN ,
+% \@@_change_case_letterlike_upper:nnN ,
+% \@@_change_case_letterlike_title:nnN ,
+% \@@_change_case_letterlike_titleonly:nnN
+% }
+% \begin{macro}[EXP]{\@@_change_case_letterlike:nnnnN}
+% \begin{macro}[EXP]
+% {\@@_change_case_char_lower:nnN, \@@_change_case_char_upper:nnN}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnNw}
+% \begin{macro}[EXP]{\@@_change_case_lower_sigma:NnnN}
+% \begin{macro}[EXP]
+% {\@@_change_case_char_title:nnN, \@@_change_case_char_titleonly:nnN}
+% \begin{macro}[EXP]
+% {\@@_change_case_char_title:nN, \@@_change_case_char_titleonly:nN}
+% \begin{macro}[EXP]{\@@_change_case_char_title:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_char_char:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNN}
+% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNNN}
+% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnNNNNN}
+% \begin{macro}[EXP]{\@@_change_case_char_UTFviii:nnnn}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_char_next_lower:nn ,
+% \@@_change_case_char_next_upper:nn ,
+% \@@_change_case_char_next_title:nn ,
+% \@@_change_case_char_next_titleonly:nn
+% }
+% \begin{macro}[EXP]{\@@_change_case_char_next_end:nn}
+% As for the expansion code, the business end of case changing is the
+% handling of \texttt{N}-type tokens. First, we expand the input fully
+% (so the loops here don't need to worry about awkward look-aheads and the
+% like). Then we split into the different paths.
+%
+% The code here needs to be \texttt{f}-type expandable to deal with the
+% situation where case changing is applied in running text. There, we
+% might have case changing as a document command and the text containing
+% other non-expandable document commands.
+% \begin{verbatim}
+% \cs_set_eq:NN \MakeLowercase \text_lowercase
+% ...
+% \MakeLowercase{\enquote*{A} text}
+% \end{verbatim}
+% If we use an \texttt{e}-type expansion and wrap each token in
+% \cs{exp_not:n}, that would explode: the document command grabs
+% \cs{exp_not:n} as an argument, and things go badly wrong. So we have to
+% wrap the entire result in exactly one \cs{exp_not:n}, or rather in the
+% kernel version.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case:nnn #1#2#3
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w
+ \exp_args:Ne \@@_change_case_aux:nnn
+ { \text_expand:n {#3} }
+ {#1} {#2}
+ }
+ }
+\cs_new:Npn \@@_change_case_aux:nnn #1#2#3
+ {
+ \group_align_safe_begin:
+ \@@_change_case_loop:nnw {#2} {#3} #1
+ \q_recursion_tail \q_recursion_stop
+ \@@_change_case_result:n { }
+ }
+% \end{macrocode}
+% As for expansion, collect up the tokens for future use.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_store:n #1
+ { \@@_change_case_store:nw {#1} }
+\cs_generate_variant:Nn \@@_change_case_store:n { o , e , V , v }
+\cs_new:Npn \@@_change_case_store:nw #1#2 \@@_change_case_result:n #3
+ { #2 \@@_change_case_result:n { #3 #1 } }
+\cs_new:Npn \@@_change_case_end:w #1 \@@_change_case_result:n #2
+ {
+ \group_align_safe_end:
+ \exp_end:
+ #2
+ }
+% \end{macrocode}
+% The main loop is the standard \texttt{tl action} type.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_loop:nnw #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_N_type:nnN }
+ {
+ \tl_if_head_is_group:nTF {#3}
+ { \use:c { @@_change_case_group_ #1 :nnn } }
+ { \@@_change_case_space:nnw }
+ }
+ {#1} {#2} #3 \q_recursion_stop
+ }
+\cs_new:Npn \@@_change_case_break:w #1 \q_recursion_tail \q_recursion_stop
+ {
+ \@@_change_case_store:n {#1}
+ \@@_change_case_end:w
+ }
+% \end{macrocode}
+% For a group, we \emph{could} worry about whether this contains a character
+% or not. However, that would make life very complex for little gain: exactly
+% what a first character is is rather weakly-defined anyway. So if there is
+% a group, we simply assume that a character has been seen, and for title
+% case we switch to the \enquote{rest of the tokens} situation. To avoid
+% having too much testing, we use a two-step process here to allow the
+% titlecase functions to be separate.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_group_lower:nnn #1#2#3
+ {
+ \@@_change_case_store:o
+ {
+ \exp_after:wN
+ {
+ \exp:w
+ \@@_change_case_aux:nnn {#3} {#1} {#2}
+ }
+ }
+ \@@_change_case_loop:nnw {#1} {#2}
+ }
+\cs_new_eq:NN \@@_change_case_group_upper:nnn
+ \@@_change_case_group_lower:nnn
+\cs_new:Npn \@@_change_case_group_title:nnn #1#2#3
+ {
+ \@@_change_case_store:o
+ {
+ \exp_after:wN
+ {
+ \exp:w
+ \@@_change_case_aux:nnn {#3} {#1} {#2}
+ }
+ }
+ \@@_change_case_loop:nnw { lower } {#2}
+ }
+\cs_new:Npn \@@_change_case_group_titleonly:nnn #1#2#3
+ {
+ \@@_change_case_store:o
+ {
+ \exp_after:wN
+ {
+ \exp:w
+ \@@_change_case_aux:nnn {#3} {#1} {#2}
+ }
+ }
+ \@@_change_case_break:w
+ }
+\use:x
+ {
+ \cs_new:Npn \exp_not:N \@@_change_case_space:nnw ##1##2 \c_space_tl
+ }
+ {
+ \@@_change_case_store:n { ~ }
+ \@@_change_case_loop:nnw {#1} {#2}
+ }
+% \end{macrocode}
+% The first step of handling \texttt{N}-type tokens is to filter out the
+% end-of-loop. That has to be done separately from the first real step
+% as otherwise we pick up the wrong delimiter. The loop here is the same
+% as the \texttt{expand} one, just passing the additional data long. If no
+% close-math token is found then the final clean-up is forced
+% (i.e.~there is no assumption of \enquote{well-behaved} input in terms of
+% math mode).
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_N_type:nnN #1#2#3
+ {
+ \quark_if_recursion_tail_stop_do:Nn #3
+ { \@@_change_case_end:w }
+ \@@_change_case_N_type_aux:nnN {#1} {#2} #3
+ }
+\cs_new:Npn \@@_change_case_N_type_aux:nnN #1#2#3
+ {
+ \exp_args:NV \@@_change_case_N_type:nnnN
+ \l_text_math_delims_tl {#1} {#2} #3
+ }
+\cs_new:Npn \@@_change_case_N_type:nnnN #1#2#3#4
+ {
+ \@@_change_case_math_search:nnNNN {#2} {#3} #4 #1
+ \q_recursion_tail \q_recursion_tail
+ \q_recursion_stop
+ }
+\cs_new:Npn \@@_change_case_math_search:nnNNN #1#2#3#4#5
+ {
+ \quark_if_recursion_tail_stop_do:Nn #4
+ { \@@_change_case_cs_check:nnN {#1} {#2} #3 }
+ \token_if_eq_meaning:NNTF #3 #4
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ {
+ \@@_change_case_store:n {#3}
+ \@@_change_case_math_loop:nnNw {#1} {#2} #5
+ }
+ }
+ { \@@_change_case_math_search:nnNNN {#1} {#2} #3 }
+ }
+\cs_new:Npn \@@_change_case_math_loop:nnNw #1#2#3#4 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_math_N_type:nnNN }
+ {
+ \tl_if_head_is_group:nTF {#4}
+ { \@@_change_case_math_group:nnNn }
+ { \@@_change_case_math_space:nnNw }
+ }
+ {#1} {#2} #3 #4 \q_recursion_stop
+ }
+\cs_new:Npn \@@_change_case_math_N_type:nnNN #1#2#3#4
+ {
+ \quark_if_recursion_tail_stop_do:Nn #4
+ { \@@_change_case_end:w }
+ \@@_change_case_store:n {#4}
+ \token_if_eq_meaning:NNTF #4 #3
+ { \@@_change_case_loop:nnw {#1} {#2} }
+ { \@@_change_case_math_loop:nnNw {#1} {#2} #3 }
+ }
+\cs_new:Npn \@@_change_case_math_group:nnNn #1#2#3#4
+ {
+ \@@_change_case_store:n { {#4} }
+ \@@_change_case_math_loop:nnNw {#1} {#2} #3
+ }
+\use:x
+ {
+ \cs_new:Npn \exp_not:N \@@_change_case_math_space:nnNw ##1##2##3
+ \c_space_tl
+ }
+ {
+ \@@_change_case_store:n { ~ }
+ \@@_change_case_math_loop:nnNw {#1} {#2} #3
+ }
+% \end{macrocode}
+% Once potential math-mode cases are filtered out the next stage is to
+% test if the token grabbed is a control sequence: the two routes the code
+% may take are then very different.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_cs_check:nnN #1#2#3
+ {
+ \token_if_cs:NTF #3
+ { \@@_change_case_exclude:nnN }
+ { \use:c { @@_change_case_char_ #1 :nnN } }
+ {#1} {#2} #3
+ }
+% \end{macrocode}
+% To deal with a control sequence there is first a need to test if it is
+% on the list which indicate that case changing should be skipped. That's
+% done using a loop as for the other special cases. If a hit is found then
+% the argument is grabbed and passed through as-is.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_exclude:nnN #1#2#3
+ {
+ \exp_args:Ne \@@_change_case_exclude:nnnN
+ {
+ \exp_not:V \l_text_math_arg_tl
+ \exp_not:V \l_text_case_exclude_arg_tl
+ }
+ {#1} {#2} #3
+ }
+\cs_new:Npn \@@_change_case_exclude:nnnN #1#2#3#4
+ {
+ \@@_change_case_exclude:nnNN {#2} {#3} #4 #1
+ \q_recursion_tail \q_recursion_stop
+ }
+\cs_new:Npn \@@_change_case_exclude:nnNN #1#2#3#4
+ {
+ \quark_if_recursion_tail_stop_do:Nn #4
+ { \use:c { @@_change_case_letterlike_ #1 :nnN } {#1} {#2} #3 }
+ \cs_if_eq:NNTF #3 #4
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ { \@@_change_case_exclude:nnNn {#1} {#2} #3 }
+ }
+ { \@@_change_case_exclude:nnNN {#1} {#2} #3 }
+ }
+\cs_new:Npn \@@_change_case_exclude:nnNn #1#2#3#4
+ {
+ \@@_change_case_store:n { #3 {#4} }
+ \@@_change_case_loop:nnw {#1} {#2}
+ }
+% \end{macrocode}
+% Letter-like commands may still be present: they are set up using a simple
+% lookup approach, so can easily be handled with no loop. If there is no
+% hit, we are at the end of the process: we loop around. Letter-like chars
+% are all available only in upper- and lowercase, so titlecasing maps to the
+% uppercase version.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_letterlike_lower:nnN #1#2#3
+ { \@@_change_case_letterlike:nnnnN {#1} {#1} {#1} {#2} #3 }
+\cs_new_eq:NN \@@_change_case_letterlike_upper:nnN
+ \@@_change_case_letterlike_lower:nnN
+\cs_new:Npn \@@_change_case_letterlike_title:nnN #1#2#3
+ { \@@_change_case_letterlike:nnnnN { upper } { lower } {#1} {#2} #3 }
+\cs_new:Npn \@@_change_case_letterlike_titleonly:nnN #1#2#3
+ { \@@_change_case_letterlike:nnnnN { upper } { end } {#1} {#2} #3 }
+\cs_new:Npn \@@_change_case_letterlike:nnnnN #1#2#3#4#5
+ {
+ \cs_if_exist:cTF { c_@@_ #1 case_ \token_to_str:N #5 _tl }
+ {
+ \@@_change_case_store:v
+ { c_@@_ #1 case_ \token_to_str:N #5 _tl }
+ \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#4}
+ }
+ {
+ \@@_change_case_store:n {#5}
+ \cs_if_exist:cTF
+ {
+ c_@@_
+ \str_if_eq:nnTF {#1} { lower } { upper } { lower }
+ case_ \token_to_str:N #5 _tl
+ }
+ { \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#4} }
+ { \@@_change_case_loop:nnw {#3} {#4} }
+ }
+ }
+% \end{macrocode}
+% For upper- and lowercase changes, once we get to this stage there are only
+% a couple of questions remaining: is there a language-specific mapping and
+% is there the special case of a terminal sigma. If not, then we pass to
+% a simple character mapping.
+% \begin{macrocode}
+\cs_new:Npx \@@_change_case_char_lower:nnN #1#2#3
+ {
+ \exp_not:N \cs_if_exist_use:cF { @@_change_case_lower_ #2 :nnnN }
+ {
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ { \exp_not:N \@@_change_case_lower_sigma:nnnN }
+ { \exp_not:N \@@_change_case_char:nnnN }
+ }
+ {#1} {#1} {#2} #3
+ }
+\cs_new:Npn \@@_change_case_char_upper:nnN #1#2#3
+ {
+ \cs_if_exist_use:cF { @@_change_case_upper_ #2 :nnnN }
+ { \@@_change_case_char:nnnN }
+ {#1} {#1} {#2} #3
+ }
+% \end{macrocode}
+% If the current character is an uppercase sigma, the a check is made on the
+% next item in the input. If it is \texttt{N}-type and not a control sequence
+% then there is a look-ahead phase: the logic here is simply based on letters.
+% The one exception is Dutch: see below.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_lower_sigma:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } = { "03A3 }
+ { \@@_change_case_lower_sigma:nnNw {#2} {#3} #4 }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+ \cs_new:Npn \@@_change_case_lower_sigma:nnNw #1#2#3#4 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_lower_sigma:NnnN #3 }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "03C2 } { \@@_char_catcode:N #3 } }
+ \@@_change_case_loop:nnw
+ }
+ {#1} {#2} #4 \q_recursion_stop
+ }
+ \cs_new:Npn \@@_change_case_lower_sigma:NnnN #1#2#3#4
+ {
+ \@@_change_case_store:e
+ {
+ \token_if_letter:NTF #4
+ { \char_generate:nn { "03C3 } { \@@_char_catcode:N #1 } }
+ { \char_generate:nn { "03C2 } { \@@_char_catcode:N #1 } }
+ }
+ \@@_change_case_loop:nnw {#2} {#3} #4
+ }
+ }
+% \end{macrocode}
+% For titlecasing, we need to fully expand the new character to see if it
+% is a letter (or active) But that means looking ahead in the $8$-bit case, so
+% we have to grab the required tokens up-front. Life is a lot easier for Unicode
+% \TeX{}'s, where we just have one token to worry about. The one wrinkle here
+% is that for look-ahead we'd get into trouble: luckily, only Dutch has that
+% issue.
+% \begin{macrocode}
+\cs_new:Npx \@@_change_case_char_title:nnN #1#2#3
+ {
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ { \exp_not:N \token_if_letter:NTF #3 }
+ {
+ \exp_not:N \bool_lazy_or:nnTF
+ { \exp_not:N \token_if_letter_p:N #3 }
+ { \exp_not:N \token_if_active_p:N #3 }
+ }
+ { \exp_not:N \use:c { @@_change_case_char_ #1 :nN } }
+ { \exp_not:N \@@_change_case_char_title:nnnN { title } {#1} }
+ {#2} #3
+ }
+\cs_new_eq:NN \@@_change_case_char_titleonly:nnN
+ \@@_change_case_char_title:nnN
+\cs_new:Npn \@@_change_case_char_title:nN #1#2
+ { \@@_change_case_char_title:nnnN { title } { lower } {#1} #2 }
+\cs_new:Npn \@@_change_case_char_titleonly:nN #1#2
+ { \@@_change_case_char_title:nnnN { title } { end } {#1} #2 }
+\cs_new:Npn \@@_change_case_char_title:nnnN #1#2#3#4
+ {
+ \cs_if_exist_use:cF { @@_change_case_title_ #3 :nnnN }
+ {
+ \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnN }
+ { \@@_change_case_char:nnnN }
+ }
+ {#1} {#2} {#3} #4
+ }
+% \end{macrocode}
+% For Unicode engines we can handle all characters directly. However, for
+% the $8$-bit engines the aim is to deal with (a subset of) Unicode (UTF-8)
+% input. They deal with that by making the upper half of the range active,
+% so we look for that and if found work out how many UTF-8 octets there
+% are to deal with. Those can then be grabbed to reconstruct the full
+% Unicode character, which is then used in a lookup. (As will become
+% obvious below, there is no intention here of covering all of Unicode.)
+% \begin{macrocode}
+\bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_char:nnnN #1#2#3#4
+ {
+ \@@_change_case_store:e
+ { \use:c { char_ #1 case :N } #4 }
+ \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#3}
+ }
+ }
+ {
+ \cs_new:Npn \@@_change_case_char:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } > { "80 }
+ {
+ \int_compare:nNnTF { `#4 } < { "E0 }
+ { \@@_change_case_char_UTFviii:nnnNN }
+ {
+ \int_compare:nNnTF { `#4 } < { "F0 }
+ { \@@_change_case_char_UTFviii:nnnNNN }
+ { \@@_change_case_char_UTFviii:nnnNNNN }
+ }
+ {#1} {#2} {#3} #4
+ }
+ {
+ \@@_change_case_store:e{ \use:c { char_ #1 case :N } #4 }
+ \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#3}
+ }
+ }
+ \cs_new:Npn \@@_change_case_char_UTFviii:nnnNN #1#2#3#4#5
+ { \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5} }
+ \cs_new:Npn \@@_change_case_char_UTFviii:nnnNNN #1#2#3#4#5#6
+ { \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5#6} }
+ \cs_new:Npn \@@_change_case_char_UTFviii:nnnNNNNN #1#2#3#4#5#6#7
+ { \@@_change_case_char_UTFviii:nnnn {#1} {#2} {#3} {#4#5#6#7} }
+ \cs_new:Npn \@@_change_case_char_UTFviii:nnnn #1#2#3#4
+ {
+ \cs_if_exist:cTF { c_@@_ #1 case_ \tl_to_str:n {#4} _tl }
+ {
+ \@@_change_case_store:v
+ { c_@@_ #1 case_ \tl_to_str:n {#4} _tl }
+ }
+ { \@@_change_case_store:n {#4} }
+ \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#3}
+ }
+ }
+\cs_new:Npn \@@_change_case_char_next_lower:nn #1#2
+ { \@@_change_case_loop:nnw {#1} {#2} }
+\cs_new_eq:NN \@@_change_case_char_next_upper:nn
+ \@@_change_case_char_next_lower:nn
+\cs_new_eq:NN \@@_change_case_char_next_title:nn
+ \@@_change_case_char_next_lower:nn
+\cs_new_eq:NN \@@_change_case_char_next_titleonly:nn
+ \@@_change_case_char_next_lower:nn
+\cs_new:Npn \@@_change_case_char_next_end:nn #1#2
+ { \@@_change_case_break:w }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_change_case_upper_de-alt:nnnN}
+% A simple alternative version for German.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:cpn { @@_change_case_upper_de-alt:nnnN } #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } = { "00DF }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "1E9E } { \@@_char_catcode:N #4 } }
+ \use:c { @@_change_case_char_next_ #2 :nn }
+ {#2} {#3}
+ }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_change_case_upper_el:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el:nnnn}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_aux:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_upper_el_loop:nnw}
+% \begin{macro}[EXP]{\@@_change_case_upper_el:nnN}
+% \begin{macro}[EXP]{\@@_change_case_if_greek:nTF}
+% For Greek uppercasing, we need to know if characters \emph{in the Greek
+% range} have accents. That means doing a \textsc{nfd} conversion first, then
+% starting a search. As described by the Unicode \textsc{cldr}, Greek accents
+% need to be found \emph{after} any U+0308 (diaeresis) and are done in two
+% groups to allow for the canonical ordering.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_upper_el:nnnN #1#2#3#4
+ {
+ \@@_change_case_if_greek:nTF { `#4 }
+ {
+ \exp_args:Ne \@@_change_case_upper_el:nnnn
+ { \char_to_nfd:N #4 } {#1} {#2} {#3}
+ }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+ \cs_new:Npn \@@_change_case_upper_el:nnnn #1#2#3#4
+ { \@@_change_case_upper_el_aux:nnnN {#2} {#3} {#4} #1 }
+ \cs_new:Npn \@@_change_case_upper_el_aux:nnnN #1#2#3#4
+ {
+ \@@_change_case_store:e { \use:c { char_ #1 case:N } #4 }
+ \@@_change_case_upper_el_loop:nnw {#2} {#3}
+ }
+ \cs_new:Npn \@@_change_case_upper_el_loop:nnw
+ #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_upper_el:nnN }
+ { \@@_change_case_loop:nnw }
+ {#1} {#2} #3 \q_recursion_stop
+ }
+% \end{macrocode}
+% In addition to the Greek accents, we list three cases here where an
+% accent outside the Greek range has a \text{nfd} that would make it
+% equivalent. That includes U+0344, which has to insert U+0308.
+% \begin{macrocode}
+ \cs_new:Npn \@@_change_case_upper_el:nnN #1#2#3
+ {
+ \token_if_cs:NTF #3
+ { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ {
+ \int_compare:nNnTF { `#3 } = { "0308 }
+ {
+ \@@_change_case_store:n {#3}
+ \@@_change_case_upper_el_loop:nnw {#1} {#2}
+ }
+ {
+ \bool_lazy_any:nTF
+ {
+ { \int_compare_p:nNn { `#3 } = { "0300 } }
+ { \int_compare_p:nNn { `#3 } = { "0301 } }
+ { \int_compare_p:nNn { `#3 } = { "0304 } }
+ { \int_compare_p:nNn { `#3 } = { "0306 } }
+ { \int_compare_p:nNn { `#3 } = { "0308 } }
+ { \int_compare_p:nNn { `#3 } = { "0313 } }
+ { \int_compare_p:nNn { `#3 } = { "0314 } }
+ { \int_compare_p:nNn { `#3 } = { "0342 } }
+ { \int_compare_p:nNn { `#3 } = { "0340 } }
+ { \int_compare_p:nNn { `#3 } = { "0341 } }
+ { \int_compare_p:nNn { `#3 } = { "0343 } }
+ }
+ { \@@_change_case_upper_el_loop:nnw {#1} {#2} }
+ {
+ \int_compare:nNnTF { `#3 } = { "0344 }
+ {
+ \@@_change_case_store:e
+ {
+ \char_generate:nn { "0308 }
+ { \@@_char_catcode:N #3 }
+ }
+ \@@_change_case_upper_el_loop:nnw {#1} {#2}
+ }
+ {
+ \int_compare:nNnTF { `#3 } = { "0345 }
+ { \@@_change_case_loop:nnw {#1} {#2} }
+ { \@@_change_case_loop:nnw {#1} {#2} #3 }
+ }
+ }
+ }
+ }
+ }
+ \prg_new_conditional:Npnn \@@_change_case_if_greek:n #1 { TF }
+ {
+ \if_int_compare:w #1 < "0370 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \if_int_compare:w #1 > "03FF \exp_stop_f:
+ \if_int_compare:w #1 < "1F00 \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \if_int_compare:w #1 > "1FFF \exp_stop_f:
+ \prg_return_false:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ \else:
+ \prg_return_true:
+ \fi:
+ \fi:
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}[EXP]{\@@_change_case_title_el:nnnN}
+% Titlecasing retains accents, but to prevent the uppercasing code
+% from kicking in, there has to be an explicit function here.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_title_el:nnnN #1#2#3#4
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_change_cases_lower_lt:nnnN ,
+% \@@_change_cases_lower_lt_auxi:nnnN ,
+% \@@_change_cases_lower_lt_auxii:nnnN
+% }
+% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnw}
+% \begin{macro}[rEXP]{\@@_change_case_lower_lt:nnN}
+% For Lithuanian, the issue to be dealt with is dots over lower case
+% letters: these should be present if there is another accent. The first step
+% is a simple match attempt: look for the three uppercase accented letters
+% which should gain a dot-above char in their lowercase form.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_lower_lt:nnnN #1#2#3#4
+ {
+ \exp_args:Ne \@@_change_case_lower_lt_auxi:nnnN
+ {
+ \int_case:nn { `#4 }
+ {
+ { "00CC } { "0300 }
+ { "00CD } { "0301 }
+ { "0128 } { "0303 }
+ }
+ }
+ {#2} {#3} #4
+ }
+% \end{macrocode}
+% If there was a hit, output the result with the dot-above and move on.
+% Otherwise, look for one of the three letters that can take a combining
+% accent: I, J and I-ogonek.
+% \begin{macrocode}
+ \cs_new:Npn \@@_change_case_lower_lt_auxi:nnnN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
+ {
+ \exp_args:Ne \@@_change_case_lower_lt_auxii:nnnN
+ {
+ \int_case:nn { `#4 }
+ {
+ { "0049 } { "0069 }
+ { "004A } { "006A }
+ { "012E } { "012F }
+ }
+ }
+ {#2} {#3} #4
+ }
+ {
+ \@@_change_case_store:e
+ {
+ \char_generate:nn { "0069 } { \@@_char_catcode:N #4 }
+ \char_generate:nn { "0307 } { \@@_char_catcode:N #4 }
+ \char_generate:nn {#1} { \@@_char_catcode:N #4 }
+ }
+ \@@_change_case_loop:nnw {#2} {#3}
+ }
+ }
+% \end{macrocode}
+% Again, branch depending on a hit. If there is one, we output the character
+% then need to look for a combining accent: as usual, we need to be aware of
+% the loop situation.
+% \begin{macrocode}
+ \cs_new:Npn \@@_change_case_lower_lt_auxii:nnnN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
+ { \@@_change_case_lower_sigma:nnnN {#2} {#2} {#3} #4 }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn {#1} { \@@_char_catcode:N #4 } }
+ \@@_change_case_lower_lt:nnw {#2} {#3}
+ }
+ }
+ \cs_new:Npn \@@_change_case_lower_lt:nnw #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_lower_lt:nnN }
+ { \@@_change_case_loop:nnw }
+ {#1} {#2} #3 \q_recursion_stop
+ }
+ \cs_new:Npn \@@_change_case_lower_lt:nnN #1#2#3
+ {
+ \bool_lazy_and:nnT
+ { ! \token_if_cs_p:N #3 }
+ {
+ \bool_lazy_any_p:n
+ {
+ { \int_compare_p:nNn { `#3 } = { "0300 } }
+ { \int_compare_p:nNn { `#3 } = { "0301 } }
+ { \int_compare_p:nNn { `#3 } = { "0303 } }
+ }
+ }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0307 } { \@@_char_catcode:N #3 } }
+ }
+ \@@_change_case_loop:nnw {#1} {#2} #3
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}[EXP]
+% {
+% \@@_change_cases_upper_lt:nnnN ,
+% \@@_change_cases_upper_lt_aux:nnnN
+% }
+% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnw}
+% \begin{macro}[rEXP]{\@@_change_case_upper_lt:nnN}
+% The uppercasing version: first find i/j/i-ogonek, then look for the
+% combining char: drop it if present.
+% \begin{macrocode}
+\bool_lazy_or:nnT
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_upper_lt:nnnN #1#2#3#4
+ {
+ \exp_args:Ne \@@_change_case_upper_lt_aux:nnnN
+ {
+ \int_case:nn { `#4 }
+ {
+ { "0069 } { "0049 }
+ { "006A } { "004A }
+ { "012F } { "012E }
+ }
+ }
+ {#2} {#3} #4
+ }
+ \cs_new:Npn \@@_change_case_upper_lt_aux:nnnN #1#2#3#4
+ {
+ \tl_if_blank:nTF {#1}
+ { \@@_change_case_char:nnnN { upper } {#2} {#3} #4 }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn {#1} { \@@_char_catcode:N #4 } }
+ \@@_change_case_upper_lt:nnw {#2} {#3}
+ }
+ }
+ \cs_new:Npn \@@_change_case_upper_lt:nnw #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_upper_lt:nnN }
+ { \use:c { @@_change_case_char_next_ #1 :nn } }
+ {#1} {#2} #3 \q_recursion_stop
+ }
+ \cs_new:Npn \@@_change_case_upper_lt:nnN #1#2#3
+ {
+ \bool_lazy_and:nnTF
+ { ! \token_if_cs_p:N #3 }
+ { \int_compare_p:nNn { `#3 } = { "0307 } }
+ { \use:c { @@_change_case_char_next_ #1 :nn } {#1} {#2} }
+ { \use:c { @@_change_case_char_next_ #1 :nn } {#1} {#2} #3 }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_change_case_title_nl:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_title_nl:nnw}
+% \begin{macro}[EXP]{\@@_change_case_title_nl:nnN}
+% For Dutch, there is a single look-ahead test for \texttt{ij} when
+% title casing. If the appropriate letters are found, produce \texttt{IJ}
+% and gobble the \texttt{j}/\texttt{J}.
+% \begin{macrocode}
+\cs_new:Npn \@@_change_case_title_nl:nnnN #1#2#3#4
+ {
+ \bool_lazy_or:nnTF
+ { \int_compare_p:nNn { `#4 } = { "0049 } }
+ { \int_compare_p:nNn { `#4 } = { "0069 } }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0049 } { \@@_char_catcode:N #4 } }
+ \@@_change_case_title_nl:nnw {#2} {#3}
+ }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+\cs_new:Npn \@@_change_case_title_nl:nnw #1#2#3 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#3}
+ { \@@_change_case_title_nl:nnN }
+ { \use:c { @@_change_case_char_next_ #1 :nn } }
+ {#1} {#2} #3 \q_recursion_stop
+ }
+\cs_new:Npn \@@_change_case_title_nl:nnN #1#2#3
+ {
+ \bool_lazy_and:nnTF
+ { ! \token_if_cs_p:N #3 }
+ {
+ \bool_lazy_or_p:nn
+ { \int_compare_p:nNn { `#3 } = { "004A } }
+ { \int_compare_p:nNn { `#3 } = { "006A } }
+ }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "004A } { \@@_char_catcode:N #3 } }
+ \use:c { @@_change_case_char_next_ #1 :nn } {#1} {#2}
+ }
+ { \use:c { @@_change_case_char_next_ #1 :nn } {#1} {#2} #3 }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnN}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnNw}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnN}
+% \begin{macro}[EXP]{\@@_change_case_lower_tr:nnnNN}
+% The Turkic languages need special treatment for dotted-i and dotless-i.
+% The lower casing rule can be expressed in terms of searching first for
+% either a dotless-I or a dotted-I. In the latter case the mapping is
+% easy, but in the former there is a second stage search.
+% \begin{macrocode}
+\bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_new:Npn \@@_change_case_lower_tr:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } = { "0049 }
+ { \@@_change_case_lower_tr:nnNw {#1} {#3} #4 }
+ {
+ \int_compare:nNnTF { `#4 } = { "0130 }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0069 } { \@@_char_catcode:N #4 } }
+ \@@_change_case_loop:nnw {#1} {#3}
+ }
+ { \@@_change_case_lower_sigma:nnnN {#1} {#2} {#3} #4 }
+ }
+ }
+% \end{macrocode}
+% After a dotless-I there may be a dot-above character. If there is then
+% a dotted-i should be produced, otherwise output a dotless-i. When the
+% combination is found both the dotless-I and the dot-above char have to
+% be removed from the input.
+% \begin{macrocode}
+ \cs_new:Npn \@@_change_case_lower_tr:nnNw #1#2#3#4 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#4}
+ { \@@_change_case_lower_tr:nnN }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0131 } { \@@_char_catcode:N #3 } }
+ \@@_change_case_loop:nnw
+ }
+ {#1} {#2} #4 \q_recursion_stop
+ }
+ \cs_new:Npn \@@_change_case_lower_tr:nnN #1#2#3
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_cs_p:N #3 }
+ { ! \int_compare_p:nNn { `#3 } = { "0307 } }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0131 } { \@@_char_catcode:N #3 } }
+ \@@_change_case_loop:nnw {#1} {#2} #3
+ }
+ {
+ \@@_change_case_store:e
+ { \char_generate:nn { "0069 } { \@@_char_catcode:N #3 } }
+ \@@_change_case_loop:nnw {#1} {#2}
+ }
+ }
+ }
+% \end{macrocode}
+% For $8$-bit engines, dot-above is not available so there is a simple
+% test for an upper-case I. Then we can look for the UTF-8 representation of
+% an upper case dotted-I without the combining char. If it's not there,
+% preserve the UTF-8 sequence as-is. With $8$bit engines, we cannot
+% completely preserve category codes, so we have to make some assumptions:
+% output a \enquote{normal} \texttt{i} for the dotted case. As the original
+% character here is catcode-$13$, we have to make a choice about handling
+% of |i|: generate a \enquote{normal} one.
+% \begin{macrocode}
+ {
+ \cs_new:Npn \@@_change_case_lower_tr:nnnN #1#2#3#4
+ {
+ \int_compare:nNnTF { `#4 } = { "0049 }
+ {
+ \@@_change_case_store:V \c_@@_dotless_i_tl
+ \@@_change_case_loop:nnw {#1} {#3}
+ }
+ {
+ \int_compare:nNnTF { `#4 } = { "00C4 }
+ { \@@_change_case_lower_tr:nnnNN {#1} {#2} {#3} #4 }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+ }
+ \cs_new:Npn \@@_change_case_lower_tr:nnnNN #1#2#3#4#5
+ {
+ \int_compare:nNnTF { `#5 } = { "00B0 }
+ {
+ \@@_change_case_store:e
+ {
+ \char_generate:nn { "0069 }
+ { \char_value_catcode:n { "0069 } }
+ }
+ \@@_change_case_loop:nnw {#1} {#3}
+ }
+ { \@@_change_case_char:nnnN {#1} {#2} {#3} #4#5 }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}[EXP]{\@@_change_case_upper_tr:nnnN}
+% Uppercasing is easier: just one exception with no context.
+% \begin{macrocode}
+\cs_new:Npx \@@_change_case_upper_tr:nnnN #1#2#3#4
+ {
+ \exp_not:N \int_compare:nNnTF { `#4 } = { "0069 }
+ {
+ \bool_lazy_or:nnTF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \exp_not:N \@@_change_case_store:e
+ {
+ \exp_not:N \char_generate:nn { "0130 }
+ { \exp_not:N \@@_char_catcode:N #4 }
+ }
+ }
+ {
+ \exp_not:N \@@_change_case_store:V
+ \exp_not:N \c_@@_dotted_I_tl
+ }
+ \exp_not:N \use:c { @@_change_case_char_next_ #2 :nn } {#2} {#3}
+ }
+ { \exp_not:N \@@_change_case_char:nnnN {#1} {#2} {#3} #4 }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {\@@_change_case_lower_az:nnnN, \@@_change_case_upper_az:nnnN}
+% Straight copies.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_change_case_lower_az:nnnN
+ \@@_change_case_lower_tr:nnnN
+\cs_new_eq:NN \@@_change_case_upper_az:nnnN
+ \@@_change_case_upper_tr:nnnN
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Case changing data for $8$-bit engines}
+%
+% \begin{variable}
+% {
+% \c_@@_dotless_i_tl ,
+% \c_@@_dotted_I_tl ,
+% \c_@@_i_ogonek_tl ,
+% \c_@@_I_ogonek_tl
+% }
+% For cases where there is an $8$-bit option in the |T1| font set up,
+% a variant is provided in both cases.
+% \begin{macrocode}
+\group_begin:
+ \bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_set_protected:Npn \@@_tmp:w #1#2
+ {
+ \group_begin:
+ \cs_set_protected:Npn \@@_tmp:w ##1##2##3##4
+ {
+ \tl_const:Nx #1
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##1} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {##2} { 13 }
+ }
+ }
+ \use:x
+ { \@@_tmp:w \char_to_utfviii_bytes:n { "#2 } }
+ \group_end:
+ }
+ \@@_tmp:w \c_@@_dotless_i_tl { 0131 }
+ \@@_tmp:w \c_@@_dotted_I_tl { 0130 }
+ \@@_tmp:w \c_@@_i_ogonek_tl { 012F }
+ \@@_tmp:w \c_@@_I_ogonek_tl { 012E }
+ }
+\group_end:
+% \end{macrocode}
+% \end{variable}
+%
+% For $8$-bit engines we now need to define the case-change data for
+% the multi-octet mappings. These need a list of what code points are
+% doable in |T1| so the list is hard coded (there's no saving in loading
+% the mappings dynamically). All of the straight-forward ones have two
+% octets, so that is taken as read.
+% \begin{macrocode}
+\group_begin:
+ \bool_lazy_or:nnF
+ { \sys_if_engine_luatex_p: }
+ { \sys_if_engine_xetex_p: }
+ {
+ \cs_set_protected:Npn \@@_loop:nn #1#2
+ {
+ \quark_if_recursion_tail_stop:n {#1}
+ \use:x
+ {
+ \@@_tmp:w
+ \char_to_utfviii_bytes:n { "#1 }
+ \char_to_utfviii_bytes:n { "#2 }
+ }
+ \@@_loop:nn
+ }
+ \cs_set_protected:Npn \@@_tmp:nnnn #1#2#3#4#5
+ {
+ \tl_const:cx
+ {
+ c_@@_ #1 case_
+ \char_generate:nn {#2} { 12 }
+ \char_generate:nn {#3} { 12 }
+ _tl
+ }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#4} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#5} { 13 }
+ }
+ }
+ \cs_set_protected:Npn \@@_tmp:w #1#2#3#4#5#6#7#8
+ {
+ \tl_const:cx
+ {
+ c_@@_lowercase_
+ \char_generate:nn {#1} { 12 }
+ \char_generate:nn {#2} { 12 }
+ _tl
+ }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#5} { 13 }
+ \exp_after:wN \exp_after:wN \exp_after:wN
+ \exp_not:N \char_generate:nn {#6} { 13 }
+ }
+ \@@_tmp:nnnn { upper } {#5} {#6} {#1} {#2}
+ \@@_tmp:nnnn { title } {#5} {#6} {#1} {#2}
+ }
+ \@@_loop:nn
+ { 00C0 } { 00E0 }
+ { 00C1 } { 00E1 }
+ { 00C2 } { 00E2 }
+ { 00C3 } { 00E3 }
+ { 00C4 } { 00E4 }
+ { 00C5 } { 00E5 }
+ { 00C6 } { 00E6 }
+ { 00C7 } { 00E7 }
+ { 00C8 } { 00E8 }
+ { 00C9 } { 00E9 }
+ { 00CA } { 00EA }
+ { 00CB } { 00EB }
+ { 00CC } { 00EC }
+ { 00CD } { 00ED }
+ { 00CE } { 00EE }
+ { 00CF } { 00EF }
+ { 00D0 } { 00F0 }
+ { 00D1 } { 00F1 }
+ { 00D2 } { 00F2 }
+ { 00D3 } { 00F3 }
+ { 00D4 } { 00F4 }
+ { 00D5 } { 00F5 }
+ { 00D6 } { 00F6 }
+ { 00D8 } { 00F8 }
+ { 00D9 } { 00F9 }
+ { 00DA } { 00FA }
+ { 00DB } { 00FB }
+ { 00DC } { 00FC }
+ { 00DD } { 00FD }
+ { 00DE } { 00FE }
+ { 0100 } { 0101 }
+ { 0102 } { 0103 }
+ { 0104 } { 0105 }
+ { 0106 } { 0107 }
+ { 0108 } { 0109 }
+ { 010A } { 010B }
+ { 010C } { 010D }
+ { 010E } { 010F }
+ { 0110 } { 0111 }
+ { 0112 } { 0113 }
+ { 0114 } { 0115 }
+ { 0116 } { 0117 }
+ { 0118 } { 0119 }
+ { 011A } { 011B }
+ { 011C } { 011D }
+ { 011E } { 011F }
+ { 0120 } { 0121 }
+ { 0122 } { 0123 }
+ { 0124 } { 0125 }
+ { 0128 } { 0129 }
+ { 012A } { 012B }
+ { 012C } { 012D }
+ { 012E } { 012F }
+ { 0132 } { 0133 }
+ { 0134 } { 0135 }
+ { 0136 } { 0137 }
+ { 0139 } { 013A }
+ { 013B } { 013C }
+ { 013E } { 013F }
+ { 0141 } { 0142 }
+ { 0143 } { 0144 }
+ { 0145 } { 0146 }
+ { 0147 } { 0148 }
+ { 014A } { 014B }
+ { 014C } { 014D }
+ { 014E } { 014F }
+ { 0150 } { 0151 }
+ { 0152 } { 0153 }
+ { 0154 } { 0155 }
+ { 0156 } { 0157 }
+ { 0158 } { 0159 }
+ { 015A } { 015B }
+ { 015C } { 015D }
+ { 015E } { 015F }
+ { 0160 } { 0161 }
+ { 0162 } { 0163 }
+ { 0164 } { 0165 }
+ { 0168 } { 0169 }
+ { 016A } { 016B }
+ { 016C } { 016D }
+ { 016E } { 016F }
+ { 0170 } { 0171 }
+ { 0172 } { 0173 }
+ { 0174 } { 0175 }
+ { 0176 } { 0177 }
+ { 0178 } { 00FF }
+ { 0179 } { 017A }
+ { 017B } { 017C }
+ { 017D } { 017E }
+ { 01CD } { 01CE }
+ { 01CF } { 01D0 }
+ { 01D1 } { 01D2 }
+ { 01D3 } { 01D4 }
+ { 01E2 } { 01E3 }
+ { 01E6 } { 01E7 }
+ { 01E8 } { 01E9 }
+ { 01EA } { 01EB }
+ { 01F4 } { 01F5 }
+ { 0218 } { 0219 }
+ { 021A } { 021B }
+ \q_recursion_tail ?
+ \q_recursion_stop
+ \cs_set_protected:Npn \@@_tmp:w #1#2#3
+ {
+ \group_begin:
+ \cs_set_protected:Npn \@@_tmp:w ##1##2##3##4
+ {
+ \tl_const:cx
+ {
+ c_@@_ #3 case_
+ \char_generate:nn {##1} { 12 }
+ \char_generate:nn {##2} { 12 }
+ _tl
+ }
+ {#2}
+ }
+ \use:x
+ { \@@_tmp:w \char_to_utfviii_bytes:n { "#1 } }
+ \group_end:
+ }
+ \@@_tmp:w { 00DF } { SS } { upper }
+ \@@_tmp:w { 00DF } { Ss } { title }
+ \@@_tmp:w { 0131 } { I } { upper }
+ }
+ \group_end:
+% \end{macrocode}
+%
+% The (fixed) look-up mappings for letter-like control sequences.
+% \begin{macrocode}
+\group_begin:
+ \cs_set_protected:Npn \@@_change_case_setup:NN #1#2
+ {
+ \quark_if_recursion_tail_stop:N #1
+ \tl_const:cn { c_@@_lowercase_ \token_to_str:N #1 _tl }
+ { #2 }
+ \tl_const:cn { c_@@_uppercase_ \token_to_str:N #2 _tl }
+ { #1 }
+ \@@_change_case_setup:NN
+ }
+ \@@_change_case_setup:NN
+ \AA \aa
+ \AE \ae
+ \DH \dh
+ \DJ \dj
+ \IJ \ij
+ \L \l
+ \NG \ng
+ \O \o
+ \OE \oe
+ \SS \ss
+ \TH \th
+ \q_recursion_tail ?
+ \q_recursion_stop
+ \tl_const:cn { c_@@_uppercase_ \token_to_str:N \i _tl } { I }
+ \tl_const:cn { c_@@_uppercase_ \token_to_str:N \j _tl } { J }
+\group_end:
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
new file mode 100644
index 0000000000..0efc072cf8
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -0,0 +1,903 @@
+% \iffalse meta-comment
+%
+%% File: l3text.dtx
+%
+% Copyright (C) 2020 The LaTeX3 Project
+%
+% 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
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3text} package: text processing^^A
+% }
+%
+% \author{^^A
+% The \LaTeX3 Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2020-01-12}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{\pkg{l3text} documentation}
+%
+% This module deals with manipulation of (formatted) text; such material is
+% comprised of a restricted set of token list content. The functions provided
+% here concern conversion of textual content for example in case changing,
+% generation of bookmarks and extraction to tags. All of the major functions
+% operate by expansion. Begin-group and end-group tokens in the \meta{text}
+% are normalized and become |{| and |}|, respectively.
+%
+% \subsection{Expanding text}
+%
+% \begin{function}[EXP, added = 2020-01-02]{\text_expand:n}
+% \begin{syntax}
+% \cs{text_expand:n} \Arg{text}
+% \end{syntax}
+% Takes user input \meta{text} and transforms expandable and implicit
+% content to the explicit equivalent. Protected commands (typically
+% formatting) are left in place, and no processing takes place of
+% math mode material (as delimited by pairs given in
+% \cs{l_text_math_delims_tl} or as the argument to commands listed
+% in \cs{l_text_math_arg_tl}). Commands which are neither engine-
+% nor \LaTeX{} protected are expanded exhaustively. Implicit tokens,
+% including implicit groups, are converted to their explicit equivalent.
+% Any commands listed in \cs{l_text_expand_exclude_tl},
+% \cs{l_text_accents_tl} and \cs{l_text_letterlike_tl} are excluded from
+% expansion
+% \end{function}
+%
+% \subsection{Case changing}
+%
+% \begin{function}[EXP, added = 2019-11-20]
+% {
+% \text_lowercase:n, \text_uppercase:n, \text_titlecase:n,
+% \text_titlecase_first:n,
+% \text_lowercase:nn, \text_uppercase:nn, \text_titlecase:nn,
+% \text_titlecase_first:nn
+% }
+% \begin{syntax}
+% \cs{text_uppercase:n} \Arg{tokens}
+% \cs{text_uppercase:nn} \Arg{language} \Arg{tokens}
+% \end{syntax}
+% Takes user input \meta{text} first applies \cs{text_expand}, then
+% transforms the case of character tokens as specified by the
+% function name. The category code of letters are not changed by this
+% process (at least where they can be represented by the engine as a single
+% token: $8$-bit engines may require active characters).
+%
+% Upper- and lowercase have the obvious meanings. Titlecasing may be regarded
+% informally as converting the first character of the \meta{tokens} to
+% uppercase and the rest to lowercase. However, the process is more complex
+% than this as there are some situations where a single lowercase character
+% maps to a special form, for example \texttt{ij} in Dutch which becomes
+% \texttt{IJ}. The \texttt{titlecase_first} variant does not attempt
+% any case changing at all after the first letter has been processed.
+%
+% Importantly, notice that these functions are intended for working with
+% user \emph{text for typesetting}. For case changing programmatic data see
+% the \pkg{l3str} module and discussion there of \cs{str_lowercase:n},
+% \cs{str_uppercase:n} and \cs{str_foldcase:n}.
+%
+% Case changing does not take place within math mode material so for example
+% \begin{verbatim}
+% \text_uppercase:n { Some~text~$y = mx + c$~with~{Braces} }
+% \end{verbatim}
+% becomes
+% \begin{verbatim}
+% SOME TEXT $y = mx + c$ WITH {BRACES}
+% \end{verbatim}
+%
+% The arguments of commands listed in \cs{l_text_case_exclude_arg_tl}
+% are excluded from case changing; the latter are entirely non-textual
+% content (such as labels).
+%
+% As is generally true for \pkg{expl3}, these functions are designed to
+% work with Unicode input only. As such, UTF-8 input is assumed for
+% \emph{all} engines. When used with \XeTeX{} or \LuaTeX{} a full range of
+% Unicode transformations are enabled. Specifically, the standard mappings
+% here follow those defined by the \href{http://www.unicode.org}^^A
+% {Unicode Consortium} in \texttt{UnicodeData.txt} and
+% \texttt{SpecialCasing.txt}. In the case of $8$-bit engines, mappings
+% are provided for characters which can be represented in output typeset
+% using the |T1| font encoding. Thus for example \texttt{ä} can be
+% case-changed using \pdfTeX{}. For \pTeX{} only the ASCII range is
+% covered as the engine treats input outside of this range as east Asian.
+%
+% Language-sensitive conversions are enabled using the \meta{language}
+% argument, and follow Unicode Consortium guidelines. Currently, the
+% languages recognised for special handling are as follows.
+% \begin{itemize}
+% \item Azeri and Turkish (\texttt{az} and \texttt{tr}).
+% The case pairs I/i-dotless and I-dot/i are activated for these
+% languages. The combining dot mark is removed when lowercasing
+% I-dot and introduced when upper casing i-dotless.
+% \item German (\texttt{de-alt}).
+% An alternative mapping for German in which the lowercase
+% \emph{Eszett} maps to a \emph{gro\ss{}es Eszett}.
+% \item Greek (\texttt{el}).
+% Removes accents from Greek letters when uppercasing; titlecasing
+% leaves accents in place.
+% \item Lithuanian (\texttt{lt}).
+% The lowercase letters i and j should retain a dot above when the
+% accents grave, acute or tilde are present. This is implemented for
+% lowercasing of the relevant uppercase letters both when input as
+% single Unicode codepoints and when using combining accents. The
+% combining dot is removed when uppercasing in these cases. Note that
+% \emph{only} the accents used in Lithuanian are covered: the behaviour
+% of other accents are not modified.
+% \item Dutch (\texttt{nl}).
+% Capitalisation of \texttt{ij} at the beginning of titlecased
+% input produces \texttt{IJ} rather than \texttt{Ij}. The output
+% retains two separate letters, thus this transformation \emph{is}
+% available using \pdfTeX{}.
+% \end{itemize}
+% \end{function}
+%
+% \subsection{Control variables}
+%
+% \begin{variable}{\l_text_accents_tl}
+% Lists commands which represent accents, and which are left unchanged
+% by expansion. (Defined only for the \LaTeXe{} package.)
+% \end{variable}
+%
+% \begin{variable}{\l_text_letterlike_tl}
+% Lists commands which represent letters; these are left unchanged by
+% expansion. (Defined only for the \LaTeXe{} package.)
+% \end{variable}
+%
+% \begin{variable}{\l_text_math_arg_tl}
+% Lists commands present in the \meta{text} where the argument of the
+% command should be treated as math mode material. The treatment here is
+% similar to \cs{l_text_math_delims_tl} but for a command rather than
+% paired delimiters.
+% \end{variable}
+%
+% \begin{variable}{\l_text_math_delims_tl}
+% Lists pairs of tokens which delimit (in-line) math mode content; such
+% content \emph{may} be excluded from processing.
+% \end{variable}
+%
+% \begin{variable}{\l_text_expand_exclude_tl}
+% Lists commands which are excluded from expansion. (Defined only for the
+% \LaTeXe{} package.)
+% \end{variable}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3text} implementation}
+%
+% \begin{macrocode}
+%<*initex|package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=text>
+% \end{macrocode}
+%
+% \subsection{Utilities}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_token_to_explicit:N ,
+% \@@_token_to_explicit_char:N ,
+% \@@_token_to_explicit_cs:N ,
+% \@@_token_to_explicit_cs_aux:N
+% }
+% \begin{macro}[EXP]{\@@_token_to_explicit:n}
+% \begin{macro}[EXP]
+% {
+% \@@_token_to_explicit_auxi:w ,
+% \@@_token_to_explicit_auxii:w ,
+% \@@_token_to_explicit_auxiii:w
+% }
+% The idea here is to take a token and ensure that if it's an implicit
+% char, we output the explicit version. Otherwise, the token needs to be
+% unchanged. First, we have to split between control sequences and everything
+% else.
+% \begin{macrocode}
+\group_begin:
+ \char_set_catcode_active:n { 0 }
+ \cs_new:Npn \@@_token_to_explicit:N #1
+ {
+ \if_catcode:w \exp_not:N #1
+ \if_catcode:w \scan_stop: \exp_not:N #1
+ \scan_stop:
+ \else:
+ \exp_not:N ^^@
+ \fi:
+ \exp_after:wN \@@_token_to_explicit_cs:N
+ \else:
+ \exp_after:wN \@@_token_to_explicit_char:N
+ \fi:
+ #1
+ }
+\group_end:
+% \end{macrocode}
+% For control sequences, we can check for macros versus other cases using
+% \cs{if_meaning:w}, then explicitly check for \tn{chardef} and
+% \tn{mathchardef}.
+% \begin{macrocode}
+\cs_new:Npn \@@_token_to_explicit_cs:N #1
+ {
+ \exp_after:wN \if_meaning:w \exp_not:N #1 #1
+ \exp_after:wN \use:nn \exp_after:wN
+ \@@_token_to_explicit_cs_aux:N
+ \else:
+ \exp_after:wN \exp_not:n
+ \fi:
+ {#1}
+ }
+\cs_new:Npn \@@_token_to_explicit_cs_aux:N #1
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_chardef_p:N #1 }
+ { \token_if_mathchardef_p:N #1 }
+ {
+ \char_generate:nn {#1}
+ { \char_value_catcode:n {#1} }
+ }
+ {#1}
+ }
+% \end{macrocode}
+% For character tokens, we need to filter out the implicit characters from
+% those that are explicit. That's done here, then if necessary we work out
+% the category code and generate the char. To avoid issues with alignment
+% tabs, that one is done by elimination rather than looking up the code
+% explicitly. The trick with finding the charcode is that the \TeX{}
+% messages are either \texttt{the \meta{something} character \meta{char}}
+% or \texttt{the \meta{type} \meta{char}}.
+% \begin{macrocode}
+\cs_new:Npn \@@_token_to_explicit_char:N #1
+ {
+ \if:w
+ \if_catcode:w ^ \exp_args:No \str_tail:n { \token_to_str:N #1 } ^
+ \token_to_str:N #1 #1
+ \else:
+ AB
+ \fi:
+ \exp_after:wN \exp_not:n
+ \else:
+ \exp_after:wN \@@_token_to_explicit:n
+ \fi:
+ {#1}
+ }
+\cs_new:Npn \@@_token_to_explicit:n #1
+ {
+ \exp_after:wN \@@_token_to_explicit_auxi:w
+ \int_value:w
+ \if_catcode:w \c_group_begin_token #1 1 \else:
+ \if_catcode:w \c_group_end_token #1 2 \else:
+ \if_catcode:w \c_math_toggle_token #1 3 \else:
+ \if_catcode:w ## #1 6 \else:
+ \if_catcode:w ^ #1 7 \else:
+ \if_catcode:w \c_math_subscript_token #1 8 \else:
+ \if_catcode:w \c_space_token #1 10 \else:
+ \if_catcode:w A #1 11 \else:
+ \if_catcode:w + #1 12 \else:
+ 4 \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi: \fi:
+ \exp_after:wN ;
+ \token_to_meaning:N #1 \q_stop
+ }
+\cs_new:Npn \@@_token_to_explicit_auxi:w #1 ; #2 \q_stop
+ {
+ \char_generate:nn
+ {
+ \if_int_compare:w #1 < 9 \exp_stop_f:
+ \exp_after:wN \@@_token_to_explicit_auxii:w
+ \else:
+ \exp_after:wN \@@_token_to_explicit_auxiii:w
+ \fi:
+ #2
+ }
+ {#1}
+ }
+\exp_last_unbraced:NNNNo \cs_new:Npn \@@_token_to_explicit_auxii:w
+ #1 { \tl_to_str:n { character ~ } } { ` }
+\cs_new:Npn \@@_token_to_explicit_auxiii:w #1 ~ #2 ~ { ` }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_char_catcode:N}
+% An idea from \pkg{l3char}: we need to get the category code of
+% a specific token, not the general case.
+% \begin{macrocode}
+\cs_new:Npn \@@_char_catcode:N #1
+ {
+ \if_catcode:w \exp_not:N #1 \c_math_toggle_token
+ 3
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_alignment_token
+ 4
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_superscript_token
+ 7
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_subscript_token
+ 8
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_space_token
+ 10
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
+ 11
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_other_token
+ 12
+ \else:
+ 13
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP, TF]{\@@_if_expandable:N}
+% Test for tokens that make sense to expand here: that is more
+% restrictive than the engine view.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \@@_if_expandable:N #1 { T , F , TF }
+ {
+ \token_if_expandable:NTF #1
+ {
+ \bool_lazy_any:nTF
+ {
+ { \token_if_protected_macro_p:N #1 }
+ { \token_if_protected_long_macro_p:N #1 }
+ { \token_if_eq_meaning_p:NN \q_recursion_tail #1 }
+ }
+ { \prg_return_false: }
+ { \prg_return_true: }
+ }
+ { \prg_return_false: }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Configuration variables}
+%
+% \begin{variable}{\l_text_accents_tl, \l_text_letterlike_tl}
+% Special cases for accents and letter-like symbols, which in some cases will
+% need to be converted further.
+% \begin{macrocode}
+%<*package>
+\tl_new:N \l_text_accents_tl
+\tl_set:Nn \l_text_accents_tl
+ { \` \' \^ \~ \= \u \. \" \r \H \v \d \c \k \b \t }
+\tl_new:N \l_text_letterlike_tl
+\tl_set:Nn \l_text_letterlike_tl
+ {
+ \AA \aa
+ \AE \ae
+ \DH \dh
+ \DJ \dj
+ \IJ \ij
+ \L \l
+ \NG \ng
+ \O \o
+ \OE \oe
+ \SS \ss
+ \TH \th
+ }
+%</package>
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_text_case_exclude_arg_tl}
+% Non-text arguments.
+% \begin{macrocode}
+\tl_new:N \l_text_case_exclude_arg_tl
+\tl_set:Nn \l_text_case_exclude_arg_tl { \cite \label \ref }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_text_math_arg_tl}
+% Math mode as arguments.
+% \begin{macrocode}
+\tl_new:N \l_text_math_arg_tl
+\tl_set:Nn \l_text_math_arg_tl { \ensuremath }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_text_math_delims_tl}
+% Paired math mode delimiters.
+% \begin{macrocode}
+\tl_new:N \l_text_math_delims_tl
+\tl_set:Nn \l_text_math_delims_tl { $ $ \( \) }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\l_text_expand_exclude_tl}
+% Commands which need not to expand.
+% \begin{macrocode}
+%<*package>
+\tl_new:N \l_text_expand_exclude_tl
+\tl_set:Nn \l_text_expand_exclude_tl
+ { \cite \label \ref }
+%</package>
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\l_@@_math_mode_tl}
+% Used to control math mode output: internal as there is a dedicated
+% setter.
+% \begin{macrocode}
+\tl_new:N \l_@@_math_mode_tl
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Expansion to formatted text}
+%
+% \begin{variable}{\c_@@_chardef_space_token, \c_@@_mathchardef_space_token}
+% \begin{variable}
+% {\c_@@_chardef_group_begin_token, \c_@@_mathchardef_group_begin_token}
+% \begin{variable}
+% {\c_@@_chardef_group_end_token, \c_@@_mathchardef_group_end_token}
+% Markers for implict char handling.
+% \begin{macrocode}
+\tex_chardef:D \c_@@_chardef_space_token = `\ %
+\tex_mathchardef:D \c_@@_mathchardef_space_token = `\ %
+\tex_chardef:D \c_@@_chardef_group_begin_token = `\{ % `\}
+\tex_mathchardef:D \c_@@_mathchardef_group_begin_token = `\{ % `\} `\{
+\tex_chardef:D \c_@@_chardef_group_end_token = `\} % `\{
+\tex_mathchardef:D \c_@@_mathchardef_group_end_token = `\} %
+% \end{macrocode}
+% \end{variable}
+% \end{variable}
+% \end{variable}
+%
+% \begin{macro}[EXP]{\text_expand:n, \@@_expand:n}
+% \begin{macro}[EXP]{\@@_expand_result:n}
+% \begin{macro}[EXP]{\@@_expand_store:n, \@@_expand_store:o}
+% \begin{macro}[EXP]{\@@_expand_store:nw}
+% \begin{macro}[EXP]{\@@_expand_end:w}
+% \begin{macro}[EXP]{\@@_expand_loop:w}
+% \begin{macro}[EXP]{\@@_expand_group:n}
+% \begin{macro}[EXP]{\@@_expand_space:w}
+% \begin{macro}[EXP]
+% {
+% \@@_expand_N_type:N ,
+% \@@_expand_N_type_auxi:N ,
+% \@@_expand_N_type_auxii:N ,
+% \@@_expand_N_type_auxiii:N
+% }
+% \begin{macro}[EXP]{\@@_expand_math_search:NNN}
+% \begin{macro}[EXP]{\@@_expand_math_loop:Nw}
+% \begin{macro}[EXP]{\@@_expand_math_N_type:NN}
+% \begin{macro}[EXP]{\@@_expand_math_group:Nn}
+% \begin{macro}[EXP]{\@@_expand_math_space:Nw}
+% \begin{macro}[EXP]
+% {
+% \@@_expand_implicit:N ,
+% \@@_expand_explicit:N ,
+% \@@_expand_exclude:N
+% }
+% \begin{macro}[EXP]{\@@_expand_exclude:nN}
+% \begin{macro}[EXP]{\@@_expand_exclude:NN}
+% \begin{macro}[EXP]{\@@_expand_exclude:Nn}
+% \begin{macro}[EXP]{\@@_expand_letterlike:N}
+% \begin{macro}[EXP]{\@@_expand_letterlike:NN}
+% \begin{macro}[EXP]
+% {
+% \@@_expand_cs:N ,
+% \@@_expand_protect:N
+% }
+% \begin{macro}[EXP]{\@@_expand_protect:nN}
+% \begin{macro}[EXP]{\@@_expand_protect:Nw}
+% \begin{macro}[EXP]{\@@_expand_cs_expand:N}
+% After precautions against |&| tokens, start a simple loop: that of
+% course means that \enquote{text} cannot contain the two recursion
+% quarks. The loop here must be \texttt{f}-type expandable; we have
+% arbitrary user commands which might be protected \emph{and} take
+% arguments, and if the expansion code is used in a typesetting
+% context, that will otherwise explode. (The same issue applies more
+% clearly to case changing: see the example there.)
+% \begin{macrocode}
+\cs_new:Npn \text_expand:n #1
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w
+ \@@_expand:n {#1}
+ }
+ }
+\cs_new:Npn \@@_expand:n #1
+ {
+ \group_align_safe_begin:
+ \@@_expand_loop:w #1
+ \q_recursion_tail \q_recursion_stop
+ \@@_expand_result:n { }
+ }
+% \end{macrocode}
+% The approach to making the code \texttt{f}-type expandable is to usee
+% a marker result token and to shuffle the collected tokens
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_store:n #1
+ { \@@_expand_store:nw {#1} }
+\cs_generate_variant:Nn \@@_expand_store:n { o }
+\cs_new:Npn \@@_expand_store:nw #1#2 \@@_expand_result:n #3
+ { #2 \@@_expand_result:n { #3 #1 } }
+\cs_new:Npn \@@_expand_end:w #1 \@@_expand_result:n #2
+ {
+ \group_align_safe_end:
+ \exp_end:
+ #2
+ }
+% \end{macrocode}
+% The main loop is a standard \enquote{tl action}; groups are handled
+% recursively, while spaces are just passed through. Thus all of the
+% action is in handling \texttt{N}-type tokens.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_loop:w #1 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#1}
+ { \@@_expand_N_type:N }
+ {
+ \tl_if_head_is_group:nTF {#1}
+ { \@@_expand_group:n }
+ { \@@_expand_space:w }
+ }
+ #1 \q_recursion_stop
+ }
+\cs_new:Npn \@@_expand_group:n #1
+ {
+ \@@_expand_store:o
+ {
+ \exp_after:wN
+ {
+ \exp:w
+ \@@_expand:n {#1}
+ }
+ }
+ \@@_expand_loop:w
+ }
+\exp_last_unbraced:NNo \cs_new:Npn \@@_expand_space:w \c_space_tl
+ {
+ \@@_expand_store:n { ~ }
+ \@@_expand_loop:w
+ }
+% \end{macrocode}
+% Before we get into the real work, we have to watch out for problematic
+% implicit characters: spaces and grouping tokens. Converting these to
+% explicit characters later would lead to real issues as they are \emph{not}
+% \texttt{N}-type. A space is the easy case, so it's dealt with first:
+% just insert the explicit token and continue the loop.
+% \begin{macrocode}
+\cs_new:Npx \@@_expand_N_type:N #1
+ {
+ \exp_not:N \quark_if_recursion_tail_stop_do:Nn #1
+ { \exp_not:N \@@_expand_end:w }
+ \exp_not:N \bool_lazy_any:nTF
+ {
+ { \exp_not:N \token_if_eq_meaning_p:NN #1 \c_space_token }
+ {
+ \exp_not:N \token_if_eq_meaning_p:NN #1
+ \c_@@_chardef_space_token
+ }
+ {
+ \exp_not:N \token_if_eq_meaning_p:NN #1
+ \c_@@_mathchardef_space_token
+ }
+ }
+ { \exp_not:N \@@_expand_space:w \c_space_tl }
+ { \exp_not:N \@@_expand_N_type_auxi:N #1 }
+ }
+% \end{macrocode}
+% Implicit |{|/|}| offer two issues. First, the token could be an implicit
+% brace character: we need to avoid turning that into a brace group, so filter
+% out the cases manually. Then we handle the case where an implicit group is
+% present. That is done in an \enquote{open-ended} way: there's the possibility
+% the closing token is hidden somewhere.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_N_type_auxi:N #1
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_eq_meaning_p:NN #1 \c_@@_chardef_group_begin_token }
+ { \token_if_eq_meaning_p:NN #1 \c_@@_mathchardef_group_begin_token }
+ {
+ \@@_expand_store:o \c_left_brace_str
+ \@@_expand_loop:w
+ }
+ {
+ \bool_lazy_or:nnTF
+ { \token_if_eq_meaning_p:NN #1 \c_@@_chardef_group_end_token }
+ { \token_if_eq_meaning_p:NN #1 \c_@@_mathchardef_group_end_token }
+ {
+ \@@_expand_store:o \c_right_brace_str
+ \@@_expand_loop:w
+ }
+ { \@@_expand_N_type_auxii:N #1 }
+ }
+ }
+\cs_new:Npn \@@_expand_N_type_auxii:N #1
+ {
+ \token_if_eq_meaning:NNTF #1 \c_group_begin_token
+ {
+ { \if_false: } \fi:
+ \@@_expand_loop:w
+ }
+ {
+ \token_if_eq_meaning:NNTF #1 \c_group_end_token
+ {
+ \if_false: { \fi: }
+ \@@_expand_loop:w
+ }
+ { \@@_expand_N_type_auxiii:N #1 }
+ }
+ }
+% \end{macrocode}
+% The first step in dealing with \texttt{N}-type tokens is to look for
+% math mode material: that needs to be left alone. The starting function
+% has to be split into two as we need \cs{quark_if_recursion_tail_stop:N}
+% first before we can trigger the search. We then look for matching
+% pairs of delimiters, allowing for the case where math mode starts
+% but does not end. Within math mode, we simply pass all the tokens
+% through unchanged, just checking the \texttt{N}-type ones against the
+% end marker.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_N_type_auxiii:N #1
+ {
+ \exp_after:wN \@@_expand_math_search:NNN
+ \exp_after:wN #1 \l_text_math_delims_tl
+ \q_recursion_tail \q_recursion_tail
+ \q_recursion_stop
+ }
+\cs_new:Npn \@@_expand_math_search:NNN #1#2#3
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+ { \@@_expand_implicit:N #1 }
+ \token_if_eq_meaning:NNTF #1 #2
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ {
+ \@@_expand_store:n {#1}
+ \@@_expand_math_loop:Nw #3
+ }
+ }
+ { \@@_expand_math_search:NNN #1 }
+ }
+\cs_new:Npn \@@_expand_math_loop:Nw #1#2 \q_recursion_stop
+ {
+ \tl_if_head_is_N_type:nTF {#2}
+ { \@@_expand_math_N_type:NN }
+ {
+ \tl_if_head_is_group:nTF {#2}
+ { \@@_expand_math_group:Nn }
+ { \@@_expand_math_space:Nw }
+ }
+ #1#2 \q_recursion_stop
+ }
+\cs_new:Npn \@@_expand_math_N_type:NN #1#2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+ { \@@_expand_end:w }
+ \@@_expand_store:n {#2}
+ \token_if_eq_meaning:NNTF #2 #1
+ { \@@_expand_loop:w }
+ { \@@_expand_math_loop:Nw #1 }
+ }
+\cs_new:Npn \@@_expand_math_group:Nn #1#2
+ {
+ \@@_expand_store:n { {#2} }
+ \@@_expand_math_loop:Nw #1
+ }
+\exp_after:wN \cs_new:Npn \exp_after:wN \@@_expand_math_space:Nw
+ \exp_after:wN # \exp_after:wN 1 \c_space_tl
+ {
+ \@@_expand_store:n { ~ }
+ \@@_expand_math_loop:Nw #1
+ }
+% \end{macrocode}
+% Conversion of implicit to explicit tokens does not have to account for
+% spaces or brace groups: they are already fixed above. So we can assume that
+% the result of this conversion is still an \texttt{N}-type token.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_implicit:N #1
+ {
+ \exp_args:NNe \use:nn \@@_expand_explicit:N
+ { \@@_token_to_explicit:N #1 }
+ }
+% \end{macrocode}
+% At this stage, either we have a control sequence or a simple character:
+% split and handle.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_explicit:N #1
+ {
+ \token_if_cs:NTF #1
+ { \@@_expand_exclude:N #1 }
+ {
+ \@@_expand_store:n {#1}
+ \@@_expand_loop:w
+ }
+ }
+% Next we exclude math commands: this is mainly as there \emph{might} be an
+% \cs{ensuremath}. We also handle accents, which are basically the same issue
+% but are kept separate for semantic reasons.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_exclude:N #1
+ {
+%<*initex>
+ \exp_after:wN \@@_expand_exclude:NN
+ \l_text_math_arg_tl
+ #1
+ \q_recursion_tail \q_recursion_stop
+%</initex>
+%<*package>
+ \exp_args:Ne \@@_expand_exclude:nN
+ {
+ \exp_not:V \l_text_math_arg_tl
+ \exp_not:V \l_text_accents_tl
+ \exp_not:V \l_text_expand_exclude_tl
+ }
+ #1
+%</package>
+ }
+%<*package>
+\cs_new:Npn \@@_expand_exclude:nN #1#2
+ {
+ \@@_expand_exclude:NN #2 #1
+ \q_recursion_tail \q_recursion_stop
+ }
+%</package>
+\cs_new:Npn \@@_expand_exclude:NN #1#2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+%<*initex>
+ { \@@_expand_cs:N #1 }
+%</initex>
+%<*package>
+ { \@@_expand_letterlike:N #1 }
+%</package>
+ \cs_if_eq:NNTF #2 #1
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ { \@@_expand_exclude:Nn #1 }
+ }
+ { \@@_expand_exclude:NN #1 }
+ }
+\cs_new:Npn \@@_expand_exclude:Nn #1#2
+ {
+ \@@_expand_store:n { #1 {#2} }
+ \@@_expand_loop:w
+ }
+% \end{macrocode}
+% Another list of exceptions: these ones take no arguments so are
+% easier to handle.
+% \begin{macrocode}
+%<*package>
+\cs_new:Npn \@@_expand_letterlike:N #1
+ {
+ \exp_after:wN \@@_expand_letterlike:NN \exp_after:wN
+ #1 \l_text_letterlike_tl
+ \q_recursion_tail \q_recursion_stop
+ }
+\cs_new:Npn \@@_expand_letterlike:NN #1#2
+ {
+ \quark_if_recursion_tail_stop_do:Nn #2
+ { \@@_expand_cs:N #1 }
+ \cs_if_eq:NNTF #2 #1
+ {
+ \use_i_delimit_by_q_recursion_stop:nw
+ {
+ \@@_expand_store:n {#1}
+ \@@_expand_loop:w
+ }
+ }
+ { \@@_expand_letterlike:NN #1 }
+ }
+%</package>
+% \end{macrocode}
+% \LaTeXe{}'s \cs{protect} makes life interesting. Where possible, we
+% simply remove it and replace with the \enquote{parent} command; of course,
+% the \cs{protect} might be explicit, in which case we need to leave it alone
+% if it's required.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_cs:N #1
+ {
+ \str_if_eq:nnTF {#1} { \protect }
+ { \@@_expand_protect:N }
+ { \@@_expand_cs_expand:N #1 }
+ }
+\cs_new:Npn \@@_expand_protect:N #1
+ {
+ \exp_args:Ne \@@_expand_protect:nN
+ { \cs_to_str:N #1 } #1
+ }
+\cs_new:Npn \@@_expand_protect:nN #1#2
+ { \@@_expand_protect:Nw #2 #1 \q_nil #1 ~ \q_nil \q_nil \q_stop }
+\cs_new:Npn \@@_expand_protect:Nw #1 #2 ~ \q_nil #3 \q_nil #4 \q_stop
+ {
+ \quark_if_nil:nTF {#4}
+ {
+ \cs_if_exist:cTF {#2}
+ { \exp_args:Ne \@@_expand_store:n { \exp_not:c {#2} } }
+ { \@@_expand_store:n { \protect #1 } }
+ }
+ { \@@_expand_store:n { \protect #1 } }
+ \@@_expand_loop:w
+ }
+% \end{macrocode}
+% Finally, expand any macros which can be: this then loops back around to
+% deal with what they produce.
+% \begin{macrocode}
+\cs_new:Npn \@@_expand_cs_expand:N #1
+ {
+ \@@_if_expandable:NTF #1
+ { \exp_after:wN \@@_expand_loop:w #1 }
+ {
+ \@@_expand_store:n {#1}
+ \@@_expand_loop:w
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</initex|package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index e4e8b791e9..e9f36e03b8 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl-analysis.dtx
%
-% Copyright (C) 2011-2019 The LaTeX3 Project
+% Copyright (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index a3c39d9df9..a564e6eca3 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -2,7 +2,7 @@
%
%% File: l3tl.dtx
%
-% Copyright (C) 1990-2019 The LaTeX3 Project
+% Copyright (C) 1990-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 36ca720071..93b1e6ffc5 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -2,7 +2,7 @@
%
%% File: l3token.dtx
%
-% Copyright (C) 2005-2019 The LaTeX3 Project
+% Copyright (C) 2005-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -151,6 +151,26 @@
% \end{texnote}
% \end{function}
%
+% \begin{function}[added = 2020-01-09, EXP]
+% {
+% \char_lowercase:N, \char_uppercase:N,
+% \char_titlecase:N, \char_foldcase:N,
+% \char_str_lowercase:N, \char_str_uppercase:N,
+% \char_str_titlecase:N, \char_str_foldcase:N
+% }
+% \begin{syntax}
+% \cs{char_lowercase:N} \meta{char}
+% \end{syntax}
+% Converts the \meta{char} to the equivalent case-changed character
+% as detailed by the function name (see \cs{str_foldcase:n}
+% and \cs{text_titlecase:n} for details of these terms). The case mapping
+% is carried out with no context-dependence (\emph{cf.}~\cs{text_uppercase:n},
+% \emph{etc.}) The \texttt{str} versions always generate \enquote{other}
+% (category code $12$) characters, whilst the standard versions generate
+% characters with the category code of the \meta{char} (i.e.~only
+% the character code changes).
+% \end{function}
+%
% \begin{variable}[added = 2011-09-05]{\c_catcode_other_space_tl}
% Token list containing one character with category code $12$,
% (\enquote{other}), and character code $32$ (space).
@@ -253,7 +273,7 @@
% \cs{char_set_lccode:nn} \Arg{intexpr_1} \Arg{intexpr_2}
% \end{syntax}
% Sets up the behaviour of the \meta{character} when
-% found inside \cs{tl_lower_case:n}, such that \meta{character_1}
+% found inside \cs{text_lowercase:n}, such that \meta{character_1}
% will be converted into \meta{character_2}. The two \meta{characters}
% may be specified using an \meta{integer expression} for the character code
% concerned. This may include the \TeX{} |`|\meta{character}
@@ -290,7 +310,7 @@
% \cs{char_set_uccode:nn} \Arg{intexpr_1} \Arg{intexpr_2}
% \end{syntax}
% Sets up the behaviour of the \meta{character} when
-% found inside \cs{tl_upper_case:n}, such that \meta{character_1}
+% found inside \cs{text_uppercase:n}, such that \meta{character_1}
% will be converted into \meta{character_2}. The two \meta{characters}
% may be specified using an \meta{integer expression} for the character code
% concerned. This may include the \TeX{} |`|\meta{character}
@@ -1462,9 +1482,7 @@
\tl_put_right:Nn \l_@@_tmp_tl { \or: }
% \end{macrocode}
% For making spaces, there needs to be an |o|-type expansion of a |\use:n|
-% (or some other tokenization) to avoid dropping the space. We also
-% set up active tokens although they are (currently) filtered out by the
-% interface layer (\tn{Ucharcat} cannot make active tokens).
+% (or some other tokenization) to avoid dropping the space.
% \begin{macrocode}
\char_set_catcode_space:n { 0 }
\tl_put_right:No \l_@@_tmp_tl { \use:n { \or: } ^^@ }
@@ -1532,6 +1550,306 @@
% \end{macro}
% \end{macro}
%
+% \begin{macro}[EXP]{\char_to_utfviii_bytes:n}
+% \begin{macro}[EXP]{\@@_to_utfviii_bytes_auxi:n}
+% \begin{macro}[EXP]{\@@_to_utfviii_bytes_auxii:Nnn}
+% \begin{macro}[EXP]{\@@_to_utfviii_bytes_auxiii:n}
+% \begin{macro}[EXP]
+% {
+% \@@_to_utfviii_bytes_outputi:nw ,
+% \@@_to_utfviii_bytes_outputii:nw ,
+% \@@_to_utfviii_bytes_outputiii:nw ,
+% \@@_to_utfviii_bytes_outputiv:nw
+% }
+% \begin{macro}[EXP]
+% {\@@_to_utfviii_bytes_output:nnn, \@@_to_utfviii_bytes_output:fnn}
+% \begin{macro}[EXP]{\@@_to_utfviii_bytes_end:}
+% This code converts a codepoint into the correct UTF-8 representation.
+% In terms of the algorithm itself, see
+% \url{https://en.wikipedia.org/wiki/UTF-8} for the octet pattern.
+% \begin{macrocode}
+\cs_new:Npn \char_to_utfviii_bytes:n #1
+ {
+ \exp_args:Nf \@@_to_utfviii_bytes_auxi:n
+ { \int_eval:n {#1} }
+ }
+\cs_new:Npn \@@_to_utfviii_bytes_auxi:n #1
+ {
+ \if_int_compare:w #1 > "80 \exp_stop_f:
+ \if_int_compare:w #1 < "800 \exp_stop_f:
+ \@@_to_utfviii_bytes_outputi:nw
+ { \@@_to_utfviii_bytes_auxii:Nnn C {#1} { 64 } }
+ \@@_to_utfviii_bytes_outputii:nw
+ { \@@_to_utfviii_bytes_auxiii:n {#1} }
+ \else:
+ \if_int_compare:w #1 < "10000 \exp_stop_f:
+ \@@_to_utfviii_bytes_outputi:nw
+ { \@@_to_utfviii_bytes_auxii:Nnn E {#1} { 64 * 64 } }
+ \@@_to_utfviii_bytes_outputii:nw
+ {
+ \@@_to_utfviii_bytes_auxiii:n
+ { \int_div_truncate:nn {#1} { 64 } }
+ }
+ \@@_to_utfviii_bytes_outputiii:nw
+ { \@@_to_utfviii_bytes_auxiii:n {#1} }
+ \else:
+ \@@_to_utfviii_bytes_outputi:nw
+ {
+ \@@_to_utfviii_bytes_auxii:Nnn F
+ {#1} { 64 * 64 * 64 }
+ }
+ \@@_to_utfviii_bytes_outputii:nw
+ {
+ \@@_to_utfviii_bytes_auxiii:n
+ { \int_div_truncate:nn {#1} { 64 * 64 } }
+ }
+ \@@_to_utfviii_bytes_outputiii:nw
+ {
+ \@@_to_utfviii_bytes_auxiii:n
+ { \int_div_truncate:nn {#1} { 64 } }
+ }
+ \@@_to_utfviii_bytes_outputiv:nw
+ { \@@_to_utfviii_bytes_auxiii:n {#1} }
+ \fi:
+ \fi:
+ \else:
+ \@@_to_utfviii_bytes_outputi:nw {#1}
+ \fi:
+ \@@_to_utfviii_bytes_end: { } { } { } { }
+ }
+\cs_new:Npn \@@_to_utfviii_bytes_auxii:Nnn #1#2#3
+ { "#10 + \int_div_truncate:nn {#2} {#3} }
+\cs_new:Npn \@@_to_utfviii_bytes_auxiii:n #1
+ { \int_mod:nn {#1} { 64 } + 128 }
+\cs_new:Npn \@@_to_utfviii_bytes_outputi:nw
+ #1 #2 \@@_to_utfviii_bytes_end: #3
+ { \@@_to_utfviii_bytes_output:fnn { \int_eval:n {#1} } { } {#2} }
+\cs_new:Npn \@@_to_utfviii_bytes_outputii:nw
+ #1 #2 \@@_to_utfviii_bytes_end: #3#4
+ { \@@_to_utfviii_bytes_output:fnn { \int_eval:n {#1} } { {#3} } {#2} }
+\cs_new:Npn \@@_to_utfviii_bytes_outputiii:nw
+ #1 #2 \@@_to_utfviii_bytes_end: #3#4#5
+ {
+ \@@_to_utfviii_bytes_output:fnn
+ { \int_eval:n {#1} } { {#3} {#4} } {#2}
+ }
+\cs_new:Npn \@@_to_utfviii_bytes_outputiv:nw
+ #1 #2 \@@_to_utfviii_bytes_end: #3#4#5#6
+ {
+ \@@_to_utfviii_bytes_output:fnn
+ { \int_eval:n {#1} } { {#3} {#4} {#5} } {#2}
+ }
+\cs_new:Npn \@@_to_utfviii_bytes_output:nnn #1#2#3
+ {
+ #3
+ \@@_to_utfviii_bytes_end: #2 {#1}
+ }
+\cs_generate_variant:Nn \@@_to_utfviii_bytes_output:nnn { f }
+\cs_new:Npn \@@_to_utfviii_bytes_end: { }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[rEXP]{\char_to_nfd:N}
+% \begin{macro}[rEXP]{\@@_to_nfd:n}
+% \begin{macro}[rEXP]{\@@_to_nfd:Nw}
+% Look up any \textsc{nfd} and recursively produce the result.
+% \begin{macrocode}
+\cs_new:Npn \char_to_nfd:N #1
+ {
+ \cs_if_exist:cTF { c_@@_nfd_ \token_to_str:N #1 _ tl }
+ {
+ \exp_after:wN \exp_after:wN \exp_after:wN \@@_to_nfd:Nw
+ \exp_after:wN \exp_after:wN \exp_after:wN #1
+ \cs:w c_@@_nfd_ \token_to_str:N #1 _ tl \cs_end:
+ \q_stop
+ }
+ { \exp_not:n {#1} }
+ }
+\cs_set_eq:NN \@@_to_nfd:n \char_to_nfd:N
+\cs_new:Npn \@@_to_nfd:Nw #1#2#3 \q_stop
+ {
+ \exp_args:Ne \@@_to_nfd:n
+ { \char_generate:nn { `#2 } { \@@_change_case_catcode:N #1 } }
+ \tl_if_blank:nF {#3}
+ {
+ \exp_args:Ne \@@_to_nfd:n
+ { \char_generate:nn { `#3 } { \char_value_catcode:n { `#3 } } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \char_lowercase:N, \char_uppercase:N,
+% \char_titlecase:N, \char_foldcase:N
+% }
+% \begin{macro}[EXP]{\@@_change_case:nNN}
+% \begin{macro}[EXP]{\@@_change_case:nN}
+% \begin{macro}[EXP]{\@@_change_case_multi:nN, \@@_change_case_multi:vN}
+% \begin{macro}[EXP]{\@@_change_case_multi:NNNNw}
+% \begin{macro}[EXP]{\@@_change_case:NNN}
+% \begin{macro}[EXP]{\@@_change_case:NNNN}
+% \begin{macro}[EXP]{\@@_change_case:NN}
+% \begin{macro}[EXP]{\@@_change_case_catcode:N}
+% \begin{macro}[EXP]
+% {
+% \char_str_lowercase:N, \char_str_uppercase:N,
+% \char_str_titlecase:N, \char_str_foldcase:N
+% }
+% \begin{macro}[EXP]{\@@_str_change_case:nNN}
+% \begin{macro}[EXP]{\@@_str_change_case:nN}
+% To ensure that the category codes produced are predictable, every character
+% is re-generated even if it is otherwise unchanged. This makes life a little
+% interesting when we might have multiple output characters: we have to
+% grab each of them and case change them in reverse order to maintain
+% \texttt{f}-type expandability.
+% \begin{macrocode}
+\cs_new:Npn \char_lowercase:N #1
+ { \@@_change_case:nNN { lower } \char_value_lccode:n #1 }
+\cs_new:Npn \char_uppercase:N #1
+ { \@@_change_case:nNN { upper } \char_value_uccode:n #1 }
+\cs_new:Npn \char_titlecase:N #1
+ {
+ \tl_if_exist:cTF { c_@@_titlecase_ \token_to_str:N #1 _tl }
+ {
+ \@@_change_case_multi:vN
+ { c_@@_titlecase_ \token_to_str:N #1 _tl } #1
+ }
+ { \char_uppercase:N #1 }
+ }
+\cs_new:Npn \char_foldcase:N #1
+ { \@@_change_case:nNN { fold } \char_value_lccode:n #1 }
+\cs_new:Npn \@@_change_case:nNN #1#2#3
+ {
+ \tl_if_exist:cTF { c_@@_ #1 case_ \token_to_str:N #3 _tl }
+ {
+ \@@_change_case_multi:vN
+ { c_@@_ #1 case_ \token_to_str:N #3 _tl } #3
+ }
+ { \exp_args:Nf \@@_change_case:nN { #2 { `#3 } } #3 }
+ }
+\cs_new:Npn \@@_change_case:nN #1#2
+ {
+ \int_compare:nNnTF {#1} = 0
+ { #2 }
+ { \char_generate:nn {#1} { \@@_change_case_catcode:N #2 } }
+ }
+\cs_new:Npn \@@_change_case_multi:nN #1#2
+ { \@@_change_case_multi:NNNNw #2 #1 \q_no_value \q_no_value \q_stop }
+\cs_generate_variant:Nn \@@_change_case_multi:nN { v }
+\cs_new:Npn \@@_change_case_multi:NNNNw #1#2#3#4#5 \q_stop
+ {
+ \quark_if_no_value:NTF #4
+ {
+ \quark_if_no_value:NTF #3
+ { \@@_change_case:NN #1 #2 }
+ { \@@_change_case:NNN #1 #2#3 }
+ }
+ { \@@_change_case:NNNN #1 #2#3#4 }
+ }
+\cs_new:Npn \@@_change_case:NNN #1#2#3
+ {
+ \exp_args:Nnf \use:nn
+ { \@@_change_case:NN #1 #2 }
+ { \@@_change_case:NN #1 #3 }
+ }
+\cs_new:Npn \@@_change_case:NNNN #1#2#3#4
+ {
+ \exp_args:Nnff \use:nnn
+ { \@@_change_case:NN #1 #2 }
+ { \@@_change_case:NN #1 #3 }
+ { \@@_change_case:NN #1 #4 }
+ }
+\cs_new:Npn \@@_change_case:NN #1#2
+ { \char_generate:nn { `#2 } { \@@_change_case_catcode:N #1 } }
+\cs_new:Npn \@@_change_case_catcode:N #1
+ {
+ \if_catcode:w \exp_not:N #1 \c_math_toggle_token
+ 3
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_alignment_token
+ 4
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_superscript_token
+ 7
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_math_subscript_token
+ 8
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_space_token
+ 10
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_letter_token
+ 11
+ \else:
+ \if_catcode:w \exp_not:N #1 \c_catcode_other_token
+ 12
+ \else:
+ 13
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ \fi:
+ }
+% \end{macrocode}
+% Same story for the string version, except category code is easier
+% to follow. This of course makes this version significantly faster.
+% \begin{macrocode}
+\cs_new:Npn \char_str_lowercase:N #1
+ { \@@_str_change_case:nNN { lower } \char_value_lccode:n #1 }
+\cs_new:Npn \char_str_uppercase:N #1
+ { \@@_str_change_case:nNN { upper } \char_value_uccode:n #1 }
+\cs_new:Npn \char_str_titlecase:N #1
+ {
+ \tl_if_exist:cTF { c_@@_titlecase_ \token_to_str:N #1 _tl }
+ { \tl_to_str:c { c_@@_titlecase_ \token_to_str:N #1 _tl } }
+ { \char_str_uppercase:N #1 }
+ }
+\cs_new:Npn \char_str_foldcase:N #1
+ { \@@_str_change_case:nNN { fold } \char_value_lccode:n #1 }
+\cs_new:Npn \@@_str_change_case:nNN #1#2#3
+ {
+ \tl_if_exist:cTF { c_@@_ #1 case_ \token_to_str:N #3 _tl }
+ { \tl_to_str:c { c_@@_ #1 case_ \token_to_str:N #3 _tl } }
+ { \exp_args:Nf \@@_str_change_case:nN { #2 { `#3 } } #3 }
+ }
+\cs_new:Npn \@@_str_change_case:nN #1#2
+ {
+ \int_compare:nNnTF {#1} = 0
+ { \tl_to_str:n {#2} }
+ { \char_generate:nn {#1} { 12 } }
+ }
+\cs_if_exist:NF \tex_Uchar:D
+ {
+ \cs_set:Npn \@@_str_change_case:nN #1#2
+ { \tl_to_str:n {#2} }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\c_catcode_other_space_tl}
% Create a space with category code $12$: an \enquote{other} space.
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 9eb3d9747a..383826eaeb 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -2,7 +2,7 @@
%
%% File: l3unicode.dtx
%
-% Copyright (C) 2018-2019 The LaTeX3 Project
+% Copyright (C) 2018-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2019-11-07}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -116,35 +116,56 @@
}
}
% \end{macrocode}
-% Parse the main Unicode data file for title case exceptions (the one-to-one
-% lower and upper case mappings it contains are all be covered by the \TeX{}
-% data). There are no comments in the main data file so this can be done using
-% a standard mapping and no checks.
+% Parse the main Unicode data file for two things. First, we want the titlecase
+% exceptions: the one-to-one lower- and uppercase mappings it contains are all
+% be covered by the \TeX{} data. Second, we need normalization data: at present,
+% just the canonical \textsc{nfd} mappings. Those all yield either one or two
+% codepoints, so the split is relatively easy.
% \begin{macrocode}
\ior_open:Nn \g_@@_data_ior { UnicodeData.txt }
\cs_set_protected:Npn \@@_data_auxi:w
#1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ; #8 ; #9 ;
- { \@@_data_auxii:w #1 ; }
- \cs_set_protected:Npn \@@_data_auxii:w
- #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 \q_stop
+ {
+ \tl_if_blank:nF {#6}
+ {
+ \tl_if_head_eq_charcode:nNF {#6} < % >
+ { \@@_data_auxii:w #1 ; #6 ~ \q_stop }
+ }
+ \@@_data_auxiii:w #1 ;
+ }
+ \cs_set_protected:Npn \@@_data_auxii:w #1 ; #2 ~ #3 \q_stop
+ {
+ \tl_const:cx
+ { c_@@_nfd_ \@@_generate_char:n {#1} _tl }
+ {
+ \@@_generate:n { "#2 }
+ \tl_if_blank:nF {#3}
+ { \@@_generate:n { "#3 } }
+ }
+ }
+ \cs_set_protected:Npn \@@_data_auxiii:w
+ #1 ; #2 ; #3 ; #4 ; #5 ; #6 ; #7 ~ \q_stop
{
\cs_set_nopar:Npn \l_@@_tmpa_tl {#7}
\reverse_if:N \if_meaning:w \l_@@_tmpa_tl \c_empty_tl
\cs_set_nopar:Npn \l_@@_tmpb_tl {#5}
\reverse_if:N \if_meaning:w \l_@@_tmpa_tl \l_@@_tmpb_tl
\tl_const:cx
- { c_@@_mixed_case_ \@@_generate_char:n {#1} _tl }
+ { c_@@_titlecase_ \@@_generate_char:n {#1} _tl }
{ \@@_generate:n { "#7 } }
\fi:
\fi:
}
- \ior_map_variable:NNn \g_@@_data_ior \l_@@_tmpa_tl
- {
- \if_meaning:w \l_@@_tmpa_tl \c_space_tl
- \exp_after:wN \ior_map_break:
- \fi:
- \exp_after:wN \@@_data_auxi:w \l_@@_tmpa_tl \q_stop
- }
+ \group_begin:
+ \char_set_catcode_space:n { `\ }%
+ \ior_map_variable:NNn \g_@@_data_ior \l_@@_tmpa_tl
+ {%
+ \if_meaning:w \l_@@_tmpa_tl \c_space_tl
+ \exp_after:wN \ior_map_break:
+ \fi:
+ \exp_after:wN \@@_data_auxi:w \l_@@_tmpa_tl \q_stop
+ }%
+ \group_end:
\ior_close:N \g_@@_data_ior
% \end{macrocode}
% The other data files all use C-style comments so we have to worry about
@@ -161,7 +182,7 @@
\reverse_if:N \if_int_compare:w
\char_value_lccode:n {"#1} = "#3 ~
\tl_const:cx
- { c_@@_fold_case_ \@@_generate_char:n {#1} _tl }
+ { c_@@_foldcase_ \@@_generate_char:n {#1} _tl }
{ \@@_generate:n { "#3 } }
\fi:
\else:
@@ -172,7 +193,7 @@
}
\cs_set_protected:Npn \@@_data_auxii:w #1 ~ #2 ~ #3 ~ #4 \q_stop
{
- \tl_const:cx { c_@@_fold_case_ \@@_generate_char:n {#1} _tl }
+ \tl_const:cx { c_@@_foldcase_ \@@_generate_char:n {#1} _tl }
{
\@@_generate:n { "#2 }
\@@_generate:n { "#3 }
@@ -188,7 +209,7 @@
}
\ior_close:N \g_@@_data_ior
% \end{macrocode}
-% For upper and lower casing special situations, there is a bit more to
+% For upper- and lowercasing special situations, there is a bit more to
% do as we also have title casing to consider, plus we need to stop part-way
% through the file.
% \begin{macrocode}
@@ -199,14 +220,14 @@
\use:n { \@@_data_auxii:w #1 ~ lower ~ #2 ~ } ~ \q_stop
\use:n { \@@_data_auxii:w #1 ~ upper ~ #4 ~ } ~ \q_stop
\str_if_eq:nnF {#3} {#4}
- { \use:n { \@@_data_auxii:w #1 ~ mixed ~ #3 ~ } ~ \q_stop }
+ { \use:n { \@@_data_auxii:w #1 ~ title ~ #3 ~ } ~ \q_stop }
}
\cs_set_protected:Npn \@@_data_auxii:w
#1 ~ #2 ~ #3 ~ #4 ~ #5 \q_stop
{
\tl_if_empty:nF {#4}
{
- \tl_const:cx { c_@@_ #2 _case_ \@@_generate_char:n {#1} _tl }
+ \tl_const:cx { c_@@_ #2 case_ \@@_generate_char:n {#1} _tl }
{
\@@_generate:n { "#3 }
\@@_generate:n { "#4 }
@@ -244,9 +265,9 @@
\cs_set_protected:Npn \@@_tmp:NN #1#2
{
\quark_if_recursion_tail_stop:N #2
- \tl_const:cn { c_@@_upper_case_ #2 _tl } {#1}
- \tl_const:cn { c_@@_lower_case_ #1 _tl } {#2}
- \tl_const:cn { c_@@_fold_case_ #1 _tl } {#2}
+ \tl_const:cn { c_@@_uppercase_ #2 _tl } {#1}
+ \tl_const:cn { c_@@_lowercase_ #1 _tl } {#2}
+ \tl_const:cn { c_@@_foldcase_ #1 _tl } {#2}
\@@_tmp:NN
}
\@@_tmp:NN
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index a40463b4d9..d630d86daf 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index 45de4218f6..76a9c01fea 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -2,7 +2,7 @@
File: source3.tex
-Copyright (C) 1990-2012,2017-2019 The LaTeX3 Project
+Copyright (C) 1990-2012,2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -53,7 +53,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2019-11-07}
+\date{Released 2020-01-12}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex
index 620ac44f84..f985c0d147 100644
--- a/macros/latex/contrib/l3kernel/source3body.tex
+++ b/macros/latex/contrib/l3kernel/source3body.tex
@@ -484,6 +484,13 @@ used on top of \LaTeXe{} if \cs{outer} tokens are used in the arguments.
\DocInput{l3color-base.dtx}
\DocInput{l3luatex.dtx}
\DocInput{l3unicode.dtx}
+\DocInput{l3text.dtx}
+\ExplSyntaxOn
+\clist_gput_right:Nn \g_docinput_clist
+ {
+ l3text-case.dtx
+ }
+\ExplSyntaxOff
\DocInput{l3legacy.dtx}
\DocInput{l3candidates.dtx}
diff --git a/macros/latex/contrib/l3packages/CHANGELOG.md b/macros/latex/contrib/l3packages/CHANGELOG.md
index cf63a73ebf..f4e843f2ed 100644
--- a/macros/latex/contrib/l3packages/CHANGELOG.md
+++ b/macros/latex/contrib/l3packages/CHANGELOG.md
@@ -7,18 +7,24 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2020-01-12]
+
+### Changed
+- Track `l3kernel` changes
+
## [2019-10-11]
+### Fixed
- `xparse`: Allow processors to depend on other arguments (fixes #629)
## [2019-05-28]
+### Fixed
- `xparse`: Remove stray spaces in processor information
## [2019-05-03]
### Added
-
- `xparse`: Support for `trace` package
## [2019-03-05]
@@ -54,7 +60,8 @@ this project uses date-based 'snapshot' version identifiers.
- Switch to ISO date format
- Improve cross-module use of internal functions
-[Unreleased]: https://github.com/latex3/latex3/compare/2019-10-11...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2020-01-12...HEAD
+[2020-01-12]: https://github.com/latex3/latex3/compare/2019-10-11...2020-01-12
[2019-10-11]: https://github.com/latex3/latex3/compare/2019-05-28...2019-10-11
[2019-05-28]: https://github.com/latex3/latex3/compare/2019-05-03...2019-05-28
[2019-05-03]: https://github.com/latex3/latex3/compare/2019-03-05...2019-05-03
diff --git a/macros/latex/contrib/l3packages/README.md b/macros/latex/contrib/l3packages/README.md
index cfe6b5f904..966f05f241 100644
--- a/macros/latex/contrib/l3packages/README.md
+++ b/macros/latex/contrib/l3packages/README.md
@@ -1,12 +1,12 @@
LaTeX3 High-Level Concepts
==========================
-Release 2019-10-11
+Release 2020-01-12
Overview
--------
-The `l3packages` collection is contains implementations for aspects of the
+The `l3packages` collection contains implementations for aspects of the
LaTeX3 kernel, dealing with higher-level ideas such as the Designer Interface.
The packages here are considered broadly stable (The LaTeX3 Project does not
expect the interfaces to alter radically). These packages are build on LaTeX2e
@@ -102,6 +102,6 @@ the [LaTeX-L list](#Discussion) should be used.
-----
-<p>Copyright (C) 1998-2011,2015-2019 The LaTeX3 Project <br />
+<p>Copyright (C) 1998-2011,2015-2020 The LaTeX3 Project <br />
<a href="http://latex-project.org/">http://latex-project.org/</a> <br />
All rights reserved.</p>
diff --git a/macros/latex/contrib/l3packages/l3keys2e.dtx b/macros/latex/contrib/l3packages/l3keys2e.dtx
index 9a10f7ef79..a570701cf4 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.dtx
+++ b/macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -2,7 +2,7 @@
%
%% File: l3keys2e.dtx
%
-% Copyright (C) 2009,2011-2019 The LaTeX3 Project
+% Copyright (C) 2009,2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -62,7 +62,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -133,7 +133,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3keys2e}{2019-10-11}{}
+\ProvidesExplPackage{l3keys2e}{2020-01-12}{}
{LaTeX2e option processing using LaTeX3 keys}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/l3keys2e.ins b/macros/latex/contrib/l3packages/l3keys2e.ins
index df9e88b7e9..a5d2f4e301 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.ins
+++ b/macros/latex/contrib/l3packages/l3keys2e.ins
@@ -2,7 +2,7 @@
File: l3keys2e.ins
-Copyright (C) 2009,2011,2012,2016,2017,2019 The LaTeX3 Project
+Copyright (C) 2009,2011,2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2009-2019 The LaTeX3 Project
+Copyright (C) 2009-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/l3keys2e.pdf b/macros/latex/contrib/l3packages/l3keys2e.pdf
index 661b4171c7..9c2d19eebf 100644
--- a/macros/latex/contrib/l3packages/l3keys2e.pdf
+++ b/macros/latex/contrib/l3packages/l3keys2e.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfp.dtx b/macros/latex/contrib/l3packages/xfp.dtx
index 33f66c6589..5eeb3e2aef 100644
--- a/macros/latex/contrib/l3packages/xfp.dtx
+++ b/macros/latex/contrib/l3packages/xfp.dtx
@@ -2,7 +2,7 @@
%
%% File: xfp.dtx
%
-% Copyright (C) 2017-2019 The LaTeX3 Project
+% Copyright (C) 2017-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -64,7 +64,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -167,7 +167,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfp}{2019-10-11}{}
+\ProvidesExplPackage{xfp}{2020-01-12}{}
{L3 Floating point unit}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfp.ins b/macros/latex/contrib/l3packages/xfp.ins
index 6a2a26d125..2439b0aae1 100644
--- a/macros/latex/contrib/l3packages/xfp.ins
+++ b/macros/latex/contrib/l3packages/xfp.ins
@@ -2,7 +2,7 @@
File: xfp.ins
-Copyright (C) 2017,2019 The LaTeX3 Project
+Copyright (C) 2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2017-2019 The LaTeX3 Project
+Copyright (C) 2017-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xfp.pdf b/macros/latex/contrib/l3packages/xfp.pdf
index 35921ed162..4b09a7d910 100644
--- a/macros/latex/contrib/l3packages/xfp.pdf
+++ b/macros/latex/contrib/l3packages/xfp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xfrac.dtx b/macros/latex/contrib/l3packages/xfrac.dtx
index 62600c37be..59262e81ad 100644
--- a/macros/latex/contrib/l3packages/xfrac.dtx
+++ b/macros/latex/contrib/l3packages/xfrac.dtx
@@ -3,7 +3,7 @@
%% File: xfrac.dtx
%
% Copyright (C) 2004,2008-2010 Morten Hoegholm
-% (C) 2011,2012,2014-2019 The LaTeX3 Project
+% (C) 2011,2012,2014-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -65,7 +65,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -535,7 +535,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xfrac}{2019-10-11}{}
+\ProvidesExplPackage{xfrac}{2020-01-12}{}
{L3 Experimental split-level fractions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xfrac.ins b/macros/latex/contrib/l3packages/xfrac.ins
index 39ecdd34b3..1b02e49b54 100644
--- a/macros/latex/contrib/l3packages/xfrac.ins
+++ b/macros/latex/contrib/l3packages/xfrac.ins
@@ -3,7 +3,7 @@
File: xfrac.ins
Copyright (C) 2004,2008-2010 Morten Hoegholm
- (C) 2011,2012,2016,2017,2019 The LaTeX3 Project
+ (C) 2011,2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -24,7 +24,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2011-2019 The LaTeX3 Project
+Copyright (C) 2011-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xfrac.pdf b/macros/latex/contrib/l3packages/xfrac.pdf
index 06f7ea363a..e8df898dbc 100644
--- a/macros/latex/contrib/l3packages/xfrac.pdf
+++ b/macros/latex/contrib/l3packages/xfrac.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xparse.dtx b/macros/latex/contrib/l3packages/xparse.dtx
index 2a0b842fbb..8e08895718 100644
--- a/macros/latex/contrib/l3packages/xparse.dtx
+++ b/macros/latex/contrib/l3packages/xparse.dtx
@@ -4,7 +4,7 @@
%
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% (C) 2004-2008 Frank Mittelbach, The LaTeX3 Project
-% (C) 2009-2019 The LaTeX3 Project
+% (C) 2009-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -67,7 +67,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -916,7 +916,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xparse}{2019-10-11}{}
+\ProvidesExplPackage{xparse}{2020-01-12}{}
{L3 Experimental document command parser}
% \end{macrocode}
%
@@ -4551,7 +4551,7 @@
LaTeX~did~not~find~it,~and~will~insert~a~default~value~to~be~processed.
}
\__kernel_msg_new:nnnn { xparse } { non-xparse }
- { \str_upper_case:n #1~not~defined~using~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.
diff --git a/macros/latex/contrib/l3packages/xparse.ins b/macros/latex/contrib/l3packages/xparse.ins
index 0fcc01351d..e65d254709 100644
--- a/macros/latex/contrib/l3packages/xparse.ins
+++ b/macros/latex/contrib/l3packages/xparse.ins
@@ -2,7 +2,7 @@
File: xparse.ins
-Copyright (C) 2000-2012,2016,2017,2019 The LaTeX3 Project
+Copyright (C) 2000-2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,7 +23,7 @@ The released version of this bundle is available from CTAN.
\preamble
-Copyright (C) 2009-2019 The LaTeX3 Project
+Copyright (C) 2009-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xparse.pdf b/macros/latex/contrib/l3packages/xparse.pdf
index b6822014f4..b0988846cb 100644
--- a/macros/latex/contrib/l3packages/xparse.pdf
+++ b/macros/latex/contrib/l3packages/xparse.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3packages/xtemplate.dtx b/macros/latex/contrib/l3packages/xtemplate.dtx
index c12297b4ed..211a461a61 100644
--- a/macros/latex/contrib/l3packages/xtemplate.dtx
+++ b/macros/latex/contrib/l3packages/xtemplate.dtx
@@ -4,7 +4,7 @@
%
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% (C) 2004-2010 Frank Mittelbach, The LaTeX3 Project
-% (C) 2011-2019 The LaTeX3 Project
+% (C) 2011-2020 The LaTeX3 Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2019-10-11}
+% \date{Released 2020-01-12}
%
% \maketitle
%
@@ -682,7 +682,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xtemplate}{2019-10-11}{}
+\ProvidesExplPackage{xtemplate}{2020-01-12}{}
{L3 Experimental prototype document functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3packages/xtemplate.ins b/macros/latex/contrib/l3packages/xtemplate.ins
index dc7f7e5bea..43dfb26620 100644
--- a/macros/latex/contrib/l3packages/xtemplate.ins
+++ b/macros/latex/contrib/l3packages/xtemplate.ins
@@ -2,7 +2,7 @@
File: xtemplate.ins
-Copyright (C) 2000-2012,2016,2017,2019 The LaTeX3 Project
+Copyright (C) 2000-2012,2016,2017,2019,2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of the
LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -34,7 +34,7 @@ license information is placed in the derived files.
\preamble
-Copyright (C) 2011-2019 The LaTeX3 Project
+Copyright (C) 2011-2020 The LaTeX3 Project
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
diff --git a/macros/latex/contrib/l3packages/xtemplate.pdf b/macros/latex/contrib/l3packages/xtemplate.pdf
index 4d4258f8d0..8661c69840 100644
--- a/macros/latex/contrib/l3packages/xtemplate.pdf
+++ b/macros/latex/contrib/l3packages/xtemplate.pdf
Binary files differ
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 9fc1d84c67..da9079ad40 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
@@ -26,11 +26,11 @@ depend container_split_src_files/1
depend frozen/0
depend minrelease/2016
depend release/2019
-depend revision/53372
+depend revision/53385
name 00texlive.image
category TLCore
-revision 53370
+revision 53383
shortdesc TeX Live files only in the source repository
longdesc The files here are not copied by the installer and containers
longdesc are not built for them; they exist only in the source
@@ -7428,16 +7428,16 @@ catalogue-version 3.12a
name acmart
category Package
-revision 53188
+revision 53381
shortdesc Class for typesetting publications of ACM
relocated 1
longdesc This package provides a class for typesetting publications of
-longdesc the Association for Computing Machinery.
-containersize 36664
-containerchecksum d5c0e566ac325b77cb4448a1d1624ac7401f5abdebd36a6c0ec1a789945ad960c449e66704d759fb3a7c0ffd5678459aa6354c665b31c35406af8a958294da8c
-doccontainersize 3771372
-doccontainerchecksum 77766a01cfbc09da19fbb9452434c5dd1369b3ce1f141e09b0b11cd03abc8699195e92c2cf635a573fdd2a97845ef9fc0e6a39172c356767bb8dd8416d4219c9
-docfiles size=2470
+longdesc the Association for Computing Machinery (ACM).
+containersize 36624
+containerchecksum 8b14ef344e981cd077c3edfeff3252a60e311ed3085c090e58a2533838f47a0c0089c6a465a539a5fc4ad6fbe428c2c44fff3e548447fb95573a23fd71d2c4ea
+doccontainersize 3804080
+doccontainerchecksum f98b73af5b4148aaee1b8c52fc158a921a5080e632c7b1998d3b60b6259f78968e8aa2d365b3c9e51aaabd3a09840bbcabb5bac8e630d20661cff4dfb10d634e
+docfiles size=2477
RELOC/doc/latex/acmart/README details="Readme"
RELOC/doc/latex/acmart/acmart.bib
RELOC/doc/latex/acmart/acmart.pdf details="Documentation"
@@ -7469,8 +7469,8 @@ docfiles size=2470
RELOC/doc/latex/acmart/samples/samples.dtx
RELOC/doc/latex/acmart/samples/samples.ins
RELOC/doc/latex/acmart/samples/sampleteaser.pdf
-srccontainersize 51400
-srccontainerchecksum 9c504317fd4916ed6a11d7f9db31fdea498aef46d4741020f81d4d70b078926e29f509def81206871015fc0f84cc68432a2a1a15f1ef80e49282aa6b8094253a
+srccontainersize 51448
+srccontainerchecksum 0032b4ba827ce2df52fc3470d14795d77da1691967084bd5d3aa35392e2fedd441b40061301488bb7f0df42fc9ec017137f31d90503f5896c5ebb227911316c9
srcfiles size=60
RELOC/source/latex/acmart/Makefile
RELOC/source/latex/acmart/acmart.dtx
@@ -7487,7 +7487,7 @@ catalogue-contact-repository https://github.com/borisveytsman/acmart/
catalogue-ctan /macros/latex/contrib/acmart
catalogue-license lppl1.3
catalogue-topics class comp-sci comp-theory engineering journalpub
-catalogue-version 1.66
+catalogue-version 1.67
name acmconf
category Package
@@ -7530,7 +7530,7 @@ catalogue-version 1.3
name acro
category Package
-revision 53368
+revision 53383
shortdesc Typeset acronyms
relocated 1
longdesc The package enables the author to create acronyms in a simple
@@ -7543,20 +7543,20 @@ longdesc which automatically sorts the list created by \printacronyms.
depend etoolbox
depend l3kernel
depend l3packages
-containersize 23092
-containerchecksum f2a0eb23ef57477125dbf4095d5b0bd6e5b46cf28fc1ee6eeae450fc64dbfbee469289666fb448fe1b557bcd2174a39eb4e8b0d55311c78647bdceec7e32d31c
-doccontainersize 617304
-doccontainerchecksum bbaeca914746923773eb85374dca234497a42a2d927ff126f39aa8a11161b1a2574c9b1e7ec6f2b9e103b68c132007b224f293dcca5c0521e3d3b02d0b776a7e
-docfiles size=177
+containersize 24536
+containerchecksum 491a1f6ea4df987baa31377f3bae68b1e8f898cf4420a19f50a84b8733c07dd9f884bac633b00698b37c9947f31ee1f2a378ba037de27b91efbaac8ff24b3897
+doccontainersize 615836
+doccontainerchecksum 7766321cfa503dd1fe76eca401560b814b845fd60eef325280d83d3ac5c5a77894ea3e50fbab494691690e3d83d88fb188b854d9c175956e4717cc7efab696ae
+docfiles size=174
RELOC/doc/latex/acro/README details="Readme"
RELOC/doc/latex/acro/acro-manual.pdf details="Package documentation"
RELOC/doc/latex/acro/acro-manual.tex
- RELOC/doc/latex/acro/acro.definitions.tex
RELOC/doc/latex/acro/acro.history
RELOC/doc/latex/acro/example_one.tex
RELOC/doc/latex/acro/example_two.tex
-runfiles size=36
+runfiles size=39
RELOC/tex/latex/acro/acro-manual.cls
+ RELOC/tex/latex/acro/acro.definitions.tex
RELOC/tex/latex/acro/acro.sty
catalogue-contact-bugs https://bitbucket.org/cgnieder/acro/issues
catalogue-contact-repository https://bitbucket.org/cgnieder/acro/
@@ -52415,16 +52415,16 @@ catalogue-version 1.1
name circledsteps
category Package
-revision 53356
+revision 53382
shortdesc Typeset circled numbers
relocated 1
longdesc This package generates circled numbers (or other kinds of
longdesc markers or small text) to mark "steps" in procedures,
longdesc exercises, and so on.
-containersize 1768
-containerchecksum 25ed30bf36ad5d5652145913ac56fff95fe3ba15025cca37aa8e89f1cf67262cc3965f25d1abc8fb066dfbdc3cdd9439718733bb46dce19972b93253dc3a0c2c
-doccontainersize 415320
-doccontainerchecksum b63f57239d7784ee403441772e08963cc73dcbfd65a1e77c3cc1553fb9b9fd9ceb454d84e02688ffd62f1bb67b2f58636ff522b6d5038991869e259ac7812fbb
+containersize 1852
+containerchecksum f8e34dbb7167f4d9b6a9585c856f57cadcde9ccbde1d28a1918ff3f4c04916fe347acd2377cdfc5d0cb03ca2a8f5ed3389ca134e8621084da6504e0a5fa10622
+doccontainersize 415380
+doccontainerchecksum b7a50fa849e89393ebc6624623743ee7be737805c7807dd57957c05bd3489d908731c37c87d950615e5d6b835035169717a2648ba876ae458a0d4b0f779f0eea
docfiles size=109
RELOC/doc/latex/circledsteps/README.md details="Readme"
RELOC/doc/latex/circledsteps/circledsteps-manual.pdf details="Package documentation"
@@ -52438,7 +52438,7 @@ catalogue-contact-support https://github.com/Rmano/circledsteps/issues
catalogue-ctan /macros/latex/contrib/circledsteps
catalogue-license lppl1.3c
catalogue-topics numbers
-catalogue-version 1.2
+catalogue-version 1.3
name circuit-macros
category Package
@@ -88521,7 +88521,7 @@ catalogue-version 1.0
name dsserif
category Package
-revision 47570
+revision 53384
shortdesc A double-struck serifed font for mathematical use
relocated 1
longdesc DSSerif is a mathematical font package with double struck
@@ -88530,18 +88530,18 @@ longdesc bold weights. The design was inspired by the STIX double struck
longdesc fonts, which are sans serif, but starting from a Courier-like
longdesc base.
execute addMap DSSerif.map
-containersize 78412
-containerchecksum 346d9192803712c47d8905920b6c86244759635e7929e1a2c049a558a7e50eb36dc6574dae59f17bda21e6c95d1a661c9857514eb7f5f60d008f293beb758da8
-doccontainersize 247164
-doccontainerchecksum 87e5ede487017ac47d7502d5983d5d158deb4d709f033ca34855f01f4b93fe7e3001c6287277f4f830b79c2ff1cf41caacccf2942769f8b2b848524ba4fa6696
+containersize 78396
+containerchecksum 70cf249f7e3fd88d03fb7ba2ce07f21a6183a7ab465e8ad319c53aaf3e800ec3e4a9f12226f1302490a316e88c0571c2c9d5310dae6e10c0714527da271c174f
+doccontainersize 247184
+doccontainerchecksum ef40db14eed4e267e490df95147c7c5854fe034128f2465fd5dbbbeda6e0aff1267e00daaaccc14820e788957a097cb9c3116c6fd923f9aad152049866025848
docfiles size=72
RELOC/doc/fonts/dsserif/OFL-FAQ.txt
RELOC/doc/fonts/dsserif/OFL.txt
RELOC/doc/fonts/dsserif/README details="Readme"
RELOC/doc/fonts/dsserif/dsserif-doc.pdf details="Package documentation"
RELOC/doc/fonts/dsserif/dsserif-doc.tex
-srccontainersize 1716
-srccontainerchecksum 31ad24b5b7667c1763dc36a475ce13b70bdc38c239a5c38a09acc3d4e66c95b1abf82d60ca240e7bf121f9dc93b17a17f420ab863a8f2052ed363c5adc46ec22
+srccontainersize 1720
+srccontainerchecksum c8ce0770faf0072a23552ef606fcfd80de18effab6e8a40e2f54a1a13ef23d019c81578b95eb9b421353f566e2d32009ed646a1bceb27b224e6acd11846782c4
srcfiles size=5
RELOC/source/dsserif/DSSerif-drv.tex
RELOC/source/dsserif/adjustments.mtx
@@ -88567,7 +88567,7 @@ runfiles size=33
catalogue-ctan /fonts/dsserif
catalogue-license ofllppllppl1.3
catalogue-topics font font-serif font-maths font-bbd font-type1
-catalogue-version 1.00
+catalogue-version 1.01
name dtk
category Package
@@ -101698,7 +101698,7 @@ catalogue-topics graphics french-doc translation
name epspdf
category Package
-revision 49952
+revision 53378
shortdesc Converter for PostScript, EPS and PDF
longdesc Epspdftk.tcl is a GUI ps/eps/pdf converter. Epspdf.tlu, its
longdesc command-line backend, can be used by itself. Options include
@@ -101706,10 +101706,10 @@ longdesc grayscaling, cropping margins and single-page selection. Some
longdesc conversion options are made possible by converting in multiple
longdesc steps.
depend epspdf.ARCH
-containersize 31484
-containerchecksum a8d2e4cdf1b3e4439ce8c96b18cc7182bf29f745b8a35942623575951ddf179964536f72ec58a357e7544d861bcf624d7b35ed3a0932d758e011e56633aba078
-doccontainersize 235256
-doccontainerchecksum f2c5ed08890388bc064af0bfe31f540c126b9bab4a5b262a5e44f6cbb4e4511ed43ef0fdd2945b01bfb1ff4aba15aaa7e7fa373f7cf93827fa352226a423d8dd
+containersize 31900
+containerchecksum e254ff8322b34deb6fb78d1fec1ec575c746e29310f47e20dd7a69285cfc49563164251c2793f38978cd56241ba1d7b976feee3e75f288551c9f0e9739663ee5
+doccontainersize 237488
+doccontainerchecksum ee22bb3e27525ed95a24ac2ae067a695eb13f1ad7abf6ec72b07bc827d4f205dd93936d3e0b3c17f24d292f5750a122bf5ea8bc29262cc99974e7d453e1728d3
docfiles size=91
texmf-dist/doc/info/epspdf.info
texmf-dist/doc/support/epspdf/COPYING
@@ -101722,7 +101722,7 @@ docfiles size=91
texmf-dist/doc/support/epspdf/images/epspdf.png
texmf-dist/doc/support/epspdf/images/logo.pdf
texmf-dist/doc/support/epspdf/pstexi.tex
-runfiles size=32
+runfiles size=33
texmf-dist/scripts/epspdf/epspdf.help
texmf-dist/scripts/epspdf/epspdf.tlu
texmf-dist/scripts/epspdf/epspdf4tk.cmd
@@ -101731,7 +101731,7 @@ catalogue-also epstopdf
catalogue-ctan /support/epspdf
catalogue-license gpl2
catalogue-topics graphics-epspdf
-catalogue-version 0.6.4
+catalogue-version 0.6.5
name epspdf.aarch64-linux
category Package
@@ -198755,7 +198755,7 @@ catalogue-version 1.0
name newtx
category Package
-revision 53255
+revision 53379
shortdesc Alternative uses of the TX fonts, with improved metrics
relocated 1
longdesc The bundle splits txfonts.sty (from the TX fonts distribution)
@@ -198770,11 +198770,11 @@ longdesc garamondx package, thus offering a garamond-alike
longdesc text-with-maths combination.
depend kastrup
execute addMap newtx.map
-containersize 4527664
-containerchecksum dc29e6a18f41ec57f62bcf950ec3b6314345a3758fa1f929b82610de2dbf368e0d4652f9e93e7e943d488f918c5315b8e1aa74ba9a2fcb7ca8b22af5f7bec750
-doccontainersize 839820
-doccontainerchecksum ea5e889648bf19224174bbd4abd3d2f5724816afba9310125e46bd81336bca72174f0d5ad64ed30d91856938800b08fa17a4ad3a45bcfccef77fc26d788a71a9
-docfiles size=388
+containersize 4527676
+containerchecksum b953ecd4559370f90ef3983a96e7cf96f43586301cdf826c0860ac98f5c9d445ea1aadb4e13a820df866531b7e94e59840ef52e74203deb82c9b7c4ca7e80041
+doccontainersize 835796
+doccontainerchecksum 1a8080463ac71cdfbc4f76d2783e60a535865f8d6a1ef1c9dd457f4248c1e97d890627193ff15257b5f5ec4bb8f6f2d18e04db1cf08ea6bbb274b2ffb229397d
+docfiles size=387
RELOC/doc/fonts/newtx/MANIFEST-newtx.txt
RELOC/doc/fonts/newtx/README details="Readme"
RELOC/doc/fonts/newtx/implementation.pdf details="Implementation notes"
@@ -199541,7 +199541,7 @@ catalogue-also minion2newtx
catalogue-ctan /fonts/newtx
catalogue-license lppl1.3
catalogue-topics font font-body font-maths font-serif font-proportional font-type1 font-otf font-supp font-t1enc
-catalogue-version 1.622
+catalogue-version 1.623
name newtxsf
category Package
@@ -282843,15 +282843,15 @@ docfiles size=572
name texlive-docindex
category TLCore
-revision 53367
+revision 53374
shortdesc top-level TeX Live doc.html, etc.
longdesc These files are regenerated as needed, which is often, so we
longdesc make them a separate package. See the tl-update-auto script
longdesc for the process.
-containersize 392
-containerchecksum 572835b541396c6b78f5869741ddf1306bdfb64cf9e78841455c1b6ff9cba53e1e67cfb9c83e4630d8cbd68bedfa813fdf9fffc9a35625bbe7c32829e5afb0ee
-doccontainersize 157808
-doccontainerchecksum 5b8d4bc10113ff3239bd89e10b3c2b1aaf990e3657e8acb1dbcee9d884ca184d7111e2e77ec8de860032d1e1aa8d9d10b2c0497a352f1d9e9d768a9ac900bcf5
+containersize 388
+containerchecksum 224fcbc16c04064cf373a6297c93d597d66de9f2931f311eb52b36b5ea8bcf817c682302bd9689b8c09132e6e102713dfad0e38bd15987b7a3eb849d3c6d9967
+doccontainersize 157948
+doccontainerchecksum de2389d7a1d17df9a7e2d06d3b61b34e2b147031e1945aa35ca54b790731f607532291466c592b1fef1b35c5547d198c12fedea900deedd84c9aaabad9ab44c3
docfiles size=309
doc.html
@@ -323608,13 +323608,13 @@ catalogue-version 0.2
name zxjafont
category Package
-revision 51531
+revision 53380
shortdesc Set up Japanese font families for XeLaTeX
relocated 1
-containersize 3724
-containerchecksum 8d56b2f09b2f96a303a8338252a078c5856703d466ba23d2f8a96f93c002ea3f30c072398f47bf9c38aa94b08f93a9b3aef44799b61c117df9a9cbfadf60c2a9
-doccontainersize 145684
-doccontainerchecksum f6a332e3db7db28041cf0815122ec1134276b12c042fc2b1defb214ef6946598c9149e717309fde2c28b50cac545cbb2d0077890adffb8d3ec0371dfd876f66e
+containersize 3740
+containerchecksum b34d8805e47239b1b91ad755a9496b7142cef4f8ed45bced8d7b0bd47f407fb80981c64b1709677ae0801e457bc6368bda7ee1a87e3a831152e860a93d2733d4
+doccontainersize 146432
+doccontainerchecksum cac9f27634ba798cf2d3cbd8892c4925f60e2c74cd3ebc6547e7db0d159bf36124707fa5c266041d336cf367e7272d00517805f29b421d62403090e5e4e3db8d
docfiles size=41
RELOC/doc/latex/zxjafont/LICENSE
RELOC/doc/latex/zxjafont/README-ja.md details="Readme" language="ja"
@@ -323626,7 +323626,7 @@ runfiles size=4
catalogue-ctan /language/japanese/zxjafont
catalogue-license mit
catalogue-topics japanese font-supp xetex
-catalogue-version 0.5
+catalogue-version 0.6
name zxjatype
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index ad9d863126..e34072feff 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-6f5ea8651d1c51909eb19147fe723f9d texlive.tlpdb
+3350d7cfc9424e490132a73e54a5dbd1 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 8fc08b7682..da2de88499 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-b0ce0008dcb538fecd2ebce5c0da05217d889c139a28de876e5d0f15514f0238f683afd21680403faf879439455b7e31cf4c05a9866f825656cd15bd40ecba12 texlive.tlpdb
+fa6f70782c43181c0d076bf0615702db47048a745c4dddde92a8ece94355839e463c2d0ccd1034d4d87b51ecc5d835ae5b64f4e4d57ec4c32e3b9e680f628ccf texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index 0744642d8d..9c0810e2f6 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,10 +1,10 @@
-----BEGIN PGP SIGNATURE-----
-iQEcBAEBCgAGBQJeGm5bAAoJEEzhh34ZQ4xwJZEH/3dyvalvGR9II8oowDj4p4SF
-mwqxc8Cr/PzV134+YkUSMMwRv3PeW53d/g1jHo20hu8Pek8JhSXmi9vmnvBM83MQ
-4CGMyg5k2WE2G5YvXmADZfV0zdngo7fL+fOVUV1BBG7qQvEPokd5+Ra7VJA2wvmo
-OUa9HlanHMFwMCUc6WHu8Lk7OjHsXgR5e2iXa/Vd9XxI/KE7exgw6CGcVmpaCjY9
-k2LeBtKdBb4MsASgyF1S5qwbBzFjGlaqkp/oaguR+x/HMMik5KamqR479771UK3j
-Yl9AKw1VlvjEbHNDQC+JU+5gEKYPCpdXcC0B+HKWgz0MtpmCzkCdid0/sFp7jKo=
-=MKui
+iQEcBAEBCgAGBQJeG8ACAAoJEEzhh34ZQ4xwAywH/0OeZWqNcOEeoS4xNQLgJDVl
+N5gQIEhsh18wr9/IVlTzuez4sH4on742ZgjMqeHymWMjH/gwo1h0VwyvnvfT/M2b
+tNCW4Do0lGvl6/3L3Wmwvq0FIk5NQpg3mWF/D/3P6z8TbwAaaDA+brP5RdyTwn9u
+3JiYvl2BjmSJjxUpiQMWfyynuRtbIavDRkHH2kGpHS8sHhyGN5A4sW50LXFFoPQ8
+pOCGQ46+rTO+rYp3S28NZ5AIKLpWz8/JT/TH4FS8pfsrs0DaDDRtXUp8m1uGF7Qq
+XOCLlEx8jZ0W6I16f7sJ0mbLvqzO/PV/2F2Lu82BMTkZ1rgdSD0bxd/JBemMsLA=
+=d6ki
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index cf6804cc44..2bd4ad3fd0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/files.csv.lzma b/systems/win32/miktex/tm/packages/files.csv.lzma
index ee00dbd193..76eb09c380 100644
--- a/systems/win32/miktex/tm/packages/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/files.csv.lzma b/systems/win32/miktex/tm/packages/next/files.csv.lzma
index e61488cb84..974f120312 100644
--- a/systems/win32/miktex/tm/packages/next/files.csv.lzma
+++ b/systems/win32/miktex/tm/packages/next/files.csv.lzma
Binary files differ
diff --git a/systems/win32/miktex/tm/packages/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 6ded54f2d4..8137e913e6 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -2,9 +2,9 @@
[repository]
-date=1578863852
+date=1578950207
lastupd=miktex-arctrl-bin-2.9 miktex-arctrl-bin-x64-2.9 miktex-asymptote-bin-2.9 miktex-asymptote-bin-x64-2.9 miktex-autosp-bin-2.9 miktex-autosp-bin-x64-2.9 miktex-axohelp-bin-2.9 miktex-axohelp-bin-x64-2.9 miktex-bibarts-bin-2.9 miktex-bibarts-bin-x64-2.9 miktex-bibtex-bin-2.9 miktex-bibtex-bin-x64-2.9 miktex-bibtex8bit-bin-2.9 miktex-bibtex8bit-bin-x64-2.9 miktex-bzip2-bin-2.9 miktex-bzip2-bin-x64-2.9 miktex-cairo-bin-2.9 miktex-cairo-bin-x64-2.9 miktex-chktex-bin-2.9 miktex-chktex-bin-x64-2.9
-lstdigest=53d2b3342e18c41ca155042c8e90e2b2
-numpkg=3834
+lstdigest=211876a29e5501de3ce5a30f6ece27bb
+numpkg=3835
relstate=next
-version=7316
+version=7317
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index ce9cebca43..7c14b795d0 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -2,9 +2,9 @@
[repository]
-date=1578863517
-lastupd=aeb-mlink fontspec newpx pst-eucl circledsteps cochineal eqexam pgf shadethm acrotex biblatex-manuscripts-philology cormorantgaramond curve2e dsserif impatient pdfxup scholax thesis-ekf thuthesis caption
-lstdigest=efe24fae3dbb07d459b3add540aad150
-numpkg=3834
+date=1578949899
+lastupd=acmart acro circledsteps exframe hithesis newtx nicematrix simplebnf tasks tocloft ulem zxjafont aeb-mlink fontspec newpx pst-eucl cochineal eqexam pgf shadethm
+lstdigest=9f6580a41d039c11d6d771e065c79858
+numpkg=3835
relstate=stable
-version=7316
+version=7317
diff --git a/systems/win32/w32tex/ChangeLog b/systems/win32/w32tex/ChangeLog
index cffe113468..79cb4b87bf 100644
--- a/systems/win32/w32tex/ChangeLog
+++ b/systems/win32/w32tex/ChangeLog
@@ -1,5 +1,21 @@
W32TeX (x86 & x64) ChangeLog
+[2020/01/12]
+(01) dvipsk-w32.tar.xz
+ Support encoding for bitmap fonts (by Tomas Rokicki).
+(02) luajittex-exp-w32.tar.xz
+ Update luajittex.dll, and luajithbtex.dll.
+(03) luatex-exp-w32.tar.xz
+ Update luatex.dll, and luahbtex.dll.
+(04) newtxpx-boondoxfonts.tar.xz
+ Update newtx fonts.
+(05) win64/dvipsk-w64.tar.xz
+ Support encoding for bitmap fonts (by Tomas Rokicki).
+(06) win64/luajittex-exp-w64.tar.xz
+ Update luajittex.dll, and luajithbtex.dll.
+(07) win64/luatex-exp-w64.tar.xz
+ Update luatex.dll, and luahbtex.dll.
+
[2020/01/11]
(01) ltxpkgdocs.tar.xz
(02) ltxpkgs.tar.xz
diff --git a/timestamp b/timestamp
index 5812c9b3b4..05628f275e 100644
--- a/timestamp
+++ b/timestamp
@@ -2,4 +2,4 @@
# The source CTAN of this site's material:
dante.ctan.org
# The year-month-day-hour-minute of this site's material:
-2020-01-13-02-02
+2020-01-14-02-02