summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--FILES.byname1668
-rw-r--r--FILES.byname.gzbin2410969 -> 2411525 bytes
-rw-r--r--FILES.last07days2589
-rw-r--r--info/biblio/printing-history.bib15
-rw-r--r--info/biblio/printing-history.ltx12
-rw-r--r--info/biblio/typeset.bib245
-rw-r--r--info/biblio/typeset.ltx12
-rw-r--r--macros/latex-dev/base/README.md11
-rw-r--r--macros/latex-dev/base/alltt.dtx4
-rw-r--r--macros/latex-dev/base/alltt.ins4
-rw-r--r--macros/latex-dev/base/alltt.pdfbin214710 -> 223819 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.pdfbin242886 -> 242888 bytes
-rw-r--r--macros/latex-dev/base/cfgguide.tex2
-rw-r--r--macros/latex-dev/base/changes.txt133
-rw-r--r--macros/latex-dev/base/classes.dtx4
-rw-r--r--macros/latex-dev/base/classes.ins4
-rw-r--r--macros/latex-dev/base/classes.pdfbin550728 -> 560350 bytes
-rw-r--r--macros/latex-dev/base/clsguide.pdfbin402779 -> 402780 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.ins4
-rw-r--r--macros/latex-dev/base/cmfonts.pdfbin292317 -> 292376 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.pdfbin239681 -> 239689 bytes
-rw-r--r--macros/latex-dev/base/cyrguide.tex2
-rw-r--r--macros/latex-dev/base/doc-2016-02-15.sty826
-rw-r--r--macros/latex-dev/base/doc-2021-06-01.sty (renamed from macros/latex-dev/base/doc-v3beta.sty)801
-rw-r--r--macros/latex-dev/base/doc-code.pdfbin0 -> 1074166 bytes
-rw-r--r--macros/latex-dev/base/doc-code.tex4
-rw-r--r--macros/latex-dev/base/doc.dtx4722
-rw-r--r--macros/latex-dev/base/doc.pdfbin677311 -> 748004 bytes
-rw-r--r--macros/latex-dev/base/docstrip.dtx4
-rw-r--r--macros/latex-dev/base/docstrip.ins5
-rw-r--r--macros/latex-dev/base/docstrip.pdfbin503614 -> 503595 bytes
-rw-r--r--macros/latex-dev/base/ec.ins4
-rw-r--r--macros/latex-dev/base/encguide.pdfbin1316472 -> 1316459 bytes
-rw-r--r--macros/latex-dev/base/encguide.tex2
-rw-r--r--macros/latex-dev/base/exscale.dtx4
-rw-r--r--macros/latex-dev/base/exscale.ins4
-rw-r--r--macros/latex-dev/base/exscale.pdfbin212307 -> 204711 bytes
-rw-r--r--macros/latex-dev/base/fix-cm.dtx4
-rw-r--r--macros/latex-dev/base/fix-cm.ins4
-rw-r--r--macros/latex-dev/base/fix-cm.pdfbin287672 -> 287733 bytes
-rw-r--r--macros/latex-dev/base/fntguide.pdfbin493957 -> 502880 bytes
-rw-r--r--macros/latex-dev/base/fntguide.tex510
-rw-r--r--macros/latex-dev/base/fontdef.dtx4
-rw-r--r--macros/latex-dev/base/format.ins10
-rw-r--r--macros/latex-dev/base/graphpap.dtx4
-rw-r--r--macros/latex-dev/base/graphpap.ins4
-rw-r--r--macros/latex-dev/base/graphpap.pdfbin169323 -> 161713 bytes
-rw-r--r--macros/latex-dev/base/idx.tex2
-rw-r--r--macros/latex-dev/base/ifthen.dtx4
-rw-r--r--macros/latex-dev/base/ifthen.ins4
-rw-r--r--macros/latex-dev/base/ifthen.pdfbin220417 -> 220565 bytes
-rw-r--r--macros/latex-dev/base/inputenc.dtx6
-rw-r--r--macros/latex-dev/base/inputenc.ins4
-rw-r--r--macros/latex-dev/base/inputenc.pdfbin318168 -> 318204 bytes
-rw-r--r--macros/latex-dev/base/lablst.tex2
-rw-r--r--macros/latex-dev/base/lamport-manual.pdfbin170875 -> 170878 bytes
-rw-r--r--macros/latex-dev/base/latex209.dtx4
-rw-r--r--macros/latex-dev/base/latex209.ins4
-rw-r--r--macros/latex-dev/base/latexchanges.pdfbin469966 -> 0 bytes
-rw-r--r--macros/latex-dev/base/latexchanges.tex1025
-rw-r--r--macros/latex-dev/base/latexrelease.dtx4
-rw-r--r--macros/latex-dev/base/latexrelease.ins5
-rw-r--r--macros/latex-dev/base/latexrelease.pdfbin290495 -> 281895 bytes
-rw-r--r--macros/latex-dev/base/latexsym.dtx4
-rw-r--r--macros/latex-dev/base/latexsym.ins6
-rw-r--r--macros/latex-dev/base/latexsym.pdfbin208359 -> 200760 bytes
-rw-r--r--macros/latex-dev/base/lb2.err2
-rw-r--r--macros/latex-dev/base/lb2.pdfbin252154 -> 252140 bytes
-rw-r--r--macros/latex-dev/base/letter.dtx6
-rw-r--r--macros/latex-dev/base/letter.ins4
-rw-r--r--macros/latex-dev/base/letter.pdfbin328872 -> 337772 bytes
-rw-r--r--macros/latex-dev/base/lgc2.err10
-rw-r--r--macros/latex-dev/base/lgc2.pdfbin215091 -> 215684 bytes
-rw-r--r--macros/latex-dev/base/lppl.pdfbin132373 -> 132382 bytes
-rw-r--r--macros/latex-dev/base/ltalloc.dtx4
-rw-r--r--macros/latex-dev/base/ltbibl.dtx4
-rw-r--r--macros/latex-dev/base/ltboxes.dtx4
-rw-r--r--macros/latex-dev/base/ltclass.dtx78
-rw-r--r--macros/latex-dev/base/ltcmd.dtx32
-rw-r--r--macros/latex-dev/base/ltcmdhooks-code.pdfbin719017 -> 719936 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks-doc.pdfbin479264 -> 478769 bytes
-rw-r--r--macros/latex-dev/base/ltcmdhooks-doc.tex1
-rw-r--r--macros/latex-dev/base/ltcmdhooks.dtx11
-rw-r--r--macros/latex-dev/base/ltcntrl.dtx4
-rw-r--r--macros/latex-dev/base/ltcounts.dtx4
-rw-r--r--macros/latex-dev/base/ltdefns.dtx4
-rw-r--r--macros/latex-dev/base/ltdirchk.dtx21
-rw-r--r--macros/latex-dev/base/lterror.dtx4
-rw-r--r--macros/latex-dev/base/ltexpl.dtx129
-rw-r--r--macros/latex-dev/base/ltfilehook-code.pdfbin796010 -> 796244 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.pdfbin546909 -> 546703 bytes
-rw-r--r--macros/latex-dev/base/ltfilehook-doc.tex1
-rw-r--r--macros/latex-dev/base/ltfilehook.dtx4
-rw-r--r--macros/latex-dev/base/ltfiles.dtx4
-rw-r--r--macros/latex-dev/base/ltfinal.dtx15
-rw-r--r--macros/latex-dev/base/ltfloat.dtx4
-rw-r--r--macros/latex-dev/base/ltfntcmd.dtx4
-rw-r--r--macros/latex-dev/base/ltfssaxes.dtx4
-rw-r--r--macros/latex-dev/base/ltfssbas.dtx14
-rw-r--r--macros/latex-dev/base/ltfsscmp.dtx4
-rw-r--r--macros/latex-dev/base/ltfssdcl.dtx4
-rw-r--r--macros/latex-dev/base/ltfssini.dtx4
-rw-r--r--macros/latex-dev/base/ltfsstrc.dtx4
-rw-r--r--macros/latex-dev/base/lthooks-code.pdfbin1084265 -> 1091130 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.pdfbin703741 -> 702777 bytes
-rw-r--r--macros/latex-dev/base/lthooks-doc.tex1
-rw-r--r--macros/latex-dev/base/lthooks.dtx44
-rw-r--r--macros/latex-dev/base/lthyphen.dtx4
-rw-r--r--macros/latex-dev/base/ltidxglo.dtx4
-rw-r--r--macros/latex-dev/base/ltkeys.dtx454
-rw-r--r--macros/latex-dev/base/ltlength.dtx4
-rw-r--r--macros/latex-dev/base/ltlists.dtx4
-rw-r--r--macros/latex-dev/base/ltlogos.dtx4
-rw-r--r--macros/latex-dev/base/ltluatex.dtx58
-rw-r--r--macros/latex-dev/base/ltluatex.pdfbin325177 -> 317700 bytes
-rw-r--r--macros/latex-dev/base/ltmath.dtx4
-rw-r--r--macros/latex-dev/base/ltmeta.dtx189
-rw-r--r--macros/latex-dev/base/ltmiscen.dtx4
-rw-r--r--macros/latex-dev/base/ltnews.pdfbin1120386 -> 1157677 bytes
-rw-r--r--macros/latex-dev/base/ltnews.tex10
-rw-r--r--macros/latex-dev/base/ltnews01.pdfbin161518 -> 161518 bytes
-rw-r--r--macros/latex-dev/base/ltnews01.tex2
-rw-r--r--macros/latex-dev/base/ltnews02.pdfbin159793 -> 159792 bytes
-rw-r--r--macros/latex-dev/base/ltnews02.tex2
-rw-r--r--macros/latex-dev/base/ltnews03.pdfbin159336 -> 159332 bytes
-rw-r--r--macros/latex-dev/base/ltnews03.tex2
-rw-r--r--macros/latex-dev/base/ltnews04.pdfbin152526 -> 152525 bytes
-rw-r--r--macros/latex-dev/base/ltnews04.tex2
-rw-r--r--macros/latex-dev/base/ltnews05.pdfbin174501 -> 174494 bytes
-rw-r--r--macros/latex-dev/base/ltnews05.tex2
-rw-r--r--macros/latex-dev/base/ltnews06.pdfbin142851 -> 142849 bytes
-rw-r--r--macros/latex-dev/base/ltnews06.tex2
-rw-r--r--macros/latex-dev/base/ltnews07.pdfbin137813 -> 137811 bytes
-rw-r--r--macros/latex-dev/base/ltnews07.tex2
-rw-r--r--macros/latex-dev/base/ltnews08.pdfbin155055 -> 155053 bytes
-rw-r--r--macros/latex-dev/base/ltnews08.tex2
-rw-r--r--macros/latex-dev/base/ltnews09.pdfbin129573 -> 129570 bytes
-rw-r--r--macros/latex-dev/base/ltnews09.tex2
-rw-r--r--macros/latex-dev/base/ltnews10.pdfbin169412 -> 169416 bytes
-rw-r--r--macros/latex-dev/base/ltnews10.tex2
-rw-r--r--macros/latex-dev/base/ltnews11.pdfbin111955 -> 111948 bytes
-rw-r--r--macros/latex-dev/base/ltnews11.tex2
-rw-r--r--macros/latex-dev/base/ltnews12.pdfbin156556 -> 156551 bytes
-rw-r--r--macros/latex-dev/base/ltnews12.tex2
-rw-r--r--macros/latex-dev/base/ltnews13.pdfbin182226 -> 182225 bytes
-rw-r--r--macros/latex-dev/base/ltnews13.tex2
-rw-r--r--macros/latex-dev/base/ltnews14.pdfbin170473 -> 170473 bytes
-rw-r--r--macros/latex-dev/base/ltnews14.tex2
-rw-r--r--macros/latex-dev/base/ltnews15.pdfbin130310 -> 130309 bytes
-rw-r--r--macros/latex-dev/base/ltnews15.tex2
-rw-r--r--macros/latex-dev/base/ltnews16.pdfbin138080 -> 138073 bytes
-rw-r--r--macros/latex-dev/base/ltnews16.tex2
-rw-r--r--macros/latex-dev/base/ltnews17.pdfbin166234 -> 166228 bytes
-rw-r--r--macros/latex-dev/base/ltnews17.tex2
-rw-r--r--macros/latex-dev/base/ltnews18.pdfbin38031 -> 38033 bytes
-rw-r--r--macros/latex-dev/base/ltnews18.tex2
-rw-r--r--macros/latex-dev/base/ltnews19.pdfbin230027 -> 230028 bytes
-rw-r--r--macros/latex-dev/base/ltnews19.tex2
-rw-r--r--macros/latex-dev/base/ltnews20.pdfbin318546 -> 318548 bytes
-rw-r--r--macros/latex-dev/base/ltnews21.pdfbin244868 -> 244867 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.pdfbin317766 -> 317773 bytes
-rw-r--r--macros/latex-dev/base/ltnews22.tex2
-rw-r--r--macros/latex-dev/base/ltnews23.pdfbin286590 -> 286591 bytes
-rw-r--r--macros/latex-dev/base/ltnews23.tex2
-rw-r--r--macros/latex-dev/base/ltnews24.pdfbin265283 -> 265279 bytes
-rw-r--r--macros/latex-dev/base/ltnews24.tex2
-rw-r--r--macros/latex-dev/base/ltnews25.pdfbin204933 -> 204935 bytes
-rw-r--r--macros/latex-dev/base/ltnews25.tex2
-rw-r--r--macros/latex-dev/base/ltnews26.pdfbin379461 -> 379462 bytes
-rw-r--r--macros/latex-dev/base/ltnews26.tex2
-rw-r--r--macros/latex-dev/base/ltnews27.pdfbin250593 -> 250592 bytes
-rw-r--r--macros/latex-dev/base/ltnews27.tex2
-rw-r--r--macros/latex-dev/base/ltnews28.pdfbin376645 -> 376643 bytes
-rw-r--r--macros/latex-dev/base/ltnews28.tex2
-rw-r--r--macros/latex-dev/base/ltnews29.pdfbin455099 -> 455107 bytes
-rw-r--r--macros/latex-dev/base/ltnews29.tex2
-rw-r--r--macros/latex-dev/base/ltnews30.pdfbin511899 -> 511909 bytes
-rw-r--r--macros/latex-dev/base/ltnews31.pdfbin526316 -> 526323 bytes
-rw-r--r--macros/latex-dev/base/ltnews32.pdfbin546165 -> 546156 bytes
-rw-r--r--macros/latex-dev/base/ltnews33.pdfbin522413 -> 522412 bytes
-rw-r--r--macros/latex-dev/base/ltnews34.pdfbin507766 -> 508044 bytes
-rw-r--r--macros/latex-dev/base/ltnews34.tex9
-rw-r--r--macros/latex-dev/base/ltnews35.pdfbin0 -> 477992 bytes
-rw-r--r--macros/latex-dev/base/ltnews35.tex583
-rw-r--r--macros/latex-dev/base/ltoutenc.dtx387
-rw-r--r--macros/latex-dev/base/ltoutenc.ins4
-rw-r--r--macros/latex-dev/base/ltoutput.dtx4
-rw-r--r--macros/latex-dev/base/ltpage.dtx4
-rw-r--r--macros/latex-dev/base/ltpageno.dtx4
-rw-r--r--macros/latex-dev/base/ltpar.dtx4
-rw-r--r--macros/latex-dev/base/ltpara-code.pdfbin667738 -> 666571 bytes
-rw-r--r--macros/latex-dev/base/ltpara-doc.pdfbin560303 -> 560041 bytes
-rw-r--r--macros/latex-dev/base/ltpara-doc.tex1
-rw-r--r--macros/latex-dev/base/ltpara.dtx4
-rw-r--r--macros/latex-dev/base/ltpictur.dtx4
-rw-r--r--macros/latex-dev/base/ltplain.dtx4
-rw-r--r--macros/latex-dev/base/ltsect.dtx4
-rw-r--r--macros/latex-dev/base/ltshipout-code.pdfbin818871 -> 819385 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.pdfbin564684 -> 564740 bytes
-rw-r--r--macros/latex-dev/base/ltshipout-doc.tex1
-rw-r--r--macros/latex-dev/base/ltshipout.dtx56
-rw-r--r--macros/latex-dev/base/ltspace.dtx4
-rw-r--r--macros/latex-dev/base/lttab.dtx4
-rw-r--r--macros/latex-dev/base/lttextcomp.dtx40
-rw-r--r--macros/latex-dev/base/ltthm.dtx4
-rw-r--r--macros/latex-dev/base/ltvers.dtx6
-rw-r--r--macros/latex-dev/base/ltx3info.pdfbin219354 -> 219349 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.dtx93
-rw-r--r--macros/latex-dev/base/ltxdoc.pdfbin238577 -> 233208 bytes
-rw-r--r--macros/latex-dev/base/ltxref.dtx4
-rw-r--r--macros/latex-dev/base/makeindx.dtx4
-rw-r--r--macros/latex-dev/base/makeindx.ins4
-rw-r--r--macros/latex-dev/base/makeindx.pdfbin173471 -> 165821 bytes
-rw-r--r--macros/latex-dev/base/manifest.txt13
-rw-r--r--macros/latex-dev/base/modguide.pdfbin243601 -> 243605 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.dtx4
-rw-r--r--macros/latex-dev/base/nfssfont.dtx4
-rw-r--r--macros/latex-dev/base/nfssfont.ins4
-rw-r--r--macros/latex-dev/base/nfssfont.pdfbin218782 -> 211180 bytes
-rw-r--r--macros/latex-dev/base/olddc.ins4
-rw-r--r--macros/latex-dev/base/oldlfont.dtx4
-rw-r--r--macros/latex-dev/base/preload.dtx4
-rw-r--r--macros/latex-dev/base/proc.dtx20
-rw-r--r--macros/latex-dev/base/proc.ins4
-rw-r--r--macros/latex-dev/base/proc.pdfbin233995 -> 227059 bytes
-rw-r--r--macros/latex-dev/base/slides.dtx4
-rw-r--r--macros/latex-dev/base/slides.ins8
-rw-r--r--macros/latex-dev/base/slides.pdfbin374076 -> 375286 bytes
-rw-r--r--macros/latex-dev/base/slifonts.pdfbin234008 -> 234191 bytes
-rw-r--r--macros/latex-dev/base/source2e.pdfbin5462735 -> 5600535 bytes
-rw-r--r--macros/latex-dev/base/source2e.tex6
-rw-r--r--macros/latex-dev/base/source2edoc.cls4
-rw-r--r--macros/latex-dev/base/syntonly.dtx4
-rw-r--r--macros/latex-dev/base/syntonly.ins4
-rw-r--r--macros/latex-dev/base/syntonly.pdfbin197645 -> 189855 bytes
-rw-r--r--macros/latex-dev/base/testpage.tex2
-rw-r--r--macros/latex-dev/base/tex2.txt83
-rw-r--r--macros/latex-dev/base/texpert.txt210
-rw-r--r--macros/latex-dev/base/tlc2.err22
-rw-r--r--macros/latex-dev/base/tlc2.pdfbin289519 -> 290615 bytes
-rw-r--r--macros/latex-dev/base/tulm.ins4
-rw-r--r--macros/latex-dev/base/tulm.pdfbin170530 -> 162772 bytes
-rw-r--r--macros/latex-dev/base/unpack.ins2
-rw-r--r--macros/latex-dev/base/usrguide.pdfbin430996 -> 430994 bytes
-rw-r--r--macros/latex-dev/base/usrguide.tex2
-rw-r--r--macros/latex-dev/base/usrguide3.pdfbin325727 -> 390416 bytes
-rw-r--r--macros/latex-dev/base/usrguide3.tex314
-rw-r--r--macros/latex-dev/base/utf8ienc.dtx23
-rw-r--r--macros/latex-dev/base/utf8ienc.pdfbin361583 -> 352648 bytes
-rw-r--r--macros/latex-dev/base/webcomp.pdfbin146200 -> 146198 bytes
-rw-r--r--macros/latex-dev/required/amsmath/README.md4
-rw-r--r--macros/latex-dev/required/amsmath/amsbsy.dtx2
-rw-r--r--macros/latex-dev/required/amsmath/amsbsy.ins2
-rw-r--r--macros/latex-dev/required/amsmath/amsbsy.pdfbin173746 -> 174944 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amscd.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amscd.ins4
-rw-r--r--macros/latex-dev/required/amsmath/amscd.pdfbin178672 -> 179945 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsgen.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amsgen.ins2
-rw-r--r--macros/latex-dev/required/amsmath/amsgen.pdfbin176740 -> 178187 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsldoc.pdfbin508199 -> 508210 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsldoc.tex2
-rw-r--r--macros/latex-dev/required/amsmath/amsmath.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amsmath.ins4
-rw-r--r--macros/latex-dev/required/amsmath/amsmath.pdfbin399735 -> 418923 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsopn.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amsopn.ins4
-rw-r--r--macros/latex-dev/required/amsmath/amsopn.pdfbin138783 -> 139709 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amstext.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amstext.ins4
-rw-r--r--macros/latex-dev/required/amsmath/amstext.pdfbin215810 -> 217498 bytes
-rw-r--r--macros/latex-dev/required/amsmath/amsxtra.dtx4
-rw-r--r--macros/latex-dev/required/amsmath/amsxtra.ins4
-rw-r--r--macros/latex-dev/required/amsmath/amsxtra.pdfbin112556 -> 113561 bytes
-rw-r--r--macros/latex-dev/required/amsmath/changes.txt4
-rw-r--r--macros/latex-dev/required/amsmath/subeqn.pdfbin109737 -> 109731 bytes
-rw-r--r--macros/latex-dev/required/amsmath/technote.pdfbin145610 -> 147462 bytes
-rw-r--r--macros/latex-dev/required/amsmath/testmath.pdfbin454662 -> 454511 bytes
-rw-r--r--macros/latex-dev/required/graphics/README.md4
-rw-r--r--macros/latex-dev/required/graphics/changes.txt10
-rw-r--r--macros/latex-dev/required/graphics/color.dtx25
-rw-r--r--macros/latex-dev/required/graphics/color.pdfbin215047 -> 212223 bytes
-rw-r--r--macros/latex-dev/required/graphics/drivers.dtx4
-rw-r--r--macros/latex-dev/required/graphics/drivers.pdfbin286309 -> 286459 bytes
-rw-r--r--macros/latex-dev/required/graphics/epsfig.dtx4
-rw-r--r--macros/latex-dev/required/graphics/epsfig.pdfbin167686 -> 159997 bytes
-rw-r--r--macros/latex-dev/required/graphics/graphics.dtx4
-rw-r--r--macros/latex-dev/required/graphics/graphics.ins2
-rw-r--r--macros/latex-dev/required/graphics/graphics.pdfbin310675 -> 303042 bytes
-rw-r--r--macros/latex-dev/required/graphics/graphicx.dtx4
-rw-r--r--macros/latex-dev/required/graphics/graphicx.pdfbin248231 -> 240623 bytes
-rw-r--r--macros/latex-dev/required/graphics/grfguide.pdfbin330070 -> 330978 bytes
-rw-r--r--macros/latex-dev/required/graphics/grfguide.tex17
-rw-r--r--macros/latex-dev/required/graphics/keyval.dtx4
-rw-r--r--macros/latex-dev/required/graphics/keyval.pdfbin239654 -> 239823 bytes
-rw-r--r--macros/latex-dev/required/graphics/lscape.dtx4
-rw-r--r--macros/latex-dev/required/graphics/lscape.pdfbin163584 -> 155986 bytes
-rw-r--r--macros/latex-dev/required/graphics/mathcolor.dtx421
-rw-r--r--macros/latex-dev/required/graphics/mathcolor.pdfbin0 -> 473568 bytes
-rw-r--r--macros/latex-dev/required/graphics/rotating.dtx4
-rw-r--r--macros/latex-dev/required/graphics/rotating.pdfbin269530 -> 278466 bytes
-rw-r--r--macros/latex-dev/required/graphics/rotex.pdfbin172231 -> 172228 bytes
-rw-r--r--macros/latex-dev/required/graphics/trig.dtx4
-rw-r--r--macros/latex-dev/required/graphics/trig.pdfbin206897 -> 199266 bytes
-rw-r--r--macros/latex-dev/required/latex-lab/README.md34
-rw-r--r--macros/latex-dev/required/latex-lab/changes.txt11
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdfbin0 -> 511324 bytes
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex4
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdfbin0 -> 375470 bytes
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex6
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support.dtx415
-rw-r--r--macros/latex-dev/required/latex-lab/documentmetadata-support.ins71
-rw-r--r--macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx75
-rw-r--r--macros/latex-dev/required/latex-lab/latex-lab-testphase.pdfbin0 -> 304289 bytes
-rw-r--r--macros/latex-dev/required/tools/README.md2
-rw-r--r--macros/latex-dev/required/tools/afterpage.dtx4
-rw-r--r--macros/latex-dev/required/tools/afterpage.ins4
-rw-r--r--macros/latex-dev/required/tools/afterpage.pdfbin205344 -> 197738 bytes
-rw-r--r--macros/latex-dev/required/tools/array.dtx6
-rw-r--r--macros/latex-dev/required/tools/array.pdfbin517114 -> 516836 bytes
-rw-r--r--macros/latex-dev/required/tools/bm.dtx13
-rw-r--r--macros/latex-dev/required/tools/bm.ins4
-rw-r--r--macros/latex-dev/required/tools/bm.pdfbin331424 -> 323432 bytes
-rw-r--r--macros/latex-dev/required/tools/calc.dtx4
-rw-r--r--macros/latex-dev/required/tools/calc.pdfbin370414 -> 370552 bytes
-rw-r--r--macros/latex-dev/required/tools/changes.txt18
-rw-r--r--macros/latex-dev/required/tools/dcolumn.dtx4
-rw-r--r--macros/latex-dev/required/tools/dcolumn.pdfbin220689 -> 220834 bytes
-rw-r--r--macros/latex-dev/required/tools/delarray.dtx4
-rw-r--r--macros/latex-dev/required/tools/delarray.pdfbin198647 -> 191064 bytes
-rw-r--r--macros/latex-dev/required/tools/enumerate.dtx4
-rw-r--r--macros/latex-dev/required/tools/enumerate.pdfbin215355 -> 215498 bytes
-rw-r--r--macros/latex-dev/required/tools/fileerr.dtx4
-rw-r--r--macros/latex-dev/required/tools/fileerr.pdfbin195578 -> 187725 bytes
-rw-r--r--macros/latex-dev/required/tools/fontsmpl.dtx4
-rw-r--r--macros/latex-dev/required/tools/fontsmpl.pdfbin154034 -> 146446 bytes
-rw-r--r--macros/latex-dev/required/tools/ftnright.dtx4
-rw-r--r--macros/latex-dev/required/tools/ftnright.pdfbin370277 -> 387226 bytes
-rw-r--r--macros/latex-dev/required/tools/hhline.dtx4
-rw-r--r--macros/latex-dev/required/tools/hhline.pdfbin189538 -> 189679 bytes
-rw-r--r--macros/latex-dev/required/tools/indentfirst.dtx4
-rw-r--r--macros/latex-dev/required/tools/indentfirst.pdfbin157803 -> 157954 bytes
-rw-r--r--macros/latex-dev/required/tools/layout.dtx4
-rw-r--r--macros/latex-dev/required/tools/layout.pdfbin267761 -> 259969 bytes
-rw-r--r--macros/latex-dev/required/tools/longtable.dtx4
-rw-r--r--macros/latex-dev/required/tools/longtable.ins4
-rw-r--r--macros/latex-dev/required/tools/longtable.pdfbin382155 -> 391313 bytes
-rw-r--r--macros/latex-dev/required/tools/multicol-2019-10-01.sty1105
-rw-r--r--macros/latex-dev/required/tools/multicol.dtx14
-rw-r--r--macros/latex-dev/required/tools/multicol.ins4
-rw-r--r--macros/latex-dev/required/tools/multicol.pdfbin518295 -> 521446 bytes
-rw-r--r--macros/latex-dev/required/tools/rawfonts.dtx4
-rw-r--r--macros/latex-dev/required/tools/rawfonts.pdfbin146534 -> 138963 bytes
-rw-r--r--macros/latex-dev/required/tools/shellesc.dtx2
-rw-r--r--macros/latex-dev/required/tools/shellesc.pdfbin183532 -> 175929 bytes
-rw-r--r--macros/latex-dev/required/tools/showkeys.dtx4
-rw-r--r--macros/latex-dev/required/tools/showkeys.pdfbin260624 -> 252158 bytes
-rw-r--r--macros/latex-dev/required/tools/somedefs.dtx4
-rw-r--r--macros/latex-dev/required/tools/somedefs.pdfbin175169 -> 167572 bytes
-rw-r--r--macros/latex-dev/required/tools/tabularx.dtx4
-rw-r--r--macros/latex-dev/required/tools/tabularx.ins4
-rw-r--r--macros/latex-dev/required/tools/tabularx.pdfbin278041 -> 287073 bytes
-rw-r--r--macros/latex-dev/required/tools/theorem.dtx4
-rw-r--r--macros/latex-dev/required/tools/theorem.pdfbin351794 -> 351702 bytes
-rw-r--r--macros/latex-dev/required/tools/tools-overview.pdfbin73674 -> 73672 bytes
-rw-r--r--macros/latex-dev/required/tools/tools-overview.tex2
-rw-r--r--macros/latex-dev/required/tools/tools.ins4
-rw-r--r--macros/latex-dev/required/tools/trace.dtx4
-rw-r--r--macros/latex-dev/required/tools/trace.pdfbin229713 -> 222076 bytes
-rw-r--r--macros/latex-dev/required/tools/varioref.dtx54
-rw-r--r--macros/latex-dev/required/tools/varioref.ins4
-rw-r--r--macros/latex-dev/required/tools/varioref.pdfbin383524 -> 383856 bytes
-rw-r--r--macros/latex-dev/required/tools/verbatim.dtx4
-rw-r--r--macros/latex-dev/required/tools/verbatim.pdfbin330815 -> 330963 bytes
-rw-r--r--macros/latex-dev/required/tools/xr.dtx4
-rw-r--r--macros/latex-dev/required/tools/xr.pdfbin177595 -> 169986 bytes
-rw-r--r--macros/latex-dev/required/tools/xspace.dtx4
-rw-r--r--macros/latex-dev/required/tools/xspace.pdfbin256897 -> 257018 bytes
-rw-r--r--macros/latex/contrib/dbshow/README.md75
-rw-r--r--macros/latex/contrib/dbshow/dbshow-doc.pdfbin373472 -> 0 bytes
-rw-r--r--macros/latex/contrib/dbshow/dbshow-doc.tex1662
-rw-r--r--macros/latex/contrib/dbshow/dbshow.dtx3740
-rw-r--r--macros/latex/contrib/dbshow/dbshow.ins90
-rw-r--r--macros/latex/contrib/dbshow/dbshow.pdfbin0 -> 440283 bytes
-rw-r--r--macros/latex/contrib/dbshow/dbshow.sty906
-rw-r--r--macros/latex/contrib/esami/README6
-rw-r--r--macros/latex/contrib/esami/VERSION2
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.pdfbin481289 -> 480874 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-en.tex17
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.pdfbin489492 -> 488964 bytes
-rw-r--r--macros/latex/contrib/esami/doc/esami-doc-it.tex20
-rw-r--r--macros/latex/contrib/esami/doc/examples/problem2-tabella.tex4
-rw-r--r--macros/latex/contrib/esami/doc/examples/problem3-matching.tex6
-rw-r--r--macros/latex/contrib/esami/doc/examples/test2.tex7
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdfbin65018 -> 115953 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex124
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-luatex.pdfbin55273 -> 91759 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-luatex.tex123
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-sol.pdfbin211514 -> 257725 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-sol.tex49
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdfbin61685 -> 68345 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex84
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex124
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex.pdfbin52621 -> 58499 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA-xetex.tex124
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA.pdfbin178754 -> 217098 bytes
-rw-r--r--macros/latex/contrib/esami/doc/examples/testA.tex52
-rw-r--r--macros/latex/contrib/esami/esami-xyz.cfg6
-rw-r--r--macros/latex/contrib/esami/esami.sty56
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md27
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/README.md4
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx79
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdfbin952620 -> 953379 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty14
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx362
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdfbin594274 -> 676300 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdfbin578684 -> 577785 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx12
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdfbin526994 -> 505418 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdfbin547745 -> 546853 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdfbin530763 -> 529883 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdfbin533988 -> 533076 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdfbin526155 -> 525259 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdfbin576165 -> 575283 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx6
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdfbin505392 -> 504512 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx27
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdfbin739113 -> 739053 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx11
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdfbin553221 -> 552088 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx12
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdfbin672870 -> 648865 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx18
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdfbin665368 -> 664425 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdfbin518167 -> 517264 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx8
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdfbin418232 -> 417279 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx537
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdfbin537194 -> 572674 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx3
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdfbin384131 -> 383080 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx26
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdfbin423095 -> 424541 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx48
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdfbin446276 -> 446113 bytes
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty2
-rw-r--r--macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty2
-rw-r--r--macros/latex/contrib/siunitx/CHANGELOG.md11
-rw-r--r--macros/latex/contrib/siunitx/siunitx-code.pdfbin607583 -> 607833 bytes
-rw-r--r--macros/latex/contrib/siunitx/siunitx-number.dtx6
-rw-r--r--macros/latex/contrib/siunitx/siunitx.dtx2
-rw-r--r--macros/latex/contrib/siunitx/siunitx.pdfbin638333 -> 638335 bytes
-rw-r--r--macros/latex/contrib/tagpdf/README.md50
-rw-r--r--macros/latex/contrib/tagpdf/ex-AF-file.pdfbin23868 -> 8652 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-AF-file.tex25
-rw-r--r--macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdfbin17702 -> 17742 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-alt-actualtext.tex7
-rw-r--r--macros/latex/contrib/tagpdf/ex-attribute-luatex.pdfbin6633 -> 6626 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-attribute.pdfbin16458 -> 0 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdfbin7825 -> 7854 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf (renamed from macros/latex/contrib/tagpdf/ex-mc-manual-para-split.pdf)bin23337 -> 22818 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex (renamed from macros/latex/contrib/tagpdf/ex-mc-manual-para-split.tex)12
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdfbin16874 -> 16888 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex100
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-list.tex101
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdfbin18414 -> 18461 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.pdf2134
-rw-r--r--macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdfbin20930 -> 21067 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-softhyphen.pdfbin6831 -> 6842 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdfbin4520 -> 4618 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex13
-rw-r--r--macros/latex/contrib/tagpdf/ex-structure-luatex.pdfbin12392 -> 0 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-structure-obsolete.tex (renamed from macros/latex/contrib/tagpdf/ex-structure.tex)6
-rw-r--r--macros/latex/contrib/tagpdf/ex-tagpdf-template.pdfbin19365 -> 19363 bytes
-rw-r--r--macros/latex/contrib/tagpdf/ex-tagpdf-template.tex24
-rw-r--r--macros/latex/contrib/tagpdf/example-input-file.tex5
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-backend.dtx16
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-checks.dtx138
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.pdfbin1139025 -> 1195004 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-code.tex11
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx52
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx19
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx22
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-roles.dtx51
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-space.dtx20
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-struct.dtx200
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-tree.dtx6
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf-user.dtx152
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.dtx124
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.ins26
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.pdfbin3138639 -> 486212 bytes
-rw-r--r--macros/latex/contrib/tagpdf/tagpdf.tex137
-rw-r--r--macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty50
-rw-r--r--support/TeX4ht/source/ChangeLog10
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex3
-rw-r--r--support/TeX4ht/source/tex4ht-ooffice.tex12
-rwxr-xr-xsystems/texlive/tlnet/tlpkg/installer/config.guess9
-rw-r--r--systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl1
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb191
-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.xzbin2340740 -> 2340544 bytes
-rw-r--r--systems/win32/miktex/tm/packages/next/pr.ini8
-rw-r--r--systems/win32/miktex/tm/packages/pr.ini8
-rw-r--r--timestamp2
521 files changed, 18122 insertions, 12630 deletions
diff --git a/FILES.byname b/FILES.byname
index 71beb56947..56d8c5f30e 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -5108,7 +5108,7 @@
1990/10/02 | 5440 | dviware/vutex/vaxvms.hlp
1990/10/02 | 812 | dviware/vutex/vaxvms.ins
1990/10/02 | 127576 | dviware/vutex/vutex.web
-2022/01/12 | 255376 | FILES.last07days
+2022/01/13 | 262204 | FILES.last07days
2021/07/24 | 1139410 | fonts/aboensis/Aboensis.glyphs
2021/07/24 | 18907382 | fonts/aboensis/aboensis.pdf
2021/07/24 | 137860 | fonts/aboensis/Aboensis-Regular.otf
@@ -160704,8 +160704,8 @@
2021/08/21 | 3579 | info/biblio/tugboat.ltx
2014/08/12 | 20186 | info/biblio/type.bib
2019/12/12 | 2025 | info/biblio/type.ltx
-2021/12/18 | 1163183 | info/biblio/typeset.bib
-2021/07/30 | 2844 | info/biblio/typeset.ltx
+2022/01/13 | 1175578 | info/biblio/typeset.bib
+2022/01/13 | 2850 | info/biblio/typeset.ltx
1996/03/21 | 590 | info/biblio/widebib.sty
1994/09/24 | 2480 | info/biblio/xcite.sty
2019/10/22 | 2296480 | info/biblio.zip
@@ -184177,7 +184177,7 @@
2012/09/24 | 130991 | install/macros/latex/contrib/scrjrnl.tds.zip
2021/11/10 | 657160 | install/macros/latex/contrib/sdaps.tds.zip
2019/12/10 | 544332 | install/macros/latex/contrib/selinput.tds.zip
-2022/01/12 | 1461075 | install/macros/latex/contrib/siunitx.tds.zip
+2022/01/13 | 1461338 | install/macros/latex/contrib/siunitx.tds.zip
2019/10/15 | 315856 | install/macros/latex/contrib/skmath.tds.zip
2019/10/16 | 345652 | install/macros/latex/contrib/skrapport.tds.zip
2019/12/15 | 357584 | install/macros/latex/contrib/soulutf8.tds.zip
@@ -184237,11 +184237,12 @@
2020/05/01 | 293478 | install/macros/latex/contrib/zhnumber.tds.zip
2022/01/10 | 1433166 | install/macros/latex/contrib/zref-clever.tds.zip
2020/10/09 | 728226 | install/macros/latex/contrib/zref.tds.zip
-2021/11/12 | 35338888 | install/macros/latex-dev/latex-base-dev.tds.zip
-2021/11/12 | 2767286 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip
+2022/01/12 | 36684397 | install/macros/latex-dev/latex-base-dev.tds.zip
+2022/01/12 | 2792859 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip
2021/11/12 | 244277 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip
-2021/11/12 | 2668249 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip
-2021/11/12 | 7360495 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
+2022/01/12 | 3108444 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip
+2022/01/12 | 1171263 | install/macros/latex-dev/required/latex-lab-dev.tds.zip
+2022/01/12 | 7322212 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
2021/12/06 | 35260885 | install/macros/latex/latex-base.tds.zip
2020/06/01 | 1578753 | install/macros/latex/required/amscls.tds.zip
2021/12/30 | 2880395 | install/macros/latex/required/babel-base.tds.zip
@@ -207690,11 +207691,11 @@
2012/12/31 | 7429 | macros/latex/contrib/dblfloatfix/dblfloatfix.sty
2012/12/31 | 2019 | macros/latex/contrib/dblfloatfix/dblfloatfix.tex
2013/01/29 | 220773 | macros/latex/contrib/dblfloatfix.zip
-2022/01/09 | 373472 | macros/latex/contrib/dbshow/dbshow-doc.pdf
-2022/01/09 | 56385 | macros/latex/contrib/dbshow/dbshow-doc.tex
-2022/01/09 | 29523 | macros/latex/contrib/dbshow/dbshow.sty
-2022/01/09 | 1146 | macros/latex/contrib/dbshow/README.md
-2022/01/10 | 385158 | macros/latex/contrib/dbshow.zip
+2022/01/13 | 122225 | macros/latex/contrib/dbshow/dbshow.dtx
+2022/01/13 | 3425 | macros/latex/contrib/dbshow/dbshow.ins
+2022/01/13 | 440283 | macros/latex/contrib/dbshow/dbshow.pdf
+2022/01/13 | 2197 | macros/latex/contrib/dbshow/README.md
+2022/01/13 | 454999 | macros/latex/contrib/dbshow.zip
2021/09/03 | 59921 | macros/latex/contrib/dccpaper/dccpaper-by.eps
2021/09/03 | 5012 | macros/latex/contrib/dccpaper/dccpaper-by.pdf
2021/09/03 | 99097 | macros/latex/contrib/dccpaper/dccpaper.dtx
@@ -209526,49 +209527,54 @@
2020/06/04 | 346 | macros/latex/contrib/erw-l3/README.md
2020/06/04 | 682019 | macros/latex/contrib/erw-l3.zip
2021/10/11 | 1571 | macros/latex/contrib/esami/doc/esami.bib
-2021/10/11 | 481289 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
-2021/10/11 | 52623 | macros/latex/contrib/esami/doc/esami-doc-en.tex
-2021/10/11 | 489492 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
-2021/10/11 | 56851 | macros/latex/contrib/esami/doc/esami-doc-it.tex
-2021/10/11 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
+2022/01/13 | 480874 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
+2022/01/13 | 52835 | macros/latex/contrib/esami/doc/esami-doc-en.tex
+2022/01/13 | 488964 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
+2022/01/13 | 57063 | macros/latex/contrib/esami/doc/esami-doc-it.tex
+2022/01/13 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
2015/07/01 | 2349 | macros/latex/contrib/esami/doc/examples/master.tex
-2021/10/11 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
-2021/10/11 | 696 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
-2021/10/11 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
-2021/10/11 | 503 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
-2021/10/11 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
-2021/10/11 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
-2021/10/11 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
-2021/10/11 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
-2021/10/11 | 6349 | macros/latex/contrib/esami/doc/examples/test14.tex
-2021/10/11 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
-2021/10/11 | 1103 | macros/latex/contrib/esami/doc/examples/test2.tex
-2021/10/11 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
-2021/10/11 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
-2021/10/11 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
-2021/10/11 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
-2015/02/22 | 55273 | macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
-2015/02/22 | 65018 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
-2018/10/23 | 178754 | macros/latex/contrib/esami/doc/examples/testA.pdf
-2018/12/07 | 211514 | macros/latex/contrib/esami/doc/examples/testA-sol.pdf
-2021/10/11 | 2863 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
-2017/11/28 | 2947 | macros/latex/contrib/esami/doc/examples/testA.tex
-2015/02/22 | 52621 | macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
-2015/02/22 | 61685 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
+2022/01/13 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
+2022/01/13 | 752 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
+2022/01/13 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
+2022/01/13 | 575 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
+2022/01/13 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
+2022/01/13 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
+2022/01/13 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
+2022/01/13 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
+2022/01/13 | 6349 | macros/latex/contrib/esami/doc/examples/test14.tex
+2022/01/13 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
+2022/01/13 | 1026 | macros/latex/contrib/esami/doc/examples/test2.tex
+2022/01/13 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
+2022/01/13 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
+2022/01/13 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
+2022/01/13 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
+2022/01/13 | 91759 | macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
+2022/01/13 | 115953 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
+2022/01/13 | 2677 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex
+2022/01/13 | 2670 | macros/latex/contrib/esami/doc/examples/testA-luatex.tex
+2022/01/13 | 217098 | macros/latex/contrib/esami/doc/examples/testA.pdf
+2022/01/13 | 257725 | macros/latex/contrib/esami/doc/examples/testA-sol.pdf
+2022/01/13 | 3114 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
+2022/01/13 | 3005 | macros/latex/contrib/esami/doc/examples/testA.tex
+2022/01/13 | 58499 | macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
+2022/01/13 | 68345 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
+2022/01/13 | 2725 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
+2022/01/13 | 2673 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex
+2022/01/13 | 2675 | macros/latex/contrib/esami/doc/examples/testA-xetex.tex
2015/02/26 | 1311 | macros/latex/contrib/esami/doc/examples/totale-versioni.tex
-2021/10/11 | 80309 | macros/latex/contrib/esami/esami.sty
-2021/10/11 | 11301 | macros/latex/contrib/esami/esami-xyz.cfg
+2022/01/11 | 80887 | macros/latex/contrib/esami/esami.sty
+2022/01/11 | 11301 | macros/latex/contrib/esami/esami-xyz.cfg
2017/06/20 | 2637 | macros/latex/contrib/esami/es-french.lng
2016/08/31 | 2680 | macros/latex/contrib/esami/es-german.lng
-2021/10/11 | 2812 | macros/latex/contrib/esami/es-greek.lng
+2022/01/13 | 2812 | macros/latex/contrib/esami/es-greek.lng
2020/07/22 | 3026 | macros/latex/contrib/esami/es-italian.lng
-2021/10/11 | 2520 | macros/latex/contrib/esami/es-serbian.lng
+2022/01/13 | 2520 | macros/latex/contrib/esami/es-serbian.lng
2016/08/31 | 2836 | macros/latex/contrib/esami/es-spanish.lng
2017/06/20 | 2777 | macros/latex/contrib/esami/es-UKenglish.lng
2018/02/08 | 2492 | macros/latex/contrib/esami/es-USenglish.lng
-2021/10/11 | 2479 | macros/latex/contrib/esami/README
-2021/10/11 | 34 | macros/latex/contrib/esami/VERSION
-2021/10/11 | 1626572 | macros/latex/contrib/esami.zip
+2022/01/11 | 2479 | macros/latex/contrib/esami/README
+2022/01/11 | 34 | macros/latex/contrib/esami/VERSION
+2022/01/13 | 1806532 | macros/latex/contrib/esami.zip
2008/05/14 | 11107 | macros/latex/contrib/esdiff/esdiff.dtx
2008/05/14 | 824 | macros/latex/contrib/esdiff/esdiff.ins
2008/05/14 | 96415 | macros/latex/contrib/esdiff/esdiff.pdf
@@ -219892,56 +219898,56 @@
2019/12/05 | 299397 | macros/latex/contrib/pdflscape/pdflscape.pdf
2019/12/05 | 170 | macros/latex/contrib/pdflscape/README.md
2019/12/06 | 301872 | macros/latex/contrib/pdflscape.zip
-2021/08/28 | 4876 | macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
-2021/08/28 | 7728 | macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
-2021/08/28 | 176252 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
-2021/08/28 | 952620 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
-2021/08/28 | 4212 | macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
-2021/08/28 | 56755 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
-2021/08/28 | 594274 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
-2021/08/28 | 28757 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
-2021/08/28 | 578684 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
-2021/08/28 | 17429 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
-2021/08/28 | 526994 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
-2021/08/28 | 26672 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
-2021/08/28 | 547745 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
-2021/08/28 | 18289 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
-2021/08/28 | 530763 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
-2021/08/28 | 20556 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
-2021/08/28 | 533988 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
-2021/08/28 | 67782 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
-2021/08/28 | 739113 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
-2021/08/28 | 26662 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
-2021/08/28 | 526155 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
-2021/08/28 | 27438 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
-2021/08/28 | 576165 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
-2021/08/28 | 22113 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
-2021/08/28 | 505392 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
-2021/08/28 | 28041 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
-2021/08/28 | 553221 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
-2021/08/28 | 63320 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
-2021/08/28 | 672870 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
-2021/08/28 | 31463 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
-2021/08/28 | 665368 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
-2021/08/28 | 15784 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
-2021/08/28 | 518167 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
-2021/08/28 | 6549 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
-2021/08/28 | 418232 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
-2021/08/28 | 4041 | macros/latex/contrib/pdfmanagement-testphase/l3ref-tmp.sty
-2021/08/28 | 16057 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
-2021/08/28 | 537194 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
-2021/08/28 | 4622 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
-2021/08/28 | 384131 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
-2021/08/28 | 1822 | macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
-2021/08/28 | 11464 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
-2021/08/28 | 423095 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
-2021/08/28 | 17807 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
-2021/08/28 | 4884 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
-2021/08/28 | 446276 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
-2021/08/28 | 1195 | macros/latex/contrib/pdfmanagement-testphase/README.md
-2021/08/28 | 580 | macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
-2021/08/28 | 4617 | macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
-2021/08/28 | 11053339 | macros/latex/contrib/pdfmanagement-testphase.zip
+2022/01/13 | 5995 | macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+2022/01/13 | 7728 | macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+2022/01/13 | 176911 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+2022/01/13 | 953379 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+2022/01/13 | 4691 | macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+2022/01/13 | 69503 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+2022/01/13 | 676300 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+2022/01/13 | 28755 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+2022/01/13 | 577785 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+2022/01/13 | 17432 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+2022/01/13 | 505418 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+2022/01/13 | 26670 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+2022/01/13 | 546853 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+2022/01/13 | 18287 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+2022/01/13 | 529883 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+2022/01/13 | 20554 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+2022/01/13 | 533076 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+2022/01/13 | 67958 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+2022/01/13 | 739053 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+2022/01/13 | 26660 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+2022/01/13 | 525259 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+2022/01/13 | 27436 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+2022/01/13 | 575283 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+2022/01/13 | 22111 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+2022/01/13 | 504512 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+2022/01/13 | 28056 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+2022/01/13 | 552088 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+2022/01/13 | 63346 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+2022/01/13 | 648865 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+2022/01/13 | 31429 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+2022/01/13 | 664425 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+2022/01/13 | 15777 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+2022/01/13 | 517264 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+2022/01/13 | 6542 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+2022/01/13 | 417279 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+2022/01/13 | 4041 | macros/latex/contrib/pdfmanagement-testphase/l3ref-tmp.sty
+2022/01/13 | 19595 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+2022/01/13 | 572674 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+2022/01/13 | 4627 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
+2022/01/13 | 383080 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+2022/01/13 | 1822 | macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
+2022/01/13 | 11526 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+2022/01/13 | 424541 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+2022/01/13 | 18064 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+2022/01/13 | 4884 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
+2022/01/13 | 446113 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+2022/01/13 | 1200 | macros/latex/contrib/pdfmanagement-testphase/README.md
+2022/01/13 | 580 | macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
+2022/01/13 | 4617 | macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+2022/01/13 | 11131063 | macros/latex/contrib/pdfmanagement-testphase.zip
2011/05/05 | 156 | macros/latex/contrib/pdfmarginpar/doc/pdfmarginparexample.aux
2011/05/05 | 3368 | macros/latex/contrib/pdfmarginpar/doc/pdfmarginparexample.log
2011/05/05 | 64982 | macros/latex/contrib/pdfmarginpar/doc/pdfmarginparexample.pdf
@@ -223539,33 +223545,33 @@
2007/12/02 | 2971 | macros/latex/contrib/SIunits/SIunits.ins
2007/12/02 | 328621 | macros/latex/contrib/SIunits/SIunits.pdf
2007/12/02 | 296391 | macros/latex/contrib/SIunits.zip
-2022/01/12 | 62565 | macros/latex/contrib/siunitx/CHANGELOG.md
-2022/01/12 | 996 | macros/latex/contrib/siunitx/README.md
-2022/01/12 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
-2022/01/12 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
-2022/01/12 | 16704 | macros/latex/contrib/siunitx/siunitx-angle.dtx
-2022/01/12 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
-2022/01/12 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
-2022/01/12 | 607583 | macros/latex/contrib/siunitx/siunitx-code.pdf
-2022/01/12 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
-2022/01/12 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
-2022/01/12 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
-2022/01/12 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
-2022/01/12 | 19846 | macros/latex/contrib/siunitx/siunitx.dtx
-2022/01/12 | 31622 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
-2022/01/12 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
-2022/01/12 | 4746 | macros/latex/contrib/siunitx/siunitx-locale.dtx
-2022/01/12 | 121913 | macros/latex/contrib/siunitx/siunitx-number.dtx
-2022/01/12 | 638333 | macros/latex/contrib/siunitx/siunitx.pdf
-2022/01/12 | 34008 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2022/01/12 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
-2022/01/12 | 9572 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
-2022/01/12 | 50848 | macros/latex/contrib/siunitx/siunitx-table.dtx
-2022/01/12 | 147734 | macros/latex/contrib/siunitx/siunitx.tex
-2022/01/12 | 98475 | macros/latex/contrib/siunitx/siunitx-unit.dtx
-2022/01/12 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
-2022/01/12 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
-2022/01/12 | 1420898 | macros/latex/contrib/siunitx.zip
+2022/01/13 | 62811 | macros/latex/contrib/siunitx/CHANGELOG.md
+2022/01/13 | 996 | macros/latex/contrib/siunitx/README.md
+2022/01/13 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+2022/01/13 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
+2022/01/13 | 16704 | macros/latex/contrib/siunitx/siunitx-angle.dtx
+2022/01/13 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2022/01/13 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
+2022/01/13 | 607833 | macros/latex/contrib/siunitx/siunitx-code.pdf
+2022/01/13 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
+2022/01/13 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
+2022/01/13 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
+2022/01/13 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
+2022/01/13 | 19846 | macros/latex/contrib/siunitx/siunitx.dtx
+2022/01/13 | 31622 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
+2022/01/13 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
+2022/01/13 | 4746 | macros/latex/contrib/siunitx/siunitx-locale.dtx
+2022/01/13 | 122028 | macros/latex/contrib/siunitx/siunitx-number.dtx
+2022/01/13 | 638335 | macros/latex/contrib/siunitx/siunitx.pdf
+2022/01/13 | 34008 | macros/latex/contrib/siunitx/siunitx-print.dtx
+2022/01/13 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
+2022/01/13 | 9572 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
+2022/01/13 | 50848 | macros/latex/contrib/siunitx/siunitx-table.dtx
+2022/01/13 | 147734 | macros/latex/contrib/siunitx/siunitx.tex
+2022/01/13 | 98475 | macros/latex/contrib/siunitx/siunitx-unit.dtx
+2022/01/13 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
+2022/01/13 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
+2022/01/13 | 1421115 | macros/latex/contrib/siunitx.zip
2011/06/03 | 662398 | macros/latex/contrib/skb/doc/skb.pdf
2011/03/15 | 1485 | macros/latex/contrib/skb/doc/user-guide/database/acronyms.tex
2011/03/15 | 722 | macros/latex/contrib/skb/doc/user-guide/database/bibliography.tex
@@ -225279,56 +225285,53 @@
2016/02/03 | 1428 | macros/latex/contrib/tagpair/tagpair.sty
2016/09/23 | 3615 | macros/latex/contrib/tagpair/tagpair.tex
2016/09/23 | 71796 | macros/latex/contrib/tagpair.zip
-2021/08/28 | 23868 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
-2021/08/28 | 1189 | macros/latex/contrib/tagpdf/ex-AF-file.tex
-2021/08/28 | 17702 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
-2021/08/28 | 4150 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
-2021/08/28 | 151 | macros/latex/contrib/tagpdf/example-input-file.tex
-2021/08/28 | 6633 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
-2021/08/28 | 16458 | macros/latex/contrib/tagpdf/ex-attribute.pdf
-2021/08/28 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
-2021/08/28 | 7825 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
-2021/08/28 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
-2021/08/28 | 23337 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split.pdf
-2021/08/28 | 1892 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split.tex
-2021/08/28 | 16874 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
-2021/08/28 | 2401 | macros/latex/contrib/tagpdf/ex-patch-list.tex
-2021/08/28 | 18414 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
-2021/08/28 | 93326 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.pdf
-2021/08/28 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
-2021/08/28 | 20930 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
-2021/08/28 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
-2021/08/28 | 6831 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
-2021/08/28 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
-2021/08/28 | 4520 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
-2021/08/28 | 792 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
-2021/08/28 | 12392 | macros/latex/contrib/tagpdf/ex-structure-luatex.pdf
-2021/08/28 | 1502 | macros/latex/contrib/tagpdf/ex-structure.tex
-2021/08/28 | 19365 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
-2021/08/28 | 704 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
-2021/08/28 | 5 | macros/latex/contrib/tagpdf/global-ex.png
-2021/08/28 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
-2021/08/28 | 5 | macros/latex/contrib/tagpdf/pac3.PNG
-2021/08/28 | 1295 | macros/latex/contrib/tagpdf/README.md
-2021/08/28 | 40247 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
-2021/08/28 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
-2021/08/28 | 24236 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
-2021/08/28 | 1139025 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
-2021/08/28 | 2129 | macros/latex/contrib/tagpdf/tagpdf-code.tex
-2021/08/28 | 9283 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
-2021/08/28 | 14880 | macros/latex/contrib/tagpdf/tagpdf.dtx
-2021/08/28 | 2369 | macros/latex/contrib/tagpdf/tagpdf.ins
-2021/08/28 | 25051 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
-2021/08/28 | 13488 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
-2021/08/28 | 14930 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
-2021/08/28 | 3138639 | macros/latex/contrib/tagpdf/tagpdf.pdf
-2021/08/28 | 18007 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
-2021/08/28 | 4699 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
-2021/08/28 | 40926 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
-2021/08/28 | 93684 | macros/latex/contrib/tagpdf/tagpdf.tex
-2021/08/28 | 13335 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
-2021/08/28 | 23505 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
-2021/08/28 | 1862884 | macros/latex/contrib/tagpdf.zip
+2022/01/13 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2022/01/13 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
+2022/01/13 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+2022/01/13 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+2022/01/13 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+2022/01/13 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
+2022/01/13 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+2022/01/13 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
+2022/01/13 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+2022/01/13 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2022/01/13 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+2022/01/13 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
+2022/01/13 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
+2022/01/13 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+2022/01/13 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
+2022/01/13 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+2022/01/13 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
+2022/01/13 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+2022/01/13 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
+2022/01/13 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+2022/01/13 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+2022/01/13 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
+2022/01/13 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+2022/01/13 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+2022/01/13 | 5 | macros/latex/contrib/tagpdf/global-ex.png
+2022/01/13 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
+2022/01/13 | 5 | macros/latex/contrib/tagpdf/pac3.PNG
+2022/01/13 | 1176 | macros/latex/contrib/tagpdf/README.md
+2022/01/13 | 40163 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+2022/01/13 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
+2022/01/13 | 28236 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+2022/01/13 | 1195004 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
+2022/01/13 | 2389 | macros/latex/contrib/tagpdf/tagpdf-code.tex
+2022/01/13 | 7879 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+2022/01/13 | 17958 | macros/latex/contrib/tagpdf/tagpdf.dtx
+2022/01/13 | 2953 | macros/latex/contrib/tagpdf/tagpdf.ins
+2022/01/13 | 25817 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+2022/01/13 | 13558 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+2022/01/13 | 15002 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+2022/01/13 | 486212 | macros/latex/contrib/tagpdf/tagpdf.pdf
+2022/01/13 | 19727 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+2022/01/13 | 5278 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
+2022/01/13 | 44358 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+2022/01/13 | 99052 | macros/latex/contrib/tagpdf/tagpdf.tex
+2022/01/13 | 13335 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2022/01/13 | 26927 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
+2022/01/13 | 1845489 | macros/latex/contrib/tagpdf.zip
2007/08/04 | 1263 | macros/latex/contrib/talk/example.tex
2007/08/04 | 465 | macros/latex/contrib/talk/Makefile
2007/08/04 | 2162 | macros/latex/contrib/talk/README
@@ -233352,421 +233355,438 @@
2020/02/28 | 475910 | macros/latex/contrib/zwpagelayout/zwpagelayout.pdf
2020/02/28 | 36153 | macros/latex/contrib/zwpagelayout/zwpagelayout.sty
2020/02/28 | 69481 | macros/latex/contrib/zwpagelayout/zwpagelayout.tex
-2021/11/12 | 7109 | macros/latex-dev/base/alltt.dtx
-2021/11/12 | 2890 | macros/latex-dev/base/alltt.ins
-2021/11/12 | 214710 | macros/latex-dev/base/alltt.pdf
-2021/11/12 | 3282 | macros/latex-dev/base/bugs.txt
-2021/11/12 | 242886 | macros/latex-dev/base/cfgguide.pdf
-2021/11/12 | 22456 | macros/latex-dev/base/cfgguide.tex
-2021/11/12 | 42708 | macros/latex-dev/base/changes.old.txt
-2021/11/12 | 385744 | macros/latex-dev/base/changes.txt
-2021/11/12 | 156240 | macros/latex-dev/base/classes.dtx
-2021/11/12 | 4087 | macros/latex-dev/base/classes.ins
-2021/11/12 | 550728 | macros/latex-dev/base/classes.pdf
-2021/11/12 | 402779 | macros/latex-dev/base/clsguide.pdf
-2021/11/12 | 69050 | macros/latex-dev/base/clsguide.tex
-2021/11/12 | 5273 | macros/latex-dev/base/cmextra.ins
-2021/11/12 | 43636 | macros/latex-dev/base/cmfonts.fdd
-2021/11/12 | 4324 | macros/latex-dev/base/cmfonts.ins
-2021/11/12 | 292317 | macros/latex-dev/base/cmfonts.pdf
-2021/11/12 | 239681 | macros/latex-dev/base/cyrguide.pdf
-2021/11/12 | 17495 | macros/latex-dev/base/cyrguide.tex
-2021/11/12 | 204107 | macros/latex-dev/base/doc.dtx
-2021/11/12 | 677311 | macros/latex-dev/base/doc.pdf
-2021/11/12 | 170214 | macros/latex-dev/base/docstrip.dtx
-2021/11/12 | 4221 | macros/latex-dev/base/docstrip.ins
-2021/11/12 | 503614 | macros/latex-dev/base/docstrip.pdf
-2021/11/12 | 41831 | macros/latex-dev/base/doc-v3beta.sty
-2021/11/12 | 4390 | macros/latex-dev/base/ec.ins
-2021/11/12 | 1316472 | macros/latex-dev/base/encguide.pdf
-2021/11/12 | 52813 | macros/latex-dev/base/encguide.tex
-2021/11/12 | 7221 | macros/latex-dev/base/exscale.dtx
-2021/11/12 | 3338 | macros/latex-dev/base/exscale.ins
-2021/11/12 | 212307 | macros/latex-dev/base/exscale.pdf
-2021/11/12 | 23521 | macros/latex-dev/base/fix-cm.dtx
-2021/11/12 | 2892 | macros/latex-dev/base/fix-cm.ins
-2021/11/12 | 287672 | macros/latex-dev/base/fix-cm.pdf
-2021/11/12 | 493957 | macros/latex-dev/base/fntguide.pdf
-2021/11/12 | 90917 | macros/latex-dev/base/fntguide.tex
-2021/11/12 | 60326 | macros/latex-dev/base/fontdef.dtx
-2021/11/12 | 9583 | macros/latex-dev/base/format.ins
-2021/11/12 | 5514 | macros/latex-dev/base/graphpap.dtx
-2021/11/12 | 2892 | macros/latex-dev/base/graphpap.ins
-2021/11/12 | 169323 | macros/latex-dev/base/graphpap.pdf
-2021/11/12 | 2705 | macros/latex-dev/base/idx.tex
-2021/11/12 | 18303 | macros/latex-dev/base/ifthen.dtx
-2021/11/12 | 2888 | macros/latex-dev/base/ifthen.ins
-2021/11/12 | 220417 | macros/latex-dev/base/ifthen.pdf
-2021/11/12 | 106908 | macros/latex-dev/base/inputenc.dtx
-2021/11/12 | 5714 | macros/latex-dev/base/inputenc.ins
-2021/11/12 | 318168 | macros/latex-dev/base/inputenc.pdf
-2021/11/12 | 4079 | macros/latex-dev/base/lablst.tex
-2021/11/12 | 13759 | macros/latex-dev/base/lamport-manual.err
-2021/11/12 | 170875 | macros/latex-dev/base/lamport-manual.pdf
-2021/11/12 | 38735 | macros/latex-dev/base/latex209.dtx
-2021/11/12 | 4219 | macros/latex-dev/base/latex209.ins
-2021/11/12 | 469966 | macros/latex-dev/base/latexchanges.pdf
-2021/11/12 | 41848 | macros/latex-dev/base/latexchanges.tex
-2021/11/12 | 44409 | macros/latex-dev/base/latexrelease.dtx
-2021/11/12 | 5917 | macros/latex-dev/base/latexrelease.ins
-2021/11/12 | 290495 | macros/latex-dev/base/latexrelease.pdf
-2021/11/12 | 6714 | macros/latex-dev/base/latexsym.dtx
-2021/11/12 | 5041 | macros/latex-dev/base/latexsym.ins
-2021/11/12 | 208359 | macros/latex-dev/base/latexsym.pdf
-2021/11/12 | 52724 | macros/latex-dev/base/lb2.err
-2021/11/12 | 252154 | macros/latex-dev/base/lb2.pdf
-2021/11/12 | 1279 | macros/latex-dev/base/legal.txt
-2021/11/12 | 63283 | macros/latex-dev/base/letter.dtx
-2021/11/12 | 3372 | macros/latex-dev/base/letter.ins
-2021/11/12 | 328872 | macros/latex-dev/base/letter.pdf
-2021/11/12 | 20632 | macros/latex-dev/base/lgc2.err
-2021/11/12 | 215091 | macros/latex-dev/base/lgc2.pdf
-2021/11/12 | 9068 | macros/latex-dev/base/lppl-1-0.txt
-2021/11/12 | 14341 | macros/latex-dev/base/lppl-1-1.txt
-2021/11/12 | 14421 | macros/latex-dev/base/lppl-1-2.txt
-2021/11/12 | 132373 | macros/latex-dev/base/lppl.pdf
-2021/11/12 | 23386 | macros/latex-dev/base/lppl.tex
-2021/11/12 | 19040 | macros/latex-dev/base/lppl.txt
-2021/11/12 | 4303 | macros/latex-dev/base/ltalloc.dtx
-2021/11/12 | 16105 | macros/latex-dev/base/ltbibl.dtx
-2021/11/12 | 44776 | macros/latex-dev/base/ltboxes.dtx
-2021/11/12 | 141971 | macros/latex-dev/base/ltclass.dtx
-2021/11/12 | 171083 | macros/latex-dev/base/ltcmd.dtx
-2021/11/12 | 719017 | macros/latex-dev/base/ltcmdhooks-code.pdf
-2021/11/12 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex
-2021/11/12 | 479264 | macros/latex-dev/base/ltcmdhooks-doc.pdf
-2021/11/12 | 177 | macros/latex-dev/base/ltcmdhooks-doc.tex
-2021/11/12 | 52872 | macros/latex-dev/base/ltcmdhooks.dtx
-2021/11/12 | 9562 | macros/latex-dev/base/ltcntrl.dtx
-2021/11/12 | 24291 | macros/latex-dev/base/ltcounts.dtx
-2021/11/12 | 85862 | macros/latex-dev/base/ltdefns.dtx
-2021/11/12 | 35302 | macros/latex-dev/base/ltdirchk.dtx
-2021/11/12 | 27074 | macros/latex-dev/base/lterror.dtx
-2021/11/12 | 13917 | macros/latex-dev/base/ltexpl.dtx
-2021/11/12 | 796010 | macros/latex-dev/base/ltfilehook-code.pdf
-2021/11/12 | 105 | macros/latex-dev/base/ltfilehook-code.tex
-2021/11/12 | 546909 | macros/latex-dev/base/ltfilehook-doc.pdf
-2021/11/12 | 180 | macros/latex-dev/base/ltfilehook-doc.tex
-2021/11/12 | 64242 | macros/latex-dev/base/ltfilehook.dtx
-2021/11/12 | 55987 | macros/latex-dev/base/ltfiles.dtx
-2021/11/12 | 46385 | macros/latex-dev/base/ltfinal.dtx
-2021/11/12 | 55692 | macros/latex-dev/base/ltfloat.dtx
-2021/11/12 | 29272 | macros/latex-dev/base/ltfntcmd.dtx
-2021/11/12 | 58556 | macros/latex-dev/base/ltfssaxes.dtx
-2021/11/12 | 80726 | macros/latex-dev/base/ltfssbas.dtx
-2021/11/12 | 10375 | macros/latex-dev/base/ltfsscmp.dtx
-2021/11/12 | 70650 | macros/latex-dev/base/ltfssdcl.dtx
-2021/11/12 | 84220 | macros/latex-dev/base/ltfssini.dtx
-2021/11/12 | 72480 | macros/latex-dev/base/ltfsstrc.dtx
-2021/11/12 | 1084265 | macros/latex-dev/base/lthooks-code.pdf
-2021/11/12 | 102 | macros/latex-dev/base/lthooks-code.tex
-2021/11/12 | 703741 | macros/latex-dev/base/lthooks-doc.pdf
-2021/11/12 | 177 | macros/latex-dev/base/lthooks-doc.tex
-2021/11/12 | 209265 | macros/latex-dev/base/lthooks.dtx
-2021/11/12 | 4950 | macros/latex-dev/base/lthyphen.dtx
-2021/11/12 | 5864 | macros/latex-dev/base/ltidxglo.dtx
-2021/11/12 | 4762 | macros/latex-dev/base/ltlength.dtx
-2021/11/12 | 36157 | macros/latex-dev/base/ltlists.dtx
-2021/11/12 | 3730 | macros/latex-dev/base/ltlogos.dtx
-2021/11/12 | 64958 | macros/latex-dev/base/ltluatex.dtx
-2021/11/12 | 325177 | macros/latex-dev/base/ltluatex.pdf
-2021/11/12 | 39676 | macros/latex-dev/base/ltmath.dtx
-2021/11/12 | 58750 | macros/latex-dev/base/ltmiscen.dtx
-2021/11/12 | 161518 | macros/latex-dev/base/ltnews01.pdf
-2021/11/12 | 5246 | macros/latex-dev/base/ltnews01.tex
-2021/11/12 | 159793 | macros/latex-dev/base/ltnews02.pdf
-2021/11/12 | 5462 | macros/latex-dev/base/ltnews02.tex
-2021/11/12 | 159336 | macros/latex-dev/base/ltnews03.pdf
-2021/11/12 | 5369 | macros/latex-dev/base/ltnews03.tex
-2021/11/12 | 152526 | macros/latex-dev/base/ltnews04.pdf
-2021/11/12 | 5678 | macros/latex-dev/base/ltnews04.tex
-2021/11/12 | 174501 | macros/latex-dev/base/ltnews05.pdf
-2021/11/12 | 5699 | macros/latex-dev/base/ltnews05.tex
-2021/11/12 | 142851 | macros/latex-dev/base/ltnews06.pdf
-2021/11/12 | 5544 | macros/latex-dev/base/ltnews06.tex
-2021/11/12 | 137813 | macros/latex-dev/base/ltnews07.pdf
-2021/11/12 | 5576 | macros/latex-dev/base/ltnews07.tex
-2021/11/12 | 155055 | macros/latex-dev/base/ltnews08.pdf
-2021/11/12 | 5732 | macros/latex-dev/base/ltnews08.tex
-2021/11/12 | 129573 | macros/latex-dev/base/ltnews09.pdf
-2021/11/12 | 5451 | macros/latex-dev/base/ltnews09.tex
-2021/11/12 | 169412 | macros/latex-dev/base/ltnews10.pdf
-2021/11/12 | 5825 | macros/latex-dev/base/ltnews10.tex
-2021/11/12 | 111955 | macros/latex-dev/base/ltnews11.pdf
-2021/11/12 | 5529 | macros/latex-dev/base/ltnews11.tex
-2021/11/12 | 156556 | macros/latex-dev/base/ltnews12.pdf
-2021/11/12 | 5574 | macros/latex-dev/base/ltnews12.tex
-2021/11/12 | 182226 | macros/latex-dev/base/ltnews13.pdf
-2021/11/12 | 7029 | macros/latex-dev/base/ltnews13.tex
-2021/11/12 | 170473 | macros/latex-dev/base/ltnews14.pdf
-2021/11/12 | 6424 | macros/latex-dev/base/ltnews14.tex
-2021/11/12 | 130310 | macros/latex-dev/base/ltnews15.pdf
-2021/11/12 | 5986 | macros/latex-dev/base/ltnews15.tex
-2021/11/12 | 138080 | macros/latex-dev/base/ltnews16.pdf
-2021/11/12 | 5775 | macros/latex-dev/base/ltnews16.tex
-2021/11/12 | 166234 | macros/latex-dev/base/ltnews17.pdf
-2021/11/12 | 8970 | macros/latex-dev/base/ltnews17.tex
-2021/11/12 | 38031 | macros/latex-dev/base/ltnews18.pdf
-2021/11/12 | 1341 | macros/latex-dev/base/ltnews18.tex
-2021/11/12 | 230027 | macros/latex-dev/base/ltnews19.pdf
-2021/11/12 | 4170 | macros/latex-dev/base/ltnews19.tex
-2021/11/12 | 318546 | macros/latex-dev/base/ltnews20.pdf
-2021/11/12 | 7221 | macros/latex-dev/base/ltnews20.tex
-2021/11/12 | 244868 | macros/latex-dev/base/ltnews21.pdf
-2021/11/12 | 9926 | macros/latex-dev/base/ltnews21.tex
-2021/11/12 | 317766 | macros/latex-dev/base/ltnews22.pdf
-2021/11/12 | 10792 | macros/latex-dev/base/ltnews22.tex
-2021/11/12 | 286590 | macros/latex-dev/base/ltnews23.pdf
-2021/11/12 | 10791 | macros/latex-dev/base/ltnews23.tex
-2021/11/12 | 265283 | macros/latex-dev/base/ltnews24.pdf
-2021/11/12 | 12334 | macros/latex-dev/base/ltnews24.tex
-2021/11/12 | 204933 | macros/latex-dev/base/ltnews25.pdf
-2021/11/12 | 5588 | macros/latex-dev/base/ltnews25.tex
-2021/11/12 | 379461 | macros/latex-dev/base/ltnews26.pdf
-2021/11/12 | 10798 | macros/latex-dev/base/ltnews26.tex
-2021/11/12 | 250593 | macros/latex-dev/base/ltnews27.pdf
-2021/11/12 | 5671 | macros/latex-dev/base/ltnews27.tex
-2021/11/12 | 376645 | macros/latex-dev/base/ltnews28.pdf
-2021/11/12 | 15047 | macros/latex-dev/base/ltnews28.tex
-2021/11/12 | 455099 | macros/latex-dev/base/ltnews29.pdf
-2021/11/12 | 18944 | macros/latex-dev/base/ltnews29.tex
-2021/11/12 | 511899 | macros/latex-dev/base/ltnews30.pdf
-2021/11/12 | 23637 | macros/latex-dev/base/ltnews30.tex
-2021/11/12 | 526316 | macros/latex-dev/base/ltnews31.pdf
-2021/11/12 | 30428 | macros/latex-dev/base/ltnews31.tex
-2021/11/12 | 546165 | macros/latex-dev/base/ltnews32.pdf
-2021/11/12 | 33239 | macros/latex-dev/base/ltnews32.tex
-2021/11/12 | 522413 | macros/latex-dev/base/ltnews33.pdf
-2021/11/12 | 33907 | macros/latex-dev/base/ltnews33.tex
-2021/11/12 | 507766 | macros/latex-dev/base/ltnews34.pdf
-2021/11/12 | 32199 | macros/latex-dev/base/ltnews34.tex
-2021/11/12 | 20469 | macros/latex-dev/base/ltnews.cls
-2021/11/12 | 1120386 | macros/latex-dev/base/ltnews.pdf
-2021/11/12 | 8259 | macros/latex-dev/base/ltnews.tex
-2021/11/12 | 149411 | macros/latex-dev/base/ltoutenc.dtx
-2021/11/12 | 3367 | macros/latex-dev/base/ltoutenc.ins
-2021/11/12 | 177935 | macros/latex-dev/base/ltoutput.dtx
-2021/11/12 | 11590 | macros/latex-dev/base/ltpage.dtx
-2021/11/12 | 2733 | macros/latex-dev/base/ltpageno.dtx
-2021/11/12 | 667738 | macros/latex-dev/base/ltpara-code.pdf
-2021/11/12 | 99 | macros/latex-dev/base/ltpara-code.tex
-2021/11/12 | 560303 | macros/latex-dev/base/ltpara-doc.pdf
-2021/11/12 | 173 | macros/latex-dev/base/ltpara-doc.tex
-2021/11/12 | 51612 | macros/latex-dev/base/ltpara.dtx
-2021/11/12 | 6160 | macros/latex-dev/base/ltpar.dtx
-2021/11/12 | 69007 | macros/latex-dev/base/ltpictur.dtx
-2021/11/12 | 54088 | macros/latex-dev/base/ltplain.dtx
-2021/11/12 | 33951 | macros/latex-dev/base/ltsect.dtx
-2021/11/12 | 818871 | macros/latex-dev/base/ltshipout-code.pdf
-2021/11/12 | 104 | macros/latex-dev/base/ltshipout-code.tex
-2021/11/12 | 564684 | macros/latex-dev/base/ltshipout-doc.pdf
-2021/11/12 | 179 | macros/latex-dev/base/ltshipout-doc.tex
-2021/11/12 | 78325 | macros/latex-dev/base/ltshipout.dtx
-2021/11/12 | 45245 | macros/latex-dev/base/ltspace.dtx
-2021/11/12 | 47901 | macros/latex-dev/base/lttab.dtx
-2021/11/12 | 90126 | macros/latex-dev/base/lttextcomp.dtx
-2021/11/12 | 8736 | macros/latex-dev/base/ltthm.dtx
-2021/11/12 | 14292 | macros/latex-dev/base/ltvers.dtx
-2021/11/12 | 219354 | macros/latex-dev/base/ltx3info.pdf
-2021/11/12 | 18299 | macros/latex-dev/base/ltx3info.tex
-2021/11/12 | 27122 | macros/latex-dev/base/ltxcheck.tex
-2021/11/12 | 19064 | macros/latex-dev/base/ltxdoc.dtx
-2021/11/12 | 238577 | macros/latex-dev/base/ltxdoc.pdf
-2021/11/12 | 7524 | macros/latex-dev/base/ltxguide.cls
-2021/11/12 | 15625 | macros/latex-dev/base/ltxref.dtx
-2021/11/12 | 10606 | macros/latex-dev/base/makeindx.dtx
-2021/11/12 | 3434 | macros/latex-dev/base/makeindx.ins
-2021/11/12 | 173471 | macros/latex-dev/base/makeindx.pdf
-2021/11/12 | 10896 | macros/latex-dev/base/manifest.txt
-2021/11/12 | 1937 | macros/latex-dev/base/minimal.cls
-2021/11/12 | 243601 | macros/latex-dev/base/modguide.pdf
-2021/11/12 | 16233 | macros/latex-dev/base/modguide.tex
-2021/11/12 | 4254 | macros/latex-dev/base/newdc.ins
-2021/11/12 | 6362 | macros/latex-dev/base/newlfont.dtx
-2021/11/12 | 18404 | macros/latex-dev/base/nfssfont.dtx
-2021/11/12 | 2893 | macros/latex-dev/base/nfssfont.ins
-2021/11/12 | 218782 | macros/latex-dev/base/nfssfont.pdf
-2021/11/12 | 3960 | macros/latex-dev/base/olddc.ins
-2021/11/12 | 8631 | macros/latex-dev/base/oldlfont.dtx
-2021/11/12 | 9350 | macros/latex-dev/base/preload.dtx
-2021/11/12 | 13301 | macros/latex-dev/base/proc.dtx
-2021/11/12 | 3401 | macros/latex-dev/base/proc.ins
-2021/11/12 | 233995 | macros/latex-dev/base/proc.pdf
-2021/11/12 | 3514 | macros/latex-dev/base/README.md
-2021/11/12 | 7200 | macros/latex-dev/base/sample2e.tex
-2021/11/12 | 89727 | macros/latex-dev/base/slides.dtx
-2021/11/12 | 6760 | macros/latex-dev/base/slides.ins
-2021/11/12 | 374076 | macros/latex-dev/base/slides.pdf
-2021/11/12 | 15699 | macros/latex-dev/base/slifonts.fdd
-2021/11/12 | 234008 | macros/latex-dev/base/slifonts.pdf
-2021/11/12 | 1694 | macros/latex-dev/base/small2e.tex
-2021/11/12 | 9168 | macros/latex-dev/base/source2edoc.cls
-2021/11/12 | 5462735 | macros/latex-dev/base/source2e.pdf
-2021/11/12 | 15104 | macros/latex-dev/base/source2e.tex
-2021/11/12 | 9400 | macros/latex-dev/base/syntonly.dtx
-2021/11/12 | 2896 | macros/latex-dev/base/syntonly.ins
-2021/11/12 | 197645 | macros/latex-dev/base/syntonly.pdf
-2021/11/12 | 12520 | macros/latex-dev/base/testpage.tex
-2021/11/12 | 2738 | macros/latex-dev/base/tex2.txt
-2021/11/12 | 8496 | macros/latex-dev/base/texpert.txt
-2021/11/12 | 172409 | macros/latex-dev/base/tlc2.err
-2021/11/12 | 289519 | macros/latex-dev/base/tlc2.pdf
-2021/11/12 | 12242 | macros/latex-dev/base/tulm.fdd
-2021/11/12 | 3781 | macros/latex-dev/base/tulm.ins
-2021/11/12 | 170530 | macros/latex-dev/base/tulm.pdf
-2021/11/12 | 3181 | macros/latex-dev/base/unpack.ins
-2021/11/12 | 325727 | macros/latex-dev/base/usrguide3.pdf
-2021/11/12 | 30453 | macros/latex-dev/base/usrguide3.tex
-2021/11/12 | 430996 | macros/latex-dev/base/usrguide.pdf
-2021/11/12 | 68435 | macros/latex-dev/base/usrguide.tex
-2021/11/12 | 90560 | macros/latex-dev/base/utf8ienc.dtx
-2021/11/12 | 361583 | macros/latex-dev/base/utf8ienc.pdf
-2021/11/12 | 10251 | macros/latex-dev/base/webcomp.err
-2021/11/12 | 146200 | macros/latex-dev/base/webcomp.pdf
-2021/11/16 | 34809866 | macros/latex-dev/base.zip
-2021/11/12 | 8668 | macros/latex-dev/required/amsmath/amsbsy.dtx
-2021/11/12 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins
-2021/11/12 | 173746 | macros/latex-dev/required/amsmath/amsbsy.pdf
-2021/11/12 | 11289 | macros/latex-dev/required/amsmath/amscd.dtx
-2021/11/12 | 1487 | macros/latex-dev/required/amsmath/amscd.ins
-2021/11/12 | 178672 | macros/latex-dev/required/amsmath/amscd.pdf
-2021/11/12 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt
-2021/11/12 | 13447 | macros/latex-dev/required/amsmath/amsgen.dtx
-2021/11/12 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins
-2021/11/12 | 176740 | macros/latex-dev/required/amsmath/amsgen.pdf
-2021/11/12 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt
-2021/11/12 | 508199 | macros/latex-dev/required/amsmath/amsldoc.pdf
-2021/11/12 | 104792 | macros/latex-dev/required/amsmath/amsldoc.tex
-2021/11/12 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty
-2021/11/12 | 227267 | macros/latex-dev/required/amsmath/amsmath.dtx
-2021/11/12 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins
-2021/11/12 | 399735 | macros/latex-dev/required/amsmath/amsmath.pdf
-2021/11/12 | 9200 | macros/latex-dev/required/amsmath/amsopn.dtx
-2021/11/12 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins
-2021/11/12 | 138783 | macros/latex-dev/required/amsmath/amsopn.pdf
-2021/11/12 | 69732 | macros/latex-dev/required/amsmath/amstex.sty
-2021/11/12 | 11403 | macros/latex-dev/required/amsmath/amstext.dtx
-2021/11/12 | 1492 | macros/latex-dev/required/amsmath/amstext.ins
-2021/11/12 | 215810 | macros/latex-dev/required/amsmath/amstext.pdf
-2021/11/12 | 4341 | macros/latex-dev/required/amsmath/amsxtra.dtx
-2021/11/12 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins
-2021/11/12 | 112556 | macros/latex-dev/required/amsmath/amsxtra.pdf
-2021/11/12 | 7234 | macros/latex-dev/required/amsmath/changes.txt
-2021/11/12 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt
-2021/11/12 | 369 | macros/latex-dev/required/amsmath/manifest.txt
-2021/11/12 | 2723 | macros/latex-dev/required/amsmath/README.md
-2021/11/12 | 109737 | macros/latex-dev/required/amsmath/subeqn.pdf
-2021/11/12 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex
-2021/11/12 | 145610 | macros/latex-dev/required/amsmath/technote.pdf
-2021/11/12 | 12005 | macros/latex-dev/required/amsmath/technote.tex
-2021/11/12 | 454662 | macros/latex-dev/required/amsmath/testmath.pdf
-2021/11/12 | 82371 | macros/latex-dev/required/amsmath/testmath.tex
-2021/11/16 | 2734843 | macros/latex-dev/required/amsmath.zip
+2022/01/12 | 7104 | macros/latex-dev/base/alltt.dtx
+2022/01/12 | 2890 | macros/latex-dev/base/alltt.ins
+2022/01/12 | 223819 | macros/latex-dev/base/alltt.pdf
+2022/01/12 | 3282 | macros/latex-dev/base/bugs.txt
+2022/01/12 | 242888 | macros/latex-dev/base/cfgguide.pdf
+2022/01/12 | 22456 | macros/latex-dev/base/cfgguide.tex
+2022/01/12 | 42708 | macros/latex-dev/base/changes.old.txt
+2022/01/12 | 390301 | macros/latex-dev/base/changes.txt
+2022/01/12 | 156235 | macros/latex-dev/base/classes.dtx
+2022/01/12 | 4087 | macros/latex-dev/base/classes.ins
+2022/01/12 | 560350 | macros/latex-dev/base/classes.pdf
+2022/01/12 | 402780 | macros/latex-dev/base/clsguide.pdf
+2022/01/12 | 69050 | macros/latex-dev/base/clsguide.tex
+2022/01/12 | 5273 | macros/latex-dev/base/cmextra.ins
+2022/01/12 | 43636 | macros/latex-dev/base/cmfonts.fdd
+2022/01/12 | 4324 | macros/latex-dev/base/cmfonts.ins
+2022/01/12 | 292376 | macros/latex-dev/base/cmfonts.pdf
+2022/01/12 | 239689 | macros/latex-dev/base/cyrguide.pdf
+2022/01/12 | 17495 | macros/latex-dev/base/cyrguide.tex
+2022/01/12 | 29965 | macros/latex-dev/base/doc-2016-02-15.sty
+2022/01/12 | 30499 | macros/latex-dev/base/doc-2021-06-01.sty
+2022/01/12 | 1074166 | macros/latex-dev/base/doc-code.pdf
+2022/01/12 | 96 | macros/latex-dev/base/doc-code.tex
+2022/01/12 | 244071 | macros/latex-dev/base/doc.dtx
+2022/01/12 | 748004 | macros/latex-dev/base/doc.pdf
+2022/01/12 | 170209 | macros/latex-dev/base/docstrip.dtx
+2022/01/12 | 4273 | macros/latex-dev/base/docstrip.ins
+2022/01/12 | 503595 | macros/latex-dev/base/docstrip.pdf
+2022/01/12 | 4390 | macros/latex-dev/base/ec.ins
+2022/01/12 | 1316459 | macros/latex-dev/base/encguide.pdf
+2022/01/12 | 52813 | macros/latex-dev/base/encguide.tex
+2022/01/12 | 7216 | macros/latex-dev/base/exscale.dtx
+2022/01/12 | 3338 | macros/latex-dev/base/exscale.ins
+2022/01/12 | 204711 | macros/latex-dev/base/exscale.pdf
+2022/01/12 | 23516 | macros/latex-dev/base/fix-cm.dtx
+2022/01/12 | 2892 | macros/latex-dev/base/fix-cm.ins
+2022/01/12 | 287733 | macros/latex-dev/base/fix-cm.pdf
+2022/01/12 | 502880 | macros/latex-dev/base/fntguide.pdf
+2022/01/12 | 106880 | macros/latex-dev/base/fntguide.tex
+2022/01/12 | 60321 | macros/latex-dev/base/fontdef.dtx
+2022/01/12 | 9713 | macros/latex-dev/base/format.ins
+2022/01/12 | 5509 | macros/latex-dev/base/graphpap.dtx
+2022/01/12 | 2892 | macros/latex-dev/base/graphpap.ins
+2022/01/12 | 161713 | macros/latex-dev/base/graphpap.pdf
+2022/01/12 | 2705 | macros/latex-dev/base/idx.tex
+2022/01/12 | 18298 | macros/latex-dev/base/ifthen.dtx
+2022/01/12 | 2888 | macros/latex-dev/base/ifthen.ins
+2022/01/12 | 220565 | macros/latex-dev/base/ifthen.pdf
+2022/01/12 | 106904 | macros/latex-dev/base/inputenc.dtx
+2022/01/12 | 5714 | macros/latex-dev/base/inputenc.ins
+2022/01/12 | 318204 | macros/latex-dev/base/inputenc.pdf
+2022/01/12 | 4079 | macros/latex-dev/base/lablst.tex
+2022/01/12 | 13759 | macros/latex-dev/base/lamport-manual.err
+2022/01/12 | 170878 | macros/latex-dev/base/lamport-manual.pdf
+2022/01/12 | 38730 | macros/latex-dev/base/latex209.dtx
+2022/01/12 | 4219 | macros/latex-dev/base/latex209.ins
+2022/01/12 | 44404 | macros/latex-dev/base/latexrelease.dtx
+2022/01/12 | 5974 | macros/latex-dev/base/latexrelease.ins
+2022/01/12 | 281895 | macros/latex-dev/base/latexrelease.pdf
+2022/01/12 | 6709 | macros/latex-dev/base/latexsym.dtx
+2022/01/12 | 5041 | macros/latex-dev/base/latexsym.ins
+2022/01/12 | 200760 | macros/latex-dev/base/latexsym.pdf
+2022/01/12 | 52710 | macros/latex-dev/base/lb2.err
+2022/01/12 | 252140 | macros/latex-dev/base/lb2.pdf
+2022/01/12 | 1279 | macros/latex-dev/base/legal.txt
+2022/01/12 | 63280 | macros/latex-dev/base/letter.dtx
+2022/01/12 | 3372 | macros/latex-dev/base/letter.ins
+2022/01/12 | 337772 | macros/latex-dev/base/letter.pdf
+2022/01/12 | 20652 | macros/latex-dev/base/lgc2.err
+2022/01/12 | 215684 | macros/latex-dev/base/lgc2.pdf
+2022/01/12 | 9068 | macros/latex-dev/base/lppl-1-0.txt
+2022/01/12 | 14341 | macros/latex-dev/base/lppl-1-1.txt
+2022/01/12 | 14421 | macros/latex-dev/base/lppl-1-2.txt
+2022/01/12 | 132382 | macros/latex-dev/base/lppl.pdf
+2022/01/12 | 23386 | macros/latex-dev/base/lppl.tex
+2022/01/12 | 19040 | macros/latex-dev/base/lppl.txt
+2022/01/12 | 4298 | macros/latex-dev/base/ltalloc.dtx
+2022/01/12 | 16100 | macros/latex-dev/base/ltbibl.dtx
+2022/01/12 | 44771 | macros/latex-dev/base/ltboxes.dtx
+2022/01/12 | 142825 | macros/latex-dev/base/ltclass.dtx
+2022/01/12 | 171460 | macros/latex-dev/base/ltcmd.dtx
+2022/01/12 | 719936 | macros/latex-dev/base/ltcmdhooks-code.pdf
+2022/01/12 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex
+2022/01/12 | 478769 | macros/latex-dev/base/ltcmdhooks-doc.pdf
+2022/01/12 | 238 | macros/latex-dev/base/ltcmdhooks-doc.tex
+2022/01/12 | 53025 | macros/latex-dev/base/ltcmdhooks.dtx
+2022/01/12 | 9557 | macros/latex-dev/base/ltcntrl.dtx
+2022/01/12 | 24286 | macros/latex-dev/base/ltcounts.dtx
+2022/01/12 | 85857 | macros/latex-dev/base/ltdefns.dtx
+2022/01/12 | 35984 | macros/latex-dev/base/ltdirchk.dtx
+2022/01/12 | 27069 | macros/latex-dev/base/lterror.dtx
+2022/01/12 | 18410 | macros/latex-dev/base/ltexpl.dtx
+2022/01/12 | 796244 | macros/latex-dev/base/ltfilehook-code.pdf
+2022/01/12 | 105 | macros/latex-dev/base/ltfilehook-code.tex
+2022/01/12 | 546703 | macros/latex-dev/base/ltfilehook-doc.pdf
+2022/01/12 | 241 | macros/latex-dev/base/ltfilehook-doc.tex
+2022/01/12 | 64237 | macros/latex-dev/base/ltfilehook.dtx
+2022/01/12 | 55982 | macros/latex-dev/base/ltfiles.dtx
+2022/01/12 | 46395 | macros/latex-dev/base/ltfinal.dtx
+2022/01/12 | 55687 | macros/latex-dev/base/ltfloat.dtx
+2022/01/12 | 29267 | macros/latex-dev/base/ltfntcmd.dtx
+2022/01/12 | 58551 | macros/latex-dev/base/ltfssaxes.dtx
+2022/01/12 | 80881 | macros/latex-dev/base/ltfssbas.dtx
+2022/01/12 | 10370 | macros/latex-dev/base/ltfsscmp.dtx
+2022/01/12 | 70645 | macros/latex-dev/base/ltfssdcl.dtx
+2022/01/12 | 84215 | macros/latex-dev/base/ltfssini.dtx
+2022/01/12 | 72475 | macros/latex-dev/base/ltfsstrc.dtx
+2022/01/12 | 1091130 | macros/latex-dev/base/lthooks-code.pdf
+2022/01/12 | 102 | macros/latex-dev/base/lthooks-code.tex
+2022/01/12 | 702777 | macros/latex-dev/base/lthooks-doc.pdf
+2022/01/12 | 238 | macros/latex-dev/base/lthooks-doc.tex
+2022/01/12 | 208864 | macros/latex-dev/base/lthooks.dtx
+2022/01/12 | 4945 | macros/latex-dev/base/lthyphen.dtx
+2022/01/12 | 5859 | macros/latex-dev/base/ltidxglo.dtx
+2022/01/12 | 15046 | macros/latex-dev/base/ltkeys.dtx
+2022/01/12 | 4757 | macros/latex-dev/base/ltlength.dtx
+2022/01/12 | 36152 | macros/latex-dev/base/ltlists.dtx
+2022/01/12 | 3725 | macros/latex-dev/base/ltlogos.dtx
+2022/01/12 | 65782 | macros/latex-dev/base/ltluatex.dtx
+2022/01/12 | 317700 | macros/latex-dev/base/ltluatex.pdf
+2022/01/12 | 39671 | macros/latex-dev/base/ltmath.dtx
+2022/01/12 | 5117 | macros/latex-dev/base/ltmeta.dtx
+2022/01/12 | 58745 | macros/latex-dev/base/ltmiscen.dtx
+2022/01/12 | 161518 | macros/latex-dev/base/ltnews01.pdf
+2022/01/12 | 5246 | macros/latex-dev/base/ltnews01.tex
+2022/01/12 | 159792 | macros/latex-dev/base/ltnews02.pdf
+2022/01/12 | 5462 | macros/latex-dev/base/ltnews02.tex
+2022/01/12 | 159332 | macros/latex-dev/base/ltnews03.pdf
+2022/01/12 | 5369 | macros/latex-dev/base/ltnews03.tex
+2022/01/12 | 152525 | macros/latex-dev/base/ltnews04.pdf
+2022/01/12 | 5678 | macros/latex-dev/base/ltnews04.tex
+2022/01/12 | 174494 | macros/latex-dev/base/ltnews05.pdf
+2022/01/12 | 5699 | macros/latex-dev/base/ltnews05.tex
+2022/01/12 | 142849 | macros/latex-dev/base/ltnews06.pdf
+2022/01/12 | 5544 | macros/latex-dev/base/ltnews06.tex
+2022/01/12 | 137811 | macros/latex-dev/base/ltnews07.pdf
+2022/01/12 | 5576 | macros/latex-dev/base/ltnews07.tex
+2022/01/12 | 155053 | macros/latex-dev/base/ltnews08.pdf
+2022/01/12 | 5732 | macros/latex-dev/base/ltnews08.tex
+2022/01/12 | 129570 | macros/latex-dev/base/ltnews09.pdf
+2022/01/12 | 5451 | macros/latex-dev/base/ltnews09.tex
+2022/01/12 | 169416 | macros/latex-dev/base/ltnews10.pdf
+2022/01/12 | 5825 | macros/latex-dev/base/ltnews10.tex
+2022/01/12 | 111948 | macros/latex-dev/base/ltnews11.pdf
+2022/01/12 | 5529 | macros/latex-dev/base/ltnews11.tex
+2022/01/12 | 156551 | macros/latex-dev/base/ltnews12.pdf
+2022/01/12 | 5574 | macros/latex-dev/base/ltnews12.tex
+2022/01/12 | 182225 | macros/latex-dev/base/ltnews13.pdf
+2022/01/12 | 7029 | macros/latex-dev/base/ltnews13.tex
+2022/01/12 | 170473 | macros/latex-dev/base/ltnews14.pdf
+2022/01/12 | 6424 | macros/latex-dev/base/ltnews14.tex
+2022/01/12 | 130309 | macros/latex-dev/base/ltnews15.pdf
+2022/01/12 | 5986 | macros/latex-dev/base/ltnews15.tex
+2022/01/12 | 138073 | macros/latex-dev/base/ltnews16.pdf
+2022/01/12 | 5775 | macros/latex-dev/base/ltnews16.tex
+2022/01/12 | 166228 | macros/latex-dev/base/ltnews17.pdf
+2022/01/12 | 8970 | macros/latex-dev/base/ltnews17.tex
+2022/01/12 | 38033 | macros/latex-dev/base/ltnews18.pdf
+2022/01/12 | 1341 | macros/latex-dev/base/ltnews18.tex
+2022/01/12 | 230028 | macros/latex-dev/base/ltnews19.pdf
+2022/01/12 | 4170 | macros/latex-dev/base/ltnews19.tex
+2022/01/12 | 318548 | macros/latex-dev/base/ltnews20.pdf
+2022/01/12 | 7221 | macros/latex-dev/base/ltnews20.tex
+2022/01/12 | 244867 | macros/latex-dev/base/ltnews21.pdf
+2022/01/12 | 9926 | macros/latex-dev/base/ltnews21.tex
+2022/01/12 | 317773 | macros/latex-dev/base/ltnews22.pdf
+2022/01/12 | 10792 | macros/latex-dev/base/ltnews22.tex
+2022/01/12 | 286591 | macros/latex-dev/base/ltnews23.pdf
+2022/01/12 | 10791 | macros/latex-dev/base/ltnews23.tex
+2022/01/12 | 265279 | macros/latex-dev/base/ltnews24.pdf
+2022/01/12 | 12334 | macros/latex-dev/base/ltnews24.tex
+2022/01/12 | 204935 | macros/latex-dev/base/ltnews25.pdf
+2022/01/12 | 5588 | macros/latex-dev/base/ltnews25.tex
+2022/01/12 | 379462 | macros/latex-dev/base/ltnews26.pdf
+2022/01/12 | 10798 | macros/latex-dev/base/ltnews26.tex
+2022/01/12 | 250592 | macros/latex-dev/base/ltnews27.pdf
+2022/01/12 | 5671 | macros/latex-dev/base/ltnews27.tex
+2022/01/12 | 376643 | macros/latex-dev/base/ltnews28.pdf
+2022/01/12 | 15047 | macros/latex-dev/base/ltnews28.tex
+2022/01/12 | 455107 | macros/latex-dev/base/ltnews29.pdf
+2022/01/12 | 18944 | macros/latex-dev/base/ltnews29.tex
+2022/01/12 | 511909 | macros/latex-dev/base/ltnews30.pdf
+2022/01/12 | 23637 | macros/latex-dev/base/ltnews30.tex
+2022/01/12 | 526323 | macros/latex-dev/base/ltnews31.pdf
+2022/01/12 | 30428 | macros/latex-dev/base/ltnews31.tex
+2022/01/12 | 546156 | macros/latex-dev/base/ltnews32.pdf
+2022/01/12 | 33239 | macros/latex-dev/base/ltnews32.tex
+2022/01/12 | 522412 | macros/latex-dev/base/ltnews33.pdf
+2022/01/12 | 33907 | macros/latex-dev/base/ltnews33.tex
+2022/01/12 | 508044 | macros/latex-dev/base/ltnews34.pdf
+2022/01/12 | 32308 | macros/latex-dev/base/ltnews34.tex
+2022/01/12 | 477992 | macros/latex-dev/base/ltnews35.pdf
+2022/01/12 | 20855 | macros/latex-dev/base/ltnews35.tex
+2022/01/12 | 20469 | macros/latex-dev/base/ltnews.cls
+2022/01/12 | 1157677 | macros/latex-dev/base/ltnews.pdf
+2022/01/12 | 8368 | macros/latex-dev/base/ltnews.tex
+2022/01/12 | 148103 | macros/latex-dev/base/ltoutenc.dtx
+2022/01/12 | 3367 | macros/latex-dev/base/ltoutenc.ins
+2022/01/12 | 177930 | macros/latex-dev/base/ltoutput.dtx
+2022/01/12 | 11585 | macros/latex-dev/base/ltpage.dtx
+2022/01/12 | 2728 | macros/latex-dev/base/ltpageno.dtx
+2022/01/12 | 666571 | macros/latex-dev/base/ltpara-code.pdf
+2022/01/12 | 99 | macros/latex-dev/base/ltpara-code.tex
+2022/01/12 | 560041 | macros/latex-dev/base/ltpara-doc.pdf
+2022/01/12 | 234 | macros/latex-dev/base/ltpara-doc.tex
+2022/01/12 | 51605 | macros/latex-dev/base/ltpara.dtx
+2022/01/12 | 6155 | macros/latex-dev/base/ltpar.dtx
+2022/01/12 | 69002 | macros/latex-dev/base/ltpictur.dtx
+2022/01/12 | 54083 | macros/latex-dev/base/ltplain.dtx
+2022/01/12 | 33946 | macros/latex-dev/base/ltsect.dtx
+2022/01/12 | 819385 | macros/latex-dev/base/ltshipout-code.pdf
+2022/01/12 | 104 | macros/latex-dev/base/ltshipout-code.tex
+2022/01/12 | 564740 | macros/latex-dev/base/ltshipout-doc.pdf
+2022/01/12 | 240 | macros/latex-dev/base/ltshipout-doc.tex
+2022/01/12 | 78913 | macros/latex-dev/base/ltshipout.dtx
+2022/01/12 | 45240 | macros/latex-dev/base/ltspace.dtx
+2022/01/12 | 47896 | macros/latex-dev/base/lttab.dtx
+2022/01/12 | 90370 | macros/latex-dev/base/lttextcomp.dtx
+2022/01/12 | 8731 | macros/latex-dev/base/ltthm.dtx
+2022/01/12 | 14288 | macros/latex-dev/base/ltvers.dtx
+2022/01/12 | 219349 | macros/latex-dev/base/ltx3info.pdf
+2022/01/12 | 18299 | macros/latex-dev/base/ltx3info.tex
+2022/01/12 | 27122 | macros/latex-dev/base/ltxcheck.tex
+2022/01/12 | 20775 | macros/latex-dev/base/ltxdoc.dtx
+2022/01/12 | 233208 | macros/latex-dev/base/ltxdoc.pdf
+2022/01/12 | 7524 | macros/latex-dev/base/ltxguide.cls
+2022/01/12 | 15620 | macros/latex-dev/base/ltxref.dtx
+2022/01/12 | 10601 | macros/latex-dev/base/makeindx.dtx
+2022/01/12 | 3434 | macros/latex-dev/base/makeindx.ins
+2022/01/12 | 165821 | macros/latex-dev/base/makeindx.pdf
+2022/01/12 | 11065 | macros/latex-dev/base/manifest.txt
+2022/01/12 | 1937 | macros/latex-dev/base/minimal.cls
+2022/01/12 | 243605 | macros/latex-dev/base/modguide.pdf
+2022/01/12 | 16233 | macros/latex-dev/base/modguide.tex
+2022/01/12 | 4254 | macros/latex-dev/base/newdc.ins
+2022/01/12 | 6357 | macros/latex-dev/base/newlfont.dtx
+2022/01/12 | 18399 | macros/latex-dev/base/nfssfont.dtx
+2022/01/12 | 2893 | macros/latex-dev/base/nfssfont.ins
+2022/01/12 | 211180 | macros/latex-dev/base/nfssfont.pdf
+2022/01/12 | 3960 | macros/latex-dev/base/olddc.ins
+2022/01/12 | 8626 | macros/latex-dev/base/oldlfont.dtx
+2022/01/12 | 9345 | macros/latex-dev/base/preload.dtx
+2022/01/12 | 13589 | macros/latex-dev/base/proc.dtx
+2022/01/12 | 3401 | macros/latex-dev/base/proc.ins
+2022/01/12 | 227059 | macros/latex-dev/base/proc.pdf
+2022/01/12 | 3477 | macros/latex-dev/base/README.md
+2022/01/12 | 7200 | macros/latex-dev/base/sample2e.tex
+2022/01/12 | 89722 | macros/latex-dev/base/slides.dtx
+2022/01/12 | 6760 | macros/latex-dev/base/slides.ins
+2022/01/12 | 375286 | macros/latex-dev/base/slides.pdf
+2022/01/12 | 15699 | macros/latex-dev/base/slifonts.fdd
+2022/01/12 | 234191 | macros/latex-dev/base/slifonts.pdf
+2022/01/12 | 1694 | macros/latex-dev/base/small2e.tex
+2022/01/12 | 9172 | macros/latex-dev/base/source2edoc.cls
+2022/01/12 | 5600535 | macros/latex-dev/base/source2e.pdf
+2022/01/12 | 15236 | macros/latex-dev/base/source2e.tex
+2022/01/12 | 9395 | macros/latex-dev/base/syntonly.dtx
+2022/01/12 | 2896 | macros/latex-dev/base/syntonly.ins
+2022/01/12 | 189855 | macros/latex-dev/base/syntonly.pdf
+2022/01/12 | 12520 | macros/latex-dev/base/testpage.tex
+2022/01/12 | 172867 | macros/latex-dev/base/tlc2.err
+2022/01/12 | 290615 | macros/latex-dev/base/tlc2.pdf
+2022/01/12 | 12242 | macros/latex-dev/base/tulm.fdd
+2022/01/12 | 3781 | macros/latex-dev/base/tulm.ins
+2022/01/12 | 162772 | macros/latex-dev/base/tulm.pdf
+2022/01/12 | 3181 | macros/latex-dev/base/unpack.ins
+2022/01/12 | 390416 | macros/latex-dev/base/usrguide3.pdf
+2022/01/12 | 42675 | macros/latex-dev/base/usrguide3.tex
+2022/01/12 | 430994 | macros/latex-dev/base/usrguide.pdf
+2022/01/12 | 68435 | macros/latex-dev/base/usrguide.tex
+2022/01/12 | 91124 | macros/latex-dev/base/utf8ienc.dtx
+2022/01/12 | 352648 | macros/latex-dev/base/utf8ienc.pdf
+2022/01/12 | 10251 | macros/latex-dev/base/webcomp.err
+2022/01/12 | 146198 | macros/latex-dev/base/webcomp.pdf
+2022/01/13 | 36148056 | macros/latex-dev/base.zip
+2022/01/12 | 8663 | macros/latex-dev/required/amsmath/amsbsy.dtx
+2022/01/12 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins
+2022/01/12 | 174944 | macros/latex-dev/required/amsmath/amsbsy.pdf
+2022/01/12 | 11284 | macros/latex-dev/required/amsmath/amscd.dtx
+2022/01/12 | 1487 | macros/latex-dev/required/amsmath/amscd.ins
+2022/01/12 | 179945 | macros/latex-dev/required/amsmath/amscd.pdf
+2022/01/12 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt
+2022/01/12 | 13442 | macros/latex-dev/required/amsmath/amsgen.dtx
+2022/01/12 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins
+2022/01/12 | 178187 | macros/latex-dev/required/amsmath/amsgen.pdf
+2022/01/12 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt
+2022/01/12 | 508210 | macros/latex-dev/required/amsmath/amsldoc.pdf
+2022/01/12 | 104792 | macros/latex-dev/required/amsmath/amsldoc.tex
+2022/01/12 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty
+2022/01/12 | 227262 | macros/latex-dev/required/amsmath/amsmath.dtx
+2022/01/12 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins
+2022/01/12 | 418923 | macros/latex-dev/required/amsmath/amsmath.pdf
+2022/01/12 | 9195 | macros/latex-dev/required/amsmath/amsopn.dtx
+2022/01/12 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins
+2022/01/12 | 139709 | macros/latex-dev/required/amsmath/amsopn.pdf
+2022/01/12 | 69732 | macros/latex-dev/required/amsmath/amstex.sty
+2022/01/12 | 11398 | macros/latex-dev/required/amsmath/amstext.dtx
+2022/01/12 | 1492 | macros/latex-dev/required/amsmath/amstext.ins
+2022/01/12 | 217498 | macros/latex-dev/required/amsmath/amstext.pdf
+2022/01/12 | 4336 | macros/latex-dev/required/amsmath/amsxtra.dtx
+2022/01/12 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins
+2022/01/12 | 113561 | macros/latex-dev/required/amsmath/amsxtra.pdf
+2022/01/12 | 7356 | macros/latex-dev/required/amsmath/changes.txt
+2022/01/12 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt
+2022/01/12 | 369 | macros/latex-dev/required/amsmath/manifest.txt
+2022/01/12 | 2723 | macros/latex-dev/required/amsmath/README.md
+2022/01/12 | 109731 | macros/latex-dev/required/amsmath/subeqn.pdf
+2022/01/12 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex
+2022/01/12 | 147462 | macros/latex-dev/required/amsmath/technote.pdf
+2022/01/12 | 12005 | macros/latex-dev/required/amsmath/technote.tex
+2022/01/12 | 454511 | macros/latex-dev/required/amsmath/testmath.pdf
+2022/01/12 | 82371 | macros/latex-dev/required/amsmath/testmath.tex
+2022/01/13 | 2760509 | macros/latex-dev/required/amsmath.zip
2021/11/12 | 3403 | macros/latex-dev/required/firstaid/changes.txt
2021/11/12 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins
2021/11/12 | 20716 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx
2021/11/12 | 238410 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf
2021/11/12 | 474 | macros/latex-dev/required/firstaid/README.md
2021/11/16 | 239515 | macros/latex-dev/required/firstaid.zip
-2021/11/12 | 15737 | macros/latex-dev/required/graphics/cat.eps
-2021/11/12 | 34573 | macros/latex-dev/required/graphics/changes.txt
-2021/11/12 | 31909 | macros/latex-dev/required/graphics/color.dtx
-2021/11/12 | 215047 | macros/latex-dev/required/graphics/color.pdf
-2021/11/12 | 50810 | macros/latex-dev/required/graphics/drivers.dtx
-2021/11/12 | 286309 | macros/latex-dev/required/graphics/drivers.pdf
-2021/11/12 | 4113 | macros/latex-dev/required/graphics/epsfig.dtx
-2021/11/12 | 167686 | macros/latex-dev/required/graphics/epsfig.pdf
-2021/11/12 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty
-2021/11/12 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins
-2021/11/12 | 70177 | macros/latex-dev/required/graphics/graphics.dtx
-2021/11/12 | 1128 | macros/latex-dev/required/graphics/graphics.ins
-2021/11/12 | 310675 | macros/latex-dev/required/graphics/graphics.pdf
-2021/11/12 | 30455 | macros/latex-dev/required/graphics/graphicx.dtx
-2021/11/12 | 248231 | macros/latex-dev/required/graphics/graphicx.pdf
-2021/11/12 | 330070 | macros/latex-dev/required/graphics/grfguide.pdf
-2021/11/12 | 37089 | macros/latex-dev/required/graphics/grfguide.tex
-2021/11/12 | 13880 | macros/latex-dev/required/graphics/keyval.dtx
-2021/11/12 | 239654 | macros/latex-dev/required/graphics/keyval.pdf
-2021/11/12 | 3937 | macros/latex-dev/required/graphics/lscape.dtx
-2021/11/12 | 163584 | macros/latex-dev/required/graphics/lscape.pdf
-2021/11/12 | 2090 | macros/latex-dev/required/graphics/README.md
-2021/11/12 | 21072 | macros/latex-dev/required/graphics/rotating.dtx
-2021/11/12 | 269530 | macros/latex-dev/required/graphics/rotating.pdf
-2021/11/12 | 172231 | macros/latex-dev/required/graphics/rotex.pdf
-2021/11/12 | 14575 | macros/latex-dev/required/graphics/rotex.tex
-2021/11/12 | 10744 | macros/latex-dev/required/graphics/trig.dtx
-2021/11/12 | 206897 | macros/latex-dev/required/graphics/trig.pdf
-2021/11/16 | 2632948 | macros/latex-dev/required/graphics.zip
-2021/11/12 | 14077 | macros/latex-dev/required/tools/afterpage.dtx
-2021/11/12 | 2538 | macros/latex-dev/required/tools/afterpage.ins
-2021/11/12 | 205344 | macros/latex-dev/required/tools/afterpage.pdf
-2021/11/12 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty
-2021/11/12 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty
-2021/11/12 | 128189 | macros/latex-dev/required/tools/array.dtx
-2021/11/12 | 517114 | macros/latex-dev/required/tools/array.pdf
-2021/11/12 | 61460 | macros/latex-dev/required/tools/bm.dtx
-2021/11/12 | 2524 | macros/latex-dev/required/tools/bm.ins
-2021/11/12 | 331424 | macros/latex-dev/required/tools/bm.pdf
-2021/11/12 | 53172 | macros/latex-dev/required/tools/calc.dtx
-2021/11/12 | 370414 | macros/latex-dev/required/tools/calc.pdf
-2021/11/12 | 61331 | macros/latex-dev/required/tools/changes.txt
-2021/11/12 | 12714 | macros/latex-dev/required/tools/dcolumn.dtx
-2021/11/12 | 220689 | macros/latex-dev/required/tools/dcolumn.pdf
-2021/11/12 | 6794 | macros/latex-dev/required/tools/delarray.dtx
-2021/11/12 | 198647 | macros/latex-dev/required/tools/delarray.pdf
-2021/11/12 | 10649 | macros/latex-dev/required/tools/enumerate.dtx
-2021/11/12 | 215355 | macros/latex-dev/required/tools/enumerate.pdf
-2021/11/12 | 4964 | macros/latex-dev/required/tools/fileerr.dtx
-2021/11/12 | 195578 | macros/latex-dev/required/tools/fileerr.pdf
-2021/11/12 | 10776 | macros/latex-dev/required/tools/fontsmpl.dtx
-2021/11/12 | 154034 | macros/latex-dev/required/tools/fontsmpl.pdf
-2021/11/12 | 39701 | macros/latex-dev/required/tools/ftnright.dtx
-2021/11/12 | 370277 | macros/latex-dev/required/tools/ftnright.pdf
-2021/11/12 | 11153 | macros/latex-dev/required/tools/hhline.dtx
-2021/11/12 | 189538 | macros/latex-dev/required/tools/hhline.pdf
-2021/11/12 | 2225 | macros/latex-dev/required/tools/indentfirst.dtx
-2021/11/12 | 157803 | macros/latex-dev/required/tools/indentfirst.pdf
-2021/11/12 | 32034 | macros/latex-dev/required/tools/layout.dtx
-2021/11/12 | 267761 | macros/latex-dev/required/tools/layout.pdf
-2021/11/12 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty
-2021/11/12 | 76402 | macros/latex-dev/required/tools/longtable.dtx
-2021/11/12 | 2538 | macros/latex-dev/required/tools/longtable.ins
-2021/11/12 | 382155 | macros/latex-dev/required/tools/longtable.pdf
-2021/11/12 | 3284 | macros/latex-dev/required/tools/manifest.txt
-2021/11/12 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
-2021/11/12 | 184258 | macros/latex-dev/required/tools/multicol.dtx
-2021/11/12 | 2576 | macros/latex-dev/required/tools/multicol.ins
-2021/11/12 | 518295 | macros/latex-dev/required/tools/multicol.pdf
-2021/11/12 | 8981 | macros/latex-dev/required/tools/rawfonts.dtx
-2021/11/12 | 146534 | macros/latex-dev/required/tools/rawfonts.pdf
-2021/11/12 | 1664 | macros/latex-dev/required/tools/README.md
-2021/11/12 | 9493 | macros/latex-dev/required/tools/shellesc.dtx
-2021/11/12 | 183532 | macros/latex-dev/required/tools/shellesc.pdf
-2021/11/12 | 29569 | macros/latex-dev/required/tools/showkeys.dtx
-2021/11/12 | 260624 | macros/latex-dev/required/tools/showkeys.pdf
-2021/11/12 | 5796 | macros/latex-dev/required/tools/somedefs.dtx
-2021/11/12 | 175169 | macros/latex-dev/required/tools/somedefs.pdf
-2021/11/12 | 35880 | macros/latex-dev/required/tools/tabularx.dtx
-2021/11/12 | 2535 | macros/latex-dev/required/tools/tabularx.ins
-2021/11/12 | 278041 | macros/latex-dev/required/tools/tabularx.pdf
-2021/11/12 | 43453 | macros/latex-dev/required/tools/theorem.dtx
-2021/11/12 | 351794 | macros/latex-dev/required/tools/theorem.pdf
-2021/11/12 | 5680 | macros/latex-dev/required/tools/tools.ins
-2021/11/12 | 73674 | macros/latex-dev/required/tools/tools-overview.pdf
-2021/11/12 | 5211 | macros/latex-dev/required/tools/tools-overview.tex
-2021/11/12 | 25151 | macros/latex-dev/required/tools/trace.dtx
-2021/11/12 | 229713 | macros/latex-dev/required/tools/trace.pdf
-2021/11/12 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
-2021/11/12 | 114351 | macros/latex-dev/required/tools/varioref.dtx
-2021/11/12 | 2531 | macros/latex-dev/required/tools/varioref.ins
-2021/11/12 | 383524 | macros/latex-dev/required/tools/varioref.pdf
-2021/11/12 | 72141 | macros/latex-dev/required/tools/verbatim.dtx
-2021/11/12 | 330815 | macros/latex-dev/required/tools/verbatim.pdf
-2021/11/12 | 6223 | macros/latex-dev/required/tools/xr.dtx
-2021/11/12 | 177595 | macros/latex-dev/required/tools/xr.pdf
-2021/11/12 | 17861 | macros/latex-dev/required/tools/xspace.dtx
-2021/11/12 | 256897 | macros/latex-dev/required/tools/xspace.pdf
-2021/11/16 | 7271168 | macros/latex-dev/required/tools.zip
+2022/01/12 | 15737 | macros/latex-dev/required/graphics/cat.eps
+2022/01/12 | 34873 | macros/latex-dev/required/graphics/changes.txt
+2022/01/12 | 32194 | macros/latex-dev/required/graphics/color.dtx
+2022/01/12 | 212223 | macros/latex-dev/required/graphics/color.pdf
+2022/01/12 | 50819 | macros/latex-dev/required/graphics/drivers.dtx
+2022/01/12 | 286459 | macros/latex-dev/required/graphics/drivers.pdf
+2022/01/12 | 4122 | macros/latex-dev/required/graphics/epsfig.dtx
+2022/01/12 | 159997 | macros/latex-dev/required/graphics/epsfig.pdf
+2022/01/12 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty
+2022/01/12 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins
+2022/01/12 | 70186 | macros/latex-dev/required/graphics/graphics.dtx
+2022/01/12 | 1189 | macros/latex-dev/required/graphics/graphics.ins
+2022/01/12 | 303042 | macros/latex-dev/required/graphics/graphics.pdf
+2022/01/12 | 30464 | macros/latex-dev/required/graphics/graphicx.dtx
+2022/01/12 | 240623 | macros/latex-dev/required/graphics/graphicx.pdf
+2022/01/12 | 330978 | macros/latex-dev/required/graphics/grfguide.pdf
+2022/01/12 | 37572 | macros/latex-dev/required/graphics/grfguide.tex
+2022/01/12 | 13875 | macros/latex-dev/required/graphics/keyval.dtx
+2022/01/12 | 239823 | macros/latex-dev/required/graphics/keyval.pdf
+2022/01/12 | 3946 | macros/latex-dev/required/graphics/lscape.dtx
+2022/01/12 | 155986 | macros/latex-dev/required/graphics/lscape.pdf
+2022/01/12 | 15185 | macros/latex-dev/required/graphics/mathcolor.dtx
+2022/01/12 | 473568 | macros/latex-dev/required/graphics/mathcolor.pdf
+2022/01/12 | 2090 | macros/latex-dev/required/graphics/README.md
+2022/01/12 | 21067 | macros/latex-dev/required/graphics/rotating.dtx
+2022/01/12 | 278466 | macros/latex-dev/required/graphics/rotating.pdf
+2022/01/12 | 172228 | macros/latex-dev/required/graphics/rotex.pdf
+2022/01/12 | 14575 | macros/latex-dev/required/graphics/rotex.tex
+2022/01/12 | 10753 | macros/latex-dev/required/graphics/trig.dtx
+2022/01/12 | 199266 | macros/latex-dev/required/graphics/trig.pdf
+2022/01/13 | 3071511 | macros/latex-dev/required/graphics.zip
+2022/01/12 | 322 | macros/latex-dev/required/latex-lab/changes.txt
+2022/01/12 | 511324 | macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf
+2022/01/12 | 117 | macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex
+2022/01/12 | 375470 | macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf
+2022/01/12 | 191 | macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex
+2022/01/12 | 13812 | macros/latex-dev/required/latex-lab/documentmetadata-support.dtx
+2022/01/12 | 2288 | macros/latex-dev/required/latex-lab/documentmetadata-support.ins
+2022/01/12 | 1939 | macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx
+2022/01/12 | 304289 | macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf
+2022/01/12 | 992 | macros/latex-dev/required/latex-lab/README.md
+2022/01/13 | 1165789 | macros/latex-dev/required/latex-lab.zip
+2022/01/12 | 14072 | macros/latex-dev/required/tools/afterpage.dtx
+2022/01/12 | 2538 | macros/latex-dev/required/tools/afterpage.ins
+2022/01/12 | 197738 | macros/latex-dev/required/tools/afterpage.pdf
+2022/01/12 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty
+2022/01/12 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty
+2022/01/12 | 128179 | macros/latex-dev/required/tools/array.dtx
+2022/01/12 | 516836 | macros/latex-dev/required/tools/array.pdf
+2022/01/12 | 61565 | macros/latex-dev/required/tools/bm.dtx
+2022/01/12 | 2524 | macros/latex-dev/required/tools/bm.ins
+2022/01/12 | 323432 | macros/latex-dev/required/tools/bm.pdf
+2022/01/12 | 53167 | macros/latex-dev/required/tools/calc.dtx
+2022/01/12 | 370552 | macros/latex-dev/required/tools/calc.pdf
+2022/01/12 | 61914 | macros/latex-dev/required/tools/changes.txt
+2022/01/12 | 12709 | macros/latex-dev/required/tools/dcolumn.dtx
+2022/01/12 | 220834 | macros/latex-dev/required/tools/dcolumn.pdf
+2022/01/12 | 6789 | macros/latex-dev/required/tools/delarray.dtx
+2022/01/12 | 191064 | macros/latex-dev/required/tools/delarray.pdf
+2022/01/12 | 10644 | macros/latex-dev/required/tools/enumerate.dtx
+2022/01/12 | 215498 | macros/latex-dev/required/tools/enumerate.pdf
+2022/01/12 | 4959 | macros/latex-dev/required/tools/fileerr.dtx
+2022/01/12 | 187725 | macros/latex-dev/required/tools/fileerr.pdf
+2022/01/12 | 10771 | macros/latex-dev/required/tools/fontsmpl.dtx
+2022/01/12 | 146446 | macros/latex-dev/required/tools/fontsmpl.pdf
+2022/01/12 | 39696 | macros/latex-dev/required/tools/ftnright.dtx
+2022/01/12 | 387226 | macros/latex-dev/required/tools/ftnright.pdf
+2022/01/12 | 11148 | macros/latex-dev/required/tools/hhline.dtx
+2022/01/12 | 189679 | macros/latex-dev/required/tools/hhline.pdf
+2022/01/12 | 2220 | macros/latex-dev/required/tools/indentfirst.dtx
+2022/01/12 | 157954 | macros/latex-dev/required/tools/indentfirst.pdf
+2022/01/12 | 32029 | macros/latex-dev/required/tools/layout.dtx
+2022/01/12 | 259969 | macros/latex-dev/required/tools/layout.pdf
+2022/01/12 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty
+2022/01/12 | 76397 | macros/latex-dev/required/tools/longtable.dtx
+2022/01/12 | 2538 | macros/latex-dev/required/tools/longtable.ins
+2022/01/12 | 391313 | macros/latex-dev/required/tools/longtable.pdf
+2022/01/12 | 3284 | macros/latex-dev/required/tools/manifest.txt
+2022/01/12 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
+2022/01/12 | 31646 | macros/latex-dev/required/tools/multicol-2019-10-01.sty
+2022/01/12 | 184548 | macros/latex-dev/required/tools/multicol.dtx
+2022/01/12 | 2576 | macros/latex-dev/required/tools/multicol.ins
+2022/01/12 | 521446 | macros/latex-dev/required/tools/multicol.pdf
+2022/01/12 | 8976 | macros/latex-dev/required/tools/rawfonts.dtx
+2022/01/12 | 138963 | macros/latex-dev/required/tools/rawfonts.pdf
+2022/01/12 | 1664 | macros/latex-dev/required/tools/README.md
+2022/01/12 | 9493 | macros/latex-dev/required/tools/shellesc.dtx
+2022/01/12 | 175929 | macros/latex-dev/required/tools/shellesc.pdf
+2022/01/12 | 29564 | macros/latex-dev/required/tools/showkeys.dtx
+2022/01/12 | 252158 | macros/latex-dev/required/tools/showkeys.pdf
+2022/01/12 | 5791 | macros/latex-dev/required/tools/somedefs.dtx
+2022/01/12 | 167572 | macros/latex-dev/required/tools/somedefs.pdf
+2022/01/12 | 35875 | macros/latex-dev/required/tools/tabularx.dtx
+2022/01/12 | 2535 | macros/latex-dev/required/tools/tabularx.ins
+2022/01/12 | 287073 | macros/latex-dev/required/tools/tabularx.pdf
+2022/01/12 | 43448 | macros/latex-dev/required/tools/theorem.dtx
+2022/01/12 | 351702 | macros/latex-dev/required/tools/theorem.pdf
+2022/01/12 | 5680 | macros/latex-dev/required/tools/tools.ins
+2022/01/12 | 73672 | macros/latex-dev/required/tools/tools-overview.pdf
+2022/01/12 | 5211 | macros/latex-dev/required/tools/tools-overview.tex
+2022/01/12 | 25146 | macros/latex-dev/required/tools/trace.dtx
+2022/01/12 | 222076 | macros/latex-dev/required/tools/trace.pdf
+2022/01/12 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
+2022/01/12 | 114350 | macros/latex-dev/required/tools/varioref.dtx
+2022/01/12 | 2531 | macros/latex-dev/required/tools/varioref.ins
+2022/01/12 | 383856 | macros/latex-dev/required/tools/varioref.pdf
+2022/01/12 | 72136 | macros/latex-dev/required/tools/verbatim.dtx
+2022/01/12 | 330963 | macros/latex-dev/required/tools/verbatim.pdf
+2022/01/12 | 6218 | macros/latex-dev/required/tools/xr.dtx
+2022/01/12 | 169986 | macros/latex-dev/required/tools/xr.pdf
+2022/01/12 | 17856 | macros/latex-dev/required/tools/xspace.dtx
+2022/01/12 | 257018 | macros/latex-dev/required/tools/xspace.pdf
+2022/01/13 | 7233038 | 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
@@ -274085,7 +274105,7 @@
2021/05/03 | 629 | support/TeX4ht/doc/README
2020/08/24 | 358454 | support/TeX4ht/doc/TeX4ht-doc.tex
2021/05/11 | 262 | support/TeX4ht/README
-2022/01/11 | 173389 | support/TeX4ht/source/ChangeLog
+2022/01/12 | 173732 | support/TeX4ht/source/ChangeLog
2021/05/03 | 1375 | support/TeX4ht/source/checklog.lua
2021/05/03 | 1189 | support/TeX4ht/source/common-code.tex
2021/05/03 | 2727 | support/TeX4ht/source/common-info.tex
@@ -274097,7 +274117,7 @@
2021/05/03 | 1121 | support/TeX4ht/source/README
2021/05/03 | 1744 | support/TeX4ht/source/t1fontmake.lua
2021/05/03 | 297 | support/TeX4ht/source/t1fontsample.tex
-2022/01/11 | 1105377 | support/TeX4ht/source/tex4ht-4ht.tex
+2022/01/12 | 1105407 | support/TeX4ht/source/tex4ht-4ht.tex
2021/05/03 | 7127 | support/TeX4ht/source/tex4ht-auto-script.tex
2021/05/16 | 1539 | support/TeX4ht/source/tex4ht-bibtex2.tex
2021/05/03 | 21247 | support/TeX4ht/source/tex4ht-cond4ht.tex
@@ -274143,7 +274163,7 @@
2021/05/03 | 8860 | support/TeX4ht/source/tex4ht-mathplayer.tex
2021/06/20 | 49012 | support/TeX4ht/source/tex4ht-mkht.tex
2021/05/03 | 26652 | support/TeX4ht/source/tex4ht-moz.tex
-2022/01/09 | 334650 | support/TeX4ht/source/tex4ht-ooffice.tex
+2022/01/12 | 334915 | support/TeX4ht/source/tex4ht-ooffice.tex
2021/05/03 | 11161 | support/TeX4ht/source/tex4ht-ooimpress.tex
2021/05/03 | 45918 | support/TeX4ht/source/tex4ht-oo-xtpipes.tex
2021/06/21 | 13398 | support/TeX4ht/source/tex4ht-options.tex
@@ -281436,9 +281456,9 @@
2021/07/19 | 313228 | systems/texlive/tlnet/archive/easing.doc.r59975.tar.xz
2021/07/19 | 2220 | systems/texlive/tlnet/archive/easing.r59975.tar.xz
2021/07/19 | 7876 | systems/texlive/tlnet/archive/easing.source.r59975.tar.xz
-2022/01/12 | 614788 | systems/texlive/tlnet/archive/easybook.doc.r61570.tar.xz
-2022/01/12 | 17024 | systems/texlive/tlnet/archive/easybook.r61570.tar.xz
-2022/01/12 | 17068 | systems/texlive/tlnet/archive/easybook.source.r61570.tar.xz
+2022/01/13 | 616544 | systems/texlive/tlnet/archive/easybook.doc.r61582.tar.xz
+2022/01/13 | 17092 | systems/texlive/tlnet/archive/easybook.r61582.tar.xz
+2022/01/13 | 17128 | systems/texlive/tlnet/archive/easybook.source.r61582.tar.xz
2019/02/28 | 4540 | systems/texlive/tlnet/archive/easy.doc.r19440.tar.xz
2020/09/08 | 175976 | systems/texlive/tlnet/archive/easyfig.doc.r56291.tar.xz
2020/09/08 | 1936 | systems/texlive/tlnet/archive/easyfig.r56291.tar.xz
@@ -283784,9 +283804,9 @@
2019/02/28 | 136792 | systems/texlive/tlnet/archive/knittingpattern.doc.r17205.tar.xz
2019/02/28 | 1540 | systems/texlive/tlnet/archive/knittingpattern.r17205.tar.xz
2019/04/06 | 578004 | systems/texlive/tlnet/archive/knitting.r50782.tar.xz
-2021/12/21 | 808504 | systems/texlive/tlnet/archive/knowledge.doc.r61356.tar.xz
-2021/12/21 | 22680 | systems/texlive/tlnet/archive/knowledge.r61356.tar.xz
-2021/12/21 | 42324 | systems/texlive/tlnet/archive/knowledge.source.r61356.tar.xz
+2022/01/13 | 812476 | systems/texlive/tlnet/archive/knowledge.doc.r61583.tar.xz
+2022/01/13 | 22636 | systems/texlive/tlnet/archive/knowledge.r61583.tar.xz
+2022/01/13 | 42284 | systems/texlive/tlnet/archive/knowledge.source.r61583.tar.xz
2021/03/24 | 266192 | systems/texlive/tlnet/archive/knuth-errata.doc.r58682.tar.xz
2021/03/24 | 444 | systems/texlive/tlnet/archive/knuth-errata.r58682.tar.xz
2021/02/27 | 30508 | systems/texlive/tlnet/archive/knuth-lib.r57963.tar.xz
@@ -283889,9 +283909,9 @@
2019/02/28 | 500 | systems/texlive/tlnet/archive/l2tabu.r39597.tar.xz
2019/02/28 | 227412 | systems/texlive/tlnet/archive/l2tabu-spanish.doc.r15878.tar.xz
2019/02/28 | 448 | systems/texlive/tlnet/archive/l2tabu-spanish.r15878.tar.xz
-2021/12/15 | 855616 | systems/texlive/tlnet/archive/l3backend.doc.r61303.tar.xz
-2021/12/15 | 14984 | systems/texlive/tlnet/archive/l3backend.r61303.tar.xz
-2021/12/15 | 32188 | systems/texlive/tlnet/archive/l3backend.source.r61303.tar.xz
+2022/01/13 | 855144 | systems/texlive/tlnet/archive/l3backend.doc.r61588.tar.xz
+2022/01/13 | 14980 | systems/texlive/tlnet/archive/l3backend.r61588.tar.xz
+2022/01/13 | 32184 | systems/texlive/tlnet/archive/l3backend.source.r61588.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/l3build.aarch64-linux.r46894.tar.xz
2019/02/28 | 344 | systems/texlive/tlnet/archive/l3build.amd64-freebsd.r46894.tar.xz
2019/02/28 | 340 | systems/texlive/tlnet/archive/l3build.amd64-netbsd.r46894.tar.xz
@@ -283914,12 +283934,12 @@
2021/11/13 | 3505104 | systems/texlive/tlnet/archive/l3experimental.doc.r61040.tar.xz
2021/11/13 | 23196 | systems/texlive/tlnet/archive/l3experimental.r61040.tar.xz
2021/11/13 | 79956 | systems/texlive/tlnet/archive/l3experimental.source.r61040.tar.xz
-2021/11/23 | 11059148 | systems/texlive/tlnet/archive/l3kernel.doc.r61121.tar.xz
-2021/11/23 | 169640 | systems/texlive/tlnet/archive/l3kernel.r61121.tar.xz
-2021/11/23 | 584296 | systems/texlive/tlnet/archive/l3kernel.source.r61121.tar.xz
-2021/11/13 | 1806792 | systems/texlive/tlnet/archive/l3packages.doc.r61040.tar.xz
-2021/11/13 | 21644 | systems/texlive/tlnet/archive/l3packages.r61040.tar.xz
-2021/11/13 | 45256 | systems/texlive/tlnet/archive/l3packages.source.r61040.tar.xz
+2022/01/13 | 11058484 | systems/texlive/tlnet/archive/l3kernel.doc.r61588.tar.xz
+2022/01/13 | 170184 | systems/texlive/tlnet/archive/l3kernel.r61588.tar.xz
+2022/01/13 | 586076 | systems/texlive/tlnet/archive/l3kernel.source.r61588.tar.xz
+2022/01/13 | 1808188 | systems/texlive/tlnet/archive/l3packages.doc.r61588.tar.xz
+2022/01/13 | 21640 | systems/texlive/tlnet/archive/l3packages.r61588.tar.xz
+2022/01/13 | 45340 | systems/texlive/tlnet/archive/l3packages.source.r61588.tar.xz
2019/02/28 | 210236 | systems/texlive/tlnet/archive/labbook.doc.r15878.tar.xz
2019/02/28 | 4180 | systems/texlive/tlnet/archive/labbook.r15878.tar.xz
2019/02/28 | 23192 | systems/texlive/tlnet/archive/labbook.source.r15878.tar.xz
@@ -284825,9 +284845,9 @@
2021/05/22 | 8560 | systems/texlive/tlnet/archive/lualibs.source.r59298.tar.xz
2020/06/08 | 226344 | systems/texlive/tlnet/archive/luamesh.doc.r55475.tar.xz
2020/06/08 | 12096 | systems/texlive/tlnet/archive/luamesh.r55475.tar.xz
-2022/01/10 | 155976 | systems/texlive/tlnet/archive/luamplib.doc.r61554.tar.xz
-2022/01/10 | 11988 | systems/texlive/tlnet/archive/luamplib.r61554.tar.xz
-2022/01/10 | 27184 | systems/texlive/tlnet/archive/luamplib.source.r61554.tar.xz
+2022/01/13 | 156860 | systems/texlive/tlnet/archive/luamplib.doc.r61587.tar.xz
+2022/01/13 | 12060 | systems/texlive/tlnet/archive/luamplib.r61587.tar.xz
+2022/01/13 | 27400 | systems/texlive/tlnet/archive/luamplib.source.r61587.tar.xz
2019/02/28 | 348 | systems/texlive/tlnet/archive/luaotfload.aarch64-linux.r46208.tar.xz
2019/02/28 | 352 | systems/texlive/tlnet/archive/luaotfload.amd64-freebsd.r34647.tar.xz
2019/02/28 | 348 | systems/texlive/tlnet/archive/luaotfload.amd64-netbsd.r34647.tar.xz
@@ -285980,8 +286000,8 @@
2019/02/28 | 196212 | systems/texlive/tlnet/archive/newspaper.doc.r15878.tar.xz
2019/02/28 | 1924 | systems/texlive/tlnet/archive/newspaper.r15878.tar.xz
2019/02/28 | 6804 | systems/texlive/tlnet/archive/newspaper.source.r15878.tar.xz
-2022/01/11 | 631384 | systems/texlive/tlnet/archive/newtx.doc.r61563.tar.xz
-2022/01/11 | 6388684 | systems/texlive/tlnet/archive/newtx.r61563.tar.xz
+2022/01/13 | 631452 | systems/texlive/tlnet/archive/newtx.doc.r61581.tar.xz
+2022/01/13 | 6408360 | systems/texlive/tlnet/archive/newtx.r61581.tar.xz
2021/05/17 | 332420 | systems/texlive/tlnet/archive/newtxsf.doc.r59227.tar.xz
2021/05/17 | 105908 | systems/texlive/tlnet/archive/newtxsf.r59227.tar.xz
2020/03/24 | 171356 | systems/texlive/tlnet/archive/newtxtt.doc.r54512.tar.xz
@@ -288318,9 +288338,9 @@
2019/02/28 | 466940 | systems/texlive/tlnet/archive/silence.doc.r27028.tar.xz
2019/02/28 | 3620 | systems/texlive/tlnet/archive/silence.r27028.tar.xz
2019/02/28 | 17724 | systems/texlive/tlnet/archive/silence.source.r27028.tar.xz
-2022/01/12 | 261828 | systems/texlive/tlnet/archive/sillypage.doc.r61573.tar.xz
-2022/01/12 | 7476 | systems/texlive/tlnet/archive/sillypage.r61573.tar.xz
-2022/01/12 | 3780 | systems/texlive/tlnet/archive/sillypage.source.r61573.tar.xz
+2022/01/13 | 261828 | systems/texlive/tlnet/archive/sillypage.doc.r61584.tar.xz
+2022/01/13 | 7504 | systems/texlive/tlnet/archive/sillypage.r61584.tar.xz
+2022/01/13 | 3780 | systems/texlive/tlnet/archive/sillypage.source.r61584.tar.xz
2020/10/26 | 135860 | systems/texlive/tlnet/archive/simplebnf.doc.r56761.tar.xz
2020/10/26 | 2204 | systems/texlive/tlnet/archive/simplebnf.r56761.tar.xz
2019/02/28 | 915604 | systems/texlive/tlnet/archive/simplecd.doc.r29260.tar.xz
@@ -288359,9 +288379,9 @@
2021/06/26 | 250232 | systems/texlive/tlnet/archive/siunits.doc.r59702.tar.xz
2021/06/26 | 6040 | systems/texlive/tlnet/archive/siunits.r59702.tar.xz
2021/06/26 | 34532 | systems/texlive/tlnet/archive/siunits.source.r59702.tar.xz
-2022/01/07 | 1205800 | systems/texlive/tlnet/archive/siunitx.doc.r61515.tar.xz
-2022/01/07 | 62520 | systems/texlive/tlnet/archive/siunitx.r61515.tar.xz
-2022/01/07 | 108004 | systems/texlive/tlnet/archive/siunitx.source.r61515.tar.xz
+2022/01/13 | 1205316 | systems/texlive/tlnet/archive/siunitx.doc.r61585.tar.xz
+2022/01/13 | 62556 | systems/texlive/tlnet/archive/siunitx.r61585.tar.xz
+2022/01/13 | 108000 | systems/texlive/tlnet/archive/siunitx.source.r61585.tar.xz
2019/02/28 | 200108 | systems/texlive/tlnet/archive/skak.doc.r46259.tar.xz
2019/02/28 | 316212 | systems/texlive/tlnet/archive/skaknew.doc.r20031.tar.xz
2019/02/28 | 160064 | systems/texlive/tlnet/archive/skaknew.r20031.tar.xz
@@ -288996,14 +289016,14 @@
2021/02/27 | 109184 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r57941.tar.xz
2021/02/24 | 87364 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r57877.tar.xz
2021/02/27 | 69944 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r57957.tar.xz
-2022/01/12 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61574.tar.xz
+2022/01/13 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61591.tar.xz
2021/03/16 | 51080 | systems/texlive/tlnet/archive/tex4ht.i386-cygwin.r58387.tar.xz
2021/02/27 | 93092 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r57961.tar.xz
2021/02/24 | 89116 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r57878.tar.xz
2021/02/24 | 76196 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r57877.tar.xz
2021/02/27 | 83896 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r57938.tar.xz
-2022/01/12 | 937868 | systems/texlive/tlnet/archive/tex4ht.r61574.tar.xz
-2022/01/12 | 1226692 | systems/texlive/tlnet/archive/tex4ht.source.r61574.tar.xz
+2022/01/13 | 937944 | systems/texlive/tlnet/archive/tex4ht.r61591.tar.xz
+2022/01/13 | 1238904 | systems/texlive/tlnet/archive/tex4ht.source.r61591.tar.xz
2021/02/25 | 185088 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r57908.tar.xz
2021/04/08 | 57760 | systems/texlive/tlnet/archive/tex4ht.win32.r58783.tar.xz
2021/03/16 | 58360 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r58387.tar.xz
@@ -289238,7 +289258,7 @@
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz
-2022/01/12 | 402636 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61565.tar.xz
+2022/01/13 | 402560 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61579.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.aarch64-linux.r53577.tar.xz
2020/01/27 | 924 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-freebsd.r53577.tar.xz
2020/01/27 | 916 | systems/texlive/tlnet/archive/texlive-scripts-extra.amd64-netbsd.r53577.tar.xz
@@ -289262,7 +289282,7 @@
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz
2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz
-2022/01/12 | 108288 | systems/texlive/tlnet/archive/texlive-scripts.r61565.tar.xz
+2022/01/13 | 108296 | systems/texlive/tlnet/archive/texlive-scripts.r61579.tar.xz
2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz
2021/04/12 | 36308 | systems/texlive/tlnet/archive/texlive-scripts.win32.r58829.tar.xz
2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz
@@ -289945,8 +289965,8 @@
2019/02/28 | 254104 | systems/texlive/tlnet/archive/tucv.doc.r20680.tar.xz
2019/02/28 | 1860 | systems/texlive/tlnet/archive/tucv.r20680.tar.xz
2019/02/28 | 4996 | systems/texlive/tlnet/archive/tucv.source.r20680.tar.xz
-2021/10/14 | 1140824 | systems/texlive/tlnet/archive/tuda-ci.doc.r60754.tar.xz
-2021/10/14 | 43656 | systems/texlive/tlnet/archive/tuda-ci.r60754.tar.xz
+2022/01/13 | 1141456 | systems/texlive/tlnet/archive/tuda-ci.doc.r61586.tar.xz
+2022/01/13 | 43292 | systems/texlive/tlnet/archive/tuda-ci.r61586.tar.xz
2021/07/16 | 3769988 | systems/texlive/tlnet/archive/tudscr.doc.r59942.tar.xz
2021/07/16 | 160220 | systems/texlive/tlnet/archive/tudscr.r59942.tar.xz
2021/07/16 | 315572 | systems/texlive/tlnet/archive/tudscr.source.r59942.tar.xz
@@ -291038,16 +291058,16 @@
2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz
2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz
2021/12/06 | 105168 | systems/texlive/tlnet/install-tl
-2022/01/12 | 6811645 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/01/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/01/13 | 6811620 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat
-2022/01/12 | 20876415 | systems/texlive/tlnet/install-tl-windows.exe
-2022/01/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/01/12 | 25631659 | systems/texlive/tlnet/install-tl.zip
-2022/01/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/01/13 | 20876689 | systems/texlive/tlnet/install-tl-windows.exe
+2022/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/01/13 | 25631690 | systems/texlive/tlnet/install-tl.zip
+2022/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2021/04/01 | 1229 | systems/texlive/tlnet/README.md
2021/04/01 | 0 | systems/texlive/tlnet/TEXLIVE_2021
2021/07/03 | 7181 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -291055,9 +291075,9 @@
2016/04/12 | 0 | systems/texlive/tlnet/tlpkg/gpg/secring.gpg
2021/10/21 | 2100 | systems/texlive/tlnet/tlpkg/gpg/tl-key-extension.txt
2021/07/03 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg
-2022/01/07 | 49408 | systems/texlive/tlnet/tlpkg/installer/config.guess
+2022/01/12 | 49482 | systems/texlive/tlnet/tlpkg/installer/config.guess
2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt
-2022/01/11 | 6793 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/01/12 | 6837 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt
2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe
2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt
@@ -291099,12 +291119,12 @@
2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2021/12/21 | 27582 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2022/01/12 | 17060045 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/01/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/01/13 | 17059949 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2021/12/21 | 86654 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2022/01/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2022/01/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/01/12 | 2340740 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/01/13 | 2340544 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2021/12/21 | 58848 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2021/12/21 | 42112 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2021/12/21 | 16130 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -296161,7 +296181,7 @@
2020/10/03 | 318630 | 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
-2022/01/12 | 631204 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/01/13 | 631204 | 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
@@ -297659,9 +297679,9 @@
2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma
2021/12/09 | 39714 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma
2021/12/09 | 43639 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/01/12 | 260747 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/01/12 | 1405235 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/01/12 | 1301084 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/01/13 | 260744 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/01/13 | 1405764 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/01/13 | 1300338 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
2021/12/09 | 13527 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma
2021/12/09 | 14417 | 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
@@ -297885,189 +297905,189 @@
2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma
2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma
2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma
-2022/01/12 | 631997 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/01/12 | 51534 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/01/12 | 57340 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/01/12 | 959835 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/01/12 | 1087175 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/01/12 | 28754 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/01/12 | 31552 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
-2022/01/12 | 30171 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
-2022/01/12 | 35240 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/01/12 | 56673 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/01/12 | 65085 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
-2022/01/12 | 86662 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
-2022/01/12 | 95330 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
-2022/01/12 | 68781 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/01/12 | 77062 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/01/12 | 27268 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
-2022/01/12 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
-2022/01/12 | 332745 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
-2022/01/12 | 394299 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
-2022/01/12 | 32957 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
-2022/01/12 | 37095 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
-2022/01/12 | 51501 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
-2022/01/12 | 57257 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
-2022/01/12 | 256459 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/01/12 | 281545 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/01/12 | 179826 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
-2022/01/12 | 196133 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
-2022/01/12 | 54990 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
-2022/01/12 | 62426 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
-2022/01/12 | 21321 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
-2022/01/12 | 24088 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/01/12 | 470364 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
-2022/01/12 | 46096 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/01/12 | 52042 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/01/12 | 285740 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/01/12 | 326302 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
-2022/01/12 | 41391 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/01/12 | 45772 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
-2022/01/12 | 120220 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
-2022/01/12 | 135130 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/01/12 | 1304427 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/01/12 | 1452737 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/01/12 | 99700 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/01/12 | 113013 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
-2022/01/12 | 43666 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/01/12 | 48844 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
-2022/01/12 | 25101 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/01/12 | 28554 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/01/12 | 57029 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/01/12 | 63366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/01/12 | 136038 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/01/12 | 155303 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
-2022/01/12 | 73462 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/01/12 | 79036 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/01/12 | 71989 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
-2022/01/12 | 81529 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
-2022/01/12 | 259311 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
-2022/01/12 | 296105 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
-2022/01/12 | 22153 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
-2022/01/12 | 25062 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
-2022/01/12 | 97078 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/01/12 | 112662 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
-2022/01/12 | 64574 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
-2022/01/12 | 73279 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
-2022/01/12 | 96925 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
-2022/01/12 | 115646 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
-2022/01/12 | 38467 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
-2022/01/12 | 43820 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
-2022/01/12 | 483937 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
-2022/01/12 | 566721 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2022/01/12 | 152074 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
-2022/01/12 | 168841 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
-2022/01/12 | 95483 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/01/12 | 109561 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/01/12 | 16500 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
-2022/01/12 | 18358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/01/12 | 28319 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
-2022/01/12 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
-2022/01/12 | 630239 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/01/12 | 681609 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/01/12 | 532455 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/01/12 | 599013 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
-2022/01/12 | 477927 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
-2022/01/12 | 527827 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/01/12 | 93942 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/01/12 | 103437 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
-2022/01/12 | 1731301 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/01/12 | 1992372 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/01/12 | 68014 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/01/12 | 74060 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
-2022/01/12 | 27697 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/01/12 | 32154 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
-2022/01/12 | 7757 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
-2022/01/12 | 8782 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
-2022/01/12 | 199664 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/01/12 | 216348 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/01/12 | 251405 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/01/12 | 286565 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/01/12 | 99179 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/01/12 | 104676 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/01/12 | 126841 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
-2022/01/12 | 139120 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/01/12 | 246041 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/01/12 | 276119 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
-2022/01/12 | 199684 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/01/12 | 181569 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
-2022/01/12 | 68651 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/01/12 | 76280 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
-2022/01/12 | 31398 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/01/12 | 35174 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
-2022/01/12 | 38563 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/01/12 | 43924 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
-2022/01/12 | 43450 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
-2022/01/12 | 47909 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/01/12 | 45891 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
-2022/01/12 | 52310 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
-2022/01/12 | 198986 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/01/12 | 213499 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/01/12 | 36056 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
-2022/01/12 | 41263 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/01/12 | 753218 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/01/12 | 824781 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
-2022/01/12 | 200082 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
-2022/01/12 | 202745 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
-2022/01/12 | 210221 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
-2022/01/12 | 244844 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
-2022/01/12 | 78965 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
-2022/01/12 | 88162 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/01/12 | 1180761 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
-2022/01/12 | 1322449 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2022/01/12 | 20194 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
-2022/01/12 | 23947 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
-2022/01/12 | 31574 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/01/12 | 37390 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
-2022/01/12 | 64734 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/01/12 | 72883 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
-2022/01/12 | 50850 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2022/01/12 | 58657 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
-2022/01/12 | 691228 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
-2022/01/12 | 752396 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
-2022/01/12 | 1355964 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/01/12 | 1499383 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
-2022/01/12 | 42768 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
-2022/01/12 | 52550 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/01/12 | 57443 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/01/12 | 63755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
-2022/01/12 | 25535 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/01/12 | 27502 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/01/12 | 16577 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/01/12 | 18482 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/01/12 | 64577 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/01/12 | 70971 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
-2022/01/12 | 157601 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
-2022/01/12 | 172569 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/01/12 | 58706 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/01/12 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
-2022/01/12 | 101457 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2022/01/12 | 109142 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/01/12 | 2672853 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
-2022/01/12 | 2797476 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
-2022/01/12 | 55337 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
-2022/01/12 | 62337 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
-2022/01/12 | 37117 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/01/12 | 41208 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
-2022/01/12 | 28693 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/01/12 | 34032 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/01/12 | 67763 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/01/12 | 71911 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
-2022/01/12 | 317773 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
-2022/01/12 | 355356 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2022/01/12 | 55733 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
-2022/01/12 | 57402 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/01/12 | 591456 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/01/12 | 629343 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2022/01/12 | 39736 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
-2022/01/12 | 43696 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/01/12 | 260708 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/01/12 | 1405663 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/01/12 | 1300107 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
-2022/01/12 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
-2022/01/12 | 14411 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/01/13 | 631997 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/01/13 | 51536 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/01/13 | 57342 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/01/13 | 959836 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/01/13 | 1087177 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/01/13 | 28755 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/01/13 | 31553 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/01/13 | 30172 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/01/13 | 35242 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/01/13 | 56676 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/01/13 | 65086 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/01/13 | 86663 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/01/13 | 95329 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/01/13 | 68781 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/01/13 | 77066 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/01/13 | 27269 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/01/13 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/01/13 | 332747 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/01/13 | 394301 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/01/13 | 32957 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/01/13 | 37097 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/01/13 | 51502 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/01/13 | 57258 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/01/13 | 256458 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/01/13 | 281543 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/01/13 | 179829 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/01/13 | 196134 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/01/13 | 54992 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/01/13 | 62426 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/01/13 | 21322 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/01/13 | 24090 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/01/13 | 470363 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/01/13 | 46095 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/01/13 | 52042 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/01/13 | 285739 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/01/13 | 326303 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/01/13 | 41390 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/01/13 | 45773 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/01/13 | 120222 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/01/13 | 135132 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/01/13 | 1304425 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/01/13 | 1452740 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/01/13 | 99703 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/01/13 | 113014 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/01/13 | 43669 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/01/13 | 48844 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/01/13 | 25104 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/01/13 | 28555 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/01/13 | 57030 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/01/13 | 63367 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/01/13 | 136037 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/01/13 | 155303 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/01/13 | 73462 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/01/13 | 79037 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/01/13 | 71990 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/01/13 | 81531 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/01/13 | 259312 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/01/13 | 296107 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/01/13 | 22154 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/01/13 | 25063 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/01/13 | 97081 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/01/13 | 112663 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/01/13 | 64575 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/01/13 | 73280 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/01/13 | 96924 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/01/13 | 115647 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/01/13 | 38468 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/01/13 | 43821 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/01/13 | 483936 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/01/13 | 566721 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/01/13 | 152077 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/01/13 | 168841 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/01/13 | 95484 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/01/13 | 109561 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/01/13 | 16500 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/01/13 | 18357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/01/13 | 28319 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/01/13 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/01/13 | 630239 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/01/13 | 681611 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/01/13 | 532456 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/01/13 | 599015 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/01/13 | 477926 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/01/13 | 527828 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/01/13 | 93944 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/01/13 | 103439 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/01/13 | 1731303 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/01/13 | 1992377 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/01/13 | 68016 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/01/13 | 74060 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/01/13 | 27698 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/01/13 | 32156 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/01/13 | 7758 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/01/13 | 8783 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/01/13 | 199663 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/01/13 | 216350 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/01/13 | 251406 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/01/13 | 286565 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/01/13 | 99179 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/01/13 | 104676 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/01/13 | 126842 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/01/13 | 139123 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/01/13 | 246042 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/01/13 | 276120 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/01/13 | 199684 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/01/13 | 181570 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/01/13 | 68652 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/01/13 | 76282 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/01/13 | 31400 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/01/13 | 35175 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/01/13 | 38565 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/01/13 | 43928 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/01/13 | 43452 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/01/13 | 47912 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/01/13 | 45892 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/01/13 | 52309 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/01/13 | 198988 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/01/13 | 213499 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/01/13 | 36058 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/01/13 | 41264 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/01/13 | 753220 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/01/13 | 824780 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/01/13 | 200083 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/01/13 | 202744 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/01/13 | 210225 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/01/13 | 244845 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/01/13 | 78967 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/01/13 | 88163 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/01/13 | 1180762 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/01/13 | 1322451 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/01/13 | 20196 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/01/13 | 23948 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/01/13 | 31573 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/01/13 | 37389 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/01/13 | 64735 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/01/13 | 72884 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/01/13 | 50851 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/01/13 | 58658 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/01/13 | 691229 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/01/13 | 752397 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/01/13 | 1355968 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/01/13 | 1499384 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/01/13 | 42769 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/01/13 | 52551 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/01/13 | 57445 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/01/13 | 63756 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/01/13 | 25537 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/01/13 | 27502 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/01/13 | 16578 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/01/13 | 18484 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/01/13 | 64578 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/01/13 | 70970 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/01/13 | 157600 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/01/13 | 172573 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/01/13 | 58708 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/01/13 | 67224 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/01/13 | 101458 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/01/13 | 109143 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/01/13 | 2672854 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/01/13 | 2797479 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/01/13 | 55339 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/01/13 | 62338 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/01/13 | 37118 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/01/13 | 41209 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/01/13 | 28694 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/01/13 | 34033 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/01/13 | 67766 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/01/13 | 71912 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/01/13 | 317771 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/01/13 | 355357 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/01/13 | 55735 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/01/13 | 57404 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/01/13 | 591458 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/01/13 | 629343 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/01/13 | 39737 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/01/13 | 43697 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/01/13 | 260672 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/01/13 | 1406627 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/01/13 | 1300894 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/01/13 | 13513 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/01/13 | 14412 | 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
-2022/01/12 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/01/13 | 1153 | 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
@@ -298510,7 +298530,7 @@
2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma
2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma
2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma
-2022/01/12 | 922 | systems/win32/miktex/tm/packages/pr.ini
+2022/01/13 | 922 | 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
@@ -300249,7 +300269,7 @@
2004/06/04 | 404 | tds/tds.sed
2004/06/23 | 65418 | tds/tds.tex
2019/05/29 | 304264 | tds.zip
-2022/01/13 | 186 | timestamp
+2022/01/14 | 186 | timestamp
2002/08/26 | 61898 | usergrps/dante/antrag.pdf
2002/08/26 | 118217 | usergrps/dante/antrag.ps
2021/11/11 | 917 | usergrps/dante/dtk/doc/beispiel.bib
diff --git a/FILES.byname.gz b/FILES.byname.gz
index 85d9facd75..33a8fd8135 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index 072a7bd549..7759cd1ded 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,21 +1,425 @@
+2022/01/13 | 99703 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
+2022/01/13 | 996 | macros/latex/contrib/siunitx/README.md
+2022/01/13 | 99179 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
+2022/01/13 | 99052 | macros/latex/contrib/tagpdf/tagpdf.tex
+2022/01/13 | 98475 | macros/latex/contrib/siunitx/siunitx-unit.dtx
+2022/01/13 | 97081 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
+2022/01/13 | 96924 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/01/13 | 959836 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
+2022/01/13 | 9572 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
+2022/01/13 | 95484 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
+2022/01/13 | 953379 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+2022/01/13 | 95329 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/01/13 | 93944 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
+2022/01/13 | 937944 | systems/texlive/tlnet/archive/tex4ht.r61591.tar.xz
+2022/01/13 | 922 | systems/win32/miktex/tm/packages/pr.ini
+2022/01/13 | 91759 | macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
+2022/01/13 | 88163 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
+2022/01/13 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
+2022/01/13 | 8783 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
+2022/01/13 | 86663 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/01/13 | 8652 | macros/latex/contrib/tagpdf/ex-AF-file.pdf
+2022/01/13 | 855144 | systems/texlive/tlnet/archive/l3backend.doc.r61588.tar.xz
+2022/01/13 | 824780 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
+2022/01/13 | 81531 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/01/13 | 812476 | systems/texlive/tlnet/archive/knowledge.doc.r61583.tar.xz
+2022/01/13 | 801 | macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+2022/01/13 | 79037 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
+2022/01/13 | 78967 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/01/13 | 7879 | macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+2022/01/13 | 7854 | macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+2022/01/13 | 777 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+2022/01/13 | 7758 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
+2022/01/13 | 7728 | macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+2022/01/13 | 77066 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
+2022/01/13 | 76282 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/01/13 | 753 | macros/latex/contrib/esami/doc/examples/problem4-fillin.tex
+2022/01/13 | 753220 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
+2022/01/13 | 752 | macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
+2022/01/13 | 752397 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/01/13 | 7504 | systems/texlive/tlnet/archive/sillypage.r61584.tar.xz
+2022/01/13 | 74060 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
+2022/01/13 | 739053 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+2022/01/13 | 73462 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
+2022/01/13 | 73280 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/01/13 | 72884 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
+2022/01/13 | 7233038 | macros/latex-dev/required/tools.zip
+2022/01/13 | 71990 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/01/13 | 71912 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
+2022/01/13 | 70970 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/01/13 | 69503 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+2022/01/13 | 691229 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/01/13 | 68781 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
+2022/01/13 | 68652 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
+2022/01/13 | 6842 | macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+2022/01/13 | 68345 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
+2022/01/13 | 681611 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
+2022/01/13 | 6811620 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2022/01/13 | 68016 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
+2022/01/13 | 67958 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+2022/01/13 | 67766 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
+2022/01/13 | 676300 | macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+2022/01/13 | 67224 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/01/13 | 664425 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+2022/01/13 | 6626 | macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+2022/01/13 | 6542 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+2022/01/13 | 65086 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
+2022/01/13 | 648865 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+2022/01/13 | 64735 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
+2022/01/13 | 64578 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
+2022/01/13 | 64575 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
+2022/01/13 | 644 | macros/latex/contrib/esami/doc/examples/problem1.tex
+2022/01/13 | 6408360 | systems/texlive/tlnet/archive/newtx.r61581.tar.xz
+2022/01/13 | 638335 | macros/latex/contrib/siunitx/siunitx.pdf
+2022/01/13 | 63756 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/01/13 | 6349 | macros/latex/contrib/esami/doc/examples/test14.tex
+2022/01/13 | 63367 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
+2022/01/13 | 63346 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+2022/01/13 | 631997 | systems/win32/miktex/tm/packages/next/files.csv.lzma
+2022/01/13 | 631452 | systems/texlive/tlnet/archive/newtx.doc.r61581.tar.xz
+2022/01/13 | 631204 | systems/win32/miktex/tm/packages/files.csv.lzma
+2022/01/13 | 630239 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
+2022/01/13 | 629343 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/01/13 | 62811 | macros/latex/contrib/siunitx/CHANGELOG.md
+2022/01/13 | 625 | macros/latex/contrib/esami/doc/examples/test11.tex
+2022/01/13 | 62556 | systems/texlive/tlnet/archive/siunitx.r61585.tar.xz
+2022/01/13 | 62426 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
+2022/01/13 | 62338 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
+2022/01/13 | 616544 | systems/texlive/tlnet/archive/easybook.doc.r61582.tar.xz
+2022/01/13 | 607833 | macros/latex/contrib/siunitx/siunitx-code.pdf
+2022/01/13 | 5 | macros/latex/contrib/tagpdf/pac3.PNG
+2022/01/13 | 5 | macros/latex/contrib/tagpdf/global-ex.png
+2022/01/13 | 5995 | macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+2022/01/13 | 599015 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/01/13 | 591458 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
+2022/01/13 | 58708 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
+2022/01/13 | 58658 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/01/13 | 586076 | systems/texlive/tlnet/archive/l3kernel.source.r61588.tar.xz
+2022/01/13 | 58499 | macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
+2022/01/13 | 580 | macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
+2022/01/13 | 5797 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.tex
+2022/01/13 | 577785 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+2022/01/13 | 575 | macros/latex/contrib/esami/doc/examples/problem3-matching.tex
+2022/01/13 | 575283 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+2022/01/13 | 57445 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
+2022/01/13 | 57404 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
+2022/01/13 | 57342 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
+2022/01/13 | 572674 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+2022/01/13 | 57258 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/01/13 | 57063 | macros/latex/contrib/esami/doc/esami-doc-it.tex
+2022/01/13 | 57030 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
+2022/01/13 | 56676 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
+2022/01/13 | 566721 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/01/13 | 55735 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/01/13 | 55339 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/01/13 | 552088 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+2022/01/13 | 54992 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/01/13 | 546853 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+2022/01/13 | 533076 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+2022/01/13 | 532456 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
+2022/01/13 | 529883 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+2022/01/13 | 52835 | macros/latex/contrib/esami/doc/esami-doc-en.tex
+2022/01/13 | 5278 | macros/latex/contrib/tagpdf/tagpdf-space.dtx
+2022/01/13 | 527828 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
+2022/01/13 | 52551 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
+2022/01/13 | 525259 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+2022/01/13 | 52309 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/01/13 | 52042 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
+2022/01/13 | 517264 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+2022/01/13 | 51536 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
+2022/01/13 | 51502 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/01/13 | 50851 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
+2022/01/13 | 50848 | macros/latex/contrib/siunitx/siunitx-table.dtx
+2022/01/13 | 505418 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+2022/01/13 | 504512 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+2022/01/13 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2022/01/13 | 488964 | macros/latex/contrib/esami/doc/esami-doc-it.pdf
+2022/01/13 | 4884 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.ins
+2022/01/13 | 48844 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
+2022/01/13 | 486212 | macros/latex/contrib/tagpdf/tagpdf.pdf
+2022/01/13 | 483936 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
+2022/01/13 | 480874 | macros/latex/contrib/esami/doc/esami-doc-en.pdf
+2022/01/13 | 47912 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
+2022/01/13 | 477926 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/01/13 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
+2022/01/13 | 4746 | macros/latex/contrib/siunitx/siunitx-locale.dtx
+2022/01/13 | 471 | macros/latex/contrib/esami/doc/examples/test1.tex
+2022/01/13 | 470363 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
+2022/01/13 | 4691 | macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+2022/01/13 | 462 | macros/latex/contrib/esami/doc/examples/test5-fillin.tex
+2022/01/13 | 4627 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
+2022/01/13 | 4618 | macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+2022/01/13 | 4617 | macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+2022/01/13 | 46095 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
+2022/01/13 | 45892 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
+2022/01/13 | 45773 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
+2022/01/13 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2022/01/13 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/01/13 | 454999 | macros/latex/contrib/dbshow.zip
+2022/01/13 | 45340 | systems/texlive/tlnet/archive/l3packages.source.r61588.tar.xz
+2022/01/13 | 446113 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+2022/01/13 | 44358 | macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+2022/01/13 | 440283 | macros/latex/contrib/dbshow/dbshow.pdf
+2022/01/13 | 43928 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
+2022/01/13 | 43821 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/01/13 | 43697 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
+2022/01/13 | 43669 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
+2022/01/13 | 43452 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/01/13 | 43292 | systems/texlive/tlnet/archive/tuda-ci.r61586.tar.xz
+2022/01/13 | 4284 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.tex
+2022/01/13 | 42769 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/01/13 | 424541 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+2022/01/13 | 42284 | systems/texlive/tlnet/archive/knowledge.source.r61583.tar.xz
+2022/01/13 | 417279 | macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+2022/01/13 | 4153 | macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+2022/01/13 | 41390 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
+2022/01/13 | 41264 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
+2022/01/13 | 41209 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/01/13 | 4041 | macros/latex/contrib/pdfmanagement-testphase/l3ref-tmp.sty
+2022/01/13 | 402560 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61579.tar.xz
+2022/01/13 | 40163 | macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+2022/01/13 | 39737 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/01/13 | 394301 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/01/13 | 38565 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
+2022/01/13 | 38468 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/01/13 | 383080 | macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+2022/01/13 | 3780 | systems/texlive/tlnet/archive/sillypage.source.r61584.tar.xz
+2022/01/13 | 37389 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/01/13 | 37118 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
+2022/01/13 | 37097 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/01/13 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
+2022/01/13 | 36148056 | macros/latex-dev/base.zip
+2022/01/13 | 36058 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/01/13 | 355357 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
+2022/01/13 | 35242 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
+2022/01/13 | 35175 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/01/13 | 3425 | macros/latex/contrib/dbshow/dbshow.ins
+2022/01/13 | 34033 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
+2022/01/13 | 34008 | macros/latex/contrib/siunitx/siunitx-print.dtx
+2022/01/13 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
+2022/01/13 | 332747 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/01/13 | 32957 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/01/13 | 326303 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
+2022/01/13 | 32184 | systems/texlive/tlnet/archive/l3backend.source.r61588.tar.xz
+2022/01/13 | 32156 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
+2022/01/13 | 317771 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/01/13 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
+2022/01/13 | 31622 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
+2022/01/13 | 31573 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
+2022/01/13 | 31553 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/01/13 | 31429 | macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+2022/01/13 | 31400 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
+2022/01/13 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
+2022/01/13 | 3114 | macros/latex/contrib/esami/doc/examples/testA-sol.tex
+2022/01/13 | 3071511 | macros/latex-dev/required/graphics.zip
+2022/01/13 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/01/13 | 30172 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/01/13 | 3005 | macros/latex/contrib/esami/doc/examples/testA.tex
+2022/01/13 | 296107 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/01/13 | 2953 | macros/latex/contrib/tagpdf/tagpdf.ins
+2022/01/13 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
+2022/01/13 | 28755 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
+2022/01/13 | 28755 | macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+2022/01/13 | 28694 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
+2022/01/13 | 286565 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
+2022/01/13 | 285739 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
+2022/01/13 | 28555 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
+2022/01/13 | 2850 | info/biblio/typeset.ltx
+2022/01/13 | 28319 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/01/13 | 28236 | macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+2022/01/13 | 281543 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
+2022/01/13 | 2812 | macros/latex/contrib/esami/es-greek.lng
+2022/01/13 | 28056 | macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+2022/01/13 | 2797479 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/01/13 | 27698 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
+2022/01/13 | 276120 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
+2022/01/13 | 2760509 | macros/latex-dev/required/amsmath.zip
+2022/01/13 | 27502 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
+2022/01/13 | 27436 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+2022/01/13 | 27400 | systems/texlive/tlnet/archive/luamplib.source.r61587.tar.xz
+2022/01/13 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
+2022/01/13 | 27269 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/01/13 | 2725 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
+2022/01/13 | 26927 | macros/latex/contrib/tagpdf/tagpdf-user.dtx
+2022/01/13 | 2677 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex
+2022/01/13 | 2675 | macros/latex/contrib/esami/doc/examples/testA-xetex.tex
+2022/01/13 | 2673 | macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex
+2022/01/13 | 2672854 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/01/13 | 2670 | macros/latex/contrib/esami/doc/examples/testA-luatex.tex
+2022/01/13 | 26670 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+2022/01/13 | 26660 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+2022/01/13 | 2637 | macros/latex/contrib/tagpdf/ex-patch-list.tex
+2022/01/13 | 261828 | systems/texlive/tlnet/archive/sillypage.doc.r61584.tar.xz
+2022/01/13 | 260744 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
+2022/01/13 | 260672 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
+2022/01/13 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
+2022/01/13 | 259312 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/01/13 | 25817 | macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+2022/01/13 | 257725 | macros/latex/contrib/esami/doc/examples/testA-sol.pdf
+2022/01/13 | 256458 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
+2022/01/13 | 25631690 | systems/texlive/tlnet/install-tl.zip
+2022/01/13 | 25537 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
+2022/01/13 | 2528 | macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
+2022/01/13 | 2520 | macros/latex/contrib/esami/es-serbian.lng
+2022/01/13 | 251406 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
+2022/01/13 | 25104 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
+2022/01/13 | 25063 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/01/13 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
+2022/01/13 | 246042 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
+2022/01/13 | 244845 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/01/13 | 24090 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
+2022/01/13 | 23948 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/01/13 | 2389 | macros/latex/contrib/tagpdf/tagpdf-code.tex
+2022/01/13 | 2347 | macros/latex/contrib/esami/doc/examples/master-sol.tex
+2022/01/13 | 2340544 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/01/13 | 22818 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
+2022/01/13 | 22636 | systems/texlive/tlnet/archive/knowledge.r61583.tar.xz
+2022/01/13 | 22154 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/01/13 | 22111 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+2022/01/13 | 2197 | macros/latex/contrib/dbshow/README.md
+2022/01/13 | 217098 | macros/latex/contrib/esami/doc/examples/testA.pdf
+2022/01/13 | 21640 | systems/texlive/tlnet/archive/l3packages.r61588.tar.xz
+2022/01/13 | 216350 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
+2022/01/13 | 2150 | macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
+2022/01/13 | 213499 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
+2022/01/13 | 21322 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/01/13 | 21067 | macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+2022/01/13 | 210225 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/01/13 | 20876689 | systems/texlive/tlnet/install-tl-windows.exe
+2022/01/13 | 20554 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+2022/01/13 | 202744 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
+2022/01/13 | 2022 | macros/latex/contrib/tagpdf/link-figure-input.tex
+2022/01/13 | 20196 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
+2022/01/13 | 200083 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/01/13 | 199684 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
+2022/01/13 | 199663 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
+2022/01/13 | 1992377 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
+2022/01/13 | 198988 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
+2022/01/13 | 19846 | macros/latex/contrib/siunitx/siunitx.dtx
+2022/01/13 | 19727 | macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+2022/01/13 | 196134 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/01/13 | 19595 | macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+2022/01/13 | 19363 | macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+2022/01/13 | 18484 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
+2022/01/13 | 18461 | macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+2022/01/13 | 1845489 | macros/latex/contrib/tagpdf.zip
+2022/01/13 | 18357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
+2022/01/13 | 18287 | macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+2022/01/13 | 1822 | macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
+2022/01/13 | 181570 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/01/13 | 1808188 | systems/texlive/tlnet/archive/l3packages.doc.r61588.tar.xz
+2022/01/13 | 1806532 | macros/latex/contrib/esami.zip
+2022/01/13 | 18064 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+2022/01/13 | 179829 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/01/13 | 17958 | macros/latex/contrib/tagpdf/tagpdf.dtx
+2022/01/13 | 17742 | macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+2022/01/13 | 176911 | macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+2022/01/13 | 17432 | macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+2022/01/13 | 1731303 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
+2022/01/13 | 1730 | macros/latex/contrib/tagpdf/tagpdf.bib
+2022/01/13 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2022/01/13 | 172573 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
+2022/01/13 | 17128 | systems/texlive/tlnet/archive/easybook.source.r61582.tar.xz
+2022/01/13 | 17092 | systems/texlive/tlnet/archive/easybook.r61582.tar.xz
+2022/01/13 | 17059949 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2022/01/13 | 1701 | macros/latex/contrib/esami/doc/examples/test4.tex
+2022/01/13 | 170184 | systems/texlive/tlnet/archive/l3kernel.r61588.tar.xz
+2022/01/13 | 16888 | macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+2022/01/13 | 168841 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/01/13 | 16704 | macros/latex/contrib/siunitx/siunitx-angle.dtx
+2022/01/13 | 16578 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
+2022/01/13 | 16500 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/01/13 | 15777 | macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+2022/01/13 | 157600 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/01/13 | 156860 | systems/texlive/tlnet/archive/luamplib.doc.r61587.tar.xz
+2022/01/13 | 155303 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/01/13 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/01/13 | 1537 | macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
+2022/01/13 | 1533 | macros/latex/contrib/esami/doc/examples/test3.tex
+2022/01/13 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
+2022/01/13 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2022/01/13 | 152077 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/01/13 | 15002 | macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+2022/01/13 | 1499384 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/01/13 | 14980 | systems/texlive/tlnet/archive/l3backend.r61588.tar.xz
+2022/01/13 | 147734 | macros/latex/contrib/siunitx/siunitx.tex
+2022/01/13 | 1461338 | install/macros/latex/contrib/siunitx.tds.zip
+2022/01/13 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2022/01/13 | 1452740 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
+2022/01/13 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/01/13 | 14412 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
+2022/01/13 | 1421115 | macros/latex/contrib/siunitx.zip
+2022/01/13 | 1406627 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
+2022/01/13 | 1405764 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
+2022/01/13 | 1398 | macros/latex/contrib/tagpdf/ex-attribute.tex
+2022/01/13 | 139123 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
+2022/01/13 | 1365 | macros/latex/contrib/esami/doc/examples/test13.tex
+2022/01/13 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61591.tar.xz
+2022/01/13 | 1361 | macros/latex/contrib/esami/doc/examples/test9.tex
+2022/01/13 | 136037 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
+2022/01/13 | 1355968 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
+2022/01/13 | 13558 | macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+2022/01/13 | 13513 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/01/13 | 135132 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
+2022/01/13 | 13335 | macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+2022/01/13 | 1322451 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/01/13 | 1304425 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
+2022/01/13 | 1300894 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/01/13 | 1300338 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
+2022/01/13 | 126842 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/01/13 | 1238904 | systems/texlive/tlnet/archive/tex4ht.source.r61591.tar.xz
+2022/01/13 | 1237 | macros/latex/contrib/tagpdf/ex-AF-file.tex
+2022/01/13 | 122225 | macros/latex/contrib/dbshow/dbshow.dtx
+2022/01/13 | 122028 | macros/latex/contrib/siunitx/siunitx-number.dtx
+2022/01/13 | 12060 | systems/texlive/tlnet/archive/luamplib.r61587.tar.xz
+2022/01/13 | 1205316 | systems/texlive/tlnet/archive/siunitx.doc.r61585.tar.xz
+2022/01/13 | 120222 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/01/13 | 1200 | macros/latex/contrib/pdfmanagement-testphase/README.md
+2022/01/13 | 1195004 | macros/latex/contrib/tagpdf/tagpdf-code.pdf
+2022/01/13 | 1180762 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/01/13 | 1176 | macros/latex/contrib/tagpdf/README.md
+2022/01/13 | 1175578 | info/biblio/typeset.bib
+2022/01/13 | 1167 | macros/latex/contrib/esami/doc/examples/problem2.tex
+2022/01/13 | 1165789 | macros/latex-dev/required/latex-lab.zip
+2022/01/13 | 115953 | macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
+2022/01/13 | 115647 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/01/13 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
+2022/01/13 | 11526 | macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+2022/01/13 | 1141456 | systems/texlive/tlnet/archive/tuda-ci.doc.r61586.tar.xz
+2022/01/13 | 113014 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
+2022/01/13 | 112663 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/01/13 | 11131063 | macros/latex/contrib/pdfmanagement-testphase.zip
+2022/01/13 | 11058484 | systems/texlive/tlnet/archive/l3kernel.doc.r61588.tar.xz
+2022/01/13 | 109561 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
+2022/01/13 | 109143 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
+2022/01/13 | 1087177 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
+2022/01/13 | 108296 | systems/texlive/tlnet/archive/texlive-scripts.r61579.tar.xz
+2022/01/13 | 108000 | systems/texlive/tlnet/archive/siunitx.source.r61585.tar.xz
+2022/01/13 | 1073 | macros/latex/contrib/tagpdf/ex-softhyphen.tex
+2022/01/13 | 104676 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
+2022/01/13 | 103439 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/01/13 | 1026 | macros/latex/contrib/esami/doc/examples/test2.tex
+2022/01/13 | 1023 | macros/latex/contrib/esami/doc/examples/test12.tex
+2022/01/13 | 1019 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
+2022/01/13 | 101458 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
+2022/01/13 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+2022/01/12 | 99 | macros/latex-dev/base/ltpara-code.tex
2022/01/12 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
-2022/01/12 | 99700 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma
-2022/01/12 | 996 | macros/latex/contrib/siunitx/README.md
2022/01/12 | 99592 | macros/latex/contrib/l3kernel/l3color.dtx
2022/01/12 | 99437 | macros/latex/contrib/l3packages/xtemplate.dtx
-2022/01/12 | 99179 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma
-2022/01/12 | 98475 | macros/latex/contrib/siunitx/siunitx-unit.dtx
+2022/01/12 | 992 | macros/latex-dev/required/latex-lab/README.md
+2022/01/12 | 9926 | macros/latex-dev/base/ltnews21.tex
2022/01/12 | 9745 | macros/luatex/generic/luamplib/NEWS
-2022/01/12 | 97078 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma
-2022/01/12 | 96925 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma
+2022/01/12 | 9713 | macros/latex-dev/base/format.ins
+2022/01/12 | 96 | macros/latex-dev/base/doc-code.tex
2022/01/12 | 964 | fonts/newtx/vf/ntx-BoldItalic-tosf-ot1.vf
2022/01/12 | 960 | fonts/newtx/vf/ntx-Italic-tosf-ot1.vf
2022/01/12 | 960 | fonts/newtx/vf/ntx-BoldItalic-tlf-ot1.vf
2022/01/12 | 960 | fonts/newtx/vf/ntx-BoldItalic-osf-ot1.vf
2022/01/12 | 960 | fonts/newtx/vf/ntx-BoldItalic-lf-ot1.vf
2022/01/12 | 96017 | macros/luatex/generic/luamplib/luamplib.dtx
-2022/01/12 | 959835 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma
-2022/01/12 | 9572 | macros/latex/contrib/siunitx/siunitx-symbol.dtx
2022/01/12 | 956 | fonts/newtx/vf/ntx-Regular-tosf-ot1.vf
2022/01/12 | 956 | fonts/newtx/vf/ntx-Regular-tlf-ot1.vf
2022/01/12 | 956 | fonts/newtx/vf/ntx-Regular-osf-ot1.vf
@@ -27,41 +431,52 @@
2022/01/12 | 956 | fonts/newtx/vf/ntx-Bold-tlf-ot1.vf
2022/01/12 | 956 | fonts/newtx/vf/ntx-Bold-osf-ot1.vf
2022/01/12 | 9569036 | fonts/newtx.zip
-2022/01/12 | 95483 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma
-2022/01/12 | 95330 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
+2022/01/12 | 9557 | macros/latex-dev/base/ltcntrl.dtx
+2022/01/12 | 9493 | macros/latex-dev/required/tools/shellesc.dtx
2022/01/12 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
2022/01/12 | 944 | fonts/newtx/tfm/ntx-Bold-lf-ot1.tfm
2022/01/12 | 9436 | macros/latex/contrib/l3kernel/l3flag.dtx
-2022/01/12 | 93942 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma
-2022/01/12 | 937868 | systems/texlive/tlnet/archive/tex4ht.r61574.tar.xz
+2022/01/12 | 9395 | macros/latex-dev/base/syntonly.dtx
2022/01/12 | 935875 | install/macros/latex/contrib/l3backend.tds.zip
-2022/01/12 | 922 | systems/win32/miktex/tm/packages/pr.ini
+2022/01/12 | 9345 | macros/latex-dev/base/preload.dtx
2022/01/12 | 9216 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2022/01/12 | 9195 | macros/latex-dev/required/amsmath/amsopn.dtx
+2022/01/12 | 9172 | macros/latex-dev/base/source2edoc.cls
2022/01/12 | 9171 | macros/latex/contrib/l3backend/l3backend-opacity.dtx
+2022/01/12 | 91124 | macros/latex-dev/base/utf8ienc.dtx
+2022/01/12 | 9068 | macros/latex-dev/base/lppl-1-0.txt
2022/01/12 | 90394 | macros/latex/contrib/l3kernel/l3seq.dtx
+2022/01/12 | 90370 | macros/latex-dev/base/lttextcomp.dtx
2022/01/12 | 90018 | macros/latex/contrib/l3kernel/l3int.dtx
2022/01/12 | 899064 | macros/latex/contrib/l3backend.zip
+2022/01/12 | 8976 | macros/latex-dev/required/tools/rawfonts.dtx
+2022/01/12 | 89722 | macros/latex-dev/base/slides.dtx
+2022/01/12 | 8970 | macros/latex-dev/base/ltnews17.tex
2022/01/12 | 896473 | macros/latex/contrib/l3backend/l3backend-code.pdf
-2022/01/12 | 88162 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma
-2022/01/12 | 8798 | macros/latex/contrib/siunitx/siunitx-command.dtx
-2022/01/12 | 8782 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma
2022/01/12 | 87516 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2022/01/12 | 86662 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma
+2022/01/12 | 8731 | macros/latex-dev/base/ltthm.dtx
2022/01/12 | 866520 | macros/latex/contrib/knowledge.zip
+2022/01/12 | 8663 | macros/latex-dev/required/amsmath/amsbsy.dtx
+2022/01/12 | 8626 | macros/latex-dev/base/oldlfont.dtx
+2022/01/12 | 85857 | macros/latex-dev/base/ltdefns.dtx
+2022/01/12 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty
2022/01/12 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
2022/01/12 | 84785 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
2022/01/12 | 84537 | macros/latex/contrib/l3packages/xparse-2018-04-12.sty
+2022/01/12 | 84215 | macros/latex-dev/base/ltfssini.dtx
2022/01/12 | 8372 | fonts/newtx/tfm/ntx-BoldItalic-osf-sc-ly1.tfm
2022/01/12 | 8372 | fonts/newtx/tfm/ntx-BoldItalic-lf-sc-ly1.tfm
+2022/01/12 | 8368 | macros/latex-dev/base/ltnews.tex
2022/01/12 | 8336 | fonts/newtx/tfm/ntx-BoldItalic-tlf-sc-ly1.tfm
2022/01/12 | 8328 | fonts/newtx/tfm/ntx-BoldItalic-tosf-sc-ly1.tfm
-2022/01/12 | 824781 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma
2022/01/12 | 82390 | macros/latex/contrib/easybook/easybook.tex
+2022/01/12 | 82371 | macros/latex-dev/required/amsmath/testmath.tex
2022/01/12 | 82359 | macros/latex/contrib/l3kernel/l3clist.dtx
-2022/01/12 | 81529 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma
+2022/01/12 | 819385 | macros/latex-dev/base/ltshipout-code.pdf
2022/01/12 | 8100 | fonts/newtx/tfm/ntx-Italic-lf-sc-ly1.tfm
2022/01/12 | 80898 | macros/latex/contrib/l3kernel/l3prefixes.pdf
2022/01/12 | 8088 | fonts/newtx/tfm/ntx-Italic-osf-sc-ly1.tfm
+2022/01/12 | 80881 | macros/latex-dev/base/ltfssbas.dtx
2022/01/12 | 8052 | fonts/newtx/tfm/ntx-Italic-tosf-sc-ly1.tfm
2022/01/12 | 8052 | fonts/newtx/tfm/ntx-Italic-tlf-sc-ly1.tfm
2022/01/12 | 8028 | fonts/newtx/tfm/ntx-Slanted-lf-sc-ly1.tfm
@@ -71,33 +486,30 @@
2022/01/12 | 7996 | fonts/newtx/tfm/ntx-Slanted-tlf-sc-ly1.tfm
2022/01/12 | 79925 | macros/latex/contrib/l3kernel/l3names.dtx
2022/01/12 | 79792 | macros/latex/contrib/l3kernel/l3box.dtx
+2022/01/12 | 796244 | macros/latex-dev/base/ltfilehook-code.pdf
2022/01/12 | 7956 | fonts/newtx/tfm/ntx-BoldSlanted-lf-sc-ly1.tfm
2022/01/12 | 7952 | fonts/newtx/tfm/ntx-BoldSlanted-osf-sc-ly1.tfm
2022/01/12 | 7936 | macros/latex/contrib/knowledge/knowledge-configuration.dtx
2022/01/12 | 7924 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-sc-ly1.tfm
2022/01/12 | 7924 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-sc-ly1.tfm
-2022/01/12 | 79036 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2022/01/12 | 78965 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma
+2022/01/12 | 78913 | macros/latex-dev/base/ltshipout.dtx
2022/01/12 | 78581 | macros/latex/contrib/easybook/easybook.dtx
2022/01/12 | 7816 | fonts/newtx/tfm/ntx-Regular-lf-sc-ly1.tfm
2022/01/12 | 7812 | fonts/newtx/tfm/ntx-Regular-osf-sc-ly1.tfm
2022/01/12 | 7784 | fonts/newtx/tfm/ntx-Regular-tosf-sc-ly1.tfm
2022/01/12 | 7784 | fonts/newtx/tfm/ntx-Regular-tlf-sc-ly1.tfm
-2022/01/12 | 7757 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma
2022/01/12 | 7752 | fonts/newtx/tfm/ntx-Bold-lf-sc-ly1.tfm
2022/01/12 | 7748 | fonts/newtx/tfm/ntx-Bold-osf-sc-ly1.tfm
2022/01/12 | 7720 | fonts/newtx/tfm/ntx-Bold-tosf-sc-ly1.tfm
2022/01/12 | 7720 | fonts/newtx/tfm/ntx-Bold-tlf-sc-ly1.tfm
2022/01/12 | 770976 | macros/latex/contrib/knowledge/knowledge.pdf
-2022/01/12 | 77062 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
-2022/01/12 | 76280 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma
+2022/01/12 | 76397 | macros/latex-dev/required/tools/longtable.dtx
2022/01/12 | 76279 | macros/latex/contrib/l3kernel/l3skip.dtx
2022/01/12 | 75639 | macros/latex/contrib/l3kernel/l3str.dtx
-2022/01/12 | 753218 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma
-2022/01/12 | 752396 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin-x64.tar.lzma
+2022/01/12 | 7524 | macros/latex-dev/base/ltxguide.cls
2022/01/12 | 7488 | fonts/newtx/tfm/ntx-Slanted-lf-ly1.tfm
2022/01/12 | 7484 | fonts/newtx/tfm/ntx-Slanted-osf-ly1.tfm
-2022/01/12 | 7476 | systems/texlive/tlnet/archive/sillypage.r61573.tar.xz
+2022/01/12 | 748004 | macros/latex-dev/base/doc.pdf
2022/01/12 | 7456 | fonts/newtx/tfm/ntx-Slanted-tosf-ly1.tfm
2022/01/12 | 7456 | fonts/newtx/tfm/ntx-Slanted-tlf-ly1.tfm
2022/01/12 | 7456 | fonts/newtx/tfm/ntx-BoldSlanted-lf-ly1.tfm
@@ -107,14 +519,13 @@
2022/01/12 | 74289 | macros/latex/contrib/l3kernel/l3msg.dtx
2022/01/12 | 7424 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-ly1.tfm
2022/01/12 | 7424 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-ly1.tfm
-2022/01/12 | 74060 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
2022/01/12 | 7404 | fonts/newtx/tfm/ntxth-Slanted-tlf-ly1.tfm
2022/01/12 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
2022/01/12 | 7374 | macros/latex/contrib/l3packages/xfp.dtx
-2022/01/12 | 73462 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma
-2022/01/12 | 73279 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma
+2022/01/12 | 73672 | macros/latex-dev/required/tools/tools-overview.pdf
+2022/01/12 | 7356 | macros/latex-dev/required/amsmath/changes.txt
+2022/01/12 | 7322212 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
2022/01/12 | 7298 | macros/latex/contrib/knowledge/knowledge-example.tex
-2022/01/12 | 72883 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma
2022/01/12 | 7284 | fonts/newtx/tfm/ntx-Regular-lf-ly1.tfm
2022/01/12 | 7280 | fonts/newtx/tfm/ntx-Regular-osf-ly1.tfm
2022/01/12 | 7264 | fonts/newtx/tfm/ntx-Bold-lf-ly1.tfm
@@ -123,203 +534,261 @@
2022/01/12 | 7260 | fonts/newtx/tfm/ntx-Bold-osf-ly1.tfm
2022/01/12 | 7252 | fonts/newtx/tfm/ntx-Regular-tosf-ly1.tfm
2022/01/12 | 7252 | fonts/newtx/tfm/ntx-Regular-tlf-ly1.tfm
+2022/01/12 | 72475 | macros/latex-dev/base/ltfsstrc.dtx
2022/01/12 | 7232 | fonts/newtx/tfm/ntx-Bold-tosf-ly1.tfm
2022/01/12 | 7232 | fonts/newtx/tfm/ntx-Bold-tlf-ly1.tfm
+2022/01/12 | 7221 | macros/latex-dev/base/ltnews20.tex
+2022/01/12 | 7216 | macros/latex-dev/base/exscale.dtx
2022/01/12 | 7216 | fonts/newtx/tfm/ntx-BoldItalic-tlf-ly1.tfm
+2022/01/12 | 72136 | macros/latex-dev/required/tools/verbatim.dtx
2022/01/12 | 7212 | fonts/newtx/tfm/ntx-BoldItalic-tosf-ly1.tfm
-2022/01/12 | 71989 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma
+2022/01/12 | 7200 | macros/latex-dev/base/sample2e.tex
+2022/01/12 | 719936 | macros/latex-dev/base/ltcmdhooks-code.pdf
2022/01/12 | 7192 | fonts/newtx/tfm/ntx-Italic-lf-ly1.tfm
-2022/01/12 | 71911 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma
2022/01/12 | 7180 | fonts/newtx/tfm/ntx-Italic-osf-ly1.tfm
2022/01/12 | 7144 | fonts/newtx/tfm/ntx-Italic-tosf-ly1.tfm
2022/01/12 | 7144 | fonts/newtx/tfm/ntx-Italic-tlf-ly1.tfm
2022/01/12 | 7116 | fonts/newtx/tfm/ntxth-Italic-osf-ly1.tfm
-2022/01/12 | 70971 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma
+2022/01/12 | 7104 | macros/latex-dev/base/alltt.dtx
2022/01/12 | 7076 | fonts/newtx/tfm/ntxth-Italic-tlf-ly1.tfm
2022/01/12 | 70685 | macros/latex/contrib/l3kernel/expl3.dtx
+2022/01/12 | 70645 | macros/latex-dev/base/ltfssdcl.dtx
2022/01/12 | 70578 | macros/latex/contrib/l3kernel/l3fp.dtx
+2022/01/12 | 7029 | macros/latex-dev/base/ltnews13.tex
+2022/01/12 | 702777 | macros/latex-dev/base/lthooks-doc.pdf
+2022/01/12 | 70186 | macros/latex-dev/required/graphics/graphics.dtx
+2022/01/12 | 69732 | macros/latex-dev/required/amsmath/amstex.sty
2022/01/12 | 69523 | macros/latex/contrib/l3kernel/l3candidates.dtx
2022/01/12 | 6919466 | macros/latex/contrib/l3kernel/source3.pdf
-2022/01/12 | 691228 | systems/win32/miktex/tm/packages/next/miktex-ptex-bin.tar.lzma
+2022/01/12 | 69050 | macros/latex-dev/base/clsguide.tex
2022/01/12 | 69044 | macros/latex/contrib/l3kernel/l3text-case.dtx
-2022/01/12 | 68781 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma
-2022/01/12 | 68651 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma
-2022/01/12 | 681609 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
-2022/01/12 | 6811645 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2022/01/12 | 68014 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma
-2022/01/12 | 67763 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma
-2022/01/12 | 67221 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
+2022/01/12 | 69002 | macros/latex-dev/base/ltpictur.dtx
+2022/01/12 | 68435 | macros/latex-dev/base/usrguide.tex
+2022/01/12 | 6837 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+2022/01/12 | 6789 | macros/latex-dev/required/tools/delarray.dtx
+2022/01/12 | 6760 | macros/latex-dev/base/slides.ins
+2022/01/12 | 6709 | macros/latex-dev/base/latexsym.dtx
2022/01/12 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2022/01/12 | 666571 | macros/latex-dev/base/ltpara-code.pdf
2022/01/12 | 66196 | macros/latex/contrib/l3kernel/l3prg.dtx
2022/01/12 | 6596 | macros/latex/contrib/l3backend/CHANGELOG.md
+2022/01/12 | 65782 | macros/latex-dev/base/ltluatex.dtx
2022/01/12 | 6532 | systems/texlive/tlnet/archive/collection-latexextra.r61573.tar.xz
-2022/01/12 | 65085 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma
2022/01/12 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
-2022/01/12 | 64734 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma
-2022/01/12 | 64577 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma
-2022/01/12 | 64574 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma
2022/01/12 | 6450 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2022/01/12 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex
2022/01/12 | 6440199 | macros/latex/contrib/tuda-ci.zip
2022/01/12 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
-2022/01/12 | 638333 | macros/latex/contrib/siunitx/siunitx.pdf
-2022/01/12 | 63755 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma
+2022/01/12 | 6424 | macros/latex-dev/base/ltnews14.tex
+2022/01/12 | 64237 | macros/latex-dev/base/ltfilehook.dtx
2022/01/12 | 636685 | macros/latex/contrib/easybook.zip
-2022/01/12 | 63366 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma
-2022/01/12 | 631997 | systems/win32/miktex/tm/packages/next/files.csv.lzma
-2022/01/12 | 631204 | systems/win32/miktex/tm/packages/files.csv.lzma
-2022/01/12 | 630239 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma
-2022/01/12 | 629343 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
+2022/01/12 | 6357 | macros/latex-dev/base/newlfont.dtx
+2022/01/12 | 63280 | macros/latex-dev/base/letter.dtx
2022/01/12 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2022/01/12 | 62565 | macros/latex/contrib/siunitx/CHANGELOG.md
-2022/01/12 | 62426 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma
2022/01/12 | 624090 | fonts/newtx/afm/ztmr.afm
-2022/01/12 | 62337 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma
2022/01/12 | 622808 | fonts/newtx/afm/ztmrsl.afm
2022/01/12 | 622339 | macros/latex/contrib/l3kernel/expl3.pdf
+2022/01/12 | 6218 | macros/latex-dev/required/tools/xr.dtx
2022/01/12 | 6195 | macros/latex/contrib/l3packages/xparse-2020-10-01.sty
+2022/01/12 | 61914 | macros/latex-dev/required/tools/changes.txt
2022/01/12 | 6182 | macros/latex/contrib/l3kernel/l3.ins
-2022/01/12 | 614788 | systems/texlive/tlnet/archive/easybook.doc.r61570.tar.xz
-2022/01/12 | 607583 | macros/latex/contrib/siunitx/siunitx-code.pdf
-2022/01/12 | 599013 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
+2022/01/12 | 61565 | macros/latex-dev/required/tools/bm.dtx
+2022/01/12 | 6155 | macros/latex-dev/base/ltpar.dtx
+2022/01/12 | 60321 | macros/latex-dev/base/fontdef.dtx
+2022/01/12 | 5986 | macros/latex-dev/base/ltnews15.tex
+2022/01/12 | 5974 | macros/latex-dev/base/latexrelease.ins
2022/01/12 | 595053 | macros/latex/contrib/easybook/easybook.pdf
-2022/01/12 | 591456 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma
-2022/01/12 | 58706 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma
-2022/01/12 | 58657 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
+2022/01/12 | 58745 | macros/latex-dev/base/ltmiscen.dtx
+2022/01/12 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt
+2022/01/12 | 5859 | macros/latex-dev/base/ltidxglo.dtx
+2022/01/12 | 58551 | macros/latex-dev/base/ltfssaxes.dtx
+2022/01/12 | 5825 | macros/latex-dev/base/ltnews10.tex
+2022/01/12 | 5791 | macros/latex-dev/required/tools/somedefs.dtx
+2022/01/12 | 5775 | macros/latex-dev/base/ltnews16.tex
2022/01/12 | 576908 | systems/texlive/tlnet/archive/cochineal.doc.r61566.tar.xz
2022/01/12 | 57531 | macros/latex/contrib/l3kernel/l3prop.dtx
-2022/01/12 | 57443 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma
-2022/01/12 | 57402 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma
-2022/01/12 | 57340 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma
-2022/01/12 | 57257 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma
+2022/01/12 | 5732 | macros/latex-dev/base/ltnews08.tex
+2022/01/12 | 5714 | macros/latex-dev/base/inputenc.ins
2022/01/12 | 57078 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2022/01/12 | 57029 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma
-2022/01/12 | 56673 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma
-2022/01/12 | 566721 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
+2022/01/12 | 5699 | macros/latex-dev/base/ltnews05.tex
+2022/01/12 | 5680 | macros/latex-dev/required/tools/tools.ins
+2022/01/12 | 5678 | macros/latex-dev/base/ltnews04.tex
+2022/01/12 | 5671 | macros/latex-dev/base/ltnews27.tex
+2022/01/12 | 564740 | macros/latex-dev/base/ltshipout-doc.pdf
2022/01/12 | 5636 | macros/latex/contrib/l3packages/CHANGELOG.md
2022/01/12 | 5611 | macros/luatex/generic/luamplib/test-luamplib-latex.tex
-2022/01/12 | 55733 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma
+2022/01/12 | 560350 | macros/latex-dev/base/classes.pdf
+2022/01/12 | 5600535 | macros/latex-dev/base/source2e.pdf
+2022/01/12 | 560041 | macros/latex-dev/base/ltpara-doc.pdf
+2022/01/12 | 55982 | macros/latex-dev/base/ltfiles.dtx
+2022/01/12 | 5588 | macros/latex-dev/base/ltnews25.tex
+2022/01/12 | 5576 | macros/latex-dev/base/ltnews07.tex
+2022/01/12 | 5574 | macros/latex-dev/base/ltnews12.tex
+2022/01/12 | 55687 | macros/latex-dev/base/ltfloat.dtx
+2022/01/12 | 5544 | macros/latex-dev/base/ltnews06.tex
2022/01/12 | 55406 | macros/latex/contrib/l3packages/xparse.dtx
2022/01/12 | 55344 | systems/texlive/tlnet/archive/reledmac.r61571.tar.xz
-2022/01/12 | 55337 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma
+2022/01/12 | 5529 | macros/latex-dev/base/ltnews11.tex
+2022/01/12 | 5509 | macros/latex-dev/base/graphpap.dtx
2022/01/12 | 549 | macros/latex/contrib/l3backend/README.md
-2022/01/12 | 54990 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma
+2022/01/12 | 546703 | macros/latex-dev/base/ltfilehook-doc.pdf
+2022/01/12 | 5462 | macros/latex-dev/base/ltnews02.tex
+2022/01/12 | 546156 | macros/latex-dev/base/ltnews32.pdf
+2022/01/12 | 5451 | macros/latex-dev/base/ltnews09.tex
2022/01/12 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2022/01/12 | 54083 | macros/latex-dev/base/ltplain.dtx
+2022/01/12 | 5369 | macros/latex-dev/base/ltnews03.tex
2022/01/12 | 533919 | macros/latex/contrib/l3packages/xparse.pdf
-2022/01/12 | 532455 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma
-2022/01/12 | 527827 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma
-2022/01/12 | 52550 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma
-2022/01/12 | 52310 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma
+2022/01/12 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt
+2022/01/12 | 53167 | macros/latex-dev/required/tools/calc.dtx
+2022/01/12 | 53025 | macros/latex-dev/base/ltcmdhooks.dtx
+2022/01/12 | 52813 | macros/latex-dev/base/encguide.tex
+2022/01/12 | 5273 | macros/latex-dev/base/cmextra.ins
+2022/01/12 | 52710 | macros/latex-dev/base/lb2.err
+2022/01/12 | 526323 | macros/latex-dev/base/ltnews31.pdf
+2022/01/12 | 5246 | macros/latex-dev/base/ltnews01.tex
+2022/01/12 | 522412 | macros/latex-dev/base/ltnews33.pdf
+2022/01/12 | 521446 | macros/latex-dev/required/tools/multicol.pdf
+2022/01/12 | 5211 | macros/latex-dev/required/tools/tools-overview.tex
2022/01/12 | 520 | fonts/newtx/vf/ntx-Bold-lf-ot1.vf
-2022/01/12 | 52042 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma
-2022/01/12 | 51534 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma
-2022/01/12 | 51501 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma
+2022/01/12 | 516836 | macros/latex-dev/required/tools/array.pdf
+2022/01/12 | 51605 | macros/latex-dev/base/ltpara.dtx
+2022/01/12 | 511909 | macros/latex-dev/base/ltnews30.pdf
+2022/01/12 | 5117 | macros/latex-dev/base/ltmeta.dtx
+2022/01/12 | 511324 | macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf
2022/01/12 | 51059 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
-2022/01/12 | 50850 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma
-2022/01/12 | 50848 | macros/latex/contrib/siunitx/siunitx-table.dtx
+2022/01/12 | 508210 | macros/latex-dev/required/amsmath/amsldoc.pdf
+2022/01/12 | 50819 | macros/latex-dev/required/graphics/drivers.dtx
+2022/01/12 | 508044 | macros/latex-dev/base/ltnews34.pdf
+2022/01/12 | 5041 | macros/latex-dev/base/latexsym.ins
+2022/01/12 | 503595 | macros/latex-dev/base/docstrip.pdf
+2022/01/12 | 502880 | macros/latex-dev/base/fntguide.pdf
2022/01/12 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2022/01/12 | 4959 | macros/latex-dev/required/tools/fileerr.dtx
+2022/01/12 | 49482 | systems/texlive/tlnet/tlpkg/installer/config.guess
+2022/01/12 | 4945 | macros/latex-dev/base/lthyphen.dtx
2022/01/12 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
2022/01/12 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
2022/01/12 | 49097 | macros/latex/contrib/l3backend/l3backend-pdf.dtx
-2022/01/12 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2022/01/12 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
-2022/01/12 | 48844 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma
2022/01/12 | 484490 | macros/latex/contrib/l3packages/xfrac.pdf
-2022/01/12 | 483937 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma
2022/01/12 | 4828 | fonts/newtx/tfm/ntx-BoldItalic-lf-scl-ot1.tfm
2022/01/12 | 4820 | fonts/newtx/tfm/ntx-BoldItalic-osf-scl-ot1.tfm
-2022/01/12 | 47909 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
-2022/01/12 | 477927 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma
+2022/01/12 | 47896 | macros/latex-dev/base/lttab.dtx
+2022/01/12 | 478769 | macros/latex-dev/base/ltcmdhooks-doc.pdf
+2022/01/12 | 477992 | macros/latex-dev/base/ltnews35.pdf
2022/01/12 | 4776 | fonts/newtx/tfm/ntx-Italic-lf-scl-ot1.tfm
2022/01/12 | 4776 | fonts/newtx/tfm/ntx-BoldItalic-tlf-scl-ot1.tfm
2022/01/12 | 4772 | fonts/newtx/tfm/ntx-BoldItalic-tosf-scl-ot1.tfm
+2022/01/12 | 4757 | macros/latex-dev/base/ltlength.dtx
2022/01/12 | 4756 | fonts/newtx/tfm/ntx-Italic-osf-scl-ot1.tfm
2022/01/12 | 47504 | systems/texlive/tlnet/archive/bibarts.source.r61569.tar.xz
-2022/01/12 | 4748 | macros/latex/contrib/siunitx/siunitx-abbreviations.cfg
-2022/01/12 | 4746 | macros/latex/contrib/siunitx/siunitx-locale.dtx
+2022/01/12 | 473568 | macros/latex-dev/required/graphics/mathcolor.pdf
2022/01/12 | 47217 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
2022/01/12 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
2022/01/12 | 4708 | fonts/newtx/tfm/ntx-Italic-tlf-scl-ot1.tfm
2022/01/12 | 4704 | fonts/newtx/tfm/ntx-Italic-tosf-scl-ot1.tfm
-2022/01/12 | 470364 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
2022/01/12 | 4648 | fonts/newtx/tfm/ntx-Slanted-lf-scl-ot1.tfm
2022/01/12 | 4644 | fonts/newtx/tfm/ntx-Slanted-osf-scl-ot1.tfm
+2022/01/12 | 46395 | macros/latex-dev/base/ltfinal.dtx
2022/01/12 | 4612 | fonts/newtx/tfm/ntx-Slanted-tosf-scl-ot1.tfm
2022/01/12 | 4612 | fonts/newtx/tfm/ntx-Slanted-tlf-scl-ot1.tfm
-2022/01/12 | 46096 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma
-2022/01/12 | 45891 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma
2022/01/12 | 4580 | fonts/newtx/tfm/ntx-BoldSlanted-lf-scl-ot1.tfm
-2022/01/12 | 45772 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2022/01/12 | 4576 | fonts/newtx/tfm/ntx-BoldSlanted-osf-scl-ot1.tfm
-2022/01/12 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2022/01/12 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2022/01/12 | 455107 | macros/latex-dev/base/ltnews29.pdf
+2022/01/12 | 454511 | macros/latex-dev/required/amsmath/testmath.pdf
2022/01/12 | 4544 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-scl-ot1.tfm
2022/01/12 | 4544 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-scl-ot1.tfm
+2022/01/12 | 45240 | macros/latex-dev/base/ltspace.dtx
+2022/01/12 | 44771 | macros/latex-dev/base/ltboxes.dtx
2022/01/12 | 44697 | macros/latex/contrib/knowledge/knowledge-utils.dtx
2022/01/12 | 4444 | fonts/newtx/tfm/ntx-Regular-lf-scl-ot1.tfm
2022/01/12 | 4440 | fonts/newtx/tfm/ntx-Regular-osf-scl-ot1.tfm
+2022/01/12 | 44404 | macros/latex-dev/base/latexrelease.dtx
2022/01/12 | 44360 | systems/texlive/tlnet/archive/zref-clever.source.r61572.tar.xz
2022/01/12 | 4408 | fonts/newtx/tfm/ntx-Regular-tosf-scl-ot1.tfm
2022/01/12 | 4408 | fonts/newtx/tfm/ntx-Regular-tlf-scl-ot1.tfm
2022/01/12 | 439710 | macros/latex/contrib/l3packages/xtemplate.pdf
-2022/01/12 | 43924 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma
2022/01/12 | 43912 | macros/latex/contrib/l3backend/l3backend-color.dtx
-2022/01/12 | 43820 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma
+2022/01/12 | 4390 | macros/latex-dev/base/ec.ins
2022/01/12 | 4380 | fonts/newtx/tfm/ntx-Bold-lf-scl-ot1.tfm
2022/01/12 | 4376 | fonts/newtx/tfm/ntx-Bold-osf-scl-ot1.tfm
-2022/01/12 | 43696 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma
-2022/01/12 | 43666 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma
-2022/01/12 | 43450 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma
+2022/01/12 | 43636 | macros/latex-dev/base/cmfonts.fdd
2022/01/12 | 4344 | fonts/newtx/tfm/ntx-Bold-tosf-scl-ot1.tfm
2022/01/12 | 4344 | fonts/newtx/tfm/ntx-Bold-tlf-scl-ot1.tfm
+2022/01/12 | 43448 | macros/latex-dev/required/tools/theorem.dtx
+2022/01/12 | 4336 | macros/latex-dev/required/amsmath/amsxtra.dtx
+2022/01/12 | 4324 | macros/latex-dev/base/cmfonts.ins
2022/01/12 | 43203 | macros/latex/contrib/l3kernel/l3debug.dtx
-2022/01/12 | 42768 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma
+2022/01/12 | 430994 | macros/latex-dev/base/usrguide.pdf
+2022/01/12 | 4298 | macros/latex-dev/base/ltalloc.dtx
+2022/01/12 | 4273 | macros/latex-dev/base/docstrip.ins
+2022/01/12 | 42708 | macros/latex-dev/base/changes.old.txt
+2022/01/12 | 42675 | macros/latex-dev/base/usrguide3.tex
2022/01/12 | 4265 | macros/latex/contrib/l3backend/l3backend.ins
+2022/01/12 | 4254 | macros/latex-dev/base/newdc.ins
2022/01/12 | 4240 | macros/latex/contrib/l3kernel/l3legacy.dtx
2022/01/12 | 42294 | fonts/newtx/README
+2022/01/12 | 4219 | macros/latex-dev/base/latex209.ins
2022/01/12 | 42106 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2022/01/12 | 41391 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma
-2022/01/12 | 41263 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
-2022/01/12 | 41208 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma
+2022/01/12 | 418923 | macros/latex-dev/required/amsmath/amsmath.pdf
+2022/01/12 | 4170 | macros/latex-dev/base/ltnews19.tex
+2022/01/12 | 4122 | macros/latex-dev/required/graphics/epsfig.dtx
2022/01/12 | 4092 | fonts/newtx/tfm/ntxsups-Italic-ly1.tfm
2022/01/12 | 4088 | fonts/newtx/tfm/ntxsups-Regular-ly1.tfm
+2022/01/12 | 4087 | macros/latex-dev/base/classes.ins
+2022/01/12 | 4079 | macros/latex-dev/base/lablst.tex
2022/01/12 | 40705 | macros/latex/contrib/l3kernel/l3sort.dtx
2022/01/12 | 4048 | fonts/newtx/tfm/ntxsups-BoldItalic-ly1.tfm
-2022/01/12 | 402636 | systems/texlive/tlnet/archive/texlive-scripts.doc.r61565.tar.xz
+2022/01/12 | 402780 | macros/latex-dev/base/clsguide.pdf
2022/01/12 | 4008 | fonts/newtx/tfm/ntxsups-Italic-t1.tfm
2022/01/12 | 4004 | fonts/newtx/tfm/ntxsups-Regular-t1.tfm
2022/01/12 | 3992 | fonts/newtx/tfm/ntxsups-Regular-ot1.tfm
-2022/01/12 | 39736 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma
+2022/01/12 | 39696 | macros/latex-dev/required/tools/ftnright.dtx
2022/01/12 | 3968 | fonts/newtx/tfm/ntxsups-BoldItalic-t1.tfm
+2022/01/12 | 39671 | macros/latex-dev/base/ltmath.dtx
+2022/01/12 | 3960 | macros/latex-dev/base/olddc.ins
2022/01/12 | 395879 | macros/latex/contrib/l3kernel/l3news.pdf
-2022/01/12 | 394299 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma
+2022/01/12 | 3946 | macros/latex-dev/required/graphics/lscape.dtx
2022/01/12 | 39391 | macros/latex/contrib/l3packages/xfrac.dtx
+2022/01/12 | 391313 | macros/latex-dev/required/tools/longtable.pdf
+2022/01/12 | 390416 | macros/latex-dev/base/usrguide3.pdf
+2022/01/12 | 390301 | macros/latex-dev/base/changes.txt
+2022/01/12 | 38730 | macros/latex-dev/base/latex209.dtx
2022/01/12 | 3872 | macros/luatex/generic/luamplib/test-luamplib-plain.tex
-2022/01/12 | 38563 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma
-2022/01/12 | 38467 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma
+2022/01/12 | 387226 | macros/latex-dev/required/tools/ftnright.pdf
2022/01/12 | 3843 | macros/latex/contrib/l3packages/README.md
+2022/01/12 | 383856 | macros/latex-dev/required/tools/varioref.pdf
2022/01/12 | 3812 | fonts/newtx/tfm/ntxsups-Bold-ly1.tfm
-2022/01/12 | 3780 | systems/texlive/tlnet/archive/sillypage.source.r61573.tar.xz
+2022/01/12 | 38033 | macros/latex-dev/base/ltnews18.pdf
+2022/01/12 | 379462 | macros/latex-dev/base/ltnews26.pdf
+2022/01/12 | 3781 | macros/latex-dev/base/tulm.ins
+2022/01/12 | 376643 | macros/latex-dev/base/ltnews28.pdf
2022/01/12 | 3760 | fonts/newtx/tfm/ntxsups-Italic.tfm
-2022/01/12 | 37390 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma
+2022/01/12 | 37572 | macros/latex-dev/required/graphics/grfguide.tex
+2022/01/12 | 375470 | macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf
+2022/01/12 | 375286 | macros/latex-dev/base/slides.pdf
2022/01/12 | 3728 | fonts/newtx/tfm/ntxsups-Bold-t1.tfm
2022/01/12 | 3728 | fonts/newtx/tfm/ntxsups-BoldItalic.tfm
+2022/01/12 | 3725 | macros/latex-dev/base/ltlogos.dtx
2022/01/12 | 37155 | macros/latex/contrib/l3kernel/l3text.dtx
-2022/01/12 | 37117 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma
-2022/01/12 | 37095 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma
+2022/01/12 | 370552 | macros/latex-dev/required/tools/calc.pdf
+2022/01/12 | 369 | macros/latex-dev/required/amsmath/manifest.txt
2022/01/12 | 368967 | macros/latex/contrib/l3packages/l3keys2e.pdf
-2022/01/12 | 3687 | macros/latex/contrib/siunitx/siunitx.ins
+2022/01/12 | 36684397 | install/macros/latex-dev/latex-base-dev.tds.zip
2022/01/12 | 3664 | fonts/newtx/tfm/ntxsups-Regular.tfm
-2022/01/12 | 36056 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma
+2022/01/12 | 36152 | macros/latex-dev/base/ltlists.dtx
+2022/01/12 | 35984 | macros/latex-dev/base/ltdirchk.dtx
+2022/01/12 | 35875 | macros/latex-dev/required/tools/tabularx.dtx
2022/01/12 | 35621 | macros/latex/contrib/l3kernel/l3quark.dtx
-2022/01/12 | 355356 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
2022/01/12 | 3540 | fonts/newtx/tfm/ntxsups-Bold.tfm
-2022/01/12 | 35240 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma
-2022/01/12 | 35174 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
+2022/01/12 | 352648 | macros/latex-dev/base/utf8ienc.pdf
+2022/01/12 | 351702 | macros/latex-dev/required/tools/theorem.pdf
2022/01/12 | 3504 | fonts/newtx/tfm/ntx-Italic-lf-sc-ot1.tfm
2022/01/12 | 3492 | fonts/newtx/tfm/ntx-BoldItalic-osf-sc-ot1.tfm
2022/01/12 | 3492 | fonts/newtx/tfm/ntx-BoldItalic-lf-sc-ot1.tfm
+2022/01/12 | 34873 | macros/latex-dev/required/graphics/changes.txt
+2022/01/12 | 3477 | macros/latex-dev/base/README.md
2022/01/12 | 3476 | fonts/newtx/tfm/ntx-Italic-osf-sc-ot1.tfm
2022/01/12 | 3472 | fonts/newtx/tfm/ntxsups-Italic-ot1.tfm
2022/01/12 | 3456 | fonts/newtx/tfm/ntx-Slanted-lf-sc-ot1.tfm
@@ -327,6 +796,7 @@
2022/01/12 | 3452 | fonts/newtx/tfm/ntx-BoldItalic-tlf-sc-ot1.tfm
2022/01/12 | 3444 | fonts/newtx/tfm/ntxsups-BoldItalic-ot1.tfm
2022/01/12 | 3444 | fonts/newtx/tfm/ntx-BoldItalic-tosf-sc-ot1.tfm
+2022/01/12 | 3434 | macros/latex-dev/base/makeindx.ins
2022/01/12 | 3432 | fonts/newtx/tfm/ntx-Italic-tlf-sc-ot1.tfm
2022/01/12 | 3428 | fonts/newtx/tfm/ntx-Italic-tosf-sc-ot1.tfm
2022/01/12 | 34288 | macros/latex/contrib/l3backend/l3backend-draw.dtx
@@ -335,170 +805,226 @@
2022/01/12 | 34166 | macros/latex/contrib/l3kernel/l3intarray.dtx
2022/01/12 | 3408 | fonts/newtx/tfm/ntx-BoldSlanted-lf-sc-ot1.tfm
2022/01/12 | 3404 | fonts/newtx/tfm/ntx-BoldSlanted-osf-sc-ot1.tfm
-2022/01/12 | 34032 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma
-2022/01/12 | 34008 | macros/latex/contrib/siunitx/siunitx-print.dtx
-2022/01/12 | 33799 | macros/latex/contrib/siunitx/siunitx-compound.dtx
+2022/01/12 | 3401 | macros/latex-dev/base/proc.ins
+2022/01/12 | 33946 | macros/latex-dev/base/ltsect.dtx
+2022/01/12 | 33907 | macros/latex-dev/base/ltnews33.tex
+2022/01/12 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty
+2022/01/12 | 337772 | macros/latex-dev/base/letter.pdf
+2022/01/12 | 3372 | macros/latex-dev/base/letter.ins
2022/01/12 | 3372 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-sc-ot1.tfm
2022/01/12 | 3372 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-sc-ot1.tfm
-2022/01/12 | 332745 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma
+2022/01/12 | 3367 | macros/latex-dev/base/ltoutenc.ins
+2022/01/12 | 334915 | support/TeX4ht/source/tex4ht-ooffice.tex
+2022/01/12 | 3338 | macros/latex-dev/base/exscale.ins
2022/01/12 | 33261 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2022/01/12 | 33239 | macros/latex-dev/base/ltnews32.tex
2022/01/12 | 331698 | macros/latex/contrib/l3packages/xfp.pdf
2022/01/12 | 33116 | macros/latex/contrib/l3kernel/l3sys.dtx
-2022/01/12 | 32957 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma
+2022/01/12 | 330978 | macros/latex-dev/required/graphics/grfguide.pdf
+2022/01/12 | 330963 | macros/latex-dev/required/tools/verbatim.pdf
2022/01/12 | 3284 | systems/texlive/tlnet/archive/zlmtt.r61567.tar.xz
+2022/01/12 | 3284 | macros/latex-dev/required/tools/manifest.txt
+2022/01/12 | 3282 | macros/latex-dev/base/bugs.txt
2022/01/12 | 3268 | fonts/newtx/tfm/ntx-Slanted-lf-ot1.tfm
2022/01/12 | 3264 | fonts/newtx/tfm/ntx-Slanted-osf-ot1.tfm
-2022/01/12 | 326302 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma
2022/01/12 | 32430 | macros/latex/contrib/l3kernel/l3cctab.dtx
2022/01/12 | 3236 | fonts/newtx/tfm/ntx-BoldSlanted-lf-ot1.tfm
+2022/01/12 | 323432 | macros/latex-dev/required/tools/bm.pdf
2022/01/12 | 3232 | fonts/newtx/tfm/ntx-Slanted-tosf-ot1.tfm
2022/01/12 | 3232 | fonts/newtx/tfm/ntx-Slanted-tlf-ot1.tfm
2022/01/12 | 3232 | fonts/newtx/tfm/ntx-BoldSlanted-osf-ot1.tfm
+2022/01/12 | 32308 | macros/latex-dev/base/ltnews34.tex
+2022/01/12 | 322 | macros/latex-dev/required/latex-lab/changes.txt
2022/01/12 | 3228 | fonts/newtx/tfm/ntxth-Slanted-osf-ot1.tfm
+2022/01/12 | 32194 | macros/latex-dev/required/graphics/color.dtx
2022/01/12 | 3216 | fonts/newtx/tfm/ntx-Regular-lf-sc-ot1.tfm
-2022/01/12 | 32154 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma
2022/01/12 | 3212 | fonts/newtx/tfm/ntxsups-Bold-ot1.tfm
2022/01/12 | 3212 | fonts/newtx/tfm/ntx-Regular-osf-sc-ot1.tfm
+2022/01/12 | 32029 | macros/latex-dev/required/tools/layout.dtx
2022/01/12 | 3200 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-ot1.tfm
2022/01/12 | 3200 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-ot1.tfm
2022/01/12 | 3196 | fonts/newtx/tfm/ntxth-Slanted-tlf-ot1.tfm
+2022/01/12 | 318548 | macros/latex-dev/base/ltnews20.pdf
+2022/01/12 | 318204 | macros/latex-dev/base/inputenc.pdf
+2022/01/12 | 3181 | macros/latex-dev/base/unpack.ins
2022/01/12 | 3180 | fonts/newtx/tfm/ntx-Regular-tosf-sc-ot1.tfm
2022/01/12 | 3180 | fonts/newtx/tfm/ntx-Regular-tlf-sc-ot1.tfm
2022/01/12 | 3180 | fonts/newtx/tfm/ntx-Bold-lf-sc-ot1.tfm
-2022/01/12 | 317773 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma
+2022/01/12 | 317773 | macros/latex-dev/base/ltnews22.pdf
+2022/01/12 | 317700 | macros/latex-dev/base/ltluatex.pdf
2022/01/12 | 3176 | fonts/newtx/tfm/ntx-Bold-osf-sc-ot1.tfm
-2022/01/12 | 31738 | macros/latex/contrib/siunitx/siunitx-version-1.cfg
-2022/01/12 | 31622 | macros/latex/contrib/siunitx/siunitx-emulation.dtx
-2022/01/12 | 31574 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma
-2022/01/12 | 31552 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma
+2022/01/12 | 31646 | macros/latex-dev/required/tools/multicol-2019-10-01.sty
2022/01/12 | 3152 | fonts/newtx/tfm/ntx-Italic-lf-ot1.tfm
2022/01/12 | 3144 | fonts/newtx/tfm/ntx-Bold-tosf-sc-ot1.tfm
2022/01/12 | 3144 | fonts/newtx/tfm/ntx-Bold-tlf-sc-ot1.tfm
-2022/01/12 | 31398 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma
-2022/01/12 | 31336 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma
2022/01/12 | 3120 | fonts/newtx/tfm/ntx-Italic-osf-ot1.tfm
2022/01/12 | 3116 | fonts/newtx/tfm/ntx-BoldItalic-osf-ot1.tfm
2022/01/12 | 3112 | fonts/newtx/tfm/ntx-BoldItalic-lf-ot1.tfm
+2022/01/12 | 3108444 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip
2022/01/12 | 3080 | fonts/newtx/tfm/ntx-Italic-tlf-ot1.tfm
2022/01/12 | 3076 | fonts/newtx/tfm/ntx-Italic-tosf-ot1.tfm
2022/01/12 | 3064 | fonts/newtx/tfm/ntxth-Italic-osf-ot1.tfm
2022/01/12 | 3064 | fonts/newtx/tfm/ntx-BoldItalic-tlf-ot1.tfm
2022/01/12 | 3060 | fonts/newtx/tfm/ntx-BoldItalic-tosf-ot1.tfm
-2022/01/12 | 30512 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma
+2022/01/12 | 30499 | macros/latex-dev/base/doc-2021-06-01.sty
+2022/01/12 | 30464 | macros/latex-dev/required/graphics/graphicx.dtx
2022/01/12 | 3044 | fonts/newtx/tfm/ntx-Regular-lf-ot1.tfm
+2022/01/12 | 30428 | macros/latex-dev/base/ltnews31.tex
+2022/01/12 | 304289 | macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf
2022/01/12 | 3040 | fonts/newtx/tfm/ntx-Regular-osf-ot1.tfm
2022/01/12 | 3040 | fonts/newtx/tfm/ntx-Regular-lf-ot1r.tfm
2022/01/12 | 3036 | fonts/newtx/tfm/ntx-Regular-osf-ot1r.tfm
2022/01/12 | 303561 | macros/latex/contrib/l3kernel/l3regex.dtx
2022/01/12 | 3032 | fonts/newtx/tfm/ntxth-Italic-tlf-ot1.tfm
-2022/01/12 | 30171 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma
+2022/01/12 | 303042 | macros/latex-dev/required/graphics/graphics.pdf
2022/01/12 | 3008 | fonts/newtx/tfm/ntx-Regular-tosf-ot1.tfm
2022/01/12 | 3008 | fonts/newtx/tfm/ntx-Regular-tlf-ot1.tfm
2022/01/12 | 3008 | fonts/newtx/tfm/ntx-Bold-osf-ot1.tfm
2022/01/12 | 3004 | fonts/newtx/tfm/ntx-Regular-tosf-ot1r.tfm
2022/01/12 | 3004 | fonts/newtx/tfm/ntx-Regular-tlf-ot1r.tfm
+2022/01/12 | 29965 | macros/latex-dev/base/doc-2016-02-15.sty
+2022/01/12 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins
2022/01/12 | 2994 | macros/latex/contrib/l3kernel/README.md
2022/01/12 | 2976 | fonts/newtx/tfm/ntx-Bold-tosf-ot1.tfm
2022/01/12 | 2976 | fonts/newtx/tfm/ntx-Bold-tlf-ot1.tfm
-2022/01/12 | 296105 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma
+2022/01/12 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty
2022/01/12 | 295820 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2022/01/12 | 2883 | macros/latex/contrib/siunitx/siunitx-binary.dtx
-2022/01/12 | 28754 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma
-2022/01/12 | 28693 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma
-2022/01/12 | 286565 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
-2022/01/12 | 285740 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma
-2022/01/12 | 28554 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2022/01/12 | 28319 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma
+2022/01/12 | 29564 | macros/latex-dev/required/tools/showkeys.dtx
+2022/01/12 | 29267 | macros/latex-dev/base/ltfntcmd.dtx
+2022/01/12 | 292376 | macros/latex-dev/base/cmfonts.pdf
+2022/01/12 | 290615 | macros/latex-dev/base/tlc2.pdf
+2022/01/12 | 2896 | macros/latex-dev/base/syntonly.ins
+2022/01/12 | 2893 | macros/latex-dev/base/nfssfont.ins
+2022/01/12 | 2892 | macros/latex-dev/base/graphpap.ins
+2022/01/12 | 2892 | macros/latex-dev/base/fix-cm.ins
+2022/01/12 | 2890 | macros/latex-dev/base/alltt.ins
+2022/01/12 | 2888 | macros/latex-dev/base/ifthen.ins
+2022/01/12 | 287733 | macros/latex-dev/base/fix-cm.pdf
+2022/01/12 | 287073 | macros/latex-dev/required/tools/tabularx.pdf
+2022/01/12 | 286591 | macros/latex-dev/base/ltnews23.pdf
+2022/01/12 | 286459 | macros/latex-dev/required/graphics/drivers.pdf
2022/01/12 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
-2022/01/12 | 281545 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma
-2022/01/12 | 2797476 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma
+2022/01/12 | 281895 | macros/latex-dev/base/latexrelease.pdf
+2022/01/12 | 2792859 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip
+2022/01/12 | 278466 | macros/latex-dev/required/graphics/rotating.pdf
2022/01/12 | 277811 | macros/latex/contrib/sillypage.zip
-2022/01/12 | 27697 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma
-2022/01/12 | 276119 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2022/01/12 | 2752 | macros/luatex/generic/luamplib/Makefile
-2022/01/12 | 27502 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma
-2022/01/12 | 273398 | macros/latex/contrib/siunitx/siunitx-v2.sty
+2022/01/12 | 2728 | macros/latex-dev/base/ltpageno.dtx
2022/01/12 | 27280 | systems/texlive/tlnet/archive/bibarts.r61569.tar.xz
-2022/01/12 | 27268 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma
+2022/01/12 | 2723 | macros/latex-dev/required/amsmath/README.md
+2022/01/12 | 27122 | macros/latex-dev/base/ltxcheck.tex
+2022/01/12 | 27069 | macros/latex-dev/base/lterror.dtx
+2022/01/12 | 2705 | macros/latex-dev/base/idx.tex
2022/01/12 | 269694 | fonts/newtx/type1/ztmr.pfb
-2022/01/12 | 2672853 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma
+2022/01/12 | 265279 | macros/latex-dev/base/ltnews24.pdf
2022/01/12 | 263131 | fonts/newtx/type1/ztmrsl.pfb
2022/01/12 | 262312 | dviware/dviljk.zip
-2022/01/12 | 261828 | systems/texlive/tlnet/archive/sillypage.doc.r61573.tar.xz
2022/01/12 | 2614 | macros/latex/contrib/knowledge/makefile
-2022/01/12 | 260747 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma
-2022/01/12 | 260708 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma
-2022/01/12 | 25985 | macros/latex/contrib/siunitx/siunitx-complex.dtx
-2022/01/12 | 259311 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma
+2022/01/12 | 259969 | macros/latex-dev/required/tools/layout.pdf
+2022/01/12 | 2576 | macros/latex-dev/required/tools/multicol.ins
+2022/01/12 | 257018 | macros/latex-dev/required/tools/xspace.pdf
2022/01/12 | 25650 | macros/latex/contrib/l3kernel/l3fp-random.dtx
-2022/01/12 | 256459 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma
-2022/01/12 | 25631659 | systems/texlive/tlnet/install-tl.zip
2022/01/12 | 2562548 | systems/texlive/tlnet/archive/cochineal.r61566.tar.xz
-2022/01/12 | 25535 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma
-2022/01/12 | 251405 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma
-2022/01/12 | 25101 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma
-2022/01/12 | 25062 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma
+2022/01/12 | 2538 | macros/latex-dev/required/tools/longtable.ins
+2022/01/12 | 2538 | macros/latex-dev/required/tools/afterpage.ins
+2022/01/12 | 2535 | macros/latex-dev/required/tools/tabularx.ins
+2022/01/12 | 2531 | macros/latex-dev/required/tools/varioref.ins
+2022/01/12 | 2524 | macros/latex-dev/required/tools/bm.ins
+2022/01/12 | 252158 | macros/latex-dev/required/tools/showkeys.pdf
+2022/01/12 | 252140 | macros/latex-dev/base/lb2.pdf
+2022/01/12 | 25146 | macros/latex-dev/required/tools/trace.dtx
+2022/01/12 | 250592 | macros/latex-dev/base/ltnews27.pdf
2022/01/12 | 250139 | macros/latex/contrib/l3kernel/l3news09.pdf
-2022/01/12 | 2492 | macros/latex/contrib/siunitx/siunitx-code.tex
2022/01/12 | 24673 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
2022/01/12 | 24631 | macros/latex/contrib/l3kernel/source3body.tex
-2022/01/12 | 246041 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma
-2022/01/12 | 244844 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma
+2022/01/12 | 244867 | macros/latex-dev/base/ltnews21.pdf
+2022/01/12 | 244071 | macros/latex-dev/base/doc.dtx
+2022/01/12 | 243605 | macros/latex-dev/base/modguide.pdf
2022/01/12 | 243201 | fonts/newtx/type1/ztmbsl.pfb
+2022/01/12 | 242888 | macros/latex-dev/base/cfgguide.pdf
+2022/01/12 | 24286 | macros/latex-dev/base/ltcounts.dtx
2022/01/12 | 242844 | fonts/newtx/type1/ztmbi.pfb
2022/01/12 | 242489 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
-2022/01/12 | 24088 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma
-2022/01/12 | 23947 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma
+2022/01/12 | 241 | macros/latex-dev/base/ltfilehook-doc.tex
+2022/01/12 | 240 | macros/latex-dev/base/ltshipout-doc.tex
+2022/01/12 | 240623 | macros/latex-dev/required/graphics/graphicx.pdf
+2022/01/12 | 239823 | macros/latex-dev/required/graphics/keyval.pdf
+2022/01/12 | 239689 | macros/latex-dev/base/cyrguide.pdf
2022/01/12 | 239149 | fonts/newtx/type1/ztmb.pfb
2022/01/12 | 2390 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2022/01/12 | 238 | macros/latex-dev/base/lthooks-doc.tex
+2022/01/12 | 238 | macros/latex-dev/base/ltcmdhooks-doc.tex
+2022/01/12 | 23637 | macros/latex-dev/base/ltnews30.tex
+2022/01/12 | 23516 | macros/latex-dev/base/fix-cm.dtx
+2022/01/12 | 234 | macros/latex-dev/base/ltpara-doc.tex
2022/01/12 | 234796 | systems/texlive/tlnet/archive/zlmtt.doc.r61567.tar.xz
-2022/01/12 | 2340740 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2022/01/12 | 234191 | macros/latex-dev/base/slifonts.pdf
+2022/01/12 | 23386 | macros/latex-dev/base/lppl.tex
+2022/01/12 | 233208 | macros/latex-dev/base/ltxdoc.pdf
2022/01/12 | 230882 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
2022/01/12 | 230451 | fonts/newtx/type1/ztmri.pfb
2022/01/12 | 23011 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2022/01/12 | 230028 | macros/latex-dev/base/ltnews19.pdf
+2022/01/12 | 2288 | macros/latex-dev/required/latex-lab/documentmetadata-support.ins
+2022/01/12 | 227262 | macros/latex-dev/required/amsmath/amsmath.dtx
+2022/01/12 | 227059 | macros/latex-dev/base/proc.pdf
+2022/01/12 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt
+2022/01/12 | 22456 | macros/latex-dev/base/cfgguide.tex
+2022/01/12 | 223819 | macros/latex-dev/base/alltt.pdf
2022/01/12 | 2229 | macros/latex/contrib/l3kernel/source3.tex
-2022/01/12 | 22153 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma
+2022/01/12 | 2220 | macros/latex-dev/required/tools/indentfirst.dtx
+2022/01/12 | 222076 | macros/latex-dev/required/tools/trace.pdf
+2022/01/12 | 220834 | macros/latex-dev/required/tools/dcolumn.pdf
+2022/01/12 | 220565 | macros/latex-dev/base/ifthen.pdf
2022/01/12 | 22020 | systems/texlive/tlnet/archive/asmejour.r61568.tar.xz
2022/01/12 | 2201946 | install/macros/latex/contrib/l3packages.tds.zip
+2022/01/12 | 219349 | macros/latex-dev/base/ltx3info.pdf
2022/01/12 | 2183997 | macros/latex/contrib/l3packages.zip
+2022/01/12 | 217498 | macros/latex-dev/required/amsmath/amstext.pdf
2022/01/12 | 21643 | macros/latex/contrib/l3kernel/l3text-purify.dtx
-2022/01/12 | 216348 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma
-2022/01/12 | 213499 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
-2022/01/12 | 21321 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma
+2022/01/12 | 215684 | macros/latex-dev/base/lgc2.pdf
+2022/01/12 | 215498 | macros/latex-dev/required/tools/enumerate.pdf
2022/01/12 | 21237 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2022/01/12 | 210221 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma
+2022/01/12 | 212223 | macros/latex-dev/required/graphics/color.pdf
+2022/01/12 | 211180 | macros/latex-dev/base/nfssfont.pdf
+2022/01/12 | 21067 | macros/latex-dev/required/graphics/rotating.dtx
2022/01/12 | 20960 | macros/latex/contrib/l3backend/l3backend-graphics.dtx
2022/01/12 | 209428 | fonts/newtx/opentype/TeXGyreTermesX-Slanted.otf
+2022/01/12 | 2090 | macros/latex-dev/required/graphics/README.md
2022/01/12 | 208980 | systems/texlive/tlnet/archive/reledmac.source.r61571.tar.xz
-2022/01/12 | 20876415 | systems/texlive/tlnet/install-tl-windows.exe
+2022/01/12 | 208864 | macros/latex-dev/base/lthooks.dtx
+2022/01/12 | 20855 | macros/latex-dev/base/ltnews35.tex
+2022/01/12 | 20775 | macros/latex-dev/base/ltxdoc.dtx
2022/01/12 | 207108 | fonts/newtx/opentype/TeXGyreTermesX-Regular.otf
+2022/01/12 | 20652 | macros/latex-dev/base/lgc2.err
2022/01/12 | 20536 | fonts/newtx/tfm/ntx-BoldItalic-lf-scl-t1.tfm
2022/01/12 | 20520 | fonts/newtx/tfm/ntx-BoldItalic-osf-scl-t1.tfm
2022/01/12 | 204990 | macros/latex/contrib/l3kernel/l3news12.pdf
+2022/01/12 | 204935 | macros/latex-dev/base/ltnews25.pdf
2022/01/12 | 20480 | fonts/newtx/tfm/ntx-BoldItalic-tlf-scl-t1.tfm
2022/01/12 | 20476 | fonts/newtx/tfm/ntx-BoldItalic-tosf-scl-t1.tfm
+2022/01/12 | 204711 | macros/latex-dev/base/exscale.pdf
+2022/01/12 | 20469 | macros/latex-dev/base/ltnews.cls
2022/01/12 | 2038 | macros/latex/contrib/knowledge/README.md
-2022/01/12 | 202745 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma
2022/01/12 | 202258 | install/macros/luatex/generic/luamplib.tds.zip
-2022/01/12 | 20194 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma
2022/01/12 | 20134 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2022/01/12 | 200082 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma
+2022/01/12 | 200760 | macros/latex-dev/base/latexsym.pdf
2022/01/12 | 1996 | macros/luatex/generic/luamplib/README
-2022/01/12 | 199684 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma
-2022/01/12 | 199664 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma
-2022/01/12 | 1992372 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma
-2022/01/12 | 198986 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma
-2022/01/12 | 19846 | macros/latex/contrib/siunitx/siunitx.dtx
+2022/01/12 | 199266 | macros/latex-dev/required/graphics/trig.pdf
+2022/01/12 | 197738 | macros/latex-dev/required/tools/afterpage.pdf
2022/01/12 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
2022/01/12 | 19616 | systems/texlive/tlnet/archive/zref-clever.r61572.tar.xz
-2022/01/12 | 196133 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
+2022/01/12 | 1939 | macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx
+2022/01/12 | 1937 | macros/latex-dev/base/minimal.cls
2022/01/12 | 19304 | fonts/newtx/tex/newtxtext.sty
2022/01/12 | 19268 | fonts/newtx/tfm/ntx-Italic-lf-scl-t1.tfm
2022/01/12 | 19252 | fonts/newtx/tfm/ntx-Italic-osf-scl-t1.tfm
2022/01/12 | 19208 | fonts/newtx/tfm/ntx-Italic-tosf-scl-t1.tfm
2022/01/12 | 19208 | fonts/newtx/tfm/ntx-Italic-tlf-scl-t1.tfm
+2022/01/12 | 191 | macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex
2022/01/12 | 19120 | fonts/newtx/tfm/ntx-BoldSlanted-lf-scl-t1.tfm
2022/01/12 | 19112 | fonts/newtx/tfm/ntx-BoldSlanted-osf-scl-t1.tfm
+2022/01/12 | 191064 | macros/latex-dev/required/tools/delarray.pdf
2022/01/12 | 1908 | macros/latex/contrib/l3kernel/interface3.tex
2022/01/12 | 19084 | fonts/newtx/tfm/ntx-Slanted-lf-scl-t1.tfm
2022/01/12 | 19080 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-scl-t1.tfm
@@ -506,6 +1032,10 @@
2022/01/12 | 19076 | fonts/newtx/tfm/ntx-Slanted-osf-scl-t1.tfm
2022/01/12 | 19048 | fonts/newtx/tfm/ntx-Slanted-tosf-scl-t1.tfm
2022/01/12 | 19048 | fonts/newtx/tfm/ntx-Slanted-tlf-scl-t1.tfm
+2022/01/12 | 19040 | macros/latex-dev/base/lppl.txt
+2022/01/12 | 189855 | macros/latex-dev/base/syntonly.pdf
+2022/01/12 | 189679 | macros/latex-dev/required/tools/hhline.pdf
+2022/01/12 | 18944 | macros/latex-dev/base/ltnews29.tex
2022/01/12 | 18940 | fonts/newtx/tfm/ntx-Bold-lf-scl-t1.tfm
2022/01/12 | 18932 | fonts/newtx/tfm/ntx-Bold-osf-scl-t1.tfm
2022/01/12 | 18900 | fonts/newtx/tfm/ntx-Bold-tosf-scl-t1.tfm
@@ -514,94 +1044,141 @@
2022/01/12 | 18884 | fonts/newtx/tfm/ntx-Regular-osf-scl-t1.tfm
2022/01/12 | 18856 | fonts/newtx/tfm/ntx-Regular-tosf-scl-t1.tfm
2022/01/12 | 18856 | fonts/newtx/tfm/ntx-Regular-tlf-scl-t1.tfm
+2022/01/12 | 187725 | macros/latex-dev/required/tools/fileerr.pdf
2022/01/12 | 187673 | macros/luatex/generic/luamplib.zip
2022/01/12 | 18531 | macros/latex/contrib/l3kernel/l3fp-round.dtx
-2022/01/12 | 18482 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma
-2022/01/12 | 18358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma
-2022/01/12 | 181569 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma
+2022/01/12 | 184548 | macros/latex-dev/required/tools/multicol.dtx
+2022/01/12 | 18410 | macros/latex-dev/base/ltexpl.dtx
+2022/01/12 | 18399 | macros/latex-dev/base/nfssfont.dtx
+2022/01/12 | 18299 | macros/latex-dev/base/ltx3info.tex
+2022/01/12 | 18298 | macros/latex-dev/base/ifthen.dtx
+2022/01/12 | 182225 | macros/latex-dev/base/ltnews13.pdf
2022/01/12 | 180343 | macros/latex/contrib/knowledge/knowledge.tex
2022/01/12 | 1802920 | systems/texlive/tlnet/archive/asmejour.doc.r61568.tar.xz
-2022/01/12 | 179826 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma
+2022/01/12 | 179945 | macros/latex-dev/required/amsmath/amscd.pdf
+2022/01/12 | 17856 | macros/latex-dev/required/tools/xspace.dtx
+2022/01/12 | 178187 | macros/latex-dev/required/amsmath/amsgen.pdf
+2022/01/12 | 177930 | macros/latex-dev/base/ltoutput.dtx
2022/01/12 | 1764734 | macros/latex/contrib/l3kernel/interface3.pdf
2022/01/12 | 1759 | macros/latex/contrib/knowledge/knowledge.ins
-2022/01/12 | 1731301 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma
-2022/01/12 | 1729 | macros/latex/contrib/siunitx/siunitx-binary.cfg
+2022/01/12 | 175929 | macros/latex-dev/required/tools/shellesc.pdf
+2022/01/12 | 17495 | macros/latex-dev/base/cyrguide.tex
+2022/01/12 | 174944 | macros/latex-dev/required/amsmath/amsbsy.pdf
+2022/01/12 | 174494 | macros/latex-dev/base/ltnews05.pdf
+2022/01/12 | 173732 | support/TeX4ht/source/ChangeLog
+2022/01/12 | 172867 | macros/latex-dev/base/tlc2.err
2022/01/12 | 172783 | macros/latex/contrib/knowledge/knowledge-code.dtx
-2022/01/12 | 172569 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
-2022/01/12 | 17068 | systems/texlive/tlnet/archive/easybook.source.r61570.tar.xz
-2022/01/12 | 17060045 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2022/01/12 | 17024 | systems/texlive/tlnet/archive/easybook.r61570.tar.xz
+2022/01/12 | 172228 | macros/latex-dev/required/graphics/rotex.pdf
+2022/01/12 | 171460 | macros/latex-dev/base/ltcmd.dtx
+2022/01/12 | 170878 | macros/latex-dev/base/lamport-manual.pdf
+2022/01/12 | 170473 | macros/latex-dev/base/ltnews14.pdf
+2022/01/12 | 170209 | macros/latex-dev/base/docstrip.dtx
2022/01/12 | 170063 | macros/latex/contrib/l3kernel/l3news11.pdf
-2022/01/12 | 168841 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
+2022/01/12 | 169986 | macros/latex-dev/required/tools/xr.pdf
+2022/01/12 | 1694 | macros/latex-dev/base/small2e.tex
+2022/01/12 | 169416 | macros/latex-dev/base/ltnews10.pdf
2022/01/12 | 16824 | macros/latex/contrib/l3backend/l3backend-basics.dtx
-2022/01/12 | 16704 | macros/latex/contrib/siunitx/siunitx-angle.dtx
-2022/01/12 | 16577 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma
-2022/01/12 | 16500 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma
+2022/01/12 | 167572 | macros/latex-dev/required/tools/somedefs.pdf
+2022/01/12 | 1664 | macros/latex-dev/required/tools/README.md
+2022/01/12 | 166228 | macros/latex-dev/base/ltnews17.pdf
+2022/01/12 | 165821 | macros/latex-dev/base/makeindx.pdf
2022/01/12 | 163454 | macros/latex/contrib/l3kernel/l3news08.pdf
-2022/01/12 | 157601 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma
+2022/01/12 | 162772 | macros/latex-dev/base/tulm.pdf
+2022/01/12 | 16233 | macros/latex-dev/base/modguide.tex
+2022/01/12 | 161713 | macros/latex-dev/base/graphpap.pdf
+2022/01/12 | 161518 | macros/latex-dev/base/ltnews01.pdf
+2022/01/12 | 16100 | macros/latex-dev/base/ltbibl.dtx
+2022/01/12 | 159997 | macros/latex-dev/required/graphics/epsfig.pdf
+2022/01/12 | 159792 | macros/latex-dev/base/ltnews02.pdf
+2022/01/12 | 159332 | macros/latex-dev/base/ltnews03.pdf
+2022/01/12 | 157954 | macros/latex-dev/required/tools/indentfirst.pdf
+2022/01/12 | 15737 | macros/latex-dev/required/graphics/cat.eps
+2022/01/12 | 15699 | macros/latex-dev/base/slifonts.fdd
+2022/01/12 | 156551 | macros/latex-dev/base/ltnews12.pdf
+2022/01/12 | 156235 | macros/latex-dev/base/classes.dtx
+2022/01/12 | 15620 | macros/latex-dev/base/ltxref.dtx
2022/01/12 | 1561 | macros/latex/contrib/l3packages/xtemplate.ins
-2022/01/12 | 155303 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
+2022/01/12 | 155986 | macros/latex-dev/required/graphics/lscape.pdf
+2022/01/12 | 155053 | macros/latex-dev/base/ltnews08.pdf
2022/01/12 | 154528 | macros/latex/contrib/l3kernel/l3doc.dtx
-2022/01/12 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2022/01/12 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty
2022/01/12 | 153902 | macros/luatex/generic/luamplib/luamplib.pdf
-2022/01/12 | 15317 | macros/latex/contrib/siunitx/siunitx-quantity.dtx
-2022/01/12 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2022/01/12 | 152074 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma
+2022/01/12 | 152525 | macros/latex-dev/base/ltnews04.pdf
+2022/01/12 | 15236 | macros/latex-dev/base/source2e.tex
+2022/01/12 | 15185 | macros/latex-dev/required/graphics/mathcolor.dtx
2022/01/12 | 151573 | macros/latex/contrib/l3kernel/l3news06.pdf
2022/01/12 | 151363 | macros/latex/contrib/l3kernel/l3docstrip.pdf
2022/01/12 | 150676 | macros/latex/contrib/l3kernel/l3news02.pdf
+2022/01/12 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins
+2022/01/12 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins
+2022/01/12 | 15047 | macros/latex-dev/base/ltnews28.tex
+2022/01/12 | 15046 | macros/latex-dev/base/ltkeys.dtx
2022/01/12 | 150279 | macros/latex/contrib/l3kernel/l3news10.pdf
-2022/01/12 | 1499383 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma
+2022/01/12 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins
+2022/01/12 | 1492 | macros/latex-dev/required/amsmath/amstext.ins
2022/01/12 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2022/01/12 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins
2022/01/12 | 14882 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2022/01/12 | 1487 | macros/latex-dev/required/amsmath/amscd.ins
2022/01/12 | 14877 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
2022/01/12 | 148702 | macros/latex/contrib/l3kernel/l3news03.pdf
-2022/01/12 | 147734 | macros/latex/contrib/siunitx/siunitx.tex
+2022/01/12 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins
+2022/01/12 | 148103 | macros/latex-dev/base/ltoutenc.dtx
+2022/01/12 | 147462 | macros/latex-dev/required/amsmath/technote.pdf
2022/01/12 | 14669 | macros/latex/contrib/l3backend/l3backend-header.dtx
-2022/01/12 | 1461075 | install/macros/latex/contrib/siunitx.tds.zip
-2022/01/12 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2022/01/12 | 1452737 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma
-2022/01/12 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2022/01/12 | 146446 | macros/latex-dev/required/tools/fontsmpl.pdf
+2022/01/12 | 146198 | macros/latex-dev/base/webcomp.pdf
+2022/01/12 | 14575 | macros/latex-dev/required/graphics/rotex.tex
2022/01/12 | 144509 | macros/latex/contrib/l3kernel/l3tl.dtx
2022/01/12 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
2022/01/12 | 14431 | macros/latex/contrib/l3backend/l3backend-box.dtx
-2022/01/12 | 14411 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma
-2022/01/12 | 1420898 | macros/latex/contrib/siunitx.zip
-2022/01/12 | 1405663 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma
-2022/01/12 | 1405235 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma
-2022/01/12 | 139120 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma
-2022/01/12 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r61574.tar.xz
+2022/01/12 | 14421 | macros/latex-dev/base/lppl-1-2.txt
+2022/01/12 | 14341 | macros/latex-dev/base/lppl-1-1.txt
+2022/01/12 | 14288 | macros/latex-dev/base/ltvers.dtx
+2022/01/12 | 142849 | macros/latex-dev/base/ltnews06.pdf
+2022/01/12 | 142825 | macros/latex-dev/base/ltclass.dtx
+2022/01/12 | 14072 | macros/latex-dev/required/tools/afterpage.dtx
+2022/01/12 | 139709 | macros/latex-dev/required/amsmath/amsopn.pdf
+2022/01/12 | 138963 | macros/latex-dev/required/tools/rawfonts.pdf
+2022/01/12 | 13875 | macros/latex-dev/required/graphics/keyval.dtx
+2022/01/12 | 13812 | macros/latex-dev/required/latex-lab/documentmetadata-support.dtx
+2022/01/12 | 138073 | macros/latex-dev/base/ltnews16.pdf
+2022/01/12 | 137811 | macros/latex-dev/base/ltnews07.pdf
+2022/01/12 | 13759 | macros/latex-dev/base/lamport-manual.err
2022/01/12 | 136306 | macros/latex/contrib/l3kernel/l3file.dtx
-2022/01/12 | 136038 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma
-2022/01/12 | 1355964 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma
-2022/01/12 | 135130 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma
-2022/01/12 | 13512 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma
+2022/01/12 | 13589 | macros/latex-dev/base/proc.dtx
2022/01/12 | 1345808 | systems/texlive/tlnet/archive/zref-clever.doc.r61572.tar.xz
+2022/01/12 | 13442 | macros/latex-dev/required/amsmath/amsgen.dtx
+2022/01/12 | 1341 | macros/latex-dev/base/ltnews18.tex
2022/01/12 | 13340 | fonts/newtx/tfm/ntx-BoldItalic-lf-sc-t1.tfm
2022/01/12 | 13336 | fonts/newtx/tfm/ntx-BoldItalic-osf-sc-t1.tfm
2022/01/12 | 1331 | macros/latex/contrib/l3backend/l3backend-code.tex
2022/01/12 | 13300 | fonts/newtx/tfm/ntx-BoldItalic-tlf-sc-t1.tfm
2022/01/12 | 13292 | fonts/newtx/tfm/ntx-BoldItalic-tosf-sc-t1.tfm
-2022/01/12 | 1322449 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
+2022/01/12 | 132382 | macros/latex-dev/base/lppl.pdf
+2022/01/12 | 1316459 | macros/latex-dev/base/encguide.pdf
2022/01/12 | 13098132 | install/macros/latex/contrib/l3kernel.tds.zip
2022/01/12 | 1306 | macros/latex/contrib/l3packages/xfrac.ins
-2022/01/12 | 1304427 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma
-2022/01/12 | 1301084 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma
-2022/01/12 | 1300107 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
+2022/01/12 | 130309 | macros/latex-dev/base/ltnews15.pdf
+2022/01/12 | 129570 | macros/latex-dev/base/ltnews09.pdf
2022/01/12 | 129039 | macros/latex/contrib/l3kernel/l3basics.dtx
2022/01/12 | 12845021 | macros/latex/contrib/l3kernel.zip
2022/01/12 | 128309 | macros/latex/contrib/l3kernel/l3news07.pdf
+2022/01/12 | 128179 | macros/latex-dev/required/tools/array.dtx
+2022/01/12 | 1279 | macros/latex-dev/base/legal.txt
2022/01/12 | 12783 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
2022/01/12 | 1272 | macros/latex/contrib/l3packages/xparse.ins
-2022/01/12 | 126841 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma
+2022/01/12 | 12709 | macros/latex-dev/required/tools/dcolumn.dtx
2022/01/12 | 12612 | fonts/newtx/tfm/ntx-Italic-lf-sc-t1.tfm
2022/01/12 | 12600 | fonts/newtx/tfm/ntx-Italic-osf-sc-t1.tfm
+2022/01/12 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty
2022/01/12 | 12556 | fonts/newtx/tfm/ntx-Italic-tlf-sc-t1.tfm
2022/01/12 | 12552 | fonts/newtx/tfm/ntx-Italic-tosf-sc-t1.tfm
2022/01/12 | 12544 | fonts/newtx/tfm/ntx-BoldSlanted-lf-sc-t1.tfm
2022/01/12 | 12540 | fonts/newtx/tfm/ntx-BoldSlanted-osf-sc-t1.tfm
2022/01/12 | 12536 | fonts/newtx/tfm/ntx-Slanted-lf-sc-t1.tfm
2022/01/12 | 12532 | fonts/newtx/tfm/ntx-Slanted-osf-sc-t1.tfm
+2022/01/12 | 12520 | macros/latex-dev/base/testpage.tex
2022/01/12 | 12508 | fonts/newtx/tfm/ntx-BoldSlanted-tosf-sc-t1.tfm
2022/01/12 | 12508 | fonts/newtx/tfm/ntx-BoldSlanted-tlf-sc-t1.tfm
2022/01/12 | 12504 | fonts/newtx/tfm/ntx-Slanted-tosf-sc-t1.tfm
@@ -609,6 +1186,7 @@
2022/01/12 | 124829 | macros/latex/contrib/l3kernel/l3token.dtx
2022/01/12 | 124497 | macros/latex/contrib/l3kernel/l3keys.dtx
2022/01/12 | 12336 | fonts/newtx/tfm/ntx-Bold-lf-sc-t1.tfm
+2022/01/12 | 12334 | macros/latex-dev/base/ltnews24.tex
2022/01/12 | 12332 | fonts/newtx/tfm/ntx-Bold-osf-sc-t1.tfm
2022/01/12 | 12316 | fonts/newtx/tfm/ntx-Regular-lf-sc-t1.tfm
2022/01/12 | 12312 | fonts/newtx/tfm/ntx-Regular-osf-sc-t1.tfm
@@ -620,31 +1198,34 @@
2022/01/12 | 12284 | fonts/newtx/tfm/ntx-Regular-tosf-sc-t1.tfm
2022/01/12 | 12284 | fonts/newtx/tfm/ntx-Regular-tlf-sc-t1.tfm
2022/01/12 | 122710 | macros/latex/contrib/l3kernel/l3news01.pdf
-2022/01/12 | 1226692 | systems/texlive/tlnet/archive/tex4ht.source.r61574.tar.xz
2022/01/12 | 12252 | fonts/newtx/tfm/ntx-BoldItalic-tlf-scl-ly1.tfm
2022/01/12 | 12248 | fonts/newtx/tfm/ntx-BoldItalic-tosf-scl-ly1.tfm
-2022/01/12 | 121913 | macros/latex/contrib/siunitx/siunitx-number.dtx
+2022/01/12 | 12242 | macros/latex-dev/base/tulm.fdd
+2022/01/12 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty
2022/01/12 | 1206428 | systems/texlive/tlnet/archive/bibarts.doc.r61569.tar.xz
-2022/01/12 | 120220 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma
+2022/01/12 | 12005 | macros/latex-dev/required/amsmath/technote.tex
2022/01/12 | 1191 | macros/latex/contrib/l3packages/xfp.ins
+2022/01/12 | 1189 | macros/latex-dev/required/graphics/graphics.ins
2022/01/12 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
2022/01/12 | 11820 | fonts/newtx/tfm/ntx-Italic-lf-scl-ly1.tfm
2022/01/12 | 11808 | fonts/newtx/tfm/ntx-Italic-osf-scl-ly1.tfm
-2022/01/12 | 1180761 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma
+2022/01/12 | 117 | macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex
2022/01/12 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
2022/01/12 | 11772 | fonts/newtx/tfm/ntx-Italic-tosf-scl-ly1.tfm
2022/01/12 | 11772 | fonts/newtx/tfm/ntx-Italic-tlf-scl-ly1.tfm
2022/01/12 | 11761 | macros/latex/contrib/l3packages/l3keys2e.dtx
+2022/01/12 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty
+2022/01/12 | 1171263 | install/macros/latex-dev/required/latex-lab-dev.tds.zip
2022/01/12 | 11664 | fonts/newtx/tfm/ntx-Slanted-lf-scl-ly1.tfm
2022/01/12 | 11660 | fonts/newtx/tfm/ntx-Slanted-osf-scl-ly1.tfm
2022/01/12 | 11632 | fonts/newtx/tfm/ntx-Slanted-tosf-scl-ly1.tfm
2022/01/12 | 11632 | fonts/newtx/tfm/ntx-Slanted-tlf-scl-ly1.tfm
-2022/01/12 | 115646 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma
+2022/01/12 | 11585 | macros/latex-dev/base/ltpage.dtx
+2022/01/12 | 1157677 | macros/latex-dev/base/ltnews.pdf
2022/01/12 | 11556 | fonts/newtx/tfm/ntx-Slanted-lf-t1.tfm
2022/01/12 | 11552 | fonts/newtx/tfm/ntx-Slanted-osf-t1.tfm
2022/01/12 | 11548 | fonts/newtx/tfm/ntx-BoldSlanted-lf-scl-ly1.tfm
2022/01/12 | 11544 | fonts/newtx/tfm/ntx-BoldSlanted-osf-scl-ly1.tfm
-2022/01/12 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini
2022/01/12 | 11524 | fonts/newtx/tfm/ntx-Slanted-tosf-t1.tfm
2022/01/12 | 11524 | fonts/newtx/tfm/ntx-Slanted-tlf-t1.tfm
2022/01/12 | 11520 | fonts/newtx/tfm/ntx-BoldSlanted-lf-t1.tfm
@@ -660,12 +1241,15 @@
2022/01/12 | 114588 | macros/latex/contrib/l3kernel/l3news04.pdf
2022/01/12 | 11448 | fonts/newtx/tfm/ntx-Regular-tosf-scl-ly1.tfm
2022/01/12 | 11448 | fonts/newtx/tfm/ntx-Regular-tlf-scl-ly1.tfm
+2022/01/12 | 114350 | macros/latex-dev/required/tools/varioref.dtx
2022/01/12 | 11404 | fonts/newtx/tfm/ntx-BoldItalic-lf-t1.tfm
2022/01/12 | 11400 | fonts/newtx/tfm/ntx-BoldItalic-osf-t1.tfm
+2022/01/12 | 11398 | macros/latex-dev/required/amsmath/amstext.dtx
2022/01/12 | 11368 | fonts/newtx/tfm/ntx-Bold-lf-scl-ly1.tfm
2022/01/12 | 11364 | fonts/newtx/tfm/ntx-Bold-osf-scl-ly1.tfm
2022/01/12 | 11360 | fonts/newtx/tfm/ntx-Regular-lf-t1.tfm
2022/01/12 | 11356 | fonts/newtx/tfm/ntx-Regular-osf-t1.tfm
+2022/01/12 | 113561 | macros/latex-dev/required/amsmath/amsxtra.pdf
2022/01/12 | 11352 | fonts/newtx/tfm/ntx-BoldItalic-tlf-t1.tfm
2022/01/12 | 11348 | fonts/newtx/tfm/ntx-BoldItalic-tosf-t1.tfm
2022/01/12 | 113422 | macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -678,26 +1262,40 @@
2022/01/12 | 11312 | fonts/newtx/tfm/ntx-Italic-lf-t1.tfm
2022/01/12 | 11304 | fonts/newtx/tfm/ntx-Bold-tosf-t1.tfm
2022/01/12 | 11304 | fonts/newtx/tfm/ntx-Bold-tlf-t1.tfm
-2022/01/12 | 113013 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma
2022/01/12 | 11300 | fonts/newtx/tfm/ntx-Italic-osf-t1.tfm
-2022/01/12 | 112662 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma
+2022/01/12 | 11284 | macros/latex-dev/required/amsmath/amscd.dtx
2022/01/12 | 11264 | fonts/newtx/tfm/ntx-Italic-tlf-t1.tfm
2022/01/12 | 11260 | fonts/newtx/tfm/ntx-Italic-tosf-t1.tfm
2022/01/12 | 112487 | macros/latex/contrib/l3kernel/l3news05.pdf
2022/01/12 | 11200 | fonts/newtx/tfm/ntxth-Italic-osf-t1.tfm
+2022/01/12 | 111948 | macros/latex-dev/base/ltnews11.pdf
2022/01/12 | 11168 | fonts/newtx/tfm/ntxth-Italic-tlf-t1.tfm
-2022/01/12 | 109561 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma
-2022/01/12 | 109142 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma
-2022/01/12 | 1087175 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma
-2022/01/12 | 108288 | systems/texlive/tlnet/archive/texlive-scripts.r61565.tar.xz
+2022/01/12 | 11148 | macros/latex-dev/required/tools/hhline.dtx
+2022/01/12 | 11065 | macros/latex-dev/base/manifest.txt
+2022/01/12 | 1105407 | support/TeX4ht/source/tex4ht-4ht.tex
+2022/01/12 | 109731 | macros/latex-dev/required/amsmath/subeqn.pdf
+2022/01/12 | 1091130 | macros/latex-dev/base/lthooks-code.pdf
+2022/01/12 | 10798 | macros/latex-dev/base/ltnews26.tex
+2022/01/12 | 10792 | macros/latex-dev/base/ltnews22.tex
+2022/01/12 | 10791 | macros/latex-dev/base/ltnews23.tex
2022/01/12 | 107813 | macros/latex/contrib/l3kernel/l3expan.dtx
+2022/01/12 | 10771 | macros/latex-dev/required/tools/fontsmpl.dtx
+2022/01/12 | 10753 | macros/latex-dev/required/graphics/trig.dtx
+2022/01/12 | 1074166 | macros/latex-dev/base/doc-code.pdf
2022/01/12 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2022/01/12 | 106904 | macros/latex-dev/base/inputenc.dtx
+2022/01/12 | 106880 | macros/latex-dev/base/fntguide.tex
+2022/01/12 | 10644 | macros/latex-dev/required/tools/enumerate.dtx
+2022/01/12 | 10601 | macros/latex-dev/base/makeindx.dtx
+2022/01/12 | 105 | macros/latex-dev/base/ltfilehook-code.tex
2022/01/12 | 105029 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2022/01/12 | 104676 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma
-2022/01/12 | 103437 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma
+2022/01/12 | 104 | macros/latex-dev/base/ltshipout-code.tex
+2022/01/12 | 104792 | macros/latex-dev/required/amsmath/amsldoc.tex
+2022/01/12 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex
+2022/01/12 | 10370 | macros/latex-dev/base/ltfsscmp.dtx
+2022/01/12 | 102 | macros/latex-dev/base/lthooks-code.tex
2022/01/12 | 10279144 | systems/texlive/tlnet/archive/reledmac.doc.r61571.tar.xz
-2022/01/12 | 101457 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma
-2022/01/12 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx
+2022/01/12 | 10251 | macros/latex-dev/base/webcomp.err
2022/01/11 | 99952 | systems/texlive/tlnet/archive/polexpr.doc.r61559.tar.xz
2022/01/11 | 9988 | fonts/cochineal/tfm/Cochineal-Roman-tosf-ot2.tfm
2022/01/11 | 9988 | fonts/cochineal/tfm/Cochineal-Roman-tlf-ot2.tfm
@@ -762,24 +1360,22 @@
2022/01/11 | 8632 | fonts/cochineal/tfm/Cochineal-Italic-tlf-th-ot1.tfm
2022/01/11 | 8579 | macros/latex/contrib/tuda-ci/tex/beamerinnerthemeTUDa.sty
2022/01/11 | 8179 | macros/latex/contrib/asmejour/README.md
+2022/01/11 | 80887 | macros/latex/contrib/esami/esami.sty
2022/01/11 | 7492 | macros/latex/contrib/sillypage/sillypage.dtx
2022/01/11 | 7336 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaBeamer.tex
2022/01/11 | 733184 | systems/texlive/tlnet/archive/pgf-interference.doc.r61562.tar.xz
2022/01/11 | 7104 | systems/texlive/tlnet/archive/keyfloat.r61561.tar.xz
2022/01/11 | 6881 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaLeaflet.tex
-2022/01/11 | 6793 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
2022/01/11 | 6673 | macros/latex/contrib/tuda-ci/tex/tudabeamer.cls
2022/01/11 | 661929 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPub.pdf
2022/01/11 | 6452 | systems/texlive/tlnet/archive/dbshow.r61560.tar.xz
2022/01/11 | 64180 | fonts/cochineal/tfm/Cochineal-Bold-lf-t1.tfm
2022/01/11 | 64156 | fonts/cochineal/tfm/Cochineal-Bold-tlf-t1.tfm
-2022/01/11 | 6388684 | systems/texlive/tlnet/archive/newtx.r61563.tar.xz
2022/01/11 | 6375 | fonts/zlmtt/doc/zlmtt-doc.tex
2022/01/11 | 6365 | macros/latex/contrib/tuda-ci/tex/tudarules.sty
2022/01/11 | 634181 | macros/latex/contrib/tuda-ci/doc/DEMO-TUDaPhD.pdf
2022/01/11 | 63416 | fonts/cochineal/tfm/Cochineal-Bold-lf-swash-t1.tfm
2022/01/11 | 63392 | fonts/cochineal/tfm/Cochineal-Bold-tlf-swash-t1.tfm
-2022/01/11 | 631384 | systems/texlive/tlnet/archive/newtx.doc.r61563.tar.xz
2022/01/11 | 62928 | fonts/cochineal/tfm/Cochineal-Bold-osf-t1.tfm
2022/01/11 | 628626 | macros/latex/contrib/asmejour/asmejour-template.pdf
2022/01/11 | 62860 | fonts/cochineal/tfm/Cochineal-Bold-tosf-t1.tfm
@@ -917,6 +1513,7 @@
2022/01/11 | 3537 | fonts/cochineal/enc/coch_eluj5m.enc
2022/01/11 | 3536 | fonts/cochineal/enc/coch_da7weg.enc
2022/01/11 | 3531 | fonts/cochineal/enc/coch_syo7sr.enc
+2022/01/11 | 34 | macros/latex/contrib/esami/VERSION
2022/01/11 | 34864 | fonts/cochineal/tfm/Cochineal-Bold-lf-sc-ly1.tfm
2022/01/11 | 34840 | fonts/cochineal/tfm/Cochineal-Bold-tlf-sc-ly1.tfm
2022/01/11 | 3481 | fonts/cochineal/enc/coch_dx3muq.enc
@@ -1099,6 +1696,7 @@
2022/01/11 | 2504 | fonts/cochineal/tfm/zcochmia.tfm
2022/01/11 | 2496 | fonts/cochineal/vf/zcochmi.vf
2022/01/11 | 249192 | macros/latex/contrib/reledmac/examples/4-reledpar_pages_long_notes.pdf
+2022/01/11 | 2479 | macros/latex/contrib/esami/README
2022/01/11 | 244 | fonts/cochineal/tfm/Cochineal-Bol-osf.tfm
2022/01/11 | 243994 | fonts/zlmtt.zip
2022/01/11 | 2350 | macros/latex/contrib/tuda-ci/example/DEMO-TUDaReport.tex
@@ -1308,7 +1906,6 @@
2022/01/11 | 1736 | fonts/cochineal/vf/Cochineal-BoldItalic-tlf-swash-t1.vf
2022/01/11 | 1736 | fonts/cochineal/vf/Cochineal-BoldItalic-osf-swash-t1.vf
2022/01/11 | 1736 | fonts/cochineal/tfm/Cochineal-Roman-osf-lgr.tfm
-2022/01/11 | 173389 | support/TeX4ht/source/ChangeLog
2022/01/11 | 1732 | fonts/cochineal/vf/Cochineal-Italic-tosf-swash-t1.vf
2022/01/11 | 1732 | fonts/cochineal/vf/Cochineal-Italic-tlf-swash-t1.vf
2022/01/11 | 1732 | fonts/cochineal/vf/Cochineal-Italic-osf-swash-t1.vf
@@ -1481,10 +2078,10 @@
2022/01/11 | 11456 | fonts/cochineal/tfm/Cochineal-Bold-tlf-ot1.tfm
2022/01/11 | 1144 | fonts/cochineal/tfm/Cochineal-Bol-alph.tfm
2022/01/11 | 1144 | fonts/cochineal/tfm/Cochineal-alph.tfm
+2022/01/11 | 11301 | macros/latex/contrib/esami/esami-xyz.cfg
2022/01/11 | 11256 | fonts/cochineal/tfm/Cochineal-Bold-tlf-t2a.tfm
2022/01/11 | 11192 | fonts/cochineal/tfm/Cochineal-Bold-lf-swash-ot1.tfm
2022/01/11 | 11168 | fonts/cochineal/tfm/Cochineal-Bold-tlf-swash-ot1.tfm
-2022/01/11 | 1105377 | support/TeX4ht/source/tex4ht-4ht.tex
2022/01/11 | 11044 | fonts/cochineal/tfm/Cochineal-Bold-osf-ot1.tfm
2022/01/11 | 10996 | fonts/cochineal/tfm/Cochineal-Bold-tosf-ot1.tfm
2022/01/11 | 1093 | fonts/zlmtt/README
@@ -1513,7 +2110,6 @@
2022/01/10 | 49152 | systems/texlive/tlnet/archive/xurl.doc.r61553.tar.xz
2022/01/10 | 4700 | macros/latex/contrib/keyfloat/images/image2.pdf
2022/01/10 | 4068 | fonts/newtx/tex/newtx.sty
-2022/01/10 | 385158 | macros/latex/contrib/dbshow.zip
2022/01/10 | 347843 | fonts/newtx/doc/newtxdoc.pdf
2022/01/10 | 334474 | macros/latex/contrib/bibarts/bibarts.tex
2022/01/10 | 332462 | macros/latex/contrib/bibarts/ba-short.pdf
@@ -1522,7 +2118,6 @@
2022/01/10 | 296440 | macros/latex/contrib/bibarts/bibsort.c
2022/01/10 | 29417 | macros/latex/contrib/bibarts/ba-short.tex
2022/01/10 | 27192 | systems/texlive/tlnet/archive/biblatex-readbbl.doc.r61549.tar.xz
-2022/01/10 | 27184 | systems/texlive/tlnet/archive/luamplib.source.r61554.tar.xz
2022/01/10 | 255029 | macros/latex/contrib/zref-clever/zref-clever.dtx
2022/01/10 | 23120 | systems/texlive/tlnet/archive/kdpcover.r61552.tar.xz
2022/01/10 | 229888 | macros/latex/contrib/bibarts/bibsort.exe
@@ -1535,7 +2130,6 @@
2022/01/10 | 165179 | macros/latex/contrib/keyfloat/keyfloat.dtx
2022/01/10 | 1644 | macros/latex/contrib/keyfloat/keyfloat.ins
2022/01/10 | 1600 | systems/texlive/tlnet/archive/xurl.r61553.tar.xz
-2022/01/10 | 155976 | systems/texlive/tlnet/archive/luamplib.doc.r61554.tar.xz
2022/01/10 | 1544 | macros/latex/contrib/zref-clever/CHANGELOG.md
2022/01/10 | 1486 | macros/latex/contrib/zref-clever/zref-clever-code.tex
2022/01/10 | 1444 | systems/texlive/tlnet/archive/biblatex-readbbl.r61549.tar.xz
@@ -1547,7 +2141,6 @@
2022/01/10 | 127304 | systems/texlive/tlnet/archive/iexec.doc.r61551.tar.xz
2022/01/10 | 1264 | systems/texlive/tlnet/archive/collection-bibtexextra.r61549.tar.xz
2022/01/10 | 12463000 | systems/texlive/tlnet/archive/pstricks.doc.r61548.tar.xz
-2022/01/10 | 11988 | systems/texlive/tlnet/archive/luamplib.r61554.tar.xz
2022/01/10 | 118034978 | macros/context/latest/cont-tmf.zip
2022/01/10 | 1144 | macros/latex/contrib/keyfloat/README.txt
2022/01/10 | 111819 | macros/latex/contrib/zref-clever/zref-clever.tex
@@ -1602,7 +2195,6 @@
2022/01/09 | 592952 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma
2022/01/09 | 58706 | macros/generic/polexpr/polexpr-examples.pdf
2022/01/09 | 5646 | systems/win32/miktex/tm/packages/garamond-math__source.tar.lzma
-2022/01/09 | 56385 | macros/latex/contrib/dbshow/dbshow-doc.tex
2022/01/09 | 56072 | systems/win32/miktex/tm/packages/tkz-base__source.tar.lzma
2022/01/09 | 5598 | systems/win32/miktex/tm/packages/marathi.tar.lzma
2022/01/09 | 5522 | systems/win32/miktex/tm/packages/dbshow.tar.lzma
@@ -1641,7 +2233,6 @@
2022/01/09 | 379161 | systems/win32/miktex/tm/packages/biblatex-publist__doc.tar.lzma
2022/01/09 | 377 | macros/latex/contrib/biblatex-contrib/biblatex-readbbl/README
2022/01/09 | 3757 | macros/latex/contrib/kdpcover/kdpcover.tex
-2022/01/09 | 373472 | macros/latex/contrib/dbshow/dbshow-doc.pdf
2022/01/09 | 36765 | systems/win32/miktex/tm/packages/tkz-euclide.tar.lzma
2022/01/09 | 367403 | systems/win32/miktex/tm/packages/codebox__doc.tar.lzma
2022/01/09 | 3556 | systems/win32/miktex/tm/packages/chhaya.tar.lzma
@@ -1649,7 +2240,6 @@
2022/01/09 | 3401 | macros/latex/contrib/ffcode/ffcode.sty
2022/01/09 | 335456 | systems/win32/miktex/tm/packages/tkz-base__doc.tar.lzma
2022/01/09 | 334685 | systems/win32/miktex/tm/packages/wrapfig__doc.tar.lzma
-2022/01/09 | 334650 | support/TeX4ht/source/tex4ht-ooffice.tex
2022/01/09 | 32923 | systems/win32/miktex/tm/packages/texlogsieve.tar.lzma
2022/01/09 | 326424 | systems/win32/miktex/tm/packages/econ-bst__doc.tar.lzma
2022/01/09 | 32594 | fonts/newtx/map/newtx.map
@@ -1662,7 +2252,6 @@
2022/01/09 | 29900 | macros/latex/contrib/biblatex-contrib/biblatex-readbbl.zip
2022/01/09 | 29644 | macros/generic/polexpr/polexpr-examples.tex
2022/01/09 | 29569 | systems/win32/miktex/tm/packages/srdp-mathematik.tar.lzma
-2022/01/09 | 29523 | macros/latex/contrib/dbshow/dbshow.sty
2022/01/09 | 289459 | systems/win32/miktex/tm/packages/garamond-math__doc.tar.lzma
2022/01/09 | 2843 | systems/win32/miktex/tm/packages/hvlogos.tar.lzma
2022/01/09 | 2806 | systems/win32/miktex/tm/packages/kdpcover.tar.lzma
@@ -1763,7 +2352,6 @@
2022/01/09 | 11988 | systems/win32/miktex/tm/packages/fnpct.tar.lzma
2022/01/09 | 11982 | systems/win32/miktex/tm/packages/dbshow__source.tar.lzma
2022/01/09 | 11805 | systems/win32/miktex/tm/packages/codebox__source.tar.lzma
-2022/01/09 | 1146 | macros/latex/contrib/dbshow/README.md
2022/01/09 | 11468 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma
2022/01/09 | 1146268 | systems/texlive/tlnet/archive/latexindent.doc.r61535.tar.xz
2022/01/09 | 1141401 | macros/latex/contrib/njuvisual/njuvisual-curves.dtx
@@ -1890,7 +2478,6 @@
2022/01/07 | 88290 | macros/latex/contrib/tcolorbox/tcbskins.code.tex
2022/01/07 | 8722 | macros/latex/contrib/tcolorbox/tcolorbox.doc.intro.tex
2022/01/07 | 8355 | macros/latex/contrib/tcolorbox/tcolorbox-example.tex
-2022/01/07 | 8305664 | graphics/asymptote/binaries/x86_64-windows/texlive/asy.exe
2022/01/07 | 823839 | macros/latex/contrib/csvsimple/csvsimple-legacy.pdf
2022/01/07 | 8120 | macros/latex/contrib/tcolorbox/tcbhooks.code.tex
2022/01/07 | 7964 | macros/latex/contrib/csvsimple/csvsimple.tex
@@ -1906,7 +2493,6 @@
2022/01/07 | 6349820 | macros/latex/contrib/tcolorbox.zip
2022/01/07 | 6315686 | install/macros/latex/contrib/tcolorbox.tds.zip
2022/01/07 | 62882 | macros/latex/contrib/tcolorbox/blueshade.png
-2022/01/07 | 62520 | systems/texlive/tlnet/archive/siunitx.r61515.tar.xz
2022/01/07 | 6182 | macros/latex/contrib/tcolorbox/tcolorbox.doc.bib
2022/01/07 | 60337 | macros/latex/contrib/tcolorbox/CHANGES.md
2022/01/07 | 5990 | macros/latex/contrib/tcolorbox/tcolorbox-example-poster.tex
@@ -1919,7 +2505,6 @@
2022/01/07 | 5404 | macros/latex/contrib/tcolorbox/tcolorbox.doc.abstract.tex
2022/01/07 | 517780 | systems/texlive/tlnet/archive/translations.doc.r61516.tar.xz
2022/01/07 | 5048 | macros/latex/contrib/tcolorbox/README.md
-2022/01/07 | 49408 | systems/texlive/tlnet/tlpkg/installer/config.guess
2022/01/07 | 469092 | macros/latex/contrib/tcolorbox/tcolorbox-example.pdf
2022/01/07 | 456130 | macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.pdf
2022/01/07 | 44098 | macros/latex/contrib/tcolorbox/tcolorbox-tutorial-poster.tex
@@ -1985,1501 +2570,11 @@
2022/01/07 | 12453 | macros/latex/contrib/tcolorbox/tcbposter.code.tex
2022/01/07 | 1242048 | systems/texlive/tlnet/archive/libertinust1math.r61511.tar.xz
2022/01/07 | 12115 | macros/latex/contrib/tcolorbox/tcbtheorems.code.tex
-2022/01/07 | 1205800 | systems/texlive/tlnet/archive/siunitx.doc.r61515.tar.xz
2022/01/07 | 11606 | macros/latex/contrib/tcolorbox/tcolorbox.doc.s_main.sty
2022/01/07 | 113296 | macros/latex/contrib/tcolorbox/tcolorbox.doc.skins.tex
2022/01/07 | 112 | macros/latex/contrib/tcolorbox/tcolorbox.doc.index.tex
2022/01/07 | 1106 | macros/latex/contrib/tcolorbox/tcolorbox.doc.picturecredits.tex
2022/01/07 | 1087253 | macros/latex/contrib/csvsimple/csvsimple-l3.pdf
-2022/01/07 | 108004 | systems/texlive/tlnet/archive/siunitx.source.r61515.tar.xz
2022/01/07 | 10268 | macros/latex/contrib/tcolorbox/tcbxparse.code.tex
2022/01/07 | 100618 | macros/latex/contrib/csvsimple/csvsimple-l3.tex
2022/01/07 | 10040 | macros/latex/contrib/tcolorbox/tcbskinsjigsaw.code.tex
-2022/01/06 | 99 | graphics/asymptote/base/asy_filetype.vim
-2022/01/06 | 999 | graphics/asymptote/GUI/res/icons/brush.svg
-2022/01/06 | 998 | graphics/asymptote/GUI/res/icons/chevron-with-circle-right.svg
-2022/01/06 | 994 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/footer_sf/common_footer.htm
-2022/01/06 | 9945 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/SemanticTokens.h
-2022/01/06 | 9923 | graphics/asymptote/profiler.h
-2022/01/06 | 990 | graphics/asymptote/examples/RiemannSphere.asy
-2022/01/06 | 989121 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/Glew/CustomGL/glew.h
-2022/01/06 | 986 | graphics/asymptote/predicates.h
-2022/01/06 | 986 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/quickstart/quickstart.cpp
-2022/01/06 | 9867 | graphics/asymptote/runstring.in
-2022/01/06 | 9826 | graphics/asymptote/base/rationalSimplex.asy
-2022/01/06 | 9822 | graphics/asymptote/doc/FAQ/m-html.pl
-2022/01/06 | 980 | graphics/asymptote/examples/filesurface.asy
-2022/01/06 | 9805 | graphics/asymptote/doc/asymptote.sty
-2022/01/06 | 978 | graphics/asymptote/examples/worksheet.asy
-2022/01/06 | 9784 | graphics/asymptote/triple.h
-2022/01/06 | 9772 | graphics/asymptote/fundec.cc
-2022/01/06 | 974 | graphics/asymptote/prc/Makefile
-2022/01/06 | 973 | graphics/asymptote/examples/fequlogo.asy
-2022/01/06 | 972 | graphics/asymptote/examples/triads.asy
-2022/01/06 | 97152 | systems/texlive/tlnet/archive/texinfo.r61498.tar.xz
-2022/01/06 | 969 | graphics/asymptote/runfile.h
-2022/01/06 | 968 | graphics/asymptote/LspCpp/packages.config
-2022/01/06 | 968193 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/Glew/glew.c
-2022/01/06 | 967 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/footer_sf/overview_footer.htm
-2022/01/06 | 966 | graphics/asymptote/tests/array/solve.asy
-2022/01/06 | 964 | graphics/asymptote/GUI/res/icons/magnifying-glass.svg
-2022/01/06 | 95 | graphics/asymptote/prc/test.asy
-2022/01/06 | 9588 | systems/texlive/tlnet/archive/biblatex-publist.r61500.tar.xz
-2022/01/06 | 9562 | graphics/asymptote/base/bezulate.asy
-2022/01/06 | 954 | graphics/asymptote/examples/poster.asy
-2022/01/06 | 953 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/workspaceFolders.h
-2022/01/06 | 952118 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/nuklear.h
-2022/01/06 | 949 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Context.cpp
-2022/01/06 | 94848 | graphics/asymptote/GUI/Window1.py
-2022/01/06 | 946 | graphics/asymptote/examples/animations/cube.asy
-2022/01/06 | 942 | graphics/asymptote/statistics.h
-2022/01/06 | 937 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/did_open.h
-2022/01/06 | 936 | graphics/asymptote/tests/array/array.asy
-2022/01/06 | 9362 | graphics/asymptote/glrender.h
-2022/01/06 | 934 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/declaration_definition.h
-2022/01/06 | 9334 | graphics/asymptote/base/plain_paths.asy
-2022/01/06 | 9328 | graphics/asymptote/doc/FAQ/bfnnconv.pl
-2022/01/06 | 930 | graphics/asymptote/examples/polararea.asy
-2022/01/06 | 9251 | graphics/asymptote/errors
-2022/01/06 | 922 | graphics/asymptote/doc/imagecontour.asy
-2022/01/06 | 920 | graphics/asymptote/makeUnique.h
-2022/01/06 | 916 | graphics/asymptote/opcodes.h
-2022/01/06 | 912 | graphics/asymptote/doc/errorbars.asy
-2022/01/06 | 9104 | graphics/asymptote/symbol.cc
-2022/01/06 | 908 | graphics/asymptote/modifier.h
-2022/01/06 | 908 | graphics/asymptote/coenv.h
-2022/01/06 | 908 | graphics/asymptote/base/map.asy
-2022/01/06 | 9088 | graphics/asymptote/application.h
-2022/01/06 | 907 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/OverridableMethod.h
-2022/01/06 | 9022 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_gtk.c
-2022/01/06 | 9021 | graphics/asymptote/psfile.h
-2022/01/06 | 901 | graphics/asymptote/virtualfieldaccess.cc
-2022/01/06 | 901 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/executeCommand.h
-2022/01/06 | 8990 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/TcpServer.cpp
-2022/01/06 | 89902 | graphics/asymptote/webgl/gl.js
-2022/01/06 | 897 | graphics/asymptote/doc/flowchartdemo.asy
-2022/01/06 | 88 | graphics/asymptote/cudareflect/tinyexr/examples/exrfilter/README.md
-2022/01/06 | 886 | graphics/asymptote/angle.h
-2022/01/06 | 8856 | graphics/asymptote/runmath.in
-2022/01/06 | 8843 | graphics/asymptote/doc/asy.1
-2022/01/06 | 883 | graphics/asymptote/cudareflect/helper.cuh
-2022/01/06 | 880 | graphics/asymptote/doc/xasy.1x
-2022/01/06 | 879 | graphics/asymptote/examples/markregular.asy
-2022/01/06 | 8792 | graphics/asymptote/prc/PRCTools/iPRCFile.cc
-2022/01/06 | 877 | graphics/asymptote/GUI/Widg_addPolyOpt.py
-2022/01/06 | 877 | graphics/asymptote/doc/markers2.asy
-2022/01/06 | 876 | graphics/asymptote/GUI/res/icons/edit.svg
-2022/01/06 | 874286 | info/kaytannollista-latexia/kaytannollista-latexia.pdf
-2022/01/06 | 872 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/range_formatting.h
-2022/01/06 | 8711 | graphics/asymptote/base/plain_pens.asy
-2022/01/06 | 86 | graphics/asymptote/doc/cylinderskeleton.asy
-2022/01/06 | 86920 | info/kaytannollista-latexia/luku-merkintakieli.tex
-2022/01/06 | 868 | graphics/asymptote/examples/twistedtubes.asy
-2022/01/06 | 867 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Condition.h
-2022/01/06 | 867 | graphics/asymptote/cudareflect/tinyexr/test/unit/config-msvc.py
-2022/01/06 | 866 | graphics/asymptote/examples/xxsq01x-1.asy
-2022/01/06 | 85 | graphics/asymptote/cudareflect/tinyexr/vcsetup2019.bat
-2022/01/06 | 85989 | graphics/asymptote/base/three.asy
-2022/01/06 | 858 | graphics/asymptote/GUI/res/icons/center.svg
-2022/01/06 | 856 | graphics/asymptote/examples/animations/sphere.asy
-2022/01/06 | 8567 | graphics/asymptote/xstream.h
-2022/01/06 | 8521 | graphics/asymptote/LspCpp/LibLsp/lsp/ClientPreferences.h
-2022/01/06 | 8519 | graphics/asymptote/cudareflect/ReflectanceMapper.cu
-2022/01/06 | 850 | graphics/asymptote/GUI/res/icons/android-folder-open.svg
-2022/01/06 | 845 | graphics/asymptote/envcompleter.h
-2022/01/06 | 8456 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/trackball.cc
-2022/01/06 | 844 | graphics/asymptote/GUI/res/icons/android-radio-button-on.svg
-2022/01/06 | 8439 | graphics/asymptote/runpath.in
-2022/01/06 | 842 | graphics/asymptote/LspCpp/LibLsp/lsp/ProcessIoService.h
-2022/01/06 | 842 | graphics/asymptote/LspCpp/LibLsp/lsp/lsRange.h
-2022/01/06 | 842 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/checkConstructorsStatus.h
-2022/01/06 | 8429 | graphics/asymptote/examples/thermodynamics.asy
-2022/01/06 | 8411 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/reference.dox
-2022/01/06 | 839 | graphics/asymptote/examples/venn3.asy
-2022/01/06 | 838 | graphics/asymptote/GUI/res/icons/close-round.svg
-2022/01/06 | 8371 | graphics/asymptote/prc/PRCbitStream.cc
-2022/01/06 | 83449 | graphics/asymptote/lex.yy.cc
-2022/01/06 | 8342 | graphics/asymptote/base/simplex.asy
-2022/01/06 | 832 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-255456016cca60ddb5c5ed6898182e13739bf687b17d1411e97bb60ad95e7a84_min
-2022/01/06 | 831 | graphics/asymptote/runbacktrace.in
-2022/01/06 | 831 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/fuzz.cc
-2022/01/06 | 829 | graphics/asymptote/examples/shellsqrtx01.asy
-2022/01/06 | 8296 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/overview.txt
-2022/01/06 | 828 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/generateDelegateMethods.h
-2022/01/06 | 827 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/checkDelegateMethodsStatus.h
-2022/01/06 | 825 | graphics/asymptote/examples/xxsq01y.asy
-2022/01/06 | 8243 | graphics/asymptote/base/asy-kate.sh
-2022/01/06 | 822 | graphics/asymptote/GUI/res/icons/android-expand.svg
-2022/01/06 | 821 | graphics/asymptote/v3dtypes.py
-2022/01/06 | 821 | graphics/asymptote/examples/SierpinskiGasket.asy
-2022/01/06 | 820 | graphics/asymptote/webgl/license
-2022/01/06 | 820 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/LICENSE
-2022/01/06 | 81 | graphics/asymptote/doc/bezier.asy
-2022/01/06 | 818 | graphics/asymptote/GLTextures.cc
-2022/01/06 | 814 | graphics/asymptote/camperror.h
-2022/01/06 | 810 | graphics/asymptote/examples/orthocenter.asy
-2022/01/06 | 81091 | graphics/asymptote/doc/TeXShopAndAsymptote.pdf
-2022/01/06 | 8096 | graphics/asymptote/runhistory.cc
-2022/01/06 | 8095 | graphics/asymptote/LspCpp/example/WebsocketExample.cpp
-2022/01/06 | 808 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/did_save.h
-2022/01/06 | 806 | graphics/asymptote/GUI/res/icons/android-refresh.svg
-2022/01/06 | 8037 | graphics/asymptote/name.cc
-2022/01/06 | 802 | graphics/asymptote/GUI/res/icons/android-camera.svg
-2022/01/06 | 802 | graphics/asymptote/examples/vertexshading.asy
-2022/01/06 | 802 | graphics/asymptote/examples/controlsystem.asy
-2022/01/06 | 801 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/Makefile
-2022/01/06 | 8008 | graphics/asymptote/runpath3d.in
-2022/01/06 | 798 | graphics/asymptote/examples/animations/torusanimation.asy
-2022/01/06 | 794 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/execute_command.h
-2022/01/06 | 793 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-eedff3a9e99eb1c0fd3a3b0989e7c44c0a69f04f10b23e5264f362a4773f4397_min
-2022/01/06 | 792 | graphics/asymptote/shaders.h
-2022/01/06 | 792 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/formatting.h
-2022/01/06 | 792 | graphics/asymptote/doc/secondaryaxis.asy
-2022/01/06 | 79003 | graphics/asymptote/GUI/windows/window1.ui
-2022/01/06 | 78 | graphics/asymptote/examples/randompath3.asy
-2022/01/06 | 789 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/resolveTypeHierarchy.h
-2022/01/06 | 78868 | fonts/libertinust1math/tex/libertinust1math.sty
-2022/01/06 | 7856 | macros/pdftex/mptopdf/tex/context/base/mkii/syst-tex.mkii
-2022/01/06 | 780 | graphics/asymptote/GUI/res/icons/check.svg
-2022/01/06 | 77 | graphics/asymptote/tests/gc/string.asy
-2022/01/06 | 7790 | graphics/asymptote/coder.cc
-2022/01/06 | 778 | graphics/asymptote/LspCpp/LibLsp/lsp/lsDocumentUri.h
-2022/01/06 | 7780 | graphics/asymptote/cudareflect/main.cc
-2022/01/06 | 7737 | graphics/asymptote/LspCpp/network/string_view.hpp
-2022/01/06 | 770 | graphics/asymptote/asy.rc
-2022/01/06 | 76 | graphics/asymptote/examples/grid.asy
-2022/01/06 | 768 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/did_close.h
-2022/01/06 | 7684 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/sanitize-helpers.cmake
-2022/01/06 | 76801 | graphics/asymptote/gl-matrix-2.4.0-pruned/dist/gl-matrix.js
-2022/01/06 | 7671 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Context.h
-2022/01/06 | 766 | graphics/asymptote/vm.h
-2022/01/06 | 764 | graphics/asymptote/GUI/res/icons/android-radio-button-off.svg
-2022/01/06 | 7639 | graphics/asymptote/LICENSE.LESSER
-2022/01/06 | 7632 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/pool.hpp
-2022/01/06 | 762 | graphics/asymptote/examples/clockarray.asy
-2022/01/06 | 7619 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/threadpool.css
-2022/01/06 | 759 | graphics/asymptote/GUI/res/icons/plus-round.svg
-2022/01/06 | 754 | graphics/asymptote/GUI/res/icons/circle.svg
-2022/01/06 | 754 | graphics/asymptote/doc/graphmarkers.asy
-2022/01/06 | 751 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/publishDiagnostics.h
-2022/01/06 | 74 | graphics/asymptote/LspCpp/LibLsp/lsp/method_type.h
-2022/01/06 | 748 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/resolveUnimplementedAccessors.h
-2022/01/06 | 747 | graphics/asymptote/examples/pseudosphere.asy
-2022/01/06 | 746 | graphics/asymptote/tests/array/sort.asy
-2022/01/06 | 743 | graphics/asymptote/examples/xxsq01.asy
-2022/01/06 | 741 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/test/test_opendialogmultiple.c
-2022/01/06 | 7407 | graphics/asymptote/base/graph_splinetype.asy
-2022/01/06 | 739 | graphics/asymptote/examples/condor.asy
-2022/01/06 | 738 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/generateHashCodeEquals.h
-2022/01/06 | 737 | graphics/asymptote/tests/array/determinant.asy
-2022/01/06 | 734 | graphics/asymptote/examples/quilt.asy
-2022/01/06 | 73435 | graphics/asymptote/GL/glxew.h
-2022/01/06 | 733 | graphics/asymptote/GUI/xasySvg.py
-2022/01/06 | 732 | macros/pdftex/mptopdf/doc/context/scripts/mkii/mptopdf.man
-2022/01/06 | 73254 | graphics/asymptote/runarray.cc
-2022/01/06 | 730 | graphics/asymptote/LspCpp/network/uri/detail/uri_parse_authority.hpp
-2022/01/06 | 7305 | graphics/asymptote/base/stats.asy
-2022/01/06 | 7302 | graphics/asymptote/base/markers.asy
-2022/01/06 | 72 | graphics/asymptote/tests/gc/pen.asy
-2022/01/06 | 729 | graphics/asymptote/base/labelpath.asy
-2022/01/06 | 7295 | graphics/asymptote/base/plain.asy
-2022/01/06 | 727 | graphics/asymptote/examples/fermi.asy
-2022/01/06 | 7274 | graphics/asymptote/runtime.pl
-2022/01/06 | 722 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/searchSymbols.h
-2022/01/06 | 72283 | graphics/asymptote/base/three_surface.asy
-2022/01/06 | 7222 | graphics/asymptote/GUI/pyUIClass/widg_addLabel.py
-2022/01/06 | 71994 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/Glew/CustomGL/glxew.h
-2022/01/06 | 71627 | macros/pdftex/mptopdf/tex/context/base/mkii/supp-pdf.mkii
-2022/01/06 | 7152 | graphics/asymptote/LspCpp/LibLsp/lsp/lsp_completion.h
-2022/01/06 | 714 | graphics/asymptote/mod.h
-2022/01/06 | 714 | graphics/asymptote/LspCpp/network/uri/detail/uri_resolve.hpp
-2022/01/06 | 714 | graphics/asymptote/examples/unitoctantx.asy
-2022/01/06 | 713 | graphics/asymptote/GUI/res/icons/arrow-move.svg
-2022/01/06 | 713 | graphics/asymptote/examples/gamma3.asy
-2022/01/06 | 71368 | graphics/asymptote/base/asy-mode.el
-2022/01/06 | 71201 | graphics/asymptote/prc/oPRCFile.cc
-2022/01/06 | 711 | graphics/asymptote/examples/partialsurface.asy
-2022/01/06 | 710 | graphics/asymptote/examples/fjortoft.asy
-2022/01/06 | 70 | graphics/asymptote/tests/gc/transform.asy
-2022/01/06 | 709 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/Makefile
-2022/01/06 | 7099 | graphics/asymptote/config.h.in
-2022/01/06 | 708481 | fonts/libertinust1math/afm/LibertinusT1math.afm
-2022/01/06 | 706 | graphics/asymptote/LspCpp/LibLsp/lsp/AbsolutePath.h
-2022/01/06 | 703 | graphics/asymptote/examples/NURBScurve.asy
-2022/01/06 | 70102 | graphics/asymptote/base/graph3.asy
-2022/01/06 | 700 | graphics/asymptote/GUI/locale/th/LC_MESSAGES/base.po
-2022/01/06 | 6988 | fonts/libertinust1math/tfm/libertinust1-mathsfrm-bold.tfm
-2022/01/06 | 695 | graphics/asymptote/GUI/res/icons/android-close.svg
-2022/01/06 | 69441 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/miniz.h
-2022/01/06 | 693 | graphics/asymptote/LspCpp/LibLsp/lsp/general/progress.h
-2022/01/06 | 6917 | graphics/asymptote/LspCpp/network/uri/uri_builder.hpp
-2022/01/06 | 6911 | graphics/asymptote/errortest.asy
-2022/01/06 | 690 | graphics/asymptote/examples/layers.asy
-2022/01/06 | 6896 | graphics/asymptote/GUI/windows/widg_addLabel.ui
-2022/01/06 | 688 | graphics/asymptote/LspCpp/LibLsp/lsp/lsTextDocumentEdit.h
-2022/01/06 | 688 | graphics/asymptote/examples/centroidfg.asy
-2022/01/06 | 6889 | graphics/asymptote/LspCpp/LibLsp/lsp/general/lsWorkspaceClientCapabilites.h
-2022/01/06 | 687 | graphics/asymptote/cudareflect/tinyexr/examples/exr2fptiff/Makefile
-2022/01/06 | 683 | graphics/asymptote/examples/fractaltree.asy
-2022/01/06 | 68126 | graphics/asymptote/prc/PRCTools/describePRC.cc
-2022/01/06 | 680 | graphics/asymptote/tests/array/delete.asy
-2022/01/06 | 67 | graphics/asymptote/LspCpp/third_party/threadpool/project-root.jam
-2022/01/06 | 679 | graphics/asymptote/examples/genusthree.asy
-2022/01/06 | 678 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-5b66774a7498c635334ad386be0c3b359951738ac47f14878a3346d1c6ea0fe5_min
-2022/01/06 | 6787 | graphics/asymptote/drawlabel.cc
-2022/01/06 | 677 | graphics/asymptote/doc/Bode.asy
-2022/01/06 | 677 | graphics/asymptote/base/shaders/vertex.glsl
-2022/01/06 | 6772 | graphics/asymptote/cudareflect/tinyexr/examples/nornalmap/main.cc
-2022/01/06 | 676 | graphics/asymptote/LspCpp/LibLsp/lsp/lsTextDocumentItem.h
-2022/01/06 | 674 | graphics/asymptote/GUI/res/icons/android-delete.svg
-2022/01/06 | 674 | graphics/asymptote/examples/sqrtx01.asy
-2022/01/06 | 673 | graphics/asymptote/GUI/res/icons/save.svg
-2022/01/06 | 6726 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example3.c
-2022/01/06 | 6725 | graphics/asymptote/guide.h
-2022/01/06 | 6717 | graphics/asymptote/GUI/xasyOptions.py
-2022/01/06 | 670 | graphics/asymptote/base/v3dtypes.asy
-2022/01/06 | 66 | graphics/asymptote/examples/shade.asy
-2022/01/06 | 669 | graphics/asymptote/drawpath.h
-2022/01/06 | 66838 | graphics/asymptote/base/webgl/asygl.js
-2022/01/06 | 667 | graphics/asymptote/LspCpp/LibLsp/lsp/lsTextDocumentPositionParams.h
-2022/01/06 | 667 | graphics/asymptote/examples/spring.asy
-2022/01/06 | 66751 | graphics/asymptote/prc/writePRC.cc
-2022/01/06 | 6650 | graphics/asymptote/getopt.h
-2022/01/06 | 663 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool.hpp
-2022/01/06 | 6634 | graphics/asymptote/simpson.cc
-2022/01/06 | 65 | graphics/asymptote/tests/gc/guide.asy
-2022/01/06 | 658 | graphics/asymptote/LspCpp/network/uri/detail/uri_advance_parts.hpp
-2022/01/06 | 6580 | graphics/asymptote/main.cc
-2022/01/06 | 657 | graphics/asymptote/examples/lowupint.asy
-2022/01/06 | 657 | graphics/asymptote/examples/100d.views
-2022/01/06 | 657 | graphics/asymptote/base/reload.js
-2022/01/06 | 6553 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/main.cc
-2022/01/06 | 6552 | graphics/asymptote/GUI/windows/labelTextEditor.ui
-2022/01/06 | 6551 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example2.c
-2022/01/06 | 6550 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/scheduling_policies.hpp
-2022/01/06 | 654 | graphics/asymptote/fpu.h
-2022/01/06 | 654 | graphics/asymptote/examples/limit.asy
-2022/01/06 | 6528 | graphics/asymptote/lspserv.h
-2022/01/06 | 6525 | graphics/asymptote/drawfill.h
-2022/01/06 | 650 | graphics/asymptote/prcfile.h
-2022/01/06 | 6503 | graphics/asymptote/tests/types/constructor.asy
-2022/01/06 | 64 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/issue-62-tinyexr_memcpy_heap-buffer-overflow
-2022/01/06 | 643 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/footer/common_footer.htm
-2022/01/06 | 64207 | graphics/asymptote/base/graph.asy
-2022/01/06 | 641 | graphics/asymptote/examples/pOrbital.asy
-2022/01/06 | 6414 | graphics/asymptote/mathop.h
-2022/01/06 | 639 | graphics/asymptote/tests/arith/transform.asy
-2022/01/06 | 639 | graphics/asymptote/GUI/res/icons/arrow-resize.svg
-2022/01/06 | 6386 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/threaded_queue.h
-2022/01/06 | 637 | graphics/asymptote/GUI/res/icons/android-arrow-forward.svg
-2022/01/06 | 637 | graphics/asymptote/GUI/res/icons/android-arrow-back.svg
-2022/01/06 | 6370 | graphics/asymptote/asymptote.nsi
-2022/01/06 | 6369 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/traits.h
-2022/01/06 | 6350 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/tutorial.txt
-2022/01/06 | 633 | graphics/asymptote/GUI/res/icons/android-done.svg
-2022/01/06 | 63314 | graphics/asymptote/GL/wglew.h
-2022/01/06 | 632 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/sct/SCTConfig.h
-2022/01/06 | 632 | graphics/asymptote/examples/label3zoom.asy
-2022/01/06 | 631 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/checkToStringStatus.h
-2022/01/06 | 631 | graphics/asymptote/locate.h
-2022/01/06 | 63193 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/screens/open_gtk3.png
-2022/01/06 | 6318 | graphics/asymptote/doc/leastsquares.dat
-2022/01/06 | 63136 | graphics/asymptote/doc/FAQ/asy-faq.info
-2022/01/06 | 630 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-24322747c47e87a10e4407528b779a1a763a48135384909b3d1010bbba1d4c28_min
-2022/01/06 | 6300550 | fonts/libertinust1math.zip
-2022/01/06 | 62 | graphics/asymptote/tests/gc/array.asy
-2022/01/06 | 62 | graphics/asymptote/revision.cc
-2022/01/06 | 628 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/message.h
-2022/01/06 | 628 | graphics/asymptote/examples/wedge.asy
-2022/01/06 | 628 | graphics/asymptote/examples/polarcircle.asy
-2022/01/06 | 6288 | graphics/asymptote/transform.h
-2022/01/06 | 6287 | graphics/asymptote/base/plain_prethree.asy
-2022/01/06 | 6278 | graphics/asymptote/base/plain_filldraw.asy
-2022/01/06 | 6275 | graphics/asymptote/generate_enums.py
-2022/01/06 | 626 | graphics/asymptote/examples/venn.asy
-2022/01/06 | 625 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/footer/overview_footer.htm
-2022/01/06 | 625 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/addOverridableMethods.h
-2022/01/06 | 6247 | graphics/asymptote/GUI/pyUIClass/labelTextEditor.py
-2022/01/06 | 62206 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/Glew/CustomGL/wglew.h
-2022/01/06 | 620 | graphics/asymptote/tests/arith/integer.asy
-2022/01/06 | 61 | graphics/asymptote/examples/axialshade.asy
-2022/01/06 | 61 | graphics/asymptote/cudareflect/tinyexr/test/issues/160/README.md
-2022/01/06 | 6189 | graphics/asymptote/camp.tab.h
-2022/01/06 | 617 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/generateConstructors.h
-2022/01/06 | 617 | graphics/asymptote/doc/logo.asy
-2022/01/06 | 616 | graphics/asymptote/examples/Gouraudcontour.asy
-2022/01/06 | 6168 | info/kaytannollista-latexia/README.md
-2022/01/06 | 615 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_common.h
-2022/01/06 | 6159 | graphics/asymptote/base/plain_strings.asy
-2022/01/06 | 612 | graphics/asymptote/cudareflect/tinyexr/experimental/js/README.md
-2022/01/06 | 612 | graphics/asymptote/cudareflect/tinyexr/examples/exr2rgbe/exr2rgbe.cc
-2022/01/06 | 611 | graphics/asymptote/GUI/xasy.py
-2022/01/06 | 6117 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_cocoa.m
-2022/01/06 | 610 | graphics/asymptote/examples/impact.asy
-2022/01/06 | 6104 | graphics/asymptote/doc/FAQ/m-lout.pl
-2022/01/06 | 609 | graphics/asymptote/keywords.cc
-2022/01/06 | 60939 | graphics/asymptote/runtime.cc
-2022/01/06 | 608 | graphics/asymptote/examples/spline.asy
-2022/01/06 | 608 | graphics/asymptote/base/size10.asy
-2022/01/06 | 604 | graphics/asymptote/doc/flow.asy
-2022/01/06 | 602 | graphics/asymptote/examples/treetest.asy
-2022/01/06 | 6021 | graphics/asymptote/prc/PRCTools/bitData.cc
-2022/01/06 | 600 | graphics/asymptote/base/size11.asy
-2022/01/06 | 60074 | graphics/asymptote/GUI/xasy2asy.py
-2022/01/06 | 59 | graphics/asymptote/examples/stroke3.asy
-2022/01/06 | 598 | graphics/asymptote/examples/integraltest.asy
-2022/01/06 | 5987 | graphics/asymptote/runfile.in
-2022/01/06 | 5975 | graphics/asymptote/base/three_tube.asy
-2022/01/06 | 59583 | graphics/asymptote/GUI/pyUIClass/window1.py
-2022/01/06 | 594 | graphics/asymptote/LspCpp/network/uri/detail/uri_normalize.hpp
-2022/01/06 | 593 | graphics/asymptote/GUI/res/icons/bucket.asy
-2022/01/06 | 591 | graphics/asymptote/examples/sinc.asy
-2022/01/06 | 58 | graphics/asymptote/examples/progrid.asy
-2022/01/06 | 589 | graphics/asymptote/examples/trefoilknot.asy
-2022/01/06 | 588 | graphics/asymptote/LspCpp/LibLsp/lsp/out_list.h
-2022/01/06 | 5883 | graphics/asymptote/Delaunay.cc
-2022/01/06 | 587 | graphics/asymptote/LspCpp/LibLsp/lsp/ExecuteCommandParams.h
-2022/01/06 | 5877 | graphics/asymptote/base/shaders/fragment.glsl
-2022/01/06 | 586 | graphics/asymptote/GUI/xasyStrings.py
-2022/01/06 | 582 | graphics/asymptote/examples/cos3.asy
-2022/01/06 | 5820 | graphics/asymptote/cudareflect/IrradianceGenerator.vcxproj
-2022/01/06 | 581 | graphics/asymptote/examples/BezierSaddle.asy
-2022/01/06 | 580 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/did_change_configuration.h
-2022/01/06 | 580 | graphics/asymptote/examples/xsin1x.asy
-2022/01/06 | 58047 | graphics/asymptote/glrender.cc
-2022/01/06 | 57 | graphics/asymptote/GUI/requirements.txt
-2022/01/06 | 579 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/findLinks.h
-2022/01/06 | 579 | graphics/asymptote/examples/sqrtx01y1.asy
-2022/01/06 | 579 | graphics/asymptote/examples/sin3.asy
-2022/01/06 | 579 | graphics/asymptote/examples/exp3.asy
-2022/01/06 | 57944 | graphics/asymptote/runpicture.cc
-2022/01/06 | 578 | graphics/asymptote/base/annotate.asy
-2022/01/06 | 5789 | graphics/asymptote/base/trembling.asy
-2022/01/06 | 576 | graphics/asymptote/examples/threeviews.asy
-2022/01/06 | 576 | graphics/asymptote/examples/circles.asy
-2022/01/06 | 5767 | graphics/asymptote/drawpath3.h
-2022/01/06 | 5735 | graphics/asymptote/base/plain_scaling.asy
-2022/01/06 | 5734 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/sct/protocol.h
-2022/01/06 | 5733 | graphics/asymptote/item.h
-2022/01/06 | 572 | graphics/asymptote/examples/curvedlabel3.asy
-2022/01/06 | 5712 | graphics/asymptote/bezierpatch.h
-2022/01/06 | 569 | graphics/asymptote/cudareflect/tinyexr/examples/cube2longlat/Makefile
-2022/01/06 | 5691 | graphics/asymptote/name.h
-2022/01/06 | 568 | graphics/asymptote/LspCpp/network/uri/config.hpp
-2022/01/06 | 566 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/highlight.h
-2022/01/06 | 565 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/generateAccessors.h
-2022/01/06 | 5627 | graphics/asymptote/doc/FAQ/m-info.pl
-2022/01/06 | 5621 | graphics/asymptote/errormsg.h
-2022/01/06 | 55991 | graphics/asymptote/base/smoothcontour3.asy
-2022/01/06 | 558 | graphics/asymptote/examples/floatingdisk.asy
-2022/01/06 | 5586 | graphics/asymptote/interact.cc
-2022/01/06 | 557 | graphics/asymptote/examples/Pythagoras.asy
-2022/01/06 | 5578 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_api.cpp
-2022/01/06 | 55726 | graphics/asymptote/LspCpp/third_party/utfcpp/README.md
-2022/01/06 | 5566 | graphics/asymptote/drawpath3.cc
-2022/01/06 | 5543 | graphics/asymptote/examples/filesurface.dat
-2022/01/06 | 5537 | graphics/asymptote/examples/cpkcolors.asy
-2022/01/06 | 552 | graphics/asymptote/LspCpp/network/uri/detail/uri_parse.hpp
-2022/01/06 | 5520 | fonts/libertinust1math/tfm/libertinust1-mathsfrm.tfm
-2022/01/06 | 54 | graphics/asymptote/tests/gc/funcall.asy
-2022/01/06 | 548 | graphics/asymptote/v3dtypes.h
-2022/01/06 | 548 | graphics/asymptote/examples/equilchord.asy
-2022/01/06 | 548 | graphics/asymptote/cudareflect/Makefile
-2022/01/06 | 547 | graphics/asymptote/examples/tetra.asy
-2022/01/06 | 5441 | graphics/asymptote/env.cc
-2022/01/06 | 54141 | graphics/asymptote/settings.cc
-2022/01/06 | 54109 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/optional.hpp
-2022/01/06 | 535 | graphics/asymptote/cudareflect/tinyexr/Makefile.llvm-mingw
-2022/01/06 | 533 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/test/test_savedialog.c
-2022/01/06 | 5328 | graphics/asymptote/LspCpp/LibLsp/lsp/working_files.cpp
-2022/01/06 | 5323 | graphics/asymptote/cudareflect/tinyexr/examples/exr2fptiff/exr2fptiff.cc
-2022/01/06 | 5322 | macros/pdftex/mptopdf/tex/generic/context/mptopdf/mptopdf.tex
-2022/01/06 | 530 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/test/test_opendialog.c
-2022/01/06 | 5308 | graphics/asymptote/pair.h
-2022/01/06 | 52 | graphics/asymptote/doc/square.asy
-2022/01/06 | 5279 | graphics/asymptote/base/bsp.asy
-2022/01/06 | 52750 | graphics/asymptote/cudareflect/tinyexr/test/unit/tester.cc
-2022/01/06 | 5272 | graphics/asymptote/GUI/labelEditor.py
-2022/01/06 | 5265 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/tutorial/tutorial.cpp
-2022/01/06 | 5262 | graphics/asymptote/patches/bison.patch
-2022/01/06 | 525 | graphics/asymptote/examples/vectorfield3.asy
-2022/01/06 | 5250 | graphics/asymptote/pipestream.cc
-2022/01/06 | 524 | graphics/asymptote/doc/brokenaxis.asy
-2022/01/06 | 5238 | graphics/asymptote/base/animation.asy
-2022/01/06 | 5221 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/overview.dox
-2022/01/06 | 521 | graphics/asymptote/doc/Hobbycontrol.asy
-2022/01/06 | 521 | graphics/asymptote/base/shaders/presum.glsl
-2022/01/06 | 5216 | graphics/asymptote/examples/mosaic.asy
-2022/01/06 | 520 | graphics/asymptote/examples/smoothelevation.asy
-2022/01/06 | 5203 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/tutorial.dox
-2022/01/06 | 5202 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/examples.dox
-2022/01/06 | 519 | graphics/asymptote/examples/extrudedcontour.asy
-2022/01/06 | 5196 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/design.dox
-2022/01/06 | 518 | graphics/asymptote/doc/CDlabel.asy
-2022/01/06 | 5183 | graphics/asymptote/stm.h
-2022/01/06 | 51671 | graphics/asymptote/prc/oPRCFile.h
-2022/01/06 | 514 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/generateToString.h
-2022/01/06 | 513 | graphics/asymptote/examples/buildcycle.asy
-2022/01/06 | 5111 | graphics/asymptote/runsystem.in
-2022/01/06 | 50 | graphics/asymptote/cudareflect/tinyexr/test/unit/win32-filelist-utf16le.inc
-2022/01/06 | 50 | graphics/asymptote/base/babel.asy
-2022/01/06 | 509 | graphics/asymptote/examples/dimension.asy
-2022/01/06 | 509 | graphics/asymptote/cudareflect/tinyexr/Makefile
-2022/01/06 | 5095 | graphics/asymptote/memory.h
-2022/01/06 | 5093 | fonts/libertinust1math/README
-2022/01/06 | 506 | graphics/asymptote/examples/delu.asy
-2022/01/06 | 5064 | graphics/asymptote/runhistory.in
-2022/01/06 | 504 | graphics/asymptote/absyn.cc
-2022/01/06 | 50437 | graphics/asymptote/gsl.cc
-2022/01/06 | 503 | graphics/asymptote/examples/animations/embeddedmovie.asy
-2022/01/06 | 503 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/issue-63-tinyexr_signed-integer-overflow
-2022/01/06 | 500 | graphics/asymptote/examples/floor.asy
-2022/01/06 | 500 | graphics/asymptote/doc/Hobbydir.asy
-2022/01/06 | 49 | graphics/asymptote/doc/quartercircle.asy
-2022/01/06 | 49 | graphics/asymptote/doc/dots.asy
-2022/01/06 | 49 | graphics/asymptote/doc/colons.asy
-2022/01/06 | 499 | graphics/asymptote/examples/galleon.asy
-2022/01/06 | 4996 | graphics/asymptote/base/rational.asy
-2022/01/06 | 4992 | graphics/asymptote/base/tube.asy
-2022/01/06 | 498 | graphics/asymptote/examples/fano.asy
-2022/01/06 | 498 | graphics/asymptote/doc/penfunctionimage.asy
-2022/01/06 | 4973 | graphics/asymptote/LspCpp/example/StdIOClientExample.cpp
-2022/01/06 | 496 | graphics/asymptote/examples/bars3.asy
-2022/01/06 | 496 | graphics/asymptote/base/shaders/postsum.glsl
-2022/01/06 | 495 | graphics/asymptote/examples/cones.asy
-2022/01/06 | 495 | graphics/asymptote/cudareflect/tinyexr/experimental/js/test.js
-2022/01/06 | 494 | graphics/asymptote/drawgrestore.h
-2022/01/06 | 494 | graphics/asymptote/cudareflect/tinyexr/experimental/js/compile_to_js.sh
-2022/01/06 | 4942 | graphics/asymptote/GUI/pyUIClass/widg_editBezier.py
-2022/01/06 | 4919 | graphics/asymptote/process.h
-2022/01/06 | 490 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/type_definition.h
-2022/01/06 | 489 | graphics/asymptote/patches/gc-7.0nomem.patch
-2022/01/06 | 489 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/resolveCompletionItem.h
-2022/01/06 | 4899 | graphics/asymptote/LspCpp/LibLsp/lsp/utils.h
-2022/01/06 | 4895 | graphics/asymptote/fundec.h
-2022/01/06 | 488 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/implementation.h
-2022/01/06 | 48847 | graphics/asymptote/doc/secondaryaxis.csv
-2022/01/06 | 487 | graphics/asymptote/LspCpp/LibLsp/lsp/general/shutdown.h
-2022/01/06 | 4873 | graphics/asymptote/parser.cc
-2022/01/06 | 4866 | graphics/asymptote/fileio.cc
-2022/01/06 | 4862 | graphics/asymptote/drawpath.cc
-2022/01/06 | 485 | graphics/asymptote/examples/cards.asy
-2022/01/06 | 48481 | graphics/asymptote/prc/writePRC.h
-2022/01/06 | 48441 | graphics/asymptote/config.guess
-2022/01/06 | 4841 | graphics/asymptote/tests/array/slice.asy
-2022/01/06 | 48417 | graphics/asymptote/runarray.in
-2022/01/06 | 4837 | graphics/asymptote/LspCpp/example/TcpServerExample.cpp
-2022/01/06 | 482 | graphics/asymptote/LspCpp/LibLsp/lsp/general/initialized.h
-2022/01/06 | 4818 | graphics/asymptote/v3dfile.h
-2022/01/06 | 4811 | graphics/asymptote/base/x11colors.asy
-2022/01/06 | 480 | graphics/asymptote/doc/logimage.asy
-2022/01/06 | 4809 | graphics/asymptote/examples/interpolate1.asy
-2022/01/06 | 479 | graphics/asymptote/examples/magnetic.asy
-2022/01/06 | 4792 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/serializer.cpp
-2022/01/06 | 476 | graphics/asymptote/GUI/configs/xasykeymap.cson
-2022/01/06 | 4761 | graphics/asymptote/GUI/pyUIClass/widgetPointEditor.py
-2022/01/06 | 4738 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-360c3b0555cb979ca108f2d178cf8a80959cfeabaa4ec1d310d062fa653a8c6b_min
-2022/01/06 | 473766 | graphics/asymptote/doc/png/asymptote.info
-2022/01/06 | 473703 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-1383755b301e5f505b2198dc0508918b537fdf48bbfc6deeffe268822e6f6cd6
-2022/01/06 | 473695 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-e7fa6404daa861369d2172fe68e08f9d38c0989f57da7bcfb510bab67e19ca9f
-2022/01/06 | 4735 | graphics/asymptote/array.cc
-2022/01/06 | 4731 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/flaga.exr
-2022/01/06 | 472 | graphics/asymptote/examples/colorplanes.asy
-2022/01/06 | 4727 | graphics/asymptote/doc/westnile.csv
-2022/01/06 | 4718 | graphics/asymptote/doc/FAQ/m-ascii.pl
-2022/01/06 | 4716 | graphics/asymptote/prc/PRCTools/makePRC.cc
-2022/01/06 | 4688 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/sonarlint/protocol.h
-2022/01/06 | 46531 | graphics/asymptote/base/plain_picture.asy
-2022/01/06 | 464 | graphics/asymptote/drawgsave.h
-2022/01/06 | 464 | graphics/asymptote/doc/GaussianSurface.asy
-2022/01/06 | 4635 | graphics/asymptote/cudareflect/tinyexr/examples/exrfilter/exrfilter.cc
-2022/01/06 | 4629 | graphics/asymptote/castop.h
-2022/01/06 | 4626 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_api.cpp
-2022/01/06 | 460 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Cancellation.h
-2022/01/06 | 460 | graphics/asymptote/examples/lever.asy
-2022/01/06 | 460 | graphics/asymptote/examples/cosaddition.asy
-2022/01/06 | 4608 | macros/pdftex/mptopdf/scripts/context/stubs/mswin/mptopdf.exe
-2022/01/06 | 4602 | graphics/asymptote/util.h
-2022/01/06 | 4602 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/README.md
-2022/01/06 | 459 | graphics/asymptote/examples/hierarchy.asy
-2022/01/06 | 4597 | graphics/asymptote/drawfill.cc
-2022/01/06 | 458 | graphics/asymptote/doc/multicontour.asy
-2022/01/06 | 4580 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/MessageIssue.h
-2022/01/06 | 4578 | graphics/asymptote/LspCpp/LibLsp/lsp/IProgressMonitor.h
-2022/01/06 | 4578 | graphics/asymptote/doc/FAQ/m-post.pl
-2022/01/06 | 4570 | graphics/asymptote/env.h
-2022/01/06 | 4557 | macros/pdftex/mptopdf/scripts/context/perl/mptopdf.pl
-2022/01/06 | 454 | graphics/asymptote/EXRFiles.h
-2022/01/06 | 45411 | graphics/asymptote/fftw++.h
-2022/01/06 | 4531 | graphics/asymptote/webgl/fragment.glsl
-2022/01/06 | 4520 | graphics/asymptote/getopt1.c
-2022/01/06 | 4514 | graphics/asymptote/bbox.h
-2022/01/06 | 450 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/threaded_queue.cpp
-2022/01/06 | 449 | graphics/asymptote/tests/arith/pair.asy
-2022/01/06 | 4487 | graphics/asymptote/base/plain_shipout.asy
-2022/01/06 | 4474 | graphics/asymptote/GUI/windows/widg_editBezier.ui
-2022/01/06 | 4471 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-3f1f642c3356fd8e8d2a0787613ec09a56572b3a1e38c9629b6db9e8dead1117_min
-2022/01/06 | 4465 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/example/mergesort/mergesort.cpp
-2022/01/06 | 4465 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/detail/future.hpp
-2022/01/06 | 445 | graphics/asymptote/examples/sacone.asy
-2022/01/06 | 445 | graphics/asymptote/cudareflect/kernel.h
-2022/01/06 | 443 | graphics/asymptote/cudareflect/ReflectanceMapper.cuh
-2022/01/06 | 442 | graphics/asymptote/doc/join3.asy
-2022/01/06 | 441 | graphics/asymptote/examples/triangles.asy
-2022/01/06 | 441 | graphics/asymptote/doc/histogram.asy
-2022/01/06 | 43 | graphics/asymptote/examples/spring2.asy
-2022/01/06 | 439 | graphics/asymptote/examples/gamma.asy
-2022/01/06 | 4395 | graphics/asymptote/LspCpp/network/uri/detail/encode.hpp
-2022/01/06 | 4384 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/Win32OpenGLWindow.cpp
-2022/01/06 | 437 | graphics/asymptote/cudareflect/tinyexr/Makefile.gcc-mingw
-2022/01/06 | 4371 | graphics/asymptote/cudareflect/kernel.cu
-2022/01/06 | 436 | graphics/asymptote/examples/colorpatch.asy
-2022/01/06 | 4366 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/StreamMessageProducer.cpp
-2022/01/06 | 4348 | graphics/asymptote/doc/colo-asy.tex
-2022/01/06 | 4345 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/task_adaptors.hpp
-2022/01/06 | 4335 | graphics/asymptote/prc/PRCTools/describePRC.h
-2022/01/06 | 43335 | graphics/asymptote/examples/100d.pdb1
-2022/01/06 | 430 | graphics/asymptote/examples/unitoctant.asy
-2022/01/06 | 42 | graphics/asymptote/base/animate.asy
-2022/01/06 | 428 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/symbol.h
-2022/01/06 | 4286 | graphics/asymptote/asy.ico
-2022/01/06 | 4285 | graphics/asymptote/newexp.cc
-2022/01/06 | 42831 | macros/pdftex/mptopdf/tex/context/base/mkii/supp-mpe.mkii
-2022/01/06 | 427 | graphics/asymptote/examples/projectrevolution.asy
-2022/01/06 | 426 | graphics/asymptote/examples/pathintersectsurface.asy
-2022/01/06 | 426 | graphics/asymptote/doc/grid3xyz.asy
-2022/01/06 | 4265 | graphics/asymptote/LspCpp/LibLsp/lsp/symbol.h
-2022/01/06 | 4254 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/readme.md
-2022/01/06 | 424 | graphics/asymptote/LspCpp/LibLsp/lsp/lsTextDocumentIdentifier.h
-2022/01/06 | 424 | graphics/asymptote/examples/spiral3.asy
-2022/01/06 | 42481 | graphics/asymptote/picture.cc
-2022/01/06 | 4244 | graphics/asymptote/examples/fin.asy
-2022/01/06 | 4242 | graphics/asymptote/tests/types/keyword.asy
-2022/01/06 | 423 | graphics/asymptote/doc/log2graph.asy
-2022/01/06 | 423 | graphics/asymptote/doc/helix.asy
-2022/01/06 | 422 | graphics/asymptote/v3dtypes.csv
-2022/01/06 | 420 | graphics/asymptote/examples/PythagoreanTree.asy
-2022/01/06 | 4209 | graphics/asymptote/flatguide.h
-2022/01/06 | 41 | graphics/asymptote/doc/bigdiagonal.asy
-2022/01/06 | 41 | graphics/asymptote/cudareflect/tinyexr/jni/Application.mk
-2022/01/06 | 419 | graphics/asymptote/examples/torus.asy
-2022/01/06 | 4199 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/typeHierarchy.h
-2022/01/06 | 418 | graphics/asymptote/examples/planeproject.asy
-2022/01/06 | 417 | graphics/asymptote/doc/knots.asy
-2022/01/06 | 4172 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example6.c
-2022/01/06 | 416 | graphics/asymptote/doc/bezier2.asy
-2022/01/06 | 4166 | graphics/asymptote/GUI/windows/widgetPointEditor.ui
-2022/01/06 | 415 | graphics/asymptote/doc/linetype.asy
-2022/01/06 | 4158 | graphics/asymptote/examples/advection.asy
-2022/01/06 | 4156 | graphics/asymptote/runpair.in
-2022/01/06 | 414 | graphics/asymptote/examples/animations/glmovie.asy
-2022/01/06 | 411 | graphics/asymptote/examples/animations/externalmovie.asy
-2022/01/06 | 4118 | graphics/asymptote/LspCpp/LibLsp/lsp/lru_cache.h
-2022/01/06 | 4116 | graphics/asymptote/cudareflect/tinyexr/test/exrwrite/exrwritetest.cpp
-2022/01/06 | 410 | graphics/asymptote/examples/Sierpinski.asy
-2022/01/06 | 40899 | graphics/asymptote/doc/FAQ/asy-faq.bfnn
-2022/01/06 | 4088 | graphics/asymptote/base/plain_boxes.asy
-2022/01/06 | 4084 | graphics/asymptote/GUI/xasyFile.py
-2022/01/06 | 4083 | graphics/asymptote/LspCpp/network/uri/uri_builder.cpp
-2022/01/06 | 407 | graphics/asymptote/examples/parametricsurface.asy
-2022/01/06 | 407 | graphics/asymptote/examples/BezierPatch.asy
-2022/01/06 | 407 | graphics/asymptote/cudareflect/tinyexr/Makefile.gcc-mingw-msys
-2022/01/06 | 4072 | graphics/asymptote/tests/types/order.asy
-2022/01/06 | 4067 | graphics/asymptote/doc/diatom.csv
-2022/01/06 | 40665 | graphics/asymptote/examples/tvgen.asy
-2022/01/06 | 401 | graphics/asymptote/doc/image.asy
-2022/01/06 | 401 | graphics/asymptote/cudareflect/tinyexr/test/unit/README.md
-2022/01/06 | 400 | graphics/asymptote/examples/sacylinder.asy
-2022/01/06 | 400 | graphics/asymptote/cudareflect/tinyexr/test/unit/Makefile
-2022/01/06 | 39 | graphics/asymptote/base/nopapersize.ps
-2022/01/06 | 398 | graphics/asymptote/examples/epix.asy
-2022/01/06 | 39804 | graphics/asymptote/LspCpp/LspCpp.vcxproj
-2022/01/06 | 396 | graphics/asymptote/doc/triangulate.asy
-2022/01/06 | 396 | graphics/asymptote/doc/legend.asy
-2022/01/06 | 395 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/2by2.exr
-2022/01/06 | 39458 | graphics/asymptote/cudareflect/tinyexr/examples/common/cxxopts.hpp
-2022/01/06 | 394404 | graphics/asymptote/doc/asymptote.texi
-2022/01/06 | 3940 | fonts/libertinust1math/enc/libusMR.enc
-2022/01/06 | 393 | graphics/asymptote/GUI/setup.py
-2022/01/06 | 3936 | graphics/asymptote/base/interpolate.asy
-2022/01/06 | 3928 | fonts/libertinust1math/enc/libussfMR.enc
-2022/01/06 | 3917 | graphics/asymptote/LspCpp/LibLsp/lsp/Markup/Markup.h
-2022/01/06 | 3912 | graphics/asymptote/tr.h
-2022/01/06 | 390 | graphics/asymptote/doc/tile.asy
-2022/01/06 | 38 | graphics/asymptote/examples/spring0.asy
-2022/01/06 | 388 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/common.h
-2022/01/06 | 387688 | systems/texlive/tlnet/archive/biblatex-publist.doc.r61500.tar.xz
-2022/01/06 | 3857 | graphics/asymptote/examples/pipes.asy
-2022/01/06 | 384 | graphics/asymptote/examples/RiemannSurfaceRoot.asy
-2022/01/06 | 384 | graphics/asymptote/Delaunay.h
-2022/01/06 | 383 | graphics/asymptote/tests/arith/real.asy
-2022/01/06 | 383 | graphics/asymptote/examples/Gouraud.asy
-2022/01/06 | 383748 | systems/texlive/tlnet/archive/codebox.doc.r61502.tar.xz
-2022/01/06 | 3834 | graphics/asymptote/LspCpp/LibLsp/lsp/lsp_diagnostic.h
-2022/01/06 | 382 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/buildWorkspace.h
-2022/01/06 | 382 | graphics/asymptote/doc/loggrid.asy
-2022/01/06 | 37991 | graphics/asymptote/path3.cc
-2022/01/06 | 3790199 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/deepview_screencast.gif
-2022/01/06 | 378 | graphics/asymptote/examples/sinxlex.asy
-2022/01/06 | 378 | graphics/asymptote/doc/icon.asy
-2022/01/06 | 37783 | graphics/asymptote/exp.cc
-2022/01/06 | 376 | graphics/asymptote/examples/sphericalharmonic.asy
-2022/01/06 | 376 | graphics/asymptote/doc/generalaxis3.asy
-2022/01/06 | 376913 | graphics/asymptote/cudareflect/tinyexr/test/unit/catch.hpp
-2022/01/06 | 37685 | graphics/asymptote/cudareflect/tinyexr/examples/common/stb_image_write.h
-2022/01/06 | 3765 | graphics/asymptote/prc/PRCdouble.h
-2022/01/06 | 374 | graphics/asymptote/doc/monthaxis.asy
-2022/01/06 | 373 | graphics/asymptote/examples/projectelevation.asy
-2022/01/06 | 373 | graphics/asymptote/doc/lineargraph.asy
-2022/01/06 | 3739 | graphics/asymptote/examples/xstitch.asy
-2022/01/06 | 3737 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/FindSanitizers.cmake
-2022/01/06 | 3731 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/callHierarchy.h
-2022/01/06 | 3723 | graphics/asymptote/LspCpp/third_party/threadpool/CHANGE_LOG
-2022/01/06 | 3719 | graphics/asymptote/base/three_light.asy
-2022/01/06 | 37135 | graphics/asymptote/cudareflect/tinyexr/examples/exr2fptiff/tiny_dng_writer.h
-2022/01/06 | 3706 | graphics/asymptote/base/plain_constants.asy
-2022/01/06 | 369 | graphics/asymptote/tests/gs/ghostscript.asy
-2022/01/06 | 3676 | graphics/asymptote/constructor.cc
-2022/01/06 | 366 | graphics/asymptote/doc/lineargraph0.asy
-2022/01/06 | 366 | graphics/asymptote/cudareflect/tinyexr.cc
-2022/01/06 | 3669 | graphics/asymptote/LspCpp/example/StdIOServerExample.cpp
-2022/01/06 | 36526 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/X11OpenGLWindow.cpp
-2022/01/06 | 3640 | graphics/asymptote/bbox3.h
-2022/01/06 | 362 | graphics/asymptote/examples/pipeintersection.asy
-2022/01/06 | 3628 | systems/texlive/tlnet/archive/codebox.r61502.tar.xz
-2022/01/06 | 36243 | graphics/asymptote/prc/test.cc
-2022/01/06 | 361 | graphics/asymptote/GUI/res/icons/anchor.svg
-2022/01/06 | 361 | graphics/asymptote/examples/phase.asy
-2022/01/06 | 3616 | graphics/asymptote/GUI/UndoRedoStack.py
-2022/01/06 | 360 | graphics/asymptote/examples/washer.asy
-2022/01/06 | 3608 | graphics/asymptote/GLTextures.h
-2022/01/06 | 3601 | graphics/asymptote/cudareflect/tinyexr/test/exrcat/exrcat.cpp
-2022/01/06 | 35 | graphics/asymptote/base/fontsize.asy
-2022/01/06 | 3592 | graphics/asymptote/GUI/CustMatTransform.py
-2022/01/06 | 357 | graphics/asymptote/doc/irregularcontour.asy
-2022/01/06 | 355 | graphics/asymptote/doc/scaledgraph.asy
-2022/01/06 | 3556 | graphics/asymptote/build-scripts/build-asymptote.dos
-2022/01/06 | 354 | graphics/asymptote/doc/reloadpdf.tex
-2022/01/06 | 354 | graphics/asymptote/doc/planes.asy
-2022/01/06 | 354 | graphics/asymptote/base/pstoedit.asy
-2022/01/06 | 352 | graphics/asymptote/examples/cylinder.asy
-2022/01/06 | 351 | graphics/asymptote/tinyexr.cc
-2022/01/06 | 351 | graphics/asymptote/examples/vectorfieldsphere.asy
-2022/01/06 | 35147 | graphics/asymptote/LICENSE
-2022/01/06 | 34 | graphics/asymptote/examples/teapotIBL.asy
-2022/01/06 | 34 | graphics/asymptote/autogen.sh
-2022/01/06 | 349 | graphics/asymptote/examples/logdown.asy
-2022/01/06 | 348 | graphics/asymptote/LspCpp/LibLsp/lsp/ParentProcessWatcher.h
-2022/01/06 | 348 | graphics/asymptote/examples/RiemannSurface.asy
-2022/01/06 | 3472 | graphics/asymptote/picture.h
-2022/01/06 | 345 | graphics/asymptote/examples/rainbow.asy
-2022/01/06 | 3441 | graphics/asymptote/rounding.h
-2022/01/06 | 343 | graphics/asymptote/doc/externalprc.tex
-2022/01/06 | 34316 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/MacOpenGLWindow.mm
-2022/01/06 | 342 | graphics/asymptote/lexical.h
-2022/01/06 | 342576 | systems/texlive/tlnet/archive/cellspace.doc.r61501.tar.xz
-2022/01/06 | 341 | graphics/asymptote/examples/slidedemo_.bbl
-2022/01/06 | 341 | graphics/asymptote/examples/sacylinder3D.asy
-2022/01/06 | 341 | graphics/asymptote/doc/subpictures.asy
-2022/01/06 | 3418 | graphics/asymptote/LspCpp/LibLsp/lsp/general/InitializeParams.h
-2022/01/06 | 339 | graphics/asymptote/cudareflect/tinyexr/test/CMakeLists.txt
-2022/01/06 | 3391 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/signature_help.h
-2022/01/06 | 3375 | graphics/asymptote/tests/types/guide.asy
-2022/01/06 | 3374 | graphics/asymptote/base/roundedpath.asy
-2022/01/06 | 33677 | graphics/asymptote/LspCpp/LibLsp/lsp/Markup/Markup.cpp
-2022/01/06 | 335 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/tiled_half_1x1_alpha.exr
-2022/01/06 | 3358 | graphics/asymptote/examples/slidedemo.asy
-2022/01/06 | 33417 | graphics/asymptote/path.cc
-2022/01/06 | 333 | graphics/asymptote/doc/asy.1.end
-2022/01/06 | 3335 | graphics/asymptote/examples/pdb.asy
-2022/01/06 | 3306 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp11.h
-2022/01/06 | 32 | graphics/asymptote/LspCpp/third_party/threadpool/Jamrules
-2022/01/06 | 3298 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/cpp17.h
-2022/01/06 | 3297 | graphics/asymptote/access.cc
-2022/01/06 | 3295 | graphics/asymptote/stack.h
-2022/01/06 | 3294 | graphics/asymptote/LspCpp/LibLsp/lsp/lsAny.h
-2022/01/06 | 3284 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/trackball.h
-2022/01/06 | 327 | graphics/asymptote/examples/sin1x.asy
-2022/01/06 | 327 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/piz-bug-issue-100.exr
-2022/01/06 | 3278 | graphics/asymptote/base/obj.asy
-2022/01/06 | 326 | graphics/asymptote/examples/polardatagraph.asy
-2022/01/06 | 326 | graphics/asymptote/examples/animations/pdfmovie.asy
-2022/01/06 | 3267 | graphics/asymptote/GUI/Widg_addLabel.py
-2022/01/06 | 3265 | graphics/asymptote/program.cc
-2022/01/06 | 325 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/listOverridableMethods.h
-2022/01/06 | 325 | graphics/asymptote/examples/elevation.asy
-2022/01/06 | 324 | graphics/asymptote/doc/HermiteSpline.asy
-2022/01/06 | 323 | graphics/asymptote/cudareflect/tinyexr/examples/nornalmap/README.md
-2022/01/06 | 3234 | graphics/asymptote/shaders.cc
-2022/01/06 | 322 | graphics/asymptote/examples/unitcircle.asy
-2022/01/06 | 322 | graphics/asymptote/examples/cheese.asy
-2022/01/06 | 321 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/quickstart/README
-2022/01/06 | 320 | graphics/asymptote/runtriple.h
-2022/01/06 | 320 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/Move.h
-2022/01/06 | 320405 | graphics/asymptote/base/geometry.asy
-2022/01/06 | 31 | graphics/asymptote/cudareflect/tinyexr/test/unit/win32-filelist-utf8.inc
-2022/01/06 | 319 | graphics/asymptote/LspCpp/third_party/threadpool/Jamfile.v2
-2022/01/06 | 319839 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/miniz.c
-2022/01/06 | 318 | graphics/asymptote/patches/gcc3.3.2curses.patch
-2022/01/06 | 317 | graphics/asymptote/cudareflect/tinyexr/vcbuild.bat
-2022/01/06 | 316736 | info/kaytannollista-latexia/luku-rakenne.tex
-2022/01/06 | 31609 | graphics/asymptote/config.sub
-2022/01/06 | 315 | graphics/asymptote/examples/hyperboloid.asy
-2022/01/06 | 3153 | graphics/asymptote/genv.cc
-2022/01/06 | 314 | graphics/asymptote/doc/logticks.asy
-2022/01/06 | 314 | graphics/asymptote/base/graph_settings.asy
-2022/01/06 | 3135 | graphics/asymptote/cudareflect/tinyexr/examples/exr2ldr/exr2ldr.cc
-2022/01/06 | 31342 | graphics/asymptote/builtin.cc
-2022/01/06 | 312 | graphics/asymptote/examples/textpath.asy
-2022/01/06 | 3125 | graphics/asymptote/doc/latexusage.tex
-2022/01/06 | 3109 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example1.c
-2022/01/06 | 309 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/projectConfigurationUpdate.h
-2022/01/06 | 308 | graphics/asymptote/tests/types/shadow.asy
-2022/01/06 | 308 | graphics/asymptote/tests/Makefile
-2022/01/06 | 308 | graphics/asymptote/examples/oneoverx.asy
-2022/01/06 | 3072 | graphics/asymptote/LspCpp/network/uri/detail/grammar.hpp
-2022/01/06 | 306 | graphics/asymptote/doc/binarytreetest.asy
-2022/01/06 | 3065 | graphics/asymptote/jsfile.h
-2022/01/06 | 30640 | graphics/asymptote/LspCpp/macro_map.h
-2022/01/06 | 3052 | graphics/asymptote/LspCpp/network/uri/detail/uri_parse_authority.cpp
-2022/01/06 | 3040 | graphics/asymptote/asymptote.spec
-2022/01/06 | 303 | graphics/asymptote/examples/tensor.asy
-2022/01/06 | 3036 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_cpp11.cpp
-2022/01/06 | 30307 | graphics/asymptote/exp.h
-2022/01/06 | 3024 | graphics/asymptote/drawimage.h
-2022/01/06 | 3023 | graphics/asymptote/doc/Makefile.in
-2022/01/06 | 30208 | graphics/asymptote/prc/PRC.h
-2022/01/06 | 301 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/organizeImports.h
-2022/01/06 | 30147 | graphics/asymptote/getopt.c
-2022/01/06 | 300 | graphics/asymptote/examples/strokepath.asy
-2022/01/06 | 3004 | graphics/asymptote/LspCpp/LibLsp/lsp/lsResponseError.h
-2022/01/06 | 299 | graphics/asymptote/runpair.h
-2022/01/06 | 298 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-5ace655ef080932dcc7e4abc9eab1d4f82c845453464993dfa3eb6c5822a1621
-2022/01/06 | 297 | graphics/asymptote/build-scripts/README-binaries
-2022/01/06 | 2979 | graphics/asymptote/doc/diatom.asy
-2022/01/06 | 2974 | graphics/asymptote/LspCpp/LibLsp/lsp/language/language.h
-2022/01/06 | 2968 | graphics/asymptote/material.h
-2022/01/06 | 2964 | graphics/asymptote/access.h
-2022/01/06 | 2960 | graphics/asymptote/GUI/pyUIClass/widg_addPolyOpt.py
-2022/01/06 | 294 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/classFileContents.h
-2022/01/06 | 294 | graphics/asymptote/guideflags.h
-2022/01/06 | 2941 | graphics/asymptote/GUI/windows/widg_addPolyOpt.ui
-2022/01/06 | 293 | graphics/asymptote/doc/makepen.asy
-2022/01/06 | 2939 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/CommonWindowInterface.h
-2022/01/06 | 2930 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/stream.h
-2022/01/06 | 292068 | graphics/asymptote/configure
-2022/01/06 | 291 | graphics/asymptote/examples/trumpet.asy
-2022/01/06 | 2918 | graphics/asymptote/GUI/pyUIClass/setCustomAnchor.py
-2022/01/06 | 28 | graphics/asymptote/cudareflect/tinyexr/test/issues/160/requirements.txt
-2022/01/06 | 289 | graphics/asymptote/examples/jump.asy
-2022/01/06 | 289 | graphics/asymptote/cudareflect/tinyexr/examples/testmapgen/README.md
-2022/01/06 | 289 | graphics/asymptote/base/res/notes.txt
-2022/01/06 | 288 | graphics/asymptote/examples/sacone3D.asy
-2022/01/06 | 288 | graphics/asymptote/doc/mexicanhat.asy
-2022/01/06 | 2888 | fonts/libertinust1math/tfm/libertinust1-mathit.tfm
-2022/01/06 | 2880 | graphics/asymptote/LspCpp/LibLsp/lsp/ParentProcessWatcher.cpp
-2022/01/06 | 2880 | graphics/asymptote/drawgroup.h
-2022/01/06 | 2860 | fonts/libertinust1math/tfm/libertinust1-mathit-bold.tfm
-2022/01/06 | 284 | graphics/asymptote/GUI/res/icons/text.svg
-2022/01/06 | 2845 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/json.h
-2022/01/06 | 283 | graphics/asymptote/cudareflect/tinyexr/test/c-binding/test.c
-2022/01/06 | 28337 | graphics/asymptote/symbolmaps.h
-2022/01/06 | 2830 | graphics/asymptote/examples/alignedaxis.asy
-2022/01/06 | 2827 | graphics/asymptote/LspCpp/network/uri/detail/uri_resolve.cpp
-2022/01/06 | 2817 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/detail/worker_thread.hpp
-2022/01/06 | 2808 | macros/latex/contrib/pascaltriangle/README.md
-2022/01/06 | 2800 | graphics/asymptote/doc/asycolors.sty
-2022/01/06 | 27 | info/kaytannollista-latexia/versio.tex
-2022/01/06 | 279 | graphics/asymptote/LspCpp/third_party/threadpool/README
-2022/01/06 | 279 | graphics/asymptote/doc/hatch.asy
-2022/01/06 | 27958 | graphics/asymptote/pen.h
-2022/01/06 | 277 | graphics/asymptote/doc/generalaxis.asy
-2022/01/06 | 2772 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_common.c
-2022/01/06 | 2771 | graphics/asymptote/doc/pixel.pdf
-2022/01/06 | 276 | graphics/asymptote/tests/bench/6000circles.asy
-2022/01/06 | 2766 | graphics/asymptote/lnkX64IconFix.nsh
-2022/01/06 | 27528 | graphics/asymptote/LspCpp/LibLsp/lsp/Markup/string_ref.h
-2022/01/06 | 2749 | graphics/asymptote/symbol.h
-2022/01/06 | 27478 | support/TeX4ht/source/Makefile
-2022/01/06 | 2741 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/findOpenGLGlewGlut.lua
-2022/01/06 | 2732 | graphics/asymptote/record.h
-2022/01/06 | 2731 | graphics/asymptote/tests/types/resolve.asy
-2022/01/06 | 271 | graphics/asymptote/patches/gc6.8_AIX.patch
-2022/01/06 | 2707 | graphics/asymptote/settings.h
-2022/01/06 | 2707 | graphics/asymptote/runtriple.in
-2022/01/06 | 270497 | graphics/asymptote/cudareflect/tinyexr/tinyexr.h
-2022/01/06 | 26 | graphics/asymptote/doc/filegraph.dat
-2022/01/06 | 26 | graphics/asymptote/_config.yml
-2022/01/06 | 269 | graphics/asymptote/runmath.h
-2022/01/06 | 2697 | graphics/asymptote/table.h
-2022/01/06 | 268 | graphics/asymptote/base/asy-init.el
-2022/01/06 | 26844 | graphics/asymptote/runpath.cc
-2022/01/06 | 2680 | graphics/asymptote/examples/soccerball.asy
-2022/01/06 | 267 | macros/latex/contrib/pascaltriangle/build.sh
-2022/01/06 | 267 | graphics/asymptote/examples/hyperboloidsilhouette.asy
-2022/01/06 | 2675 | graphics/asymptote/LspCpp/LibLsp/lsp/ResourceOperation.h
-2022/01/06 | 2675 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example4.c
-2022/01/06 | 2674 | graphics/asymptote/doc/markers1.asy
-2022/01/06 | 26693 | graphics/asymptote/dec.cc
-2022/01/06 | 2668 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/code_action.h
-2022/01/06 | 2661 | graphics/asymptote/runbacktrace.cc
-2022/01/06 | 2653 | graphics/asymptote/doc/TeXShopAndAsymptote.tex
-2022/01/06 | 264 | graphics/asymptote/examples/labelbox.asy
-2022/01/06 | 264 | graphics/asymptote/examples/coag.asy
-2022/01/06 | 2649 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/future.hpp
-2022/01/06 | 2649 | graphics/asymptote/base/patterns.asy
-2022/01/06 | 2647 | info/kaytannollista-latexia/kirjallisuutta.bib
-2022/01/06 | 2636 | graphics/asymptote/LspCpp/LibLsp/lsp/CodeActionParams.h
-2022/01/06 | 2633 | info/kaytannollista-latexia/luku-esipuhe.tex
-2022/01/06 | 2632 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/semanticHighlighting.h
-2022/01/06 | 2631 | graphics/asymptote/GUI/windows/setCustomAnchor.ui
-2022/01/06 | 262 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/GCThreadContext.cpp
-2022/01/06 | 262 | graphics/asymptote/doc/loggraph.asy
-2022/01/06 | 2626 | graphics/asymptote/examples/worldmap.asy
-2022/01/06 | 261 | graphics/asymptote/doc/join.asy
-2022/01/06 | 2614 | graphics/asymptote/pipestream.h
-2022/01/06 | 2611 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_cpp17.cpp
-2022/01/06 | 2609 | graphics/asymptote/LspCpp/network/uri/uri_errors.hpp
-2022/01/06 | 26096 | graphics/asymptote/examples/uhrturm.obj
-2022/01/06 | 2605 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/premake4.lua
-2022/01/06 | 260289 | graphics/asymptote/cudareflect/tinyexr/examples/common/stb_image.h
-2022/01/06 | 25 | graphics/asymptote/cudareflect/tinyexr/experimental/js/Makefile
-2022/01/06 | 2598 | graphics/asymptote/cudareflect/simpson.cuh
-2022/01/06 | 25701 | graphics/asymptote/runpath3d.cc
-2022/01/06 | 256 | graphics/asymptote/doc/shadedtiling.asy
-2022/01/06 | 2561 | graphics/asymptote/program.h
-2022/01/06 | 2557 | graphics/asymptote/abs3doutfile.h
-2022/01/06 | 2555 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/FindTSan.cmake
-2022/01/06 | 2554 | graphics/asymptote/cudareflect/tinyexr/examples/ldr2exr/ldr2exr.cc
-2022/01/06 | 254 | graphics/asymptote/examples/parametricelevation.asy
-2022/01/06 | 254 | graphics/asymptote/examples/contextfonts.asy
-2022/01/06 | 25452 | graphics/asymptote/LspCpp/LspCpp.vcxproj.filters
-2022/01/06 | 2544404 | systems/texlive/tlnet/archive/leadsheets.doc.r61504.tar.xz
-2022/01/06 | 2543 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/Win32Window.h
-2022/01/06 | 2542 | graphics/asymptote/policy.h
-2022/01/06 | 25357 | graphics/asymptote/base/lmfit.asy
-2022/01/06 | 25300 | graphics/asymptote/bezierpatch.cc
-2022/01/06 | 2524 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/completion.h
-2022/01/06 | 251 | graphics/asymptote/examples/triceratops.asy
-2022/01/06 | 251 | graphics/asymptote/base/metapost.asy
-2022/01/06 | 2518 | graphics/asymptote/prc/PRCbitStream.h
-2022/01/06 | 25154 | graphics/asymptote/doc/extra/intro.asy
-2022/01/06 | 2514 | graphics/asymptote/LspCpp/LibLsp/lsp/lsTextEdit.h
-2022/01/06 | 2514 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/MacOpenGLWindow.h
-2022/01/06 | 2514 | graphics/asymptote/cudareflect/EXRFiles.cc
-2022/01/06 | 2512 | fonts/libertinust1math/tfm/libertinust1-mathsfit-bold.tfm
-2022/01/06 | 250 | graphics/asymptote/examples/transparentCubes.asy
-2022/01/06 | 25094 | graphics/asymptote/drawsurface.cc
-2022/01/06 | 2505 | graphics/asymptote/README
-2022/01/06 | 2505 | graphics/asymptote/binaries/x86_64-windows/README
-2022/01/06 | 2504 | graphics/asymptote/examples/mosquito.asy
-2022/01/06 | 2500 | fonts/libertinust1math/tfm/libertinust1-mathsfit.tfm
-2022/01/06 | 24 | graphics/asymptote/doc/diagonal.asy
-2022/01/06 | 2492 | graphics/asymptote/base/three_margins.asy
-2022/01/06 | 248 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.h
-2022/01/06 | 2488 | systems/texlive/tlnet/archive/cellspace.r61501.tar.xz
-2022/01/06 | 2484 | graphics/asymptote/build-scripts/build-asymptote
-2022/01/06 | 2482 | graphics/asymptote/LspCpp/LibLsp/lsp/lsWorkspaceEdit.h
-2022/01/06 | 2479 | graphics/asymptote/cudareflect/tinyexr/CMakeLists.txt
-2022/01/06 | 24784 | graphics/asymptote/symbolmaps.cc
-2022/01/06 | 2477 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/SConstruct
-2022/01/06 | 246 | graphics/asymptote/doc/axis3.asy
-2022/01/06 | 245 | graphics/asymptote/examples/alignbox.asy
-2022/01/06 | 2452 | fonts/libertinust1math/tfm/libertinust1-mathrm.tfm
-2022/01/06 | 2451 | graphics/asymptote/base/labelpath3.asy
-2022/01/06 | 244 | graphics/asymptote/tests/arith/triple.asy
-2022/01/06 | 2445 | graphics/asymptote/GUI/PrimitiveShape.py
-2022/01/06 | 243 | graphics/asymptote/doc/cube.asy
-2022/01/06 | 242 | graphics/asymptote/examples/equilateral.asy
-2022/01/06 | 242 | graphics/asymptote/cudareflect/tinyexr/appveyor.yml
-2022/01/06 | 242 | graphics/asymptote/BUGS
-2022/01/06 | 2424 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/WebSocketServer.h
-2022/01/06 | 241 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/MessageProducer.h
-2022/01/06 | 241 | graphics/asymptote/cudareflect/common.h
-2022/01/06 | 240 | graphics/asymptote/doc/parametricgraph.asy
-2022/01/06 | 23 | graphics/asymptote/GUI/__init__.py
-2022/01/06 | 2398 | graphics/asymptote/examples/SierpinskiSponge.asy
-2022/01/06 | 2396 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/size_policies.hpp
-2022/01/06 | 23904 | graphics/asymptote/process.cc
-2022/01/06 | 238 | graphics/asymptote/tests/TestLib.asy
-2022/01/06 | 238 | graphics/asymptote/GUI/xasyValidator.py
-2022/01/06 | 238 | graphics/asymptote/doc/filegraph.asy
-2022/01/06 | 2378 | graphics/asymptote/profile.py
-2022/01/06 | 23717 | graphics/asymptote/base/three_arrows.asy
-2022/01/06 | 236 | graphics/asymptote/tests/string/erase.asy
-2022/01/06 | 236 | graphics/asymptote/LspCpp/LibLsp/lsp/Directory.h
-2022/01/06 | 236 | graphics/asymptote/examples/annotation.asy
-2022/01/06 | 2368 | fonts/libertinust1math/vf/libertinust1-mathsfit-bold.vf
-2022/01/06 | 2364 | fonts/libertinust1math/vf/libertinust1-mathsfit.vf
-2022/01/06 | 2362 | graphics/asymptote/examples/spectrum.asy
-2022/01/06 | 2360 | fonts/libertinust1math/tfm/libertinust1-mathrm-bold.tfm
-2022/01/06 | 235 | graphics/asymptote/examples/cos2theta.asy
-2022/01/06 | 235 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/shader.frag
-2022/01/06 | 23567 | graphics/asymptote/drawsurface.h
-2022/01/06 | 234 | graphics/asymptote/doc/beziercurve.asy
-2022/01/06 | 2341 | graphics/asymptote/prc/PRCTools/iPRCFile.h
-2022/01/06 | 233 | graphics/asymptote/examples/cardioid.asy
-2022/01/06 | 2328 | graphics/asymptote/virtualfieldaccess.h
-2022/01/06 | 23274 | graphics/asymptote/LspCpp/LibLsp/lsp/lsp.cpp
-2022/01/06 | 23205 | graphics/asymptote/LspCpp/LibLsp/lsp/ProtocolJsonHandler.cpp
-2022/01/06 | 2315 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/test/compile_all/compile_all.cpp
-2022/01/06 | 2310 | graphics/asymptote/base/plain_margins.asy
-2022/01/06 | 22 | graphics/asymptote/tests/output/line.asy
-2022/01/06 | 22 | graphics/asymptote/GUI/configs/__init__.py
-2022/01/06 | 229 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/WorkspaceSymbolParams.h
-2022/01/06 | 22946 | graphics/asymptote/base/syzygy.asy
-2022/01/06 | 2292 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/FindMSan.cmake
-2022/01/06 | 228 | graphics/asymptote/examples/circumcircle.asy
-2022/01/06 | 22873 | graphics/asymptote/examples/piicon.png
-2022/01/06 | 2279 | graphics/asymptote/errormsg.cc
-2022/01/06 | 2277 | graphics/asymptote/base/texcolors.asy
-2022/01/06 | 2276 | graphics/asymptote/prc/PRCTools/inflation.cc
-2022/01/06 | 2272 | graphics/asymptote/cudareflect/tinyexr/examples/rgbe2exr/rgbe2exr.cc
-2022/01/06 | 2266 | graphics/asymptote/align.h
-2022/01/06 | 2259 | graphics/asymptote/LspCpp/network/uri/detail/uri_normalize.cpp
-2022/01/06 | 22594 | graphics/asymptote/base/plain_arrows.asy
-2022/01/06 | 2257 | graphics/asymptote/LspCpp/LibLsp/lsp/windows/MessageNotify.h
-2022/01/06 | 22502 | graphics/asymptote/LspCpp/LibLsp/lsp/general/lsTextDocumentClientCapabilities.h
-2022/01/06 | 224 | graphics/asymptote/tests/types/init.asy
-2022/01/06 | 223 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/resolveCodeLens.h
-2022/01/06 | 223 | graphics/asymptote/cudareflect/tinyexr/jni/Android.mk
-2022/01/06 | 22345 | graphics/asymptote/knot.cc
-2022/01/06 | 222 | graphics/asymptote/wce
-2022/01/06 | 222 | graphics/asymptote/examples/yingyang.asy
-2022/01/06 | 2222 | graphics/asymptote/tests/frames/loop.asy
-2022/01/06 | 221 | graphics/asymptote/LspCpp/third_party/threadpool/COPYING
-2022/01/06 | 2207 | graphics/asymptote/build-scripts/HOWTO-MSWindows
-2022/01/06 | 219 | graphics/asymptote/doc/penimage.asy
-2022/01/06 | 219 | graphics/asymptote/doc/graphwithderiv.asy
-2022/01/06 | 2194 | graphics/asymptote/locate.cc
-2022/01/06 | 21926 | graphics/asymptote/runmath.cc
-2022/01/06 | 2191 | graphics/asymptote/examples/splitpatch.asy
-2022/01/06 | 218 | graphics/asymptote/doc/datagraph.asy
-2022/01/06 | 2187 | graphics/asymptote/common.h
-2022/01/06 | 2187 | graphics/asymptote/base/plain_debugger.asy
-2022/01/06 | 21807 | graphics/asymptote/LspCpp/network/uri/uri.hpp
-2022/01/06 | 217 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/GCThreadContext.h
-2022/01/06 | 2176 | graphics/asymptote/LspCpp/network/uri/detail/uri_advance_parts.cpp
-2022/01/06 | 2164 | graphics/asymptote/frame.h
-2022/01/06 | 2151 | graphics/asymptote/LspCpp/network/uri/detail/translate.hpp
-2022/01/06 | 2149 | graphics/asymptote/LspCpp/LibLsp/lsp/working_files.h
-2022/01/06 | 21485 | graphics/asymptote/lspserv.cc
-2022/01/06 | 21474 | macros/pdftex/mptopdf/tex/context/base/mkii/supp-mis.mkii
-2022/01/06 | 2144 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/FindASan.cmake
-2022/01/06 | 21448 | graphics/asymptote/base/feynman.asy
-2022/01/06 | 2143 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/negative.cpp
-2022/01/06 | 21382 | graphics/asymptote/fileio.h
-2022/01/06 | 2136 | graphics/asymptote/seconds.h
-2022/01/06 | 2134 | graphics/asymptote/drawlabel.h
-2022/01/06 | 2123 | graphics/asymptote/LspCpp/third_party/utfcpp/samples/docsample.cpp
-2022/01/06 | 2122 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/MessageJsonHandler.h
-2022/01/06 | 210 | graphics/asymptote/examples/spiral.asy
-2022/01/06 | 210 | graphics/asymptote/build-scripts/asy-indent.el
-2022/01/06 | 2109 | graphics/asymptote/base/drawtree.asy
-2022/01/06 | 2104 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/getRefactorEdit.h
-2022/01/06 | 2101 | graphics/asymptote/examples/truncatedIcosahedron.asy
-2022/01/06 | 2098 | graphics/asymptote/LspCpp/network/uri/detail/algorithm.hpp
-2022/01/06 | 20989 | graphics/asymptote/base/plain_bounds.asy
-2022/01/06 | 2088 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/detail/locking_ptr.hpp
-2022/01/06 | 20829 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/issue-77-heap-buffer-overflow
-2022/01/06 | 208125 | graphics/asymptote/asy.list
-2022/01/06 | 207 | graphics/asymptote/examples/triangle.asy
-2022/01/06 | 2073 | graphics/asymptote/LspCpp/network/uri/detail/uri_parts.hpp
-2022/01/06 | 207102 | graphics/asymptote/doc/asy-latex.pdf
-2022/01/06 | 206 | graphics/asymptote/examples/log.asy
-2022/01/06 | 20633 | graphics/asymptote/runtime.in
-2022/01/06 | 2059015 | graphics/pgf/contrib/spectralsequences.zip
-2022/01/06 | 20558 | info/kaytannollista-latexia/luku-valmistautuminen.tex
-2022/01/06 | 20554 | info/kaytannollista-latexia/luku-erikoiset.tex
-2022/01/06 | 2054 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/message.cpp
-2022/01/06 | 205495 | graphics/asymptote/base/colormap.asy
-2022/01/06 | 2040 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/X11OpenGLWindow.h
-2022/01/06 | 203 | graphics/asymptote/LspCpp/LibLsp/lsp/general/exit.h
-2022/01/06 | 2034 | graphics/asymptote/doc/elliptic.asy
-2022/01/06 | 2031 | graphics/asymptote/base/slopefield.asy
-2022/01/06 | 202 | graphics/asymptote/tests/frames/stat2.asy
-2022/01/06 | 202 | graphics/asymptote/glew.c
-2022/01/06 | 202 | graphics/asymptote/doc/exp.asy
-2022/01/06 | 202 | graphics/asymptote/build-scripts/run-in-indent.el
-2022/01/06 | 202947 | graphics/asymptote/cudareflect/tinyexr/asakusa.png
-2022/01/06 | 20277 | graphics/asymptote/base/contour.asy
-2022/01/06 | 2023 | graphics/asymptote/examples/slope.asy
-2022/01/06 | 2012 | graphics/asymptote/varinit.h
-2022/01/06 | 2011 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/asan-wrapper
-2022/01/06 | 20090 | graphics/asymptote/runpicture.in
-2022/01/06 | 20080 | systems/texlive/tlnet/archive/econ-bst.r61499.tar.xz
-2022/01/06 | 20051 | graphics/asymptote/doc/asyRefCard.tex
-2022/01/06 | 2004 | graphics/asymptote/varinit.cc
-2022/01/06 | 2002 | graphics/asymptote/LspCpp/network/uri/uri_errors.cpp
-2022/01/06 | 20029 | graphics/asymptote/camp.y
-2022/01/06 | 20010 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_data/utf8_invalid.txt
-2022/01/06 | 2000 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/pool_adaptors.hpp
-2022/01/06 | 2000 | fonts/libertinust1math/vf/libertinust1-mathsfrm-bold.vf
-2022/01/06 | 199 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/test/compile_all/Jamfile.v2
-2022/01/06 | 199 | graphics/asymptote/examples/upint.asy
-2022/01/06 | 199 | graphics/asymptote/examples/BezierTriangle.asy
-2022/01/06 | 1996 | fonts/libertinust1math/vf/libertinust1-mathsfrm.vf
-2022/01/06 | 198 | graphics/asymptote/examples/tanh.asy
-2022/01/06 | 198829 | graphics/asymptote/doc/CAD.pdf
-2022/01/06 | 1982 | graphics/asymptote/inst.h
-2022/01/06 | 1975 | graphics/asymptote/array.h
-2022/01/06 | 196 | graphics/asymptote/examples/lowint.asy
-2022/01/06 | 196 | graphics/asymptote/examples/label3ribbon.asy
-2022/01/06 | 196 | graphics/asymptote/examples/animations/embeddedu3d.asy
-2022/01/06 | 1968 | graphics/asymptote/examples/mergeExample.asy
-2022/01/06 | 195 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/example/mergesort/Jamfile.v2
-2022/01/06 | 19597 | graphics/asymptote/doc/external-proposal.html
-2022/01/06 | 1957 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/shutdown_policies.hpp
-2022/01/06 | 1955 | graphics/asymptote/cudareflect/tinyexr/experimental/js/binding.cc
-2022/01/06 | 1950 | graphics/asymptote/cudareflect/utils.cuh
-2022/01/06 | 1950 | graphics/asymptote/cudareflect/tinyexr/examples/testmapgen/testmapgen.cc
-2022/01/06 | 194 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/quickstart/Jamfile.v2
-2022/01/06 | 19462 | graphics/asymptote/patches/gl-matrix-2.4.0-pruned.patch
-2022/01/06 | 193 | graphics/asymptote/tests/gc/shipout.asy
-2022/01/06 | 193 | graphics/asymptote/tests/arith/random.asy
-2022/01/06 | 193 | graphics/asymptote/base/shaders/offset.glsl
-2022/01/06 | 1936 | graphics/asymptote/refaccess.h
-2022/01/06 | 1927 | graphics/asymptote/tests/array/fields.asy
-2022/01/06 | 1927 | graphics/asymptote/prc/PRCTools/bitSearchDouble.cc
-2022/01/06 | 1924 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/willSave.h
-2022/01/06 | 1920 | graphics/asymptote/GUI/res/icons/social-python.svg
-2022/01/06 | 191 | graphics/asymptote/runpicture.h
-2022/01/06 | 1919 | graphics/asymptote/examples/animations/earthmoon.asy
-2022/01/06 | 1918 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/sct/sct.h
-2022/01/06 | 1910 | graphics/asymptote/examples/linearregression.asy
-2022/01/06 | 190 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/tutorial/Jamfile.v2
-2022/01/06 | 19085 | graphics/asymptote/psfile.cc
-2022/01/06 | 190044 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/DroidSans.ttf
-2022/01/06 | 18 | graphics/asymptote/tests/output/circle.asy
-2022/01/06 | 189 | graphics/asymptote/cudareflect/tinyexr/examples/exr2ldr/Makefile
-2022/01/06 | 18994 | graphics/asymptote/LspCpp/LibLsp/lsp/general/lsServerCapabilities.h
-2022/01/06 | 18991 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/Win32Window.cpp
-2022/01/06 | 1898 | graphics/asymptote/LspCpp/network/uri/detail/decode.hpp
-2022/01/06 | 1896 | graphics/asymptote/cudareflect/tinyexr/config-msvc.py
-2022/01/06 | 188 | graphics/asymptote/runstring.h
-2022/01/06 | 188 | graphics/asymptote/examples/transparency.asy
-2022/01/06 | 188 | graphics/asymptote/cudareflect/tinyexr/examples/resize/Makefile
-2022/01/06 | 1884 | graphics/asymptote/GUI/res/icons/filledbucket.svg
-2022/01/06 | 187 | graphics/asymptote/tests/string/rfind.asy
-2022/01/06 | 187 | graphics/asymptote/examples/label3solid.asy
-2022/01/06 | 187 | graphics/asymptote/base/shaders/count.glsl
-2022/01/06 | 1876 | graphics/asymptote/cc-mode2.el
-2022/01/06 | 18739 | graphics/asymptote/runstring.cc
-2022/01/06 | 186 | graphics/asymptote/runpath3d.h
-2022/01/06 | 186 | graphics/asymptote/doc/unitcircle3.asy
-2022/01/06 | 186 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/shader.vert
-2022/01/06 | 1863 | graphics/asymptote/prc/PRCTools/bitSearchUI.cc
-2022/01/06 | 1860 | graphics/asymptote/prc/PRCTools/bitData.h
-2022/01/06 | 185 | graphics/asymptote/cudareflect/tinyexr/test/fuzzer/README.md
-2022/01/06 | 18578 | graphics/asymptote/application.cc
-2022/01/06 | 1851 | graphics/asymptote/drawclipbegin.h
-2022/01/06 | 184 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/index.html
-2022/01/06 | 184 | graphics/asymptote/examples/roll.asy
-2022/01/06 | 183 | graphics/asymptote/build-scripts/cc-indent.el
-2022/01/06 | 18396 | graphics/asymptote/LspCpp/network/uri/uri.cpp
-2022/01/06 | 1835 | graphics/asymptote/examples/cyclohexane.asy
-2022/01/06 | 1831 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/documentColor.h
-2022/01/06 | 182 | graphics/asymptote/tests/string/find.asy
-2022/01/06 | 182 | graphics/asymptote/examples/label3.asy
-2022/01/06 | 1828 | graphics/asymptote/beziercurve.cc
-2022/01/06 | 1814 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/document_symbol.h
-2022/01/06 | 1813 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/OpenGLInclude.h
-2022/01/06 | 18095 | graphics/asymptote/doc/asy-latex.dtx
-2022/01/06 | 1808 | graphics/asymptote/LspCpp/LibLsp/lsp/location_type.h
-2022/01/06 | 1808 | graphics/asymptote/GUI/res/icons.qrc
-2022/01/06 | 1805 | graphics/asymptote/patches/cygwin_freeglut-3.0.0.patch
-2022/01/06 | 17987 | graphics/asymptote/entry.cc
-2022/01/06 | 17902 | graphics/asymptote/asy-keywords.el
-2022/01/06 | 178 | graphics/asymptote/fftw++asy.cc
-2022/01/06 | 1787 | graphics/asymptote/LspCpp/network/uri/detail/uri_percent_encode.hpp
-2022/01/06 | 17860 | graphics/asymptote/LspCpp/LspCpp.filters
-2022/01/06 | 177 | graphics/asymptote/runpath.h
-2022/01/06 | 177 | graphics/asymptote/examples/curvedlabel.asy
-2022/01/06 | 17798 | graphics/asymptote/runfile.cc
-2022/01/06 | 1778 | graphics/asymptote/examples/conicurv.asy
-2022/01/06 | 1774 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/RequestInMessage.h
-2022/01/06 | 17734 | graphics/asymptote/dec.h
-2022/01/06 | 177246 | graphics/asymptote/prc/PRCdouble.cc
-2022/01/06 | 176 | graphics/asymptote/LspCpp/LibLsp/lsp/ProtocolJsonHandler.h
-2022/01/06 | 176 | graphics/asymptote/base/shaders/count0.glsl
-2022/01/06 | 1765 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/ScopeExit.h
-2022/01/06 | 1765 | graphics/asymptote/base/shaders/blend.glsl
-2022/01/06 | 1764 | graphics/asymptote/GUI/res/icons/grid.svg
-2022/01/06 | 17614 | graphics/asymptote/cudareflect/tinyexr/README.md
-2022/01/06 | 1760 | graphics/asymptote/examples/animations/heatequation.asy
-2022/01/06 | 175 | graphics/asymptote/examples/strokeshade.asy
-2022/01/06 | 17540 | graphics/asymptote/texfile.cc
-2022/01/06 | 1753 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/Win32OpenGLWindow.h
-2022/01/06 | 1751 | graphics/asymptote/GUI/GuidesManager.py
-2022/01/06 | 174 | graphics/asymptote/cudareflect/tinyexr/examples/testmapgen/Makefile
-2022/01/06 | 1746 | graphics/asymptote/doc/westnile.asy
-2022/01/06 | 173 | graphics/asymptote/cudareflect/tinyexr/test/c-binding/Makefile
-2022/01/06 | 173 | graphics/asymptote/cudareflect/tinyexr/examples/exrfilter/Makefile
-2022/01/06 | 1734 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/CMakeLists.txt
-2022/01/06 | 17346 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/nfd_win.cpp
-2022/01/06 | 1733 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/src/include/nfd.h
-2022/01/06 | 1728 | graphics/asymptote/webgl/vertex.glsl
-2022/01/06 | 1710 | graphics/asymptote/tests/arith/roots.asy
-2022/01/06 | 1710 | graphics/asymptote/LspCpp/network/uri/uri_io.hpp
-2022/01/06 | 17044 | systems/texlive/tlnet/archive/leadsheets.r61504.tar.xz
-2022/01/06 | 169 | graphics/asymptote/runbacktrace.h
-2022/01/06 | 1698 | graphics/asymptote/record.cc
-2022/01/06 | 1696 | graphics/asymptote/cudareflect/tinyexr/cmake/sanitizers/FindUBSan.cmake
-2022/01/06 | 1694 | graphics/asymptote/fftw++.cc
-2022/01/06 | 1692 | fonts/libertinust1math/tfm/libertinust1-mathex.tfm
-2022/01/06 | 168 | graphics/asymptote/examples/lines.asy
-2022/01/06 | 1688 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/test/SConstruct
-2022/01/06 | 16878 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/RemoteEndPoint.cpp
-2022/01/06 | 1684 | fonts/libertinust1math/tfm/libertinust1-mathsym.tfm
-2022/01/06 | 167 | graphics/asymptote/cudareflect/tinyexr/examples/nornalmap/Makefile
-2022/01/06 | 1673 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/getMoveDestinations.h
-2022/01/06 | 16705 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/ChangeLog.md
-2022/01/06 | 1665 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/foldingRange.h
-2022/01/06 | 1665 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Endpoint.h
-2022/01/06 | 1661 | graphics/asymptote/LspCpp/LibLsp/lsp/lsp_diagnostic.cpp
-2022/01/06 | 165 | graphics/asymptote/LspCpp/LspCpp.vcxproj.user
-2022/01/06 | 165 | graphics/asymptote/LspCpp/LspCpp.user
-2022/01/06 | 1658 | graphics/asymptote/prc/PRCTools/Makefile
-2022/01/06 | 1658 | graphics/asymptote/GUI/Widg_editBezier.py
-2022/01/06 | 165670 | macros/latex/contrib/pascaltriangle/pascaltriangle.pdf
-2022/01/06 | 16527 | graphics/asymptote/configure.ac
-2022/01/06 | 16492 | graphics/asymptote/base/plain_Label.asy
-2022/01/06 | 1648 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/OpenGL2Include.h
-2022/01/06 | 16483 | graphics/asymptote/runpair.cc
-2022/01/06 | 16421 | graphics/asymptote/LspCpp/network/optional.hpp
-2022/01/06 | 1640 | graphics/asymptote/callable.h
-2022/01/06 | 163 | graphics/asymptote/examples/1overx.asy
-2022/01/06 | 1630 | graphics/asymptote/builtin.h
-2022/01/06 | 162 | graphics/asymptote/examples/stereoscopic.asy
-2022/01/06 | 162 | graphics/asymptote/examples/sphereskeleton.asy
-2022/01/06 | 1626 | graphics/asymptote/genv.h
-2022/01/06 | 16226 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/sct/sct.cpp
-2022/01/06 | 1620 | graphics/asymptote/doc/colors.asy
-2022/01/06 | 161 | graphics/asymptote/runhistory.h
-2022/01/06 | 161 | graphics/asymptote/cudareflect/tinyexr/examples/exr2rgbe/Makefile
-2022/01/06 | 16188 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/screens/open_win8.png
-2022/01/06 | 1617 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/hover.h
-2022/01/06 | 1615 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/colorPresentation.h
-2022/01/06 | 1612 | graphics/asymptote/asy-list.pl
-2022/01/06 | 160 | graphics/asymptote/cudareflect/tinyexr/jni/Makefile
-2022/01/06 | 16089 | graphics/asymptote/base/slide.asy
-2022/01/06 | 160672 | graphics/asymptote/examples/animations/dice.u3d
-2022/01/06 | 1600 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/lsResponseMessage.h
-2022/01/06 | 15 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-efe9007bfdcbbe8a1569bf01fa9acadb8261ead49cb83f6e91fcdc4dae2e99a3_min
-2022/01/06 | 15 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-df76d1f27adb8927a1446a603028272140905c168a336128465a1162ec7af270.mini
-2022/01/06 | 159 | graphics/asymptote/tests/types/cast.asy
-2022/01/06 | 159 | graphics/asymptote/cudareflect/tinyexr/examples/rgbe2exr/Makefile
-2022/01/06 | 1598 | graphics/asymptote/examples/NURBSsurface.asy
-2022/01/06 | 1597 | graphics/asymptote/v3dheadertypes.py
-2022/01/06 | 1594 | graphics/asymptote/pen.cc
-2022/01/06 | 158 | graphics/asymptote/tests/frames/stat.asy
-2022/01/06 | 1589670 | graphics/asymptote/ChangeLog
-2022/01/06 | 15895 | graphics/asymptote/GUI/InplaceAddObj.py
-2022/01/06 | 1588 | graphics/asymptote/build-scripts/asy-format.el
-2022/01/06 | 15833 | graphics/asymptote/runlabel.cc
-2022/01/06 | 157 | graphics/asymptote/runsystem.h
-2022/01/06 | 157 | graphics/asymptote/doc/saddle.asy
-2022/01/06 | 157 | graphics/asymptote/cudareflect/tinyexr/examples/ldr2exr/Makefile
-2022/01/06 | 1578 | graphics/asymptote/build-scripts/cc-format.el
-2022/01/06 | 1567 | graphics/asymptote/LspCpp/LibLsp/lsp/client/registerCapability.h
-2022/01/06 | 1566 | graphics/asymptote/examples/near_earth.asy
-2022/01/06 | 15645 | graphics/asymptote/install-sh
-2022/01/06 | 15617 | graphics/asymptote/cudareflect/tinyexr/test_tinyexr.cc
-2022/01/06 | 15601 | graphics/asymptote/base/ode.asy
-2022/01/06 | 155 | graphics/asymptote/tests/types/ecast.asy
-2022/01/06 | 15516 | graphics/asymptote/LspCpp/LibLsp/lsp/utils.cpp
-2022/01/06 | 155069 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/issue-160-piz-decode.exr
-2022/01/06 | 154 | graphics/asymptote/examples/billboard.asy
-2022/01/06 | 154 | graphics/asymptote/doc/slopefield1.asy
-2022/01/06 | 1548 | graphics/asymptote/examples/BezierSurface.asy
-2022/01/06 | 1548 | graphics/asymptote/cudareflect/tinyexr/test/issues/160/main.py
-2022/01/06 | 15461 | info/kaytannollista-latexia/kaytannollista-latexia.tex
-2022/01/06 | 15451 | graphics/asymptote/types.h
-2022/01/06 | 1542 | graphics/asymptote/GUI/xasyUtils.py
-2022/01/06 | 153 | graphics/asymptote/runlabel.h
-2022/01/06 | 15382 | graphics/asymptote/base/palette.asy
-2022/01/06 | 1537 | graphics/asymptote/examples/refs.bib
-2022/01/06 | 15277 | graphics/asymptote/base/flowchart.asy
-2022/01/06 | 1524 | graphics/asymptote/patches/flex.patch
-2022/01/06 | 1521 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8.h
-2022/01/06 | 150 | graphics/asymptote/examples/spheresilhouette.asy
-2022/01/06 | 150 | graphics/asymptote/doc/latexmkrc_asydir
-2022/01/06 | 15018 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/main.cc
-2022/01/06 | 1498 | graphics/asymptote/examples/animations/wavepacket.asy
-2022/01/06 | 1493 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/did_change.h
-2022/01/06 | 1492 | graphics/asymptote/runarray.h
-2022/01/06 | 1482 | graphics/asymptote/GUI/res/icons/android-hand.svg
-2022/01/06 | 147 | graphics/asymptote/doc/vectorfield.asy
-2022/01/06 | 1479 | graphics/asymptote/prc/PRCTools/inflationMain.cc
-2022/01/06 | 14795 | graphics/asymptote/stm.cc
-2022/01/06 | 1475 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/NotificationInMessage.h
-2022/01/06 | 14749 | graphics/asymptote/base/contour3.asy
-2022/01/06 | 146 | graphics/asymptote/cudareflect/tinyexr/examples/deepview/Makefile
-2022/01/06 | 1469 | graphics/asymptote/doc/png/Makefile.in
-2022/01/06 | 14626 | graphics/asymptote/base/v3d.asy
-2022/01/06 | 1461 | graphics/asymptote/examples/logo3.asy
-2022/01/06 | 145 | graphics/asymptote/examples/star.asy
-2022/01/06 | 14532 | graphics/asymptote/stack.cc
-2022/01/06 | 1452 | fonts/libertinust1math/tfm/libertinust1-mathsfi.tfm
-2022/01/06 | 144 | graphics/asymptote/doc/latexmkrc
-2022/01/06 | 1449 | graphics/asymptote/GUI/SetCustomAnchor.py
-2022/01/06 | 1440 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/selectionRange.h
-2022/01/06 | 143 | graphics/asymptote/tests/gc/label.asy
-2022/01/06 | 14378 | graphics/asymptote/examples/teapot.asy
-2022/01/06 | 1436 | graphics/asymptote/GUI/res/icons/bucket.svg
-2022/01/06 | 14283 | graphics/asymptote/testv3d.asy
-2022/01/06 | 141 | graphics/asymptote/examples/sphere.asy
-2022/01/06 | 141 | graphics/asymptote/examples/ring.asy
-2022/01/06 | 1411 | graphics/asymptote/LspCpp/LibLsp/lsp/lsp_code_action.h
-2022/01/06 | 14082 | graphics/asymptote/GUI/xasyBezierInterface.py
-2022/01/06 | 14072 | graphics/asymptote/types.cc
-2022/01/06 | 1406 | graphics/asymptote/cudareflect/EXRFiles.h
-2022/01/06 | 13980 | graphics/asymptote/arrayop.h
-2022/01/06 | 13944 | graphics/asymptote/runtriple.cc
-2022/01/06 | 1391 | graphics/asymptote/doc/CAD1.asy
-2022/01/06 | 138 | graphics/asymptote/Pipfile
-2022/01/06 | 1386 | graphics/asymptote/LspCpp/Makefile
-2022/01/06 | 13867 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/nuklear_btgui_gl2.h
-2022/01/06 | 13857 | macros/latex/contrib/pascaltriangle/pascaltriangle.sty
-2022/01/06 | 1384 | graphics/asymptote/tests/pic/trans.asy
-2022/01/06 | 13824 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/detail/pool_core.hpp
-2022/01/06 | 1380 | graphics/asymptote/LspCpp/LibLsp/lsp/general/initialize.h
-2022/01/06 | 1375 | graphics/asymptote/base/tree.asy
-2022/01/06 | 136 | graphics/asymptote/examples/latticeshading.asy
-2022/01/06 | 13663 | graphics/asymptote/doc/install-sh
-2022/01/06 | 13663 | graphics/asymptote/doc/FAQ/install-sh
-2022/01/06 | 13615 | graphics/asymptote/entry.h
-2022/01/06 | 13605 | graphics/asymptote/base/grid3.asy
-2022/01/06 | 1352 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/did_change_watched_files.h
-2022/01/06 | 1352 | graphics/asymptote/examples/Klein.asy
-2022/01/06 | 1347 | graphics/asymptote/cudareflect/tinyexr/test/unit/config-posix.py
-2022/01/06 | 13477 | graphics/asymptote/base/asy.vim
-2022/01/06 | 1345 | graphics/asymptote/interact.h
-2022/01/06 | 13440 | graphics/asymptote/texfile.h
-2022/01/06 | 1341 | graphics/asymptote/runtimebase.in
-2022/01/06 | 133 | graphics/asymptote/cudareflect/tinyexr/test/unit/vcbuild.bat
-2022/01/06 | 1338 | graphics/asymptote/LspCpp/third_party/utfcpp/LICENSE
-2022/01/06 | 1338 | graphics/asymptote/LspCpp/third_party/threadpool/LICENSE_1_0.txt
-2022/01/06 | 13357 | graphics/asymptote/camp.l
-2022/01/06 | 1332 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/tutorial_header.htm
-2022/01/06 | 1331 | graphics/asymptote/tests/types/spec.asy
-2022/01/06 | 132 | graphics/asymptote/tests/string/length.asy
-2022/01/06 | 132 | graphics/asymptote/cudareflect/tinyexr/test/unit/regression/poc-d5c9c893e559277a3320c196523095b94db93985620ac338d037487e0e613047_min
-2022/01/06 | 1328 | graphics/asymptote/LspCpp/LibLsp/lsp/lsCommand.h
-2022/01/06 | 1323 | graphics/asymptote/base/v3dheadertypes.asy
-2022/01/06 | 1322 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/design.txt
-2022/01/06 | 1321 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/didChangeWorkspaceFolders.h
-2022/01/06 | 1319 | graphics/asymptote/GUI/res/icons/android-color-palette.svg
-2022/01/06 | 1318 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/OpenGLWindow/Win32InternalWindowData.h
-2022/01/06 | 1313638 | graphics/asymptote/doc/asymptote.pdf
-2022/01/06 | 1311 | graphics/asymptote/patches/dvipdf
-2022/01/06 | 1310 | graphics/asymptote/prc/PRCTools/extractSections.cc
-2022/01/06 | 1309 | graphics/asymptote/examples/roundpath.asy
-2022/01/06 | 129 | graphics/asymptote/tests/gc/struct.asy
-2022/01/06 | 129 | graphics/asymptote/base/shaders/screen.glsl
-2022/01/06 | 1298 | graphics/asymptote/examples/electromagnetic.asy
-2022/01/06 | 129790 | graphics/asymptote/camp.tab.cc
-2022/01/06 | 1297384 | systems/texlive/tlnet/archive/econ-bst.doc.r61499.tar.xz
-2022/01/06 | 1293 | graphics/asymptote/TODO
-2022/01/06 | 1291 | graphics/asymptote/LspCpp/third_party/utfcpp/CMakeLists.txt
-2022/01/06 | 1287 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/README.md
-2022/01/06 | 1284 | graphics/asymptote/tests/output/Makefile
-2022/01/06 | 1284 | fonts/libertinust1math/tfm/libertinust1-mathsfb.tfm
-2022/01/06 | 1283 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/reference_header.htm
-2022/01/06 | 12823 | graphics/asymptote/impdatum.cc
-2022/01/06 | 1280 | graphics/asymptote/beziercurve.h
-2022/01/06 | 127 | graphics/asymptote/index.html
-2022/01/06 | 127745 | graphics/asymptote/ReleaseNotes
-2022/01/06 | 1276 | graphics/asymptote/base/asymptote.py
-2022/01/06 | 1274 | graphics/asymptote/newexp.h
-2022/01/06 | 1267 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/linkedEditingRange.h
-2022/01/06 | 1266 | graphics/asymptote/drawverbatim.h
-2022/01/06 | 1264 | fonts/libertinust1math/tfm/libertinust1-mathsf.tfm
-2022/01/06 | 12632 | graphics/asymptote/Makefile.in
-2022/01/06 | 12630 | graphics/asymptote/cudareflect/tinyexr/examples/cube2longlat/cube2longlat.cc
-2022/01/06 | 1261761 | graphics/asymptote/examples/worldmap.dat
-2022/01/06 | 12604 | graphics/asymptote/runsystem.cc
-2022/01/06 | 125 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/docker/Dockerfile
-2022/01/06 | 1253 | graphics/asymptote/keywords.pl
-2022/01/06 | 12534 | graphics/asymptote/ax_pthread.m4
-2022/01/06 | 1251 | graphics/asymptote/examples/odetest.asy
-2022/01/06 | 124 | graphics/asymptote/tests/gc/path.asy
-2022/01/06 | 124 | graphics/asymptote/GUI/res/icons/centerorigin.asy
-2022/01/06 | 1247 | graphics/asymptote/examples/animations/slidemovies.asy
-2022/01/06 | 12474 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/checked.h
-2022/01/06 | 1245 | graphics/asymptote/prc/PRCTools/describeMain.cc
-2022/01/06 | 1245 | graphics/asymptote/findsym.pl
-2022/01/06 | 1244 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/document_link.h
-2022/01/06 | 1240 | graphics/asymptote/examples/arrows3.asy
-2022/01/06 | 123 | graphics/asymptote/examples/Coons.asy
-2022/01/06 | 123 | graphics/asymptote/doc/superpath.asy
-2022/01/06 | 1236 | graphics/asymptote/primitives.h
-2022/01/06 | 1235 | graphics/asymptote/examples/animations/inlinemovie.tex
-2022/01/06 | 1235777 | graphics/asymptote/GL/glew.c
-2022/01/06 | 1227 | graphics/asymptote/build-scripts/build-asygl
-2022/01/06 | 1226 | graphics/asymptote/GUI/res/icons/triangle-stroked-15.svg
-2022/01/06 | 1225 | graphics/asymptote/v3dheadertypes.h
-2022/01/06 | 12259 | graphics/asymptote/knot.h
-2022/01/06 | 122575 | info/kaytannollista-latexia/luku-asetukset.tex
-2022/01/06 | 121 | graphics/asymptote/doc/labelsquare.asy
-2022/01/06 | 121 | graphics/asymptote/cudareflect/tinyexr/tinyexr.cc
-2022/01/06 | 1216 | graphics/asymptote/examples/dragon.asy
-2022/01/06 | 1215 | graphics/asymptote/GUI/configs/xasyconfig.cson
-2022/01/06 | 1213 | graphics/asymptote/LspCpp/LibLsp/lsp/lsCodeAction.h
-2022/01/06 | 1213 | graphics/asymptote/base/plain_arcs.asy
-2022/01/06 | 12129 | info/kaytannollista-latexia/tavutusvihjeet.tex
-2022/01/06 | 121145 | graphics/asymptote/doc/asyRefCard.pdf
-2022/01/06 | 1209 | graphics/asymptote/tests/imp/unravel.asy
-2022/01/06 | 12093 | graphics/asymptote/runlabel.in
-2022/01/06 | 12012 | graphics/asymptote/base/solids.asy
-2022/01/06 | 1198 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/exr-io.cc
-2022/01/06 | 1197 | graphics/asymptote/drawclipend.h
-2022/01/06 | 1195 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/references.h
-2022/01/06 | 1194 | graphics/asymptote/GUI/res/icons/code.svg
-2022/01/06 | 1192 | graphics/asymptote/LspCpp/LibLsp/lsp/lsFormattingOptions.h
-2022/01/06 | 1190 | graphics/asymptote/camperror.cc
-2022/01/06 | 11907 | graphics/asymptote/tests/gsl/random.asy
-2022/01/06 | 118 | graphics/asymptote/tests/string/substr.asy
-2022/01/06 | 1189 | graphics/asymptote/tests/types/var.asy
-2022/01/06 | 1188 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/overview_header.htm
-2022/01/06 | 1188 | graphics/asymptote/EXRFiles.cc
-2022/01/06 | 1187 | graphics/asymptote/GUI/res/icons/closedcurve.svg
-2022/01/06 | 1186601 | graphics/asymptote/GL/glew.h
-2022/01/06 | 1185 | graphics/asymptote/LspCpp/LibLsp/lsp/SimpleTimer.h
-2022/01/06 | 1185 | graphics/asymptote/examples/functionshading.asy
-2022/01/06 | 11846 | graphics/asymptote/jsfile.cc
-2022/01/06 | 1183 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/TcpServer.h
-2022/01/06 | 1183 | graphics/asymptote/GUI/xasyArgs.py
-2022/01/06 | 1183225 | graphics/asymptote/gc-8.2.0.tar.gz
-2022/01/06 | 117 | graphics/asymptote/cudareflect/tinyexr/examples/exr2fptiff/README.md
-2022/01/06 | 1178 | graphics/asymptote/base/embed.asy
-2022/01/06 | 1175 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/MessageJsonHandler.cpp
-2022/01/06 | 1172 | graphics/asymptote/LspCpp/README.md
-2022/01/06 | 1171 | graphics/asymptote/parser.h
-2022/01/06 | 1171 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/Endpoint.cpp
-2022/01/06 | 11663 | graphics/asymptote/path.h
-2022/01/06 | 11656 | graphics/asymptote/base/binarytree.asy
-2022/01/06 | 1164 | graphics/asymptote/examples/genustwo.asy
-2022/01/06 | 11642 | graphics/asymptote/coder.h
-2022/01/06 | 1163 | graphics/asymptote/runtime.h
-2022/01/06 | 1162 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/LICENSE
-2022/01/06 | 1161 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/configuration.h
-2022/01/06 | 116010 | graphics/asymptote/predicates.cc
-2022/01/06 | 115 | graphics/asymptote/doc/onecontour.asy
-2022/01/06 | 1159 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/lsRequestId.h
-2022/01/06 | 1156 | graphics/asymptote/cudareflect/tinyexr/premake4.lua
-2022/01/06 | 1154 | graphics/asymptote/LspCpp/LibLsp/lsp/lsVersionedTextDocumentIdentifier.h
-2022/01/06 | 11541 | graphics/asymptote/aspy.py
-2022/01/06 | 1151 | graphics/asymptote/callable.cc
-2022/01/06 | 1150 | graphics/asymptote/LspCpp/LibLsp/lsp/general/lsClientCapabilities.h
-2022/01/06 | 1149 | graphics/asymptote/guide.cc
-2022/01/06 | 11468 | graphics/asymptote/drawelement.h
-2022/01/06 | 1143 | graphics/asymptote/LspCpp/LibLsp/lsp/lsPosition.h
-2022/01/06 | 1142 | graphics/asymptote/envcompleter.cc
-2022/01/06 | 1140 | graphics/asymptote/absyn.h
-2022/01/06 | 113 | graphics/asymptote/patches/fixmem.reg
-2022/01/06 | 113 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/examples.txt
-2022/01/06 | 1139 | graphics/asymptote/GUI/res/icons/opencurve.svg
-2022/01/06 | 11373 | graphics/asymptote/base/plain_markers.asy
-2022/01/06 | 113565 | graphics/asymptote/cudareflect/tinyexr/examples/common/stb_image_resize.h
-2022/01/06 | 1134 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/design_header.htm
-2022/01/06 | 1131 | graphics/asymptote/gl-matrix-2.4.0-pruned/LICENSE.js
-2022/01/06 | 1131 | graphics/asymptote/cudareflect/tinyexr/experimental/js/index.html
-2022/01/06 | 1130 | graphics/asymptote/GUI/res/icons/redo.svg
-2022/01/06 | 1129 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/code_lens.h
-2022/01/06 | 1127425 | graphics/asymptote/cudareflect/tinyexr/asakusa.exr
-2022/01/06 | 1126 | graphics/asymptote/coenv.cc
-2022/01/06 | 1125 | graphics/asymptote/LspCpp/third_party/threadpool/Makefile
-2022/01/06 | 1124 | graphics/asymptote/GUI/res/icons/android-locate.svg
-2022/01/06 | 1122 | graphics/asymptote/LspCpp/third_party/threadpool/libs/threadpool/doc/examples_header.htm
-2022/01/06 | 1120 | graphics/asymptote/examples/animations/wheel.asy
-2022/01/06 | 1120 | graphics/asymptote/base/external.asy
-2022/01/06 | 111 | graphics/asymptote/GUI/res/icons/center.asy
-2022/01/06 | 111 | graphics/asymptote/examples/shadestroke.asy
-2022/01/06 | 1114 | graphics/asymptote/examples/laserlattice.asy
-2022/01/06 | 11122 | graphics/asymptote/base/math.asy
-2022/01/06 | 1111 | graphics/asymptote/examples/imagehistogram.asy
-2022/01/06 | 11111 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/textDocument.cpp
-2022/01/06 | 1109 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/codeActionResult.h
-2022/01/06 | 1105 | graphics/asymptote/LspCpp/LibLsp/lsp/lsMarkedString.h
-2022/01/06 | 1101 | graphics/asymptote/cudareflect/tinyexr/examples/resize/resize.cc
-2022/01/06 | 109 | graphics/asymptote/tests/string/insert.asy
-2022/01/06 | 109 | graphics/asymptote/GUI/res/icons/closedpolygon.asy
-2022/01/06 | 109 | graphics/asymptote/GUI/res/icons/closedcurve.asy
-2022/01/06 | 1098 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/rename.h
-2022/01/06 | 10989 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/unchecked.h
-2022/01/06 | 1096 | graphics/asymptote/tests/array/transpose.asy
-2022/01/06 | 1096 | graphics/asymptote/refaccess.cc
-2022/01/06 | 1096 | graphics/asymptote/drawlayer.h
-2022/01/06 | 10928 | graphics/asymptote/LspCpp/third_party/utfcpp/source/utf8/core.h
-2022/01/06 | 108 | graphics/asymptote/GUI/res/icons/subdirectory-left.svg
-2022/01/06 | 108 | graphics/asymptote/cudareflect/tinyexr/jni/README.md
-2022/01/06 | 1088 | graphics/asymptote/LspCpp/third_party/threadpool/TODO
-2022/01/06 | 1088 | graphics/asymptote/examples/NURBSsphere.asy
-2022/01/06 | 1087 | graphics/asymptote/GUI/res/icons/undo.svg
-2022/01/06 | 1086 | graphics/asymptote/base/shaders/partialsum.glsl
-2022/01/06 | 10840 | graphics/asymptote/base/CAD.asy
-2022/01/06 | 1082 | graphics/asymptote/patches/README
-2022/01/06 | 1077 | graphics/asymptote/LspCpp/LibLsp/lsp/workspace/applyEdit.h
-2022/01/06 | 1072 | graphics/asymptote/cudareflect/tinyexr/examples/cube2longlat/README.md
-2022/01/06 | 1070 | graphics/asymptote/cudareflect/IrradianceGenerator.sln
-2022/01/06 | 1066 | graphics/asymptote/LspCpp/LICENSE
-2022/01/06 | 1065 | graphics/asymptote/examples/shellmethod.asy
-2022/01/06 | 10632 | graphics/asymptote/EnvVarUpdate.nsh
-2022/01/06 | 10624 | macros/latex/contrib/pascaltriangle/pascaltriangle.tex
-2022/01/06 | 1061 | graphics/asymptote/v3dheadertypes.csv
-2022/01/06 | 10607 | graphics/asymptote/LspCpp/network/uri/detail/uri_parse.cpp
-2022/01/06 | 1058 | graphics/asymptote/GUI/res/icons/closedpolygon.svg
-2022/01/06 | 10585 | graphics/asymptote/path3.h
-2022/01/06 | 10581 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/serializer.h
-2022/01/06 | 10571 | graphics/asymptote/cudareflect/tinyexr/deps/miniz/examples/example5.c
-2022/01/06 | 1056 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/didRenameFiles.h
-2022/01/06 | 10563 | graphics/asymptote/cudareflect/tinyexr/test/unit/kuroga.py
-2022/01/06 | 10561 | graphics/asymptote/cudareflect/tinyexr/kuroga.py
-2022/01/06 | 1055 | graphics/asymptote/LspCpp/LibLsp/lsp/general/initialize.cpp
-2022/01/06 | 1055 | graphics/asymptote/examples/partitionExample.asy
-2022/01/06 | 1054 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/onTypeFormatting.h
-2022/01/06 | 1053 | graphics/asymptote/doc/fillcontour.asy
-2022/01/06 | 1051 | graphics/asymptote/prc/PRCTools/inflation.h
-2022/01/06 | 1051 | graphics/asymptote/doc/eetomumu.asy
-2022/01/06 | 1050 | graphics/asymptote/opsymbols.pl
-2022/01/06 | 104 | graphics/asymptote/examples/tiling.asy
-2022/01/06 | 1044671 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/screenshots/exrview.png
-2022/01/06 | 10445 | graphics/asymptote/INSTALL
-2022/01/06 | 1043 | graphics/asymptote/GUI/res/icons/openpolygon.svg
-2022/01/06 | 1040 | graphics/asymptote/examples/lmfit1.asy
-2022/01/06 | 1037 | graphics/asymptote/examples/animations/inlinemovie3.tex
-2022/01/06 | 1034565 | fonts/libertinust1math/type1/LibertinusT1math.pfb
-2022/01/06 | 1033 | graphics/asymptote/LspCpp/LibLsp/lsp/textDocument/prepareRename.h
-2022/01/06 | 1033 | graphics/asymptote/examples/basealign.asy
-2022/01/06 | 1032 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_checked_iterator.cpp
-2022/01/06 | 1030 | graphics/asymptote/LspCpp/network/uri.hpp
-2022/01/06 | 1030 | graphics/asymptote/examples/workcone.asy
-2022/01/06 | 102 | graphics/asymptote/tests/gc/file.asy
-2022/01/06 | 102 | graphics/asymptote/GUI/res/icons/openpolygon.asy
-2022/01/06 | 102 | graphics/asymptote/GUI/res/icons/opencurve.asy
-2022/01/06 | 10271 | graphics/asymptote/GUI/windows/custMatTransform.ui
-2022/01/06 | 1022 | graphics/asymptote/GUI/res/icons/centerorigin.svg
-2022/01/06 | 10224 | graphics/asymptote/tr.cc
-2022/01/06 | 10221 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/WebSocketServer.cpp
-2022/01/06 | 1021153 | info/kaytannollista-latexia.zip
-2022/01/06 | 1020 | graphics/asymptote/flatguide.cc
-2022/01/06 | 1019 | graphics/asymptote/LspCpp/LibLsp/lsp/client/unregisterCapability.h
-2022/01/06 | 10196 | graphics/asymptote/doc/CAD.tex
-2022/01/06 | 1015 | graphics/asymptote/GUI/xasyTransform.py
-2022/01/06 | 1013 | graphics/asymptote/GUI/res/icons/chevron-with-circle-left.svg
-2022/01/06 | 1010 | graphics/asymptote/examples/washermethod.asy
-2022/01/06 | 100 | graphics/asymptote/GUI/DebugFlags.py
-2022/01/06 | 10093 | graphics/asymptote/util.cc
-2022/01/06 | 1008 | graphics/asymptote/doc/leastsquares.asy
-2022/01/06 | 10070 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/RemoteEndPoint.h
-2022/01/06 | 1006 | graphics/asymptote/LspCpp/third_party/threadpool/boost/threadpool/detail/scope_guard.hpp
-2022/01/06 | 1005 | graphics/asymptote/doc/asy.1.begin
-2022/01/06 | 1003 | graphics/asymptote/GUI/res/icons/eye.svg
-2022/01/06 | 10038 | graphics/asymptote/GUI/pyUIClass/custMatTransform.py
-2022/01/06 | 10037 | graphics/asymptote/v3dfile.cc
-2022/01/06 | 1002 | graphics/asymptote/LspCpp/third_party/utfcpp/tests/test_unchecked_iterator.cpp
-2022/01/06 | 1002 | graphics/asymptote/LspCpp/LibLsp/lsp/extention/jdtls/checkHashCodeEqualsStatus.h
-2022/01/06 | 1000 | graphics/asymptote/LspCpp/LibLsp/JsonRpc/StreamMessageProducer.h
-2022/01/06 | 1000 | graphics/asymptote/doc/FAQ/Makefile
-2022/01/06 | 100007 | graphics/asymptote/cudareflect/tinyexr/examples/exrview/ThirdPartyLibs/nativefiledialog/screens/open_cocoa.png
diff --git a/info/biblio/printing-history.bib b/info/biblio/printing-history.bib
index 7d01859ff4..875018d4a6 100644
--- a/info/biblio/printing-history.bib
+++ b/info/biblio/printing-history.bib
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% BibTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "1.06",
-%%% date = "09 March 2021",
-%%% time = "06:29:20 MST",
+%%% version = "1.07",
+%%% date = "13 January 2022",
+%%% time = "08:16:20 MST",
%%% filename = "printing-history.bib",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "61197 15961 65801 651970",
+%%% checksum = "06547 15964 65804 652221",
%%% email = "beebe at math.utah.edu, beebe at acm.org,
%%% beebe at computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -49,7 +49,7 @@
%%% in issue field values in the BibTeX entries
%%% in this bibliography.
%%%
-%%% At version 1.06, the COMPLETE year coverage
+%%% At version 1.07, the COMPLETE year coverage
%%% looked like this:
%%%
%%% 1764 ( 1) 1850 ( 0) 1936 ( 0)
@@ -7944,7 +7944,10 @@
bibdate = "Fri Aug 25 18:30:45 2017",
bibsource = "http://www.math.utah.edu/pub/tex/bib/printing-history.bib;
http://www.math.utah.edu/pub/tex/bib/typeset.bib",
- URL = "https://printinghistory.org/publications/printing-history/ns/#21",
+ URL = "http://web.mit.edu/Saltzer/www/publications/CC-244.html;
+ http://www.dpbsmith.com/tj2.html;
+ https://johnlabovitz.com/publications/The-electric-typesetter--The-origins-of-computing-in-typography.pdf;
+ https://printinghistory.org/publications/printing-history/ns/#21",
acknowledgement = ack-nhfb,
fjournal = "Printing History (New Series)",
journal-URL = "https://printinghistory.org/publications/printing-history/ns/",
diff --git a/info/biblio/printing-history.ltx b/info/biblio/printing-history.ltx
index 44fb2bfdde..d6ff2fef4e 100644
--- a/info/biblio/printing-history.ltx
+++ b/info/biblio/printing-history.ltx
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% @LaTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "1.06",
-%%% date = "09 March 2021",
-%%% time = "06:29:28 MST",
+%%% version = "1.07",
+%%% date = "13 January 2022",
+%%% time = "08:16:26 MST",
%%% filename = "printing-history.ltx",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "08882 77 278 2876",
+%%% checksum = "58603 77 278 2880",
%%% email = "beebe@math.utah.edu, beebe@acm.org,
%%% beebe@computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -58,8 +58,8 @@
WWW URL: \protect\path=http://www.math.utah.edu/~beebe/=
}
-\date{09 March 2021 \\
-Version 1.06}
+\date{13 January 2022 \\
+Version 1.07}
\begin{document}
\maketitle
\nocite{*}
diff --git a/info/biblio/typeset.bib b/info/biblio/typeset.bib
index 84d370b486..fef8dc72d5 100644
--- a/info/biblio/typeset.bib
+++ b/info/biblio/typeset.bib
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% BibTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "2.73",
-%%% date = "12 January 2022",
-%%% time = "18:09:03 MST",
+%%% version = "2.74",
+%%% date = "13 January 2022",
+%%% time = "14:12:12 MST",
%%% filename = "typeset.bib",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "42478 26100 125174 1175578",
+%%% checksum = "05216 26283 126036 1183554",
%%% email = "beebe at math.utah.edu, beebe at acm.org,
%%% beebe at computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -39,7 +39,7 @@
%%% and PDF (Portable Document Format), and
%%% sgml.bib covers SGML and HTML.
%%%
-%%% At version 2.73, the year coverage looked
+%%% At version 2.74, the year coverage looked
%%% like this:
%%%
%%% 1881 ( 1) 1928 ( 1) 1975 ( 15)
@@ -77,11 +77,11 @@
%%% 1913 ( 0) 1960 ( 0) 2007 ( 3)
%%% 1914 ( 0) 1961 ( 2) 2008 ( 0)
%%% 1915 ( 0) 1962 ( 3) 2009 ( 2)
-%%% 1916 ( 1) 1963 ( 1) 2010 ( 2)
-%%% 1917 ( 0) 1964 ( 4) 2011 ( 3)
-%%% 1918 ( 0) 1965 ( 9) 2012 ( 4)
-%%% 1919 ( 1) 1966 ( 6) 2013 ( 6)
-%%% 1920 ( 1) 1967 ( 8) 2014 ( 2)
+%%% 1916 ( 1) 1963 ( 2) 2010 ( 2)
+%%% 1917 ( 0) 1964 ( 6) 2011 ( 3)
+%%% 1918 ( 0) 1965 ( 9) 2012 ( 5)
+%%% 1919 ( 1) 1966 ( 6) 2013 ( 7)
+%%% 1920 ( 1) 1967 ( 9) 2014 ( 2)
%%% 1921 ( 1) 1968 ( 4) 2015 ( 4)
%%% 1922 ( 0) 1969 ( 9) 2016 ( 1)
%%% 1923 ( 1) 1970 ( 7) 2017 ( 5)
@@ -92,8 +92,8 @@
%%% 19xx ( 3)
%%% 20xx ( 2)
%%%
-%%% Article: 345
-%%% Book: 319
+%%% Article: 346
+%%% Book: 322
%%% InCollection: 5
%%% InProceedings: 55
%%% Manual: 42
@@ -102,9 +102,9 @@
%%% Periodical: 8
%%% PhdThesis: 6
%%% Proceedings: 33
-%%% TechReport: 35
+%%% TechReport: 37
%%%
-%%% Total entries: 887
+%%% Total entries: 893
%%%
%%% This bibliography has been collected from
%%% bibliographies in the author's personal
@@ -1463,6 +1463,75 @@
acknowledgement = ack-nhfb,
}
+@TechReport{Samson:1963:TTJ,
+ author = "Peter Samson",
+ title = "{TJ-2}: Type Justifying Program",
+ type = "Memo",
+ number = "PDP-9",
+ institution = "PDP-1 Computer, Massachusetts Institute of
+ Technology",
+ address = "Cambridge, MA, USA",
+ pages = "4",
+ day = "9",
+ month = may,
+ year = "1963",
+ bibdate = "Thu Jan 13 13:40:43 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ URL = "http://www.dpbsmith.com/tj2.html",
+ acknowledgement = ack-nhfb,
+ remark = "The Web site contains additional notes about the
+ document, with bitmap images of the original pages,
+ plus an annotated text transcription. The Web author
+ reports that it is still unknown whether a TJ-1 model
+ existed.",
+}
+
+@TechReport{Barnes:1964:RPP,
+ author = "Larry Barnes",
+ title = "{RUNOFF}: A Program for the Preparation of Documents",
+ type = "Memo",
+ number = "CC-244 / MAC-M-193",
+ institution = "Project MAC, Massachusetts Institute of Technology",
+ address = "Cambridge, MA, USA",
+ day = "6",
+ month = dec,
+ year = "1964",
+ bibdate = "Thu Jan 13 13:49:14 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ URL = "http://web.mit.edu/Saltzer/www/publications/CC-244.html",
+ abstract = "The command TYPSET is used to create and edit 12-bit
+ BCD line-marked files. This command permits editing and
+ revising by context, rather than by line number. The
+ command RUNOFF will print out a 12-bit BCD line-marked
+ file in manuscript format. RUNOFF contains several
+ special features not available with the DITTO command,
+ including type-justification.\par
+
+ These two commands provide an alternative to the MEMO,
+ MODIFY, and DITTO commands, and are intended to provide
+ experience with a different approach to editing
+ symbolic files.\par
+
+ This memorandum was prepared with the aid of these two
+ commands.",
+ acknowledgement = ack-nhfb,
+}
+
+@Article{Blundell:1964:PRR,
+ author = "W. E. Blundell",
+ title = "Printing Revolution: Research Push Brings Speedier Typesetting, Other Major Advances",
+ journal = "The Wall Street Journal",
+ volume = "??",
+ number = "??",
+ pages = "??--??",
+ day = "10",
+ month = dec,
+ year = "1964",
+ acknowledgement = ack-nhfb,
+ bibdate = "Thu Jan 13 13:53:17 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+}
+
@Book{Buckland:1964:CMR,
author = "Lawrence F. Buckland",
title = "The creation of a machine record of Library of
@@ -1787,6 +1856,24 @@
acknowledgement = ack-nhfb,
}
+@Book{Jasper:1967:ACT,
+ editor = "W. P. Jasper",
+ booktitle = "Advances in Computer Typesetting: Proceedings of the
+ {1966 International Computer Typesetting Conference:
+ Sussex University, July 1966}",
+ title = "Advances in Computer Typesetting: Proceedings of the
+ {1966 International Computer Typesetting Conference:
+ Sussex University, July 1966}",
+ publisher = "The Institute of Printing",
+ address = "London, UK",
+ pages = "xiii + 306",
+ year = "1967",
+ LCCN = "Z253.3 .I5 1966",
+ bibdate = "Thu Jan 13 13:58:48 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ acknowledgement = ack-nhfb,
+}
+
@Book{Kronenberg:1967:CTC,
author = "Shirley Kronenberg",
title = "Cold type composition; equipment and technique, a
@@ -2861,6 +2948,24 @@
keywords = "Computerized typesetting.",
}
+@TechReport{Goldfarb:1973:DCI,
+ author = "Charles F. Goldfarb",
+ title = "Design Considerations for Integrated Text Processing
+ Systems",
+ type = "Technical Report",
+ number = "G320-2094",
+ institution = "IBM Cambridge Scientific Center",
+ address = "Cambridge, MA, USA",
+ month = "????",
+ year = "1973",
+ bibdate = "Thu Jan 13 14:17:42 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ URL = "http://www.sgmlsource.com/history/G320-2094/G320-2094.htm",
+ acknowledgement = ack-nhfb,
+ remark = "No longer at Goldfarb's Web site. I found several
+ mentions at archive.org, but no document text.",
+}
+
@Book{Henderson:1973:ICT,
author = "Ronald L. Henderson",
title = "An introduction to computer typesetting\slash
@@ -4501,6 +4606,26 @@
typesetting",
}
+@Book{Rice:1978:BD,
+ author = "Stanley Rice",
+ title = "Book Design: Systematic Aspects",
+ publisher = "R. R. Bowker Company",
+ address = "New York, NY, USA",
+ pages = "xii + 274",
+ year = "1978",
+ ISBN = "0-8352-1044-8 (vol. 1), 0-8352-1045-6 (vol. 2)",
+ ISBN-13 = "978-0-8352-1044-7 (vol. 1), 978-0-8352-1045-4 (vol.
+ 2)",
+ LCCN = "Z116.A3 R52",
+ bibdate = "Thu Jan 13 14:13:38 MST 2022",
+ bibsource = "fsz3950.oclc.org:210/WorldCat;
+ http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ acknowledgement = ack-nhfb,
+ subject = "Book design; Mise en pages; Book design.",
+ tableofcontents = "[1]. Systematic aspects \\
+ [2]. Text format models",
+}
+
@Manual{UAPS:1978:GDT,
title = "A guide to design, typesetting, printing",
organization = "University of Arkansas Printing Services",
@@ -24167,6 +24292,53 @@
onlinedate = "13 Jul 2011",
}
+@Book{Hopkins:2012:TLM,
+ author = "Richard L. (Richard Lee) Hopkins",
+ title = "{Tolbert Lanston} and the {Monotype}: the origin of
+ digital typesetting",
+ volume = "21",
+ publisher = "University of Tampa Press",
+ address = "Tampa, FL, USA",
+ pages = "xvii + 214",
+ year = "2012",
+ ISBN = "1-59732-100-1 (hardcover), 1-59732-101-X (paperback)",
+ ISBN-13 = "978-1-59732-100-6 (hardcover), 978-1-59732-101-3
+ (paperback)",
+ LCCN = "Z126.5 .H67 2012",
+ bibdate = "Thu Jan 13 14:03:42 MST 2022",
+ bibsource = "fsz3950.oclc.org:210/WorldCat;
+ http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ series = "Typographic curiosities",
+ acknowledgement = ack-nhfb,
+ author-dates = "1939--",
+ remark = "The booklet in the pocket on the inside back cover is
+ titled \booktitle{Going with Goudy to Philadelphia} and
+ is no. 21 in the series Typographic Curiosities,
+ printed by Hill and Dale Private Press. Cary Collection
+ copy of the booklet is signed by Richard Hopkins",
+ subject = "Lanston, Tolbert; Type and type-founding; United
+ States; History; 20th century; Monotype; Typesetting
+ machines; Monotype",
+ subject-dates = "1844--1913",
+}
+
+@Misc{Milde:2012:IMS,
+ author = "G{\"u}nter Milde",
+ title = "{\tt isomath}: Mathematical style for science and
+ technology",
+ howpublished = "Web site",
+ day = "4",
+ month = sep,
+ year = "2012",
+ bibdate = "Sat Nov 04 07:12:00 2017",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ URL = "http://get-software.net/macros/latex/contrib/isomath/isomath.html",
+ acknowledgement = ack-nhfb,
+ keywords = "ISO 80000-2: Quantities and units --- Part 2:
+ Mathematical signs and symbols to be used in the
+ natural sciences and technology",
+}
+
@Article{Warnock:2012:SIC,
author = "John E. Warnock",
title = "Simple ideas that changed printing and publishing",
@@ -24195,23 +24367,6 @@
xjournal = "Proc. Amer. Philosoph. Soc.",
}
-@Misc{Milde:2012:IMS,
- author = "G{\"u}nter Milde",
- title = "{\tt isomath}: Mathematical style for science and
- technology",
- howpublished = "Web site",
- day = "4",
- month = sep,
- year = "2012",
- bibdate = "Sat Nov 04 07:12:00 2017",
- bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
- URL = "http://get-software.net/macros/latex/contrib/isomath/isomath.html",
- acknowledgement = ack-nhfb,
- keywords = "ISO 80000-2: Quantities and units --- Part 2:
- Mathematical signs and symbols to be used in the
- natural sciences and technology",
-}
-
@TechReport{Bagley:2013:RSVa,
author = "Steven R. Bagley and David F. Brailsford and Brian W.
Kernighan",
@@ -24374,6 +24529,34 @@
sarcasm",
}
+@Book{Hoyle:2013:GGP,
+ author = "John Thomas Hoyle",
+ title = "Going with {Goudy} to {Philadelphia}: a story of what
+ man has wrought",
+ publisher = "Hill \& Dale Private Press and Typefoundry",
+ address = "Terra Alta, WV, USA",
+ pages = "19",
+ year = "2013",
+ bibdate = "Thu Jan 13 14:06:56 2022",
+ bibsource = "http://www.math.utah.edu/pub/tex/bib/typeset.bib",
+ acknowledgement = ack-nhfb,
+ remark = "From the LC catalog entry: ``This edition of
+ Typographic curiosities is a demonstration using the
+ end product of the Lanston Monotype machine --- metal
+ type. All text herein was cast on a Monotype
+ composition caster \ldots{} The typeface is Frederick
+ W. Goudy's {\em Deepdene 315} \ldots{}. This booklet serves as
+ a letterpress-printed supplement to accompany
+ case-bound copies of a book titled \booktitle{Tolbert Lanston and
+ the Monotype: the origins of digital typesetting}
+ \ldots{}. The article reproduced herein, by John
+ T. Hoyle, first appeared in the Monotype Company's
+ house organ, titled \booktitle{Monotype: a journal of composing
+ room efficiency} \ldots{} December--January
+ 1920--1921. The article appeared under the title \booktitle{A
+ story of what man has wrought}.''",
+}
+
@Book{Anonymous:2014:SBI,
author = "Anonymous",
title = "{SI} Brochure: The {International System of Units
diff --git a/info/biblio/typeset.ltx b/info/biblio/typeset.ltx
index 06ff61a8f6..514f282ea6 100644
--- a/info/biblio/typeset.ltx
+++ b/info/biblio/typeset.ltx
@@ -2,9 +2,9 @@
%%% ====================================================================
%%% @LaTeX-file{
%%% author = "Nelson H. F. Beebe",
-%%% version = "2.73",
-%%% date = "12 January 2022",
-%%% time = "18:09:12 MST",
+%%% version = "2.74",
+%%% date = "13 January 2022",
+%%% time = "14:12:16 MST",
%%% filename = "typeset.ltx",
%%% address = "University of Utah
%%% Department of Mathematics, 110 LCB
@@ -14,7 +14,7 @@
%%% telephone = "+1 801 581 5254",
%%% FAX = "+1 801 581 4148",
%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "18345 78 270 2850",
+%%% checksum = "28457 78 270 2850",
%%% email = "beebe@math.utah.edu, beebe@acm.org,
%%% beebe@computer.org (Internet)",
%%% codetable = "ISO/ASCII",
@@ -59,8 +59,8 @@
WWW URL: \protect\path=http://www.math.utah.edu/~beebe/=
}
-\date{12 January 2022 \\
-Version 2.73}
+\date{13 January 2022 \\
+Version 2.74}
\begin{document}
\maketitle
\nocite{*}
diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md
index b0c8521876..2d6ce4804c 100644
--- a/macros/latex-dev/base/README.md
+++ b/macros/latex-dev/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2022-06-01 pre-release 0
+Release 2022-06-01 pre-release 1
Overview
--------
@@ -10,10 +10,15 @@ This bundle provides the core LaTeX kernel. In addition to this bundle,
a minimal LaTeX system also needs the files contained in the
- LaTeX team documentation (`doc`)
+- L3 programming layer (`l3kernel`)
+- L3 backend interfaces (`l3backend`)
+- L3 unicode support (`unicode-data`)
+
- Packages which must be available (`required`). These are
- Essential tools (`tools`)
- Core graphics and color support (`graphics`)
- Key mathematics support (`amsmath`)
+ - First aid for external packages (`firstaid`)
This file contains a small set of pointers to other more complete
documentation on installing and using a LaTeX system.
@@ -36,10 +41,6 @@ the most significant of these files are
with one line of information about the contents
- `legal.txt` and `lppl.txt` (LaTeX Project Public License) describe the
LaTeX copyright, warranty and copying restrictions.
-- `texpert.txt` contains information about the system that may still be
- useful for TeX experts
-- `tex2.txt` contains important information for users of extremely
- old versions of TeX (pre 1990)
- `bugs.txt` describes how to submit a bug report for LaTeX
Other documentation files include files with names of the form:
diff --git a/macros/latex-dev/base/alltt.dtx b/macros/latex-dev/base/alltt.dtx
index 350229ab40..908fe92400 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -104,7 +104,7 @@
% The glyph at the position of the $ in an italic font: \textit{$}.
% \end{alltt}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Implementation}
%
diff --git a/macros/latex-dev/base/alltt.ins b/macros/latex-dev/base/alltt.ins
index 7ce2103207..f46404bcf4 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 3b72ef7c0e..d6cdbc0fc7 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 92169f5af5..fae9a8bdf1 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 66c02e4c33..7694ef9b63 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 d5d2b555d8..8ae1fd7b59 100644
--- a/macros/latex-dev/base/changes.txt
+++ b/macros/latex-dev/base/changes.txt
@@ -5,12 +5,143 @@ It is provided for convenience only. It therefore makes no claims to
completeness or accuracy and it contains some references to files that
are not part of the distribution.
================================================================================
+2021-12-30 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+
+ * ltmeta.dtx:
+ Adapted bundle name to new name `LaTeX-lab'
+
+2022-01-06 Joseph Wright <Joseph.Wright-project.org>
+
+ * ltexpl.dtx (section{Document-level command names for expl3 functions}):
+ Adjust document-level names for \exp_args:Nc and the like
+
+2021-12-31 Phelype Oleinik <phelype.oleinik@latex-project.org>
+
+ * ltcmd.dtx (subsubsection{Showing the definition of a command}):
+ Make \ShowCommand stop for interaction with ltcmd (gh/739)
+
+2021-12-28 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltexpl.dtx (section{Document-level command names for expl3 functions}):
+ Added document-level names for \exp_args:Nc and the like
+ for use with \NewDocumentCommand, etc. (gh/735)
+
+2021-12-27 Marcel Krüger <Marcel.Krueger@latex-project.org>
+
+ * ltluatex.dtx:
+ Added \newluacmd and \newprotectedluacmd for easy allocation of Lua command ids.
+
+2021-12-13 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltmeta.dtx:
+ First version of this module added implementing an interface to
+ \DocumentMetadata. At the moment the actual code is outside the
+ format and only loaded if the command is called.
+
+2021-12-13 David Carlisle <David.Carlisle@latex-project.org>
+
+ * utf8ienc.dtx: Use hex 80 not A0 to test for single byte UTF-8 github/730
+
+2021-12-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltoutenc.dtx (subsection{Definitions for the TU encoding}):
+ \DeclareUnicodeAccent now makes the encoding argument implicit
+ as it is already done for other Unicode encoding commands.
+ Also added \DeclareUnicodeCommand and \DeclareUnicodeSymbol (gh/253).
+
+2021-12-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx (subsection[Dealing with the change history]):
+ Implement option recordchangedates to show dates in the change log
+ if that option is used (gh/531).
+
+2021-12-11 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltdirchk.dtx (section{Initialization}):
+ Add comment lines into latex.ltx to indicate temp definitions that
+ are later overwritten (gh/725).
+
+2021-12-10 David Carlisle <David.Carlisle@latex-project.org>
+
+ * utf8ienc.dtx: Add inputenc UTF-8 support for for Digraphs U_01C4-U+01CC
+
+2021-12-09 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * proc.dtx (subsection{The page style}):
+ Support twoside by providing an appropriate footer line (gh/704).
+
+2021-12-08 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * lttextcomp.dtx (section{Sub-encodings}):
+ Describe correctly (I hope) how sub-encodings work for TS1.
+
+2021-11-30 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltexpl.dtx:
+ Added \fpeval, \inteval, \dimeval, and \skipeval (gh711)
+
+2021-11-18 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * All *.dtx: Replaced \StopEventually by \MaybeStop
+
+2021-11-30 Joseph Wright <joseph.wright@latex-project.org>
+
+ * ltclasses.dtx
+ New option handling routine using ltkeys
+
+2021-11-26 Joseph Wright <joseph.wright@latex-project.org>
+
+ * ltkeys.dtx
+ New file to integrate keyval option processing into the kernel
+
+2021-11-17 Marcel Krüger <Marcel.Krueger@latex-project.org>
+
+ * ltluatex.dtx:
+ Classify [hv]pack_quality callbacks as exclusive
+ Never pass true to the engine for LuaTeX list callbacks
+
+2021-11-15 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * build.lua (textfiles):
+ Dropped a few obsolete documentation files (nobody installs manually these
+ days and the advice given was no longer current).
+
+ * latexchanges.tex:
+ We no longer maintain this file; instead everything is documented in ltnewsXX
+ and in the changes.txt files so we zap this file too because the double book
+ keeping always means one or the other is out of date.
+
+2021-11-14 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * doc.dtx: Replaced doc.dtx with V3 version.
+ The old doc can be reactivated with \usepackage{doc}[=v2].
+ Hyperref usage (on by default) can be turned off with
+ \usepackage[hyperref=false]{doc}.
+ New options etc are documented: use texdoc doc
+ (code documentation only partly done).
+
+2021-11-12 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltxdoc.dtx (section{Configuration file}):
+ Added our default .cfg for extraction.
+ Added option "nocfg" to bypass a system cfg.
+
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
#########################
+# 2021-11-15 PL1 Release
+#########################
+
+2021-12-02 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltcmd.dtx
+ Insert correct default values for optional arguments into the end
+ of environments
+
+#########################
# 2021-11-15 Release
#########################
@@ -150,7 +281,7 @@ All changes above are only part of the development branch for the next release.
* ltluatex.dtx:
Define missing local copy of flush_list in ltluatex.lua found
by Michal Vlasák.
-
+
2021-08-10 Phelype Oleinik <phelype.oleinik@latex-project.org>
* ltvers.dtx (section{Version Identification}):
diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx
index a13053b871..857cfc799e 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -230,7 +230,7 @@
% \maketitle
% \tableofcontents
%
-% \StopEventually{} ^^A
+% \MaybeStop{} ^^A
%
% \section{The {\sc docstrip} modules}
%
diff --git a/macros/latex-dev/base/classes.ins b/macros/latex-dev/base/classes.ins
index be0dcaf8ff..1f7b331691 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 3bd8c80577..e4e848f690 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 c3e212d10a..b6d4901363 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 3667210e5f..6f4d1cf027 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 c530e04d0b..a2befb3aef 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/cmfonts.ins b/macros/latex-dev/base/cmfonts.ins
index d54a325f42..55af4759c5 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 90b38f43fd..f147e56c71 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 b3f7d2016b..7483d4a07f 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 07d4bc0b3f..3b16687f39 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/doc-2016-02-15.sty b/macros/latex-dev/base/doc-2016-02-15.sty
new file mode 100644
index 0000000000..96b6500463
--- /dev/null
+++ b/macros/latex-dev/base/doc-2016-02-15.sty
@@ -0,0 +1,826 @@
+%%
+%% This is file contains the code from 'doc.sty' from around 2017.
+%%
+%% The original source files were:
+%%
+%% doc.dtx (with options: `package')
+%%
+%%
+%% Copyright 1993-2016
+%% The LaTeX3 Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the LaTeX base system.
+%% --------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This file contains the code for an earlier release and is therefore
+%% frozen. It is used as part of the current doc.sty when the user
+%% requests a rollback.
+%%
+\NeedsTeXFormat{LaTeX2e}[1994/12/01]
+ \ProvidesPackage{doc}
+ [2016/02/15 v2.1g
+ Standard LaTeX documentation package (FMi)]
+%%
+%% Package `doc' to use with LaTeX 2e
+%% Copyright (C) 1989-1999 Frank Mittelbach, all rights reserved.
+\@ifundefined{macro@cnt}{}{\endinput}
+\catcode`\^^A=14
+\AtBeginDocument{\catcode`\^^A=14\relax}
+\def\macrocode{\macro@code
+ \frenchspacing \@vobeyspaces
+ \xmacro@code}
+\def\macro@code{%
+ \topsep \MacrocodeTopsep
+ \@beginparpenalty \predisplaypenalty
+ \if@inlabel\leavevmode\fi
+ \trivlist \parskip \z@ \item[]%
+ \macro@font
+ \leftskip\@totalleftmargin \advance\leftskip\MacroIndent
+ \rightskip\z@ \parindent\z@ \parfillskip\@flushglue
+ \blank@linefalse \def\par{\ifblank@line
+ \leavevmode\fi
+ \blank@linetrue\@@par
+ \penalty\interlinepenalty}
+ \obeylines
+ \let\do\do@noligs \verbatim@nolig@list
+ \let\do\@makeother \dospecials
+ \global\@newlistfalse
+ \global\@minipagefalse
+ \ifcodeline@index
+ \everypar{\global\advance\c@CodelineNo\@ne
+ \llap{\theCodelineNo\ \hskip\@totalleftmargin}%
+ \check@module}%
+ \else \everypar{\check@module}%
+ \fi
+ \init@crossref}
+\newif\ifblank@line
+\def\endmacrocode{%
+ \ifpm@module \endgroup \pm@modulefalse \fi
+ \everypar{}%
+ \global\@inlabelfalse
+ \endtrivlist
+ \close@crossref}
+\@ifundefined{MacroFont}{%
+ \if@compatibility
+ \def\MacroFont{\small
+ \usefont\encodingdefault
+ \ttdefault
+ \mddefault
+ \updefault
+ }%
+ \else
+ \def\MacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\updefault
+ \small}%
+ \fi
+ }{}
+\@ifundefined{AltMacroFont}{%
+ \if@compatibility
+ \def\AltMacroFont{\small
+ \usefont\encodingdefault
+ \ttdefault
+ \mddefault
+ \sldefault
+ }%
+ \else
+ \def\AltMacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\sldefault
+ \small
+ }%
+ \fi
+ }{}
+\AtBeginDocument{\let\macro@font\MacroFont}
+\def\check@module{%
+ \ifcheck@modules
+ \ifpm@module \endgroup \pm@modulefalse \fi
+ \expandafter\futurelet\expandafter\next\expandafter\ch@percent
+ \fi}
+\newif\ifpm@module
+\def\DontCheckModules{\check@modulesfalse}
+\def\CheckModules{\check@modulestrue}
+\newif\ifcheck@modules \check@modulestrue
+\def\ch@percent{%
+ \if \percentchar\next
+ \expandafter\check@angle
+ \fi}
+\def\check@angle#1{\futurelet\next\ch@angle}
+\begingroup
+\catcode`\<\active
+\gdef\ch@angle{\ifx<\next
+ \expandafter\ch@plus@etc
+ \else \percentchar \fi}
+\gdef\ch@plus@etc<{\futurelet\next\check@plus@etc}
+\gdef\check@plus@etc{%
+ \if +\next
+ \let\next\pm@module
+ \else\if -\next
+ \let\next\pm@module
+ \else\if *\next
+ \let\next\star@module
+ \else\if /\next
+ \let\next\slash@module
+ \else\ifx <\next
+ \percentchar
+ \else
+ \let\next\pm@module
+ \fi\fi\fi\fi\fi
+ \next}
+\endgroup
+\begingroup
+\catcode`\~=\active
+\lccode`\~=`\>
+\lowercase{\gdef\pm@module#1~}{\pm@moduletrue
+ \Module{#1}\begingroup
+ \advance\guard@level\@ne
+ \ifnum\guard@level>\c@StandardModuleDepth\AltMacroFont\fi
+}
+\lowercase{\gdef\star@module#1~}{%
+ \Module{#1}%
+ \global \advance \guard@level\@ne
+ \ifnum \guard@level>\c@StandardModuleDepth
+ \global\let\macro@font=\AltMacroFont \macro@font
+ \fi}
+\catcode`\>=\active
+\gdef\slash@module#1>{%
+ \Module{#1}%
+ \global \advance \guard@level\m@ne
+ \ifnum \guard@level=\c@StandardModuleDepth
+ \global\let\macro@font\MacroFont \macro@font
+ \fi
+}
+\endgroup
+\newcounter{StandardModuleDepth}
+\newcount \guard@level
+\@ifundefined{Module}{%
+ \def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$}
+ }{}
+\def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026
+ \mathcode`\-="702D \mathcode`\+="702B
+ \mathcode`\:="703A \mathcode`\=="703D }
+\newskip\MacrocodeTopsep \MacrocodeTopsep = 3pt plus 1.2pt minus 1pt
+\newdimen\MacroIndent
+\settowidth\MacroIndent{\rmfamily\scriptsize 00\ }
+\@namedef{macrocode*}{\macro@code\sxmacro@code}
+\expandafter\let\csname endmacrocode*\endcsname = \endmacrocode
+\catcode`\!=\catcode`\% ^^A In this section there must not be
+ ^^A any exclamation marks.
+ ^^A
+\begingroup
+\catcode`\|=\z@ \catcode`\[=\@ne \catcode`\]=\tw@
+\catcode`\{=12 \catcode`\}=12
+\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
+!% \end{macrocode*}
+! Next follows the actual definition of |\macro@code|;
+! notice the
+! use of the new escape character. We manage to get the argument
+! surrounded by the string |\end{macrocode}|, but at the end
+! however, in spite of the actual characters used during the
+! definition of
+! this macro, |\end| with the argument |{macrocode}|
+! will be executed, to ensure a balanced environment.
+! \begin{macrocode*}
+|gdef|xmacro@code#1% \end{macrocode}[#1|end[macrocode]]
+!% \end{macrocode*}
+! \begin{macro}{\sxmacro@code}
+! The definition of |\sxmacro@code| is completely analogous,
+! only
+! here a slightly different terminating string will be used.
+! Note that the space is not active in this environment.
+! \begin{macrocode}
+|catcode`| =12
+|gdef|sxmacro@code#1% \end{macrocode*}[#1|end[macrocode*]]
+!% \end{macrocode}
+! because the |\catcode| changes have been made local by
+! commencing a
+! new group, there now follows the matching |\endgroup|
+! in a rather
+! unusual style of writing.
+! \begin{macrocode}
+|endgroup
+!% \end{macrocode}
+\catcode`\!=12
+\def\DescribeMacro{\leavevmode\@bsphack
+ \begingroup\MakePrivateLetters\Describe@Macro}
+\def\Describe@Macro#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeMacro{#1}}%
+ \SpecialUsageIndex{#1}\@esphack\ignorespaces}
+\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+ \Describe@Env}
+\def\Describe@Env#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+ \SpecialEnvIndex{#1}\@esphack\ignorespaces}
+\reversemarginpar
+\setlength\marginparpush{0pt} \setlength\marginparwidth{8pc}
+{\catcode`\|=\z@ \catcode`\\=12
+|gdef|bslash{\}}
+\def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
+ \MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
+\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
+ \MacroFont \@sxverbatim}
+\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin\rightskip\z@
+ \parindent\z@\parfillskip\@flushglue\parskip\z@
+ \@@par
+ \@tempswafalse
+ \def\par{\if@tempswa\hbox{}\fi\@tempswatrue\@@par
+ \penalty\interlinepenalty
+ \check@percent}%
+ \obeylines
+ \let\do\do@noligs \verbatim@nolig@list
+ \let\do\@makeother \dospecials}
+{\catcode`\%=12
+ \long\gdef\check@percent#1{\ifx #1%\let\next\@empty \else
+ \let\next=#1\fi \next}}
+\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+ \bgroup \let\do\do@noligs \verbatim@nolig@list
+ \ttfamily \verb@eol@error \let\do\@makeother \dospecials
+ \@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
+\let\verb@balance@group\@empty
+
+\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
+
+\begingroup
+ \obeylines%
+ \gdef\verb@eol@error{\obeylines%
+ \def^^M{\verb@egroup\@latex@error{%
+ Text for \noexpand\verb command ended by end of line}\@ehc}}%
+\endgroup
+\def\@sverb#1{%
+ \catcode`#1\active \lccode`\~`#1%
+ \gdef\verb@balance@group{\verb@egroup
+ \@latex@error{Illegal use of \noexpand\verb command}\@ehc}%
+ \aftergroup\verb@balance@group
+ \lowercase{\let~\verb@egroup}}
+\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
+\def\do@noligs#1{%
+ \catcode`#1\active
+ \begingroup
+ \lccode`\~=`#1\relax
+ \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
+\newcount\macro@cnt \macro@cnt=0
+\def\macro{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \iftrue}
+\def\environment{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \iffalse}
+\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved@macroname{\string#2}%
+ #1
+ \let\saved@indexname\saved@macroname
+ \else
+ \edef\saved@indexname{\expandafter\@gobble\string#2}%
+ \fi
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty \count@\macro@cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro@cnt \@ne
+ \else \macro@cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ #1%
+ \noexpand\PrintMacroName
+ \else
+ \noexpand\PrintEnvName
+ \fi
+ {\string#2}]}%
+ \@tempa
+ \global\advance\c@CodelineNo\@ne
+ #1%
+ \SpecialMainIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \else
+ \SpecialMainEnvIndex{#2}\nobreak
+ \fi
+ \global\advance\c@CodelineNo\m@ne
+ \ignorespaces}
+\let\endmacro \endtrivlist
+\let\endenvironment\endmacro
+\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
+\@ifundefined{PrintMacroName}
+ {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
+\@ifundefined{PrintDescribeMacro}
+ {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
+\@ifundefined{PrintDescribeEnv}
+ {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
+\@ifundefined{PrintEnvName}
+ {\def\PrintEnvName#1{\strut \MacroFont #1\ }}{}
+\begingroup
+\catcode`\~\active
+\gdef\SpecialEscapechar#1{%
+ \begingroup
+ \uccode`\~`#1%
+ \uppercase{\gdef\active@escape@char{~}}%
+ \escapechar\m@ne \xdef\special@escape@char{\string#1}%
+ \endgroup}
+\endgroup
+\begingroup \catcode`\|=\z@ \catcode`\\=\active
+|gdef|init@crossref{|catcode`|\|active |let\|bslash
+ |MakePrivateLetters
+ |catcode|expandafter`|special@escape@char|active
+ |expandafter|let|active@escape@char|scan@macro}
+|endgroup
+\SpecialEscapechar{\\}
+\@ifundefined{MakePrivateLetters}
+ {\let\MakePrivateLetters\makeatletter}{}
+\def\close@crossref{\SpecialEscapechar\\}
+\def\scan@macro{%
+ \special@escape@char
+ \step@checksum
+ \ifscan@allowed
+ \let\macro@namepart\@empty
+ \def\next{\futurelet\next\macro@switch}%
+ \else \let\next\@empty \fi
+ \next}
+\newif\ifscan@allowed \scan@allowedtrue
+\def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
+\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
+ \def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
+\def\macro@switch{\ifcat\noexpand\next a%
+ \let\next\macro@name
+ \else \let\next\short@macro \fi
+ \next}
+\begingroup
+\catcode`\&=12
+\gdef\short@macro#1{\begingroup
+ \uccode`\&=\expandafter`\string#1%
+ \uppercase{\def\x{\def\macro@namepart{&}}}%
+ \expandafter\endgroup\x
+ \ifnot@excluded
+ \produce@index{#1}\fi
+ \scan@allowedfalse#1%
+ \scan@allowedtrue }
+\endgroup
+\def\produce@index#1{%
+ \if\noexpand#1\special@escape@char
+ \scan@allowedfalse \it@is@a\special@escape@char \else
+ \if\noexpand#1\bslash \it@is@a\bslash \else
+ \if\noexpand#1\space \it@is@a\space \else
+ \ifx#1\par
+ \it@is@a\space \else
+ \ifx#1\relax \else
+ \if\noexpand#1\bgroup \LeftBraceIndex \else
+ \if\noexpand#1\egroup \RightBraceIndex \else
+ \if\noexpand#1\percentchar \PercentIndex \else
+ \it@is@a{\string#1}%
+ \fi \fi \fi \fi \fi \fi \fi \fi}
+\def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
+ \futurelet\next\more@macroname}
+\def\more@macroname{\ifcat\noexpand\next a%
+ \let\next\macro@name
+ \else \let\next\macro@finish \fi
+ \next}
+\def\macro@finish{%
+ \macro@namepart
+ \ifnot@excluded
+ \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
+ \@tempa \fi}
+\def\DoNotIndex{\begingroup \MakePrivateLetters
+ \catcode`\\12
+ \do@not@index}
+\long\def\do@not@index#1{%
+ \endgroup
+ \addto@hook\index@excludelist{#1,}}
+\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+\newtoks\index@excludelist
+\index@excludelist{}
+\begingroup
+\catcode`\|=0%
+\catcode`\\=12
+|gdef|ifnot@excluded{|expandafter
+ |expanded@notin|expandafter{|expandafter
+ \|macro@namepart,}{|the|index@excludelist}}
+|endgroup
+\def\expanded@notin#1#2{%
+ \def\in@@##1#1##2##3\in@@{%
+ \ifx\expanded@notin##2}%
+ \expandafter\in@@#2#1\expanded@notin\in@@}
+\@ifundefined{actualchar}{\def\actualchar{=}}{}
+\@ifundefined{quotechar}{\def\quotechar{!}}{}
+\@ifundefined{levelchar}{\def\levelchar{>}}{}
+\@ifundefined{encapchar}{\def\encapchar{|}}{}
+\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
+\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
+ \string#1\actualchar
+ \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
+ \@esphack}
+
+\def\SpecialMainIndex#1{\@bsphack\SpecialIndex@{#1}{\encapchar main}%
+ \@esphack}
+\begingroup
+ \catcode`\|=0
+ \catcode`\\=12
+ |gdef|@SpecialIndexHelper@#1#2|@nil{%
+ |if |noexpand#1\%
+ |gdef|@gtempa{#2}%
+ |else
+ |begingroup
+ |escapechar|m@ne
+ |expandafter|gdef|expandafter|@gtempa|expandafter{|string#1#2}%
+ |endgroup
+ |fi}
+|endgroup
+\def\SpecialIndex@#1#2{%
+ \@SpecialIndexHelper@#1\@nil
+ \def\@tempb{ }%
+ \ifcat \@tempb\@gtempa
+ \special@index{\quotechar\space\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar\space\verbatimchar#2}%
+ \else
+ \def\@tempb##1##2\relax{\ifx\relax##2\relax
+ \def\@tempc{\special@index{\quotechar##1\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar##1\verbatimchar#2}}%
+ \else
+ \def\@tempc{\special@index{##1##2\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \bslash##1##2\verbatimchar#2}}%
+ \fi}%
+ \expandafter\@tempb\@gtempa\relax
+ \@tempc
+ \fi}
+\def\SpecialMainEnvIndex#1{\@bsphack\special@index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (environment)%
+ \encapchar main}%
+ \special@index{environments:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ main}\@esphack}
+\def\SpecialUsageIndex#1{\@bsphack
+ {\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}%
+ \@esphack}
+\def\SpecialEnvIndex#1{\@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (environment)\encapchar usage}%
+ \index{environments:\levelchar#1\actualchar
+ {\protect\ttfamily#1}\encapchar usage}\@esphack}
+\def\SortIndex#1#2{\index{#1\actualchar#2}}
+\def\it@is@a#1{\special@index{\quotechar #1\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar#1\verbatimchar}}
+\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
+ \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
+ \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
+
+\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
+ \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
+ \quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
+\@ifundefined{PercentIndex}
+ {\def\PercentIndex{\it@is@a\percentchar}}{}
+\def\OldMakeindex{\def\PercentIndex{%
+ \special@index{\quotechar\percentchar\actualchar\string\verb
+ \quotechar*\verbatimchar\quotechar\bslash
+ \percentchar\percentchar\verbatimchar}}}
+{\catcode`\%=12 \gdef\percentchar{%}}
+\newif\ifhave@multicol
+\IfFileExists{multicol.sty}{\have@multicoltrue
+ \RequirePackage{multicol}%
+ }{}
+
+\newdimen\IndexMin \IndexMin = 80pt
+\newcount\c@IndexColumns \c@IndexColumns = 3
+\ifhave@multicol
+ \renewenvironment{theindex}
+ {\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
+ \IndexParms \let\item\@idxitem \ignorespaces}%
+ {\end{multicols}}
+\else
+ \typeout{Can't find multicol.sty -- will use normal index layout if
+ necessary.}
+ \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+ \columnseprule \z@ \columnsep 35\p@
+ \twocolumn[\index@prologue]%
+ \IndexParms \let\item\@idxitem \ignorespaces}
+ \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\fi
+\long\def\IndexPrologue#1{\@bsphack\def\index@prologue{#1}\@esphack}
+\@ifundefined{index@prologue}
+ {\def\index@prologue{\section*{Index}%
+ \markboth{Index}{Index}%
+ Numbers written in italic refer to the page
+ where the corresponding entry is described;
+ numbers underlined refer to the
+ \ifcodeline@index
+ code line of the
+ \fi
+ definition; numbers in roman refer to the
+ \ifcodeline@index
+ code lines
+ \else
+ pages
+ \fi
+ where the entry is used.
+ }}{}
+\@ifundefined{IndexParms}
+ {\def\IndexParms{%
+ \parindent \z@
+ \columnsep 15pt
+ \parskip 0pt plus 1pt
+ \rightskip 15pt
+ \mathsurround \z@
+ \parfillskip=-15pt
+ \small
+ \def\@idxitem{\par\hangindent 30pt}%
+ \def\subitem{\@idxitem\hspace*{15pt}}%
+ \def\subsubitem{\@idxitem\hspace*{25pt}}%
+ \def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
+ }}{}
+\def\efill{\hfill\nopagebreak}%
+\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill}%
+\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil}%
+\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
+ \dotfil~\ignorespaces}%
+\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
+\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
+\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
+\def\PrintIndex{\@input@{\jobname.ind}%
+ \global\let\PrintIndex\@empty}
+\def\changes{\@bsphack\begingroup\@sanitize
+ \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
+ \changes@}
+\def\changes@#1#2#3{%
+ \protected@edef\@tempa{\noexpand\glossary{#1\levelchar
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \saved@indexname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
+ \@tempa\endgroup\@esphack}
+\def\saved@macroname{}
+\def\saved@indexname{}
+\def\generalname{General}
+\let\RecordChanges\makeglossary
+\newdimen\GlossaryMin \GlossaryMin = 80pt
+\newcount\c@GlossaryColumns \c@GlossaryColumns = 2
+\ifhave@multicol
+ \newenvironment{theglossary}{%
+ \begin{multicols}\c@GlossaryColumns
+ [\glossary@prologue][\GlossaryMin]%
+ \GlossaryParms \let\item\@idxitem \ignorespaces}%
+ {\end{multicols}}
+\else
+ \newenvironment{theglossary}{%
+ \@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+ \columnseprule \z@ \columnsep 35\p@
+ \twocolumn[\glossary@prologue]%
+ \GlossaryParms \let\item\@idxitem \ignorespaces}
+ {\if@restonecol\onecolumn\else\clearpage\fi}
+\fi
+\long\def\GlossaryPrologue#1{\@bsphack
+ \def\glossary@prologue{#1}%
+ \@esphack}
+\@ifundefined{glossary@prologue}
+ {\def\glossary@prologue{\section*{{Change History}}%
+ \markboth{{Change History}}{{Change History}}%
+ }}{}
+\@ifundefined{GlossaryParms}{\let\GlossaryParms\IndexParms
+ \expandafter\def\expandafter\GlossaryParms\expandafter{\GlossaryParms
+ \rightskip 15pt plus 1fil
+ \parfillskip -15pt plus -1fil\relax}
+}{}
+\def\PrintChanges{\@input@{\jobname.gls}%
+ \global\let\PrintChanges\@empty}
+\newcommand\AlsoImplementation{%
+ \long\def\StopEventually##1{\@bsphack\gdef\Finale{##1%
+ \check@checksum}%
+ \init@checksum
+ \@esphack}%
+ }
+\AlsoImplementation
+\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
+ ##1\endinput}\@esphack}
+\let\Finale\relax
+\ifx\l@nohyphenation\undefined
+ \newlanguage\l@nohyphenation
+\fi
+\DeclareRobustCommand\meta[1]{%
+ \ensuremath\langle
+ \ifmmode \expandafter \nfss@text \fi
+ {%
+ \meta@font@select
+ \edef\meta@hyphen@restore
+ {\hyphenchar\the\font\the\hyphenchar\font}%
+ \hyphenchar\font\m@ne
+ \language\l@nohyphenation
+ #1\/%
+ \meta@hyphen@restore
+ }\ensuremath\rangle
+}
+\def\meta@font@select{\itshape}
+\def\IndexInput#1{%
+ \begingroup \macro@code
+ \frenchspacing \@vobeyspaces
+ \input{#1}\endmacrocode
+ \endgroup}
+\def\maketitle{\par
+ \begingroup \def \thefootnote {\fnsymbol {footnote}}%
+ \setcounter {footnote}\z@
+ \def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
+ \if@twocolumn \twocolumn [\@maketitle ]%
+ \else \newpage \global \@topnum \z@ \@maketitle \fi
+ \thispagestyle{titlepage}\@thanks \endgroup
+ \setcounter {footnote}\z@
+ \gdef\@date{\today}\gdef\@thanks{}%
+ \gdef\@author{}\gdef\@title{}}
+\@ifundefined{ps@titlepage}
+ {\let\ps@titlepage=\ps@plain}{}
+\def\MakeShortVerb{%
+ \@ifstar
+ {\def\@shortvrbdef{\verb*}\@MakeShortVerb}%
+ {\def\@shortvrbdef{\verb}\@MakeShortVerb}}
+\def\@MakeShortVerb#1{%
+ \expandafter\ifx\csname cc\string#1\endcsname\relax
+ \@shortvrbinfo{Made }{#1}\@shortvrbdef
+ \add@special{#1}%
+ \expandafter
+ \xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
+ \begingroup
+ \catcode`\~\active \lccode`\~`#1%
+ \lowercase{%
+ \global\expandafter\let
+ \csname ac\string#1\endcsname~%
+ \expandafter\gdef\expandafter~\expandafter{\@shortvrbdef~}}%
+ \endgroup
+ \global\catcode`#1\active
+ \else
+ \@shortvrbinfo\@empty{#1 already}{\@empty\verb(*)}%
+ \fi}
+\def\DeleteShortVerb#1{%
+ \expandafter\ifx\csname cc\string#1\endcsname\relax
+ \@shortvrbinfo\@empty{#1 not}{\@empty\verb(*)}%
+ \else
+ \@shortvrbinfo{Deleted }{#1 as}{\@empty\verb(*)}%
+ \rem@special{#1}%
+ \global\catcode`#1\csname cc\string#1\endcsname
+ \global \expandafter\let \csname cc\string#1\endcsname \relax
+ \ifnum\catcode`#1=\active
+ \begingroup
+ \catcode`\~\active \lccode`\~`#1%
+ \lowercase{%
+ \global\expandafter\let\expandafter~%
+ \csname ac\string#1\endcsname}%
+ \endgroup \fi \fi}
+\def\@shortvrbinfo#1#2#3{%
+ \PackageInfo{doc}{%
+ #1\expandafter\@gobble\string#2 a short reference
+ for \expandafter\string#3}}
+\def\add@special#1{%
+ \rem@special{#1}%
+ \expandafter\gdef\expandafter\dospecials\expandafter
+ {\dospecials \do #1}%
+ \expandafter\gdef\expandafter\@sanitize\expandafter
+ {\@sanitize \@makeother #1}}
+\def\rem@special#1{%
+ \def\do##1{%
+ \ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
+ \xdef\dospecials{\dospecials}%
+ \begingroup
+ \def\@makeother##1{%
+ \ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
+ \xdef\@sanitize{\@sanitize}%
+ \endgroup}
+\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
+ syntax, this is obsolete ***}\MakeShortVerb}
+\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
+ syntax, this is obsolete ***}\DeleteShortVerb}
+\def\init@checksum{\relax
+ \global\bslash@cnt\z@}
+\def\check@checksum{\relax
+ \ifnum\check@sum>\m@ne
+ \ifnum\check@sum=\z@
+ \typeout{**********************************}%
+ \typeout{* This macro file has no checksum!}%
+ \typeout{* The checksum should be \the\bslash@cnt!}%
+ \typeout{**********************************}%
+ \else
+ \ifnum\check@sum=\bslash@cnt
+ \typeout{*******************}%
+ \typeout{* Checksum passed *}%
+ \typeout{*******************}%
+ \else
+ \PackageError{doc}{Checksum not passed
+ (\the\check@sum<>\the\bslash@cnt)}%
+ {The file currently documented seems to be wrong.^^J%
+ Try to get a correct version.}%
+ \fi
+ \fi
+ \fi
+ \global\check@sum\m@ne}
+\newcount\check@sum \check@sum = \m@ne
+\newcount\bslash@cnt \bslash@cnt = \z@
+\def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
+\def\step@checksum{\global\advance\bslash@cnt\@ne}
+\def\CharacterTable{\begingroup \CharTableChanges \character@table}
+\begingroup
+ \catcode`\~=11
+ \gdef\character@table#1{\def\used~table{#1}%
+ \ifx\used~table\default~table
+ \typeout{***************************}%
+ \typeout{* Character table correct *}%
+ \typeout{***************************}%
+ \else
+ \PackageError{doc}{Character table corrupted}
+ {\the\wrong@table}
+ \show\default~table
+ \show\used~table
+ \fi
+ \endgroup}
+ \global\let\CharTableChanges\@empty
+ \makeatother
+ \gdef\default~table
+ {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+ Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+ Digits \0\1\2\3\4\5\6\7\8\9
+ Exclamation \! Double quote \" Hash (number) \#
+ Dollar \$ Percent \% Ampersand \&
+ Acute accent \' Left paren \( Right paren \)
+ Asterisk \* Plus \+ Comma \,
+ Minus \- Point \. Solidus \/
+ Colon \: Semicolon \; Less than \<
+ Equals \= Greater than \> Question mark \?
+ Commercial at \@ Left bracket \[ Backslash \\
+ Right bracket \] Circumflex \^ Underscore \_
+ Grave accent \` Left brace \{ Vertical bar \|
+ Right brace \} Tilde \~}
+\endgroup
+ \newhelp\wrong@table{Some of the ASCII characters are corrupted.^^J
+ I now \string\show\space you both tables for comparison.}
+\newif\ifcodeline@index \codeline@indexfalse
+\let\CodelineNumbered\codeline@indextrue
+\def\codeline@wrindex#1{\if@filesw
+ \immediate\write\@indexfile
+ {\string\indexentry{#1}%
+ {\number\c@CodelineNo}}\fi}
+\let\special@index = \@gobble
+\def\CodelineIndex{\makeindex
+ \codeline@indextrue
+ \let\special@index\codeline@wrindex}
+\def\PageIndex{\makeindex
+ \codeline@indexfalse
+ \let\special@index\index}
+\newcount\c@CodelineNo \c@CodelineNo\z@
+\@ifundefined{theCodelineNo}
+ {\ifx\selectfont\undefined
+ \def\theCodelineNo{\rmfamily\scriptsize\arabic{CodelineNo}}%
+ \else
+ \def\theCodelineNo{\reset@font\scriptsize\arabic{CodelineNo}}%
+ \fi}
+ {}
+ \tolerance=1000\relax
+{ \catcode`\"=12
+ \global\mathcode`\\="705C \global\mathcode`\@="7040 }
+\@ifundefined{DocstyleParms}{}{\DocstyleParms}
+\let\DocstyleParms\relax
+\@ifundefined{AmSTeX}
+ {\def\AmSTeX{\leavevmode\hbox{$\mathcal A\kern-.2em\lower.376ex%
+ \hbox{$\mathcal M$}\kern-.2em\mathcal S$-\TeX}}}{}
+\@ifundefined{BibTeX}
+ {\def\BibTeX{{\rmfamily B\kern-.05em%
+ \textsc{i\kern-.025em b}\kern-.08em%
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}}{}
+\@ifundefined{SliTeX}
+ {\def\SliTeX{{\rmfamily S\kern-.06emL\kern-.18em\raise.32ex\hbox
+ {\scshape i}\kern -.03em\TeX}}}{}
+\@ifundefined{PlainTeX}{\def\PlainTeX{\textsc{Plain}\kern2pt\TeX}}{}
+\@ifundefined{Web}{\def\Web{\textsc{Web}}}{}
+\def\MakePercentIgnore{\catcode`\%9\relax}
+\def\MakePercentComment{\catcode`\%14\relax}
+\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
+\def\GetFileInfo#1{%
+ \def\filename{#1}%
+ \def\@tempb##1 ##2 ##3\relax##4\relax{%
+ \def\filedate{##1}%
+ \def\fileversion{##2}%
+ \def\fileinfo{##3}}%
+ \edef\@tempa{\csname ver@#1\endcsname}%
+ \expandafter\@tempb\@tempa\relax? ? \relax\relax}
+\endinput
+%%
+%% End of file `doc.sty'.
diff --git a/macros/latex-dev/base/doc-v3beta.sty b/macros/latex-dev/base/doc-2021-06-01.sty
index eeac71568c..444849f2e7 100644
--- a/macros/latex-dev/base/doc-v3beta.sty
+++ b/macros/latex-dev/base/doc-2021-06-01.sty
@@ -1,10 +1,10 @@
%%
-%% This is file `doc-v3beta.sty',
+%% This is file `doc.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
-%% doc.dtx (with options: `package,beta')
+%% doc.dtx (with options: `package')
%%
%% This is a generated file.
%%
@@ -13,8 +13,8 @@
%% (but please observe conditions on bug reports sent to that address!)
%%
%%
-%% Copyright 1993-2018
-%% The LaTeX3 Project and any individual authors listed elsewhere
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the LaTeX base system.
@@ -26,7 +26,7 @@
%% The latest version of this license is in
%% https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
-%% version 2005/12/01 or later.
+%% version 2008 or later.
%%
%% This file has the LPPL maintenance status "maintained".
%%
@@ -42,56 +42,15 @@
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-
-\providecommand\DeclareRelease[3]{}
-\providecommand\DeclareCurrentRelease[2]{}
-
-\DeclareRelease{v2}{2016-02-15.sty}
- {doc-2016-02-15.sty}
-\DeclareCurrentRelease{v3}{2018-04-16}
-
-\ProvidesPackage{doc-v3beta}
- [2021/02/07 v3.0e
- Standard LaTeX documentation package V3 (FMi)]
+ \ProvidesPackage{doc}
+ [2021/05/28 v2.1n
+ Standard LaTeX documentation package (FMi)]
%%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-2018 Frank Mittelbach, all rights reserved.
-
-
-
-
-
+%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved.
\@ifundefined{macro@cnt}{}{\endinput}
\catcode`\^^A=14
\AtBeginDocument{\catcode`\^^A=14\relax}
-\RequirePackage{kvoptions}
-\SetupKeyvalOptions{family=doc,prefix=doc@}
-\DeclareBoolOption{noprint}
-\DeclareBoolOption{noindex}
-\DeclareBoolOption[true]{hyperref}
-\DeclareBoolOption[true]{multicol}
-\DeclareBoolOption[false]{debugshow}
-\DeclareBoolOption[true]{toplevel}
-\DeclareComplementaryOption{notoplevel}{toplevel}
-\DeclareBoolOption{macrolike}
-\DeclareComplementaryOption{envlike}{macrolike}
-\DeclareStringOption{idxtype}
-\DeclareStringOption{idxgroup}
-\DeclareStringOption{printtype}
-\DeclareBoolOption[false]{outer}
-\ProcessKeyvalOptions*
-\newif\ifscan@allowed \scan@allowedtrue
-\def\SetupDoc#1{%
- \setkeys{doc}{#1}%
- \edef\doc@noprintdefault{\ifdoc@noprint true\else false\fi}%
- \ifdoc@noindex
- \def\doc@noindexdefault{true}%
- \scan@allowedfalse
- \else
- \def\doc@noindexdefault{false}%
- \fi
-}
-\SetupDoc{} % just save the default values
\def\macrocode{\macro@code
\frenchspacing \@vobeyspaces
\xmacro@code}
@@ -100,6 +59,7 @@
\@beginparpenalty \predisplaypenalty
\if@inlabel\leavevmode\fi
\trivlist \parskip \z@ \item[]%
+ \global\setbox\@labels\box\voidb@x
\macro@font
\leftskip\@totalleftmargin \advance\leftskip\MacroIndent
\rightskip\z@ \parindent\z@ \parfillskip\@flushglue
@@ -132,13 +92,13 @@
\usefont\encodingdefault
\ttdefault
\mddefault
- \updefault
+ \shapedefault
}%
\else
\def\MacroFont{\fontencoding\encodingdefault
\fontfamily\ttdefault
\fontseries\mddefault
- \fontshape\updefault
+ \fontshape\shapedefault
\small}%
\fi
}{}
@@ -221,7 +181,6 @@
\endgroup
\newcounter{StandardModuleDepth}
\newcount \guard@level
-
\@ifundefined{Module}{%
\def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$}
}{}
@@ -270,16 +229,25 @@
|endgroup
!% \end{macrocode}
\catcode`\!=12
-
+\def\DescribeMacro{\leavevmode\@bsphack
+ \begingroup\MakePrivateLetters\Describe@Macro}
+\def\Describe@Macro#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeMacro{#1}}%
+ \SpecialUsageIndex{#1}\@esphack\ignorespaces}
+\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
+ \Describe@Env}
+\def\Describe@Env#1{\endgroup
+ \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
+ \SpecialEnvIndex{#1}\@esphack\ignorespaces}
\reversemarginpar
\setlength\marginparpush{0pt} \setlength\marginparwidth{8pc}
-\setlength\marginparsep{\labelsep}
{\catcode`\|=\z@ \catcode`\\=12
|gdef|bslash{\}}
\def\verbatim{\@beginparpenalty \predisplaypenalty \@verbatim
\MacroFont \frenchspacing \@vobeyspaces \@xverbatim}
\@namedef{verbatim*}{\@beginparpenalty \predisplaypenalty \@verbatim
- \MacroFont \@sxverbatim}
+ \@setupverbvisiblespace
+ \MacroFont \@vobeyspaces \@sxverbatim}
\def\@verbatim{\trivlist \item[]\if@minipage\else\vskip\parskip\fi
\leftskip\@totalleftmargin\rightskip\z@
\parindent\z@\parfillskip\@flushglue\parskip\z@
@@ -306,14 +274,8 @@
\obeylines%
\gdef\verb@eol@error{\obeylines%
\def^^M{\verb@egroup\@latex@error{%
- Text for \noexpand\verb command ended by end of line}\@ehc}}%
+ \noexpand\verb ended by end of line}\@ehc}}%
\endgroup
-\def\@sverb#1{%
- \catcode`#1\active \lccode`\~`#1%
- \gdef\verb@balance@group{\verb@egroup
- \@latex@error{Illegal use of \noexpand\verb command}\@ehc}%
- \aftergroup\verb@balance@group
- \lowercase{\let~\verb@egroup}}
\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
\def\do@noligs#1{%
\catcode`#1\active
@@ -321,7 +283,56 @@
\lccode`\~=`#1\relax
\lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
\newcount\macro@cnt \macro@cnt=0
+\def\macro{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \iftrue}
+\def\environment{\begingroup
+ \catcode`\\12
+ \MakePrivateLetters \m@cro@ \iffalse}
+\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
+ \edef\saved@macroname{\string#2}%
+ #1
+ \let\saved@indexname\saved@macroname
+ \else
+ \edef\saved@indexname{\expandafter\@gobble\string#2}%
+ \fi
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty \count@\macro@cnt
+ \loop \ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip
+ {\@tempa\hbox{##1}\vss}}}%
+ \advance \macro@cnt \@ne
+ \else \macro@cnt\@ne \fi
+ \edef\@tempa{\noexpand\item[%
+ #1%
+ \noexpand\PrintMacroName
+ \else
+ \noexpand\PrintEnvName
+ \fi
+ {\string#2}]}%
+ \@tempa
+ \global\advance\c@CodelineNo\@ne
+ #1%
+ \SpecialMainIndex{#2}\nobreak
+ \DoNotIndex{#2}%
+ \else
+ \SpecialMainEnvIndex{#2}\nobreak
+ \fi
+ \global\advance\c@CodelineNo\m@ne
+ \ignorespaces}
+\let\endmacro \endtrivlist
+\let\endenvironment\endmacro
\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
+\@ifundefined{PrintMacroName}
+ {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
+\@ifundefined{PrintDescribeMacro}
+ {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
+\@ifundefined{PrintDescribeEnv}
+ {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
+\@ifundefined{PrintEnvName}
+ {\def\PrintEnvName#1{\strut \MacroFont #1\ }}{}
\begingroup
\catcode`\~\active
\gdef\SpecialEscapechar#1{%
@@ -349,6 +360,7 @@
\def\next{\futurelet\next\macro@switch}%
\else \let\next\@empty \fi
\next}
+\newif\ifscan@allowed \scan@allowedtrue
\def\DisableCrossrefs{\@bsphack\scan@allowedfalse\@esphack}
\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
\def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
@@ -362,10 +374,24 @@
\uccode`\&=\expandafter`\string#1%
\uppercase{\def\x{\def\macro@namepart{&}}}%
\expandafter\endgroup\x
- \maybe@index@short@macro\macro@namepart
+ \ifnot@excluded
+ \produce@index{#1}\fi
\scan@allowedfalse#1%
\scan@allowedtrue }
\endgroup
+\def\produce@index#1{%
+ \if\noexpand#1\special@escape@char
+ \scan@allowedfalse \it@is@a\special@escape@char \else
+ \if\noexpand#1\bslash \it@is@a\bslash \else
+ \if\noexpand#1\space \it@is@a\space \else
+ \ifx#1\par
+ \it@is@a\space \else
+ \ifx#1\relax \else
+ \if\noexpand#1\bgroup \LeftBraceIndex \else
+ \if\noexpand#1\egroup \RightBraceIndex \else
+ \if\noexpand#1\percentchar \PercentIndex \else
+ \it@is@a{\string#1}%
+ \fi \fi \fi \fi \fi \fi \fi \fi}
\def\macro@name#1{\edef\macro@namepart{\macro@namepart#1}%
\futurelet\next\more@macroname}
\def\more@macroname{\ifcat\noexpand\next a%
@@ -374,171 +400,41 @@
\next}
\def\macro@finish{%
\macro@namepart
- \maybe@index@macro \macro@namepart
-}
-
-\RequirePackage{expl3}
-\ExplSyntaxOn
-\seq_new:N \l__doc_donotindex_seq
-\prop_new:N \g__doc_idxtype_prop
-\cs_new:Npn\__doc_trace:x {
- \ifdoc@debugshow
- \expandafter \iow_term:x
- \else
- \expandafter \use_none:n
- \fi
-}
-\cs_new:Npn \doc_dont_index:n {
- \group_begin:
- \MakePrivateLetters
- \__doc_dont_index:n
-}
-\cs_new:Npn \__doc_dont_index:n #1 {
- \group_end:
- \__doc_trace:x{Disable~ indexing~ for~ '\tl_to_str:n{#1}' }
- \clist_map_function:nN {#1} \__doc_dont_index_aux:n
-}
-\cs_new:Npn \__doc_dont_index_aux:n #1 {
- \seq_put_right:Nx \l__doc_donotindex_seq {\expandafter\@gobble \string#1}
-}
-\cs_set_eq:NN \DoNotIndex \doc_dont_index:n
-\def \ShowIndexingState {
- \__doc_trace:x{Show~ doc~ indexing~ state:}
- \seq_show:N \l__doc_donotindex_seq
- \prop_show:N \g__doc_idxtype_prop
-}
-
-\cs_new:Npn \__doc_idxtype_put:Nn #1#2 {
- \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
- \protected@write\@auxout{}
- {\string\RecordIndexTypeAux {\string#1 }{#2} }
-}
-\cs_new:Npn \RecordIndexTypeAux #1#2 {
- \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
-}
-\AtEndDocument{
- \cs_set_eq:NN \RecordIndexTypeAux \use_none:nn
-}
-\cs_set_eq:NN \RecordIndexType \__doc_idxtype_put:Nn
-\cs_new:Npn \__doc_idxtype_put_scan:nn #1#2 {
- \exp_args:Nf \__doc_idxtype_put:nn { \tl_to_str:n {#1} }{#2}
- \protected@write\@auxout{}
- {\string\RecordIndexTypeAux {\bslash #1 }{#2} }
-}
-\cs_generate_variant:Nn \__doc_idxtype_put_scan:nn {o}
-\cs_set_eq:NN \record@index@type@save \__doc_idxtype_put_scan:on
-\cs_new:Npn \__doc_idxtype_put:nn #1#2 {
- \exp_args:NNf
- \seq_if_in:NnTF \l__doc_donotindex_seq {\tl_to_str:n{#1}}
- {
- \__doc_trace:x{Not~ recording~ index~ type~ for~ '\bslash #1' }
- }
- {
- \__doc_trace:x{Recording~ index~ type~ for~ '\bslash #1' ~ as~ #2 }
- \prop_gput:Nnn \g__doc_idxtype_prop {#1}{#2}
- }
-}
-\cs_new:Npn \exp_args:co #1#2
- { \cs:w #1 \exp_after:wN \cs_end:\exp_after:wN {#2} }
-\cs_generate_variant:Nn \tl_to_str:n {o}
-
-\cs_new:Npn \__doc_maybe_index:o #1 {
- \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
- \SpecialIndex
-}
-\cs_set_eq:NN \maybe@index@macro \__doc_maybe_index:o
-\cs_new:Npn \__doc_maybe_index_short:o #1 {
- \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
- \SpecialShortIndex
-}
-\cs_set_eq:NN \maybe@index@short@macro \__doc_maybe_index_short:o
-\cs_new:Npn \__doc_maybe_index_aux:nN #1#2 {
- \__doc_trace:x{Searching~ for~ '\bslash #1'}
- \seq_if_in:NnTF \l__doc_donotindex_seq {#1}
- {
- \__doc_trace:x{Not~ indexing~ '\bslash #1' }
- }
- {
- \prop_get:NnNTF \g__doc_idxtype_prop {#1} \l__doc_idxtype_tl
- {
- \exp_args:Ncno \__doc_maybe_index_aux:Nnn
- { Code \tl_use:N \l__doc_idxtype_tl Index }
- {code} {\bslash #1}
- }
- {
- \__doc_trace:x{Indexing~ '\bslash #1'\space (\string #2)}
- \exp_args:No #2 {\bslash #1}
- }
- }
-}
-\cs_new:Npn \SpecialShortIndex #1 {
- \@SpecialIndexHelper@ #1\@nil
- \@bsphack
- \ifdoc@noindex \else
- \str_case_e:nnF {\@gtempa }
- {
- {\cs_to_str:N \^^M } {\def\reserved@a{ \string \space \actualchar }
- \def\reserved@b { \space }
- \let\reserved@c \@empty }
- { } {\def\reserved@a{ \string \space \actualchar }
- \def\reserved@b { \space }
- \let\reserved@c \@empty }
- {\c_left_brace_str} { \def\reserved@a{ \bgroup \actualchar }
- \def\reserved@b { \c_left_brace_str }
- \def\reserved@c { \noexpand\iffalse
- \c_right_brace_str
- \noexpand\fi } }
- {\c_right_brace_str} { \def\reserved@a{ \egroup \actualchar
- \noexpand\iffalse
- \c_left_brace_str
- \noexpand\fi }
- \def\reserved@b { \c_right_brace_str }
- \let\reserved@c \@empty }
- {\verbatimchar} { \def\reserved@a{ \quotechar\verbatimchar
- \actualchar }
- \let\reserved@b \@empty
- \def\reserved@c
- { \string\texttt{\string\string\verbatimchar} } }
- }
- { \def\reserved@a {\quotechar \@gtempa \actualchar }
- \def\reserved@b {\quotechar \@gtempa }
- \let\reserved@c \@empty }
- \special@index {
- \reserved@a
- \string\verb
- \quotechar *\verbatimchar \quotechar \bslash
- \reserved@b
- \verbatimchar
- \reserved@c
- \encapchar code}
- \fi
- \@esphack
-}
-
-\cs_new:Npn \__doc_maybe_index_aux:Nnn #1#2#3 {
- \cs_if_exist:NTF #1
- {
- \__doc_trace:x{Indexing~ '#3'\space as~
- \tl_use:N \l__doc_idxtype_tl }
- #1{#2}{#3}
- }
- {
- \PackageError{doc}{Doc~ element~
- '\tl_use:N \l__doc_idxtype_tl'~ unknown}%
-
- {When~ using~ '\string\RecordIndexType'~ the~ type~ must~
- be~ known~\MessageBreak
- to~ the~ system,~ i.e.,~ declared~ via~
- '\string\NewDocElement'\MessageBreak
- before~ it~ can~ be~ used~ in~ indexing.}
- }
-}
-\ExplSyntaxOff
+ \ifnot@excluded
+ \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
+ \@tempa \fi}
+\def\DoNotIndex{\begingroup \MakePrivateLetters
+ \catcode`\\12
+ \do@not@index}
+\long\def\do@not@index#1{%
+ \endgroup
+ \addto@hook\index@excludelist{#1,}}
+\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+\newtoks\index@excludelist
+\index@excludelist{}
+\begingroup
+\catcode`\|=0%
+\catcode`\\=12
+|gdef|ifnot@excluded{|expandafter
+ |expanded@notin|expandafter{|expandafter
+ \|macro@namepart,}{|the|index@excludelist}}
+|endgroup
+\def\expanded@notin#1#2{%
+ \def\in@@##1#1##2##3\in@@{%
+ \ifx\expanded@notin##2}%
+ \expandafter\in@@#2#1\expanded@notin\in@@}
\@ifundefined{actualchar}{\def\actualchar{=}}{}
\@ifundefined{quotechar}{\def\quotechar{!}}{}
\@ifundefined{levelchar}{\def\levelchar{>}}{}
\@ifundefined{encapchar}{\def\encapchar{|}}{}
\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
+\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
+ \string#1\actualchar
+ \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
+ \@esphack}
+
+\def\SpecialMainIndex#1{\@bsphack\SpecialIndex@{#1}{\encapchar main}%
+ \@esphack}
\begingroup
\catcode`\|=0
\catcode`\\=12
@@ -552,43 +448,75 @@
|endgroup
|fi}
|endgroup
-\def\SortIndex#1#2{%
- \ifdoc@noindex\else
- \index{#1\actualchar#2}%
- \fi
-}
+\def\SpecialIndex@#1#2{%
+ \@SpecialIndexHelper@#1\@nil
+ \def\@tempb{ }%
+ \ifcat \@tempb\@gtempa
+ \special@index{\quotechar\space\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar\space\verbatimchar#2}%
+ \else
+ \def\@tempb##1##2\relax{\ifx\relax##2\relax
+ \def\@tempc{\special@index{\quotechar##1\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar##1\verbatimchar#2}}%
+ \else
+ \def\@tempc{\special@index{##1##2\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \bslash##1##2\verbatimchar#2}}%
+ \fi}%
+ \expandafter\@tempb\@gtempa\relax
+ \@tempc
+ \fi}
+\def\SpecialMainEnvIndex#1{\@bsphack\special@index{%
+ #1\actualchar
+ {\string\ttfamily\space#1}
+ (environment)%
+ \encapchar main}%
+ \special@index{environments:\levelchar#1\actualchar{%
+ \string\ttfamily\space#1}\encapchar
+ main}\@esphack}
+\def\SpecialUsageIndex#1{\@bsphack
+ {\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}%
+ \@esphack}
+\def\SpecialEnvIndex#1{\@bsphack
+ \index{#1\actualchar{\protect\ttfamily#1}
+ (environment)\encapchar usage}%
+ \index{environments:\levelchar#1\actualchar
+ {\protect\ttfamily#1}\encapchar usage}\@esphack}
+\def\SortIndex#1#2{\index{#1\actualchar#2}}
+\def\it@is@a#1{\special@index{\quotechar #1\actualchar
+ \string\verb\quotechar*\verbatimchar
+ \quotechar\bslash\quotechar#1\verbatimchar}}
\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
- \special@index{\bgroup\actualchar
- \string\verb% % to fool emacs highlighting
- \quotechar*\verbatimchar
- \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
+ \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
+ \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
- \special@index{\egroup\actualchar\string\iffalse{\string\fi
- \string\verb% % to fool emacs highlighting
+ \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
\quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
\@ifundefined{PercentIndex}
{\def\PercentIndex{\it@is@a\percentchar}}{}
\def\OldMakeindex{\def\PercentIndex{%
- \special@index{\quotechar\percentchar\actualchar
- \string\verb% % to fool emacs highlighting
+ \special@index{\quotechar\percentchar\actualchar\string\verb
\quotechar*\verbatimchar\quotechar\bslash
\percentchar\percentchar\verbatimchar}}}
{\catcode`\%=12 \gdef\percentchar{%}}
-\def\it@is@a#1{\special@index{\quotechar #1\actualchar
- \string\verb% % to fool emacs highlighting
- \quotechar*\verbatimchar
- \quotechar\bslash\quotechar#1\verbatimchar}}
+\newif\ifhave@multicol
+\IfFileExists{multicol.sty}{\have@multicoltrue
+ \RequirePackage{multicol}%
+ }{}
\newdimen\IndexMin \IndexMin = 80pt
\newcount\c@IndexColumns \c@IndexColumns = 3
-\ifdoc@multicol
- \RequirePackage{multicol}
+\ifhave@multicol
\renewenvironment{theindex}
{\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
\IndexParms \let\item\@idxitem \ignorespaces}%
{\end{multicols}}
\else
+ \typeout{Can't find multicol.sty -- will use normal index layout if
+ necessary.}
\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@ \columnsep 35\p@
\twocolumn[\index@prologue]%
@@ -628,15 +556,13 @@
\def\indexspace{\par\vspace{10pt plus 2pt minus 3pt}}%
}}{}
\def\efill{\hfill\nopagebreak}%
-\def\pfill{\unskip~%
- \leaders\hbox to.6em{\hss .\hss}\hfill
- \penalty500\strut\nobreak
- \leaders\hbox to.6em{\hss .\hss}\hfil
- ~\ignorespaces}%
+\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill\kern\z@}%
+\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil\kern\z@}%
+\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
+ \dotfil~\ignorespaces}%
\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
-\@ifundefined{code}{\def\code#1{#1}}{}
\def\PrintIndex{\@input@{\jobname.ind}%
\global\let\PrintIndex\@empty}
\def\changes{\@bsphack\begingroup\@sanitize
@@ -644,19 +570,18 @@
\changes@}
\def\changes@#1#2#3{%
\protected@edef\@tempa{\noexpand\glossary{#1\levelchar
- \ifx\saved@macroname\@empty
- \quotechar!%
- \actualchar
- \generalname
- \else
- \saved@indexname
- \actualchar
- \string\verb% % to fool emacs highlighting
- \quotechar*%
- \verbatimchar\saved@macroname
- \verbatimchar
- \fi
- :\levelchar #3}}%
+ \ifx\saved@macroname\@empty
+ \space
+ \actualchar
+ \generalname
+ \else
+ \saved@indexname
+ \actualchar
+ \string\verb\quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
\@tempa\endgroup\@esphack}
\def\saved@macroname{}
\def\saved@indexname{}
@@ -664,7 +589,7 @@
\let\RecordChanges\makeglossary
\newdimen\GlossaryMin \GlossaryMin = 80pt
\newcount\c@GlossaryColumns \c@GlossaryColumns = 2
-\ifdoc@multicol
+\ifhave@multicol
\newenvironment{theglossary}{%
\begin{multicols}\c@GlossaryColumns
[\glossary@prologue][\GlossaryMin]%
@@ -693,16 +618,15 @@
\def\PrintChanges{\@input@{\jobname.gls}%
\global\let\PrintChanges\@empty}
\newcommand\AlsoImplementation{%
- \long\def\MaybeStopHere##1{\@bsphack\gdef\Finale{##1%
+ \long\def\StopEventually##1{\@bsphack\gdef\Finale{##1%
\check@checksum}%
\init@checksum
\@esphack}%
}
\AlsoImplementation
-\def\OnlyDescription{\@bsphack\long\def\MaybeStopHere##1{%
+\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
##1\endinput}\@esphack}
\let\Finale\relax
-\def\StopEventually{\MaybeStopHere}
\ifx\l@nohyphenation\undefined
\newlanguage\l@nohyphenation
\fi
@@ -758,20 +682,13 @@
\endgroup
\global\catcode`#1\active
\else
- \@shortvrbinfo\@empty{#1 already}%
- {\@empty\verb% % to fool emacs highlighting
- (*)}%
+ \@shortvrbinfo\@empty{#1 already}{\@empty\verb(*)}%
\fi}
\def\DeleteShortVerb#1{%
\expandafter\ifx\csname cc\string#1\endcsname\relax
- \@shortvrbinfo\@empty{#1 not}%
- {\@empty\verb% % to fool emacs highlighting
- (*)}%
+ \@shortvrbinfo\@empty{#1 not}{\@empty\verb(*)}%
\else
- \@shortvrbinfo{Deleted }{#1 as}%
- {\@empty\verb% % to fool emacs
- % highlighting
- (*)}%
+ \@shortvrbinfo{Deleted }{#1 as}{\@empty\verb(*)}%
\rem@special{#1}%
\global\catcode`#1\csname cc\string#1\endcsname
\global \expandafter\let \csname cc\string#1\endcsname \relax
@@ -801,6 +718,10 @@
\ifnum`#1=`##1 \else \noexpand\@makeother\noexpand##1\fi}%
\xdef\@sanitize{\@sanitize}%
\endgroup}
+\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
+ syntax, this is obsolete ***}\MakeShortVerb}
+\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
+ syntax, this is obsolete ***}\DeleteShortVerb}
\def\init@checksum{\relax
\global\bslash@cnt\z@}
\def\check@checksum{\relax
@@ -866,13 +787,9 @@
\newif\ifcodeline@index \codeline@indexfalse
\let\CodelineNumbered\codeline@indextrue
\def\codeline@wrindex#1{\if@filesw
- \begingroup
- \set@display@protect
\immediate\write\@indexfile
{\string\indexentry{#1}%
- {\number\c@CodelineNo}}%
- \endgroup
- \fi}
+ {\number\c@CodelineNo}}\fi}
\let\special@index = \@gobble
\def\CodelineIndex{\makeindex
\codeline@indextrue
@@ -916,326 +833,6 @@
\def\fileinfo{##3}}%
\edef\@tempa{\csname ver@#1\endcsname}%
\expandafter\@tempb\@tempa\relax? ? \relax\relax}
-
-\ifdoc@hyperref
- \let\PrintDescribeMacro \@empty
- \let\PrintDescribeEnv \@empty
- \let\PrintMacroName \@empty
- \let\PrintEnvName \@empty
- \let\SpecialUsageIndex \@empty
- \let\SpecialEnvIndex \@empty
- \expandafter\let\expandafter\doc@eoph@@k\csname doc.sty-h@@k\endcsname
- \RequirePackage{hypdoc}
- \expandafter\let\csname doc.sty-h@@k\endcsname\doc@eoph@@k
- \let\PrintDescribeMacro \relax
- \let\PrintDescribeEnv \relax
- \let\PrintMacroName \relax
- \let\PrintEnvName \relax
- \def\doc@providetarget{\HD@target}
- \def\doc@handleencap#1{\encapchar hdclindex{\the\c@HD@hypercount}{#1}}
-\else
- \let\doc@providetarget\@empty
- \def\doc@handleencap#1{\encapchar #1}
- \def\hdclindex#1#2{\ifx\@nil#2\@nil\else\csname #2\expandafter\endcsname\fi}
- \def\hdpindex #1{\ifx\@nil#1\@nil\else\csname #1\expandafter\endcsname\fi}
-\fi
-
-
-\ExplSyntaxOn
-
-\long\def\@doc@env#1#2#3{
- \endgroup
- \clist_map_inline:nn {#3} { \@doc@env@{#1}{#2}{##1} }
-}
-
-\ExplSyntaxOff
-\long\def\@doc@env@#1#2#3{%
- \topsep\MacroTopsep
- \trivlist
- \edef\saved@macroname{\string#3}%
- \if #1%
- \edef\saved@indexname{\expandafter\@gobble\saved@macroname}%
- \expandafter\ifx
- \csname Code#2Index\endcsname
- \CodeMacroIndex
- \else
- \record@index@type@save
- {\saved@indexname}{#2}%
- \fi
- \else
- \let\saved@indexname\saved@macroname
- \fi
- \def\makelabel##1{\llap{##1}}%
- \if@inlabel
- \let\@tempa\@empty
- \count@\macro@cnt
- \loop\ifnum\count@>\z@
- \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne
- \repeat
- \edef\makelabel##1{\llap{\vtop to\baselineskip{\@tempa\hbox{##1}\vss}}}%
- \advance\macro@cnt\@ne
- \else
- \macro@cnt\@ne
- \fi
- \ifdoc@noprint
- \item
- \else
- \edef\@tempa{%
- \noexpand\item[%
- \noexpand\doc@providetarget
- \noexpand\strut
- \noexpand\@nameuse{Print#2Name}{\saved@macroname}]}%
- \@tempa
- \fi
- \ifdoc@noindex\else
- \global\advance\c@CodelineNo\@ne
- \csname SpecialMain#2Index\expandafter\endcsname
- \expandafter{\saved@macroname}\nobreak
- \global\advance\c@CodelineNo\m@ne
- \fi
- \if#1\expandafter\DoNotIndex \expandafter {\saved@macroname}\fi
- \ignorespaces}
-
-\def\doc@env#1#2[#3]{%
- \@nameuse{doc@noprint\doc@noprintdefault}%
- \@nameuse{doc@noindex\doc@noindexdefault}%
- \setkeys{doc}{#3}%
- \begingroup
- \ifdoc@outer
- \catcode`\\12
- \fi
- \MakePrivateLetters
- \@doc@env{#1}{#2}%
-}
-
-\def\@doc@describe#1#2{%
- \ifdoc@noprint\else
- \marginpar{\raggedleft
- \strut
- \doc@providetarget
- \@nameuse{PrintDescribe#1}{#2}}%
- \fi
- \ifdoc@noindex\else
- \@nameuse{Special#1Index}{#2}%
- \fi
- \@esphack
- \endgroup
- \ignorespaces}
-\def\doc@describe#1[#2]{%
- \leavevmode\@bsphack
- \setkeys{doc}{#2}%
- \@doc@describe{#1}}
-\@ifundefined{temptokenb}{\newtoks\@temptokenb}{}
-\def\doc@createspecialindexes#1#2#3{%
- \@temptokena{\space (#2)}%
- \@temptokenb{#3:}%
- \@nameedef{SpecialMain#1Index}##1{%
- \noexpand\@bsphack
- \ifdoc@toplevel
- \noexpand\special@index{##1\noexpand\actualchar
- {\string\ttfamily\space##1}%
- \ifx\@nil#2\@nil\else \the\@temptokena \fi
- \noexpand\encapchar main}%
- \fi
- \ifx\@nil#3\@nil\else
- \noexpand\special@index{\the\@temptokenb\noexpand\levelchar
- ##1\noexpand\actualchar{\string\ttfamily\space##1}%
- \noexpand\encapchar main}%
- \fi
- \noexpand\@esphack}%
- \@nameedef{Special#1Index}##1{%
- \noexpand\@bsphack
- \ifdoc@toplevel
- \noexpand\doc@providetarget
- \noexpand\index{##1\noexpand\actualchar{\string\ttfamily\space##1}%
- \ifx\@nil#2\@nil\else \the\@temptokena \fi
- \noexpand\doc@handleencap{usage}}%
- \fi
- \ifx\@nil#3\@nil\else
- \noexpand\index{\the\@temptokenb\noexpand\levelchar
- ##1\noexpand\actualchar{\string\ttfamily\space##1}%
- \noexpand\doc@handleencap{usage}}%
- \fi
- \noexpand\@esphack}}
-\def\doc@createspecialmacrolikeindexes#1#2#3{%
- \@temptokena{\space (#2)}%
- \@temptokenb{#3:}%
- \@nameedef{Code#1Index}##1##2{%
- \noexpand\@SpecialIndexHelper@##2\noexpand\@nil
- \noexpand\@bsphack
- \noexpand\ifdoc@noindex\noexpand\else
- \ifdoc@toplevel
- \noexpand\special@index{\noexpand\@gtempa\noexpand\actualchar
-\string\verb% % to fool emacs highlighting
-\noexpand\quotechar*\noexpand\verbatimchar
-\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
-\ifx\@nil#2\@nil\else \the\@temptokena \fi
-\noexpand\encapchar ##1}%
- \fi
- \ifx\@nil#3\@nil\else
- \noexpand\special@index{\the\@temptokenb\noexpand\levelchar
-\noexpand\@gtempa\noexpand\actualchar
-\string\verb% % to fool emacs highlighting
-\noexpand\quotechar*\noexpand\verbatimchar
-\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
-\noexpand\encapchar ##1}%
- \fi
- \noexpand\fi
- \noexpand\@esphack}%
- \@nameedef{SpecialMain#1Index}##1{%
- \expandafter\noexpand\csname Code#1Index\endcsname
- {main}{##1}}%
- \@nameedef{Special#1Index}##1{%
- \noexpand\@SpecialIndexHelper@##1\noexpand\@nil
- \noexpand\@bsphack
- \noexpand\ifdoc@noindex\noexpand\else
- \ifdoc@toplevel
- \noexpand\doc@providetarget
- \noexpand\index{\noexpand\@gtempa\noexpand\actualchar
-\string\verb% % to fool emacs highlighting
-\noexpand\quotechar*\noexpand\verbatimchar
-\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
-\ifx\@nil#2\@nil\else \the\@temptokena \fi
-\noexpand\doc@handleencap{usage}}%
- \fi
- \ifx\@nil#3\@nil\else
- \noexpand\index{\the\@temptokenb\noexpand\levelchar
-\noexpand\@gtempa\noexpand\actualchar
-\string\verb% % to fool emacs highlighting
-\noexpand\quotechar*\noexpand\verbatimchar
-\noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
-\noexpand\doc@handleencap{usage}}%
- \fi
- \noexpand\fi
- \noexpand\@esphack}}
-
-\def\doc@createdescribe#1{%
- \@namedef{Describe#1}{%
- \begingroup
- \MakePrivateLetters
- \@ifnextchar[%]
- {\doc@describe{#1}}{\doc@describe{#1}[]}}}
-\def\doc@createenv#1#2#3{%
- \@namedef{#3}{%
- \@ifnextchar[%]
- {\doc@env{#1}{#2}}{\doc@env{#1}{#2}[]}}%
- \@namedef{end#3}{\endtrivlist}%
-}
-
-\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
-
-
-\def\doc@declareerror#1#2{%
- \PackageError{doc}{Doc element '#1/#2' already defined?\@gobble}%
- {There is already a definition for
- '\string\Print#1Name',\MessageBreak
- '\string\PrintDescribe#1'
- or the environment '#2'.\MessageBreak
- Maybe you are overwriting something by mistake!\MessageBreak
- Otherwise use '\string\RenewDocElement' instead.}%
-}
-
-\def\doc@notdeclarederror#1#2{%
- \PackageError{doc}{Doc element '#1/#2' unknown}%
- {I expected an existing definition for
- '\string\Print#1Name',\MessageBreak
- '\string\PrintDescribe#1' and
- the environment '#2' but\MessageBreak
- not all of them are defined.\MessageBreak
- Maybe you wanted to use
- '\string\NewDocElement'?}%
-}
-\newcommand\NewDocElement[3][]{%
- \@ifundefined{Print#2Name}%
- {\@ifundefined{PrintDescribe#2}%
- {\@ifundefined{#3}%
- {\@ifundefined{end#3}%
- {\@NewDocElement{#1}}%
- \doc@declareerror
- }\doc@declareerror
- }\doc@declareerror
- }\doc@declareerror
- {#2}{#3}%
-}
-\newcommand\RenewDocElement[3][]{%
- \@ifundefined{Print#2Name}\doc@notdeclarederror
- {\@ifundefined{PrintDescribe#2}\doc@notdeclarederror
- {\@ifundefined{#3}\doc@notdeclarederror
- {\@ifundefined{end#3}\doc@notdeclarederror
- {\@NewDocElement{#1}}%
- }%
- }%
- }%
- {#2}{#3}%
-}
-\def\@NewDocElement#1#2#3{%
- \doc@macrolikefalse
- \doc@topleveltrue
- \def\doc@idxtype{#3}%
- \def\doc@idxgroup{#3s}%
- \let\doc@printtype\@empty
- \setkeys{doc}{#1}%
- \ifx\doc@printtype\@empty
- \@temptokena{}%
- \else
- \@temptokena\expandafter{\expandafter
- \textnormal\expandafter{\expandafter
- \space\expandafter
- (\doc@printtype)}}%
- \fi
- \@nameedef{Print#2Name}##1{%
- {\noexpand\MacroFont
- \ifdoc@macrolike
- \noexpand\string
- \fi
- ##1%
- \the\@temptokena
- }}%
- \expandafter\let\csname PrintDescribe#2\expandafter\endcsname
- \csname Print#2Name\endcsname
- \edef\doc@expr{%
- \ifdoc@macrolike
- \noexpand\doc@createspecialmacrolikeindexes
- \else
- \noexpand\doc@createspecialindexes
- \fi
- {#2}%
- }%
- \expandafter\expandafter\expandafter
- \doc@expr
- \expandafter\expandafter\expandafter
- {\expandafter\doc@idxtype\expandafter}\expandafter
- {\doc@idxgroup}%
- \doc@createdescribe{#2}%
- \ifdoc@macrolike
- \doc@createenv{TT}{#2}{#3}%
- \else
- \doc@createenv{TF}{#2}{#3}%
- \fi
-}
-
-
-\NewDocElement[macrolike = true ,
- idxtype = ,
- idxgroup = ,
- printtype =
- ]{Macro}{macro}
-
-\def\SpecialMainIndex{\SpecialMainMacroIndex}
-
-\def\SpecialUsageIndex{\SpecialMacroIndex}
-
-\def\SpecialIndex {\CodeMacroIndex{code}}
-
-\NewDocElement[macrolike = false ,
- idxtype = env. ,
- idxgroup = environments ,
- printtype = \textit{env.}
- ]{Env}{environment}
-
-
-\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}
-
\endinput
%%
-%% End of file `doc-v3beta.sty'.
+%% End of file `doc.sty'.
diff --git a/macros/latex-dev/base/doc-code.pdf b/macros/latex-dev/base/doc-code.pdf
new file mode 100644
index 0000000000..a27820aee9
--- /dev/null
+++ b/macros/latex-dev/base/doc-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/doc-code.tex b/macros/latex-dev/base/doc-code.tex
new file mode 100644
index 0000000000..6457d22e03
--- /dev/null
+++ b/macros/latex-dev/base/doc-code.tex
@@ -0,0 +1,4 @@
+% this will typeset documentation + code
+
+\AtBeginDocument{\AlsoImplementation}
+\input{doc.dtx}
diff --git a/macros/latex-dev/base/doc.dtx b/macros/latex-dev/base/doc.dtx
index 41bc073315..e6b0e2cf92 100644
--- a/macros/latex-dev/base/doc.dtx
+++ b/macros/latex-dev/base/doc.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
-% The LaTeX Project and any individual authors listed elsewhere
+% Copyright 1993-2022
+% The LaTeX3 Project and any individual authors listed elsewhere
% in this file.
%
% This file is part of the LaTeX base system.
@@ -33,10 +33,23 @@
% ^^A category for `<'
%\catcode`\<=14
%<+package|shortvrb>\NeedsTeXFormat{LaTeX2e}[1994/12/01]
-%<+package> \ProvidesPackage{doc}
+%<+package>
+%<+package>\providecommand\DeclareRelease[3]{}
+%<+package>\providecommand\DeclareCurrentRelease[2]{}
+%<+package>
+%<+package>\DeclareRelease{v2.1g}{2016-02-15}
+%<+package> {doc-2016-02-15.sty}
+%<+package>\DeclareRelease{v2}{2021-06-01}
+%<+package> {doc-2021-06-01.sty}
+%<+package>\DeclareCurrentRelease{v3}{2022-06-01}
+%<+package>
+%<*package>
+%<-beta>\ProvidesPackage{doc}
+%<+beta>\ProvidesPackage{doc-v3beta}
+%</package>
%<+shortvrb>\ProvidesPackage{shortvrb}
-%<+package|shortvrb> [2021/10/04 v2.1n
-%<+package|shortvrb> Standard LaTeX documentation package (FMi)]
+%<+package|shortvrb> [2022/06/01 v3.0g
+%<+package|shortvrb> Standard LaTeX documentation package V3 (FMi)]
%\catcode`\<=12
%
%%
@@ -47,7 +60,7 @@
%
%
%% Package `doc' to use with LaTeX 2e
-%% Copyright (C) 1989-2020 Frank Mittelbach, all rights reserved.
+%% Copyright (C) 1989-2022 Frank Mittelbach, all rights reserved.
%
%
% Version: Date: Changes:
@@ -128,18 +141,103 @@
% \DoNotIndex{\selectfont,\mathcode,\newmathalphabet,\rmdefault}
% \DoNotIndex{\bfdefault}
%
-% \MakeShortVerb{\"}
+% \MakeShortVerb{\|}
% \setcounter{StandardModuleDepth}{1}
%
% {\catcode`\p=12 \catcode`\t=12 ^^A hack used later on to print
-% \gdef\dimenvalue#1pt{$#1$pt}} ^^A register values with a - sign
+% \gdef\dimenvalue#1pt{$#1$pt}} ^^A a register value with a - sign
+%
+% \newcommand{\DOC}{\texttt{doc}\xspace}
+%
+% \newcommand\env{\texttt}
+% \newcommand\opt{\texttt}
+% \newcommand\cls{\texttt}
+% \newcommand\pkg{\texttt}
+% \newcommand\prg{\textsf}
+%
+% \newcommand\DOX{\env{DoX}\xspace}
+% \newcommand\api{\textsc{api}\xspace}
+%
+% \newcommand\fmi[1]{\par\textbf{TODO: }\textit{#1}\par}
+%
+% \newcommand\NewIn[1]{\leavevmode
+% \marginpar{\hfill\fbox{\fbox{New in #1}}\hspace*{1em}}\ignorespaces}
+%
+%
+%\RenewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = LaTeX comands\actualchar\LaTeX{} commands ,
+% printtype =
+% ]{Macro}{macro}
+%
+%\RenewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = env. ,
+% idxgroup = Package environments,
+% printtype = \textit{env.}
+% ]{Env}{environment}
+%
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = Package commands,
+% printtype =
+% ]{InterfaceMacro}{imacro}
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = Package commands (obsolete),
+% printtype =
+% ]{ObsoleteInterfaceMacro}{omacro}
+%
+%\NewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = counter ,
+% idxgroup = LaTeX counters\actualchar \LaTeX{} counters ,
+% printtype = \textit{counter}
+% ]{LaTeXCounter}{lcounter}
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = counter ,
+% idxgroup = TeX counters\actualchar \protect\TeX{} counters ,
+% printtype = \textit{counter}
+% ]{TeXCounter}{tcounter}
+%
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = skip ,
+% idxgroup = LaTeX length\actualchar \LaTeX{} length (skip) ,
+% printtype = \textit{skip}
+% ]{LaTeXSkip}{lskip}
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = dimen ,
+% idxgroup = LaTeX length\actualchar \LaTeX{} length (dimen) ,
+% printtype = \textit{dimen}
+% ]{LaTeXDimen}{ldimen}
+%
+%\NewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = option ,
+% idxgroup = Package options ,
+% printtype = \textit{option}
+% ]{Option}{option}
+%
+% \renewcommand\code[1]{\mbox{$\ell$-#1}}
+% \renewcommand\main[1]{\underline{\mbox{$\ell$-#1}}}
+% \setcounter{IndexColumns}{2}
%
-% \newcommand{\DOC}{\texttt{doc}}
%
% \changes{v1.9t}{1995/05/11}{Use \cs{GetFileInfo}}
% \GetFileInfo{doc.sty}
%
-% \CheckSum{2213} ^^A % keep the checksum in this file
+% \CheckSum{0} ^^A % keep the checksum in this file but not now :-)
%
% \title{The \DOC{} and \texttt{shortvrb} Packages\thanks
% {This file has version number \fileversion{} dated \filedate{}.}}
@@ -149,190 +247,77 @@
% provided by Andrew Mills; fairly substantial additions,
% particularly from \texttt{newdoc}, and
% documentation of post-v1.5q features added at v1.7a by Dave
-% Love (SERC Daresbury Lab). Extraction of \texttt{shortvrb}
-% package added by Joachim Schrod (TU~Darmstadt).}}
+% Love (SERC Daresbury Lab).}~\thanks
+% {Extraction of \texttt{shortvrb}
+% package added by Joachim Schrod (TU~Darmstadt).}~\thanks
+% {Version~3 now integrates code from Didier Verna's
+% \DOX package and some of his documentation was
+% reused (a.k.a.\ stolen).}}
+% \date{Printed \today}
%
% \MaintainedByLaTeXTeam{latex}
+%
% \maketitle
%
% \begin{abstract}
-% This package contains the definitions that are necessary to
-% format the documentation of package files. The package was
-% developed in Mainz in cooperation with the Royal Military College
-% of Science. This is an update which documents various changes
-% and new features in \DOC{} and integrates the features of
-% \textsf{newdoc}.
+% Roughly 30 years ago (version 1.0 was dated 1988/05/05) I wrote
+% the first version of the \DOC package, a package to provide code
+% documentation for \TeX{} code. Since then it has be used all over
+% the place to document the \LaTeX{} kernel and most of the
+% packages that are nowadays available. The core code of version 2
+% (which is the current version) exists since 1998, i.e., for 20
+% years.
+%
+% If I would restart from scratch I would do a lot of things
+% differently these days and in fact several other people have
+% tried to come up with better solutions. However, as the saying
+% goes, a bad standard is better than none, \DOC has prevailed and
+% changing it now in incompatible ways is probably not really
+% helpful.
+%
+% So this is version 3 of the package with some smaller extensions
+% that are upwards compatible but hopefully serve well. Most
+% important modifications are the integration of the
+% \pkg{hypdoc} package to enable links within the document (in
+% particular from the index) is so desired. Also integrated are the
+% ideas from the \DOX package by Didier Verna (although I
+% offer a different interface that imho fits better with the rest
+% of \DOC's interfaces). Finally I updated a few odds and ends.
% \end{abstract}
%
-% \newif\ifmulticols
-% \IfFileExists{multicol.sty}{\multicolstrue}{}
%
-% \ifmulticols
+% \newpage
+%
% \addtocontents{toc}{\protect\begin{multicols}{2}}
-% \fi
%
-% {\parskip 0pt ^^A We have to reset \parskip
+% ^^A{\parskip 0pt ^^A We have to reset \parskip
% ^^A (bug in \LaTeX)
% \tableofcontents
-% }
+% ^^A}
%
% \changes{v1.7a}{1992/02/25}{Miscellaneous small changes to the text}
+% \changes{v3.0a}{2018/03/04}{Integrated DoX package}
+% \changes{v3.0a}{2018/03/04}{Interfaced hypdoc package}
%
-% \ifmulticols
-% \begin{multicols}{2}[\section*{Preface to version 1.7}]
-% \else \section*{Preface to version 1.7} \fi
-%
-% This version of \texttt{doc.dtx} documents changes which have occurred
-% since the last published version \cite{art:doc} but which have been
-% present in distributed versions of \texttt{doc.sty} for some time. It
-% also integrates the (undocumented) features of the distributed
-% \texttt{newdoc.sty}.
-%
-% The following changes and additions have been made to the user
-% interface since the published version~\cite{art:doc}. See
-% \S\ref{sec:interface} for more details.
-% \begin{description}
-% \item[Driver mechanism] "\DocInput" is now used in the driver file
-% to input possibly multiple independent \DOC{} files and \DOC{} no
-% longer has to be the last package. "\IndexListing" is replaced
-% by "\IndexInput";
-% \item[Indexing] is controlled by "\PageIndex" and "\CodelineIndex",
-% one of which must be specified to produce an index---there is no
-% longer a "\makeindex" in the default "\DocstyleParms";
-% \item[The \texttt{macro} environment] now takes as argument the
-% macro name {\em with\/} the backslash;
-% \item[Verbatim text] Newlines are now forbidden inside "\verb" and
-% commands "\MakeShortVerb" and "\DeleteShortVerb" are provided for
-% verbatim shorthand;
-% \item[\texttt{\bslash par}] can now be used in "\DoNotIndex";
-% \item[Checksum/character table support] for ensuring the integrity
-% of distributions is added;
-% \item[\texttt{\bslash printindex}] becomes "\PrintIndex";
-% \item[\texttt{multicol.sty}] is no longer necessary to use \DOC{} or
-% print the documentation (although it is recommended);
-% \item[`Docstrip' modules] are recognised and formatted specially.
-% \end{description}
%
-% As well as adding some completely new stuff,
-% the opportunity has been taken to add some commentary to the code
-% formerly in \texttt{newdoc.sty} and that added after version 1.5k of
-% \texttt{doc.sty}. Since (as noted in the sections concerned) this
-% commentary wasn't written by Frank Mittelbach but the code was, it is
-% probably {\em not\/} true in this case that ``if the code and
-% comments disagree both are probably wrong''!
%
-% \subsection*{Bugs}
-%
-% There are some known bugs in this version:
-% \begin{itemize}
-% \item The "\DoNotIndex" command doesn't work for some single
-% character commands most noticeable "\%".
-% \item The `General changes' glossary entry would come out after
-% macro names with a leading "!" and possibly a leading |"|;
-% \item If you have an old version of \textsf{makeindex} long "\changes"
-% entries will come out strangely and you may find the section
-% header amalgamated with the first changes entry. Try to get an
-% up-to-date one (see p.~\pageref{makeindex:version});
-% \item Because the accompanying \textsf{makeindex} style files support
-% the inconsistent attribute specifications of older and newer
-% versions \textsf{makeindex} always complains about three `unknown
-% specifier's when sorting the index and changes entries.
-% \item If "\MakeShortVerb" and "\DeleteShortVerb" are used with
-% single character arguments, e.g., "{|}" instead of "{\|}" chaos
-% may happen.
-% \end{itemize}
-% (Some `features' are documented below.)
-%
-% \subsection*{Wish list}
-%
-% \begin{itemize}
-% \item Hooks to allow "\DescribeMacro" and "\DescribeEnv" to write
-% out to a special file information about the package's `exported'
-% definitions which they describe. This could subsequently be
-% included in the \texttt{docstrip}ped \texttt{.sty} file in a
-% suitable form for use by smart editors in command completion,
-% spelling checking etc., based on the packages used in a document.
-% This would need agreement on a `suitable form'. \item Indexing of
-% the modules used in \texttt{docstrip}'s "%<" directives. I'm not
-% sure how to index directives containing module combinations; \item
-% Writing out bibliographic information about the package; \item Allow
-% turning off use of the special font for, say, the next guarded
-% block.
-% \end{itemize}
-%
-% \ifmulticols
-% \end{multicols}
-%
-% \begin{multicols}{2}[\medskip \rule{\textwidth}{.3pt}
-% \section{Introduction}]
-% \else
% \section{Introduction}
-% \fi
-%
-% The \TeX{} macros which are described here allow definitions and
-% documentation to be held in one and the same file. This has the
-% advantage that normally very complicated instructions are made
-% simpler to understand by comments inside the definition. In addition
-% to this, updates are easier and only one source file needs to be
-% changed. On the other hand, because of this, the package files are
-% considerably longer: thus \TeX{} takes longer to load them. If this
-% is a problem, there is an easy remedy: one needs only to run the
-% \texttt{docstrip.tex} program that removes nearly all lines that begin
-% with a
-% percent sign.
%
-% The idea of integrated documentation was born with the development
-% of the \TeX{} program; it was crystallized in Pascal with the \Web{}
-% system. The advantages of this method are plain to see (it's easy
-% to make comparisons \cite{art:Knuthliterat}). Since this
-% development, systems similar to \Web{} have been developed for other
-% programming languages. But for one of the most complicated
-% programming languages (\TeX) the documentation has however been
-% neglected. The \TeX{} world seems to be divided between:---
-% \begin{itemize} \item a couple of ``wizards'', who produce many
-% lines of completely unreadable code ``off the cuff'', and \item many
-% users who are amazed that it works just how they want it to do. Or
-% rather, who despair that certain macros refuse to do what is
-% expected of them.\end{itemize}
-%
-% I do not think that the \Web{} system is {\em the\/} reference work;
-% on the contrary, it is a prototype which suffices for the
-% development of programs within the \TeX{} world. It is sufficient,
-% but not totally sufficient.\footnote{I know that this will be seen
-% differently by a few people, but this product should not be seen as
-% the finished product, at least as far as applications concerning
-% \TeX{} are concerned. The long-standing debate over `multiple
-% change files' shows this well.} As a result of \Web, new programming
-% perspectives have been demonstrated; unfortunately, though, they
-% haven't been developed further for other programming languages.
-%
-% The method of documentation of \TeX{} macros which I have introduced
-% here should also only be taken as a first sketch. It is designed
-% explicitly to run under \LaTeX{} alone. Not because I was of the
-% opinion that this was the best starting point, but because from this
-% starting point it was the quickest to develop.\footnote{This
-% argument is a bad one, however, it is all too often trotted out.} As
-% a result of this design decision, I had to move away from the
-% concept of modularization; this was certainly a step backward.
-%
-% I would be happy if this article could spark off discussion over
-% \TeX\ documentation. I can only advise anyone who thinks that they
-% can cope without documentation to ``Stop Time'' until he or she
-% completely understands the \AmSTeX{} source code.
+% This is a new version of the \DOC package, written roughly 30 years
+% after the initial release. As the package has been used for so long
+% (and largely unchanged)
+% it is absolutely important to preserve existing interfaces, even if
+% we can agree that they could have been done better.
%
+% So this is a light-weight change, basically adding hyperlink support
+% and adding a way to provide generally \DOC elements (not just macros
+% and environments) and try to do this properly (which wasn't the case
+% for environments either in the past). The ideas for this have been
+% stolen from the \DOX package by Didier Verna even though I
+% didn't keep his interfaces.
%
-%
-%
-%
-% \subsection{Using the \DOC{} package}
-%
-% Just like any other package, invoke it by requesting it with a
-% |\usepackage| command in the preamble. \textsf{Doc}'s use of
-% |\reversemarginpars| may make it incompatible with some classes.
-% \changes{v1.7a}{1992/02/25}{Altered usage info}
-%
-%
-% \ifmulticols\end{multicols}\fi
+% Most of the documentation below is from the earlier release which
+% accounts for some inconsistencies in presentation, mea culpa.
%
%
% \section{The User Interface}\label{sec:interface}
@@ -342,36 +327,38 @@
% package one has to prepare a special driver file which produces the
% formatted document. This driver file has the following
% characteristics:
-%
-% \noindent |\documentclass[|\meta{options}]^^A
-% |{|\meta{document-class}|}|\\[1pt]
+% \begin{quote}
+% \noindent |\documentclass|\oarg{options}^^A
+% \marg{document-class}\\[1pt]
% |\usepackage{doc}|\\[3pt]
% \hspace*{10pt}\meta{preamble}\\[3pt]
% |\begin{document}|\\[3pt]
% \hspace*{10pt}\meta{special input commands}\\[3pt]
% |\end{document}|
-%
-% The \meta{document-class} might be any document class, I normally
+% \end{quote}
+% The \meta{document-class} might be any document class, I usually
% use \texttt{article}.
%
% In the \meta{preamble} one should place declarations which
% manipulate the behavior of the \DOC{} package like
% |\DisableCrossrefs| or |\OnlyDescription|.
%
-% \DescribeMacro\DocInput \DescribeMacro\IndexInput
-% Finally the \meta{special input commands} part should contain one or
-% more |\DocInput|\meta{file name} and/or
-% |\IndexInput|\meta{file name} commands. The
+%
+% \DescribeInterfaceMacro\DocInput \DescribeInterfaceMacro\IndexInput
+% Finally
+% the \meta{special input commands} part should contain one or
+% more |\DocInput|\marg{file name} and/or
+% |\IndexInput|\marg{file name} commands. The
% |\DocInput| command is used for files prepared for the
% \DOC{} package whereas |\IndexInput| can be used for all kinds of
% macro files. See page \pageref{..Input} for more details of
-% "\IndexInput". Multiple "\DocInput"s can be used with a
+% |\IndexInput|. Multiple |\DocInput|s can be used with a
% number of included files which are each self-contained
% self-documenting packages---for instance, each containing
-% "\maketitle".
+% |\maketitle|.
%
% As an example, the driver file for the \DOC{} package itself is
-% the following text surrounded by "%<*driver>" and "%</driver>".
+% the following text surrounded by |%<*driver>| and |%</driver>|.
% To produce the documentation you can simply run the \texttt{.dtx}
% file through \LaTeX{} in which case this code will be executed
% (loading the document class \texttt{ltxdoc}, etc.) or you can
@@ -379,7 +366,7 @@
% the \texttt{docstrip} program.
% The line numbers below are added by
% \DOC{}'s formatting.
-% Note that the class \textsf{ltxdoc} has the \DOC{} package
+% Note that the class \cls{ltxdoc} has the \DOC{} package
% preloaded.
% \changes{v1.7a}{1992/03/06}{Added
% docstrip-derivable driver file as example.}
@@ -387,20 +374,83 @@
% \begin{macrocode}
%<*driver>
\documentclass{ltxdoc}
+
+\usepackage[T1]{fontenc}
+\usepackage{xspace}
+
+\OnlyDescription
+
\EnableCrossrefs
- %\DisableCrossrefs % Say \DisableCrossrefs if index is ready
+ %\DisableCrossrefs % Say \DisableCrossrefs if index is ready
\CodelineIndex
-\RecordChanges % Gather update information
- %\OnlyDescription % comment out for implementation details
- %\OldMakeindex % use if your MakeIndex is pre-v2.9
-\setlength\hfuzz{15pt} % dont make so many
-\hbadness=7000 % over and under full box warnings
+\RecordChanges % Gather update information
+\SetupDoc{reportchangedates}
+ %\OnlyDescription % comment out for implementation details
+\setlength\hfuzz{15pt} % don't show so many
+\hbadness=7000 % over- and underfull box warnings
\begin{document}
\DocInput{doc.dtx}
\end{document}
%</driver>
% \end{macrocode}
%
+% \RecordIndexType{\CodelineIndex}{InterfaceMacro}
+% \RecordIndexType{\DisableCrossrefs}{InterfaceMacro}
+% \RecordIndexType{\DocInput}{InterfaceMacro}
+% \RecordIndexType{\EnableCrossrefs}{InterfaceMacro}
+% \RecordIndexType{\OnlyDescription}{InterfaceMacro}
+% \RecordIndexType{\RecordChanges}{InterfaceMacro}
+% \RecordIndexType{\hbadness}{TeXCounter}
+% \RecordIndexType{\hfuzz}{LaTeXDimen}
+%
+%
+% \subsection{Package options}
+%
+% \NewIn{v3}
+% Starting with version~3 the \DOC package now offers a small number
+% of package options to modify its overall behavior. These are:
+% \DescribeOption[noprint]{multicol}
+% \DescribeOption[noprint]{nomulticol}
+% \DescribeOption[noprint]{hyperref}
+% \DescribeOption[noprint]{nohyperref}
+% \DescribeOption[noprint]{debugshow}
+% \DescribeOption[noprint]{noindex}
+% \DescribeOption[noprint]{noprint}
+% \DescribeOption[noprint]{reportchangedates}
+% \begin{description}
+% \item[\opt{hyperref}, \opt{nohyperref}] Boolean (default \texttt{true}). Load the
+% \pkg{hyperref} package and make index references to code lines
+% and pages and other items clickable links. \opt{nohyperref} is
+% the complementary key.
+%
+% \item[\opt{multicol}, \opt{nomulticol}] Boolean (default \texttt{true}). Load the
+% \pkg{multicol} package for use in typesetting the index and the
+% list of changes. \opt{nomulticol} is
+% the complementary key.
+%
+% \item[\opt{debugshow}] Boolean (default \texttt{false}). Provide
+% various tracing information at the terminal and in the transcript
+% file. In particular show which elements are indexed.
+%
+% \item[\opt{noindex}] Boolean (default \texttt{false}). If set, all
+% automatic indexing is suppressed. This option can also be used on
+% individual elements as described below.
+%
+% \item[\opt{noprint}] Boolean (default \texttt{false}). If set, then
+% printing of element names in the margin will be suppressed. This
+% option can also be used on individual elements as described
+% below.
+% \item[\opt{reportchangedates}] Boolean (default \texttt{false}). If
+% set, then change entries list the date after the version number in
+% the change log.
+% \end{description}
+%
+% \DescribeInterfaceMacro{\SetupDoc} Instead of providing options to the \DOC
+% package you can call \cs{SetupDoc} and provide them there. This
+% allows, for example, to change default values in case \DOC was already
+% loaded earlier.
+%
+%
%
% \subsection{General conventions}
%
@@ -413,10 +463,18 @@
% \LaTeX{} commands except that the character `|%|' cannot be
% used as a comment character.
% \SortIndex{\string^\string^A}{\string\verb\verbatimchar
-% \string^\string^A\verbatimchar \encapchar usage} To allow user
-% comments, the |^^A| character is defined as a comment character
-% later on. Such `metacomments' may be also be included simply by
-% surrounding them with "\iffalse" \ldots~"\fi".
+% \string^\string^A\verbatimchar \encapchar usage}^^A
+% \SortIndex{\string^\string^X}{\string\verb\verbatimchar
+% \string^\string^X\verbatimchar \encapchar usage}
+% To allow user
+% comments, the characters |^^A| and |^^X| are both defined as a comment character
+% later on.\footnote{In version 2 it was only
+% \texttt{\string^\string^A}, but many keyboards combine
+% \texttt{\string^} and \texttt{A} and automatically turn it into
+% ``Ä''; so \texttt{\string^\string^X} was added as an
+% alternative in version 3.}
+% Such `metacomments' may be also be included simply by
+% surrounding them with |\iffalse| \ldots~|\fi|.
%
% All other parts of the file are called `definition parts'. They
% contain fractions of the macros described in the `documentation
@@ -430,13 +488,17 @@
% \DescribeEnv{macrocode}
% On the other hand, if the documentation of these macros is to be
% produced, the `definition parts' should be typeset verbatim. To
-% achieve this, these parts are surrounded by the \textsf{macrocode}
+% achieve this, these parts are surrounded by the \env{macrocode}
% environment.
% More exactly: before a `definition part' there should be a line
-% containing\\
-% \hspace*{\MacroIndent}\verb*+% \begin{macrocode}+\\
-% and after this part a line\\
-% \hspace*{\MacroIndent}\verb*+% \end{macrocode}+\\
+% containing
+% \begin{flushleft}
+% \hspace*{\MacroIndent}\verb*+% \begin{macrocode}+
+% \end{flushleft}
+% and after this part a line
+% \begin{flushleft}
+% \hspace*{\MacroIndent}\verb*+% \end{macrocode}+
+% \end{flushleft}
% There must be {\em exactly\/} four spaces between the |%|
% and |\end{macrocode}| --- \TeX{} is looking for this string
% and not for the macro while processing a `definition part'.
@@ -444,16 +506,16 @@
% Inside a `definition part' all \TeX{} commands are allowed; even the
% percent sign could be used to suppress unwanted spaces etc.
%
-% \DescribeEnv{macrocode*} Instead of the \textsf{macrocode}
-% environment one can also use the \textsf{macrocode$*$} environment
+% \DescribeEnv{macrocode*} Instead of the \env{macrocode}
+% environment one can also use the \env{macrocode$*$} environment
% which produces the same results except that spaces are printed as
% \nopagebreak\verb*+ + characters.
%
%
%
-% \subsection{Describing the usage of new macros}
+% \subsection{Describing the usage of macros and environments}
%
-% \DescribeMacro\DescribeMacro
+% \DescribeInterfaceMacro\DescribeMacro
% When you describe a new macro you may use |\DescribeMacro| to
% indicate that at this point the usage of a specific macro is
% explained. It takes one argument which will be printed in the margin
@@ -461,35 +523,38 @@
% |\DescribeMacro{\DescribeMacro}| to make clear that this is the
% point where the usage of |\DescribeMacro| is explained.
%
-% \DescribeMacro\DescribeEnv
-% An analogous macro |\DescribeEnv| should be used to indicate
-% that a \LaTeX{} environment is explained. It will produce a somewhat
-% different index entry. Below I used |\DescribeEnv{verbatim}|.
+% As the argument to |\DescribeMacro| is a command name, many people
+% got used to using the (incorrect) short form, i.e., omitting the
+% braces around the argument as in |\DescribeMacro\foo|. This does
+% work as long as the macro name consists only of ``letters''.
+% However, if the name contains special characters that are normally
+% not of type ``letter'' (such as |@|, or in case of \pkg{expl3} |_|
+% and |:|) this will fail dramatically. |\DescribeMacro| would then
+% receive only a partial command name (up to the first ``non-letter'')
+% e.g., |\DescribeMacro\foo@bar| would be equivalent to
+% |\DescribeMacro{\foo} @bar| and you can guess that this can
+% resulting in both incorrect output and possibly low-level error
+% messages.
+%
+% \DescribeInterfaceMacro\DescribeEnv
+% An analogous macro |\DescribeEnv| should be used to indicate that a
+% \LaTeX{} environment is explained. It will produce a somewhat
+% different index entry and a slightly different display in the
+% margin. Below I used |\DescribeEnv{verbatim}|.
%
-% \DescribeEnv{verbatim}
-% It is often a good idea to include examples of the usage of new macros
-% in the text. Because of the |%| sign in the first column of every
-% row, the \textsf{verbatim} environment is slightly altered to suppress
-% those
-% characters.\footnote{These macros were written by Rainer
-% Sch\"opf~\cite{art:verbatim}. He also
-% provided a new \textsf{verbatim} environment
-% which can be used inside of other macros.}
-% \DescribeEnv{verbatim*}
-% The \textsf{verbatim$*$} environment is changed in the same way.
-% \changes{v1.7a}{1992/02/26}{Documented \cs{verb} change.}
-% \DescribeMacro\verb
-% The "\verb" command is re-implemented to give an error report if a
-% newline appears in its argument.
-% The \textsf{verbatim} and \textsf{verbatim$*$} environments set text
-% in the style defined by "\MacroFont"~(\S\ref{sec:macrofont}).
%
+% \NewIn{v3}
+% Starting with version~3 the \cs{Describe...} commands accept an
+% optional argument in which you can specify either \opt{noindex}
+% or \opt{noprint} to suppress indexing or printing for that
+% particular instance. Using both would be possible too, but pointless
+% as then the commands wouldn't do anything any more.
%
%
-% \subsection{Describing the definition of new macros}
+% \subsection{Describing the definition of macros and environments}
%
% \DescribeEnv{macro}
-% To describe the definition of a new macro we use the \textsf{macro}
+% To describe the definition of a (new) macro we use the \env{macro}
% environment. It has one argument: the name of the new
% macro.\footnote{This is a change to the style design I described in
% ^^A \TUB ^^A removed in case ltugboat.sty not used
@@ -505,20 +570,26 @@
% labels in the margin are placed under each other.
% \changes{v1.7a}{1992/02/26}{Note on need for some text in macro env.}
% There should be some text---even if it's just an empty
-% "\mbox{}"---in this environment before "\begin{macrocode}" or the
+% |\mbox{}|---in this environment before |\begin{macrocode}| or the
% marginal label won't print in the right place.
%
-% \DescribeMacro\MacrocodeTopsep
-% \DescribeMacro\MacroTopsep
+% \NewIn{v3}
+% In fact it is now allowed to specify several macros in the argument,
+% separated by commas. This is a short form for starting several
+% \env{macro} environments in direct succession. Of course, you
+% should then have also only one matching |\end{macro}|.
+%
+% \DescribeLaTeXSkip\MacrocodeTopsep
+% \DescribeLaTeXSkip\MacroTopsep
% There also exist four style parameters: |\MacrocodeTopsep| and
% |\MacroTopsep| are used to control the vertical spacing above
-% and below the \textsf{macrocode} and the \textsf{macro}
-% \DescribeMacro\MacroIndent
+% and below the \env{macrocode} and the \env{macro}
+% \DescribeLaTeXDimen\MacroIndent
% environment, |\MacroIndent| is used to indent the lines of code
% and
-% \DescribeMacro\MacroFont \label{sec:macrofont}
+% \DescribeInterfaceMacro\MacroFont \label{sec:macrofont}
% |\MacroFont| holds the font and a possible size change command
-% for the code lines, the "verbatim"["*"] environment and the macro
+% for the code lines, the |verbatim|[|*|] environment and the macro
% names printed in the margin. If you want
% to change their default values in a
% class file (like \texttt{ltugboat.cls}) use the |\DocstyleParms|
@@ -526,17 +597,34 @@
% be changed directly as long as the redefinition happens before
% the |\begin{document}|.
%
+% \DescribeEnv{environment}
+% For documenting the definition of environments one can use the
+% environment \texttt{environment} which works like the \texttt{macro}
+% environment, except that it expects an \meta{env-name}
+% (without a backslash)
+% as its argument and internally provides different index
+% entries suitable for environments.
+% Nowadays you can alternatively specify a comma-separated list of environments.
+%
+% \NewIn{v3}
+% Starting with version~3 these environments accept an optional
+% argument in which you can specify \opt{noindex} or \opt{noprint} or
+% both to suppress indexing or printing for that particular
+% instance. If any such setting is made on the environment level it
+% overwrites whatever default was given when the \DOC element was
+% defined or when the package was loaded.
+%
%
%
%
-% \subsection{Formatting the margins}
+% \subsection{Formatting names in the margin}
%
-% \DescribeMacro\PrintDescribeMacro
-% \DescribeMacro\PrintDescribeEnv
-% \DescribeMacro\PrintMacroName
-% \DescribeMacro\PrintEnvName
-% As mentioned earlier, some macros and the \textsf{macro} environment
-% print their arguments in the margin. This is actually done by four
+% \DescribeInterfaceMacro\PrintDescribeMacro
+% \DescribeInterfaceMacro\PrintDescribeEnv
+% \DescribeInterfaceMacro\PrintMacroName
+% \DescribeInterfaceMacro\PrintEnvName
+% As mentioned earlier, some macros and environment
+% print their arguments in the margin. The actual formatting is done by four
% macros which are user
% definable.\footnote{You may place the changed definitions in a
% separate package
@@ -544,33 +632,157 @@
% file.
% For example, if you don't like any names in the
% margin
-% but want a fine index you can simply
-% \texttt{\bslash let}
-% these macros equal \texttt{\bslash @gobble}.
-% The doc package won't redefine any existing
-% definitions of these macros.}
-% They are named |\PrintDescribeMacro|, |\PrintDescribeEnv|,
-% |\PrintMacroName| (called by the \textsf{macro} environment) and
-% |\PrintEnvName| (called by the \textsf{environment} environment).
+% but want a fine index you can simply redefine them
+% accept their argument and do nothing with it.}
+% They are named |\PrintDescribeMacro| and |\PrintDescribeEnv| (defining
+% how |\DescribeMacro| and |\DescribeEnv| behave) and
+% |\PrintMacroName| and
+% |\PrintEnvName| (called by the \env{macro} and \env{environment}
+% environments, respectively).
+%
+%
+% \subsection{Providing further documentation items}
+%
+% Out of the box the \DOC package offers the above commands and
+% environments to document macros and environments.
+% \NewIn{v3}
+% With version 3
+% this has now been extended in a generic fashion so that you can
+% easily provide your own items, such as counters, length register,
+% options etc.
+%
+% \DescribeInterfaceMacro{\NewDocElement}
+% The general syntax for providing a new \DOC element is
+% \begin{quote}
+% \cs{NewDocElement}\oarg{options}\marg{element-name}\marg{env-name}
+% \end{quote}
+% By convention the \meta{element-name} has the first letter
+% uppercased as in \texttt{Env} or \texttt{Macro}.
+%
+% Such a declaration will define for you
+% \begin{itemize}
+% \item the command |\Describe|\meta{element-name} which has the
+% syntax
+% \begin{quote}
+% |\Describe|\meta{element-name}\oarg{options}\marg{element}
+% \end{quote}
+%
+% \item the environment \meta{env-name} which has the syntax
+% \begin{quote}
+% \cs{begin}\marg{env-name}\oarg{options}\marg{element}
+% \end{quote}
+%
+% \item the display command |\PrintDescribe|\meta{element-name} with
+% the syntax
+% \begin{quote}
+% |\PrintDescribe|\meta{element-name}\marg{element}
+% \end{quote}
+%
+% \item and the
+% |\Print|\meta{element-name}|Name| display command for the
+% environment.
+% \end{itemize}
+% If any of the commands or the environment is already defined (which
+% especially with the \meta{env-name} is a danger) then you will
+% receive an error telling you so.
+%
+% \DescribeInterfaceMacro{\RenewDocElement}
+% If you want to modify an existing \DOC element use
+% |\RenewDocElement| instead.
+%
+% For example, the already provided ``\texttt{Env}'' \DOC element could have been
+% defined simply by making the declaration
+% |\NewDocElement{Env}{environment}|
+% though that's not quite what has been done, as we will see later.
+%
+% \DescribeOption[noprint]{macrolike}
+% \DescribeOption[noprint]{envlike}
+% \DescribeOption[noprint]{toplevel}
+% \DescribeOption[noprint]{notoplevel}
+% \DescribeOption[noprint]{idxtype}
+% \DescribeOption[noprint]{printtype}
+% \DescribeOption[noprint]{idxgroup}
+% The \meta{options} are keyword/value and define further details on
+% how that \DOC element should behave. They are:
+% \begin{description}
+% \item[\opt{macrolike}] Boolean (default \opt{false}). Does this \DOC
+% element starts with a backslash?
+%
+% \item[\opt{envlike}] Boolean. Complementary option to
+% \opt{macrolike}.
+%
+% \item[\opt{toplevel}] Boolean (default \opt{true}). Should all
+% a top-level index entry be made? If set to \texttt{false} then
+% either no index entries are produced or only grouped index entries
+% (see \opt{idxgroup} for details).
+%
+% \item[\opt{notoplevel}] Boolean. Complementary option to
+% \opt{toplevel}.
+%
+% \item[\opt{idxtype}] String (default \meta{env-name}). What to put
+% (in parentheses if non-empty) at the end of a top-level index entry.
+%
+% \item[\opt{printtype}] String (default \meta{env-name}). What to put
+% (in parentheses if non-empty) after an element name in the margin.
+%
+% \item[\opt{idxgroup}] String (default
+% \meta{env-name}\texttt{s}). Name of the top-level index entry if
+% entries are grouped. They are only grouped if this option is
+% non-empty.
+%
+% \item[\opt{noindex}] Boolean (default \texttt{false}). If set this
+% will suppress indexing for elements of this type. This setting
+% overwrite any global setting of \opt{noindex}.
%
+% \item[\opt{noprint}] Boolean (default \texttt{false}). If set this
+% will suppress printing the element name in the margin. This setting
+% overwrite any global setting of \opt{noprint}.
+% \end{description}
+% As usual giving a boolean option without a value sets it to
+% \texttt{true}.
+
+
+
+
+% \subsection{Displaying sample code verbatim}
%
+% \DescribeEnv{verbatim}
+% It is often a good idea to include examples of the usage of new macros
+% in the text. Because of the |%| sign in the first column of every
+% row, the \env{verbatim} environment is slightly altered to suppress
+% those
+% characters.\footnote{These macros were written by Rainer
+% Schöpf~\cite{art:verbatim}. He also
+% provided a new \env{verbatim} environment
+% which can be used inside of other macros.}
+% \DescribeEnv{verbatim*}
+% The \env{verbatim$*$} environment is changed in the same way.
+% \changes{v1.7a}{1992/02/26}{Documented \cs{verb} change.}
+% \DescribeInterfaceMacro\verb
+% The |\verb| command is re-implemented to give an error report if a
+% newline appears in its argument.
+% The \env{verbatim} and \env{verbatim$*$} environments set text
+% in the style defined by |\MacroFont|~(\S\ref{sec:macrofont}).
+%
+%
+
% \subsection{Using a special escape character}
%
-% \DescribeMacro\SpecialEscapechar
+% \DescribeInterfaceMacro\SpecialEscapechar
% If one defines complicated macros it is sometimes necessary to
% introduce a new escape character because the `|\|' has got a
% special |\catcode|. In this case one can use
% |\SpecialEscapechar| to indicate which character is actually
% used to play the r\^ole of the `|\|'. A scheme like this is
-% needed because the \textsf{macrocode} environment and its counterpart
-% \textsf{macrocode$*$} produce an index entry for every occurrence of a
+% needed because the \env{macrocode} environment and its counterpart
+% \env{macrocode$*$} produce an index entry for every occurrence of a
% macro name. They would be very confused if you didn't tell them that
% you'd changed |\catcode|$\,$s. The argument to
% |\SpecialEscapechar| is a single-letter control sequence, that
-% is, one has to use "\|" for example to denote that `\verb+|+'
+% is, one has to use \verb=\|= for example to denote that `\verb+|+'
% is used as an escape character. |\SpecialEscapechar| only
-% changes the behavior of the next \textsf{macrocode} or
-% \textsf{macrocode$*$} environment.
+% changes the behavior of the next \env{macrocode} or
+% \env{macrocode$*$} environment.
%
% The actual index entries created will all be printed with |\|
% rather than \verb+|+, but this probably reflects their usage, if not
@@ -582,20 +794,24 @@
%
% \subsection{Cross-referencing all macros used}
%
-% \DescribeMacro\DisableCrossrefs \DescribeMacro\EnableCrossrefs As
-% already mentioned, every new macro name used within a
-% \textsf{macrocode} or \textsf{macrocode$*$} environment will produce
-% an index entry. In this way one can easily find out where a specific
-% macro is used. Since \TeX{} is considerably slower when it has to
-% produce such a bulk of index entries one can turn off this feature
-% by using |\DisableCrossrefs| in the driver file. To turn it on again
-% just use |\EnableCrossrefs|.\footnote{Actually, \texttt{\bslash
-% EnableCrossrefs} changes things more drastically; any following
-% \texttt{\bslash DisableCrossrefs} which might be present in the
-% source will be ignored.}
-%
-%
-% \DescribeMacro\DoNotIndex
+% \DescribeInterfaceMacro\DisableCrossrefs \DescribeInterfaceMacro\EnableCrossrefs As
+% already mentioned, every macro name used within a
+% \env{macrocode} or \env{macrocode$*$} environment will produce an
+% index entry. In this way one can easily find out where a specific
+% macro is used. Since \TeX{} is considerably slower\footnote{This
+% comment was written about 30 years ago. \TeX{} is still considerably
+% slower but while it took minutes to process a large document (such
+% as the \LaTeX{} kernel documentation) it takes seconds or less these
+% days. Thus \cs{DisableCrossrefs} isn't really that necessary these
+% days.} when it has to produce such a bulk of index entries one can
+% turn off this feature by using |\DisableCrossrefs| in the driver
+% file. To turn it on again just use
+% |\EnableCrossrefs|.\footnote{Actually, \cs{EnableCrossrefs} changes
+% things more drastically; any following call to \cs{DisableCrossrefs}
+% which might be present in the source will be ignored.}
+%
+%
+% \DescribeInterfaceMacro\DoNotIndex
% But also finer control is provided. The |\DoNotIndex| macro
% takes a list of macro names separated by commas. Those names won't
% show up in the index. You might use several |\DoNotIndex|
@@ -605,26 +821,28 @@
%
% All three above declarations are local to the current group.
%
-% Production (or not) of the index (via the "\makeindex" commend) is
+% Production (or not) of the index (via the |\makeindex| commend) is
% controlled by using or omitting the following declarations in the
% driver file preamble; if neither is used, no index is produced.
-% \DescribeMacro\PageIndex Using "\PageIndex" makes all index
+% \DescribeInterfaceMacro\PageIndex Using |\PageIndex| makes all index
% entries refer to their page number; with
-% \DescribeMacro\CodelineIndex "\CodelineIndex", index entries
-% produced by "\DescribeMacro" and "\DescribeEnv" refer to page number
-% but those produced by the \textsf{macro} environment refer to the
+% \DescribeInterfaceMacro\CodelineIndex |\CodelineIndex|, index entries
+% produced by |\DescribeMacro| and |\DescribeEnv| and possibly further
+% |\Describe...| commands refer to a page number
+% but those produced by the \env{macro} environment (or other \DOC
+% element environments) refer to the
% code lines, which will be numbered automatically.\footnote{The line
% number is actually that of the first line of the first
-% \textsf{macrocode} environment in the \textsf{macro} environment.}
-% \DescribeMacro\theCodelineNo
+% \env{macrocode} environment in the \env{macro} environment.}
+% \DescribeInterfaceMacro\theCodelineNo
% The style of this numbering can be controlled by defining the macro
-% "\theCodelineNo". Its default definition is to use scriptsize
+% |\theCodelineNo|. Its default definition is to use scriptsize
% arabic numerals; a user-supplied definition won't be overwritten.
%
-% \DescribeMacro\CodelineNumbered
+% \DescribeInterfaceMacro\CodelineNumbered
% When you don't wish to get an index but want your code lines
-% numbered use "\CodelineNumbered" instead of "\CodelineIndex". This
-% prevents the generation of an unnecessary ".idx" file.
+% numbered use |\CodelineNumbered| instead of |\CodelineIndex|. This
+% prevents the generation of an unnecessary |.idx| file.
%
%
% \subsection{Producing the actual index entries}
@@ -632,7 +850,7 @@
% Several of the aforementioned macros will produce some sort of index
% entries. These entries have to be sorted by an external
% program---the current implementation assumes that the
-% \textsf{makeindex} program by Chen~\cite{art:Chen} is used.
+% \prg{makeindex} program by Chen~\cite{art:Chen} is used.
%
% But this isn't built in: one has only to redefine some of the
% following macros to be able to use any other index program. All
@@ -644,25 +862,25 @@
%
% To allow the user to change the specific characters recognized by
% his or her index program all characters which have special meaning
-% in the \textsf{makeindex} program are given symbolic
+% in the \prg{makeindex} program are given symbolic
% names.\footnote{I don't know if there exists a program which needs
% more command characters, but I hope not.}
% However, all characters used should be of |\catcode| other than
% `letter' (11).
%
-% \DescribeMacro{\actualchar}
+% \DescribeInterfaceMacro{\actualchar}
% The |\actualchar| is used to separate the `key' and the actual
% index entry.
-% \DescribeMacro{\quotechar}
+% \DescribeInterfaceMacro{\quotechar}
% The |\quotechar| is used before a special index program
% character to suppress its special meaning.
-% \DescribeMacro{\encapchar}
+% \DescribeInterfaceMacro{\encapchar}
% The |\encapchar| separates the indexing information from a
-% letter string which \textsf{makeindex} uses as a \TeX{} command to
+% letter string which \prg{makeindex} uses as a \TeX{} command to
% format the page number associated with a special entry. It is used
% in this package to apply the |\main| and the |\usage|
% commands.
-% \DescribeMacro{\levelchar}
+% \DescribeInterfaceMacro{\levelchar}
% Additionally |\levelchar| is used to separate `item',
% `subitem' and `subsubitem' entries.
%
@@ -670,33 +888,54 @@
% which index program is used. In this way your files will be
% portable.
%
-% \DescribeMacro\SpecialMainIndex
-% \DescribeMacro\SpecialMainEnvIndex
+% \fmi{describe old \cs{SpecialMainIndex} and \cs{SpecialUsageIndex}}
+%
+% \DescribeInterfaceMacro\SpecialMainMacroIndex
+% \DescribeInterfaceMacro\SpecialMainEnvIndex
% To produce a main index entry for a macro the
-% |\SpecialMainIndex| macro\footnote{This macro is called by the
-% \textsf{macro} environment.} may be used. It is called `special'
+% |\SpecialMainMacroIndex| macro\footnote{This macro is called by the
+% \env{macro} environment.} may be used. It is called `special'
% because it has to print its argument verbatim.
% A similar macro, called |\SpecialMainEnvIndex| is used for indexing
% the main definition point of an
% environment.\footnote{This macro is called by the
-% \textsf{environment} environment.}
-% \DescribeMacro\SpecialIndex
-% If you want a normal index entry for a macro name
-% |\SpecialIndex| might be used.\footnote{This macro is called
-% within the \textsf{macrocode} environment when encountering a macro
-% name.}
-% \DescribeMacro\SpecialUsageIndex
-% \DescribeMacro\SpecialEnvIndex
+% \env{environment} environment.}
+%
+% \DescribeInterfaceMacro\SpecialMacroIndex
+% \DescribeInterfaceMacro\SpecialEnvIndex
% To index the usage of a macro or an environment
-% |\SpecialUsageIndex| and |\SpecialEnvIndex| may be used.
-% \DescribeMacro\SortIndex
-% Additionally a |\SortIndex| command is provided. It takes two
-% arguments---the sort key and the actual index entry.
+% |\SpecialMacroIndex| and |\SpecialEnvIndex| may be used.
%
% All these macros are normally used by other macros; you will need
% them only in an emergency.
%
-% \DescribeMacro\verbatimchar
+% \NewIn{v3}
+% If further code elements are declared with
+% |\NewDocElement|\marg{name}\texttt{...} then this sets up
+% additional indexing commands, e.g.,
+% \cs{SpecialMain\meta{name}Index}.
+%
+% \DescribeInterfaceMacro\SpecialIndex
+% The \env{macrocode} environment is automatically indexing macros
+% (normally by code line number). You can (with care) also do this
+% manually by
+% |\SpecialIndex|. However, note that if |\CodelineIndex| is used
+% this will generate an entry referring to the last code line which is
+% usually not what you want. It does, however, make some sense if you
+% always refer to pages only, i.e., if you use |\PageIndex|.
+%
+% \DescribeInterfaceMacro\SpecialShortIndex
+% \NewIn{v3}
+% For single character macros, e.g., |\{|, doesn't always work
+% correctly.
+% For this reason there is now also
+% a special variant the can produce correct index entries for them.
+%
+% \DescribeInterfaceMacro\SortIndex
+% Additionally a |\SortIndex| command is provided. It takes two
+% arguments---the sort key and the actual index entry.
+%
+% \DescribeInterfaceMacro\verbatimchar
% But there is one characteristic worth mentioning: all macro names in
% the index are typeset with the |\verb*| command. Therefore one
% special character is needed to act as a delimiter for this command.
@@ -704,12 +943,14 @@
% referenced indirectly, by the macro |\verbatimchar|. It expands
% by default to \verb?+? but if your code lines contain macros with
% `\texttt{+}' characters in their names (e.g.\ when you use \verb?\+?)
-% you will end up with an index entry containing \verb?\verb+\++?
-% which will be typeset as `\verb+\++' and not as `\verb?\+?'. In this
-% case you should redefine |\verbatimchar| globally or locally to
-% overcome this problem.
-%
-% \DescribeMacro\*
+% then that caused a problem because you ended up with an
+% index entry containing \verb?\verb+\++?
+% which will be typeset as `\verb+\++' and not as `\verb?\+?'.
+% \NewIn{v3}
+% In version 3 this is now automatically taken care of (with the help
+% of the |\SpecialShortIndex| command).
+%
+% \DescribeInterfaceMacro\*
% We also provide a |\*| macro. This is intended to be used for
% index entries like
% \begin{quote}
@@ -721,49 +962,39 @@
% \index{index entries\levelchar Special macros for \*}
%\end{verbatim}
%
-% \DescribeMacro\OldMakeindex
-% Versions of \textsf{makeindex} prior to 2.9 had some bugs affecting
-% \DOC{}. One of these,
-% pertaining to the "%" character doesn't have a work-around
-% appropriate for versions with and without the
-% bug.\label{makeindex:version} If
-% you have an old version, invoke "\OldMakeindex" in a
-% package file or the driver file to prevent problems with index entries
-% such as "\%", although you'll probably normally want to turn off
-% indexing of "\%" anyway. Try to get an up-to-date \textsf{makeindex}
-% from one of the \TeX{} repositories.
-%
%
% \subsection{Setting the index entries}
%
% \changes{v1.7a}{1992/03/11}{Usage note on gind.ist.} After the first
% formatting pass through the \texttt{.dtx} file you need to sort the
% index entries written to the \texttt{.idx} file using
-% \textsf{makeindex} or your favourite alternative. You need a
-% suitable style file for \textsf{makeindex} (specified by the
+% \prg{makeindex} or your favorite alternative. You need a
+% suitable style file for \prg{makeindex} (specified by the
% \texttt{-s} switch). A suitable one is supplied with \DOC{},
% called \texttt{gind.ist}.
%
-% \DescribeMacro\PrintIndex
+% \DescribeInterfaceMacro\PrintIndex
% To read in and print the sorted index, just put the
% |\PrintIndex| command as the last (commented-out, and thus
% executed during the documentation pass through the file) command
% in your package file. Precede it by any bibliography commands
% necessary for your citations.
% Alternatively, it may be more convenient to put all such calls
-% amongt the arguments of the |\StopEventually| macro, in
+% amongst the arguments of the |\MaybeStop| macro, in
% which case a |\Finale| command should appear at the end of
% your file.
%
% \DescribeEnv{theindex}
% Contrary to standard \LaTeX, the index is typeset in three columns
-% by default. This is controlled by the \LaTeX{} counter
+% by default.
+% \DescribeLaTeXCounter{IndexColumns}
+% This is controlled by the \LaTeX{} counter
% `\textsf{IndexColumns}' and can therefore be changed with a
% |\setcounter| declaration. Additionally one doesn't want to
-% start a new page unnecessarily. Therefore the \textsf{theindex}
+% start a new page unnecessarily. Therefore the \env{theindex}
% environment is redefined.
-% \DescribeMacro\IndexMin
-% When the \textsf{theindex} environment starts it will measure how much
+% \DescribeLaTeXDimen\IndexMin
+% When the \env{theindex} environment starts it will measure how much
% space is left on the current page. If this is more than
% |\IndexMin| then the index will start on this page. Otherwise
% |\newpage| is called.
@@ -771,23 +1002,23 @@
% Then a short introduction about the meaning of several index entries
% is typeset (still in onecolumn mode). Afterwards the actual index
% entries follow in multi-column mode.
-% \DescribeMacro\IndexPrologue
+% \DescribeInterfaceMacro\IndexPrologue
% You can change this prologue with the help of the
% |\IndexPrologue| macro. Actually the section heading is also
% produced in this way, so you'd better write something like:
% \begin{verbatim}
% \IndexPrologue{\section*{Index} The index entries underlined ...}
%\end{verbatim}
-% When the \textsf{theindex} environment is finished the last page will
+% When the \env{theindex} environment is finished the last page will
% be reformatted to produce balanced columns. This improves the layout
% and allows the next article to start on the same page.
-% \DescribeMacro\IndexParms
+% \DescribeInterfaceMacro\IndexParms
% Formatting of the index columns (values for |\columnssep|
% etc.)\ is controlled by the |\IndexParms| macro. It assigns the
% following values:
-% \SpecialUsageIndex{\parindent}\SpecialUsageIndex{\columnsep}^^A
-% \SpecialUsageIndex{\parskip}\SpecialUsageIndex{\rightskip}^^A
-% \SpecialUsageIndex{\mathsurround}\SpecialUsageIndex{\parfillskip}
+% \SpecialLaTeXDimenIndex{\parindent}\SpecialLaTeXDimenIndex{\columnsep}^^A
+% \SpecialLaTeXSkipIndex{\parskip}\SpecialLaTeXSkipIndex{\rightskip}^^A
+% \SpecialLaTeXDimenIndex{\mathsurround}\SpecialLaTeXSkipIndex{\parfillskip}
% \begin{center}
% \begin{tabular}{l@{\,=\,}ll@{\,=\,}l}
% |\parindent| & \IndexParms \the\parindent &
@@ -800,24 +1031,27 @@
% \expandafter\dimenvalue\the\parfillskip
% \end{tabular}
% \end{center}
-% \DescribeMacro{\@idxitem}
+% \DescribeInterfaceMacro{\@idxitem}
% Additionally it defines |\@idxitem| (which will be used when an
% |\item| command is encountered) and selects |\small| size.
% If you want to change any of these values you have to define them
% all.
%
-% \DescribeMacro\main
-% \DescribeMacro\usage
+% \DescribeInterfaceMacro\main
+% \DescribeInterfaceMacro\usage
+% \DescribeInterfaceMacro\code
% The page numbers for main index entries are encapsulated by the
% |\main| macro (underlining its argument) and the numbers
% denoting the description are encapsulated by the |\usage| macro
-% (which produces {\em italics}). As usual these commands are user
+% (which produces \textit{italics}). |\code| encapsulates page or code
+% line numbers in entries generated by parsing the code inside
+% \env{macrocode} environments. As usual these commands are user
% definable.
%
%
% \subsection{Changing the default values of style parameters}
%
-% \DescribeMacro\DocstyleParms If you want to overwrite some default
+% \DescribeInterfaceMacro\DocstyleParms If you want to overwrite some default
% settings made by the \DOC{} package, you can either put your
% declarations in the driver file (that is after \texttt{doc.sty} is
% read in) or use a separate package file for doing this work. In the
@@ -828,10 +1062,13 @@
%
% The doc package currently assigns values to the following
% registers:
-% \SpecialUsageIndex{\IndexMin}\SpecialUsageIndex{\MacrocodeTopsep}^^A
-% \SpecialUsageIndex{\MacroTopsep}^^A
-% \SpecialUsageIndex{\MacroIndent}\SpecialUsageIndex{\marginparpush}^^A
-% \SpecialUsageIndex{\marginparwidth}\SpecialUsageIndex{\tolerance}
+% \SpecialLaTeXDimenIndex{\IndexMin}^^A
+% \SpecialLaTeXSkipIndex{\MacrocodeTopsep}^^A
+% \SpecialLaTeXSkipIndex{\MacroTopsep}^^A
+% \SpecialLaTeXDimenIndex{\MacroIndent}^^A
+% \SpecialLaTeXDimenIndex{\marginparpush}^^A
+% \SpecialLaTeXDimenIndex{\marginparwidth}^^A
+% \SpecialTeXCounterIndex{\tolerance}
% \begin{center}
% \begin{tabular}{l@{\,=\,}ll@{\,=\,}l}
% |\IndexMin| & \the\IndexMin &
@@ -847,34 +1084,34 @@
%
% \subsection{Short input of verbatim text pieces}
%
-% \DescribeMacro\MakeShortVerb
-% \DescribeMacro{\MakeShortVerb*} \DescribeMacro\DeleteShortVerb It is
-% awkward to have to type, say, "\verb|"\ldots"|" continually when
+% \DescribeInterfaceMacro\MakeShortVerb
+% \DescribeInterfaceMacro{\MakeShortVerb*} \DescribeInterfaceMacro\DeleteShortVerb It is
+% awkward to have to type, say, \verb"\verb|"\ldots\verb"|" continually when
% quoting
% verbatim bits (like macro names) in the text, so an abbreviation
% mechanism is provided. Pick a character \meta{c}---one which
% normally has catcode `other' unless you have very good reason not
% to---which you don't envisage using in the text, or not using often.
-% (I like |"|, but you may prefer "|" if you have |"| active to do
+% (I like |"|, but you may prefer \verb"|" if you have |"| active to do
% umlauts, for instance.) Then if you say
-% "\MakeShortVerb{\"\meta{c}"}" you can subsequently use
+% |\MakeShortVerb{\|\meta{c}|}| you can subsequently use
% \meta{c}\meta{text}\meta{c} as the equivalent of
-% "\verb"\meta{c}\meta{text}\meta{c}; analogously, the "*"-form
-% "\MakeShortVerb*{\"\meta{c}"}" gives you the equivalent of
-% "\verb*"\meta{c}\meta{text}\meta{c}. Use
-% "\DeleteShortVerb{\"\meta{c}"}" if you subsequently want \meta{c} to
+% |\verb|\meta{c}\meta{text}\meta{c}; analogously, the |*|-form
+% |\MakeShortVerb*{\|\meta{c}|}| gives you the equivalent of
+% |\verb*|\meta{c}\meta{text}\meta{c}. Use
+% |\DeleteShortVerb{\|\meta{c}|}| if you subsequently want \meta{c} to
% revert to its previous meaning---you can always turn it on again
% after the unusual section. The `short verb' commands make global
-% changes. The abbreviated "\verb" may not appear in the argument of
-% another command just like "\verb". However the `short verb'
-% character may be used freely in the \textsf{verbatim} and
-% \textsf{macrocode} environments without ill effect.
-% "\DeleteShortVerb" is silently ignored if its argument does not
+% changes. The abbreviated |\verb| may not appear in the argument of
+% another command just like |\verb|. However the `short verb'
+% character may be used freely in the \env{verbatim} and
+% \env{macrocode} environments without ill effect.
+% |\DeleteShortVerb| is silently ignored if its argument does not
% currently represent a short verb character. Both commands type a
% message to tell you the meaning of the character is being changed.
%
-% Please remember that the command "\verb" cannot be used in arguments
-% of other commands. Therefore abbreviation characters for "\verb"
+% Please remember that the command |\verb| cannot be used in arguments
+% of other commands. Therefore abbreviation characters for |\verb|
% cannot be used there either.
%
% This feature is also available as a sole package, \texttt{shortvrb}.
@@ -885,24 +1122,33 @@
% We provide macros for logos such as \Web, \AmSTeX, \BibTeX,
% \SliTeX{} and \PlainTeX. Just type |\Web|, |\AmSTeX|,
% |\BibTeX|, |\SliTeX| or |\PlainTeX|, respectively.
-% \LaTeX{} and \TeX{} are already defined in the \LaTeX{} format.
+% \LaTeX{} and \TeX{} are already defined in \texttt{latex.tex}.
%
-% \DescribeMacro\meta
+% \DescribeInterfaceMacro\meta
% Another useful macro is |\meta| which has one argument and
% produces something like \meta{dimen parameter}.
%
-% \DescribeMacro\OnlyDescription
-% \DescribeMacro\StopEventually
+% \DescribeInterfaceMacro\OnlyDescription
+% \DescribeInterfaceMacro\MaybeStop
+% \DescribeObsoleteInterfaceMacro\StopEventually
% You can use the |\OnlyDescription| declaration in the driver
% file to suppress the last part of your document (which presumably
% exhibits the code). To make this work
-% you have to place the command |\StopEventually| at a suitable
-% point in your file. This macro has one argument in which you put
+% \NewIn{v3}
+% you have to place the command |\MaybeStop| at a suitable
+% point in your file. This macro\footnote{For about 30 years this
+% macro was called \cs{StopEventually} which was due to a ``false
+% friend'' misunderstanding. In the German language the word
+% ``eventuell'' mean roughly ``perhaps'' which isn't quite the same
+% as ``eventually''. But given that this is now used for so long
+% and all over the place we can't drop the old name. So it is still
+% there to allow processing all the existing documentation.}
+% has one argument in which you put
% all information you want to see printed if your document ends at
% this point (for example a bibliography which is normally printed at
% the very end). When the |\OnlyDescription| declaration is
-% missing the |\StopEventually|
-% \DescribeMacro\Finale
+% missing the |\MaybeStop|
+% \DescribeInterfaceMacro\Finale
% macro saves its argument in a macro called |\Finale| which can
% afterwards be used to get things back (usually at the very end).
% Such a scheme makes changes in two places unnecessary.
@@ -910,17 +1156,17 @@
% Thus you can use this feature to produce a local guide for the
% \TeX{} users which describes only the usage of macros (most of them
% won't be interested in your definitions anyway). For the same
-% reason the |\maketitle| \DescribeMacro\maketitle command is slightly
+% reason the |\maketitle| \DescribeInterfaceMacro\maketitle command is slightly
% changed to allow multiple titles in one document. So you can make
% one driver file reading in several articles at once.
-% \DescribeMacro{\ps@titlepage} To avoid an unwanted
+% \DescribeInterfaceMacro{\ps@titlepage} To avoid an unwanted
% \textsf{pagestyle} on the title page the |\maketitle| command issues
% a |\thispagestyle{titlepage}| declaration which produces a
% \textsf{plain} page if the \textsf{titlepage} page style is
-% undefined. This allows class files like \textsf{ltugboat.cls} to
+% undefined. This allows class files like \cls{ltugboat.cls} to
% define their own page styles for title pages.
%
-% \DescribeMacro\AlsoImplementation
+% \DescribeInterfaceMacro\AlsoImplementation
% Typesetting the whole document is the default. However, this default
% can also be explicitly selected using the declaration
% |\AlsoImplementation|. This overwrites any previous
@@ -933,24 +1179,23 @@
% \end{quote}
% to make sure that all documents will show the code part.
%
-% \DescribeMacro\IndexInput \label{..Input} Last but not least I
+% \DescribeInterfaceMacro\IndexInput \label{..Input} Last but not least I
% defined an |\IndexInput| macro which takes a file name as an
% argument and produces a verbatim listing of the file, indexing every
% command as it goes along. This might be handy, if you want to learn
% something about macros without enough documentation. I used this
-% feature to cross-reference \texttt{latex.tex} (these days
-% called \texttt{latex.ltx}) getting a verbatim
+% feature to cross-reference \texttt{latex.tex} getting a verbatim
% copy with about 15 pages index.\footnote{It took quite a long time
% and the resulting \texttt{.idx} file was longer than the
% \texttt{.dvi} file. Actually too long to be handled by the
-% \textsf{makeindex} program directly (on our MicroVAX) but the final
+% \prg{makeindex} program directly (on our MicroVAX) but the final
% result was worth the trouble.}
%
% \changes{v2.1d}{2006/02/02}{Corrected description of \cs{changes}
% macro.}
-% \DescribeMacro\changes
+% \DescribeInterfaceMacro\changes
% To maintain a change history within the file, the |\changes|
-% command may be placed amongt the description part of the changed
+% command may be placed amongst the description part of the changed
% code. It takes three arguments, thus:
% \begin{quote}
% |\changes{|\meta{version}|}{|\meta{date}|}{|^^A
@@ -960,7 +1205,7 @@
% |\glossary| mechanism is used for this) which may be printed
% after suitable formatting. The |\changes| macro generates the
% printed entry in such a change history; because old
-% versions\footnote{Before 2.6.} of the \textsf{makeindex}
+% versions\footnote{Before 2.6.} of the \prg{makeindex}
% program limit such fields to 64 characters, care should be taken
% not to exceed this limit when describing the change. The actual
% entry consists of the \meta{version}, the |\actualchar|, the current
@@ -970,101 +1215,38 @@
% text |\generalname| is used instead of the macro name. When
% referring to macros in change descriptions it is conventional to use
% |\cs{|\meta{macroname}|}| rather than attempting to format it properly
-% and using up valuable characters in the entry with old \textsf{makeindex}
+% and using up valuable characters in the entry with old \prg{makeindex}
% versions.
%
% \changes{v1.7a}{1992/02/26}{Description of \cs{RecordChanges} etc.
% added
-% to interface section.} \DescribeMacro\RecordChanges To cause the
-% change information to be written out, include "\RecordChanges" in
-% the driver file. \DescribeMacro\PrintChanges To read in and print
+% to interface section.} \DescribeInterfaceMacro\RecordChanges To cause the
+% change information to be written out, include |\RecordChanges| in
+% the driver file. \DescribeInterfaceMacro\PrintChanges To read in and print
% the sorted change history (in two columns), just put the
% |\PrintChanges| command as the last (commented-out, and thus
% executed during the documentation pass through the file) command in
% your package file. Alternatively, this command may form one of the
-% arguments of the |\StopEventually| command, although a change
+% arguments of the |\MaybeStop| command, although a change
% history is probably {\em not\/} required if only the description is
-% being printed. The command assumes that \textsf{makeindex} or some
+% being printed. The command assumes that \prg{makeindex} or some
% other program has processed the \texttt{.glo} file to generate a
-% sorted \texttt{.gls} file. You need a special \textsf{makeindex}
+% sorted \texttt{.gls} file. You need a special \prg{makeindex}
% style file; a suitable one is supplied with \DOC{}, called
-% \texttt{gglo.ist}. \DescribeMacro\GlossaryMin
-% \DescribeMacro\GlossaryPrologue \DescribeMacro\GlossaryParms The
-% "\GlossaryMin", "\GlossaryPrologue" and "\GlossaryParms" macros are
-% analogous to the "\Index"\ldots\ versions. (The \LaTeX{} `glossary'
+% \texttt{gglo.ist}.
+%
+% \DescribeLaTeXDimen\GlossaryMin
+% \DescribeInterfaceMacro\GlossaryPrologue
+% \DescribeInterfaceMacro\GlossaryParms
+% \DescribeLaTeXCounter{GlossaryColumns}
+% The
+% |\GlossaryMin|, |\GlossaryPrologue| and |\GlossaryParms| macros and
+% the counter \texttt{GlossaryColumns} are
+% analogous to the |\Index|\ldots\ versions. (The \LaTeX{} `glossary'
% mechanism is used for the change entries.)
%
-% \label{sec:checksum}
-% \DescribeMacro\CharacterTable
-% \DescribeMacro\CheckSum
-% To overcome some of the problems of sending files over the networks
-% we developed two macros which should detect corrupted files. If one
-% places the lines
-% \begin{flushleft}
-% \small\ttfamily ^^A \ttfamily to get the blanks between "..."s
-% ^^A right
-%"%%\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 "\verb=\"=
-%" 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 \~}"\\
-%"%%"
-%\end{flushleft}
-% at the beginning of the file then character translation failures
-% will be detected, provided of course, that the used \DOC{}
-% package has a correct default table. The percent
-% signs\footnote{There are two percent signs in each line. This has
-% the effect that these lines are not removed by the
-% \texttt{docstrip.tex} program.} at the beginning of the lines should
-% be typed in, since only the \DOC{} package should look at this
-% command.
-%
-%
-% Another problem of mailing files is possible truncation. To detect
-% these sort of errors we provide a |\CheckSum| macro. The check-sum
-% of a file is simply the number of backslashes in the code, i.e.\ all
-% lines between the \textsf{macrocode} environments. But don't be
-% afraid: you don't have count the code-lines yourself; this is done
-% by the \DOC{} package for you. You simply have add
-% \begin{quote}
-% |% \CheckSum{0}|
-% \end{quote}
-% near the beginning of the file and
-% use
-% the |\StopEventually| (which starts looking for backslashes) and the
-% |\Finale| command. The latter will inform you either that your file
-% has no check-sum (telling you the right number) or that your number
-% is incorrect if you put in anything other than zero but guessed wrong (this time
-% telling you both the correct and the
-% incorrect one). Then you go to the top of your file again and change the
-% line to the right number, i.e.
-% line
-% \begin{quote}
-% |% \CheckSum{|\meta{number}|}|
-% \end{quote}
-% and that's all.
-%
-% While |\CharacterTable| and |\CheckSum| have been important features
-% in the early days of the public internet when \DOC{} was written as
-% the mail gateways back then were rather unreliable and often mangled
-% files they are these days more a nuisance than any help. They are
-% therefore now fully optional and no longer recommended for use with new files.
-%
%
-% \DescribeMacro\bslash
+% \DescribeInterfaceMacro\bslash
% From time to time, it is necessary to print a |\| without
% being able to use the |\verb| command because the
% |\catcode|$\,$s of the symbols are already firmly
@@ -1072,53 +1254,55 @@
% |\bslash| presupposing, of course, that the actual font in
% use at this point contains a `backslash' as a symbol. Note that
% this definition of |\bslash| is expandable; it inserts a
-% $"\"_{12}$. This means that you have to |\protect|
+% $|\|_{12}$. This means that you have to |\protect|
% it if it is used in `moving arguments'.
%
-% \DescribeMacro\MakePrivateLetters
+% \DescribeInterfaceMacro\MakePrivateLetters
% \changes{v1.7a}{1992/02/26}{Documented \cs{MakePrivateLetters} in
% interface section}^^A
-% If your macros "\catcode" anything other than "@" to `letter', you
-% should redefine "\MakePrivateLetters" so that it also makes the
+% If your macros |\catcode| anything other than |@| to `letter', you
+% should redefine |\MakePrivateLetters| so that it also makes the
% relevant characters `letters' for the benefit of the indexing. The
-% default definition is just "\makeatletter".
+% default definition is just |\makeatletter|.
%
-% \DescribeMacro\DontCheckModules \DescribeMacro\CheckModules
-% \DescribeMacro\Module \DescribeMacro\AltMacroFont The `module'
-% directives of the \textsf{docstrip} system \cite{art:docstrip} are
-% normally recognised and invoke special formatting. This can be
+% \DescribeInterfaceMacro\DontCheckModules \DescribeInterfaceMacro\CheckModules
+% \DescribeInterfaceMacro\Module \DescribeInterfaceMacro\AltMacroFont The `module'
+% directives of the \prg{docstrip} system \cite{art:docstrip} are
+% normally recognized and invoke special formatting. This can be
% turned on and off in the \texttt{.dtx} file or the driver file using
-% "\CheckModules" and "\DontCheckModules". If checking for module
+% |\CheckModules| and |\DontCheckModules|. If checking for module
% directives is on (the default) then code in the scope of the
-% directives is set as determined by the hook "\AltMacroFont", which
+% directives is set as determined by the hook |\AltMacroFont|, which
% gives {\small\ttfamily\itshape small italic type\-writer\/} by
% default in the New Font Selection Scheme but just ordinary
% {\small\ttfamily small type\-writer} in the old one, where a font
% such as italic typewriter can't be used portably (plug for NFSS);
% you will need to override this if you don't have the italic
% typewriter font available. Code is in such a scope if it's on a
-% line beginning with "%<" or is between lines starting with
-% "%<*"\meta{name list}">" and "%</"\meta{name list}">". The
-% directive is formatted by the macro "\Module" whose single argument
+% line beginning with |%<| or is between lines starting with
+% |%<*|\meta{name list}|>| and |%</|\meta{name list}|>|. The
+% directive is formatted by the macro |\Module| whose single argument
% is the text of the directive between, but not including, the angle
% brackets; this macro may be re-defined in the driver or package file
% and by default produces results like \Module{+foo\string|bar} with no
% following space.
%
-% \DescribeMacro{StandardModuleDepth} Sometimes (as in this file) the
+% \DescribeLaTeXCounter{StandardModuleDepth} Sometimes (as in this file) the
% whole code is surrounded by modules to produce several files from a
% single source. In this case it is clearly not appropriate to format
-% all code lines in a special "\AltMacroFont". For this reason a
-% counter "StandardModuleDepth" is provided which defines the level of
+% all code lines in a special |\AltMacroFont|. For this reason a
+% counter |StandardModuleDepth| is provided which defines the level of
% module nesting which is still supposed to be formatted in
-% "\MacroFont" rather then "\AltMacroFont". The default setting is
-% "0", for this documentation it was set to
+% |\MacroFont| rather then |\AltMacroFont|. The default setting is
+% |0|, for this documentation it was set to
%\begin{verbatim}
% \setcounter{StandardModuleDepth}{1}
%\end{verbatim}
% at the beginning of the file.
%
%
+% \section{Examples and basic usage summary}
+%
% \subsection{Basic usage summary}
% \changes{v1.7a}{1992/03/11}{Added basic usage summary to spell
% it out.}
@@ -1126,26 +1310,482 @@
% To sum up, the basic structure of a \texttt{.dtx} file without any
% refinements is like this:
% \begin{verse}\small
-% "% "\meta{waffle}\ldots\\
+% |% |\meta{waffle}\ldots\\
% \quad\ldots \\
-% "% \DescribeMacro{\fred}"\\
-% "% "\meta{description of fred's use}\\
+% |% \DescribeMacro{\fred}|\\
+% |% |\meta{description of fred's use}\\
% \quad\ldots\\
-% "% \StopEventually{"\meta{finale code}"}"\\
+% |% \MaybeStop{|\meta{finale code}|}|\\
% \quad\ldots\\
-% "% \begin{macro}{\fred}"\\
-% "% "\meta{commentary on macro fred}\\
+% |% \begin{macro}{\fred}|\\
+% |% |\meta{commentary on macro fred}\\
% \verb*+% \begin{macrocode}+\\
% \meta{code for macro fred}\\
% \verb*+% \end{macrocode}+\\
-% "% \end{macro}"\\
+% |% \end{macro}|\\
% \quad\ldots\\
-% "% \Finale \PrintIndex \PrintChanges"
+% |% \Finale \PrintIndex \PrintChanges|
% \end{verse}
-% For examples of the use of most---if not all---of the features
-% described above consult the \texttt{doc.dtx} source itself.
+% For further examples of the use of most---if not all---of the features
+% described above, consult the \texttt{doc.dtx} source itself.
+%
+%
+%
+% \subsection{Examples}
+%
+% The default setup includes definitions for the \DOC elements
+% ``macro'' and ``environment''. They correspond to the following
+% declarations:
+%\begin{verbatim}
+% \NewDocElement[macrolike = true ,
+% idxtype = ,
+% idxgroup = ,
+% printtype =
+% ]{Macro}{macro}
+%
+% \NewDocElement[macrolike = false ,
+% idxtype = env. ,
+% idxgroup = environments ,
+% printtype = \textit{env.}
+% ]{Env}{environment}
+%\end{verbatim}
+%
+% To showcase the new features of \DOC version 3 to some extend, the
+% current documentation is done by redefining these declarations and
+% also adding a few additional declarations on top.
+%
+% For any internal command we document we use \texttt{Macro} and put
+% all of them under the heading ``\LaTeX{} commands'' (note the use of \cs{actualchar}):
+%\begin{verbatim}
+%\RenewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = LaTeX comands\actualchar\LaTeX{} commands ,
+% printtype =
+% ]{Macro}{macro}
+%\end{verbatim}
+%
+% We only have package environments so we use \texttt{Env} for those
+% and group them as well:
+%\begin{verbatim}
+%\RenewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = env. ,
+% idxgroup = Package environments,
+% printtype = \textit{env.}
+% ]{Env}{environment}
+%\end{verbatim}
+%
+%
+% All the interface commands are also grouped together under the label
+% ``Package commands'', we use \texttt{InterfaceMacro} for them:
+%\begin{verbatim}
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = Package commands,
+% printtype =
+% ]{InterfaceMacro}{imacro}
+%\end{verbatim}
+%
+% And since we also have a few obsolete interfaces we add yet another category:
+%\begin{verbatim}
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = ,
+% idxgroup = Package commands (obsolete),
+% printtype =
+% ]{ObsoleteInterfaceMacro}{omacro}
+%\end{verbatim}
+%
+% Another type of category are the package keys:
+%\begin{verbatim}
+%\NewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = key ,
+% idxgroup = Package keys ,
+% printtype = \textit{key}
+% ]{Key}{key}
+%\end{verbatim}
+%
+% Finally we have \TeX{} counters (with a backslash in front) and
+% \LaTeX{} counters (no backslash) and the two types of \LaTeX{}
+% length registers:
+%\begin{verbatim}
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = counter ,
+% idxgroup = TeX counters\actualchar \protect\TeX{} counters ,
+% printtype = \textit{counter}
+% ]{TeXCounter}{tcounter}
+%
+%\NewDocElement[macrolike = false ,
+% toplevel = false,
+% idxtype = counter ,
+% idxgroup = LaTeX counters\actualchar \LaTeX{} counters ,
+% printtype = \textit{counter}
+% ]{LaTeXCounter}{lcounter}
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = skip ,
+% idxgroup = LaTeX length\actualchar \LaTeX{} length (skip) ,
+% printtype = \textit{skip}
+% ]{LaTeXSkip}{lskip}
+%
+%\NewDocElement[macrolike = true ,
+% toplevel = false,
+% idxtype = dimen ,
+% idxgroup = LaTeX length\actualchar \LaTeX{} length (dimen) ,
+% printtype = \textit{dimen}
+% ]{LaTeXDimen}{ldimen}
+%
+%\end{verbatim}
+%
+% And we modify the appearance of the index: just 2 columns not 3 and
+% all the code-line entries get prefixed with an ``$\ell$'' (for line)
+% so that they can easily be distinguished from page index entries.
+%\begin{verbatim}
+% \renewcommand\code[1]{\mbox{$\ell$-#1}}
+% \renewcommand\main[1]{\underline{\mbox{$\ell$-#1}}}
+% \setcounter{IndexColumns}{2}
+%\end{verbatim}
+%
+%
+%
+% \section{Incompatibilities between version 2 and 3}
+%
+% The basic approach when developing version~3 was to provide a very
+% high level of compatibility with version~2 so that nearly all
+% older documents should work out of the box without the need for
+% any adjustments.
+%
+% But as with any change there are situations where that change can
+% result in some sort of incompatibility, e.g., if a newly introduce
+% command name was already been defined in the user document then
+% there will be a conflict that is nearly impossible to avoid
+% 100\%.
+%
+% As mentioned earlier, \DOC now supports options on several commands
+% and environments and as a result it is necessary to use braces
+% around the argument for \cs{DescribeMaro} if the ``macro to be
+% described'' uses private letters such as |@| or |_| as part of its
+% name. That was always the official syntax but in the past you could
+% get away with leaving out the braces more often than you can now.
+%
+% The old \DOC documentation also claimed that redefinitions of things
+% like \cs{PrintDescribeMacro} could be done before loading the
+% package (and not only afterwards) and \DOC would in that case not
+% change those commands. As the setup mechanisms are now much more
+% powerful and general such an approach is not really good. So with
+% \DOC version~3 modifications have to be done after the \DOC package
+% got loaded and the last modification will always win.
+%
+% I'm temped to drop compatibility with \LaTeX~2.09 (but so far I
+% have left it in).
+%
+% In the past it was possible to use macros declared with \cs{outer}
+% in the argument of \verb=\begin{macro}= or \cs{DoNotIndex} even
+% though \cs{outer} is not a concept supported in \LaTeX{}. This is no
+% longer possible. More exactly, it is no longer possible to prevent
+% them from being indexed (as \cs{DoNotIndex} can't be used), but you
+% can pass them to the \env{macro} environment as follows:
+%\begin{verbatim}
+% \begin{macro}[outer]{\foo}
+%\end{verbatim}
+% if \cs{foo} is a macro declared with \cs{outer}. The technical
+% reason for this change is that in the past various other commands,
+% such as |\{| or |\}| did not work properly in these arguments when
+% they where passed as ``strings'' and not as single macro tokens. But
+% by switching to macro tokens we can't have \cs{outer} macros because
+% their feature is to be not allowed in arguments. So what happens
+% above when you use \texttt{[outer]} is that the argument is read as
+% a string with four character tokens so that it is not recognized as
+% being \cs{outer}.
+%
+%
+% \section{Old interfaces no longer really needed}
+%
+% Thirty years is a long time in the life of computer programs, so
+% there are a good number of interfaces within \DOC that are really
+% only of historical interest (or when processing equally old sources.
+% We list them here, but in general we suggest that for new
+% documentation they should not be used.
+%
+%
+% \subsection{\prg{makeindex} bugs}
+%
+% \DescribeObsoleteInterfaceMacro\OldMakeindex
+% Versions of \prg{makeindex} prior to 2.9 had some bugs affecting
+% \DOC{}. One of these,
+% pertaining to the |%| character doesn't have a work-around
+% appropriate for versions with and without the
+% bug.\label{makeindex:version} If
+% you really still have an old version, invoke |\OldMakeindex| in a
+% package file or the driver file to prevent problems with index entries
+% such as |\%|, although you'll probably normally want to turn off
+% indexing of |\%| anyway. Try to get an up-to-date \prg{makeindex}
+% from one of the \TeX{} repositories.
+%
+% \subsection{File transmission issues}
+%
+% In the early days of the Internet file transmission issues have been
+% a serious problem. There was a famous gateway in Rochester, UK that
+% handled the traffic from the European continent to the UK and that
+% consisted of two IBM machines running with different codepages (that
+% had non-reversible differences). As a result ``strange'' \TeX{}
+% characters got replaced with something else with the result that the
+% files became unusable.
+%
+% To guard against this problem (or rather to detect it if something
+% got broken in transfer I added code to \DOC to check a static
+% character table and also to have a very simple checksum feature
+% (counting backslashes).
+%
+% These days the \cs{CheckSum} is of little value (and a lot of pain
+% for the developer) and character scrambling doesn't happen any more
+% so the \cs{CharacterTable} is essentially useless. Thus neither
+% should be used in new developments.
+%
+% \label{sec:checksum}
+% \DescribeObsoleteInterfaceMacro\CharacterTable
+% \DescribeObsoleteInterfaceMacro\CheckSum
+% To overcome some of the problems of sending files over the networks
+% we developed two macros which should detect corrupted files. If one
+% places the lines
+% \begin{flushleft}
+% \small\ttfamily ^^A \ttfamily to get the blanks between "..."s
+% ^^A right
+%|%%\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 |\verb=|=\\
+%|%% Right brace \} Tilde \~}|\\
+%|%%|
+%\end{flushleft}
+% at the beginning of the file then character translation failures
+% will be detected, provided of course, that the used \DOC{}
+% package has a correct default table. The percent
+% signs\footnote{There are two percent signs in each line. This has
+% the effect that these lines are not removed by the
+% \texttt{docstrip.tex} program.} at the beginning of the lines should
+% be typed in, since only the \DOC{} package should look at this
+% command.
+%
+%
+% Another problem of mailing files is possible truncation. To detect
+% these sort of errors we provide a |\CheckSum| macro. The check-sum
+% of a file is simply the number of backslashes in the code, i.e.\ all
+% lines between the \env{macrocode} environments. But don't be
+% afraid: you don't have count the code-lines yourself; this is done
+% by the \DOC{} package for you. You simply have add
+% \begin{quote}
+% |% \CheckSum{0}|
+% \end{quote}
+% near the beginning of the file and use the |\MaybeStop| (which
+% starts looking for backslashes) and the |\Finale| command. The
+% latter will inform you either that your file has no check-sum
+% (telling you the right number) or that your number is incorrect if
+% you put in anything other than zero but guessed wrong (this time
+% telling you both the correct and the incorrect one). Then you go to
+% the top of your file again and change the line to the right number,
+% i.e., line
+% \begin{quote}
+% |% \CheckSum{|\meta{number}|}|
+% \end{quote}
+% and that's all.
+%
+% While |\CharacterTable| and |\CheckSum| have been important features
+% in the early days of the public internet when \DOC{} was written as
+% the mail gateways back then were rather unreliable and often mangled
+% files they are these days more a nuisance than any help. They are
+% therefore now fully optional and no longer recommended for use with
+% new files.
+%
+%
+
+
+
+% ^^A =============================================================
+
+
+
+% \begin{multicols}{2}[\medskip \noindent\rule{\textwidth}{.3pt}
+% \section{Introduction to previous releases}]
+%
+% \begin{quote}
+% \textbf{Original abstract:}
+% This package contains the definitions that are necessary to
+% format the documentation of package files. The package was
+% developed in Mainz in cooperation with the Royal Military College
+% of Science. This is an update which documents various changes
+% and new features in \DOC{} and integrates the features of
+% \env{newdoc}.
+% \end{quote}
+%
+% The \TeX{} macros which are described here allow definitions and
+% documentation to be held in one and the same file. This has the
+% advantage that normally very complicated instructions are made
+% simpler to understand by comments inside the definition. In addition
+% to this, updates are easier and only one source file needs to be
+% changed. On the other hand, because of this, the package files are
+% considerably longer: thus \TeX{} takes longer to load them. If this
+% is a problem, there is an easy remedy: one needs only to run the
+% \texttt{docstrip.tex} program that removes nearly all lines that begin
+% with a
+% percent sign.
+%
+% The idea of integrated documentation was born with the development
+% of the \TeX{} program; it was crystallized in Pascal with the \Web{}
+% system. The advantages of this method are plain to see (it's easy
+% to make comparisons \cite{art:Knuthliterat}). Since this
+% development, systems similar to \Web{} have been developed for other
+% programming languages. But for one of the most complicated
+% programming languages (\TeX) the documentation has however been
+% neglected. The \TeX{} world seems to be divided between:---
+% \begin{itemize} \item a couple of ``wizards'', who produce many
+% lines of completely unreadable code ``off the cuff'', and \item many
+% users who are amazed that it works just how they want it to do. Or
+% rather, who despair that certain macros refuse to do what is
+% expected of them.\end{itemize}
+%
+% I do not think that the \Web{} system is {\em the\/} reference work;
+% on the contrary, it is a prototype which suffices for the
+% development of programs within the \TeX{} world. It is sufficient,
+% but not totally sufficient.\footnote{I know that this will be seen
+% differently by a few people, but this product should not be seen as
+% the finished product, at least as far as applications concerning
+% \TeX{} are concerned. The long-standing debate over `multiple
+% change files' shows this well.} As a result of \Web, new programming
+% perspectives have been demonstrated; unfortunately, though, they
+% haven't been developed further for other programming languages.
+%
+% The method of documentation of \TeX{} macros which I have introduced
+% here should also only be taken as a first sketch. It is designed
+% explicitly to run under \LaTeX{} alone. Not because I was of the
+% opinion that this was the best starting point, but because from this
+% starting point it was the quickest to develop.\footnote{This
+% argument is a bad one, however, it is all too often trotted out.} As
+% a result of this design decision, I had to move away from the
+% concept of modularization; this was certainly a step backward.
+%
+% I would be happy if this article could spark off discussion over
+% \TeX\ documentation. I can only advise anyone who thinks that they
+% can cope without documentation to ``Stop Time'' until he or she
+% completely understands the \AmSTeX{} source code.
+%
+% \subsection*{Using the \DOC{} package}
+%
+% Just like any other package, invoke it by requesting it with a
+% |\usepackage| command in the preamble. \DOC's use of
+% |\reversemarginpars| may make it incompatible with some classes.
+% \changes{v1.7a}{1992/02/25}{Altered usage info}
+%
+%
+% \end{multicols}
+%
+%
+%
+%
+% \begin{multicols}{2}[\subsection*{Preface to version 1.7 (from
+% around 1992)}]
+%
+% This version of \texttt{doc.dtx} documents changes which have occurred
+% since the last published version \cite{art:doc} but which have been
+% present in distributed versions of \texttt{doc.sty} for some time. It
+% also integrates the (undocumented) features of the distributed
+% \texttt{newdoc.sty}.
+%
+% The following changes and additions have been made to the user
+% interface since the published version~\cite{art:doc}. See
+% \S\ref{sec:interface} for more details.
+% \begin{description}
+% \item[Driver mechanism] |\DocInput| is now used in the driver file
+% to input possibly multiple independent \DOC{} files and \DOC{} no
+% longer has to be the last package. |\IndexListing| is replaced
+% by |\IndexInput|;
+% \item[Indexing] is controlled by |\PageIndex| and |\CodelineIndex|,
+% one of which must be specified to produce an index---there is no
+% longer a |\makeindex| in the default |\DocstyleParms|;
+% \item[The \texttt{macro} environment] now takes as argument the
+% macro name {\em with\/} the backslash;
+% \item[Verbatim text] Newlines are now forbidden inside |\verb| and
+% commands |\MakeShortVerb| and |\DeleteShortVerb| are provided for
+% verbatim shorthand;
+% \item[\texttt{\bslash par}] can now be used in |\DoNotIndex|;
+% \item[Checksum/character table support] for ensuring the integrity
+% of distributions is added;
+% \item[\texttt{\bslash printindex}] becomes |\PrintIndex|;
+% \item[\texttt{multicol.sty}] is no longer necessary to use \DOC{} or
+% print the documentation (although it is recommended);
+% \item[`Docstrip' modules] are recognized and formatted specially.
+% \end{description}
+%
+% As well as adding some completely new stuff,
+% the opportunity has been taken to add some commentary to the code
+% formerly in \pkg{newdoc} and that added after version 1.5k of
+% \DOC. Since (as noted in the sections concerned) this
+% commentary wasn't written by Frank Mittelbach but the code was, it is
+% probably {\em not\/} true in this case that ``if the code and
+% comments disagree both are probably wrong''!
+%
+% \subsubsection*{Bugs}
+%
+% There are some known bugs in this version:
+% \begin{itemize}
+% \item The |\DoNotIndex| command doesn't work for some single
+% character commands most noticeable |\%|.
+% \item The `General changes' glossary entry would come out after
+% macro names with a leading |!| and possibly a leading |"|;
+% \item If you have an old version of \prg{makeindex} long |\changes|
+% entries will come out strangely and you may find the section
+% header amalgamated with the first changes entry. Try to get an
+% up-to-date one (see p.~\pageref{makeindex:version});
+% \item Because the accompanying \prg{makeindex} style files support
+% the inconsistent attribute specifications of older and newer
+% versions \prg{makeindex} always complains about three `unknown
+% specifier's when sorting the index and changes entries.
+% \item If |\MakeShortVerb| and |\DeleteShortVerb| are used with
+% single character arguments, e.g., \verb"{|}" instead of \verb"{\|}" chaos
+% may happen.
+% \end{itemize}
+% (Some `features' are documented below.)
+%
+% \subsubsection*{Wish list}
+%
+% \begin{itemize}
+% \item Hooks to allow |\DescribeMacro| and |\DescribeEnv| to write
+% out to a special file information about the package's `exported'
+% definitions which they describe. This could subsequently be
+% included in the \texttt{docstrip}ped \texttt{.sty} file in a
+% suitable form for use by smart editors in command completion,
+% spelling checking etc., based on the packages used in a document.
+% This would need agreement on a `suitable form'. \item Indexing of
+% the modules used in \texttt{docstrip}'s |%<| directives. I'm not
+% sure how to index directives containing module combinations; \item
+% Writing out bibliographic information about the package; \item Allow
+% turning off use of the special font for, say, the next guarded
+% block.
+% \end{itemize}
%
-% \subsection{Acknowledgements}
+%
+% \end{multicols}
+
+
+% \subsection*{Acknowledgements}
%
% I would like to thank all folks at Mainz and at the Royal Military
% College of Science for their help in this project. Especially Brian
@@ -1158,14 +1798,14 @@
% \texttt{doc.dtx} after its publication in \textsl{TUGboat\/} have
% been never properly described. Beside this splendid work he kindly
% provided additional code (like ``docstrip'' module formatting) which
-% I think every \textsf{doc.dtx} user will be grateful for.
+% I think every \DOC user will be grateful for.
%
%
-% \StopEventually{
+% \MaybeStop{
% \begin{thebibliography}{1}
% \bibitem{book:Buerger} \textsc{G. A. B\"urger}.
-% \newblock Wunderbare Reisen zu Wasser und zu Lande, Feldz\"uge
-% und lustige Abenteuer des Freyherrn v.\ M\"unchhausen.
+% \newblock Wunderbare Reisen zu Wasser und zu Lande, Feldzüge
+% und lustige Abenteuer des Freyherrn v.\ Münchhausen.
% \newblock London, 1786 \& 1788.
% \bibitem{art:Knuthliterat} \textsc{D. E. Knuth}.
% \newblock Literate Programming.
@@ -1189,20 +1829,20 @@
% \newblock \texttt{docstrip.dtx} (to appear).
% \newblock The file is part of the DOC package.
% \bibitem{book:Raspe} \textsc{R. E. Raspe} (*1737, \dag 1797).
-% \newblock Baron M\"unchhausens narrative of his marvellous
+% \newblock Baron Münchhausens narrative of his marvelous
% travels and campaigns in Russia.
% \newblock Oxford, 1785.
-% \bibitem{art:verbatim} \textsc{Rainer Sch\"opf}.
+% \bibitem{art:verbatim} \textsc{Rainer Schöpf}.
% \newblock A New Implementation of \LaTeX's \texttt{verbatim} and
% \texttt{verbatim*} Environments.
% \newblock File \texttt{verbatim.doc}, version 1.4i.
% \end{thebibliography}
%
-% \ifmulticols
% \addtocontents{toc}{\protect\end{multicols}}
-% \fi
%
-% } ^^A end \StopEventually
+% \PrintIndex
+%
+% } ^^A end \MaybeStop
%
%
% \section{The Description of Macros}
@@ -1228,50 +1868,206 @@
\@ifundefined{macro@cnt}{}{\endinput}
% \end{macrocode}
%
-% \DescribeMacro\fileversion
-% \DescribeMacro\filedate
-% \DescribeMacro\docdate
+% \DescribeObsoleteInterfaceMacro\fileversion
+% \DescribeObsoleteInterfaceMacro\filedate
+% \DescribeObsoleteInterfaceMacro\docdate
% As you can see I used macros like |\fileversion| to denote the
% version number and the date. They are defined at the very beginning
-% of the package file (without a surrounding \textsf{macrocode}
+% of the package file (without a surrounding \env{macrocode}
% environment), so I don't have to search for this place here when I
% change the version number. You can see their actual outcome in a
% footnote to the title.
%
%
-% The first thing that we do next is to get ourselves a new comment
-% sign. Because all sensible signs are already occupied, we will
-% choose one that can only be entered indirectly:
+% The first thing that we do next is to get ourselves two alternative comment
+% signs. Because all sensible signs are already occupied, we will
+% choose some that can only be entered indirectly:
% {\DoNotIndex{\^}^^A avoid misinterpretation !!!!! VERIFY
% \begin{macrocode}
\catcode`\^^A=14
+\catcode`\^^X=14
% \end{macrocode}
% We repeat this statement at the beginning of the document in case
% the \texttt{inputenc} package is used disabling it again.
% \changes{v2.0b}{1998/05/19}{Init docs private comment char at begin
% of document again (pr2581)}
% \begin{macrocode}
-\AtBeginDocument{\catcode`\^^A=14\relax}
+\AtBeginDocument{\catcode`\^^A=14\relax\catcode`\^^X=14\relax}
% \end{macrocode}
% \SortIndex{\string^\string^A}{\string\verb\verbatimchar
% \string^\string^A\verbatimchar
+% \encapchar main}^^A
+% \SortIndex{\string^\string^X}{\string\verb\verbatimchar
+% \string^\string^X\verbatimchar
% \encapchar main}
% }
%
%
-% \subsection{Options supported by \DOC{}}
+% \subsection{Keys supported by \DOC{}}
+%
+% In the past this used \pkg{kvoptions} but this will be
+% replaced by using \texttt{l3keys} at some point in the future.
+% Right now this is only a lightweight shift---the code could and
+% should be altered further.
+% \fmi{cleanup replacement of kvoptions}
+%
+% \begin{macrocode}
+\RequirePackage{l3keys2e}
+\ExplSyntaxOn
+% \end{macrocode}
+% Some keys are available as options for use in \cs{usepackage} some are
+% for the generated item \api's:
+% \fmi{cleanup documentation (and code once the new key interface is there)}
+% \begin{macrocode}
+\newif \ifdoc@noprint
+\newif \ifdoc@noindex
+\newif \ifdoc@hyperref \doc@hyperreftrue
+\newif \ifdoc@multicol \doc@multicoltrue
+\newif \ifdoc@debugshow
+\newif \ifdoc@reportchangedates
+\keys_define:nn {doc}
+ {
+ noprint .choice:,
+ noprint / true .code:n = { \legacy_if_set_true:n { doc@noprint } },
+ noprint / false .code:n = { \legacy_if_set_false:n { doc@noprint } },
+ noprint .default:n = { true },
+ noindex .choice:,
+ noindex / true .code:n = { \legacy_if_set_true:n { doc@noindex } },
+ noindex / false .code:n = { \legacy_if_set_false:n { doc@noindex } },
+ noindex .default:n = { true },
+ hyperref .choice:,
+ hyperref / true .code:n = { \legacy_if_set_true:n { doc@hyperref } },
+ hyperref / false .code:n = { \legacy_if_set_false:n { doc@hyperref } },
+ hyperref .default:n = { true },
+ hyperref .choice:,
+ nohyperref / true .code:n = { \legacy_if_set_false:n { doc@hyperref } },
+ nohyperref / false .code:n = { \legacy_if_set_true:n { doc@hyperref } },
+ nohyperref .default:n = { true },
+ multicol .choice:,
+ multicol / true .code:n = { \legacy_if_set_true:n { doc@multicol } },
+ multicol / false .code:n = { \legacy_if_set_false:n { doc@multicol } },
+ multicol .default:n = { true },
+ nomulticol .choice:,
+ nomulticol / true .code:n = { \legacy_if_set_false:n { doc@multicol } },
+ nomulticol / false .code:n = { \legacy_if_set_true:n { doc@multicol } },
+ multicol .default:n = { true },
+ debugshow .choice:,
+ debugshow / true .code:n = { \legacy_if_set_true:n { doc@debugshow } },
+ debugshow / false .code:n = { \legacy_if_set_false:n { doc@debugshow } },
+ debugshow .default:n = { true },
+ reportchangedates .choice:,
+ reportchangedates / true .code:n = { \legacy_if_set_true:n { doc@reportchangedates } },
+ reportchangedates / false .code:n = { \legacy_if_set_false:n { doc@reportchangedates } },
+ reportchangedates .default:n = { true },
+ }
+% \end{macrocode}
+% This one is for \cs{usepackage} and \cs{NewDocElement}:
+% \begin{macrocode}
+\newif \ifdoc@toplevel \doc@topleveltrue
+\keys_define:nn {doc}
+ {
+ toplevel .choice:,
+ toplevel / true .code:n = { \legacy_if_set_true:n { doc@toplevel } },
+ toplevel / false .code:n = { \legacy_if_set_false:n { doc@toplevel } },
+ toplevel .default:n = { true },
+ notoplevel .choice:,
+ notoplevel / true .code:n = { \legacy_if_set_false:n { doc@toplevel } },
+ notoplevel / false .code:n = { \legacy_if_set_true:n { doc@toplevel } },
+ notoplevel .default:n = { true }
+ }
+% \end{macrocode}
+% These are for \cs{NewDocElement}:
+% \begin{macrocode}
+\newif \ifdoc@macrolike
+\keys_define:nn {doc}
+ {
+ macrolike .choice:,
+ macrolike / true .code:n = { \legacy_if_set_true:n { doc@macrolike } },
+ macrolike / false .code:n = { \legacy_if_set_false:n { doc@macrolike } },
+ macrolike .default:n = { true },
+ envlike .choice:,
+ envlike / true .code:n = { \legacy_if_set_false:n { doc@macrolike } },
+ envlike / false .code:n = { \legacy_if_set_true:n { doc@macrolike } },
+ envlike .default:n = { true }
+ }
+
+\keys_define:nn { doc }
+ {
+ idxtype .tl_set:N = \doc@idxtype,
+ idxgroup .tl_set:N = \doc@idxgroup,
+ printtype .tl_set:N = \doc@printtype
+ }
+% \end{macrocode}
+% And this one only for instances of doc elements in the document, it
+% covers the case where you want to document a macro which is
+% declared to be \cs{outer}. This is not a concept officially
+% supported by \LaTeX{} but there are cases when it gets used.
+% \begin{macrocode}
+\newif\ifdoc@outer
+\keys_define:nn {doc}
+ {
+ outer .choice:,
+ outer / true .code:n = { \legacy_if_set_true:n { doc@outer } },
+ outer / false .code:n = { \legacy_if_set_false:n { doc@outer } },
+ outer .default:n = { true },
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \subsection{Processing the package keys}
+%
+% \begin{macrocode}
+\ProcessKeysOptions {doc}
+% \end{macrocode}
%
-% Not options available at the moment
%
+% \begin{macro}{\ifscan@allowed}
+% \begin{macro}{\scan@allowedtrue}
+% \begin{macro}{\scan@allowedfalse}
+% |\ifscan@allowed| is the switch used to determine if
+% the |\active@escape@char|\SpecialIndex{\active@escape@char}
+% should start the macro scanning mechanism.
% \begin{macrocode}
+\newif\ifscan@allowed \scan@allowedtrue
% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{imacro}{\SetupDoc}
+%
+% We need to save the default value for some options because \DOC elements
+% can locally set them.
+% \fmi{Use 2e interface for \cs{keys\_set:nn} when available}
+% \begin{macrocode}
+\def\SetupDoc#1{%
+ \csname keys_set:nn\endcsname{doc}{#1}%
+ \edef\doc@noprintdefault{\ifdoc@noprint true\else false\fi}%
+ \ifdoc@noindex
+% \end{macrocode}
+% If we do not index by default then we should also turn off
+% \cs{scan@allowed}.
+% \begin{macrocode}
+ \def\doc@noindexdefault{true}%
+ \scan@allowedfalse
+ \else
+ \def\doc@noindexdefault{false}%
+ \fi
+}
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{macrocode}
+\SetupDoc{} % just save the default values
+% \end{macrocode}
+%
%
%
% \subsection{Macros surrounding the `definition parts'}
%
% \begin{environment}{macrocode}
% Parts of the macro definition will be surrounded by the
-% environment \textsf{macrocode}. Put more precisely, they will be
+% environment \env{macrocode}. Put more precisely, they will be
% enclosed by a macro whose argument (the text to be set
% `verbatim') is terminated by the string
% \verb*+% \end{macrocode}+. Carefully note the number of spaces.
@@ -1307,7 +2103,7 @@
% \begin{macrocode}
\def\macro@code{%
% \end{macrocode}
-% In theory it should consist of a \textsf{trivlist} environment, but
+% In theory it should consist of a \env{trivlist} environment, but
% the empty space before and after the environment should not be
% too large.
% \begin{macrocode}
@@ -1384,7 +2180,7 @@
% indexing by code lines is switched on the line number is incremented
% and set appropriately. We also check whether the start of the next
% line indicates a \texttt{docstrip} module directive and process it
-% appropriately if so using "\check@module".
+% appropriately if so using |\check@module|.
% \begin{macrocode}
\global\@newlistfalse
\global\@minipagefalse
@@ -1408,9 +2204,9 @@
% \begin{macro}{\blank@linetrue}
% \begin{macro}{\blank@linefalse}
% |\ifblank@line| is the switch used in the definition above.
-% In the original \textsf{verbatim} environment the |\if@tempswa|
+% In the original \env{verbatim} environment the |\if@tempswa|
% switch is used. This is dangerous because its value may change
-% while processing lines in the \textsf{macrocode} environment.
+% while processing lines in the \env{macrocode} environment.
% \begin{macrocode}
\newif\ifblank@line
% \end{macrocode}
@@ -1419,10 +2215,10 @@
% \end{macro}
%
% \begin{macro}{\endmacrocode}
-% Because we have begun a \textsf{trivlist} environment in the
-% \textsf{macrocode} environment, we must also end it. We must
-% also act on the value of the "pm@module" flag (see below) and
-% empty "\everypar".
+% Because we have begun a \env{trivlist} environment in the
+% \env{macrocode} environment, we must also end it. We must
+% also act on the value of the |pm@module| flag (see below) and
+% empty |\everypar|.
% \changes{v1.5r}{1989/11/04}{Support for code line no. (Undoc)}
% \begin{macrocode}
\def\endmacrocode{%
@@ -1439,7 +2235,7 @@
% \end{macro}
%
%
-% \begin{macro}{\MacroFont}
+% \begin{imacro}{\MacroFont}
% Here is the default definition for the |\MacroFont| macro.
% With the new math font handling in NFSS2 it isn't any longer
% correct to suppress the math font setup since this is now handled
@@ -1459,7 +2255,7 @@
% 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
+% \changes{v2.1l}{2019/12/16}{Use \cs{shapedefault} not
% \cs{updefault} for extended NFSS}
% \begin{macrocode}
\def\MacroFont{\small
@@ -1477,9 +2273,9 @@
\fi
}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
-% \begin{macro}{\AltMacroFont}
+% \begin{imacro}{\AltMacroFont}
% \begin{macro}{\macro@font}
% \changes{v1.7a}{1992/03/12}{Added to support distinction of modules.}
% \changes{v1.7c}{1992/03/26}{Altered font change for OFSS.}
@@ -1487,9 +2283,9 @@
% \changes{v1.8c}{1993/10/25}{NFSS standard}
% \changes{v1.9t}{1995/05/26}{Removed \cs{math@fontsfalse} (different
% math setup /pr1622}
-% Although most of the macro code is set in "\MacroFont" we want to be
-% able to switch to indicate module code set in "\AltMacroFont".
-% "\macro@font" keeps track of which one we're using. We can't do the
+% Although most of the macro code is set in |\MacroFont| we want to be
+% able to switch to indicate module code set in |\AltMacroFont|.
+% |\macro@font| keeps track of which one we're using. We can't do the
% same thing sensibly in OFSS as in NFSS.
% \begin{macrocode}
\@ifundefined{AltMacroFont}{%
@@ -1514,8 +2310,8 @@
\fi
}{}
% \end{macrocode}
-% To allow changing the "\MacroFont" in the preamble we defer
-% defining the internally used "\macro@font" until after the
+% To allow changing the |\MacroFont| in the preamble we defer
+% defining the internally used |\macro@font| until after the
% preamble.
% \changes{v2.0a}{1998/05/16}{Support changing \cs{MacroFont} in
% preamble}
@@ -1523,23 +2319,23 @@
\AtBeginDocument{\let\macro@font\MacroFont}
% \end{macrocode}
% \end{macro}
-% \end{macro}
+% \end{imacro}
%
% \begin{macro}{\check@module}
% \begin{macro}{\ifpm@module}
% \changes{v1.7a}{1992/03/12}{Added.}
-% This is inserted by "\everypar" at the start of each macrocode line to
+% This is inserted by |\everypar| at the start of each macrocode line to
% check whether it starts with module information. (Such information is
-% of the form "%<"\meta{switch}">", where the "%" must be at the
+% of the form |%<|\meta{switch}|>|, where the |%| must be at the
% start of the line and \meta{switch} comprises names with various
-% possible separators and a possible leading "+", "-", "*" or "/"
+% possible separators and a possible leading |+|, |-|, |*| or |/|
% \cite{art:docstrip}. All that concerns us here is what the first
-% character of \meta{switch} is.) First it checks the "pm@module"
+% character of \meta{switch} is.) First it checks the |pm@module|
% flag in case the previous line had a non-block module
-% directive i.e., not "%<*" or "%</"; if it did we need to close the
-% group it started and unset the flag. "\check@module" looks ahead at
-% the next token and then calls "\ch@percent" to take action depending
-% on whether or not it's a "%"; we don't want to expand the token at
+% directive i.e., not |%<*| or |%</|; if it did we need to close the
+% group it started and unset the flag. |\check@module| looks ahead at
+% the next token and then calls |\ch@percent| to take action depending
+% on whether or not it's a |%|; we don't want to expand the token at
% this stage. This is all done conditionally so it can be turned off
% if it causes problems with code that wasn't designed to be
% \texttt{docstrip}ped.
@@ -1553,25 +2349,27 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \begin{macro}{\DontCheckModules}
-% \begin{macro}{\CheckModules}
+% \begin{imacro}{\DontCheckModules}
+% \begin{imacro}{\CheckModules}
% \changes{v1.7a}{1992/03/12}{Added.}
% \begin{macro}{\ifcheck@modules}
% Here are two driver-file interface macros for turning the module
-% checking on and off using the "check@modules" switch.
+% checking on and off using the |check@modules| switch.
% \begin{macrocode}
\def\DontCheckModules{\check@modulesfalse}
\def\CheckModules{\check@modulestrue}
\newif\ifcheck@modules \check@modulestrue
% \end{macrocode}
% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
+%
+%
% \begin{macro}{\ch@percent}
% \changes{v1.7a}{1992/03/12}{Added.}
-% If the lookahead token in "\next" is $"%"_{12}$ we go on to check
-% whether the following one is "<" and otherwise do nothing. Note the
-% "\expandafter" to get past the "\fi".
+% If the lookahead token in |\next| is $|%|_{12}$ we go on to check
+% whether the following one is |<| and otherwise do nothing. Note the
+% |\expandafter| to get past the |\fi|.
% \begin{macrocode}
\def\ch@percent{%
\if \percentchar\next
@@ -1582,7 +2380,7 @@
%
% \begin{macro}{\check@angle}
% \changes{v1.7a}{1992/03/12}{Added.}
-% Before looking ahead for the "<" the "%" is gobbled by the
+% Before looking ahead for the |<| the |%| is gobbled by the
% argument here.
% \begin{macrocode}
\def\check@angle#1{\futurelet\next\ch@angle}
@@ -1591,9 +2389,9 @@
% \begin{macro}{\ch@angle}
% \changes{v1.7a}{1992/03/12}{Added.}
% \changes{v1.9k}{1994/02/22}{Have \texttt{<} active}
-% If the current lookahead token is "<" we are defined to be
-% processing a module directive can go on to look for "+" etc.;
-% otherwise we must put back the gobbled "%". With \LaTeXe{}
+% If the current lookahead token is |<| we are defined to be
+% processing a module directive can go on to look for |+| etc.;
+% otherwise we must put back the gobbled |%|. With \LaTeXe{}
% \texttt{<} is active so we have to be a bit careful.
% \begin{macrocode}
\begingroup
@@ -1644,13 +2442,13 @@
% \end{macro}
% \begin{macro}{\pm@module}
% If we're not dealing with a block
-% directive ("*" or "/") i.e., it's a single special line, we set
-% everything up to the next ">" appropriately and then change to the
+% directive (|*| or |/|) i.e., it's a single special line, we set
+% everything up to the next |>| appropriately and then change to the
% special macro font inside a group which will be ended at the start
% of the next line. If the apparent module directive is missing the
-% terminating ">" this will lose, but then so will the \texttt{docstrip}
+% terminating |>| this will lose, but then so will the \texttt{docstrip}
% implementation. An alternative strategy would be to have
-% "\pm@module" make ">" active and clear a flag set here to indicate
+% |\pm@module| make |>| active and clear a flag set here to indicate
% processing the directive. Appropriate action could then be taken if
% the flag was found still to be set when processing the next line.
% \changes{v1.7a}{1992/03/12}{Added.}
@@ -1663,8 +2461,8 @@
\Module{#1}\begingroup
% \end{macrocode}
% We switch to a special font as soon the nesting is higher than
-% the current value of "\c@StandardModuleDepth". We do a local
-% update to the "\guard@level" here which will be restored after
+% the current value of |\c@StandardModuleDepth|. We do a local
+% update to the |\guard@level| here which will be restored after
% the current input line.
% \begin{macrocode}
\advance\guard@level\@ne
@@ -1706,8 +2504,7 @@
% \end{macro}
% \end{macro}
%
-%
-% \begin{macro}{\c@StandardModuleDepth}
+% \begin{lcounter}{StandardModuleDepth}
% \changes{v1.7i}{1992/07/11}{Counter added.}
% Counter defining up to which level modules are considered part of
% the main code. If, for example, the whole code is surrounded by
@@ -1716,38 +2513,39 @@
% \begin{macrocode}
\newcounter{StandardModuleDepth}
% \end{macrocode}
-% \end{macro}
+% \end{lcounter}
%
%
-% \begin{macro}{\guard@level}
+% \begin{tcounter}{\guard@level}
% \changes{v1.7f}{1992/05/16}{Added.}
% We need a counter to keep track of the guard nesting.
% \begin{macrocode}
\newcount \guard@level
% \end{macrocode}
-% \end{macro}
+% \end{tcounter}
+
% \begin{macro}{\Module}
% \changes{v1.7a}{1992/03/12}{Added.}
% \changes{v1.7d}{1992/04/25}{Use sans font for modules.}
% This provides a hook to determine the way the module directive is
% set. It gets as argument everything between the angle brackets.
% The default is to set the contents in sans serif text between
-% $\langle\,\rangle$ with the special characters suitably "\mathcode"d
-% by "\mod@math@codes". (You can't just set it in a sans text font
-% because normally "|" will print as an em-dash.) This is done
+% $\langle\,\rangle$ with the special characters suitably |\mathcode|d
+% by |\mod@math@codes|. (You can't just set it in a sans text font
+% because normally \verb"|" will print as an em-dash.) This is done
% differently depending on whether we have the NFSS or the old one. In
-% the latter case we can easily change "\fam" appropriately.
+% the latter case we can easily change |\fam| appropriately.
% \changes{v1.8c}{1993/10/25}{NFSS standard}
% \begin{macrocode}
\@ifundefined{Module}{%
% \end{macrocode}
% With NFSS what we probably {\em should\/} do is change to a new
-% "\mathversion" but I (Dave Love) haven't spotted an easy way to
+% |\mathversion| but I (Dave Love) haven't spotted an easy way to
% do so correctly if the document uses a version other than
-% "normal". (We need to know in what font to set the other
+% |normal|. (We need to know in what font to set the other
% groups.) This uses a new math alphabet rather than version and
% consequently has to worry about whether we're using
-% \textsf{oldlfnt} or not. I expect there's a better
+% \env{oldlfnt} or not. I expect there's a better
% way\ldots
% \begin{macrocode}
\def\Module#1{\mod@math@codes$\langle\mathsf{#1}\rangle$}
@@ -1759,11 +2557,11 @@
% \changes{v1.7c}{1992/03/26}{Added.}
% \changes{v2.1e}{2010/02/04}{Added mathcodes for +,-,:, and = (pr/4096)}
% As well as `words', the module
-% directive text might contain any of the characters "*/+-,&|!()"
-% for the current version of \textsf{docstrip}. We only need
+% directive text might contain any of the characters \verb"*/+-,&|!()"
+% for the current version of \prg{docstrip}. We only need
% special action for two of them in the math code changing required
-% above: "|" is changed to a "\mathop" (it's normally |"026A|) and
-% "&" is also made a "\mathop", but in family 0. Remember that "&"
+% above: \verb"|" is changed to a |\mathop| (it's normally |"026A|) and
+% |&| is also made a |\mathop|, but in family 0. Remember that |&|
% will not have a special catcode when it's encountered.
% \begin{macrocode}
\def\mod@math@codes{\mathcode`\|="226A \mathcode`\&="2026
@@ -1772,27 +2570,9 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\mathsf}
-% \changes{v1.7c}{1992/03/26}{Added.}
-% \changes{v1.7d}{1992/04/25}{Use sans font for modules.}
-% \changes{v1.7n}{1993/02/21}{\cs{sfmath} Renamed to \cs{mathsf}.}
-% \changes{v1.8c}{1993/10/25}{NFSS standard}
-% If NFSS is in use we need a new math alphabet which uses a sans serif
-% font. To support both the release one and two of NFSS the alphabet
-% was renamed to "\mathsf" which is defined in NFSS2.
-% \begin{macrocode}
-%\ifx\selectfont\undefined
-%\else
-% \ifx\mathsf\undefined
-% \newmathalphabet*{\mathsf}{\sfdefault}{m}{n}\fi
-%\fi
-% \end{macrocode}
-% \end{macro}
-%
%
-%
-% \begin{macro}{\MacrocodeTopsep}
-% \begin{macro}{\MacroIndent}
+% \begin{lskip}{\MacrocodeTopsep}
+% \begin{ldimen}{\MacroIndent}
% In the code above, we have used two registers. Therefore we have
% to allocate them. The default values might be overwritten with
% the help of the |\DocstyleParms| macro.
@@ -1805,22 +2585,22 @@
\newdimen\MacroIndent
\settowidth\MacroIndent{\rmfamily\scriptsize 00\ }
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{ldimen}
+% \end{lskip}
%
%
%
%
% \begin{environment}{macrocode*}
% \begin{macro}{\endmacrocode*}
-% Just as in the \textsf{verbatim} environment, there is also a
-% `star' variant of the \textsf{macrocode} environment in which a
+% Just as in the \env{verbatim} environment, there is also a
+% `star' variant of the \env{macrocode} environment in which a
% space is shown by the symbol \verb*+ +. Until this moment, I
% have not yet used it (it will be used in the description of the
% definition of |\xmacro@code| below) but it's exactly on this one
-% occasion {\em here\/} that you can't use it (cf.\ M\"unchhausens
+% occasion {\em here\/} that you can't use it (cf.\ Münchhausens
% Marsh problem)\footnote{Karl Friedrich Hieronymus Frhr.\ v.\
-% M\"unchhausen (*1720, \dag1797). Several books were written
+% Münchhausen (*1720, \dag1797). Several books were written
% about fantastic adventures supposedly told by him (see
% \cite{book:Raspe} or \cite{book:Buerger}). In one story he
% escaped from the marsh by pulling himself out by his hair.}
@@ -1865,7 +2645,7 @@
% \end{macrocode*}
% Additionally, we need to ensure that the symbols in the above
% string contain the |\catcode|$\,$s which are available
-% within the \textsf{macrocode} environment.
+% within the \env{macrocode} environment.
% \begin{macrocode*}
\catcode`\{=12 \catcode`\}=12
\catcode`\%=12 \catcode`\ =\active \catcode`\\=\active
@@ -1908,65 +2688,7 @@
% \subsection{Macros for the `documentation parts'}
%
%
-% \begin{macro}{\DescribeMacro}
-% \begin{macro}{\Describe@Macro}
-% \changes{v1.5v}{1990/01/28}{Macro added.}
-% \changes{v1.5j}{1989/06/09}{\cs{ignorespaces} added as a temporary
-% fix}
-% \begin{macro}{\DescribeEnv}
-% \begin{macro}{\Describe@Env}
-% \changes{v1.5v}{1990/01/28}{Macro added.}
-% \changes{v1.5j}{1989/06/09}{\cs{ignorespaces} added as a temporary
-% fix}
-% The |\DescribeMacro| and |\DescribeEnv| macros should
-% print their arguments in the margin and produce an index entry.
-% We simply use |\marginpar| to get the desired result. This
-% is however not the best solution because the labels might be
-% slightly misplaced. One also might get a lot of `marginpar moved'
-% messages which are hard-wired into the \LaTeX{} output
-% routine.\footnote{It might be better to change these macros into
-% environments like the \textsf{macro} environment.} First we change
-% to horizontal mode if necessary. The \LaTeX{} macros
-% |\@bsphack| and |\@esphack| are used to make those
-% commands invisible (i.e.\ to normalize the surrounding space and
-% to make the |\spacefactor| transparent).
-% \changes{v1.5v}{1990/01/28}{\cs{MakePrivateLetters} added.}
-% \begin{macrocode}
-\def\DescribeMacro{\leavevmode\@bsphack
-% \end{macrocode}
-% When documenting the code for the \texttt{amstex.sty} option we
-% encountered a bug: the |\catcode| of |@| was active and
-% therefore couldn't be used in command names. So we first have to
-% make sure that we get all |\catcode|s right by calling
-% |\MakePrivateLetters| inside a group. Then we call
-% |\Describe@Macro| to do the work.
-% \changes{v2.0g}{1999/03/22}{Parse backslash as letter in argument
-% to \cs{DescribeMacro}.}
-% \changes{v2.0h}{1999/03/25}{Correct errors introduced in v2.0g.}
-% \begin{macrocode}
- \begingroup\MakePrivateLetters\Describe@Macro}
-\def\Describe@Macro#1{\endgroup
- \marginpar{\raggedleft\PrintDescribeMacro{#1}}%
-% \end{macrocode}
-% Note the use of |\raggedleft| to place the output flushed
-% right. Finally we call a macro which produces the actual index
-% entry and finish with |\@esphack| to leave no
-% trace.\footnote{The whole mechanism won't work because
-% of the \texttt{\bslash leavevmode} in front.
-% As a temporary change \texttt{\bslash ignorespaces}
-% is added.}
-% \begin{macrocode}
- \SpecialUsageIndex{#1}\@esphack\ignorespaces}
-% \end{macrocode}
-% The |\DescribeEnv| macro is completely analogous.
-% \changes{v1.5v}{1990/01/28}{\cs{MakePrivateLetters} added.}
-% \begin{macrocode}
-\def\DescribeEnv{\leavevmode\@bsphack\begingroup\MakePrivateLetters
- \Describe@Env}
-\def\Describe@Env#1{\endgroup
- \marginpar{\raggedleft\PrintDescribeEnv{#1}}%
- \SpecialEnvIndex{#1}\@esphack\ignorespaces}
-% \end{macrocode}
+
% To put the labels in the left margin we have to use the
% |\reversemarginpar| declaration. (This means that the
% \texttt{doc.sty} can't be used with all classes or packages.)
@@ -1978,12 +2700,12 @@
\reversemarginpar
\setlength\marginparpush{0pt} \setlength\marginparwidth{8pc}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
%
-% \begin{macro}{\bslash}
+% \begin{macrocode}
+\setlength\marginparsep{\labelsep}
+% \end{macrocode}
+%
+% \begin{imacro}{\bslash}
% \changes{v1.7a}{1992/02/26}{Moved \cs{bslash} documentation to `user
% interface' part}
% We start a new group in which to hide the alteration of
@@ -2000,14 +2722,14 @@
% \begin{macrocode}
|gdef|bslash{\}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
%
% \begin{environment}{verbatim}
% \begin{environment}{verbatim*}
% \changes{v1.7i}{1992/07/12}{Added changed definition for verbatim!*.}
-% The \textsf{verbatim} environment holds no secrets; it consists of
+% The \env{verbatim} environment holds no secrets; it consists of
% the normal \LaTeX{} environment. We also set the
% |\@beginparpenalty| and change to the font given by
% |\MacroFont|.
@@ -2032,7 +2754,7 @@
% \begin{macro}{\@verbatim}
% Additionally we redefine the |\@verbatim| macro so that it
% suppresses |%| characters at the beginning of the line. The
-% first lines are copied literally from the \LaTeX{} format.
+% first lines are copied literally from \texttt{latex.tex}.
% \changes{v1.7i}{1992/07/12}{Added \cs{@@par} to clear possible
% \cs{parshape}.}
% \begin{macrocode}
@@ -2056,7 +2778,7 @@
% \begin{macrocode}
\check@percent}%
% \end{macrocode}
-% The rest is again copied literally from the \LaTeX{} format (less
+% The rest is again copied literally from \texttt{latex.tex} (less
% "\tt").
% \changes{v1.7a}{1992/02/26}{Removed redundant \cs{tt}.}
% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX verbatim,
@@ -2074,7 +2796,7 @@
% percent's |\catcode| so that it is seen by \TeX. The definition
% itself is nearly trivial: grab the following character, check if
% it is a |%|, and insert it again if not. At the end of the
-% \textsf{verbatim} environment this macro will peek at the next
+% \env{verbatim} environment this macro will peek at the next
% input line. In that case the argument to |\check@percent| might
% be a |\par| or a macro with arguments. Therefore we make the
% definition |\long| (|\par| allowed) and use the normal |\next|
@@ -2093,16 +2815,16 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\verb}
+% \begin{imacro}{\verb}
% \changes{v1.7a}{1992/02/27}{Now warns about newlines (from
% newdoc with `@noligs added).}
% \changes{v1.8b}{1993/09/21}{Changed to conform to new LaTeX \cs{verb}}
-% We re-define "\verb" to check for newlines in its argument since a
+% We re-define |\verb| to check for newlines in its argument since a
% missing delimiter is difficult to detect in \DOC{} source.
% The code is the same as in \texttt{latex.tex} of September 19, 1993.
% Perhaps there should be a font-changing
-% hook rather than just using "\ttfamily", but if so it probably should be
-% different from "\MacroFont" since that normally includes "\small"
+% hook rather than just using |\ttfamily|, but if so it probably should be
+% different from |\MacroFont| since that normally includes |\small|
% and would look wrong inline.
% \changes{v1.7a}{1992/02/28}{Added math mode check (from verbatim.sty)}
% \begin{macrocode}
@@ -2111,24 +2833,27 @@
\ttfamily \verb@eol@error \let\do\@makeother \dospecials
\@ifstar{\@sverb}{\@vobeyspaces \frenchspacing \@sverb}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
% \begin{macro}{\verb@balance@group}
% \begin{macro}{\verb@egroup}
% \begin{macro}{\verb@eol@error}
% \changes{v1.8b}{1993/09/21}{Renamed \cs{verb@err} to
% \cs{verb@eol@error}, as in new LaTeX verbatim.}
-% \changes{v2.1n}{2021/05/28}{Use same error message text as in format}
% \begin{macrocode}
\let\verb@balance@group\@empty
-
+% \end{macrocode}
+%
+% \begin{macrocode}
\def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
-
+% \end{macrocode}
+%
+% \begin{macrocode}
\begingroup
\obeylines%
\gdef\verb@eol@error{\obeylines%
\def^^M{\verb@egroup\@latex@error{%
- \noexpand\verb ended by end of line}\@ehc}}%
+ \noexpand\verb command ended by end of line}\@ehc}}%
\endgroup
% \end{macrocode}
% \end{macro}
@@ -2155,7 +2880,7 @@
%
% \begin{macro}{\verbatim@nolig@list}
% \begin{macro}{\do@noligs}
-% These macros replace the old "\@noligs" mechanism by an
+% These macros replace the old |\@noligs| mechanism by an
% extensible version to allow more ligatures to be added.
% \begin{macrocode}
\def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
@@ -2168,240 +2893,29 @@
% \end{macro}
% \end{macro}
%
-%
-% \begin{macro}{\macro}
-% \begin{macro}{\m@cro@}
-% \changes{v1.5v}{1990/01/28}{\cs{macro@} renamed to \cs{m@cro@}
-% since AmSTeX
-% defines another macro of the same name.}
-% \begin{macro}{\macro@cnt}
-% \label{page:macro} The \textsf{macro} environment is implemented as
-% a \textsf{trivlist} environment, whereby in order that the macro
+% \begin{tcounter}{\macro@cnt}
+% \label{page:macro} The \env{macro} environment is implemented as
+% a \env{trivlist} environment, whereby in order that the macro
% names can be placed under one another in the margin
% (corresponding to the macro's nesting depth), the macro
% |\makelabel| must be altered. In order to store the nesting
% depth, we use a counter. We also need a counter to count the
-% number of nested \textsf{macro} environments.
+% number of nested \env{macro} environments.
% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.}
% \changes{v1.9k}{1994/02/22}{Fix probably no longer necessary}
% \begin{macrocode}
\newcount\macro@cnt \macro@cnt=0
% \end{macrocode}
-% The environment takes an argument---the macro name to be
-% described. Since this name may contain special `letters' we have
-% to re-|\catcode| them before scanning the argument. This is done
-% by the |\MakePrivateLetters| macro.
-% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.}
-% \changes{v1.7a}{1992/02/26}{Catcode backslash to other (from newdoc).}
-% \changes{v1.9k}{1994/02/22}{Don't omit extra group}
-% \begin{macrocode}
-\def\macro{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@ \iftrue}
-% \end{macrocode}
-%
-% \begin{environment}{environment}
-% \changes{v1.8c}{1993/10/25}{Environment added}
-% The ``environment'' environment will be implemented just like the
-% ``macro'' environment flagging any differences in the code by
-% passing |\iffalse| or |\iftrue| to the |\m@cro@| environment
-% doing the actual work.
-% \begin{macrocode}
-\def\environment{\begingroup
- \catcode`\\12
- \MakePrivateLetters \m@cro@ \iffalse}
-% \end{macrocode}
-% \end{environment}
+% \end{tcounter}
%
-% After scanning the argument we close the group to get the normal
-% |\catcode|$\,$s back. Then we assign a special value to
-% |\topsep| and start a \textsf{trivlist} environment.
-% \changes{v1.5f}{1989/05/07}{MacroTopsep parameter added.}
-% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.}
-% \changes{v1.8c}{1993/10/25}{Support ``environment'' env}
-% \changes{v1.9k}{1994/02/22}{Remove \cs{macro@level}}
-% \begin{macrocode}
-\long\def\m@cro@#1#2{\endgroup \topsep\MacroTopsep \trivlist
-% \end{macrocode}
-% We also save the name being described in |\saved@macroname| for
-% use in conjunction with the |\changes| macro.
-% \begin{macrocode}
- \edef\saved@macroname{\string#2}%
- #1
-% \end{macrocode}
-% If documenting an environment we put is name in |\saved@indexname|
-% otherwise the name without the backslash.
-% \changes{v2.1g}{2016/02/15}{Use \cs{saved@indexname}}
-% \begin{macrocode}
- \let\saved@indexname\saved@macroname
- \else
- \edef\saved@indexname{\expandafter\@gobble\string#2}%
- \fi
-% \end{macrocode}
-% Now there follows a variation of |\makelabel| which is used
-% should the environment not be nested, or should it lie between
-% two successive |\begin{macro}| instructions or explanatory
-% text. One can recognize this with the switch |\if@inlabel|
-% which will be |true| in the case of successive |\item|
-% commands.
-% \begin{macrocode}
- \def\makelabel##1{\llap{##1}}%
-% \end{macrocode}
-% If |@inlabel| is |true| and if $\verb=\macro@cnt= > 0$
-% then the above definition needs to be changed, because in this
-% case \LaTeX{} would otherwise put the labels all on the same line
-% and this would lead to them being overprinted on top of each
-% other. Because of this |\makelabel| needs to be redefined
-% in this case.
-% \begin{macrocode}
- \if@inlabel
-% \end{macrocode}
-% If |\macro@cnt| has the value $1$, then we redefine
-% |\makelabel| so that the label will be positioned in the
-% second line of the margin. As a result of this, two macro names
-% appear correctly, one under the other. It's important whilst
-% doing this that the generated label box is not allowed to have
-% more depth than a normal line since otherwise the distance
-% between the first two text lines of \TeX{} will be incorrectly
-% calculated. The definition should then look like:
-%\begin{verbatim}
-% \def\makelabel##1{\llap{\vtop to \baselineskip
-% {\hbox{\strut}\hbox{##1}\vss}}}
-%\end{verbatim}
-% Completely analogous to this is the case where labels need to be
-% placed one under the other. The lines above are only an example
-% typeset with the \textsf{verbatim} environment. To produce the real
-% definition we save the value of |\macro@cnt| in
-% |\count@| and empty the temp macro |\@tempa| for later
-% use.
-% \begin{macrocode}
- \let\@tempa\@empty \count@\macro@cnt
-% \end{macrocode}
-% In the following loop we append for every already typeset label
-% an |\hbox{\strut}| to the definition of |\@tempa|.
-% \begin{macrocode}
- \loop \ifnum\count@>\z@
- \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne \repeat
-% \end{macrocode}
-% Now be put the definition of |\makelabel| together.
-% \changes{v1.5b}{1989/04/27}{vbox to vtop changed in makelabel (test)}
-% \changes{v1.5e}{1989/04/28}{ht strutbox changed to baselineskip
-% (test)}
-% \begin{macrocode}
- \edef\makelabel##1{\llap{\vtop to\baselineskip
- {\@tempa\hbox{##1}\vss}}}%
-% \end{macrocode}
-% Next we increment the value of the nesting depth counter. This
-% value inside the \textsf{macro} environment is always at least one
-% after this point, but its toplevel definition is zero. Provided
-% this environment has been used correctly, $|\macro@cnt|=0$
-% should not occur when |@inlabel|=\textsf{true}. It is
-% however possible if this environment is used within other list
-% environments (but this would have little point).
-% \begin{macrocode}
- \advance \macro@cnt \@ne
-% \end{macrocode}
-% If |@inlabel| is false we reset |\macro@cnt| assuming
-% that there is enough room to print the macro name without
-% shifting.
-% \begin{macrocode}
- \else \macro@cnt\@ne \fi
-% \end{macrocode}
-% Now the label will be produced using |\item|. The following
-% line is only a hack saving the day until a better solution is
-% implemented. We have to face two problems: the argument might be
-% a |\par| which is forbidden in the argument of other macros
-% if they are not defined as |\long|, or it is something like
-% |\iffalse| or |\else|, i.e.\ something which will be
-% misinterpreted when \TeX{} is skipping conditional text. In both
-% cases |\item| will bomb, so we protect the argument by using
-% |\string|.
-% \begin{macrocode}
- \edef\@tempa{\noexpand\item[%
-% \end{macrocode}
-% Depending on whether we are inside a ``macro'' or ``environment''
-% environment we use |\PrintMacroName| or |\PrintEnvName| to
-% display the name.
-% \begin{macrocode}
- #1%
- \noexpand\PrintMacroName
- \else
- \noexpand\PrintEnvName
- \fi
- {\string#2}]}%
- \@tempa
-% \end{macrocode}
-% At this point we also produce an index entry. Because it is not
-% known which index sorting program will be used, we do not use the
-% command |\index|, but rather a command
-% |\SpecialMainIndex| after advancing the counter for indexing
-% by line number. This may be redefined by the user in
-% order to generate an index entry which will be understood by the
-% index program in use (note the definition of
-% |\SpecialMainIndex| for our installation).
-% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
-% \changes{v1.9u}{1995/08/06}{Removed brace group which
-% killed \cs{DoNotIndex}}
-% We advance the current codeline number and after producing an
-% index entry revert to the original value
-% \begin{macrocode}
- \global\advance\c@CodelineNo\@ne
-% \end{macrocode}
-% Again the macro to call depends on the environment we are
-% actually in.
-% \begin{macrocode}
- #1%
- \SpecialMainIndex{#2}\nobreak
- \DoNotIndex{#2}%
- \else
- \SpecialMainEnvIndex{#2}\nobreak
- \fi
- \global\advance\c@CodelineNo\m@ne
-% \end{macrocode}
-% The |\nobreak| is needed to prevent a page break after the
-% |\write| produced by the |\SpecialMainIndex| macro. We
-% exclude the new macro in the cross-referencing feature, to
-% prevent spurious non-main entry references. Regarding possibly
-% problematic arguments, the implementation takes
-% care of |\par| and the conditionals are uncritical.
-% \changes{v1.7a}{1992/03/02}{Removed redundant code checking for
-% \cs{par}.}^^A
%
-% Because the space symbol should be ignored between the
-% |\begin{macro}{...}| and the following text we must take
-% care of this with |\ignorespaces|.
-% \begin{macrocode}
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-% \begin{macro}{\endmacro}
-% \begin{macro}{\endenvironment}
-% Older releases of this environment omit the |\endgroup| token,
-% when being nested. This was done to avoid unnecessary stack usage.
-% However it does not work if \textsf{macro} and
-% \textsf{environment} environments are mixed, therefore we now
-% use a simpler approach.
-% \changes{v1.5k}{1989/08/17}{Fix for save stack problem.}
-% \changes{v1.9k}{1994/02/22}{Don't checkfor nesting}
-% \begin{macrocode}
-\let\endmacro \endtrivlist
-\let\endenvironment\endmacro
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\MacroTopsep}
+% \begin{lskip}{\MacroTopsep}
% Here is the default value for the |\MacroTopsep| parameter
% used above.
% \begin{macrocode}
\newskip\MacroTopsep \MacroTopsep = 7pt plus 2pt minus 2pt
% \end{macrocode}
-% \end{macro}
+% \end{lskip}
%
%
%
@@ -2413,49 +2927,15 @@
% Therefore we define those macros only if they have not already
% been defined.
%
-% \begin{macro}{\PrintMacroName}
-% \begin{macro}{\PrintEnvName}
-% \begin{macro}{\PrintDescribeMacro}
-% \begin{macro}{\PrintDescribeEnv}
-% The formatting of the macro name in the left margin is done by
-% these macros. We first set a |\strut| to get the height and
-% depth of the normal lines. Then we change to the
-% |\MacroFont| using |\string| to |\catcode| the
-% argument to other (assuming that it is a macro name). Finally we
-% print a space. The font change remains local since this macro
-% will be called inside an |\hbox|.
-% \begin{macrocode}
-\@ifundefined{PrintMacroName}
- {\def\PrintMacroName#1{\strut \MacroFont \string #1\ }}{}
-% \end{macrocode}
-% We use the same formatting conventions when describing a macro.
-% \begin{macrocode}
-\@ifundefined{PrintDescribeMacro}
- {\def\PrintDescribeMacro#1{\strut \MacroFont \string #1\ }}{}
-% \end{macrocode}
-% To format the name of a new environment there is no need to use
-% |\string|.
-% \begin{macrocode}
-\@ifundefined{PrintDescribeEnv}
- {\def\PrintDescribeEnv#1{\strut \MacroFont #1\ }}{}
-\@ifundefined{PrintEnvName}
- {\def\PrintEnvName#1{\strut \MacroFont #1\ }}{}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
%
% \subsection{Creating index entries by scanning `macrocode'}
%
% The following macros ensure that index entries are created for each
% occurrence of a \TeX-like command (something starting with
-% `|\|') providing indexing has been turned on with "\PageIndex"
-% or "\CodelineIndex". With the default definitions of
-% |\SpecialMainIndex|, etc., the index file generated is
-% intended to be processed by Chen's \textsf{makeindex} program
+% `|\|') providing indexing has been turned on with |\PageIndex|
+% or |\CodelineIndex|. With the default definitions of
+% |\specialMainMacroIndex|, etc., the index file generated is
+% intended to be processed by Chen's \prg{makeindex} program
% \cite{art:Chen}.
%
%
@@ -2464,15 +2944,15 @@
% introduce command names at places where |\| has to belong to
% some other category. Therefore, we may also need to recognize
% \verb+|+ as the introducer for a command when setting the text
-% inside the \textsf{macrocode} environment. Other users may have the
+% inside the \env{macrocode} environment. Other users may have the
% need to make similar reassignments for their macros.
%
%
-% \begin{macro}{\SpecialEscapechar}\label{sect:specialescapechar}
+% \begin{imacro}{\SpecialEscapechar}\label{sect:specialescapechar}
% \begin{macro}{\active@escape@char}
% \begin{macro}{\special@escape@char}
% The macro |\SpecialEscapechar| is used to denote a special escape
-% character for the next \textsf{macrocode} environment. It has one
+% character for the next \env{macrocode} environment. It has one
% argument---the new escape character given as a `single-letter'
% control sequence. Its main purpose is defining
% |\special@escape@char| to produce the chosen escape character
@@ -2528,7 +3008,7 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
-% \end{macro}
+% \end{imacro}
%
%
%
@@ -2564,7 +3044,7 @@
% `|\|' first to 12 (at the end of |\macro@code|) then
% re-|\catcode| it to 13 in order to produce a $|\|_{12}$
% in case 3b) above. This is done because we have to ensure that
-% `|\|' has |\catcode| 13 within the \textsf{macrocode}
+% `|\|' has |\catcode| 13 within the \env{macrocode}
% environment. Otherwise the delimiter for the argument of
% |\xmacro@code| would not be found (parameter matching
% depends on |\catcode|$\,$s).
@@ -2574,7 +3054,7 @@
\begingroup \catcode`\|=\z@ \catcode`\\=\active
% \end{macrocode}
% We carry out tasks 2) and 3b) first.
-% \SpecialEscapechar{\|}
+% \SpecialEscapechar\|
% \begin{macrocode}
|gdef|init@crossref{|catcode`|\|active |let\|bslash
% \end{macrocode}
@@ -2613,7 +3093,7 @@
%
%
%
-% \begin{macro}{\MakePrivateLetters}
+% \begin{imacro}{\MakePrivateLetters}
% Here is the default definition of this command, which makes just
% the |@| into a letter. The user may change it if he/she
% needs more or other characters masquerading as letters.
@@ -2621,7 +3101,7 @@
\@ifundefined{MakePrivateLetters}
{\let\MakePrivateLetters\makeatletter}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
% \begin{macro}{\close@crossref}
% At the end of a cross-referencing part we prepare ourselves for
@@ -2642,10 +3122,10 @@
% The |\init@crossref| will have made |\active| our
% |\special@escape@char|, so that each
% |\active@escape@char| will invoke |\scan@macro| when
-% within the \textsf{macrocode} environment. By this means, we can
+% within the \env{macrocode} environment. By this means, we can
% automatically add index entries for every \TeX-like command which
% is met whilst setting (in verbatim) the contents of
-% \textsf{macrocode} environments.
+% \env{macrocode} environments.
% \begin{macrocode}
\def\scan@macro{%
% \end{macrocode}
@@ -2658,7 +3138,7 @@
\special@escape@char
\step@checksum
% \end{macrocode}
-% If the \textsf{macrocode} environment contains, for example, the
+% If the \env{macrocode} environment contains, for example, the
% command |\\|, the second |\| should not start the
% scanning mechanism. Therefore we use a switch to decide if
% scanning of macro names is allowed.
@@ -2689,22 +3169,9 @@
% \end{macro}
%
%
-% \begin{macro}{\ifscan@allowed}
-% \begin{macro}{\scan@allowedtrue}
-% \begin{macro}{\scan@allowedfalse}
-% |\ifscan@allowed| is the switch used above to determine if
-% the |\active@escape@char|\SpecialIndex{\active@escape@char}
-% should start the macro scanning mechanism.
-% \begin{macrocode}
-\newif\ifscan@allowed \scan@allowedtrue
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
%
-% \begin{macro}{\EnableCrossrefs}
-% \begin{macro}{\DisableCrossrefs}
+% \begin{imacro}{\EnableCrossrefs}
+% \begin{imacro}{\DisableCrossrefs}
% At this point we might define two macros which allow the user to
% disable or enable the cross-referencing mechanism. Processing of
% files will be faster if only main index entries are generated
@@ -2718,8 +3185,8 @@
\def\EnableCrossrefs{\@bsphack\scan@allowedtrue
\def\DisableCrossrefs{\@bsphack\@esphack}\@esphack}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
%
%
%
@@ -2750,6 +3217,10 @@
%
%
% \begin{macro}{\short@macro}
+%
+% \fmi{this needs cleaning up too, the results in the index are
+% currently wrong for cases like `\cs{ }' and the like.}
+%
% \changes{v1.5c}{1989/04/27}{Corrected bad bug by putting the
% scan@allowedfalse macro before printing
% the argument.}
@@ -2757,7 +3228,7 @@
% \cs{macro@namepart} as `letter' so index exclusion works.}
% This macro will be invoked (with a single character as parameter)
% when a single-character macro name has been spotted whilst
-% scanning within the \textsf{macrocode} environment.
+% scanning within the \env{macrocode} environment.
%
% First we take a look at the |\index@excludelist| to see
% whether this macro name should produce an index entry. This is
@@ -2775,14 +3246,14 @@
\uccode`\&=\expandafter`\string#1%
\uppercase{\def\x{\def\macro@namepart{&}}}%
\expandafter\endgroup\x
- \ifnot@excluded
% \end{macrocode}
-% If necessary the index entry is produced by the macro
-% |\produce@index|. Depending on the actual character seen,
-% this macro has to do different things, so we pass the character
-% as an argument.
+% Any indexing is then delegated to
+% |\maybe@index@short@macro|. Depending on the actual character seen,
+% this macro has to do different things, which is why we keep it separate from
+% |\maybe@index@macro| to avoid the special tests in the more
+% common case of a multi-letter macro name.
% \begin{macrocode}
- \produce@index{#1}\fi
+ \maybe@index@short@macro\macro@namepart
% \end{macrocode}
% Then we disable the cross-referencing mechanism with
% |\scan@allowedfalse| and print the actual character. The
@@ -2803,104 +3274,6 @@
%
%
%
-% \begin{macro}{\produce@index}
-% \changes{v1.4s}{1989/04/23}{Added noexpand to all
-% \cs{if} tests
-% to avoid garbage produced by new active chars}
-% \changes{v1.4s}{1989/04/23}{Used \texttt{\protect\bslash string} for
-% the same reason.}
-% \changes{v1.5c}{1989/04/27}{Corrected bad bug by placing the
-% scan@allowedfalse macro into short@macro}
-% This macro is supposed to generate a suitable |\SortIndex|
-% command for a given single-letter control sequence. We test
-% first for the cases which involve active characters (i.e.\ the
-% backslash, the special escape character (if any), the space and
-% the |^^M|). Using the |\if| test (testing for
-% character codes), we have to ensure that the argument isn't
-% expanded.
-% \begin{macrocode}
-\def\produce@index#1{%
- \if\noexpand#1\special@escape@char
-% \end{macrocode}
-% If the character is the special escape character (or the
-% `|\|' in case there was none) the |\it@is@a| macro is
-% used to produce the actual |\SortIndex| call.
-% \begin{macrocode}
- \scan@allowedfalse \it@is@a\special@escape@char \else
-% \end{macrocode}
-% Next comes the test for a `|\|' which must be the
-% $|\|_{13}$ expanding to |\bslash|.
-% \begin{macrocode}
- \if\noexpand#1\bslash \it@is@a\bslash \else
-% \end{macrocode}
-% Another possibility is \verb*+ +$_{13}$. Recall that |\space|
-% produces a \verb*+ +$_{10}$.
-% \begin{macrocode}
- \if\noexpand#1\space \it@is@a\space \else
-% \end{macrocode}
-% The last\footnote{Well, it isn't the last active character after
-% all. I added \texttt{\bslash @noligs} some days ago and now
-% \texttt{`} too is active. So we have to make sure that such
-% characters don't get expanded in the index.} possibility of an
-% active character is |^^M|\@. In this case we don't test for
-% character codes, since it is easier to look if the character is
-% equal to |\par|. (We are inside the \textsf{macrocode}
-% environment.)
-% \begin{macrocode}
- \ifx#1\par
-% \end{macrocode}
-% If we end up here we have just scanned a |\^^M| or something
-% similar. Since this will be treated like \verb*+\ + by \TeX{} we
-% produce a corresponding index entry.
-% \begin{macrocode}
- \it@is@a\space \else
-% \end{macrocode}
-% If it is the token |\relax| we do nothing. This can't happen
-% when the `doc' package is used in the way described here, but was
-% added to allow extensions like the \texttt{idxverb} option.
-% \changes{v1.5t}{1989/11/14}{Added \cs{relax} as a possible token to
-% allow extensions.}
-% \begin{macrocode}
- \ifx#1\relax \else
-% \end{macrocode}
-% The next three branches are needed because of bugs in
-% our \textsf{makeindex} program. You can't produce unbalanced index
-% entries\footnote{This is possible for \TeX{} if you use
-% \texttt{\string{$_{12}$ \rmfamily or
-% \ttfamily\string}$_{12}$},
-% but \textsf{makeindex} will complain.}
-% and you have to double a percent character. To get around these
-% restrictions we use special macros to produce the |\index|
-% calls.\footnote{Brian \textsc{Hamilton Kelly} has written fixes for
-% all three
-% bugs. When they've found their way through all
-% installations,
-% the lines above will be removed. See
-% page~\pageref{bug:fixes} if you already have them.
-% (I'm not sure which versions incorporate these, but
-% 2.11 is OK. See also
-% \pageref{makeindex:version}.)}
-% \begin{macrocode}
- \if\noexpand#1\bgroup \LeftBraceIndex \else
- \if\noexpand#1\egroup \RightBraceIndex \else
- \if\noexpand#1\percentchar \PercentIndex \else
-% \end{macrocode}
-% All remaining characters are used directly to produce their index
-% entries. This is possible even for the characters which have
-% special meanings in the index program, provided we quote the
-% characters. (This is correctly done in |\it@is@a|.)
-% \begin{macrocode}
- \it@is@a{\string#1}%
-% \end{macrocode}
-% We now need a whole pile of |\fi|$\,$s to match up with
-% the |\if|$\,$s.
-% \begin{macrocode}
- \fi \fi \fi \fi \fi \fi \fi \fi}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
% \begin{macro}{\macro@name}
% We now come to the macro which assembles command names which
% consist of one or more `letters' (which might well include
@@ -2968,9 +3341,11 @@
% routine. At this time \texttt{\bslash macro@namepart} might have a
% new value.}
% \begin{macrocode}
- \ifnot@excluded
- \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
- \@tempa \fi}
+% \ifnot@excluded
+% \edef\@tempa{\noexpand\SpecialIndex{\bslash\macro@namepart}}%
+% \@tempa \fi
+ \maybe@index@macro \macro@namepart
+}
% \end{macrocode}
% \end{macro}
%
@@ -2980,155 +3355,525 @@
%
% \subsection[The index exclude list]{The index exclude
% list\footnotemark}
-% \footnotetext{Warning: the incomplete commentary on
+% \footnotetext{Info: the incomplete commentary on
% \texttt{\bslash DoNotIndex} and the macros it calls
% was written by Dave Love.}
%
-% The internal form of the index exclude list is
-% \begin{quote}
-% \meta{macro name}|,|\meta{macro name}|,|
-% \ldots|,|
-% \end{quote}
-% where \meta{macro name} is a macro name like
-% $"\"_{12}"p"{_{11}}"@"_{11}$ or $"\"_{12}"$"_{11}$. Note that the "\"
-% has category `other' and the other characters in the name are all
-% `letter', regardless of their normal category.
%
-% \begin{macro}{\DoNotIndex}
-% This macro is used to suppress macro names in the index. It
-% starts off with a new group because we have to change the
-% |\catcode|$\,$s of all characters which belong to `letters'
-% while macros are defined.
+%
+
+% \def\MakePrivateLetters{%
+% \makeatletter
+% \catcode`\_11
+% \catcode`\:11}
+%
+%
+% The following part of the code is a new implementation using the
+% \LaTeX3 programming layer as the constructs and types
+% provided therein are making programming much easier. Over time I
+% will probably replace the rest of that \DOC code too.
% \begin{macrocode}
-\def\DoNotIndex{\begingroup \MakePrivateLetters
- \catcode`\\12
+\ExplSyntaxOn
% \end{macrocode}
-% Then we call the macro which actually reads the argument given by
-% the user.
+%
+%
+% \DescribeMacro\l__doc_donotindex_seq
+% Local sequence that holds names (as strings) of commands that
+% should not be indexed. Within a \DOC element environment that
+% element is placed into the sequence so that it isn't
+% unnecessarily index within that part of the code. As the sequence
+% is local it will revert this setting at the end of the
+% environment so that the command is indexed elsewhere (unless it
+% is generally disabled from indexing.
+%
+% \DescribeMacro\g__doc_idxtype_prop
+% Global property list that holds for all commands that are special
+% \DOC elements the type of the element. The key is the command
+% name without backslash and the value is \DOC element type
+% identifier, e.g., |\texttt{Length}| for length registers if that
+% type has been set up. \DOC only indexes commands, that is things
+% starting with an escape character, i.e., a backslash (by
+% default). \DOC elements that do not start with an escape
+% character, e.g., environments are not identified when parsing
+% code so that aren't indexed automatically inside. Thus for them
+% there is no point in keeping them in that property list.
+%
+% \DescribeMacro{\doc_dont_index:n}
+% \DescribeInterfaceMacro{\DoNotIndex}
+% Takes a clist of commands (with backslash) as input and exclude
+% all of them from the index. User facing we make this available as
+% |\DoNotIndex|.
+%
+%
+% \DescribeInterfaceMacro\ShowIndexingState
+% Displays the current list of the exclude index list in a fairly
+% low-level form.
+%
+% \DescribeInterfaceMacro\RecordIndexType
+% This command takes two arguments: a command (with escape char)
+% and its type (i.e., first mandatory
+% argument of a |\NewDocElement| declaration. If |#1| should not be
+% included from the index, then the data is used to record that
+% this command is of this type. The information is then used to
+% generate appropriate index entries. Obviously, index entries
+% generated earlier will be listing the wrong type. Therefore this
+% information is also placed into the \texttt{.aux} file so that it
+% will be available at the beginning of further runs.
+%
+% This command is internally executed as part of any \DOC element
+% environment so it only needs to be explicitly given if for some
+% reason a command with a special type has no corresponding environment.
+%
+%
+%
+%
+% \begin{macro}{\l__doc_donotindex_seq}
+% \begin{macro}{\g__doc_idxtype_prop}
+% Declarations.
% \begin{macrocode}
- \do@not@index}
+\seq_new:N \l__doc_donotindex_seq
+\prop_new:N \g__doc_idxtype_prop
% \end{macrocode}
-% \end{macro}
+% \end{macro}
+% \end{macro}
%
+% ^^A --------------------------------------------------
%
%
-% \begin{macro}{\do@not@index}
-% We make the |\do@not@index| macro |\long|
-% since the user might want to exclude the |\par|
-% macro.
+% \begin{macro}{\__doc_trace:x}
+% A helper for tracing\ldots
% \begin{macrocode}
-\long\def\do@not@index#1{%
+\cs_new:Npn\__doc_trace:x {
+ \legacy_if:nTF{ doc@debugshow }{ \iow_term:x } { \use_none:n }
+}
% \end{macrocode}
-% It just adds to a token list after finishing the group in which
-% the catcodes were changed.
-% \changes{v1.7a}{1992/02/26}{Replaced with newdoc version.}
+% \end{macro}
+%
+%
+% ^^A --------------------------------------------------
+%
+% \begin{macro}{\doc_dont_index:n}
+% \begin{macro}{\__doc_dont_index:n}
+% \begin{macro}{\__doc_dont_index_aux:n}
+%
+% Parses the argument a clist of commands with
+% |\MakePrivateLetters| in force (so that special characters are
+% recognized as being part of command names) and puts each command
+% without is backslash as a string into the sequence
+% |\l__doc_donotindex_seq|.
% \begin{macrocode}
- \endgroup
- \addto@hook\index@excludelist{#1,}}
+\cs_new:Npn \doc_dont_index:n {
+ \group_begin:
+ \MakePrivateLetters
+ \__doc_dont_index:n
+}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\addto@hook}
-% The code for adding tokens (the second argument) to a token list
-% (the first argument) is taken from~\cite{art:verbatim}, but it needs
-% to be "\long" in case "\par" is amongt the tokens.
% \begin{macrocode}
-\long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
+\cs_new:Npn \__doc_dont_index:n #1 {
+ \group_end:
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\index@excludelist}
-% We need an initially-empty register for the excluded list.
% \begin{macrocode}
-\newtoks\index@excludelist
-\index@excludelist{}
+ \__doc_trace:x{Disable~ indexing~ for~ '\tl_to_str:n{#1}' }
% \end{macrocode}
-% \end{macro}
+% Adding the commands to the |\l__doc_donotindex_seq| sequence is
+% done by mapping the function |\__doc_dont_index_aux:n| on each
+% element in the clist.
+% \begin{macrocode}
+ \clist_map_function:nN {#1} \__doc_dont_index_aux:n
+}
+% \end{macrocode}
+% We record each command by using its name as a string.
+% This means more tokens in the sequence but it allows
+% to compare names not ``action'' which is important as different
+% commands may have the same meaning (e.g., they may not be defined
+% at all),
+% \begin{macrocode}
+\cs_new:Npn \__doc_dont_index_aux:n #1 {
+ \seq_put_right:Nx \l__doc_donotindex_seq {\expandafter\@gobble \string#1}
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
%
-% \begin{macro}{\ifnot@excluded}
-% \changes{v1.7a}{1992/02/26}{Replaced with newdoc version.}
-% \begin{macro}{\expanded@notin}
-% Now we take a look at the |\index@excludelist| to see
-% whether a macro name saved in |\macro@namepart| should
-% produce an index entry. This macro is a pseudo |\if|; it
-% should expand to |\iftrue| or |\iffalse| depending on
-% the contents of |\index@excludelist|.
+% \begin{macro}{\DoNotIndex}
+% The document-level interface
% \begin{macrocode}
-\begingroup
+\cs_set_eq:NN \DoNotIndex \doc_dont_index:n
% \end{macrocode}
-% First we change "\catcode"s so that "\" is `other' and "|" a
-% temporary for the escape character. This is necessary since our
-% macro names are stored that way in the "\index@excludelist".
+% \end{macro}
+%
+%
+% \begin{macro}{\ShowIndexingState}
+% Some tracing information that may be helpful.
% \begin{macrocode}
-\catcode`\|=0%
-\catcode`\\=12
+\def \ShowIndexingState {
+ \__doc_trace:x{Show~ doc~ indexing~ state:}
+ \seq_show:N \l__doc_donotindex_seq
+% \tl_analysis_show:N\l__doc_donotindex_seq
+ \prop_show:N \g__doc_idxtype_prop
+}
% \end{macrocode}
-% Then we define "\ifnot@excluded" to call "\expanded@notin" with
-% two arguments: the first is the string "\" followed by the
-% contents of "\macro@namepart" followed by a "," and the second is
-% "\the" followed by "\index@excludelist". To achieve the expansion
-% of "\macro@namepart", i.e.\ to pass its contents, we need a
-% suitable number of "\expandafter"s.
-% \SpecialEscapechar{\|}
+% \end{macro}
+
+
+
+% ^^A --------------------------------------------------
+%
+%
+% \begin{macro}{\__doc_idxtype_put:Nn}
+% \begin{imacro}{\RecordIndexType}
+% \fmi{Change name of interface command!}
+% \begin{macro}{\RecordIndexTypeAux}
+% This is the internal form for |\RecordIndexType|. The first
+% argument is turned into a string and the rest of the processing
+% is then done by |\__doc_idxtype_put:nn|
+% \begin{macrocode}
+\cs_new:Npn \__doc_idxtype_put:Nn #1#2 {
+ \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
+% \end{macrocode}
+% We also make an entry in the \texttt{.aux} file so that this
+% declaration becomes immediately available in the next
+% run. However, for this we aren't reusing |\__doc_idxtype_put:N|
+% (a.k.a.\ |\RecordIndexType|) since that would result in doubling
+% such lines each time the document is run. Instead we use
+% |\RecordIndexTypeAux| which is only updating the data structures
+% without writing to the \texttt{.aux} file.
+% \begin{macrocode}
+ \protected@write\@auxout{}
+ {\string\RecordIndexTypeAux {\string#1 }{#2} }
+}
+% \end{macrocode}
+% When we execute this code from the \texttt{.aux} we better not
+% generate a new line in the \texttt{.aux}. Otherwise those would
+% cumulate over time.
% \begin{macrocode}
-|gdef|ifnot@excluded{|expandafter
- |expanded@notin|expandafter{|expandafter
- \|macro@namepart,}{|the|index@excludelist}}
-|endgroup
+\cs_new:Npn \RecordIndexTypeAux #1#2 {
+ \exp_args:Nx \__doc_idxtype_put:nn { \cs_to_str:N #1 }{#2}
+}
+% \end{macrocode}
+% Similarly, when the \texttt{.aux} is read at the end of the run we
+% should disable that command to avoid unnecessary processing.
+% \begin{macrocode}
+\AtEndDocument{
+ \cs_set_eq:NN \RecordIndexTypeAux \use_none:nn
+}
+% \end{macrocode}
+% Finally, we provide the user-level interface
+% \begin{macrocode}
+\cs_set_eq:NN \RecordIndexType \__doc_idxtype_put:Nn
+% \end{macrocode}
+% \end{macro}
+% \end{imacro}
+% \end{macro}
+%
+%
+% \begin{macro}{\__doc_idxtype_put_scan:nn}
+% When we want to record an index type for a scanned name we can't
+% turn that into a csname and then call |\__doc_idxtype_put:Nn|
+% because turning it into a csname may change the meaning of the
+% name from ``undefined'' to |\relax|. Got bitten by that when
+% processing the kernel sources containing |\@undefined| within the
+% code: suddenly that wasn't undefined any longer.
+% So here is another version that works only on characters as
+% input. As we don't know whether or not they are proper strings
+% already we first make sure that this is the case.
+% \begin{macrocode}
+\cs_new:Npn \__doc_idxtype_put_scan:nn #1#2 {
+ \exp_args:Nf \__doc_idxtype_put:nn { \tl_to_str:n {#1} }{#2}
+% \end{macrocode}
+% In this case we also have to append a backslash when writing to
+% the \texttt{.aux} file.
+% \begin{macrocode}
+ \protected@write\@auxout{}
+ {\string\RecordIndexTypeAux {\bslash #1 }{#2} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\__doc_idxtype_put_scan:on}
+% And here is the one we really need since the characters are
+% stored in some macro.
+% \begin{macrocode}
+\cs_generate_variant:Nn \__doc_idxtype_put_scan:nn {o}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\record@index@type@save}
+% And here is the interface to the rest of the code:
+% \begin{macrocode}
+\cs_set_eq:NN \record@index@type@save \__doc_idxtype_put_scan:on
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\__doc_idxtype_put:nn}
+% This internal command takes two arguments: a command name as
+% string (no backslash) and its type (i.e., first mandatory
+% argument of a |\NewDocElement| declaration. If |#1| is not in
+% |\l__doc_donotindex_seq| it will add this data to the property
+% list |\g__doc_idxtype_prop| using |#1| as key and |#2| as its
+% value. If the key already exist its value will be overwritten. If
+% the command is later marked for exclusion from the index the
+% property list setting remains unchanged but as long as no index
+% is produced for the command it will not be consulted.
+%
+% Note: the command assumes that |#1| is already in string form
+% \begin{macrocode}
+\cs_new:Npn \__doc_idxtype_put:nn #1#2 {
+% \end{macrocode}
+% No mystery here: if the command is not marked for exclusion from
+% the index add the property. The extra |\tl_to_str:n| is a safety
+% measure in case the input wasn't already in that form (should
+% only be the case with broken input but \ldots)
+% \begin{macrocode}
+ \exp_args:NNf
+ \seq_if_in:NnTF \l__doc_donotindex_seq {\tl_to_str:n{#1}}
+% \end{macrocode}
+% Some tracing info \ldots{}
+% \begin{macrocode}
+ {
+ \__doc_trace:x{Not~ recording~ index~ type~ for~ '\bslash #1' }
+ }
+ {
+ \__doc_trace:x{Recording~ index~ type~ for~ '\bslash #1' ~ as~ #2 }
+% \end{macrocode}
+% Stick the data into the property list:
+% \begin{macrocode}
+ \prop_gput:Nnn \g__doc_idxtype_prop {#1}{#2}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% ^^A --------------------------------------------------
+%
+%
+% \begin{macro}{\exp_args:co}
+% A helper: construct a function and call it with its first argument
+% expanded once:
+% \begin{macrocode}
+\cs_new:Npn \exp_args:co #1#2
+ { \cs:w #1 \exp_after:wN \cs_end:\exp_after:wN {#2} }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tl_to_str:o}
+% Another helper: take some token list variable, expand it and turn
+% it into a string.
+% \begin{macrocode}
+\cs_generate_variant:Nn \tl_to_str:n {o}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% ^^A --------------------------------------------------
+%
+%
+%
+% \DescribeMacro\maybe@index@macro
+%
+% This takes a macro name (without backslash) as parsed within a
+% \env{macrocode} environment and checks if it should get indexed
+% (i.e., is not on the exclude list) and if so how (i.e., gets it
+% index type property and makes the right choice depending on that.
+%
+
+
+% \begin{macro}{\maybe@index@macro}
+% \begin{macro}{\__doc_maybe_index:o}
+% We first make sure that the argument is really a string (so that
+% we have a defined situation) and then
+% pass it on to |\__doc_maybe_index_aux:nN| to do the work.
+% The second argument defines the indexing operation
+% \cs{SpecialIndex} for multi-letter macros and below
+% \cs{SpecialShortIndex} for single character macros.
+% \begin{macrocode}
+\cs_new:Npn \__doc_maybe_index:o #1 {
+ \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+ \SpecialIndex
+}
+% \end{macrocode}
+% And here is what we call it in the older non-expl3 code:
+% \begin{macrocode}
+\cs_set_eq:NN \maybe@index@macro \__doc_maybe_index:o
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \begin{macro}{\maybe@index@short@macro}
+% \begin{macro}{\__doc_maybe_index_short:o}
+% Single character macros are handled similarly but there the
+% indexing is done by \cs{SpecialShortIndex}.
+% \begin{macrocode}
+\cs_new:Npn \__doc_maybe_index_short:o #1 {
+ \exp_args:Nf \__doc_maybe_index_aux:nN { \tl_to_str:o {#1} }
+ \SpecialShortIndex
+}
+\cs_set_eq:NN \maybe@index@short@macro \__doc_maybe_index_short:o
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\__doc_maybe_index_aux:nN}
+% Take a string (representing a macro without backslash) and make
+% the right choices with respect to indexing.
+% \begin{macrocode}
+\cs_new:Npn \__doc_maybe_index_aux:nN #1#2 {
+% \end{macrocode}
+% A bit of tracing:
+% \begin{macrocode}
+ \__doc_trace:x{Searching~ for~ '\bslash #1'}
+% \end{macrocode}
+% If the name is on the exclude list do nothing.
+% \begin{macrocode}
+ \seq_if_in:NnTF \l__doc_donotindex_seq {#1}
% \end{macrocode}
-% The macro "\expanded@notin" now does the dirty work. It first
-% defines a macro "\in@@" with a very special parameter text. If
-% you look closely "\in@@" has three arguments, the first one is
-% delimited by the first argument of "\expanded@notin" (i.e.\ by
-% the string starting with a "\" and ending with a "," above), the
-% second is undelimited (which means that it will get the next
-% token after our string, and the third is delimited again and will
-% get the rest up to the token "\in@@". In other words the token
-% "\in@@" is also used as a delimiter.
-% \begin{macrocode}
-\def\expanded@notin#1#2{%
- \def\in@@##1#1##2##3\in@@{%
-% \end{macrocode}
-% Now the replacement text simply compares the second argument
-% (i.e.\ the undelimited one after our string) to the token
-% "\expanded@notin". This is an unclosed "\ifx" statement which
-% means that this macro behaves similar to a normal \TeX{}
-% conditional.
-% \begin{macrocode}
- \ifx\expanded@notin##2}%
-% \end{macrocode}
-% After all these preparations we call "\in@@". First we expand the
-% token after "\in@@" (which is "\the" from the second argument to
-% "\expanded@notin"). As a result we get the contents of the
-% "\index@excludelist" inserted after "\in@@". After this contents
-% we add once more the string we are looking for, then the token
-% "\expanded@notin" and finally the token "\in@@".
-% \begin{macrocode}
- \expandafter\in@@#2#1\expanded@notin\in@@}
-% \end{macrocode}
-% Now what happens when the macro "\in@@" above gets called? The
-% first argument to "\in@@" is delimited by our string. In other
-% words it will get everything from the contents of
-% "\index@excludelist" before this string. If the string is not in
-% "\index@excludelist" then it gets the whole contents, since after
-% it we had inserted the string one more. In this case the next
-% token is "\expanded@notin" which gets assigned to the second
-% argument and the third argument will be empty. If, on the other
-% hand, the string was inside "\index@excludelist" then the second
-% argument will not be the token "\expanded@notin" and the third
-% argument will be all the garbage up to "\in@@". Therefore testing
-% the seconded argument, as done in the definition of "\in@@" will
-% tell us whether or not the string is in "\index@includelist" and
-% this was exactly what we wanted. (Deep breath.) You got
-% that?\footnote{\TeX{}book page 125. The code described above is
-% originally due to Michael Spivak who used a similar method within
-% the \AmSTeX{} macros.}
-% \end{macro}
-% \end{macro}
%
+% \begin{macrocode}
+ {
+ \__doc_trace:x{Not~ indexing~ '\bslash #1' }
+ }
+% \end{macrocode}
+% Otherwise check if this name has an index type property attached
+% to it.
+% \begin{macrocode}
+ {
+ \prop_get:NnNTF \g__doc_idxtype_prop {#1} \l__doc_idxtype_tl
+% \end{macrocode}
+% If so construct and execute
+% |\Code|\meta{idxtype}|Index|\footnote{I guess this should really
+% be an internal name not a user-level one.} which is done inside
+% |\__doc_maybe_index_aux|
+% \begin{macrocode}
+ {
+ \exp_args:Ncno \__doc_maybe_index_aux:Nnn
+ { Code \tl_use:N \l__doc_idxtype_tl Index }
+ {code} {\bslash #1}
+ }
+% \end{macrocode}
+% Otherwise execute |\SpecialIndex| which is a short form for
+% |\CodeMacroIndex{code}| or execute \cs{SpecialShortIndex} which
+% deals with some special cases for single letter macros.
+% \begin{macrocode}
+ {
+ \__doc_trace:x{Indexing~ '\bslash #1'\space (\string #2)}
+ \exp_args:No #2 {\bslash #1}
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
%
%
%
+% \begin{macro}{\SpecialShortIndex}
+% \fmi{to be documented; also needs cleaning up as it is a mix of
+% old and new right now}
+% \begin{macrocode}
+\cs_new:Npn \SpecialShortIndex #1 {
+ \@SpecialIndexHelper@ #1\@nil
+ \@bsphack
+ \ifdoc@noindex \else
+ \str_case_e:nnF {\@gtempa }
+ {
+ {\cs_to_str:N \^^M } {\def\reserved@a{ \string \space \actualchar }
+ \def\reserved@b { \space }
+ \let\reserved@c \@empty }
+ { } {\def\reserved@a{ \string \space \actualchar }
+ \def\reserved@b { \space }
+ \let\reserved@c \@empty }
+ {\c_left_brace_str} { \def\reserved@a{ \bgroup \actualchar }
+ \def\reserved@b { \c_left_brace_str }
+ \def\reserved@c { \noexpand\iffalse
+ \c_right_brace_str
+ \noexpand\fi } }
+ {\c_right_brace_str} { \def\reserved@a{ \egroup \actualchar
+ \noexpand\iffalse
+ \c_left_brace_str
+ \noexpand\fi }
+ \def\reserved@b { \c_right_brace_str }
+ \let\reserved@c \@empty }
+% \end{macrocode}
+% The case of \cs{verbatimchar} is tricky. We can't stick it into
+% the normal \cs{verb} because we would then get something like
+% \verb=\verb+\++= which would comes out as ``\verb+\++'' instead
+% of \verb=\+=. So we use the \cs{verb} to only generate the
+% backslash and then use \cs{texttt} on the \cs{verbatimchar}
+% itself. However, that is not enough if we are unlucky and
+% somebody (like Will :-)) has used something like \verb=&= with a
+% special catcode for the \cs{verbatimchar}. We therefore also
+% apply \cs{string} to it when we read it back.
+% \begin{macrocode}
+ {\verbatimchar} { \def\reserved@a{ \quotechar\verbatimchar
+ \actualchar }
+ \let\reserved@b \@empty
+ \def\reserved@c
+ { \string\texttt{\string\string\verbatimchar} } }
+ }
+ { \def\reserved@a {\quotechar \@gtempa \actualchar }
+ \def\reserved@b {\quotechar \@gtempa }
+ \let\reserved@c \@empty }
+ \special@index {
+ \reserved@a
+ \string\verb
+ \quotechar *\verbatimchar \quotechar \bslash
+ \reserved@b
+ \verbatimchar
+ \reserved@c
+ \encapchar code}
+ \fi
+ \@esphack
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+
+% \begin{macro}{\__doc_maybe_index_aux:Nnn}
+% Execute the function passed on as first argument taking argument
+% 2 and 3 as input.
+% \begin{macrocode}
+\cs_new:Npn \__doc_maybe_index_aux:Nnn #1#2#3 {
+% \end{macrocode}
+% We have to be a little careful: as that function name is
+% constructed it may not actually exist (as constructions generate
+% |\relax| in \TeX{} in that case). In that case we raise an error,
+% otherwise we execute (with a little bit of tracing info):
+% \begin{macrocode}
+ \cs_if_exist:NTF #1
+ {
+ \__doc_trace:x{Indexing~ '#3'\space as~
+ \tl_use:N \l__doc_idxtype_tl }
+ #1{#2}{#3}
+ }
+ {
+ \PackageError{doc}{Doc~ element~
+ '\tl_use:N \l__doc_idxtype_tl'~ unknown}%
+
+ {When~ using~ '\string\RecordIndexType'~ the~ type~ must~
+ be~ known~\MessageBreak
+ to~ the~ system,~ i.e.,~ declared~ via~
+ '\string\NewDocElement'\MessageBreak
+ before~ it~ can~ be~ used~ in~ indexing.}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% Back to old style coding \ldots
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
%
%
%
@@ -3138,20 +3883,20 @@
% index entries; these are either invoked explicitly, or automatically
% by |\scan@macro|. As already mentioned, the definitions given
% here presuppose that the |.idx| file will be processed by
-% Chen's \textsf{makeindex} program --- they may be redefined for use
-% with the user's favourite such program.
+% Chen's \prg{makeindex} program --- they may be redefined for use
+% with the user's favorite such program.
%
% To assist the reader in locating items in the index, all such
% entries are sorted alphabetically {\em ignoring\/} the initial
% `|\|'; this is achieved by issuing an |\index| command which
-% contains the `actual' operator for \textsf{makeindex}. The default
+% contains the `actual' operator for \prg{makeindex}. The default
% value for the latter operator is `|@|', but the latter character is
% so popular in \LaTeX\ package files that it is necessary to substitute
-% another character. This is indicated to \textsf{makeindex} by means
+% another character. This is indicated to \prg{makeindex} by means
% of an `index style file'; the character selected for this function
% is |=|, and therefore this character too must be specially treated
% when it is met in a \TeX\ command. A suitable index style file is
-% provided amongt the supporting files for this style file in
+% provided amongst the supporting files for this style file in
% \texttt{gind.ist} and is generated from this source by processing
% with \texttt{docstrip} to extract the module \textbf{gind}. A
% similar style file \texttt{gglo.ist} is supplied for sorting the
@@ -3172,12 +3917,12 @@
%<+gind|gglo>
% \end{macrocode}
%
-% \begin{macro}{\actualchar}
-% \begin{macro}{\quotechar}
-% \begin{macro}{\levelchar}
+% \begin{imacro}{\actualchar}
+% \begin{imacro}{\quotechar}
+% \begin{imacro}{\levelchar}
% First come the definitions of |\actualchar|,
% |\quotechar| and |\levelchar|. Note, that our defaults
-% are not the ones used by the \textsf{makeindex} program without a
+% are not the ones used by the \prg{makeindex} program without a
% style file.
% \begin{macrocode}
%<*package>
@@ -3190,85 +3935,39 @@
%<+gind|gglo>level '>'
%<*package>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
+% \end{imacro}
%
%
-% \begin{macro}{\encapchar}
-% The \textsf{makeindex} default for the |\encapchar| isn't
+% \begin{imacro}{\encapchar}
+% The \prg{makeindex} default for the |\encapchar| isn't
% changed.
% \begin{macrocode}
\@ifundefined{encapchar}{\def\encapchar{|}}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\verbatimchar}
+% \begin{imacro}{\verbatimchar}
% We also need a special character to be used as a delimiter for
% the |\verb*| command used in the definitions below.
% \begin{macrocode}
\@ifundefined{verbatimchar}{\def\verbatimchar{+}}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\SpecialIndex}
-% The |\SpecialIndex| command creates index entries for
-% macros. If the argument is |\|$xyz$, the command produces
-% \verb|\indexentry{|$xyz$\verb|=\verb!*+\|$xyz$\verb|+}{|$n$\verb|}|
-% given the above defined defaults for |\actualchar|,
-% |\quotechar| and |\verbatimchar|. We first remove the
-% initial `|\|' to get a better index.
-% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
-% \begin{macrocode}
-\def\SpecialIndex#1{\@bsphack\special@index{\expandafter\@gobble
- \string#1\actualchar
-% \end{macrocode}
-% Then follows the actual entry. A |\quotechar| is placed
-% before the |*| to allow its use as a special \textsf{makeindex}
-% character. Again |\@bsphack| and |\@esphack| are used
-% to make the macros invisible.
-% \begin{macrocode}
- \string\verb\quotechar*\verbatimchar\string#1\verbatimchar}%
- \@esphack}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{\SpecialMainIndex}
-% \begin{macro}{\SpecialMainEnvIndex}
-% \begin{macro}{\SpecialUsageIndex}
-% The |\SpecialMainIndex| macro is used to cross-reference the
-% names introduced by the \textsf{macro} environment. The action is
-% as for |\SpecialIndex|, except that \textsf{makeindex} is
-% instructed to `encap'sulate the entry with the string
-% \verb=|main= to cause it to generate a call of the |\main|
-% macro.
-% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
-% \changes{v2.0c}{1998/08/22}{Correctly handle single character
-% control sequences like \cs{<}.}
-%
-% |\SpecialMainIndex| passes the macro name to be indexed on to the
-% macro |\SpecialIndex@|.
-% \begin{macrocode}
-\def\SpecialMainIndex#1{\@bsphack\SpecialIndex@{#1}{\encapchar main}%
- \@esphack}
-% \end{macrocode}
%
-% \begin{macro}{\SpecialIndex@}
-% \changes{v2.0c}{1998/08/22}{Macro added.}
-% \changes{v2.0f}{1999/02/27}{Temp fix to allow strange code in arg 1
-% (PR 2968)}
-% The macro |\SpecialIndex@| does the real work for |\SpecialMainIndex|
-% and |\SpecialUsageIndex|. It takes two arguments: the macro to be
-% indexed (as a control sequence or list of character tokens) and the
-% additional text for the index.
-% \changes{v2.0g}{1999/03/22}{Correct so-called temp fix. I'm not going to
-% explain this.}
+% \begin{macro}{\@SpecialIndexHelper@}
+% \fmi{doc or drop}
% \begin{macrocode}
\begingroup
\catcode`\|=0
\catcode`\\=12
+% \end{macrocode}
+% \SpecialEscapechar\|
+% \begin{macrocode}
|gdef|@SpecialIndexHelper@#1#2|@nil{%
|if |noexpand#1\%
|gdef|@gtempa{#2}%
@@ -3279,137 +3978,13 @@
|endgroup
|fi}
|endgroup
-\def\SpecialIndex@#1#2{%
-% \end{macrocode}
-% The first thing it does is to convert the macro into a list of
-% characters. Note that a character token list remains (mostly) unchanged.
-% \begin{macrocode}
- \@SpecialIndexHelper@#1\@nil
% \end{macrocode}
-% The macro name \verb*|\ | has to handled in a special way. The reason
-% is that the space token is skipped when \TeX\ is scanning macro
-% parameters, so that the trick used below will not work.
-% So, we check whether the replacement text of |\@tempa| starts with
-% a space token and write the appropriate index entry.
-% \begin{macrocode}
- \def\@tempb{ }%
- \ifcat \@tempb\@gtempa
- \special@index{\quotechar\space\actualchar
- \string\verb\quotechar*\verbatimchar
- \quotechar\bslash\quotechar\space\verbatimchar#2}%
- \else
-% \end{macrocode}
-% Having handled this special case we have to distinguish control
-% sequences consisting of one or more
-% letters and those that consists of exactly one nonletter. As character
-% tokens in the replacement text of the macro |\@gtempa| have all
-% category code $12$ (other), this is difficult. For simplicity, we treat
-% all single character control sequences alike, irregardless of whether
-% the character is a letter or not. This has the advantage that it works
-% even for strange settings of the category codes.
%
-% We define a utility macro |\@tempb| with two arguments, the second
-% delimited by |\relax|.
-% It will be called later so that the first argument is the first character
-% of the macro name, and the second argument receives the rest of the
-% characters. So we distinguish the two cases above by checking whether
-% the second argument is empty.
-% \begin{macrocode}
- \def\@tempb##1##2\relax{\ifx\relax##2\relax
-% \end{macrocode}
-% If so, we define the helper macro |\@tempc| in a way that it
-% adds quotechars in critical places.
-% \begin{macrocode}
- \def\@tempc{\special@index{\quotechar##1\actualchar
- \string\verb\quotechar*\verbatimchar
- \quotechar\bslash\quotechar##1\verbatimchar#2}}%
-% \end{macrocode}
-% Otherwise we write the characters as in |\SpecialIndex|.
-% \begin{macrocode}
- \else
- \def\@tempc{\special@index{##1##2\actualchar
- \string\verb\quotechar*\verbatimchar
- \bslash##1##2\verbatimchar#2}}%
- \fi}%
-% \end{macrocode}
-% Now pass the list of characters to \@tempb and call \@tempc to do the
-% work.
-% \begin{macrocode}
- \expandafter\@tempb\@gtempa\relax
- \@tempc
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% Slightly simpler is the main entry for environments
-% \changes{v1.9e}{1994/02/03}{use \cs{ttfamily} with \cs{string}}
-% \changes{v1.9f}{1994/02/07}{should have used \cs{noexpand}, sigh}
-% \changes{v1.9i}{1994/02/11}{should have used \cs{protect}}
-% \changes{v1.9j}{1994/02/16}{Back to string:-)}
-% \changes{v1.9s}{1994/10/14}{Added missing percent and changed to
-% \cs{ttfamily}}
-% \changes{v2.0d}{1998/12/20}{Correctly handle second index entry
-% by using \cs{special@index} not \cs{index} (PR/2928).}
-% \changes{v2.0e}{1998/12/28}{Use \cs{string}, not \cs{protect} in argument to
-% \cs{special@index}.}
-% \changes{v2.1c}{2004/07/23}{environment names incorrectly sorted in
-% index (pr/3615)}
-% \begin{macrocode}
-\def\SpecialMainEnvIndex#1{\@bsphack\special@index{%
- #1\actualchar
- {\string\ttfamily\space#1}
- (environment)%
- \encapchar main}%
- \special@index{environments:\levelchar#1\actualchar{%
- \string\ttfamily\space#1}\encapchar
- main}\@esphack}
-% \end{macrocode}
-% The |\SpecialUsageIndex| is similar to |\SpecialMainIndex|, except
-% that it uses the standard |\index| command.
-% \texttt{usage} instead of \texttt{main}.
-% \begin{macrocode}
-\def\SpecialUsageIndex#1{\@bsphack
- {\let\special@index\index\SpecialIndex@{#1}{\encapchar usage}}%
- \@esphack}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
-%
-%
-%
-% \begin{macro}{\SpecialEnvIndex}
-% Indexing environments is done a little bit differently; we produce
-% two index entries with the |\SpecialEnvIndex| macro:
-% \changes{v1.9e}{1994/02/03}{The index needs protecting}
-% \changes{v1.9g}{1994/02/08}{should have used \cs{noexpand}, sigh}
-% \changes{v1.9i}{1994/02/11}{should have used \cs{protect}}
-% \begin{macrocode}
-\def\SpecialEnvIndex#1{\@bsphack
-% \end{macrocode}
-% First we sort the environment under its own name stating in the
-% actual entry that this is an environment.
-% \begin{macrocode}
- \index{#1\actualchar{\protect\ttfamily#1}
- (environment)\encapchar usage}%
-% \end{macrocode}
-% The second entry is sorted as a subitem under the key
-% `environments:'.
-% \changes{v2.1b}{2004/02/09}{environment names incorrectly sorted in
-% index (pr/3615)}
-% \begin{macrocode}
- \index{environments:\levelchar#1\actualchar
- {\protect\ttfamily#1}\encapchar usage}\@esphack}
-% \end{macrocode}
-% Because both entries correspond to `descriptions' of the
-% environment, we encapsulate the page numbers with the
-% |\usage| macro.
% \end{macro}
%
%
%
-% \begin{macro}{\SortIndex}
+% \begin{imacro}{\SortIndex}
% This macro is used to generate the index entries for any
% single-character command that |\scan@macro| encounters. The
% first parameter specifies the lexical order for the character,
@@ -3417,76 +3992,87 @@
% the entry. It can also be used directly to generate index entries
% which differ in sort key and actual entry.
% \begin{macrocode}
-\def\SortIndex#1#2{\index{#1\actualchar#2}}
+\def\SortIndex#1#2{%
+ \ifdoc@noindex\else
+ \index{#1\actualchar#2}%
+ \fi
+}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
%
-% \begin{macro}{\it@is@a}
-% This macro is supposed to produce a correct |\SortIndex|
-% entry for a given character. Since this character might be
-% recognised as a `command' character by the index program used,
-% all characters are quoted with the |\quotechar|.
-% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
-% \begin{macrocode}
-\def\it@is@a#1{\special@index{\quotechar #1\actualchar
- \string\verb\quotechar*\verbatimchar
- \quotechar\bslash\quotechar#1\verbatimchar}}
-% \end{macrocode}
-% \end{macro}
-%
%
-%
-% \begin{macro}{\LeftBraceIndex}
+% \begin{imacro}{\LeftBraceIndex}
% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
-% \begin{macro}{\RightBraceIndex}
+% \begin{imacro}{\RightBraceIndex}
% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)} These
-% two macros fix the problems with \textsf{makeindex}. Note the
+% two macros fix the problems with \prg{makeindex}. Note the
% `hack' with |\iffalse}\fi| to satisfy both \TeX{} and the
-% \textsf{makeindex} program. When this is written to the
+% \prg{makeindex} program. When this is written to the
% \texttt{.idx} file \TeX{} will see both braces (so we get a
-% balanced text). \textsf{makeindex} will also see balanced braces
+% balanced text). \prg{makeindex} will also see balanced braces
% but when the actual index entry is again processed by \TeX{} the
% brace in between |\iffalse| |\fi| will vanish.
% \begin{macrocode}
\@ifundefined{LeftBraceIndex}{\def\LeftBraceIndex{%
- \special@index{\bgroup\actualchar\string\verb\quotechar*\verbatimchar
- \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
+ \special@index{\bgroup\actualchar
+ \string\verb% % to fool emacs highlighting
+ \quotechar*\verbatimchar
+ \quotechar\bslash{\verbatimchar\string\iffalse}\string\fi}}}{}
\@ifundefined{RightBraceIndex}{\def\RightBraceIndex{%
- \special@index{\egroup\actualchar\string\iffalse{\string\fi\string\verb
+ \special@index{\egroup\actualchar\string\iffalse{\string\fi
+ \string\verb% % to fool emacs highlighting
\quotechar*\verbatimchar\quotechar\bslash}\verbatimchar}}}{}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
%
%
-% \begin{macro}{\PercentIndex}
+% \begin{imacro}{\PercentIndex}
% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
% \changes{v1.7c}{1992/03/25}{Default now for bug-fixed makeindex}
-% By default we assume a version of \textsf{makeindex} without the
+% By default we assume a version of \prg{makeindex} without the
% percent bug is being used.
% \begin{macrocode}
\@ifundefined{PercentIndex}
{\def\PercentIndex{\it@is@a\percentchar}}{}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\OldMakeindex}
+% \end{imacro}
+%
+%
+% \begin{omacro}{\OldMakeindex}
% \changes{v1.7c}{1992/03/26}{Replaced \cs{NewMakeIndex}.}
-% \begin{macro}{\percentchar}
-% Here is one solution for the percent bug in \textsf{makeindex}.
+% \begin{imacro}{\percentchar}
+% Here is one solution for the percent bug in \prg{makeindex}.
% The macro |\percentchar| denotes a |%|$_{12}$. Calling this from
% a package or the driver file sets things up
% appropriately.\label{bug:fixes}
% \begin{macrocode}
\def\OldMakeindex{\def\PercentIndex{%
- \special@index{\quotechar\percentchar\actualchar\string\verb
+ \special@index{\quotechar\percentchar\actualchar
+ \string\verb% % to fool emacs highlighting
\quotechar*\verbatimchar\quotechar\bslash
\percentchar\percentchar\verbatimchar}}}
{\catcode`\%=12 \gdef\percentchar{%}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
+% \end{omacro}
+%
+%
+% \begin{macro}{\it@is@a}
+% This macro is supposed to produce a correct |\SortIndex|
+% entry for a given character. Since this character might be
+% recognized as a `command' character by the index program used,
+% all characters are quoted with the |\quotechar|.
+% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
+% \begin{macrocode}
+\def\it@is@a#1{\special@index{\quotechar #1\actualchar
+ \string\verb% % to fool emacs highlighting
+ \quotechar*\verbatimchar
+ \quotechar\bslash\quotechar#1\verbatimchar}}
+% \end{macrocode}
% \end{macro}
%
%
@@ -3494,7 +4080,7 @@
%
%
%
-% \subsection{Redefining the \textsf{index} environment}
+% \subsection{Redefining the \env{index} environment}
%
%\changes{v1.4r}{1989/04/22}{twocols env. placed into separate file}
%\changes{v1.4?}{1989/04/19}{use DEK's algorithm and implement
@@ -3502,34 +4088,10 @@
%\changes{v1.4?}{1989/04/16}{changes to the index env.}
%\changes{v1.5a}{1989/04/26}{Now input multicol.sty instead of
% multcols.sty}
-% \begin{macro}{\ifhave@multicol}
-% \changes{v1.7a}{1992/03/04}{Added to support avoiding multicol.sty} By
-% default the index is set in three columns, and will start on the
-% same page as, and underneath, the last part of the text of the
-% documented package file, if possible. The last page will be
-% reformatted with balanced columns. This requires the
-% \textsf{multicols} environment which is described elsewhere. So
-% that \DOC{} can be run independently of
-% \texttt{multicol.sty} we first check for its existence and set
-% the "have@multicol" flag appropriately for use below.
-% \changes{v1.9a}{1993/12/02}{Use \cs{IfFileExists}}
-% \changes{v1.9m}{1994/04/28}{Use \cs{RequirePackage} to load multicol}
-% \begin{macrocode}
-\newif\ifhave@multicol
-% \end{macrocode}
-% If we found \texttt{multicol.sty} we use it. It would be nice to
-% delay this (and the re-definition of "theindex") until we knew
-% whether an index was actually required \ldots
-% \begin{macrocode}
-\IfFileExists{multicol.sty}{\have@multicoltrue
- \RequirePackage{multicol}%
- }{}
-% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\IndexMin}
-% \begin{macro}{\c@IndexColumns}
+% \begin{ldimen}{\IndexMin}
+% \begin{lcounter}{IndexColumns}
% \changes{v1.4t}{1989/04/24}{Counter added.}
% If \texttt{multicol} is in use,
% when the index is started we compute the remaining space on the
@@ -3542,8 +4104,9 @@
\newdimen\IndexMin \IndexMin = 80pt
\newcount\c@IndexColumns \c@IndexColumns = 3
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{lcounter}
+% \end{ldimen}
+%
%
%
% \begin{environment}{theindex}
@@ -3557,7 +4120,14 @@
% \changes{v1.6e}{1991/04/03}{Turned into env definition.}
% \changes{v1.7a}{1992/03/04}{Include test for multicols.}
% \begin{macrocode}
-\ifhave@multicol
+\ifdoc@multicol
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \RequirePackage{multicol}
+% \end{macrocode}
+%
+% \begin{macrocode}
\renewenvironment{theindex}
{\begin{multicols}\c@IndexColumns[\index@prologue][\IndexMin]%
% \end{macrocode}
@@ -3570,17 +4140,15 @@
%
% \begin{macro}{\endtheindex}
% \changes{v1.4t}{1989/04/24}{Incorporated new multicols env.}
-% At the end of the index, we have only to end the \textsf{multicols}
+% At the end of the index, we have only to end the \env{multicols}
% environment.
% \begin{macrocode}
{\end{multicols}}
% \end{macrocode}
-% If we can't use \textsf{multicols} we warn the user and use an
+% If we can't use \env{multicols} we warn the user and use an
% environment that's basically the one from \texttt{article.sty}.
% \begin{macrocode}
\else
- \typeout{Can't find multicol.sty -- will use normal index layout if
- necessary.}
\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
\columnseprule \z@ \columnsep 35\p@
\twocolumn[\index@prologue]%
@@ -3591,8 +4159,8 @@
% \end{macro}
% \end{environment}
%
-% Here are the necessary \textsf{makeindex} declarations. We disable
-% scanning of macro names inside the index with "\scan@allowedfalse\n"
+% Here are the necessary \prg{makeindex} declarations. We disable
+% scanning of macro names inside the index with |\scan@allowedfalse\n|
% to avoid recursion.
% \begin{macrocode}
%</package>
@@ -3604,7 +4172,7 @@
% \end{macrocode}
%
%
-% \begin{macro}{\IndexPrologue}
+% \begin{imacro}{\IndexPrologue}
% \begin{macro}{\index@prologue}
% \changes{v1.9w}{1995/12/27}{Text changed}
% \changes{v1.9x}{1996/01/11}{Text depends on code lines used}
@@ -3639,11 +4207,11 @@
}}{}
% \end{macrocode}
% \end{macro}
-% \end{macro}
+% \end{imacro}
%
%
%
-% \begin{macro}{\IndexParms}
+% \begin{imacro}{\IndexParms}
% These are some last-minute assignments for formatting the index
% entries. They are defined in a separate macro so that a user can
% substitute different definitions. We start by defining the
@@ -3678,7 +4246,7 @@
\def\subsubitem{\@idxitem\hspace*{25pt}}%
% \end{macrocode}
% \begin{macro}{\indexspace}
-% The \textsf{makeindex} program generates an |\indexspace|
+% The \prg{makeindex} program generates an |\indexspace|
% before each new alphabetic section commences. After this final
% definition we end the |\@ifundefined| and the definition of
% |\IndexParms|.
@@ -3690,10 +4258,10 @@
% \end{macro}
% \end{macro}
% \end{macro}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\efill}
+% \begin{imacro}{\efill}
% This definition of |\efill| is intended to be used after index
% items which have no following text (for example, ``\textit{
% see\/}'' entries). It just ensures that the current line is
@@ -3706,104 +4274,96 @@
%<+gind>item_x2 "\\efill \n \\subsubitem "
%<*package>
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
%
-% \begin{macro}{\pfill}
-% \begin{macro}{\dotfil}
-% \begin{macro}{\dotfill}
+% \begin{imacro}{\pfill}
% The following definitions provide the |\pfill| command; if
-% this is specified in the index style file to \textsf{makeindex} as
+% this is specified in the index style file to \prg{makeindex} as
% the delimiter to appear after index items, then the intervening
% space before the referenced page numbers will be filled with
% dots, with a little white space interpolated at each end of the
% dots. If the line is broken the dots will show up on both lines.
-% \changes{v2.1i}{2018/09/25}{Guard against following \cs{unskip} (git/23)}
% \begin{macrocode}
-\def\dotfill{\leaders\hbox to.6em{\hss .\hss}\hskip\z@ plus 1fill\kern\z@}%
-\def\dotfil{\leaders\hbox to.6em{\hss .\hss}\hfil\kern\z@}%
-\def\pfill{\unskip~\dotfill\penalty500\strut\nobreak
- \dotfil~\ignorespaces}%
+\def\pfill{\unskip~%
+ \leaders\hbox to.6em{\hss .\hss}\hfill
+ \penalty500\strut\nobreak
+ \leaders\hbox to.6em{\hss .\hss}\hfil
+ ~\ignorespaces}%
%</package>
%<+gind|gglo>delim_0 "\\pfill "
%<+gind|gglo>delim_1 "\\pfill "
%<+gind|gglo>delim_2 "\\pfill "
%<*package>
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
%
%
%
-% \begin{macro}{\*}
+% \begin{imacro}{\*}
% Here is the definition for the |\*| macro. It isn't used in
% this set of macros.
% \begin{macrocode}
\def\*{\leavevmode\lower.8ex\hbox{$\,\widetilde{\ }\,$}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\main}
+% \begin{imacro}{\main}
% The \textit{defining\/} entry for a macro name is flagged with
% the string \texttt{\encapchar main}\footnote{With the current
% definition of \texttt{\bslash encapchar} substituted for
-% \texttt{\encapchar}} in the |\index| command; \textsf{makeindex}
+% \texttt{\encapchar}} in the |\index| command; \prg{makeindex}
% processes this so that the |\main| macro will be invoked to
% underline the page number(s) on which the {\em definition\/} of
% the macro will be found.
% \begin{macrocode}
\@ifundefined{main}{\def\main#1{\underline{#1}}}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
-% \begin{macro}{\usage}
+% \begin{imacro}{\usage}
% The |\usage| macro is used to indicate entries describing
% the usage of a macro. The corresponding page number(s) will be
% set in \textit{italics}.
% \begin{macrocode}
\@ifundefined{usage}{\def\usage#1{\textit{#1}}}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
+% \begin{imacro}{\code}
+% The |\code| macro is used to indicate index entries to code lines
+% that aren't main entries.
+% By default we do nothing special with them
+% the usage of a macro.
+% \begin{macrocode}
+\@ifundefined{code}{\def\code#1{#1}}{}
+% \end{macrocode}
+% \end{imacro}
%
-% \begin{macro}{\PrintIndex}
+%
+% \begin{imacro}{\PrintIndex}
% \changes{v1.5k}{1989/09/04}{\cs{printindex} changed to
% \cs{PrintIndex}}
% \changes{v1.7a}{1992/02/26}{Documentation moved to interface section.}
% \changes{v1.9h}{1994/02/10}{Use \cs{@input@} instead of \cs{@input}.}
% \changes{v1.9w}{1995/12/29}{Turn the cmd into a noop after use.}
-% This is the same as "\printindex" in the \textsf{makeidx} package.
+% This is the same as |\printindex| in the \pkg{makeidx} package.
% \begin{macrocode}
\def\PrintIndex{\@input@{\jobname.ind}%
\global\let\PrintIndex\@empty}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
-% \begin{macro}{\printindex}
-% Since the above macro was called |\printindex| in older versions
-% of \texttt{doc.sty} the following definition was provided up to
-% version 1.9y.
-% \changes{v1.9z}{1996/04/17}{Commented out}
-% \begin{macrocode}
-%\def\printindex{\typeout{\string\printindex\space is obsolete!}%
-% \typeout{Please use \string\PrintIndex\space
-% if you are a macro implementor^^J
-% or get a newer version of the documented
-% software if you are a user}%
-% \PrintIndex}
-% \end{macrocode}
-% \end{macro}
%
% We want headings in the index (and changes list) according to the
% initial character of the next block of entries and have to instruct
-% \textsf{makeindex} appropriately. Unfortunately the specification
+% \prg{makeindex} appropriately. Unfortunately the specification
% for this changed sometime between versions 2.4 and 2.11 of
-% \textsf{makeindex}. We provide both ways of doing it but
+% \prg{makeindex}. We provide both ways of doing it but
% unfortunately this will always produce a warning message from
-% \textsf{makeindex}. This is for older versions:
+% \prg{makeindex}. This is for older versions:
% \changes{v1.7h}{1992/07/01}{Turn off headings in gls file}
% \begin{macrocode}
%</package>
@@ -3839,13 +4399,13 @@
% is otherwise ignored, but the others are written out and may be used
% to generate a history of changes, to be printed at the end of the
% document. However, note that older versions of Chen's standard
-% \textsf{makeindex}
+% \prg{makeindex}
% program limit any textual field to just 64 characters; therefore,
% is important that the number of characters in the second and third
% parameters should not exceed 61 altogether (to allow for the
% parentheses placed around the date).
%
-% \begin{macro}{\changes}
+% \begin{imacro}{\changes}
% \changes{BHK}{1989/04/26}{Documented \texttt{\protect\bslash changes}
% command.}
% \changes{BHK}{1989/04/26}{Changed definition of
@@ -3855,9 +4415,9 @@
% change in \LaTeX{} 2.09 changed the command name in the
% \texttt{.glo} file from \texttt{\bslash indexentry} to
% \texttt{\bslash glossaryentry}. It is therefore necessary to
-% have a special \textsf{makeindex} style file called
+% have a special \prg{makeindex} style file called
% \texttt{gglo.ist} to process this file correctly.} Thus
-% \textsf{makeindex} or a similar program can be used to process
+% \prg{makeindex} or a similar program can be used to process
% the output into a sorted ``glossary''. The |\changes| command
% commences by taking the usual measures to hide its spacing, and
% then redefines |\protect| for use within the argument of the
@@ -3880,42 +4440,57 @@
\catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
\changes@}
\def\changes@#1#2#3{%
- \protected@edef\@tempa{\noexpand\glossary{#1\levelchar
+ \protected@edef\@tempa{\noexpand\glossary{#1%
+% \end{macrocode}
+% If asked for we also show the date of in the change log (after
+% the version).
+% \changes{v3.0g}{2022/06/01}{Show change dates if asked for (gh/531)}
+% \begin{macrocode}
+ \ifdoc@reportchangedates
+ \space -- #2\fi
+ \levelchar
% \end{macrocode}
% \changes{v1.9u}{1995/08/06}{Use value of \cs{saved@macroname} to
% find out about change entries at outer level}
-% If the macro "\saved@macroname" doesn't contain any macro name
+% If the macro |\saved@macroname| doesn't contain any macro name
% (ie is empty) the current changes entry was done at top-level.
-% In this case we precede it by "\generalname".
+% In this case we precede it by |\generalname|.
% \begin{macrocode}
- \ifx\saved@macroname\@empty
- \space
- \actualchar
- \generalname
- \else
+ \ifx\saved@macroname\@empty
+% \end{macrocode}
+% Putting a |!| at the beginning of the entry hopefully moves this
+% entry to the very beginning during sorting.
+% \begin{macrocode}
+ \quotechar!%
+ \actualchar
+ \generalname
+ \else
% \end{macrocode}
% \changes{v2.1g}{2016/02/15}{Use \cs{saved@indexname}}
% \begin{macrocode}
- \saved@indexname
- \actualchar
- \string\verb\quotechar*%
- \verbatimchar\saved@macroname
- \verbatimchar
- \fi
- :\levelchar #3}}%
+ \saved@indexname
+ \actualchar
+ \string\verb% % to fool emacs highlighting
+ \quotechar*%
+ \verbatimchar\saved@macroname
+ \verbatimchar
+ \fi
+ :\levelchar #3}}%
\@tempa\endgroup\@esphack}
% \end{macrocode}
+% \end{imacro}
+%
%
% \begin{macro}{\saved@macroname}
-% \changes{BHK}{1989/04/26}{Provided for sorting outside \textsf{macro}
+% \changes{BHK}{1989/04/26}{Provided for sorting outside \env{macro}
% environment} The entries are sorted for convenience by the name
% of the most recently introduced macroname (i.e., that in the most
% recent |\begin{macro}| command). We therefore provide
% |\saved@macroname| to record that argument, and provide a default
-% definition in case |\changes| is used outside a \textsf{macro}
+% definition in case |\changes| is used outside a \env{macro}
% environment. (This is a {\em wicked\/} hack to get such entries
% at the beginning of the sorted list! It works providing no macro
-% names start with "!" or |"|.) \changes{v1.7a}{1992/03/02}{Changed
+% names start with |!| or |"|.) \changes{v1.7a}{1992/03/02}{Changed
% string used for better sorting.}
% \changes{v1.9u}{1995/08/06}{Now empty by default}
% \begin{macrocode}
@@ -3932,17 +4507,17 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\generalname}
+% \begin{imacro}{\generalname}
% \changes{v1.9u}{1995/08/06}{Macro added}
% This macro holds the string placed before changes entries on
% top-level.
% \begin{macrocode}
\def\generalname{General}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\RecordChanges}
+% \begin{imacro}{\RecordChanges}
% \changes{BHK}{1989/04/26}{Renames former \texttt{\protect\bslash
% PrintChanges} command.}
% To cause the changes to be written (to a \texttt{.glo}) file, we
@@ -3951,17 +4526,16 @@
% \begin{macrocode}
\let\RecordChanges\makeglossary
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\GlossaryMin}
+% \begin{ldimen}{\GlossaryMin}
% \changes{BHK}{1989/04/26}{Added to support
% \texttt{\protect\bslash changes}.}
-% \begin{macro}{\c@GlossaryColumns}
+% \begin{lcounter}{GlossaryColumns}
% \changes{BHK}{1989/04/26}{Added to support \texttt{\protect\bslash
% changes}.} The remaining macros are all analogues of those used
-% for the \textsf{theindex} environment. When the glossary is
+% for the \env{theindex} environment. When the glossary is
% started we compute the space which remains at the bottom of the
% current page; if this is greater than |\GlossaryMin| then the
% first part of the glossary will be placed in the available space.
@@ -3972,8 +4546,8 @@
\newdimen\GlossaryMin \GlossaryMin = 80pt
\newcount\c@GlossaryColumns \c@GlossaryColumns = 2
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{lcounter}
+% \end{ldimen}
%
%
% \begin{environment}{theglossary}
@@ -3983,13 +4557,12 @@
% \changes{v1.6e}{1991/04/03}{Turned into env definition.}
% \changes{v1.7a}{1992/03/10}{Changed to work without multicols if
% necessary.}
-% \begin{macro}{\endglossary}
% \changes{BHK}{1989/04/26}{Added to support
% \texttt{\protect\bslash changes}.}
-% The environment \textsf{theglossary} is defined in the same manner
-% as the \textsf{theindex} environment.
+% The environment \env{theglossary} is defined in the same manner
+% as the \env{theindex} environment.
% \begin{macrocode}
-\ifhave@multicol
+\ifdoc@multicol
\newenvironment{theglossary}{%
\begin{multicols}\c@GlossaryColumns
[\glossary@prologue][\GlossaryMin]%
@@ -4004,10 +4577,9 @@
{\if@restonecol\onecolumn\else\clearpage\fi}
\fi
% \end{macrocode}
-% \end{macro}
% \end{environment}
%
-% Here are the necessary \textsf{makeindex} declarations with scanning
+% Here are the necessary \prg{makeindex} declarations with scanning
% disabled as for the index.
% \begin{macrocode}
%</package>
@@ -4025,7 +4597,7 @@
% \end{macrocode}
%
%
-% \begin{macro}{\GlossaryPrologue}
+% \begin{imacro}{\GlossaryPrologue}
% \changes{BHK}{1989/04/26}{Added to support
% \texttt{\protect\bslash changes}.}
% \begin{macro}{\glossary@prologue}
@@ -4050,9 +4622,9 @@
}}{}
% \end{macrocode}
% \end{macro}
-% \end{macro}
+% \end{imacro}
%
-% \begin{macro}{\GlossaryParms}
+% \begin{imacro}{\GlossaryParms}
% \changes{BHK}{1989/04/26}{Added to support
% \texttt{\protect\bslash changes}.}
% Unless the user specifies otherwise, we set the change history
@@ -4067,19 +4639,20 @@
\parfillskip -15pt plus -1fil\relax}
}{}
% \end{macrocode}
-% \end{macro}
-% \begin{macro}{\PrintChanges}
+% \end{imacro}
+%
+% \begin{imacro}{\PrintChanges}
% \changes{BHK}{1989/04/26}{Added to support
% \texttt{\protect\bslash changes}.}
% To read in and print the sorted change history, just put the
% |\PrintChanges| command as the last (commented-out, and thus
% executed during the documentation pass through the file) command
% in your package file. Alternatively, this command may form one of
-% the arguments of the |\StopEventually| command, although a
+% the arguments of the |\MaybeStop| command, although a
% change history is probably {\em not\/} required if only the
% description is being printed.
%
-% The command assumes that \textsf{makeindex} or some other program
+% The command assumes that \prg{makeindex} or some other program
% has processed the \texttt{.glo} file to generate a sorted
% \texttt{.gls} file.
% \changes{v1.9h}{1994/02/10}{Use \cs{@input@} instead of \cs{@input}.}
@@ -4088,7 +4661,7 @@
\def\PrintChanges{\@input@{\jobname.gls}%
\global\let\PrintChanges\@empty}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
%
@@ -4096,25 +4669,25 @@
%
% \subsection{Bells and whistles}
%
-% \begin{macro}{\StopEventually}
+% \begin{imacro}{\MaybeStop}
% \changes{v1.5k}{1989/09/04}{Support for checksum.}
-% \begin{macro}{\Finale}
+% \begin{imacro}{\Finale}
% \changes{v1.5k}{1989/09/04}{Support for checksum.}
% \changes{v1.5z}{1990/04/22}{Define \cs{Finale} globally.}
-% \begin{macro}{\AlsoImplementation}
+% \begin{imacro}{\AlsoImplementation}
% \changes{v1.9w}{1995/12/27}{Macro added}
-% \begin{macro}{\OnlyDescription}
+% \begin{imacro}{\OnlyDescription}
% If |\AlsoImplementation| is in force the whole documentation
% including the code part will be typeset. This is the default.
% \begin{macrocode}
\newcommand\AlsoImplementation{%
% \end{macrocode}
% To make this happen we have to define
-% |\StopEventually| in a way that its argument is typeset at the
+% |\MaybeStop| in a way that its argument is typeset at the
% very end or more exactly at |\Finale|. For this we
% save its argument in the macro |\Finale|.
% \begin{macrocode}
- \long\def\StopEventually##1{\@bsphack\gdef\Finale{##1%
+ \long\def\MaybeStop##1{\@bsphack\gdef\Finale{##1%
% \end{macrocode}
% But |\Finale| will be called at the very end of a file. This
% is exactly the point were we want to know if the file is
@@ -4123,7 +4696,7 @@
% \begin{macrocode}
\check@checksum}%
% \end{macrocode}
-% On the other hand: |\StopEventually| is more or less a
+% On the other hand: |\MaybeStop| is more or less a
% dividing point between description and code. So we start to look
% for the check-sum of the documented file by calling
% |\init@checksum|.
@@ -4134,35 +4707,44 @@
% \end{macrocode}
%
% Since |\AlsoImplementation| should be the default we execute it
-% and thus |\StopEventually| gets the desired meaning.
+% and thus |\MaybeStop| gets the desired meaning.
% \begin{macrocode}
\AlsoImplementation
% \end{macrocode}
% When the user places an |\OnlyDescription| declaration in
% the driver file the document should only be typeset up to
-% |\StopEventually|. We therefore have to redefine this macro.
+% |\MaybeStop|. We therefore have to redefine this macro.
% \begin{macrocode}
-\def\OnlyDescription{\@bsphack\long\def\StopEventually##1{%
+\def\OnlyDescription{\@bsphack\long\def\MaybeStop##1{%
% \end{macrocode}
-% In this case the argument of |\StopEventually| should be set
+% In this case the argument of |\MaybeStop| should be set
% and afterwards \TeX{} should stop reading from this file.
% Therefore we finish this macro with
% \begin{macrocode}
##1\endinput}\@esphack}
% \end{macrocode}
-% If no |\StopEventually| command is given we silently ignore a
+% If no |\MaybeStop| command is given we silently ignore a
% |\Finale| issued.
% \changes{v1.9n}{1994/04/28}{Ignore \cs{Finale} if no
-% \cs{StopEventually} is given}
+% \cs{MaybeStop} is given}
% \begin{macrocode}
\let\Finale\relax
% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
+% \end{imacro}
+% \end{imacro}
+%
%
-% \begin{macro}{\meta}
+% \begin{omacro}{\StopEventually}
+% The old wrong name for |\MaybeStop|. We need to use |\def|
+% (i.e., expansion) as |\MaybeStop| gets redefined once in a while.
+% \begin{macrocode}
+\def\StopEventually{\MaybeStop}
+% \end{macrocode}
+% \end{omacro}
+%
+% \begin{imacro}{\meta}
% \changes{v1.4t}{1989/04/24}{Macro added.}
% \changes{v1.5w}{1990/02/03}{Breaks at space allowed.}
% \changes{v1.6a}{1990/05/24}{Extra space bug corrected.}
@@ -4216,7 +4798,7 @@
}\ensuremath\rangle
}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
% \begin{macro}{\meta@font@select}
@@ -4228,7 +4810,7 @@
% \end{macro}
%
%
-% \begin{macro}{\IndexInput}
+% \begin{imacro}{\IndexInput}
% This next macro may be used to read in a separate file (possibly
% a package file that is {\em not\/} documented by this means) and
% set it verbatim, whilst scanning for macro names and indexing the
@@ -4243,7 +4825,7 @@
% \begin{macrocode}
\begingroup \macro@code
% \end{macrocode}
-% We also make spacing behave as in the \textsf{macrocode}
+% We also make spacing behave as in the \env{macrocode}
% environment, because otherwise all the spaces will be shown
% explicitly.
% \begin{macrocode}
@@ -4260,10 +4842,10 @@
% \begin{macrocode}
\endgroup}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\maketitle}
+% \begin{imacro}{\maketitle}
% The macro to generate titles is easily altered in order that it
% can be used more than once (an article with many titles). In the
% original, diverse macros were concealed after use with
@@ -4299,56 +4881,56 @@
\gdef\@date{\today}\gdef\@thanks{}%
\gdef\@author{}\gdef\@title{}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\ps@titlepage}
+% \begin{imacro}{\ps@titlepage}
% \changes{v1.5k}{1989/09/04}{Added \texttt{\protect\bslash
% ps@titlepage}} When a number of articles are concatenated into a
% journal, for example, it is not usual for the title pages of such
% documents to be formatted differently. Therefore, a class
-% such as \textsf{ltugboat} can define this macro in advance.
+% such as \cls{ltugboat} can define this macro in advance.
% However, if no such definition exists, we use pagestyle
% \texttt{plain} for title pages.
% \begin{macrocode}
\@ifundefined{ps@titlepage}
{\let\ps@titlepage=\ps@plain}{}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
-% \begin{macro}{\MakeShortVerb}
+% \begin{imacro}{\MakeShortVerb}
% \changes{v1.7a}{1992/02/27}{Added (from newdoc but now alters
% \cs{dospecials}, \cs{@sanitize}).}
-% This arranges an abbreviation for "\verb" such that if you say
-% "\MakeShortVerb{\"\meta{c}"}" subsequently using
+% This arranges an abbreviation for |\verb| such that if you say
+% |\MakeShortVerb{\|\meta{c}|}| subsequently using
% \meta{c}\meta{text}\meta{c} is equivalent to
-% "\verb"\meta{c}\meta{text}\meta{c}.\footnote{Warning:
+% |\verb|\meta{c}\meta{text}\meta{c}.\footnote{Warning:
% the commentary in the rest of this section was written by Dave
% Love.} In addition, the fact
% that \meta{c} is made active is recorded for the benefit of the
-% \textsf{verbatim} and \textsf{macrocode} environments.
+% \env{verbatim} and \env{macrocode} environments.
% Note particularly that the definitions below are global.
% The first thing we do (it needn't be first) is to record
-% the---presumably new---special character in "\dospecials" and
-% "\@sanitize" using "\add@special".
+% the---presumably new---special character in |\dospecials| and
+% |\@sanitize| using |\add@special|.
%
% \changes{v1.9e.2}{1994/02/07}{-js: Check if \protect\meta{c} is
% already an
% abbreviation for \cs{verb}.}
-% Some unwary user might issue "\MakeShortVerb" for a second time, we
+% Some unwary user might issue |\MakeShortVerb| for a second time, we
% better protect against this. We assume that this happened if a
-% control sequence "\cc\"\meta{c} is bound, the probability that this
+% control sequence |\cc\|\meta{c} is bound, the probability that this
% name is used by another module is low. We will output a warning
% below, so that a possible error might be noticed by the programmer
-% if he reads the "LOG" file. (Should have used module internal names,
+% if he reads the |LOG| file. (Should have used module internal names,
% 'though.)
%
-% \begin{macro}{\MakeShortVerb*}
+% \begin{imacro}{\MakeShortVerb*}
% \changes{v2.1a}{2003/12/09}{(HjG) Added \texttt{*} form}
-% This arranges an abbreviation for "\verb*" such that if you say
-% "\MakeShortVerb*{\"\meta{c}"}" subsequently using
+% This arranges an abbreviation for |\verb*| such that if you say
+% |\MakeShortVerb*{\|\meta{c}|}| subsequently using
% \meta{c}\meta{text}\meta{c} is equivalent to
-% "\verb*"\meta{c}\meta{text}\meta{c}.
+% |\verb*|\meta{c}\meta{text}\meta{c}.
% \begin{macrocode}
%</package>
%<*package|shortvrb>
@@ -4357,7 +4939,10 @@
{\def\@shortvrbdef{\verb*}\@MakeShortVerb}%
{\def\@shortvrbdef{\verb}\@MakeShortVerb}}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
+%
+% \begin{macro}{\@MakeShortVerb}
% \begin{macrocode}
\def\@MakeShortVerb#1{%
\expandafter\ifx\csname cc\string#1\endcsname\relax
@@ -4367,19 +4952,19 @@
\@shortvrbinfo{Made }{#1}\@shortvrbdef
\add@special{#1}%
% \end{macrocode}
-% Then the character's current catcode is stored in "\cc\"\meta{c}.
+% Then the character's current catcode is stored in |\cc\|\meta{c}.
% \begin{macrocode}
\expandafter
\xdef\csname cc\string#1\endcsname{\the\catcode`#1}%
% \end{macrocode}
% The character is spliced into the definition using the same trick as
-% used in "\verb" (for instance), having activated "~" in a group.
+% used in |\verb| (for instance), having activated |~| in a group.
% \begin{macrocode}
\begingroup
\catcode`\~\active \lccode`\~`#1%
\lowercase{%
% \end{macrocode}
-% The character's old meaning is recorded in "\ac\"\meta{c} prior to
+% The character's old meaning is recorded in |\ac\|\meta{c} prior to
% assigning it a new one.
% \begin{macrocode}
\global\expandafter\let
@@ -4398,20 +4983,24 @@
% \end{macrocode}
% \changes{v1.9v}{1995/11/03}{(DPC) Use \cs{@shortvrbinfo}}
% \begin{macrocode}
- \@shortvrbinfo\@empty{#1 already}{\@empty\verb(*)}%
+ \@shortvrbinfo\@empty{#1 already}%
+ {\@empty\verb% % to fool emacs highlighting
+ (*)}%
\fi}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\DeleteShortVerb}
+%
+%
+% \begin{imacro}{\DeleteShortVerb}
% \changes{v1.7a}{1992/02/27}{Added (from newdoc but now alters
% \cs{dospecials}, \cs{@sanitize}).}
-% Here's the means of undoing a "\MakeShortVerb", for instance in a
+% Here's the means of undoing a |\MakeShortVerb|, for instance in a
% region where you need to use the character outside a verbatim
-% environment. It arranges for "\dospecials" and "\@sanitize" to be
+% environment. It arranges for |\dospecials| and |\@sanitize| to be
% altered appropriately, restores the saved catcode and, if necessary,
% the character's meaning (as stored by
-% "\MakeShortVerb"). If the catcode wasn't stored in
-% "\cc\"\meta{c} (by "\MakeShortVerb") the command is silently
+% |\MakeShortVerb|). If the catcode wasn't stored in
+% |\cc\|\meta{c} (by |\MakeShortVerb|) the command is silently
% ignored.
% \changes{v1.7a}{1992/02/28}{Check for previous matched
% \cs{MakeShortVerb}
@@ -4423,19 +5012,24 @@
% \changes{v2.1a}{2003/12/10}{(HjG) Notify user
% if it's not a short verb character}
% \begin{macrocode}
- \@shortvrbinfo\@empty{#1 not}{\@empty\verb(*)}%
+ \@shortvrbinfo\@empty{#1 not}%
+ {\@empty\verb% % to fool emacs highlighting
+ (*)}%
\else
% \end{macrocode}
% \changes{v1.9v}{1995/11/03}{(DPC) Use \cs{@shortvrbinfo}}
% \begin{macrocode}
- \@shortvrbinfo{Deleted }{#1 as}{\@empty\verb(*)}%
+ \@shortvrbinfo{Deleted }{#1 as}%
+ {\@empty\verb% % to fool emacs
+ % highlighting
+ (*)}%
\rem@special{#1}%
\global\catcode`#1\csname cc\string#1\endcsname
% \end{macrocode}
% \changes{v1.9e.2}{1994/02/07}{-js: Reset `cc`\protect\meta{c} in
-% \cs{DeleteShortVerb}}
-% We must not forget to reset "\cc\"\meta{c}, otherwise the check in
-% "\MakeShortVerb" for a repeated definition will not work.
+% in \cs{DeleteShortVerb}}
+% We must not forget to reset |\cc\|\meta{c}, otherwise the check in
+% |\MakeShortVerb| for a repeated definition will not work.
% \begin{macrocode}
\global \expandafter\let \csname cc\string#1\endcsname \relax
\ifnum\catcode`#1=\active
@@ -4446,7 +5040,7 @@
\csname ac\string#1\endcsname}%
\endgroup \fi \fi}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
% \begin{macro}{\@shortvrbinfo}
% \changes{v1.9v}{1995/11/03}{(DPC) Macro added}
@@ -4465,12 +5059,12 @@
% \begin{macro}{\add@special}
% \changes{v1.7a}{1992/02/27}{Added for short verb facility.}
% This helper macro adds its argument to the
-% "\dospecials" macro which is conventionally used by verbatim macros
+% |\dospecials| macro which is conventionally used by verbatim macros
% to alter the catcodes of the currently active characters. We need
-% to add "\do\"\meta{c} to the expansion of "\dospecials" after
+% to add |\do\|\meta{c} to the expansion of |\dospecials| after
% removing the character if it was already there to avoid multiple
-% copies building up should "\MakeShortVerb" not be balanced by
-% "\DeleteShortVerb" (in case anything that uses "\dospecials" cares
+% copies building up should |\MakeShortVerb| not be balanced by
+% |\DeleteShortVerb| (in case anything that uses |\dospecials| cares
% about repetitions).
% \begin{macrocode}
\def\add@special#1{%
@@ -4478,29 +5072,31 @@
\expandafter\gdef\expandafter\dospecials\expandafter
{\dospecials \do #1}%
% \end{macrocode}
-% Similarly we have to add "\@makeother\"\meta{c} to "\@sanitize"
-% (which is used in things like "\index" to re-catcode all special
+% Similarly we have to add |\@makeother\|\meta{c} to |\@sanitize|
+% (which is used in things like |\index| to re-catcode all special
% characters except braces).
% \begin{macrocode}
\expandafter\gdef\expandafter\@sanitize\expandafter
{\@sanitize \@makeother #1}}
% \end{macrocode}
% \end{macro}
+%
+%
% \begin{macro}{\rem@special}
% \changes{v1.7a}{1992/02/27}{Added for short verb facility.}
-% The inverse of "\add@special" is slightly trickier. "\do" is
+% The inverse of |\add@special| is slightly trickier. |\do| is
% re-defined to expand to nothing if its argument is the character of
% interest, otherwise to expand simply to the argument. We can then
-% re-define "\dospecials" to be the expansion of itself. The space
-% after "=`##1" prevents an expansion to "\relax"!
+% re-define |\dospecials| to be the expansion of itself. The space
+% after |=`##1| prevents an expansion to |\relax|!
% \begin{macrocode}
\def\rem@special#1{%
\def\do##1{%
\ifnum`#1=`##1 \else \noexpand\do\noexpand##1\fi}%
\xdef\dospecials{\dospecials}%
% \end{macrocode}
-% Fixing "\@sanitize" is the same except that we need to re-define
-% "\@makeother" which obviously needs to be done in a group.
+% Fixing |\@sanitize| is the same except that we need to re-define
+% |\@makeother| which obviously needs to be done in a group.
% \begin{macrocode}
\begingroup
\def\@makeother##1{%
@@ -4511,19 +5107,6 @@
%<*package>
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\MakeShortverb}
-% \begin{macro}{\DeleteShortverb}
-% \changes{v1.7a}{1992/02/27}{Added (from newdoc).}
-% These commands from \textsf{newdoc} are now obsolete.
-% \begin{macrocode}
-\def\MakeShortverb{\typeout{*** Switch to \noexpand\MakeShortVerb
- syntax, this is obsolete ***}\MakeShortVerb}
-\def\DeleteShortverb{\typeout{*** Switch to \noexpand\DeleteShortVerb
- syntax, this is obsolete ***}\DeleteShortVerb}
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
%
%
% \subsection[Providing a checksum and character table]
@@ -4535,7 +5118,7 @@
% \begin{macro}{\init@checksum}
% The checksum mechanism works by counting backslashes in the
% macrocode. This initializes the count (when called from
-% "\StopEventually").
+% |\MaybeStop|).
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
% \begin{macrocode}
\def\init@checksum{\relax
@@ -4546,8 +5129,8 @@
%
% \begin{macro}{\check@checksum}
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
-% This reports the sum compared with the value ("\bslash@cnt") the
-% file advertises. It's called from "\Finale" (if that hasn't been
+% This reports the sum compared with the value (|\bslash@cnt|) the
+% file advertises. It's called from |\Finale| (if that hasn't been
% re-defined).
% \changes{v2.1f}{2016/02/12}{Suppress \cs{CheckSum} check if no checksum
% is specified in the file}
@@ -4581,12 +5164,12 @@
% \end{macro}
%
%
-% \begin{macro}{\check@sum}
+% \begin{tcounter}{\check@sum}
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
-% \begin{macro}{\bslash@cnt}
+% \begin{tcounter}{\bslash@cnt}
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
-% We need to define counters, "\bslash@cnt" for the number of
-% backslashes counted and "\check@sum" for the value advertised by the
+% We need to define counters, |\bslash@cnt| for the number of
+% backslashes counted and |\check@sum| for the value advertised by the
% file if any. A negative value means there is no checksum checking which is the default.
% \changes{v2.1f}{2016/02/12}{Suppress \cs{CheckSum} check if no checksum
% is specified in the file}
@@ -4594,17 +5177,17 @@
\newcount\check@sum \check@sum = \m@ne
\newcount\bslash@cnt \bslash@cnt = \z@
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{tcounter}
+% \end{tcounter}
%
%
-% \begin{macro}{\CheckSum}
+% \begin{omacro}{\CheckSum}
% \changes{v1.5k}{1989/09/04}{Macro added to support checksum.}
-% This is the interface to setting "\check@sum".
+% This is the interface to setting |\check@sum|.
% \begin{macrocode}
\def\CheckSum#1{\@bsphack\global\check@sum#1\relax\@esphack}
% \end{macrocode}
-% \end{macro}
+% \end{omacro}
%
%
%
@@ -4617,13 +5200,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\CharacterTable}
+% \begin{omacro}{\CharacterTable}
% The user interface to the character table-checking does some
-% "\catcode"ing and then compares the following table with the
-% stored version. We need to have "@" of type ``other'' within the
+% |\catcode|ing and then compares the following table with the
+% stored version. We need to have |@| of type ``other'' within the
% table since this is the way it is usually returned when reading
% in a normal document. To nevertheless have a private letter we
-% use "~" for this purpose. "~" does no harm as a ``letter'' as it
+% use |~| for this purpose. |~| does no harm as a ``letter'' as it
% comes last in the table and therefore will not gobble following
% space.
% \changes{v1.5m}{1989/09/20}{Macro added to check character translation
@@ -4635,12 +5218,14 @@
% \begin{macrocode}
\def\CharacterTable{\begingroup \CharTableChanges \character@table}
% \end{macrocode}
-% \end{macro}
+% \end{omacro}
+%
% \def\MakePrivateLetters{\catcode`\~=11\makeatletter}
+%
% \begin{macro}{\character@table}
% This does the work of comparing the tables and reporting the result.
% Note that the following code is enclosed in a group
-% with "~" catcoded to letter.
+% with |~| catcoded to letter.
% \begin{macrocode}
\begingroup
\catcode`\~=11
@@ -4659,22 +5244,22 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\CharTableChanges}
+% \begin{omacro}{\CharTableChanges}
% When the character table is read in we need to scan it with a
-% fixed set of "\catcode"s. The reference table below was defined by
-% assuming the normal "\catcode"s of \TeX{}, i.e.\ "@" is of type
+% fixed set of |\catcode|s. The reference table below was defined by
+% assuming the normal |\catcode|s of \TeX{}, i.e.\ |@| is of type
% other and the only token of type ``letter'' are the usual letters
% of the alphabet. If, for some reason, other characters are made
-% ``letters'' then their "\catcode"s need to be restored before
+% ``letters'' then their |\catcode|s need to be restored before
% checking the table. Otherwise spaces in the table are gobbled and
% we get the information that the tables are different, even if
-% they are actually equal. For this reason "\CharTableChanges" can
-% be set up to locally restore the "\catcode"s of such ``letters''
+% they are actually equal. For this reason |\CharTableChanges| can
+% be set up to locally restore the |\catcode|s of such ``letters''
% to ``other''.
% \begin{macrocode}
\global\let\CharTableChanges\@empty
% \end{macrocode}
-% \end{macro}
+% \end{omacro}
%
% \begin{macro}{\default~table}
% Here's what the table {\em should\/} look like (modulo spaces).
@@ -4719,34 +5304,40 @@
%
% The code in this section allows index entries to refer to code line
% numbers---the number of the first line of macrocode in the
-% \textsf{macro} environment.
+% \env{macro} environment.
%
%
% \begin{macro}{\codeline@index}
-% Indexing by code line is controlled by the "codeline@index" switch.
+% Indexing by code line is controlled by the |codeline@index| switch.
% \changes{v1.5s}{1989/11/05}{Support for code line no. (Undoc)}
% \changes{v1.7a}{1992/02/24}{Documented code line no. support.}
-% \begin{macro}{\CodelineNumbered}
+% \begin{imacro}{\CodelineNumbered}
% \changes{v1.8a}{1993/05/19}{Macro added}
% \begin{macrocode}
\newif\ifcodeline@index \codeline@indexfalse
\let\CodelineNumbered\codeline@indextrue
% \end{macrocode}
+% \end{imacro}
% \end{macro}
-% \end{macro}
+%
% \begin{macro}{\codeline@wrindex}
-% The code index entries are written out by "\special@index". If
-% indexing is by code line this is "\let" to "\codeline@wrindex";
-% if indexing is by page it is just "\index". However, if
-% "\nofiles" is given, we omit writing such an index entry at all.
+% The code index entries are written out by |\special@index|. If
+% indexing is by code line this is |\let| to |\codeline@wrindex|;
+% if indexing is by page it is just |\index|. However, if
+% |\nofiles| is given, we omit writing such an index entry at all.
% \changes{v1.7j}{1992/08/14}{Added \cs{if@filesw}.}
% \begin{macrocode}
\def\codeline@wrindex#1{\if@filesw
+ \begingroup
+ \set@display@protect
\immediate\write\@indexfile
{\string\indexentry{#1}%
- {\number\c@CodelineNo}}\fi}
+ {\number\c@CodelineNo}}%
+ \endgroup
+ \fi}
% \end{macrocode}
% \end{macro}
+%
% \begin{macro}{\special@index}
% By default no index entries are written out.
% \begin{macrocode}
@@ -4756,8 +5347,8 @@
% \begin{macro}{\CodelineIndex}
% \changes{v1.5u}{1989/11/14}{Added \cs{PageIndex} and
% \cs{CodelineIndex} (Undoc)}
-% This switches on use of the index file with "\makeindex", sets the
-% switch to indicate code line numbering and defines "\special@index"
+% This switches on use of the index file with |\makeindex|, sets the
+% switch to indicate code line numbering and defines |\special@index|
% appropriately.
% \begin{macrocode}
\def\CodelineIndex{\makeindex
@@ -4765,17 +5356,17 @@
\let\special@index\codeline@wrindex}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\PageIndex}
-% "\PageIndex" is similar.
+% \begin{imacro}{\PageIndex}
+% |\PageIndex| is similar.
% \begin{macrocode}
\def\PageIndex{\makeindex
\codeline@indexfalse
\let\special@index\index}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
%
-% \begin{macro}{\c@CodelineNo}
+% \begin{lcounter}{CodelineNo}
% \changes{v1.5l}{1989/09/10}{Counter added to support code line
% numbers}
% \changes{v1.5y}{1990/02/24}{Default changed.}
@@ -4785,7 +5376,8 @@
% \begin{macrocode}
\newcount\c@CodelineNo \c@CodelineNo\z@
% \end{macrocode}
-% \end{macro}
+% \end{lcounter}
+%
% \begin{macro}{\theCodelineNo}
% \changes{v1.7a}{1992/02/25}{Existing definition not overwritten.}
% \changes{v1.7a}{1992/03/12}{Use \cs{reset@font} for NFSS.}
@@ -4817,7 +5409,6 @@
% \end{macrocode}
% \end{macro}
%
-% \DeleteShortVerb{\"}
%
% The following |\mathcode| definitions allow the characters
% `|\|'
@@ -4835,9 +5426,9 @@
% \texttt{\bslash mathcode}$\,$s
% to work with any family assignments. For an example
% see the article about the new font selection scheme.}
-% particularly for something like $|\@abc|=1$.
+% particularly for something like |\@abc=1|.
%
-% If an {\em old\/} version of the \textsf{german} package is in
+% If an {\em old\/} version of the \pkg{german} package is in
% force, then the `|"|' character is active and would upset the
% definition of the \meta{16-bit number} quantities below, therefore
% we change the |\catcode| of |"| inside a group, and use
@@ -4907,8 +5498,8 @@
%
% \subsection{Changing the \texttt{\protect\bslash catcode} of \%}
%
-% \begin{macro}{\MakePercentIgnore}
-% \begin{macro}{\MakePercentComment}
+% \begin{imacro}{\MakePercentIgnore}
+% \begin{imacro}{\MakePercentComment}
% And finally the most important bit: we change the |\catcode|
% of `|%|' so that it is ignored (which is how we are able to
% produce this document!). We provide two commands to do the actual
@@ -4919,10 +5510,10 @@
\def\MakePercentIgnore{\catcode`\%9\relax}
\def\MakePercentComment{\catcode`\%14\relax}
% \end{macrocode}
-% \end{macro}
-% \end{macro}
+% \end{imacro}
+% \end{imacro}
%
-% \begin{macro}{\DocInput}
+% \begin{imacro}{\DocInput}
% The two macros above are now used to define the |\DocInput| macro
% which was introduced in version v1.5l (or so) of the \DOC{}
% package. In older versions |\MakePercentIgnore| was placed
@@ -4930,7 +5521,7 @@
% \begin{macrocode}
\def\DocInput#1{\MakePercentIgnore\input{#1}\MakePercentComment}
% \end{macrocode}
-% \end{macro}
+% \end{imacro}
%
% \subsection{GetFileInfo}
%
@@ -4951,6 +5542,779 @@
% \end{macrocode}
% \end{macro}
%
+
+
+
+
+% \section{Integrating hypdoc}
+%
+% If the option \texttt{hyperref} is selected (which is the
+% default), then we load the \pkg{hypdoc} package. We do that as
+% late as possible so that we don't generate option clashes if it
+% is also loaded in the preamble. That package currently changes
+% more commands than it should (not knowing about their new
+% definitions defined below) so we have to save and restore a few.
+%
+% Midterm all this code in \pkg{hypdoc} should be directly included
+% in \DOC. For now, while they are separate we have to do this
+% juggling.
+% \begin{macrocode}
+\AddToHook{begindocument/before}[doc/hyperref]{%
+ \ifdoc@hyperref
+% \end{macrocode}
+% Annoying to code around issue \#22
+% \begin{macrocode}
+ \expandafter\let\expandafter\doc@eoph@@k\csname doc.sty-h@@k\endcsname
+% \end{macrocode}
+% We require the package without any option so if it was already
+% loaded there is no option clash.
+% \begin{macrocode}
+ \RequirePackage{hypdoc}
+ \expandafter\let\csname doc.sty-h@@k\endcsname\doc@eoph@@k
+% \end{macrocode}
+% After \pkg{hypdoc} got loaded we need to undefine those macros
+% again so that later on \texttt{Macro} and \texttt{Env} \DOC items
+% appear to be undefined.
+% \begin{macrocode}
+ \let\PrintDescribeMacro \@@PrintDescribeMacro
+ \let\PrintDescribeEnv \@@PrintDescribeEnv
+ \let\PrintMacroName \@@PrintMacroName
+ \let\PrintEnvName \@@PrintEnvName
+ \let\SpecialUsageIndex \@@SpecialUsageIndex
+ \let\SpecialEnvIndex \@@SpecialEnvIndex
+ \let\SortIndex \@@SortIndex
+ \let\DescribeMacro \@@DescribeMacro
+ \let\DescribeEnv \@@DescribeEnv
+% \end{macrocode}
+% The package adds new definitions for \cs{special@index} into
+% \cs{CodelineIndex} and \cs{PageIndex} but since we are loading it
+% very late we are already past them (in the preamble). So we test
+% the final state and do it here, if necessary.
+% \begin{macrocode}
+ \ifx\special@index\@gobble % do we write index entries at all?
+ \else
+ \ifcodeline@index
+ \let\special@index\HD@codeline@wrindex
+ \else
+ \let\special@index\HD@page@wrindex
+ \fi
+ \fi
+% \end{macrocode}
+% The \pkg{amsmath} documentation uses \cs{env} in headings and
+% with \pkg{hyperref} enabled this causes trouble in bookmarks.
+% \fmi{fix elsewhere eventually}
+% \begin{macrocode}
+ \AddToHook{class/amsdtx/after}{%
+ \pdfstringdefDisableCommands{\let\env\@empty }}%
+% \end{macrocode}
+% That package also adds extra code into |\index| entries but it doesn't
+% know about all the stuff that \DOC does (now). So we need to provide
+% us with two helpers that handle the |\encapchar| case in some entries.
+% \begin{macrocode}
+ \def\doc@providetarget{\HD@target}%
+ \def\doc@handleencap#1{\encapchar hdclindex{\the\c@HD@hypercount}{#1}}%
+% \end{macrocode}
+% If that package is not loaded these helpers do little to nothing.
+% \begin{macrocode}
+ \else
+ \let\doc@providetarget\@empty
+ \def\doc@handleencap#1{\encapchar #1}%
+% \end{macrocode}
+% We define the next commands just in case the user changed the option
+% \texttt{hyperref} from \texttt{true} to \texttt{false} without
+% removing the auxiliary files.
+% \begin{macrocode}
+ \def\hdclindex#1#2{\ifx\@nil#2\@nil\else\csname #2\expandafter\endcsname\fi}%
+ \def\hdpindex #1{\ifx\@nil#1\@nil\else\csname #1\expandafter\endcsname\fi}%
+\fi
+}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \section{Integrating the \DOX package code}
+%
+% The code in this section is largely taken over from the \DOX package
+% by Didier with only minor modifications (so far). This means it is a
+% bit back and forth and both the code and the documentation need
+% further updates.
+%
+% \subsection{\DOX environments}
+
+% \begin{macro}{\@doc@env,\@doc@env@}
+% \fmi{original doc -- fix}
+% \marg{are-we-macrolike}\marg{item}\marg{indextype}\marg{name}\\
+% In \texttt{doc.sty}, the \texttt{macro} and \texttt{environment}
+% environments go through the \cs{m@cro@} macro which implements specific
+% parts by testing a boolean condition as its first argument. This mechanism
+% is not extensible, so I have to hack away a more generic version that
+% would work for any new \texttt{dox} item, only which looks pretty much
+% like the original one (with the addition of options management).
+%
+% First step is to see if we have a comma-separated list of names
+% in |#3| and if so we call the macro doing the work individually
+% for each
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+\long\def\@doc@env#1#2#3{
+% \end{macrocode}
+% The |\endgroup| here closes the scanning of names (using special catcodes.
+% \begin{macrocode}
+ \endgroup
+ \clist_map_inline:nn {#3} { \@doc@env@{#1}{#2}{##1} }
+}
+
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% And here is the payload for each name from the given list:
+% \begin{macrocode}
+\long\def\@doc@env@#1#2#3{%
+ \topsep\MacroTopsep
+ \trivlist
+ \edef\saved@macroname{\string#3}%
+% \end{macrocode}
+% Since version 2.1g, \texttt{doc} creates a \cs{saved@indexname} command
+% which in used by \cs{changes}. We now support that as well. The expansion of
+% this command depends on whether the documented item is macrolike or not,
+% which we don't know here (it's only know by \cs{NewDocElement}). That's why we
+% need one specific command generating \cs{saved@indexname} the right way for
+% every single item. These commands are
+% named\cs{@Save\meta{item}IndexName};
+% they are technically part of the generated API, only not meant for public
+% use.
+%
+% \fmi{above docu is no longer right (but code needs further changes
+% anyway}
+%
+% |#1| is either \texttt{TT} (for true = macrolike) or \texttt{TF}.
+% If true then we drop the first char from |\saved@macroname| and
+% store the result in |\saved@indexname| and use the latter for
+% sorting in the index.
+% \begin{macrocode}
+ \if #1%
+ \edef\saved@indexname{\expandafter\@gobble\saved@macroname}%
+%
+% \end{macrocode}
+% If the \DOC element described is macrolike but not a normal
+% ``macro'' then its type should be recorded and this is the places
+% where this happens. For macros (which should make up the bulk of
+% these items we don't do this and for anything else that looks
+% from an indexing perspective like a macro we don't do that either
+% to keep the list of exceptions small. That would be the case if
+% the indexing command |\Code|\meta{doc-element}|Index| is
+% equivalent to \cs{CodeMacroIndex}.
+% \begin{macrocode}
+ \expandafter\ifx
+ \csname Code#2Index\endcsname
+ \CodeMacroIndex
+ \else
+ \record@index@type@save
+ {\saved@indexname}{#2}%
+ \fi
+ \else
+ \let\saved@indexname\saved@macroname
+ \fi
+%
+ \def\makelabel##1{\llap{##1}}%
+ \if@inlabel
+ \let\@tempa\@empty
+ \count@\macro@cnt
+ \loop\ifnum\count@>\z@
+ \edef\@tempa{\@tempa\hbox{\strut}}\advance\count@\m@ne
+ \repeat
+ \edef\makelabel##1{\llap{\vtop to\baselineskip{\@tempa\hbox{##1}\vss}}}%
+ \advance\macro@cnt\@ne
+ \else
+ \macro@cnt\@ne
+ \fi
+ \ifdoc@noprint
+ \item
+ \else
+ \edef\@tempa{%
+ \noexpand\item[%
+% \end{macrocode}
+% The second notable modification to the original macro involves dynamically
+% constructing the name of the print macro:
+% \begin{macrocode}
+ \noexpand\doc@providetarget
+ \noexpand\strut
+ \noexpand\@nameuse{Print#2Name}{\saved@macroname}]}%
+ \@tempa
+ \fi
+ \ifdoc@noindex\else
+ \global\advance\c@CodelineNo\@ne
+% \end{macrocode}
+% and the third one involves dynamically constructing the name of the index
+% macro:
+% \begin{macrocode}
+ \csname SpecialMain#2Index\expandafter\endcsname
+ \expandafter{\saved@macroname}\nobreak
+ \global\advance\c@CodelineNo\m@ne
+ \fi
+% \end{macrocode}
+% Suppress further |\index| entries when we are within a
+% \texttt{macrolike} environment. (There is no point doing that for
+% non-\texttt{macrolike} environments are index entries are only
+% generated for items starting with a backslash anyway.
+% \fmi{fix}
+% \begin{macrocode}
+ \if#1\expandafter\DoNotIndex \expandafter {\saved@macroname}\fi
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%
+%
+% \begin{macro}{\doc@env}
+% \marg{true-value}\marg{item}\oarg{options}\\
+% Handle optional arguments and call \cs{@doc@env}. Because environments can
+% be nested, we can't rely on grouping for getting options default values.
+% Hence, we need to reset the options at every call.
+% \fmi{Use 2e interface for \cs{keys\_set:nn} when available}
+% \begin{macrocode}
+\def\doc@env#1#2[#3]{%
+ \@nameuse{doc@noprint\doc@noprintdefault}%
+ \@nameuse{doc@noindex\doc@noindexdefault}%
+ \csname keys_set:nn\endcsname{doc}{#3}%
+ \begingroup
+ \ifdoc@outer
+ \catcode`\\12
+ \fi
+ \MakePrivateLetters
+ \@doc@env{#1}{#2}%
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \subsection{\DOC descriptions}
+%
+% \begin{macro}{\@doc@describe}
+% \marg{item}\marg{name}\\
+% \begin{macrocode}
+\def\@doc@describe#1#2{%
+ \ifdoc@noprint\else
+ \marginpar{\raggedleft
+% \end{macrocode}
+% The hyperref target has to be in horizontal mode (which is the
+% case if it is after the \cs{strut}).
+% \begin{macrocode}
+ \strut
+ \doc@providetarget
+ \@nameuse{PrintDescribe#1}{#2}}%
+ \fi
+ \ifdoc@noindex\else
+ \@nameuse{Special#1Index}{#2}%
+ \fi
+ \@esphack
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\doc@describe}
+% \marg{item}\oarg{options}\\
+% Handle optional arguments and call \cs{@doc@describe}.
+% \fmi{Use 2e interface for \cs{keys\_set:nn} when available}
+% \begin{macrocode}
+\def\doc@describe#1[#2]{%
+ \leavevmode\@bsphack
+ \csname keys_set:nn\endcsname{doc}{#2}%
+ \@doc@describe{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \subsection{API construction}
+%
+%
+% \begin{macro}{\@temptokenb}
+% A scratch register (which may have been defined elsewhere)
+% \begin{macrocode}
+\@ifundefined{temptokenb}{\newtoks\@temptokenb}{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\doc@createspecialmainindex}
+% \marg{item}\marg{idxtype}\marg{idxcat}
+% \begin{macro}{\doc@createspecialmainmacrolikeindex}
+% \marg{item}\marg{idxtype}\marg{idxcat}\\
+% \fmi{original doc -- fix}
+% The ``macrolike'' version does something similar to |doc|'s
+% \cs{SpecialIndex@} macro, but simplified. Let's just hope nobody will ever
+% define \verb*|\ | or nonletter macros as macrolike \DOC elements\ldots
+% \begin{macrocode}
+\def\doc@createspecialindexes#1#2#3{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@temptokena{\space (#2)}%
+ \@temptokenb{#3:}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@nameedef{SpecialMain#1Index}##1{%
+ \noexpand\@bsphack
+ \ifdoc@toplevel
+ \noexpand\special@index{##1\noexpand\actualchar
+ {\string\ttfamily\space##1}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\encapchar main}%
+ \fi
+ \ifx\@nil#3\@nil\else
+ \noexpand\special@index{\the\@temptokenb\noexpand\levelchar
+ ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+ \noexpand\encapchar main}%
+ \fi
+ \noexpand\@esphack}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@nameedef{Special#1Index}##1{%
+ \noexpand\@bsphack
+ \ifdoc@toplevel
+ \noexpand\doc@providetarget
+ \noexpand\index{##1\noexpand\actualchar{\string\ttfamily\space##1}%
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\doc@handleencap{usage}}%
+ \fi
+ \ifx\@nil#3\@nil\else
+ \noexpand\index{\the\@temptokenb\noexpand\levelchar
+ ##1\noexpand\actualchar{\string\ttfamily\space##1}%
+ \noexpand\doc@handleencap{usage}}%
+ \fi
+ \noexpand\@esphack}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\doc@createspecialmacrolikeindexes#1#2#3{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@temptokena{\space (#2)}%
+ \@temptokenb{#3:}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@nameedef{Code#1Index}##1##2{%
+ \noexpand\@SpecialIndexHelper@##2\noexpand\@nil
+ \noexpand\@bsphack
+ \noexpand\ifdoc@noindex\noexpand\else
+ \ifdoc@toplevel
+ \noexpand\special@index{\noexpand\@gtempa\noexpand\actualchar
+ \string\verb% % to fool emacs highlighting
+ \noexpand\quotechar*\noexpand\verbatimchar
+ \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\encapchar ##1}%
+ \fi
+ \ifx\@nil#3\@nil\else
+ \noexpand\special@index{\the\@temptokenb\noexpand\levelchar
+ \noexpand\@gtempa\noexpand\actualchar
+ \string\verb% % to fool emacs highlighting
+ \noexpand\quotechar*\noexpand\verbatimchar
+ \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+ \noexpand\encapchar ##1}%
+ \fi
+ \noexpand\fi
+ \noexpand\@esphack}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@nameedef{SpecialMain#1Index}##1{%
+ \expandafter\noexpand\csname Code#1Index\endcsname
+ {main}{##1}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@nameedef{Special#1Index}##1{%
+ \noexpand\@SpecialIndexHelper@##1\noexpand\@nil
+ \noexpand\@bsphack
+ \noexpand\ifdoc@noindex\noexpand\else
+ \ifdoc@toplevel
+ \noexpand\doc@providetarget
+ \noexpand\index{\noexpand\@gtempa\noexpand\actualchar
+ \string\verb% % to fool emacs highlighting
+ \noexpand\quotechar*\noexpand\verbatimchar
+ \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+ \ifx\@nil#2\@nil\else \the\@temptokena \fi
+ \noexpand\doc@handleencap{usage}}%
+ \fi
+ \ifx\@nil#3\@nil\else
+ \noexpand\index{\the\@temptokenb\noexpand\levelchar
+ \noexpand\@gtempa\noexpand\actualchar
+ \string\verb% % to fool emacs highlighting
+ \noexpand\quotechar*\noexpand\verbatimchar
+ \noexpand\bslash\noexpand\@gtempa\noexpand\verbatimchar
+ \noexpand\doc@handleencap{usage}}%
+ \fi
+ \noexpand\fi
+ \noexpand\@esphack}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+
+
+
+% \begin{macro}{\doc@createdescribe}
+% \marg{item}
+% \begin{macrocode}
+\def\doc@createdescribe#1{%
+ \@namedef{Describe#1}{%
+% \end{macrocode}
+% Because of the optional argument we have to set
+% |\MakePrivateLetters| already before parsing that (fingers
+% crossed). Otherwise incorrect but quite common usage, such as
+% |\DescribeMacro\foo@bar| will break because the scan for the
+% optional argument will tokenize the following input (i.e., |\foo|
+% in that case) before the |@| sign becomes a letter. As a result
+% |DescribeMacro| would receive only |\foo| as its argument.
+% \begin{macrocode}
+ \begingroup
+ \MakePrivateLetters
+ \@ifnextchar[%]
+ {\doc@describe{#1}}{\doc@describe{#1}[]}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\doc@createenv}
+% \marg{item}\marg{envname}
+% \begin{macrocode}
+\def\doc@createenv#1#2#3{%
+ \@namedef{#3}{%
+ \@ifnextchar[%]
+ {\doc@env{#1}{#2}}{\doc@env{#1}{#2}[]}}%
+% \end{macrocode}
+% Instead of |\let|ting the end of the environment to
+% |\endtrivlist| we use one level of expansion. This way any
+% possible change in that environment (if that ever happens) is
+% properly reflected.
+% \begin{macrocode}
+ \@namedef{end#3}{\endtrivlist}%
+% \expandafter\let\csname end#3\endcsname\endtrivlist
+}
+% \end{macrocode}
+% \end{macro}
+
+
+%
+% \begin{macro}{\@nameedef}
+%
+% \begin{macrocode}
+\def\@nameedef#1{\expandafter\edef\csname #1\endcsname}
+% \end{macrocode}
+% \end{macro}
+
+%
+% \subsection{API creation}
+%
+% The whole user interface is created in one macro call.
+%
+%\begin{verbatim}
+% defaults:
+%
+% idxtype = #3
+% idxgroup = #3s
+% printtype =
+%\end{verbatim}
+
+
+
+% \begin{macro}{\doc@declareerror}
+%
+% \begin{macrocode}
+\def\doc@declareerror#1#2{%
+ \PackageError{doc}{Doc element '#1/#2' already defined?\@gobble}%
+ {There is already a definition for
+ '\string\Print#1Name',\MessageBreak
+ '\string\PrintDescribe#1'
+ or the environment '#2'.\MessageBreak
+ Maybe you are overwriting something by mistake!\MessageBreak
+ Otherwise use '\string\RenewDocElement' instead.}%
+}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\doc@notdeclarederror}
+%
+% \begin{macrocode}
+\def\doc@notdeclarederror#1#2{%
+ \PackageError{doc}{Doc element '#1/#2' unknown}%
+ {I expected an existing definition for
+ '\string\Print#1Name',\MessageBreak
+ '\string\PrintDescribe#1' and
+ the environment '#2' but\MessageBreak
+ not all of them are defined.\MessageBreak
+ Maybe you wanted to use
+ '\string\NewDocElement'?}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{imacro}{\NewDocElement}
+% \oarg{options}\marg{name}\marg{envname}
+%
+% \begin{macrocode}
+\newcommand\NewDocElement[3][]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@ifundefined{Print#2Name}%
+ {\@ifundefined{PrintDescribe#2}%
+ {\@ifundefined{#3}%
+ {\@ifundefined{end#3}%
+ {\@NewDocElement{#1}}%
+ \doc@declareerror
+ }\doc@declareerror
+ }\doc@declareerror
+ }\doc@declareerror
+ {#2}{#3}%
+}
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{imacro}{\RenewDocElement}
+% \oarg{options}\marg{name}\marg{envname}
+%
+% \begin{macrocode}
+\newcommand\RenewDocElement[3][]{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \@ifundefined{Print#2Name}\doc@notdeclarederror
+ {\@ifundefined{PrintDescribe#2}\doc@notdeclarederror
+ {\@ifundefined{#3}\doc@notdeclarederror
+ {\@ifundefined{end#3}\doc@notdeclarederror
+ {\@NewDocElement{#1}}%
+ }%
+ }%
+ }%
+ {#2}{#3}%
+}
+% \end{macrocode}
+% \end{imacro}
+%
+%
+% \begin{macro}{\@NewDocElement}
+% \marg{options}\marg{name}\marg{envname}
+%
+% \begin{macrocode}
+\def\@NewDocElement#1#2#3{%
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \doc@macrolikefalse
+ \doc@topleveltrue
+% \end{macrocode}
+%
+% \fmi{Use 2e interface for \cs{keys\_set:nn} when available}
+% \begin{macrocode}
+ \def\doc@idxtype{#3}%
+ \def\doc@idxgroup{#3s}%
+ \let\doc@printtype\@empty
+ \csname keys_set:nn\endcsname{doc}{#1}%
+% \end{macrocode}
+% \begin{imacro}{\Print...Name}
+% \marg{name}
+% \fmi{extremely messy this with so many \cs{expandafter}s \ldots{}
+% should reimplement in expl3}
+% \begin{macrocode}
+ \ifx\doc@printtype\@empty
+ \@temptokena{}%
+ \else
+ \@temptokena\expandafter{\expandafter
+ \textnormal\expandafter{\expandafter
+ \space\expandafter
+ (\doc@printtype)}}%
+ \fi
+ \@nameedef{Print#2Name}##1{%
+ {\noexpand\MacroFont
+ \ifdoc@macrolike
+ \noexpand\string
+ \fi
+ ##1%
+ \the\@temptokena
+ }}%
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{imacro}{\PrintDescribe...}
+% \marg{name}
+% \begin{macrocode}
+ \expandafter\let\csname PrintDescribe#2\expandafter\endcsname
+ \csname Print#2Name\endcsname
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{imacro}{\SpecialMain...Index}
+% \marg{name}
+% \begin{imacro}{\Special...Index}
+% \marg{name}
+% \begin{macrocode}
+ \edef\doc@expr{%
+ \ifdoc@macrolike
+ \noexpand\doc@createspecialmacrolikeindexes
+ \else
+ \noexpand\doc@createspecialindexes
+ \fi
+ {#2}%
+ }%
+ \expandafter\expandafter\expandafter
+ \doc@expr
+ \expandafter\expandafter\expandafter
+ {\expandafter\doc@idxtype\expandafter}\expandafter
+ {\doc@idxgroup}%
+% \end{macrocode}
+% \end{imacro}
+% \end{imacro}
+%
+% \begin{imacro}{\Describe...}
+% \oarg{options}\marg{name}
+% \begin{macrocode}
+ \doc@createdescribe{#2}%
+% \end{macrocode}
+% \end{imacro}
+%
+% \begin{environment}{\meta{DocElement}}
+% \fmi{can't have formatting in argument -- fix}
+% \oarg{options}\marg{name}
+% \begin{macrocode}
+ \ifdoc@macrolike
+ \doc@createenv{TT}{#2}{#3}%
+ \else
+ \doc@createenv{TF}{#2}{#3}%
+ \fi
+}
+% \end{macrocode}
+% \end{environment}
+% \end{macro}
+
+
+
+
+
+% \subsection{Setting up the default \DOC elements}
+
+% \subsubsection{Macro facilities}
+%
+% Macros get only a single index entry (no index group, no index
+% type) and they do not get any label either when printing in the margin.
+% \begin{macrocode}
+\NewDocElement[macrolike = true ,
+ idxtype = ,
+ idxgroup = ,
+ printtype =
+ ]{Macro}{macro}
+% \end{macrocode}
+
+
+% \begin{macro}{SpecialMainIndex}
+%
+% In \DOC v2 we had \cs{SpecialMainIndex} and
+% \cs{SpecialMainEnvIndex} but now with additional \DOC elements we
+% always add the element name after ``\texttt{Main}'' so this would
+% be \cs{SpecialMainMacroIndex}. We use |\def| not |\let| so any
+% redefinition of |\SpecialMainMacroIndex| will be transparent.
+% \begin{macrocode}
+\def\SpecialMainIndex{\SpecialMainMacroIndex}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{SpecialUsageIndex}
+% \DOC v2 also had \cs{SpecialUsageIndex} which is now called
+% \cs{SpecialMacroIndex} generating the ``usage'' index entry for
+% a macro. Again we provide that as an alias via |\def|.
+%
+% In fact the documentation of \DOC v2 claimed that one can use
+% this for both macros and environments but that was never true as
+% for environments the result was that the first character was
+% dropped in sorting of the index. The correct way is to use
+% \cs{SpecialEnvIndex} for this.
+% \begin{macrocode}
+\def\SpecialUsageIndex{\SpecialMacroIndex}
+% \end{macrocode}
+% \end{macro}
+%
+
+% \begin{macro}{\SpecialIndex}
+% \begin{macrocode}
+\def\SpecialIndex {\CodeMacroIndex{code}}
+% \end{macrocode}
+% \end{macro}
+
+
+%
+% \subsubsection{Environment facilities}
+%
+% Providing documentation support for environments. Here we differ
+% from \DOC V2 by marking the environments with ``(\textit{env.})''
+% when printing the name in the margin.
+% \begin{macrocode}
+\NewDocElement[macrolike = false ,
+ idxtype = env. ,
+ idxgroup = environments ,
+ printtype = \textit{env.}
+ ]{Env}{environment}
+% \end{macrocode}
+%
+%
+%
+% To be able to restore the definition after \pkg{hypdoc} is loaded
+% we better save them here. We only load the package at the end of
+% the preamble, but the user might do this earlier and then chaos
+% is ensured.
+% \begin{macrocode}
+ \let\@@PrintDescribeMacro \PrintDescribeMacro
+ \let\@@PrintDescribeEnv \PrintDescribeEnv
+ \let\@@PrintMacroName \PrintMacroName
+ \let\@@PrintEnvName \PrintEnvName
+ \let\@@SpecialUsageIndex \SpecialUsageIndex
+ \let\@@SpecialEnvIndex \SpecialEnvIndex
+ \let\@@SortIndex \SortIndex
+ \let\@@DescribeMacro \DescribeMacro
+ \let\@@DescribeEnv \DescribeEnv
+% \end{macrocode}
+%
+%
+% \section{Misc additions}
+
+% \begin{imacro}{\cs}
+% \begin{macrocode}
+\DeclareRobustCommand\cs[1]{\texttt{\bslash #1}}
+% \end{macrocode}
+% \cls{amsdtx} has its own definition for \cs{cs} but that now
+% gets overwritten because the class loads \pkg{doc} afterwards. So
+% for now we reinstall it here.
+% \fmi{fix elsewhere}
+% \begin{macrocode}
+\AddToHook{class/amsdtx/after}{%
+ \DeclareRobustCommand\cs[1]{%
+ \@boxorbreak{%
+ \ntt
+ \addbslash#1\@empty
+ \@xp\@xp\@xp\@indexcs\@xp\@nobslash\string#1\@nil
+ }%
+ }%
+ \def\cn{\cs}%
+}
+% \end{macrocode}
+% \end{imacro}
+
+
% We can now finish the \texttt{docstrip} main module.
% \begin{macrocode}
%</package>
@@ -4958,5 +6322,15 @@
%
%
% \Finale
-% \PrintIndex \PrintChanges
+% \PrintChanges
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
+
+^^A Needed for emacs
+^^A
+^^A Local Variables:
+^^A mode: latex
+^^A coding: utf-8-unix
+^^A End:
diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf
index f511483c87..8c2a4a18c6 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 c7480988b4..22c1f69aa0 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -935,7 +935,7 @@
% using*strange@programming<language>
%\end{verbatim}
%
-%\StopEventually{%
+%\MaybeStop{%
%^^A \section{Conclusion}
% \PrintIndex
% \PrintChanges
diff --git a/macros/latex-dev/base/docstrip.ins b/macros/latex-dev/base/docstrip.ins
index e34281fc36..e2187594a4 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
@@ -98,6 +98,7 @@ extension .ins) which are part of the distribution.
\generate{\file{ltxdoc.cls}{\from{ltxdoc.dtx}{class}}
+ \file{ltxdoc.cfg}{\from{ltxdoc.dtx}{cfg}}
}
\generate{\file{doc.sty}{\from{doc.dtx}{package}}
diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf
index 39378c977f..bcfa8a34c7 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 90b7b2e61f..47823e7edf 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 e55805f1e9..5d16c1d5d9 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 d70233eab4..3c95cf30cc 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 ea67cb6fb7..bc884c4db0 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -106,7 +106,7 @@
% they are printed on another installation whereas when using the
% package file they would come out the same on both sites.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Implementation}
diff --git a/macros/latex-dev/base/exscale.ins b/macros/latex-dev/base/exscale.ins
index cfd2c535a7..d202aad7cf 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 4c60fd71d6..e330165065 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 1be2e16cc0..5f8983ed34 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -216,7 +216,7 @@
%
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
diff --git a/macros/latex-dev/base/fix-cm.ins b/macros/latex-dev/base/fix-cm.ins
index 95931970f4..b688cd66cf 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 423e1756aa..3d02f33735 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 a0b79a1b93..2907d5441b 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 a4b872a261..62d3538304 100644
--- a/macros/latex-dev/base/fntguide.tex
+++ b/macros/latex-dev/base/fntguide.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -12,7 +12,7 @@
% 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
+% https://www.latex-project.org/lppl.txt
% and version 1.3c or later is part of all distributions of LaTeX
% version 2008 or later.
%
@@ -33,16 +33,21 @@
\documentclass{ltxguide}[1995/11/28]
-\usepackage{varioref}
+
+\setcounter{totalnumber}{8}
+\setcounter{topnumber}{8}
+
+\usepackage[trace]{fewerfloatpages}
+\usepackage{booktabs,varioref}
\title{\LaTeXe{} font selection}
\author{\copyright~Copyright 1995--2021, \LaTeX\ Project
Team.\thanks{Thanks to Arash Esbati for documenting the
newer NFSS features of 2020}\\
- All rights reserved.}
+ All rights reserved.}
-\date{March 2021}
+\date{December 2021}
\begin{document}
@@ -160,7 +165,7 @@ For more information about \TeX{} and \LaTeX{}, please contact your
local \TeX{} Users Group, or the international \TeX{} Users Group.
Addresses and other details can be found at:
\begin{quote}\small\label{addrs}
- \texttt{http://www.tug.org/lugs.html}
+ \texttt{https://www.tug.org/lugs.html}
\end{quote}
@@ -288,6 +293,9 @@ naming scheme to allow for sensible default substitutions if necessary,
e.g., ``demi-bold'' is normally just another name for ``semi-bold'', so
should get |sb| assigned, etc.
+
+\newpage
+
\NEWdescription{2020/02/02}
The most common values for the font shape are:
\begin{center}
@@ -343,27 +351,29 @@ box warning, for example:
Overfull \hbox (3.80855pt too wide) in paragraph at lines 314--318
[]\OT1/cmr/m/n/10 Normally [] and [] will be iden-ti-cal,
\end{verbatim}
-The author commands for fonts set the five attributes:
-\begin{center}
- \hspace*{-1em}%
- \begin{tabular}{rcl}
- \emph{Author command} & \emph{Attribute}
+The author commands for fonts set the five attributes as shown in table~\vref{tab:attributes}.
+\begin{table}[!tbp]
+ \centering
+ \begin{tabular}{@{}r@{\hspace{3pt}}c@{\hspace{1pt}}c@{}}
+ \toprule
+ \multicolumn{1}{c}{\emph{Author command}} & \emph{Attribute}
& \emph{Value in} |article| \emph{class} \\
+ \midrule
|\textnormal{..}| or |\normalfont| & family & |cmr| \\
& series & |m| \\
- & shape & |n| \\[1pt]
+ & shape & |n| \\ \midrule%[2pt]
|\textrm{..}| or |\rmfamily| & family & |cmr| \\
|\textsf{..}| or |\sffamily| & family & |cmss| \\
|\texttt{..}| or |\ttfamily| & family & |cmtt| \\
|\textmd{..}| or |\mdseries| & series & |m| \\
- |\textbf{..}| or |\bfseries| & series & |bx| \\[1pt]
+ |\textbf{..}| or |\bfseries| & series & |bx| \\ \midrule%[2pt]
|\textit{..}| or |\itshape| & shape & |it| \\
|\textsl{..}| or |\slshape| & shape & |sl| \\
|\textsc{..}| or |\scshape| & shape & |sc| \\
|\textssc{..}| or |\sscshape| & shape & |ssc| \\
|\textsw{..}| or |\swshape| & shape & |sw| \\
- |\textulc{..}| or |\ulcshape| & shape & |ulc| (virtual) $\to$ |n|, |it|, |sl| or |ssc| \\
- |\textup{..}| or |\upshape| & shape & |up| (virtual) $\to$ |n| or |sc| \\[1pt]
+ |\textulc{..}| or |\ulcshape| & shape & |ulc| (virtual) $\to$ |n|, |it|, |sl| or |ssc| \\
+ |\textup{..}| or |\upshape| & shape & | up| (virtual) $\to$ |n| or |sc |\phantom{, , } \\\midrule%[2pt]
|\tiny| & size & |5pt| \\
|\scriptsize| & size & |7pt| \\
|\footnotesize| & size & |8pt| \\
@@ -373,9 +383,11 @@ The author commands for fonts set the five attributes:
|\Large| & size & |14.4pt| \\
|\LARGE| & size & |17.28pt| \\
|\huge| & size & |20.74pt| \\
- |\Huge| & size & |24.88pt|
+ |\Huge| & size & |24.88pt| \\
+ \bottomrule
\end{tabular}
-\end{center}
+ \caption{Author font commands and their effects (article class)}\label{tab:attributes}
+\end{table}
The values used by these commands are determined by the document class,
using the parameters defined in Section~\ref{Sec:text.param}.
@@ -386,16 +398,20 @@ This section does not explain how \LaTeX{} font specifications are
turned into \TeX{} font names. This is described in
Section~\ref{Sec:install}.
+
+\newpage
+
+
\subsection{Selection commands}
The low-level commands used to select a text font are as follows.
\begin{decl}
|\fontencoding| \arg{encoding} \\
- |\fontfamily| \arg{family} \\
- |\fontseries| \arg{series} \\
+ |\fontfamily| \arg{family} \qquad
+ |\fontseries| \arg{series} \qquad
|\fontshape| \arg{shape} \\
- |\fontsize| \arg{size} \arg{baselineskip} \\
+ |\fontsize| \arg{size} \arg{baselineskip} \qquad
|\linespread| \arg{factor}
\end{decl}
@@ -439,14 +455,14 @@ to |\selectfont|.
The current values of the font attributes are held in internal macros.
\begin{decl}
- |\f@encoding| \\
- |\f@family| \\
- |\f@series| \\
- |\f@shape| \\
- |\f@size| \\
+ |\f@encoding| \quad
+ |\f@family| \quad
+ |\f@series| \quad
+ |\f@shape| \quad
+ |\f@size| \quad
|\f@baselineskip| \\
- |\tf@size| \\
- |\sf@size| \\
+ |\tf@size| \quad
+ |\sf@size| \quad
|\ssf@size|
\end{decl}
@@ -482,9 +498,9 @@ specifies:
\end{verbatim}
\begin{decl}
- |\encodingdefault| \\
- |\familydefault| \\
- |\seriesdefault| \\
+ |\encodingdefault| \qquad
+ |\familydefault| \qquad
+ |\seriesdefault| \qquad
|\shapedefault|
\end{decl}
The encoding, family, series and shape of the main body font. By
@@ -493,8 +509,8 @@ default family is |\rmdefault|, this means that changing |\rmdefault|
will change the main body font of the document.
\begin{decl}
- |\rmdefault| \\
- |\sfdefault| \\
+ |\rmdefault| \qquad
+ |\sfdefault| \qquad
|\ttdefault|
\end{decl}
The families selected by |\textrm|, |\rmfamily|, |\textsf|, |\sffamily|,
@@ -502,7 +518,7 @@ The families selected by |\textrm|, |\rmfamily|, |\textsf|, |\sffamily|,
|cmtt|.
\begin{decl}
- |\bfdefault| \\
+ |\bfdefault| \qquad
|\mddefault|
\end{decl}
The series selected by |\textbf|, |\bfseries|, |\textmd| and
@@ -516,12 +532,12 @@ the fonts provided by |psnfss|) is to define silent substitutions from
and the |ssub| size function, see Section~\ref{sec:sizefunct}.
\begin{decl}
- |\itdefault| \\
- |\sldefault| \\
- |\scdefault| \\
- |\sscdefault| \\
+ |\itdefault| \qquad
+ |\sldefault| \qquad
+ |\scdefault| \qquad
+ |\sscdefault| \qquad
|\swdefault| \\
- |\ulcdefault| \\
+ |\ulcdefault| \qquad
|\updefault|
\end{decl}
\NEWfeature{2020/02/02}
@@ -611,6 +627,8 @@ This declaration is useful for setting up commands like |\rm| to behave
as they did in \LaTeX~2.09. We strongly urge you \emph{not} to misuse
this declaration to invent new font commands.
+\newpage
+
The following example defines |\it| to produce the italic shape of the
main document font if used in text and to switch to the font that would
normally be produced by the math alphabet |\mathit| if used in a
@@ -714,13 +732,13 @@ selected indirectly through symbol commands like |\oplus|.
Section~\ref{Sec:math.commands} explains how to define symbol commands.
\begin{decl}
- |\mathnormal{<math>}| \\
- |\mathcal{<math>}| \\
- |\mathrm{<math>}| \\
- |\mathbf{<math>}| \\
- |\mathsf{<math>}| \\
+ |\mathnormal{<math>}| \quad
+ |\mathcal{<math>}| \quad
+ |\mathbf{<math>}| \quad
|\mathit{<math>}| \\
- |\mathtt{<math>}|
+ |\mathrm{<math>}| \qquad
+ |\mathsf{<math>}| \qquad
+ |\mathtt{<math>}|
\end{decl}
Each math alphabet is a command which can only be used inside math mode.
For example, |$x + \mathsf{y} + \mathcal{Z}$| produces
@@ -799,6 +817,8 @@ Checks that \m{math-alph} has been declared as a math alphabet,
\m{version} is a known math version and \m{encoding} is a known encoding
scheme.
+\newpage
+
This example defines |\baz| for the `normal' math version only:
\begin{verbatim}
\SetMathAlphabet{\baz}{normal}{OT1}{cmss}{m}{n}
@@ -868,6 +888,8 @@ alphabet with command \m{math-alph} in \emph{all} math versions.
Checks that the command \m{math-alph} is either already a math alphabet
command or is undefined; and that \m{sym-font} is a symbol font.
+\newpage
+
Example:
\begin{verbatim}
\DeclareSymbolFontAlphabet{\mathrm}{operators}
@@ -928,6 +950,8 @@ Example:
\DeclareMathSymbol{\alphld}{\mathalpha}{AMSb}{"0C}
\end{verbatim}
+\newpage
+
\begin{decl}
|\DeclareMathDelimiter| \arg{cmd} \arg{type}
\arg{sym-font-1} \arg{slot-1}\\
@@ -1021,6 +1045,7 @@ Example:
This section explains how \LaTeX's font attributes are turned into
\TeX{} font specifications.
+
\subsection{Font definition files}
\NEWdescription{1997/12/01}
@@ -1043,6 +1068,8 @@ and font substitutions are made.
The declarations in the font definition file are responsible for telling
\LaTeX{} how to load fonts for that encoding/family combination.
+
+
\subsection{Font definition file commands}
\emph{Note}: A font definition file should contain only commands from
@@ -1056,7 +1083,11 @@ of a document.
|\ProvidesFile{<file-name>}[<release-info>]|
\end{decl}
The file should announce itself with a |\ProvidesFile| command, as
-described in \emph{\clsguide}. For example:
+described in \emph{\clsguide}.
+
+\newpage
+
+For example:
\begin{verbatim}
\ProvidesFile{t1ptm.fd}[1994/06/01 Adobe Times font definitions]
\end{verbatim}
@@ -2017,12 +2048,17 @@ glyphs 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).
+\newpage
+
The following tables show the macros available. The next commands are
`constructed' accents and are built via \TeX{} macros:
\begin{center}
\begin{tabular}[t]{@{}ll}
\verb*|\capitalcedilla A| & \capitalcedilla A \\
\verb*|\capitalogonek A| & \capitalogonek A \\
+ \end{tabular}
+ \quad
+ \begin{tabular}[t]{@{}ll}
\verb*|\textcircled a| & \textcircled a
\end{tabular}
\end{center}
@@ -2052,12 +2088,21 @@ show the slot number:
\end{tabular}
\end{center}
-Table~\vref{tab:textcomp} contains macros to access text symbols. Again,
+Table~\vref{tab:textcomp}
+contains the full list of commands to access the text symbols.
+%
+% Tables~\vrefrange{tab:ts1-subset-always}{tab:ts1-subset-9-disable}
+% contain the commands to access the text symbols.
+%
+Again,
the numbers are the slots in the encoding.
-\begin{table}
-\centering\footnotesize
+\iftrue
+\begin{table}[!tp]
+ \centering\footnotesize
+ \renewcommand\arraystretch{1.07}
\begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
\verb|\textcapitalcompwordmark| & \textcapitalcompwordmark & 23 \\
\verb|\textascendercompwordmark| & \textascendercompwordmark & 31 \\
\verb|\textquotestraightbase| & \textquotestraightbase & 13 \\
@@ -2112,9 +2157,11 @@ the numbers are the slots in the encoding.
\verb|\textbullet| & \textbullet & 136 \\
\verb|\textcelsius| & \textcelsius & 137 \\
\verb|\textdollaroldstyle| & \textdollaroldstyle & 138 \\
- \verb|\textcentoldstyle| & \textcentoldstyle & 139
+ \verb|\textcentoldstyle| & \textcentoldstyle & 139 \\
+ \bottomrule
\end{tabular}\qquad
\begin{tabular}[t]{lp{1.5em}l}
+ \toprule
\verb|\textflorin| & \textflorin & 140 \\
\verb|\textcolonmonetary| & \textcolonmonetary & 141 \\
\verb|\textwon| & \textwon & 142 \\
@@ -2168,12 +2215,371 @@ the numbers are the slots in the encoding.
\verb|\textthreequarters| & \textthreequarters & 190 \\
\verb|\texteuro| & \texteuro & 191 \\
\verb|\texttimes| & \texttimes & 214 \\
- \verb|\textdiv| & \textdiv & 246
+ \verb|\textdiv| & \textdiv & 246 \\
+ \null \\
+ \bottomrule
+ \end{tabular}
+ \caption{Text symbols formerly from the \textsf{textcomp} package}
+ \label{tab:textcomp}
+\end{table}
+
+\fi
+
+The |TS1| encoding contains a rich set of symbols which means that
+several symbols are only available in a few \TeX{} fonts and some, such
+as the capital accents, not available at all but developed as part of
+the reference font implementation. In reality, many existing fonts
+don't provide a full set of glyphs defined in |TS1| encoding and the
+question arises: ``Which glyphs of the |TS1| encoding are implemented by
+which font?''
+
+\NEWfeature{2021/06/01}
+Fonts can be ordered in sub-encodings with the |\DeclareEncodingSubset|
+macro:
+\begin{decl}
+ |\DeclareEncodingSubset| \arg{encoding}
+ \arg{font family}
+ \arg{subset number}
+\end{decl}
+The macro takes 3 mandatory arguments: An \m{encoding} for which a
+subsetting is wanted (currently only |TS1|), the \m{font family} for
+which we declare the subset and finally the \m{subset number} between
+|0| (all of the encoding is supported) and |9| (many glyphs are
+missing). Hence, it is assumed that some symbols are always available
+by all fonts and each sub-encoding defines macros which become
+unavailable (i.e., they are not provided in the sub-encoding with that
+number and all sub-encodings with higher numbers.)
+
+\begin{table}[tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textquotestraightbase| & \textquotestraightbase & 13 \\
+ \verb|\textquotestraightdblbase| & \textquotestraightdblbase & 18 \\
+ \verb|\textcapitalcompwordmark| & \textcapitalcompwordmark & 23 \\
+ \verb|\textascendercompwordmark| & \textascendercompwordmark & 31 \\
+ \verb|\textdollar| & \textdollar & 36 \\
+ \verb|\textquotesingle| & \textquotesingle & 39 \\
+ \verb|\textasteriskcentered| & \textasteriskcentered & 42 \\
+ \verb|\textdagger| & \textdagger & 132 \\
+ \verb|\textdaggerdbl| & \textdaggerdbl & 133 \\
+ \verb|\textperthousand| & \textperthousand & 135 \\
+ \verb|\textbullet| & \textbullet & 136 \\
+ \verb|\texttrademark| & \texttrademark & 151 \\
+ \verb|\textcent| & \textcent & 162 \\
+ \verb|\textsterling| & \textsterling & 163 \\
+ \verb|\textyen| & \textyen & 165 \\
+ \verb|\textbrokenbar| & \textbrokenbar & 166 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textsection| & \textsection & 167 \\
+ \verb|\textcopyright| & \textcopyright & 169 \\
+ \verb|\textordfeminine| & \textordfeminine & 170 \\
+ \verb|\textlnot| & \textlnot & 172 \\
+ \verb|\textregistered| & \textregistered & 174 \\
+ \verb|\textdegree| & \textdegree & 176 \\
+ \verb|\textpm| & \textpm & 177 \\
+ \verb|\textparagraph| & \textparagraph & 182 \\
+ \verb|\textperiodcentered| & \textperiodcentered & 183 \\
+ \verb|\textordmasculine| & \textordmasculine & 186 \\
+ \verb|\textonequarter| & \textonequarter & 188 \\
+ \verb|\textonehalf| & \textonehalf & 189 \\
+ \verb|\textthreequarters| & \textthreequarters & 190 \\
+ \verb|\texttimes| & \texttimes & 214 \\
+ \verb|\textdiv| & \textdiv & 246 \\
+ \null \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols available in all \texttt{TS1} sub-encodings}
+ \label{tab:ts1-subset-always}
+\end{table}
+
+
+
+\begin{table}[!tbp]
+ \centering
+ \begin{tabular}[t]{@{}lll@{}}
+ \toprule
+ \verb*|\textcircled| & \textcircled{} & acc \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbol unavailable in \texttt{TS1} sub-encoding \texttt{1}
+ and higher}
+ \label{tab:ts1-subset-1-disable}
+\end{table}
+
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\capitalcedilla| & \capitalcedilla{} & acc \\
+ \verb|\capitalogonek| & \capitalogonek{} & acc \\
+ \verb|\capitalgrave| & \capitalgrave{} & 0 \\
+ \verb|\capitalacute| & \capitalacute{} & 1 \\
+ \verb|\capitalcircumflex| & \capitalcircumflex{} & 2 \\
+ \verb|\capitaltilde| & \capitaltilde{} & 3 \\
+ \verb|\capitaldieresis| & \capitaldieresis{} & 4 \\
+ \verb|\capitalhungarumlaut| & \capitalhungarumlaut{} & 5 \\
+ \verb|\capitalring| & \capitalring{} & 6 \\
+ \verb|\capitalcaron| & \capitalcaron{} & 7 \\
+ \verb|\capitalbreve| & \capitalbreve{} & 8 \\
+ \verb|\capitalmacron| & \capitalmacron{} & 9 \\
+ \verb|\capitaldotaccent| & \capitaldotaccent{} & 10 \\
+ \verb|\capitaltie| & \capitaltie{} & 27 \\
+ \verb|\newtie| & \newtie{} & 28 \\
+ \verb|\capitalnewtie{}| & \capitalnewtie{} & 29 \\
+ \verb|\textdblhyphen| & \textdblhyphen & 45 \\
+ \verb|\textzerooldstyle| & \textzerooldstyle & 48 \\
+ \verb|\textoneoldstyle| & \textoneoldstyle & 49 \\
+ \verb|\texttwooldstyle| & \texttwooldstyle & 50 \\
+ \verb|\textthreeoldstyle| & \textthreeoldstyle & 51 \\
+ \verb|\textfouroldstyle| & \textfouroldstyle & 52 \\
+ \verb|\textfiveoldstyle| & \textfiveoldstyle & 53 \\
+ \verb|\textsixoldstyle| & \textsixoldstyle & 54 \\
+ \verb|\textsevenoldstyle| & \textsevenoldstyle & 55 \\
+ \verb|\texteightoldstyle| & \texteightoldstyle & 56 \\
+ \verb|\textnineoldstyle| & \textnineoldstyle & 57 \\
+ \verb|\textmho| & \textmho & 77 \\
+ \verb|\textbigcircle| & \textbigcircle & 79 \\
+ \verb|\textlbrackdbl| & \textlbrackdbl & 91 \\
+ \verb|\textrbrackdbl| & \textrbrackdbl & 93 \\
+ \verb|\textasciigrave| & \textasciigrave & 96 \\
+ \verb|\textborn| & \textborn & 98 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textdivorced| & \textdivorced & 99 \\
+ \verb|\textdied| & \textdied & 100 \\
+ \verb|\textleaf| & \textleaf & 108 \\
+ \verb|\textmarried| & \textmarried & 109 \\
+ \verb|\textmusicalnote| & \textmusicalnote & 110 \\
+ \verb|\texttildelow| & \texttildelow & 126 \\
+ \verb|\textdblhyphenchar| & \textdblhyphenchar & 127 \\
+ \verb|\textasciibreve| & \textasciibreve & 128 \\
+ \verb|\textasciicaron| & \textasciicaron & 129 \\
+ \verb|\textacutedbl| & \textacutedbl & 130 \\
+ \verb|\textgravedbl| & \textgravedbl & 131 \\
+ \verb|\textdollaroldstyle| & \textdollaroldstyle & 138 \\
+ \verb|\textcentoldstyle| & \textcentoldstyle & 139 \\
+ \verb|\textnaira| & \textnaira & 143 \\
+ \verb|\textguarani| & \textguarani & 144 \\
+ \verb|\textpeso| & \textpeso & 145 \\
+ \verb|\textrecipe| & \textrecipe & 147 \\
+ \verb|\textpertenthousand| & \textpertenthousand & 152 \\
+ \verb|\textpilcrow| & \textpilcrow & 153 \\
+ \verb|\textbaht| & \textbaht & 154 \\
+ \verb|\textdiscount| & \textdiscount & 156 \\
+ \verb|\textopenbullet| & \textopenbullet & 158 \\
+ \verb|\textservicemark| & \textservicemark & 159 \\
+ \verb|\textlquill| & \textlquill & 160 \\
+ \verb|\textrquill| & \textrquill & 161 \\
+ \verb|\textasciidieresis| & \textasciidieresis & 168 \\
+ \verb|\textcopyleft| & \textcopyleft & 171 \\
+ \verb|\textcircledP| & \textcircledP & 173 \\
+ \verb|\textasciimacron| & \textasciimacron & 175 \\
+ \verb|\textasciiacute| & \textasciiacute & 180 \\
+ \verb|\textreferencemark| & \textreferencemark & 184 \\
+ \verb|\textsurd| & \textsurd & 187 \\
+ \null \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{2}
+ and higher}
+ \label{tab:ts1-subset-2-disable}
+\end{table}
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|textlangle| & \textlangle & 60 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textrangle| & \textrangle & 62 \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{3}
+ and higher}
+ \label{tab:ts1-subset-3-disable}
+\end{table}
+
+
+Thus, the symbols that are available in sub-encoding $x$ are the symbols
+in table~\ref{tab:ts1-subset-always} (always available) and the symbols
+that only become unavailable in sub-encodings $> x$. The tables
+\vrefrange{tab:ts1-subset-1-disable}{tab:ts1-subset-9-disable} show the symbols that
+become unavailable in the different sub-encodings. Again, the numbers
+are the slots in the |TS1| encoding, |acc| indicates a `constructed'
+accent.
+
+\newpage
+
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textleftarrow| & \textleftarrow & 24 \\
+ \verb|\textrightarrow| & \textrightarrow & 25 \\
+ \verb|\textuparrow| & \textuparrow & 94 \\
+ \verb|\textdownarrow| & \textdownarrow & 95 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textcolonmonetary| & \textcolonmonetary & 141 \\
+ \verb|\textwon| & \textwon & 142 \\
+ \verb|\textlira| & \textlira & 146 \\
+ \verb|\textdong| & \textdong & 150 \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{4}
+ and higher}
+ \label{tab:ts1-subset-4-disable}
+\end{table}
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textnumero| & \textnumero & 155 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textestimated| & \textestimated & 157 \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{5}
+ and higher}
+ \label{tab:ts1-subset-5-disable}
+\end{table}
+
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textflorin| & \textflorin & 140 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textcurrency| & \textcurrency & 164 \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{6}
+ and higher}
+ \label{tab:ts1-subset-6-disable}
+\end{table}
+
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textfractionsolidus| & \textfractionsolidus & 47 \\
+ \verb|\textminus| & \textminus & 61 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textohm| & \textohm & 87 \\
+ \verb|\textmu| & \textmu & 181 \\
+ \bottomrule
\end{tabular}
-\caption{Text symbols formerly from the \textsf{textcomp} package}
-\label{tab:textcomp}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{7}
+ and higher}
+ \label{tab:ts1-subset-7-disable}
\end{table}
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textblank| & \textblank & 32 \\
+ \verb|\textinterrobang| & \textinterrobang & 148 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\textinterrobangdown| & \textinterrobangdown & 149 \\
+ \null \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{8}
+ and higher}
+ \label{tab:ts1-subset-8-disable}
+\end{table}
+
+
+\begin{table}[!tbp]
+ \centering\footnotesize
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\texttwelveudash| & \texttwelveudash & 21 \\
+ \verb|\textthreequartersemdash| & \textthreequartersemdash & 22 \\
+ \verb|\textbardbl| & \textbardbl & 134 \\
+ \verb|\textcelsius| & \textcelsius & 137 \\
+ \bottomrule
+ \end{tabular}\qquad
+ \begin{tabular}[t]{@{}lp{1.5em}l@{}}
+ \toprule
+ \verb|\texttwosuperior| & \texttwosuperior & 178 \\
+ \verb|\textthreesuperior| & \textthreesuperior & 179 \\
+ \verb|\textonesuperior| & \textonesuperior & 185 \\
+ \null \\
+ \bottomrule
+ \end{tabular}
+ \caption{Symbols unavailable in \texttt{TS1} sub-encoding \texttt{9}}
+ \label{tab:ts1-subset-9-disable}
+\end{table}
+
+
+
+As an example,
+%\begin{verbatim}
+ \verb=\DeclareEncodingSubset{TS1}{foo}{5}=
+%\end{verbatim}
+indicates that the font family |foo| contains the always available
+symbols (table~\vref{tab:ts1-subset-always}) and the ones disabled
+in sub-encodings 6--9, i.e.,
+tables~\vrefrange{tab:ts1-subset-6-disable}{tab:ts1-subset-9-disable}.
+
+As these days many font families are set up to end in |-LF| (lining
+figures), |-OsF| (oldstyle figures), etc. the declaration supports a
+shortcut: if the \m{font family} name ends in |-*| then the star gets
+replaced by these common ending, e.g.,
+\begin{verbatim}
+ \DeclareEncodingSubset{TS1}{Alegreya-*}{2}
+\end{verbatim}
+is the same as writing
+\begin{verbatim}
+ \DeclareEncodingSubset{TS1}{Alegreya-LF} {2}
+ \DeclareEncodingSubset{TS1}{Alegreya-OsF} {2}
+ \DeclareEncodingSubset{TS1}{Alegreya-TLF} {2}
+ \DeclareEncodingSubset{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.
+
+
+
+
\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 581cfeb789..06af8feefd 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -164,7 +164,7 @@
% \end{quote}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The \texttt{docstrip} modules}
%
diff --git a/macros/latex-dev/base/format.ins b/macros/latex-dev/base/format.ins
index eece2f57ef..88d33d3c4e 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
@@ -88,7 +88,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) 2015-2021
+Copyright (C) 2015-2022
The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
@@ -174,6 +174,7 @@ the system are in the document `cfgguide.tex'.
\from{lterror.dtx}{2ekernel}
\from{ltpar.dtx}{2ekernel}
\from{ltpara.dtx}{2ekernel} % L3 layer module
+ \from{ltmeta.dtx}{2ekernel} % L3 layer module
\from{ltspace.dtx}{2ekernel}
\from{ltlogos.dtx}{2ekernel}
\from{ltfiles.dtx}{2ekernel}
@@ -203,6 +204,7 @@ the system are in the document `cfgguide.tex'.
\from{ltbibl.dtx}{2ekernel}
\from{ltpage.dtx}{2ekernel}
\from{ltclass.dtx}{2ekernel,tracerollback}
+ \from{ltkeys.dtx}{2ekernel} % L3 layer module
\from{ltfilehook.dtx}{2ekernel} % L3 layer module
\from{ltshipout.dtx}{2ekernel} % L3 layer module
\from{ltoutput.dtx}{2ekernel}
diff --git a/macros/latex-dev/base/graphpap.dtx b/macros/latex-dev/base/graphpap.dtx
index cc9f4da3cb..78bb688f83 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -65,7 +65,7 @@
% The default value of \emph{N} is 10.
% The arguments must all be integers.
%
-% \StopEventually
+% \MaybeStop
%
% First, we define three counters. The first two are defined
% as raw TeX counters since multiplication and division must be
diff --git a/macros/latex-dev/base/graphpap.ins b/macros/latex-dev/base/graphpap.ins
index 65156ad917..d82cbd6670 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 94407af25e..f0a6a4a89c 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 8257396f81..bc0dd71021 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 acb5cf1967..0bf54b619a 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -164,7 +164,7 @@
% With \meta{test} as above, repeatedly executes \meta{while clause}
% while the test remains true.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Implementation}
%
diff --git a/macros/latex-dev/base/ifthen.ins b/macros/latex-dev/base/ifthen.ins
index 42e1d3f5d9..88047e94f0 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 9477b74355..c304cd4801 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 1b8691d30f..e056f8ffd7 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-2021
+% Copyright (C) 1993-2022
% LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -379,8 +379,8 @@
% as these commands haven't been available in \textsf{inputenc} distributed
% with older releases of \LaTeX{}.
%
-
-% \StopEventually{}
+%
+% \MaybeStop{}
%
% \section{Announcing the files}
%
diff --git a/macros/latex-dev/base/inputenc.ins b/macros/latex-dev/base/inputenc.ins
index 920a585bff..adacf9efce 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 a358befe3a..96d79b25d6 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 da2d7dbceb..0821b0e4f0 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf
index 69f63c0b69..54d2c31952 100644
--- a/macros/latex-dev/base/lamport-manual.pdf
+++ b/macros/latex-dev/base/lamport-manual.pdf
Binary files differ
diff --git a/macros/latex-dev/base/latex209.dtx b/macros/latex-dev/base/latex209.dtx
index bf92f8ef1e..768f7237a5 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -166,7 +166,7 @@
% \changes{v0.11}{1994/01/21}{Split package into head and tail.}
% \changes{v0.23}{1994/05/11}{Added bezier option.}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Driver}
%
diff --git a/macros/latex-dev/base/latex209.ins b/macros/latex-dev/base/latex209.ins
index 33ebc2488c..f530347a3c 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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
deleted file mode 100644
index 9787da6ce8..0000000000
--- a/macros/latex-dev/base/latexchanges.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex-dev/base/latexchanges.tex b/macros/latex-dev/base/latexchanges.tex
deleted file mode 100644
index 933ea48ddb..0000000000
--- a/macros/latex-dev/base/latexchanges.tex
+++ /dev/null
@@ -1,1025 +0,0 @@
-% \iffalse meta-comment
-%
-% Copyright (C) 2015-2021
-% The LaTeX Project and any individual authors listed elsewhere
-% in this file.
-%
-% This file is part of the LaTeX base system.
-% -------------------------------------------
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2008 or later.
-%
-% This file has the LPPL maintenance status "maintained".
-%
-% The list of all files belonging to the LaTeX base distribution is
-% given in the file `manifest.txt'. See also `legal.txt' for additional
-% information.
-%
-% The list of derived (unpacked) files belonging to the distribution
-% and covered by LPPL is defined by the unpacking scripts (with
-% extension .ins) which are part of the distribution.
-%
-% \fi
-% Filename: latexchanges.tex
-
-\NeedsTeXFormat{LaTeX2e}
-
-\documentclass{ltxguide}
-
-\usepackage[T1]{fontenc}
-
-\usepackage{url}
-
-\title{Changes to the \LaTeXe{} format}
-
-\author{\copyright~Copyright 2015--2021, \LaTeX\ Project Team.\\
- All rights reserved.}
-
-\date{2021-06-08}
-
-% a few commands from doc
-\newcommand\Lpack[1]{\mbox{\textsf{#1}}}
-\newcommand\DescribeMacro[1]{\texttt{\string#1}}
-
-\newcommand\pkg[1]{\texttt{#1}}
-\newcommand\cs[1]{\texttt{\textbackslash #1}}
-
-\makeatletter % -- provide command introduced in new release
- % so this typesets with an old format
-
-\DeclareTextCommandDefault\textcommabelow[1]
- {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
- \hbox{\check@mathfonts\fontsize\ssf@size\z@
- \math@fontsfalse\selectfont,}\hidewidth}\egroup}
-
-\makeatother
-
-
-
-\ifx\href\undefined
- \newcommand\ghissue[1]{github #1}
- \newcommand\gnatsissue[1]{gnats #1}
- \newcommand\ltnewsissue[1]{\LaTeX\ News~#1}
- \newcommand\sxanswer[1]{\url{https://tex.stackexchange.com\slash a\slash #1}}
- \newcommand\sxquestion[1]{\url{https://tex.stackexchange.com\slash q\slash #1}}
-\else
- \newcommand\ghissue[1]{%
- \href{https://github.com/latex3/latex2e/issues/#1}{github #1}}
- \newcommand\gnatsissue[1]{%
- \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=latex/#1}{gnats #1}}
- \newcommand\ltnewsissue[1]{%
- \href{https://www.latex-project.org/news/latex2e-news/ltnews#1.pdf}{\LaTeX\ News~#1}}
- \newcommand\sxanswer[1]{%
- \url{https://tex.stackexchange.com/a/#1}}
- \newcommand\sxquestion[1]{%
- \url{https://tex.stackexchange.com/q/#1}}
-\fi
-
-
-\setcounter{tocdepth}{1} % don't show subsections
-
-
-\begin{document}
-
-\maketitle
-
-\begin{abstract}
-This document describes changes that were made to the
-\LaTeX\ format since the 2014-05-01 \LaTeX\ releases.
-
-
-As announced in \ltnewsissue{22}, the 2015 \LaTeX{} release adopts a new
-policy. Improvements and bug fixes will be made to the format sources,
-with the \Lpack{latexrelease} package being available to revert
-changes to use definitions from an earlier format.
-
-As a summary of changes for a main release will always be available in
-\LaTeX\ News, detailed changes are not repeated in this document,
-but changes in any patch releases will be listed in more
-detail here.
-
-More detailed change logs are available as
-\texttt{changes.txt} in the base distribution, and full code
- differences may be browsed via the code repository on GitHub
-see for example
-\url{https://github.com/latex3/latex2e/commits/master}.
-\end{abstract}
-
-\tableofcontents
-
-\newpage
-
-%\section{Introduction}
-
-\section{Changes introduced in 2021-06-01 patch~1}
-
-A further refinement to the handling of ``raw'' option lists added
-in the last release, see \ghissue{508}.
-
-Fixes an issue with rollback when \pkg{latexrelease} is loaded by some
-other package (as done for \texttt{platex} (\ghissue{577}).
-
-First aid for \pkg{ulem} and \pkg{varwidth} got added to help them
-along until they get corrected. \pkg{ulem} has a problem with the
-improved definition of \cs{hspace} and \pkg{varwidth} chokes on a
-newly introduced glue item in vertical lists, which is needed for
-paragraph hook handling (\ghissue{583}).
-
-
-\section{Changes introduced in 2021-06-01}
-
-The focus of this release is to provide further important building
-blocks for the future production of reliable tagged PDF output. Many
-other improvements have been made. Please see \ltnewsissue{33} for an
-overview of the new features and the change log in
-\texttt{changes.txt} for a more detailed list of individual changes.
-
-\section{Changes introduced in 2020-10-01 patch~4}
-
-This patch fixed two bugs in the hook management: if debugging for the
-L3 programming layer was turned on it reported inconsistent use of
-local/global variables. This was a spurious warning but nevertheless
-disconcerting (\ghissue{463}). The other bug was more serious, in some
-situations a wrong value of \verb=\CurrentFile= inside of file-related hooks
-could lead to errors (\ghissue{464}).
-
-We also added the documentation file \texttt{usrguide3.pdf} which
-will become the main home for documenting new features of \LaTeX. At
-this point in time it covers the \Lpack{xparse} functionality that has
-been added to the kernel.
-
-\section{Changes introduced in 2020-10-01 patch~3}
-
-This patch fixed some rollback issues that prevented successful
-rollback to other release levels in some cases. It also fixed an issue
-with file hooks involving files with explicit paths (\ghissue{422}).
-
-One important change was to handle hook declarations done in the
-document preamble in a special way, e.g., those done with
-\verb=\AtBeginDocument=. They are now always executed last and are not
-subject to the normal code sorting for hooks, because they are nearly always
-needed to overwrite earlier settings made in packages.
-
-Finally, the NFSS series handling was slightly changed to
-automatically drop surplus ``\texttt{m}''s from series specifications
-when needed (and warn about them when encountered), e.g.,
-``\texttt{mc}'' automatically becomes ``\texttt{c}'' which is the
-official NFSS name for a \emph{medium compact} series (\ghissue{453}).
-This was done to improve the fix in 2020-02-02 PL~5.
-
-\section{Changes introduced in 2020-10-01 patch~2}
-
-This patch fixed the passing of options to packages and classes when
-they are stored in a special place (denoted by \verb=\input@path=)
-instead of their normal location (\ghissue{414}). In that case the
-options got lost.
-
-\section{Changes introduced in 2020-10-01 patch~1}
-
-This patch fixed a file handling issue: to allow for spaces in file
-names quotes were used but this upsets Bib\TeX{} (\ghissue{400}). In
-addition, two rollback issues got corrected.
-
-\section{Changes introduced in 2020-10-01}
-
-Major enhancements in this release include pre-loading of the
-\Lpack{xparse} package for producing document-level commands with more
-complicated argument signatures and the new hook management system for
-\LaTeX{} documented in \texttt{lthooks-doc.pdf},
-\texttt{ltfilehook-doc.pdf} and \texttt{ltshipout-doc.pdf}.
-
-In addition there have been many smaller fixes and enhancements.
-Please see \ltnewsissue{32} for an overview of the new features and
-the change log in \texttt{changes.txt} for a more detailed list of
-individual changes.
-
-\section{Changes introduced in 2020-02-02 patch~5}
-
-The patch~4 dropped a bit too much in certain situations, e.g., it
-changed a series value of \texttt{semibold} (as used by
-\texttt{autoinst}) to \texttt{seibold}, rendering it useless. So we
-now only correct series values if they are a member of the
-following list: \texttt{ulm}, \texttt{elm}, \texttt{lm}, \texttt{slm},
-\texttt{mm}, \texttt{sbm}, \texttt{bm}, \texttt{ebm}, \texttt{ubm},
-\texttt{muc}, \texttt{mec}, \texttt{mc}, \texttt{msc}, \texttt{msx},
-\texttt{mx}, \texttt{mex} or \texttt{mux}. Here we assume that people
-intended to follow the NFSS convention but somehow got it wrong. So we
-drop one ``m'' and also add a warning that the
-\verb=\DeclareFontShape= declaration in question should be updated
-(\ghissue{293}).
-
-
-\section{Changes introduced in 2020-02-02 patch~4}
-
-In some cases the \texttt{filecontents} environment was opening the
-file for writing without quoting it, so that files with spaces failed
-(\ghissue{284}).
-
-Ensure that \verb=\DeclareFontShape= drops surplus ``m'' in situations
-where an \texttt{.fd} incorrectly specifies \texttt{mc} instead of
-\texttt{c}, etc.\ (\ghissue{289}).
-
-\section{Changes introduced in 2020-02-02 patch~3}
-
-Support the following scenario:
-\begin{verbatim}
-\fontfamily{ptm}\selectfont text \textbf{\sffamily bold sans text}
-\end{verbatim}
-The default bold series for \texttt{ptm} is \texttt{b} so
-\verb=\textbf= switches to that. The \verb=\sffamily= then tried to
-find \texttt{OT1/cmss/b/n} which doesn't exist instead of first
-altering the series default to use \texttt{bx} as needed for Computer
-Modern Sans Serif. This has now been corrected (\ghissue{277}).
-
-
-\section{Changes introduced in 2020-02-02 patch~2}
-
-Correct \verb=\capitalacute=, etc.\ so that they work in
-\texttt{tabbing} (\ghissue{271}). Provide \verb=\@defaultfamilyhook= to
-support CJK packages (\ghissue{269}). Provide a list of \texttt{fontenc}
-loads with their options in \verb=\@fontenc@load@list= so that Babel
-can determine the right \verb=\latinencoding= value (\ghissue{273}).
-
-
-\section{Changes introduced in 2020-02-02 patch~1}
-
-Fixed a misspelled command name that caused trouble (\ghissue{264}). Make
-\texttt{textcomp} package issue only info messages about glyph
-substitutions (\ghissue{262}) and warn if it attempts to run in an old format (\ghissue{260}).
-
-\section{Changes introduced in 2020-02-02}
-
-Major enhancements in this release include pre-loading \Lpack{expl3}
-to improve startup times, especially with Lua\TeX\ and Xe\TeX, and
-extra features in the font selection mechanism. Please see
-\ltnewsissue{31} for an overview of the new features and the change
-log in \texttt{changes.txt} for a more detailed list of individual
-changes.
-
-
-\section{Changes introduced in 2019-10-01 patch~3}
-
-Further fixes to the handling of filenames, expand macros (and
-\verb|\jobname| \emph{before} removing \verb|"|, not after.
-
-\section{Changes introduced in 2019-10-01 patch~2}
-
-Further fixes to the handling of filenames, \ghissue{204}: non-ascii
-filenames and filenames with spaces and multiple dots should now work
-in \verb|\includegraphics|.
-
-Reclassify some luatex callbacks. Other fixes for Issues raised:
-\ghissue{198}, \ghissue{201}, \ghissue{202}, \ghissue{205}.
-
-\section{Changes introduced in 2019-10-01 patch~1}
-
-Adjustments to \verb|\set@curr@file|, and \verb|\@extracolsep|.
-
-Added missing \verb=\else= branch in \texttt{nfssfont} so that
-\verb=\action= is executed if provided.
-
-\section{Changes introduced in 2019-10-01}
-
-Introduced \LaTeX\texttt{-dev} formats for pre testing future \LaTeX{}
-releases. Now there's a \texttt{latex-base-dev} package on CTAN which
-contains a pre-release of the \LaTeXe{} kernel and both \TeX Live and
-MiK\TeX{} include the standard \LaTeX{} executables (\texttt{pdflatex},
-\texttt{lualatex}, etc.) with \texttt{-dev} appended, which use the
-pre-release format.
-
-The handling of Unicode characters was improved by making them safe
-inside \verb|\ref|s and \verb|\label|s, by using \verb|\ifincsname|
-to make these characters safe in these contexts (\ghissue{95}).
-
-In line with the better handling of Unicode characters, file names
-can now contain any Unicode character plus spaces, as these cases
-are now correctly handled by the kernel.
-
-An optional argument was added to the \texttt{filecontents} environment,
-to which a comma-separated list of options can be given. The options
-include \texttt{overwrite} (or \texttt{force}), \texttt{nosearch}, and
-\texttt{noheader} (which has the same effect as the starred form of the
-environment). The environment is now allowed anywhere in the document.
-
-A plethora of \LaTeX{} commands was made robust so that fewer
-\verb|\protect| are needed when using some commands in moving arguments.
-There are a few border cases where it's tricker to make the command
-robust or where it's not worth it to do so, but most reasonable use
-cases are covered. The most notable change was \verb|\begin| and
-\verb|\end|, which are now robust and won't break when used in moving
-arguments.
-
-An extra \verb|\hskip 1sp| was added to \verb|c|-column table cells to
-protect against the presence of an \verb|\unskip| in the table cell
-(\ghissue{102}).
-
-\texttt{U+012F} which is ``i with ogonek'' should produce an
-``i'' and not a ``dotless i''. This has been corrected
-(\ghissue{122}).
-
-The Unicode slots \texttt{27E8} and \texttt{27E9} have been mapped to
-\verb|textlangle| and \verb|textrangle| which is the recommended mapping
-(\ghissue{110}).
-
-Basic ligatures (ff, fi, fl, ffi, ffl, ft, st) can now be input as a
-single unicode character in pdf\TeX, which is useful when copy-pasting
-(\ghissue{154}).
-
-\verb|\InputIfFileExists{foo}{\input{bar}}{}|
-did not load the files \texttt{foo.tex} and \texttt{bar.tex} but
-would load \texttt{bar.tex} twice. This has been corrected (\ghissue{109}).
-
-The \textsf{fncylab} and \textsf{varioref} packages changed \LaTeX's internal
-counter prefix commands \verb|p@...| so that they would take the counter
-value as an argument instead of just acting as a prefix to them. These
-packages also provided the \verb|\labelformat| macro to change the prefix
-macro and \verb|\Ref| so that using counters defined that way in the
-beginning of sentences would have the proper capitalization. These features
-were added to the \LaTeXe{} kernel.
-
-The kernel now says ``Trying to load\ldots''
-instead of ``Try loading \ldots'' in one of its informal
-messages to match style of similar messages (\ghissue{107}).
-
-\verb|\DeclareErrorFont| would change the font size to 10\,pt which, when
-used in the wrong place, would make incorrect font settings in the document.
-This has now been fixed (\gnatsissue{4399}).
-
-The default action of the file \texttt{nfssfont.tex} was set to produce a
-font table, so that one can simply hit enter instead of having to write
-\verb=\table\bye=.
-
-The \LaTeX{} kernel now provides dummy (empty) definitions for the two
-commands \verb|\conditionally@traceoff| and
-\verb|\conditionally@traceon| from the \texttt{trace} package so they
-can be used by package developers without worrying about them being
-defined or not (\ghissue{164}).
-
-
-
-
-
-\section{Changes introduced in 2018-12-01}
-
-Further additions to the characters supported by default in UTF-8.
-The commands \verb|\guillemetleft| and \verb|\guillemetright| are
-provided as alias for the names based on the Adobe font names
-(\ghissue{65}).
-
-The use of potrusion in tables of contents is suppressed by default,
-see \sxquestion{172785}.
-
-The handling of visible space in verbatim was adjusted for
-\ghissue{69} and \ghissue{70}.
-
-Spaces are removed from the argument passed to BiBTeX, \ghissue{88}.
-
-New commands \verb|\Hwithstroke| and \verb|\hwithstroke| added to T1 encoding support.
-
-The internal box structure for floats is adjusted to preserve box
-levels of split hyperlinks, avoiding a fatal pdftex error. \ghissue{94}.
-
-
-\section{Changes introduced in 2018-04-01 patch~5}
-Improved support for non ASCII filenames on the command line on
-filesystems using legacy encodings.
-
-Adjusted the new package rollback code so that some edge cases where rollback
-can not be guaranteed become a warning not an error.
-
-\section{Changes introduced in 2018-04-01 patch~4}
-No changes to the format, but \texttt{docstrip} adjusted so that non-ASCII
-\texttt{.ins} files work with the new UTF-8 defaults.
-
-\section{Changes introduced in 2018-04-01 patch~3}
-Additional adjustments for GitHub issues \ghissue{34} and \ghissue{38}, adjustment to the
-location of some documentation files, such as \texttt{source2e.tex} to
-be installed in the documentation sources not the default \TeX\ input
-tree.
-
-
-\section{Changes introduced in 2018-04-01 patch~2}
-Additional adjustments for GitHub issues \ghissue{32} and \ghissue{33}.
-
-\section{Changes introduced in 2018-04-01 patch~1}
-Make \verb|\UseRawInputEncoding| and \Lpack{latexrelease} reset \verb|\inputencodingname|
-when disabling the UTF-8 input handling.
-
-\section{Changes introduced in 2018-04-01}
-Further details of changes at this release are given in \ltnewsissue{28}, but in brief
-the main changes are as listed below.
-
-The default encoding for files has been changed to UTF-8.
-
-A new possibility to refer to older versions of packages has been added.
-
-New commands previously available in \Lpack{remreset} and
-\Lpack{chngcntr} packages for controlling counters have been added.
-
-The definition of \verb|\@ifundefined| has been refined to use the e-\TeX \verb|\ifcsname|
-primitive when available, and to avoid defining the command being tested to be \verb|\relax|
-in the case that it was previously undefined.
-
-\section{Changes introduced in 2017-04-15}
-Optionally, \LaTeX{} format and package dates may use ISO style dates with
-\texttt{-} rather than \texttt{/}.
-
-For Unicode \TeX{}s, made further adjustments to the composite accent
-code in \texttt{tuenc.def}, and further updates tracking changes in
-Lua\TeX, now at 1.04.
-
-Previously defining an encoding-specific composite with an undeclared
-accent (or an accent declared later) gave no error, but did nothing useful.
-\LaTeX\ will now detect this and give the accent command a default definition
-as an error, allowing the declared composite to work as intended.
-
-The definition of \verb|\-| is adjusted to match the comments in
-\gnatsissue{3855} to accommodate non standard settings of \verb|\hyphenchar|.
-
-In parboxes and similar settings, \verb|\lineskiplimit| is now
-reset (to the existing default value, \verb|\normallineskiplimit|).
-See \sxanswer{359934}.
-
- The code for \verb|\newpage| has been adjusted to add a test on the value of
-\verb|\prevdepth| so that the depth of the last line is preserved in
-forced page breaks.
-
-\section{Changes introduced in 2017/01/01 patch~3}
-Emergency patch to correct a typo in a change introduced in patch~2.
-
-\section{Changes introduced in 2017/01/01 patch~2}
-More adjustments for TU encoding, allowing for characters missing in
-common system fonts. Additional \texttt{fd} files
-for Latin Modern variants are included in the documented sources.
-
-\section{Changes introduced in 2017/01/01 patch~1}
-Fixes to TU encoding definitions for Lua\TeX\ and Xe\TeX.
-
-\section{Changes introduced in 2017/01/01}
-
-A new test is added during format making that e\TeX\ extensions are
-available. As noted in \LaTeX\ news, e\TeX\ will now be required to
-build \LaTeX.
-
-Further updates tracking changes for Lua\TeX~1.0.
-
-The definition of \verb|\showhyphens| is changed in formats built
-with Xe\TeX, as the original version, inherited from plain \TeX\ does
-not work with Xe-\TeX.
-
-Changes to the default encoding used by Lua\TeX\ and Xe\TeX\ formats to
-be TU (Unicode) rather than OT1 (7 bit legacy \TeX\ encoding).
-
-\section{Changes introduced in 2016/03/31 patch~3}
-Fixes to \verb|\newinsert| and \verb|\extrafloats|.
-
-\section{Changes introduced in 2016/03/31 patch~2}
-Adjustments to \verb|\c{g}| in OT1 encoding.
-
-\section{Changes introduced in 2016/03/31 patch~1}
-Adjust the upper limit for Character Class allocation in Xe-\TeX\ to
-4096 to match a change in Xe-\TeX.
-
-\section{Changes introduced in 2016/03/31}
-Modify picture mode as suggested in latex/4452 to avoid leaders of
-almost zero length.
-
-Modify the checks in \verb|\DeclareMathSymbol| and related commands
-so that they do not give errors with new Lua\TeX\ releases.
-
-\section{Changes introduced in 2016/02/01}
-Adjustments to Lua\TeX\ support to match changes to the Lua\TeX\ engine,
-and to the character class allocation in Xe\TeX.
-
-Load Unicode data from new generic \texttt{unicode-data} distribution.
-
-\section{Changes introduced in 2015/10/01 patch~2}
-
-This release fixes the behavior of the allocation mechanism if the switch
-from the standard to extended pool takes place within a group.
-
-\section{Changes introduced in 2015/10/01 patch~1}
-This release allows \Lpack{latexrelease} to revert the
-Lua\TeX{}-specific
-changes, in particular fixing an incorrect date in part of the mechanism and
-adding a method to disable callback management entirely.
-
-\section{Changes introduced in \LaTeX\ 2015/10/01}
-
-\subsection{LuaTeX allocation}
-Almost all changes at this release relate to incorporating allocation macros for luatex into the format
-as done for etex and xetex in 2015/01/01. For details see |ltluatex.dtx| or \ltnewsissue{22}.
-|ltluatex.dtx| now forms a new chapter (N) in the documented sources, |source2e.tex|.
-
-
-\subsection{Increased number of floats}
-The default float list has been increased from 18 to 52 registers if
-e\TeX\ is available.
-The list can be increased further using |\extrafloats| however this
-default allocation uses classic registers below 256 so the registers are
-also available for |\newinsert| as described below.
-
-\subsection{Improved \texttt{\textbackslash newinsert}}
-The command |\newinsert| has been extended to take registers from the lists of free float
-registers once the classic register allocation is used up. This should make it highly unlikely
-to get ``no room'' errors on register allocation assuming the format is used with
-an e-\TeX\ based \TeX\ engine.
-
-\subsection{New accent, \texttt{\textbackslash textcommabelow} (pr/4414)}
-The command |\textcommabelow| has been added. This is mainly intended for Romanian letters
-\textcommabelow{S}\,\textcommabelow{s}\,\textcommabelow{T}\,\textcommabelow{t}.
-
-\subsection{Unicode 8}
-The file |unicode-letters.def| used to initialize character data in
-Unicode \TeX\ variants has been regenerated from data files updated
-to Unicode~8.
-
-\section{Changes introduced in 2015/01/01 patch~2}
-There were no changes to the format at this release, but the sources were fixed to fix bug latex/4434
-affecting bottom float positioning if the \Lpack{latexrelease} package was used.
-
-\section{Changes introduced in 2015/01/01 patch~1}
-This release re-introduces the ``Patch Level'' scheme for identifying
-releases between main ``dated'' releases. Early \LaTeXe\ releases
-included a mechanism whereby updates could be provided by a
-\emph{patch
- file}. This was mainly intended to allow updates to be made without
-downloading the full sources again, which was an important
-consideration with download speeds and costs at the time.
-
-The new mechanism incorporates any changes directly into the sources,
-but having the patch level identified in the banner allows the
-\LaTeX\ release to be identified, even if (as in this case) most of the
-changes do not affect the format but affect other base packages such
-as \Lpack{latexrelease} and \Lpack{inputenc}. The patch level is shown
-in the banner at the start of the job, but does not affect the date
-handling of the |\IncludeInRelease| mechanism.
-
-Apart from re-arranging the version banner, the only change in the
-format is that |\newtoks| was accidentally defined twice, using the
-old and new allocation scheme described in Section \ref{e@alloc}.
-The old definition is now only in the \Lpack{latexrelease} package,
-for use when emulating old formats.
-
-
-
-
-\section
-[Changes between \LaTeX\ releases 2014/05/01 and 2015/01/01]
-{Changes between \LaTeX\ releases 2014/05/01 and 2015/01/01\footnote{Much of this text
-is taken from \Lpack{fixltx2e} package which was formerly used to make such changes available separately.}}
-
-\subsection{Support for \LaTeX\ version changes}
-\DescribeMacro{\includeInRelease}\arg{date}\oarg{date}\arg{label}\arg{message}\arg{code}
-
-\smallskip
-
-The |\includeInRelease| command has been added to support backward and
-forward compatibility for the \LaTeX\ format. It supports the
-declaration of conditional code that can be loaded based on options
-given to the \Lpack{latexrelease} package. Its use is described in
-detail in the \Lpack{latexrelease} package documentation.
-
-\subsection{New Allocation Code\label{e@alloc}}
-Previously |\newcount| and related commands were based on classic TeX
-and only allocated in the range 0--255. This was extended (in
-different ways) for e-\TeX\ in the |etex| package and in the
-|xelatex.ini| and |lualatex.ini| files used in those formats. Related
-to this the number of boxes allocated to store floats was
-limited. This was extended to a certain extent in the |morefloats|
-package (by Don Hosek and H.-Martin Muench) but the new allocation
-incorporates float allocation directly and supports much larger float
-lists using the extended registers.
-
-The new code allocates registers in the full extended range (
-$2^{15}-1$ for etex and xelatex, $2^{16}-1$ for lualatex.
-In addition a new command |\extrafloats| is provided.
-
-\DescribeMacro{\extrafloats}\arg{number}
-\smallskip
-
-This allocates additional registers for the \LaTeX\ float system to
-hold figures and tables etc. Similar functionality has been
-available via the \Lpack{morefloats} package but this is a different
-implementation using extended e-\TeX\ registers when available so
-allows many more registers to be reserved for floats as they are
-allocated from a pool of 32 or 64 thousand rather than 256 registers,
-depending on the engine in use.
-
-\DescribeMacro{\newmarks}\arg{command}
-\smallskip
-
-e-\TeX\ only, previously available via the \Lpack{etex} package.
-Allocates commands to use the extended e-\TeX\ mark mechanism.
-
-\DescribeMacro{\newXeTeXintercharclass}\arg{command}
-\smallskip
-
-Xe-\TeX\ only, previously in the Xe-\LaTeX\ format, but added via
-|xelatex.ini| not part of the core release.
-Allocates commands to use the Xe-\TeX\ character class mechanism.
-
-
-\subsection{e-\TeX\ tracing if available}
-|\loggingall| (Usually used via |\tracingall|) is extended to enable
-additional e-\TeX\ tracing if e-\TeX\ is available. (|\tracingall|
-extension has been available as part of the |etex| package previously).
-
-Also based on code from the |etex| package, a command |\tracingnone|
-is added to reverse the effects of |\tracingall| and turn off all primitive
-\TeX\ tracing. A new command |\hideoutput| has been added which resets the
-tracing parameters set by |\showoutput|.
-
-
-
-
-\subsection{\texttt{\textbackslash textsubscript} not defined in
- latex.ltx (pr/3492)}
-
-\begin{verbatim}
->>Number: 3492
->>Category: latex
->>Synopsis: \textsubscript not defined in latex.ltx
->>Arrival-Date: Tue Jan 14 23:01:00 CET 2003
->>Originator: Ionel Mugurel Ciobica
-
-I use \textsubscript much more often than \textsuperscript, and
-\textsubscript it is not defined in latex.ltx. Could you please
-consider including the definition of \textsubscript in the latex.ltx
-for the next versions of LaTeX. Thank you.
-\end{verbatim}
-
-\subsection{\texttt{\textbackslash @} discards spaces when moving
- (pr/3039)}
-
-\begin{verbatim}
->>Number: 3039
->>Category: latex
->>Synopsis: \@ discards spaces when moving
->>Arrival-Date: Sat May 22 09:01:06 1999
->>Originator: Donald Arseneau
->>Description:
-The \@ command expands to \spacefactor\@m in auxiliary files,
-which then ignores following spaces when it is reprocessed.
-\end{verbatim}
-
-\subsection{1-col fig can come before earlier 2-col fig
- (pr/2346)}
-
-\begin{verbatim}
->>Number: 2346
->>Category: latex
->>Synopsis: 2-col: 1-col fig can come before earlier 2-col fig
->>Arrival-Date: Wed Dec 18 15:41:07 1996
->>Originator: bil kleb
->>Description:
-as documented in Lamport's book, p. 198, concerning figure
-placement, "a figure will not be printed before an earlier
-figure, and a table will not be printed before an earlier
-table." however, there is a footnote stating, "However,
-in two-column page style, a single-column figure can come before
-an earlier double-column figure, and vice versa."
-
-This twocolumn behavior is undesirable---at least by me and
-most professional organizations i publish in. ed snyzter developed
-a hack fix for 2.09 several years ago which links the two
-counters, but i have not run across a similar "fix" for 2e...
-\end{verbatim}
-
-Originally fixed in package \Lpack{fix2col} which was merged into
-this package. Documentation and code from this package have been
-merged into this file.
-
-\subsubsection{Notes on the Implementation Strategy}
-
-The standard output routine maintains two lists of floats that have
-been `deferred' for later consideration. One list for single column
-floats, and one for double column floats (which are always
-immediately put onto their deferred list). This mechanism means
-that \LaTeX\ `knows' which type of float is contained in each box
-by the list that it is processing, but having two lists means
-that there is no mechanism for preserving the order between the
-floats in each list.
-
-The solution to this problem consists of two small changes to
-the output routine.
-
-Firstly, abandon the `double column float list' |\@dbldeferlist|
-and change every command where it is used so that instead the
-same |\@deferlist| is used as for single column floats.
-That one change ensures that double and single column floats
-stay in the same sequence, but as \LaTeX\ no longer `knows'
-whether a float is double or single column, it will happily
-insert a double float into a single column, overprinting the
-other column, or the margin.
-
-The second change is to provide an alternative mechanism for
-recording the two column floats. \LaTeX\ already has a compact
-mechanism for recording float information, an integer count register
-assigned to each float records information about the `type' of float
-`figure', `table' and the position information `htp' etc.
-
-The type information is stored in the `high' bits, one bit position
-(above `32') allocated to each float type. The `low' bits store
-information about the allowed positions, one bit each allocated for
-|h t b p|. In the \LaTeX2.09 system, the bit corresponding to `16'
-formed a `boundary' between these two sets of information, and it
-was never actually used by the system. Ed Sznyter's
-\Lpack{fixfloats} package not unreasonably used this position to
-store the double column information, setting the bit for double
-column floats. Then at each point in the output routine at which a
-float is committed to a certain region, an additional check must be
-made to check that the float is (or is not) double column. If it
-spans the wrong number of columns it is deferred rather than being
-added.
-
-Unfortunately the bit `16' is not available in \LaTeXe. It is used
-to encode the extra float position possibility `|!|' that was added
-in that system. It would be possible to use position `32' and to
-move the flags for `table', `figure',\ldots\ up one position, to
-start at 64, but this would mean that in principle one less float
-type would be supported, and more importantly is likely to break
-any other packages that assume anything about the output routine
-internals. So here I instead use another mechanism for flagging
-double column floats: By default all floats have depth 0pt.
-This package arranges that double column ones have depth 1sp.
-This information may then be used in the same manner as in
-the \Lpack{fixfloats} package, to defer any floats that are not of
-the correct column spanning type.
-
-
-
-\subsection{Infinite glue found (pr/4023 and pr/2346)}
-
-The fix for pr/2346 did not work as intended when used in conjunction
-with |\enlargethispage| as the latter introduced an infinite negative
-glue at the bottom of the page. That in turn make a |\vsplit|
-operation to get at the column marks invalid.
-
-\subsection{Wrong header for twocolumn (pr/2613)}
-
-\begin{verbatim}
->>Number: 2613
->>Category: latex
->>Synopsis: wrong headline for twocolumn
->>Arrival-Date: Mon Sep 22 16:41:09 1997
->>Originator: Daniel Reischert
->>Description:
-When setting the document in two columns
-the headline shows the top mark of the second column,
-but it should show the top mark of the first column.
-\end{verbatim}
-
-Originally fixed in package \Lpack{fix2col} which was merged into
-this package. Documentation and code from this package have been
-merged into this file.
-
-\subsubsection{Notes on the Implementation Strategy}
-
-The standard \LaTeX\ twocolumn system works internally by making
-each column a separate `page' that is passed independently to \TeX's
-page breaker. (Unlike say the \Lpack{multicol} package, where all
-columns are gathered together and then split into columns later,
-using |\vsplit|.) This means that the primitive \TeX\ marks that are
-normally used for header information, are globally reset after the
-first column. By default \LaTeX\ does nothing about this.
-A good solution is provided by Piet van Oostrum (building on earlier
-work of Joe Pallas) in his \Lpack{fixmarks} package.
-
-After the first column box has been collected the mark information
-for that box is saved, so that any |\firstmark| can be
-`artificially' used to set the page-level marks after the second
-column has been collected. (The second column |\firstmark| is not
-normally required.) Unfortunately \TeX\ does not provide a direct
-way of knowing if any marks are in the page, |\firstmark| always has a
-value from previous pages, even if there is no mark in this page.
-The solution is to make a copy of the box and then |\vsplit| it
-so that any marks show up as |\splitfirstmark|.
-
-The use of |\vsplit| does mean that the output routine will globally
-change the value of |\splitfirstmark| and
-|\splitbotmark|. The \Lpack{fixmarks} package goes to some trouble
-to save and restore these values so that the output routine does
-\emph{not} change the values. This part of \Lpack{fixmarks} is not
-copied here as it is quite costly (having to be run on every page) and
-there is no reason why anyone writing code using |\vsplit| should
-allow the output routine to be triggered before the split marks have
-been accessed.
-
-
-
-\subsection{\texttt{\textbackslash setlength} produces error if
- used with registers like \texttt{\textbackslash dimen0} (pr/3066)}
-
-\begin{verbatim}
->>Number: 3066
->>Category: latex
->>Synopsis: \setlength{\dimen0}{10pt}
->>Arrival-Date: Tue Jul 6 15:01:06 1999
->>Originator: Heiko Oberdiek
->>Description:
-The current implementation of \setlength causes an error,
-because the length specification isn't terminated properly.
-More safe:
-\def\setlength#1#2{#1=#2\relax}
-\end{verbatim}
-
-\subsection{Fewer fragile commands}
-
-\begin{verbatim}
->>Number: 3816
->>Category: latex
->>Synopsis: Argument of \@sect has an extra }.
->>Arrival-Date: Sat Oct 22 23:11:01 +0200 2005
->>Originator: Susanne Wunsch
-
-Use of a \raisebox in \section{} produces the error message
-mentioned in the subject.
-
-PR latex/1738 described a similar problem, which has been solved
-10 years ago. Protecting the \raisebox with \protect solved my
-problem as well, but wouldn't it make sense to have a similar fix
-as in the PR?
-
-It is particularly confusing, that an unprotected \raisebox in a
-\section*-environment works fine, while in a \section-environment
-produces error.
-\end{verbatim}
-
-While not technically a bug, in this day and age there are few
-reasons why commands taking optional arguments should not be robust.
-
-\subsubsection{Notes on the implementation strategy}
-
-Rather than changing the kernel macros to be robust, we have decided
-to add the macro \DescribeMacro{\MakeRobust}|\MakeRobust| in
-\Lpack{fixltx2e} so that users can easily turn fragile macros into
-robust ones. A macro |\foo| is made robust by doing the simple
-|\MakeRobust{\foo}|. \Lpack{fixltx2e} makes the following kernel
-macros robust: |\(|, |\)|, |\[|, |\]|,
- |\makebox|, |\savebox|,
-|\framebox|, |\parbox|, |\rule| and |\raisebox|.
-
-\ldots TODO \ldots fleqn vesion of |\[\]|
-
-\subsection{\texttt{\textbackslash addpenalty} ruins flush-bottom (pr/3073)}
-
-\begin{verbatim}
->>Number: 3073
->>Category: latex
->>Synopsis: \addpenalty ruins flush-bottom
->>Arrival-Date: Sat Jul 17 05:11:05 1999
->>Originator: Donald Arseneau
->>Description:
-Just to keep in mind for further development eh?
-A page break at an \addpenalty after \vspace does *not*
-give a flush-bottom page. (The intent of \addpenalty is
-apparently just to preserve the flush bottom by putting
-the breakpoint `above' the skip.)
-\end{verbatim}
-
-\subsection{Within counters only reset next level down (pr4393)}
-
-This is actually implicitly documented behavior in the \LaTeX{}
-Manual that states that |\stepcounter| resets all counters marked
-``within''. However it means that if, for example, theorems are
-numbered within sections and you start a new chapter in a book, the
-section counter is reset to zero but the theorem counter is not
-until the first section appears. Thus a theorem directly within the
-chapter body (without a new section) would show an incremented
-number relative to the last theorem of the previous chapter.
-
-
-For this reason we are now resetting all levels of within in one go
-even if that means that some of these resets may happen several times
-unnecessarily.
-
-
-\subsection{Check the optional arguments of floats}
-
-By default LaTeX silently ignores unknown letters in the optional
-arguments of floats. |\begin{figure}[tB]| the |B| is ignored so it
-acts like |\begin{figure}[t]| However |\begin{figure}[B]| does
-\emph{not} act like |\begin{figure}[]| as the check for an empty
-argument, or unsupplied argument, is earlier. |[]| causes the
-default float placement to be used, but |[B]| means that \emph{no}
-float area is allowed and so the float will not be placed until the
-next |\clearpage| or end of document, no warning is given.
-
-This package adds a check on each letter, and if it not one of
-|!tbhp| then an error is given and the code acts as if |p| had been
-used, so that the float may be placed somewhere.
-
-\subsection{\texttt{\textbackslash DeclareMathSizes} only take pts.
- (pr/3693)}
-
-\begin{verbatim}
->>Number: 3693
->>Category: latex
->>Synopsis: \DeclareMathSizes only take pts.
->>Arrival-Date: Fri Jun 11 16:21:00 CEST 2004
->>Originator: Morten Hoegholm
-
-The last three arguments of \@DeclareMathSizes cannot take a dimension
-as argument, making it inconsistent with the rest of the font changing
-commands and itself, as the second argument can take a dimension
-specification.
-\end{verbatim}
-
-\subsection{No hyphenation in first word after float environment (pr/3498)}
-
-\begin{verbatim}
->>Number: 3498
->>Category: latex
->>Synopsis: No hyphenation in first word after float environment
->>Arrival-Date: Thu Jan 30 13:21:00 CET 2003
->>Originator: Harald Harders
-
-If a float environment (figure, table) is written within a paragraph,
-the first word after the environment is not hyphenated.
-\end{verbatim}
-
-\subsection{\texttt{\textbackslash fnsymbol} should use text symbols
- (pr/3400)}
-
-\begin{verbatim}
->>Number: 3400
->>Category: latex
->>Synopsis: \fnsymbol should use text symbols if possible
->>Arrival-Date: Fri Jan 04 20:41:00 CET 2002
->>Originator: Walter Schmidt
-
-The \fnsymbol command can be used in both text and math
-mode. The symbols produced are, however, always taken from
-the math fonts. As a result, they may not match the text
-fonts, even if the symbols are actually available, for
-instance from the TS1 encoding. Since \fnsymbol is
-primarily used for footnotes in text, this should be fixed,
-IMO.
-\end{verbatim}
-
-
-
-
-
-\subsection{\texttt{\textbackslash footnotemark}[x] crashes with fixltx2e.sty
- (pr/3752)}
-
-\begin{verbatim}
->>Number: 3752
->>Category: tools
->>Synopsis: feature \footnotemark[x] crashes with fixltx2e.sty
->>Arrival-Date: Fri Dec 17 10:11:00 +0100 2004
->>Originator: Stefan Pofahl
-
- If I use /fnsymbol together with fixltx2e.sty I can not use
- optional parameter [num]
- \footnotemark[1] is not showing the mark number 1 but
- the mark \value{footnote}.
-\end{verbatim}
-This bug was related to pr/3400, where |\@fnsymbol| was made robust.
-
-\subsubsection{Notes on the implementation strategy}
-
-Pr/3400 made |\@fnsymbol| decide between text-mode and math-mode,
-which requires a certain level of robustness somewhere as the
-decision between text and math must be made at typesetting time and
-not when inside |\protected@edef| or similar commands. One way of
-dealing with this is to make sure the value seen by |\@fnsymbol| is
-a fully expanded number, which could be handled by code such as
-\begin{verbatim}
-\def\fnsymbol#1{\expandafter\@fnsymbol
- \expandafter{\the\csname c@#1\endcsname}}
-\end{verbatim}
-This would be a good solution if everybody used the high level
-commands only by writing code like |\fnsymbol{footnote}|. Unfortunately
-many classes (including the standard classes) and packages use the
-internal forms directly as in |\@fnsymbol\c@footnote| so the easy
-solution of changing |\fnsymbol| would break code that had worked for
-the past 20~years.
-
-Therefore the implementation here makes |\@fnsymbol| itself a
-non-robust command again and instead uses a new robust command
-\DescribeMacro{\TextOrMath}|\TextOrMath|, which will take care of
-typesetting either the math or the text symbol. In order to do so,
-we face an age old problem and unsolvable problem in \TeX: A
-reliable test for math mode that doesn't destroy
-kerning. Fortunately this problem can be solved when using e\TeX\ so
-if you use this as engine for your \LaTeX\ format, as recommended by
-the \LaTeX\ Project, you will get a fully functioning |\TextOrMath|
-command with no side effects. If you use regular \TeX\ as engine for
-your \LaTeX\ format then we have to choose between the lesser of two
-evils: 1)~breaking ligatures and preventing kerning or 2)~face the
-risk of choosing text-mode at the beginning of an alignment cell,
-which was supposed to be math-mode. We have decided upon 1) as is
-customary for regular robust commands in \LaTeX.
-
-
-
-\end{document}
diff --git a/macros/latex-dev/base/latexrelease.dtx b/macros/latex-dev/base/latexrelease.dtx
index 7d2290f4d8..efdfa8c418 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -471,7 +471,7 @@
%
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
diff --git a/macros/latex-dev/base/latexrelease.ins b/macros/latex-dev/base/latexrelease.ins
index 0b65114a2f..42cb588568 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
@@ -101,6 +101,7 @@ extension .ins) which are part of the distribution.
\from{lterror.dtx} {latexrelease}% empty
\from{ltpar.dtx} {latexrelease}% empty
\from{ltpara.dtx} {latexrelease}% empty
+ \from{ltmeta.dtx} {latexrelease}% L3 layer module
\from{ltspace.dtx} {latexrelease}%
\from{ltlogos.dtx} {latexrelease}% L3 layer module
\from{ltfiles.dtx} {latexrelease}%
diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf
index 04f911e0d6..630c7cb84a 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 7a97aa4318..62fb097c0d 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -84,7 +84,7 @@
% |\unrhd|~$\unrhd$
% \end{quote}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The \dst{} modules}
%
diff --git a/macros/latex-dev/base/latexsym.ins b/macros/latex-dev/base/latexsym.ins
index 902bbfc9e8..468afddd67 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 dc0e9d1344..d4e39b84ed 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.err b/macros/latex-dev/base/lb2.err
index 53148e2833..46958ae3a5 100644
--- a/macros/latex-dev/base/lb2.err
+++ b/macros/latex-dev/base/lb2.err
@@ -419,7 +419,7 @@ Ende der Wettbewerbsperiode & Gewinner \\[4pt]
2006/04 & Jens Mandavid & 121 \\
2006/10 & Ralf Heckmann & 61 \\
2008/04 & --- \\
-\ldots & Termin einer weiteren Verlosung offen
+\ldots & keine weitere Verlosung
%2008/10 & \\
\end{tabular}
\end{center}
diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf
index 64acee80bf..3c945696f2 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 6beee81735..4052c260c8 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -45,7 +45,7 @@
%<*driver>
\ProvidesFile{letter.drv}
%</driver>
- [2021/03/05 v1.3c
+ [2021/12/07 v1.3c
%<+letter> Standard LaTeX document class]
% \end{macrocode}
%
@@ -178,7 +178,7 @@
% \maketitle
% \tableofcontents
%
-% \StopEventually
+% \MaybeStop{}
%
%
% \section{Initial Code}
diff --git a/macros/latex-dev/base/letter.ins b/macros/latex-dev/base/letter.ins
index 44777393eb..c078dc59ce 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 04a83d4385..a4f9c2c4ff 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.err b/macros/latex-dev/base/lgc2.err
index 96fd378fe9..45b440a7f4 100644
--- a/macros/latex-dev/base/lgc2.err
+++ b/macros/latex-dev/base/lgc2.err
@@ -10,7 +10,7 @@
%
% The current version of this file can be found at:
%
-% https://www.latex-project.org/guides/books.html
+% https://www.latex-project.org/help/books
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -351,12 +351,12 @@ You can customize this list to only show errata related to the printing
you own by changing the configuration in the file \texttt{\jobname.cfg}.
\begin{center}
- \Large \bfseries To Err is Human --- Bug Contest
+ \Large \bfseries To Err is Human --- Bug Contest (no longer open)
\end{center}
Any mistake found and reported is a gain for all readers of our book.
-For this reason Addison-Wesley and the authors offer a prize (for 6
-periods) to the eligible person who finds the largest
+For this reason Addison-Wesley and the authors offer a prize to the
+eligible person who finds the largest
number of bugs during that period (in case of a draw a random choice
will be made between all those with the largest number of findings).
A person can receive at most one prize, ever; errors found by any of
@@ -378,7 +378,7 @@ Good luck!
Contest period ends & Winner \\[4pt]
2008/05 & Milan Vujtek & 16 suggestions\\
2010/05 & & \\
-\ldots
+\ldots & contest no longer open
\end{tabular}
\end{center}
\end{list}
diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf
index 895b91c84d..07902aca25 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/lppl.pdf b/macros/latex-dev/base/lppl.pdf
index 8ef7144947..c09da611fd 100644
--- a/macros/latex-dev/base/lppl.pdf
+++ b/macros/latex-dev/base/lppl.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltalloc.dtx b/macros/latex-dev/base/ltalloc.dtx
index 59c492836f..4530d4b07b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -62,7 +62,7 @@
%
% This section deals with counter and other variable allocation.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltbibl.dtx b/macros/latex-dev/base/ltbibl.dtx
index cda0fa160a..9824ca539f 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -106,7 +106,7 @@
% |\nocite{*}| is special: it tells \BibTeX{} to put the whole of a
% collection of references into the bibliography.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/31}{Initial version of ltidxbib.dtx,
diff --git a/macros/latex-dev/base/ltboxes.dtx b/macros/latex-dev/base/ltboxes.dtx
index 92d9228a8a..380be09b1f 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -212,7 +212,7 @@
% \meta{height} \& \meta{depth} = actual height and depth of box in new
% position.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v0.1e}{1994/03/02}{Remove need for drv file}
% \changes{v0.1e}{1994/03/02}{Add 2ekernel module}
diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx
index 06e0f437af..0ff3f71162 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltclass.dtx}
- [2021/08/25 v1.4f LaTeX Kernel (Class & Package Interface)]
+ [2021/12/09 v1.5a LaTeX Kernel (Class & Package Interface)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltclass.dtx}
@@ -338,7 +338,7 @@
% or the old name \cs{@ifpackagelater}.
% \DescribeMacro\IfFormatAtLeastTF
-% To test the format date use
+% To test the format date use
% \begin{quote}
% |\IfFormatAtLeastTF{|\meta{date}|}{|^^A
% \meta{true}|}{|\meta{false}|}|
@@ -434,7 +434,7 @@
% standard (and other non-standard) distributions can put informative
% strings in this argument.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
@@ -1833,7 +1833,7 @@
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
-%
+%
% \begin{macrocode}
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease> {\RequirePackageWithOptions}{Unused options issue}%
@@ -2175,27 +2175,21 @@
% \begin{macrocode}
\@ifl@aded\@currext\@currname
% \end{macrocode}
-% If the package is already loaded, check that there were no option
-% clashes:
-% \changes{v1.1b}{1998/05/07}
-% {Modify help message for latex/2805}
-% \begin{macrocode}
- {\@if@ptions\@currext{\@currname}{#2}{}%
- {\@latex@error
- {Option clash for \@cls@pkg\space \@currname}%
- {The package \@currname\space has already been loaded
- with options:\MessageBreak
- \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak
- There has now been an attempt to load it
- with options\MessageBreak
- \space\space[#2]\MessageBreak
- Adding the global options:\MessageBreak
- \space\space
- \@ptionlist{\@currname.\@currext},#2\MessageBreak
- to your \noexpand\documentclass declaration may fix this.%
- \MessageBreak
- Try typing \space <return> \space to proceed.}}%
- \@firstofone}%
+% In the current preferred approach, a key family name will exist for
+% processing using \pkg{ltkeys}. In that case, we replace the previous
+% package options with with the new ones, then call the key handler.
+% Otherwise, we use the more classical clash handler.
+% \begin{macrocode}
+ {%
+ \@ifundefined{opt@fam@\@currname.\@currext}
+ {\@onefilewithoptions@clashchk{#2}}
+ {%
+ \@namedef{opt@\@currname.\@currext}{#2}%
+ \expandafter\expandafter\expandafter\ProcessKeyPackageOptions
+ \expandafter\expandafter\expandafter
+ [\csname opt@fam@\@currname.\@currext\endcsname]%
+ }%
+ }%
{\makeatletter
% \end{macrocode}
% The next line seems to be necessary for 2.09 compatibility (the
@@ -2298,6 +2292,34 @@
\@reset@ptions}
% \end{macrocode}
%
+% \begin{macro}{\@onefilewithoptions@clashchk}
+% If the package is already loaded, check that there were no option
+% clashes.
+% \changes{v1.1b}{1998/05/07}
+% {Modify help message for latex/2805}
+% \changes{v1.5a}{2021/11/30}
+% {Separated out from \cs{@onefilewithoptions}}
+% \begin{macrocode}
+\def\@onefilewithoptions@clashchk#1{%
+ \@if@ptions\@currext{\@currname}{#1}{}%
+ {\@latex@error
+ {Option clash for \@cls@pkg\space \@currname}%
+ {The package \@currname\space has already been loaded
+ with options:\MessageBreak
+ \space\space[\@ptionlist{\@currname.\@currext}]\MessageBreak
+ There has now been an attempt to load it
+ with options\MessageBreak
+ \space\space[#1]\MessageBreak
+ Adding the global options:\MessageBreak
+ \space\space
+ \@ptionlist{\@currname.\@currext},#1\MessageBreak
+ to your \noexpand\documentclass declaration may fix this.%
+ \MessageBreak
+ Try typing \space <return> \space to proceed.}}%
+ \@firstofone}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macrocode}
\let\@currpkg@reqd\@empty
% \end{macrocode}
@@ -2622,7 +2644,7 @@
%<latexrelease>\EndIncludeInRelease
%<*2ekernel>
% \end{macrocode}
-%
+%
% \begin{macrocode}
\@onlypreamble\AtBeginDocument
% \end{macrocode}
@@ -2826,7 +2848,7 @@
% \end{macrocode}
%
% \changes{v1.3m}{2020-08-08}{define \cs{q@curr@file} directly as the
-% quotes have already been removed (gh/220)}
+% quotes have already been removed (gh/220)}
% \begin{macrocode}
\gdef\filec@ntents#1{%
\set@curr@file{\filec@ntents@checkdir#1}%
diff --git a/macros/latex-dev/base/ltcmd.dtx b/macros/latex-dev/base/ltcmd.dtx
index 04be2abfbf..bf7ae4ea24 100644
--- a/macros/latex-dev/base/ltcmd.dtx
+++ b/macros/latex-dev/base/ltcmd.dtx
@@ -2,7 +2,7 @@
%
% Copyright (C) 1999 Frank Mittelbach, Chris Rowley, David Carlisle
% Copyright (C) 2004-2008 Frank Mittelbach, The LaTeX3 Project
-% Copyright (C) 2009-2021
+% Copyright (C) 2009-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -34,8 +34,8 @@
%%% From File: ltcmd.dtx
%
% \begin{macrocode}
-\def\ltcmdversion{v1.0h}
-\def\ltcmddate{2021-08-30}
+\def\ltcmdversion{v1.0j}
+\def\ltcmddate{2021-12-31}
% \end{macrocode}
%
%<*driver>
@@ -67,7 +67,7 @@
% documentation for \pkg{ltcmd} is provided as part of \texttt{usrguide3}. Here,
% additional material aimed at programmers is provided
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<@@=cmd>
@@ -626,6 +626,8 @@
% \end{macro}
%
% \begin{macro}{\@@_start_aux:NNnnnn, \@@_start_aux:ccnnnn}
+% \changes{v1.0i}{2021/12/02}
+% {Correct defaults for optional arguments in end-of-environment code (gh/712)}
% This sets up a few variables to minimize the boilerplate code
% included in all \pkg{xparse}-defined commands. It then runs the
% grabbers~|#4|. Again, the argument specification |#1| is only for
@@ -639,8 +641,6 @@
\tl_set:Nn \l_@@_defaults_tl {#5}
\tl_set:Nn \l_@@_process_all_tl {#6}
#4
- \bool_if:NT \l_@@_environment_bool
- { \exp_args:No \@@_set_environment_end:n \l_@@_environment_str }
\@@_run_code:
}
\cs_generate_variant:Nn \@@_start_aux:NNnnnn { cc }
@@ -648,6 +648,8 @@
% \end{macro}
%
% \begin{macro}{\@@_run_code:}
+% \changes{v1.0i}{2021/12/02}
+% {Correct defaults for optional arguments in end-of-environment code (gh/712)}
% After arguments are grabbed, this function is responsible for
% inserting default values, running processors, and finally doing
% \cs{group_align_safe_end:} as promised, and running the code.
@@ -656,6 +658,8 @@
{
\tl_if_empty:NF \l_@@_defaults_tl { \@@_defaults: }
\tl_if_empty:NF \l_@@_process_all_tl { \@@_args_process: }
+ \bool_if:NT \l_@@_environment_bool
+ { \exp_args:No \@@_set_environment_end:n \l_@@_environment_str }
\group_align_safe_end:
\conditionally@traceon
\exp_after:wN \l_@@_fn_code_tl \l_@@_args_tl
@@ -2348,15 +2352,17 @@
% Now just print everything in the required format. The auxiliary
% \cs{@@_split_signature:n} stores a ready-to-print token list in
% \cs{l_@@_tmpa_tl}, so we ust use that here:
+% \changes{v1.0j}{2021/13/31}
+% {Make \cs{ShowCommand} stop for interaction}
% \begin{macrocode}
\cs_new_protected:Npn \@@_show_command_aux:nNNn #1 #2 #3 #4
{
\@@_split_signature:n {#4}
- \iow_term:x
+ \tl_show:x
{
- > ~ \token_to_str:N #2 = #1: \iow_newline:
+ \token_to_str:N #2 = #1: \iow_newline:
\tl_use:N \l_@@_tmpa_tl
- -> \cs_replacement_spec:N #3 .
+ -> \cs_replacement_spec:N #3
}
}
% \end{macrocode}
@@ -2367,15 +2373,17 @@
% |\ShowCommand\foo| is used (if |foo| is an environment), we show
% |\endfoo| as well, and when |\ShowCommand\endfoo| is used, change
% that to |\ShowCommand\foo| and do the same.
+% \changes{v1.0j}{2021/13/31}
+% {Make \cs{ShowCommand} stop for interaction}
% \begin{macrocode}
\cs_new_protected:Npn \@@_show_environment:N #1
{
\exp_after:wN \@@_show_environment:Nnnw #1 \q_@@
- \iow_term:x
+ \tl_show:x
{
- > ~ \token_to_str:N \end { \cs_to_str:N #1 } : \iow_newline:
+ \token_to_str:N \end { \cs_to_str:N #1 } : \iow_newline:
-> \exp_args:Nc \cs_replacement_spec:N
- { environment~ \cs_to_str:N #1 ~end~aux~ } .
+ { environment~ \cs_to_str:N #1 ~end~aux~ }
}
}
\cs_new_protected:Npn \@@_show_environment:Nnnw #1 #2 #3 #4 \q_@@
diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf
index 94418868e1..7ed20af9ff 100644
--- a/macros/latex-dev/base/ltcmdhooks-code.pdf
+++ b/macros/latex-dev/base/ltcmdhooks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf
index 623100bb28..6ac9077ecc 100644
--- a/macros/latex-dev/base/ltcmdhooks-doc.pdf
+++ b/macros/latex-dev/base/ltcmdhooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltcmdhooks-doc.tex b/macros/latex-dev/base/ltcmdhooks-doc.tex
index 1efae5f229..acbb880e72 100644
--- a/macros/latex-dev/base/ltcmdhooks-doc.tex
+++ b/macros/latex-dev/base/ltcmdhooks-doc.tex
@@ -2,5 +2,6 @@
\AtBeginDocument{\OnlyDescription
\let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
}
\input{ltcmdhooks.dtx}
diff --git a/macros/latex-dev/base/ltcmdhooks.dtx b/macros/latex-dev/base/ltcmdhooks.dtx
index 208f7c3d22..ccb5a35a71 100644
--- a/macros/latex-dev/base/ltcmdhooks.dtx
+++ b/macros/latex-dev/base/ltcmdhooks.dtx
@@ -270,7 +270,7 @@
% If you do that then both hooks automatically work and are patched
% into the right places.
%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
%
%
%
@@ -1394,3 +1394,12 @@
%
% \Finale
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+^^A Needed for emacs
+^^A
+^^A Local Variables:
+^^A mode: latex
+^^A coding: utf-8-unix
+^^A End:
diff --git a/macros/latex-dev/base/ltcntrl.dtx b/macros/latex-dev/base/ltcntrl.dtx
index d65b3aee94..5ebe256c75 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -66,7 +66,7 @@
% This section defines a number of control structure macros, such as
% while-loops and for-loops.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{oldcomments}
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltcounts.dtx b/macros/latex-dev/base/ltcounts.dtx
index 39fb47728d..ffe2265ac3 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -124,7 +124,7 @@
% the default for \meta{format}.
% Star form omits redefining the print representation.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltdefns.dtx b/macros/latex-dev/base/ltdefns.dtx
index 6c85ca915d..3a92e827fe 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -96,7 +96,7 @@
%
% This section contains commands used in defining other macros.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltdirchk.dtx b/macros/latex-dev/base/ltdirchk.dtx
index 36a1ca616c..16a2ed9e68 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -37,7 +37,7 @@
%<*driver>
% \fi
\ProvidesFile{ltdirchk.dtx}
- [2021/01/15 v1.3a LaTeX Kernel (System Dependent Parts)]
+ [2021/12/11 v1.3a LaTeX Kernel (System Dependent Parts)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltdirchk.dtx}
@@ -206,12 +206,26 @@
% error messages that use the default settings with a current version of
% \TeX, but this should not cause any confusion we hope.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Initialization}
% As this file is read at a very early stage, some definitions that
% are normally considered to be part of the format must be made here.
%
+% Most such definitions are repeated later in the ``right'' place,
+% usually (but not always) with different implementations. To be able
+% to spot this more easily if you look into the file
+% \texttt{latex.ltx} (which is stripped of comments) we add some
+% comment lines to that effect that survive the stripping process by
+% \texttt{docstrip}.
+% \changes{v1.3a}{2021/12/11}{Add comment lines into latex.ltx to
+% indicate temp definitions that are later overwritten (gh/725)}
+% \begin{macrocode}
+%<*dircheck>
+%% ---- START temporary definitions for bootstrapping; later overwritten ----
+%</dircheck>
+% \end{macrocode}
+%
% \subsection{INITEX}
% \changes{v0.2i}{1994/01/25}
% {Protect against looping on \cs{@@input} and \cs{@@end}.}
@@ -1007,6 +1021,7 @@
% \end{macro}
%
% \begin{macrocode}
+%% ---- END temporary definitions for bootstrapping ----
%</dircheck>
% \end{macrocode}
%
diff --git a/macros/latex-dev/base/lterror.dtx b/macros/latex-dev/base/lterror.dtx
index 10d93a1dbd..b302a9a74c 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -91,7 +91,7 @@
%
% This section defines \LaTeX's error commands.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx
index 021edc644c..e6a83d5725 100644
--- a/macros/latex-dev/base/ltexpl.dtx
+++ b/macros/latex-dev/base/ltexpl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2021
+% Copyright (C) 2019-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltexpl.dtx}
- [2021/04/20 v1.3c LaTeX Kernel (expl3-dependent code)]
+ [2022/01/06 v1.3e LaTeX Kernel (expl3-dependent code)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltexpl.dtx}
@@ -57,7 +57,7 @@
%
% \section{\pkg{expl3}-dependent code}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v0.0}{2019-10-02}{Initial version}
%
@@ -387,4 +387,127 @@
% \end{macrocode}
%
%
+%
+%
+%
+%
+% \section{Document-level command names for \pkg{expl3} functions}
+%
+% Current home for L3 programing layer functions that we make
+% directly available at the document level. This section may need
+% to be moved later (after \cs{NewDocumentCommand} is defined in
+% case we want to use that in the setup).
+%
+%
+% \DescribeMacro\fpeval
+% The expandable command \cs{fpeval} takes as its argument a
+% floating point expression and produces a result using the normal
+% rules of mathematics. As this command is expandable it can be
+% used where \TeX{} requires a number and for example within a
+% low-level \cs{edef} operation to give a purely numerical
+% result. See \texttt{usrguide3} for further explanation.
+%
+% \DescribeMacro\inteval
+% \DescribeMacro\dimeval
+% \DescribeMacro\skipeval
+% The expandable command \cs{inteval} takes as its argument an
+% integer expression and produces a result using the normal rules
+% of mathematics. The operations recognised are |+|, |-|, |*| and
+% |/| plus parentheses. Division occurs with \emph{rounding}, and
+% ties are rounded away from zero. As this command is expandable it
+% can be used where \TeX{} requires a number and for example within
+% a low-level \cs{edef} operation to give a purely numerical
+% result. See \texttt{usrguide3} for further explanation.
+% \cs{dimeval} and \cs{skipeval} are similar, but generate fixed and
+% rubber length values, respectively.
+%
+%
+%
+% \begin{macro}{\fpeval,\inteval,\dimeval,\skipeval}
+% A document level wrapper around the code level function for
+% floating point calculations.
+% \changes{v1.3d}{2021/11/30}{Moved over from \texttt{xfp} package (gh/711)}
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2022/06/01}%
+%<latexrelease> {\fpeval}{fp and int calculations}%
+\ExplSyntaxOn
+\cs_new_eq:NN \fpeval \fp_eval:n
+% \end{macrocode}
+% And a few more, this time wrappers around the e\TeX{} primitives.
+% \begin{macrocode}
+\cs_new_eq:NN \inteval \int_eval:n
+% \end{macrocode}
+%
+% \changes{v1.3d}{2021/12/07}{Added \cs{dimeval} and \cs{skipeval} (gh/711)}
+% \begin{macrocode}
+\cs_new_eq:NN \dimeval \dim_eval:n
+\cs_new_eq:NN \skipeval \skip_eval:n
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\fpeval}{fp and int calculations}%
+
+%<latexrelease>
+%<latexrelease>\let\fpeval\@undefined
+%<latexrelease>\let\inteval\@undefined
+%<latexrelease>\let\dimeval\@undefined
+%<latexrelease>\let\skipeval\@undefined
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
+%
+% \DescribeMacro\UseName
+% \DescribeMacro\ExpandArgs
+% When declaring new commands with \cs{NewDocumentCommand} or
+% \cs{NewCommandCopy} or similar, it is sometimes necessary to
+% ``construct'' the csname. As a general mechanism the L3
+% programming layer has \cs{exp\_args:N...} for this, but there is
+% no mechanism for it if \cs{ExplSyntaxOn} is not active. We
+% therefore offer a few of these commands also with CamelCase names.
+%
+%
+% \begin{macro}{\UseName,\ExpandArgs}
+% A document wrapper for changing arguments to cs names for use
+% with \cs{NewDocumentCommand} and similar functions.
+%
+% \changes{v1.3d}{2021/12/28}{Added document level names for \cs{exp\_args:Nc} and the like (gh/735)}
+% \changes{v1.3e}{2022/01/06}{Adjust document level names for \cs{exp\_args:Nc} and the like (gh/735)}
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2022/06/01}%
+%<latexrelease> {\ExpandArgs}{Some pre-expansion commands}%
+\ExplSyntaxOn
+\cs_new_eq:NN \UseName \use:c
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \ExpandArgs #1
+ {
+ \cs_if_exist_use:cF { exp_args:N #1 }
+ { \msg_expandable_error:nnn { kernel } { unknown-arg-expansion } {#1} }
+ }
+\msg_new:nnn { kernel } { unknown-arg-expansion }
+ { Unknown~arg~expansion~"#1" }
+\ExplSyntaxOff
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\ExpandArgs}{Some pre-expansion commands}%
+
+%<latexrelease>
+%<latexrelease>\let\UseName\@undefined
+%<latexrelease>\let\ExpandArgs\@undefined
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
% \Finale
diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf
index b3dc125d4b..16144c7a73 100644
--- a/macros/latex-dev/base/ltfilehook-code.pdf
+++ b/macros/latex-dev/base/ltfilehook-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf
index 751d35f5e2..3e3d0da175 100644
--- a/macros/latex-dev/base/ltfilehook-doc.pdf
+++ b/macros/latex-dev/base/ltfilehook-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltfilehook-doc.tex b/macros/latex-dev/base/ltfilehook-doc.tex
index 220de94188..c9287dfb2f 100644
--- a/macros/latex-dev/base/ltfilehook-doc.tex
+++ b/macros/latex-dev/base/ltfilehook-doc.tex
@@ -3,5 +3,6 @@
\AtBeginDocument{\OnlyDescription
% \let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
}
\input{ltfilehook.dtx}
diff --git a/macros/latex-dev/base/ltfilehook.dtx b/macros/latex-dev/base/ltfilehook.dtx
index 000f4d8c2a..533aacbf2b 100644
--- a/macros/latex-dev/base/ltfilehook.dtx
+++ b/macros/latex-dev/base/ltfilehook.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2020-2021
+% Copyright (C) 2020-2022
% Frank Mittelbach, Phelype Oleinik & LaTeX Team
%
% This file is part of the LaTeX base system.
@@ -471,7 +471,7 @@
% the level value and search further for \texttt{LEVEL} with that value
% which should then be the \texttt{START} level of the file you are in.
%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
%
%
% \section{The Implementation}
diff --git a/macros/latex-dev/base/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx
index 4c24716df6..9b31b50197 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -106,7 +106,7 @@
% If the file exists on the system, execute \emph{then} and input
% \emph{NAME} otherwise execute \emph{else}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v1.0a}{1994/03/07}{Initial version, split from latex.dtx}
% \changes{v1.0a}{1994/03/07}{Long lines wrapped to 72 columns}
diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx
index 40017a205a..46c7ded4aa 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltfinal.dtx}
- [2021/09/06 v2.2q LaTeX Kernel (Final Settings)]
+ [2021/12/07 v2.2q LaTeX Kernel (Final Settings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltfinal.dtx}
@@ -57,11 +57,14 @@
%
%
% \section{Final settings}
-% This section contains the final settings for \LaTeX. It initializes
-% some debugging and typesetting parameters, sets the default
-% |\catcode|s and uc/lc codes, and inputs the hyphenation file.
%
-% \StopEventually{}
+% This section contains the final settings for \LaTeX. It initializes
+% some debugging and typesetting parameters, sets the default
+% |\catcode|s and uc/lc codes, and inputs the hyphenation file.
+%
+%
+%
+% \MaybeStop{}
%
% \changes{v0.1a}{1994/03/07}{Initial version, split from latex.dtx}
% \changes{v0.1a}{1994/03/07}{Remove oldcomments environment}
diff --git a/macros/latex-dev/base/ltfloat.dtx b/macros/latex-dev/base/ltfloat.dtx
index ac3b641817..8b5b92759a 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -83,7 +83,7 @@
% For example, `pht' specifies that the float can appear in any of
% three locations: page, here or top.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/ltfntcmd.dtx b/macros/latex-dev/base/ltfntcmd.dtx
index 6c4ec4b3d1..64064abcb5 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -271,7 +271,7 @@
% amstex.sty} is used as this version can cause space to be removed
% immediately before the |\/|.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{The implementation}
diff --git a/macros/latex-dev/base/ltfssaxes.dtx b/macros/latex-dev/base/ltfssaxes.dtx
index 86c84b111f..843e8b544c 100644
--- a/macros/latex-dev/base/ltfssaxes.dtx
+++ b/macros/latex-dev/base/ltfssaxes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2021
+% Copyright (C) 2019-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -66,7 +66,7 @@
%
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v1.0h}{2020/12/04}{Reorganized the rollback data}
%
diff --git a/macros/latex-dev/base/ltfssbas.dtx b/macros/latex-dev/base/ltfssbas.dtx
index 1f30372d06..d013ec0ecb 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -76,7 +76,7 @@
% completely accurate.
% \end{quote}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v3.0v}{1998/08/17}{(RmS) Documentation fixes.}
% \changes{v3.0j}{1995/10/22}{(RmS) New size function macro
@@ -2257,3 +2257,13 @@
%
% \Finale
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+
+^^A Needed for emacs
+^^A
+^^A Local Variables:
+^^A mode: latex
+^^A coding: utf-8-unix
+^^A End:
+
diff --git a/macros/latex-dev/base/ltfsscmp.dtx b/macros/latex-dev/base/ltfsscmp.dtx
index 03be855127..09f43a0d94 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -82,7 +82,7 @@
% kernel and made available via \textsf{latexrelease} package so that
% backward compatibility remains ensured for very old documents.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v3.0b}{1995/06/15}
diff --git a/macros/latex-dev/base/ltfssdcl.dtx b/macros/latex-dev/base/ltfssdcl.dtx
index 4f2cabd613..65bc40803e 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -77,7 +77,7 @@
% completely accurate.
% \end{quote}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Interface Commands}
%
diff --git a/macros/latex-dev/base/ltfssini.dtx b/macros/latex-dev/base/ltfssini.dtx
index f817fdd847..12e3b6289b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -70,7 +70,7 @@
% distribution, or \emph{The \LaTeX\ Companion} for higher level
% documentation of these commands.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v3.0i}{1998/08/17}{(RmS) Minor documentation fixes.}
diff --git a/macros/latex-dev/base/ltfsstrc.dtx b/macros/latex-dev/base/ltfsstrc.dtx
index f562a4fa90..699fd2c594 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -138,7 +138,7 @@
% \end{description}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{A driver for this document}
%
diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf
index e6b9391438..12c7438683 100644
--- a/macros/latex-dev/base/lthooks-code.pdf
+++ b/macros/latex-dev/base/lthooks-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf
index 4f1d9c820d..76321bbfe0 100644
--- a/macros/latex-dev/base/lthooks-doc.pdf
+++ b/macros/latex-dev/base/lthooks-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/lthooks-doc.tex b/macros/latex-dev/base/lthooks-doc.tex
index a51e2cd6e0..b5f3622a17 100644
--- a/macros/latex-dev/base/lthooks-doc.tex
+++ b/macros/latex-dev/base/lthooks-doc.tex
@@ -3,5 +3,6 @@
\AtBeginDocument{\OnlyDescription
% \let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
}
\input{lthooks.dtx}
diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx
index 5b3d80e984..e07658fa88 100644
--- a/macros/latex-dev/base/lthooks.dtx
+++ b/macros/latex-dev/base/lthooks.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2020-2021
+% Copyright (C) 2020-2022
% Frank Mittelbach, Phelype Oleinik & LaTeX Team
%
% This file is part of the LaTeX base system.
@@ -32,27 +32,12 @@
%
% \begin{macrocode}
\def\lthooksversion{v1.0s}
-\def\lthooksdate{2021/09/28}
+\def\lthooksdate{2022/01/06}
% \end{macrocode}
%
%<*driver>
\documentclass{l3doc}
-% bug fix fo l3doc.cls
-\ExplSyntaxOn
-\cs_set_protected:Npn \__codedoc_macro_typeset_one:nN #1#2
- {
- \vbox_set:Nn \l__codedoc_macro_box
- {
- \vbox_unpack_drop:N \l__codedoc_macro_box
- \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2
- \MacroFont % <----- without it the \ is in lmr10 if a link is made
- \
- } }
- }
- \int_incr:N \l__codedoc_macro_int
- }
-\ExplSyntaxOff
\providecommand\InternalDetectionOff{}
\providecommand\InternalDetectionOn{}
@@ -798,6 +783,7 @@
% \begin{function}{\ShowHook,\LogHook}
% \begin{syntax}
% \cs{ShowHook} \Arg{hook}
+% \cs{LogHook} \Arg{hook}
% \end{syntax}
% Displays information about the \meta{hook} such as
% \begin{itemize}
@@ -1096,6 +1082,7 @@
% \begin{function}{\hook_show:n,\hook_log:n}
% \begin{syntax}
% \cs{hook_show:n} \Arg{hook}
+% \cs{hook_log:n} \Arg{hook}
% \end{syntax}
% Displays information about the \meta{hook} such as
% \begin{itemize}
@@ -1502,9 +1489,6 @@
% Like \cs{AtBeginDocument} but for the \hook{enddocument} hook.
% \end{function}
%
-% There is also \cs{AtBeginDvi} which is discussed in conjunction
-% with the shipout hooks.
-%
% \bigskip
%
% The few hooks that existed previously in \LaTeXe{} used internally
@@ -1962,7 +1946,7 @@
% \end{description}
%
%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
%
%
% \section{The Implementation}
@@ -2219,7 +2203,7 @@
% A token list holding the relation between \meta{label1} and
% \meta{label2} in the \meta{hook}. The \meta{labels} are lexically
% (reverse) sorted to ensure that two labels always point to the same
-% token list. For global rules, the \meta{hook} name is |??|.
+% token list. For global rules, the \meta{hook} name is \texttt{??}.
%
% \item[\cs{@@\textvisiblespace\meta{hook}}] The code that is actually executed
% when the hook is called in the document is stored in this token
@@ -3589,7 +3573,7 @@
% expansion in the code later on.
%
% \cs{@@\textvisiblespace??} isn't used, but it has to be defined to trick
-% the code into thinking that \verb=??= is actually a hook.
+% the code into thinking that \texttt{??} is actually a hook.
% \begin{macrocode}
\prop_new:c {g_@@_??_code_prop}
\prop_new:c {@@~??}
@@ -4169,7 +4153,7 @@
% \meta{hook-code-plist}. We are about to apply the next rule and
% enter it into the data structure. \cs{@@_apply_label_pair:nnn} will
% just call \cs{@@_label_if_exist_apply:nnnF} for the \meta{hook}, and
-% if no rule is found, also try the \meta{hook} name \verb=??=
+% if no rule is found, also try the \meta{hook} name \texttt{??}
% denoting a default hook rule.
%
% \cs{@@_label_if_exist_apply:nnnF} will check if the rule exists for
@@ -4286,7 +4270,7 @@
% out to be a real issue, we can improve the code.
%
% Here the code is removed from \cs{l_@@_cur_hook_tl} rather than
-% \verb=#3= because the latter may be \verb=??=, and the default
+% \verb=#3= because the latter may be \texttt{??}, and the default
% hook doesn't store any code. Removing it instead from \cs{l_@@_cur_hook_tl}
% makes the default rules \verb=->= and \verb=<-= work properly.
% \begin{macrocode}
@@ -4535,7 +4519,7 @@
% \meta{inline function} is executed with |#1|${}={}$\meta{relation},
% |#2|${}={}$\meta{label_1}\verb=|=\meta{label_2},
% and |#3|${}={}$\meta{hook} (the latter may be the argument |#1| to
-% \cs{@@_list_rules:nn}, or |??| if it is a default rule).
+% \cs{@@_list_rules:nn}, or \texttt{??} if it is a default rule).
% \begin{macrocode}
\cs_new_protected:Npn \@@_list_rules:nn #1 #2
{
@@ -5596,4 +5580,10 @@
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+^^A Needed for emacs
+^^A
+^^A Local Variables:
+^^A mode: latex
+^^A coding: utf-8-unix
+^^A End:
diff --git a/macros/latex-dev/base/lthyphen.dtx b/macros/latex-dev/base/lthyphen.dtx
index 9244db0642..b7cede1175 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -65,7 +65,7 @@
% of \texttt{hyphen.ltx}. See the comments below for additional
% information.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% To produce the printed version of this file the following code
% is used. It can be extracted with the \dst{} program, or one can run
diff --git a/macros/latex-dev/base/ltidxglo.dtx b/macros/latex-dev/base/ltidxglo.dtx
index 75a80cd439..395fe83975 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -68,7 +68,7 @@
%
% \DescribeMacro{\glossary} Make a glossary entry for |#1|.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/31}{Initial version of ltidxbib.dtx,
diff --git a/macros/latex-dev/base/ltkeys.dtx b/macros/latex-dev/base/ltkeys.dtx
new file mode 100644
index 0000000000..3c58585de9
--- /dev/null
+++ b/macros/latex-dev/base/ltkeys.dtx
@@ -0,0 +1,454 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2021-2022
+% The LaTeX Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -------------------------------------------
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+%
+% \iffalse
+%%% From File: ltkeys.dtx
+%
+%<*driver>
+% \fi
+\ProvidesFile{ltkeys.dtx}
+ [2021/11/30 v1.0a LaTeX Kernel (Kevyal options)]
+% \iffalse
+\documentclass{l3doc}
+\GetFileInfo{ltkeys.dtx}
+\title{\filename}
+\date{\filedate}
+\author{%
+ \LaTeX{} Team}
+
+\begin{document}
+ \maketitle
+ \DocInput{ltkeys.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \section{Creating and using keyval options}
+%
+% As with any key--value input, using key--value pairs as package or
+% class options has two parts: creating the key options and setting (using)
+% them. Options created in this way \emph{may} be used after package loading
+% as general key--value settings: this will depend on the nature of the
+% underlying code.
+%
+% \begin{function}{\DeclareKeys}
+% \begin{syntax}
+% \cs{DeclareKeys} \oarg{family} \marg{declarations}
+% \end{syntax}
+% Creates a series of options from a comma-separated \meta{declarations} list.
+% Each entry in this list is a key--value pair, with the \meta{key} having one
+% or more \meta{properties}. A small number of \enquote{basic}
+% \meta{properties} are described below. The full range of properties,
+% provided by \pkg{l3keys}, can also be used for more powerful processing.
+% See \texttt{interface3} for the full details.
+%
+% The basic properties provided here are
+% \begin{itemize}
+% \item \texttt{.if} --- sets a \TeX{} \cs{if...} switch
+% \item \texttt{.store} --- stores a value in a macro
+% \item \texttt{.usage} -- defines whether the option can be given only
+% when loading (\texttt{load}), in the preamble (\texttt{preamble}) or
+% has no limitation on scope (\texttt{general})
+% \end{itemize}
+% The part of the \meta{key} before the \meta{property} is the \meta{name},
+% with the \meta{value} working with the \meta{property} to define the
+% behaviour of the option.
+%
+% For example, with
+% \begin{verbatim}
+% \DeclareKeys[mypkg]
+% {
+% draft.if = @mypkg@draft ,
+% draft.usage = preamble ,
+% name.store = \@mypkg@name ,
+% name.usage = load ,
+% second-name.store = \@mypkg@other@name
+% }
+% \end{verbatim}
+% three options would be create. The option \texttt{draft} can be given
+% anywhere in the preamble, and will set a switch called \cs{if@mypkg@draft}.
+% The option \texttt{name} can only be given during package loading, and will
+% save whatever value it is given in \cs{@mypkg@name}. Finally, the option
+% \texttt{second-name} can be given anywhere, and will save its value in
+% \cs{@mypkg@other@name}.
+%
+% Keys created \emph{before} the use of
+% \cs{ProcessKeyOptions}/\cs{ProcessKeyPackageOptions} act as package options.
+% \end{function}
+%
+% \begin{function}{\ProcessKeyOptions}
+% \begin{syntax}
+% \cs{ProcessKeyOptions} \oarg{family}
+% \end{syntax}
+% The \cs{ProcessKeyOptions} function is used to check the current
+% option list against the keys defined for \meta{family}. Global (class)
+% options and local (package) options are checked when this function
+% is called in a package.
+% \end{function}
+%
+% \begin{function}{\ProcessKeyPackageOptions}
+% \begin{syntax}
+% \cs{ProcessKeyPackageOptions} \oarg{family}
+% \end{syntax}
+% This function works in a similar manner to \cs{ProcessKeyOptions}.
+% When used in a package, \cs{ProcessKeyPackageOptions}
+% will not examine any global (class) class options available. In contrast,
+% \cs{ProcessKeyOptions} does parse class options (in common with the
+% classical \cs{ProcessOptions} command).
+% \end{function}
+%
+% \begin{function}{\SetKeys}
+% \begin{syntax}
+% \cs{SetKeys} \oarg{family} \Arg{keyvals}
+% \end{syntax}
+% Sets (applies) the explicit list of \meta{keyvals} for the \meta{family}:
+% it the latter is not given, the value of \cs{@currname} used. This command
+% may be used within a package to set options before or after using
+% \cs{ProcessKeyOptions}/\cs{ProcessKeyPackageOptions}.
+% \end{function}
+%
+% \StopEventually{}
+%
+% \subsection{Implementation of \pkg{ltkeys}}
+%
+% \begin{macrocode}
+%<@@=keys>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<*2ekernel>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \clist_put_right:Nn { Nv }
+% \end{macrocode}
+%
+% \begin{macro}{\l_@@_options_clist}
+% A single list is used for all options, into which they are collected
+% before processing.
+% \begin{macrocode}
+\clist_new:N \l_@@_options_clist
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\l_@@_options_loading_bool}
+% Used to indicate we are in the loading phase: controls the outcome
+% of warnings.
+% \begin{macrocode}
+\bool_new:N \l_@@_options_loading_bool
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_options:Nn, \@@_options:NV}
+% \begin{macro}{\@@_options_end:}
+% The main function calls functions to collect up the global and local
+% options into \cs{l_@@_options_clist} before calling the
+% underlying functions to actually do the processing. So that a suitable
+% message is produced if the option is unknown, the special
+% \texttt{unknown} key is set if it does not already exist for the
+% current family, and is cleaned up afterwards if required. To allow
+% the \LaTeXe{} layer to know this mechanism is active, and to deal
+% with the key family not matching the file name, we store the family
+% in all cases.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options:Nn #1#2
+ {
+ \cs_gset_nopar:cpn { opt@fam@\@currname.\@currext } {#2}
+ \cs_set_protected:Npn \@@_option_end: { }
+ \clist_clear:N \l_@@_options_clist
+ \@@_options_global:Nn #1 {#2}
+ \@@_options_local:
+ \keys_if_exist:nnF {#2} { unknown }
+ {
+ \keys_define:nn {#2}
+ {
+ unknown .code:n =
+ {
+ \msg_error:nnxx { keys } { option-unknown }
+ { \l_keys_key_str } { \@currname }
+ }
+ }
+ \cs_set_protected:Npn \@@_option_end:
+ { \keys_define:nn {#2} { unknown .undefine: } }
+ }
+ \bool_set_true:N \l_@@_options_loading_bool
+ \keys_set:nV {#2} \l_@@_options_clist
+ \bool_set_false:N \l_@@_options_loading_bool
+ \cs_set_eq:NN \@unprocessedoptions \scan_stop:
+ \@@_option_end:
+ \@@_options_loaded:n {#2}
+ }
+\cs_generate_variant:Nn \@@_options:Nn { NV }
+\msg_new:nnnn { keys } { option-unknown }
+ { Unknown~option~'#1'~for~package~#2. }
+ {
+ LaTeX~has~been~asked~to~set~an~option~called~'#1'~
+ but~the~#2~package~has~not~created~an~option~with~this~name.
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_options_global:Nn}
+% Global (class) options are handled differently for \LaTeXe{} packages
+% and classes. Hence this function is essentially a check on the current
+% file type. The initial test is needed as \LaTeXe{} allows variables to
+% be equal to \cs{scan_stop:}, which is usually forbidden in \pkg{expl3}
+% code.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options_global:Nn #1#2
+ {
+ \cs_if_eq:NNF \@classoptionslist \scan_stop:
+ {
+ \cs_if_eq:NNTF \@currext \@clsextension
+ { \@@_options_class:n {#2} }
+ {
+ \bool_if:NT #1
+ { \@@_options_package:n {#2} }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_options_class:n}
+% For classes, each option (stripped of any content after |=|)
+% is checked for existence as a key. If found, the option is added to
+% the combined list for processing. On the other hand, unused options
+% are stored up in \cs{@unusedoptionlist}. Before any of that, though,
+% there is a simple check to see if there is an |unknown| key. If there
+% is, then \emph{everything} will match and the mapping can be skipped.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options_class:n #1
+ {
+ \cs_if_free:cF { opt@ \@currname . \@currext }
+ {
+ \keys_if_exist:nnTF {#1} { unknown }
+ {
+ \clist_put_right:Nv \l_@@_options_clist
+ { opt@ \@currname . \@currext }
+ }
+ {
+ \clist_map_inline:cn { opt@ \@currname . \@currext }
+ {
+ \keys_if_exist:neTF
+ {#1} { \@@_remove_equals:n {##1} }
+ { \clist_put_right:Nn \l_@@_options_clist {##1} }
+ { \clist_put_right:Nn \@unusedoptionlist {##1} }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_options_package:n}
+% For global options when processing a package, the tasks are slightly
+% different from those for a class. The check is the same, but here
+% there is nothing to do if the option is not applicable. Each valid
+% option also needs to be removed from \cs{@unusedoptionlist}.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options_package:n #1
+ {
+ \clist_map_inline:Nn \@classoptionslist
+ {
+ \keys_if_exist:neT {#1} { \@@_remove_equals:n {##1} }
+ {
+ \clist_put_right:Nn \l_@@_options_clist {##1}
+ \clist_remove_all:Nn \@unusedoptionlist {##1}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_options_local:}
+% If local options are found, the are added to the processing list.
+% \LaTeXe{} stores options for each file in a macro which may or may not
+% exist, hence the need to use \cs{cs_if_exist:c}.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options_local:
+ {
+ \cs_if_eq:NNF \@currext \@clsextension
+ {
+ \cs_if_exist:cT { opt@ \@currname . \@currext }
+ {
+ \clist_put_right:Nv \l_@@_options_clist
+ { opt@ \@currname . \@currext }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\@@_remove_equals:n}
+% \begin{macro}[EXP]{\@@_remove_equals:w}
+% As the name suggests, this is a simple function to remove an equals
+% sign from the input. This is all wrapped up in an \texttt{n} function
+% so that there will always be a sign available.
+% \begin{macrocode}
+\cs_new:Npn \@@_remove_equals:n #1
+ { \@@_remove_equals:w #1 = \s_@@_stop }
+\cs_new:Npn \@@_remove_equals:w #1 = #2 \s_@@_stop { \exp_not:n {#1} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{The document interfaces}
+%
+% \begin{macro}{\DeclareKeys}
+% Defining key options is quite straight-forward: we have an intermediate
+% function to allow for potential set-up steps.
+% \begin{macrocode}
+\NewDocumentCommand \DeclareKeys { o +m }
+ {
+ \IfNoValueTF {#1}
+ { \exp_args:NV \keys_define:nn \@currname }
+ { \keys_define:nn {#1} }
+ {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ProcessKeyOptions, \ProcessKeyPackageOptions}
+% We need to deal with the older interface from \pkg{l3keys2e} here: it had
+% a mandatory argument. We can mop that up using a look-ahead, and then
+% exploit that information to determine whether the package option handling
+% is set up for the new approach for clash handling.
+% \begin{macrocode}
+\NewDocumentCommand \ProcessKeyOptions { o }
+ {
+ \IfNoValueTF {#1}
+ { \@@_options:NV \c_true_bool \@currname }
+ { \@@_options:Nn \c_true_bool {#1} }
+ }
+\NewDocumentCommand \ProcessKeyPackageOptions { o }
+ {
+ \IfNoValueTF {#1}
+ { \@@_options:NV \c_false_bool \@currname }
+ { \@@_options:Nn \c_false_bool {#1} }
+ }
+\@onlypreamble \ProcessKeyOptions
+\@onlypreamble \ProcessKeyPackageOptions
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Option usage scope}
+%
+% \begin{macro}{\@@_options_loaded:n}
+% \begin{macro}{\@@_options_loaded:nn}
+% Indicates that the load-time options for a package have been processed:
+% once this has happened, make them unavailable either with a warning or
+% an error.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_options_loaded:n #1
+ {
+ \prop_get:NnNT \l_keys_usage_load_prop {#1} \l_@@_tmpa_tl
+ {
+ \clist_map_inline:Nn \l_@@_tmpa_tl
+ {
+ \keys_define:nn {#1}
+ {
+ ##1 .code:n =
+ \@@_options_loaded:nn {#1} {##1}
+ }
+ }
+ }
+ }
+\cs_new_protected:Npn \@@_options_loaded:nn #1#2
+ {
+ \bool_if:NTF \l_@@_options_loading_bool
+ {
+ \msg_warning:nnxx { keys } { load-option-ignored }
+ { \use:c { opt@fam@\@currname.\@currext } } {#2}
+ }
+ { \msg_error:nnnn { keys } { load-only } {#1} {#2} }
+ }
+\msg_new:nnn { keys } { load-option-ignored }
+ { Package~"#1"~has~already~been~loaded:~ignoring~load-time~option~"#2". }
+\msg_new:nnnn { keys } { load-only }
+ { Key~"#2"~may~only~be~used~in~the~during~loading~of~package~"#1". }
+ {
+ LaTeX~was~asked~to~set~a~key~called~"#2",~but~this~is~only~allowed~
+ in~the~optional~argument~when~loading~package~"#1".
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Disable all preamble options in one shot.
+% \begin{macrocode}
+\tl_gput_left:Nn \@kernel@after@begindocument
+ {
+ \prop_map_inline:Nn \l_keys_usage_preamble_prop
+ {
+ \clist_map_inline:nn {#2}
+ {
+ \keys_define:nn {#1}
+ {
+ ##1 .code:n =
+ \msg_error:nnn { keys } { preamble-only } {##1}
+ }
+ }
+ }
+ }
+\msg_new:nnnn { keys } { preamble-only }
+ { Key~"#1"~may~only~be~used~in~the~preamble. }
+ {
+ LaTeX~was~asked~to~set~a~key~called~"#1",~but~this~is~only~allowed~
+ before~\begin{document}.~You~will~need~to~set~the~key~earlier.
+ }
+% \end{macrocode}
+%
+% \subsection{General key setting}
+%
+% \begin{macro}{\SetKeys}
+% A simple wrapper.
+% \begin{macrocode}
+\NewDocumentCommand \SetKeys { o +m }
+ {
+ \IfNoValueTF {#1}
+ { \keys_set:Vn \@currname }
+ { \keys_set:nn {#1} }
+ {#2}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</2ekernel>
+% \end{macrocode}
diff --git a/macros/latex-dev/base/ltlength.dtx b/macros/latex-dev/base/ltlength.dtx
index 1be147547e..f979dd4e23 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -83,7 +83,7 @@
% \DescribeMacro{\settodepth}
% Set the length, |#1| to the depth of a box containing |#2|.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltlists.dtx b/macros/latex-dev/base/ltlists.dtx
index fecb312588..d0413dad08 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -135,7 +135,7 @@
% when it occurs immediately after an |\item| command in an enclosing
% list.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/07}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/ltlogos.dtx b/macros/latex-dev/base/ltlogos.dtx
index 132eaf636f..56453f73db 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -65,7 +65,7 @@
%
% Various logos are defined here.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macro}{\TeX}
% The \TeX{} logo, adjusted so that a full stop after the logo
diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx
index 258ac48297..18623fd677 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-2021
+% Copyright (C) 2015-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -28,7 +28,7 @@
\ProvidesFile{ltluatex.dtx}
%</driver>
%<*tex>
-[2021/10/15 v1.1v
+[2021/12/27 v1.1x
%</tex>
%<plain> LuaTeX support for plain TeX (core)
%<*tex>
@@ -120,6 +120,17 @@
% tables from $1$ so |\luafunction0| is not available).
%
% \noindent
+% \DescribeMacro{\newluacmd}
+% |\newluadef{|\meta{function}|}|\\
+% Like \cs{newluafunction}, but defines the command using \cs{luadef}
+% instead of just assigning an integer.
+%
+% \noindent
+% \DescribeMacro{\newprotectedluacmd}
+% |\newluadef{|\meta{function}|}|\\
+% Like \cs{newluacmd}, but the defined command is not expandable.
+%
+% \noindent
% \DescribeMacro{\newwhatsit}
% |\newwhatsit{|\meta{whatsit}|}|\\
% Defines a custom \cs{whatsit}, indexed from~$1$.
@@ -380,7 +391,7 @@
%
% \endgroup
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
@@ -722,6 +733,22 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\newluacmd, \newprotectedluacmd}
+% \changes{v1.1x}{2021/12/27}{Macros added}
+% Additionally two variants are provided to make the passed control
+% sequence call the function directly.
+% \begin{macrocode}
+\def\newluacmd{%
+ \e@alloc\luafunction\luadef
+ \e@alloc@luafunction@count\m@ne\e@alloc@top
+}
+\def\newprotectedluacmd{%
+ \e@alloc\luafunction{\protected\luadef}
+ \e@alloc@luafunction@count\m@ne\e@alloc@top
+}
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Custom whatsits}
%
% \begin{macro}{\newwhatsit}
@@ -1351,6 +1378,8 @@ local callbacktypes = callbacktypes or {
% \changes{v1.1k}{2019/10/02}{mlist\_to\_hlist is \texttt{exclusive}}
% \changes{v1.1l}{2020/02/02}{post\_linebreak\_filter is \texttt{reverselist}}
% \changes{v1.1p}{2020/08/01}{new\_graf is \texttt{exclusive}}
+% \changes{v1.1w}{2021/11/17}{hpack\_quality is \texttt{exclusive}}
+% \changes{v1.1w}{2021/11/17}{vpack\_quality is \texttt{exclusive}}
% \begin{macrocode}
contribute_filter = simple,
buildpage_filter = simple,
@@ -1361,8 +1390,8 @@ local callbacktypes = callbacktypes or {
post_linebreak_filter = reverselist,
hpack_filter = list,
vpack_filter = list,
- hpack_quality = list,
- vpack_quality = list,
+ hpack_quality = exclusive,
+ vpack_quality = exclusive,
pre_output_filter = list,
process_rule = exclusive,
hyphenate = simple,
@@ -1516,11 +1545,11 @@ end
% Handler for |list| callbacks.
% \changes{v1.0k}{2015/12/02}{resolve name and i.description (PHG)}
% \changes{v1.1s}{2020/12/02}{Fix return value of list callbacks}
+% \changes{v1.1w}{2021/11/17}{Never pass on \texttt{true} return values for list callbacks}
% \begin{macrocode}
local function list_handler(name)
return function(head, ...)
local ret
- local alltrue = true
for _,i in ipairs(callbacklist[name]) do
ret = i.func(head, ...)
if ret == false then
@@ -1531,18 +1560,17 @@ local function list_handler(name)
return false
end
if ret ~= true then
- alltrue = false
head = ret
end
end
- return alltrue and true or head
+ return head
end
end
% \end{macrocode}
% Default for user-defined |list| and |reverselist| callbacks without explicit default.
% \begin{macrocode}
-local function list_handler_default()
- return true
+local function list_handler_default(head)
+return head
end
% \end{macrocode}
% Handler for |reverselist| callbacks.
@@ -1551,7 +1579,6 @@ end
local function reverselist_handler(name)
return function(head, ...)
local ret
- local alltrue = true
local callbacks = callbacklist[name]
for i = #callbacks, 1, -1 do
local cb = callbacks[i]
@@ -1564,11 +1591,10 @@ local function reverselist_handler(name)
return false
end
if ret ~= true then
- alltrue = false
head = ret
end
end
- return alltrue and true or head
+ return head
end
end
% \end{macrocode}
@@ -1899,14 +1925,10 @@ callback_register("mlist_to_hlist", function(head, display_type, need_penalties)
if current == false then
flush_list(head)
return nil
- elseif current == true then
- current = head
end
current = call_callback("mlist_to_hlist", current, display_type, need_penalties)
local post = call_callback("post_mlist_to_hlist_filter", current, display_type, need_penalties)
- if post == true then
- return current
- elseif post == false then
+ if post == false then
flush_list(current)
return nil
end
diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf
index 88335534b9..6d45e9e955 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 59e0d89a10..9f000a41b4 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -74,7 +74,7 @@
% This file contains a lot of the original plain \TeX{} code, as well
% as the \LaTeX{} environments for math. It still needs sorting out.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltmeta.dtx b/macros/latex-dev/base/ltmeta.dtx
new file mode 100644
index 0000000000..e1c296ae1d
--- /dev/null
+++ b/macros/latex-dev/base/ltmeta.dtx
@@ -0,0 +1,189 @@
+% \iffalse meta-comment
+%
+%% File: ltmeta.dtx (C) Copyright 2021
+% Frank Mittelbach, LaTeX Team
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+%
+%%% From File: ltmeta.dtx
+%
+% \begin{macrocode}
+\def\ltmetaversion{v1.0a}
+\def\ltmetadate{2021/12/07}
+% \end{macrocode}
+%<*driver>
+\documentclass{l3doc}
+
+%\usepackage{ltmeta}
+
+% Fixing footnotes in functions and variables: this should be in l3doc!
+
+\newcommand\fixfootnote[2]{\footnotemark
+ \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
+\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
+
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{ltmeta.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \providecommand\hook[1]{\texttt{#1}}
+% \providecommand\env[1]{\texttt{#1}}
+%
+%
+%
+% \title{The \texttt{ltmeta.dtx} code\thanks{This file has version
+% \ltmetaversion\ dated \ltmetadate, \copyright\ \LaTeX\
+% Project.}}
+% \author{Frank Mittelbach}
+%
+% \maketitle
+%
+%
+% \begin{abstract}
+% This code defines the \cs{DocumentMetadata} interface.
+% \end{abstract}
+%
+% \tableofcontents
+%
+%
+% \section{Introduction}
+%
+%
+% In the past there was no dedicated location to declare settings
+% concerning a document as a whole. Settings are placed somewhere
+% in the preamble or with the class options or even with some
+% package options. For some settings this can be too late, for
+% example the pdf version can no longer be changed if a package has
+% used code which already opened the PDF.
+%
+% \cs{DocumentMetadata} as a new command unifies such settings in
+% one place. It must be used before \cs{documentclass} but can be
+% issued more than once there.
+%
+% At the moment most of the code run by \cs{DocumentMetadata} is
+% external to the format and subject to change. This includes the
+% supported key/values.
+%
+% For that reason all that happens right now in the format is to
+% look for suitable support files and if found, to redirect the
+% processing to them.
+%
+% \subsection{\cs{DocumentMetadata}}
+%
+% \begin{function}{\DocumentMetadata}
+% \begin{syntax}
+% \cs{DocumentMetadata}\Arg{key-value list}
+% \end{syntax}
+% \end{function}
+%
+%
+%
+% The keys defined for \cs{DocumentMetadata}
+% currently allow to set the PDF version, to set the PDF \texttt{/Lang},
+% to uncompress a PDF, to set the language and to declare a few PDF standards
+% and some color profiles.
+%
+% \cs{DocumentMetadata} is also used to
+% activate the new PDF management code and it loads
+% a number of required files for the PDF management code.
+% As this forces the loading of the backend files, a backend
+% which can't be detected automatically like |dvipdfmx|,
+% must be set in the first \cs{DocumentMetadata} call (if there is more than one).
+%
+% The full set of keys currently supported is documented in \texttt{documentmetadata-support.pdf}
+% for now.
+%
+%
+% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+%
+%
+% \section{The Implementation}
+%
+%
+%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+% Not needed yet but \ldots
+% \begin{macrocode}
+%\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\NewModuleRelease{2021/06/01}{ltmeta}
+%<latexrelease> {Document Metadata handling}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\protected\def\DocumentMetadata{%
+ \InputIfFileExists{documentmetadata-support.ltx}%
+ {}%
+% \end{macrocode}
+% The above file is changing \cs{DocumentMetadata} to a suitable
+% definition (or so we hope), so that we can try again --- if not
+% tough.
+%
+% If the file can't be found we say so and carry on without it.
+% \begin{macrocode}
+ {%
+ \@latex@error{No support files for
+ \noexpand\DocumentMetadata found}
+ {Is the 'LaTeX-lab' bundle installed?%
+ \MessageBreak
+ Without it, the declaration is ignored.}%
+% \end{macrocode}
+% No point in trying this more than once if there are several calls
+% in the document.
+% \begin{macrocode}
+ \let\DocumentMetadata\@gobble
+ }%
+ \DocumentMetadata
+}
+% \end{macrocode}
+%
+%
+%
+%
+%
+% \begin{macrocode}
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{ltmeta}%
+%<latexrelease> {Undo Document Metadata handling}
+%<latexrelease>
+%<latexrelease>\let\DocumentMetadata\@undefined
+%<latexrelease>
+%<latexrelease>\EndModuleRelease
+% \end{macrocode}
+% Again for the future \ldots
+% \begin{macrocode}
+%\ExplSyntaxOff
+% \end{macrocode}
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+% \end{macrocode}
+%
+% Restore module prefix (if any):
+% \begin{macrocode}
+%<@@=>
+% \end{macrocode}
+%
+%
+%
+%
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
diff --git a/macros/latex-dev/base/ltmiscen.dtx b/macros/latex-dev/base/ltmiscen.dtx
index 6cc58907a0..b7b2bf5e31 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -81,7 +81,7 @@
% environments and related commands, the `flushing' environments,
% (|center|, |flushleft|, |flushright|), and |verbatim|.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf
index aaf1aedb2a..af545c21fe 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 406787c5f0..cba11c3ce3 100644
--- a/macros/latex-dev/base/ltnews.tex
+++ b/macros/latex-dev/base/ltnews.tex
@@ -38,9 +38,9 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{ltnews.tex}%
- [2021/06/07 v1.4d Master file for ltnews*.tex (LaTeX Project)]
+ [2021/11/12 v1.4d Master file for ltnews*.tex (LaTeX Project)]
-\providecommand*{\lastissue}{34}
+\providecommand*{\lastissue}{35}
\InputIfFileExists{ltnews-lastissue.cfg}{}{}
@@ -222,7 +222,11 @@
\def\y{|multicol}%
\ifx\x\y
\else
- \@latex@error{ltnews.tex: \string\usepackage[#1]{#2} found}\@ehc
+ \def\y{|color}%
+ \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 4179783fd4..1ab890fe99 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 3703f23f61..08ac57d27d 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 1d1284ca5d..39e5eb69ac 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 dfc78e4843..1d875dcd03 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 5644d1f86b..48f5b26526 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 e555e12df4..93f0963426 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 a6408f8aca..f6d36a762e 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 0a313664ba..527024fa18 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 3696f58f19..e8eb6f67a4 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 840f04fe72..d13f469dd6 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 445505966f..b4a0f5dd17 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 52ecba9918..ac32eab8d1 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 ea6fbd6d5e..d411bef57a 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 db3812e387..56cfd76661 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 b0205c8549..ba927184d0 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 d79a1b1b74..68cd1247e6 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 eb5684db03..1385507355 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 2d56515ca0..af14a53e34 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 08b736b4fe..ee0327a5c8 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 5ab159f0bb..c6a77e6e36 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 16b61b603d..51e82c1f02 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 6d27fee067..b4f6d19910 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 eff43ee46c..0f02498fd4 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 62b08324b7..b7a01bc208 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 8a902117fc..bc7e4244ba 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 08acf95df6..0cbbe49a5d 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 3ebbf0704d..e00f82dd75 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 61c96c81ae..b5fa7cb019 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 fb8b6a1539..89f68f003c 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 e143d5f4dd..3b1ea3f89c 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 8334c9c0ac..d1f12d79a4 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 17f9cd094a..7f7183ac0e 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 7a3603af62..2029148dc7 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 614c5c7d63..4dab20f53f 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 d2ecaf5b3b..ecdd021457 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 518aeda067..04491760b2 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 1cb3bf11c4..c6cf9a5d4b 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 f733c41dd4..43d388b29b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 7ec8810601..c9b1e7dc6c 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 d0d620eded..67c8925470 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 eea02d5344..f556f2a7b2 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 7551616154..8d1c91acfa 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-2021
+% Copyright (C) 2015-2022
% The LaTeX 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 a8727c72ac..44e8064b3c 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 99e9615074..29241766ca 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-2021
+% Copyright (C) 2015-2022
% The LaTeX 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 0e5a969ed5..35b80e46c5 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 44cd76a060..13d2fc8519 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-2021
+% Copyright (C) 2015-2022
% The LaTeX 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 5857ae116c..1b096ddcbc 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 735fda356e..5a9f480718 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-2021
+% Copyright (C) 2016-2022
% The LaTeX 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 fc3cc7060b..42a9e76e10 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 f0e7578b70..94b4c4818b 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-2021
+% Copyright (C) 2017-2022
% The LaTeX 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 410338cc85..7c45486bb2 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 ba17d26e5e..03c8c04205 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-2021
+% Copyright (C) 2017-2022
% The LaTeX 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 e88bfdcdb4..c1f63b59de 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 03d4a04ae1..28bfe0577c 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-2021
+% Copyright (C) 2017-2022
% The LaTeX 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 1cd9485123..b1de2fc801 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 749b927218..c06d4de347 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-2021
+% Copyright (C) 2018-2022
% The LaTeX 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 7f4bf25930..8bb8e3e732 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 35218ae875..928a14e4be 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/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf
index 5a1923988a..4ba4ff8185 100644
--- a/macros/latex-dev/base/ltnews32.pdf
+++ b/macros/latex-dev/base/ltnews32.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf
index 29c95d920b..4c0e50b65f 100644
--- a/macros/latex-dev/base/ltnews33.pdf
+++ b/macros/latex-dev/base/ltnews33.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf
index 8d4a258059..a6d8fbbd53 100644
--- a/macros/latex-dev/base/ltnews34.pdf
+++ b/macros/latex-dev/base/ltnews34.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews34.tex b/macros/latex-dev/base/ltnews34.tex
index badd25b97c..a6450b97c3 100644
--- a/macros/latex-dev/base/ltnews34.tex
+++ b/macros/latex-dev/base/ltnews34.tex
@@ -493,7 +493,8 @@ for which these are now the preferred replacements.
This optional argument
specifies the format of the counter, such as \cs{roman};
the default value is \cs{arabic}.
-
+Alternatively, you can use a starred form, in which case the format of the
+counter is not altered at all.
\subsection{Tests for package and class loading}
@@ -738,7 +739,7 @@ setting the new defaults.
\subsection{Use of \texttt{\textup{\#}} in \cs{textbf} and similar commands}
Previously you could not use the macro parameter character \texttt{\#}
in inline functions
-within the argument of \cs{texbf} or similar text font commands.
+within the argument of \cs{textbf} or similar text font commands.
An internal definition is now guarded with \cs{unexpanded}
so that the use of \texttt{\#} here no longer generates an error.
%
@@ -783,7 +784,7 @@ possibilities.
A \env{tabular} environment is typeset (internally) as an \env{array}
environment with special settings, and it therefore uses (hidden) math mode.
Since it is not in fact a math formula,
-no extra space from \cs{mathsuround} should be added
+no extra space from \cs{mathsurround} should be added
(the spacing around the \env{tabular} should not get changed).
%
Note that this bug has been present ``forever'', which shows that \cs{mathsurround}
@@ -830,7 +831,7 @@ brace groups inside \cs{r@}\meta{label}) However, if \pkg{nameref} or
arguments; this could cause low-level errors in some cases.
The code has therefore now been changed to avoid these errors.
%
-\sxissue{603948}
+\sxissue{q/603948}
\medskip
diff --git a/macros/latex-dev/base/ltnews35.pdf b/macros/latex-dev/base/ltnews35.pdf
new file mode 100644
index 0000000000..44fea294e8
--- /dev/null
+++ b/macros/latex-dev/base/ltnews35.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltnews35.tex b/macros/latex-dev/base/ltnews35.tex
new file mode 100644
index 0000000000..31bce8a115
--- /dev/null
+++ b/macros/latex-dev/base/ltnews35.tex
@@ -0,0 +1,583 @@
+% \iffalse meta-comment
+%
+% Copyright 2019-2021
+% The LaTeX Project and any individual authors listed elsewhere
+% in this file.
+%
+% This file is part of the LaTeX base system.
+% -——————————————
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3c
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% https://www.latex-project.org/lppl.txt
+% and version 1.3c or later is part of all distributions of LaTeX
+% version 2008 or later.
+%
+% This file has the LPPL maintenance status "maintained".
+%
+% The list of all files belonging to the LaTeX base distribution is
+% given in the file `manifest.txt'. See also `legal.txt' for additional
+% information.
+%
+% The list of derived (unpacked) files belonging to the distribution
+% and covered by LPPL is defined by the unpacking scripts (with
+% extension .ins) which are part of the distribution.
+%
+% \fi
+% Filename: ltnews35.tex
+%
+% This is issue 35 of LaTeX News.
+
+\NeedsTeXFormat{LaTeX2e}[2020-02-02]
+
+\documentclass{ltnews}
+
+%% Maybe needed only for Chris' inadequate system:
+\providecommand\Dash {\unskip \textemdash}
+
+%% NOTE: Chris' preferred hyphens!
+%%\showhyphens{parameters}
+%% \hyphenation{because parameters parameter}
+
+\usepackage[T1]{fontenc}
+
+\usepackage{lmodern,url,hologo}
+
+\usepackage{csquotes}
+\usepackage{multicol}
+\usepackage{color}
+
+\providecommand\hook[1]{\texttt{#1}}
+
+\providecommand\meta[1]{$\langle$\textrm{\itshape#1}$\rangle$}
+\providecommand\option[1]{\texttt{#1}}
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\Arg[1]{\texttt\{\meta{#1}\texttt\}}
+
+
+\providecommand\eTeX{\hologo{eTeX}}
+\providecommand\XeTeX{\hologo{XeTeX}}
+\providecommand\LuaTeX{\hologo{LuaTeX}}
+\providecommand\pdfTeX{\hologo{pdfTeX}}
+\providecommand\MiKTeX{\hologo{MiKTeX}}
+\providecommand\CTAN{\textsc{ctan}}
+\providecommand\TL{\TeX\,Live}
+\providecommand\githubissue[2][]{\ifhmode\unskip\fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(%
+ \href{https://github.com/latex3/latex2e/issues/\getfirstgithubissue#2 \relax}%
+ {github issue#1 #2}%
+ )}%
+ \par\smallskip}
+%% But Chris has to mostly disable \href for his TEXPAD app:
+%% \def\href #1{} % Only For Chris' deficient TeX engine
+
+% simple solution right now (just link to the first issue if there are more)
+\def\getfirstgithubissue#1 #2\relax{#1}
+
+\providecommand\sxissue[1]{\ifhmode\unskip\fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(\url{https://tex.stackexchange.com/#1})}\par}
+
+\providecommand\gnatsissue[2]{\ifhmode\unskip\fi
+ \quad\penalty500\strut\nobreak\hfill
+ \mbox{\small\slshape(%
+ \href{https://www.latex-project.org/cgi-bin/ltxbugs2html?pr=#1\%2F\getfirstgithubissue#2 \relax}%
+ {gnats issue #1/#2}%
+ )}%
+ \par}
+
+\let\cls\pkg
+\providecommand\env[1]{\texttt{#1}}
+\providecommand\acro[1]{\textsc{#1}}
+
+\vbadness=1400 % accept slightly empty columns
+
+
+\makeatletter
+% maybe not the greatest design but normally we wouldn't have subsubsections
+\renewcommand{\subsubsection}{%
+ \@startsection {subsubsection}{2}{0pt}{1.5ex \@plus 1ex \@minus .2ex}%
+ {-1em}{\@subheadingfont\colonize}%
+}
+\providecommand\colonize[1]{#1:}
+\makeatother
+
+\let\finalvspace\vspace % for document layout fixes
+
+% Undo ltnews's \verbatim@font with active < and >
+\makeatletter
+\def\verbatim@font{%
+ \normalsize\ttfamily}
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\providecommand\tubcommand[1]{}
+\tubcommand{\input{tubltmac}}
+
+\publicationmonth{June}
+\publicationyear{2022 --- DRAFT version for upcoming release}
+
+\publicationissue{35}
+
+\begin{document}
+
+\tubcommand{\addtolength\textheight{4.2pc}} % only for TUB
+
+\maketitle
+{\hyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000 \tableofcontents}
+
+\setlength\rightskip{0pt plus 3em}
+
+
+\medskip
+
+
+\section{Introduction}
+
+\section{Document metadata interface}
+
+Until recently there was no dedicated location to declare
+settings that affect a document as a whole. Settings had to be placed
+somewhere in the preamble or as class options or sometimes even as
+package options. For some such settings this may cause issues, e.g.,
+setting the PDF version is only possible as long as the PDF output
+file has not yet been opened which can be caused by loading one or the
+other package.
+
+For the \enquote{\LaTeX{} Tagged PDF project}~\cite{35:blueprint}
+further metadata about the whole document (and its processing) need to
+be specified and again this data should be all placed in a single
+well-defined place.
+
+For this reason we introduce the new command \cs{DocumentMetadata} to
+unify all such settings in one place. The command expects a key/value
+list that describes all document metadata for the current document. It
+is only allowed to be used at the very beginning of the document,
+i.e., the declaration has to be placed \emph{before}
+\cs{documentclass} and will issue an error if found later.
+
+
+At this point in time we only provide the bare command in the format,
+the actual processing of the key/value is defined externally and the
+necessary code will be loaded if the command is used. This scheme is
+chosen for two reasons: by adding the command in the kernel it is
+available to everybody without the need to load a special package
+using \cs{RequirePackage}. The actual processing, though, is external
+so that we can easily extend the code (e.g., offering additional keys
+or changing the internal processing) while the above mentioned project
+is progressing. Both together allows users to immediately benefit from
+intermediate results produced as part of the project, as well as
+offering the \LaTeX{} Project Team the flexibility to enable such
+intermediate results (for test purposes or even production use)
+in-between and independently of regular \LaTeX{} releases. Over time,
+tested and approved functionality can then seamlessly move into the
+kernel at a later stage without any alterations to documents already
+using it. At the same time, not using the new consolidated interface
+means that existing documents are in no way affected by the work that
+is carried out and is in a wider alpha or beta test phase.
+
+Documentation about the new command and
+already existing keys are in \file{l3meta.pdf} and \file{documentmetadata-support.pdf}
+and also in the documentation of the \pkg{pdfmanagement-testphase} package.
+
+
+\section{The \pkg{latex-lab} bundle}
+
+\emph{write about it}
+
+
+
+
+\section{New or improved commands}
+
+\subsection{A kevyal approach to option handling}
+
+The classical \LaTeXe{} method for handling options, using \cs{ProcessOptions},
+treats each entry in the list as a string. Many package authors have sought to
+extend this handling by treating each entry as a key--value pair (keyval)
+instead. To-date, this has required the use of additional packages, for example
+\pkg{kvoptions}.
+
+The \LaTeX{} team have for some time offered the package \pkg{l3keys2e} to
+allow keyvals defined using the L3 programming layer module \pkg{l3keys} to act
+as package options. This ability has now been integrated directly into the
+kernel. As part of this integration, the syntax for processing keyval options
+has been refined, such that
+\begin{verbatim}
+\ProcessKeyOptions
+\end{verbatim}
+will now automatically pick up the package name as the key \emph{family},
+unless explicitly given as an optional argument.
+\begin{verbatim}
+\ProcessKeyOptions[family]
+\end{verbatim}
+A version which does not consider global options,
+\cs{ProcessKeyPackageOptions}, is also available.
+
+To support creating key options in for this mechanism, the new command
+\cs{DeclareKeys} has been added. This works using the same general
+approach as \pkg{l3keys} or \pkg{pgfkeys}: each key has one or more
+\emph{properties} which define its behavior.
+
+Options for packages which use this new approach will not be checked for
+clashes by the kernel. Instead, each time a \cs{usepackage} or
+\cs{RequirePackage} line is encountered, the list of options given will be
+passed to \cs{ProcessKeyPackageOptions}. Options which can only be given
+the first time a package is loaded can be marked using the property
+\texttt{.usage = load}, and will result in a warning if used in a subsequent
+package loading line.
+
+Package options defined in this way can also be set within a package using
+the new command \cs{SetKeys}, which again takes an optional argument
+to specify the \emph{family}, plus a mandatory one for the options themselves.
+
+\subsection{Floating point and integer calculations}
+
+The L3 programming layer offers expandable commands for calculating
+floating point and integer values, but so far these functions have
+only been available to programmers, because they require
+\cs{ExplSyntaxOn} to be in force. To make them easily available at the
+document-level, the small package \pkg{xfp} defined \cs{fpeval} and
+\cs{inteval}.
+
+
+An example of use could be the following:
+\begin{verbatim}
+\LaTeX{} can now compute:
+\[ \frac{\sin (3.5)}{2} + 2\cdot 10^{-3}
+ = \fpeval{sin(3.5)/2 + 2e-3} \]
+\end{verbatim}
+which produces the following output:
+\begin{quote}
+\LaTeX{} can now compute:
+\[ \frac{\sin (3.5)}{2} + 2\cdot 10^{-3}
+ = \fpeval{sin(3.5)/2 + 2e-3} \]
+\end{quote}
+These two commands have now been moved into the kernel and in addition
+we also provide \cs{dimeval} and \cs{skipeval}. The details of their
+syntax are described in \file{usrguide3.pdf}. The command \cs{fpeval}
+offers a rich syntax allows for extensive calculations whereas the
+other three commands are essentially thin wrappers for \cs{numexpr},
+\cs{dimexpr}, and \cs{glueexpr} \Dash therefore inheriting some syntax
+peculiars and limitations in expressiveness.
+\begin{verbatim}
+\newcommand\calulateheight[1]{%
+ \setlength\textheight{\dimeval{\topskip
+ + \baselineskip * \inteval{#1-1}}}}
+\end{verbatim}
+The above, for example, calculates the appropriate \cs{textheight} for
+a given number of text lines.
+%
+\githubissue{711}
+
+
+\subsection{CamelCase commands for changing arguments to csnames}
+
+It is sometimes helpful to \enquote{construct} a command name on the
+fly rather than providing it as a single \cs{...} token. For these
+kind of tasks the \LaTeX3 programming layer offers a general mechanism
+(in form of \cs{exp\_args:N...} and
+\cs{cs\_generate\_variant:Nn}). However, when declaring new
+document-level commands with \cs{NewDocumentCommand} or
+\cs{NewCommandCopy}, etc.\ the L3 programming layer may not be active,
+and even if it is, mixing CamelCase syntax with L3 programming syntax
+is not really a good approach. We have therefore added the commands
+\cs{UseName} and \cs{ExpandArgs} to assist in such
+situations, e.g.,
+\begin{verbatim}
+\NewDocumentCommand\newcopyedit{mO{red}}
+ {\newcounter{todo#1}%
+ \ExpandArgs{c}\NewDocumentCommand{#1}{s m}%
+ {\stepcounter{todo#1}%
+ \IfBooleanTF {##1}%
+ {\todo[color=#2!10]%
+ {\UseName{thetodo#1}: ##2}}%
+ {\todo[inline,color=#2!10]%
+ {\UseName{thetodo#1}: ##2}}%
+ }%
+ }
+\end{verbatim}
+which provides a declaration mechanism for copyedit commands, so that
+\verb=\newcopyedit{FMi}[blue]= then defines \cs{FMi} (and the
+necessary counter).
+
+The command \cs{ExpandArgs} can be useful with the argument \texttt{cc} or
+\texttt{Nc} in
+combination with \cs{NewCommandCopy} if the old or new command name
+or both need constructing. Finally, there is \cs{UseName} which
+takes its argument and turns it into a command (i.e., a CamelCase
+version of \cs{@nameuse} (\LaTeXe) or \cs{use:c} (L3 programming
+layer)) which was also used in the example above.
+%
+\githubissue{735}
+
+
+
+\subsection{???}
+%
+\githubissue{???}
+
+
+\section{Code improvements}
+
+\subsection{\class{ltxdoc} gets a \option{nocfg} option}
+
+The \LaTeX{} sources are formatted with the \class{ltxdoc} class,
+which supports loading a local config file \file{ltxdoc.cfg}. In the
+past the \LaTeX{} sources used such a file but it was not distributed.
+As a result reprocessing the \LaTeX{} sources elsewhere showed
+formatting changes. We now distribute this file which means that it
+is loaded by default. With the option \option{nocfg} this can be
+prevented.
+
+
+\subsection{\pkg{doc} upgraded to version~3}
+
+After roughly three decades the \pkg{doc} package gets a cautious
+uplift, as already announced at the TUG conference 2019\Dash changes
+to \pkg{doc} are obviously always done in a leisurely manner.
+
+Given that most documentation is nowadays viewed on screen,
+\pkg{hyperref} support is added and by default enabled (suppress it
+with option \option{nohyperref} or alternatively with
+\option{hyperref}\texttt{=false}) so the internal cross-reference are
+properly resolved including those from the index back into the
+document.
+
+Furthermore, \pkg{doc} has now a general mechanism to define
+additional \enquote{doc} elements besides the two \texttt{Macro} and
+\texttt{Env} it did know in the past. This enables better
+documentation because you can now clearly mark different types of
+objects instead of simply calling them all \enquote{macros}.
+If desired, they can be collected together under a heading
+in the index so that you have a section just with your document
+interface commands, or with all parameters, or \ldots
+
+The code borrows ideas from Didier Verna's \pkg{dox} package (although
+the document level interface is different) and it makes use of Heiko
+Oberdiek's \pkg{hypdoc} package, which at some point in the future
+will be completely integrated, given that its whole purpose it to
+patch \pkg{doc}'s internal commands to make them \pkg{hyperref}-aware.
+
+All changes are expected to be upward compatible, but if you run into
+issues with older documentation using \pkg{doc} a simple and quick
+solution is to load the package as follows:
+\verb/\usepackage{doc}[=v2]/
+
+\subsection{\pkg{doc} can now show dates in change log}
+
+Up to now the change log was always sorted by version numbers
+(ignoring the date that was given in the \cs{changes} command). It
+can now be sorted by both version and date if you specify the option
+\option{reportchangedates} on package level and in that case the
+changes are displayed with
+\begin{quote}
+ \meta{version} -- \meta{date}
+\end{quote}
+as the heading (instead of just \meta{version}), when using
+\cs{PrintChanges}.
+%
+\githubissue{gh/531}
+
+
+
+\subsection{Lua\TeX\ callback improvements}
+
+The Lua\TeX\ callbacks \texttt{hpack\_quality} and \texttt{vpack\_quality} are
+now \texttt{exclusive} and therefore only allow a single handler.
+The previous type \texttt{list} resulted in incorrect parameters when multiple
+handlers were set, therefore this only makes an existing restriction more
+explicit.
+
+Additionally the return value \texttt{true} for \texttt{list}
+callbacks is now handled internally and no longer passed on to the
+engine. This simplifies the handling of these callbacks and makes it
+easier to provide consistent interfaces for user defined \texttt{list}
+callbacks.
+
+
+\subsection{Class \class{proc} supports \option{twoside}}
+
+The document class \class{proc}, which is a small variation on the
+\class{article} class, now supports the \option{twoside} option
+displaying different data in the footer line on recto and verso pages.
+%
+\githubissue{gh/704}
+
+
+\subsection{Croatian character support}
+
+The default \pkg{inputenc} support has been extended to support the 9 characters
+D\v Z, D\v z, d\v z, LJ, Lj, lj, NJ, Nj, nj, input as single UTF-8 codepoints
+in the range U+01C4 to U+01CC.
+%
+\githubissue{gh/723}
+
+
+\subsection{Cleanup of the Unicode declaration interface}
+
+When declaring encoding specific commands for the Unicode (TU)
+encoding some declarations (e.g., \cs{DeclareUnicodeComposite}) do not
+have an explicit argument for the the encoding name, but instead use
+the command \cs{UnicodeEncodingName} internally. There was one
+exception though: \cs{DeclareUnicodeAccent} required an explicit
+encoding argument. This inconsistency has now been removed and the
+encoding name is always implicit. To avoid a breaking change for a few
+packages on CTAN \cs{DeclareUnicodeAccent} still accepts three
+arguments if the second argument is \texttt{TU} or
+\cs{UnicodeEncodingName}. Once all packages have been updated this
+code branch will get removed.
+
+At the same time we added \cs{DeclareUnicodeCommand} and
+\cs{DeclareUnicodeSymbol} for consistency. They also use
+\cs{UnincodeEncodingName} internally, instead of requiring an encoding
+argument as their general purpose counterparts do.
+%
+\githubissue{253}
+
+
+
+\subsection{???}
+%
+\githubissue{???}
+
+
+\section{Bug fixes}
+
+\subsection{Using \cs{DeclareUnicodeCharacter} with C1 control points}
+An error in the UTF-8 handling for non-Unicode \TeX, has prevented
+\cs{DeclareUnicodeCharacter} being used with characters in the range
+hex 80 to 9F, this has been corrected in this release.
+%
+\githubissue{730}
+
+
+
+\subsection{Fix \cs{ShowCommand} when used with \pkg{ltcmd}}
+
+When \cs{ShowCommand} support was added for \pkg{ltcmd} in the previous
+release~\cite{35:ltnews34}, a blunder in the code made it so that
+when \cs{ShowCommand} was used on a command defined with \pkg{ltcmd}, it
+only printed the meaning of the command in the terminal, but didn't stop
+for interaction as it does elsewhere (mimicking \cs{show}). The issue
+is now fixed.
+%
+\githubissue{739}
+
+
+
+
+\section{Changes to packages in the \pkg{amsmath} category}
+
+\subsection{???}
+%
+\githubissue{???}
+
+
+\section{Changes to packages in the \pkg{graphics} category}
+
+\subsection{Color in formulas}
+
+While it is possible to color parts of a formula using \cs{color}
+commands the approach is fairly cumbersome. For example, to color an
+summation sign, but not its limits, you need four \cs{color} commands and
+some seemingly unnecessary set of braces to get coloring and spacing
+right:
+\begin{verbatim}
+\[ X = \color{red} \sum
+% without {{ the superscript below is misplaced
+ _{{\color{black} i=1}}
+% without {{ the \sum is black
+ ^{{\color{black} n}}
+ \color{black} % without it the x_i is red
+ x_i \]
+\end{verbatim}
+Leave out any of the \cs{color} commands or any of the \verb={{...}}=
+will give you a wrong result instead of the desired
+\[ X = \color{red} \sum
+ _{{\color{black} i=1}} % without {{ the superscript is misplaced
+ ^{{\color{black} n}} % without {{ the \sum is black
+ \color{black} % without it the x_i is red
+ x_i
+\]
+So even if this is possible, it is not a very practical solution and
+furthermore there are a number of cases where it is impossible to
+color a certain part of a formula, for example, an opening symbol such
+as \verb=\left(= but not the corresponding \verb=\right)=.
+
+We have therefore added the command \cs{mathcolor} to the \pkg{color}
+and \pkg{xcolor} package, which has the same syntax as \cs{textcolor},
+but is specially designed for use in math and handles sub and
+superscripts and other aspects correctly and preserves correct
+spacing. Thus, the above example can now be written as
+\begin{verbatim}
+\[ X = \mathcolor{red}{\sum}_{i=1}^n x_i \]
+\end{verbatim}
+For details and further examples, see \file{mathcolor.pdf}.
+
+
+\subsection{???}
+%
+\githubissue{???}
+
+
+
+\section{Changes to packages in the \pkg{tools} category}
+
+\subsection{\pkg{multicol}: Fix \cs{newcolumn}}
+
+The recently added \cs{newcolumn} didn't work properly if used in
+vertical mode, where it behaved like \cs{columnbreak}, i.e., spreading
+the column material out instead running the column short.
+%
+\sxissue{q/624940}
+
+
+\subsection{\pkg{bm}: Fix for \pkg{amsmath} operators}
+
+An internal command used in the definition of operator commands such
+as \cs{sin} in \pkg{amsmath} has been guarded in \cs{bm} to prevent
+internal syntax errors due to premature expansion.
+%
+\githubissue{744}
+
+
+
+\medskip
+
+\begin{thebibliography}{9}
+
+\fontsize{9.3}{11.3}\selectfont
+
+\bibitem{35:blueprint} Frank Mittelbach and Chris Rowley:
+ \emph{\LaTeX{} Tagged PDF \Dash A blueprint for a large project}.\\
+ \url{https://latex-project.org/publications/indexbyyear/2020/}
+
+\bibitem{35:source2e}
+ \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\
+ \url{https://latex-project.org/help/documentation/}
+
+\bibitem{35:ltnews31} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 31}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf}
+
+\bibitem{35:ltnews32} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 32}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf}
+
+\bibitem{35:ltnews33} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 33}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews33.pdf}
+
+\bibitem{35:ltnews34} \LaTeX{} Project Team:
+ \emph{\LaTeXe{} news 34}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews34.pdf}
+
+\end{thebibliography}
+
+
+
+\end{document}
diff --git a/macros/latex-dev/base/ltoutenc.dtx b/macros/latex-dev/base/ltoutenc.dtx
index 61ea381823..8e4867417b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -44,7 +44,7 @@
%<*driver>
% \fi
\ProvidesFile{ltoutenc.dtx}
- [2021/10/16 v2.0x LaTeX Kernel (font encodings)]
+ [2021/12/12 v2.0y LaTeX Kernel (font encodings)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltoutenc.dtx}
@@ -477,7 +477,7 @@
% \texttt{TS1} encoding.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \subsection{Docstrip modules}
%
@@ -2949,14 +2949,14 @@
\endgroup
}
\else
- \newluafunction\@remove@tlig@@@@
+ \newprotectedluacmd\@remove@tlig@@@
% \end{macrocode}
% Now we can define the function. Mostly we just have to insert a protected glyph
% node, which is a glyph node with subtype 256. But we have to keep track of the
% current mode to avoid inserting the glyph into a vlist.
% \begin{macrocode}
\now@and@everyjob{\directlua{
- local rawchar_func = token.create'@remove@tlig@@@@'.index
+ local rawchar_func = token.create'@remove@tlig@@@'.index
local forcehmode = tex.forcehmode
local put_next = token.put_next
local glyph_id = node.id'glyph'
@@ -2972,7 +2972,6 @@
n.char = token.scan_int()
return node.write(n)
end
- token.set_lua('@remove@tlig@@@', rawchar_func, 'global', 'protected')
}}
% \end{macrocode}
% Now \verb+\remove@tlig+ can be implemented almost as in XeTeX.
@@ -3017,8 +3016,33 @@
\char#1\relax}
% \end{macrocode}
%
-% \begin{macrocode}
-\def\DeclareUnicodeAccent#1#2#3{%
+% In its original implementation \cs{DeclareUnicodeAccent} was
+% given 3 arguments (with second the ``Unicode encoding'' a.k.a.,
+% \cs{UnicodeEncodingName}) while in other places, e.g.,
+% \cs{DeclareUnicodeComposite}, we always made encoding implicit. So
+% we now change it here to implicit too so that the interfaces
+% become a bit more consistent. To avoid making that a
+% breaking change (even though it only affects two packages on
+% CTAN) we test for \verb=#2= being \cs{UnicodeEncodingName}. This
+% would not catch if somebody used
+% \verb|\DeclareUnicodeAccent{\=}{TU-sub}{"0304}|
+% but that fortunately hasn't happened. With the implicit argument
+% you would need to change \cs{UnicodeEncodingName} instead, as you
+% have to do anyway for the other interface commands.
+% \changes{v2.0y}{2021/12/12}{\cs{DeclareUnicodeAccent} now makes the
+% encoding argument implicit (gh/253)}
+% \begin{macrocode}
+\def\DeclareUnicodeAccent#1#2{%
+ \edef\reserved@a{#2}%
+ \edef\reserved@b{\UnicodeEncodingName}%
+ \ifx\reserved@a\reserved@b
+ \def\reserved@a{\DeclareUnicodeAccent@{#1}}%
+ \else
+ \def\reserved@a{\DeclareUnicodeAccent@{#1}\UnicodeEncodingName}%
+ \fi
+ \reserved@a{#2}%
+}
+\def\DeclareUnicodeAccent@#1#2#3{%
\DeclareTextCommand{#1}{#2}{\add@unicode@accent{#3}}%
}
% \end{macrocode}
@@ -3059,113 +3083,119 @@
\def\reserved@b{#1#2}}
% \end{macrocode}
%
+% Next two commands are simply syntactic sugar to go with the other
+% \cs{DeclareUnicode...} declarations.
+% \changes{v2.0y}{2021/12/12}{Added \cs{DeclareUnicodeCommand} and
+% \cs{DeclareUnicodeSymbol} (gh/253)}
+% \begin{macrocode}
+\def\DeclareUnicodeSymbol#1{\DeclareTextSymbol{#1}{\UnicodeEncodingName}}
+\def\DeclareUnicodeCommand#1{\DeclareTextCommand{#1}{\UnicodeEncodingName}}
+% \end{macrocode}
+%
% \begin{macrocode}
-\DeclareTextCommand\textquotesingle \UnicodeEncodingName{%
- \remove@tlig{"0027}}
-\DeclareTextCommand\textasciigrave \UnicodeEncodingName{%
- \remove@tlig{"0060}}
-\DeclareTextCommand\textquotedbl \UnicodeEncodingName{%
- \remove@tlig{"0022}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTextSymbol{\textdollar} \UnicodeEncodingName{"0024}
-\DeclareTextSymbol{\textless} \UnicodeEncodingName{"003C}
-\DeclareTextSymbol{\textgreater} \UnicodeEncodingName{"003E}
-\DeclareTextSymbol{\textbackslash} \UnicodeEncodingName{"005C}
-\DeclareTextSymbol{\textasciicircum} \UnicodeEncodingName{"005E}
-\DeclareTextSymbol{\textunderscore} \UnicodeEncodingName{"005F}
-\DeclareTextSymbol{\textbraceleft} \UnicodeEncodingName{"007B}
-\DeclareTextSymbol{\textbar} \UnicodeEncodingName{"007C}
-\DeclareTextSymbol{\textbraceright} \UnicodeEncodingName{"007D}
-\DeclareTextSymbol{\textasciitilde} \UnicodeEncodingName{"007E}
-\DeclareTextSymbol{\textexclamdown} \UnicodeEncodingName{"00A1}
-\DeclareTextSymbol{\textcent} \UnicodeEncodingName{"00A2}
-\DeclareTextSymbol{\textsterling} \UnicodeEncodingName{"00A3}
-\DeclareTextSymbol{\textcurrency} \UnicodeEncodingName{"00A4}
-\DeclareTextSymbol{\textyen} \UnicodeEncodingName{"00A5}
-\DeclareTextSymbol{\textbrokenbar} \UnicodeEncodingName{"00A6}
-\DeclareTextSymbol{\textsection} \UnicodeEncodingName{"00A7}
-\DeclareTextSymbol{\textasciidieresis} \UnicodeEncodingName{"00A8}
-\DeclareTextSymbol{\textcopyright} \UnicodeEncodingName{"00A9}
-\DeclareTextSymbol{\textordfeminine} \UnicodeEncodingName{"00AA}
+\DeclareUnicodeCommand\textquotesingle {\remove@tlig{"0027}}
+\DeclareUnicodeCommand\textasciigrave {\remove@tlig{"0060}}
+\DeclareUnicodeCommand\textquotedbl {\remove@tlig{"0022}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareUnicodeSymbol{\textdollar} {"0024}
+\DeclareUnicodeSymbol{\textless} {"003C}
+\DeclareUnicodeSymbol{\textgreater} {"003E}
+\DeclareUnicodeSymbol{\textbackslash} {"005C}
+\DeclareUnicodeSymbol{\textasciicircum} {"005E}
+\DeclareUnicodeSymbol{\textunderscore} {"005F}
+\DeclareUnicodeSymbol{\textbraceleft} {"007B}
+\DeclareUnicodeSymbol{\textbar} {"007C}
+\DeclareUnicodeSymbol{\textbraceright} {"007D}
+\DeclareUnicodeSymbol{\textasciitilde} {"007E}
+\DeclareUnicodeSymbol{\textexclamdown} {"00A1}
+\DeclareUnicodeSymbol{\textcent} {"00A2}
+\DeclareUnicodeSymbol{\textsterling} {"00A3}
+\DeclareUnicodeSymbol{\textcurrency} {"00A4}
+\DeclareUnicodeSymbol{\textyen} {"00A5}
+\DeclareUnicodeSymbol{\textbrokenbar} {"00A6}
+\DeclareUnicodeSymbol{\textsection} {"00A7}
+\DeclareUnicodeSymbol{\textasciidieresis} {"00A8}
+\DeclareUnicodeSymbol{\textcopyright} {"00A9}
+\DeclareUnicodeSymbol{\textordfeminine} {"00AA}
% \end{macrocode}
% \changes{v2.0j}{2018/08/11}{Provide \cs{guillemetleft} and \cs{guillemetright}}
% \begin{macrocode}
-\DeclareTextSymbol{\guillemetleft} \UnicodeEncodingName{"00AB}
+\DeclareUnicodeSymbol{\guillemetleft} {"00AB}
% old Adobe name
-\DeclareTextSymbol{\guillemotleft} \UnicodeEncodingName{"00AB}
+\DeclareUnicodeSymbol{\guillemotleft} {"00AB}
% \end{macrocode}
%
% \begin{macrocode}
-\DeclareTextSymbol{\textlnot} \UnicodeEncodingName{"00AC}
-\DeclareTextSymbol{\textregistered} \UnicodeEncodingName{"00AE}
-\DeclareTextSymbol{\textasciimacron} \UnicodeEncodingName{"00AF}
-\DeclareTextSymbol{\textdegree} \UnicodeEncodingName{"00B0}
-\DeclareTextSymbol{\textpm} \UnicodeEncodingName{"00B1}
-\DeclareTextSymbol{\texttwosuperior} \UnicodeEncodingName{"00B2}
-\DeclareTextSymbol{\textthreesuperior} \UnicodeEncodingName{"00B3}
-\DeclareTextSymbol{\textasciiacute} \UnicodeEncodingName{"00B4}
-\DeclareTextSymbol{\textmu} \UnicodeEncodingName{"00B5}
-\DeclareTextSymbol{\textparagraph} \UnicodeEncodingName{"00B6}
-\DeclareTextSymbol{\textperiodcentered} \UnicodeEncodingName{"00B7}
-\DeclareTextSymbol{\textonesuperior} \UnicodeEncodingName{"00B9}
-\DeclareTextSymbol{\textordmasculine} \UnicodeEncodingName{"00BA}
+\DeclareUnicodeSymbol{\textlnot} {"00AC}
+\DeclareUnicodeSymbol{\textregistered} {"00AE}
+\DeclareUnicodeSymbol{\textasciimacron} {"00AF}
+\DeclareUnicodeSymbol{\textdegree} {"00B0}
+\DeclareUnicodeSymbol{\textpm} {"00B1}
+\DeclareUnicodeSymbol{\texttwosuperior} {"00B2}
+\DeclareUnicodeSymbol{\textthreesuperior} {"00B3}
+\DeclareUnicodeSymbol{\textasciiacute} {"00B4}
+\DeclareUnicodeSymbol{\textmu} {"00B5}
+\DeclareUnicodeSymbol{\textparagraph} {"00B6}
+\DeclareUnicodeSymbol{\textperiodcentered} {"00B7}
+\DeclareUnicodeSymbol{\textonesuperior} {"00B9}
+\DeclareUnicodeSymbol{\textordmasculine} {"00BA}
% \end{macrocode}
% \changes{v2.0j}{2018/08/11}{Provide \cs{guillemetleft} and \cs{guillemetright}}
% \begin{macrocode}
-\DeclareTextSymbol{\guillemetright} \UnicodeEncodingName{"00BB}
+\DeclareUnicodeSymbol{\guillemetright} {"00BB}
% old Adobe name
-\DeclareTextSymbol{\guillemotright} \UnicodeEncodingName{"00BB}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\DeclareTextSymbol{\textonequarter} \UnicodeEncodingName{"00BC}
-\DeclareTextSymbol{\textonehalf} \UnicodeEncodingName{"00BD}
-\DeclareTextSymbol{\textthreequarters} \UnicodeEncodingName{"00BE}
-\DeclareTextSymbol{\textquestiondown} \UnicodeEncodingName{"00BF}
-\DeclareTextSymbol{\AE} \UnicodeEncodingName{"00C6}
-\DeclareTextSymbol{\DH} \UnicodeEncodingName{"00D0}
-\DeclareTextSymbol{\texttimes} \UnicodeEncodingName{"00D7}
-\DeclareTextSymbol{\O} \UnicodeEncodingName{"00D8}
-\DeclareTextSymbol{\TH} \UnicodeEncodingName{"00DE}
-\DeclareTextSymbol{\ss} \UnicodeEncodingName{"00DF}
-\DeclareTextSymbol{\ae} \UnicodeEncodingName{"00E6}
-\DeclareTextSymbol{\dh} \UnicodeEncodingName{"00F0}
-\DeclareTextSymbol{\textdiv} \UnicodeEncodingName{"00F7}
-\DeclareTextSymbol{\o} \UnicodeEncodingName{"00F8}
-\DeclareTextSymbol{\th} \UnicodeEncodingName{"00FE}
-\DeclareTextSymbol{\DJ} \UnicodeEncodingName{"0110}
-\DeclareTextSymbol{\dj} \UnicodeEncodingName{"0111}
-\DeclareTextSymbol{\i} \UnicodeEncodingName{"0131}
-\DeclareTextSymbol{\IJ} \UnicodeEncodingName{"0132}
-\DeclareTextSymbol{\ij} \UnicodeEncodingName{"0133}
-\DeclareTextSymbol{\L} \UnicodeEncodingName{"0141}
-\DeclareTextSymbol{\l} \UnicodeEncodingName{"0142}
-\DeclareTextSymbol{\NG} \UnicodeEncodingName{"014A}
-\DeclareTextSymbol{\ng} \UnicodeEncodingName{"014B}
-\DeclareTextSymbol{\OE} \UnicodeEncodingName{"0152}
-\DeclareTextSymbol{\oe} \UnicodeEncodingName{"0153}
-\DeclareTextSymbol{\textflorin} \UnicodeEncodingName{"0192}
-\DeclareTextSymbol{\j} \UnicodeEncodingName{"0237}
-\DeclareTextSymbol{\textasciicaron} \UnicodeEncodingName{"02C7}
-\DeclareTextSymbol{\textasciibreve} \UnicodeEncodingName{"02D8}
-\DeclareTextSymbol{\textacutedbl} \UnicodeEncodingName{"02DD}
-\DeclareTextSymbol{\textgravedbl} \UnicodeEncodingName{"02F5}
-\DeclareTextSymbol{\texttildelow} \UnicodeEncodingName{"02F7}
-\DeclareTextSymbol{\textbaht} \UnicodeEncodingName{"0E3F}
-\DeclareTextSymbol{\SS} \UnicodeEncodingName{"1E9E}
-\DeclareTextSymbol{\textcompwordmark} \UnicodeEncodingName{"200C}
+\DeclareUnicodeSymbol{\guillemotright} {"00BB}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareUnicodeSymbol{\textonequarter} {"00BC}
+\DeclareUnicodeSymbol{\textonehalf} {"00BD}
+\DeclareUnicodeSymbol{\textthreequarters} {"00BE}
+\DeclareUnicodeSymbol{\textquestiondown} {"00BF}
+\DeclareUnicodeSymbol{\AE} {"00C6}
+\DeclareUnicodeSymbol{\DH} {"00D0}
+\DeclareUnicodeSymbol{\texttimes} {"00D7}
+\DeclareUnicodeSymbol{\O} {"00D8}
+\DeclareUnicodeSymbol{\TH} {"00DE}
+\DeclareUnicodeSymbol{\ss} {"00DF}
+\DeclareUnicodeSymbol{\ae} {"00E6}
+\DeclareUnicodeSymbol{\dh} {"00F0}
+\DeclareUnicodeSymbol{\textdiv} {"00F7}
+\DeclareUnicodeSymbol{\o} {"00F8}
+\DeclareUnicodeSymbol{\th} {"00FE}
+\DeclareUnicodeSymbol{\DJ} {"0110}
+\DeclareUnicodeSymbol{\dj} {"0111}
+\DeclareUnicodeSymbol{\i} {"0131}
+\DeclareUnicodeSymbol{\IJ} {"0132}
+\DeclareUnicodeSymbol{\ij} {"0133}
+\DeclareUnicodeSymbol{\L} {"0141}
+\DeclareUnicodeSymbol{\l} {"0142}
+\DeclareUnicodeSymbol{\NG} {"014A}
+\DeclareUnicodeSymbol{\ng} {"014B}
+\DeclareUnicodeSymbol{\OE} {"0152}
+\DeclareUnicodeSymbol{\oe} {"0153}
+\DeclareUnicodeSymbol{\textflorin} {"0192}
+\DeclareUnicodeSymbol{\j} {"0237}
+\DeclareUnicodeSymbol{\textasciicaron} {"02C7}
+\DeclareUnicodeSymbol{\textasciibreve} {"02D8}
+\DeclareUnicodeSymbol{\textacutedbl} {"02DD}
+\DeclareUnicodeSymbol{\textgravedbl} {"02F5}
+\DeclareUnicodeSymbol{\texttildelow} {"02F7}
+\DeclareUnicodeSymbol{\textbaht} {"0E3F}
+\DeclareUnicodeSymbol{\SS} {"1E9E}
+\DeclareUnicodeSymbol{\textcompwordmark} {"200C}
% \end{macrocode}
%
% \changes{v2.0u}{2021/02/19}{Add \cs{textnonbreakinghyphen}, \cs{textfiguredash}
% and \cs{texthorizontalbar} (gh/404)}
% \begin{macrocode}
-%\DeclareTextSymbol{\textnonbreakinghyphen} \UnicodeEncodingName{"2011}
-%\DeclareTextSymbol{\textfiguredash} \UnicodeEncodingName{"2012}
-\DeclareTextSymbol{\textendash} \UnicodeEncodingName{"2013}
-\DeclareTextSymbol{\textemdash} \UnicodeEncodingName{"2014}
-%\DeclareTextSymbol{\texthorizontalbar} \UnicodeEncodingName{"2015}
+%\DeclareUnicodeSymbol{\textnonbreakinghyphen} {"2011}
+%\DeclareUnicodeSymbol{\textfiguredash} {"2012}
+\DeclareUnicodeSymbol{\textendash} {"2013}
+\DeclareUnicodeSymbol{\textemdash} {"2014}
+%\DeclareUnicodeSymbol{\texthorizontalbar} {"2015}
% \end{macrocode}
% Unfortunately some fonts do not implement \texttt{"2011}, \texttt{"2012} and/or
% \texttt{"2015} (including the \LaTeX{} default fonts for Unicode
@@ -3175,70 +3205,70 @@
% The \verb=\nobreak\hskip\z@= is there to prevent a break after
% the hyphen but allow later breaks in the remainder of the word.
% \begin{macrocode}
-\DeclareTextCommand{\textnonbreakinghyphen} \UnicodeEncodingName
+\DeclareUnicodeCommand{\textnonbreakinghyphen}
{\iffontchar\font "2011 \char "2011 \else \mbox{-}\nobreak\hskip\z@ \fi}
-\DeclareTextCommand{\textfiguredash} \UnicodeEncodingName
+\DeclareUnicodeCommand{\textfiguredash}
{\iffontchar\font "2012 \char "2012 \else \char "2013 \fi}
-\DeclareTextCommand{\texthorizontalbar} \UnicodeEncodingName
+\DeclareUnicodeCommand{\texthorizontalbar}
{\iffontchar\font "2015 \char "2015 \else \char "2014 \fi}
% \end{macrocode}
%
% \begin{macrocode}
-\DeclareTextSymbol{\textbardbl} \UnicodeEncodingName{"2016}
-\DeclareTextSymbol{\textquoteleft} \UnicodeEncodingName{"2018}
-\DeclareTextSymbol{\textquoteright} \UnicodeEncodingName{"2019}
-\DeclareTextSymbol{\quotesinglbase} \UnicodeEncodingName{"201A}
-\DeclareTextSymbol{\textquotedblleft} \UnicodeEncodingName{"201C}
-\DeclareTextSymbol{\textquotedblright} \UnicodeEncodingName{"201D}
-\DeclareTextSymbol{\quotedblbase} \UnicodeEncodingName{"201E}
-\DeclareTextSymbol{\textdagger} \UnicodeEncodingName{"2020}
-\DeclareTextSymbol{\textdaggerdbl} \UnicodeEncodingName{"2021}
-\DeclareTextSymbol{\textbullet} \UnicodeEncodingName{"2022}
-\DeclareTextSymbol{\textellipsis} \UnicodeEncodingName{"2026}
-\DeclareTextSymbol{\textperthousand} \UnicodeEncodingName{"2030}
-\DeclareTextSymbol{\textpertenthousand} \UnicodeEncodingName{"2031}
-\DeclareTextSymbol{\guilsinglleft} \UnicodeEncodingName{"2039}
-\DeclareTextSymbol{\guilsinglright} \UnicodeEncodingName{"203A}
-\DeclareTextSymbol{\textreferencemark} \UnicodeEncodingName{"203B}
-\DeclareTextSymbol{\textinterrobang} \UnicodeEncodingName{"203D}
-\DeclareTextSymbol{\textfractionsolidus} \UnicodeEncodingName{"2044}
-\DeclareTextSymbol{\textlquill} \UnicodeEncodingName{"2045}
-\DeclareTextSymbol{\textrquill} \UnicodeEncodingName{"2046}
-\DeclareTextSymbol{\textdiscount} \UnicodeEncodingName{"2052}
-\DeclareTextSymbol{\textcolonmonetary} \UnicodeEncodingName{"20A1}
-\DeclareTextSymbol{\textlira} \UnicodeEncodingName{"20A4}
-\DeclareTextSymbol{\textnaira} \UnicodeEncodingName{"20A6}
-\DeclareTextSymbol{\textwon} \UnicodeEncodingName{"20A9}
-\DeclareTextSymbol{\textdong} \UnicodeEncodingName{"20AB}
-\DeclareTextSymbol{\texteuro} \UnicodeEncodingName{"20AC}
-\DeclareTextSymbol{\textpeso} \UnicodeEncodingName{"20B1}
-\DeclareTextSymbol{\textcelsius} \UnicodeEncodingName{"2103}
-\DeclareTextSymbol{\textnumero} \UnicodeEncodingName{"2116}
-\DeclareTextSymbol{\textcircledP} \UnicodeEncodingName{"2117}
-\DeclareTextSymbol{\textrecipe} \UnicodeEncodingName{"211E}
-\DeclareTextSymbol{\textservicemark} \UnicodeEncodingName{"2120}
-\DeclareTextSymbol{\texttrademark} \UnicodeEncodingName{"2122}
-\DeclareTextSymbol{\textohm} \UnicodeEncodingName{"2126}
-\DeclareTextSymbol{\textmho} \UnicodeEncodingName{"2127}
-\DeclareTextSymbol{\textestimated} \UnicodeEncodingName{"212E}
-\DeclareTextSymbol{\textleftarrow} \UnicodeEncodingName{"2190}
-\DeclareTextSymbol{\textuparrow} \UnicodeEncodingName{"2191}
-\DeclareTextSymbol{\textrightarrow} \UnicodeEncodingName{"2192}
-\DeclareTextSymbol{\textdownarrow} \UnicodeEncodingName{"2193}
-\DeclareTextSymbol{\textminus} \UnicodeEncodingName{"2212}
+\DeclareUnicodeSymbol{\textbardbl} {"2016}
+\DeclareUnicodeSymbol{\textquoteleft} {"2018}
+\DeclareUnicodeSymbol{\textquoteright} {"2019}
+\DeclareUnicodeSymbol{\quotesinglbase} {"201A}
+\DeclareUnicodeSymbol{\textquotedblleft} {"201C}
+\DeclareUnicodeSymbol{\textquotedblright} {"201D}
+\DeclareUnicodeSymbol{\quotedblbase} {"201E}
+\DeclareUnicodeSymbol{\textdagger} {"2020}
+\DeclareUnicodeSymbol{\textdaggerdbl} {"2021}
+\DeclareUnicodeSymbol{\textbullet} {"2022}
+\DeclareUnicodeSymbol{\textellipsis} {"2026}
+\DeclareUnicodeSymbol{\textperthousand} {"2030}
+\DeclareUnicodeSymbol{\textpertenthousand} {"2031}
+\DeclareUnicodeSymbol{\guilsinglleft} {"2039}
+\DeclareUnicodeSymbol{\guilsinglright} {"203A}
+\DeclareUnicodeSymbol{\textreferencemark} {"203B}
+\DeclareUnicodeSymbol{\textinterrobang} {"203D}
+\DeclareUnicodeSymbol{\textfractionsolidus} {"2044}
+\DeclareUnicodeSymbol{\textlquill} {"2045}
+\DeclareUnicodeSymbol{\textrquill} {"2046}
+\DeclareUnicodeSymbol{\textdiscount} {"2052}
+\DeclareUnicodeSymbol{\textcolonmonetary} {"20A1}
+\DeclareUnicodeSymbol{\textlira} {"20A4}
+\DeclareUnicodeSymbol{\textnaira} {"20A6}
+\DeclareUnicodeSymbol{\textwon} {"20A9}
+\DeclareUnicodeSymbol{\textdong} {"20AB}
+\DeclareUnicodeSymbol{\texteuro} {"20AC}
+\DeclareUnicodeSymbol{\textpeso} {"20B1}
+\DeclareUnicodeSymbol{\textcelsius} {"2103}
+\DeclareUnicodeSymbol{\textnumero} {"2116}
+\DeclareUnicodeSymbol{\textcircledP} {"2117}
+\DeclareUnicodeSymbol{\textrecipe} {"211E}
+\DeclareUnicodeSymbol{\textservicemark} {"2120}
+\DeclareUnicodeSymbol{\texttrademark} {"2122}
+\DeclareUnicodeSymbol{\textohm} {"2126}
+\DeclareUnicodeSymbol{\textmho} {"2127}
+\DeclareUnicodeSymbol{\textestimated} {"212E}
+\DeclareUnicodeSymbol{\textleftarrow} {"2190}
+\DeclareUnicodeSymbol{\textuparrow} {"2191}
+\DeclareUnicodeSymbol{\textrightarrow} {"2192}
+\DeclareUnicodeSymbol{\textdownarrow} {"2193}
+\DeclareUnicodeSymbol{\textminus} {"2212}
% \end{macrocode}
% \changes{v2.0k}{2018/11/18}{Provide \cs{Hwithstroke} and \cs{hwithstroke}}
% \begin{macrocode}
-\DeclareTextSymbol{\Hwithstroke} \UnicodeEncodingName{"0126}
-\DeclareTextSymbol{\hwithstroke} \UnicodeEncodingName{"0127}
+\DeclareUnicodeSymbol{\Hwithstroke} {"0126}
+\DeclareUnicodeSymbol{\hwithstroke} {"0127}
% \end{macrocode}
%
% Not all fonts have U+2217 but using U+002A requires some adjustment.
% \changes{v2.0t}{2021/02/17}{Adjust values for
% \cs{textasteriskcentered} To match TS1 definition (gh/502)}
% \begin{macrocode}
-\DeclareTextCommand{\textasteriskcentered}\UnicodeEncodingName{%
+\DeclareUnicodeCommand{\textasteriskcentered}{%
\iffontchar\font"2217 \char"2217 \else
\begingroup
\fontsize
@@ -3251,36 +3281,39 @@
}
% \end{macrocode}
% \begin{macrocode}
-\DeclareTextSymbol{\textsurd} \UnicodeEncodingName{"221A}
-\DeclareTextSymbol{\textlangle} \UnicodeEncodingName{"2329}
-\DeclareTextSymbol{\textrangle} \UnicodeEncodingName{"232A}
-\DeclareTextSymbol{\textblank} \UnicodeEncodingName{"2422}
-\DeclareTextSymbol{\textvisiblespace} \UnicodeEncodingName{"2423}
-\DeclareTextSymbol{\textopenbullet} \UnicodeEncodingName{"25E6}
-\DeclareTextSymbol{\textbigcircle} \UnicodeEncodingName{"25EF}
-\DeclareTextSymbol{\textmusicalnote} \UnicodeEncodingName{"266A}
-\DeclareTextSymbol{\textmarried} \UnicodeEncodingName{"26AD}
-\DeclareTextSymbol{\textdivorced} \UnicodeEncodingName{"26AE}
-\DeclareTextSymbol{\textinterrobangdown} \UnicodeEncodingName{"2E18}
+\DeclareUnicodeSymbol{\textsurd} {"221A}
+\DeclareUnicodeSymbol{\textlangle} {"2329}
+\DeclareUnicodeSymbol{\textrangle} {"232A}
+\DeclareUnicodeSymbol{\textblank} {"2422}
+\DeclareUnicodeSymbol{\textvisiblespace} {"2423}
+\DeclareUnicodeSymbol{\textopenbullet} {"25E6}
+\DeclareUnicodeSymbol{\textbigcircle} {"25EF}
+\DeclareUnicodeSymbol{\textmusicalnote} {"266A}
+\DeclareUnicodeSymbol{\textmarried} {"26AD}
+\DeclareUnicodeSymbol{\textdivorced} {"26AE}
+\DeclareUnicodeSymbol{\textinterrobangdown} {"2E18}
% \end{macrocode}
% Accents must be declared before the composites that use them.
% \begin{macrocode}
-\DeclareUnicodeAccent{\`} \UnicodeEncodingName{"0300}
-\DeclareUnicodeAccent{\'} \UnicodeEncodingName{"0301}
-\DeclareUnicodeAccent{\^} \UnicodeEncodingName{"0302}
-\DeclareUnicodeAccent{\~} \UnicodeEncodingName{"0303}
-\DeclareUnicodeAccent{\=} \UnicodeEncodingName{"0304}
-\DeclareUnicodeAccent{\u} \UnicodeEncodingName{"0306}
-\DeclareUnicodeAccent{\.} \UnicodeEncodingName{"0307}
-\DeclareUnicodeAccent{\"} \UnicodeEncodingName{"0308}
-\DeclareUnicodeAccent{\r} \UnicodeEncodingName{"030A}
-\DeclareUnicodeAccent{\H} \UnicodeEncodingName{"030B}
-\DeclareUnicodeAccent{\v} \UnicodeEncodingName{"030C}
-\DeclareUnicodeAccent{\b} \UnicodeEncodingName{"0332}
-\DeclareUnicodeAccent{\d} \UnicodeEncodingName{"0323}
-\DeclareUnicodeAccent{\c} \UnicodeEncodingName{"0327}
-\DeclareUnicodeAccent{\k} \UnicodeEncodingName{"0328}
-\DeclareTextCommand\textcommabelow \UnicodeEncodingName[1]
+\DeclareUnicodeAccent{\`}{"0300}
+\DeclareUnicodeAccent{\'}{"0301}
+\DeclareUnicodeAccent{\^}{"0302}
+\DeclareUnicodeAccent{\~}{"0303}
+\DeclareUnicodeAccent{\=}{"0304}
+\DeclareUnicodeAccent{\u}{"0306}
+\DeclareUnicodeAccent{\.}{"0307}
+\DeclareUnicodeAccent{\"}{"0308}
+\DeclareUnicodeAccent{\r}{"030A}
+\DeclareUnicodeAccent{\H}{"030B}
+\DeclareUnicodeAccent{\v}{"030C}
+\DeclareUnicodeAccent{\b}{"0332}
+\DeclareUnicodeAccent{\d}{"0323}
+\DeclareUnicodeAccent{\c}{"0327}
+\DeclareUnicodeAccent{\k}{"0328}
+% \end{macrocode}
+% The odd one out:
+% \begin{macrocode}
+\DeclareUnicodeCommand\textcommabelow[1]
{\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\raise-.31ex
\hbox{\check@mathfonts\fontsize\ssf@size\z@
\math@fontsfalse\selectfont,}\hidewidth}\egroup}
@@ -3743,4 +3776,12 @@
%
% \Finale
%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\endinput
+
+^^A Needed for emacs
+^^A
+^^A Local Variables:
+^^A mode: latex
+^^A coding: utf-8-unix
+^^A End:
diff --git a/macros/latex-dev/base/ltoutenc.ins b/macros/latex-dev/base/ltoutenc.ins
index 1330b5c44e..8ff0f02608 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/base/ltoutput.dtx b/macros/latex-dev/base/ltoutput.dtx
index 78b0f2335f..2d9f857173 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -120,7 +120,7 @@
% \changes{v1.2n}{2015/02/21}
% {Removed autoload code}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \def \ie {i.e.~}
% \def \eg {e.g.~}
diff --git a/macros/latex-dev/base/ltpage.dtx b/macros/latex-dev/base/ltpage.dtx
index 4504033f54..9c0ed1fee6 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -112,7 +112,7 @@
% command (|\ps@...|) to |\markboth| for setting the heading or to
% |\@gobbletwo| to do nothing.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltpageno.dtx b/macros/latex-dev/base/ltpageno.dtx
index 03d36a53d9..8142639633 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -77,7 +77,7 @@
% numbered i, ii, etc.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*2ekernel>
diff --git a/macros/latex-dev/base/ltpar.dtx b/macros/latex-dev/base/ltpar.dtx
index 969954be0a..50ff57183c 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -96,7 +96,7 @@
% \end{itemize}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \subsection{Implementation}
%
diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf
index 3bf225ee5c..594234c308 100644
--- a/macros/latex-dev/base/ltpara-code.pdf
+++ b/macros/latex-dev/base/ltpara-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf
index aae32c908a..a13c61f0e6 100644
--- a/macros/latex-dev/base/ltpara-doc.pdf
+++ b/macros/latex-dev/base/ltpara-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltpara-doc.tex b/macros/latex-dev/base/ltpara-doc.tex
index c3892b8180..f3a51bbd2e 100644
--- a/macros/latex-dev/base/ltpara-doc.tex
+++ b/macros/latex-dev/base/ltpara-doc.tex
@@ -2,5 +2,6 @@
\AtBeginDocument{\OnlyDescription
\let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
}
\input{ltpara.dtx}
diff --git a/macros/latex-dev/base/ltpara.dtx b/macros/latex-dev/base/ltpara.dtx
index a2da67198a..36d07337bd 100644
--- a/macros/latex-dev/base/ltpara.dtx
+++ b/macros/latex-dev/base/ltpara.dtx
@@ -123,7 +123,7 @@
% \verb=\hbox{a\par b}= is ignored, but \verb=$a\par b$= would complain.
%
% If this primitive ends the paragraph it does some special
-% \enquote{end of horizontal list} processing, then calls \TeX{}’s paragraph
+% \enquote{end of horizontal list} processing, then calls \TeX{}'s paragraph
% builder; this breaks the horizontal list into lines and then these
% lines are added as boxes to the enclosing vertical list and
% \TeX{} returns to vertical mode.
@@ -665,7 +665,7 @@
%
%
%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
%
%
% \section{The Implementation}
diff --git a/macros/latex-dev/base/ltpictur.dtx b/macros/latex-dev/base/ltpictur.dtx
index ae8b58995d..453ec6149e 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -83,7 +83,7 @@
% variant of this command, |\bezier|, is defined, in which the first
% argument is not optional.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v0.1a}{1994/03/07}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/ltplain.dtx b/macros/latex-dev/base/ltplain.dtx
index 5fa7039679..c6f295ef6b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -102,7 +102,7 @@
% \LaTeX{} uses its own output routine, so most of the plain one was
% removed.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \begin{macrocode}
diff --git a/macros/latex-dev/base/ltsect.dtx b/macros/latex-dev/base/ltsect.dtx
index 67974c7387..71ab1ee89d 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -73,7 +73,7 @@
% document level commands are defined in the class files, in terms of
% these commands.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf
index 0d2c86e03f..5c37e40e02 100644
--- a/macros/latex-dev/base/ltshipout-code.pdf
+++ b/macros/latex-dev/base/ltshipout-code.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf
index fc51162b24..c5df9ae53c 100644
--- a/macros/latex-dev/base/ltshipout-doc.pdf
+++ b/macros/latex-dev/base/ltshipout-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/base/ltshipout-doc.tex b/macros/latex-dev/base/ltshipout-doc.tex
index 33f87d8862..4cca5e9cbe 100644
--- a/macros/latex-dev/base/ltshipout-doc.tex
+++ b/macros/latex-dev/base/ltshipout-doc.tex
@@ -3,5 +3,6 @@
\AtBeginDocument{\OnlyDescription
% \let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
}
\input{ltshipout.dtx}
diff --git a/macros/latex-dev/base/ltshipout.dtx b/macros/latex-dev/base/ltshipout.dtx
index 7f6555d18c..09495dde9a 100644
--- a/macros/latex-dev/base/ltshipout.dtx
+++ b/macros/latex-dev/base/ltshipout.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%%
-%% Copyright (C) 2020-2021
+%% Copyright (C) 2020-2022
%% Frank Mittelbach, LaTeX Team
%%
%
@@ -32,8 +32,8 @@
%%% From File: ltshipout.dtx
%
% \begin{macrocode}
-\providecommand\ltshipoutversion{v1.0j}
-\providecommand\ltshipoutdate{2021/06/09}
+\providecommand\ltshipoutversion{v1.0l}
+\providecommand\ltshipoutdate{2022/01/06}
% \end{macrocode}
%
%<*driver>
@@ -327,7 +327,10 @@
% \subsection{Legacy \LaTeX{} commands}
%
% \begin{function}{\AtBeginDvi,\AtEndDvi}
-% \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the
+% \begin{syntax}
+% \cs{AtBeginDvi} \Arg{code}
+% \end{syntax}
+ % \cs{AtBeginDvi} is the existing \LaTeXe{} interface to fill the
% \hook{shipout/firstpage} hook. This is not really a good name
% as it is not just supporting \texttt{.dvi} but also \texttt{.pdf}
% output or \texttt{.xdv}.
@@ -335,15 +338,24 @@
% \cs{AtEndDvi} is the counterpart that was not available in the
% kernel but only through the package \pkg{atenddvi}. It fills the
% \hook{shipout/lastpage} hook.
+%
+% Neither interface can set a code label but uses the current default label.
+%
% \end{function}
%
% As these two wrappers have been available for a long time we
-% continue offering them. However, for new code we suggest using
-% the high-level hook management commands directly instead of
-% ``randomly-named'' wrappers. This will lead to code that is
-% easier to understand and to maintain. For this reason we do not
-% provide any other wrapper commands for the above hooks in the
-% kernel.
+% continue offering them (but not enhancing them, e.g., by providing
+% support for code labels).
+%
+% For new code we strongly suggest using the high-level hook
+% management commands directly instead of ``randomly-named''
+% wrappers. This will lead to code that is easier to understand
+% and to maintain and it also allows you to set code labels if
+% needed.
+%
+% For this reason we do not provide any other ``new'' wrapper
+% commands for the above hooks in the kernel, but only keep
+% the existing ones for backward compatibility.
%
%
% \subsection{Special commands for use inside the hooks}
@@ -644,7 +656,7 @@
% \end{function}
%
%
-% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
%
%
% \section{The Implementation}
@@ -734,21 +746,21 @@
% \begin{macrocode}
\sys_if_engine_luatex:TF
{
- \newluafunction \@@_finalize_box:
+ \newprotectedluacmd \@@_finalize_box:
\exp_args:Nx \everyjob {
\exp_not:V \everyjob
\exp_not:N \lua_now:n {
luatexbase.create_callback('pre_shipout_filter', 'list')
local~call, getbox, setbox = luatexbase.call_callback, tex.getbox, tex.setbox~
- lua.get_functions_table()[\the \@@_finalize_box:] = function()
- local~result = call('pre_shipout_filter', getbox(\the \l_shipout_box))
- if~not (result == true) then~
+ lua.get_functions_table()[\the \allocationnumber] = function()
+ local~head = getbox(\the \l_shipout_box)
+ local~result = call('pre_shipout_filter', head)
+ if~not (result == head) then~
setbox(\the \l_shipout_box, result~or~nil)
end~
end
}
}
- \protected \luadef \@@_finalize_box: \the \@@_finalize_box:
} {
\cs_set_eq:NN \@@_finalize_box: \scan_stop:
}
@@ -1966,15 +1978,17 @@
%
%
% \begin{macro}{\AtEndDvi}
-% This package has only one public command to simulating it is easy
+% This package has only one public command, so simulating it is easy
% and actually sensible to provide as part of the kernel.
+% \changes{v1.0l}{2022/01/06}{Correctly simulate \cs{AtEndDvi} without
+% extending the syntax}
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
%<latexrelease>\IncludeInRelease{2020/10/01}%
%<latexrelease> {\AtEndDvi}{atenddvi emulation}%
\ExplSyntaxOn
-\cs_new_protected:Npn \AtEndDvi {\AddToHook{shipout/lastpage}}
+\cs_new_protected:Npn \AtEndDvi #1 {\AddToHook{shipout/lastpage}{#1}}
\ExplSyntaxOff
% \end{macrocode}
% As the package is integrate we prevent loading (no need to roll that back):
@@ -2041,9 +2055,11 @@
%
% \begin{macro}{\AtBeginShipout,\AtBeginShipoutNext}
% Filling hooks
+% \changes{v1.0l}{2022/01/06}{Correctly simulate \cs{AtBeginShipout}
+% and \cs{AtBeginShipoutNext} without extending the syntax}
% \begin{macrocode}
-\protected \def \AtBeginShipout {\AddToHook{shipout/before}}
-\protected \def \AtBeginShipoutNext {\AddToHookNext{shipout/before}}
+\protected\long\def\AtBeginShipout #1{\AddToHook{shipout/before}{#1}}
+\protected\long\def\AtBeginShipoutNext #1{\AddToHookNext{shipout/before}{#1}}
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex-dev/base/ltspace.dtx b/macros/latex-dev/base/ltspace.dtx
index 17fb0d6518..feb82730ec 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -114,7 +114,7 @@
% |\restorecr| : restores <CR> to its usual meaning.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \subsection{Chris' comments}
%
diff --git a/macros/latex-dev/base/lttab.dtx b/macros/latex-dev/base/lttab.dtx
index 48627f40a3..e32153f31c 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -74,7 +74,7 @@
% \LaTeX\ Companion}. Use the |array| package to obtain the extended
% version.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/04}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/lttextcomp.dtx b/macros/latex-dev/base/lttextcomp.dtx
index 1efc36d563..de6b221b6c 100644
--- a/macros/latex-dev/base/lttextcomp.dtx
+++ b/macros/latex-dev/base/lttextcomp.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2019-2021
+% Copyright (C) 2019-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -25,9 +25,10 @@
% and covered by LPPL is defined by the unpacking scripts (with
% extension .ins) which are part of the distribution.
%
+%%% From File: lttextcomp.dtx
+%
% \fi
%
-%%% From File: lttextcomp.dtx
%
% \iffalse
%
@@ -36,7 +37,7 @@
%
%
\ProvidesFile{lttextcomp.dtx}
- [2021/04/16 v1.0f LaTeX Kernel (text companion symbols)]
+ [2021/12/09 v1.0f LaTeX Kernel (text companion symbols)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -68,7 +69,7 @@
%
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v1.0e}{2021/03/19}
% {Use \cs{NewModuleRelease}}
@@ -470,16 +471,17 @@
% \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.
+% In the following sections the remaining default definitions are
+% ordered by sub-encoding in which they are become
+% \textbf{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.
+% symbols above (always available) and the symbols listed as becoming
+% unavailable in sub-encodings $x+1$ and higher.
%
-% \subsection{Sub-encoding \texttt{1} (drop symbols not working in
+% \subsection{Unavailable in sub-encoding \texttt{1} and higher (drop symbols not working in
% Latin Modern)}
%
% The \cs{textcircled} is available but the glyph is simply too
@@ -493,7 +495,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{2} (majority of new OTF fonts via autoinst)}
+% \subsection{Unavailable in sub-encoding \texttt{2} (majority of new OTF fonts via autoinst) and higher}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\t}
@@ -722,7 +724,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{3}}
+% \subsection{Unavailable in sub-encoding \texttt{3} and higher}
%
% Sub-encoding \texttt{2} is the one where we loose many
% symbols. In the higher-numbered sub-encodings we see only a few
@@ -738,7 +740,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{4}}
+% \subsection{Unavailable in sub-encoding \texttt{4} and higher}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\textcolonmonetary}
@@ -763,7 +765,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{5} (most older PS fonts)}
+% \subsection{Unavailable in sub-encoding \texttt{5} (most older PS fonts) and higher}
%
% Most older PS fonts (supported in \TeX{} since the early nineties
% when virtual fonts became available) are sorted under this
@@ -790,7 +792,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{6}}
+% \subsection{Unavailable in sub-encoding \texttt{6} and higher}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\textflorin}
@@ -801,7 +803,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{7}}
+% \subsection{Unavailable in sub-encoding \texttt{7} and higher}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\textfractionsolidus}
@@ -816,7 +818,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{8}}
+% \subsection{Unavailable in sub-encoding \texttt{8} and higher}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\textblank}
@@ -837,7 +839,7 @@
%
%
%
-% \subsection{Sub-encoding \texttt{9} (most missing)}
+% \subsection{Unavailable in Sub-encoding \texttt{9} (most missing)}
%
% \begin{macrocode}
\DeclareTextCommandDefault{\textcelsius}
diff --git a/macros/latex-dev/base/ltthm.dtx b/macros/latex-dev/base/ltthm.dtx
index 00fe97c77a..d0d04d9669 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -80,7 +80,7 @@
% The way \meta{name} environments are numbered can be changed by
% redefining |\the|\meta{name}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \changes{v1.0a}{1994/03/28}{Initial version, split from latex.dtx}
diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx
index c1024b938c..451b9f51a1 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -61,7 +61,7 @@
% \LaTeX, and set |\everyjob| so that it is printed at the start of
% every \LaTeX\ run.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v1.0g}{1996/11/28}
% {Check for old format modified /2319}
@@ -115,7 +115,7 @@
{2022-06-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{0}
+\def\patch@level{-1}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf
index 345556db0e..4f23908f57 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 2a376f6431..13231da818 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 9e013bc2af..7f4b925b79 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 7a21f7d871..10ddd44828 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -30,7 +30,7 @@
%
%<class>\NeedsTeXFormat{LaTeX2e}
%<class>\ProvidesClass{ltxdoc}
-%<class> [2020/12/05 v2.1b Standard LaTeX documentation class]
+%<class> [2021/12/07 v2.1d Standard LaTeX documentation class]
%
%<*driver>
\documentclass{ltxdoc}
@@ -102,7 +102,7 @@
% \PassOptionsToClass{a4paper}{article}
%\end{verbatim}
%
-% All the source files are in two parts, separated by |\StopEventually|.
+% All the source files are in two parts, separated by |\MaybeStop|.
% The first part (should) contain `user' documentation. The second part
% is a full documented listing of the source code. The |doc| package
% provides the command |\OnlyDescription| which suppresses the code
@@ -156,39 +156,53 @@
% \includeonly{ltvers,ltboxes}
%\end{verbatim}
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Options}
%
% \begin{macrocode}
%<*class>
+% \end{macrocode}
+%
+% \begin{macrocode}
\DeclareOption{a5paper}{\@latexerr{Option not supported}%
{}}
% \end{macrocode}
+% Prevent loading of a config file.
+% \begin{macrocode}
+\newif\ifltxdoc@load@cfg@ \ltxdoc@load@cfg@true
+\DeclareOption{nocfg}{\ltxdoc@load@cfg@false}
+% \end{macrocode}
%
% \begin{macrocode}
\DeclareOption*{%
\PassOptionsToClass {\CurrentOption}{article}}
% \end{macrocode}
%
-% \section{Configuration}
+% \section{Option Processing}
+%
+% \begin{macrocode}
+\ProcessOptions
+% \end{macrocode}
+%
+% \section{Local configuration}
% Input a local configuration file, if it exists.
% \begin{macrocode}
+\ifltxdoc@load@cfg@
\InputIfFileExists{ltxdoc.cfg}
{\typeout{*************************************^^J%
* Local config file ltxdoc.cfg used^^J%
*************************************}}
{}
+\else
+ \typeout{*************************************^^J%
+ * Local config file ignored^^J%
+ *************************************}
+\fi
% \end{macrocode}
%
%
-% \section{Option Processing}
-%
-% \begin{macrocode}
-\ProcessOptions
-% \end{macrocode}
-%
% \section{Loading article and doc}
%
% \begin{macrocode}
@@ -256,7 +270,7 @@
% arguments. It can \emph{not} be use to record commands that are defined as
% ``|\outer|'' nor is it possible to use it on conditionals such as
% |\iftrue| or defined by |\newif|.
-% |\cs{foo}| also prints |\foo|, for those who prefer that
+% |\cs{foo}| already available with the \texttt{doc} package also prints |\foo|, for those who prefer that
% syntax. (This second form can be used to record all types of command so the
% above restrictions do not apply.
% \begin{macro}{\cmd}
@@ -266,7 +280,7 @@
% \begin{macrocode}
\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
\def\cmd@to@cs#1#2{\char\number`#2\relax}
-\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+%\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}} % already part of doc.sty
% \end{macrocode}
% \end{macro}
% \end{macro}
@@ -602,5 +616,58 @@ Bug reports can be opened (category \texttt{#1}) at\\%
\def\task#1#2{}
%</class>
% \end{macrocode}
+%
+%
+%
+% \section{Configuration file}
+%
+%
+% \begin{macrocode}
+%<*cfg>
+%
+% This is the ltxdoc configuration file we use to format the LaTeX
+% kernel sources.
+%
+%
+% Copyright 2006, 2007, 2011 Heiko Oberdiek
+% Copyright 2014-2021 The LaTeX Project
+%
+
+\ProvidesFile{ltxdoc.cfg}%
+ [2021/12/07 v2.0c ltxdoc.cls configuration (LaTeX Project)]
+\PassOptionsToClass{a4paper}{article}
+
+% hyperref and hypdoc are now loaded late (or by the user) so we have to wait
+% with any adjustments until that has happened
+
+\AddToHook{package/hyperref/after}{%
+%% \RequirePackage{hypdoc}% % this is now triggered by doc
+ \RequirePackage{pdftexcmds}\relax
+ \ifnum\pdf@strcmp{\jobname}{inputenc}=0 %
+ \hypersetup{pdfencoding=auto}%
+ \pdfstringdefDisableCommands{%
+ \def\meta#1{% inputenc.dtx
+ \9060\010#1\9060\011%
+ }%
+ }%
+ \else
+ \fi
+ \pdfstringdefDisableCommands{%
+ \let\env\relax % longtable.dtx
+ \let\mytt\relax % tabularx.dtx
+ }%
+}
+
+% This should work well for documentation of packages outside the
+% LaTeX kernel, but if not, you can prevent the loading with the
+% option "nocfg", i.e.,
+%
+% \documentclass[nocfg]{ltxdoc]
+%
+% or by providing your own config file
+
+\endinput
+%</cfg>
+% \end{macrocode}
% \Finale
%
diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf
index 0ab58522f8..65cae4bc53 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 dd482299b2..53224103d9 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -88,7 +88,7 @@
% a space on either side.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \subsection{Cross Referencing}
%
diff --git a/macros/latex-dev/base/makeindx.dtx b/macros/latex-dev/base/makeindx.dtx
index 9dc03a8431..fb6c474659 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -83,7 +83,7 @@
% \texttt{book} document classes, but works with other classes as
% well. It makes |\flushbottom| the default.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The {\sc docstrip} modules}
%
diff --git a/macros/latex-dev/base/makeindx.ins b/macros/latex-dev/base/makeindx.ins
index 427d4c7967..0fe55ed039 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 22f2af62c6..a35431c671 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/manifest.txt b/macros/latex-dev/base/manifest.txt
index f6afcccce7..b671200a3a 100644
--- a/macros/latex-dev/base/manifest.txt
+++ b/macros/latex-dev/base/manifest.txt
@@ -1,5 +1,5 @@
%
-% The following files form the LaTeX2e distribution of 2020-10-01
+% The following files form the LaTeX2e distribution
%
%
% CONTENTS OF THE LaTeX DISTRIBUTION
@@ -11,10 +11,6 @@
% README.md -- The distribution guide. START BY READING THIS FILE
% manifest.txt -- This file.
%
-% tex2.txt -- Extras for installing LaTeX on TeX2.
-%
-% texpert.txt -- Documentation for TeX experts.
-%
% legal.txt -- Copyright notice; warranty; copying conditions.
% lppl.txt -- The LaTeX Project Public License (current version).
% lppl-1-0.txt -- The LaTeX Project Public License (version 1.0).
@@ -72,6 +68,9 @@
% ltnews30.tex -- What was new in the release dated 2019/10.
% ltnews31.tex -- What was new in the release dated 2020/02.
% ltnews32.tex -- What was new in the release dated 2020/10.
+% ltnews33.tex -- What was new in the release dated 2021/06.
+% ltnews34.tex -- What was new in the release dated 2021/11.
+% ltnews35.tex -- What was new in the release dated 2022/06.
%
% ltx3info.tex -- Information about the LaTeX3 project.
@@ -139,6 +138,8 @@
% lthooks.dtx -- Hook management
% ltfilehook.dtx -- Hook management for file loading
% ltshipout.dtx -- Hook management for \shipout
+% ltcmdhooks.dtx -- Hook management (generic) for commands
+% ltpara.dtx -- Hook management for paragraphs
%
% Standard Classes:
% -----------------
@@ -186,7 +187,7 @@
% doc.dtx -- Package for self documenting code.
% docstrip.dtx -- Module for removing comments.
% ltxdoc.dtx -- Class file for printing documentation.
-% doc-v3beta.sty -- New version of doc, current for internal use only.
+% ltxdoc.cfg -- config file to format the LaTeX sources.
%
%
% Installation scripts for the various parts:
diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf
index e425b8a075..4dab73b2ab 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 15aad3358f..b0651da0a5 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-2021
+% Copyright (C) 1993-2022
% The LaTeX 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 e2ce183f05..eeec6479eb 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 3b6e001075..86c0d47ab6 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -84,7 +84,7 @@
% NFSS1, i.e., to change one font attribute without resetting the
% other attributes.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{The Code}
diff --git a/macros/latex-dev/base/nfssfont.dtx b/macros/latex-dev/base/nfssfont.dtx
index 554c7ae8f0..51d7834aa3 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -82,7 +82,7 @@
% the moment only a crude adaption of the test program for the
% Computer Modern fonts by Donald Knuth.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{A driver for this document}
%
diff --git a/macros/latex-dev/base/nfssfont.ins b/macros/latex-dev/base/nfssfont.ins
index 7d1b9cc41a..a181c61972 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 8737c708f2..1148a19767 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 d878507d8e..707fb207e6 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 d04ddb6323..b7c9abc3eb 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -95,7 +95,7 @@
% \end{tabular}
% \end{center}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \changes{v2.2k}{1995/11/29}{Remove duplicate driver code.}
%
diff --git a/macros/latex-dev/base/preload.dtx b/macros/latex-dev/base/preload.dtx
index bf2bfebbfa..3b75df38fd 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -131,7 +131,7 @@
% \end{quote}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Module switches for the \dst{} program}
%
diff --git a/macros/latex-dev/base/proc.dtx b/macros/latex-dev/base/proc.dtx
index 7a1329fb82..135c67bc0b 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -73,7 +73,7 @@
%</driver>
%<+class>\ProvidesClass{proc}
%<+style>\ProvidesFile{proc.sty}
- [2020/11/23 v1.3l
+ [2021/12/09 v1.3m
%<+class> Standard LaTeX document class]
%<+style> LaTeX 2.09 compatibility style option `proc']
% \end{macrocode}
@@ -131,7 +131,7 @@
% should appear after any |\footnote| commands that produce
% footnotes for the first column.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The {\sc docstrip} modules}
%
@@ -338,9 +338,17 @@
% \begin{macrocode}
\let\@oddhead\@empty
\let\@evenhead\@empty
-\def\@oddfoot{\normalfont\rightmark \hfil
- \pagename{} \thepage}
-\def\@evenfoot{\@oddfoot}
+\def\@oddfoot{\rightmark \hfil \pagename{} \thepage}
+% \end{macrocode}
+% If the \texttt{twoside} option is passed to the class we provide
+% a different footer that shows the \cs{leftmark} if that is set.
+% \changes{v1.3m}{2021/12/09}{Support twoside (gh/704)}
+% \begin{macrocode}
+\if@twoside
+ \def\@evenfoot{\pagename{} \thepage \hfil \leftmark}
+\else
+ \def\@evenfoot{\@oddfoot}
+\fi
% \end{macrocode}
%
%
diff --git a/macros/latex-dev/base/proc.ins b/macros/latex-dev/base/proc.ins
index cfed5bd6a3..16f60195e5 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 4dfc3ba645..0e238c067b 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 e63c1901d6..06a4326277 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -205,7 +205,7 @@
% features without adding additional |\DeclareFontShape| commands to
% your |.fd| files or the preamble of your document.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{The Implementation}
diff --git a/macros/latex-dev/base/slides.ins b/macros/latex-dev/base/slides.ins
index 43ec2bebdf..8c9862c2d5 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 328a87af8a..add1f4592e 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 21c53533be..894aead8ff 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 f1dd97c296..bd750e892f 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 abe8c1aac2..9eea9ddd0f 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -264,6 +264,8 @@ page_precedence "rnaA"
\DocInclude{ltpara} % Paragraph hooks (L3 module)
+ \DocInclude{ltmeta} % Document Metadara interface (L3 module)
+
\DocInclude{ltspace} % Spacing, line and page breaking.
\DocInclude{ltlogos} % Logos.
@@ -326,6 +328,8 @@ page_precedence "rnaA"
\DocInclude{ltclass} % Package & Class interface
+ \DocInclude{ltkeys} % Key-based option management (L3 module)
+
\DocInclude{ltfilehook} % Hook management for files (L3 module)
\DocInclude{ltshipout}% \shipout redefinition (L3 module)
diff --git a/macros/latex-dev/base/source2edoc.cls b/macros/latex-dev/base/source2edoc.cls
index bef81d995d..b17c4c52b1 100644
--- a/macros/latex-dev/base/source2edoc.cls
+++ b/macros/latex-dev/base/source2edoc.cls
@@ -5,6 +5,8 @@
[2021/01/14 v0.2b Quick hack to typeset source2.tex
(not usable for anything else and buggy -- will vanish again)!]
+
+
\LoadClass{l3doc}
\RemoveFromHook{begindocument}[l3doc] % drop the standard setting making " a shortverb
@@ -18,7 +20,7 @@
\ExplSyntaxOn
% in 2e we have a lot of functions that have no ``user-level'' documentation so we disable
-% a bogus backref in that case. Over time the sources should be clean up to have such documentation.
+% a bogus backref in that case. Over time the sources should be cleaned up to have such documentation.
\cs_set_protected:Npn \__codedoc_print_documented:
{
diff --git a/macros/latex-dev/base/syntonly.dtx b/macros/latex-dev/base/syntonly.dtx
index b214c49ae4..ae4d4cd1f8 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -55,7 +55,7 @@
% This command can be used in the preamble for running a document
% through \LaTeX{} without actually getting any output.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Identification}
diff --git a/macros/latex-dev/base/syntonly.ins b/macros/latex-dev/base/syntonly.ins
index 6b4113ed11..5812ef2fd6 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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-2021
+Copyright (C) 1993-2022
The LaTeX 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 8d67df1a00..47b7e2517b 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 ff17984ee1..e199a2bb71 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/tex2.txt b/macros/latex-dev/base/tex2.txt
deleted file mode 100644
index 09cd388cde..0000000000
--- a/macros/latex-dev/base/tex2.txt
+++ /dev/null
@@ -1,83 +0,0 @@
- LaTeX installation TeX2 information
-
- 16 September 1995
-
-
-In order to make a LaTeX format and use it you need, in addition to
-the LaTeX source files, a TeX implementation.
-
-If your TeX is very old, prior to version TeX3, then certain features
-will be missing from your system. In particular, you will probably
-have no support for `8-bit' input and hyphenation of words with
-accented characters.
-
-Most (perhaps all) TeX implementations are available in versions that
-are at least as recent as TeX3 (released in 1989) so the best course
-of action is to update your TeX installation before building LaTeX.
-
-However, if you must for some reason make the LaTeX format by running
-the old TeX2 then it is necessary to have a `configuration file' named
-fonttext.cfg. The existence of this file will prevent LaTeX trying to
-access 8-bit characters, which is not allowed in the old TeX2 version
-of TeX.
-
-If you fail to use such a configuration file, LaTeX will detect that it
-is running under TeX2 and stop with the following message (without
-making a format file):
-
-*************************************
-*
-* You MUST use a fonttext.cfg file!
-* As you are still using TeX2!!!!!!
-*
-* See the documentation file tex2.txt
-*
-*************************************
-
-
-There is more information about the file fonttext.cfg in the file
-cfgguide.tex; but for a minimal configuration that allows LaTeX to
-be built on TeX2, just do the following:
-
- * Copy the standard fonttext.ltx file to fonttext.cfg
- * Then edit the file fonttext.cfg as follows:
- -- Change the \ProvidesFile call (see below).
- -- Comment out all the lines referring to the `T1' encoding (but not
- those referring to the `OT1' encoding).
-
-Thus the resulting file will look something like the following.
-
-%%% File: fonttext.cfg
-\ProvidesFile{fonttext.cfg}
- [1995/06/05 v1.0 TeX2 text font setup]
-
-\input {OMLenc.def}
-%%%%% NOT FOR TeX2 \input {T1enc.def}
-\input {OT1enc.def} % <- should come after T1 for speed
-\input {OMSenc.def}
-\fontencoding{OT1}
-\DeclareFontEncodingDefaults{}{}
-%%%%% NOT FOR TeX2 \DeclareFontSubstitution{T1}{cmr}{m}{n}
-\DeclareFontSubstitution{OT1}{cmr}{m}{n}
-%%%%% NOT FOR TeX2 \input {T1cmr.fd}
-\input {OT1cmr.fd}
-\input {OT1cmss.fd}
-\input {OT1cmtt.fd}
-\DeclareErrorFont{OT1}{cmr}{m}{n}{10}
-\newcommand\rmdefault{cmr}
-\newcommand\sfdefault{cmss}
-\newcommand\ttdefault{cmtt}
-
-\newcommand\bfdefault{bx}
-\newcommand\mddefault{m}
-
-\newcommand\itdefault{it}
-\newcommand\sldefault{sl}
-\newcommand\scdefault{sc}
-\newcommand\updefault{n}
-
-\newcommand\encodingdefault{OT1}
-\newcommand\familydefault{\rmdefault}
-\newcommand\seriesdefault{\mddefault}
-\newcommand\shapedefault{\updefault}
-\endinput
diff --git a/macros/latex-dev/base/texpert.txt b/macros/latex-dev/base/texpert.txt
deleted file mode 100644
index 0eb1dd7784..0000000000
--- a/macros/latex-dev/base/texpert.txt
+++ /dev/null
@@ -1,210 +0,0 @@
- LaTeX installation TeX expert information
-
- 1 June 1997
-
-
-SUMMARY
-=======
-
-This document contains information about the LaTeX installation for
-TeX experts. In particular it describes:
-
- * The checks performed by ltxcheck.tex
-
- * How to print the LaTeX source.
-
-For more general information, see install.txt.
-
-For information on configuring LaTeX see cfgguide.tex.
-
-
-THE LTXCHECK.TEX CHECKS
-=======================
-
-Here is a description of the checks run by ltxcheck.
-
-1) The \@currdir check.
-
- It is useful for LaTeX to know the syntax for the `current directory
- (or folder)', or `default directory', if the operating system has
- such a concept.
-
- For example, file abc.tex in this directory, or folder, is specified
- by:
- ./abc.tex on Unix and most DOS/OS2 TeX's,
- []abc.tex on VMS
- :abc.tex on a Macintosh.
- The above possibilities will be found automatically during the
- installation. However, if none of these syntaxes works on your
- system then the internal macro \@currdir will be set to be empty
- and ltxcheck will report this.
-
- If your system does have a notion of a current directory, you can
- define \@currdir in the file texsys.cfg.
-
- You could also report this to the latex-bug address, so that
- later releases can automatically cope with your system.
-
-2) The file name parser check.
- \filename@parse may be defined in texsys.cfg if the default
- installation does not define a suitable parser. (In fact no widely
- used TeX system should need such a re-definition as the standard
- installation should correctly define this command for unix, dos,
- atari, VMS, and Macintosh, at least.)
- Because of differences in directory syntax, most features of this
- command can not be checked in a portable way, however ltxcheck does
- check that at least {article.cls} is correctly parsed as base name
- article and extension cls.
-
-3) The \input@path check.
-
- On some systems TeX cannot check whether a file exists before
- trying to input it, unless the filename is expressed as a full path
- name, including the directory. On these systems LaTeX needs to be
- given a list of directories in which to look for files; the
- internal macro \input@path holds this information.
-
- When run, ltxcheck will try to locate the file article.cls.
- If it fails to find this file (and you have placed it in the
- `standard input directory') then you must define \input@path in
- the file texsys.cfg.
-
- The files texsys.cfg and ltdirchk.dtx contain examples of how to do
- this but only you know the directories and syntax that should be used
- for your installation.
-
- We hope to build up a better collection of examples in future
- releases of LaTeX, as it is tested on more TeX systems.
-
-4) TeX version check.
-
- The next check tests that you are running a recent version of TeX.
- If ltxcheck reports that you have TeX2, then you should try to
- upgrade TeX (and rebuild LaTeX) as soon as possible. LaTeX may be
- used with TeX2, but certain features will be missing and you will
- not be able to use the new (8-bit) font families that are now
- available. If you must stick with TeX2, please read the extra
- information in the file tex2.txt.
-
- If ltxcheck reports that your TeX version is older than 3.141, you
- will see some strange messages during the installation. This is
- because earlier versions of TeX printed certain line-breaks in
- messages on the terminal as `^^J' rather than starting a new line.
-
- LaTeX will work round this bug and thus avoid `^^J' appearing in
- error messages, but you should upgrade your TeX as soon as
- possible, as other bugs have been fixed, not just line breaks in
- messages.
-
- At the present time (2005) the current TeX version is 3.141592.
-
-5) Fonts check.
-
- Finally ltxcheck.tex tests to see if it can find a `representative
- sample' of the fonts used by LaTeX.
-
- Fonts that may cause problems are:
- a) The circle fonts. These were renamed some years ago from circle*
- to lcircle*, although some sites still have them under the old
- name. Also the names are longer than 8 letters which may cause
- some problems.
- b) The `extra Computer Modern' fonts. The American Mathematical
- Society has extended the range of sizes available in the
- Computer Modern fonts. LaTeX now assumes that these extra cm
- fonts are available.
- The fonts are available from a CTAN archive, in the directory
- ctan:macros/latex/fonts or alternatively as part of the
- AMS fonts collection, which also includes many useful
- mathematical fonts.
- c) The `T1 encoded Computer Modern' fonts. This is the ec or dc font
- collection. The new (1995) release 1.2 of the dc fonts changed
- most of the file names. For this reason the fd files such as
- t1cmr.fd cannot be written to work with the dc fonts of different
- releases. LaTeX by default unpacks the fd files for the ec
- dc fonts.
- If you have an older release of the dc fonts and do not wish to
- upgrade then you should unpack the necessary fd files by running
- LaTeX on the file olddc.ins (dc older than version 1.2) or
- newdc.ins (version 1.2 and 1.3).
- As the T1 fd files will have been used when making the format,
- you must re-run initex latex.ltx to remake the format if you
- update the fd files in this way.
- Running ltxcheck will produce a ! BAD LaTeX2e system!! error
- message if it detects that the `new' fd files are loaded into
- the format, but only the old dc fonts are available, and vice
- versa.
- If the old fonts are detected, and the `old' fd files are loaded
- then no error is generated, but a message suggesting that you
- upgrade is produced.
- The ec fonts are available from a CTAN archive, in the directory
- ctan:fonts/ec .
-
-
-6) Files check.
-
- Finally ltxcheck checks that the main TeX input files that LaTeX
- will use when running documents (such as the article class file,
- fd files, and main packages such as fontenc) are all available.
-
-
-DOCUMENTATION OF THE CODE
-=========================
-
-Most of the documentation is nowadays available as precomplied PDF
-files. This section describes how to produce typeset code
-documentation yourself from the source.
-
-To typeset a documented code file (a .dtx file) you simply run LaTeX
-on it. The file source2e.tex is a master file which produces the
-documented code for the whole LaTeX kernel (but not the standard
-packages, classes, or compatibility mode). You need to have LaTeX2e
-installed before doing this.
-
-To configure the appearance of this documentation, you can use a
-ltxdoc.cfg file. For example, putting the following line into this
-file will format the documentation for A4 paper:
-
- \PassOptionsToClass{a4paper}{article}
-
-The doc package, which is used by the documentation files, writes
-index files and change-history files that can be processed by the
-program MakeIndex. If this program is part of your TeX installation,
-you can get an index and history listing for a documentation file
-by running the .idx and .glo files through this program.
-
-For example, in Unix MakeIndex, you should say:
-
- makeindex -s gind.ist FILENAME
- makeindex -s gglo.ist -o FILENAME.gls FILENAME.glo
-
-source2e.tex needs a special source2e.ist file (in place of gind.ist).
-Running makeindex will produce some warning messages about ignored
-style specifiers; these can be safely ignored.
-
-See the comments at the end of source2e.tex for more information.
-
-
-CONFIGURING LaTeX
-=================
-
-In addition to the system-dependent customisation in texsys.cfg,
-various other parts of LaTeX can be configured to suit local needs.
-Further details can be found in the document cfgguide.tex. We
-recommend that you install the standard system before attempting any
-further customisation.
-
-If you are thinking of making other changes to LaTeX, please read the
-document modguide.tex as it describes the precautions you need to take
-when making modifications in order to ensure that standard LaTeX
-remains a stable, maintainable system.
-
-
-FURTHER INFORMATION
-===================
-
-You will find further information about various aspects of LaTeX in
-the distributed files with names <*>guide.tex. You will need
-to install the new version before you can typeset these files.
-
-
---- Copyright (C) 1995-2019 the LaTeX Project. All rights reserved ---
diff --git a/macros/latex-dev/base/tlc2.err b/macros/latex-dev/base/tlc2.err
index 46ba9ed845..8925a8bee1 100644
--- a/macros/latex-dev/base/tlc2.err
+++ b/macros/latex-dev/base/tlc2.err
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2014-09-30}
+\newcommand\erratafiledate{2022-01-03}
\def\comando#1{\texttt{\string#1}}
@@ -852,6 +852,9 @@ highlighting color\u{ as demonstrated below}:
\erroronpage{116}{Footnote 1, line 1}{CBC}{2004/05/18}{2}
Replace: ``I managed to confuse'' with ``we managed to confuse''.
+\erroronpage{117}{para 1, l.1}{EOl}{2022/01/02}{}
+ Missing letter: ``to cho\u{o}se''
+
\erroronpage{117}{para 2, l.2}{HjG}{2004/05/25}{2}
Missing letter: ``It take\u{s} two \ldots''
@@ -2233,6 +2236,10 @@ Change: ``The unaccented ASCII Latin letters and Arabic
Various deviations from alphabetical sort order of the table
entries.
+\erroronpage{553}{para 3, l.1}{EOl}{2022/01/02}{}
+ Missing letter: ``sup\u{p}ressing''
+
+
\iffalse % more blue align stuff
\erroronpage{534}{page}{FMi}{2004/04/23}{}
Printing problem: blue color not properly aligned (horizontally).
@@ -2313,7 +2320,7 @@ Plural: ``Clearly, 8 bits \u{are} not sufficient\ldots''
\erroronpage{551}{tab 9.3}{CBe}{2004/07/27}{}
I am surprised that in Russian there is no word for ``Glossary''.
- Frank: It most certainly exits :-), but right now Babel doesn't
+ Frank: It most certainly exists :-), but right now Babel doesn't
know about it---so there is nothing we can do about it at the
moment. Actually the same problem exists with Polish, although here
I got a translation ``s\l{}ownik termin\'ow'' which will eventually
@@ -2715,6 +2722,9 @@ some of the listed drivers are only of historical interest.
\erroronpage{616}{boxed texts}{FMi}{2004/05/26}{2}
Corrections as outlined in summary entry above.
+\erroronpage{617}{Fig. 10-2-2}{EOl}{2021/11/17}{}
+ A ``|%|'' should follow the ending ``|}|'' of the two |\bluefbox|es.
+
\erroronpage{618}{boxed text}{CAR}{2004/05/26}{2}
Replace: ``\textit{key val list}'' \> ``\textit{key/val-list}''
(also in following text).
@@ -2740,6 +2750,9 @@ some of the listed drivers are only of historical interest.
%\erroronpage{621}{page}{FMi}{2004/04/23}{}
% Printing problem: blue color not properly aligned.
+\erroronpage{621}{Fig. 10-2-8}{EOl}{2021/11/17}{}
+ A ``|%|'' should follow the ending ``|}|'' of the first |\bluefbox|.
+
\erroronpage{623}{para 1, l.7}{HjG}{2004/06/07}{2}
Delete word: ``some \u{of} key combinations''
@@ -2752,7 +2765,7 @@ some of the listed drivers are only of historical interest.
\u{\texttt{tabular}} examples''
\erroronpage{631}{para.2, l.6}{FMi/HjG}{2006/10/22}{s}
- Ersetze: "`\u{This point} is shown \ldots"' \>
+ Replace: "`\u{This point} is shown \ldots"' \>
"`\u{This} is shown \ldots"'
\erroronpage{631}{para -1, l.-1}{JBr}{2004/08/02}{2}
@@ -4547,6 +4560,7 @@ and
\contributor{DHL}{Dan Luecking}
\contributor{DIs}{Daniel Isaacson}
\contributor{DSch}{Dirk Schlimm}
+\contributor{EOl}{Edgar Olthof}
\contributor{ERy}{Elizabeth Ryan}
\contributor{FHa}{Ferdy Hanssen}
\contributor{FMi}{Frank Mittelbach}
@@ -4621,7 +4635,7 @@ preferably in a form usable directly in this file, i.e.,
\begin{flushleft}
|\erroronpage{|\textit{page-number}|}{|\textit{line-identification}|}{|%
\textit{your-initials}|}{|\textit{date}|}{}| \\
- \hspace*{2em}\textit{description of the the erratum}
+ \hspace*{2em}\textit{description of the erratum}
\end{flushleft}
Here is an example:
\begin{verbatim}
diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf
index 58ae5264ac..06731d0a9d 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 98962f2b20..a50060b201 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-2021
+%% Copyright (C) 2016-2022
%% The LaTeX 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-2021
+Copyright (C) 2016-2022
The LaTeX 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 023c70c0b0..4d5c375eb9 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 6332fcb5c0..21ba62a33a 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-2021
+%% Copyright (C) 1993-2022
%% The LaTeX 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 6dc20a37df..59e7711019 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 a94d8a6a70..dfdf9443e6 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
diff --git a/macros/latex-dev/base/usrguide3.pdf b/macros/latex-dev/base/usrguide3.pdf
index a051df898c..11da2b74b8 100644
--- a/macros/latex-dev/base/usrguide3.pdf
+++ b/macros/latex-dev/base/usrguide3.pdf
Binary files differ
diff --git a/macros/latex-dev/base/usrguide3.tex b/macros/latex-dev/base/usrguide3.tex
index 82c1c06863..249b708943 100644
--- a/macros/latex-dev/base/usrguide3.tex
+++ b/macros/latex-dev/base/usrguide3.tex
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 2020-2021
+% Copyright (C) 2020-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -31,12 +31,13 @@
\documentclass{ltxguide}
\usepackage[T1]{fontenc} % needed for \textbackslash in tt
+\usepackage{csquotes}
\title{New \LaTeX\ methods for authors (starting 2020)}
-\author{\copyright~Copyright 2020-2021, \LaTeX\ Project Team.\\
+\author{\copyright~Copyright 2020-2022, \LaTeX\ Project Team.\\
All rights reserved.}
-\date{2021-06-11}
+\date{2022-01-03}
\NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
\NewDocumentCommand\marg{m}{\arg{#1}}
@@ -48,6 +49,18 @@
\renewcommand \verbatim@font {\normalfont \ttfamily}
\makeatother
+
+% for fpeval documentation
+
+\providecommand\fpop[1]{\mathop{\texttt{#1}}}
+\providecommand\fpbin[1]{\mathbin{\texttt{#1}}}
+\providecommand\fprel[1]{\mathrel{\texttt{#1}}}
+\providecommand\nan{\texttt{NaN}}
+
+\ExplSyntaxOn
+\ProvideExpandableDocumentCommand \fpeval { m } { \fp_eval:n {#1} }
+\ExplSyntaxOff
+
\begin{document}
\maketitle
@@ -227,6 +240,11 @@ defined.
same name. This should be used sparingly.
\end{itemize}
+If the \meta{cmd} can't be provided as a single token but needs
+\enquote{constructing}, you can use \cs{ExpandArgs} as explained in
+Section~\ref{sec:preconstructing-csnames} which also gives an example
+in which this is needed.
+
\begin{decl}
|\NewDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code} \\
|\RenewDocumentEnvironment| \arg{env} \arg{arg spec} \arg{beg-code} \arg{end-code} \\
@@ -288,7 +306,7 @@ must exist). So after
\end{verbatim}
the user input |\foo{arg1}[arg2]{arg3}| and \verb*|\foo{arg1} [arg2] {arg3}|
will both be parsed in the same way.
-
+
The behavior of optional arguments \emph{after} any mandatory arguments is
selectable. The standard settings will allow spaces here, and thus with
\begin{verbatim}
@@ -554,10 +572,12 @@ spaces are trimmed at both ends of the body: in the example there would
otherwise be spaces coming from the ends the lines after |[\itshape]| and
|world!|. Putting the prefix |!| before \texttt{b} suppresses space-trimming.
-When \texttt{b} is used in the argument specification, the last argument of the environment declaration (e.g., \cs{NewDocumentEnvironment}), which consists of an \meta{end code} to insert at
-|\end|\marg{environment}, is redundant since one can simply put that code at
-the end of the \meta{start code}. Nevertheless this (empty) \meta{end code}
-must be provided.
+When \texttt{b} is used in the argument specification, the last
+argument of the environment declaration (e.g.,
+\cs{NewDocumentEnvironment}), which consists of an \meta{end code} to
+insert at |\end|\marg{environment}, is redundant since one can simply
+put that code at the end of the \meta{start code}. Nevertheless this
+(empty) \meta{end code} must be provided.
Environments that use this feature can be nested.
@@ -665,7 +685,7 @@ with both calls to the command seeing the delimiter |\x|.
\subsection{Creating new argument processors}
\begin{decl}
- |\ProcessedArgument|
+ |\ProcessedArgument|
\end{decl}
Argument processors allow manipulation of a grabbed argument before it is
passed to the underlying code. New processor implementations may be created
@@ -710,4 +730,280 @@ requested \meta{function} or \meta{environment} at the terminal. If
the \meta{function} or \meta{environment} has no known argument
specification then an error is issued.
+
+
+\section{Copying and showing (robust) commands}
+
+If you want to (slightly) alter an existing command you may want to
+save the current definition under a new name and then use that in a
+new definition. If the existing command is robust, then the old trick of
+using the low-level \cs{let} for this doesn't work, because it only
+copies the top-level definition, but not the part that actually does
+the work. As most \LaTeX{} commands are nowadays robust, \LaTeX{}
+now offers some high-level declarations for this instead.
+
+However, please note that it is usually better to make use of
+available hooks (e.g., the generic command or environment hooks),
+instead of copying the current definition and thereby freezing it; see
+the hook management documentation \texttt{lthooks-doc.pdf} for
+details.
+
+\begin{decl}
+ |\NewCommandCopy| \arg{cmd} \arg{existing-cmd} \\
+ |\RenewCommandCopy| \arg{cmd} \arg{existing-cmd} \\
+ |\DeclareCommandCopy| \arg{cmd} \arg{existing-cmd}
+\end{decl}
+
+This copies the definition of \meta{existing-cmd} to \meta{cmd}. After
+this \meta{existing-cmd} can be redefined and \meta{cmd}
+still works! This allows you to then provide a new definition for
+\meta{existing-cmd} that makes use of \meta{cmd} (i.e., of its old
+definition). For example, after
+\begin{verbatim}
+ \NewCommandCopy\LaTeXorig\LaTeX
+ \RenewDocumentCommand\LaTeX{}{\textcolor{blue}{\LaTeXorig}}
+\end{verbatim}
+all \LaTeX{} logos generated with \cs{LaTeX} will come out in blue
+(assuming you have a color package loaded).
+
+The differences between \cs{New...} and \cs{Renew...} are as
+elsewhere: i.e., you get an error depending on whether or not
+\meta{cmd} already exists, or in case of \cs{Declare...} it is copied
+regardless. Note that there is no \cs{Provide...} declaration, because
+that would be of limited value.
+
+
+If the \meta{cmd} or \meta{existing-cmd} can't be provided as a single
+token but need \enquote{constructing}, you can use \cs{ExpandArgs}
+as explained in
+Section~\ref{sec:preconstructing-csnames}.
+
+
+
+
+\begin{decl}
+ |\ShowCommand| \arg{cmd}
+\end{decl}
+
+This displays the meaning of the \meta{cmd} on the terminal and then
+stops (just like the primitive \cs{show}). The difference is that it
+correctly shows the meaning of more complex commands, e.g., in case of
+robust commands it displays not only the top-level definition but
+also the actual payload code and in case of commands declared with
+\cs{NewDocumentCommand}, etc.\ it also gives you detailed information
+about the argument signature.
+
+
+\section[Preconstructing command names \\ (or otherwise expanding arguments)]
+ {Preconstructing command names (or otherwise expanding arguments)}
+\label{sec:preconstructing-csnames}
+
+When declaring new commands with \cs{NewDocumentCommand} or
+\cs{NewCommandCopy} or similar, it is sometimes necessary to
+``construct'' the csname. As a general mechanism the L3 programming
+layer has \cs{exp_args:N...} for this, but there is no mechanism for
+it if \cs{ExplSyntaxOn} is not active (and mixing programming and user
+interface level commands is not a good approach anyhow). We therefore
+offer a mechanism to access this ability using CamelCase naming.
+
+\begin{decl}
+ |\UseName| \arg{string} \\
+ |\ExpandArgs| \arg{spec} \arg{cmd} \arg{arg1} \dots
+\end{decl}
+
+\cs{UseName} turns the \meta{string} directly into a csname and
+then executes it: this is equivalent to the long-standing
+\LaTeXe{} internal command \cs{@nameuse}, or the L3 programming
+equivalent \cs{use:c}. \cs{ExpandArgs} takes a \meta{spec} which
+describes how to expand the \meta{arguments}, carries out these
+operations then executes the \meta{cmd}. The \meta{spec} uses
+the descriptions offered by the L3 programming layer, and the
+relevant \cs{exp_args:N...} function must exist. Common cases will
+have a \meta{spec} of \texttt{c}, \texttt{cc} or \texttt{Nc}: see below.
+
+As an example, the following declaration provides a method to generate
+copyedit commands:
+\begin{verbatim}
+\NewDocumentCommand\newcopyedit{mO{red}}
+ {\newcounter{todo#1}%
+ \ExpandArgs{c}\NewDocumentCommand{#1}{s m}%
+ {\stepcounter{todo#1}%
+ \IfBooleanTF {##1}%
+ {\todo[color=#2!10]{\UseName{thetodo#1}: ##2}}%
+ {\todo[inline,color=#2!10]{\UseName{thetodo#1}: ##2}}%
+ }%
+ }
+\end{verbatim}
+Given that declaration you can then write
+\verb/\newcopyedit{note}[blue]/ which defines the command \cs{note}
+and the corresponding counter for you.
+
+A second example is to copy a command by string name using
+\cs{NewCommandCopy}: here we might need to construct both command
+names.
+\begin{verbatim}
+\NewDocumentCommand\savebyname{m}
+ {\ExpandArgs{cc}\NewCommandCopy{saved#1}{#1}}
+\end{verbatim}
+
+In the \meta{spec} each \texttt{c} stands for one argument that is
+turned into a `\texttt{c}'ommand. An \texttt{n} represents a
+`\texttt{n}'ormal argument that is not altered and \texttt{N} stands for
+a `\texttt{N}'ormal argument which is also left unchanged, but one
+consisting only of a single token (and usually unbraced). Thus, to
+construct a command from a string only for the second argument of
+\cs{NewCommandCopy} you would write
+\begin{verbatim}
+\ExpandArgs{Nc}\NewCommandCopy\mysectionctr{c@section}
+\end{verbatim}
+There are several other single letters supported in the L3 programming
+layer that \emph{could} be used in the \meta{spec} to manipulate
+arguments in other ways. If you are interested, take a look at the
+\enquote{Argument expansion} section in the L3 programming layer
+documentation in \texttt{interface3.pdf}.
+
+
+
+\section{Expandable floating point (and other) calculations}
+
+The \LaTeX3 programming layer which is part of the format offers a
+rich interface to manipulate floating point variables and values. To
+allow for (simpler) applications to use this on document-level or in
+packages otherwise not making use of the L3 programming layer a few
+interface commands are made available.
+
+
+\begin{decl}
+ |\fpeval| \arg{floating point expression}
+\end{decl}
+
+The expandable command \cs{fpeval} takes as its argument a floating
+point expression and produces a result using the normal rules of
+mathematics. As this command is expandable it can be used where \TeX{}
+requires a number and for example within a low-level \cs{edef} operation
+to give a purely numerical result.
+
+
+
+Briefly, the floating point expressions may comprise:
+\begin{itemize}
+ \item Basic arithmetic: addition $x\fpbin{+}y$, subtraction $x\fpbin{-}y$,
+ multiplication $x\fpbin{*}y$, division $x\fpbin{/}y$, square root~$\sqrt{x}$,
+ and parentheses.
+ \item Comparison operators: $x\fprel{<}y$,
+ $x\fprel{<=}y$, $x\fprel{>?}y$,
+ $x\fprel{!=}y$ \emph{etc.}
+ \item Boolean logic: sign $\fpop{sign} x$,
+ negation $\fpop{!}x$, conjunction
+ $x\fprel{\&\&}y$, disjunction $x\fprel{\string|\string|}y$, ternary
+ operator $x\fprel{?}y\fprel{:}z$.
+ \item Exponentials: $\fpop{exp} x$, $\fpop{ln} x$, $x\mathord{\texttt{\^{}}}y$.
+ \item Integer factorial: $\fpop{fact} x$.
+ \item Trigonometry: $\fpop{sin} x$, $\fpop{cos} x$, $\fpop{tan} x$, $\fpop{cot} x$, $\fpop{sec}
+ x$, $\fpop{csc} x$ expecting their arguments in radians, and
+ $\fpop{sind} x$, $\fpop{cosd} x$,
+ $\fpop{tand} x$, $\fpop{cotd} x$,
+ $\fpop{secd} x$, $\fpop{cscd} x$ expecting their
+ arguments in degrees.
+ \item Inverse trigonometric functions: $\fpop{asin} x$,
+ $\fpop{acos} x$, $\fpop{atan} x$,
+ $\fpop{acot} x$, $\fpop{asec} x$,
+ $\fpop{acsc} x$ giving a result in radians, and
+ $\fpop{asind} x$, $\fpop{acosd} x$,
+ $\fpop{atand} x$, $\fpop{acotd} x$,
+ $\fpop{asecd} x$, $\fpop{acscd} x$ giving a result
+ in degrees.
+ \item Extrema: $\fpop{max}(x_{1},x_{2},\ldots)$, $\fpop{min}(x_{1},x_{2},\ldots)$,
+ $\fpop{abs}(x)$.
+ \item Rounding functions, controlled by two optional
+ values, $n$ (number of places, $0$ by default) and
+ $t$ (behavior on a tie, $\nan$ by default):
+ \begin{itemize}
+ \item $\fpop{trunc}(x,n)$ rounds towards zero,
+ \item $\fpop{floor}(x,n)$ rounds towards~$-\infty$,
+ \item $\fpop{ceil}(x,n)$ rounds towards~$+\infty$,
+ \item $\fpop{round}(x,n,t)$ rounds to the closest value, with
+ ties rounded to an even value by default, towards zero if $t=0$,
+ towards $+\infty$ if $t>0$ and towards $-\infty$ if $t<0$.
+ \end{itemize}
+ \item Random numbers: $\fpop{rand}()$, $\fpop{randint}(m,n)$.
+ \item Constants: \texttt{pi}, \texttt{deg} (one degree in radians).
+ \item Dimensions, automatically expressed in points, \emph{e.g.},
+ \texttt{pc} is~$12$.
+ \item Automatic conversion (no need for \cs{number}) of
+ integer, dimension, and skip variables to floating points numbers,
+ expressing dimensions in points and ignoring the stretch and
+ shrink components of skips.
+ \item Tuples: $(x_1,\ldots{},x_n)$ that can be added together,
+ multiplied or divided by a floating point number, and nested.
+\end{itemize}
+
+An example of use could be the following:
+\begin{verbatim}
+ \LaTeX{} can now compute: $ \frac{\sin (3.5)}{2} + 2\cdot 10^{-3}
+ = \fpeval{sin(3.5)/2 + 2e-3} $.
+\end{verbatim}
+which produces the following output:
+\begin{quote}
+ \LaTeX{} can now compute: $ \frac{\sin (3.5)}{2} + 2\cdot 10^{-3}
+ = \fpeval{sin(3.5)/2 + 2e-3} $.
+\end{quote}
+
+\begin{decl}
+ |\inteval| \arg{integer expression}
+\end{decl}
+
+ The expandable command \cs{inteval} takes as its argument an integer
+ expression and produces a result using the normal rules of
+ mathematics with some restrictions, see below. The operations
+ recognized are |+|, |-|, |*| and |/| plus parentheses. As this
+ command is expandable it can be used where \TeX{} requires a number
+ and for example within a low-level \cs{edef} operation to give a
+ purely numerical result.
+
+ This is basically a thin wrapper for the primitive \cs{numexpr}
+ command and therefore has some syntax restrictions. These are:
+ \begin{itemize}
+ \item \texttt{/} denotes division rounded to the closest integer with
+ ties rounded away from zero;
+ \item there is an error and the overall expression evaluates to zero
+ whenever the absolute value of any intermediate result exceeds
+ $2^{31}-1$, except in the case of scaling operations
+ $a$\texttt{*}$b$\texttt{/}$c$, for which $a$\texttt{*}$b$ may be
+ arbitrarily large;
+ \item parentheses may not appear after unary \texttt{+} or
+ \texttt{-}, namely placing \texttt{+(} or \texttt{-(} at the start
+ of an expression or after \texttt{+}, \texttt{-}, \texttt{*},
+ \texttt{/} or~\texttt{(} leads to an error.
+ \end{itemize}
+
+An example of use could be the following.
+\begin{verbatim}
+\LaTeX{} can now compute: The sum of the numbers is $\inteval{1 + 2 + 3}$.
+\end{verbatim}
+which results in
+\enquote{\LaTeX{} can now compute: The sum of the numbers is $\inteval{1 + 2 + 3}$.}
+
+
+\begin{decl}
+ |\dimeval| \arg{dimen expression} \qquad
+ |\skipeval| \arg{skip expression}
+\end{decl}
+
+Similar to \cs{inteval} but computing a length (\texttt{dimen}) or a
+rubber length (\texttt{skip}) value. Both are thin wrappers around
+the corresponding engine primitives, which makes them fast, but
+therefore shows the same syntax peculiars as discussed
+above. Nevertheless, in practice they are usually sufficient. For
+example
+\begin{verbatim}
+\newcommand\calulateheight[1]{%
+ \setlength\textheight{\dimeval{\topskip+\baselineskip*\inteval{#1-1}}}}
+\end{verbatim}
+sets the \cs{textheight} to the appropriate value if a page should
+hold a specific number of text lines. Thus after |\calulateheight{40}|
+it is set to \dimeval{\topskip+\baselineskip*\inteval{40-1}}, given
+the values \cs{topskip} (\dimeval{\topskip}) and \cs{baselineskip}
+(\dimeval{\baselineskip}) in the current document.
+
\end{document}
diff --git a/macros/latex-dev/base/utf8ienc.dtx b/macros/latex-dev/base/utf8ienc.dtx
index 75990d1b03..a0c96357a0 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-2021
+% Copyright (C) 1993-2022
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
%
@@ -190,7 +190,7 @@
% information.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
%
@@ -216,7 +216,7 @@
%<+ts1> \ProvidesFile{ts1enc.dfu}
%<+x2> \ProvidesFile{x2enc.dfu}
%<+all> \ProvidesFile{utf8enc.dfu}
-%<-utf8-2018> [2021/06/21 v1.2n UTF-8 support]
+%<-utf8-2018> [2021/12/13 v1.2o UTF-8 support]
% \end{macrocode}
%
% \begin{macrocode}
@@ -773,12 +773,13 @@
% looks slightly strange but is designed for the sequence of |\expandafter|
% in |\DeclareUnicodeCharacter|.
%
+% \changes{v1.2o}{2021/12/13}{Use 80 not A0 to test for single byte UTF-8}
% \begin{macrocode}
- \ifnum\count@<"A0\relax
+ \ifnum\count@<"80\relax
\ifnum\catcode\count@=13
\uccode`\~=\count@\uppercase{\def\UTFviii@tmp{\@empty\@empty~}}%
\else
- \@latex@error{Cannot define non-active Unicode char value < 00A0}%
+ \@latex@error{Cannot define non-active Unicode char value < 0080}%
\@eha
\def\UTFviii@tmp{\UTFviii@tmp}%
\fi
@@ -1368,6 +1369,18 @@
%<all,t1,ly1>\DeclareUnicodeCharacter{017E}{\v z}
%<all,ts1,ly1>\DeclareUnicodeCharacter{0192}{\textflorin}
% \end{macrocode}
+% \changes{v1.2n}{2021/12/10}{add 01C4-01CC}
+% \begin{macrocode}
+%<all,t1>\DeclareUnicodeCharacter{01C4}{D\v Z}
+%<all,t1>\DeclareUnicodeCharacter{01C5}{D\v z}
+%<all,t1>\DeclareUnicodeCharacter{01C6}{d\v z}
+%<all,t1>\DeclareUnicodeCharacter{01C7}{LJ}
+%<all,t1>\DeclareUnicodeCharacter{01C8}{Lj}
+%<all,t1>\DeclareUnicodeCharacter{01C9}{lj}
+%<all,t1>\DeclareUnicodeCharacter{01CA}{NJ}
+%<all,t1>\DeclareUnicodeCharacter{01CB}{Nj}
+%<all,t1>\DeclareUnicodeCharacter{01CC}{nj}
+% \end{macrocode}
% \changes{v1.1s}{2016/01/11}{add 01CD-01F4}
% \begin{macrocode}
%<all,t1>\DeclareUnicodeCharacter{01CD}{\v A}
diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf
index 55e0342500..def7db995c 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 0eedccd171..0addcf94c0 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/amsmath/README.md b/macros/latex-dev/required/amsmath/README.md
index 337c5bc555..76f27a1df6 100644
--- a/macros/latex-dev/required/amsmath/README.md
+++ b/macros/latex-dev/required/amsmath/README.md
@@ -1,7 +1,7 @@
The amsmath bundle for LaTeX
============================
-Release 2022-06-01 pre-release 0
+Release 2022-06-01 pre-release 1
Overview
--------
@@ -77,5 +77,5 @@ version 1.3c or later.
-----
<p>Copyright (C) 2001-2004, 2007, 2008, 2010, 2011, 2013 American Mathematical Society. <br />
-<p>Copyright (C) 2016-2021 The LaTeX Project and American Mathematical Society. <br />
+<p>Copyright (C) 2016-2022 The LaTeX Project and American Mathematical Society. <br />
diff --git a/macros/latex-dev/required/amsmath/amsbsy.dtx b/macros/latex-dev/required/amsmath/amsbsy.dtx
index 8557c6534a..d94bf9a72f 100644
--- a/macros/latex-dev/required/amsmath/amsbsy.dtx
+++ b/macros/latex-dev/required/amsmath/amsbsy.dtx
@@ -81,7 +81,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% \[
% \pmb{\infty} = \boldsymbol{\infty} \quad ?
% \]
-% \StopEventually{}
+% \MaybeStop{}
%
% Standard package info.
% \begin{macrocode}
diff --git a/macros/latex-dev/required/amsmath/amsbsy.ins b/macros/latex-dev/required/amsmath/amsbsy.ins
index 9194608622..c35a72dad6 100644
--- a/macros/latex-dev/required/amsmath/amsbsy.ins
+++ b/macros/latex-dev/required/amsmath/amsbsy.ins
@@ -26,7 +26,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsbsy.pdf b/macros/latex-dev/required/amsmath/amsbsy.pdf
index 15893dbf5b..4c039491e2 100644
--- a/macros/latex-dev/required/amsmath/amsbsy.pdf
+++ b/macros/latex-dev/required/amsmath/amsbsy.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amscd.dtx b/macros/latex-dev/required/amsmath/amscd.dtx
index f3528dd7c1..1ed5be6b67 100644
--- a/macros/latex-dev/required/amsmath/amscd.dtx
+++ b/macros/latex-dev/required/amsmath/amscd.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 1999 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -97,7 +97,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% \end{CD}\end{equation}
% \end{verbatim}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% Standard package info.
% \begin{macrocode}
diff --git a/macros/latex-dev/required/amsmath/amscd.ins b/macros/latex-dev/required/amsmath/amscd.ins
index 30b2f28177..5ecf051583 100644
--- a/macros/latex-dev/required/amsmath/amscd.ins
+++ b/macros/latex-dev/required/amsmath/amscd.ins
@@ -1,6 +1,6 @@
%%
%% Copyright (C) 2010 American Mathematical Society.
-%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amscd.pdf b/macros/latex-dev/required/amsmath/amscd.pdf
index 286211727d..806f589986 100644
--- a/macros/latex-dev/required/amsmath/amscd.pdf
+++ b/macros/latex-dev/required/amsmath/amscd.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsgen.dtx b/macros/latex-dev/required/amsmath/amsgen.dtx
index 10ac58b18e..0493940071 100644
--- a/macros/latex-dev/required/amsmath/amsgen.dtx
+++ b/macros/latex-dev/required/amsmath/amsgen.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 1999 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -49,7 +49,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% distribution. Some of these might eventually make it into the \latex/
% kernel.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% Standard package info.
% Using \cs{ProvidesFile} rather than \cs{ProvidesPackage} because
diff --git a/macros/latex-dev/required/amsmath/amsgen.ins b/macros/latex-dev/required/amsmath/amsgen.ins
index aacb6e0c39..7d845e61cf 100644
--- a/macros/latex-dev/required/amsmath/amsgen.ins
+++ b/macros/latex-dev/required/amsmath/amsgen.ins
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsgen.pdf b/macros/latex-dev/required/amsmath/amsgen.pdf
index bcec4ae3e8..b6bb1a8e96 100644
--- a/macros/latex-dev/required/amsmath/amsgen.pdf
+++ b/macros/latex-dev/required/amsmath/amsgen.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsldoc.pdf b/macros/latex-dev/required/amsmath/amsldoc.pdf
index d410175f22..a5bf7a8e78 100644
--- a/macros/latex-dev/required/amsmath/amsldoc.pdf
+++ b/macros/latex-dev/required/amsmath/amsldoc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsldoc.tex b/macros/latex-dev/required/amsmath/amsldoc.tex
index 97294772e7..4a8230e39f 100644
--- a/macros/latex-dev/required/amsmath/amsldoc.tex
+++ b/macros/latex-dev/required/amsmath/amsldoc.tex
@@ -1,6 +1,6 @@
%
% Copyright (C) 1995, 2000, 2013 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsmath.dtx b/macros/latex-dev/required/amsmath/amsmath.dtx
index a5cf333e79..d810e921db 100644
--- a/macros/latex-dev/required/amsmath/amsmath.dtx
+++ b/macros/latex-dev/required/amsmath/amsmath.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 2000, 2013 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -68,7 +68,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% provided here is found in the AMSmath Users' Guide,
% \fn{amsldoc.tex}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% Standard file identification.
% \begin{macrocode}
diff --git a/macros/latex-dev/required/amsmath/amsmath.ins b/macros/latex-dev/required/amsmath/amsmath.ins
index 1bb73101bb..82876ffc5d 100644
--- a/macros/latex-dev/required/amsmath/amsmath.ins
+++ b/macros/latex-dev/required/amsmath/amsmath.ins
@@ -1,6 +1,6 @@
%%
%% Copyright (C) 2010 American Mathematical Society.
-%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999, 2000, 2013 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsmath.pdf b/macros/latex-dev/required/amsmath/amsmath.pdf
index 9f4b92f3c7..7bafbfe1e7 100644
--- a/macros/latex-dev/required/amsmath/amsmath.pdf
+++ b/macros/latex-dev/required/amsmath/amsmath.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsopn.dtx b/macros/latex-dev/required/amsmath/amsopn.dtx
index 03df1a116b..20e63b63d7 100644
--- a/macros/latex-dev/required/amsmath/amsopn.dtx
+++ b/macros/latex-dev/required/amsmath/amsopn.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 1999 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -52,7 +52,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% similar to the standard function names \cn{sin}, \cn{lim},
% \cn{max}, etc.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% Standard file identification.
% \begin{macrocode}
diff --git a/macros/latex-dev/required/amsmath/amsopn.ins b/macros/latex-dev/required/amsmath/amsopn.ins
index 72c649c340..8a57404c1e 100644
--- a/macros/latex-dev/required/amsmath/amsopn.ins
+++ b/macros/latex-dev/required/amsmath/amsopn.ins
@@ -1,6 +1,6 @@
%%
%% Copyright (C) 2010 American Mathematical Society.
-%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsopn.pdf b/macros/latex-dev/required/amsmath/amsopn.pdf
index d3e98d9dd0..d9f5ea9c8f 100644
--- a/macros/latex-dev/required/amsmath/amsopn.pdf
+++ b/macros/latex-dev/required/amsmath/amsopn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amstext.dtx b/macros/latex-dev/required/amsmath/amstext.dtx
index 88cc837f03..7498040214 100644
--- a/macros/latex-dev/required/amsmath/amstext.dtx
+++ b/macros/latex-dev/required/amsmath/amstext.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 1999 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -72,7 +72,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% macro called \cs{mathhexbox} so that commands like \cn{dag}
% or \cn{P} will change sizes if used in math subscripts.
%
-% \StopEventually{}
+% \MaybeStop{}
% Package information.
% \begin{macrocode}
\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
diff --git a/macros/latex-dev/required/amsmath/amstext.ins b/macros/latex-dev/required/amsmath/amstext.ins
index 5578a7e947..3ba3000eb8 100644
--- a/macros/latex-dev/required/amsmath/amstext.ins
+++ b/macros/latex-dev/required/amsmath/amstext.ins
@@ -1,6 +1,6 @@
%%
%% Copyright (C) 2010 American Mathematical Society.
-%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amstext.pdf b/macros/latex-dev/required/amsmath/amstext.pdf
index df13a4ba0e..fc502fd959 100644
--- a/macros/latex-dev/required/amsmath/amstext.pdf
+++ b/macros/latex-dev/required/amsmath/amstext.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/amsxtra.dtx b/macros/latex-dev/required/amsmath/amsxtra.dtx
index aaa5fd1a2d..c2bc4bbd26 100644
--- a/macros/latex-dev/required/amsmath/amsxtra.dtx
+++ b/macros/latex-dev/required/amsmath/amsxtra.dtx
@@ -2,7 +2,7 @@
% \iffalse meta-comment
%
% Copyright (C) 1995, 1999 American Mathematical Society.
-% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3c
@@ -53,7 +53,7 @@ Bug reports can be opened (category \texttt{#1}) at\\%
% documents using the \pkg{amstex} package these commands are just
% wasted overhead.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
\ProvidesPackage{amsxtra}[1999/11/15 v1.2c AMS extra commands]
diff --git a/macros/latex-dev/required/amsmath/amsxtra.ins b/macros/latex-dev/required/amsmath/amsxtra.ins
index 7eca6e065a..70f50c6bcb 100644
--- a/macros/latex-dev/required/amsmath/amsxtra.ins
+++ b/macros/latex-dev/required/amsmath/amsxtra.ins
@@ -1,6 +1,6 @@
%%
%% Copyright (C) 2010 American Mathematical Society.
-%% Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+%% Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
%%
%% This work may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.3c
@@ -25,7 +25,7 @@
\preamble
Copyright (C) 1995, 1999 American Mathematical Society.
-Copyright (C) 2016-2021 LaTeX Project and American Mathematical Society.
+Copyright (C) 2016-2022 LaTeX Project and American Mathematical Society.
This work may be distributed and/or modified under the
conditions of the LaTeX Project Public License, either version 1.3c
diff --git a/macros/latex-dev/required/amsmath/amsxtra.pdf b/macros/latex-dev/required/amsmath/amsxtra.pdf
index ebf10e4745..051f596d4f 100644
--- a/macros/latex-dev/required/amsmath/amsxtra.pdf
+++ b/macros/latex-dev/required/amsmath/amsxtra.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/changes.txt b/macros/latex-dev/required/amsmath/changes.txt
index 3f3c36bf79..e61d8724de 100644
--- a/macros/latex-dev/required/amsmath/changes.txt
+++ b/macros/latex-dev/required/amsmath/changes.txt
@@ -1,3 +1,7 @@
+2021-11-18 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * All *.dtx: Replaced \StopEventually by \MaybeStop
+
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
diff --git a/macros/latex-dev/required/amsmath/subeqn.pdf b/macros/latex-dev/required/amsmath/subeqn.pdf
index 9658b1627e..af000da7d0 100644
--- a/macros/latex-dev/required/amsmath/subeqn.pdf
+++ b/macros/latex-dev/required/amsmath/subeqn.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/technote.pdf b/macros/latex-dev/required/amsmath/technote.pdf
index a0bb8c424a..f5604758fb 100644
--- a/macros/latex-dev/required/amsmath/technote.pdf
+++ b/macros/latex-dev/required/amsmath/technote.pdf
Binary files differ
diff --git a/macros/latex-dev/required/amsmath/testmath.pdf b/macros/latex-dev/required/amsmath/testmath.pdf
index 463dd64862..3cf0d8fd29 100644
--- a/macros/latex-dev/required/amsmath/testmath.pdf
+++ b/macros/latex-dev/required/amsmath/testmath.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/README.md b/macros/latex-dev/required/graphics/README.md
index 7ff086a493..fb478e598d 100644
--- a/macros/latex-dev/required/graphics/README.md
+++ b/macros/latex-dev/required/graphics/README.md
@@ -1,7 +1,7 @@
The LaTeX `graphics` bundle
===========================
-Release 2022-06-01 pre-release 0
+Release 2022-06-01 pre-release 1
Overview
--------
@@ -61,4 +61,4 @@ of the package.
-----
-<p>Copyright (C) 1993-2021 The LaTeX Project <br />
+<p>Copyright (C) 1993-2022 The LaTeX Project <br />
diff --git a/macros/latex-dev/required/graphics/changes.txt b/macros/latex-dev/required/graphics/changes.txt
index 374cbd1c6b..72a106c3fd 100644
--- a/macros/latex-dev/required/graphics/changes.txt
+++ b/macros/latex-dev/required/graphics/changes.txt
@@ -4,10 +4,20 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2022-01-06 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * mathcolor.dtx:
+ Support \mathcolor to correctly color parts of formulas without
+ spacing problems.
+
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
+2021-12-07 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+
+ * color.dtx: Remove stray spaces after change for xcolor/gh/10}
+
#########################
# 2021-11-15 Release
#########################
diff --git a/macros/latex-dev/required/graphics/color.dtx b/macros/latex-dev/required/graphics/color.dtx
index 9418a12477..cf3a7efbcf 100644
--- a/macros/latex-dev/required/graphics/color.dtx
+++ b/macros/latex-dev/required/graphics/color.dtx
@@ -2,7 +2,7 @@
% \iffalse
%
%% color.dtx Copyright (C) 1994--1999 David Carlisle
-%% Copyright (C) 2005-2021
+%% Copyright (C) 2005-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -21,7 +21,7 @@
%<driver> \ProvidesFile{color.drv}
% \fi
% \ProvidesFile{color.dtx}
- [2021/10/11 v1.3b Standard LaTeX Color (DPC)]
+ [2022/01/06 v1.3d Standard LaTeX Color (DPC)]
%
% \iffalse
%<*driver>
@@ -56,7 +56,7 @@
% document \emph{Packages in the `graphics' bundle} in the file
% \texttt{grfguide.tex}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Options}
@@ -80,6 +80,8 @@
% {Save and restore catcodes}
% \changes{v1.3a}{2021/09/27}
% {Use \cs{@backslashchar} in preference to \cs{string} gh/659}
+% \changes{v1.3c}{2021/12/07}
+% {Remove stray spaces after change to \cs{@backslashchar} xcolor/gh/10}
%
% \begin{macrocode}
\edef\Gin@codes{%
@@ -380,7 +382,7 @@
% \begin{macrocode}
\DeclareOption{usenames}{%
\def\c@lor@usename#1{%
- \expandafter\color@named\csname\@backslashchar color @#1\endcsname{#1}}}
+ \expandafter\color@named\csname\@backslashchar color@#1\endcsname{#1}}}
% \end{macrocode}
% \end{option}
%
@@ -437,10 +439,10 @@
% Finally call |\set@color| to effect the colour change.
% \begin{macrocode}
\def\@declaredcolor#1{%
- \@ifundefined{\@backslashchar color @#1}%
+ \@ifundefined{\@backslashchar color@#1}%
{\c@lor@error{`#1'}}%
{\expandafter\let\expandafter\current@color
- \csname\@backslashchar color @#1\endcsname
+ \csname\@backslashchar color@#1\endcsname
\set@color}%
\ignorespaces}
% \end{macrocode}
@@ -550,10 +552,10 @@
\protected\def\definecolor#1#2#3{%
\@ifundefined{color@#2}%
{\c@lor@error{model `#2'}}%
- {\@ifundefined{\@backslashchar color @#1}{}%
+ {\@ifundefined{\@backslashchar color@#1}{}%
{\PackageInfo{color}{Redefining color #1}}%
\csname color@#2\expandafter\endcsname
- \csname\@backslashchar color @#1\endcsname{#3}}}
+ \csname\@backslashchar color@#1\endcsname{#3}}}
% \end{macrocode}
% \end{macro}
%
@@ -824,6 +826,13 @@
% \end{macrocode}
% \end{macro}
%
+% \subsection{Providing \cs{mathcolor}}
+%
+% This is shared coded between different packages, so external.
+%
+% \begin{macrocode}
+\input{mathcolor.ltx}
+% \end{macrocode}
%
% \section{Extra Groups}
% Turning on extra groups in the standard \LaTeX\ commands, so that
diff --git a/macros/latex-dev/required/graphics/color.pdf b/macros/latex-dev/required/graphics/color.pdf
index 0e545e76fb..499c81c1d0 100644
--- a/macros/latex-dev/required/graphics/color.pdf
+++ b/macros/latex-dev/required/graphics/color.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/drivers.dtx b/macros/latex-dev/required/graphics/drivers.dtx
index 6704ad11c6..e1c19e0296 100644
--- a/macros/latex-dev/required/graphics/drivers.dtx
+++ b/macros/latex-dev/required/graphics/drivers.dtx
@@ -3,7 +3,7 @@
%
%% drivers.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
%% Copyright (C) 1995 1996 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2021
+%% Copyright (C) 2000-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -77,7 +77,7 @@
%
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Colour}
diff --git a/macros/latex-dev/required/graphics/drivers.pdf b/macros/latex-dev/required/graphics/drivers.pdf
index 2117e7232a..ba45790672 100644
--- a/macros/latex-dev/required/graphics/drivers.pdf
+++ b/macros/latex-dev/required/graphics/drivers.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/epsfig.dtx b/macros/latex-dev/required/graphics/epsfig.dtx
index a34aa6842e..b8927f2da5 100644
--- a/macros/latex-dev/required/graphics/epsfig.dtx
+++ b/macros/latex-dev/required/graphics/epsfig.dtx
@@ -2,7 +2,7 @@
% \iffalse
%
%% epsfig.dtx Copyright (C) 1994-1996 1999 Sebastian Rahtz
-%% Copyright (C) 2000-2021
+%% Copyright (C) 2000-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -41,7 +41,7 @@
% \maketitle
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Preface}
% \begin{macrocode}
diff --git a/macros/latex-dev/required/graphics/epsfig.pdf b/macros/latex-dev/required/graphics/epsfig.pdf
index 8b42a80548..e5feedc670 100644
--- a/macros/latex-dev/required/graphics/epsfig.pdf
+++ b/macros/latex-dev/required/graphics/epsfig.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/graphics.dtx b/macros/latex-dev/required/graphics/graphics.dtx
index cec35559ef..c9b381adad 100644
--- a/macros/latex-dev/required/graphics/graphics.dtx
+++ b/macros/latex-dev/required/graphics/graphics.dtx
@@ -2,7 +2,7 @@
% \iffalse
%
%% graphics.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
-%% Copyright (C) 1995-2021
+%% Copyright (C) 1995-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -276,7 +276,7 @@
% and |\rotatebox| commands that some people may prefer. It is provided
% by the accompanying |graphicx| package.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Graphics Kernel Functions}
%
diff --git a/macros/latex-dev/required/graphics/graphics.ins b/macros/latex-dev/required/graphics/graphics.ins
index 95e190c9ec..09c37e7c38 100644
--- a/macros/latex-dev/required/graphics/graphics.ins
+++ b/macros/latex-dev/required/graphics/graphics.ins
@@ -40,4 +40,6 @@ reports for it can be opened at https://latex-project.org/bugs/
\generate{\file{rotating.sty}{\from{rotating.dtx}{package}}}
+\generate{\file{mathcolor.ltx}{\from{mathcolor.dtx}{code}}}
+
\endbatchfile
diff --git a/macros/latex-dev/required/graphics/graphics.pdf b/macros/latex-dev/required/graphics/graphics.pdf
index c8fb4897ba..d3d880dd69 100644
--- a/macros/latex-dev/required/graphics/graphics.pdf
+++ b/macros/latex-dev/required/graphics/graphics.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/graphicx.dtx b/macros/latex-dev/required/graphics/graphicx.dtx
index 29e0db5b12..8c20091585 100644
--- a/macros/latex-dev/required/graphics/graphicx.dtx
+++ b/macros/latex-dev/required/graphics/graphicx.dtx
@@ -2,7 +2,7 @@
% \iffalse
%
%% graphicx.dtx Copyright (C) 1994 David Carlisle Sebastian Rahtz
-%% Copyright (C) 1995-2021
+%% Copyright (C) 1995-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -211,7 +211,7 @@
% which rotates around the reference point on the baseline, thus
% producing a box that is mainly \emph{below} the baseline.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Implementation}
diff --git a/macros/latex-dev/required/graphics/graphicx.pdf b/macros/latex-dev/required/graphics/graphicx.pdf
index dfe4034205..0a61531244 100644
--- a/macros/latex-dev/required/graphics/graphicx.pdf
+++ b/macros/latex-dev/required/graphics/graphicx.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/grfguide.pdf b/macros/latex-dev/required/graphics/grfguide.pdf
index abd764ac5a..70ed7ac3ac 100644
--- a/macros/latex-dev/required/graphics/grfguide.pdf
+++ b/macros/latex-dev/required/graphics/grfguide.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/grfguide.tex b/macros/latex-dev/required/graphics/grfguide.tex
index 3b679ea382..585e87adc7 100644
--- a/macros/latex-dev/required/graphics/grfguide.tex
+++ b/macros/latex-dev/required/graphics/grfguide.tex
@@ -243,12 +243,27 @@ to the font commands such as |\textbf|:
So the above is essentially equivalent to
|{\color|\arg{name}\emph{text}|}|.
+\subsection{Using Colours in math formulas}
+
+While |\color| and to some extent |\textcolor| can be used in
+formulas, this is cumbersome, may lead to bad spacing, and in some
+situations is simply not possible. For this reason we also introduce
+|\mathcolor| which will help in this respect. The basic syntax is:
+
+\begin{decl}
+|\mathcolor|\arg{name}\arg{math}
+\end{decl}
+
+See \texttt{mathcolor.pdf} for details on this command.
+
+
\subsubsection{Using colour specifications directly}
\begin{decl}
|\color|\oarg{model}\arg{specification}\\
-|\textcolor|\oarg{model}\arg{specification}\arg{text}
+|\textcolor|\oarg{model}\arg{specification}\arg{text}\\
+|\mathcolor|\oarg{model}\arg{specification}\arg{math}
\end{decl}
Normally one would predeclare all the colours used in a package, or in
diff --git a/macros/latex-dev/required/graphics/keyval.dtx b/macros/latex-dev/required/graphics/keyval.dtx
index 58664b8f03..233d973201 100644
--- a/macros/latex-dev/required/graphics/keyval.dtx
+++ b/macros/latex-dev/required/graphics/keyval.dtx
@@ -1,7 +1,7 @@
%
% \iffalse
%% keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 1999 David Carlisle
-%% Copyright (C) 2000-2021 David Carlisle, LaTeX Project
+%% Copyright (C) 2000-2022 David Carlisle, LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -202,7 +202,7 @@
% package do not break styles making use of these `low level'
% definitions.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/graphics/keyval.pdf b/macros/latex-dev/required/graphics/keyval.pdf
index a1bd6fd705..9b60667b03 100644
--- a/macros/latex-dev/required/graphics/keyval.pdf
+++ b/macros/latex-dev/required/graphics/keyval.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/lscape.dtx b/macros/latex-dev/required/graphics/lscape.dtx
index 969c94ae7a..d173af6468 100644
--- a/macros/latex-dev/required/graphics/lscape.dtx
+++ b/macros/latex-dev/required/graphics/lscape.dtx
@@ -2,7 +2,7 @@
% \iffalse
%
%% lscape.dtx Copyright (C) 1994 1999-2000 David Carlisle
-%% Copyright (C) 2000-2021
+%% Copyright (C) 2000-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -54,7 +54,7 @@
% page before the page head and foot are added.
%
%
-% \StopEventually{\end{landscape}}
+% \MaybeStop{\end{landscape}}
% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% \changes{v1.00}{1992/04/28}{Initial release}
diff --git a/macros/latex-dev/required/graphics/lscape.pdf b/macros/latex-dev/required/graphics/lscape.pdf
index 33179933e5..0eb191d662 100644
--- a/macros/latex-dev/required/graphics/lscape.pdf
+++ b/macros/latex-dev/required/graphics/lscape.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/mathcolor.dtx b/macros/latex-dev/required/graphics/mathcolor.dtx
new file mode 100644
index 0000000000..6ed53f8f61
--- /dev/null
+++ b/macros/latex-dev/required/graphics/mathcolor.dtx
@@ -0,0 +1,421 @@
+% \iffalse meta-comment
+%
+%% File: mathcolor.dtx (C) Copyright 2021-2022
+% Frank Mittelbach, LaTeX Team
+%
+% It may be distributed and/or modified under the conditions of the
+% LaTeX Project Public License (LPPL), either version 1.3c of this
+% license or (at your option) any later version. The latest version
+% of this license is in the file
+%
+% https://www.latex-project.org/lppl.txt
+%
+%
+%%% From File: mathcolor.dtx
+%
+% \begin{macrocode}
+\def\mathcolorversion{v1.0a}
+\def\mathcolordate{2022/01/07}
+% \end{macrocode}
+%<*driver>
+\documentclass{l3doc}
+
+%\makeatletter \input{mathcolor.ltx} \makeatother
+
+\usepackage{color}
+
+% Fixing footnotes in functions and variables: this should be in l3doc!
+
+\newcommand\fixfootnote[2]{\footnotemark
+ \AddToHookNext{env/#1/after}{\footnotetext{#2}}}
+\AddToHook{env/function/begin}{\def\footnote{\fixfootnote{function}}}
+\AddToHook{env/variable/begin}{\def\footnote{\fixfootnote{variable}}}
+
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{mathcolor.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+
+
+
+%
+% \title{Providing color in math\thanks{This file has version
+% \mathcolorversion\ dated \mathcolordate, \copyright\ \LaTeX\
+% Project.}}
+% \author{Frank Mittelbach}
+%
+% \maketitle
+%
+%
+% \section{Introduction}
+%
+% It is possible to use the \cs{color} command in math formulas but
+% doing that has a number of restrictions and often leads to rather
+% unreadable input. For example, to color the summation sign in red
+% in the following formula
+% \[
+% X = \color{red} \sum_{{\color{black} i=1}}^{{\color{black} n}} \color{black} x_i
+% \]
+% A total of four color commands and a number of seemingly
+% unnecessary extra braces in the sub and superscript are needed:
+%\begin{verbatim}
+% \[ X = \color{red} \sum
+% _{{\color{black} i=1}} % without {{ the superscript is misplaced
+% ^{{\color{black} n}} % without {{ the \sum is black
+% \color{black} % without the x_i is red
+% x_i \]
+%\end{verbatim}
+% While this is ugly but at least works, other things are simply
+% impossible, e.g.,
+% \[ \left\{ \frac{1}{2} \mathcolor{red}{\right\}} \]
+% are not achievable at all because of the fact that \cs{left} and
+% \cs{right} form a group. Thus, a \cs{color} command immediately
+% before the \cs{right} has no effect and \verb=\}= remains black.
+% Putting the color change before the \cs{left} and then resetting
+% the color inside would work if you want to color both braces, but
+% the above combination or the attempt to color only the left brace
+% fails always.
+%
+% Using \cs{textcolor} in formulas appears to work on first glance,
+% but it produces spacing problems that are not easy to overcome
+% either, because it generates a single \cs{mathord} and no
+% longer reflects its input, thus
+% \verb/\[ a = b \textcolor{red}{\neq} c \]/
+% produces
+% \[ a = b \textcolor{red}{\neq} c \]
+% This is a case one could mend by wrapping the
+% \cs{textcolor} and its arguments in a \cs{mathrel}, but even when
+% that is possible, the resulting formula source is difficult to
+% maintain and in other situations the solutions are even more
+% complicated or there is no solution at all.
+%
+% We therefore offer now a dedicated math coloring command named
+% \cs{mathcolor}.
+%
+% \begin{function}{\mathcolor}
+% \begin{syntax}
+% \cs{mathcolor} \oarg{model} \Arg{color-spec} \Arg{math material}
+% \end{syntax}
+% It has the same arguments as \cs{textcolor} but is intended for
+% use in formulas. The command does not generate a group and the
+% \meta{math material} retains its math atom states and it correctly
+% handles sub and superscripts that follow.
+% \end{function}
+%
+% The command can also be used to color a single opening or closing
+% symbol, e.g., the correct input to our earlier example is
+%\begin{verbatim}
+% \[ \left\{ \frac{1}{2} \mathcolor{red}{\right\}} \]
+%\end{verbatim}
+% which is how it was produced.
+%
+% If you attempt to color large operators that use explicit
+% \cs{limits}, \cs{nolimits}, or \cs{displaylimits}, then these
+% limit controls need to immediately follow the operator. However,
+% \cs{mathcolor} is written in a way that it is possible write
+%\begin{verbatim}
+% \[ \mathcolor{red}{\int}\limits_0^1 \textrm{ or }
+% \mathcolor{red}{\int\limits}_0^1 \]
+%\end{verbatim}
+% and achieve the same effect:
+% \[ \mathcolor{red}{\int}\limits_0^1 \textrm{ or }
+% \mathcolor{red}{\int\limits}_0^1 \]
+
+%
+%
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
+%
+%
+% \section{The Implementation}
+%
+% The code is called inside of the \pkg{color} or \pkg{xcolor}
+% packages, so \texttt{@} is already a letter, but the
+% coding here is done in the L3 programming layer, so we need to
+% activate that. But first we check if this file was loaded before,
+% e.g., when both \pkg{color} and \pkg{xcolor} are in the preamble
+% and in that case we stop immediately.
+% \begin{macrocode}
+%<*code>
+\ifcsname mathcolor\endcsname \endinput \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+%<@@=mathcolor>
+% \end{macrocode}
+%
+% \begin{macro}{\g_@@_seq}
+% We need to keep our own stack of color commands, so we allocate a
+% sequence for that.
+% \begin{macrocode}
+\seq_new:N \g_@@_seq
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\mathcolor}
+% The document-level command which expects a color (if unnamed then
+% the optional argument is the model) and colors the content of the
+% second argument (like \cs{textcolor}, but without spacing
+% problems in math).
+% \begin{macrocode}
+\DeclareDocumentCommand \mathcolor { o m m } {
+% \end{macrocode}
+% First action is to save the current color value on a stack
+% (needed if the command is nested or contains some further color
+% changes with \cs{color} inside).
+% \begin{macrocode}
+ \seq_gpush:No \g_@@_seq \current@color
+% \end{macrocode}
+% Then we switch to the new color, but we do not want to reset the
+% color after the group (which is done by \cs{color} using
+% \cs{aftergroup}\cs{reset@color}). The best solution here would be
+% if the color packages would provide a command doing just the
+% color switching, but for now we simply undo that part by pushing
+% \cs{use_none:n} which gobbles the \cs{reset@color} added by
+% \cs{color} with \cs{aftergroup}.
+% \begin{macrocode}
+ \group_insert_after:N \use_none:n
+% \end{macrocode}
+% Switching the color is also slightly suboptimal, because
+% depending on whether or not we have a \meta{model} argument, we
+% have to call \cs{color} with or without the optional argument. But
+% going low-level here is not an option as we need to support
+% different color packages and their internals are not identical.
+% \begin{macrocode}
+ \IfValueTF{#1} { \color[#1]{#2} }{ \color{#2} }
+% \end{macrocode}
+% Then comes the math material we want to see colored:
+% \begin{macrocode}
+ #3
+% \end{macrocode}
+% After that we need to reset the color ourselves (without a group
+% that does it for us), i.e., popping the saved color from our
+% stack, but there are some twists to that so we do this in a
+% separate command (which in fact needs to be called several times,
+% so inlining the code wouldn't be possible.
+% \begin{macrocode}
+ \@@_scan_for_scripts:w
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_scan_for_scripts:w}
+% The complication when changing the color back is due to the fact
+% that the \cs{mathcolor} may be followed by \verb=^= or \verb=_=
+% or the hidden superscript \texttt{'} and its argument may end in a
+% \cs{mathop} in which case the sub and superscripts may be
+% attached as \cs{limits} instead of after the material. All cases
+% need separate treatment.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_scan_for_scripts:w {
+% \end{macrocode}
+% We therefore first parse for a \cs{c_math_subscript_token}
+% ignoring (dropping) any spaces and \cs{relax} as \TeX{} would
+% do. We do this with expansion so that hidden sub or superscripts
+% in macros are still found as long as the macros are expandable.
+% \begin{macrocode}
+ \@@_peek_catcode_ignore_filler_expand:NTF \c_math_subscript_token
+% \end{macrocode}
+% If we found that character we call a function that handles sub or
+% superscripts.
+% \begin{macrocode}
+ { \@@_handle_scripts:Nw }
+% \end{macrocode}
+% Otherwise check if this token we peeked at (which is now stored
+% in \cs{l_peek_token} is a superscript token.
+% \begin{macrocode}
+ { \token_if_math_superscript:NTF \l_peek_token
+% \end{macrocode}
+% If found we call the sub/superscript handler.
+% \begin{macrocode}
+ { \@@_handle_scripts:Nw }
+% \end{macrocode}
+% Otherwise we check if it was any of the limit operation
+% primitives. If that is the case, e.g., if we have a situation
+% such as
+%\begin{verbatim}
+% \mathcolor{red}{\int}\limits_1
+%\end{verbatim}
+% we have to move it directly after the \cs{int} to ensure there
+% is no color reset between the operator and the \cs{limits} command.
+% \begin{macrocode}
+ { \token_case_meaning:NnTF \l_peek_token
+ {
+ \limits { \limits }
+ \nolimits { \nolimits }
+ \displaylimits { \displaylimits }
+ }
+% \end{macrocode}
+% Once that is done, we have to get rid of the token we peeked at
+% and then restart scanning for sub or superscripts. Given that
+% \cs{@@_scan_for_scripts:w} expands while scanning the simplest
+% solution is to add \cs{use_none:n} in front of the peeked at token.
+% \begin{macrocode}
+ { \@@_scan_for_scripts:w \use_none:n }
+% \end{macrocode}
+% If it was one of these we look for a \texttt{'} and if found remove it and
+% replace it by its expansion. The reason we have to do this (and
+% not rely on the earlier peeking to expand for us is the fact
+% that \texttt{'} is only ``math active'' and that doesn't expand
+% under \cs{expanded} or \cs{expandafter}.
+% \begin{macrocode}
+ { \peek_meaning_remove:NTF '
+ { \@@_handle_scripts:Nw ^\c_group_begin_token \prim@s }
+% \end{macrocode}
+% If it is anything else we finish off which means we reset the
+% color (because we prevented that before to happen automatically
+% after the next group) and pop the color stack setting \cs{current@color}.
+% \begin{macrocode}
+ { \reset@color
+ \seq_gpop:NN \g_@@_seq \current@color
+ }
+ }
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+
+
+
+% \begin{macro}{\@@_handle_scripts:Nw}
+% The tricky part of handling sub and superscripts is that we have
+% to reset color to the one that is on the stack but reset it back
+% to what it was before to allow for cases like
+%\begin{verbatim}
+% \[ \mathcolor{red}{a+\sum}_{i=1}^n \]
+%\end{verbatim}
+% Here, \TeX{} constructs a \cs{vbox} stacking subscript, summation
+% sign, and superscript. So technically the superscript comes first
+% and the \cs{sum} that should get colored red is the middle.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_handle_scripts:Nw #1 {
+% \end{macrocode}
+% The argument is either \verb=^= or \verb=_=, so we execute it and
+% explicitly open two \verb={= groups. We need two because color
+% resets are always done after a group, so the first group is for
+% script material (in case it was just something like \verb=_i=)
+% and the second is needed for the color reset to keep it within
+% the super or subscript. If that reset would happen after it then
+% the color \cs{special} would interfere with \TeX{} math spacing.
+% \begin{macrocode}
+ #1 \c_group_begin_token \c_group_begin_token
+% \end{macrocode}
+% Now it is time to change the color back to the one on the stack.
+% \begin{macrocode}
+ \seq_get:NN \g_@@_seq \current@color
+ \set@color
+% \end{macrocode}
+% \cs{set@color} adds \cs{aftergroup}\cs{reset@color}. We now a add
+% bit more so that the code executed after the current (inner) group
+% looks like this:
+%\begin{verbatim}
+% \reset@color } \@@_scan_for_scripts:w
+%\end{verbatim}
+% The \cs{_@@_scan_for_scripts:w} then retakes control and initiates
+% parsing for another sub or superscript.
+% \begin{macrocode}
+ \group_insert_after:N \c_group_end_token
+ \group_insert_after:N \@@_scan_for_scripts:w
+% \end{macrocode}
+% Before we give control to \TeX{} to process the sub or
+% superscript some final adjustment is necessary: if the input was
+% \verb=^{...}= then we have one \verb={= too many, because we
+% already supplied the outer one already. In that case we drop
+% it. Otherwise we have an unbraced single token sub or superscript
+% which means we are missing a closing \verb=}= at the end and need
+% to account for that: this is done in \cs{_@@_handle_unbraced_script:N}.
+% \begin{macrocode}
+ \@@_peek_catcode_ignore_filler_expand:NTF \c_group_begin_token
+ { \peek_catcode_remove:NT \c_group_begin_token { } }
+ { \@@_handle_unbraced_script:N }
+ }% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\@@_handle_unbraced_script:N}
+% All we have to do here is to add the final closing brace.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_handle_unbraced_script:N #1 {
+ #1 \c_group_end_token }
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \subsection{Utility function for the peek module}
+%
+% This peek is expanding and ignores spaces and \cs{relax} (even
+% though the name doesn't say so)
+% but \cs{relax} is usually allowed in such places where we so it
+% may not be bad to have it in this way in general --- maybe this
+% should move to expl3 peek functions (or otherwise the naming
+% should perhaps be adjusted).
+%
+%
+% \begin{macrocode}
+\tl_new:N \l_@@_peek_tmp_tl
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_catcode_ignore_filler_expand:NTF #1#2#3
+ {
+ \tl_set:Nn \l_@@_peek_tmp_tl
+ { \token_if_eq_catcode:NNTF \l_peek_token #1 {#2} {#3} }
+ \@@_peek_expand:w
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_expand:w
+ {
+ \exp_after:wN \peek_catcode_remove:NTF
+ \exp_after:wN \c_space_token
+ \exp_after:wN \@@_peek_test_expand:w
+ \exp_after:wN \@@_peek_test_relax:w
+ \exp:w \exp_end_continue_f:w
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_test_expand:w
+ {
+ \token_if_expandable:NTF \l_peek_token
+ { \@@_peek_expand:w }
+ { \l_@@_peek_tmp_tl }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_peek_test_relax:w
+ {
+ \peek_meaning_remove:NTF \scan_stop:
+ { \@@_peek_expand:w }
+ { \@@_peek_test_expand:w }
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+%</code>
+% \end{macrocode}
+%
+% \Finale
+%
+%
+
+%%%%%%%%%%%%%%%%
+\endinput
+%%%%%%%%%%%%%%%%
+
diff --git a/macros/latex-dev/required/graphics/mathcolor.pdf b/macros/latex-dev/required/graphics/mathcolor.pdf
new file mode 100644
index 0000000000..1b5d8683e5
--- /dev/null
+++ b/macros/latex-dev/required/graphics/mathcolor.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/rotating.dtx b/macros/latex-dev/required/graphics/rotating.dtx
index c6db1273a4..ac64086082 100644
--- a/macros/latex-dev/required/graphics/rotating.dtx
+++ b/macros/latex-dev/required/graphics/rotating.dtx
@@ -5,7 +5,7 @@
% File: rotating.dtx
%% Copyright (C) 1995-1999 Sebastian Rahtz and Leonor Barroca
%% Copyright (C) 2001-2003,2007-2009 Robin Fairbairns
-%% Copyright (C) 2016-2021 LaTeX Project
+%% Copyright (C) 2016-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%
@@ -157,7 +157,7 @@
% top does
% \end{tabular}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Setup}
% Now we present the documented code. First, package options.
diff --git a/macros/latex-dev/required/graphics/rotating.pdf b/macros/latex-dev/required/graphics/rotating.pdf
index e53988d539..5529771dcd 100644
--- a/macros/latex-dev/required/graphics/rotating.pdf
+++ b/macros/latex-dev/required/graphics/rotating.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/rotex.pdf b/macros/latex-dev/required/graphics/rotex.pdf
index 05b4894bc8..d7b41106d8 100644
--- a/macros/latex-dev/required/graphics/rotex.pdf
+++ b/macros/latex-dev/required/graphics/rotex.pdf
Binary files differ
diff --git a/macros/latex-dev/required/graphics/trig.dtx b/macros/latex-dev/required/graphics/trig.dtx
index 533f3b0648..4b673494af 100644
--- a/macros/latex-dev/required/graphics/trig.dtx
+++ b/macros/latex-dev/required/graphics/trig.dtx
@@ -1,6 +1,6 @@
% \iffalse
%% File: trig.dtx Copyright (C) 1993-1999 David Carlisle
-%% Copyright (C) 2000-2021
+%% Copyright (C) 2000-2022 LaTeX Project
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -78,7 +78,7 @@
% |\dimen2=\UseSin{30}\dimen0|. Which means that |\UseSin| must
% \emph{expand} to a \meta{factor}.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/graphics/trig.pdf b/macros/latex-dev/required/graphics/trig.pdf
index f9b1a27fcb..52f717b3f5 100644
--- a/macros/latex-dev/required/graphics/trig.pdf
+++ b/macros/latex-dev/required/graphics/trig.pdf
Binary files differ
diff --git a/macros/latex-dev/required/latex-lab/README.md b/macros/latex-dev/required/latex-lab/README.md
new file mode 100644
index 0000000000..3d71aa821c
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/README.md
@@ -0,0 +1,34 @@
+# LaTeX laboratory
+
+This bundle holds optional files that are loaded in certain situations
+by kernel code (if available). For example, the new (as of 2021/12)
+`\DocumentMetadata` command in the kernel loads a file from here holding
+the real payload. While this code is still in development and the use
+is experimental and mainly for the tagging project, the code is stored
+outside the format so that there can be intermediate releases not
+affecting the production use of LaTeX.
+
+
+Once the code is finalized and properly tested it will eventually move
+to the kernel and the corresponding file in this bundle will
+vanish. Note that none of these files are directly user accessible in
+documents (i.e., they aren't packages) so the process is transparent
+to documents already using the new functionality.
+
+
+## Current support code in the bundle
+
+### Support for `\DocumentMetadata`
+
+
+## License
+
+The license is LPPL 1.3c.
+
+
+## Copyright
+
+This README file is
+
+Copyright (C) 2021
+The LaTeX Project
diff --git a/macros/latex-dev/required/latex-lab/changes.txt b/macros/latex-dev/required/latex-lab/changes.txt
new file mode 100644
index 0000000000..9551d74b79
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/changes.txt
@@ -0,0 +1,11 @@
+2021-12-30 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+
+ * documentmeta-support.dtx:
+ cleaned up keys and bundle name
+ * added latex-lab-testphase.dtx for wrappers for the testphase
+ key.
+
+2021-12-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * README.md:
+ Add the bundle to support project work.
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf
new file mode 100644
index 0000000000..674a5b9731
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.pdf
Binary files differ
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex
new file mode 100644
index 0000000000..c051960ab9
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-code.tex
@@ -0,0 +1,4 @@
+% this will typeset documentation + code
+
+\AtBeginDocument{\AlsoImplementation}
+\input{documentmetadata-support.dtx}
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf
new file mode 100644
index 0000000000..b7a32c6904
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.pdf
Binary files differ
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex
new file mode 100644
index 0000000000..dcf45514d6
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support-doc.tex
@@ -0,0 +1,6 @@
+% this will typeset only documentation but not the code
+
+\AtBeginDocument{\OnlyDescription
+ \let\tableofcontents\relax
+ }
+\input{documentmetadata-support.dtx}
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx b/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx
new file mode 100644
index 0000000000..0c7a1d9d80
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support.dtx
@@ -0,0 +1,415 @@
+% \iffalse meta-comment
+%
+%% File: documentmetadata-support.dtx
+% Copyright (C) 2021-2022 The LaTeX 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
+%
+%
+% The development version of the bundle can be found below
+%
+% https://github.com/latex3/latex2e
+%
+% for those people who are interested or want to report an issue.
+%
+% \begin{macrocode}
+\def\documentmetadatasupportversion{1.0a}
+\def\documentmetadatasupportdate{2022-01-12}
+% \end{macrocode}
+%
+%
+%<*driver>
+\documentclass{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{documentmetadata-support.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+%
+%\NewDocElement[macrolike = false ,
+% toplevel = true,
+% idxtype = key ,
+% noprint = true ,
+% idxgroup = metadata keys ,
+% printtype = \textit{key}
+% ]{Mkey}{mkey}
+%
+%
+% \title{The \texttt{documentmetadata-support} code\thanks{This file
+% has version \documentmetadatasupportversion\ dated
+% \documentmetadatasupportdate, \copyright\ \LaTeX\
+% Project.}}
+% \author{Frank Mittelbach, Ulrike Fischer, \LaTeX{} Project}
+%
+% \maketitle
+%
+%
+% \section{Introduction}
+%
+% The kernel command \cs{DocumentMetadata}, which can be used as
+% the very first declaration in a document (i.e., before
+% \cs{documentclass}), defines metadata and other configuration
+% data that applies to the document as a whole (using a key/value
+% syntax).
+%
+% While the underlying functionality is still under
+% development (e.g., further keys will be added over time and keys
+% marked temporary may vanish again) the code for
+% \cs{DocumentMetadata} is place in a separate bundle, so that it
+% is easier to update it without the need to build a full \LaTeX{}
+% release. Over time the functionality will move fully into the
+% kernel.
+%
+% From a process perspective \cs{DocumentMetadata} loads the
+% \pkg{pdfmanagement} code the first time it is called and then
+% redefines itself to only manage key/value pairs in case it is
+% called more than once. In particular, this means that a document
+% without a \cs{DocumentMetadata} declaration has no code available
+% for extended management of PDF output as needed for various
+% features developed as part of the multi-year ``Tagged PDF''
+% project~\cite{blueprint}.
+%
+%
+%
+% \section{Currently supported key/values}
+%
+%
+% Currently the following keys are implemented for \cs{DocumentMetadata}:
+% \DescribeMkey{colorprofiles}
+% \DescribeMkey{debug}
+% \DescribeMkey{lang}
+% \DescribeMkey{pdfstandard}
+% \DescribeMkey{pdfversion}
+% \DescribeMkey{testphase}
+% \DescribeMkey{uncompress}
+%
+% \begin{description}
+% \item[\texttt{backend}] Passes the backend name to expl3. This is
+% needed only if the needed backend can't be automatically
+% determined or if the workflow used requires a special backend.
+%
+%^^A This will probably be extended to pass the value also to
+%^^A packages.
+%
+% \item[\texttt{pdfversion}] Sets the PDF version explicitly, e.g., \texttt{pdfversion=1.7}
+% \item[\texttt{uncompress}] (no value) Forces an uncompressed pdf
+% --- mainly for debugging purposes.
+%
+% \item[\texttt{lang}] Explicitly sets the Lang entry in the Catalog,
+% e.g., \texttt{lang=de-DE}. If not given the default value used is |en-US|.
+%
+% \item[\texttt{pdfstandard}] Choice key to set the pdf standard.
+% Currently |A-1b|, |A-2a|, |A-2b|, |A-2u|, |A-3a|, |A-3b| and |A-3u| are accepted as
+% values. The casing is irrelevant, |a-1b| works too.
+% The underlying code to ensure the requirements (as far as they
+% can be ensured) is still incomplete, but a color profile is included and the
+% \texttt{/OutputIntent} is set. The |u| variants for example do not force unicode,
+% but they will pass the information to hyperref and hyperxmp. The |a| variants
+% do \emph{not} enforce (or even test) a tagged pdf yet.
+% More information can be found in the documentation
+% of \pkg{l3pdfmeta}.
+%
+% \item[\texttt{colorprofiles}] This allows to load icc-colorprofiles. Details
+% are described in the documentation of \pkg{l3pdfmeta}.
+%
+% \item[\texttt{testphase}] This key is used to load testphase code. The values it accepts
+% and their effect will change over time, when testphase packages are added or
+% removed or when the code is moved into the kernel.
+% \begin{description}
+% \item[\texttt{phase-I}]
+% This value loads code implementing the first phase of the project~\cite{blueprint}, i.e., it
+% will load the tagpdf package. It will also activate tagging by issuing
+% |\tagpdfsetup{activate,interwordspace}|. This phase
+% is frozen.
+% \item[\texttt{phase-II}]
+% This is the current development phase.
+% Currently it differs from \texttt{phase-I} only in one point: It will
+% additionally activate tagging of paragraphs with
+% |\tagpdfsetup{paratagging}|. In the upcoming months it will
+% also enable automatic tagging of other basic document elements.
+% \end{description}
+% The |testphase| key can only be used in the first \cs{DocumentMetadata}.
+%
+% \item[\texttt{debug}] This key activates some debug options. It takes a list of key-values
+% as value. Currently the following keys are known:
+% \begin{description}
+% \item[\texttt{para}] with the default and only value |show|. It will activate the |paratagging-show|
+% option of \pkg{tagpdf},
+% \item[\texttt{log}] with the values as described in the documentation \pkg{tagpdf},
+% \item[\texttt{uncompress}] which does the same as |uncompress| as main key
+% \item[\texttt{pdfmanagement}] a boolean which allows to deactivate the pdfmanagement.
+% \item[\texttt{firstaidoff}] This accepts a comma lists of keywords and disables the patches
+% related to them. More information can be found in the documentation of
+% \pkg{pdfmanagement-firstaid}.
+% \end{description}
+% \end{description}
+%
+% \bibliographystyle{plain}
+%
+% \begin{thebibliography}{9}
+%
+% \bibitem{blueprint} Frank Mittelbach and Chris Rowley:
+% \emph{\LaTeX{} Tagged PDF\,---\,A blueprint for a large project}.
+% \url{https://latex-project.org/publications/indexbyyear/2020/}
+%
+% \end{thebibliography}
+%
+%
+%
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
+%
+% \begin{implementation}
+%
+% \section{The Implementation}
+%
+%
+% \begin{macrocode}
+%<@@=pdfmanagement>
+%<*code>
+% \end{macrocode}
+%
+% \begin{macrocode}
+
+\RequirePackage{pdfmanagement-testphase}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn\makeatletter
+% \end{macrocode}
+
+
+
+% \begin{macro}{\DocumentMetadata}
+%
+% \cs{DocumentMetadata} should not be used after
+% \cs{documentclass} so we error in this case.
+% It can be used more than once
+% but follow-up calls should not do the initialization code.
+% \begin{macrocode}
+\cs_set_protected:Npn \DocumentMetadata #1
+ {
+ \cs_if_eq:NNTF \documentclass \@twoclasseserror
+ { \msg_error:nn { meta } { after-class } }
+ {
+% \end{macrocode}
+%
+% The wanted backend must be detected first, we read the init
+% key and then force the loading of the backend.
+% The backend can contain management commands, so the boolean should
+% be set to true first.
+% \begin{macrocode}
+ \bool_gset_true:N \g_@@_active_bool
+ \keys_set_groups:nnn { document / metadata} {init}{ #1 }
+ %if no backend has been loaded force it now:
+ \str_if_exist:NF \c_sys_backend_str
+ {
+ \sys_load_backend:n {}
+ }
+% \end{macrocode}
+% Now we load the extra backend code:
+% \begin{macrocode}
+ \ExplSyntaxOn\makeatletter
+ \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
+ \ExplSyntaxOff\makeatother
+% \end{macrocode}
+% Set the default language (this requires that the backend has been loaded),
+% process the rest of the keys,
+% and setup the generic driver.
+% \begin{macrocode}
+ \keys_set_filter:nnn { document / metadata } { init } { lang=en-US, #1 }
+ \bool_if:NT \g_@@_active_bool
+ {
+ \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
+ }
+% \end{macrocode}
+% \cs{pdfmanagement_add:nnn} has collected values in this hook.
+% \begin{macrocode}
+ \hook_use_once:n {pdfmanagement/add}
+% \end{macrocode}
+% Now we redefine \cs{DocumentMetadata} so that it only process the
+% keys on any further calls.
+%
+% We need to update the hyperref option if the active status changes.
+% \begin{macrocode}
+ \cs_set_protected:Npn \DocumentMetadata ##1
+ {
+ \keys_set_filter:nnn { document / metadata } { init } { ##1 }
+ \str_remove_all:cn {opt@hyperref.sty}{customdriver=hgeneric-testphase}
+ \bool_if:NT \g__pdfmanagement_active_bool
+ {
+ \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
+ }
+ }
+% \end{macrocode}
+% Load more modules, the testphase code and the firstaid code. The code is only
+% loaded in the first \cs{DocumentMetadata} call!
+% \begin{macrocode}
+ \g_@@_testphase_tl
+ \RequirePackage{pdfmanagement-firstaid}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+
+
+
+
+% \begin{macrocode}
+%FMi defined elsewhere
+%FMi
+%FMi \clist_new:N \g_@@_firstaidoff_clist
+%FMi \tl_new:N \g_@@_testphase_tl
+% UFi should the definition move to here?
+\keys_define:nn { document / metadata }
+ {
+ backend .choices:nn =
+ { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
+ {
+ \sys_load_backend:n {#1}
+ },
+ backend .groups:n = { init } ,
+ }
+
+\keys_define:nn { document / metadata }
+ {
+ ,pdfversion .code:n =
+ {
+ \pdf_version_gset:n { #1 }
+ \AddToDocumentProperties[document]{pdfversion}{#1}
+ }
+ ,uncompress .code:n =
+ {
+ \pdf_uncompress:
+ }
+ ,uncompress .value_forbidden:n = true
+ ,lang .code:n =
+ {
+ \pdfmanagement_add:nnn {Catalog} {Lang}{(#1)}
+ \AddToDocumentProperties[document]{lang}{#1}
+ }
+ %,xmpmeta .bool_gset:N = \g_pdfmeta_xmp_bool %see pdfmeta unused and undefined for now!
+ % this uses internal command from pdfmeta, it should probably move there ...
+ ,pdfstandard .code:n =
+ {
+ \exp_args:Nnx
+ \keys_set:nn {document / metadata} {_pdfstandard=\str_uppercase:n{#1}}
+ }
+ ,_pdfstandard .choices:nn =
+ {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U}
+ {
+ \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop }
+ {
+ \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop }
+ }
+ \AddToDocumentProperties [document]{pdfstandard}{#1}
+ }
+ ,_pdfstandard / unknown .code:n =
+ {
+ \msg_warning:nnn{pdf}{unknown-standard}{#1}
+ }
+ ,testphase .multichoice:
+ ,testphase / tagpdf .code:n =
+ {
+ \tl_gput_right:Nn\g_@@_testphase_tl
+ {
+ \file_if_exist_input:nF {tagpdf-latex-lab-testphase.ltx}
+ {
+ \RequirePackage{tagpdf}
+ \AddToDocumentProperties [document]{testphase/tagpdf}{loaded}
+ \tagpdfsetup{activate,paratagging,interwordspace}
+ \AddToDocumentProperties [document]{tagging}{active}
+ \AddToDocumentProperties [document]{tagging/para}{active}
+ \AddToDocumentProperties [document]{tagging/interwordspace}{active}
+ }
+ }
+ }
+ ,testphase / unknown .code:n =
+ {
+ \tl_gput_right:Nn\g_@@_testphase_tl
+ {
+ \file_if_exist_input:nF {#1-latex-lab-testphase.ltx}
+ {
+ \msg_warning:nnn{meta}{latex-lab-pkg-missing}{#1}
+ }
+ }
+ }
+ ,activate .multichoice:
+ ,activate / tagging .code:n =
+ {
+ \PackageWarning{pdfmanagement-testphase}
+ {The~activate~key~is~deprecated.\MessageBreak
+ Tagging~is~activated~with~'testphase=tagpdf'~directly}{}
+ }
+ ,debug .code:n =
+ {
+ \keys_set:nn { document / metadata / debug } {#1}
+ }
+ ,debug / para .code:n =
+ {
+ \AddToHook
+ {
+ package/tagpdf/after
+ }
+ {
+ \tagpdfsetup{paratagging-show}
+ }
+ }
+ ,debug / log .code:n =
+ {
+ \AddToHook
+ {
+ package/tagpdf/after
+ }
+ {
+ \tagpdfsetup{log=#1}
+ }
+ }
+ ,debug / uncompress .code:n =
+ {
+ \pdf_uncompress:
+ }
+ ,debug / pdfmanagement .bool_gset:N = \g_@@_active_bool
+ ,debug / firstaidoff .clist_gset:N = \g_@@_firstaidoff_clist
+ }
+
+
+% \end{macrocode}
+% \subsection{Messages}
+% \begin{macrocode}
+%UFi is meta the right module name here?
+\prop_gput:Nnn \g_msg_module_type_prop { meta } { LaTeX }
+\prop_gput:Nnn \g_msg_module_name_prop { meta } { DocumentMetadata }
+
+\msg_new:nnn { meta } { after-class }
+ {
+ \token_to_str:N \DocumentMetadata \c_space_tl
+ should~be~used~only~before~\token_to_str:N\documentclass
+ }
+\msg_new:nnn { meta } { latex-lab-pkg-missing }
+ {
+ LaTeX-lab~package~'#1'~not~found.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff\makeatother
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%</code>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \Finale
+%
diff --git a/macros/latex-dev/required/latex-lab/documentmetadata-support.ins b/macros/latex-dev/required/latex-lab/documentmetadata-support.ins
new file mode 100644
index 0000000000..431f88d810
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/documentmetadata-support.ins
@@ -0,0 +1,71 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the dtx file(s) in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright (C) 2021-2022 The LaTeX Project
+%%
+%%
+%% This file is part of the `LaTeX-lab Bundle' for LaTeX.
+%% -------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2008 or later.
+%%
+%% In particular, NO PERMISSION is granted to modify the contents of this
+%% file since it contains the legal notices that are placed in the files
+%% it generates.
+%%
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\input docstrip
+
+\keepsilent
+
+\usedir{tex/latex/contrib/latex-lab}
+
+\preamble
+
+This is a generated file.
+
+Copyright 2021 LaTeX Project
+
+This file was generated from file(s) of the `LaTeX-lab Bundle'.
+------------------------------------------------------------------------------------
+
+It may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.3c
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.3c or later is part of all distributions of LaTeX
+version 2008 or later.
+
+This file may only be distributed together with a copy of the LaTeX
+`LaTeX-lab Bundle'. You may however distribute the `LaTeX-lab Bundle'
+without such generated files.
+
+The newest sources can be found below
+
+ https://github.com/latex3/latex2e/required/latex-lab
+
+where one can also log issues in case there are any.
+
+
+\endpreamble
+
+
+\generate{\file{documentmetadata-support.ltx}{\from{documentmetadata-support.dtx}{code}}}
+
+\generate{\file{tagpdf-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{tagpdf}}}
+\generate{\file{phase-I-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{phase-I}}}
+\generate{\file{phase-II-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{phase-II}}}
+
+\endbatchfile
diff --git a/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx b/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx
new file mode 100644
index 0000000000..670bbaf481
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/latex-lab-testphase.dtx
@@ -0,0 +1,75 @@
+% \iffalse meta-comment
+%
+%% File: latex-lab-testphase.dtx
+% Copyright (C) 2021-2022 The LaTeX 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
+%
+%
+% The development version of the bundle can be found below
+%
+% https://github.com/latex3/latex2e/required/latex-lab
+%
+% for those people who are interested or want to report an issue.
+%
+%<*driver>
+\documentclass{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{latex-lab-testphase.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+
+% \title{The \texttt{latex-lab-testphase} code\thanks{}}
+% \author{Ulrike Fischer \LaTeX{} Project}
+%
+% \maketitle
+%
+%
+% \begin{abstract}
+% \end{abstract}
+%
+% \section{Introduction}
+%
+% This code implements small files which can be loaded with the |testphase|
+% key of \cs{DocumentMetadata}. Currently it only contains a
+% wrapper for \pkg{tagpdf}, but this will be extended to allow user to load
+% well defined parts of the tagged PDF project.
+%
+%
+%
+% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
+%
+%
+% \section{The Implementation}
+%
+% \begin{macrocode}
+%<*tagpdf|phase-I|phase-II>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\RequirePackage{tagpdf}
+\AddToDocumentProperties [document]{testphase/tagpdf}{loaded}
+%</tagpdf|phase-I|phase-II>
+%<tagpdf|phase-II>\tagpdfsetup{activate,paratagging,interwordspace}
+%<phase-I>\tagpdfsetup{activate,interwordspace}
+%<*tagpdf|phase-I|phase-II>
+\AddToDocumentProperties [document]{tagging}{active}
+\AddToDocumentProperties [document]{tagging/para}{active}
+\AddToDocumentProperties [document]{tagging/interwordspace}{active}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</tagpdf|phase-I|phase-II>
+% \end{macrocode}
+% \Finale
+%
diff --git a/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf b/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf
new file mode 100644
index 0000000000..bd2644efb4
--- /dev/null
+++ b/macros/latex-dev/required/latex-lab/latex-lab-testphase.pdf
Binary files differ
diff --git a/macros/latex-dev/required/tools/README.md b/macros/latex-dev/required/tools/README.md
index a023599f2f..7bef1f9e74 100644
--- a/macros/latex-dev/required/tools/README.md
+++ b/macros/latex-dev/required/tools/README.md
@@ -1,7 +1,7 @@
The LaTeX `tools` bundle
========================
-Release 2022-06-01 pre-release 0
+Release 2022-06-01 pre-release 1
Overview
--------
diff --git a/macros/latex-dev/required/tools/afterpage.dtx b/macros/latex-dev/required/tools/afterpage.dtx
index e5fa69f515..cf949c0aca 100644
--- a/macros/latex-dev/required/tools/afterpage.dtx
+++ b/macros/latex-dev/required/tools/afterpage.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -101,7 +101,7 @@
% on a new page.
% \end{enumerate}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macrocode}
%<*package>
diff --git a/macros/latex-dev/required/tools/afterpage.ins b/macros/latex-dev/required/tools/afterpage.ins
index 0cfc531f19..3aa1679f77 100644
--- a/macros/latex-dev/required/tools/afterpage.ins
+++ b/macros/latex-dev/required/tools/afterpage.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf
index 4bab9e993c..f84e92a9b6 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.dtx b/macros/latex-dev/required/tools/array.dtx
index ba88aba7c2..acee0ce505 100644
--- a/macros/latex-dev/required/tools/array.dtx
+++ b/macros/latex-dev/required/tools/array.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -753,7 +753,7 @@
%
% \changes{v2.2b}{1994/02/04}{Removed interactive prompt}
%
-% \StopEventually{
+% \MaybeStop{
%
%
% \begin{thebibliography}{1}
@@ -773,7 +773,7 @@
% Addison-Wesley, Reading, Massachusetts, 1986.
% \end{thebibliography}
%
-% } ^^A end of \StopEventually
+% } ^^A end of \MaybeStop
%
%
%
diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf
index c5764cdeaf..408ce71a09 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.dtx b/macros/latex-dev/required/tools/bm.dtx
index 2b56b92b54..daf4dce66b 100644
--- a/macros/latex-dev/required/tools/bm.dtx
+++ b/macros/latex-dev/required/tools/bm.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -22,7 +22,7 @@
% \fi
%
% \iffalse
-%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019
+%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 2021 2022
%% David Carlisle Frank Mittelbach
%%
%% Development of this package was commissioned by Y&Y Inc.
@@ -36,7 +36,7 @@
%<driver>\ProvidesFile{bm.drv}
% \fi
% \ProvidesFile{bm.dtx}
- [2021/04/25 v1.2e Bold Symbol Support (DPC/FMi)]
+ [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)]
%
% \iffalse
%<*driver>
@@ -312,7 +312,7 @@
% the package option |nopbm| is available which prevents its use in which case |\bm| will
% use the non-bold for characters from the affected font,
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
@@ -839,9 +839,12 @@
\unvcopy{\GenericError{##1}{##2}{##3}{##4}}}%
% \end{macrocode}
% For AMS definitions.
+% \changes{v1.2f}{2022/01/05}
+% {Guard \cs{nolimits@}, gh/744}
% \begin{macrocode}
\let\DN@\copy
\let\FN@\copy
+ \let\nolimits@\copy
\let\next@\copy
\global\let\bm@first\@empty
% \end{macrocode}
@@ -1016,7 +1019,7 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\bm@end}
+% \begin{macro}[outer]{\bm@end}
% \changes{v0.10}{1997/01/04}
% {Macro added}
% Normally speaking |\outer| declarations should be avoided at all
diff --git a/macros/latex-dev/required/tools/bm.ins b/macros/latex-dev/required/tools/bm.ins
index c00a3e5cca..51243a6090 100644
--- a/macros/latex-dev/required/tools/bm.ins
+++ b/macros/latex-dev/required/tools/bm.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf
index 431b3984b9..88beef01cd 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.dtx b/macros/latex-dev/required/tools/calc.dtx
index 78b6167fe6..97ef72e7b9 100644
--- a/macros/latex-dev/required/tools/calc.dtx
+++ b/macros/latex-dev/required/tools/calc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -425,7 +425,7 @@
% syntax characters.
%
%
-% \StopEventually{
+% \MaybeStop{
% \begin{thebibliography}{1}
% \bibitem{texbook}
% \textsc{D. E. Knuth}.
diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf
index 8e1f546f53..160aca5e23 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 43464f8b24..db7a495a91 100644
--- a/macros/latex-dev/required/tools/changes.txt
+++ b/macros/latex-dev/required/tools/changes.txt
@@ -5,6 +5,24 @@ completeness or accuracy and it contains some references to files that
are not part of the distribution.
=======================================================================
+2022-01-05 David Carlisle <David.Carlisle@latex-project.org>
+
+ * bm.dtx: Guard \nolimits@ for gh issue 744
+
+2021-12-05 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * multicol.dtx (subsection{Manual column breaking} \label{sec:colbreak}):
+ Added a missing guard in \newcolumn -- it only worked in hmode (sx/624940)
+
+2021-11-30 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * multicol.dtx: Added rollback to v1.8 (2019-10-01 release)
+
+2021-11-18 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * All *.dtx: Replaced \StopEventually by \MaybeStop
+
+
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
diff --git a/macros/latex-dev/required/tools/dcolumn.dtx b/macros/latex-dev/required/tools/dcolumn.dtx
index 069e633221..7415e23752 100644
--- a/macros/latex-dev/required/tools/dcolumn.dtx
+++ b/macros/latex-dev/required/tools/dcolumn.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -191,7 +191,7 @@
% "D{+}{\,\pm\,}{3,3}" will give nice, symmetric layout of up to three
% digits on either side of a $\pm$ sign.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{The Macros}
diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf
index 0df6ae4f60..507d7422d7 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.dtx b/macros/latex-dev/required/tools/delarray.dtx
index cc503707b0..d8aba52f32 100644
--- a/macros/latex-dev/required/tools/delarray.dtx
+++ b/macros/latex-dev/required/tools/delarray.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -100,7 +100,7 @@
% \end{verbatim}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf
index 5cef529c0c..56fc25969f 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.dtx b/macros/latex-dev/required/tools/enumerate.dtx
index 150a7386b8..89910438e9 100644
--- a/macros/latex-dev/required/tools/enumerate.dtx
+++ b/macros/latex-dev/required/tools/enumerate.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -122,7 +122,7 @@
% |\ref{LA}|, |\ref{LB}| and |\ref{LC}| produce
% `\ref{LA}', `\ref{LB}' and `\ref{LC}' respectively.
%
-% \StopEventually{}
+% \MaybeStop{}
%
%\section{Macros}
%
diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf
index e5b872c6af..74229da1af 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.dtx b/macros/latex-dev/required/tools/fileerr.dtx
index d916304116..59c1bbbbec 100644
--- a/macros/latex-dev/required/tools/fileerr.dtx
+++ b/macros/latex-dev/required/tools/fileerr.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -51,7 +51,7 @@
% \par After installing these files the user can respond with
% |h|, |q|, |r|, |s|, |e|, |x|, and on some systems also with
% \meta{return} to \TeX's missing file name question.
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The documentation driver}
% This code will generate the documentation. Since it is the
diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf
index 4284900263..e8893077a3 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.dtx b/macros/latex-dev/required/tools/fontsmpl.dtx
index b720826773..de2b55a608 100644
--- a/macros/latex-dev/required/tools/fontsmpl.dtx
+++ b/macros/latex-dev/required/tools/fontsmpl.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -70,7 +70,7 @@
% The |fontsmpl| document prompts interactively for a font family (for
% example `|cmr|') and produces a sample of that family.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Documentation}
%
diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf
index 54e30941d8..7672a04196 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.dtx b/macros/latex-dev/required/tools/ftnright.dtx
index e8da56aa20..1a7f7f584f 100644
--- a/macros/latex-dev/required/tools/ftnright.dtx
+++ b/macros/latex-dev/required/tools/ftnright.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -292,7 +292,7 @@
% worth of footnote material and that means that some of your footnotes are
% likely to be detached from their reference and show up on a later page!
%
-% \StopEventually{
+% \MaybeStop{
%
% \begin{small}
% \begin{thebibliography}{1}
diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf
index 9d47cacfbf..1da7644d3f 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 98d6802451..74143d1373 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-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -148,7 +148,7 @@
% program, or if this is not possible, increasing "\arrayrulewidth"
% may help to reduce the effect.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf
index 60b03f919b..a5c7d3dd82 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.dtx b/macros/latex-dev/required/tools/indentfirst.dtx
index e54df284ae..dff777d29d 100644
--- a/macros/latex-dev/required/tools/indentfirst.dtx
+++ b/macros/latex-dev/required/tools/indentfirst.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -59,7 +59,7 @@
%
% \CheckSum{4}^^A Still I think a record:-)
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \begin{macro}{\if@afterindent}
% \LaTeX\ uses the switch |\if@afterindent| to decide whether to indent
diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf
index 201ecf7725..386a69ce15 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.dtx b/macros/latex-dev/required/tools/layout.dtx
index de61aeae8c..323705e9ba 100644
--- a/macros/latex-dev/required/tools/layout.dtx
+++ b/macros/latex-dev/required/tools/layout.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -92,7 +92,7 @@
% \layout
% \end{figure}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The implementation}
%
diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf
index b5597006f9..eba30ca7f0 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.dtx b/macros/latex-dev/required/tools/longtable.dtx
index b66aef075e..72b8727d81 100644
--- a/macros/latex-dev/required/tools/longtable.dtx
+++ b/macros/latex-dev/required/tools/longtable.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -770,7 +770,7 @@
% \end{verbatim}
% \endgroup
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \finalclearpage
% \section{The Macros}
diff --git a/macros/latex-dev/required/tools/longtable.ins b/macros/latex-dev/required/tools/longtable.ins
index 92a04e00d4..7f53df7c5e 100644
--- a/macros/latex-dev/required/tools/longtable.ins
+++ b/macros/latex-dev/required/tools/longtable.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf
index 8f84730071..16112ac0ba 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-2019-10-01.sty b/macros/latex-dev/required/tools/multicol-2019-10-01.sty
new file mode 100644
index 0000000000..221f62f68e
--- /dev/null
+++ b/macros/latex-dev/required/tools/multicol-2019-10-01.sty
@@ -0,0 +1,1105 @@
+%% This is a rollback file for multicol to the last version within release 2019-10-01
+%% =======================
+%%
+%%
+%% This is file `multicol.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% multicol.dtx (with options: `package,badness,check,marktrace,nobalance')
+%%
+%% This is a generated file.
+%%
+%% The source is maintained by the LaTeX Project team and bug
+%% reports for it can be opened at https://latex-project.org/bugs/
+%% (but please observe conditions on bug reports sent to that address!)
+%%
+%% Copyright (C) 1993-2021
+%% The LaTeX Project and any individual authors listed elsewhere
+%% in this file.
+%%
+%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
+%% --------------------------------------------------------------------------
+%%
+%% It may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.3c
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% https://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX
+%% version 2005/12/01 or later.
+%%
+%% This file may only be distributed together with a copy of the LaTeX
+%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
+%% without such generated files.
+%%
+%% The list of all files belonging to the LaTeX `Tools Bundle' is
+%% given in the file `manifest.txt'.
+%%
+%% Package `multicol' to use with LaTeX2e
+%% Copyright 1989-2019 Frank Mittelbach
+%%
+%% In addition to the terms of LPPL any distributed version
+%% (unchanged or modified) of multicol has to keep the statement
+%% about the moral obligation for using multicol. In case of major
+%% changes where this would not be appropriate the author of the
+%% changed version should contact the copyright holder.
+%%
+%%
+%% Moral obligation for using multicol:
+%% ------------------------------------
+%%
+%% Users of multicol who wish to include or use multicol or a modified
+%% version in a proprietary and commercially market product are asked
+%% under certain conditions (see below) for the payment of a license
+%% fee. The size of this fee is to be determined, in each instance,
+%% by the commercial user, depending on his/her judgment of the value of
+%% multicol for his/her product.
+%%
+%%
+%% The conditions for this are as follows:
+%%
+%% The producer of a proprietary and commercially market product
+%% that involves typesetting using multicol is asked to determine
+%% the value of a license fee for using multicol if
+%%
+%% - the product is a document and the producer has decided to
+%% include multicol to typeset (parts of) the document or has
+%% directed the author of the document to include multicol (for
+%% example, by providing a class file to be used by the author)
+%%
+%% - the product is a LaTeX class or package that includes multicol
+%%
+%%
+%% There is no moral obligation in case
+%%
+%% - the product is a document but producer has not directed
+%% the author to include multicol (in that case the moral obligation
+%% lies with the author of the document)
+%%
+%% - the product does not involve typesetting, e.g., consists, for
+%% example, of distributing multicol and its documentation.
+%%
+%% - the product is not proprietary, i.e., is made available as free
+%% software itself (which doesn't prohibit its commercial marketing)
+%%
+%% - multicol is used for non-commercial purposes
+%%
+%%
+%% Determining a license fee might result in a license fee of zero
+%% (i.e., no payment) in case a producer has determined that the use
+%% of multicol has no enhancing effect on the product. This is a
+%% plausible scenario, i.e., in the above two cases the producer is
+%% only asked to evaluate the value of multicol for the product
+%% not for the payment of a license fee per se (which might or might
+%% not follow from this evaluation).
+%%
+%% The license fee, if any, can be payed either to the LaTeX fund
+%% (see ltx3info.txt in the base LaTeX distribution) or to the author of
+%% the program who can be contacted at
+%%
+%% Frank.Mittelbach@latex-project.org
+%%
+\NeedsTeXFormat{LaTeX2e}[2018-04-01]
+
+\providecommand\DeclareRelease[3]{}
+\providecommand\DeclareCurrentRelease[2]{}
+
+\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
+\DeclareCurrentRelease{}{2018-04-01}
+
+\ProvidesPackage{multicol}
+ [2019/12/09 v1.8y multicolumn formatting (FMi)]
+%%
+\DeclareOption{twocolumn}
+ {\PackageWarning{multicol}{May not work
+ with the twocolumn option}}
+\newcount\c@tracingmulticols
+\DeclareOption{errorshow}
+ {\c@tracingmulticols\z@}
+\DeclareOption{infoshow}
+ {\c@tracingmulticols\@ne}
+\DeclareOption{balancingshow}
+ {\c@tracingmulticols\tw@}
+\DeclareOption{markshow}
+ {\c@tracingmulticols\thr@@}
+\DeclareOption{debugshow}
+ {\c@tracingmulticols5\relax}
+\let\mc@gridwarn\maxdimen
+\DeclareOption{grid}{\def\mc@gridwarn{\@maxdepth}}
+\DeclareOption{colaction}{%
+ \def\mc@col@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status
+ {\ifmc@firstcol 1\else 2\fi}}%
+ \mc@firstcolfalse}%
+ \def\mc@lastcol@status@write{%
+ \protected@write\@auxout{}%
+ {\string\mc@col@status{3}}}%
+}
+\let\mc@col@status@write\relax
+\let\mc@lastcol@status@write\relax
+\ProcessOptions
+\def\multicols#1{\col@number#1\relax
+ \ifnum\col@number<\tw@
+ \PackageWarning{multicol}%
+ {Using `\number\col@number'
+ columns doesn't seem a good idea.^^J
+ I therefore use two columns instead}%
+ \col@number\tw@ \fi
+ \ifnum\col@number>20
+ \PackageError{multicol}%
+ {Too many columns}%
+ {Current implementation doesn't
+ support more than 20 columns.%
+ \MessageBreak
+ I therefore use 20 columns instead}%
+ \col@number20 \fi
+ \ifx\@footnotetext\mult@footnotetext\else
+ \let\orig@footnotetext\@footnotetext
+ \let\@footnotetext\mult@footnotetext
+ \fi
+ \@ifnextchar[\mult@cols{\mult@cols[]}}
+\long\def\mult@footnotetext#1{\begingroup
+ \columnwidth\textwidth
+ \orig@footnotetext{#1}\endgroup}
+\def\mult@cols[#1]{\@ifnextchar[%
+ {\mult@@cols{#1}}%
+ {\mult@@cols{#1}[\premulticols]}}
+\def\mult@@cols#1[#2]{%
+ \par
+ \ifinner \@boxedmulticolstrue
+ \else
+ \ifnum \doublecol@number>\z@
+ \@boxedmulticolstrue
+ \fi
+ \fi
+ \mult@info\z@
+ {Starting environment with
+ \the\col@number\space columns%
+ \if@boxedmulticols\MessageBreak
+ (boxed mode)\fi
+ }%
+ \enough@room{#2}%
+ #1\par\addvspace\multicolsep
+ \ifdim \prevdepth = -\@m\p@
+ \else
+ \@tempcnta\prevdepth
+ \@tempcntb\baselineskip
+ \divide\@tempcnta\@tempcntb
+ \advance\@tempcnta\@ne
+ \dimen@\prevdepth
+ \advance\dimen@ -\@tempcnta\baselineskip
+ \advance\dimen@ \topskip
+ \kern-\dimen@
+ \fi
+ \begingroup
+ \prepare@multicols
+ \if@boxedmulticols
+ \setbox\mult@box\vbox\bgroup
+ \color@setgroup
+ \fi
+ \ignorespaces}
+\newif\if@boxedmulticols
+\@boxedmulticolsfalse
+\newbox\mult@box
+\def\enough@room#1{%
+ \if@boxedmulticols\else
+ \par
+ \bgroup\@nobreakfalse\addpenalty\z@\egroup
+ \page@free \pagegoal
+ \advance \page@free -\pagetotal
+ \@tempskipa#1\relax
+ \mult@info\z@
+ {Current page:\MessageBreak
+ height=%
+ \the\pagegoal: used \the\pagetotal
+ \space -> free=\the\page@free
+ \MessageBreak
+ needed \the\@tempskipa
+ \space(for #1)}%
+ \ifdim \page@free <#1\newpage \fi
+ \fi}
+\def\prepare@multicols{%
+ \multicol@leftmargin\@totalleftmargin
+ \@totalleftmargin\z@
+ \parshape\z@
+ \doublecol@number\col@number
+ \multiply\doublecol@number\tw@
+ \advance\doublecol@number\mult@rightbox
+ \if@boxedmulticols
+ \let\l@kept@firstmark\kept@firstmark
+ \let\l@kept@botmark\kept@botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \else
+ \nointerlineskip {\topskip\z@\null}%
+ \output{%
+ \global\setbox\partial@page\vbox
+ {%
+ \ifvoid\partial@page\else
+ \PackageError{multicol}%
+ {Error saving partial page}%
+ {The part of the page before
+ the multicols environment was
+ nearly full with^^Jthe result
+ that starting the environment
+ will produce an overfull
+ page. Some^^Jtext may be lost!
+ Please increase \premulticols
+ either generally or for this%
+ ^^Jenvironment by specifying a
+ suitable value in the second
+ optional argument to^^Jthe
+ multicols environment.}
+ \unvbox\partial@page
+ \box\last@line
+ \fi
+ \unvbox\@cclv
+ \global\setbox\last@line\lastbox
+ }%
+ \prep@keptmarks
+ \global\let\kept@topmark\firstmark
+ }\eject
+ \advance\@colroom-\ht\partial@page
+ \set@mult@vsize\relax
+ \output{\multi@column@out}%
+ \init@mult@footins
+ \reinsert@footnotes
+ \def\clearpage{%
+ \ifx\@deferlist\@empty\else
+ \PackageError{multicol}%
+ {Deferred floats not cleared}%
+ {A \string\clearpage\space inside multicols acts like
+ \string\newpage\space and doesn't clear floats.\MessageBreak
+ Move it before the multicols environment if you need it.}%
+ \fi
+ \newpage}%
+ \fi
+ \vbadness\@Mi \hbadness5000
+ \tolerance\multicoltolerance
+ \pretolerance\multicolpretolerance
+ \setemergencystretch\col@number\hsize
+ \set@floatcmds
+ \advance\baselineskip\multicolbaselineskip
+ \hsize\linewidth \advance\hsize\columnsep
+ \advance\hsize-\col@number\columnsep
+ \divide\hsize\col@number
+ \full@width\linewidth
+ \linewidth\hsize
+ \columnwidth\hsize
+}
+\def\init@mult@footins{%
+ \multiply\count\footins\col@number
+ \multiply\skip \footins\col@number
+}
+\def\set@mult@vsize#1{%
+ \vsize\@colroom
+ \@tempdima\baselineskip
+ \advance\@tempdima-\topskip
+ \advance\vsize\@tempdima
+ \vsize\col@number\vsize
+ \advance\vsize-\@tempdima
+ \advance\vsize\col@number\baselineskip
+ #1\advance\vsize
+ \c@collectmore\baselineskip}
+\newdimen\multicol@leftmargin
+\mathchardef\@Mvi=10006 % 10005 is \columnbreak
+\def\endmulticols{\par
+ \if@boxedmulticols
+ \remove@discardable@items\color@endgroup\egroup
+ \balance@columns
+ \return@nonemptymark{first}%
+ \kept@firstmark
+ \return@nonemptymark{bot}%
+ \kept@botmark
+ \page@sofar
+ \global\let\kept@firstmark
+ \l@kept@firstmark
+ \global\let\kept@botmark
+ \l@kept@botmark
+ \mult@info\tw@
+ {Restore kept marks to\MessageBreak
+ first: \meaning\kept@firstmark
+ \MessageBreak bot\space\space:
+ \meaning\kept@botmark }%
+ \else
+ \ifdim\pagegoal=\maxdimen
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \unvbox\colbreak@box\fi
+ \fi
+ \penalty\z@
+ \penalty-\@Mvi
+ \ifvbox\partial@page
+ \unvbox\partial@page\fi
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {Make kept marks empty}%
+ \fi
+ \@checkend{multicols}%
+ \endgroup
+ \global\c@unbalance\z@
+ \if@boxedmulticols
+ \mc@col@status@write
+ \else
+ \reinsert@footnotes
+ \ifdim \pagegoal=\maxdimen
+ \global\vsize\@colroom
+ \else
+ \enough@room\postmulticols
+ \fi
+ \fi
+ \addvspace\multicolsep
+ \prevdepth\z@
+ \mult@info\z@
+ {Ending environment
+ \if@boxedmulticols
+ \space(boxed mode)\fi
+ }}
+\newcount\c@unbalance
+\newcount\c@collectmore
+\newcount\doublecol@number
+\newcount\multicoltolerance
+\newcount\multicolpretolerance
+\newdimen\full@width
+\newdimen\page@free
+\newdimen\premulticols
+\newdimen\postmulticols
+\newskip\multicolsep
+\newskip\multicolbaselineskip
+\newbox\partial@page
+\newbox\last@line
+\c@unbalance = 0
+\c@collectmore = 0
+\multicoltolerance = 9999
+\multicolpretolerance = -1
+\premulticols = 50pt
+\postmulticols= 20pt
+\multicolsep = 12pt plus 4pt minus 3pt
+\multicolbaselineskip=0pt
+\def\process@cols#1#2{\count@#1\relax
+ \loop
+ #2%
+ \advance\count@\tw@
+ \ifnum\count@<\doublecol@number
+ \repeat}
+\def\page@sofar{%
+ \process@cols\mult@rightbox
+ {\ifvoid\count@
+ \setbox\count@\hbox to\hsize{}%
+ \else
+ \wd\count@\hsize
+ \fi}%
+ \count@\col@number \advance\count@\m@ne
+ \mult@info\z@
+ {Column spec: \the\full@width\space = indent
+ + columns + sep =\MessageBreak
+ \the\multicol@leftmargin\space
+ + \the\col@number\space
+ x \the\hsize\space
+ + \the\count@\space
+ x \the\columnsep
+ }%
+\ifvmode\else\errmessage{Multicol Error}\fi
+ \nointerlineskip
+ \setbox\z@\hbox{p}\global\dimen\tw@\dp\z@
+ \moveright\multicol@leftmargin
+ \hbox to\full@width{%
+ \mc@align@columns
+ \rlap{\phantom p}%
+ }%
+ \prevdepth\z@
+ \kern-\dimen\tw@
+ \ifdim\dimen\tw@ > \mc@gridwarn
+ \PackageWarning{multicol}%
+ {Very deep columns!\MessageBreak
+ Grid alignment might be broken}%
+ \fi
+}
+\def\columnseprulecolor{\normalcolor}
+\def\reinsert@footnotes{\ifvoid\footins\else
+ \insert\footins{}\fi}
+\def\vfilmaxdepth{\vskip \z@ \@plus .0001fil
+ \@minus \@maxdepth}
+\def\multi@column@out{%
+ \ifnum\outputpenalty <-\@M
+ \speci@ls \else
+ \ifvoid\colbreak@box\else
+ \mult@info\@ne{Re-adding forced
+ break(s) for splitting}%
+ \setbox\@cclv\vbox{%
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \unvbox\@cclv}%
+ \fi
+ \splittopskip\topskip
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \dimen@\@colroom
+ \divide\skip\footins\col@number
+ \ifvoid\footins \else
+ \leave@mult@footins
+ \fi
+
+ \ifvbox \@kludgeins
+ \advance \dimen@ -\ht\@kludgeins
+ \ifdim \wd\@kludgeins>\z@
+ \shr@nkingtrue
+ \fi
+ \fi
+ \process@cols\mult@gfirstbox{%
+ \setbox\count@
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@
+ \ifshr@nking\vfilmaxdepth\fi}%
+ }%
+ \setbox\mult@rightbox
+ \vsplit\@cclv to\dimen@
+ \set@keptmarks
+ \setbox\mult@rightbox\vbox to\dimen@
+ {\unvbox\mult@rightbox
+ \ifshr@nking\vfilmaxdepth\fi}%
+ \ifvoid\@cclv \else
+ \unvbox\@cclv
+ \ifnum\outputpenalty=\@M
+ \else
+ \penalty\outputpenalty
+ \fi
+ \ifvoid\footins\else
+ \PackageWarning{multicol}%
+ {I moved some lines to
+ the next page.\MessageBreak
+ Footnotes on page
+ \thepage\space might be wrong}%
+ \fi
+ \ifnum \c@tracingmulticols>\thr@@
+ \hrule\allowbreak \fi
+ \fi
+ \ifx\@empty\kept@firstmark
+ \let\firstmark\kept@topmark
+ \let\botmark\kept@topmark
+ \else
+ \let\firstmark\kept@firstmark
+ \let\botmark\kept@botmark
+ \fi
+ \let\topmark\kept@topmark
+ \mult@info\tw@
+ {Use kept top mark:\MessageBreak
+ \meaning\kept@topmark
+ \MessageBreak
+ Use kept first mark:\MessageBreak
+ \meaning\kept@firstmark
+ \MessageBreak
+ Use kept bot mark:\MessageBreak
+ \meaning\kept@botmark
+ \MessageBreak
+ Produce first mark:\MessageBreak
+ \meaning\firstmark
+ \MessageBreak
+ Produce bot mark:\MessageBreak
+ \meaning\botmark
+ \@gobbletwo}%
+ \boxmaxdepth\maxdimen
+ \setbox\@cclv\vbox{\unvbox\partial@page
+ \page@sofar}%
+ \@makecol\@outputpage
+ \global\let\kept@topmark\botmark
+ \global\let\kept@firstmark\@empty
+ \global\let\kept@botmark\@empty
+ \mult@info\tw@
+ {(Re)Init top mark:\MessageBreak
+ \meaning\kept@topmark
+ \@gobbletwo}%
+ \global\@colroom\@colht
+ \global \@mparbottom \z@
+ \global \@textfloatsheight \z@
+ \process@deferreds
+ \@whilesw\if@fcolmade\fi{\@outputpage
+ \global\@colroom\@colht
+ \process@deferreds}%
+ \mult@info\@ne
+ {Colroom:\MessageBreak
+ \the\@colht\space
+ after float space removed
+ = \the\@colroom \@gobble}%
+ \set@mult@vsize \global
+ \fi}
+\def\leave@mult@footins{%
+ \advance\dimen@-\skip\footins
+ \advance\dimen@-\ht\footins
+}
+\def\speci@ls{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum \outputpenalty<-\@MM
+ \PackageError{multicol}{Document end
+ inside multicols environment}\@ehd
+ \@specialoutput
+ \else
+ \ifnum\outputpenalty = -\@Mv
+ \mult@info\@ne{Forced column
+ break seen}%
+ \global\advance\vsize-\pagetotal
+ \global\setbox\colbreak@box
+ \vbox{%
+ \ifvoid\colbreak@box
+ \else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \fi
+ \boxmaxdepth\@maxdepth
+ \setbox\@cclv\vbox{%
+ \unvbox\@cclv
+ \remove@discardable@items}%
+ \dimen@\dp\@cclv
+ \unvbox\@cclv
+ \kern-\dimen@
+ }%
+ \reinsert@footnotes
+ \else
+ \ifnum\outputpenalty = -\@Mvi
+ \mult@info\@ne{End penalty of multicols seen}%
+ \outputpenalty\@M % pretend we had a natural forced break
+ \balance@columns@out
+ \else
+ \PackageWarningNoLine{multicol}%
+ {Floats and marginpars not
+ allowed inside `multicols'
+ environment!}%
+ \unvbox\@cclv\reinsert@footnotes
+ \xdef\@freelist{\@freelist\@currlist}%
+ \gdef\@currlist{}%
+ \fi
+ \fi
+ \fi
+ \else \@doclearpage \fi
+}
+\def\process@deferreds{%
+ \@floatplacement
+ \@tryfcolumn\@deferlist
+ \if@fcolmade\else
+ \begingroup
+ \let\@tempb\@deferlist
+ \gdef\@deferlist{}%
+ \let\@elt\@scolelt
+ \@tempb \endgroup
+ \fi}
+\newif\ifshr@nking
+\def\raggedcolumns{%
+ \@bsphack\shr@nkingtrue\@esphack}
+\def\flushcolumns{%
+ \@bsphack\shr@nkingfalse\@esphack}
+\def\balance@columns@out{%
+ \setbox\mult@box\vbox{%
+ \ifvoid\colbreak@box\else
+ \unvbox\colbreak@box
+ \penalty-\@Mv
+ \mult@info\@ne{Re-adding
+ forced break(s) in balancing}%
+ \fi
+ \unvbox\@cclv
+ \remove@discardable@items
+ }%
+ \balance@columns
+ \iftoo@bad
+ \mult@info\@ne
+ {Balancing failed ...
+ cut a normal page}%
+ \setbox\@cclv\vbox
+ {\vskip\topskip
+ \vskip-\splittopskip
+ \unvbox\mult@box
+ \penalty-\@Mvi
+ }%
+ \multi@column@out
+ \else
+ \global\vsize\@colroom
+ \global\advance\vsize\ht\partial@page
+ \ifvbox\@kludgeins\insert\@kludgeins
+ {\unvbox\@kludgeins}\fi
+ \unvbox\partial@page
+ \return@nonemptymark{first}\kept@firstmark
+ \return@nonemptymark{bot}\kept@botmark
+ \page@sofar
+ \penalty\z@
+ \fi
+}
+\def\balance@columns{%
+ \get@keptmarks\mult@box
+ \setbox\mult@box\vbox{%
+ \penalty-\@M
+ \unvbox\mult@box
+ }%
+ \@tempdima\topskip
+ \splittopskip\@tempdima
+ \@plus\multicolundershoot
+ \@minus\multicolovershoot
+ \splitmaxdepth\@maxdepth
+ \boxmaxdepth\@maxdepth
+ \setbox\@tempboxa\vsplit\mult@box to\z@
+ \@tempdima\ht\mult@box
+ \advance\@tempdima\dp\mult@box
+ \divide\@tempdima\col@number
+ \count@\@tempdima
+ \divide\count@\baselineskip
+ \dimen@\count@\baselineskip
+ \advance\dimen@\topskip
+ \ifdim \dimen@ >\@tempdima
+ \advance\dimen@-\baselineskip
+ \fi
+ \@tempdima\dimexpr
+ \topskip +\c@minrows\baselineskip-\baselineskip\relax
+ \ifnum\dimen@<\@tempdima
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\@tempdima \space (corrected for minrows)}%
+ \dimen@\@tempdima
+ \fi
+ \advance\dimen@\c@unbalance\baselineskip
+ \mult@info\@ne
+ {Balance columns\on@line:
+ \ifnum\c@unbalance=\z@\else
+ (off balance=\number\c@unbalance)\fi
+ \@gobbletwo}%
+ \ifnum\dimen@<\topskip
+ \mult@info\@ne
+ {Start value
+ \the\dimen@ \space ->
+ \the\topskip \space (corrected)}%
+ \dimen@\topskip
+ \fi
+ \vbadness\@M
+ \vfuzz \maxdimen
+ \last@try-\p@
+ \loop
+ {\process@cols\mult@grightbox
+ {\global\setbox\count@
+ \box\voidb@x}}%
+ \global\setbox\mult@grightbox
+ \copy\mult@box
+ \too@badfalse
+ \forcedbreak@leftoverfalse
+ {\process@cols\mult@firstbox{%
+ \global\setbox\count@
+ \vsplit\mult@grightbox to\dimen@
+ \global\setbox\count@
+ \vbox to\dimen@
+ {\unvbox\count@}%
+ \ifnum\c@tracingmulticols>\@ne
+ \@tempcnta\count@
+ \advance\@tempcnta-\mult@grightbox
+ \divide\@tempcnta \tw@
+ \message{^^JColumn
+ \number\@tempcnta\space
+ badness: \the\badness\space}%
+ \fi
+ \ifnum\badness>\c@columnbadness
+ \ifnum\c@tracingmulticols>\@ne
+ \message{too bad
+ (>\the\c@columnbadness)}%
+ \fi
+ \too@badtrue
+ \fi
+ }}%
+ \global\setbox\mult@grightbox
+ \vbox{\unvbox\mult@grightbox}%
+ \setbox\mult@nat@firstbox
+ \vbox{\unvcopy\mult@firstbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{^^JFirst column
+ = \the\dimen@\space
+ (\the\ht\mult@nat@firstbox)}\fi
+ \ifnum\c@tracingmulticols>\@ne
+ \message{<> last column =
+ \the\ht\mult@grightbox^^J}%
+ \fi
+ \ifdim\ht\mult@grightbox >\dimen@
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: last
+ column too large!}%
+ \fi
+ \else
+ \setbox\@tempboxa
+ \copy\mult@grightbox
+ \setbox\z@\vsplit\@tempboxa to\maxdimen
+ \ifvoid\@tempboxa
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{Final badness:
+ \the\badness}%
+ \fi
+ \ifnum\badness>\c@finalcolumnbadness
+ \global\setbox\mult@grightbox
+ \vbox to\dimen@
+ {\unvbox\mult@grightbox\vfil}%
+ \ifnum\c@tracingmulticols>\@ne
+ \message{ setting natural
+ (> \the\c@finalcolumnbadness)}%
+ \fi
+ \fi
+ \else
+ \@tempdima\@colroom
+ \advance\@tempdima \maxbalancingoverflow
+ \ifdim \dimen@ < \@tempdima
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Rejected: unprocessed
+ forced break(s) in last column!}%
+ \fi
+ \else
+ \forcedbreak@leftovertrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Failed: columns too large
+ with unprocessed forced break(s)!}%
+ \fi
+ \fi
+ \fi
+ \fi
+ \ifdim\ht\mult@nat@firstbox<\dimen@
+ \ifdim\ht\mult@nat@firstbox>\last@try
+ \too@badtrue
+ \ifnum\c@tracingmulticols>\@ne
+ \typeout{Retry: using natural
+ height of first column!}%
+ \fi
+ \dimen@\ht\mult@nat@firstbox
+ \last@try\dimen@
+ \advance\dimen@-\p@
+ \fi
+ \fi
+ \iftoo@bad
+ \advance\dimen@\p@
+ \repeat
+ \ifforcedbreak@leftover
+ \too@badtrue
+ \else
+ \if@boxedmulticols\else
+ \ifdim\dimen@>\@colroom
+ \dimen@\@colroom
+ \fi
+ \fi
+ \process@cols\mult@rightbox
+ {\@tempcnta\count@
+ \advance\@tempcnta\@ne
+ \vfuzz\z@
+ \setbox\count@\vbox to\dimen@
+ {%
+ \vskip \z@
+ \@plus-\multicolundershoot
+ \@minus-\multicolovershoot
+ \unvbox\@tempcnta
+ \ifshr@nking\vfilmaxdepth\fi
+ }%
+ \ifnum\badness>\@M
+ \vfuzz\maxdimen % no overfull warning
+ \setbox\@tempboxa \vbox to\dimen@
+ {\vskip-\maxbalancingoverflow
+ \unvcopy\count@}%
+ \ifnum\badness>\@M
+ \mult@info\@ne
+ {Balanced column more than
+ \the\maxbalancingoverflow\space
+ too large}%
+ \too@badtrue
+ \else
+ \mult@info\@ne
+ {Balanced column
+ too large, but less than
+ \the\maxbalancingoverflow}%
+ \fi
+ \fi
+ }%
+ \fi
+}
+\newdimen\maxbalancingoverflow
+\maxbalancingoverflow=12pt
+
+\ifnum\numexpr \count20-\count14-1<41 % = 2 * 20 + 1
+ \count14=\@cclv
+\fi
+\newbox\mult@rightbox
+\newbox\mult@grightbox
+\newbox\mult@gfirstbox
+\newbox\mult@firstbox
+\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\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa\newbox\@tempa
+\newbox\@tempa
+\let\@tempa\relax
+\@ifundefined{emergencystretch}
+ {\newdimen\emergencystretch}{}
+\def\setemergencystretch#1#2{%
+ \emergencystretch 4pt
+ \multiply\emergencystretch#1}
+
+\def\set@floatcmds{%
+ \let\@dblfloat\@dbflt
+ \def\end@dblfloat{\@endfloatbox
+ \@largefloatcheck
+ \outer@nobreak
+ \ifnum\@floatpenalty<\z@
+ \@cons\@deferlist\@currbox
+ \fi
+ \ifnum\@floatpenalty=-\@Mii
+ \@Esphack
+ \fi}}
+\def\kept@topmark{{}{}}
+\let\kept@firstmark\@empty
+\let\kept@botmark\@empty
+\def\return@nonemptymark#1#2{%
+ \ifx#2\@empty
+ \else
+ \mult@info\tw@
+ {Returned #1 mark:\MessageBreak
+ \meaning#2}%
+ \toks@\expandafter{#2}%
+ \mark{\the\toks@}%
+ \nobreak
+ \fi}
+\def\get@keptmarks#1{%
+ \begingroup
+ \vbadness\@M
+ \setbox#1\copy#1%
+ \setbox#1\vsplit#1to\maxdimen
+ \set@keptmarks
+ \endgroup
+}
+\def\set@keptmarks{%
+ \ifx\kept@firstmark\@empty
+ \expandafter\gdef\expandafter
+ \kept@firstmark
+ \expandafter{\splitfirstmark}%
+ \ifx\kept@firstmark\@empty\else
+ \mult@info\tw@
+ {Set kept first mark:\MessageBreak
+ \meaning\kept@firstmark%
+ \@gobbletwo}%
+ \fi
+ \fi
+ \expandafter\def\expandafter\@tempa
+ \expandafter{\splitbotmark}%
+ \ifx\@tempa\@empty\else
+ \global\let\kept@botmark\@tempa
+ \mult@info\tw@
+ {Set kept bot mark:\MessageBreak
+ \meaning\kept@botmark%
+ \@gobbletwo}%
+ \fi}%
+\def\prep@keptmarks{%
+ \if@boxedmulticols \else
+ \get@keptmarks\partial@page
+ \fi}
+\skip0=0pt
+\edef\the@zero@skip{\the\skip0}
+\def\remove@discardable@items{%
+ \unpenalty
+ \edef\@tempa{\the\lastskip}%
+ \unskip
+ \ifx\@tempa\the@zero@skip
+ \edef\@tempb{\the\lastskip}%
+ \ifx\@tempb\the@zero@skip
+ \else
+ \unskip
+ \ifnum \lastpenalty=\@M
+ \vskip\@tempb\vskip\@tempa\relax
+ \else
+ \remove@discardable@items
+ \fi
+ \fi
+ \else
+ \remove@discardable@items
+ \fi
+}
+\newif\iftoo@bad
+\def\too@badtrue{\global\let\iftoo@bad\iftrue}
+\def\too@badfalse{\global\let\iftoo@bad\iffalse}
+\newif\ifforcedbreak@leftover
+\newcount\c@minrows
+\c@minrows=1
+\newcount\c@columnbadness
+\c@columnbadness=10000
+\newcount\c@finalcolumnbadness
+\c@finalcolumnbadness=9999
+
+\newdimen\last@try
+
+\newdimen\multicolovershoot
+\newdimen\multicolundershoot
+\multicolovershoot=0pt
+\multicolundershoot=2pt
+\newbox\mult@nat@firstbox
+\def\mult@info#1#2{%
+ \ifnum\c@tracingmulticols>#1%
+ \GenericWarning
+ {(multicol)\@spaces\@spaces}%
+ {Package multicol: #2}%
+ \fi
+}
+ \@namedef{multicols*}{%
+ \ifinner
+ \PackageWarning{multicol}%
+ {multicols* inside a box does
+ not make sense.\MessageBreak
+ Going to balance anyway}%
+ \else
+ \def\balance@columns@out
+ {\multi@column@out \penalty-\@Mvi }%
+ \fi
+ \begin{multicols}
+}
+\@namedef{endmulticols*}{%
+ \par
+ \ifdim\lastskip>\z@ \vskip-\lastskip \fi
+ \ifdim \prevdepth>\z@
+ \vskip-\ifdim\prevdepth>\boxmaxdepth
+ \boxmaxdepth
+ \else \prevdepth \fi
+ \fi
+ \ifshr@nking\else
+ \vfil
+ \fi
+ \end{multicols}}
+\mathchardef\@Mv=10005
+\def\columnbreak{%
+ \ifnum\col@number<\tw@
+ \PackageError{multicol}%
+ {\noexpand\columnbreak outside multicols}%
+ {This command can only be used within
+ a multicols or multicols* environment.}%
+ \else
+ \ifvmode
+ \penalty -\@Mv\relax
+ \else
+ \@bsphack
+ \vadjust{\penalty -\@Mv\relax}%
+ \@esphack
+ \fi
+ \fi}
+\newbox\colbreak@box
+\def\LR@column@boxes{%
+ \process@cols\mult@gfirstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \mc@col@status@write
+ \box\count@
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss}%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+}
+
+\def\RL@column@boxes{%
+ \process@cols\mult@gfirstbox{%
+ \hskip\hsize
+ \hss{\columnseprulecolor\vrule
+ \@width\columnseprule}\hss
+ }%
+ \hskip\hsize
+ \process@cols\mult@gfirstbox{%
+ \ifdim\dp\count@>\dimen\tw@
+ \global\dimen\tw@\dp\count@ \fi
+ \hskip-\hsize
+ \mc@col@status@write
+ \box\count@
+ \hskip-\hsize
+ \hskip-\columnsep
+ }%
+ \ifdim\dp\mult@rightbox>\dimen\tw@
+ \global\dimen\tw@\dp\mult@rightbox \fi
+ \hskip-\hsize
+ \mc@lastcol@status@write
+ \box\mult@rightbox
+ \hskip-\hsize
+ \hskip\full@width
+ }
+\newcommand\RLmulticolcolumns
+ {\let\mc@align@columns
+ \RL@column@boxes}
+\newcommand\LRmulticolcolumns
+ {\let\mc@align@columns
+ \LR@column@boxes}
+\LRmulticolcolumns
+\newcount\mc@col@check@num
+
+\newcommand\docolaction{%
+ \ifx\mc@col@status@write\relax
+ \PackageError{multicol}%
+ {Option 'colaction' not selected}%
+ {\string\docolaction\space
+ requires the use of the 'colaction'
+ option on the package}%
+ \fi
+ \global\advance\mc@col@check@num\@ne
+ \edef\mc@col@type{\expandafter\ifx
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname\relax
+ 0\else
+ \csname mc@col-\the\mc@col@check@num
+ \endcsname
+ \fi}%
+ \@ifstar
+ {\@docolactionstartrue \@docolaction}%
+ {\@docolactionstarfalse\@docolaction}%
+}
+\newcommand\@docolaction[4][1]{%
+ \edef\@docolactioncheck{\write\@auxout
+ {\string\mc@set@col@status
+ {mc@col-\the\mc@col@check@num}%
+ {\mc@col@type}}}%
+ \if@docolactionstar \@docolactioncheck \fi
+ \ifcase \mc@col@type\relax
+ \ifcase #1\or #2\or#3\or#4\fi
+ \or
+ #2% % 1 First col
+ \or
+ #3% % 2 any middle col
+ \or
+ #4% % 3 last col
+ \else
+ \ERRORwrongdefaultgiven
+ \fi
+ \if@docolactionstar \else \@docolactioncheck \fi
+}
+\newif\if@docolactionstar
+\def\mc@col@status#1{%
+ \gdef\mc@curr@col@status{#1}}
+\def\mc@set@col@status#1#2{%
+ \global\expandafter\let\csname #1\endcsname
+ \mc@curr@col@status}
+\AtEndDocument{\def\mc@set@col@status#1#2{%
+ \ifnum #2=\mc@curr@col@status\else
+ \@tempswatrue
+ \fi}%
+}
+\newif\ifmc@firstcol
+\mc@firstcoltrue
+\endinput
+%%
+%% End of file `multicol.sty'.
diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx
index 8d868357da..aa21d75f07 100644
--- a/macros/latex-dev/required/tools/multicol.dtx
+++ b/macros/latex-dev/required/tools/multicol.dtx
@@ -92,17 +92,19 @@
%<package>\providecommand\DeclareCurrentRelease[2]{}
%<package>
%<package>\DeclareRelease{}{2017-04-11}{multicol-2017-04-11.sty}
-%<package>\DeclareCurrentRelease{}{2018-04-01}
+%<package>\DeclareRelease{v1.8}{2019-10-01}{multicol-2019-10-01.sty}
+%<package>\DeclareCurrentRelease{}{2021-11-15}
%<package>
%<package>\ProvidesPackage{multicol}
%<driver> \ProvidesFile{multicol.drv}
% \fi
% \ProvidesFile{multicol.dtx}
- [2021/10/28 v1.9b multicolumn formatting (FMi)]
+ [2021/11/30 v1.9d multicolumn formatting (FMi)]
%
%
%%
%
+% \changes{v1.9c}{2021/11/30}{Added rollback to v1.8}
% \changes{v1.5n}{1997/06/05}{Applied improvement of documentation,
% kindly done by Robin Fairbairns.}
% \changes{v1.4h}{1992/06/04}{Added mark tracing with
@@ -844,7 +846,7 @@
% \changes{v1.5l}{1996/01/13}{Try hard to explain unresolved reference
% that happens if \cs{OnlyDescription} is used}
%
-% \StopEventually{\PrintIndex \PrintChanges
+% \MaybeStop{\PrintIndex \PrintChanges
% \ifx\Finale\relax
% \typeout{**********************************}
% \typeout{* Info: Typesetting this document with
@@ -4149,7 +4151,11 @@
a multicols or multicols* environment.}%
\else
\ifvmode
- \nobreak\vfill\penalty -\@Mv\relax
+% \end{macrocode}
+% We need to guard the \cs{vfill} from disappearing.
+% \changes{v1.9d}{2021/12/05}{Guard the \cs{vfill} (sx/624940)}
+% \begin{macrocode}
+ \nobreak\vfill\kern\z@\penalty -\@Mv\relax
\else
\@bsphack
\vadjust{\nobreak\vfill\kern\z@\penalty -\@Mv\relax}%
diff --git a/macros/latex-dev/required/tools/multicol.ins b/macros/latex-dev/required/tools/multicol.ins
index c8838f8be2..9bbf2780ad 100644
--- a/macros/latex-dev/required/tools/multicol.ins
+++ b/macros/latex-dev/required/tools/multicol.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf
index e19c883d45..35c3a48364 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.dtx b/macros/latex-dev/required/tools/rawfonts.dtx
index f54aeaf44d..cbd1ba89ea 100644
--- a/macros/latex-dev/required/tools/rawfonts.dtx
+++ b/macros/latex-dev/required/tools/rawfonts.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -63,7 +63,7 @@
% \end{verbatim}
% to your |latex209.cfg| \LaTeX~2.09 compatibility configuration file.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section*{Implementation}
%
diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf
index 0c7ed8cc49..6b8d077837 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.dtx b/macros/latex-dev/required/tools/shellesc.dtx
index 54027cada7..4f60ff8d03 100644
--- a/macros/latex-dev/required/tools/shellesc.dtx
+++ b/macros/latex-dev/required/tools/shellesc.dtx
@@ -1,6 +1,6 @@
% \iffalse
%% Source File: shellesc.dtx
-%% Copyright (C) 2015-2021
+%% Copyright (C) 2015-2022
%%
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf
index 187fb0c499..c9342b80e6 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.dtx b/macros/latex-dev/required/tools/showkeys.dtx
index 3c9236f2ef..959b5c62ec 100644
--- a/macros/latex-dev/required/tools/showkeys.dtx
+++ b/macros/latex-dev/required/tools/showkeys.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -248,7 +248,7 @@
%
% \end{thebibliography}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf
index 36e9760b17..1c769e3560 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.dtx b/macros/latex-dev/required/tools/somedefs.dtx
index 825a93ec66..24916b4286 100644
--- a/macros/latex-dev/required/tools/somedefs.dtx
+++ b/macros/latex-dev/required/tools/somedefs.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -87,7 +87,7 @@
% For a longer example of the use of the |somedefs| package, look at the
% |rawfonts| package.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section*{Implementation}
%
diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf
index 77051a1f39..87faf6ff10 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.dtx b/macros/latex-dev/required/tools/tabularx.dtx
index a0f75fc4fa..0d1cbeac34 100644
--- a/macros/latex-dev/required/tools/tabularx.dtx
+++ b/macros/latex-dev/required/tools/tabularx.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -261,7 +261,7 @@
% This behaviour of the package can be customised slightly
% as noted in the documentation of the code section.
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/tools/tabularx.ins b/macros/latex-dev/required/tools/tabularx.ins
index a0d39c2564..0c6d26e940 100644
--- a/macros/latex-dev/required/tools/tabularx.ins
+++ b/macros/latex-dev/required/tools/tabularx.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf
index 9ec60b98d4..179c1ece88 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.dtx b/macros/latex-dev/required/tools/theorem.dtx
index 8543ff9d7c..2dc0412efb 100644
--- a/macros/latex-dev/required/tools/theorem.dtx
+++ b/macros/latex-dev/required/tools/theorem.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -332,7 +332,7 @@
% (looking everything over) and many others providing useful
% suggestions.
%
-% \StopEventually{%
+% \MaybeStop{%
% \begin{thebibliography}{9}
% \bibitem{bk:GMS94} \textsc{M.~Goossens}, \textsc{F.~Mittelbach}
% and \textsc{A.~Samarin}.
diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf
index 8a227183e2..7d69fb0ecf 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 f2a32badbe..fc84fd7828 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/tools-overview.tex b/macros/latex-dev/required/tools/tools-overview.tex
index a2dae49e8f..882a2ae77f 100644
--- a/macros/latex-dev/required/tools/tools-overview.tex
+++ b/macros/latex-dev/required/tools/tools-overview.tex
@@ -1,7 +1,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesFile{tools-overview.tex}[2015/03/31 v1.0 Tools overview]
-% Copyright (C) 2006-2021
+% Copyright (C) 2006-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
diff --git a/macros/latex-dev/required/tools/tools.ins b/macros/latex-dev/required/tools/tools.ins
index 15c64ac80a..b93f649153 100644
--- a/macros/latex-dev/required/tools/tools.ins
+++ b/macros/latex-dev/required/tools/tools.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -49,7 +49,7 @@ reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/trace.dtx b/macros/latex-dev/required/tools/trace.dtx
index d10243f690..93906eb76b 100644
--- a/macros/latex-dev/required/tools/trace.dtx
+++ b/macros/latex-dev/required/tools/trace.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -278,7 +278,7 @@
% \small \texttt{\$} \stop
%\end{verbatim}
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{Implementation}
%
diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf
index 9e4fe2b31e..28b75da6e3 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.dtx b/macros/latex-dev/required/tools/varioref.dtx
index faf8b0383c..579c411868 100644
--- a/macros/latex-dev/required/tools/varioref.dtx
+++ b/macros/latex-dev/required/tools/varioref.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -40,7 +40,7 @@
%<package>\DeclareCurrentRelease{}{2019-10-01}
%<package>
%<package>\ProvidesPackage{varioref}
-%<package> [2021/07/07 v1.6f package for extended references (FMi)]
+%<package> [2022/01/09 v1.6f package for extended references (FMi)]
% \fi
%
%%
@@ -149,7 +149,7 @@
% |\pageref| when the difference is larger. The word `facing' is used
% when label and reference both fall onto a double spread. However,
% if a special page numbering scheme is used instead of the usual
-% arabic numbering (e.g., |\pagenumbering{roman}|) then there will be
+% Arabic numbering (e.g., |\pagenumbering{roman}|) then there will be
% no distinction between one or many pages off.
%
%\DescribeMacro\vpageref Sometimes one wants to refer only to page
@@ -172,7 +172,7 @@
% A space in front of |\vpageref| it will be ignored if
% the command doesn't produce any text at all.
%
-% But in fact |\vpageref| allows even more control. If has two
+% But in fact |\vpageref| allows even more control. It has two
% optional arguments. With the first one, one can specify the text
% that should be used if label and reference fall on the same page.
% This is very helpful if both are near to each other, so that they
@@ -293,7 +293,7 @@
% Another command for conditional processing is |\vpagerefnearby|. It
% takes three arguments: a label and a \meta{true} and \meta{false}
% argument. It compares the page reference to the label with the
-% current page number and if both are arabic number and only differ by
+% current page number and if both are Arabic number and only differ by
% $\pm1$ the \meta{true} argument is executed otherwise the
% \meta{false} argument. In other words it tells you if a |\vpageref|
% to the label would result in a textual reference to the previous,
@@ -330,19 +330,19 @@
% space in front. Of course you are then responsible to always add it
% when necessary, but that does make the source more readable so it is
% a good thing. This also has the advantage that the star forms are
-% now unnecessary again and can be used in the way implemeented by
+% now unnecessary again and can be used in the way implemented by
% \pkg{hyperref} if both packages are used together.
%
% In fact it would be much nicer to make that the
% default but the package has been used by many people for so many
-% years that changing the default would break way to many older documents.
+% years that changing the default would break way too many older documents.
%
%
% \DescribeMacro\labelformat
% A reference via |\ref| produces by default the data associated with
% the corresponding |\label| command (typically a number); any
% additional formatting has to be provided by the user. With
-% |\labelformat| it is possible to declare scuch formatting for each
+% |\labelformat| it is possible to declare such formatting for each
% ``reference'' counter, e.g.,
%\begin{verbatim}
% \labelformat{section}{section~#1}
@@ -454,7 +454,7 @@
%\DescribeMacro\reftextvario To allow a bit random variation in the
% generated strings one can use the command |\reftextvario| inside the
% string macros. It takes two arguments and selects one or the other
-% for printing depending on the number of already seens |\vref| or
+% for printing depending on the number of already seen |\vref| or
% |\vpageref| commands. As an example see the definitions of
% |\reftextbefore| etc.\ \vpageref[below]{reftextbefore}.
%
@@ -485,7 +485,7 @@
% \DescribeMacro\fullrefformat
% In some languages (currently only for Japanese) the generated text
% has to typeset in different word order to most other (Western) languages.
-% To accomodate for this \cs{vrefformat}, etc.\ has been
+% To accommodate for this \cs{vrefformat}, etc.\ has been
% added to allow to alter this on a per language basis.
% There should be normally no need to alter the setup. For details see
% the code section.
@@ -572,7 +572,7 @@
% know for sure that label and reference can't fall onto nearby pages.
%
%
-% \StopEventually{\PrintIndex\PrintChanges}
+% \MaybeStop{\PrintIndex\PrintChanges}
%
%
% \section{The documentation driver file}
@@ -701,7 +701,7 @@
% \label{reftextbefore} The options do set the macros that
% generate the textual strings. Note, that they do not start with a
% space, the space is already added in the main macro below.
-% \changes{v1.2a}{1998/08/22}{Added american defaults for
+% \changes{v1.2a}{1998/08/22}{Added American defaults for
% \cs{reftextpagerange} and \cs{reftextlabelrange}}
% \changes{v1.4d}{2002/11/11}{Changed default for \cs{reftextbefore}}
%
@@ -1335,7 +1335,7 @@
% \end{macrocode}
% Defaults for Japanese. It needs a special \cs{vrefformat},
% \cs{Vrefformat}, \cs{fullrefformat} and \cs{vrefrangeformat}
-% for gramatical reasons. As our standard documentation
+% for grammatical reasons. As our standard documentation
% workflow uses pdf\TeX{} the Japanese letters can't be displayed
% easily, so you will see missing glyphs below. To see the real
% letters you have to look at the source or package file.
@@ -1354,7 +1354,7 @@
\def\reftextpagerange#1#2{\pageref{#1}ã‹ã‚‰\pageref{#2}ページ}%
\def\reftextlabelrange#1#2{\ref{#1}ã‹ã‚‰\ref{#2}}%
% \end{macrocode}
-% Note that the parentheses beow are not normal ones but full width
+% Note that the parentheses below are not normal ones but full width
% ones U+FF08 and U+FF09!
% \begin{macrocode}
\def\vrefformat#1#2{\ref{#2}(\vpageref[#1]{#2})}%
@@ -1376,7 +1376,7 @@
%
% The option assumes that there is a command |\aza| defined which
% helps resolving this problem.\footnote{This information is actually quite
-% old but unfortunately never made it into varioref. In case any work
+% old but unfortunately never made it into \pkg{varioref}. In case any work
% has been undertaken to resolve this please inform the author about it.}
% \changes{v1.2a}{1998/08/22}{Added defaults for magyar}
% \changes{v1.4j}{2005/01/22}{Defined \cs{reftextfaceafter} and
@@ -1505,7 +1505,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% The portuguese default text has been provided by
+% The Portuges default text has been provided by
% Jos\'e Carlos Oliveira Santos \verb=jcsantos@fc.up.pt=.
% \changes{v1.2b}{1999/11/25}{Added portuguese defaults}
% \changes{v1.2c}{1999/12/02}{Added more portuguese defaults}
@@ -1552,7 +1552,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% The text for russian was taken from the book in Russian by
+% The text for Russian was taken from the book in Russian by
% I.~A.~Kotelnikov and P.~Z.~Chebotaev, and adapted
% to the encoding-independent form by Vladimir Volovich
% (\verb=vvv@vsu.ru=).
@@ -1589,7 +1589,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% The text for slovak defaults was contributed by Miroslav Sedivy\\
+% The text for Slovak defaults was contributed by Miroslav Sedivy\\
% (\verb=<miro@slovensko.com>=).
% \changes{v1.4b}{2002/03/11}{Contributed defaults added}
% \begin{macrocode}
@@ -1613,7 +1613,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% The text for slovene defaults was contributed by Roman Maurer\\
+% The text for Slovene defaults was contributed by Roman Maurer\\
% (\verb=<roman.maurer@amis.net>=).
% \changes{v1.4a}{2002/03/05}{Contributed defaults added}
% \begin{macrocode}
@@ -1633,7 +1633,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% Text for spanish defaults was contributed by Julio Sanchez
+% Text for Spanish defaults was contributed by Julio Sanchez
% (\verb=jsanchez@gmv.es=) and Fernando Dobladez (\verb=<ferd@fuego.com>=).
% \changes{v1.0f}{1994/03/16}{Inserted missing hash mark}
% \changes{v1.0k}{1994/06/05}{Corrected misspelled cmd `extrasspanish}
@@ -1657,7 +1657,7 @@
\let\vrefrangeformat\vrefrangedefaultformat
}}
% \end{macrocode}
-% The text for swedish was contributed by Mats Dahlgren
+% The text for Swedish was contributed by Mats Dahlgren
% (\verb=matsd@sssk.se=).
% \changes{v1.0p}{1995/01/10}{Added swedish strings}
% \changes{v1.2a}{1998/08/22}{Added swedish defaults for
@@ -1729,7 +1729,7 @@
}}
% \end{macrocode}
% We support francais as an alternative to french since people
-% might be used to it, but we discurrage it.
+% might be used to it, but we discourage it.
% \begin{macrocode}
\DeclareOption{francais}{%
\typeout{Please use `french' instead of `francais'}%
@@ -1757,7 +1757,7 @@
%
%
% Whether or not \pkg{varioref} uses its own white space and
-% removes the one in the source document is handeled by the
+% removes the one in the source document is handled by the
% following two options. For historical reasons the default is to
% handle the space, but the recommendation these days is to use
% \texttt{nospace}.
@@ -1814,7 +1814,7 @@
% space either. Thus in this case the star form doesn't
% have any effect and below |\vp@gerefstar| is let to
% |\vp@geref|. This allows a package like \pkg{hyperef} to redefine
-% it and useit for its own tasks (like denoting that no link should
+% it and use it for its own tasks (like denoting that no link should
% be produced).
% \begin{macrocode}
\DeclareRobustCommand\vpageref{\@ifstar
@@ -1859,7 +1859,7 @@
% By default the second optional argument is empty.
% \changes{v1.0h}{1994/06/11}{Pass first argument in both cases}
% \changes{v1.0i}{1994/06/20}{Do it correctly}
-% \changes{v1.6a}{2019/08/25}{Default for optional argumet changed}
+% \changes{v1.6a}{2019/08/25}{Default for optional argument changed}
% \begin{macrocode}
{\@@vpageref{#1}}{\@@vpageref{#1}[]}}
% \end{macrocode}
@@ -2169,7 +2169,7 @@
% \pkg{varioref} by testing
%\begin{verbatim}
% \ifdefined\vp@gerefstar
-% ... code fore noew varioref
+% ... code for new varioref
% \else
% ... code for old varioref
% \fi
@@ -2638,7 +2638,7 @@
% \begin{macro}{\vpagerefcomparenearby}
% \changes{v1.6a}{2019/08/25}{Macro added}
-% True if the two pages have arabic page numbers are at most off by
+% True if the two pages have Arabic page numbers are at most off by
% one so that |\vpageref| would produce a special string.
%
% This is in some sense a general version of |\vpagerefnearby| for
diff --git a/macros/latex-dev/required/tools/varioref.ins b/macros/latex-dev/required/tools/varioref.ins
index 559f1f2854..cef11f9c2f 100644
--- a/macros/latex-dev/required/tools/varioref.ins
+++ b/macros/latex-dev/required/tools/varioref.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 1993-2021
+%% Copyright (C) 1993-2022
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -45,7 +45,7 @@ The source is maintained by the LaTeX Project team and bug
reports for it can be opened at https://latex-project.org/bugs/
(but please observe conditions on bug reports sent to that address!)
-Copyright (C) 1993-2021
+Copyright (C) 1993-2022
The LaTeX Project and any individual authors listed elsewhere
in this file.
diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf
index e7a5ab79dd..5c88d95039 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.dtx b/macros/latex-dev/required/tools/verbatim.dtx
index fcbaf28172..c7cb2f02a9 100644
--- a/macros/latex-dev/required/tools/verbatim.dtx
+++ b/macros/latex-dev/required/tools/verbatim.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -242,7 +242,7 @@
% This command has also a |*|-variant that prints spaces as \verb*+ +.
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
%
% \section{Interfaces for package writers}
diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf
index 2051c8d26d..8b550393ee 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.dtx b/macros/latex-dev/required/tools/xr.dtx
index c0d0b90c0f..33e096c6cd 100644
--- a/macros/latex-dev/required/tools/xr.dtx
+++ b/macros/latex-dev/required/tools/xr.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -89,7 +89,7 @@
% For compatibility with |xcite|, |\externalcitedocument| is made available
% as an alias for |\externaldocument|
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The macros}
%
diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf
index 2720000e9e..0663e1f55e 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.dtx b/macros/latex-dev/required/tools/xspace.dtx
index adcfe154da..7b29b7b0be 100644
--- a/macros/latex-dev/required/tools/xspace.dtx
+++ b/macros/latex-dev/required/tools/xspace.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-% Copyright (C) 1993-2021
+% Copyright (C) 1993-2022
%
% The LaTeX Project and any individual authors listed elsewhere
% in this file.
@@ -199,7 +199,7 @@
% \end{verbatim}
%
%
-% \StopEventually{}
+% \MaybeStop{}
%
% \section{The Macros}
%
diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf
index 54f014f49a..dcb1e021a8 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/dbshow/README.md b/macros/latex/contrib/dbshow/README.md
index f91034d6cb..940f8ce35b 100644
--- a/macros/latex/contrib/dbshow/README.md
+++ b/macros/latex/contrib/dbshow/README.md
@@ -1,32 +1,71 @@
+Package dbshow
+==============
-# Package dbshow
-
-## Overview
+Introduction
+------------
The package provides four core functions:
-1. data storage and display
+1. data storage
2. data filtering
3. data sorting
4. data display
-All data is saved once and then you can display these data with custom filters, orders and styles. The package can be used, for example, to record and display something you'd like to review, maybe the question you always answered incorrectly or some forgettable knowledge. But obviously, the package is much more powerful and extensible for more interesting tasks depending on the individual.
+All data is saved once and then you can display these data with custom filters,
+orders and styles. The package can be used, for example, to record and
+display something you'd like to review, maybe the question you always answered
+incorrectly or some forgettable knowledge. But obviously, the package is much
+more powerful and extensible for more interesting tasks depending on the
+individual.
+
+Install
+-------
+
+If you are using TeX Live, install `dbshow` by `tlmgr` package manager
+
+ tlmgr update --self --all
+ tlmgr install dbshow
+
+You can also download the zip file from
+[CTAN](https://ctan.org/pkg/dbshow) or
+[GitHub](https://github.com/ZhiyuanLck/dbshow/releases/latest).
+
+The zip file should contain the file `dbshow.dtx`, and you can extract
+`dbshow.sty` from it by
+
+ tex dbshow.dtx
+
+Compile Document
+----------------
+
+Use following commands to compile the document:
+
+ git clone https://github.com/ZhiyuanLck/dbshow.git
+ cd dbshow
+ latexmk dbshow.dtx
-## LICENSE
+Copyright and License
+---------------------
- dbshow.sty
- Copyright 2022 Li Changkai <lichangkai225@qq.com>
+ Copyright (C) 2022- by Changkai Li <lichangkai225@qq.com>
+ --------------------------------------------------------------------------
-This work may be distributed and/or modified under the
-conditions of the LaTeX Project Public License, either version 1.3
-of this license or (at your option) any later version.
-The latest version of this license is in
- http://www.latex-project.org/lppl.txt
-and version 1.3 or later is part of all distributions of LaTeX
-version 2005/12/01 or later.
+ This work 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. This version of this license is in
+ http://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2005/12/01 or later.
-This work has the LPPL maintenance status 'maintained'.
+ This work has the LPPL maintenance status "maintained".
-The Current Maintainer of this work is Li Changkai.
+ The Current Maintainer of this work is Changkai Li.
-This work consists of the files dbshow.sty, dbshow-doc.tex.
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md (this file).
diff --git a/macros/latex/contrib/dbshow/dbshow-doc.pdf b/macros/latex/contrib/dbshow/dbshow-doc.pdf
deleted file mode 100644
index c6d4b714d4..0000000000
--- a/macros/latex/contrib/dbshow/dbshow-doc.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/dbshow/dbshow-doc.tex b/macros/latex/contrib/dbshow/dbshow-doc.tex
deleted file mode 100644
index ebfe69c535..0000000000
--- a/macros/latex/contrib/dbshow/dbshow-doc.tex
+++ /dev/null
@@ -1,1662 +0,0 @@
-\documentclass[full]{l3doc}
-\usepackage[scheme=plain, fontset=ubuntu]{ctex}
-\usepackage{multicol}
-\usepackage{adjustbox}
-\usepackage{zhlineskip}
-\usepackage{enumitem}
-\usepackage{indentfirst}
-\usepackage{titling}
-\usepackage{geometry}
-\usepackage{tabularray}
-\usepackage{xcolor}
-\usepackage{tcolorbox}
-\tcbuselibrary{listings, skins, raster, breakable}
-\usepackage{tabularray}
-
-\def\zhdate{2022年1月10日}
-\def\endate{2022/01/10}
-\def\version{v1.3}
-
-\geometry{
- left=4.5cm,
- right=2cm,
- top=2cm,
- bottom=2cm,
-}
-\hypersetup {
- CJKbookmarks,
- bookmarksopen,
- bookmarksopenlevel=3,
- pdfstartview=FitH,
- pdfinfo = {
- Title = The package 'dbshow' ,
- Subject = A LaTeX package ,
- Author = Li Changkai
- }
-}
-
-\IndexPrologue {
- \part*{Index}
- \markboth{Index}{Index}
- \addcontentsline{toc}{part}{Index}
- The~italic~numbers~denote~the~pages~where~the~
- corresponding~entry~is~described,~
- numbers~underlined~point~to~the~definition,~
- all~others~indicate~the~places~where~it~is~used.
-}
-
-\GlossaryPrologue {
- \part*{Change~History}
- {\GlossaryParms\ttfamily\hyphenchar\font=`\-}
- \markboth{Change~History}{Change~History}
- \addcontentsline{toc}{part}{Change~History}
-}
-
-\let\subsubitem\subitem
-
-\DoNotIndex{\begin, \end}
-\setlength{\parskip}{\medskipamount}
-
-\newcommand\tikzmark[1]{\tikz \coordinate[overlay, remember picture] (#1);}
-\def\levelchar{?}
-\def\orbar{\textup{\textbar}}
-\def\defaultval#1{\textbf{\textup{#1}}}
-\def\TF{true\orbar false}
-\def\TTF{\defaultval{true}\orbar false}
-\def\TFF{true\orbar\defaultval{false}}
-\def\zhbefore{\textbf{å‰}}
-\def\zhafter{\textbf{åŽ}}
-\def\enbefore{\textbf{before}~}
-\def\enafter{\textbf{after}~}
-\DeclareDocumentEnvironment { note } { +b } {
- \par\textbf{\textsf{NOTE:~}}#1\par
-} {}
-
-\AtEndDocument{
- \newgeometry{
- left=2cm,
- right=2cm,
- top=2cm,
- bottom=2cm
- }
- \PrintChanges
- \PrintIndex
-}
-
-\ExplSyntaxOn
-\makeatletter
-\cs_new_protected:Nn \dbshow_changes:nnnn {
- \@bsphack\group_begin:\@sanitize
- \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
- \exp_args:Nx \glossary {
- \exp_not:N \textbf{#1}\levelchar
- \exp_not:N \textit{#2}\c_space_tl
- \exp_not:N \textbf{#3}\c_colon_str\c_space_tl
- \exp_not:n { #4 }
- }
- \group_end:\@esphack
-}
-\cs_generate_variant:Nn \dbshow_changes:nnnn { xnnn }
-
-\cs_new_protected:Nn \dbshow_changes_what:nnnn {
- \regex_extract_once:nnNT { doc|macro|bug|option }
- { #3 } \l_tmpa_seq {
- \dbshow_changes:xnnn {
- \str_case_e:nn { \seq_item:Nn \l_tmpa_seq { 1 } } {
- { doc } { Documentation }
- { macro } { Macro }
- { bug } { Bug }
- { option } { Option }
- { logic } { Logic }
- }
- }
- {#2} {#3} {#4}
- }
-}
-
-\cs_new_protected:Nn \dbshow_changes_how:nnnn {
- \regex_extract_once:nnNT { Add|Update|Remove } { #3 } \l_tmpa_seq {
- \dbshow_changes:xnnn { \seq_item:Nn \l_tmpa_seq { 1 } }
- {#2} {#3} {#4}
- }
-}
-
-% #1 version #2 date #3 type #4 desc
-\DeclareDocumentCommand \changes { m m m m } {
- \dbshow_changes:nnnn {#1} {#2} {#3} {#4}
- \dbshow_changes_what:nnnn {#1} {#2} {#3} {#4}
- \dbshow_changes_how:nnnn {#1} {#2} {#3} {#4}
-}
-\makeatother
-
-\DeclareDocumentEnvironment { Description } { o +b } {
- \hbox_set:Nn \l_tmpa_box { #1 }
- \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box }
- \begin{itemize}[labelwidth=\l_tmpa_dim, align=left]
- #2
- \end{itemize}
-} { }
-
-\cs_new_protected:Nn \dbshowdoc_function_begin:N {
- \cs_set_eq:NN \__codedoc_tmp_cs:nN \__codedoc_typeset_function_block:nN
- \cs_set_protected:Npn \__codedoc_typeset_function_block:nN ##1##2 {
- \__codedoc_function_label:xN {##1} ##2
- \hbox_set:Nn \l_tmpa_box {##1}
- \int_compare:nTF { \str_count:n {##1} <= 22 }
- {##1} { \adjustbox{width=.7\marginparwidth, height=\box_ht:N \l_tmpa_box}{##1} }
- #1{##1}
- \__codedoc_typeset_expandability: \\
- }
-}
-\cs_new_protected:Nn \dbshowdoc_function_end: {
- \cs_set_eq:NN \__codedoc_typeset_function_block:nN \__codedoc_tmp_cs:nN
-}
-\DeclareDocumentEnvironment { option } { O{} +v }
- {
- \dbshowdoc_function_begin:N \SpecialOptionIndex
- \__codedoc_function:nnw {#1} {#2}
- }
- {
- \__codedoc_function_end:
- \dbshowdoc_function_end:
- }
-\DeclareDocumentEnvironment { environment } { O{} +v }
- {
- \dbshowdoc_function_begin:N \SpecialEnvIndex
- \__codedoc_function:nnw {#1} {#2}
- }
- {
- \__codedoc_function_end:
- \dbshowdoc_function_end:
- }
-
-\DeclareDocumentCommand \opt { O{} m }
- { \__codedoc_cmd:no {#1} { #2 } }
-
-\NewDocumentCommand \linktarget { m m m } {%
- \hyperlink{#1}{#3}%
- \raisebox{1em}{\hypertarget{#2}{}}%
-}
-\ExplSyntaxOff
-
-
-\begin{document}
-\title{
- \pkg{dbshow} å®åŒ… \version%
- \protect\footnote{%
- 代ç ä»“库:\url{https://github.com/ZhiyuanLck/dbshow},
- QQ群:788706534}
- \rlap{\makebox[4cm][r]{
- \normalsize $\Longrightarrow$ \color{red}
- \linktarget{en}{zh}{English Version}
- }}
-}
-\author{\textit{æŽæ˜Œé”´} \texttt{<lichangkai225@qq.com>}}
-\date{\zhdate}
-\maketitle
-
-\tableofcontents
-
-\begin{documentation}
-
-\section{引言}
-编写本å®åŒ…的动机æ¥æºäºŽå½“å‰æ²¡æœ‰ä¸€ä¸ªå¾ˆå¥½çš„错题本å®åŒ…,å¯ä»¥æ–¹ä¾¿çš„æ ¹æ®å„ç§æ¡ä»¶å¯¹é”™
-题进行筛选ã€æŽ’åºï¼Œç„¶åŽä»¥è‡ªå®šä¹‰çš„æ ·å¼å±•ç¤ºå‡ºæ¥ã€‚\pkg{dbshow} å®åŒ…实现了四个核心
-功能:数æ®å­˜å‚¨å’Œä½¿ç”¨ã€æ•°æ®ç­›é€‰ã€æ•°æ®æŽ’åºã€æ•°æ®å±•ç¤ºã€‚
-
-æ•°æ®åªéœ€è¦å­˜å‚¨ä¸€æ¬¡ï¼Œå°±å¯ä»¥é€šè¿‡é¢„定义的筛选ã€æŽ’åºæ¡ä»¶å’Œæ ·å¼å±•ç¤ºéƒ¨åˆ†æˆ–全部的数æ®ã€‚
-如上所述,本å®åŒ…其实实现了一个éžå¸¸ç®€å•çš„æ•°æ®åº“,å¤ä¹ é”™é¢˜çš„功能åªæ˜¯å…¶ä¸­ä¸€ä¸ªåº”用,
-和其他数æ®åº“å®åŒ…比如 \pkg{datatool} 相比,\pkg{dbshow} 更专注于éžå›¾è¡¨ç±»åž‹çš„æ•°
-æ®å±•ç¤ºã€‚
-
-\changes{1.2}{2022-01-09}{Add doc}{descripton for expansion}
-\begin{itemize}
- \item åå­—åŽå¸¦æœ‰ $\star$ 的命令是å¯ä»¥å®Œå…¨å±•å¼€çš„(fully-expandable);
- \item åå­—åŽå¸¦æœ‰ \ding{73} 的命令å¯ä»¥æœ‰é™åˆ¶åœ°å±•å¼€ï¼ˆrestricted-expandable);
- \item åå­—åŽä¸å¸¦æœ‰ç‰¹æ®Šå­—符的命令是ä¸å¯å±•å¼€çš„(non-expandable);
- \item åå­—åŽå¸¦æœ‰ $\star$ 的选项ä¸å½±å“相关的代ç çš„是å¦å¯å±•å¼€ï¼›
- \item åå­—åŽå¸¦æœ‰ \ding{73} 的选项是å¦å½±å“相关代ç çš„å¯å±•å¼€æ€§å–决于选项的设置;
- \item åå­—åŽä¸å¸¦æœ‰ç‰¹æ®Šå­—符的选项会使与之相关的代ç å˜å¾—ä¸å¯å±•å¼€ã€‚
-\end{itemize}
-
-\subsection{æ•°æ®ç±»åž‹}
-
-å®åŒ…基于 \pkg{expl3} 的基础类型构建了6ç§ç±»åž‹ï¼š
-\begin{Description}[\texttt{clist}]
- \item[\texttt{date}]
- 日期类型,以 |yyyy/mm/dd| å½¢å¼å­˜å‚¨ï¼Œæ”¯æŒå¤§å°æ¯”较,排åºï¼ˆè½¬
- æ¢æˆå­—符串)。默认值为 \cs{dbtoday}。
- \item[\texttt{str}]
- 字符串类型,支æŒæ­£åˆ™åŒ¹é…,英文排åºã€‚默认值为空。
- \item[\texttt{tl}]
- \meta{token list}类型,支æŒæ­£åˆ™åŒ¹é…。默认值为空。
- \item[\texttt{int}]
- 整数类型,支æŒå¤§å°æ¯”较,排åºã€‚默认值为0。
- \item[\texttt{fp}]
- 浮点数类型,支æŒå¤§å°æ¯”较,排åºã€‚默认值为0。
- \item[\texttt{clist}]
- 逗å·åˆ†éš”的列表类型。默认值为空列表。
-\end{Description}
-
-\changes{1.3}{2022-01-08}{Remove dependency}{\pkg{datatime2}}
-除了日期类型,所有类型都是 \pkg{expl3} 的内置类型。\pkg{dbshow} 构建了一个简å•
-çš„ |date| 类型,支æŒè½¬æ¢æˆæ•´æ•°ä»¥åŠå¸¦æ ·å¼çš„打å°ã€‚
-
-\subsection{与 \pkg{datatool} 的区别}
-
-\changes{1.2}{2022-01-07}{Add doc}{add comparison to \pkg{datatool}}
-
-从核心功能上看,\pkg{dbshow} å’Œ \pkg{datatool} 实现了相åŒçš„功能。区别在于
-\pkg{dbshow} 基于 \pkg{expl3} 实现,支æŒå­—符串的正则匹é…,还支æŒå¤šçº§æŽ’åºã€‚使用
-æ–¹å¼ä¸Šæ›´å€¾å‘于样å¼ä¸Žå†…容分离,所有的样å¼éƒ½å¯ä»¥é€šè¿‡é€‰é¡¹æå‰å®šä¹‰å¥½å¹¶ä¸”å¯ä»¥å¤ç”¨ã€‚
-\pkg{dbshow} 并没有实现从外部文件读å–æ•°æ®ä»¥åŠå°†æ•°æ®æŒä¹…化的功能,我认为这些应
-该是更专业的外部程åºçš„工作而ä¸åº”该在 \LaTeX 中设计这些功能。因此,\pkg{dbshow}
-åªæ供了一个è¿è¡Œæ—¶çš„临时数æ®åº“,足够轻便且满足大部分正常需求。如果你想删除或修
-改数æ®åº“中æŸä¸€æ¡è®°å½•ï¼Œè¯·åŽ»å¯¹åº”çš„ä½ç½®åˆ é™¤æˆ–修改掉对应的 \env{dbitem} 环境,而ä¸
-是让å®åŒ…æ供一个输出æŸä¸€è¡Œè®°å½•çš„命令。æŸç§æ„义上记录数æ®åº“çš„ \TeX æºæ–‡ä»¶æœ¬èº«å°±
-是数æ®çš„一ç§æŒä¹…化。
-
-\section{接å£æ–‡æ¡£}
-
-\subsection{创建ã€å±•ç¤ºå’Œæ¸…空数æ®åº“}
-\begin{function}[added=2022-01-05]{\dbNewDatabase, \dbNewDatabase*}
- \begin{syntax}
- \cs{dbNewDatabase} \oarg{base database} \marg{database} \{ \\
- ~~\meta{attr1} = \meta{type spec1}, \\
- ~~\meta{attr2} = \meta{type spec2}, \\
- ~~\ldots{} \\
- \} \\
- \cs{dbNewDatabase}* \marg{database} \{ \\
- ~~\meta{attr1} = \meta{type spec1}, \\
- ~~\meta{attr2} = \meta{type spec2}, \\
- ~~\ldots{} \\
- \} \\
- \end{syntax}
-
-\end{function}
-
- 新建一个数æ®åº“,ä¸å¸¦æ˜Ÿå·çš„版本å¯ä»¥æŒ‡å®šä¸€ä¸ªæ•°æ®åº“æ¥ç»§æ‰¿å…¶å±žæ€§è®¾ç½®ï¼Œè¯¥ç‰ˆæœ¬æ€»æ˜¯
- 会èˆå¼ƒæŽ‰ä¹‹å‰çš„定义。
-
- 带星å·çš„版本ä¸ä¼šèˆå¼ƒä¹‹å‰å·²æœ‰çš„定义,而是将新的选项添加到åŽé¢ã€‚
-
- \meta{attr} 为属性å称,\meta{type spec} 负责声明属性类型和属性默认值:
-
- \noindent\begin{tblr}{
- colspec = {ll},
- column{1} = {font = \ttfamily}
- }
- \meta{attr} = \meta{type} &
- 将 \meta{attr} 声明为 \meta{type} 类型 \\
- \meta{attr} = \meta{type}\orbar\meta{default} &
- 将 \meta{attr} 声明为 \meta{type} 类型,并且将默认值设置为 \meta{default}。
- \\
- \end{tblr}
-
- \begin{note}
- æ¯ä¸ªæ•°æ®åº“都有一个默认的属性 |id| 用æ¥å­˜å‚¨æ•°æ®çš„索引。
- \end{note}
-
- 下é¢æ˜¯å®šä¹‰ä¸€ä¸ªé”™é¢˜æ•°æ®åº“的示例,|question| å’Œ |answer| 属性用æ¥å­˜å‚¨é—®é¢˜å’Œç­”
- 案,|date| 属性存储日期,|info| 属性存储é¢å¤–ä¿¡æ¯ï¼Œ|labels| 存储题目标签。
-\begin{verbatim}
- \dbNewDatabase{ques}{
- question = tl,
- answer = tl,
- date = date,
- info = tl,
- labels = clist
- }
-\end{verbatim}
-
-\begin{function}[added=2022-01-05]{\dbshow}
- \begin{syntax}
- \cs{dbshow} \marg{style} \marg{database}
- \end{syntax}
-
- 使用 \meta{style} æ ·å¼æ¥å±•ç¤º \meta{database}。
-\end{function}
-
-\changes{1.2}{2022-01-07}{Add macro}{\cs{dbclear}}
-\begin{function}[added=2022-01-07]{\dbclear}
- \begin{syntax}
- \cs{dbclear} \marg{database}
- \end{syntax}
- 清空 \meta{database} 里的所有内容。
-\end{function}
-
-\subsection{\cs{dbNewStyle} 和样å¼é€‰é¡¹}
-
-\begin{function}[added=2022-01-05]{\dbNewStyle}
- \begin{syntax}
- \cs{dbNewStyle} \oarg{base styles} \marg{style} \marg{database} \marg{opts}
- \end{syntax}
-
- 为 \meta{database} å®šä¹‰ä¸€ä¸ªæ–°çš„æ ·å¼ \meta{style},该样å¼å¯ä»¥åŸºäºŽå·²æœ‰çš„æ ·å¼
- \meta{base styles},比如 |\dbNewStyle[base1, base2]{new-style}{ques}{}|。
-\end{function}
-
-\subsubsection{通用选项}
-
-\begin{option}[added=2022-01-05]{filter}
- \begin{syntax}
- filter = <filter>
- \end{syntax}
-
- 为当å‰æ ·å¼è®¾ç½®ç”± \cs{dbCombineFilters} 所定义的过滤器
-\end{option}
-
-\begin{option}[added=2022-01-06]{raw-filter}
- \begin{syntax}
- raw-filter = <conditional expression>
- \end{syntax}
-
- 使用æ¡ä»¶è¡¨è¾¾å¼è®¾ç½®åŒ¿å过滤器,这里的æ¡ä»¶æŒ‡é€šè¿‡ \cs{dbNewConditional} 定义的
- æ¡ä»¶ã€‚下é¢ä»£ç ä¸­ä¸¤ä¸ªç¤ºä¾‹çš„过滤器具有相åŒçš„功能。
-\end{option}
-
-\changes{1.1}{2022-01-06}{Add option}{\opt{raw-filter}}
-
-\begin{verbatim}
- % method 1
- \begin{dbFilters}{db}
- \dbNewConditional{cond1}{int-attr}{\rval > 1}
- \dbNewConditional*{cond2}{str-attr}{\d+}
- \end{dbFilters}
- \dbNewStyle{style}{db}{raw-filter={cond1 && cond2}}
- % method 2
- \begin{dbFilters}{db}
- \dbNewConditional{cond1}{int-attr}{\rval > 1}
- \dbNewConditional*{cond2}{str-attr}{\d+}
- \dbCombineFilters{filter}{cond1 && cond2}
- \end{dbFilters}
- \dbNewStyle{style}{db}{filter=filter}
-\end{verbatim}
-
-\changes{1.2}{2022-01-08}{Fix bug}{string sorting bug}
-\begin{option}[added=2022-01-05]{sort}
- \begin{syntax}
- sort = \{ <attr spec1>, <attr spec2>, \ldots{} \}
- \end{syntax}
-
- 为当å‰æ ·å¼è®¾ç½®æŽ’åºè§„则。支æŒæ ¹æ® |str|,|date|,|int|,|fp| 类型的数æ®è¿›è¡ŒæŽ’
- åºï¼Œæ”¯æŒå¤šçº§æŽ’åºã€‚\meta{attr} 表示增åºï¼Œ\meta{attr}* 表示é™åºã€‚下é¢ä¾‹å­ä¸­ï¼Œ
- 使用 |sort-style| 展示数æ®æ—¶çš„顺åºä¸ºå…ˆæŒ‰ |level| é™åºï¼Œ|level| 相åŒçš„å†æŒ‰å‡º
- 生日期 |birth| 增åºï¼Œä»¥æ­¤ç±»æŽ¨ã€‚
-\end{option}
-
-\begin{verbatim}
- \dbNewDatabase{sort-example}{
- name = str,
- birth = date,
- level = int,
- weight = fp,
- }
- \dbNewStyle{sort-style}{sort-example}{
- sort = { level*, birth, name, weight }
- }
-\end{verbatim}
-
-\begin{option}[added=2022-01-05, rEXP]{item-code}
- \begin{syntax}
- item-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中æ¯æ¡è®°å½•çš„代ç ã€‚ä½ å¯ä»¥ä½¿ç”¨ \cs{dbuse} æ¥å±•ç¤ºå±žæ€§çš„
- 值。
-\end{option}
-
-\changes{1.3}{2022-01-09}{Update option}{\opt{<attr>/sep}}
-\begin{option}[added=2022-01-05, updated=2022-01-08, rEXP]{<attr>/sep}
- \begin{syntax}
- <attr>/sep = <separator> \\
- <attr>/sep = \{ \\
- ~~\meta{separator between two}, \\
- ~~\meta{separator between more than two}, \\
- ~~\meta{separator between final two} \\
- \} \\
- <attr>/sep = \{ \\
- ~~\meta{separator before year}, \\
- ~~\meta{separator between year and month}, \\
- ~~\meta{separator between month and day}, \\
- ~~\meta{separator after day} \\
- \} \\
- \end{syntax}
-
- 该选项åªé€‚用于类型为 |clist| 或 |date| 的属性,用æ¥è®¾ç½®åˆ—表间元素的间隔。å‚
- 数为一个 \meta{separator} 时,所有元素间的分隔符被设置为 \meta{separator}。
- \meta{separator before year} 和 \meta{separator after day} 被设置为空。
-\end{option}
-
- å‚数为3个元素的逗å·åˆ†éš”的列表时,此选项用æ¥è®¾ç½®åˆ—表元素的分隔符,分别用æ¥è®¾
- ç½®åªæœ‰ä¸¤ä¸ªå…ƒç´ æ—¶çš„分隔符 \meta{separator between two},超过两个元素时的分隔
- 符 \meta{separator between more than two},和最åŽä¸¤ä¸ªå…ƒç´ ä¹‹é—´çš„分隔符
- \meta{separator between final two}。对于类型为 |clist| 的属性,设置此选项时
- 如果å‚数列表数é‡ä¸æ˜¯1或者3会触å‘报错。
-
-\begin{verbatim}
- % clist-attr is an attribute of database db
- % suppose the val of clist-attr is { 1, 2, 3 }
- \dbNewStyle{clist-sep}{db}{
- clist-attr/sep = { ,~ }, % print 1, 2, 3
- clist-attr/sep = { {,~}, {,~}, {and~} } % print 1, 2 and 3
- }
-\end{verbatim}
-
- å‚数为4个元素的逗å·åˆ†éš”的列表时,此选项用æ¥è®¾ç½®æ—¥æœŸçš„分隔符,分别用æ¥è®¾
- ç½® \meta{year} 之å‰çš„分隔符 \meta{separator before year} ,\meta{year} å’Œ
- \meta{month} 之间的分隔符 \meta{separator between year and month} ,
- \meta{month} å’Œ \meta{day} ä¹‹é—´çš„åˆ†éš”ç¬¦ï¼Œä»¥åŠ \meta{day} 之åŽçš„分隔符。对于
- 类型为 |date| 的属性,设置此选项时如果å‚数列表数é‡ä¸æ˜¯1或者4会触å‘报错。
-
-\begin{verbatim}
- % date-attr is an attribute of database db
- % suppose the val of date-attr is 2022/01/01
- \dbNewStyle{date-sep}{db}{
- date-attr/sep = -, % print 2022-01-01
- date-attr/sep = { |, -, -, | } % print |2022-01-01|
- }
-\end{verbatim}
-
-\changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/zfill}}
-\begin{option}[added=2022-01-08, EXP]{<attr>/zfill}
- \begin{syntax}
- <attr>/zfill = <\TTF>
- \end{syntax}
-
- 该选项åªé€‚用于类型为 |date| 的属性。控制输出月份和天时是å¦è¡¥é›¶ã€‚
-\end{option}
-
-\subsubsection{装饰器}
-
-下é¢è¿™äº›é€‰é¡¹åœ¨ä¸åŒå±‚次上装饰原有的展示代ç ï¼Œæœ‰äº›å…¶å®žä¸å¿…通过选项的形å¼æ¥è£…饰,
-但这样åšçš„好处是å¯ä»¥è¿›ä¸€æ­¥ä½¿æ ·å¼ä¸Žå†…容分离。下é¢çš„例å­ä¸­ï¼Œ\meta{style1} å’Œ
-\meta{style2} 是相åŒçš„æ ·å¼ï¼Œéƒ½ç”¨ * å°† \meta{attr1} 包裹ä½äº†ï¼Œä½†æ˜¯å¦‚果你还想定
-义一个样å¼ç”¨ = å°† \meta{attr1} 包裹ä½ï¼Œå¦‚果用 \meta{style1} çš„æ–¹å¼ï¼Œé‚£å°±å¯èƒ½
-需è¦é‡å¤å¤§ç‰‡ä»£ç ï¼Œç”¨ \meta{style2} çš„æ–¹å¼åˆ™å¯ä»¥å¾ˆè½»æ¾çš„继承 \meta{style1} 中的
-代ç ã€‚
-
-\begin{verbatim}
- \dbNewStyle{style1}{db}{
- item-code = {%
- *\rvuse{attr1}*\rvuse{attr2}
- % more code
- }
- }
- \dbNewStyle{base-style}{db}{
- item-code = {%
- \rvuse{attr1}\rvuse{attr2}
- % more code
- }
- }
- \dbNewStyle[base-style]{style2}{db}{
- attr1/before-code = { * },
- attr1/after-code = { * },
- }
- \dbNewStyle[base-style]{style3}{db}{
- attr1/before-code = { = },
- attr1/after-code = { = },
- }
-\end{verbatim}
-
-\changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/wrapper}}
-\begin{option}[added=2022-01-08, rEXP]{<attr>/wrapper}
- \begin{syntax}
- <attr>/wrapper = <control sequence>
- \end{syntax}
-
- 该选项åªé€‚用于类型为 |date| 的属性。\meta{control sequence} åªæŽ¥æ”¶ä¸€ä¸ªå‚æ•°å³
- 日期,如果设置了此选项,则最åŽè¾“出的日期为
- \meta{control sequence}\marg{date}。
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{before-code}
- \begin{syntax}
- before-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºæ•´ä¸ªæ•°æ®åº“之\zhbefore 需è¦æ‰§è¡Œçš„代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{after-code}
- \begin{syntax}
- after-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºæ•´ä¸ªæ•°æ®åº“之\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
-\end{option}
-
-\changes{1.2}{2022-01-08}{Add options}{\opt{record-before-code},
-\opt{record-after-code}}
-\begin{option}[added=2022-01-05, rEXP]{record-before-code}
- \begin{syntax}
- record-before-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºå½“å‰è®°å½•ä¹‹\zhbefore 需è¦æ‰§è¡Œçš„代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{record-after-code}
- \begin{syntax}
- record-after-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºå½“å‰è®°å½•ä¹‹\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/before-code}
- \begin{syntax}
- <attr>/before-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中属性 \meta{attr} 对应数æ®ä¹‹\zhbefore 需è¦æ‰§è¡Œçš„代
- ç ã€‚\cs{dbuse} 会在展示属性数æ®\zhbefore 执行此代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/after-code}
- \begin{syntax}
- <attr>/after-code = <code>
- \end{syntax}
-
- 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中属性 \meta{attr} 对应数æ®ä¹‹\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
- \cs{dbuse} 会在展示属性数æ®\zhafter 执行此代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/item-before-code}
- \begin{syntax}
- <attr>/item-before-code = <code>
- \end{syntax}
-
- 该选项åªé€‚用于类型为 |clist| 的属性,用æ¥è®¾ç½®å±•ç¤ºåˆ—表æ¯ä¸ªå…ƒç´ \zhbefore 需è¦
- 执行的代ç ã€‚
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/item-after-code}
- \begin{syntax}
- <attr>/item-after-code = <code>
- \end{syntax}
-
- 该选项åªé€‚用于类型为 |clist| 的属性,用æ¥è®¾ç½®å±•ç¤ºåˆ—表æ¯ä¸ªå…ƒç´ \zhafter 需è¦æ‰§
- 行的代ç ã€‚
-\end{option}
-
-\subsection{使用 \cs{dbNewReviewPoints} 定义å¤ä¹ ç‚¹}
-
-\begin{function}[added=2022-01-05]{\dbNewReviewPoints}
- \begin{syntax}
- \cs{dbNewReviewPoints} \marg{name} \marg{points}
- \end{syntax}
-
- 定义å为 \meta{name} çš„å¤ä¹ ç‚¹ã€‚这是专门为错题本或å¤ä¹ æ‰€å®šåˆ¶çš„功能,
- \meta{points}是一系列整数,现在å‡è®¾æ¯é“错题你都将写错时的日期记录在了 |date|
- 属性中,并且你希望æ¯éš”2,5,15天å¤ä¹ ä¸€æ¬¡ã€‚下é¢çš„代ç ç»™å‡ºäº†ä¸€ä¸ªå®žçŽ°ç¤ºä¾‹ã€‚
-\end{function}
-
-\begin{verbatim}
- \dbNewReviewPoints{review-point}{2, 5, 15} % 定义å¤ä¹ ç‚¹
- \begin{dbFilters}
- \dbNewConditional{cond1}{date}{review-point|\Today} % 定义å¤ä¹ æ¡ä»¶
- \dbCombineConditionals{filter1}{cond1} % 定义过滤器
- \end{dbFilters}
- \dbNewStyle{review-style}{ques}{filter=filter1} % 定义展示样å¼
-\end{verbatim}
-
-\subsection{在 \env{dbFilters} 环境中定义过滤器}
-
-\begin{environment}[added=2022-01-05]{dbFilters}
- \begin{syntax}
- |\begin{dbFilters}|\marg{database} \\
- ~~\meta{code}
- |\end{dbFilters}| \\
- \end{syntax}
-
- \env{dbFilters}用æ¥å®šä¹‰è¿‡æ»¤å™¨ï¼Œæ­¤çŽ¯å¢ƒä¸­å®šä¹‰äº† \cs{dbNewConditional} 命令用æ¥
- 定义æ¡ä»¶å’Œ \cs{dbCombineConditionals} 命令用æ¥ç»„åˆæ¡ä»¶å®šä¹‰è¿‡æ»¤å™¨ã€‚过滤器独立
- 于æ¯ä¸ª \meta{database},这æ„味ç€ä½ å¯ä»¥åœ¨ä¸åŒæ•°æ®åº“中定义å称相åŒçš„过滤æ¡ä»¶å’Œ
- 过滤器。
-\end{environment}
-
-\begin{function}[added=2022-01-05, updated=2022-01-08]{\dbNewConditional, \dbNewConditional*}
- \begin{syntax}
- \cs{dbNewConditional} \marg{name} \marg{attr} \marg{cond spec} \\
- \cs{dbNewConditional}* \marg{name} \marg{attr} \marg{cond spec} \\[2pt]
- \cs{dbNewConditional} \marg{name} \marg{int/fp attr} \marg{expr} \\
- \cs{dbNewConditional}* \marg{name} \marg{int/fp attr} \marg{expr} \\
- \cs{dbNewConditional} \marg{name} \marg{str/tl attr} \marg{regex expr} \\
- \cs{dbNewConditional}* \marg{name} \marg{str/tl attr} \marg{regex expr} \\
- \cs{dbNewConditional} \marg{name} \marg{clist attr} \marg{val list} \\
- \cs{dbNewConditional}* \marg{name} \marg{clist attr} \marg{val list} \\
- \cs{dbNewConditional} \marg{name} \marg{date attr} \marg{expr}
- \cs{dbNewConditional}* \marg{name} \marg{date attr} \{\meta{review points}\orbar\meta{date}\} \\
- \end{syntax}
-
- \cs{dbNewConditional} 用æ¥å®šä¹‰å为 \meta{name} çš„æ¡ä»¶ï¼Œ\meta{attr} 指定æ¡ä»¶
- 所绑定的属性,在 \meta{cond spec} 中å¯ä»¥ç”¨ \cs{dbval} 指代属性的值。
-\end{function}
-
- \changes{1.3}{2022-01-10}{Update doc}{truncated division}
- 对于类型为 |int| 和 |fp| 的属性,\meta{expr} 传递给 \cs{int_compare:nTF} 或
- \cs{fp_compare:nTF} 处ç†ã€‚
- \begin{note}
- |/| 为四èˆäº”入除法,截断除法请用 \cs{dbIntDivTruncate}。
- \end{note}
-
- 对于类型为 |str| å’Œ |tl| 的属性,\meta{regex} 为正则表达å¼ï¼Œ
- \cs{dbNewConditional} 表示部分匹é…,\cs{dbNewConditional*} 表示整体匹é…。
-
-\begin{verbatim}
- \dbNewConditional {cond1}{str-attr}{abc} % åŒ¹é… abc, abcd, 1abc, =abc= ç­‰
- \dbNewConditional*{cond2}{str-attr}{abc} % åªåŒ¹é… abc
-\end{verbatim}
-
- 对于类型为 |clist| 的属性,使用 \cs{dbNewConditional} 定义的æ¡ä»¶åªè¦
- \meta{val list} 中的任æ„一个元素在属性值(列表)中则æ¡ä»¶æˆç«‹ï¼›ä½¿ç”¨
- \cs{dbNewConditional*} 定义的æ¡ä»¶åªæœ‰ \meta{val list} 中æ¯ä¸€ä¸ªå€¼éƒ½åœ¨å±žæ€§å€¼
- (列表)中æ¡ä»¶æ‰æˆç«‹ã€‚
-
-\begin{verbatim}
- \dbNewConditional {cond1}{clist-attr}{a, b, c} % a, b, d 满足æ¡ä»¶
- \dbNewConditional*{cond2}{clist-attr}{a, b, c} % a, b, d ä¸æ»¡è¶³æ¡ä»¶
-\end{verbatim}
-
- \changes{1.3}{2022-01-08}{Update logic}{swap definition of starred and
- unstarred conditionals of date}
- 对于类型为 |date| 的属性,\cs{dbNewConditional} 定义的æ¡ä»¶åŽç»­å¤„ç†ä¸­ä¼šå°†
- \meta{expr} 中的所有日期转æ¢æˆç›¸å¯¹\textit{1971å¹´1月1æ—¥}的一个整数值,然åŽå°†
- 处ç†åŽçš„表达å¼ä¼ é€’ç»™ \cs{int_compare:nTF} åšè¿›ä¸€æ­¥å¤„ç†ï¼›
- \cs{dbNewConditional*} 使用å¤ä¹ ç‚¹æ¥å®šä¹‰è¿‡æ»¤æ¡ä»¶ï¼Œ\meta{review points} 是
- \cs{dbNewReviewPoints} 定义的å¤ä¹ ç‚¹ï¼Œ\meta{date} 是用æ¥æ¯”较的日期。
-
-\begin{function}[added=2022-01-05]{\dbCombineConditionals}
- \begin{syntax}
- \cs{dbCombineConditionals} \marg{name} \marg{cond combination} \oarg{info}
- \end{syntax}
-
- \cs{dbCombineConditionals} 定义å为 \marg{name} 的过滤器,并将
- \cs{dbNewConditional} 定义的æ¡ä»¶ç»„åˆèµ·æ¥ï¼Œæ¯”如
- \verb=\dbCombineConditionals{filter}{(cond1 && cond2) || !cond3}=。
- \meta{cond combination} 中å¯ä»¥ä½¿ç”¨çš„关系æ“作符为 \verb=&&, ||, !=。
- å¯ä»¥å°† \opt{filter} 选项设置为 \meta{name} æ¥åº”用过滤器。\meta{info} 为过滤
- 器的相关信æ¯ï¼Œåœ¨å±•ç¤ºæ•°æ®åº“的时候å¯ä»¥ç”¨ \cs{dbFilterInfo} 指代。
-\end{function}
-
-\subsection{使用 \env{dbitem} 环境存储数æ®}
-
-\begin{environment}[added=2022-01-05]{dbitem}
- \begin{syntax}
- |\begin{dbitem}|\marg{database}[ \\
- ~~\meta{attr1} = \meta{val1}, \\
- ~~\meta{attr2} = \meta{val2}, \\
- ~~\ldots{} \\
- ] \\
- ~~\meta{code} \\
- |\end{dbitem}|
- \end{syntax}
-
- \env{dbitem} 环境用æ¥å­˜å‚¨æ•°æ®ã€‚有两ç§å­˜å‚¨æ•°æ®çš„方法,较短的数æ®å¯ä»¥åœ¨é€‰é¡¹åˆ—
- 表中通过键值对设置值,较长的数æ®å¯ä»¥åœ¨ \meta{code} 中使用 \cs{dbsave} 存储。
- \cs{dbsave}会覆盖选项中设置的值。没有设置的值将会被设置为全局默认值,下é¢ç»™
- 出一个存储示例。
-\end{environment}
-
-\begin{verbatim}
- \begin{dbitem}[date = 2022-01-01, info = 测试]
- \dbsave{question}{这是一个测试问题}
- \dbsave{answer} {这是一个测试答案}
- \end{dbitem}
-\end{verbatim}
-
-\subsection{\cs{dbsave} 和 \cs{dbuse}}
-
-\changes{1.3}{2022-01-08}{Add macro}{\cs{dbsave*}}
-\begin{function}[added=2022-01-05, updated=2022-01-08]{\dbsave, \dbsave*}
- \begin{syntax}
- \cs{dbsave} \marg{attr} \marg{data} \\
- \cs{dbsave}* \marg{attr} \marg{data}
- \end{syntax}
-
- \cs{dbsave} 用æ¥å­˜å‚¨æ•°æ®ï¼Œåªèƒ½åœ¨ \env{item} 环境中使用。使用 \cs{dbsave*} å­˜
- 储的数æ®ä¼šè¢« \cs{exp_not:n} 包裹。
-\end{function}
-
-\changes{1.2}{2022-01-08}{Update macro}{make \cs{dbuse} fully-expandable}
-\begin{function}[added=2022-01-05, updated=2022-01-08, EXP]{\dbuse}
- \begin{syntax}
- \cs{dbuse} \marg{attr}
- \end{syntax}
-
- \cs{dbuse} 用æ¥å±•ç¤ºæ•°æ®ï¼Œåªèƒ½åœ¨ \opt{item-code} 选项中使用。\cs{dbuse} 是å¯
- 展开的。
-\end{function}
-
-\subsection{æ¡ä»¶åˆ¤åˆ«å¼}
-
-\begin{function}[added=2022-01-05, EXP]{\dbIfEmptyT, \dbIfEmptyF, \dbIfEmptyTF}
- \begin{syntax}
- \cs{dbIfEmptyTF} \marg{true code} \marg{false code} \\
- \cs{dbIfEmptyT} \marg{true code} \\
- \cs{dbIfEmptyF} \marg{false code}
- \end{syntax}
-
- 该判别å¼ç”¨æ¥åˆ¤æ–­å½“å‰æ•°æ®åº“是å¦ä¸ºç©ºã€‚下é¢çš„示例展示了如何预防空的列表环境。
-\end{function}
-
-\begin{verbatim}
- \dbNewStyle{style-cond1}{database-test}{
- before-code = {\dbIfEmptyF{\begin{enumerate}}},
- after-code = {\dbIfEmptyF{\end{enumerate}}},
- item-code = {\item \dbuse{attr-test}}
- }
-\end{verbatim}
-
-\changes{1.2}{2022-01-08}{Remove macros}{\cs{dbItemIfEmpty(TF)}, \cs{dbClistItemIfEmpty(TF)}}
-
-\subsection{表达å¼å‡½æ•°}
-
-\changes{1.3}{2022-01-10}{Add macros}{expression function aliases}
-\begin{function}[added=2022-01-10, EXP]{
- \dbIntAbs, \dbIntSign, \dbIntDivRound, \dbIntDivTruncate, \dbIntMax,
- \dbIntMin, \dbIntMod, \dbFpSign,
-}
- \begin{syntax}
- \cs{dbIntAbs} \Arg{intexpr}
- \cs{dbIntSign} \Arg{intexpr}
- \cs{dbIntDivRound} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntDivTruncate} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMax} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMin} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMod} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbFpSign} \Arg{fpexpr}
- \end{syntax}
- \cs{dbIntAbs} ç­‰åŒäºŽ \cs{int_abs:n} \\
- \cs{dbIntSign} ç­‰åŒäºŽ \cs{int_sign:n} \\
- \cs{dbIntDivRound} ç­‰åŒäºŽ \cs{int_div_round:nn} \\
- \cs{dbIntDivTruncate} ç­‰åŒäºŽ \cs{int_div_truncate:nn} \\
- \cs{dbIntMax} ç­‰åŒäºŽ \cs{int_max:nn} \\
- \cs{dbIntMin} ç­‰åŒäºŽ \cs{int_min:nn} \\
- \cs{dbIntMod} ç­‰åŒäºŽ \cs{int_mod:nn} \\
- \cs{dbFpSign} ç­‰åŒäºŽ \cs{fp_sign:n} \\
- è¯¦ç»†çš„æ–‡æ¡£è§ \pkg{interface3} \\
-\end{function}
-
-\subsection{特殊命令}
-
-\pkg{dbshow} 定义了一些特殊的命令,会根æ®è¯­å¢ƒå±•å¼€ä¸ºä¸åŒçš„内容。
-
-\changes{1.1}{2022-01-05}{Add macro}{
- \cs{dbarabic}, \cs{dbalph}, \cs{dbAlph}, \cs{dbroman},
- \cs{dbRoman}
-}
-\changes{1.1}{2022-01-06}{Fix bug}{\cs{dbIndex} not defined}
-\begin{function}[added=2022-01-05, EXP]{
- \dbval, \dbDatabase, \dbFilterName, \dbFilterInfo,
- \dbIndex, \dbarabic, \dbalph, \dbAlph, \dbroman, \dbRoman
-}
-\begin{tblr}{ll}
- \cs{dbval} & 当å‰å±žæ€§çš„值 \\
- \cs{dbDatabase} & æ•°æ®åº“å称 \\
- \cs{dbFilterName} & 当å‰æ ·å¼è¿‡æ»¤å™¨çš„å称 \\
- \cs{dbFilterInfo} & 当å‰æ ·å¼è¿‡æ»¤å™¨çš„ç›¸å…³ä¿¡æ¯ \\
- \cs{dbIndex} & æ•°æ®ç´¢å¼•ï¼Œç­‰åŒäºŽ \cs{dbuse}|{id}| \\
- \cs{dbarabic} & 用数字表示的查询集数æ®è®¡æ•° \\
- \cs{dbalph} & 用å°å†™å­—æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
- \cs{dbAlph} & 用大写字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
- \cs{dbroman} & 用å°å†™ç½—马字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
- \cs{dbroman} & 用大写罗马字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
- \end{tblr}
-\end{function}
-
-\section{错题本示例}
-è§ç¬¬ \ref{sec:example} 节。
-
-\changes{1.1}{2022-01-07}{Update doc}{improve example}
-
-\title{
- Package \pkg{dbshow} \version%
- \protect\footnote{%
- Repository: \url{https://github.com/ZhiyuanLck/dbshow},
- Telegram Group: \url{https://t.me/latex_dbshow}}
- \rlap{\makebox[4cm][r]{
- \normalsize $\Longrightarrow$ \color{red}
- \linktarget{zh}{en}{中文版本}
- }}
-}
-\author{Li Changkai \texttt{<lichangkai225@qq.com>}}
-\date{\endate}
-\maketitle
-
-\section{Introduction}
-
-The initial motivation to write this package is that I want to write a
-template, which can collect questions you gave the wrong answer and can
-display those questions you would like to review by some conditionals, such as
-questions with certain label, questions you have answered uncorrectly for
-certain times or questions having not been reviewed for certain days. So this
-package provides a database to do such thing.
-
-The package provides four core functions: data storage and display, data
-filtering, data sorting and data display. All data is saved once and then you
-can display these data with custom filters, orders and styles.
-
-\changes{1.2}{2022-01-09}{Add doc}{descripton for expansion}
-\begin{itemize}
- \item Macros with a $\star$ are fully-expandable;
- \item Macros with a \ding{73} are restricted-expandable;
- \item Macros without appending a special symbol are nonexpandable;
- \item Options with a $\star$ \textit{do not} affect the expandability of
- related macros;
- \item Options with a \ding{73} affect the expandability of related macros
- according to its value;
- \item Options without appending a special symbol make the related macros
- nonexpandable.
-\end{itemize}
-
-\subsection{Data Types}
-
-The package constructs 6 types based on the internal typed of \pkg{expl3}:
-\begin{Description}[\texttt{clist}]
- \item[\texttt{date}]
- date saved in |yyyy/mm/dd| format, supports comparison, sorting
- (converting to string), default \cs{dbtoday}.
- \item[\texttt{str}]
- string,supports regex match and sorting, default empty.
- \item[\texttt{tl}]
- token list, supports regex match, default empty.
- \item[\texttt{int}]
- integer, supports comparison and sorting, default 0.
- \item[\texttt{fp}]
- floating point, supports comparison and sorting, default 0.
- \item[\texttt{clist}]
- comma list, default empty.
-\end{Description}
-
-\changes{1.3}{2022-01-08}{Remove dependency}{\pkg{datatime2}}
-All types are internal types of \pkg{expl3} except |date| type, which provides
-by \pkg{dbshow} itself and supports converting to integer and printing with
-style.
-
-\subsection{Comparison to \pkg{datatool}}
-
-\changes{1.2}{2022-01-07}{Add doc}{add comparison to \pkg{datatool}}
-
-\pkg{dbshow} and \pkg{datatool} implement the same core functions. But
-\pkg{dbshow} is based on \pkg{expl3} and it supports string regex and
-multi-level sorting. \pkg{dbshow} tries to divide style from the contents
-(data in database): all styles are predefined and can be reused conveniently
-so that there can be only codes to save data and one-line code to show the
-database inside the \env{document} environment. You can hide the details in
-the preamble and focus on the data you want to display. \pkg{dbshow} provides
-a simple temporary runtime database, which means it can not input and output
-data from/to extern files (they should be responsible by some professional
-programming languages). When you need to delete or revise a record, just go to
-where it is recorded in the source code rather than use a macro to manipulate
-data after they are saved. In a sense, \TeX~file is also a kind of data
-persistence.
-
-\section{Interfaces}
-
-\subsection{Create, Display and Clear Database}
-
-\begin{function}[added=2022-01-05]{\dbNewDatabase, \dbNewDatabase*}
- \begin{syntax}
- \cs{dbNewDatabase} \oarg{base database} \marg{database} \{ \\
- ~~\meta{attr1} = \meta{type spec1}, \\
- ~~\meta{attr2} = \meta{type spec2}, \\
- ~~\ldots{} \\
- \} \\
- \cs{dbNewDatabase}* \marg{database} \{ \\
- ~~\meta{attr1} = \meta{type spec1}, \\
- ~~\meta{attr2} = \meta{type spec2}, \\
- ~~\ldots{} \\
- \} \\
- \end{syntax}
-
-\end{function}
-
-Create a new database named \meta{database}, unstarred form provides the optional
-\meta{base database} from which current database inherit the attributes settings.
-The unstarred form always replace the old definition, while starred form
-appends the new options.
-
-\begin{syntax}
- \meta{attr} = \meta{type} \\
- \meta{attr} = \meta{type}\orbar\meta{default}
-\end{syntax}
-
-The first form defines the \meta{attr} as \meta{type}, and the second also
-sets the default value.
-
-\begin{note}
- Every database has a default attribute |id| to store the index of the item.
-\end{note}
-
-The example below define a database named |ques|.
-\begin{verbatim}
- \dbNewDatabase{ques}{
- question = tl, % store question
- answer = tl, % store corresponding answer
- date = date, % store the date when you were wrong
- info = tl, % store extra info
- labels = clist % store question labels
- }
-\end{verbatim}
-
-\begin{function}[added=2022-01-05]{\dbshow}
- \begin{syntax}
- \cs{dbshow} \marg{style} \marg{database}
- \end{syntax}
-
- Show the \meta{database} with \meta{style}.
-\end{function}
-
-\changes{1.2}{2022-01-07}{Add macro}{\cs{dbclear}}
-\begin{function}[added=2022-01-07]{\dbclear}
- \begin{syntax}
- \cs{dbclear} \marg{database}
- \end{syntax}
-
- Clear the content of \meta{database}.
-\end{function}
-
-\subsection{\cs{dbNewStyle} and Style Options}
-
-\begin{function}[added=2022-01-05]{\dbNewStyle}
- \begin{syntax}
- \cs{dbNewStyle} \oarg{base styles} \marg{style} \marg{database} \marg{opts}
- \end{syntax}
-
- Define a new \meta{style} that binds to \meta{database}. The style can
- inherit from a list of \meta{base styles} such as
- |\dbNewStyle[base1, base2]{new-style}{ques}{}|.
-\end{function}
-
-\subsubsection{General Options}
-
-\begin{option}[added=2022-01-05]{filter}
- \begin{syntax}
- filter = <filter>
- \end{syntax}
-
- Set the \meta{filter} defined by \cs{dbCombineFilters}.
-\end{option}
-
-\changes{1.1}{2022-01-06}{Add option}{\opt{raw-filter}}
-\begin{option}[added=2022-01-06]{raw-filter}
- \begin{syntax}
- raw-filter = <conditional expression>
- \end{syntax}
-
- Set anonymous with conditionals defined by \cs{dbNewConditional}. Two
- filters shows in the code below have the same meaning.
-\end{option}
-
-\begin{verbatim}
- % method 1
- \begin{dbFilters}{db}
- \dbNewConditional{cond1}{int-attr}{\rval > 1}
- \dbNewConditional*{cond2}{str-attr}{\d+}
- \end{dbFilters}
- \dbNewStyle{style}{db}{raw-filter={cond1 && cond2}}
- % method 2
- \begin{dbFilters}{db}
- \dbNewConditional{cond1}{int-attr}{\rval > 1}
- \dbNewConditional*{cond2}{str-attr}{\d+}
- \dbCombineFilters{filter}{cond1 && cond2}
- \end{dbFilters}
- \dbNewStyle{style}{db}{filter=filter}
-\end{verbatim}
-
-\changes{1.2}{2022-01-08}{Fix bug}{string sorting bug}
-\begin{option}[added=2022-01-05]{sort}
- \begin{syntax}
- sort = \{ <attr spec1>, <attr spec2>, \ldots{} \}
- \end{syntax}
-
- Set sorting rules. Attributes of type |str, date, int, fp| is supported to
- sort. Multi-level sort is allowed. \meta{attr} represents for ascending
- order, and \meta{attr}* represents for descending order. The example below
- use four fields to determine the order of the records. It sorts on |level|
- in descending order first and if two |levels| are same then sorts on |birth|
- in ascending order and so on.
-\end{option}
-
-\begin{verbatim}
- \dbNewDatabase{sort-example}{
- name = str,
- birth = date,
- level = int,
- weight = fp,
- }
- \dbNewStyle{sort-style}{sort-example}{
- sort = { level*, birth, name, weight }
- }
-\end{verbatim}
-
-\begin{option}[added=2022-01-05, rEXP]{item-code}
- \begin{syntax}
- item-code = <code>
- \end{syntax}
-
- Set the code that show a single record. You can use \cs{dbuse} to display
- certian attribute.
-\end{option}
-
-\changes{1.3}{2022-01-09}{Update option}{\opt{<attr>/sep}}
-\begin{option}[added=2022-01-05, updated=2022-01-08, rEXP]{<attr>/sep}
- \begin{syntax}
- <attr>/sep = <separator> \\
- <attr>/sep = \{ \\
- ~~\meta{separator between two}, \\
- ~~\meta{separator between more than two}, \\
- ~~\meta{separator between final two} \\
- \} \\
- <attr>/sep = \{ \\
- ~~\meta{separator before year}, \\
- ~~\meta{separator between year and month}, \\
- ~~\meta{separator between month and day}, \\
- ~~\meta{separator after day} \\
- \} \\
- \end{syntax}
-
- Only for attributes of type |clist| or |date|. Set the separator between
- items. If the argument is an one-item comma list, all separators are set to
- \meta{separator} but \meta{separator before year} and \meta{separator after
- day} is set empty.
-\end{option}
-
- If the argument is a comma list of 3 items, it is used to set the separator
- between items of the comma list. Following documentation is quoted from
- \pkg{interface3}:
- \begin{quote}
- If the comma list has more than two items, the \meta{separator between
- more than two} is placed between each pair of items except the last, for
- which the \meta{separator between final two} is used. If the comma list
- has exactly two items, then they are placed in the input stream separated
- by the \meta{separator between two}. If the comma list has a single item,
- it is placed in the input stream, and a comma list with no items produces
- no output.
- \end{quote}
- For attributes of type |clist|, incorrect number (numbers exclude 1 and 3)
- of items of the argument will raise an error.
-
-\begin{verbatim}
- % clist-attr is an attribute of database db
- % suppose the val of clist-attr is { 1, 2, 3 }
- \dbNewStyle{clist-sep}{db}{
- clist-attr/sep = { ,~ }, % print 1, 2, 3
- clist-attr/sep = { {,~}, {,~}, {and~} } % print 1, 2 and 3
- }
-\end{verbatim}
-
- If the argument is a comma list of 4 items, it is used to set the separators
- of the date. For attributes of type |date|, incorrect number (numbers
- exclude 1 and 4) will raise an error.
-
-\begin{verbatim}
- % date-attr is an attribute of database db
- % suppose the val of date-attr is 2022/01/01
- \dbNewStyle{date-sep}{db}{
- date-attr/sep = -, % print 2022-01-01
- date-attr/sep = { |, -, -, | } % print |2022-01-01|
- }
-\end{verbatim}
-
-\changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/zfill}}
-\begin{option}[added=2022-01-08, EXP]{<attr>/zfill}
- \begin{syntax}
- <attr>/zfill = <\TTF>
- \end{syntax}
-
- Only for attributes of type |date|. Control whether to fill zero on the left
- of the month or day.
-\end{option}
-
-\subsubsection{Decorators}
-
-The options below serves as decorators. In some cases, decorator can also be
-encoded directly into |item-code| or some other places, which is convenient
-sometimes. The benefit of defining decorators with options is that styles step
-further to be divided with contents. In the examples below, \meta{style1} and
-\meta{style2} is the same style, which wrap \meta{attr1} with *. When you want
-another style which wrap \meta{attr1} with =, if you choose the way of
-\meta{style1}, \meta{item code} are repeated, otherwise if you choose the way
-of \meta{style2}, \meta{item code} is inherited and you only need define the
-decorators.
-
-\begin{verbatim}
- \dbNewStyle{style1}{db}{
- item-code = {%
- *\rvuse{attr1}*\rvuse{attr2}
- % more code
- }
- }
- \dbNewStyle{base-style}{db}{
- item-code = {%
- \rvuse{attr1}\rvuse{attr2}
- % more code
- }
- }
- \dbNewStyle[base-style]{style2}{db}{
- attr1/before-code = { * },
- attr1/after-code = { * },
- }
- \dbNewStyle[base-style]{style3}{db}{
- attr1/before-code = { = },
- attr1/after-code = { = },
- }
-\end{verbatim}
-
-\changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/wrapper}}
-\begin{option}[added=2022-01-08, rEXP]{<attr>/wrapper}
- \begin{syntax}
- <attr>/wrapper = <control sequence>
- \end{syntax}
-
- Only for attributes of type |date|. Output of \cs{dbuse}\marg{date attr}
- will be \meta{control sequence}\marg{date}.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{before-code}
- \begin{syntax}
- before-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed \enbefore displaying the database.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{after-code}
- \begin{syntax}
- after-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed \enafter displaying the database.
-\end{option}
-
-\changes{1.2}{2022-01-08}{Add options}{\opt{record-before-code},
-\opt{record-after-code}}
-\begin{option}[added=2022-01-05, rEXP]{record-before-code}
- \begin{syntax}
- record-before-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed \enbefore displaying a record.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{record-after-code}
- \begin{syntax}
- record-after-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed \enafter displaying the record.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/before-code}
- \begin{syntax}
- <attr>/before-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed by \cs{dbuse} \enbefore displaying
- certain attribute.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/after-code}
- \begin{syntax}
- <attr>/after-code = <code>
- \end{syntax}
-
- Set the \meta{code} that is executed by \cs{dbuse} \enafter displaying
- certain attribute.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/item-before-code}
- \begin{syntax}
- <attr>/item-before-code = <code>
- \end{syntax}
-
- Only for attributes of type |clist|. Set the \meta{code} that is excuted
- \enbefore displaying the item of the comma list.
-\end{option}
-
-\begin{option}[added=2022-01-05, rEXP]{<attr>/item-after-code}
- \begin{syntax}
- <attr>/item-after-code = <code>
- \end{syntax}
-
- Only for attributes of type |clist|. Set the \meta{code} that is excuted
- \enafter displaying the item of the comma list.
-\end{option}
-
-\subsection{Use \cs{dbNewReviewPoints} to Define Review Points}
-
-\begin{function}[added=2022-01-05]{\dbNewReviewPoints}
- \begin{syntax}
- \cs{dbNewReviewPoints} \marg{name} \marg{points}
- \end{syntax}
-
- Define the new \meta{points} that is specially designed for reviewing
- something. \meta{points} is a list of integers. Suppose you record the date
- when you did not answer correctly and you plan to review every 2, 5 and 15
- days. The following code give what you want.
-\end{function}
-
-\begin{verbatim}
- \dbNewReviewPoints{review-point}{2, 5, 15} % define points
- \begin{dbFilters}
- \dbNewConditional{cond1}{date}{review-point|\Today} % define conditional
- \dbCombineConditionals{filter1}{cond1} % define filter
- \end{dbFilters}
- \dbNewStyle{review-style}{ques}{filter=filter1} % define style
-\end{verbatim}
-
-\subsection{Define Filters inside \env{dbFilters} Environment}
-
-\begin{environment}[added=2022-01-05]{dbFilters}
- \begin{syntax}
- |\begin{dbFilters}|\marg{database} \\
- ~~\meta{code}
- |\end{dbFilters}| \\
- \end{syntax}
-
- Filters are defined inside \env{dbFilters} environment, inside which,
- \cs{dbNewConditional} is defined to declare conditionals and
- \cs{dbCombineConditionals} is defined to combine conditionals. Filters are
- independent in different databases, which means the same name of filters is
- allowed in different databases.
-\end{environment}
-
-\begin{function}[added=2022-01-05, updated=2022-01-08]{\dbNewConditional, \dbNewConditional*}
- \begin{syntax}
- \cs{dbNewConditional} \marg{name} \marg{attr} \marg{cond spec} \\
- \cs{dbNewConditional}* \marg{name} \marg{attr} \marg{cond spec} \\[2pt]
- \cs{dbNewConditional} \marg{name} \marg{int/fp attr} \marg{expr} \\
- \cs{dbNewConditional}* \marg{name} \marg{int/fp attr} \marg{expr} \\
- \cs{dbNewConditional} \marg{name} \marg{str/tl attr} \marg{regex expr} \\
- \cs{dbNewConditional}* \marg{name} \marg{str/tl attr} \marg{regex expr} \\
- \cs{dbNewConditional} \marg{name} \marg{clist attr} \marg{val list} \\
- \cs{dbNewConditional}* \marg{name} \marg{clist attr} \marg{val list} \\
- \cs{dbNewConditional} \marg{name} \marg{date attr} \marg{expr}
- \cs{dbNewConditional}* \marg{name} \marg{date attr} \{\meta{review points}\orbar\meta{date}\} \\
- \end{syntax}
-
- Define the conditional named \meta{name} that binds to \meta{attr}. \cs{dbval}
- is replaced with the real value of the attribute inside the \meta{cond spec}.
-\end{function}
-
- \changes{1.3}{2022-01-10}{Update doc}{truncated division}
- For attributes of type |int| and |fp|, \meta{expr} is passed to
- \cs{int_compare:nTF} or \cs{fp_compare:nTF}.
- \begin{note}
- Division using |/| rounds to the closest integer. Use \cs{dbIntDivTruncate} to rounds
- the result toward 0.
- \end{note}
-
- For attribute of type |str| and |tl|, unstarred form matches any part while
- starred form matches the whole part with the \meta{regex expr}.
-
-\begin{verbatim}
- \dbNewConditional {cond1}{str-attr}{abc} % match abc, abcd, 1abc, =abc=, etc
- \dbNewConditional*{cond2}{str-attr}{abc} % only match abc
-\end{verbatim}
-
- For attributes of type |clist|, the conditional defined by unstarred form is
- true if any item of \meta{val list} is in the comma list. While the
- conditional defined by starred form is true only if every item of \meta{val
- list} is in the comma list. As is showed below, for |cond1|, |a| is in
- |{a, b, d}| so |cond1| is true. While |c| is not in |{a, b, d}| so |cond2|
- is false.
-
-\begin{verbatim}
- \dbNewConditional {cond1}{clist-attr}{a, b, c} % {a, b, d} -> true
- \dbNewConditional*{cond2}{clist-attr}{a, b, c} % {a, b, d} -> false
-\end{verbatim}
-
- \changes{1.3}{2022-01-08}{Update logic}{swap definition of starred and
- unstarred conditionals of date}
- For attributes of type |date|, unstarred form replace each date with a
- integer representing for the days between \meta{date} and
- \textit{1971/01/01}, and the result is passed to \cs{int_compare:nTF}.
- Starred form defines the conditional with review points defined by
- \cs{dbNewRdbNewReviewPoints} and \meta{date} is the date to be compared.
-
-\begin{function}[added=2022-01-05]{\dbCombineConditionals}
- \begin{syntax}
- \cs{dbCombineConditionals} \marg{name} \marg{cond combination} \oarg{info}
- \end{syntax}
-
- Define the filter \meta{name}, which combine the conditionals and store the
- extra \meta{info} into \cs{dbFilterInfo}. So you can write something as\\
- \verb=\dbCombineConditionals{filter}{(cond1 && cond2) || !cond3}=.\\
- Supported operators are \verb=&&, ||, !=. You can set the option \opt{filter}
- to \meta{name} to apply the filter when you display the database.
-\end{function}
-
-\subsection{Store Data with \env{dbitem} Environment}
-
-\begin{environment}[added=2022-01-05]{dbitem}
- \begin{syntax}
- |\begin{dbitem}|\marg{database}[ \\
- ~~\meta{attr1} = \meta{val1}, \\
- ~~\meta{attr2} = \meta{val2}, \\
- ~~\ldots{} \\
- ] \\
- ~~\meta{code} \\
- |\end{dbitem}|
- \end{syntax}
-
- The data are stored with \env{dbitem} environment in two ways. Smaller data
- can be stored in the option list and the bigger data can be stored by
- \cs{dbsave}, which will suppress the value set by the option list. An
- example code is showned below.
-\end{environment}
-
-\begin{verbatim}
- \begin{dbitem}[date=2022-01-01, info=test]
- \dbsave{question}{This is a test question.}
- \dbsave{answer} {This is a test answer.}
- \end{dbitem}
-\end{verbatim}
-
-\subsection{\cs{dbsave} and \cs{dbuse}}
-
-\changes{1.3}{2022-01-08}{Add macro}{\cs{dbsave*}}
-\begin{function}[added=2022-01-05, updated=2022-01-08]{\dbsave, \dbsave*}
- \begin{syntax}
- \cs{dbsave} \marg{attr} \marg{data} \\
- \cs{dbsave}* \marg{attr} \marg{data}
- \end{syntax}
-
- \cs{dbsave} save the \meta{data} to \meta{attr} of current record.
- \cs{dbsave} can be used only inside the \env{dbitem} environment.
- \meta{data} stored by \cs{dbsave*} is wrapped with \cs{exp_not:n} while
- \meta{data} stored by \cs{dbsave} keeps the same.
-\end{function}
-
-\changes{1.2}{2022-01-08}{Update macro}{make \cs{dbuse} fully-expandable}
-\begin{function}[added=2022-01-05, updated=2022-01-08, EXP]{\dbuse}
- \begin{syntax}
- \cs{dbuse} \marg{attr}
- \end{syntax}
-
- Display the value of \meta{attr} of current record. \cs{dbuse} is
- \textbf{expandable} and can be only used inside the option \opt{item-code}.
-\end{function}
-
-\subsection{Conditionals}
-
-\begin{function}[added=2022-01-05, EXP]{\dbIfEmptyT, \dbIfEmptyF, \dbIfEmptyTF}
- \begin{syntax}
- \cs{dbIfEmptyTF} \marg{true code} \marg{false code} \\
- \cs{dbIfEmptyT} \marg{true code} \\
- \cs{dbIfEmptyF} \marg{false code}
- \end{syntax}
-
- Test if the database is empty. The example below shows how to avoid an empty
- list environment.
-\end{function}
-
-\begin{verbatim}
- \dbNewStyle{style-cond1}{database-test}{
- before-code = {\dbIfEmptyF{\begin{enumerate}}},
- after-code = {\dbIfEmptyF{\end{enumerate}}},
- item-code = {\item \dbuse{attr-test}}
- }
-\end{verbatim}
-
-\changes{1.2}{2022-01-08}{Remove macros}{\cs{dbItemIfEmpty(TF)}, \cs{dbClistItemIfEmpty(TF)}}
-
-\subsection{Expression Functions}
-
-\changes{1.3}{2022-01-10}{Add macros}{expression function aliases}
-\begin{function}[added=2022-01-10, EXP]{
- \dbIntAbs, \dbIntSign, \dbIntDivRound, \dbIntDivTruncate, \dbIntMax,
- \dbIntMin, \dbIntMod, \dbFpSign,
-}
- \begin{syntax}
- \cs{dbIntAbs} \Arg{intexpr}
- \cs{dbIntSign} \Arg{intexpr}
- \cs{dbIntDivRound} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntDivTruncate} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMax} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMin} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbIntMod} \Arg{intexpr_1} \marg{intexpr_2}
- \cs{dbFpSign} \Arg{fpexpr}
- \end{syntax}
- \cs{dbIntAbs} is identical to \cs{int_abs:n} \\
- \cs{dbIntSign} is identical to \cs{int_sign:n} \\
- \cs{dbIntDivRound} is identical to \cs{int_div_round:nn} \\
- \cs{dbIntDivTruncate} is identical to \cs{int_div_truncate:nn} \\
- \cs{dbIntMax} is identical to \cs{int_max:nn} \\
- \cs{dbIntMin} is identical to \cs{int_min:nn} \\
- \cs{dbIntMod} is identical to \cs{int_mod:nn} \\
- \cs{dbFpSign} is identical to \cs{fp_sign:n} \\
- Detailed documentation see \pkg{interface3} \\
-\end{function}
-
-\subsection{Special Macros}
-
-Some special macros are defined to expand to different contents according to context.
-
-\changes{1.1}{2022-01-05}{Add macro}{
- \cs{dbarabic}, \cs{dbalph}, \cs{dbAlph}, \cs{dbroman},
- \cs{dbRoman}
-}
-\changes{1.1}{2022-01-06}{Fix bug}{\cs{dbIndex} not defined}
-\begin{function}[added=2022-01-05, EXP]{
- \dbval, \dbDatabase, \dbFilterName, \dbFilterInfo,
- \dbIndex, \dbarabic, \dbalph, \dbAlph, \dbroman, \dbRoman
-}
-\begin{tblr}{ll}
- \cs{dbval} & Attribute value, only according in \cs{dbNewConditional}. \\
- \cs{dbDatabase} & Database name. \\
- \cs{dbFilterName} & Filter name. \\
- \cs{dbFilterInfo} & Filter information. \\
- \cs{dbIndex} & Record index, identical to \cs{dbuse}|{id}| \\
- \cs{dbarabic} & Show the counter of query set as digits. \\
- \cs{dbalph} & Show the counter of query set as lowercase letters. \\
- \cs{dbAlph} & Show the counter of query set as uppercase letters. \\
- \cs{dbroman} & Show the counter of query set as lowercase roman numerals. \\
- \cs{dbroman} & Show the counter of query set as uppercase roman numerals. \\
- \end{tblr}
-\end{function}
-
-\section{Example of Flaw Sweeper Template}
-\label{sec:example}
-
-\changes{1.1}{2022-01-07}{Update doc}{improve example}
-
-\begin{tcblisting}{enhanced jigsaw,lower separated=false,
- leftlower=0pt,rightlower=0pt,
- colframe=red!50!black,colback=yellow!10!white,
- listing options={style=tcblatex,texcsstyle=*\color{red!70!black}},
- listing and comment,
- pdf comment,freeze pdf,
- compilable listing,
- breakable,
- run pdflatex
-}
-\documentclass{article}
-\usepackage{amsmath, physics}
-\usepackage{geometry}
-\usepackage{dbshow}
-\usepackage{tikz}
-\usepackage{tcolorbox}
-\tcbuselibrary{skins}
-\usetikzlibrary{shadings}
-\usepackage[hidelinks]{hyperref}
-
-\geometry{
- margin=2cm
-}
-
-% #1 link node #2 target node #3 text to show
-\NewDocumentCommand \linktarget { m m m } {%
- \hyperlink{#1}{#3}%
- \raisebox{1em}{\hypertarget{#2}{}}%
-}
-
-% question box
-\tcbset{
- base/.style={
- empty,
- frame engine=path,
- colframe=yellow!10,
- coltitle=red!70,
- fonttitle=\bfseries\sffamily,
- sharp corners,
- left=4pt,
- right=4pt,
- drop fuzzy shadow,
- drop fuzzy shadow,
- borderline west={3pt}{-3pt}{red!80},
- }
-}
-
-\newtcolorbox{mybox}[1]{%
- base, title = {#1}
-}
-
-\dbNewReviewPoints{review}{1, 3, 7, 15, 30, 60}
-
-\dbNewDatabase{ques-book}{
- ques = tl,
- answer = tl,
- count = int|1,
- labels = clist,
- date = date,
-}
-
-\begin{dbFilters}{ques-book}
- \dbNewConditional{hard}{labels}{hard}
- \dbNewConditional{bad}{count}{\dbval > 1}
- \dbNewConditional*{review}{date}{review|2022/01/07}
- \dbNewConditional{after}{date}{\dbval > 2022/01/02}
-\end{dbFilters}
-
-% show all questions with hyperlink to answers
-\dbNewStyle{ques}{ques-book}{
- before-code = {\section{Questions}},
- item-code = {
- \begin{mybox}{%
- \linktarget{answer_\dbIndex}{ques_\dbIndex}{%
- Question \dbarabic%
- \hspace{2em}\dbuse{date}%
- \hspace{2em}\dbuse{labels}%
- \hfill\dbuse{count}%
- }%
- }
- \dbuse{ques}%
- \end{mybox}
- },
- labels/sep = /,
-}
-
-% show all questions and answers with hyperlink to questions
-\dbNewStyle{answer}{ques-book}{
- before-code = {\section{Questions and Answers}},
- item-code = {
- \begin{mybox}{%
- \linktarget{ques_\dbIndex}{answer_\dbIndex}{%
- Question \dbarabic%
- \hspace{2em}\dbuse{date}%
- \hspace{2em}\dbuse{labels}%
- \hfill\dbuse{count}%
- }%
- }
- \dbuse{ques}\tcbsubtitle{Answer}\dbuse{answer}%
- \end{mybox}
- },
- labels/sep = /,
-}
-
-% show all hard questions with hyperlink to answers
-\dbNewStyle{hard}{ques-book}{
- before-code = {\section{Hard Questions}},
- item-code = {
- \begin{mybox}{%
- \hyperlink{answer_\dbIndex}{%
- Question \dbarabic%
- \hspace{2em}\dbuse{date}%
- \hspace{2em}\dbuse{labels}%
- \hfill\dbuse{count}%
- }%
- }
- \dbuse{ques}%
- \end{mybox}
- },
- raw-filter = hard,
- labels/sep = /,
-}
-
-% show all hard questions that have been answered incorrectly for more than
-% one time with hyperlink to answers
-\dbNewStyle[hard]{bad}{ques-book}{
- before-code = {\section{Bad Questions}},
- raw-filter = {bad && hard},
-}
-% show all questions that plan to be reviewed on 2022/01/07 with hyperlink to
-% answers
-\dbNewStyle[hard]{review}{ques-book}{
- before-code = {\section{Questions to be Reviewed}},
- raw-filter = {review},
-}
-% show all questions that is record after 2022/01/02 with hyperlink to answers
-\dbNewStyle[hard]{after}{ques-book}{
- before-code = {\section{Questions after 2022/01/02}},
- raw-filter = {after},
-}
-
-\AtEndDocument{
- \dbshow{review}{ques-book}
- \dbshow{hard}{ques-book}
- \dbshow{bad}{ques-book}
- \dbshow{after}{ques-book}
- \dbshow{ques}{ques-book}
- \dbshow{answer}{ques-book}
-}
-
-\begin{document}
-
-\begin{dbitem}{ques-book}[
- date=2022/01/01,
- labels={math, equation, easy},
- count=2
- ]
- \dbsave{ques}{%
- Solve the linear equation: $x + 16 = 31$.
- }
- \dbsave{answer}{%
- $x = 31 - 16 = 15$
- }
-\end{dbitem}
-
-\begin{dbitem}{ques-book}[
- date=2022/01/01,
- labels={math, equation, hard},
- count=3
- ]
- \dbsave{ques}{%
- Solve the linear equation: $2y = 16$.
- }
- \dbsave{answer}{%
- $y = 16 / 2 = 8$
- }
-\end{dbitem}
-
-\begin{dbitem}{ques-book}[
- date=2022/01/04,
- labels={math, integral, hard},
- count=1
- ]
- \dbsave{ques}{%
- Find the indefinite integral: $\int 2x \dd x$.
- }
- \dbsave{answer}{%
- $\int 2x \dd x = x^2$
- }
-\end{dbitem}
-
-\end{document}
-\end{tcblisting}
-
-\end{documentation}
-\end{document}
diff --git a/macros/latex/contrib/dbshow/dbshow.dtx b/macros/latex/contrib/dbshow/dbshow.dtx
new file mode 100644
index 0000000000..a2af27d922
--- /dev/null
+++ b/macros/latex/contrib/dbshow/dbshow.dtx
@@ -0,0 +1,3740 @@
+% \iffalse meta-comment
+%<*internal>
+\iffalse
+%</internal>
+%<*readme>
+Package dbshow
+==============
+
+Introduction
+------------
+
+The package provides four core functions:
+
+1. data storage
+2. data filtering
+3. data sorting
+4. data display
+
+All data is saved once and then you can display these data with custom filters,
+orders and styles. The package can be used, for example, to record and
+display something you'd like to review, maybe the question you always answered
+incorrectly or some forgettable knowledge. But obviously, the package is much
+more powerful and extensible for more interesting tasks depending on the
+individual.
+
+Install
+-------
+
+If you are using TeX Live, install `dbshow` by `tlmgr` package manager
+
+ tlmgr update --self --all
+ tlmgr install dbshow
+
+You can also download the zip file from
+[CTAN](https://ctan.org/pkg/dbshow) or
+[GitHub](https://github.com/ZhiyuanLck/dbshow/releases/latest).
+
+The zip file should contain the file `dbshow.dtx`, and you can extract
+`dbshow.sty` from it by
+
+ tex dbshow.dtx
+
+Compile Document
+----------------
+
+Use following commands to compile the document:
+
+ git clone https://github.com/ZhiyuanLck/dbshow.git
+ cd dbshow
+ latexmk dbshow.dtx
+
+Copyright and License
+---------------------
+
+ Copyright (C) 2022- by Changkai Li <lichangkai225@qq.com>
+ --------------------------------------------------------------------------
+
+ This work 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. This version of this license is in
+ http://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status "maintained".
+
+ The Current Maintainer of this work is Changkai Li.
+
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md (this file).
+%</readme>
+%<*internal>
+\fi
+\begingroup
+ \def\temp{LaTeX2e}
+\expandafter\endgroup\ifx\temp\fmtname\else
+\csname fi\endcsname
+%</internal>
+%<*install>
+
+\input l3docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+ Copyright (C) 2022- by Changkai Li <lichangkai225@qq.com>
+ --------------------------------------------------------------------------
+
+ This work 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. This version of this license is in
+ http://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status "maintained".
+
+ The Current Maintainer of this work is Changkai Li.
+
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md.
+ --------------------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+ --------------------------------------------------------------------------
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md.
+\endpostamble
+
+\generate{
+%</install>
+%<*internal>
+ \usedir{source/latex/dbshow}
+ \file{dbshow.ins}{\from{\jobname.dtx}{install}}
+%</internal>
+%<*install>
+ \usedir{tex/latex/dbshow}
+ \file{dbshow.sty}{\from{\jobname.dtx}{package}}
+ \nopreamble\nopostamble
+ \usedir{doc/latex/dbshow}
+ \file{README.md} {\from{\jobname.dtx}{readme}}
+}
+\endbatchfile
+%</install>
+%<*internal>
+\fi
+%</internal>
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<+package|config>\GetIdInfo$Id: dbshow.dtx 461d9bb 2022-01-14 02:50:24 +0800 Changkai Li <lichangkai225@qq.com> $
+%<package> {Database to store and display data}
+%<package>\ProvidesExplPackage{\ExplFileName}
+%<package|config> {\ExplFileDate}{1.4}{\ExplFileDescription}
+%<*driver>
+\documentclass[full]{l3doc}
+\usepackage[scheme=plain, fontset=ubuntu]{ctex}
+\usepackage{dbshow}
+\usepackage{adjustbox}
+\usepackage{zhlineskip}
+\usepackage{enumitem}
+\usepackage{indentfirst}
+\usepackage{titling}
+\usepackage{geometry}
+\usepackage{tabularray}
+\usepackage{xcolor}
+\usepackage{tabularray}
+\usepackage{zhnumber}
+
+\geometry{
+ left=4.5cm,
+ right=2cm,
+ top=2cm,
+ bottom=2cm,
+}
+\hypersetup {
+ CJKbookmarks,
+ bookmarksopen,
+ bookmarksopenlevel=3,
+ pdfstartview=FitH,
+ pdfinfo = {
+ Title = The package 'dbshow' ,
+ Subject = A LaTeX package ,
+ Author = Li Changkai
+ }
+}
+
+\IndexPrologue {
+ \part*{Index}
+ \markboth{Index}{Index}
+ \addcontentsline{toc}{part}{Index}
+ The~italic~numbers~denote~the~pages~where~the~
+ corresponding~entry~is~described,~
+ numbers~underlined~point~to~the~definition,~
+ all~others~indicate~the~places~where~it~is~used.
+}
+
+\GlossaryPrologue {
+ \part*{Change~History}
+ {\GlossaryParms\ttfamily\hyphenchar\font=`\-}
+ \markboth{Change~History}{Change~History}
+ \addcontentsline{toc}{part}{Change~History}
+}
+
+\let\subsubitem\subitem
+
+\DoNotIndex{\begin, \end}
+\setlength{\parskip}{\medskipamount}
+
+\newcommand\tikzmark[1]{\tikz \coordinate[overlay, remember picture] (#1);}
+\def\levelchar{?}
+\def\orbar{\textup{\textbar}}
+\def\defaultval#1{\textbf{\textup{#1}}}
+\def\TF{true\orbar false}
+\def\TTF{\defaultval{true}\orbar false}
+\def\TFF{true\orbar\defaultval{false}}
+\def\zhbefore{\textbf{å‰}}
+\def\zhafter{\textbf{åŽ}}
+\def\enbefore{\textbf{before}~}
+\def\enafter{\textbf{after}~}
+\DeclareDocumentEnvironment { note } { +b } {
+ \par\textbf{\textsf{NOTE:~}}#1\par
+} {}
+
+\ExplSyntaxOn
+\makeatletter
+
+\DeclareDocumentCommand { \csnot } { m } {
+ \group_begin:\ttfamily
+ \tl_set:Nn \l_csnot_tl { \c_backslash_str #1 }
+ \tl_replace_all:Nnn \l_csnot_tl { ~ } { \@xobeysp }
+ \l_csnot_tl
+ \group_end:
+}
+
+\DeclareDocumentEnvironment{ arguments } { O{1} } {
+ \tl_set:Nx \l_tmpa_tl {
+ \int_case:nn {#1} {
+ { 1 } { \# }
+ { 2 } { \#\# }
+ { 3 } { \#\#\#\# }
+ }
+ }
+ \enumerate [
+ nolistsep ,
+ label = \texttt{\l_tmpa_tl\arabic*} ~ : ,
+ labelsep = * ,
+ labelwidth = !,
+ align=left,
+ ]
+} { \endenumerate }
+
+\DoNotIndex{\begin, \end}
+
+\renewenvironment{theglossary}{
+\glossary@prologue\GlossaryParms \let\item\@idxitem \ignorespaces}{}
+
+\cs_gset_eq:NN \dbshowdocnull \use_none:n
+
+% #1 sort #2 group #3 date #4 type #5 desc
+\cs_new_protected:Nn \dbshowdoc_changes:nnnnn {
+ \@bsphack\group_begin:\@sanitize
+ \catcode`\\\z@ \catcode`\ 10 \MakePercentIgnore
+ \exp_args:Nx \glossary {
+ \dbshowdocnull{#1}~
+ \exp_not:N \textbf{#2}
+ \exp_not:n { \raisebox{1em}{\pdfbookmark[1]{#2}{#2}} }
+ \levelchar
+ \exp_not:N \textup{#3}\c_space_tl
+ \exp_not:N \textbf{#4}\c_colon_str\c_space_tl
+ \exp_not:n {#5}
+ }
+ \group_end:\@esphack
+}
+\cs_generate_variant:Nn \dbshowdoc_changes:nnnnn { xxnnn, VVnnn }
+
+\cs_new_protected:Nn \dbshowdoc_print_version:n {
+ v#1
+ \int_compare:nNnT { \str_count:n {#1} } = { 3 } { \phantom{0} }
+ \c_space_tl
+}
+\cs_set_eq:NN \dbshowdocver \dbshowdoc_print_version:n
+
+% #1 ver #2 date #3 type #4 desc
+\cs_new_protected:Nn \dbshowdoc_changes_what:nnnn {
+ \regex_extract_once:nnNT { doc|macro|bug|option }
+ {#3} \l_tmpa_seq {
+ \tl_set:Nx \l_tmpa_tl {
+ \str_case_e:nn { \seq_item:Nn \l_tmpa_seq { 1 } } {
+ { doc } { Documentation }
+ { macro } { Macro }
+ { bug } { Bug }
+ { option } { Option }
+ { logic } { Logic }
+ }
+ }
+ \dbshowdoc_changes:VVnnn \l_tmpa_tl \l_tmpa_tl
+ { \dbshowdocver{#1}#2 } {#3} {#4}
+ }
+}
+
+% #1 ver #2 date #3 type #4 desc
+\cs_new_protected:Nn \dbshowdoc_changes_how:nnnn {
+ \regex_extract_once:nnNT { Add|Update|Remove|Fix }
+ {#3} \l_tmpa_seq {
+ \dbshowdoc_changes:xxnnn
+ { \seq_item:Nn \l_tmpa_seq { 1 } }
+ { \seq_item:Nn \l_tmpa_seq { 1 } }
+ { \dbshowdocver{#1}#2 } {#3} {#4}
+ }
+}
+
+\cs_new:Nn \dbshowdoc_fill_two:n {
+ \int_compare:nNnTF {#1} > { 9 }
+ {#1} { 0#1 }
+}
+
+% #1 major number #2 minor number
+\cs_new_protected:Npn \dbshowdoc_changes_ver:w #1.#2\dbshowdoc_stop {
+ \dbshowdoc_changes:xxnnn { #1.\dbshowdoc_fill_two:n {#2} }
+}
+
+% #1 ver #2 date #3 type #4 desc
+\DeclareDocumentCommand \changes { m m m m } {
+ \dbshowdoc_changes_ver:w #1\dbshowdoc_stop {#1} {#2} {#3} {#4}
+ \dbshowdoc_changes_what:nnnn {#1} {#2} {#3} {#4}
+ \dbshowdoc_changes_how:nnnn {#1} {#2} {#3} {#4}
+}
+\makeatother
+
+\DeclareDocumentEnvironment { Description } { o +b } {
+ \hbox_set:Nn \l_tmpa_box {#1}
+ \dim_set:Nn \l_tmpa_dim { \box_wd:N \l_tmpa_box }
+ \begin{itemize}[
+ itemindent=0pt,
+ labelindent=0pt,
+ labelwidth=\l_tmpa_dim,
+ leftmargin=!,
+ align=left]
+ #2
+ \end{itemize}
+} {}
+
+\cs_new_protected:Nn \dbshowdoc_function_begin:N {
+ \cs_set_eq:NN \__codedoc_tmp_cs:nN \__codedoc_typeset_function_block:nN
+ \cs_set_protected:Npn \__codedoc_typeset_function_block:nN ##1##2 {
+ \__codedoc_function_label:xN {##1} ##2
+ \hbox_set:Nn \l_tmpa_box {##1}
+ \int_compare:nTF { \str_count:n {##1} <= 22 }
+ {##1} { \adjustbox{width=.7\marginparwidth, height=\box_ht:N \l_tmpa_box}{##1} }
+ #1{##1}
+ \__codedoc_typeset_expandability: \\
+ }
+}
+\cs_new_protected:Nn \dbshowdoc_function_end: {
+ \cs_set_eq:NN \__codedoc_typeset_function_block:nN \__codedoc_tmp_cs:nN
+}
+\DeclareDocumentEnvironment { option } { O{} +v }
+ {
+ \dbshowdoc_function_begin:N \SpecialOptionIndex
+ \__codedoc_function:nnw {#1} {#2}
+ }
+ {
+ \__codedoc_function_end:
+ \dbshowdoc_function_end:
+ }
+\DeclareDocumentEnvironment { environment } { O{} +v }
+ {
+ \dbshowdoc_function_begin:N \SpecialEnvIndex
+ \__codedoc_function:nnw {#1} {#2}
+ }
+ {
+ \__codedoc_function_end:
+ \dbshowdoc_function_end:
+ }
+
+\DeclareDocumentCommand \opt { O{} m }
+ { \__codedoc_cmd:no {#1} {#2} }
+
+\NewDocumentCommand \linktarget { m m m } {%
+ \hyperlink{#1}{#3}%
+ \raisebox{1em}{\hypertarget{#2}{}}%
+}
+
+\DeclareDocumentCommand \GetFileId { m } {
+ \GetFileInfo {#1}
+ \file_get:nnNTF { \c_sys_jobname_str .id }
+ { \int_set:Nn \tex_endlinechar:D { -1 } } \l__ctxdoc_tmp_tl
+ { \exp_after:wN \GetIdInfo \l__ctxdoc_tmp_tl }
+ { \GetIdInfo $Id$ }
+ { \fileinfo }
+}
+\ExplSyntaxOff
+
+\begin{document}
+\DocInput{dbshow.dtx}
+\newgeometry{
+ left=2cm,
+ right=2cm,
+ top=2cm,
+ bottom=2cm
+}
+\changes{1.4}{2022-01-10}{Fix doc code}{wrong changes history sorting}
+\PrintChanges
+\PrintIndex
+\end{document}
+%</driver>
+% \fi
+%
+% \CheckSum{882}
+% \GetFileId{dbshow.sty}
+%
+% \ExplSyntaxOn
+% \tl_set:Nx \cnfiledate{ \exp_args:NV \zhdate\filedate }
+% \ExplSyntaxOff
+%
+% \title{
+% \pkg{dbshow} å®åŒ… \fileversion%
+% \protect\footnote{%
+% 代ç ä»“库:\url{https://github.com/ZhiyuanLck/dbshow},
+% QQ群:788706534}
+% \rlap{\makebox[4cm][r]{
+% \normalsize $\Longrightarrow$ \color{red}
+% \linktarget{en}{zh}{English Version}
+% }}
+% }
+% \author{\textit{æŽæ˜Œé”´} \protect\path{<lichangkai225@qq.com>}}
+% \date{\cnfiledate}
+% \maketitle
+%
+% \tableofcontents
+%
+% \begin{documentation}
+%
+% \section{引言}
+% 编写本å®åŒ…的动机æ¥æºäºŽå½“å‰æ²¡æœ‰ä¸€ä¸ªå¾ˆå¥½çš„错题本å®åŒ…,å¯ä»¥æ–¹ä¾¿çš„æ ¹æ®å„ç§æ¡ä»¶å¯¹é”™
+% 题进行筛选ã€æŽ’åºï¼Œç„¶åŽä»¥è‡ªå®šä¹‰çš„æ ·å¼å±•ç¤ºå‡ºæ¥ã€‚\pkg{dbshow} å®åŒ…实现了四个核心
+% 功能:数æ®å­˜å‚¨å’Œä½¿ç”¨ã€æ•°æ®ç­›é€‰ã€æ•°æ®æŽ’åºã€æ•°æ®å±•ç¤ºã€‚
+%
+% æ•°æ®åªéœ€è¦å­˜å‚¨ä¸€æ¬¡ï¼Œå°±å¯ä»¥é€šè¿‡é¢„定义的筛选ã€æŽ’åºæ¡ä»¶å’Œæ ·å¼å±•ç¤ºéƒ¨åˆ†æˆ–全部的数æ®ã€‚
+% 如上所述,本å®åŒ…其实实现了一个éžå¸¸ç®€å•çš„æ•°æ®åº“,å¤ä¹ é”™é¢˜çš„功能åªæ˜¯å…¶ä¸­ä¸€ä¸ªåº”用,
+% 和其他数æ®åº“å®åŒ…比如 \pkg{datatool} 相比,\pkg{dbshow} 更专注于éžå›¾è¡¨ç±»åž‹çš„æ•°
+% æ®å±•ç¤ºã€‚
+%
+% \changes{1.4}{2022-01-10}{Add check}{version of \pkg{l3kernel}}
+% \pkg{dbshow} ä¾èµ–版本日期至少为 |2022-11-07| çš„ \pkg{l3kernel}。
+%
+% \changes{1.3}{2022-01-09}{Add doc}{descripton for expansion}
+% \begin{itemize}
+% \item åå­—åŽå¸¦æœ‰ $\star$ 的命令是å¯ä»¥å®Œå…¨å±•å¼€çš„(fully-expandable);
+% \item åå­—åŽå¸¦æœ‰ \ding{73} 的命令å¯ä»¥æœ‰é™åˆ¶åœ°å±•å¼€ï¼ˆrestricted-expandable);
+% \item åå­—åŽä¸å¸¦æœ‰ç‰¹æ®Šå­—符的命令是ä¸å¯å±•å¼€çš„(non-expandable);
+% \item åå­—åŽå¸¦æœ‰ $\star$ 的选项ä¸å½±å“相关的代ç çš„是å¦å¯å±•å¼€ï¼›
+% \item åå­—åŽå¸¦æœ‰ \ding{73} 的选项是å¦å½±å“相关代ç çš„å¯å±•å¼€æ€§å–决于选项的设置;
+% \item åå­—åŽä¸å¸¦æœ‰ç‰¹æ®Šå­—符的选项会使与之相关的代ç å˜å¾—ä¸å¯å±•å¼€ã€‚
+% \end{itemize}
+%
+% \subsection{æ•°æ®ç±»åž‹}
+%
+% å®åŒ…基于 \pkg{expl3} 的基础类型构建了6ç§ç±»åž‹ï¼š
+% \begin{Description}[\texttt{clist}]
+% \item[\texttt{date}]
+% 日期类型,以 |yyyy/mm/dd| å½¢å¼å­˜å‚¨ï¼Œæ”¯æŒå¤§å°æ¯”较,排åºï¼ˆè½¬
+% æ¢æˆå­—符串)。默认值为 \cs{dbtoday}。
+% \item[\texttt{str}]
+% 字符串类型,支æŒæ­£åˆ™åŒ¹é…,英文排åºã€‚默认值为空。
+% \item[\texttt{tl}]
+% \meta{token list}类型,支æŒæ­£åˆ™åŒ¹é…。默认值为空。
+% \item[\texttt{int}]
+% 整数类型,支æŒå¤§å°æ¯”较,排åºã€‚默认值为0。
+% \item[\texttt{fp}]
+% 浮点数类型,支æŒå¤§å°æ¯”较,排åºã€‚默认值为0。
+% \item[\texttt{clist}]
+% 逗å·åˆ†éš”的列表类型。默认值为空列表。
+% \end{Description}
+%
+% \changes{1.3}{2022-01-08}{Remove dependency}{\pkg{datatime2}}
+% 除了日期类型,所有类型都是 \pkg{expl3} 的内置类型。\pkg{dbshow} 构建了一个简å•
+% çš„ |date| 类型,支æŒè½¬æ¢æˆæ•´æ•°ä»¥åŠå¸¦æ ·å¼çš„打å°ã€‚
+%
+% \subsection{与 \pkg{datatool} 的区别}
+%
+% \changes{1.2}{2022-01-07}{Add doc}{add comparison to \pkg{datatool}}
+%
+% 从核心功能上看,\pkg{dbshow} å’Œ \pkg{datatool} 实现了相åŒçš„功能。区别在于
+% \pkg{dbshow} 基于 \pkg{expl3} 实现,支æŒå­—符串的正则匹é…,还支æŒå¤šçº§æŽ’åºã€‚使用
+% æ–¹å¼ä¸Šæ›´å€¾å‘于样å¼ä¸Žå†…容分离,所有的样å¼éƒ½å¯ä»¥é€šè¿‡é€‰é¡¹æå‰å®šä¹‰å¥½å¹¶ä¸”å¯ä»¥å¤ç”¨ã€‚
+% \pkg{dbshow} 并没有实现从外部文件读å–æ•°æ®ä»¥åŠå°†æ•°æ®æŒä¹…化的功能,我认为这些应
+% 该是更专业的外部程åºçš„工作而ä¸åº”该在 \LaTeX 中设计这些功能。因此,\pkg{dbshow}
+% åªæ供了一个è¿è¡Œæ—¶çš„临时数æ®åº“,足够轻便且满足大部分正常需求。如果你想删除或修
+% 改数æ®åº“中æŸä¸€æ¡è®°å½•ï¼Œè¯·åŽ»å¯¹åº”çš„ä½ç½®åˆ é™¤æˆ–修改掉对应的 \env{dbitem} 环境,而ä¸
+% 是让å®åŒ…æ供一个输出æŸä¸€è¡Œè®°å½•çš„命令。æŸç§æ„义上记录数æ®åº“çš„ \TeX æºæ–‡ä»¶æœ¬èº«å°±
+% 是数æ®çš„一ç§æŒä¹…化。
+%
+% \section{接å£æ–‡æ¡£}
+%
+% \subsection{创建ã€å±•ç¤ºå’Œæ¸…空数æ®åº“}
+%
+% \changes{1.4}{2022-01-10}{Update macro}{change \orbar\ to \cs{dbshow_sep} in
+% weird argument of \cs{dbshow_process_default_value:w}}
+% \begin{function}[added=2022-01-05, updated=2022-01-10]{\dbNewDatabase, \dbNewDatabase*}
+% \begin{syntax}
+% \cs{dbNewDatabase} \oarg{base database} \marg{database} \{ \\
+% ~~\meta{attr1} = \meta{type spec1}, \\
+% ~~\meta{attr2} = \meta{type spec2}, \\
+% ~~\ldots{} \\
+% \} \\
+% \cs{dbNewDatabase}* \marg{database} \{ \\
+% ~~\meta{attr1} = \meta{type spec1}, \\
+% ~~\meta{attr2} = \meta{type spec2}, \\
+% ~~\ldots{} \\
+% \} \\
+% \end{syntax}
+%
+% \end{function}
+%
+% 新建一个数æ®åº“,ä¸å¸¦æ˜Ÿå·çš„版本å¯ä»¥æŒ‡å®šä¸€ä¸ªæ•°æ®åº“æ¥ç»§æ‰¿å…¶å±žæ€§è®¾ç½®ï¼Œè¯¥ç‰ˆæœ¬æ€»æ˜¯
+% 会èˆå¼ƒæŽ‰ä¹‹å‰çš„定义。
+%
+% 带星å·çš„版本ä¸ä¼šèˆå¼ƒä¹‹å‰å·²æœ‰çš„定义,而是将新的选项添加到åŽé¢ã€‚
+%
+% \meta{attr} 为属性å称,\meta{type spec} 负责声明属性类型和属性默认值:
+%
+% \noindent\begin{tblr}{
+% colspec = {ll},
+% column{1} = {font = \ttfamily}
+% }
+% \meta{attr} = \meta{type} &
+% 将 \meta{attr} 声明为 \meta{type} 类型 \\
+% \meta{attr} = \meta{type}\orbar\meta{default} &
+% 将 \meta{attr} 声明为 \meta{type} 类型,并且将默认值设置为 \meta{default}。
+% \\
+% \end{tblr}
+%
+% \begin{note}
+% æ¯ä¸ªæ•°æ®åº“都有一个默认的属性 |id| 用æ¥å­˜å‚¨æ•°æ®çš„索引。
+% \end{note}
+%
+% 下é¢æ˜¯å®šä¹‰ä¸€ä¸ªé”™é¢˜æ•°æ®åº“的示例,|question| å’Œ |answer| 属性用æ¥å­˜å‚¨é—®é¢˜å’Œç­”
+% 案,|date| 属性存储日期,|info| 属性存储é¢å¤–ä¿¡æ¯ï¼Œ|labels| 存储题目标签。
+% \begin{verbatim}
+% \dbNewDatabase{ques}{
+% question = tl,
+% answer = tl,
+% date = date,
+% info = tl,
+% labels = clist
+% }
+% \end{verbatim}
+%
+% \begin{function}[added=2022-01-05]{\dbshow}
+% \begin{syntax}
+% \cs{dbshow} \marg{style} \marg{database}
+% \end{syntax}
+%
+% 使用 \meta{style} æ ·å¼æ¥å±•ç¤º \meta{database}。
+% \end{function}
+%
+% \changes{1.2}{2022-01-07}{Add macro}{\cs{dbclear}}
+% \begin{function}[added=2022-01-07]{\dbclear}
+% \begin{syntax}
+% \cs{dbclear} \marg{database}
+% \end{syntax}
+% 清空 \meta{database} 里的所有内容。
+% \end{function}
+%
+% \subsection{\cs{dbNewStyle} 和样å¼é€‰é¡¹}
+%
+% \begin{function}[added=2022-01-05]{\dbNewStyle}
+% \begin{syntax}
+% \cs{dbNewStyle} \oarg{base styles} \marg{style} \marg{database} \marg{opts}
+% \end{syntax}
+%
+% 为 \meta{database} å®šä¹‰ä¸€ä¸ªæ–°çš„æ ·å¼ \meta{style},该样å¼å¯ä»¥åŸºäºŽå·²æœ‰çš„æ ·å¼
+% \meta{base styles},比如 |\dbNewStyle[base1, base2]{new-style}{ques}{}|。
+% \end{function}
+%
+% \subsubsection{通用选项}
+%
+% \begin{option}[added=2022-01-05]{filter}
+% \begin{syntax}
+% filter = <filter>
+% \end{syntax}
+%
+% 为当å‰æ ·å¼è®¾ç½®ç”± \cs{dbCombineFilters} 所定义的过滤器
+% \end{option}
+%
+% \begin{option}[added=2022-01-06]{raw-filter}
+% \begin{syntax}
+% raw-filter = <conditional expression>
+% \end{syntax}
+%
+% 使用æ¡ä»¶è¡¨è¾¾å¼è®¾ç½®åŒ¿å过滤器,这里的æ¡ä»¶æŒ‡é€šè¿‡ \cs{dbNewConditional} 定义的
+% æ¡ä»¶ã€‚下é¢ä»£ç ä¸­ä¸¤ä¸ªç¤ºä¾‹çš„过滤器具有相åŒçš„功能。
+% \end{option}
+%
+% \changes{1.1}{2022-01-06}{Add option}{\opt{raw-filter}}
+%
+% \begin{verbatim}
+% % method 1
+% \begin{dbFilters}{db}
+% \dbNewConditional{cond1}{int-attr}{\rval > 1}
+% \dbNewConditional*{cond2}{str-attr}{\d+}
+% \end{dbFilters}
+% \dbNewStyle{style}{db}{raw-filter={cond1 && cond2}}
+% % method 2
+% \begin{dbFilters}{db}
+% \dbNewConditional{cond1}{int-attr}{\rval > 1}
+% \dbNewConditional*{cond2}{str-attr}{\d+}
+% \dbCombineFilters{filter}{cond1 && cond2}
+% \end{dbFilters}
+% \dbNewStyle{style}{db}{filter=filter}
+% \end{verbatim}
+%
+% \changes{1.2}{2022-01-08}{Fix bug}{string sorting bug}
+% \begin{option}[added=2022-01-05]{sort}
+% \begin{syntax}
+% sort = \{ <attr spec1>, <attr spec2>, \ldots{} \}
+% \end{syntax}
+%
+% 为当å‰æ ·å¼è®¾ç½®æŽ’åºè§„则。支æŒæ ¹æ® |str|,|date|,|int|,|fp| 类型的数æ®è¿›è¡ŒæŽ’
+% åºï¼Œæ”¯æŒå¤šçº§æŽ’åºã€‚\meta{attr} 表示增åºï¼Œ\meta{attr}* 表示é™åºã€‚下é¢ä¾‹å­ä¸­ï¼Œ
+% 使用 |sort-style| 展示数æ®æ—¶çš„顺åºä¸ºå…ˆæŒ‰ |level| é™åºï¼Œ|level| 相åŒçš„å†æŒ‰å‡º
+% 生日期 |birth| 增åºï¼Œä»¥æ­¤ç±»æŽ¨ã€‚
+% \end{option}
+%
+% \begin{verbatim}
+% \dbNewDatabase{sort-example}{
+% name = str,
+% birth = date,
+% level = int,
+% weight = fp,
+% }
+% \dbNewStyle{sort-style}{sort-example}{
+% sort = { level*, birth, name, weight }
+% }
+% \end{verbatim}
+%
+% \begin{option}[added=2022-01-05, rEXP]{item-code}
+% \begin{syntax}
+% item-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中æ¯æ¡è®°å½•çš„代ç ã€‚ä½ å¯ä»¥ä½¿ç”¨ \cs{dbuse} æ¥å±•ç¤ºå±žæ€§çš„
+% 值。
+% \end{option}
+%
+% \changes{1.3}{2022-01-09}{Update option}{\opt{<attr>/sep}}
+% \begin{option}[added=2022-01-05, updated=2022-01-08, rEXP]{<attr>/sep}
+% \begin{syntax}
+% <attr>/sep = <separator> \\
+% <attr>/sep = \{ \\
+% ~~\meta{separator between two}, \\
+% ~~\meta{separator between more than two}, \\
+% ~~\meta{separator between final two} \\
+% \} \\
+% <attr>/sep = \{ \\
+% ~~\meta{separator before year}, \\
+% ~~\meta{separator between year and month}, \\
+% ~~\meta{separator between month and day}, \\
+% ~~\meta{separator after day} \\
+% \} \\
+% \end{syntax}
+%
+% 该选项åªé€‚用于类型为 |clist| 或 |date| 的属性,用æ¥è®¾ç½®åˆ—表间元素的间隔。å‚
+% 数为一个 \meta{separator} 时,所有元素间的分隔符被设置为 \meta{separator}。
+% \meta{separator before year} 和 \meta{separator after day} 被设置为空。
+% \end{option}
+%
+% å‚数为3个元素的逗å·åˆ†éš”的列表时,此选项用æ¥è®¾ç½®åˆ—表元素的分隔符,分别用æ¥è®¾
+% ç½®åªæœ‰ä¸¤ä¸ªå…ƒç´ æ—¶çš„分隔符 \meta{separator between two},超过两个元素时的分隔
+% 符 \meta{separator between more than two},和最åŽä¸¤ä¸ªå…ƒç´ ä¹‹é—´çš„分隔符
+% \meta{separator between final two}。对于类型为 |clist| 的属性,设置此选项时
+% 如果å‚数列表数é‡ä¸æ˜¯1或者3会触å‘报错。
+%
+% \begin{verbatim}
+% % clist-attr is an attribute of database db
+% % suppose the val of clist-attr is { 1, 2, 3 }
+% \dbNewStyle{clist-sep}{db}{
+% clist-attr/sep = { ,~ }, % print 1, 2, 3
+% clist-attr/sep = { {,~}, {,~}, {and~} } % print 1, 2 and 3
+% }
+% \end{verbatim}
+%
+% å‚数为4个元素的逗å·åˆ†éš”的列表时,此选项用æ¥è®¾ç½®æ—¥æœŸçš„分隔符,分别用æ¥è®¾
+% ç½® \meta{year} 之å‰çš„分隔符 \meta{separator before year} ,\meta{year} å’Œ
+% \meta{month} 之间的分隔符 \meta{separator between year and month} ,
+% \meta{month} å’Œ \meta{day} ä¹‹é—´çš„åˆ†éš”ç¬¦ï¼Œä»¥åŠ \meta{day} 之åŽçš„分隔符。对于
+% 类型为 |date| 的属性,设置此选项时如果å‚数列表数é‡ä¸æ˜¯1或者4会触å‘报错。
+%
+% \begin{verbatim}
+% % date-attr is an attribute of database db
+% % suppose the val of date-attr is 2022/01/01
+% \dbNewStyle{date-sep}{db}{
+% date-attr/sep = -, % print 2022-01-01
+% date-attr/sep = { |, -, -, | } % print |2022-01-01|
+% }
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/zfill}}
+% \begin{option}[added=2022-01-08, EXP]{<attr>/zfill}
+% \begin{syntax}
+% <attr>/zfill = <\TTF>
+% \end{syntax}
+%
+% 该选项åªé€‚用于类型为 |date| 的属性。控制输出月份和天时是å¦è¡¥é›¶ã€‚
+% \end{option}
+%
+% \changes{1.4}{2022-01-13}{Add macro}{\cs{dbdatesep}}
+% \begin{function}[added=2022-01-13, EXP]{\dbdatesep}
+% \begin{syntax}
+% \cs{dbdatesep} \marg{separator}
+% \end{syntax}
+%
+% 设置内部解æžæ—¥æœŸæ—¶çš„间隔符,默认为 |/|,å³å­˜å‚¨æ•°æ®çš„æ ¼å¼ä¸º |yyyy/mm/dd|。
+% \end{function}
+%
+% \subsubsection{装饰器}
+%
+% 下é¢è¿™äº›é€‰é¡¹åœ¨ä¸åŒå±‚次上装饰原有的展示代ç ï¼Œæœ‰äº›å…¶å®žä¸å¿…通过选项的形å¼æ¥è£…饰,
+% 但这样åšçš„好处是å¯ä»¥è¿›ä¸€æ­¥ä½¿æ ·å¼ä¸Žå†…容分离。下é¢çš„例å­ä¸­ï¼Œ\meta{style1} å’Œ
+% \meta{style2} 是相åŒçš„æ ·å¼ï¼Œéƒ½ç”¨ * å°† \meta{attr1} 包裹ä½äº†ï¼Œä½†æ˜¯å¦‚果你还想定
+% 义一个样å¼ç”¨ = å°† \meta{attr1} 包裹ä½ï¼Œå¦‚果用 \meta{style1} çš„æ–¹å¼ï¼Œé‚£å°±å¯èƒ½
+% 需è¦é‡å¤å¤§ç‰‡ä»£ç ï¼Œç”¨ \meta{style2} çš„æ–¹å¼åˆ™å¯ä»¥å¾ˆè½»æ¾çš„继承 \meta{style1} 中的
+% 代ç ã€‚
+%
+% \begin{verbatim}
+% \dbNewStyle{style1}{db}{
+% item-code = {%
+% *\rvuse{attr1}*\rvuse{attr2}
+% % more code
+% }
+% }
+% \dbNewStyle{base-style}{db}{
+% item-code = {%
+% \rvuse{attr1}\rvuse{attr2}
+% % more code
+% }
+% }
+% \dbNewStyle[base-style]{style2}{db}{
+% attr1/before-code = { * },
+% attr1/after-code = { * },
+% }
+% \dbNewStyle[base-style]{style3}{db}{
+% attr1/before-code = { = },
+% attr1/after-code = { = },
+% }
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/wrapper}}
+% \begin{option}[added=2022-01-08, rEXP]{<attr>/wrapper}
+% \begin{syntax}
+% <attr>/wrapper = <control sequence>
+% \end{syntax}
+%
+% 该选项åªé€‚用于类型为 |date| 的属性。\meta{control sequence} åªæŽ¥æ”¶ä¸€ä¸ªå‚æ•°å³
+% 日期,如果设置了此选项,则最åŽè¾“出的日期为
+% \meta{control sequence}\marg{date}。
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{before-code}
+% \begin{syntax}
+% before-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºæ•´ä¸ªæ•°æ®åº“之\zhbefore 需è¦æ‰§è¡Œçš„代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{after-code}
+% \begin{syntax}
+% after-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºæ•´ä¸ªæ•°æ®åº“之\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
+% \end{option}
+%
+% \changes{1.2}{2022-01-08}{Add options}{\opt{record-before-code},
+% \opt{record-after-code}}
+% \begin{option}[added=2022-01-05, rEXP]{record-before-code}
+% \begin{syntax}
+% record-before-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºå½“å‰è®°å½•ä¹‹\zhbefore 需è¦æ‰§è¡Œçš„代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{record-after-code}
+% \begin{syntax}
+% record-after-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®åœ¨å±•ç¤ºå½“å‰è®°å½•ä¹‹\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/before-code}
+% \begin{syntax}
+% <attr>/before-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中属性 \meta{attr} 对应数æ®ä¹‹\zhbefore 需è¦æ‰§è¡Œçš„代
+% ç ã€‚\cs{dbuse} 会在展示属性数æ®\zhbefore 执行此代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/after-code}
+% \begin{syntax}
+% <attr>/after-code = <code>
+% \end{syntax}
+%
+% 该选项用æ¥è®¾ç½®å±•ç¤ºæ•°æ®åº“中属性 \meta{attr} 对应数æ®ä¹‹\zhafter 需è¦æ‰§è¡Œçš„代ç ã€‚
+% \cs{dbuse} 会在展示属性数æ®\zhafter 执行此代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/item-before-code}
+% \begin{syntax}
+% <attr>/item-before-code = <code>
+% \end{syntax}
+%
+% 该选项åªé€‚用于类型为 |clist| 的属性,用æ¥è®¾ç½®å±•ç¤ºåˆ—表æ¯ä¸ªå…ƒç´ \zhbefore 需è¦
+% 执行的代ç ã€‚
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/item-after-code}
+% \begin{syntax}
+% <attr>/item-after-code = <code>
+% \end{syntax}
+%
+% 该选项åªé€‚用于类型为 |clist| 的属性,用æ¥è®¾ç½®å±•ç¤ºåˆ—表æ¯ä¸ªå…ƒç´ \zhafter 需è¦æ‰§
+% 行的代ç ã€‚
+% \end{option}
+%
+% \subsection{使用 \cs{dbNewReviewPoints} 定义å¤ä¹ ç‚¹}
+%
+% \begin{function}[added=2022-01-05]{\dbNewReviewPoints}
+% \begin{syntax}
+% \cs{dbNewReviewPoints} \marg{name} \marg{points}
+% \end{syntax}
+%
+% 定义å为 \meta{name} çš„å¤ä¹ ç‚¹ã€‚这是专门为错题本或å¤ä¹ æ‰€å®šåˆ¶çš„功能,
+% \meta{points}是一系列整数,现在å‡è®¾æ¯é“错题你都将写错时的日期记录在了 |date|
+% 属性中,并且你希望æ¯éš”2,5,15天å¤ä¹ ä¸€æ¬¡ã€‚下é¢çš„代ç ç»™å‡ºäº†ä¸€ä¸ªå®žçŽ°ç¤ºä¾‹ã€‚
+% \end{function}
+%
+% \begin{verbatim}
+% \dbNewReviewPoints{review-point}{2, 5, 15} % 定义å¤ä¹ ç‚¹
+% \begin{dbFilters}
+% \dbNewConditional{cond1}{date}{review-point|\Today} % 定义å¤ä¹ æ¡ä»¶
+% \dbCombineConditionals{filter1}{cond1} % 定义过滤器
+% \end{dbFilters}
+% \dbNewStyle{review-style}{ques}{filter=filter1} % 定义展示样å¼
+% \end{verbatim}
+%
+% \subsection{在 \env{dbFilters} 环境中定义过滤器}
+%
+% \begin{environment}[added=2022-01-05]{dbFilters}
+% \begin{syntax}
+% |\begin{dbFilters}|\marg{database} \\
+% ~~\meta{code}
+% |\end{dbFilters}| \\
+% \end{syntax}
+%
+% \env{dbFilters}用æ¥å®šä¹‰è¿‡æ»¤å™¨ï¼Œæ­¤çŽ¯å¢ƒä¸­å®šä¹‰äº† \cs{dbNewConditional} 命令用æ¥
+% 定义æ¡ä»¶å’Œ \cs{dbCombineConditionals} 命令用æ¥ç»„åˆæ¡ä»¶å®šä¹‰è¿‡æ»¤å™¨ã€‚过滤器独立
+% 于æ¯ä¸ª \meta{database},这æ„味ç€ä½ å¯ä»¥åœ¨ä¸åŒæ•°æ®åº“中定义å称相åŒçš„过滤æ¡ä»¶å’Œ
+% 过滤器。
+% \end{environment}
+%
+% \begin{function}[added=2022-01-05, updated=2022-01-08]{\dbNewConditional, \dbNewConditional*}
+% \begin{syntax}
+% \cs{dbNewConditional} \marg{name} \marg{attr} \marg{cond spec} \\
+% \cs{dbNewConditional}* \marg{name} \marg{attr} \marg{cond spec} \\[2pt]
+% \cs{dbNewConditional} \marg{name} \marg{int/fp attr} \marg{expr} \\
+% \cs{dbNewConditional}* \marg{name} \marg{int/fp attr} \marg{expr} \\
+% \cs{dbNewConditional} \marg{name} \marg{str/tl attr} \marg{regex expr} \\
+% \cs{dbNewConditional}* \marg{name} \marg{str/tl attr} \marg{regex expr} \\
+% \cs{dbNewConditional} \marg{name} \marg{clist attr} \marg{val list} \\
+% \cs{dbNewConditional}* \marg{name} \marg{clist attr} \marg{val list} \\
+% \cs{dbNewConditional} \marg{name} \marg{date attr} \marg{expr}
+% \cs{dbNewConditional}* \marg{name} \marg{date attr} \{\meta{review points}\orbar\meta{date}\} \\
+% \end{syntax}
+%
+% \cs{dbNewConditional} 用æ¥å®šä¹‰å为 \meta{name} çš„æ¡ä»¶ï¼Œ\meta{attr} 指定æ¡ä»¶
+% 所绑定的属性,在 \meta{cond spec} 中å¯ä»¥ç”¨ \cs{dbval} 指代属性的值。
+% \end{function}
+%
+% \changes{1.3}{2022-01-10}{Update doc}{truncated division}
+% 对于类型为 |int| 和 |fp| 的属性,\meta{expr} 传递给 \cs{int_compare:nTF} 或
+% \cs{fp_compare:nTF} 处ç†ã€‚
+% \begin{note}
+% |/| 为四èˆäº”入除法,截断除法请用 \cs{dbIntDivTruncate}。
+% \end{note}
+%
+% 对于类型为 |str| å’Œ |tl| 的属性,\meta{regex} 为正则表达å¼ï¼Œ
+% \cs{dbNewConditional} 表示部分匹é…,\cs{dbNewConditional*} 表示整体匹é…。
+%
+% \begin{verbatim}
+% \dbNewConditional {cond1}{str-attr}{abc} % åŒ¹é… abc, abcd, 1abc, =abc= ç­‰
+% \dbNewConditional*{cond2}{str-attr}{abc} % åªåŒ¹é… abc
+% \end{verbatim}
+%
+% 对于类型为 |clist| 的属性,使用 \cs{dbNewConditional} 定义的æ¡ä»¶åªè¦
+% \meta{val list} 中的任æ„一个元素在属性值(列表)中则æ¡ä»¶æˆç«‹ï¼›ä½¿ç”¨
+% \cs{dbNewConditional*} 定义的æ¡ä»¶åªæœ‰ \meta{val list} 中æ¯ä¸€ä¸ªå€¼éƒ½åœ¨å±žæ€§å€¼
+% (列表)中æ¡ä»¶æ‰æˆç«‹ã€‚
+%
+% \begin{verbatim}
+% \dbNewConditional {cond1}{clist-attr}{a, b, c} % a, b, d 满足æ¡ä»¶
+% \dbNewConditional*{cond2}{clist-attr}{a, b, c} % a, b, d ä¸æ»¡è¶³æ¡ä»¶
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Update logic}{swap definition of starred and
+% unstarred conditionals of date}
+% 对于类型为 |date| 的属性,\cs{dbNewConditional} 定义的æ¡ä»¶åŽç»­å¤„ç†ä¸­ä¼šå°†
+% \meta{expr} 中的所有日期转æ¢æˆç›¸å¯¹\textit{1971å¹´1月1æ—¥}的一个整数值,然åŽå°†
+% 处ç†åŽçš„表达å¼ä¼ é€’ç»™ \cs{int_compare:nTF} åšè¿›ä¸€æ­¥å¤„ç†ï¼›
+% \cs{dbNewConditional*} 使用å¤ä¹ ç‚¹æ¥å®šä¹‰è¿‡æ»¤æ¡ä»¶ï¼Œ\meta{review points} 是
+% \cs{dbNewReviewPoints} 定义的å¤ä¹ ç‚¹ï¼Œ\meta{date} 是用æ¥æ¯”较的日期。
+%
+% \begin{function}[added=2022-01-05]{\dbCombineConditionals}
+% \begin{syntax}
+% \cs{dbCombineConditionals} \marg{name} \marg{cond combination} \oarg{info}
+% \end{syntax}
+%
+% \cs{dbCombineConditionals} 定义å为 \marg{name} 的过滤器,并将
+% \cs{dbNewConditional} 定义的æ¡ä»¶ç»„åˆèµ·æ¥ï¼Œæ¯”如
+% \verb=\dbCombineConditionals{filter}{(cond1 && cond2) || !cond3}=。
+% \meta{cond combination} 中å¯ä»¥ä½¿ç”¨çš„关系æ“作符为 \verb=&&, ||, !=。
+% å¯ä»¥å°† \opt{filter} 选项设置为 \meta{name} æ¥åº”用过滤器。\meta{info} 为过滤
+% 器的相关信æ¯ï¼Œåœ¨å±•ç¤ºæ•°æ®åº“的时候å¯ä»¥ç”¨ \cs{dbFilterInfo} 指代。
+% \end{function}
+%
+% \subsection{使用 \env{dbitem} 环境存储数æ®}
+%
+% \changes{1.4}{2022-01-13}{Update env}{dbitem}
+% \begin{environment}[added=2022-01-05, updated=2022-01-13]{dbitem}
+% \begin{syntax}
+% |\begin{dbitem}| \marg{database} \oarg{attr-val list}
+% ~~\meta{code} \\
+% |\end{dbitem}|
+% \end{syntax}
+%
+% \env{dbitem} 环境用æ¥å­˜å‚¨æ•°æ®ã€‚有两ç§å­˜å‚¨æ•°æ®çš„方法,较短的数æ®å¯ä»¥åœ¨é€‰é¡¹åˆ—
+% 表中通过键值对设置值,较长的数æ®å¯ä»¥åœ¨ \meta{code} 中使用 \cs{dbsave} 存储。
+% \meta{attr} = \meta{val} ç­‰åŒäºŽ \cs{dbsave}\marg{attr}\marg{val},
+% \meta{attr}* = \meta{val} ç­‰åŒäºŽ \cs{dbsave*}\marg{attr}\marg{val},数æ®åœ¨
+% |e| 或者 |x| 类型的å‚数中ä¸å¯å±•å¼€ã€‚\cs{dbsave}会覆盖选项中设置的值。没有设
+% 置的值将会被设置为全局默认值,下é¢ç»™å‡ºä¸€ä¸ªå­˜å‚¨ç¤ºä¾‹ã€‚
+% \end{environment}
+%
+% \begin{verbatim}
+% \begin{dbitem}[date = 2022-01-01, info = 测试]
+% \dbsave{question}{这是一个测试问题}
+% \dbsave{answer} {这是一个测试答案}
+% \end{dbitem}
+% \end{verbatim}
+%
+% \changes{1.4}{2022-01-13}{Add macro}{\cs{dbitemkv}}
+% \begin{function}[added=2022-01-13]{\dbitemkv}
+% \begin{syntax}
+% \cs{dbitemkv} \marg{database} \oarg{attr-val list}
+% \end{syntax}
+%
+% åªä½¿ç”¨ \meta{attr-val list} æ¥å­˜å‚¨æ•°æ®ã€‚
+% \end{function}
+%
+% \subsection{\cs{dbsave} 和 \cs{dbuse}}
+%
+% \changes{1.3}{2022-01-08}{Add macro}{\cs{dbsave*}}
+% \begin{function}[added=2022-01-05, updated=2022-01-08]{\dbsave, \dbsave*}
+% \begin{syntax}
+% \cs{dbsave} \marg{attr} \marg{data} \\
+% \cs{dbsave}* \marg{attr} \marg{data}
+% \end{syntax}
+%
+% \cs{dbsave} 用æ¥å­˜å‚¨æ•°æ®ï¼Œåªèƒ½åœ¨ \env{item} 环境中使用。使用 \cs{dbsave*} å­˜
+% 储的数æ®ä¼šè¢« \cs{exp_not:n} 包裹。
+% \end{function}
+%
+% \changes{1.2}{2022-01-08}{Update macro}{make \cs{dbuse} fully-expandable}
+% \begin{function}[added=2022-01-05, updated=2022-01-08, EXP]{\dbuse}
+% \begin{syntax}
+% \cs{dbuse} \marg{attr}
+% \end{syntax}
+%
+% \cs{dbuse} 用æ¥å±•ç¤ºæ•°æ®ï¼Œåªèƒ½åœ¨ \opt{item-code} 选项中使用。\cs{dbuse} 是å¯
+% 展开的。
+% \end{function}
+%
+% \subsection{æ¡ä»¶åˆ¤åˆ«å¼}
+%
+% \begin{function}[added=2022-01-05, EXP]{\dbIfEmptyT, \dbIfEmptyF, \dbIfEmptyTF}
+% \begin{syntax}
+% \cs{dbIfEmptyTF} \marg{true code} \marg{false code} \\
+% \cs{dbIfEmptyT} \marg{true code} \\
+% \cs{dbIfEmptyF} \marg{false code}
+% \end{syntax}
+%
+% 该判别å¼ç”¨æ¥åˆ¤æ–­å½“å‰æ•°æ®åº“是å¦ä¸ºç©ºã€‚下é¢çš„示例展示了如何预防空的列表环境。
+% \end{function}
+%
+% \begin{verbatim}
+% \dbNewStyle{style-cond1}{database-test}{
+% before-code = {\dbIfEmptyF{\begin{enumerate}}},
+% after-code = {\dbIfEmptyF{\end{enumerate}}},
+% item-code = {\item \dbuse{attr-test}}
+% }
+% \end{verbatim}
+%
+% \changes{1.2}{2022-01-08}{Remove macros}{\cs{dbItemIfEmpty(TF)}, \cs{dbClistItemIfEmpty(TF)}}
+%
+% \subsection{表达å¼å‡½æ•°}
+%
+% \changes{1.3}{2022-01-10}{Add macros}{expression function aliases}
+% \begin{function}[added=2022-01-10, EXP]{
+% \dbIntAbs, \dbIntSign, \dbIntDivRound, \dbIntDivTruncate, \dbIntMax,
+% \dbIntMin, \dbIntMod, \dbFpSign,
+% }
+% \begin{syntax}
+% \cs{dbIntAbs} \Arg{intexpr}
+% \cs{dbIntSign} \Arg{intexpr}
+% \cs{dbIntDivRound} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntDivTruncate} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMax} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMin} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMod} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbFpSign} \Arg{fpexpr}
+% \end{syntax}
+% \cs{dbIntAbs} ç­‰åŒäºŽ \cs{int_abs:n} \\
+% \cs{dbIntSign} ç­‰åŒäºŽ \cs{int_sign:n} \\
+% \cs{dbIntDivRound} ç­‰åŒäºŽ \cs{int_div_round:nn} \\
+% \cs{dbIntDivTruncate} ç­‰åŒäºŽ \cs{int_div_truncate:nn} \\
+% \cs{dbIntMax} ç­‰åŒäºŽ \cs{int_max:nn} \\
+% \cs{dbIntMin} ç­‰åŒäºŽ \cs{int_min:nn} \\
+% \cs{dbIntMod} ç­‰åŒäºŽ \cs{int_mod:nn} \\
+% \cs{dbFpSign} ç­‰åŒäºŽ \cs{fp_sign:n} \\
+% è¯¦ç»†çš„æ–‡æ¡£è§ \pkg{interface3} \\
+% \end{function}
+%
+% \subsection{特殊命令}
+%
+% \pkg{dbshow} 定义了一些特殊的命令,会根æ®è¯­å¢ƒå±•å¼€ä¸ºä¸åŒçš„内容。
+%
+% \changes{1.1}{2022-01-05}{Add macro}{
+% \cs{dbarabic}, \cs{dbalph}, \cs{dbAlph}, \cs{dbroman},
+% \cs{dbRoman}
+% }
+% \changes{1.1}{2022-01-06}{Fix bug}{\cs{dbIndex} not defined}
+% \begin{function}[added=2022-01-05, EXP]{
+% \dbval, \dbDatabase, \dbFilterName, \dbFilterInfo,
+% \dbIndex, \dbarabic, \dbalph, \dbAlph, \dbroman, \dbRoman
+% }
+% \begin{tblr}{ll}
+% \cs{dbval} & 当å‰å±žæ€§çš„值 \\
+% \cs{dbDatabase} & æ•°æ®åº“å称 \\
+% \cs{dbFilterName} & 当å‰æ ·å¼è¿‡æ»¤å™¨çš„å称 \\
+% \cs{dbFilterInfo} & 当å‰æ ·å¼è¿‡æ»¤å™¨çš„ç›¸å…³ä¿¡æ¯ \\
+% \cs{dbIndex} & æ•°æ®ç´¢å¼•ï¼Œç­‰åŒäºŽ \cs{dbuse}|{id}| \\
+% \cs{dbarabic} & 用数字表示的查询集数æ®è®¡æ•° \\
+% \cs{dbalph} & 用å°å†™å­—æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
+% \cs{dbAlph} & 用大写字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
+% \cs{dbroman} & 用å°å†™ç½—马字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
+% \cs{dbroman} & 用大写罗马字æ¯è¡¨ç¤ºçš„查询集数æ®è®¡æ•° \\
+% \end{tblr}
+% \end{function}
+%
+% \section{错题本示例}
+% è§ç¬¬ \ref{sec:example} 节。
+%
+% \changes{1.1}{2022-01-07}{Update doc}{improve example}
+%
+% \title{
+% Package \pkg{dbshow} \fileversion%
+% \protect\footnote{%
+% Repository: \url{https://github.com/ZhiyuanLck/dbshow},
+% Telegram Group: \url{https://t.me/latex_dbshow}}
+% \rlap{\makebox[4cm][r]{
+% \normalsize $\Longrightarrow$ \color{red}
+% \linktarget{zh}{en}{中文版本}
+% }}
+% }
+% \author{Changkai Li \protect\path{<lichangkai225@qq.com>}}
+% \date{\filedate}
+% \maketitle
+%
+% \section{Introduction}
+%
+% The initial motivation to write this package is that I want to write a
+% template, which can collect questions you gave the wrong answer and can
+% display those questions you would like to review by some conditionals, such as
+% questions with certain label, questions you have answered uncorrectly for
+% certain times or questions having not been reviewed for certain days. So this
+% package provides a database to do such thing.
+%
+% The package provides four core functions: data storage and display, data
+% filtering, data sorting and data display. All data is saved once and then you
+% can display these data with custom filters, orders and styles.
+%
+% \changes{1.4}{2022-01-10}{Add check}{version of \pkg{l3kernel}}
+% \pkg{dbshow} depends on \pkg{l3kernel} with version date after |2022-11-07|.
+%
+% \changes{1.3}{2022-01-09}{Add doc}{descripton for expansion}
+% \begin{itemize}
+% \item Macros with a $\star$ are fully-expandable;
+% \item Macros with a \ding{73} are restricted-expandable;
+% \item Macros without appending a special symbol are nonexpandable;
+% \item Options with a $\star$ \textit{do not} affect the expandability of
+% related macros;
+% \item Options with a \ding{73} affect the expandability of related macros
+% according to its value;
+% \item Options without appending a special symbol make the related macros
+% nonexpandable.
+% \end{itemize}
+%
+% \subsection{Data Types}
+%
+% The package constructs 6 types based on the internal typed of \pkg{expl3}:
+% \begin{Description}[\texttt{clist}]
+% \item[\texttt{date}]
+% date saved in |yyyy/mm/dd| format, supports comparison, sorting
+% (converting to string), default \cs{dbtoday}.
+% \item[\texttt{str}]
+% string,supports regex match and sorting, default empty.
+% \item[\texttt{tl}]
+% token list, supports regex match, default empty.
+% \item[\texttt{int}]
+% integer, supports comparison and sorting, default 0.
+% \item[\texttt{fp}]
+% floating point, supports comparison and sorting, default 0.
+% \item[\texttt{clist}]
+% comma list, default empty.
+% \end{Description}
+%
+% \changes{1.3}{2022-01-08}{Remove dependency}{\pkg{datatime2}}
+% All types are internal types of \pkg{expl3} except |date| type, which provides
+% by \pkg{dbshow} itself and supports converting to integer and printing with
+% style.
+%
+% \subsection{Comparison to \pkg{datatool}}
+%
+% \changes{1.2}{2022-01-07}{Add doc}{add comparison to \pkg{datatool}}
+%
+% \pkg{dbshow} and \pkg{datatool} implement the same core functions. But
+% \pkg{dbshow} is based on \pkg{expl3} and it supports string regex and
+% multi-level sorting. \pkg{dbshow} tries to divide style from the contents
+% (data in database): all styles are predefined and can be reused conveniently
+% so that there can be only codes to save data and one-line code to show the
+% database inside the \env{document} environment. You can hide the details in
+% the preamble and focus on the data you want to display. \pkg{dbshow} provides
+% a simple temporary runtime database, which means it can not input and output
+% data from/to extern files (they should be responsible by some professional
+% programming languages). When you need to delete or revise a record, just go to
+% where it is recorded in the source code rather than use a macro to manipulate
+% data after they are saved. In a sense, \TeX~file is also a kind of data
+% persistence.
+%
+% \section{Interfaces}
+%
+% \subsection{Create, Display and Clear Database}
+%
+% \changes{1.4}{2022-01-10}{Update macro}{change \orbar\ to \cs{dbshow_sep} in
+% weird argument of \cs{dbshow_process_default_value:w}}
+% \begin{function}[added=2022-01-05, updated=2022-01-10]{\dbNewDatabase, \dbNewDatabase*}
+% \begin{syntax}
+% \cs{dbNewDatabase} \oarg{base database} \marg{database} \{ \\
+% ~~\meta{attr1} = \meta{type spec1}, \\
+% ~~\meta{attr2} = \meta{type spec2}, \\
+% ~~\ldots{} \\
+% \} \\
+% \cs{dbNewDatabase}* \marg{database} \{ \\
+% ~~\meta{attr1} = \meta{type spec1}, \\
+% ~~\meta{attr2} = \meta{type spec2}, \\
+% ~~\ldots{} \\
+% \} \\
+% \end{syntax}
+%
+% \end{function}
+%
+% Create a new database named \meta{database}, unstarred form provides the optional
+% \meta{base database} from which current database inherit the attributes settings.
+% The unstarred form always replace the old definition, while starred form
+% appends the new options.
+%
+% \begin{syntax}
+% \meta{attr} = \meta{type} \\
+% \meta{attr} = \meta{type}\orbar\meta{default}
+% \end{syntax}
+%
+% The first form defines the \meta{attr} as \meta{type}, and the second also
+% sets the default value.
+%
+% \begin{note}
+% Every database has a default attribute |id| to store the index of the item.
+% \end{note}
+%
+% The example below define a database named |ques|.
+% \begin{verbatim}
+% \dbNewDatabase{ques}{
+% question = tl, % store question
+% answer = tl, % store corresponding answer
+% date = date, % store the date when you were wrong
+% info = tl, % store extra info
+% labels = clist % store question labels
+% }
+% \end{verbatim}
+%
+% \begin{function}[added=2022-01-05]{\dbshow}
+% \begin{syntax}
+% \cs{dbshow} \marg{style} \marg{database}
+% \end{syntax}
+%
+% Show the \meta{database} with \meta{style}.
+% \end{function}
+%
+% \changes{1.2}{2022-01-07}{Add macro}{\cs{dbclear}}
+% \begin{function}[added=2022-01-07]{\dbclear}
+% \begin{syntax}
+% \cs{dbclear} \marg{database}
+% \end{syntax}
+%
+% Clear the content of \meta{database}.
+% \end{function}
+%
+% \subsection{\cs{dbNewStyle} and Style Options}
+%
+% \begin{function}[added=2022-01-05]{\dbNewStyle}
+% \begin{syntax}
+% \cs{dbNewStyle} \oarg{base styles} \marg{style} \marg{database} \marg{opts}
+% \end{syntax}
+%
+% Define a new \meta{style} that binds to \meta{database}. The style can
+% inherit from a list of \meta{base styles} such as
+% |\dbNewStyle[base1, base2]{new-style}{ques}{}|.
+% \end{function}
+%
+% \subsubsection{General Options}
+%
+% \begin{option}[added=2022-01-05]{filter}
+% \begin{syntax}
+% filter = <filter>
+% \end{syntax}
+%
+% Set the \meta{filter} defined by \cs{dbCombineFilters}.
+% \end{option}
+%
+% \changes{1.1}{2022-01-06}{Add option}{\opt{raw-filter}}
+% \begin{option}[added=2022-01-06]{raw-filter}
+% \begin{syntax}
+% raw-filter = <conditional expression>
+% \end{syntax}
+%
+% Set anonymous with conditionals defined by \cs{dbNewConditional}. Two
+% filters shows in the code below have the same meaning.
+% \end{option}
+%
+% \begin{verbatim}
+% % method 1
+% \begin{dbFilters}{db}
+% \dbNewConditional{cond1}{int-attr}{\rval > 1}
+% \dbNewConditional*{cond2}{str-attr}{\d+}
+% \end{dbFilters}
+% \dbNewStyle{style}{db}{raw-filter={cond1 && cond2}}
+% % method 2
+% \begin{dbFilters}{db}
+% \dbNewConditional{cond1}{int-attr}{\rval > 1}
+% \dbNewConditional*{cond2}{str-attr}{\d+}
+% \dbCombineFilters{filter}{cond1 && cond2}
+% \end{dbFilters}
+% \dbNewStyle{style}{db}{filter=filter}
+% \end{verbatim}
+%
+% \changes{1.2}{2022-01-08}{Fix bug}{string sorting bug}
+% \begin{option}[added=2022-01-05]{sort}
+% \begin{syntax}
+% sort = \{ <attr spec1>, <attr spec2>, \ldots{} \}
+% \end{syntax}
+%
+% Set sorting rules. Attributes of type |str, date, int, fp| is supported to
+% sort. Multi-level sort is allowed. \meta{attr} represents for ascending
+% order, and \meta{attr}* represents for descending order. The example below
+% use four fields to determine the order of the records. It sorts on |level|
+% in descending order first and if two |levels| are same then sorts on |birth|
+% in ascending order and so on.
+% \end{option}
+%
+% \begin{verbatim}
+% \dbNewDatabase{sort-example}{
+% name = str,
+% birth = date,
+% level = int,
+% weight = fp,
+% }
+% \dbNewStyle{sort-style}{sort-example}{
+% sort = { level*, birth, name, weight }
+% }
+% \end{verbatim}
+%
+% \begin{option}[added=2022-01-05, rEXP]{item-code}
+% \begin{syntax}
+% item-code = <code>
+% \end{syntax}
+%
+% Set the code that show a single record. You can use \cs{dbuse} to display
+% certian attribute.
+% \end{option}
+%
+% \changes{1.3}{2022-01-09}{Update option}{\opt{<attr>/sep}}
+% \begin{option}[added=2022-01-05, updated=2022-01-08, rEXP]{<attr>/sep}
+% \begin{syntax}
+% <attr>/sep = <separator> \\
+% <attr>/sep = \{ \\
+% ~~\meta{separator between two}, \\
+% ~~\meta{separator between more than two}, \\
+% ~~\meta{separator between final two} \\
+% \} \\
+% <attr>/sep = \{ \\
+% ~~\meta{separator before year}, \\
+% ~~\meta{separator between year and month}, \\
+% ~~\meta{separator between month and day}, \\
+% ~~\meta{separator after day} \\
+% \} \\
+% \end{syntax}
+%
+% Only for attributes of type |clist| or |date|. Set the separator between
+% items. If the argument is an one-item comma list, all separators are set to
+% \meta{separator} but \meta{separator before year} and \meta{separator after
+% day} is set empty.
+% \end{option}
+%
+% If the argument is a comma list of 3 items, it is used to set the separator
+% between items of the comma list. Following documentation is quoted from
+% \pkg{interface3}:
+% \begin{quote}
+% If the comma list has more than two items, the \meta{separator between
+% more than two} is placed between each pair of items except the last, for
+% which the \meta{separator between final two} is used. If the comma list
+% has exactly two items, then they are placed in the input stream separated
+% by the \meta{separator between two}. If the comma list has a single item,
+% it is placed in the input stream, and a comma list with no items produces
+% no output.
+% \end{quote}
+% For attributes of type |clist|, incorrect number (numbers exclude 1 and 3)
+% of items of the argument will raise an error.
+%
+% \begin{verbatim}
+% % clist-attr is an attribute of database db
+% % suppose the val of clist-attr is { 1, 2, 3 }
+% \dbNewStyle{clist-sep}{db}{
+% clist-attr/sep = { ,~ }, % print 1, 2, 3
+% clist-attr/sep = { {,~}, {,~}, {and~} } % print 1, 2 and 3
+% }
+% \end{verbatim}
+%
+% If the argument is a comma list of 4 items, it is used to set the separators
+% of the date. For attributes of type |date|, incorrect number (numbers
+% exclude 1 and 4) will raise an error.
+%
+% \begin{verbatim}
+% % date-attr is an attribute of database db
+% % suppose the val of date-attr is 2022/01/01
+% \dbNewStyle{date-sep}{db}{
+% date-attr/sep = -, % print 2022-01-01
+% date-attr/sep = { |, -, -, | } % print |2022-01-01|
+% }
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/zfill}}
+% \begin{option}[added=2022-01-08, EXP]{<attr>/zfill}
+% \begin{syntax}
+% <attr>/zfill = <\TTF>
+% \end{syntax}
+%
+% Only for attributes of type |date|. Control whether to fill zero on the left
+% of the month or day.
+% \end{option}
+%
+% \changes{1.4}{2022-01-13}{Add macro}{\cs{dbdatesep}}
+% \begin{function}[added=2022-01-13, EXP]{\dbdatesep}
+% \begin{syntax}
+% \cs{dbdatesep} \marg{separator}
+% \end{syntax}
+%
+% Set the separator for internal date parsing. The default value is |/|,
+% i.e. the date must be store in the format of |yyyy/mm/dd|.
+% \end{function}
+%
+% \subsubsection{Decorators}
+%
+% The options below serves as decorators. In some cases, decorator can also be
+% encoded directly into |item-code| or some other places, which is convenient
+% sometimes. The benefit of defining decorators with options is that styles step
+% further to be divided with contents. In the examples below, \meta{style1} and
+% \meta{style2} is the same style, which wrap \meta{attr1} with *. When you want
+% another style which wrap \meta{attr1} with =, if you choose the way of
+% \meta{style1}, \meta{item code} are repeated, otherwise if you choose the way
+% of \meta{style2}, \meta{item code} is inherited and you only need define the
+% decorators.
+%
+% \begin{verbatim}
+% \dbNewStyle{style1}{db}{
+% item-code = {%
+% *\rvuse{attr1}*\rvuse{attr2}
+% % more code
+% }
+% }
+% \dbNewStyle{base-style}{db}{
+% item-code = {%
+% \rvuse{attr1}\rvuse{attr2}
+% % more code
+% }
+% }
+% \dbNewStyle[base-style]{style2}{db}{
+% attr1/before-code = { * },
+% attr1/after-code = { * },
+% }
+% \dbNewStyle[base-style]{style3}{db}{
+% attr1/before-code = { = },
+% attr1/after-code = { = },
+% }
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Add option}{\opt{<attr>/wrapper}}
+% \begin{option}[added=2022-01-08, rEXP]{<attr>/wrapper}
+% \begin{syntax}
+% <attr>/wrapper = <control sequence>
+% \end{syntax}
+%
+% Only for attributes of type |date|. Output of \cs{dbuse}\marg{date attr}
+% will be \meta{control sequence}\marg{date}.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{before-code}
+% \begin{syntax}
+% before-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed \enbefore displaying the database.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{after-code}
+% \begin{syntax}
+% after-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed \enafter displaying the database.
+% \end{option}
+%
+% \changes{1.2}{2022-01-08}{Add options}{\opt{record-before-code},
+% \opt{record-after-code}}
+% \begin{option}[added=2022-01-05, rEXP]{record-before-code}
+% \begin{syntax}
+% record-before-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed \enbefore displaying a record.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{record-after-code}
+% \begin{syntax}
+% record-after-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed \enafter displaying the record.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/before-code}
+% \begin{syntax}
+% <attr>/before-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed by \cs{dbuse} \enbefore displaying
+% certain attribute.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/after-code}
+% \begin{syntax}
+% <attr>/after-code = <code>
+% \end{syntax}
+%
+% Set the \meta{code} that is executed by \cs{dbuse} \enafter displaying
+% certain attribute.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/item-before-code}
+% \begin{syntax}
+% <attr>/item-before-code = <code>
+% \end{syntax}
+%
+% Only for attributes of type |clist|. Set the \meta{code} that is excuted
+% \enbefore displaying the item of the comma list.
+% \end{option}
+%
+% \begin{option}[added=2022-01-05, rEXP]{<attr>/item-after-code}
+% \begin{syntax}
+% <attr>/item-after-code = <code>
+% \end{syntax}
+%
+% Only for attributes of type |clist|. Set the \meta{code} that is excuted
+% \enafter displaying the item of the comma list.
+% \end{option}
+%
+% \subsection{Use \cs{dbNewReviewPoints} to Define Review Points}
+%
+% \begin{function}[added=2022-01-05]{\dbNewReviewPoints}
+% \begin{syntax}
+% \cs{dbNewReviewPoints} \marg{name} \marg{points}
+% \end{syntax}
+%
+% Define the new \meta{points} that is specially designed for reviewing
+% something. \meta{points} is a list of integers. Suppose you record the date
+% when you did not answer correctly and you plan to review every 2, 5 and 15
+% days. The following code give what you want.
+% \end{function}
+%
+% \begin{verbatim}
+% \dbNewReviewPoints{review-point}{2, 5, 15} % define points
+% \begin{dbFilters}
+% \dbNewConditional{cond1}{date}{review-point|\Today} % define conditional
+% \dbCombineConditionals{filter1}{cond1} % define filter
+% \end{dbFilters}
+% \dbNewStyle{review-style}{ques}{filter=filter1} % define style
+% \end{verbatim}
+%
+% \subsection{Define Filters inside \env{dbFilters} Environment}
+%
+% \begin{environment}[added=2022-01-05]{dbFilters}
+% \begin{syntax}
+% |\begin{dbFilters}|\marg{database} \\
+% ~~\meta{code}
+% |\end{dbFilters}| \\
+% \end{syntax}
+%
+% Filters are defined inside \env{dbFilters} environment, inside which,
+% \cs{dbNewConditional} is defined to declare conditionals and
+% \cs{dbCombineConditionals} is defined to combine conditionals. Filters are
+% independent in different databases, which means the same name of filters is
+% allowed in different databases.
+% \end{environment}
+%
+% \begin{function}[added=2022-01-05, updated=2022-01-08]{\dbNewConditional, \dbNewConditional*}
+% \begin{syntax}
+% \cs{dbNewConditional} \marg{name} \marg{attr} \marg{cond spec} \\
+% \cs{dbNewConditional}* \marg{name} \marg{attr} \marg{cond spec} \\[2pt]
+% \cs{dbNewConditional} \marg{name} \marg{int/fp attr} \marg{expr} \\
+% \cs{dbNewConditional}* \marg{name} \marg{int/fp attr} \marg{expr} \\
+% \cs{dbNewConditional} \marg{name} \marg{str/tl attr} \marg{regex expr} \\
+% \cs{dbNewConditional}* \marg{name} \marg{str/tl attr} \marg{regex expr} \\
+% \cs{dbNewConditional} \marg{name} \marg{clist attr} \marg{val list} \\
+% \cs{dbNewConditional}* \marg{name} \marg{clist attr} \marg{val list} \\
+% \cs{dbNewConditional} \marg{name} \marg{date attr} \marg{expr}
+% \cs{dbNewConditional}* \marg{name} \marg{date attr} \{\meta{review points}\orbar\meta{date}\} \\
+% \end{syntax}
+%
+% Define the conditional named \meta{name} that binds to \meta{attr}. \cs{dbval}
+% is replaced with the real value of the attribute inside the \meta{cond spec}.
+% \end{function}
+%
+% \changes{1.3}{2022-01-10}{Update doc}{truncated division}
+% For attributes of type |int| and |fp|, \meta{expr} is passed to
+% \cs{int_compare:nTF} or \cs{fp_compare:nTF}.
+% \begin{note}
+% Division using |/| rounds to the closest integer. Use \cs{dbIntDivTruncate} to rounds
+% the result toward 0.
+% \end{note}
+%
+% For attribute of type |str| and |tl|, unstarred form matches any part while
+% starred form matches the whole part with the \meta{regex expr}.
+%
+% \begin{verbatim}
+% \dbNewConditional {cond1}{str-attr}{abc} % match abc, abcd, 1abc, =abc=, etc
+% \dbNewConditional*{cond2}{str-attr}{abc} % only match abc
+% \end{verbatim}
+%
+% For attributes of type |clist|, the conditional defined by unstarred form is
+% true if any item of \meta{val list} is in the comma list. While the
+% conditional defined by starred form is true only if every item of \meta{val
+% list} is in the comma list. As is showed below, for |cond1|, |a| is in
+% |{a, b, d}| so |cond1| is true. While |c| is not in |{a, b, d}| so |cond2|
+% is false.
+%
+% \begin{verbatim}
+% \dbNewConditional {cond1}{clist-attr}{a, b, c} % {a, b, d} -> true
+% \dbNewConditional*{cond2}{clist-attr}{a, b, c} % {a, b, d} -> false
+% \end{verbatim}
+%
+% \changes{1.3}{2022-01-08}{Update logic}{swap definition of starred and
+% unstarred conditionals of date}
+% For attributes of type |date|, unstarred form replace each date with a
+% integer representing for the days between \meta{date} and
+% \textit{1971/01/01}, and the result is passed to \cs{int_compare:nTF}.
+% Starred form defines the conditional with review points defined by
+% \cs{dbNewRdbNewReviewPoints} and \meta{date} is the date to be compared.
+%
+% \begin{function}[added=2022-01-05]{\dbCombineConditionals}
+% \begin{syntax}
+% \cs{dbCombineConditionals} \marg{name} \marg{cond combination} \oarg{info}
+% \end{syntax}
+%
+% Define the filter \meta{name}, which combine the conditionals and store the
+% extra \meta{info} into \cs{dbFilterInfo}. So you can write something as\\
+% \verb=\dbCombineConditionals{filter}{(cond1 && cond2) || !cond3}=.\\
+% Supported operators are \verb=&&, ||, !=. You can set the option \opt{filter}
+% to \meta{name} to apply the filter when you display the database.
+% \end{function}
+%
+% \subsection{Store Data with \env{dbitem} Environment}
+%
+% \changes{1.4}{2022-01-13}{Update env}{dbitem}
+% \begin{environment}[added=2022-01-05, updated=2022-01-13]{dbitem}
+% \begin{syntax}
+% |\begin{dbitem}| \marg{database} \oarg{attr-val list}
+% ~~\meta{code} \\
+% |\end{dbitem}|
+% \end{syntax}
+%
+% The data are stored with \env{dbitem} environment in two ways. Short data
+% can be stored in \meta{attr-val list} and long data can be stored by
+% \cs{dbsave}, which will suppress the value set by the option list.
+% \meta{attr} = \meta{val} is equal to \cs{dbsave}\marg{attr}\marg{val}, and
+% \meta{attr} = \meta{val} is equal to \cs{dbsave*}\marg{attr}\marg{val},
+% in which case, data will not be expanded in an |e| or |x|-type argument.
+% An example code is showned below.
+% \end{environment}
+%
+% \begin{verbatim}
+% \begin{dbitem}[date=2022-01-01, info=test]
+% \dbsave{question}{This is a test question.}
+% \dbsave{answer} {This is a test answer.}
+% \end{dbitem}
+% \end{verbatim}
+%
+% \changes{1.4}{2022-01-13}{Add macro}{\cs{dbitemkv}}
+% \begin{function}[added=2022-01-13]{\dbitemkv}
+% \begin{syntax}
+% \cs{dbitemkv} \marg{database} \oarg{attr-val list}
+% \end{syntax}
+%
+% Store data with \meta{attr-val list}.
+% \end{function}
+%
+% \subsection{\cs{dbsave} and \cs{dbuse}}
+%
+% \changes{1.3}{2022-01-08}{Add macro}{\cs{dbsave*}}
+% \begin{function}[added=2022-01-05, updated=2022-01-08]{\dbsave, \dbsave*}
+% \begin{syntax}
+% \cs{dbsave} \marg{attr} \marg{data} \\
+% \cs{dbsave}* \marg{attr} \marg{data}
+% \end{syntax}
+%
+% \cs{dbsave} save the \meta{data} to \meta{attr} of current record.
+% \cs{dbsave} can be used only inside the \env{dbitem} environment.
+% \meta{data} stored by \cs{dbsave*} is wrapped with \cs{exp_not:n} while
+% \meta{data} stored by \cs{dbsave} keeps the same.
+% \end{function}
+%
+% \changes{1.2}{2022-01-08}{Update macro}{make \cs{dbuse} fully-expandable}
+% \begin{function}[added=2022-01-05, updated=2022-01-08, EXP]{\dbuse}
+% \begin{syntax}
+% \cs{dbuse} \marg{attr}
+% \end{syntax}
+%
+% Display the value of \meta{attr} of current record. \cs{dbuse} is
+% \textbf{expandable} and can be only used inside the option \opt{item-code}.
+% \end{function}
+%
+% \subsection{Conditionals}
+%
+% \begin{function}[added=2022-01-05, EXP]{\dbIfEmptyT, \dbIfEmptyF, \dbIfEmptyTF}
+% \begin{syntax}
+% \cs{dbIfEmptyTF} \marg{true code} \marg{false code} \\
+% \cs{dbIfEmptyT} \marg{true code} \\
+% \cs{dbIfEmptyF} \marg{false code}
+% \end{syntax}
+%
+% Test if the database is empty. The example below shows how to avoid an empty
+% list environment.
+% \end{function}
+%
+% \begin{verbatim}
+% \dbNewStyle{style-cond1}{database-test}{
+% before-code = {\dbIfEmptyF{\begin{enumerate}}},
+% after-code = {\dbIfEmptyF{\end{enumerate}}},
+% item-code = {\item \dbuse{attr-test}}
+% }
+% \end{verbatim}
+%
+% \changes{1.2}{2022-01-08}{Remove macros}{\cs{dbItemIfEmpty(TF)}, \cs{dbClistItemIfEmpty(TF)}}
+%
+% \subsection{Expression Functions}
+%
+% \changes{1.3}{2022-01-10}{Add macros}{expression function aliases}
+% \begin{function}[added=2022-01-10, EXP]{
+% \dbIntAbs, \dbIntSign, \dbIntDivRound, \dbIntDivTruncate, \dbIntMax,
+% \dbIntMin, \dbIntMod, \dbFpSign,
+% }
+% \begin{syntax}
+% \cs{dbIntAbs} \Arg{intexpr}
+% \cs{dbIntSign} \Arg{intexpr}
+% \cs{dbIntDivRound} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntDivTruncate} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMax} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMin} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbIntMod} \Arg{intexpr_1} \marg{intexpr_2}
+% \cs{dbFpSign} \Arg{fpexpr}
+% \end{syntax}
+% \cs{dbIntAbs} is identical to \cs{int_abs:n} \\
+% \cs{dbIntSign} is identical to \cs{int_sign:n} \\
+% \cs{dbIntDivRound} is identical to \cs{int_div_round:nn} \\
+% \cs{dbIntDivTruncate} is identical to \cs{int_div_truncate:nn} \\
+% \cs{dbIntMax} is identical to \cs{int_max:nn} \\
+% \cs{dbIntMin} is identical to \cs{int_min:nn} \\
+% \cs{dbIntMod} is identical to \cs{int_mod:nn} \\
+% \cs{dbFpSign} is identical to \cs{fp_sign:n} \\
+% Detailed documentation see \pkg{interface3} \\
+% \end{function}
+%
+% \subsection{Special Macros}
+%
+% Some special macros are defined to expand to different contents according to context.
+%
+% \changes{1.1}{2022-01-05}{Add macro}{
+% \cs{dbarabic}, \cs{dbalph}, \cs{dbAlph}, \cs{dbroman},
+% \cs{dbRoman}
+% }
+% \changes{1.1}{2022-01-06}{Fix bug}{\cs{dbIndex} not defined}
+% \begin{function}[added=2022-01-05, EXP]{
+% \dbval, \dbDatabase, \dbFilterName, \dbFilterInfo,
+% \dbIndex, \dbarabic, \dbalph, \dbAlph, \dbroman, \dbRoman
+% }
+% \begin{tblr}{ll}
+% \cs{dbval} & Attribute value, only according in \cs{dbNewConditional}. \\
+% \cs{dbDatabase} & Database name. \\
+% \cs{dbFilterName} & Filter name. \\
+% \cs{dbFilterInfo} & Filter information. \\
+% \cs{dbIndex} & Record index, identical to \cs{dbuse}|{id}| \\
+% \cs{dbarabic} & Show the counter of query set as digits. \\
+% \cs{dbalph} & Show the counter of query set as lowercase letters. \\
+% \cs{dbAlph} & Show the counter of query set as uppercase letters. \\
+% \cs{dbroman} & Show the counter of query set as lowercase roman numerals. \\
+% \cs{dbroman} & Show the counter of query set as uppercase roman numerals. \\
+% \end{tblr}
+% \end{function}
+%
+% \section{Example of Flaw Sweeper Template}
+% \label{sec:example}
+%
+% \changes{1.1}{2022-01-07}{Update doc}{improve example}
+%
+% \begin{verbatim}
+% \documentclass{article}
+% \usepackage{amsmath, physics}
+% \usepackage{geometry}
+% \usepackage{dbshow}
+% \usepackage{tikz}
+% \usepackage{tcolorbox}
+% \tcbuselibrary{skins}
+% \usetikzlibrary{shadings}
+% \usepackage[hidelinks]{hyperref}
+%
+% \geometry{
+% margin=2cm
+% }
+%
+% % #1 link node #2 target node #3 text to show
+% \NewDocumentCommand \linktarget { m m m } {%
+% \hyperlink{#1}{#3}%
+% \raisebox{1em}{\hypertarget{#2}{}}%
+% }
+%
+% % question box
+% \tcbset{
+% base/.style={
+% empty,
+% frame engine=path,
+% colframe=yellow!10,
+% coltitle=red!70,
+% fonttitle=\bfseries\sffamily,
+% sharp corners,
+% left=4pt,
+% right=4pt,
+% drop fuzzy shadow,
+% drop fuzzy shadow,
+% borderline west={3pt}{-3pt}{red!80},
+% }
+% }
+%
+% \newtcolorbox{mybox}[1]{%
+% base, title = {#1}
+% }
+%
+% \dbNewReviewPoints{review}{1, 3, 7, 15, 30, 60}
+%
+% \dbNewDatabase{ques-book}{
+% ques = tl,
+% answer = tl,
+% count = int|1,
+% labels = clist,
+% date = date,
+% }
+%
+% \begin{dbFilters}{ques-book}
+% \dbNewConditional{hard}{labels}{hard}
+% \dbNewConditional{bad}{count}{\dbval > 1}
+% \dbNewConditional*{review}{date}{review|2022/01/07}
+% \dbNewConditional{after}{date}{\dbval > 2022/01/02}
+% \end{dbFilters}
+%
+% % show all questions with hyperlink to answers
+% \dbNewStyle{ques}{ques-book}{
+% before-code = {\section{Questions}},
+% item-code = {
+% \begin{mybox}{%
+% \linktarget{answer_\dbIndex}{ques_\dbIndex}{%
+% Question \dbarabic%
+% \hspace{2em}\dbuse{date}%
+% \hspace{2em}\dbuse{labels}%
+% \hfill\dbuse{count}%
+% }%
+% }
+% \dbuse{ques}%
+% \end{mybox}
+% },
+% labels/sep = /,
+% }
+%
+% % show all questions and answers with hyperlink to questions
+% \dbNewStyle{answer}{ques-book}{
+% before-code = {\section{Questions and Answers}},
+% item-code = {
+% \begin{mybox}{%
+% \linktarget{ques_\dbIndex}{answer_\dbIndex}{%
+% Question \dbarabic%
+% \hspace{2em}\dbuse{date}%
+% \hspace{2em}\dbuse{labels}%
+% \hfill\dbuse{count}%
+% }%
+% }
+% \dbuse{ques}\tcbsubtitle{Answer}\dbuse{answer}%
+% \end{mybox}
+% },
+% labels/sep = /,
+% }
+%
+% % show all hard questions with hyperlink to answers
+% \dbNewStyle{hard}{ques-book}{
+% before-code = {\section{Hard Questions}},
+% item-code = {
+% \begin{mybox}{%
+% \hyperlink{answer_\dbIndex}{%
+% Question \dbarabic%
+% \hspace{2em}\dbuse{date}%
+% \hspace{2em}\dbuse{labels}%
+% \hfill\dbuse{count}%
+% }%
+% }
+% \dbuse{ques}%
+% \end{mybox}
+% },
+% raw-filter = hard,
+% labels/sep = /,
+% }
+%
+% % show all hard questions that have been answered incorrectly for more than
+% % one time with hyperlink to answers
+% \dbNewStyle[hard]{bad}{ques-book}{
+% before-code = {\section{Bad Questions}},
+% raw-filter = {bad && hard},
+% }
+% % show all questions that plan to be reviewed on 2022/01/07 with hyperlink to
+% % answers
+% \dbNewStyle[hard]{review}{ques-book}{
+% before-code = {\section{Questions to be Reviewed}},
+% raw-filter = {review},
+% }
+% % show all questions that is record after 2022/01/02 with hyperlink to answers
+% \dbNewStyle[hard]{after}{ques-book}{
+% before-code = {\section{Questions after 2022/01/02}},
+% raw-filter = {after},
+% }
+%
+% \AtEndDocument{
+% \dbshow{review}{ques-book}
+% \dbshow{hard}{ques-book}
+% \dbshow{bad}{ques-book}
+% \dbshow{after}{ques-book}
+% \dbshow{ques}{ques-book}
+% \dbshow{answer}{ques-book}
+% }
+%
+% \begin{document}
+%
+% \begin{dbitem}{ques-book}[
+% date=2022/01/01,
+% labels={math, equation, easy},
+% count=2
+% ]
+% \dbsave{ques}{%
+% Solve the linear equation: $x + 16 = 31$.
+% }
+% \dbsave{answer}{%
+% $x = 31 - 16 = 15$
+% }
+% \end{dbitem}
+%
+% \begin{dbitem}{ques-book}[
+% date=2022/01/01,
+% labels={math, equation, hard},
+% count=3
+% ]
+% \dbsave{ques}{%
+% Solve the linear equation: $2y = 16$.
+% }
+% \dbsave{answer}{%
+% $y = 16 / 2 = 8$
+% }
+% \end{dbitem}
+%
+% \begin{dbitem}{ques-book}[
+% date=2022/01/04,
+% labels={math, integral, hard},
+% count=1
+% ]
+% \dbsave{ques}{%
+% Find the indefinite integral: $\int 2x \dd x$.
+% }
+% \dbsave{answer}{%
+% $\int 2x \dd x = x^2$
+% }
+% \end{dbitem}
+%
+% \end{document}
+% \end{verbatim}
+%
+% \end{documentation}
+%
+% \StopEventually{}
+%
+% \newgeometry{
+% left=5.5cm,
+% right=2cm,
+% top=2cm,
+% bottom=2cm
+% }
+%
+% \begin{implementation}
+%
+% \section{Implementation}
+%
+% \changes{1.4}{2022-01-13}{Update code}{merge code and doc into
+% \pkg{dbshow.dtx}}
+%
+% \begin{macrocode}
+%<*package>
+%<@@=dbshow>
+% \end{macrocode}
+%
+% Check version of \pkg{l3kernel}.
+% \begin{macrocode}
+% prop_concat, prop_gset_from_keyval
+\__kernel_dependency_version_check:nn { 2021-11-07 } { l3prop }
+% str_compare
+\__kernel_dependency_version_check:nn { 2021-05-17 } { l3str }
+% clist_map_tokens, clist_use
+\__kernel_dependency_version_check:nn { 2021-05-10 } { l3clist }
+% \end{macrocode}
+%
+% \subsection{Variants and Variables}
+%
+% \begin{macrocode}
+\cs_generate_variant:Nn \msg_warning:nnnn { nnnx }
+\cs_generate_variant:Nn \keys_set:nn { nv }
+\cs_generate_variant:Nn \clist_use:nn { xx }
+\cs_generate_variant:Nn \clist_use:nnnn { xxxx }
+\cs_generate_variant:Nn \clist_map_inline:nn { Vn }
+\cs_generate_variant:Nn \prop_get:NnN { cVN }
+\cs_generate_variant:Nn \regex_extract_all:nnN { nVN }
+\cs_generate_variant:Nn \regex_split:nnN { nVN }
+\prg_generate_conditional_variant:Nnn \str_compare:nNn { VNV } { TF }
+\prg_generate_conditional_variant:Nnn \int_compare:nNn { VNV } { TF }
+\prg_generate_conditional_variant:Nnn \fp_compare:nNn { VNV } { TF }
+\prg_generate_conditional_variant:Nnn \regex_match:nn { VV } { TF }
+\prg_generate_conditional_variant:Nnn \clist_if_in:Nn { Nx } { TF }
+% \end{macrocode}
+%
+% \begin{variable}{\c_@@_default_value_prop}
+% Default default value of different types.
+% \begin{macrocode}
+\prop_const_from_keyval:Nn \c_@@_default_value_prop {
+ date = \dbtoday,
+ str = ,
+ tl = ,
+ clist = ,
+ int = 0,
+ fp = 0
+}
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\@@_type_clist}
+% Supported types by \pkg{dbshow}.
+% \begin{macrocode}
+\clist_const:Nn \@@_type_clist { date, str, tl, clist, int, fp }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{\g_@@_raw_filter_int}
+% Counter of anonymous filter.
+% \begin{macrocode}
+\int_gzero_new:N \g_@@_raw_filter_int
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Messages}
+%
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-database } {
+ Database~'#1'~does~not~exist~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_database:n}
+% Check if the database is valid.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_database:n {
+ \prop_if_exist:cF { g_@@_attr_type_prop_#1 }
+ { \msg_fatal:nnn { dbshow } { non-existent-database } {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-attr } {
+ Attribute~'#2'~of~database~'#1'~does~not~exist~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_attr:nn, \@@_check_attr:nV}
+% Check if the attribute is valid.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_attr:nn {
+ \prop_if_in:cnF { g_@@_attr_type_prop_#1 } {#2}
+ { \msg_fatal:nnnn { dbshow } { non-existent-attr } {#1} {#2} }
+}
+\cs_generate_variant:Nn \@@_check_attr:nn { nV }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-style } {
+ Style~'#1'~of~database~'#2'~does~not~exist~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_style:nn}
+% Check if the style is valid.
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_style:nn {
+ \tl_if_exist:cF { g_@@_style_opts_tl_#1_#2 }
+ { \msg_warning:nnnn { dbshow } { non-existent-style } {#1} {#2} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{cond}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-cond } {
+ Conditional~'#2'~of~database~'#1'~does~not~exist~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_cond:nnn}
+% Check if the conditional is valid.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{cond}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_cond:nnn {
+ \tl_if_exist:cF { g_@@_filter_attr_#1_#2 }
+ { \msg_fatal:nnnn { dbshow } { non-existent-cond } {#1} {#2} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{filter}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-filter } {
+ Filter~'#2'~of~database~'#1'~does~not~exist~and~is~ignored~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_filter:nn, \@@_check_filter:nv}
+% Check if the filter is valid. Ignore the default filter |-none-|.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{filter}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_filter:nn {
+ \seq_if_exist:cF { g_@@_filter_run_seq_#1_#2 } {
+ \str_if_eq:eeF {#2} { -none- } {
+ \msg_warning:nnnx { dbshow } { non-existent-filter } {#1} {#2}
+ }
+ }
+}
+\cs_generate_variant:Nn \@@_check_filter:nn { nv }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{type}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { non-existent-type } {
+ Type~'#1'~does~not~exist,~the~type~of~attribute~should~be~one~of~
+ \{date,~str,~tl,~clist,~int,~fp\}~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_check_type:n}
+% Check if the type is valid.
+% \begin{arguments}
+% \item \meta{type}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_check_type:n {
+ \clist_if_in:NnF \@@_type_clist {#1}
+ { \msg_fatal:nnn { dbshow } { non-existent-type } {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{valid count}
+% \item \meta{real count}
+% \item \meta{value}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { wrong-seperator } {
+ option~'sep'~should~contain~#1~items~but~only~#2~items~was~given,~
+ sep~=~\{#3\}~\msg_line_context:.
+}
+% \end{macrocode}
+%
+% \begin{macro}{\@@_sep_error:nnn, \@@_sep_error:xxx}
+% Check the value of \opt{<attr>/sep} is valid.
+% \begin{arguments}
+% \item \meta{valid count}
+% \item \meta{real count}
+% \item \meta{value}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_sep_error:nnn {
+ \msg_error:nnnnn { dbshow } { wrong-seperator } {#1} {#2} {#3}
+}
+\cs_generate_variant:Nn \@@_sep_error:nnn { xxx }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{arguments}
+% \item \meta{type}
+% \end{arguments}
+% \begin{macrocode}
+\msg_new:nnn { dbshow } { unsupported-sort-type } {
+ unsupported~sort~type:~'#1'~\msg_line_context:.~The~type~should~be~one~of~
+ \{str,~date,~int,~fp\}.
+}
+% \end{macrocode}
+%
+% \subsection{Create Database}
+%
+% \begin{macro}{\@@_process_default_value:w}
+% Create map from \meta{attr} to \meta{type} and map from \meta{attr} to
+% \meta{default value}.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \item \meta{type}
+% \item \meta{default value}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Npn \@@_process_default_value:w
+#1\@@_sep#2\@@_sep#3|#4\@@_stop {
+ \@@_check_type:n {#3}
+ \prop_gput:cxx { g_@@_attr_type_prop_#1 } {#2} {#3}
+ \prop_gput:cxx { g_@@_default_map_#1 } {#2} {#4}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_process_attr_type_prop:n}
+% Parse default value from the value of the type map. If \meta{type spec} is
+% \meta{type\orbar default value} then set the default value to \meta{default
+% value}, otherwise if \meta{type spec} is \meta{type} then set the default
+% value to the default value of the type.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_process_attr_type_prop:n {
+ \prop_gclear_new:c { g_@@_default_map_#1 }
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{attr}
+% \item \meta{type spec}
+% \end{arguments}
+% \begin{macrocode}
+ \prop_map_inline:cn { g_@@_attr_type_prop_#1 } {
+ \str_if_in:nnTF {##2} { | } {
+ \@@_process_default_value:w
+ #1\@@_sep##1\@@_sep##2\@@_stop
+ } {
+ \prop_get:NnN \c_@@_default_value_prop {##2} \l_@@_tmp_default
+ \@@_process_default_value:w
+ #1\@@_sep##1\@@_sep##2|\l_@@_tmp_default\@@_stop
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_database_new:nn}
+% Create a new \meta{database} with \meta{database spec}, which is a list of
+% \meta{attr} = \meta{type spec}. This function initialize the index counter
+% and save \meta{attr} = \meta{type spec} pairs to the type map. If
+% \meta{database} has existed, the old definition is discarded.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{database spec}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_database_new:nn {
+ \int_gzero_new:c { g_@@_counter_#1 }
+ \prop_gset_from_keyval:cn { g_@@_attr_type_prop_#1 } {#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_database_new_append:nn}
+% Create a new \meta{database} with \meta{database spec}, which is a list of
+% \meta{attr} = \meta{type spec}. This function initialize the index counter
+% and save \meta{attr} = \meta{type spec} pairs to the type map. If
+% \meta{database} has existed, the old definition is merged into the new
+% definition that has a higher priority.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{database spec}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_database_new_append:nn {
+ \int_gzero_new:c { g_@@_counter_#1 }
+ \prop_if_exist:cF { g_@@_attr_type_prop_#1 }
+ { \prop_new:c { g_@@_attr_type_prop_#1 } }
+ \prop_gset_from_keyval:Nn \l_tmpa_prop {#2}
+ \prop_concat:ccc { g_@@_attr_type_prop_#1 }
+ { g_@@_attr_type_prop_#1 } { l_tmpa_prop }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_database_new_inherit:nnn}
+% Create a new \meta{database} with \meta{database spec}, which is a list of
+% \meta{attr} = \meta{type spec}. The new \meta{database} is based on
+% \meta{base database}. If \meta{database} is equal to \meta{base database},
+% \cs{@@_database_new_append:nn} is called, otherwise the index counter is
+% initialized and the definition is merged with the definition of \meta{base
+% dadatabase}.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{base database}
+% \item \meta{database spec}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_database_new_inherit:nnn {
+ \@@_check_database:n {#2}
+ \str_if_eq:nnTF {#1} {#2} {
+ \@@_database_new_append:nn {#1} {#3}
+ } {
+ \int_gzero_new:c { g_@@_counter_#1 }
+ \prop_gset_from_keyval:cn { g_@@_attr_type_prop_#1 } {#3}
+ \prop_concat:ccc { g_@@_attr_type_prop_#1 }
+ { g_@@_attr_type_prop_#2 } { g_@@_attr_type_prop_#1 }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbNewDatabase}
+% User interface to create a new \meta{database}. Internal attribute |id| is
+% added to \meta{database}. After attributes are settle down, default values
+% are parsed by \cs{@@_process_attr_type_prop:n}, and keys serving to save data of
+% \meta{database} are defined. At last, we define the |default| style as its
+% name implies.
+% \begin{arguments}
+% \item \meta{star} that indicates append or not
+% \item \meta{base database}
+% \item \meta{database}
+% \item \meta{database spec}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbNewDatabase } { s o m m } {
+ \IfNoValueTF {#2} {
+ \IfBooleanTF {#1}
+ { \@@_database_new_append:nn {#3} {#4} }
+ { \@@_database_new:nn {#3} {#4} }
+ } { \@@_database_new_inherit:nnn {#3} {#2} {#4} }
+ \@@_database_new_append:nn {#3} { id=int }
+ \@@_process_attr_type_prop:n {#3}
+ \@@_set_database_keys:n {#3}
+ \dbNewStyle{default}{#3}{}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_database_keys:n}
+% Set keys of \meta{database} to make it able to save data with key-value
+% pairs.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set_database_keys:n {
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{type}
+% \end{arguments}
+% \begin{macrocode}
+ \prop_map_inline:cn { g_@@_attr_type_prop_#1 } {
+ \keys_define:nn { dbshow/database/#1 } {
+% \end{macrocode}
+% \begin{arguments}[3]
+% \item \meta{data}
+% \end{arguments}
+% \begin{macrocode}
+ ##1 .code:n = \@@_save_data:nnn {#1} {##1} {####1},
+ ##1* .code:n = {
+ \@@_save_data:nnn {#1} {##1} { \exp_not:n {####1} },
+ },
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_type:nn, \@@_get_type:nV}
+% Convenient function to get the \meta{type} of \meta{attr} of \meta{database}.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_get_type:nn {
+ \prop_item:cn { g_@@_attr_type_prop_#1 } {#2}
+}
+\cs_generate_variant:Nn \@@_get_type:nn { nV }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_get_counter:n}
+% Convenient function to get the value of the index counter.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_get_counter:n {
+ \int_use:c { g_@@_counter_#1 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_step_counter:n}
+% Convenient function to step the index counter.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_step_counter:n {
+ \int_gincr:c { g_@@_counter_#1 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbclear}
+% User interface to clear the \meta{database}. The index counter is set to
+% zero and data is not really wiped.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbclear } { m } {
+ \int_gzero:c { g_@@_counter_#1 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Store Data}
+%
+% \begin{macro}{\@@_save_data:nnn, \@@_save_data:nnx}
+% Internal function to store data into
+% \csnot{g_@@_data_\meta{database}_\meta{attr}_\meta{index}}.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \item \meta{data}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_save_data:nnn {
+ \@@_check_attr:nn {#1} {#2}
+ \str_case_e:nn { \@@_get_type:nn {#1} {#2} } {
+ { str } { \str_clear_new:c }
+ { tl } { \tl_gclear_new:c }
+ { clist } { \clist_gclear_new:c }
+ { int } { \int_gzero_new:c }
+ { fp } { \fp_gzero_new:c }
+ { date } { \__dbdate_gclear_new:x }
+ } { g_@@_data_#1_#2_\@@_get_counter:n {#1} }
+ \str_case_e:nn { \@@_get_type:nn {#1} {#2} } {
+ { str } { \str_gset:cn }
+ { tl } { \tl_gset:cn }
+ { clist } { \clist_gset:cn }
+ { int } { \int_gset:cn }
+ { fp } { \fp_gset:cn }
+ { date } { \__dbdate_gset:xx }
+ } { g_@@_data_#1_#2_\@@_get_counter:n {#1} } {#3}
+}
+\cs_generate_variant:Nn \@@_save_data:nnn { nnx }
+% \end{macrocode}
+% \end{macro}
+%
+% \changes{1.4}{2022-01-14}{Fix bug}{data cannot contain \cs{par}}
+% \begin{macro}{dbitem, \@@_set_default:nn, \dbsave, \dbsave*}
+% Environment \env{dbitem} is the user interface to save data with \meta{attr}
+% = \meta{data} pairs or using \cs{dbsave}. First we step the index counter
+% and set the default value for each attribute. Then we set the value by
+% \meta{attr-value list} and the index is also stored to default attribute
+% |id|.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr-value list}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentEnvironment { dbitem } { m +O{} } {
+ \@@_check_database:n {#1}
+ \@@_step_counter:n {#1}
+% \end{macrocode}
+% This function is used to set the default values of each attribute.
+% \begin{arguments}
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+ \cs_set:Nn \@@_set_default:nn {
+ \@@_save_data:nnx {#1} {##1} {
+ \prop_item:cn { g_@@_default_map_#1 } {##1}
+ }
+ }
+ \prop_map_function:cN { g_@@_attr_type_prop_#1 } \@@_set_default:nn
+ \@@_save_data:nnx {#1} { id } { \@@_get_counter:n {#1} }
+ \keys_set:nn { dbshow/database/#1 } {#2}
+% \end{macrocode}
+% \begin{arguments}
+% \item \meta{star} that indicates whether to use \cs{exp_not:n}
+% \item \meta{attr}
+% \item \meta{data}
+% \end{arguments}
+% \begin{macrocode}
+ \NewDocumentCommand { \dbsave } { s m +m } {
+ \IfBooleanTF {##1} {
+ \@@_save_data:nnn {#1} {##2} { \exp_not:n {##3} }
+ } {
+ \@@_save_data:nnn {#1} {##2} {##3}
+ }
+ }
+} {}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbitemkv}
+% Store data with \meta{attr-value list}
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr-value list}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbitemkv } { m +m } {
+ \begin{dbitem}{#1}[#2]
+ \end{dbitem}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Filter}
+%
+% Following functions have the same argument specifications:
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% These functions aim to filter \meta{attr} of certain type with \meta{expr}
+% in every epoch of iteration. The basic idea is to save the filter result
+% into a boolean variable corresponding to each conditional.
+%
+% \begin{macro}{\@@_filter_int:NNNnn, \@@_filter_int:cccnn}
+% Filter integers.
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_filter_int:NNNnn {
+ \int_compare:nTF {#2} {#4} {#5}
+}
+\cs_generate_variant:Nn \@@_filter_int:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter_fp:NNNnn, \@@_filter_fp:cccnn}
+% Filter floating point values.
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_filter_fp:NNNnn {
+ \int_compare:nTF {#2} {#4} {#5}
+}
+\cs_generate_variant:Nn \@@_filter_fp:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter_clist:NNNnn, \@@_filter_clist:cccnn}
+% Filter comma lists. If \meta{star bool} is true, all values specified by
+% \meta{conditional} should be contained in current list. Otherwise, condition
+% is met if any value specified by \meta{conditional} appears in current list.
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_filter_clist:NNNnn {
+% \end{macrocode}
+% Initial filter boolean of starred conditional is true. And then we check
+% every value in \meta{conditional}. If there is some value that does not
+% appear in current list, the result is set to false and the loop is broken.
+% \begin{macrocode}
+ \bool_if:NTF #1 {
+ #4 \clist_map_inline:Vn #2
+ { \clist_if_in:NnF #3 {##1} { #5 \clist_map_break: } }
+ } {
+% \end{macrocode}
+% Initial filter boolean of unstarred conditional is false. And then we check
+% every value in \meta{conditional}. If there is some value that does appear
+% in current list, the result is set to true and the loop is broken.
+% \begin{macrocode}
+ #5 \clist_map_inline:Vn #2
+ { \clist_if_in:NnT #3 {##1} { #4 \clist_map_break: } }
+ }
+}
+\cs_generate_variant:Nn \@@_filter_clist:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter_str:NNNnn, \@@_filter_str:cccnn}
+% Filter strings with regex expression. Starred filter matches the whole
+% string while unstarred matches part of the string.
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_filter_str:NNNnn {
+ \bool_if:NT #1 {
+ \tl_put_left:Nn #2 { \A }
+ \tl_put_right:Nn #2 { \Z }
+ }
+ \regex_match:VVTF #2 #3 {#4} {#5}
+}
+\cs_generate_variant:Nn \@@_filter_str:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter_tl:NNNnn, \@@_filter_tl:cccnn}
+% Filter token list with regex expression. It is the same with string.
+% \begin{macrocode}
+\cs_set_eq:NN \@@_filter_tl:NNNnn \@@_filter_str:NNNnn
+\cs_generate_variant:Nn \@@_filter_tl:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_parse_date_cond:NNw}
+% Help function to parse \meta{review points} and \meta{date} and store them
+% in \meta{clist var} and \meta{tl var}.
+% \begin{arguments}
+% \item \meta{clist var} to store \meta{review points}
+% \item \meta{tl var} to store \meta{date}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_parse_date_cond:NNw #1#2#3|#4\@@_stop {
+ \clist_set_eq:Nc #1 { g__review_points_#3 }
+ \tl_set:Nn #2 {#4}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter_date:NNNnn, \@@_filter_date:cccnn}
+% Filter dates by \meta{review points} or \meta{expr}.
+% \begin{arguments}
+% \item \meta{star boolean}
+% \item \meta{expr} specified by \cs{dbNewConditional}
+% \item \meta{current value}, i.e. \cs{dbval}
+% \item \meta{true code} to set filter boolean to true
+% \item \meta{false code} to set filter boolean to false
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_filter_date:NNNnn {
+% \end{macrocode}
+% For starred \meta{conditional}, calculate the days between current day, i.e.
+% \cs{dbval} and the date to be compared, i.e. \cs{l_@@_filter_tmp_tl} to see
+% if the result appears in the \meta{review points}.
+% \begin{macrocode}
+ \bool_if:NTF #1 {
+ \int_zero_new:N \l_@@_filter_diff_int
+ \exp_last_unbraced:NNNV \@@_parse_date_cond:NNw
+ \l_@@_filter_tmp_clist \l_@@_filter_tmp_tl {#2} \@@_stop
+ \__dbdate_clear_new:n { tmp_day1 }
+ \__dbdate_clear_new:n { tmp_day2 }
+ \__dbdate_set:xx { tmp_day1 } { \l_@@_filter_tmp_tl }
+ \__dbdate_set:xx { tmp_day2 } {#3}
+ \__dbdate_sub:nnN { tmp_day1 } { tmp_day2 } \l_@@_filter_diff_int
+ \clist_if_in:NxTF \l_@@_filter_tmp_clist
+ { \int_use:N \l_@@_filter_diff_int } {#4} {#5}
+ } {
+% \end{macrocode}
+% For unstarred \meta{conditional} which parses \meta{expr}. We first replace
+% each date to an absolute integer. We did not use \cs{regex_replace_all:nnN}
+% because \cs{_dbdate_to_int:nN} is nonexpandable. So the code seems a little
+% complicated and unsightly, but it worked. Note that \meta{expr} should be
+% updated locally.
+% \begin{macrocode}
+ \int_zero_new:N \l_@@_filter_tmpa_int
+ \int_zero_new:N \l_@@_filter_tmpb_int
+ \tl_set:Nx \l_@@_expr_tl {#2}
+ \regex_extract_all:nVN { \d{4}/\d+/\d+ }
+ \l_@@_expr_tl \l_@@_filter_date_seq
+ \regex_split:nVN { \d{4}/\d+/\d+ }
+ \l_@@_expr_tl \l_@@_filter_other_seq
+ \tl_clear:N \l_@@_expr_tl
+ \int_set:Nn \l_@@_filter_tmpa_int
+ { \seq_count:N \l_@@_filter_date_seq }
+ \int_step_inline:nn { \l_@@_filter_tmpa_int } {
+ \tl_put_right:Nx \l_@@_expr_tl
+ { \seq_item:Nn \l_@@_filter_other_seq {##1} }
+ \__dbdate_clear_new:n { date-tmp }
+ \__dbdate_set:xx { date-tmp }
+ { \seq_item:Nn \l_@@_filter_date_seq {##1} }
+ \__dbdate_to_int:nN { date-tmp } \l_@@_filter_tmpb_int
+ \tl_put_right:Nx \l_@@_expr_tl
+ { \int_use:N \l_@@_filter_tmpb_int }
+ }
+ \tl_put_right:Nx \l_@@_expr_tl {
+ \seq_item:Nn \l_@@_filter_other_seq
+ { \l_@@_filter_tmpa_int + 1 }
+ }
+ \int_compare:nTF { \l_@@_expr_tl } {#4} {#5}
+ }
+}
+\cs_generate_variant:Nn \@@_filter_date:NNNnn { cccnn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_filter:nnn}
+% Filter records with \meta{conditional}
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{conditional}
+% \item \meta{index}
+% \end{arguments}
+% \begin{macrocode}
+\cs_set:Nn \@@_filter:nnn {
+ \tl_set_eq:Nc \l_@@_attr_tl { g_@@_filter_attr_tl_#1_#2 }
+ \cs_set_eq:Nc \dbval { g_@@_data_#1_\l_@@_attr_tl _#3 }
+ \use:c
+ { @@_filter_\@@_get_type:nV {#1} \l_@@_attr_tl :cccnn }
+ { g_@@_cond_star_bool_#1_#2 }
+ { g_@@_filter_expr_tl_#1_#2 }
+ { dbval }
+ { \bool_gset_true:c { g_@@_filter_bool_#1_#2 } }
+ { \bool_gset_false:c { g_@@_filter_bool_#1_#2 } }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_new_conditional:nnnnn}
+% For a \meta{conditional} of \meta{attr}, map \meta{conditional} to
+% \meta{attr} and map \meta{conditional} to {expr}. The \meta{boolean var} is
+% created to store the filter result. An hook function is defined and the
+% \meta{conditional} is recorded in the sequence.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{conditional}
+% \item \meta{attr}
+% \item \meta{expr}
+% \item \meta{star}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_conditional:nnnnn {
+ \tl_gset:cn { g_@@_filter_attr_tl_#1_#2 } {#3}
+ \tl_gset:cn { g_@@_filter_expr_tl_#1_#2 } {#4}
+ \bool_if_exist:cF { g_@@_filter_bool_#1_#2 }
+ { \bool_new:c { g_@@_filter_bool_#1_#2 } }
+ \bool_if_exist:cF { g_@@_cond_star_bool_#1_#2 }
+ { \bool_new:c { g_@@_cond_star_bool_#1_#2 } }
+ \IfBooleanTF {#5}
+ { \bool_gset_true:c { g_@@_cond_star_bool_#1_#2 } }
+ { \bool_gset_false:c { g_@@_cond_star_bool_#1_#2 } }
+% \end{macrocode}
+% Filter hook function.
+% \begin{arguments}[2]
+% \item \meta{index}
+% \end{arguments}
+% \begin{macrocode}
+ \cs_gset:cn { g_@@_filter_hook_#1_#2:n } {
+ \@@_filter:nnn {#1} {#2} {##1}
+ }
+ \seq_gput_right:cn { g_@@_cond_seq_#1 } {#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_combine_conditional:nnn, \@@_combine_conditional:nVn}
+% First extract all the \meta{conditional} in \meta{conditional expr} and for
+% every \meta{conditional} in the record sequence, if it is in
+% \meta{conditional expr}, then add the corresponding hook function to running
+% sequence. Then replace all the \meta{conditional} in \meta{conditional expr}
+% with corresponding boolean variable and save the result in the filter
+% boolean variable.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{filter}
+% \item \meta{conditional expr}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_combine_conditional:nnn {
+ \tl_gset_eq:cN { g_@@_filter_bool_tl_#1_#2 } \c_true_bool
+ \seq_gclear_new:c { g_@@_filter_run_seq_#1_#2 }
+ \regex_extract_all:nnN { \w+ } {#3} \l_@@_cond_seq
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{conditional}
+% \end{arguments}
+% \begin{macrocode}
+ \seq_map_inline:Nn \l_@@_cond_seq {
+ \seq_if_in:cnT { g_@@_cond_seq_#1 } {##1} {
+ \seq_gput_right:cn { g_@@_filter_run_seq_#1_#2 }
+ { g_@@_filter_hook_#1_##1:n }
+ }
+ }
+ \tl_set:Nn \l_@@_cond_expr_tl {#3}
+ \regex_replace_all:nnN
+ { \w+ } { \c{ g_@@_filter_bool_#1_\0 } }
+ \l_@@_cond_expr_tl
+ \tl_gset_eq:cN
+ { g_@@_filter_bool_tl_#1_#2 } \l_@@_cond_expr_tl
+}
+\cs_generate_variant:Nn \@@_combine_conditional:nnn { nVn }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dbFilters, \dbNewConditional, \dbCombineConditionals}
+% Environment to define conditionals and filters.
+% \begin{arguments}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentEnvironment { dbFilters } { m } {
+ \seq_gclear_new:c { g_@@_cond_seq_#1 }
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{star}
+% \item \meta{conditional}
+% \item \meta{attr}
+% \item \meta{expr}
+% \end{arguments}
+% \begin{macrocode}
+ \DeclareDocumentCommand { \dbNewConditional } { s m m m } {
+ \@@_new_conditional:nnnnn
+ {#1} {##2} {##3} {##4} {##1}
+ }
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{filter}
+% \item \meta{conditional expr}
+% \item \meta{filter info}
+% \end{arguments}
+% \begin{macrocode}
+ \DeclareDocumentCommand { \dbCombineConditionals } { m m O{} } {
+ \tl_gset:cn { g_@@_filter_info_tl_#1_##1 } {##3}
+ \@@_combine_conditional:nnn {#1} {##1} {##2}
+ }
+} {}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbNewReviewPoints}
+% User interface to define \meta{review points}.
+% \begin{arguments}
+% \item \meta{name}
+% \item \meta{points}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbNewReviewPoints } { m m } {
+ \clist_set:cn { g__review_points_#1 } {#2}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbIntAbs, \dbIntSign, \dbIntDivRound, \dbIntDivTruncate,
+% \dbIntMax, \dbIntMin, \dbIntMod, \dbFpSign}
+% Function aliases to support more operations of integer and floating points.
+% \begin{macrocode}
+\cs_set_eq:NN \dbIntAbs \int_abs:n
+\cs_set_eq:NN \dbIntSign \int_sign:n
+\cs_set_eq:NN \dbIntDivRound \int_div_round:nn
+\cs_set_eq:NN \dbIntDivTruncate \int_div_truncate:nn
+\cs_set_eq:NN \dbIntMax \int_max:nn
+\cs_set_eq:NN \dbIntMin \int_min:nn
+\cs_set_eq:NN \dbIntMod \int_mod:nn
+\cs_set_eq:NN \dbFpSign \fp_sign:n
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Style and Options}
+%
+% \begin{macro}{\@@_identity:n}
+% Does nothing and keep things unchanged.
+% \begin{macrocode}
+\cs_new:Nn \@@_identity:n {#1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_new_attr_style:nnn}
+% Define style keys for each attribute.
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_attr_style:nnn {
+ \@@_check_attr:nn {#2} {#3}
+ \keys_define:nn { dbshow/style/#1/#3 } {
+ before-code .tl_gset:c = {
+ g_@@_style_attr_before_tl_#1_#2_#3
+ },
+ before-code .initial:n = ,
+ after-code .tl_gset:c = {
+ g_@@_style_attr_after_tl_#1_#2_#3
+ },
+ after-code .initial:n = ,
+% \end{macrocode}
+% For comma list and date.
+% \begin{macrocode}
+ sep .clist_gset:c = {
+ g_@@_style_attr_sep_#1_#2_#3
+ },
+% \end{macrocode}
+% Only for comma list.
+% \begin{macrocode}
+ item-before-code .tl_gset:c = {
+ g_@@_style_attr_item_before_tl_#1_#2_#3
+ },
+ item-before-code .initial:n = ,
+ item-after-code .tl_gset:c = {
+ g_@@_style_attr_item_after_tl_#1_#2_#3
+ },
+ item-after-code .initial:n = ,
+% \end{macrocode}
+% Only for date.
+% \begin{macrocode}
+ zfill .bool_gset:c = {
+ g_@@_style_attr_zfill_bool_#1_#2_#3
+ },
+ zfill .initial:n = true,
+ zfill .default:n = true,
+ wrapper .tl_gset:c = {
+ g_@@_style_attr_wrapper_#1_#2_#3
+ },
+ wrapper .initial:n = { \@@_identity:n },
+ }
+ \str_case_e:nn { \@@_get_type:nn {#2} {#3} } {
+ { clist }
+ { \keys_set:nn { dbshow/style/#1/#3 } { sep = { { ,~ } } } }
+ { date }
+ { \keys_set:nn { dbshow/style/#1/#3 } { sep = { { / } } } }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_new_database_style:nn}
+% Define style keys.
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new_database_style:nn {
+ \@@_check_database:n {#2}
+ \keys_define:nn { dbshow/style/#1 } {
+ raw-filter .code:n = {
+ \int_gincr:N \g_@@_raw_filter_int
+ \str_set:Nx \l_@@_raw_filter_str
+ { -raw\int_use:N \g_@@_raw_filter_int - }
+ \tl_gset:cV { g_@@_filter_#1_#2 } \l_@@_raw_filter_str
+ \@@_combine_conditional:nnn {#2} \l_@@_raw_filter_str {##1}
+ },
+ filter .tl_gset:c = { g_@@_filter_#1_#2 },
+ filter .initial:n = -none-,
+ sort .clist_gset:c = { g_@@_sort_clist_#1_#2 },
+ before-code .tl_gset:c = { g_@@_style_before_tl_#1_#2 },
+ before-code .initial:n = ,
+ item-code .tl_gset:c = { g_@@_style_database_item_tl_#1_#2 },
+ item-code .initial:n = ,
+ after-code .tl_gset:c = { g_@@_style_after_tl_#1_#2 },
+ after-code .initial:n = ,
+ record-before-code .tl_gset:c = { g_@@_style_record_before_tl_#1_#2 },
+ record-before-code .initial:n = ,
+ record-after-code .tl_gset:c = { g_@@_style_record_after_tl_#1_#2 },
+ record-after-code .initial:n = ,
+ }
+ \prop_map_inline:cn { g_@@_attr_type_prop_#2 }
+ { \@@_new_attr_style:nnn {#1} {#2} {##1} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbNewStyle}
+% Set style options based on \meta{base style}.
+% \begin{arguments}
+% \item \meta{base style clist}
+% \item \meta{style}
+% \item \meta{database}
+% \item \meta{options}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbNewStyle } { o m m +m } {
+ \tl_gset:cn { g_@@_style_opts_tl_#2_#3 } { #4, }
+ \IfValueT {#1} {
+ \tl_clear_new:N \l_@@_style_tmp_tl
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{base style}
+% \end{arguments}
+% \begin{macrocode}
+ \clist_map_inline:nn {#1} {
+ \@@_check_style:nn {##1} {#3}
+ \tl_if_exist:cT { g_@@_style_opts_tl_##1_#3 } {
+ \tl_concat:ccc { l_@@_style_tmp_tl }
+ { l_@@_style_tmp_tl } { g_@@_style_opts_tl_##1_#3 }
+ }
+ }
+ \tl_gconcat:ccc { g_@@_style_opts_tl_#2_#3 }
+ { l_@@_style_tmp_tl } { g_@@_style_opts_tl_#2_#3 }
+ }
+ \@@_new_database_style:nn {#2} {#3}
+ \keys_set:nv { dbshow/style/#2 } { g_@@_style_opts_tl_#2_#3 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Sort}
+%
+% \begin{macro}{\@@_sort_parse_star:NNNw}
+% Parse descending sorting rule.
+% \begin{arguments}
+% \item \meta{tl var} representing for relation to keep order the same
+% \item \meta{tl var} representing for relation to swap the order
+% \item \meta{tl var} to store the \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_sort_parse_star:NNNw #1#2#3#4* {
+ \tl_set:Nn #1 { > }
+ \tl_set:Nn #2 { < }
+ \tl_set:Nn #3 {#4}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sort:nNn}
+% Sort the records.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{index clist}
+% \item \meta{style}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_sort:nNn {
+ \int_zero_new:N \l_@@_sort_len_int
+ \int_zero_new:N \l_@@_sort_tmp_int
+ \int_set:Nn \l_@@_sort_len_int
+ { \clist_count:c { g_@@_sort_clist_#3_#1 } }
+% \end{macrocode}
+% Sort recursively.
+% \begin{macrocode}
+ \clist_sort:Nn #2 {
+ \int_zero:N \l_@@_sort_tmp_int
+% \end{macrocode}
+% Sort single attribute.
+% \begin{macrocode}
+ \cs_set:Nn \@@_sort_single: {
+ \int_incr:N \l_@@_sort_tmp_int
+ \str_set:Nx \l_@@_sort_attr_str {
+ \clist_item:cn
+ { g_@@_sort_clist_#3_#1 }
+ { \l_@@_sort_tmp_int }
+ }
+% \end{macrocode}
+% Parse \meta{attr} and corresponding \meta{type} and set compare operators.
+% \begin{macrocode}
+ \str_if_in:NnTF \l_@@_sort_attr_str { * } {
+ \exp_after:wN \@@_sort_parse_star:NNNw
+ \exp_after:wN \l_@@_sort_same_op_tl
+ \exp_after:wN \l_@@_sort_swap_op_tl
+ \exp_after:wN \l_@@_sort_attr_str
+ \l_@@_sort_attr_str
+ } {
+ \tl_set:Nn \l_@@_sort_same_op_tl { < }
+ \tl_set:Nn \l_@@_sort_swap_op_tl { > }
+ }
+% \end{macrocode}
+% Check if type is valid and transform date to string.
+% \begin{macrocode}
+ \@@_check_attr:nV {#1} \l_@@_sort_attr_str
+ \tl_set:Nx \l_@@_sort_type_tl
+ { \@@_get_type:nV {#1} \l_@@_sort_attr_str }
+ \clist_if_in:nVF
+ { str, int, date, fp } { \l_@@_sort_type_tl } {
+ \msg_error:nnx { dbshow } { unsupported-sort-type }
+ { \l_@@_sort_type_tl }
+ }
+ \str_if_eq:eeT { \l_@@_sort_type_tl } { date }
+ { \tl_set:Nn \l_@@_sort_type_tl { str } }
+% \end{macrocode}
+% Set operands and compare function.
+% \begin{macrocode}
+ \cs_set_eq:Nc \l_@@_sort_tmpa_tl
+ { g_@@_data_#1_\l_@@_sort_attr_str _##1 }
+ \cs_set_eq:Nc \l_@@_sort_tmpb_tl
+ { g_@@_data_#1_\l_@@_sort_attr_str _##2 }
+ \cs_set_eq:Nc \@@_compare
+ { \l_@@_sort_type_tl _compare:VNVTF }
+% \end{macrocode}
+% Compare two operands and if they are equal, compare the next attribute.
+% \begin{macrocode}
+ \@@_compare \l_@@_sort_tmpa_tl
+ \l_@@_sort_same_op_tl \l_@@_sort_tmpb_tl
+ { \sort_return_same: }
+ {
+ \@@_compare \l_@@_sort_tmpa_tl
+ \l_@@_sort_swap_op_tl \l_@@_sort_tmpb_tl
+ { \sort_return_swapped: }
+ {
+ \int_compare:nTF
+ { \l_@@_sort_len_int = \l_@@_sort_tmp_int }
+ { \sort_return_same: }
+ { \@@_sort_single: }
+ }
+ }
+ }
+ \@@_sort_single:
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Display Data}
+%
+% \begin{macro}{\@@_clist_wrapper:NNn}
+% Wrap the clist item with \meta{before code} and \meta{after code}.
+% \begin{arguments}
+% \item \meta{before code tl}
+% \item \meta{after code tl}
+% \item \meta{item}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_clist_wrapper:NNn {
+ \exp_not:n { { #1#3#2 }, }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_clist_use:NNNN, \@@_clist_use:cccc}
+% Display a comma list.
+% \begin{arguments}
+% \item \meta{data clist}
+% \item \meta{separator clist}
+% \item \meta{before code tl}
+% \item \meta{after code tl}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_clist_use:NNNN {
+ \int_case:nnF { \clist_count:N #2 } {
+ { 1 } {
+ \clist_use:xx
+ { \clist_map_tokens:Nn #1 { \@@_clist_wrapper:NNn #3 #4 } }
+ { \clist_item:Nn #2 { 1 } }
+ }
+ { 3 } {
+ \clist_use:xxxx
+ { \clist_map_tokens:Nn #1 { \@@_clist_wrapper:NNn #3 #4 } }
+ { \clist_item:Nn #2 { 1 } }
+ { \clist_item:Nn #2 { 2 } }
+ { \clist_item:Nn #2 { 3 } }
+ }
+ } {
+ \@@_sep_error:xxx
+ { 1~or~3 }
+ { \clist_count:N #2 }
+ { \clist_use:Nn #2 { ,~ } }
+ }
+}
+\cs_generate_variant:Nn \@@_clist_use:NNNN { cccc }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_date_use:nNN, \@@_date_use:ncc}
+% Display date.
+% \begin{arguments}
+% \item \meta{data}
+% \item \meta{separator clist}
+% \item \meta{zfill boolean}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_date_use:nNN {
+ \int_case:nnF { \clist_count:N #2 } {
+ { 1 } {
+ \bool_if:NTF {#3}
+ { \__dbdate_use_zfill:nf }
+ { \__dbdate_use:nf }
+ {#1}
+ { \clist_item:Nn #2 { 1 } }
+ }
+ { 4 } {
+ \bool_if:NTF {#3}
+ { \__dbdate_use_zfill:nffff }
+ { \__dbdate_use:nffff }
+ {#1}
+ { \clist_item:Nn #2 { 1 } }
+ { \clist_item:Nn #2 { 2 } }
+ { \clist_item:Nn #2 { 3 } }
+ { \clist_item:Nn #2 { 4 } }
+ }
+ } {
+ \@@_sep_error:xxx
+ { 1~or~4 }
+ { \clist_count:N #2 }
+ { \clist_use:Nn #2 { ,~ } }
+ }
+}
+\cs_generate_variant:Nn \@@_date_use:nNN { ncc }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_use_data:nnnn}
+% Display Data.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{attr}
+% \item \meta{index}
+% \item \meta{style}
+% \end{arguments}
+% \begin{macrocode}
+% #1 database #2 attr #3 index #4 style
+\cs_new:Nn \@@_use_data:nnnn {
+ \str_case_e:nn
+ { \prop_item:cn { g_@@_attr_type_prop_#1 } {#2} } {
+ { str } { \str_use:c { g_@@_data_#1_#2_#3 } }
+ { tl } { \tl_use:c { g_@@_data_#1_#2_#3 } }
+ { int } { \int_use:c { g_@@_data_#1_#2_#3 } }
+ { fp } { \fp_use:c { g_@@_data_#1_#2_#3 } }
+ { clist } {
+ \@@_clist_use:cccc { g_@@_data_#1_#2_#3 }
+ { g_@@_style_attr_sep_#4_#1_#2 }
+ { g_@@_style_attr_item_before_tl_#4_#1_#2 }
+ { g_@@_style_attr_item_after_tl_#4_#1_#2 }
+ }
+ { date } {
+ \exp_args:Nnx
+ \tl_use:c { g_@@_style_attr_wrapper_#4_#1_#2 } {
+ \@@_date_use:ncc { g_@@_data_#1_#2_#3 }
+ { g_@@_style_attr_sep_#4_#1_#2 }
+ { g_@@_style_attr_zfill_bool_#4_#1_#2 }
+ }
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbDatabase, \dbFilterName, \dbFilterInfo}
+% Define context macros.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{filter}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show_set_macro:nn {
+ \tl_set:Nn \dbDatabase {#1}
+ \tl_set:Nn \dbFilterName {#2}
+ \tl_set_eq:Nc \dbFilterInfo { g_@@_filter_info_tl_#1_#2 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_filter:nn}
+% Filter records by executing the hook function in the running sequence and
+% then testing the result boolean.
+% \begin{arguments}
+% \item \meta{database}
+% \item \meta{filter}
+% \item \meta{index clist}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show_filter:nnN {
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{index}
+% \end{arguments}
+% \begin{macrocode}
+ \int_step_inline:nn { \@@_get_counter:n {#1} } {
+ \seq_if_exist:cTF { g_@@_filter_run_seq_#1_#2 } {
+% \end{macrocode}
+% \begin{arguments}[3]
+% \item \meta{hook}
+% \end{arguments}
+% \begin{macrocode}
+ \seq_map_inline:cn { g_@@_filter_run_seq_#1_#2 } {
+ \use:c {####1} {##1}
+ }
+ \exp_args:Nv
+ \bool_if:nT { g_@@_filter_bool_tl_#1_#2 }
+ { \clist_put_right:Nn #3 {##1} }
+ } { \clist_put_right:Nn #3 {##1} }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_set_counter:N, \dbalph, \dbAlph, \dbarabic, \dbroman,
+% \dbRoman}
+% Define macros to display counter.
+% \begin{arguments}
+% \item \meta{int var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show_set_counter:N {
+ \tl_set:Nx \dbalph { \int_to_alph:n {#1} }
+ \tl_set:Nx \dbAlph { \int_to_Alph:n {#1} }
+ \tl_set:Nx \dbarabic { \int_to_arabic:n {#1} }
+ \tl_set:Nx \dbRoman { \int_to_Roman:n {#1} }
+ \tl_set:Nx \dbroman { \int_to_roman:n {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_item:nn, \dbIndex, \dbuse}
+% Display single record.
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \item \meta{index clist}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show_item:nnN {
+ \int_zero_new:N \l_@@_show_int
+% \end{macrocode}
+% \begin{arguments}[2]
+% \item \meta{index}
+% \end{arguments}
+% \begin{macrocode}
+ \clist_map_inline:Nn #3 {
+ \int_incr:N \l_@@_show_int
+ \@@_show_set_counter:N \l_@@_show_int
+ \tl_set:Nn \dbIndex {##1}
+% \end{macrocode}
+% \begin{arguments}[3]
+% \item \meta{attr}
+% \end{arguments}
+% \begin{macrocode}
+ \cs_set:Npn \dbuse ####1 {
+ \@@_check_attr:nn {#2} {####1}
+ \tl_use:c { g_@@_style_attr_before_tl_#1_#2_####1 }
+ \@@_use_data:nnnn {#2} {####1} {##1} {#1}
+ \tl_use:c { g_@@_style_attr_after_tl_#1_#2_####1 }
+ }
+ \tl_use:c { g_@@_style_record_before_tl_#1_#2 }
+ \tl_use:c { g_@@_style_database_item_tl_#1_#2 }
+ \tl_use:c { g_@@_style_record_after_tl_#1_#2 }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_set_cond:N, \dbIfEmptyT, \dbIfEmptyF, \dbIfEmptyTF}
+% Define conditional to test if the number of records to show is zero.
+% \begin{arguments}
+% \item \meta{index clist}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show_set_cond:N {
+ \prg_set_conditional:Nnn \@@_if_empty: { T, F, TF } {
+ \clist_if_empty:NTF #1
+ { \prg_return_true: }
+ { \prg_return_false: }
+ }
+ \cs_set_eq:NN \dbIfEmptyT \@@_if_empty:T
+ \cs_set_eq:NN \dbIfEmptyF \@@_if_empty:F
+ \cs_set_eq:NN \dbIfEmptyTF \@@_if_empty:TF
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show:nnn, \@@_show:nnv}
+% First filter records and sort them if needed and display at last.
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show:nnn {
+ \@@_show_set_macro:nn {#2} {#3}
+ \clist_clear_new:N \l_@@_show_index_clist
+ \@@_show_filter:nnN {#2} {#3} \l_@@_show_index_clist
+ \clist_if_empty:cF { g_@@_sort_clist_#1_#2 }
+ { \@@_sort:nNn {#2} \l_@@_show_index_clist {#1} }
+ \tl_use:c { g_@@_style_before_tl_#1_#2 }
+ \@@_show_item:nnN {#1} {#2} \l_@@_show_index_clist
+ \tl_use:c { g_@@_style_after_tl_#1_#2 }
+}
+\cs_generate_variant:Nn \@@_show:nnn { nnv }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\dbshow}
+% User insterface to display the \meta{database} with \meta{style}.
+% \begin{arguments}
+% \item \meta{style}
+% \item \meta{database}
+% \end{arguments}
+% \begin{macrocode}
+\NewDocumentCommand { \dbshow } { m m } {
+ \@@_check_database:n {#2}
+ \@@_check_filter:nv {#2} { g_@@_filter_#1_#2 }
+ \@@_show:nnv {#1} {#2} { g_@@_filter_#1_#2 }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Date Type}
+%
+% \begin{macrocode}
+%<@@=dbdate>
+% \end{macrocode}
+%
+% \begin{macro}[pTF]{\@@_if_leap:n}
+% Check if the year is leap.
+% \begin{arguments}
+% \item \meta{year}
+% \end{arguments}
+% \begin{macrocode}
+\prg_new_conditional:Nnn \@@_if_leap:n { T, F, TF, p } {
+ \bool_if:nTF {
+ \int_compare_p:nNn { \int_mod:nn {#1} { 400 } } = { 0 } ||
+ (!\int_compare_p:nNn { \int_mod:nn {#1} { 100 } } = { 0 } &&
+ \int_compare_p:nNn { \int_mod:nn {#1} { 4 } } = { 0 })
+ } { \prg_return_true: } { \prg_return_false: }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\c_@@_month_clist}
+% Number of days of every month.
+% \begin{macrocode}
+\clist_const:Nn \c_@@_month_clist
+ { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_to_int:nnnN}
+% Transform date to integer relative to |1971-01-01|.
+% \begin{arguments}
+% \item \meta{year}
+% \item \meta{month}
+% \item \meta{day}
+% \item \meta{int var} to store the result
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_to_int:nnnN {
+ \int_zero_new:N \l_@@_ans_int
+ \int_zero_new:N \l_@@_tmpa_int
+ \int_zero_new:N \l_@@_tmpb_int
+ \int_set:Nn \l_@@_ans_int { #3 - 1 }
+ \int_step_inline:nn { #2 - 1 } {
+ \int_add:Nn \l_@@_ans_int {
+ \clist_item:Nn \c_@@_month_clist {##1}
+ }
+ \bool_if:nT {
+ \int_compare_p:nNn {##1} = { 2 } &&
+ \@@_if_leap_p:n {#1}
+ } { \int_incr:N \l_@@_ans_int }
+ }
+ \int_add:Nn \l_@@_ans_int { 365 * (#1 - 1971) }
+ \int_add:Nn \l_@@_ans_int {
+ \int_div_truncate:nn { #1 - 1 } { 4 } -
+ \int_div_truncate:nn { 1971 } { 4 }
+ }
+ \int_sub:Nn \l_@@_ans_int {
+ \int_div_truncate:nn { #1 - 1 } { 100 } -
+ \int_div_truncate:nn { 1971 } { 100 }
+ }
+ \int_add:Nn \l_@@_ans_int {
+ \int_div_truncate:nn { #1 - 1 } { 400 } -
+ \int_div_truncate:nn { 1971 } { 400 }
+ }
+ \int_set_eq:NN #4 \l_@@_ans_int
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_to_int:NNNN, \@@_to_int:cccN}
+% Transform date to integer relative to |1971-01-01|.
+% \begin{arguments}
+% \item \meta{year int var}
+% \item \meta{month int var}
+% \item \meta{day int var}
+% \item \meta{int var} to store the result
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_to_int:NNNN {
+ \@@_to_int:nnnN {#1} {#2} {#3} #4
+}
+\cs_generate_variant:Nn \@@_to_int:NNNN { cccN }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_to_int:nN}
+% Transform date to integer relative to |1971-01-01|.
+% \begin{arguments}
+% \item \meta{date var}
+% \item \meta{int var} to store the result
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_to_int:nN {
+ \@@_to_int:cccN
+ { @@_year_#1 }
+ { @@_month_#1 }
+ { @@_day_#1 }
+ #2
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_val:n, \@@_gset_val:n}
+% Set the value of \meta{data var} to |yyyy/mm/dd|.
+% \begin{arguments}
+% \item \meta{date var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set_val:n {
+ \tl_set:cx {#1} { \@@_use_zfill:nn {#1} { \g_@@_sep_tl } }
+}
+\cs_new_protected:Nn \@@_gset_val:n {
+ \tl_gset:cx {#1} { \@@_use_zfill:nn {#1} { \g_@@_sep_tl } }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_init:n, \@@_ginit:n}
+% Initialize \meta{date var}.
+% \begin{arguments}
+% \item \meta{date var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_init:n {
+ \@@_set:nnnn {#1} { 1971 } { 1 } { 1 }
+ \@@_set_val:n {#1}
+}
+\cs_new_protected:Nn \@@_ginit:n {
+ \@@_gset:nnnn {#1} { 1971 } { 1 } { 1 }
+ \@@_gset_val:n {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_new:n, \@@_new:x}
+% Create a new date variable.
+% \begin{arguments}
+% \item \meta{date var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_new:n {
+ \int_new:c { @@_year_#1 }
+ \int_new:c { @@_month_#1 }
+ \int_new:c { @@_day_#1 }
+ \@@_ginit:n {#1}
+}
+\cs_generate_variant:Nn \@@_new:n { x }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_clear_new:n, \@@_gclear_new:n, \@@_clear_new:x,
+% \@@_gclear_new:x}
+% Clear or create a new date variable.
+% \begin{arguments}
+% \item \meta{date var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_clear_new:n {
+ \int_zero_new:c { @@_year_#1 }
+ \int_zero_new:c { @@_month_#1 }
+ \int_zero_new:c { @@_day_#1 }
+ \@@_init:n {#1}
+}
+\cs_generate_variant:Nn \@@_clear_new:n { x }
+\cs_new_protected:Nn \@@_gclear_new:n {
+ \int_gzero_new:c { @@_year_#1 }
+ \int_gzero_new:c { @@_month_#1 }
+ \int_gzero_new:c { @@_day_#1 }
+ \@@_ginit:n {#1}
+}
+\cs_generate_variant:Nn \@@_gclear_new:n { x }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set:nnnn, \@@_gset:nnnn}
+% Set the value of \meta{date var}.
+% \begin{arguments}
+% \item \meta{date var}
+% \item \meta{year}
+% \item \meta{month}
+% \item \meta{day}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set:nnnn {
+ \int_set:cn { @@_year_#1 } {#2}
+ \int_set:cn { @@_month_#1 } {#3}
+ \int_set:cn { @@_day_#1 } {#4}
+ \@@_set_val:n {#1}
+}
+\cs_new_protected:Nn \@@_gset:nnnn {
+ \int_gset:cn { @@_year_#1 } {#2}
+ \int_gset:cn { @@_month_#1 } {#3}
+ \int_gset:cn { @@_day_#1 } {#4}
+ \@@_gset_val:n {#1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set_sep:n, \@@_set:w, \@@_gset:w, \dbdatesep}
+% Set internal date separator. Default is |/|.
+% \begin{arguments}
+% \item \meta{separator}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set_sep:n {
+ \tl_gset:Nn \g_@@_sep_tl { #1 }
+% \end{macrocode}
+% Set the value of \meta{date var}.
+% \begin{arguments}[2]
+% \item \meta{date var}
+% \item \meta{year}
+% \item \meta{month}
+% \item \meta{day}
+% \end{arguments}
+% \begin{macrocode}
+ \cs_gset_protected:Npn \@@_set:w ##1\@@_sep##2#1##3#1##4\@@_stop {
+ \@@_clear_new:n {##1}
+ \@@_set:nnnn {##1} {##2} {##3} {##4}
+ }
+ \cs_gset_protected:Npn \@@_gset:w ##1\@@_sep##2#1##3#1##4\@@_stop {
+ \@@_gclear_new:n {##1}
+ \@@_gset:nnnn {##1} {##2} {##3} {##4}
+ }
+}
+\cs_gset_eq:NN \dbdatesep \@@_set_sep:n
+\dbdatesep{/}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_set:nn, \@@_set:xx, \@@_gset:nn, \@@_gset:xx}
+% Set the value of \meta{date var}.
+% \begin{arguments}
+% \item \meta{date var}
+% \item \meta{date}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_set:nn {
+ \@@_set:w #1\@@_sep#2\@@_stop
+}
+\cs_generate_variant:Nn \@@_set:nn { xx }
+\cs_new_protected:Nn \@@_gset:nn {
+ \@@_gset:w #1\@@_sep#2\@@_stop
+}
+\cs_generate_variant:Nn \@@_gset:nn { xx }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_sub:nnN}
+% Calculate the number of days between \meta{date var2} and \meta{date var1}.
+% \begin{arguments}
+% \item \meta{date var1}
+% \item \meta{date var2}
+% \item \meta{int var} to store the result
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_sub:nnN {
+ \int_zero_new:N \l_@@_sub_tmpa_int
+ \int_zero_new:N \l_@@_sub_tmpb_int
+ \@@_to_int:nN {#1} \l_@@_sub_tmpa_int
+ \@@_to_int:nN {#2} \l_@@_sub_tmpb_int
+ \int_set:Nn #3 { \l_@@_sub_tmpa_int - \l_@@_sub_tmpb_int }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show_two:N, \@@_show_two:c}
+% Prepend 0 to single digit.
+% \begin{macrocode}
+\cs_new:Nn \@@_show_two:N {
+ \int_compare:nNnTF {#1} > { 9 }
+ { \int_use:N #1 } { 0\int_use:N #1 }
+}
+\cs_generate_variant:Nn \@@_show_two:N { c }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_use:nnnnn, \@@_use:nffff, \@@_use_zfill:nnnnn,
+% \@@_use_zfill:nffff}
+% Display date.
+% \begin{arguments}
+% \item \meta{date var}
+% \item \meta{separator 1}
+% \item \meta{separator 2}
+% \item \meta{separator 3}
+% \item \meta{separator 4}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new:Nn \@@_use:nnnnn {
+ #2\int_use:c { @@_year_#1 }
+ #3\int_use:c { @@_month_#1 }
+ #4\int_use:c { @@_day_#1 }#5
+}
+\cs_generate_variant:Nn \@@_use:nnnnn { nffff }
+\cs_new:Nn \@@_use_zfill:nnnnn {
+ #2\int_use:c { @@_year_#1 }
+ #3\@@_show_two:c { @@_month_#1 }
+ #4\@@_show_two:c { @@_day_#1 }#5
+}
+\cs_generate_variant:Nn \@@_use_zfill:nnnnn { nffff }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_use:nn, \@@_use:nf, \@@_use_zfill:nn, \@@_use_zfill:nf}
+% Display date with the same separator.
+% \begin{macrocode}
+\cs_new:Nn \@@_use:nn {
+ \@@_use:nnnnn {#1} {} {#2} {#2} {}
+}
+\cs_generate_variant:Nn \@@_use:nn { nf }
+\cs_new:Nn \@@_use_zfill:nn {
+ \@@_use_zfill:nnnnn {#1} {} {#2} {#2} {}
+}
+\cs_generate_variant:Nn \@@_use_zfill:nn { nf }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_show:n}
+% Show date in terminal.
+% \begin{arguments}
+% \item \meta{date var}
+% \end{arguments}
+% \begin{macrocode}
+\cs_new_protected:Nn \@@_show:n {
+ \exp_args:Nx \tl_show:n { >#1~=~\@@_use:nn {#1} { - } }
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{variable}{\dbtoday}
+% Display date of today in |yyyy/mm/dd|.
+% \begin{macrocode}
+\tl_set:Nn \dbtoday {
+ \int_use:N \c_sys_year_int \g_@@_sep_tl
+ \int_use:N \c_sys_month_int \g_@@_sep_tl
+ \int_use:N \c_sys_day_int
+}
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macrocode}
+\endinput
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \Finale
+%
+\endinput
diff --git a/macros/latex/contrib/dbshow/dbshow.ins b/macros/latex/contrib/dbshow/dbshow.ins
new file mode 100644
index 0000000000..ebc4b55794
--- /dev/null
+++ b/macros/latex/contrib/dbshow/dbshow.ins
@@ -0,0 +1,90 @@
+%%
+%% This is file `dbshow.ins',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% dbshow.dtx (with options: `install')
+%%
+%% Copyright (C) 2022- by Changkai Li <lichangkai225@qq.com>
+%% --------------------------------------------------------------------------
+%%
+%% This work 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. This version of this license is in
+%% http://www.latex-project.org/lppl/lppl-1-3c.txt
+%% and the latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3 or later is part of all distributions of
+%% LaTeX version 2005/12/01 or later.
+%%
+%% This work has the LPPL maintenance status "maintained".
+%%
+%% The Current Maintainer of this work is Changkai Li.
+%%
+%% This package consists of the file dbshow.dtx,
+%% and the derived files dbshow.pdf,
+%% dbshow.sty,
+%% dbshow.ins and
+%% README.md.
+%% --------------------------------------------------------------------------
+%%
+
+\input l3docstrip.tex
+\keepsilent
+\askforoverwritefalse
+\preamble
+
+ Copyright (C) 2022- by Changkai Li <lichangkai225@qq.com>
+ --------------------------------------------------------------------------
+
+ This work 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. This version of this license is in
+ http://www.latex-project.org/lppl/lppl-1-3c.txt
+ and the latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+ and version 1.3 or later is part of all distributions of
+ LaTeX version 2005/12/01 or later.
+
+ This work has the LPPL maintenance status "maintained".
+
+ The Current Maintainer of this work is Changkai Li.
+
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md.
+ --------------------------------------------------------------------------
+
+\endpreamble
+\postamble
+
+ --------------------------------------------------------------------------
+ This package consists of the file dbshow.dtx,
+ and the derived files dbshow.pdf,
+ dbshow.sty,
+ dbshow.ins and
+ README.md.
+\endpostamble
+
+\generate{
+ \usedir{tex/latex/dbshow}
+ \file{dbshow.sty}{\from{\jobname.dtx}{package}}
+ \nopreamble\nopostamble
+ \usedir{doc/latex/dbshow}
+ \file{README.md} {\from{\jobname.dtx}{readme}}
+}
+\endbatchfile
+%%
+%% --------------------------------------------------------------------------
+%% This package consists of the file dbshow.dtx,
+%% and the derived files dbshow.pdf,
+%% dbshow.sty,
+%% dbshow.ins and
+%% README.md.
+%%
+%% End of file `dbshow.ins'.
diff --git a/macros/latex/contrib/dbshow/dbshow.pdf b/macros/latex/contrib/dbshow/dbshow.pdf
new file mode 100644
index 0000000000..8d7c4d1bc2
--- /dev/null
+++ b/macros/latex/contrib/dbshow/dbshow.pdf
Binary files differ
diff --git a/macros/latex/contrib/dbshow/dbshow.sty b/macros/latex/contrib/dbshow/dbshow.sty
deleted file mode 100644
index d60c993db1..0000000000
--- a/macros/latex/contrib/dbshow/dbshow.sty
+++ /dev/null
@@ -1,906 +0,0 @@
-%% dbshow.sty
-%% Copyright 2022 Li Changkai <lichangkai225@qq.com>
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This work has the LPPL maintenance status `maintained'.
-%
-% The Current Maintainer of this work is Li Changkai.
-%
-% This work consists of the files dbshow.sty, dbshow-doc.tex.
-\def\myfileversion{v1.3}
-\def\myfiledate{2022/01/10}
-\RequirePackage{expl3, xparse}
-\ProvidesExplPackage
- {dbshow}
- {\myfiledate}
- {\myfileversion}
- {database to store and show data}
-
-\msg_new:nnn { dbshow } { non-existent-database } {
- Database~'#1'~does~not~exist~\msg_line_context:.
-}
-
-% #1 database
-\cs_new:Nn \dbshow_check_database:n {
- \prop_if_exist:cF { g__dbshow_type_map_#1 }
- { \msg_fatal:nnn { dbshow } { non-existent-database } { #1 } }
-}
-
-\msg_new:nnn { dbshow } { non-existent-attr } {
- Attribute~'#2'~of~database~'#1'~does~not~exist~\msg_line_context:.
-}
-
-% #1 database #2 attr
-\cs_new:Nn \dbshow_check_attr:nn {
- \prop_if_in:cnF { g__dbshow_type_map_#1 } { #2 }
- { \msg_fatal:nnnn { dbshow } { non-existent-attr } { #1 } { #2 } }
-}
-
-\msg_new:nnn { dbshow } { non-existent-style } {
- Style~'#1'~of~database~'#2'~does~not~exist~\msg_line_context:.
-}
-
-% #1 style #2 database
-\cs_new:Nn \dbshow_check_style:nn {
- \tl_if_exist:cF { g__dbshow_style_opts_#1_#2 }
- { \msg_warning:nnnn { dbshow } { non-existent-style } { #1 } { #2 } }
-}
-
-\msg_new:nnn { dbshow } { non-existent-cond } {
- Conditional~'#2'~of~database~'#1'~does~not~exist~\msg_line_context:.
-}
-
-% #1 database #2 cond
-\cs_new:Nn \dbshow_check_cond:nnn {
- \tl_if_exist:cF { g__dbshow_filter_attr_#1_#2 }
- { \msg_fatal:nnnn { dbshow } { non-existent-cond } { #1 } { #2 } }
-}
-
-\msg_new:nnn { dbshow } { non-existent-filter } {
- Filter~'#2'~of~database~'#1'~does~not~exist~and~is~ignored~\msg_line_context:.
-}
-
-\cs_generate_variant:Nn \msg_warning:nnnn { nnnx }
-% #1 database #2 filter
-\cs_new:Nn \dbshow_check_filter:nn {
- \seq_if_exist:cF { g__dbshow_filter_run_seq_#1_#2 } {
- \str_if_eq:eeF { #2 } { -none- } {
- \msg_warning:nnnx { dbshow } { non-existent-filter } { #1 } { #2 }
- }
- }
-}
-
-\msg_new:nnn { dbshow } { non-existent-type } {
- Type~'#1'~does~not~exist,~the~type~of~attribute~should~be~one~of~
- \{date,~str,~tl,~clist,~int,~fp\}~\msg_line_context:.
-}
-
-% #1 type
-\cs_new:Nn \dbshow_check_type:n {
- \clist_if_in:NnF \dbshow_type_clist { #1 }
- { \msg_fatal:nnn { dbshow } { non-existent-type } { #1 } }
-}
-
-% #1 valid count #2 real count #3 content
-\msg_new:nnn { dbshow } { wrong-seperator } {
- option~'sep'~should~contain~#1~items~but~only~#2~items~was~given,~
- sep~=~\{#3\}~\msg_line_context:.
-}
-
-% #1 valid count #2 real count #3 content
-\cs_new:Nn \dbshow_sep_error:nnn {
- \msg_error:nnnnn { dbshow } { wrong-seperator } { #1 } { #2 } { #3 }
-}
-\cs_generate_variant:Nn \dbshow_sep_error:nnn { xxx }
-
-\msg_new:nnn { dbshow } { unsupported-sort-type } {
- unsupported~sort~type:~'#1'~\msg_line_context:.~The~type~should~be~one~of~
- \{str,~date,~int,~fp\}.
-}
-
-\msg_new:nnn { dbshow } { invalid-relation } {
- invalid~relation:~'#1'.
-}
-
-\clist_const:Nn \dbshow_type_clist { date, str, tl, clist, int, fp }
-
-\prop_const_from_keyval:Nn \dbshow_default_value {
- date = \dbtoday,
- str = ,
- tl = ,
- clist = ,
- int = 0,
- fp = 0
-}
-
-\cs_generate_variant:Nn \clist_use:nn { xx }
-\cs_generate_variant:Nn \clist_use:nnnn { xxxx }
-\cs_generate_variant:Nn \prop_get:NnN { cVN }
-\cs_generate_variant:Nn \regex_extract_all:nnN { nVN }
-\cs_generate_variant:Nn \regex_split:nnN { nVN }
-\prg_generate_conditional_variant:Nnn \str_compare:nNn { VNV } { TF }
-\prg_generate_conditional_variant:Nnn \int_compare:nNn { VNV } { TF }
-\prg_generate_conditional_variant:Nnn \fp_compare:nNn { VNV } { TF }
-\prg_generate_conditional_variant:Nnn \regex_match:nn { VV } { TF }
-\prg_generate_conditional_variant:Nnn \clist_if_in:Nn { Nx } { TF }
-
-% #1 database #2 attr #3 type #4 default value
-\cs_new:Npn \dbshow_process_default_value:w #1|#2=#3|#4\scan_stop {
- \dbshow_check_type:n { #3 }
- \prop_gput:cxx { g__dbshow_type_map_#1 } { #2 } { #3 }
- \prop_gput:cxx { g__dbshow_default_map_#1 } { #2 } { #4 }
-}
-
-\cs_new_protected:Nn \dbshow_process_type_map:n {
- \prop_gclear_new:c { g__dbshow_default_map_#1 }
- \prop_map_inline:cn { g__dbshow_type_map_#1 } {
- \str_if_in:nnTF { ##2 } { | }
- { \dbshow_process_default_value:w #1|##1=##2\scan_stop }
- {
- \prop_get:NnN \dbshow_default_value { ##2 } \l_tmp_default
- \dbshow_process_default_value:w #1|##1=##2|\l_tmp_default\scan_stop
- }
- }
-}
-
-% #1 database_name, #2 clist, attr=type
-\cs_new_protected:Nn \dbshow_database_new:nn {
- \int_gzero_new:c { g__dbshow_counter_#1 }
- \prop_gset_from_keyval:cn { g__dbshow_type_map_#1 } { #2 }
-}
-
-% #1 database_name, #2 clist
-\cs_new_protected:Nn \dbshow_database_new_append:nn {
- \int_gzero_new:c { g__dbshow_counter_#1 }
- \prop_if_exist:cF { g__dbshow_type_map_#1 }
- { \prop_new:c { g__dbshow_type_map_#1 } }
- \prop_gset_from_keyval:Nn \l_tmpa_prop { #2 }
- \prop_concat:ccc { g__dbshow_type_map_#1 } { g__dbshow_type_map_#1 } { l_tmpa_prop }
-}
-
-% #1 database_name, #2 database inherit from #3 clist
-\cs_new_protected:Nn \dbshow_database_new_inherit:nnn {
- \dbshow_check_database:n { #2 }
- \str_if_eq:nnTF { #1 } { #2 } {
- \dbshow_database_new_append:nn { #1 } { #3 }
- } {
- \int_gzero_new:c { g__dbshow_counter_#1 }
- \prop_gset_from_keyval:cn { g__dbshow_type_map_#1 } { #3 }
- \prop_concat:ccc { g__dbshow_type_map_#1 } { g__dbshow_type_map_#2 } { g__dbshow_type_map_#1 }
- }
-}
-
-% #1 database_name, #2 attr
-\cs_new:Nn \dbshow_get_type:nn {
- \prop_item:cn { g__dbshow_type_map_#1 } { #2 }
-}
-
-% #1 database_name
-\cs_new:Nn \dbshow_get_counter:n {
- \int_use:c { g__dbshow_counter_#1 }
-}
-
-% #1 database_name
-\cs_new:Nn \dbshow_step_counter:n {
- \int_gincr:c { g__dbshow_counter_#1 }
-}
-
-\NewDocumentCommand { \dbclear } { m } {
- \int_gzero:c { g__dbshow_counter_#1 }
-}
-
-% #1 database #2 attr #3 content
-\cs_new:Nn \dbshow_save_data:nnn {
- \dbshow_check_attr:nn { #1 } { #2 }
- \use:c {
- \str_case_e:nn { \prop_item:cn { g__dbshow_type_map_#1 } { #2 } } {
- { str } { str_clear_new:c }
- { tl } { tl_gclear_new:c }
- { clist } { clist_gclear_new:c }
- { int } { int_gzero_new:c }
- { fp } { fp_gzero_new:c }
- { date } { dbshow_date_gclear_new:n }
- }
- } { g__dbshow_data_#1_#2_\int_use:c { g__dbshow_counter_#1 } }
- \use:c {
- \str_case_e:nn { \prop_item:cn { g__dbshow_type_map_#1 } { #2 } } {
- { str } { str_gset:cn }
- { tl } { tl_gset:cn }
- { clist } { clist_gset:cn }
- { int } { int_gset:cn }
- { fp } { fp_gset:cn }
- { date } { dbshow_date_gset:nx }
- }
- } { g__dbshow_data_#1_#2_\int_use:c { g__dbshow_counter_#1 } } { #3 }
-}
-\cs_generate_variant:Nn \dbshow_save_data:nnn { nnx }
-
-% #1 before code tl #2 after code tl #3 item
-\cs_new:Nn \dbshow_clist_wrapper:NNn {
- \exp_not:n { { #1#3#2 }, }
-}
-
-% #1 clist #2 sep #3 before code tl #4 after code tl
-\cs_new:Nn \dbshow_clist_use:NNNN {
- \int_case:nnF { \clist_count:N #2 } {
- { 1 } {
- \clist_use:xx
- { \clist_map_tokens:Nn #1 { \dbshow_clist_wrapper:NNn #3 #4 } }
- { \clist_item:Nn #2 { 1 } }
- }
- { 3 } {
- \clist_use:xxxx
- { \clist_map_tokens:Nn #1 { \dbshow_clist_wrapper:NNn #3 #4 } }
- { \clist_item:Nn #2 { 1 } }
- { \clist_item:Nn #2 { 2 } }
- { \clist_item:Nn #2 { 3 } }
- }
- } {
- \dbshow_sep_error:xxx
- { 1~or~3 }
- { \clist_count:N #2 }
- { \clist_use:Nn #2 { ,~ } }
- }
-}
-\cs_generate_variant:Nn \dbshow_clist_use:NNNN { cccc }
-
-% #1 date #2 sep #3 zfill bool
-\cs_new:Nn \dbshow_date_use:nNN {
- \int_case:nnF { \clist_count:N #2 } {
- { 1 } {
- \bool_if:NTF { #3 }
- { \dbshow_date_use_zfill:nf }
- { \dbshow_date_use:nf }
- { #1 }
- { \clist_item:Nn #2 { 1 } }
- }
- { 4 } {
- \bool_if:NTF { #3 }
- { \dbshow_date_use_zfill:nffff }
- { \dbshow_date_use:nffff }
- { #1 }
- { \clist_item:Nn #2 { 1 } }
- { \clist_item:Nn #2 { 2 } }
- { \clist_item:Nn #2 { 3 } }
- { \clist_item:Nn #2 { 4 } }
- }
- } {
- \dbshow_sep_error:xxx
- { 1~or~4 }
- { \clist_count:N #2 }
- { \clist_use:Nn #2 { ,~ } }
- }
-}
-\cs_generate_variant:Nn \dbshow_date_use:nNN { ncc }
-
-% #1 database #2 attr #3 index #4 style
-\cs_new:Nn \dbshow_use_data:nnnn {
- \str_case_e:nn { \prop_item:cn { g__dbshow_type_map_#1 } { #2 } } {
- { str } { \str_use:c { g__dbshow_data_#1_#2_#3 } }
- { tl } { \tl_use:c { g__dbshow_data_#1_#2_#3 } }
- { int } { \int_use:c { g__dbshow_data_#1_#2_#3 } }
- { fp } { \fp_use:c { g__dbshow_data_#1_#2_#3 } }
- { clist } {
- \dbshow_clist_use:cccc { g__dbshow_data_#1_#2_#3 }
- { g__dbshow_style_attr_sep_#4_#1_#2 }
- { g__dbshow_style_attr_item_before_#4_#1_#2 }
- { g__dbshow_style_attr_item_after_#4_#1_#2 }
- }
- { date } {
- \exp_args:Nnx
- \tl_use:c { g__dbshow_style_attr_wrapper_#4_#1_#2 } {
- \dbshow_date_use:ncc { g__dbshow_data_#1_#2_#3 }
- { g__dbshow_style_attr_sep_#4_#1_#2 }
- { g__dbshow_style_attr_zfill_#4_#1_#2 }
- }
- }
- }
-}
-
-% #1 database
-\cs_new_protected:Nn \dbshow_set_database_keys:n {
- \prop_map_inline:cn { g__dbshow_type_map_#1 } {
- \keys_define:nn { dbshow/database/#1 } {
- ##1 .code:n = \dbshow_save_data:nnn { #1 } { ##1 } { ####1 },
- }
- }
-}
-
-% #1 append or not #2 inherit #3 database #4 attrs
-\NewDocumentCommand { \dbNewDatabase } { s o m m } {
- \IfNoValueTF { #2 } {
- \IfBooleanTF { #1 }
- { \dbshow_database_new_append:nn { #3 } { #4 } }
- { \dbshow_database_new:nn { #3 } { #4 } }
- } { \dbshow_database_new_inherit:nnn { #3 } { #2 } { #4 } }
- \dbshow_database_new_append:nn { #3 } { id=int }
- \dbshow_process_type_map:n { #3 }
- \dbshow_set_database_keys:n { #3 }
- \dbNewStyle{default}{#3}{}
-}
-
-% #1 database #2 attr-content map
-\NewDocumentEnvironment { dbitem } { m O{} +b } {
- \dbshow_check_database:n { #1 }
- \dbshow_step_counter:n { #1 }
- \cs_set:Nn \dbshow_set_default:nn {
- \dbshow_save_data:nnx { #1 } { ##1 } {
- \prop_item:cn { g__dbshow_default_map_#1 } { ##1 }
- }
- }
- \prop_map_function:cN { g__dbshow_type_map_#1 } \dbshow_set_default:nn
- \dbshow_save_data:nnx { #1 } { id } { \dbshow_get_counter:n { #1 } }
- \keys_set:nn { dbshow/database/#1 } { #2 }
- % ##1 exp or not ##2 attr ##3 content
- \NewDocumentCommand { \dbsave } { s m m } {
- \IfBooleanTF { ##1 } {
- \dbshow_save_data:nnn { #1 } { ##2 } { \exp_not:n { ##3 } }
- } {
- \dbshow_save_data:nnn { #1 } { ##2 } { ##3 }
- }
- }
-} { #3 }
-
-\cs_new:Nn \dbshow_if_int: {
- \int_compare:nTF { \l_dbshow_rela }
- { \dbshow_set_true: }
- { \dbshow_set_false: }
-}
-
-\cs_new:Nn \dbshow_if_fp: {
- \fp_compare:nTF { \l_dbshow_rela }
- { \dbshow_set_true: }
- { \dbshow_set_false: }
-}
-
-% star: all in
-% no star: one in
-\cs_new:Nn \dbshow_if_clist: {
- \bool_if:NTF \l_star_bool { % and
- \dbshow_set_true:
- \exp_args:Nx
- \clist_map_inline:nn { \l_dbshow_rela } {
- \clist_if_in:NnF \dbval { ##1 } {
- \dbshow_set_false:
- \clist_map_break:
- }
- }
- }
- { % or
- \dbshow_set_false:
- \exp_args:Nx
- \clist_map_inline:nn { \l_dbshow_rela } {
- \clist_if_in:NnT \dbval { ##1 } {
- \dbshow_set_true:
- \clist_map_break:
- }
- }
- }
-}
-
-% star: match full
-% no star: match part
-\cs_new:Nn \dbshow_if_str: {
- \bool_if:NT \l_star_bool {
- \tl_put_left:Nn \l_dbshow_rela { \A }
- \tl_put_right:Nn \l_dbshow_rela { \Z }
- }
- \regex_match:VVTF \l_dbshow_rela \dbval
- { \dbshow_set_true: }
- { \dbshow_set_false: }
-}
-\cs_set_eq:NN \dbshow_if_tl: \dbshow_if_str:
-
-\cs_new:Npn \dbshow_parse_date:w #1|#2\dbshow_stop {
- \clist_set_eq:Nc \l_point_clist { g__review_points_#1 }
- \tl_set:Nn \l_date_tl { #2 }
-}
-
-\cs_new_protected:Nn \dbshow_if_date: {
- \int_zero_new:N \l__dbshow_if_tmpa_int
- \int_zero_new:N \l__dbshow_if_tmpb_int
- \int_zero_new:N \l__dbshow_if_diff_int
- \bool_if:NTF \l_star_bool { % review points
- \exp_after:wN \dbshow_parse_date:w \l_dbshow_rela\dbshow_stop
- \dbshow_date_clear_new:n { tmp_day1 }
- \dbshow_date_clear_new:n { tmp_day2 }
- \dbshow_date_set:nx { tmp_day1 } { \l_date_tl }
- \dbshow_date_set:nx { tmp_day2 } { \dbval }
- \dbshow_date_sub:nnN { tmp_day1 } { tmp_day2 } \l__dbshow_if_diff_int
- \clist_if_in:NxTF \l_point_clist { \int_use:N \l__dbshow_if_diff_int }
- { \dbshow_set_true: }
- { \dbshow_set_false: }
- }
- { % rela
- \tl_set:Nx \l_dbshow_rela { \l_dbshow_rela }
- \regex_extract_all:nVN { \d{4}/\d+/\d+ } \l_dbshow_rela \l_date_seq
- \regex_split:nVN { \d{4}/\d+/\d+ } \l_dbshow_rela \l_other_seq
- \tl_clear:N \l_dbshow_rela
- \int_set:Nn \l__dbshow_if_tmpa_int { \seq_count:N \l_date_seq }
- \int_step_inline:nn { \l__dbshow_if_tmpa_int } {
- \tl_put_right:Nx \l_dbshow_rela { \seq_item:Nn \l_other_seq { ##1 } }
- \dbshow_date_clear_new:n { rela-tmp }
- \dbshow_date_set:nx { rela-tmp } { \seq_item:Nn \l_date_seq { ##1 } }
- \dbshow_date_to_int:nN { rela-tmp } \l__dbshow_if_tmpb_int
- \tl_put_right:Nx \l_dbshow_rela { \int_use:N \l__dbshow_if_tmpb_int }
- }
- \tl_put_right:Nx \l_dbshow_rela {
- \seq_item:Nn \l_other_seq { \l__dbshow_if_tmpa_int + 1 }
- }
- \int_compare:nTF { \l_dbshow_rela }
- { \dbshow_set_true: }
- { \dbshow_set_false: }
- }
-}
-
-% #1 database name #2 cond name #3 index
-\cs_set:Nn \dbshow_if:nnn {
- \tl_set_eq:Nc \l_dbshow_attr { g__dbshow_filter_attr_#1_#2 }
- \tl_set_eq:Nc \l_dbshow_rela { g__dbshow_filter_rela_#1_#2 }
- \prop_get:cVN { g__dbshow_type_map_#1 } \l_dbshow_attr \l_tmp_type
- \cs_set_eq:Nc \dbval { g__dbshow_data_#1_\l_dbshow_attr _#3 }
- \cs_set:Nn \dbshow_set_true:
- { \bool_gset_true:c { g__dbshow_filter_bool_#1_#2 } }
- \cs_set:Nn \dbshow_set_false:
- { \bool_gset_false:c { g__dbshow_filter_bool_#1_#2 } }
- \bool_set_eq:Nc \l_star_bool { g__dbshow_cond_star_#1_#2 }
- \use:c { dbshow_if_\l_tmp_type : }
-}
-
-% å°†cond->attr, cond->rela, cond->boolå…³è”èµ·æ¥
-% #1 database name #2 cond name #3 attr #4 rela #5 star
-\cs_new_protected:Nn \dbshow_new_conditional:nnnnn {
- \tl_gset:cn { g__dbshow_filter_attr_#1_#2 } { #3 }
- \tl_gset:cn { g__dbshow_filter_rela_#1_#2 } { #4 }
- \bool_if_exist:cF { g__dbshow_filter_bool_#1_#2 }
- { \bool_new:c { g__dbshow_filter_bool_#1_#2 } }
- \bool_if_exist:cF { g__dbshow_cond_star_#1_#2 }
- { \bool_new:c { g__dbshow_cond_star_#1_#2 } }
- \IfBooleanTF { #5 }
- { \bool_gset_true:c { g__dbshow_cond_star_#1_#2 } }
- { \bool_gset_false:c { g__dbshow_cond_star_#1_#2 } }
- \cs_gset:cn { g__dbshow_filter_cs_#1_#2:n } {
- \dbshow_if:nnn { #1 } { #2 } { ##1 }
- }
- \seq_gput_right:cn { g__dbshow_cond_list_#1 } { #2 }
-}
-
-% 将组åˆæ¡ä»¶cond1, cond2, ..., 替æ¢æˆcond1->bool, cond2->bool, ...
-% #1 database name #2 filter name #3 filters
-\cs_new_protected:Nn \dbshow_combine_conditional:nnn {
- \tl_gset_eq:cN { g__dbshow_filter_bool_tl_#1_#2 } \c_true_bool
- \seq_gclear_new:c { g__dbshow_filter_run_seq_#1_#2 }
- \regex_extract_all:nnN { \w+ } { #3 } \l_tmpa_seq
- \seq_map_inline:Nn \l_tmpa_seq {
- % ##1 cond name
- \seq_if_in:cnT { g__dbshow_cond_list_#1 } { ##1 } {
- \seq_gput_right:cn { g__dbshow_filter_run_seq_#1_#2 }
- { g__dbshow_filter_cs_#1_##1:n }
- }
- }
- \tl_set:Nn \l_tmpa_tl { #3 }
- \regex_replace_all:nnN
- { \w+ } { \c{ g__dbshow_filter_bool_#1_\0 } }
- \l_tmpa_tl
- \tl_gset_eq:cN { g__dbshow_filter_bool_tl_#1_#2 } \l_tmpa_tl
-}
-
-% #1 database #2 content
-\NewDocumentEnvironment { dbFilters } { m +b } {
- \seq_gclear_new:c { g__dbshow_cond_list_#1 }
- % #1 star #2 cond name #3 attr #4 rela
- \DeclareDocumentCommand { \dbNewConditional } { s m m m } {
- \dbshow_new_conditional:nnnnn
- { #1 } { ##2 } { ##3 } { ##4 } { ##1 }
- }
- % ##1 filter name ##2 filters ##3 info
- \DeclareDocumentCommand { \dbCombineConditionals } { m m O{} } {
- \tl_gset:cn { g__dbshow_filter_info_#1_##1 } { ##3 }
- \dbshow_combine_conditional:nnn { #1 } { ##1 } { ##2 }
- }
- #2
-} { }
-
-% #1 name #2 points
-\NewDocumentCommand { \dbNewReviewPoints } { m m } {
- \clist_set:cn { g__review_points_#1 } { #2 }
-}
-
-\cs_new:Nn \dbshow_identity:n { #1 }
-
-% #1 style name #2 database name #3 attr
-\cs_new_protected:Nn \dbshow_new_attr_style:nnn {
- \dbshow_check_attr:nn { #2 } { #3 }
- \keys_define:nn { dbshow/style/#1/#3 } {
- before-code .tl_gset:c = { g__dbshow_style_attr_before_#1_#2_#3 },
- before-code .initial:n = ,
- after-code .tl_gset:c = { g__dbshow_style_attr_after_#1_#2_#3 },
- after-code .initial:n = ,
- % for date and clist
- sep .clist_gset:c = { g__dbshow_style_attr_sep_#1_#2_#3 },
- % only for clist
- item-before-code .tl_gset:c = { g__dbshow_style_attr_item_before_#1_#2_#3 },
- item-before-code .initial:n = ,
- item-after-code .tl_gset:c = { g__dbshow_style_attr_item_after_#1_#2_#3 },
- item-after-code .initial:n = ,
- % only for date
- zfill .bool_gset:c = { g__dbshow_style_attr_zfill_#1_#2_#3 },
- zfill .initial:n = true,
- zfill .default:n = true,
- wrapper .tl_gset:c = { g__dbshow_style_attr_wrapper_#1_#2_#3 },
- wrapper .initial:n = { \dbshow_identity:n },
- }
- \str_case_e:nn { \prop_item:cn { g__dbshow_type_map_#2 } { #3 } } {
- { clist } { \keys_set:nn { dbshow/style/#1/#3 } { sep = { { ,~ } } } }
- { date } { \keys_set:nn { dbshow/style/#1/#3 } { sep = { { / } } } }
- }
-}
-
-\int_gzero_new:N \g__dbshow_raw_filter_int
-% #1 style name #2 database name
-\cs_new_protected:Nn \dbshow_new_database_style:nn {
- \dbshow_check_database:n { #2 }
- \keys_define:nn { dbshow/style/#1 } {
- filter .tl_gset:c = { g__dbshow_filter_#1_#2 },
- filter .initial:n = -none-,
- raw-filter .code:n = {
- \int_gincr:N \g__dbshow_raw_filter_int
- \str_set:Nx \l_tmpa_str { -raw\int_use:N \g__dbshow_raw_filter_int - }
- \exp_args:NnV \tl_gset:cn { g__dbshow_filter_#1_#2 } \l_tmpa_str
- \exp_args:NnV \dbshow_combine_conditional:nnn { #2 } \l_tmpa_str { ##1 }
- },
- sort .clist_gset:c = { g__dbshow_sort_#1_#2 },
- before-code .tl_gset:c = { g__dbshow_style_before_#1_#2 },
- before-code .initial:n = ,
- item-code .tl_gset:c = { g__dbshow_style_database_item_#1_#2 },
- item-code .initial:n = ,
- after-code .tl_gset:c = { g__dbshow_style_after_#1_#2 },
- after-code .initial:n = ,
- record-before-code .tl_gset:c = { g__dbshow_style_record_before_#1_#2 },
- record-before-code .initial:n = ,
- record-after-code .tl_gset:c = { g__dbshow_style_record_after_#1_#2 },
- record-after-code .initial:n = ,
- }
- \prop_map_inline:cn { g__dbshow_type_map_#2 } {
- \dbshow_new_attr_style:nnn { #1 } { #2 } { ##1 }
- }
-}
-
-% #1 base style #2 style #3 database #4 opt
-\NewDocumentCommand { \dbNewStyle } { o m m +m } {
- \tl_gset:cn { g__dbshow_style_opts_#2_#3 } { #4, }
- \IfValueT { #1 } {
- \tl_gclear:N \g_tmpa_tl
- \clist_map_inline:nn { #1 } {
- \dbshow_check_style:nn { ##1 } { #3 }
- \tl_if_exist:cT { g__dbshow_style_opts_##1_#3 } {
- \tl_gconcat:ccc { g_tmpa_tl }
- { g_tmpa_tl } { g__dbshow_style_opts_##1_#3 }
- }
- }
- \tl_gconcat:ccc { g__dbshow_style_opts_#2_#3 }
- { g_tmpa_tl } { g__dbshow_style_opts_#2_#3 }
- }
- \dbshow_new_database_style:nn { #2 } { #3 }
- \exp_args:Nnv
- \keys_set:nn { dbshow/style/#2 } { g__dbshow_style_opts_#2_#3 }
-}
-
-\cs_new:Npn \dbshow_sort_parse_star:w #1* {
- \tl_set:Nx \l_op_same { > }
- \tl_set:Nx \l_op_swap { < }
- \str_set:Nn \l_tmpa_str { #1 }
-}
-
-% #1 database #2 index #3 style
-\cs_new:Nn \dbshow_sort:nNn {
- \int_set:Nn \l_tmpb_int { \clist_count:c { g__dbshow_sort_#3_#1 } }
- \clist_sort:Nn #2 {
- \int_zero:N \l_tmpa_int
- \cs_set:Nn \dbshow_sort_single: {
- \int_incr:N \l_tmpa_int
- \str_set:Nx \l_tmpa_str % attr
- { \clist_item:cn { g__dbshow_sort_#3_#1 } { \l_tmpa_int } }
- \str_if_in:NnTF \l_tmpa_str { * } {
- \exp_after:wN \dbshow_sort_parse_star:w \l_tmpa_str
- }
- {
- \tl_set:Nx \l_op_same { < }
- \tl_set:Nx \l_op_swap { > }
- }
- \exp_args:NnV \dbshow_check_attr:nn { #1 } \l_tmpa_str
-
- \prop_get:cVN { g__dbshow_type_map_#1 } \l_tmpa_str \l_tmp_type
- \clist_if_in:nVF { str, int, date, fp } \l_tmp_type {
- \msg_error:nnx { dbshow } { unsupported-sort-type } { \l_tmp_type }
- }
-
- \str_if_eq:eeT { \l_tmp_type } { date } {
- \str_set:Nn \l_tmp_type { str }
- }
-
- \cs_set_eq:Nc \l_tmpa_tl { g__dbshow_data_#1_\l_tmpa_str _##1 }
- \cs_set_eq:Nc \l_tmpb_tl { g__dbshow_data_#1_\l_tmpa_str _##2 }
- \cs_set_eq:Nc \dbshow_compare { \l_tmp_type _compare:VNVTF }
-
- \dbshow_compare \l_tmpa_tl \l_op_same \l_tmpb_tl
- { \sort_return_same: }
- {
- \dbshow_compare { \l_tmpa_tl } \l_op_swap { \l_tmpb_tl }
- { \sort_return_swapped: }
- {
- \int_compare:nTF { \l_tmpa_int = \l_tmpb_int }
- { \sort_return_same: }
- { \dbshow_sort_single: }
- }
- }
- }
- \dbshow_sort_single:
- }
-}
-
-% #1 style #2 database #3 filter
-\cs_new_protected:Nn \dbshow_init_iterator:nnn {
- \tl_set:Nn \dbDatabase { #2 }
- \tl_set:Nx \dbFilterName { #3 }
- \tl_set_eq:Nc \dbFilterInfo { g__dbshow_filter_info_#2_#3 }
-
- \clist_clear_new:N \l_index
- %% run filters
- % ##1 index
- \cs_set:Nn \dbshow_filter:n {
- \seq_if_exist:cTF { g__dbshow_filter_run_seq_#2_#3 } {
- \seq_map_inline:cn { g__dbshow_filter_run_seq_#2_#3 } {
- \use:c { ####1 } { ##1 }
- }
- \exp_args:Nv
- \bool_if:nT { g__dbshow_filter_bool_tl_#2_#3 }
- { \clist_put_right:Nn \l_index { ##1 } }
- } { \clist_put_right:Nn \l_index { ##1 } }
- }
- \int_step_function:nN { \dbshow_get_counter:n { #2 } } \dbshow_filter:n
- \clist_if_empty:cF { g__dbshow_sort_#1_#2 }
- { \dbshow_sort:nNn { #2 } \l_index { #1 } }
-
- % ##1 index
- \int_zero_new:N \l_counter_int
- \cs_set:Nn \dbshow_iter:n {
- \int_incr:N \l_counter_int
- \tl_set:Nx \dbalph { \int_to_alph:n { \l_counter_int } }
- \tl_set:Nx \dbAlph { \int_to_Alph:n { \l_counter_int } }
- \tl_set:Nx \dbarabic { \int_to_arabic:n { \l_counter_int } }
- \tl_set:Nx \dbRoman { \int_to_Roman:n { \l_counter_int } }
- \tl_set:Nx \dbroman { \int_to_roman:n { \l_counter_int } }
- \tl_set:Nn \dbIndex { ##1 }
-
- % ####1 attr
- \DeclareExpandableDocumentCommand { \dbuse } { m } {
- \dbshow_check_attr:nn { #2 } { ####1 }
- \tl_use:c { g__dbshow_style_attr_before_#1_#2_####1 }
- \dbshow_use_data:nnnn { #2 } { ####1 } { ##1 } { #1 }
- \tl_use:c { g__dbshow_style_attr_after_#1_#2_####1 }
- }
- \tl_use:c { g__dbshow_style_record_before_#1_#2 }
- \tl_use:c { g__dbshow_style_database_item_#1_#2 }
- \tl_use:c { g__dbshow_style_record_after_#1_#2 }
- }
- \prg_set_conditional:Nnn \dbshow_if_empty: { T, F, TF } {
- \clist_if_empty:NTF \l_index
- { \prg_return_true: }
- { \prg_return_false: }
- }
- \cs_set_eq:NN \dbIfEmptyT\dbshow_if_empty:T
- \cs_set_eq:NN \dbIfEmptyF\dbshow_if_empty:F
- \cs_set_eq:NN \dbIfEmptyTF\dbshow_if_empty:TF
-
- \tl_use:c { g__dbshow_style_before_#1_#2 }
- \clist_map_function:NN \l_index \dbshow_iter:n
- \tl_use:c { g__dbshow_style_after_#1_#2 }
-}
-
-% #1 style #2 database
-\NewDocumentCommand { \dbshow } { m m } {
- \dbshow_check_database:n { #2 }
- \tl_set_eq:Nc \l_dbshow_filter { g__dbshow_filter_#1_#2 }
- \exp_args:Nnv \dbshow_check_filter:nn
- { #2 } { g__dbshow_filter_#1_#2 }
- \exp_args:Nnnv \dbshow_init_iterator:nnn
- { #1 } { #2 } { g__dbshow_filter_#1_#2 }
-}
-
-\cs_set_eq:NN \dbIntAbs \int_abs:n
-\cs_set_eq:NN \dbIntSign \int_sign:n
-\cs_set_eq:NN \dbIntDivRound \int_div_round:nn
-\cs_set_eq:NN \dbIntDivTruncate \int_div_truncate:nn
-\cs_set_eq:NN \dbIntMax \int_max:nn
-\cs_set_eq:NN \dbIntMin \int_min:nn
-\cs_set_eq:NN \dbIntMod \int_mod:nn
-\cs_set_eq:NN \dbFpSign \fp_sign:n
-
-%%%%%%%%%%%%%%%%% date
-
-% #1 year
-\prg_new_conditional:Nnn \dbshow_date_if_leap:n { T, F, TF, p } {
- \bool_if:nTF {
- \int_compare_p:nNn { \int_mod:nn { #1 } { 400 } } = { 0 } ||
- (
- !\int_compare_p:nNn { \int_mod:nn { #1 } { 100 } } = { 0 } &&
- \int_compare_p:nNn { \int_mod:nn { #1 } { 4 } } = { 0 }
- )
- }
- { \prg_return_true: }
- { \prg_return_false: }
-}
-
-\clist_const:Nn \dbshow_date_month_clist
- { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }
-
-\int_new:N \l__date_ans_int
-\int_new:N \l__date_tmpa_int
-\int_new:N \l__date_tmpb_int
-
-% #1 year #2 month #3 day #4 token to save the result
-\cs_new_protected:Nn \dbshow_date_to_int:nnnN {
- \int_set:Nn \l__date_ans_int { #3 - 1 }
- \int_step_inline:nn { #2 - 1 } {
- \int_add:Nn \l__date_ans_int {
- \clist_item:Nn \dbshow_date_month_clist { ##1 }
- }
- \bool_if:nT {
- \int_compare_p:nNn { ##1 } = { 2 } &&
- \dbshow_date_if_leap_p:n { #1 }
- } { \int_incr:N \l__date_ans_int }
- }
- \int_add:Nn \l__date_ans_int { 365 * (#1 - 1971) }
- \int_add:Nn \l__date_ans_int {
- \int_div_truncate:nn { #1 - 1 } { 4 } -
- \int_div_truncate:nn { 1971 } { 4 }
- }
- \int_sub:Nn \l__date_ans_int {
- \int_div_truncate:nn { #1 - 1 } { 100 } -
- \int_div_truncate:nn { 1971 } { 100 }
- }
- \int_add:Nn \l__date_ans_int {
- \int_div_truncate:nn { #1 - 1 } { 400 } -
- \int_div_truncate:nn { 1971 } { 400 }
- }
- \int_set_eq:NN #4 \l__date_ans_int
-}
-
-\cs_new_protected:Nn \dbshow_date_to_int:NNNN {
- \dbshow_date_to_int:nnnN { #1 } { #2 } { #3 } #4
-}
-\cs_generate_variant:Nn \dbshow_date_to_int:NNNN { cccN }
-
-% #1 date #2 int
-\cs_new:Nn \dbshow_date_to_int:nN {
- \dbshow_date_to_int:cccN
- { dbshow_date_year_#1 }
- { dbshow_date_month_#1 }
- { dbshow_date_day_#1 }
- #2
-}
-
-\cs_new_protected:Nn \dbshow_date_set_val:n {
- \tl_set:cx { #1 } { \dbshow_date_use_zfill:nn { #1 } { / } }
-}
-\cs_new_protected:Nn \dbshow_date_gset_val:n {
- \tl_gset:cx { #1 } { \dbshow_date_use_zfill:nn { #1 } { / } }
-}
-
-\cs_new_protected:Nn \dbshow_date_init:n {
- \dbshow_date_set:nnnn { #1 } { 1971 } { 1 } { 1 }
- \dbshow_date_set_val:n { #1 }
-}
-\cs_new_protected:Nn \dbshow_date_ginit:n {
- \dbshow_date_gset:nnnn { #1 } { 1971 } { 1 } { 1 }
- \dbshow_date_gset_val:n { #1 }
-}
-
-\cs_new_protected:Nn \dbshow_date_new:n {
- \int_new:c { dbshow_date_year_#1 }
- \int_new:c { dbshow_date_month_#1 }
- \int_new:c { dbshow_date_day_#1 }
- \dbshow_date_ginit:n { #1 }
-}
-
-\cs_new_protected:Nn \dbshow_date_clear_new:n {
- \int_zero_new:c { dbshow_date_year_#1 }
- \int_zero_new:c { dbshow_date_month_#1 }
- \int_zero_new:c { dbshow_date_day_#1 }
- \dbshow_date_init:n { #1 }
-}
-
-\cs_new_protected:Nn \dbshow_date_gclear_new:n {
- \int_gzero_new:c { dbshow_date_year_#1 }
- \int_gzero_new:c { dbshow_date_month_#1 }
- \int_gzero_new:c { dbshow_date_day_#1 }
- \dbshow_date_ginit:n { #1 }
-}
-
-% #1 name #2 year #3 month #4 day
-\cs_new_protected:Nn \dbshow_date_set:nnnn {
- \int_set:cn { dbshow_date_year_#1 } { #2 }
- \int_set:cn { dbshow_date_month_#1 } { #3 }
- \int_set:cn { dbshow_date_day_#1 } { #4 }
- \dbshow_date_set_val:n { #1 }
-}
-
-% #1 name #2 year #3 month #4 day
-\cs_new_protected:Nn \dbshow_date_gset:nnnn {
- \int_gset:cn { dbshow_date_year_#1 } { #2 }
- \int_gset:cn { dbshow_date_month_#1 } { #3 }
- \int_gset:cn { dbshow_date_day_#1 } { #4 }
- \dbshow_date_gset_val:n { #1 }
-}
-
-\cs_new_protected:Npn \dbshow_date_set:w #1\dbshow_sep#2/#3/#4\dbshow_stop {
- \dbshow_date_clear_new:n { #1 }
- \dbshow_date_set:nnnn { #1 } { #2 } { #3 } { #4 }
-}
-\cs_new_protected:Npn \dbshow_date_gset:w #1\dbshow_sep#2/#3/#4\dbshow_stop {
- \dbshow_date_gclear_new:n { #1 }
- \dbshow_date_gset:nnnn { #1 } { #2 } { #3 } { #4 }
-}
-
-% #1 date name #2 date
-\cs_new_protected:Nn \dbshow_date_set:nn {
- \dbshow_date_set:w #1\dbshow_sep#2\dbshow_stop
-}
-\cs_generate_variant:Nn \dbshow_date_set:nn { nx }
-\cs_new_protected:Nn \dbshow_date_gset:nn {
- \dbshow_date_gset:w #1\dbshow_sep#2\dbshow_stop
-}
-\cs_generate_variant:Nn \dbshow_date_gset:nn { nx }
-
-% #1 date 1 #2 date 2 #3 int token
-\cs_new_protected:Nn \dbshow_date_sub:nnN {
- \dbshow_date_to_int:nN { #1 } \l__date_tmpa_int
- \dbshow_date_to_int:nN { #2 } \l__date_tmpb_int
- \int_set:Nn #3 { \l__date_tmpa_int - \l__date_tmpb_int }
-}
-
-\cs_new:Nn \dbshow_date_show_two:N {
- \int_compare:nNnTF { #1 } > { 9 }
- { \int_use:N #1 } { 0\int_use:N #1 }
-}
-\cs_generate_variant:Nn \dbshow_date_show_two:N { c }
-
-\cs_new:Nn \dbshow_date_use:nnnnn {
- #2\int_use:c { dbshow_date_year_#1 }
- #3\int_use:c { dbshow_date_month_#1 }
- #4\int_use:c { dbshow_date_day_#1 }#5
-}
-\cs_generate_variant:Nn \dbshow_date_use:nnnnn { nffff }
-
-\cs_new:Nn \dbshow_date_use_zfill:nnnnn {
- #2\int_use:c { dbshow_date_year_#1 }
- #3\dbshow_date_show_two:c { dbshow_date_month_#1 }
- #4\dbshow_date_show_two:c { dbshow_date_day_#1 }#5
-}
-\cs_generate_variant:Nn \dbshow_date_use_zfill:nnnnn { nffff }
-
-\cs_new:Nn \dbshow_date_use:nn {
- \dbshow_date_use:nnnnn { #1 } { } { #2 } { #2 } { }
-}
-\cs_generate_variant:Nn \dbshow_date_use:nn { nf }
-
-\cs_new:Nn \dbshow_date_use_zfill:nn {
- \dbshow_date_use_zfill:nnnnn { #1 } { } { #2 } { #2 } { }
-}
-\cs_generate_variant:Nn \dbshow_date_use_zfill:nn { nf }
-
-\tl_set:Nx \dbtoday {
- \int_use:N \c_sys_year_int/
- \int_use:N \c_sys_month_int/
- \int_use:N \c_sys_day_int
-}
-
-\endinput
diff --git a/macros/latex/contrib/esami/README b/macros/latex/contrib/esami/README
index 0703530247..c81c86eb43 100644
--- a/macros/latex/contrib/esami/README
+++ b/macros/latex/contrib/esami/README
@@ -1,6 +1,6 @@
-The esami package v. 2.6
+The esami package v. 2.7
For generation of texts and solutions of exams in LaTeX
-2021/10/11
+2022/01/11
File: README
Author: Grazia Messineo and Salvatore Vassallo
@@ -14,7 +14,7 @@ varying in random order, with closed or open answer, matching, problems, and so
of each group are randomly scrambled across the exam and variants of each exercise are chosen
randomly from a file which contains them all and.
-Copyright: (C) 2008--2021 Grazia Messineo & Salvatore Vassallo
+Copyright: (C) 2008--2022 Grazia Messineo & Salvatore Vassallo
Licence: LPPL
FILES IN DISTRIBUTION
diff --git a/macros/latex/contrib/esami/VERSION b/macros/latex/contrib/esami/VERSION
index 655ad0fa4f..d312737d7e 100644
--- a/macros/latex/contrib/esami/VERSION
+++ b/macros/latex/contrib/esami/VERSION
@@ -1 +1 @@
-VERSION 2.6 DATE=October 11, 2021
+VERSION 2.7 DATE=January 11, 2022
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.pdf b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
index 017a1b28d8..d7dddc90ab 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-en.tex b/macros/latex/contrib/esami/doc/esami-doc-en.tex
index 33e51db7cd..05788c147f 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-en.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-en.tex
@@ -20,6 +20,7 @@
\usepackage{fancyvrb}
\usepackage[lmargin=3.5cm,rmargin=3.5cm]{geometry}
\usepackage[colorlinks=true,pdftex,hyperindex=true]{hyperref}
+
\newcounter{esempio}
\newsavebox{\fcolbox} %\newlength{\fcolwidth}
\newenvironment{esempio}
@@ -78,6 +79,7 @@
\changes{Version 2.4}{2018/02/10}{Documentation corrected. }
\changes{Version 2.5}{2018/05/06}{Corrected a misprint in the code. Improved the selection of random exercises.}
\changes{Version 2.6}{2021/10/11}{Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces. }
+\changes{Version 2.7}{2022/01/11}{Improved the spacing in \cmd{\sempli} and \cmd{\FPsignpol}. Corrected a misprint in the code.}
%\IndexPrologue{\section*{Index} Numbers written in italic refer to the page where the item is described; underlined numebers refer to the line of code in which the item is described; other references are to the line of code where the item is used.}
\GlossaryPrologue{\section*{Changelog}}
@@ -87,8 +89,8 @@
\fontshape\updefault
\footnotesize}
\GetFileInfo{esami.sty}
-\def\fileversion{versione 2.6}
-\def\filedate{2021/10/11}
+\def\fileversion{versione 2.7}
+\def\filedate{2022/01/11}
\title{Package esami\thanks{This document
@@ -122,7 +124,7 @@ Package \pkgname{esami} depends on some other non standard packages\footnote{The
\end{enumerate}
Moreover following packages are optional, but recommended:
\begin{enumerate}
- \item \pkgname{ifluatex} and \pkgname{ifxetex} to compile with \Hologo{XeLaTeX} and \Hologo{LuaLaTeX} (here below we will refer only to the compilation with \hologo{pdfLaTeX})\nuovo{vers. 2.0}\footnote{At the moment the support for \Hologo{XeLaTeX} and \Hologo{LuaLaTeX} is only partial and it is not possibile to use some type of exercises.}.
+ \item \pkgname{ifluatex} and \pkgname{ifxetex} to compile with \Hologo{XeLaTeX} and \Hologo{LuaLaTeX} (here below we will refer only to the compilation with \hologo{pdfLaTeX})\nuovo{vers. 2.0}\footnote{At the moment the use of package with \Hologo{XeLaTeX} and \Hologo{LuaLaTeX}has not completely been tested and it is possibile that some type of exercises do not work as expected.}.
\item \pkgname{lmodern} and \pkgname{amsfonts}: useful for a good pdf output;
\item \pkgname{numprint}: to have a better output and different formats for numbers, depending on language;
%\item \pkgname{icomma}: from \pkgname{ws} package, for a correct format of commas;
@@ -307,7 +309,7 @@ The environment \envname{esdb}\marg{nome db} defines a virtual database of exerc
The environment generates a file \texttt{nome db.tex} which contains the references to all the exercises chosen. When the environment is closed, exercises are automatically written with the command \cmd{\esercizidb}\marg{nome db} (not to be written). If more than one environment \envname{esdb} is used, each one must be given a different name.
-Also this environment is a modified version of a similar environment in \pkgname{probsoln} and, at the moment, does not work nor with \hologo{XeLaTeX} nor with \hologo{LuaLaTeX}.
+Also this environment is a modified version of a similar environment in \pkgname{probsoln}.
In the file of the exercises, in
@@ -459,7 +461,7 @@ The optional parameter \meta{type} defines the way in which the blank space is d
If the answer contains mathematical expressions, it must be written between \$\ even if the command \cmd{\fillin} is already contained in a mathematical environment.
-This kind of exercise cannot be used, at the moment, with \Hologo{XeLaTeX} or \Hologo{LuaLaTeX}.
+%This kind of exercise cannot be used, at the moment, with \Hologo{XeLaTeX} or \Hologo{LuaLaTeX}.
\paragraph{domanda:}\DescribeEnv{domanda} (the word ``domanda'' means ``question'' in Italian)
this environment must contain the text of the exercise (not the solution). It is used in \envname{problem} and \envname{problem*} and with the package option \optname{solutionsonly} only the solution of the exercise is printed and not the text. In previous versions of this package (not released to CTAN) there was another environment in order to obtain this.
\paragraph{risposta:}\DescribeEnv{risposta} This environment generates a ruled or boxed space in which the student has to write the answer of an exercise (``risposta'' is the Italian word for ``answer'').
@@ -507,7 +509,7 @@ The two lists are shuffled and then printed with the command \cmd{\matching}.
\end{esempio}
The solutions show the correct matching.
-Also this kind of exercise does not work with \Hologo{XeLaTeX} or \Hologo{LuaLaTeX}.
+%Also this kind of exercise does not work with \Hologo{XeLaTeX} or \Hologo{LuaLaTeX}.
\paragraph{tabella:}\DescribeEnv{tabella} (the word ``tabella'' means ``table'' in Italian) it is used to create exercises with many short open answers in column.
The syntax is (the \cs{cr} at the end of the line is necessary):
@@ -521,7 +523,7 @@ The syntax is (the \cs{cr} at the end of the line is necessary):
The first parameter (default 2) is the number of columns of the table visible in the text of the exercise. The last column is invisible in the text and visible in the solutions.
The second parameter gives the alignment of the visible columns (the same for all the columns) and the third one the alignment of the hidden column.
-This kind of exercise works with \Hologo{XeLaTeX}, but not with \Hologo{LuaLaTeX}.
+%This kind of exercise works with \Hologo{XeLaTeX}, but not with \Hologo{LuaLaTeX}.
\begin{esempio}
With the code
\begin{verbatim}
@@ -793,6 +795,7 @@ Inside this file you should use only one command, \cmd{\def \textbackslash eserc
\item[Version 2.4 (2018/02/10)] Documentation corrected.
\item[Version 2.5 (2018/05/06)] Corrected a misprint in the code. Improved the selection of random exercises.
\item[Version 2.6 (2021/10/11)] Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces.
+ \item[Version 2.7 (2021/10/11)] Improved the spacing in \cmd{\sempli} and \cmd{\FPsignpol}. Corrected a misprint in the code
\end{description}
\bibliographystyle{plain}
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.pdf b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
index 8b32737ca2..b706c809d3 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.pdf
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/esami-doc-it.tex b/macros/latex/contrib/esami/doc/esami-doc-it.tex
index d8e8363ee8..3ac7495edb 100644
--- a/macros/latex/contrib/esami/doc/esami-doc-it.tex
+++ b/macros/latex/contrib/esami/doc/esami-doc-it.tex
@@ -77,6 +77,7 @@
\changes{Versione 2.4}{2018/02/10}{Corretta la documentazione .}
\changes{Versione 2.5}{2018/05/06}{Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.}
\changes{Versione 2.6}{2021/10/11}{Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.}
+\changes{Versione 2.7}{2022/01/11}{Migliorata la spaziatura in \cmd{\sempli} e \cmd{\FPsignpol}. Corretto un errore nel codice}
%\IndexPrologue{\section*{Indice} I numeri scritti in italico rimandano alla pagina dove è descritto l'item; i numeri sottolineati rimandano alla riga di codice in cui l'item è descritto; le altre referenze sono alla riga di codice dove l'item è usato.}
\GlossaryPrologue{\section*{Changelog}}
@@ -86,8 +87,8 @@
\fontshape\updefault
\footnotesize}
\GetFileInfo{esami.sty}
-\def\fileversion{versione 2.6}
-\def\filedate{2021/10/11}
+\def\fileversion{versione 2.7}
+\def\filedate{2022/01/11}
\title{Il pacchetto esami\thanks{Questo documento
@@ -121,7 +122,7 @@ Il pacchetto \pkgname{esami} dipende da alcuni altri pacchetti non standard\foot
\end{enumerate}
Inoltre i seguenti pacchetti sono opzionali, ma raccomandati:
\begin{enumerate}
- \item \pkgname{ifluatex} e \pkgname{ifxetex} per la compilazione con \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} (nel seguito si farà riferimento solo alla compilazione con \hologo{pdfLaTeX})\nuovo{vers. 2.0}\footnote{Al momento il supporto per \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} è molto parziale e alcune tipologie di esercizio non sono utilizzabili.}.
+ \item \pkgname{ifluatex} e \pkgname{ifxetex} per la compilazione con \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} (nel seguito si farà riferimento solo alla compilazione con \hologo{pdfLaTeX})\nuovo{vers. 2.0}\footnote{Al momento l'utilizzo del pacchetto con \Hologo{XeLaTeX} e \Hologo{LuaLaTeX} non è stato del tutto testato e alcune tipologie di esercizio potrebbero non essere utilizzabili.}.
\item \pkgname{lmodern} and \pkgname{amsfonts}: necessari per un buon output in pdf;
\item \pkgname{numprint}: per un output migliore dei numeri e per avere formati numerici diversi a seconda del linguaggio;
\item \pkgname{eurosym}: per usare la valuta;
@@ -316,7 +317,7 @@ L'ambiente \envname{esdb}\marg{nome db} definisce un database virtuale di eserci
L'ambiente genera un file \texttt{nome db.tex} che contiene i riferimenti agli esercizi scelti. Alla chiusura dell'ambiente gli esercizi vengono mandati automaticamente in output mediante il comando \cmd{\esercizidb}\marg{nome db} (da non dare esplicitamente). Ovviamente se si usano più ambienti \envname{esdb} ad ognuno deve essere assegnato un nome diverso.
-Anche questo ambiente è una versione modificata di un analogo ambiente presente nel pacchetto \pkgname{probsoln} e, al momento non funziona né con \hologo{XeLaTeX} né con \hologo{LuaLaTeX}.
+Anche questo ambiente è una versione modificata di un analogo ambiente presente nel pacchetto \pkgname{probsoln}.
Nel file degli esercizi, la sintassi da usare all'interno di
\cmd{\newproblem} è la seguente:
@@ -476,7 +477,7 @@ Se la risposta contiene espressioni matematiche, deve essere inserita esplicitam
%All'interno del comando \cmd{\fillin} (nello spazio per la risposta) non è possibile usare i comandi \cmd{\sempli} o \cmd{\semplix} (si veda la sezione \ref{sec:comandi}).
-Questo tipo di esercizio non può al momento essere usato né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}
+%Questo tipo di esercizio non può al momento essere usato né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}
\paragraph{domanda:}\DescribeEnv{problema} questo ambiente deve contenere il testo dell'esercizio (non le soluzioni). Viene usato negli ambienti \envname{problema} e \envname{problema*}, con l'opzione \optname{solutionsonly} non viene stampato il testo degli esercizi, ma solo la soluzione. Nelle versioni precedenti del pacchetto per lo stesso scopo veniva usato un altro ambiente.
\paragraph{risposta:}\DescribeEnv{risposta} serve per creare, in esercizi a risposta aperta lunga, lo spazio per inserire la risposta in un box o su righe.
@@ -521,7 +522,7 @@ L'elenco dei nomi (mischiati in ordine casuale su ciascuna colonna) viene visual
\end{esempio}
Nelle soluzioni viene invece visualizzato l'abbinamento corretto.
-Anche questo esercizio non funziona né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}.
+%Anche questo esercizio non funziona né con \Hologo{XeLaTeX} né con \Hologo{LuaLaTeX}.
\paragraph{tabella:}\DescribeEnv{tabella} serve per creare esercizi con più risposte aperte incolonnate.
La sintassi è
@@ -534,7 +535,7 @@ La sintassi è
Il primo parametro (il cui valore di default è 2) indica il numero di colonne della tabella il cui contenuto deve essere visibile anche nel testo dell'esercizio (e non solo nella soluzione), mentre è possibile avere solo una colonna il cui contenuto è invisibile nel testo, ma appare nella soluzione. Il secondo parametro consente di scegliere l'allineamento delle colonne il cui contenuto è sempre visibile e il terzo l'allineamento della colonna invisibile.
Come per le domande a risposta chiusa, le risposte che contengono il carattere di tabulazione \&\ devono essere racchiuse tra parentesi graffe.
-Questo tipo di esercizio funziona con \Hologo{XeLaTeX}, ma non con \Hologo{LuaLaTeX}.
+%Questo tipo di esercizio funziona con \Hologo{XeLaTeX}, ma non con \Hologo{LuaLaTeX}.
\begin{esempio}
Con il codice
\begin{verbatim}
@@ -793,8 +794,9 @@ Al suo interno si deve usare un solo comando, \cmd{\def \textbackslash esercizio
\item[Versione 2.2 (2017/07/01)] Introdotta la possibilità di avere due semi diversi per la scelta degli esercizi (\cmd{\semeex}) e per le permutazioni e scelta dei parametri (\cmd{\seme}): di default sono uguali. Leggermente modificato il comando \cmd{\estrai} così da poter essere usato per estrarre parametri numerici da una lista. Integrata la documentazione.
\item[Versione 2.3 (2017/09/18)] Corretto un errore di battitura nel codice.
\item[Versione 2.4 (2018/02/10)] Corretta la documentazione .
- \item[Versione 2.5 (2018/05/06)] Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.
- \item[Versione 2.6 (2021/10/11)] Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.
+ \item[Versione 2.5 (2018/05/06)] Corretto un errore di battitura nel codice. Migliorata la scelta aleatoria degli esercizi.
+ \item[Versione 2.6 (2021/10/11)] Migliorata la spaziatura in \cmd{\FPsignpol}. Corretto il codice per eliminare alcuni spazi spuri.
+ \item[Versione 2.7 (2022/01/11)] Migliorata la spaziatura in \cmd{\sempli} e \cmd{\FPsignpol}. Corretto un errore nel codice
\end{description}
diff --git a/macros/latex/contrib/esami/doc/examples/problem2-tabella.tex b/macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
index 8929d2c84d..efb14edddf 100644
--- a/macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
+++ b/macros/latex/contrib/esami/doc/examples/problem2-tabella.tex
@@ -4,6 +4,7 @@
\begin{problem}[4]
Solve the following equations:
+\begin{center}
\begin{tabella}[1]{l}{r}
Equation & Solution \cr
\hline
@@ -15,6 +16,7 @@ $x^2+\FPsv{a-b}x-\FPsv{a*b}=0$& $x=-\a;\; x=\b$ \cr
\hline
$x^2-\FPsv{a-b}x-\FPsv{a*b}=0$& $x=\a;\; x=-\b $\cr
\end{tabella}
+\end{center}
\end{problem}
}
@@ -22,6 +24,7 @@ $x^2-\FPsv{a-b}x-\FPsv{a*b}=0$& $x=\a;\; x=-\b $\cr
\begin{problem}[5]
Complete the following table of derivatives:
+\begin{center}
\begin{tabella}[1]{l}{r}
Function & Derivative \cr
\hline
@@ -31,5 +34,6 @@ $f(x)=\sin x$ & $f'(x)=\cos x$\cr
\hline
$f(x)=\cos x $& $f'(x)=-\sin x$\cr
\end{tabella}
+\end{center}
\end{problem}
}
diff --git a/macros/latex/contrib/esami/doc/examples/problem3-matching.tex b/macros/latex/contrib/esami/doc/examples/problem3-matching.tex
index ede6dddc74..58bc22d4e8 100644
--- a/macros/latex/contrib/esami/doc/examples/problem3-matching.tex
+++ b/macros/latex/contrib/esami/doc/examples/problem3-matching.tex
@@ -21,12 +21,12 @@
\FPsetpar{c}{2}{4}
\FPsetpar{k}{3}{5}
$a=\a$, $b=\b$, $c=\c$
-
+
\pair{$\FPsv{k*a}:\a$}{$\k$}
\pair{$\k^{\c}$}{$\FPsv{k^c}$}
\pair{$\a \times \b$}{$\FPsv{a*b}$}
-
+\pair{$\a \times \b$}{$\FPsv{a*b}$}
+\pair{$\a \times \b$}{$\FPsv{a*b}$}
\matching
-
\end{problem}
}
diff --git a/macros/latex/contrib/esami/doc/examples/test2.tex b/macros/latex/contrib/esami/doc/examples/test2.tex
index ff3f0dee60..d0f07b16b4 100644
--- a/macros/latex/contrib/esami/doc/examples/test2.tex
+++ b/macros/latex/contrib/esami/doc/examples/test2.tex
@@ -4,9 +4,8 @@
\FPsetpar{c}{2}{8}
\item \PTs{1} exercise 2a $a=\a$, $b=\b$, $c=\c$
-seme=\seme
-semeex=\semeex
+
\begin{answers}{1}\bChoices[random]
\Ans1 answer 1 correct\eAns
\Ans0 answer 2 wrong\eAns
@@ -22,9 +21,7 @@ semeex=\semeex
\item \PTs{1} exercise 2b $a=\a$, $b=\b$, $c=\c$
-seme=\seme
-semeex=\semeex
\begin{answers}{1}\bChoices[random]
\Ans1 answer 1 correct\eAns
\Ans0 answer 2 wrong\eAns
@@ -41,9 +38,7 @@ semeex=\semeex
\item \PTs{1} exercise 2c $a=\a$, $b=\b$, $c=\c$
-seme=\seme
-semeex=\semeex
\begin{answers}{1}\bChoices[random]
\Ans1 answer 1 correct\eAns
\Ans0 answer 2 wrong\eAns
diff --git a/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf b/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
index 74b27a1343..69ba6afe98 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex b/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex
new file mode 100644
index 0000000000..3c4a9444c8
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-luatex-sol.tex
@@ -0,0 +1,124 @@
+\documentclass[a4paper,italian]{article}
+ \usepackage{luatextra} % also loads fixltx2e, fontspec, xunicode
+ \usepackage[utf8]{luainputenc}
+
+\usepackage[shuffle,xyz,pointsonright,solutions,quizsolutions,twocolumns]{esami}%%%%% TEMA
+
+% +=============================+
+% | DEFINITIONS |
+% +=============================+
+
+\def\examname{The name of the exam}
+\def\numcompiti{4}%%% The number of the versions
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\def\Data{\longdate}%%% or \shortdate: the date in the heading
+%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
+%\def\Acapo{\newpage}
+\usepackage{babel}
+
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
+\begin{document}
+\testversioni
+\pagestyle{esame}
+
+\whiledo{\thevers<\numcompiti}{\stepvers
+% +=============================+
+% | THE SEED |
+% +=============================+
+
+%\FPeval\seme{round((\thenomefile+(3*\thevers)):0)}
+%%% OR SOME OTHER LIKE
+\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)}
+%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)}
+%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
+\randomi=\seme
+
+\permuta
+% +=============================+
+% | STUFF DEFINED IN CFG FILE |
+% +=============================+
+
+\testa%%% the heading
+\istruzionii%%% some instructions
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section*{Part One}
+
+
+\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
+\begin{questions}
+%\ifluatex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else\ifxetex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else
+
+
+
+\begin{esdb}{mydb} %% some exercises from 2 files
+ \selectrandomlyn{3}{test2}
+ \selectrandomlyn{2}{test3}
+ \end{esdb}
+
+\esercizi{
+test14,
+test1,
+test4,
+test9,
+test5-fillin
+}
+
+\textsc{All the problems of a file}
+
+
+\selectallproblems[random]{test11}
+%\fi\fi
+
+\end{questions}
+
+\textsc{Some other questions}\\[5mm]
+
+
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
+\end{test}
+
+\newpage
+\section*{Part two}
+\istruzioniii%%% Some other instructions
+
+\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
+\closevers
+\newpage %
+ %
+\setcounter{page}{1} %%% dvi
+}
+
+\end{document}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-luatex.pdf b/macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
index 73b4e342a4..01b466cb05 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA-luatex.tex b/macros/latex/contrib/esami/doc/examples/testA-luatex.tex
new file mode 100644
index 0000000000..4f66e66f3d
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-luatex.tex
@@ -0,0 +1,123 @@
+\documentclass[a4paper,italian]{article}
+ \usepackage{luatextra} % also loads fixltx2e, fontspec, xunicode
+ \usepackage[utf8]{luainputenc}
+\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}
+
+% +=============================+
+% | DEFINITIONS |
+% +=============================+
+
+\def\examname{The name of the exam}
+\def\numcompiti{4}%%% The number of the versions
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\def\Data{\longdate}%%% or \shortdate: the date in the heading
+%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
+%\def\Acapo{\newpage}
+\usepackage{babel}
+
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
+\begin{document}
+\testversioni
+\pagestyle{esame}
+
+\whiledo{\thevers<\numcompiti}{\stepvers
+% +=============================+
+% | THE SEED |
+% +=============================+
+
+%\FPeval\seme{round((\thenomefile+(3*\thevers)):0)}
+%%% OR SOME OTHER LIKE
+\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)}
+%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)}
+%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
+\randomi=\seme
+
+\permuta
+% +=============================+
+% | STUFF DEFINED IN CFG FILE |
+% +=============================+
+
+\testa%%% the heading
+\istruzionii%%% some instructions
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section*{Part One}
+
+
+\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
+\begin{questions}
+%\ifluatex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else\ifxetex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else
+
+
+
+\begin{esdb}{mydb} %% some exercises from 2 files
+ \selectrandomlyn{3}{test2}
+ \selectrandomlyn{2}{test3}
+ \end{esdb}
+
+\esercizi{
+test14,
+test1,
+test4,
+test9,
+test5-fillin
+}
+
+\textsc{All the problems of a file}
+
+
+\selectallproblems[random]{test11}
+%\fi\fi
+
+\end{questions}
+
+\textsc{Some other questions}\\[5mm]
+
+
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
+\end{test}
+
+\newpage
+\section*{Part two}
+\istruzioniii%%% Some other instructions
+
+\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
+\closevers
+\newpage %
+ %
+\setcounter{page}{1} %%% dvi
+}
+
+\end{document}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-sol.pdf b/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
index 4970190095..634f2950b0 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-sol.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA-sol.tex b/macros/latex/contrib/esami/doc/examples/testA-sol.tex
index f0d8d42076..5302238910 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-sol.tex
+++ b/macros/latex/contrib/esami/doc/examples/testA-sol.tex
@@ -5,14 +5,11 @@
%\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}%%%%% TEMA
\ifluatex
\usepackage{luatextra} % also loads fixltx2e, fontspec, xunicode
- \usepackage{unicode-math}
- \setmathfont{Latin Modern Math}
\usepackage[utf8]{luainputenc}
\else\ifxetex
\usepackage{fixltx2e}
\usepackage{fontspec}
- \usepackage{unicode-math}
- \XeTeXinputencoding utf8
+ \XeTeXinputencoding utf8
\else
\usepackage{fixltx2e}
\usepackage[T1]{fontenc}
@@ -27,12 +24,14 @@
\def\examname{The name of the exam}
\def\numcompiti{4}%%% The number of the versions
-\date{2014/07/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
\def\Data{\longdate}%%% or \shortdate: the date in the heading
%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
%\def\Acapo{\newpage}
\usepackage{babel}
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
\begin{document}
\testversioni
\pagestyle{esame}
@@ -46,7 +45,7 @@
%%% OR SOME OTHER LIKE
\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)}
%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)}
-
+%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
\randomi=\seme
\permuta
@@ -62,7 +61,10 @@
\section*{Part One}
-\begin{test}[18]
+\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
\begin{questions}
%\ifluatex
%\esercizi{
@@ -79,39 +81,54 @@
%test9
%}
%\else
+
+
+
\begin{esdb}{mydb} %% some exercises from 2 files
\selectrandomlyn{3}{test2}
\selectrandomlyn{2}{test3}
\end{esdb}
\esercizi{
-%prova-colombia,
test14,
test1,
test4,
test9,
-test5-fillin,
+test5-fillin
}
-%%% all the problems of a file
+
+\textsc{All the problems of a file}
+
+
\selectallproblems[random]{test11}
%\fi\fi
\end{questions}
-Some other questions\\[5mm]
+\textsc{Some other questions}\\[5mm]
-%\begin{questions} %% a new set of questions
-%\esercizi{test12,
-%test13
-%}
-%\end{questions}
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
\end{test}
+\newpage
\section*{Part two}
\istruzioniii%%% Some other instructions
\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
\closevers
\newpage %
%
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
index fc64643065..26b70dcc96 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
new file mode 100644
index 0000000000..00cc5e002c
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.sol.tex
@@ -0,0 +1,84 @@
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 1}}
+\begin{enumerate}
+\item\ref{e:1-file:test2-q:i}
+\item\ref{e:1-file:test3-q:ii}
+\item\ref{e:1-file:test2-q:ii}
+\item\ref{e:1-file:test2-q:iii}
+\item\ref{e:1-file:test3-q:i}
+\item\ref{e:1-file:test1-q:i}
+\item\ref{e:1-file:test9-q:ii}
+\item\ref{e:1-file:test14-q:i}
+\item\ref{e:1-file:test4-q:v}
+\item \makeatletter \input{qftest5-fillinqiie1.parametri}\makeatother
+ \FPsv [2]{b/k}
+\item\ref{e:1-file:test11-q:i}
+\item\ref{e:1-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:1-file:test12-q:i}
+\item\ref{e:1-file:test13-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 2}}
+\begin{enumerate}
+\item\ref{e:2-file:test2-q:iii}
+\item\ref{e:2-file:test3-q:i}
+\item\ref{e:2-file:test2-q:ii}
+\item\ref{e:2-file:test3-q:iv}
+\item\ref{e:2-file:test2-q:i}
+\item\ref{e:2-file:test1-q:ii}
+\item \makeatletter \input{qftest5-fillinqiie2.parametri}\makeatother
+ \FPsv [2]{a/c}
+\item\ref{e:2-file:test9-q:iii}
+\item\ref{e:2-file:test14-q:i}
+\item\ref{e:2-file:test4-q:ii}
+\item\ref{e:2-file:test11-q:i}
+\item\ref{e:2-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:2-file:test13-q:iii}
+\item\ref{e:2-file:test12-q:iii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 3}}
+\begin{enumerate}
+\item\ref{e:3-file:test2-q:iii}
+\item\ref{e:3-file:test3-q:i}
+\item\ref{e:3-file:test2-q:i}
+\item\ref{e:3-file:test3-q:ii}
+\item\ref{e:3-file:test2-q:ii}
+\item\ref{e:3-file:test14-q:i}
+\item \makeatletter \input{qftest5-fillinqiie3.parametri}\makeatother
+ \FPsv [2]{b/k}
+\item\ref{e:3-file:test4-q:iii}
+\item\ref{e:3-file:test1-q:i}
+\item\ref{e:3-file:test9-q:iv}
+\item\ref{e:3-file:test11-q:i}
+\item\ref{e:3-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:3-file:test12-q:i}
+\item\ref{e:3-file:test13-q:iv}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
+\begin{minipage}{.33\textwidth}{\large\textbf{Soluzione\ Versione\ n. 4}}
+\begin{enumerate}
+\item\ref{e:4-file:test2-q:ii}
+\item\ref{e:4-file:test2-q:i}
+\item\ref{e:4-file:test3-q:i}
+\item\ref{e:4-file:test3-q:ii}
+\item\ref{e:4-file:test2-q:iii}
+\item\ref{e:4-file:test4-q:v}
+\item\ref{e:4-file:test9-q:iii}
+\item\ref{e:4-file:test1-q:ii}
+\item\ref{e:4-file:test14-q:i}
+\item \makeatletter \input{qftest5-fillinqiie4.parametri}\makeatother
+ \FPsv [2]{a/c}
+\item\ref{e:4-file:test11-q:i}
+\item\ref{e:4-file:test11-q:ii}
+\par\end{enumerate}\vspace{3ex}
+\begin{enumerate}
+\item\ref{e:4-file:test13-q:iii}
+\item\ref{e:4-file:test12-q:iii}
+\par\end{enumerate}\vspace{3ex}
+\end{minipage}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex
new file mode 100644
index 0000000000..3b57a2dbd6
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex-sol.tex
@@ -0,0 +1,124 @@
+\documentclass[a4paper,italian]{article}
+ \usepackage{fixltx2e}
+ \usepackage{fontspec}
+ \XeTeXinputencoding utf8
+\usepackage[shuffle,xyz,pointsonright,solutions,quizsolutions,twocolumns]{esami}%%%%% TEMA
+
+% +=============================+
+% | DEFINITIONS |
+% +=============================+
+
+\def\examname{The name of the exam}
+\def\numcompiti{4}%%% The number of the versions
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\def\Data{\longdate}%%% or \shortdate: the date in the heading
+%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
+%\def\Acapo{\newpage}
+\usepackage{babel}
+
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
+\begin{document}
+\testversioni
+\pagestyle{esame}
+
+\whiledo{\thevers<\numcompiti}{\stepvers
+% +=============================+
+% | THE SEED |
+% +=============================+
+
+%\FPeval\seme{round((\thenomefile+(3*\thevers)):0)}
+%%% OR SOME OTHER LIKE
+\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)}
+%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)}
+%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
+\randomi=\seme
+
+\permuta
+% +=============================+
+% | STUFF DEFINED IN CFG FILE |
+% +=============================+
+
+\testa%%% the heading
+\istruzionii%%% some instructions
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section*{Part One}
+
+
+\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
+\begin{questions}
+%\ifluatex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else\ifxetex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else
+
+
+
+\begin{esdb}{mydb} %% some exercises from 2 files
+ \selectrandomlyn{3}{test2}
+ \selectrandomlyn{2}{test3}
+ \end{esdb}
+
+\esercizi{
+test14,
+test1,
+test4,
+test9,
+test5-fillin
+}
+
+\textsc{All the problems of a file}
+
+
+\selectallproblems[random]{test11}
+%\fi\fi
+
+\end{questions}
+
+\textsc{Some other questions}\\[5mm]
+
+
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
+\end{test}
+
+\newpage
+\section*{Part two}
+\istruzioniii%%% Some other instructions
+
+\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
+\closevers
+\newpage %
+ %
+\setcounter{page}{1} %%% dvi
+}
+
+\end{document}
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex.pdf b/macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
index 30aad4bfd9..024e322ab1 100644
--- a/macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA-xetex.tex b/macros/latex/contrib/esami/doc/examples/testA-xetex.tex
new file mode 100644
index 0000000000..7a6cf40946
--- /dev/null
+++ b/macros/latex/contrib/esami/doc/examples/testA-xetex.tex
@@ -0,0 +1,124 @@
+\documentclass[a4paper,italian]{article}
+ \usepackage{fixltx2e}
+ \usepackage{fontspec}
+ \XeTeXinputencoding utf8
+\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}
+
+% +=============================+
+% | DEFINITIONS |
+% +=============================+
+
+\def\examname{The name of the exam}
+\def\numcompiti{4}%%% The number of the versions
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\def\Data{\longdate}%%% or \shortdate: the date in the heading
+%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
+%\def\Acapo{\newpage}
+\usepackage{babel}
+
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
+\begin{document}
+\testversioni
+\pagestyle{esame}
+
+\whiledo{\thevers<\numcompiti}{\stepvers
+% +=============================+
+% | THE SEED |
+% +=============================+
+
+%\FPeval\seme{round((\thenomefile+(3*\thevers)):0)}
+%%% OR SOME OTHER LIKE
+\FPeval\seme{round(\thenomefile*(\thevers)+1-trunc(\thenomefile*(\thevers)/(2^31-1):0)*(2^31-1):0)}
+%\FPeval\seme{round(1+abs(\thenomefile/(\thevers)+sin(\thevers)*(\thevers)^(2)):0)}
+%\FPeval\semeex{round(\thenomefile+1-trunc(\thenomefile/(2^31-1):0)*(2^31-1):0)}
+\randomi=\seme
+
+\permuta
+% +=============================+
+% | STUFF DEFINED IN CFG FILE |
+% +=============================+
+
+\testa%%% the heading
+\istruzionii%%% some instructions
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section*{Part One}
+
+
+\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
+\begin{questions}
+%\ifluatex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else\ifxetex
+%\esercizi{
+%test14,
+%test1,
+%test4,
+%test9
+%}
+%\else
+
+
+
+\begin{esdb}{mydb} %% some exercises from 2 files
+ \selectrandomlyn{3}{test2}
+ \selectrandomlyn{2}{test3}
+ \end{esdb}
+
+\esercizi{
+test14,
+test1,
+test4,
+test9,
+test5-fillin
+}
+
+\textsc{All the problems of a file}
+
+
+\selectallproblems[random]{test11}
+%\fi\fi
+
+\end{questions}
+
+\textsc{Some other questions}\\[5mm]
+
+
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
+\end{test}
+
+\newpage
+\section*{Part two}
+\istruzioniii%%% Some other instructions
+
+\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
+\closevers
+\newpage %
+ %
+\setcounter{page}{1} %%% dvi
+}
+
+\end{document}
diff --git a/macros/latex/contrib/esami/doc/examples/testA.pdf b/macros/latex/contrib/esami/doc/examples/testA.pdf
index 16f1ca17ab..78f7234f83 100644
--- a/macros/latex/contrib/esami/doc/examples/testA.pdf
+++ b/macros/latex/contrib/esami/doc/examples/testA.pdf
Binary files differ
diff --git a/macros/latex/contrib/esami/doc/examples/testA.tex b/macros/latex/contrib/esami/doc/examples/testA.tex
index b468611935..0a443d7518 100644
--- a/macros/latex/contrib/esami/doc/examples/testA.tex
+++ b/macros/latex/contrib/esami/doc/examples/testA.tex
@@ -1,25 +1,21 @@
\documentclass[a4paper,italian]{article}
-\usepackage{ifxetex}%%NUOVO
-\usepackage{ifluatex}%%%NUOVO
+\usepackage{ifxetex}
+\usepackage{ifluatex}
-%\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}%%%%% TEMA
\ifluatex
\usepackage{luatextra} % also loads fixltx2e, fontspec, xunicode
- \usepackage{unicode-math}
- \setmathfont{Latin Modern Math}
\usepackage[utf8]{luainputenc}
\else\ifxetex
\usepackage{fixltx2e}
\usepackage{fontspec}
- \usepackage{unicode-math}
- \XeTeXinputencoding utf8
+ \XeTeXinputencoding utf8
\else
\usepackage{fixltx2e}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern,textcomp}
\fi\fi
-\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}%%%%% TEMA
+\usepackage[shuffle,xyz,pointsonright,nosolutions,noquizsolutions,twocolumns]{esami}
% +=============================+
% | DEFINITIONS |
@@ -27,12 +23,14 @@
\def\examname{The name of the exam}
\def\numcompiti{4}%%% The number of the versions
-\date{2014/07/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
+\date{2022/01/22}%%% THE DATE IN THE FORMAT YYYY/M/D or D/M/YYYY
\def\Data{\longdate}%%% or \shortdate: the date in the heading
%\def\cartella{pop}%%% The folder where are the exercises: by default the current folder%
%\def\Acapo{\newpage}
\usepackage{babel}
+\renewcommand{\checkpoints}{ } % So we don't check if the total points of an exercise is correct
+
\begin{document}
\testversioni
\pagestyle{esame}
@@ -63,6 +61,9 @@
\begin{test}[15]
+ \textsc{some exercises from 2 files}
+
+
\begin{questions}
%\ifluatex
%\esercizi{
@@ -79,39 +80,54 @@
%test9
%}
%\else
+
+
+
\begin{esdb}{mydb} %% some exercises from 2 files
\selectrandomlyn{3}{test2}
\selectrandomlyn{2}{test3}
\end{esdb}
\esercizi{
-%prova-colombia,
test14,
test1,
test4,
test9,
-test5-fillin,
+test5-fillin
}
-%%% all the problems of a file
+
+\textsc{All the problems of a file}
+
+
\selectallproblems[random]{test11}
%\fi\fi
\end{questions}
-Some other questions\\[5mm]
+\textsc{Some other questions}\\[5mm]
-%\begin{questions} %% a new set of questions
-%\esercizi{test12,
-%test13
-%}
-%\end{questions}
+\begin{questions} %% a new set of questions
+\esercizi{test12,
+test13
+}
+\end{questions}
\end{test}
+\newpage
\section*{Part two}
\istruzioniii%%% Some other instructions
\esercizi{problem1}
+\newpage
+An example of matching question.
+
+\esercizi{problem3-matching}
+
+\newpage
+An example of ``tabella'' question.
+
+\esercizi{problem2-tabella}
\closevers
\newpage %
%
diff --git a/macros/latex/contrib/esami/esami-xyz.cfg b/macros/latex/contrib/esami/esami-xyz.cfg
index 0d76641979..13484158d2 100644
--- a/macros/latex/contrib/esami/esami-xyz.cfg
+++ b/macros/latex/contrib/esami/esami-xyz.cfg
@@ -1,11 +1,11 @@
%% Package `esami' to use with LaTeX 2e
-%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo
+%% Copyright (C) 2008-2022 G. Messineo e S. Vassallo
%%
%% This is file `esami-xyz.cfg',
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% esami-xyz.cfg, 2021-10-11 %%
-%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo %%
+%% esami-xyz.cfg, 2022-01-11 %%
+%% Copyright (C) 2008-2022 G. Messineo e S. Vassallo %%
%% %%
%% This program can be redistributed and/or modified %%
%% under the terms of the LaTeX Project Public License %%
diff --git a/macros/latex/contrib/esami/esami.sty b/macros/latex/contrib/esami/esami.sty
index 668bef7606..2968a0d60d 100644
--- a/macros/latex/contrib/esami/esami.sty
+++ b/macros/latex/contrib/esami/esami.sty
@@ -2,8 +2,8 @@
%% This is file `esami.sty',
%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% esami.sty package, 2021-10-11 %%
-%% Copyright (C) 2008-2021 G. Messineo e S. Vassallo %%
+%% esami.sty package, 2022-01-11 %%
+%% Copyright (C) 2008-2022 G. Messineo e S. Vassallo %%
%% %%
%% This program can be redistributed and/or modified %%
%% under the terms of the LaTeX Project Public License %%
@@ -47,10 +47,14 @@
%Corrected a misprint in the code. Improved the selection of random exercises.
% Version 2.6
% 2021/10/11
-%Corrected a misprint in the code. Improved the selection of random exercises.
+%Improved the spacing in \cmd{\FPsignpol}. Corrected the code to avoid some spourios spaces.
+% Version 2.7
+% 2022/01/11
+%Improved the spacing in \cmd{\sempli} and \cmd{\FPsignpol}. Corrected a misprint in the code.
+%
\NeedsTeXFormat{LaTeX2e} \ProvidesPackage{esami}
- [2021/10/11 v2.6 An Exam Construction Package]
+ [2022/01/11 v2.7 An Exam Construction Package]
% +=============================+
% | THE OPTIONS |
@@ -428,7 +432,7 @@
}
\FPeval\fp@num{round((\fp@n/\fp@restoold):0)}%
\FPeval\fp@den{round((\fp@d/\fp@restoold):0)}%
- \FPifneg\segnofrac{-}
+ \FPifneg\segnofrac{-\:}
\else{}
\fi
\ifthenelse{\fp@den=1}{%
@@ -547,26 +551,44 @@
%========================================================%
\newcommand{\FPsignpol}[2] %%% adapted from code contributed by Hjalmar Basile NEW 2016/04/11
+%{\FPval\tempsign{#1}
+ %\ifthenelse{\equal{#2}{}}
+ %{%
+ %\ifnum \tempsign<0 {\:\sempli{\tempsign}{1}#2}
+ %\else
+ %\ifnum \tempsign>0{\:+\:\sempli{\tempsign}{1}#2}
+ %\else{}
+ %\fi
+ %\fi
+ %}
+ %{%
+ %\ifnum \tempsign<0 {\:\semplix{\tempsign}{1}#2\:}
+ %\else
+ %\ifnum \tempsign>0{\:+\:\semplix{\tempsign}{1}#2}
+ %\else{}
+ %\fi
+ %\fi
+ %}
+%} %% improved for spacing 2021/10/11
{\FPval\tempsign{#1}
\ifthenelse{\equal{#2}{}}
{%
\ifnum \tempsign<0 {\:\sempli{\tempsign}{1}#2}
\else
- \ifnum \tempsign>0{\:+\:\sempli{\tempsign}{1}#2}
- \else{}
- \fi
+ \ifnum \tempsign>0{+\:\sempli{\tempsign}{1}#2}
+ \else{}
+ \fi
\fi
}
{%
\ifnum \tempsign<0 {\:\semplix{\tempsign}{1}#2\:}
\else
- \ifnum \tempsign>0{\:+\:\semplix{\tempsign}{1}#2}
- \else{}
- \fi
+ \ifnum \tempsign>0{\:+\:\semplix{\tempsign}{1}#2}
+ \else{}
+ \fi
\fi
}
-} %% improved for spacing 2021/10/11
-
+} %% improved for spacing 2021/10/11
%========================================================%
% Commands adapted from exerquiz %
@@ -926,9 +948,13 @@
\addtocounter{match@plo}{1}
\expandafter\edef\csname match@numi\number\i@sh\endcsname{(\Alph{match@plu})}
\vspace{2ex}
+
\begin{tabular}{p{.05\textwidth}p{.40\textwidth}p{.01\textwidth}p{.40\textwidth}}
- \underbar{\makebox[.5cm]{\match@ans@color{\csname match@numi\number\i@sh\endcsname}}} & \csname match@qsti\number\i@sh\endcsname&&(\Alph{match@plo})\hspace{3mm}\csname match@ansi\number\i@sh\endcsname%\tabularnewline
- \end{tabular}
+ \underbar{\makebox[.5cm]{\match@ans@color{\csname match@numi\number\i@sh\endcsname}}} & \csname match@qsti\number\i@sh\endcsname&&(\Alph{match@plo})\hspace{3mm}\csname match@ansi\number\i@sh\endcsname%\tabularnewline
+ \end{tabular}
+ %% ADD next line
+ % \vspace{2ex} \\
+ %%
\advance\i@sh by-1
\ifnum\i@sh > 0 \fi
\fi
diff --git a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
index 62ad8aee74..ec1686c578 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/CHANGELOG.md
@@ -5,6 +5,33 @@ first release 0.95a, 2021-02-23 will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
this project uses date-based 'snapshot' version identifiers.
+## [Unreleased]
+
+## [2022-01-13]
+### Changed
+ - the keys `firstaidoff` and `pdfmanagement` should now be set with the `debug` key.
+ - `testphase` will now load files from the latex-lab bundle. This requires a current
+ latex-dev: LaTeX2e <2022-06-01> pre-release-1.
+ - new values for `testphase`: `phase-I` and `phase-II`.
+ `phase-I` will loaded tagpdf and activate tagging and interword spaces, `phase-II will
+ additionally activate paratagging. The value `tagpdf` for the `testphase`
+ key has been deprecated. It will not error for some time and has been aliased to
+ `phase-II`, but it is recommended to use the new values `phase-I` and `phase-II` instead.
+ - renamed `\DeclareDocumentMetadata` to `\DocumentMetadata` (the older version is still provided)
+ to follow the development in latex-dev.
+
+### Fixed
+
+ - adapted the file hooks to the changes in LaTeX
+ - small bugs
+
+### Removed
+
+ - the `activate` key has been removed, its function is integrated in the testphase key.
+
+### Added
+ - preliminary support for structure destination to prepare for binary changes in texlive 2022
+
## [2021-08-28]
### Changed
- colorscheme 'original' has been renamed to 'primary-colors'
diff --git a/macros/latex/contrib/pdfmanagement-testphase/README.md b/macros/latex/contrib/pdfmanagement-testphase/README.md
index a438100385..e08a4162ff 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/README.md
+++ b/macros/latex/contrib/pdfmanagement-testphase/README.md
@@ -1,6 +1,6 @@
# LaTeX PDF management testphase bundle
-Version: 0.95i, 2021-08-28
+Version: 0.95j, 2022-01-13
This package is used during a test phase to load the new PDF management code
of LaTeX.
@@ -31,7 +31,7 @@ For manual installation: unpack by compiling the .ins, then move all
## Copyright (C)
-* 2021 The LaTeX Project
+* 2021-2022 The LaTeX Project
## License
LaTeX Project Public License, version 1.3c or later.
diff --git a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
index 94d5f5c395..9ea89b54e1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/color-ltx.sty
@@ -22,7 +22,7 @@
%% This file has the LPPL maintenance status "maintained".
%%
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-\ProvidesPackage{color-ltx}[2021-08-28 v0.95i
+\ProvidesPackage{color-ltx}[2022-01-13 v0.95j
Standard LaTeX Color (patched for l3color, part of pdfmanagement-testphase, original version 2021/03/07 v1.2e) (DPC)]
\edef\Gin@codes{%
\catcode`\noexpand\^^A\the\catcode`\^^A\relax
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
index 24f129b8ff..cc8ab85ef5 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.dtx
@@ -2,7 +2,7 @@
%
%% File: hyperref-generic.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX Project
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -26,7 +26,7 @@
%
%<*driver>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -86,7 +86,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -104,7 +104,7 @@
% should start like this
% \begin{verbatim}
% \RequirePackage{pdfmanagement-testphase} %loads the code
-% \DeclareDocumentMetadata % activates it
+% \DocumentMetadata % activates it
% {
% %% options
% %% e.g. pdf version, backend:
@@ -113,6 +113,18 @@
% }
% \end{verbatim}
%
+% Starting with \LaTeX-2022-06-01 (or a suitable latex-dev) loading the testphase
+% package is no longer required and this can be simplified to
+% \begin{verbatim}
+% \DocumentMetadata
+% {
+% %% options
+% %% e.g. pdf version, backend:
+% % pdfversion=1.7,
+% % backend = dvipdfmx
+% }
+% \end{verbatim}
+
% The new driver tries to be compatible with the standard \pkg{hyperref} drivers
% but there are nevertheless differences. Some of them due to the still experimental
% status of the driver, others are design decisions: one part of the project is
@@ -201,10 +213,9 @@
% If the key hasn't be set, the result is empty. This gives external
% packages a public and reliable access to the data.
%
-% \item |pdflang| is deprecated. Instead \cs{DeclareDocumentMetadata}
-% should be used:
+% \item |pdflang| is deprecated. Instead \cs{DocumentMetadata} should be used:
% \begin{verbatim}
-% \DeclareDocumentMetadata{lang=de-DE}
+% \cs{DocumentMetadata}{lang=de-DE}
% \end{verbatim}
%
% The value can be retrieved as |document/lang|.
@@ -626,7 +637,7 @@
% \section{Dropped options}
% A number of options are ignored by this driver
% \begin{description}
-% \item[pdfversion] The pdfversion should be set in \cs{DeclareDocumentMetadata}
+% \item[pdfversion] The pdfversion should be set in \cs{DocumentMetadata}
% \item[setpagesize] The key is ignored and the PDF page size is not
% set. Load \pkg{color} or \pkg{graphicx} or use a class which sets the PDF page size.
% \item[breaklinks] The option does nothing sensible anyway (apart from triggering
@@ -636,9 +647,9 @@
% \item[pdfa] If this option is set to true \pkg{hyperref} normally checks and sets
% a small number of requirements for the PDF standard PDF/A.
% The key is ignored with this driver. Instead the wanted standard should be declared
-% in \cs{DeclareDocumentMetadata}:
+% in \cs{DocumentMetadata}:
% \begin{verbatim}
-% \DeclareDocumentMetadata{pdfstandard=A-2b}
+% \DocumentMetadata{pdfstandard=A-2b}
% \end{verbatim}
% Currently |A-1b|, |A-2b|, |A-3b| can be set.
% The support for various requirements is still incomplete, but the parts that
@@ -882,7 +893,7 @@
% the setting is global (and has to be done in the preamble).
%
% \DescribeHypkey{pdflang} The key will work, but it is recommended to the set
-% the language in \cs{DeclareDocumentMetadata} instead.
+% the language in \cs{DocumentMetadata} instead.
%^^A %% This is an adapted version of hluatex.def
%^^A %% meant to test the use of the commands
%^^A %% from pdfmanagement.sty
@@ -951,7 +962,7 @@
%<@@=hyp>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesFile{hgeneric-testphase.def}[2021-08-28 v0.95i %
+\ProvidesFile{hgeneric-testphase.def}[2022-01-13 v0.95j %
generic Hyperref driver for the LaTeX PDF management testphase bundle]
\RequirePackage{etoolbox} %why?
@@ -971,31 +982,45 @@
% \end{macrocode}
% At first a message for the testing of the resource management
% \begin{macrocode}
-\msg_new:nnnn
- { hyp }
- { missing-resource-management }
- { The~PDF~resource~management~is~required~for~this~hyperref~driver! }
+\cs_if_exist:NTF \DocumentMetadata
{
- Activate~it~with \\
- \tl_to_str:n{\RequirePackage{pdfmanagement-testphase}}\\
- \tl_to_str:n{\DeclareDocumentMetadata{<options>}}\\
- before~\tl_to_str:n{\documentclass}
+ \msg_new:nnnn
+ { hyp }
+ { missing-resource-management }
+ { The~PDF~resource~management~is~required~for~this~hyperref~driver! }
+ {
+ Activate~it~with \\
+ \tl_to_str:n{\DocumentMetadata{<options>}}\\
+ before~\tl_to_str:n{\documentclass}
+ }
}
+ {
+ \msg_new:nnnn
+ { hyp }
+ { missing-resource-management }
+ { The~PDF~resource~management~is~required~for~this~hyperref~driver! }
+ {
+ Activate~it~with \\
+ \tl_to_str:n{\RequirePackage{pdfmanagement-testphase}}\\
+ \tl_to_str:n{\DocumentMetadata{<options>}}\\
+ before~\tl_to_str:n{\documentclass}
+ }
+ }
% \end{macrocode}
-% The pdfversion should be set in \cs{DeclareDocumentMetadata}
+% The pdfversion should be set in \cs{DocumentMetadata}
% \begin{macrocode}
\msg_new:nnnn
{ hyp }
{ pdfversion-disabled }
{
This~hyperref~driver~ignores~the~pdfversion~key!\\
- Set~the~pdfversion~in~\token_to_str:N \DeclareDocumentMetadata
+ Set~the~pdfversion~in~\token_to_str:N \DocumentMetadata
}
{
For example:\\
\tl_to_str:n
{
- \DeclareDocumentMetadata { pdfversion=1.7 }
+ \DocumentMetadata { pdfversion=1.7 }
}
}
% \end{macrocode}
@@ -1148,8 +1173,10 @@
%\cs_set_protected:Npn \PDF@SetupDoc{}
%\\PDF@FinishDoc{}% dummy needed for hyperref ...
% \end{macrocode}
+% \begin{function}{\hypercalcbp}
+% We define a better (expandable) version of \cs{hypercalcbp}
+% \end{function}
% \begin{macro}[EXP]{\hypercalcbp}
-% We define a better (expandable) version of \cs{hypercalcbp}
% \begin{macrocode}
\cs_set_eq:NN \hypercalcbp \dim_to_decimal_in_bp:n
% \end{macrocode}
@@ -1163,7 +1190,7 @@
\def\Hy@numberline#1{#1\c_space_tl} %needed by bookmark
% \end{macrocode}
%
-% The pdfversion should be set in \cs{DeclareDocumentMetadata} but we must
+% The pdfversion should be set in \cs{DocumentMetadata} but we must
% copy it to the \pkg{hyperref} command:
% \begin{macrocode}
\cs_set_eq:NN \Hy@pdfminorversion \pdf_version_minor:
@@ -1493,7 +1520,7 @@
% TODO We overwrite the color key here for now, but this should be moved to bookmark
%
% \begin{macrocode}
-\AddToHook { package / after / bookmark}
+\AddToHook { package/bookmark/after}
{
\define@key{BKM}{color}
{
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
index 8066c863d6..578272d238 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperref-generic.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
index 56e9dd45db..a1bc3caddb 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/hyperxmp-patches-tmp-ltx.sty
@@ -19,7 +19,7 @@
%
% for those people who are interested.
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2021-08-28}{0.95i}
+\ProvidesExplPackage{hyperxmp-patches-tmp-ltx}{2022-01-13}{0.95j}
{Store hyperref metadata in XMP format / temporay patches to test pdfresource management ... UF}
\cs_if_exist:NT \pdfmanagement_add:nnn
@@ -124,6 +124,9 @@
\exp_args:NNe
\pdfstringdef\@pdftitle{\GetDocumentProperties{hyperref/pdftitle}}
\cs_set_eq:NN\hyxmp@pdftitle\@pdftitle
+ \exp_args:NNe
+ \pdfstringdef\@pdfcopyright{\GetDocumentProperties{hyperref/pdfcopyright}}
+ \cs_set_eq:NN\hyxmp@pdfcopyright\@pdfcopyright
% pdflang,
\tl_if_exist:cF{@pdflang}{\tl_new:c{@pdflang}}
\tl_set:cx {@pdflang}{\GetDocumentProperties{document/lang}}
@@ -131,8 +134,15 @@
% we need to provide a few commands so that hyperxmp stops to overwrite them
% in \AtEndPreamble
+% we need also add it to the document properties to avoid stray commas
+% with empty author.
\AddToHook{begindocument/before}[pdfmanagement/firstaid/hyperxmp]{%
- \def\@pdfauthor{Author}\def\@pdftitle {Title}}
+ \def\@pdfauthor{Author}\def\@pdftitle {Title}%
+ \tl_if_blank:eT{\GetDocumentProperties{hyperref/pdfauthor}}
+ {\AddToDocumentProperties[hyperref]{pdfauthor}{Author}}
+ \tl_if_blank:eT{\GetDocumentProperties{hyperref/pdftitle}}
+ {\AddToDocumentProperties[hyperref]{pdfauthor}{Title}}
+ }
\DeclareHookRule{begindocument/before}{pdfmanagement/firstaid/hyperxmp}{before}{hyperxmp}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
index 7c902d8b92..54f2e089df 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.dtx
@@ -45,7 +45,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
%
@@ -56,27 +56,27 @@
% \begin{macrocode}
%<drivers>\ProvidesExplFile
%<*dvipdfmx>
- {l3backend-testphase-dvipdfmx.def}{2021-08-28}{}
+ {l3backend-testphase-dvipdfmx.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvipdfmx}
%</dvipdfmx>
%<*dvips>
- {l3backend-testphase-dvips.def}{2021-08-28}{}
+ {l3backend-testphase-dvips.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvips}
%</dvips>
%<*dvisvgm>
- {l3backend-testphase-dvisvgm.def}{2021-08-28}{}
+ {l3backend-testphase-dvisvgm.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: dvisvgm}
%</dvisvgm>
%<*luatex>
- {l3backend-testphase-luatex.def}{2021-08-28}{}
+ {l3backend-testphase-luatex.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (LuaTeX)}
%</luatex>
%<*pdftex>
- {l3backend-testphase-pdftex.def}{2021-08-28}{}
+ {l3backend-testphase-pdftex.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: PDF output (pdfTeX)}
%</pdftex>
%<*xdvipdfmx>
- {l3backend-testphase-xetex.def}{2021-08-28}{}
+ {l3backend-testphase-xetex.def}{2022-01-13}{}
{LaTeX~PDF~management~testphase~bundle~backend~support: XeTeX}
%</xdvipdfmx>
% \end{macrocode}
@@ -1600,6 +1600,354 @@
% \end{macrocode}
% \end{macro}
% \end{macro}
+% \subsection{Structure Destinations}
+% Standard destinations consist of a reference to a page in the pdf and instructions
+% how to display it---typically they will put a specific location in the left top corner
+% of the viewer and so give the impression that a link jumped to the word in this place.
+% But in reality they are not connected to the content.
+%
+% Starting with pdf~2.0 destinations can in a tagged PDF also point to a structure, to a /StructElem object.
+% GoTo links can then additionally to the \texttt{/D} key pointing to a
+% page destination also point to such a structure destination with an \texttt{/SD} key.
+% Programs that e.g. convert such a PDF to html can then create better links.
+% (According to the reference, PDF-viewer should prefer the structure destination
+% over the page destination, but as far as it is known this isn't done yet.)
+%
+% Currently structure destinations and GoTo links making use of it could natively only
+% be created with the dvipdfmx backend. With pdftex and lualatex it was only possible to create
+% a restricted type which used only the \enquote{Fit} mode. Starting with
+% \TeX{}live 2022 (earlier in miktex) both engine will knew new keywords which allow
+% to create structure destination easily.
+%
+% The following backend code prepares the use of structure destinations. The general idea is
+% that if structure destinations are used, they should be used always. So we define
+% alternative commands which can be activated by mapping them to the standard backend commands.
+%
+% \begin{macro}{\l_pdf_current_structure_destination_tl}
+%
+% This commands holds the name of the structure object to use in the next command
+% which creates a destination. The code which activates structure destinations
+% must also ensure that it has a sensible, expandable content. \pkg{tagpdf} for example
+% will define it as
+% \begin{verbatim}
+% \tl_set:Nn \l_pdf_current_structure_destination_tl { __tag/struct/\g__tag_struct_stack_current_tl }
+% \end{verbatim}
+% \begin{macrocode}
+%<*drivers>
+\tl_new:N \l_pdf_current_structure_destination_tl
+%</drivers>
+% \end{macrocode}
+% \end{macro}
+%
+% We will define alternatives for three backend commands:
+% \begin{verbatim}
+% \__pdf_backend_destination:nn -> \__pdf_backend_structure_destination:nn
+% \__pdf_backend_destination:nnnn -> \__pdf_backend_structure_destination:nnnn
+% \__pdf_backend_link_begin_goto:nnw -> \__pdf_backend_link_begin_structure_goto:nnw
+% \end{verbatim}
+%
+% Activating means mapping them onto the original commands. Be aware that not
+% all engines and compilation routes support structure destinations, for them
+% the command will be a no-op.
+%
+% \begin{macro}{\pdf_activate_structure_destination:}
+% \begin{macrocode}
+%<*drivers>
+\cs_new_protected:Npn \pdf_activate_structure_destination:
+ {
+ \cs_gset_eq:NN \@@_backend_destination:nn \@@_backend_structure_destination:nn
+ \cs_gset_eq:NN \@@_backend_destination:nnnn \@@_backend_structure_destination:nnnn
+ \cs_gset_eq:NN \@@_backend_link_begin_goto:nnw \@@_backend_link_begin_structure_goto:nnw
+ }
+%</drivers>
+% \end{macrocode}
+% \end{macro}
+% Now the driver dependant parts.
+% By default the new commands are simply copies of the original commands.
+% We adapt them then for the engines and engine version which provide support
+% for structure destinations.
+%
+% \begin{macrocode}
+%<*drivers>
+\cs_set_eq:NN \@@_backend_structure_destination:nn \@@_backend_destination:nn
+\cs_set_eq:NN \@@_backend_structure_destination:nnnn \@@_backend_destination:nnnn
+\cs_set_eq:NN \@@_backend_link_begin_structure_goto:nnw \@@_backend_link_begin_goto:nnw
+%</drivers>
+% \end{macrocode}
+% \begin{macro}{\@@_backend_structure_destination:nn}
+% This command is the backend command to create a destination.
+% It should in parallel create also a structure destination.
+% At first xetex/dvipdfmx.
+% The structure destination is an array, so we use obj for it
+% so that we can reference it:
+% \begin{macrocode}
+%<*xdvipdfmx|dvipdfmx>
+\cs_set_protected:Npn \@@_backend_structure_destination:nn #1#2
+ {
+ \@@_backend:x
+ {
+ dest ~ ( \exp_not:n {#1} )
+ [
+ @thispage
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ { fitr } { /Fit }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+% \end{macrocode}
+% We test if the structure object exist. The object of the structure destination
+% gets the name \texttt{@pdf.Sdest.\meta{destname}}, where \meta{destname} is the
+% name of the standard destination so that we can reference it in the GoTo links.
+% \begin{macrocode}
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \@@_backend:x
+ {
+ obj ~ @pdf.SDest.\exp_not:n{#1}
+ [
+ \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl }
+ \str_case:nnF {#2}
+ {
+ { xyz } { /XYZ ~ @xpos ~ @ypos ~ null }
+ { fit } { /Fit }
+ { fitb } { /FitB }
+ { fitbh } { /FitBH }
+ { fitbv } { /FitBV ~ @xpos }
+ { fith } { /FitH ~ @ypos }
+ { fitv } { /FitV ~ @xpos }
+ { fitr } { /Fit }
+ }
+ { /XYZ ~ @xpos ~ @ypos ~ \fp_eval:n { (#2) / 100 } }
+ ]
+ }
+ }
+ }
+% \end{macrocode}
+% The second destination command is for the boxed destination. Here we need to define
+% an new auxiliary command:
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_backend_structure_destination_aux:nnnn #1#2#3#4
+ {
+ \vbox_to_zero:n
+ {
+ \__kernel_kern:n {#4}
+ \hbox:n
+ {
+ \@@_backend:n { obj ~ @pdf_ #2 _llx ~ @xpos }
+ \@@_backend:n { obj ~ @pdf_ #2 _lly ~ @ypos }
+ }
+ \tex_vss:D
+ }
+ \__kernel_kern:n {#1}
+ \vbox_to_zero:n
+ {
+ \__kernel_kern:n { -#3 }
+ \hbox:n
+ {
+ \@@_backend:n
+ {
+ dest ~ (#2)
+ [
+ @thispage
+ /FitR ~
+ @pdf_ #2 _llx ~ @pdf_ #2 _lly ~
+ @xpos ~ @ypos
+ ]
+ }
+% \end{macrocode}
+% Here we add the structure destination to the same box
+% \begin{macrocode}
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \@@_backend:x
+ {
+ obj ~ @pdf.SDest.\exp_not:n{#2}
+ [
+ \exp_args:Ne \pdf_object_ref:n { \l_pdf_current_structure_destination_tl }
+ /FitR ~
+ @pdf_ #2 _llx ~ @pdf_ #2 _lly ~
+ @xpos ~ @ypos
+ ]
+ }
+ }
+ }
+ \tex_vss:D
+ }
+ \__kernel_kern:n { -#1 }
+ }
+% \end{macrocode}
+% And now we redefine the destination command:
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_backend_structure_destination:nnnn #1#2#3#4
+ {
+ \exp_args:Ne \@@_backend_structure_destination_aux:nnnn
+ { \dim_eval:n {#2} } {#1} {#3} {#4}
+ }
+% \end{macrocode}
+% At last the goto link.
+% \begin{macrocode}
+\cs_set_protected:Npn \@@_backend_link_begin_structure_goto:nnw #1#2
+ {
+ \@@_backend_link_begin:n { #1 /Subtype /Link /A << /S /GoTo /D ( #2 ) /SD~@pdf.SDest.#2 >> }
+ }
+%</xdvipdfmx|dvipdfmx>
+% \end{macrocode}
+% \end{macro}
+% Now pdftex. We only redefine for version 1.40 revision 24 or later.
+% \begin{macrocode}
+%<*pdftex>
+\bool_lazy_and:nnT
+ { \int_compare_p:nNn {\tex_pdftexversion:D } > {139} }
+ { \int_compare_p:nNn {\tex_pdftexrevision:D } > {23} }
+ {
+ \cs_set_protected:Npn \@@_backend_structure_destination:nn #1#2
+ {
+ \tex_pdfdest:D
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ { fitr } { fitr }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \tex_pdfdest:D
+ struct~
+ \int_use:c
+ { c_@@_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ { fitr } { fitr }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+ }
+ \cs_set_protected:Npn \@@_backend_destination:nnnn #1#2#3#4
+ {
+ \tex_pdfdest:D
+ name {#1}
+ fitr ~
+ width \dim_eval:n {#2} ~
+ height \dim_eval:n {#3} ~
+ depth \dim_eval:n {#4} \scan_stop:
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \tex_pdfdest:D
+ struct~
+ \int_use:c
+ { c_@@_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~
+ name {#1}
+ fitr ~
+ width \dim_eval:n {#2} ~
+ height \dim_eval:n {#3} ~
+ depth \dim_eval:n {#4} \scan_stop:
+ }
+ }
+ \cs_set_protected:Npn \@@_backend_link_begin_structure_goto:nnw #1#2
+ {
+ \@@_backend_link_begin:nnnw {#1} { goto~struct~name~{#2}~name } {#2}
+ }
+ }
+%</pdftex>
+% \end{macrocode}
+% luatex is quite similar to pdftex. Mostly the test for the version is different
+% \begin{macrocode}
+%<*luatex>
+ \int_compare:nNnT {\directlua{tex.print(status.list()["development_id"])} } > {7468}
+ {
+ \cs_set_protected:Npn \@@_backend_structure_destination:nn #1#2
+ {
+ \tex_pdfextension:D dest
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ { fitr } { fitr }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \tex_pdfextension:D dest
+ struct~
+ \int_use:c
+ { c_@@_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~
+ name {#1}
+ \str_case:nnF {#2}
+ {
+ { xyz } { xyz }
+ { fit } { fit }
+ { fitb } { fitb }
+ { fitbh } { fitbh }
+ { fitbv } { fitbv }
+ { fith } { fith }
+ { fitv } { fitv }
+ { fitr } { fitr }
+ }
+ { xyz ~ zoom \fp_eval:n { #2 * 10 } }
+ \scan_stop:
+ }
+ }
+ \cs_set_protected:Npn \@@_backend_destination:nnnn #1#2#3#4
+ {
+ \tex_pdfextension:D dest
+ name {#1}
+ fitr ~
+ width \dim_eval:n {#2} ~
+ height \dim_eval:n {#3} ~
+ depth \dim_eval:n {#4} \scan_stop:
+ \exp_args:Ne \pdf_object_if_exist:nT { \l_pdf_current_structure_destination_tl }
+ {
+ \tex_pdfextension:D dest
+ struct~
+ \int_use:c
+ { c_@@_backend_object_ \exp_args:Ne \tl_to_str:n {\l_pdf_current_structure_destination_tl} _int }~
+ name {#1}
+ fitr ~
+ width \dim_eval:n {#2} ~
+ height \dim_eval:n {#3} ~
+ depth \dim_eval:n {#4} \scan_stop:
+ }
+ }
+ \cs_set_protected:Npn \@@_backend_link_begin_structure_goto:nnw #1#2
+ {
+ \@@_backend_link_begin:nnnw {#1} { goto~struct~name~{#2}~name } {#2}
+ }
+ }
+%</luatex>
+% \end{macrocode}
% \subsection{lua code for lualatex}
% \begin{macrocode}
%<*lua>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
index cf05f338c0..bd6d7985ee 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3backend-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
index 03df126efd..c77314ca25 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfannot.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -52,7 +52,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -436,7 +436,7 @@
% \begin{macrocode}
%<@@=pdfannot>
%<*header>
-\ProvidesExplPackage{l3pdfannot}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdfannot}{2022-01-13}{0.95j}
{PDF-annotations}
\RequirePackage{l3pdfdict}
%</header>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
index bb8974469c..cc44dcca2c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfannot.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
index 354d9a8654..3a63005f37 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfdict.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -212,7 +212,7 @@
% \begin{macrocode}
%<@@=pdfdict>
%<*header>
-\ProvidesExplPackage{l3pdfdict}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdfdict}{2022-01-13}{0.95j}
{Tools for PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
@@ -362,7 +362,7 @@
% \end{macro}
%
%
-% \begin{macro}
+% \begin{macro}[pTF]
% {
% \@@_if_exist:n, \pdfdict_if_exist:n,
% }
@@ -383,7 +383,7 @@
% \end{macro}
%
%
-% \begin{macro}
+% \begin{macro}[pTF]
% {
% \@@_if_empty:n, \pdfdict_if_empty:n,
% }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
index 864ec52bd8..29b211ec27 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfdict.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
index 85852e8cd5..2de21f001a 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-action.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
index d44f2aaa3d..9e4f0061b1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-action.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
index 11d1c869df..eff3d2cd1e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-checkbox.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -68,7 +68,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
index 6268527c46..70666fc007 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-checkbox.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
index 81047dfe3d..7c16fa4982 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-choice.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
index 146f100385..72dfa1e3ce 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-choice.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
index 0045b14ba6..eff2adfdb2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-pushbutton.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -59,7 +59,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
index 867145ba5a..cf69bffb99 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-pushbutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
index 45f6a3527f..9d5515d1f4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-radiobutton.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -87,7 +87,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
index 2c04b5a2b8..2164a70c1c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-radiobutton.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
index 792b7df7ad..4a5f729910 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfpdffield-textfield.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
index a3eedc92dc..2ce744434d 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield-textfield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
index d7b2b40424..b872c40f26 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdffield.dtx
%
-% Copyright (C) 2021 The LaTeX Project
+% Copyright (C) 2021-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{}
+\DocumentMetadata{}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -73,7 +73,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -139,7 +139,7 @@
%
% \begin{verbatim}
% \RequirePackage{pdfmanagement-testphase}
-% \DeclareDocumentMetadata{uncompress}
+% \DocumentMetadata{uncompress}
% \documentclass{article}
% \usepackage{hyperref}
% \usepackage{l3pdffield-testphase}
@@ -343,7 +343,7 @@
% \Arg{key-val} can be an arbitrary collection of the keys of the module.
% \end{function}
%
-% \begin{function}{create-style}
+% \begin{function}{style}
% \begin{syntax}
% |style| = \Arg{style}
% \end{syntax}
@@ -463,7 +463,7 @@
% The value is passed through \cs{pdf_string_from_unicode:nnN}
% \end{function}
%
-% \begin{function}{mappingname,TM}
+% \begin{function}{FT}
% \begin{syntax}
% |FT| = |Btn|\verb"|"|Tx|\verb"|"|Ch|\verb"|"|Sig|
% \end{syntax}
@@ -710,6 +710,13 @@
% all values are zero.
% \end{function}
%
+% \begin{function}{tag}
+% \begin{syntax}
+% |tag| = |true|\verb+|+|false|
+% \end{syntax}
+% This key is related to tagging and enables/disables the tagging.
+% \end{function}
+%
% \begin{function}{parent}
% \begin{syntax}
% |parent| = \meta{field ID}\\
@@ -763,7 +770,7 @@
% \begin{syntax}
% |AA/*| = \meta{ECMAScript}
% \end{syntax}
-% * should be one of |F|, |Bl|, |D|, |U|, |E|, |X|, |PO|, |PC|, |PV|, |PI|.
+% * should be one of |Fo|, |Bl|, |D|, |U|, |E|, |X|, |PO|, |PC|, |PV|, |PI|.
% Alias names for the first six keys are
% |onfocus|, |onblur|, |onmousedown|, |onmouseup|, |onenter|, |onexit|.
% These keys adds then the respective key to the |/AA| dictionary
@@ -858,7 +865,7 @@
% Currently no special syntax support
% is implemented. They will be handled if needed when the code for
% push buttons is developed and tested.
-% \begin{function}{MK/*}
+% \begin{function}{MK/I,MK/RI,MK/IX,MK/IF,MK/TP}
% \begin{syntax}
% |MK/*| = \meta{various}
% \end{syntax}
@@ -970,7 +977,7 @@
%<*package>
%<@@=pdffield>
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{l3pdffield-testphase}{2021-08-28}{0.95i}%
+\ProvidesExplPackage{l3pdffield-testphase}{2022-01-13}{0.95j}%
{form fields}
% \end{macrocode}
% \subsection{hyperref specific command}
@@ -1743,7 +1750,7 @@
% \end{macrocode}
% \end{macro}
% \begin{macro}{tag}
-% to disable tagging locall
+% to disable tagging locally
% \begin{macrocode}
\keys_define:nn { pdffield }
{
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
index addd600158..9bb4331db6 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffield.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
index 46426e01a2..4da7ef9723 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdffile.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -400,7 +400,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdffile}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdffile}{2022-01-13}{0.95j}
{embedding and referencing files in PDF---LaTeX PDF management testphase bundle}
\RequirePackage{l3pdftools} %temporarly!!
%</header>
@@ -467,8 +467,9 @@
% \end{variable}
% \begin{macrocode}
\prop_new:N \g_pdffile_mimetypes_prop
-\prop_set_from_keyval:Nn \g_pdffile_mimetypes_prop
+\prop_gset_from_keyval:Nn \g_pdffile_mimetypes_prop
{
+ ,.css = text/css
,.csv = text/csv
,.html= text/html
,.dtx = text/plain %or application/x-tex, not in iana.org list
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
index 68e65183e4..2561e4d118 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdffile.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
index 7cb4bf4eeb..f2e494c1fa 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfmanagement.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -622,7 +622,7 @@
%<@@=pdfmanagement>
%<*header>
%
-\ProvidesExplPackage{l3pdfmanagement}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdfmanagement}{2022-01-13}{0.95j}
{Management of core PDF dictionaries (LaTeX PDF management testphase bundle)}
%</header>
% \end{macrocode}
@@ -674,7 +674,7 @@
% \begin{variable}{\g_@@_active_bool}
% This boolean will control the activation of the management code.
% It is used in the hooks, and in some backend files.
-% % \cs{DeclareDocumentMetadata} should set it to true
+% % \cs{DocumentMetadata} should set it to true
% \begin{macrocode}
\bool_new:N \g_@@_active_bool
% \end{macrocode}
@@ -1563,7 +1563,7 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{ Handler}
+% \begin{macro}{ \@@_handler/Catalog/Names/EmbeddedFiles_gput:n }
% EmbeddedFiles is an array and needs a special handler to add values.
% \begin{macrocode}
\pdfdict_new:n { g__pdf_Core/Catalog/Names }
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
index 3c21347de4..a62a1a0d80 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmanagement.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
index 0b83ac71ff..f91555dd04 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfmeta.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -192,7 +192,7 @@
% reference it in a /Outputintent and that all output intents reference
% the same colorprofile. The value stores the subtype.
% {\em This requirement is detected and fulfilled by \pkg{l3pdfmeta} if the
-% provided interface in \cs{DeclareDocumentMetadata} is used, see below}.
+% provided interface in \cs{DocumentMetadata} is used, see below}.
%
% \item[|annot_flags|] in annotations the |Print| flag should be true,
% |Hidden|, |Invisible|, |NoView| should be false.
@@ -235,7 +235,7 @@
% It should be checked against the current PDF version (\cs{pdf_version:}).
% A failure means that the version should be changed.
% This check is done by \pkg{l3pdfmeta} when the version is set with
-% \cs{DeclareDocumentMetadata} so more checks are only needed if the version is changed later.
+% \cs{DocumentMetadata} so more checks are only needed if the version is changed later.
%
% \item[|named_actions|] this requirement restricts the list of
% allowed named actions to |NextPage|, |PrevPage|, |FirstPage|, |LastPage|.
@@ -290,7 +290,7 @@
% The interface looks like this
%
% \begin{verbatim}
-% \DeclareDocumentMetadata
+% \DocumentMetadata
% {
% %other options for example pdfstandard
% colorprofiles=
@@ -318,7 +318,7 @@
% color profile, the setting is changed to the equivalent of
%
% \begin{verbatim}
-% \DeclareDocumentMetadata
+% \DocumentMetadata
% {
% %other options
% pdfstandard=A-2b,
@@ -345,7 +345,7 @@
% \begin{macrocode}
%<@@=pdfmeta>
%<*header>
-\ProvidesExplPackage{l3pdfmeta}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdfmeta}{2022-01-13}{0.95j}
{PDF-Standards---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
@@ -526,7 +526,7 @@
% }
% \begin{macrocode}
\prop_new:c { g_@@_standard_pdf/A-1B_prop }
-\prop_set_from_keyval:cn { g_@@_standard_pdf/A-1B_prop }
+\prop_gset_from_keyval:cn { g_@@_standard_pdf/A-1B_prop }
{
,name = pdf/A-1B
,type = A
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
index 6466964faf..6bf44b039b 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfmeta.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
index 4b35e21e17..9959583cd3 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdftools.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -215,7 +215,7 @@
%
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage{l3pdftools}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdftools}{2022-01-13}{0.95j}
{candidate commands for l3pdf---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
index d9f94b94ae..df2e659463 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdftools.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
index 86ecfccb45..f4a4a6a7f4 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.dtx
@@ -2,7 +2,7 @@
%
%% File: l3pdfxform.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -52,7 +52,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -136,7 +136,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*header>
-\ProvidesExplPackage{l3pdfxform}{2021-08-28}{0.95i}
+\ProvidesExplPackage{l3pdfxform}{2022-01-13}{0.95j}
{command to create xforms (beta)---LaTeX PDF management testphase bundle}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
index 2046decacb..9e341ac965 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/l3pdfxform.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
index 9af1a938eb..110bbb09b2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.dtx
@@ -2,7 +2,7 @@
%
%% File: ltdocinit.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -51,20 +51,25 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
%
% \section{\pkg{ltdocinit} documentation}
-% This small module defines \cs{DeclareDocumentMetadata} and the related keys.
+% This small module defines \cs{DocumentMetadata} and the older alias
+% \cs{DeclareDocumentMetadata} and the related keys.
% It also defines commands to store document properties in a global container.
%
-% \subsection{\cs{DeclareDocumentMetadata}}
+% When the kernel will provide \cs{DocumentMetadata} directly
+% this module will slowly disappear.
%
-% \begin{function}{\DeclareDocumentMetadata}
+% \subsection{\cs{DocumentMetadata}/\cs{DeclareDocumentMetadata}}
+%
+% \begin{function}{\DocumentMetadata,\DeclareDocumentMetadata}
% \begin{syntax}
-% \cs{DeclareDocumentMetadata}\Arg{key-value list}
+% \cs{DocumentMetadata}\Arg{key-value list}\\
+% \cs{DeclareDocumentMetadata}\Arg{key-value list} (deprecated)
% \end{syntax}
% \end{function}
%
@@ -75,65 +80,89 @@
% for example the pdf version can no longer be changed if a
% package has used code which already opened the PDF.
%
-% \cs{DeclareDocumentMetadata} as a new command
+% \cs{DocumentMetadata} as a new command
% should unify such settings in one place.
-% It should be used before \cs{documentclass}, directly after
-% loading \pkg{pdfmanagement-testphase}. \cs{DeclareDocumentMetadata}
-% can be used more than once.
+% It should be used before \cs{documentclass}.
+% \cs{DocumentMetadata} can be used more than once.
+%
+% With a \LaTeX{} 2022-06-01 or newer (currently provided as |latex-dev|) the command
+% is provided by the kernel and will load the pdfmanagement,
+% with older \LaTeX{} the pdfmanagement must be loaded
+% first manually with |\RequirePackage{pdfmanagement-testphase}|.
%
-% The keys defined for \cs{DeclareDocumentMetadata}
+% The keys defined for \cs{DocumentMetadata}
% currently allows to set the PDF version, to set the PDF \texttt{/Lang},
% to uncompress a pdf, to set the language and to declare a few PDF standards
-% and some colorprofiles.
+% and to load some colorprofiles.
%
-% \cs{DeclareDocumentMetadata} is also used to
+% \cs{DocumentMetadata} is also used to
% activate the new PDF management code and it loads
% a number of required files for the PDF management code.
% As this forces the loading of the backend files, a backend
% which can't be detected automatically like |dvipdfmx|,
-% must be set in the first \cs{DeclareDocumentMetadata}.
+% must be set in the first \cs{DocumentMetadata}.
%
% Currently the following keys are implemented
%
% \begin{description}
-% \item[\texttt{backend}] passes the backend name to expl3.
-% This will probably be extended to pass the value also to packages.
-% \item[\texttt{pdfversion}] e.g. \texttt{pdfversion=1.7}
-% \item[\texttt{uncompress}] no value. Forces an uncompressed pdf.
-% \item[\texttt{lang}] to set the Lang entry in the Catalog.
-% E.g. \texttt{lang=de-DE}. The initial value is |en-US|
+% \item[\texttt{backend}] Passes the backend name to expl3. This is
+% needed only if the needed backend can't be automatically
+% determined or if the workflow used requires a special backend.
+%
+%^^A This will probably be extended to pass the value also to
+%^^A packages.
+%
+% \item[\texttt{pdfversion}] Sets the PDF version explicitly, e.g., \texttt{pdfversion=1.7}
+% \item[\texttt{uncompress}] (no value) Forces an uncompressed pdf
+% --- mainly for debugging purposes.
+%
+% \item[\texttt{lang}] Explicitly sets the Lang entry in the Catalog,
+% e.g., \texttt{lang=de-DE}. If not given the default value used is |en-US|.
+%
% \item[\texttt{pdfstandard}] Choice key to set the pdf standard.
% Currently |A-1b|, |A-2a|, |A-2b|, |A-2u|, |A-3a|, |A-3b| and |A-3u| are accepted as
% values. The casing is irrelevant, |a-1b| works too.
% The underlying code to ensure the requirements (as far as they
-% can be ensured) is incomplete, but a color profile is included and the
-% /OutputIntent is set. The |u| variants for example do not force unicode,
+% can be ensured) is still incomplete, but a color profile is included and the
+% \texttt{/OutputIntent} is set. The |u| variants for example do not force unicode,
% but they will pass the information to hyperref and hyperxmp. The |a| variants
% do \emph{not} enforce (or even test) a tagged pdf yet.
% More information can be found in the documentation
% of \pkg{l3pdfmeta}.
+%
% \item[\texttt{colorprofiles}] This allows to load icc-colorprofiles. Details
-% are described in the documentation of \pkg{l3pdfmeta}.
-% \item[\texttt{pdfmanagement}] Boolean. This activates/deactivates
-% the core management code. By default the value is true.
-% \item[\texttt{firstaidoff}] This accepts a comma lists of keysword and disable the patches
-% related to them. More information can be found in the documentation of
-% \pkg{pdfmanagement-firstaid}.
+% are described in the documentation of \pkg{l3pdfmeta}.
+%
% \item[\texttt{testphase}] This key is used to load testphase code. The values it accepts
% and their effect will change over time, when testphase packages are added or
-% removed when the code is moved into the kernel. Currently the accepted values are
-% \texttt{tagpdf}, this load the tagpdf package, \texttt{headings}, this loads
-% code which reimplements heading commands, and \texttt{ptagging} this loads code
-% to allow paragraph tagging to work with engine other than luatex.
-% \item[\texttt{activate}] This key is used to enable some document wide functions. It is
-% currently in an experimental state. The values and their behaviour are subject to change.
-% Currently the only value is |tagging|,
-% which will do |\tagpdfsetup{activate,paratagging,interwordspace}|. It requires that
-% \pkg{tagpdf} has been loaded first with the |testphase| key.
-% \item[\texttt{debug}] This key activates some debug options. Currently only the
-% keys |para| (with the default and only value |show|),
-% and |log| (with the values of \pkg{tagpdf}) and |uncompress| (which does the same
-% as |uncompress| as main key) are known.
+% removed or when the code is moved into the kernel.
+% \begin{description}
+% \item[\texttt{phase-I}]
+% This value loads code implementing the first phase of the project~\cite{blueprint}, i.e., it
+% will load the tagpdf package. It will also activate tagging by issuing
+% |\tagpdfsetup{activate,interwordspace}|. This phase
+% is frozen.
+% \item[\texttt{phase-II}]
+% This is the current development phase.
+% Currently it differs from \texttt{phase-I} only in one point: It will
+% additionally activate tagging of paragraphs with
+% |\tagpdfsetup{paratagging}|. In the upcoming months it will
+% also enable automatic tagging of other basic document elements.
+% \end{description}
+% The |testphase| key can only be used in the first \cs{DocumentMetadata}.
+%
+% \item[\texttt{debug}] This key activates some debug options. It takes a list of key-values
+% as value. Currently the following keys are known:
+% \begin{description}
+% \item[\texttt{para}] with the default and only value |show|. It will activate the |paratagging-show|
+% option of \pkg{tagpdf},
+% \item[\texttt{log}] with the values as described in the documentation \pkg{tagpdf},
+% \item[\texttt{uncompress}] which does the same as |uncompress| as main key
+% \item[\texttt{pdfmanagement}] a boolean which allows to deactivate the pdfmanagement.
+% \item[\texttt{firstaidoff}] This accepts a comma lists of keywords and disables the patches
+% related to them. More information can be found in the documentation of
+% \pkg{pdfmanagement-firstaid}.
+% \end{description}
% \end{description}
%
% \subsection{Container for document properties}
@@ -151,7 +180,7 @@
% \end{syntax}
% This stores \meta{value} under the key \meta{label}/\meta{property}.
% By default \meta{label} is the current package name |\@currname|. If another
-% label is choosen, it should be one which avoids clashes with other packages
+% label is chosen, it should be one which avoids clashes with other packages
% using the container. The label |document| is reserved.
% \end{function}
%
@@ -174,91 +203,290 @@
% This show the current content of the container.
% \end{function}
%
+% \begin{thebibliography}{9}
+%
+% \bibitem{blueprint} Frank Mittelbach and Chris Rowley:
+% \emph{\LaTeX{} Tagged PDF\,---\,A blueprint for a large project}.
+% \url{https://latex-project.org/publications/indexbyyear/2020/}
+%
+% \end{thebibliography}
+%
% \end{documentation}
%
% \begin{implementation}
%
% \section{\pkg{ltdocinit} implementation}
-% \subsection{\cs{DeclareDocumentMetadata}}
% \begin{macrocode}
%<@@=pdfmanagement>
%<*header>
-\ProvidesExplPackage{ltdocinit}{2021-08-28}{0.95i}
+\ProvidesExplPackage{ltdocinit}{2022-01-13}{0.95j}
{Initialize document metadata}
%</header>
% \end{macrocode}
-% \cs{DeclareDocumentMetadata} should for now not be used after
-% \cs{documentclass} so we error in this case. It can be used more than once
-% but follow-up calls should not do the initialization code.
+% \cs{DocumentMetadata} will be defined by the kernel in short time.
+% So we define it and the keys here only if it is not already defined.
+% \subsection{The keys for \cs{DocumentMetadata}}
+% We define the keys first so that we can test if \cs{DocumentMetadata}
+% exist (testing for the format date would be nice but would fail for the current
+% latex-dev).
+% \begin{variable}{\g_@@_firstaidoff_clist}
+% A list to store the firstaid code which should be disabled
% \begin{macrocode}
%<*package>
-\msg_new:nnn { document } { setup-after-documentclass }
+\clist_new:N \g_@@_firstaidoff_clist
+% \end{macrocode}
+% \end{variable}
+% \begin{variable}{\g_@@_testphase_tl}
+% a tl to store the testphase loading code so that we can load them at
+% the end of the command.
+% \begin{macrocode}
+\tl_new:N \g_@@_testphase_tl
+% \end{macrocode}
+% \end{variable}
+% \begin{macrocode}
+\cs_if_free:NT \DocumentMetadata
+ {
+ \keys_define:nn { document / metadata }
+ {
+ backend .choices:nn =
+ { dvipdfmx , dvips , dvisvgm , luatex , pdftex , pdfmode , xdvipdfmx , xetex }
+ {
+ \sys_load_backend:n {#1}
+ },
+ backend .groups:n = { init } ,
+ }
+
+ \keys_define:nn { document / metadata }
+ {
+ ,pdfversion .code:n =
+ {
+ \pdf_version_gset:n { #1 }
+ \AddToDocumentProperties[document]{pdfversion}{#1}
+ }
+ ,uncompress .code:n =
+ {
+ \pdf_uncompress:
+ }
+ ,uncompress .value_forbidden:n = true
+ ,lang .code:n =
+ {
+ \pdfmanagement_add:nnn {Catalog} {Lang}{(#1)}
+ \AddToDocumentProperties[document]{lang}{#1}
+ }
+ %,xmpmeta .bool_gset:N = \g_pdfmeta_xmp_bool %see pdfmeta unused and undefined for now!
+ % this uses internal command from pdfmeta, it should probably move there ...
+ ,pdfstandard .code:n =
+ {
+ \exp_args:Nnx
+ \keys_set:nn {document / metadata} {_pdfstandard=\str_uppercase:n{#1}}
+ }
+ ,_pdfstandard .choices:nn =
+ {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U}
+ {
+ \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop }
{
- \token_to_str:N \DeclareDocumentMetadata \c_space_tl
- should~be~used~only~before~\token_to_str:N\documentclass
+ \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop }
}
+ \AddToDocumentProperties [document]{pdfstandard}{#1}
+ }
+ ,_pdfstandard / unknown .code:n =
+ {
+ \msg_warning:nnn{pdf}{unknown-standard}{#1}
+ }
+ ,testphase .multichoice:
+ ,testphase / tagpdf .code:n =
+ {
+ \tl_gput_right:Nn\g_@@_testphase_tl
+ {
+ \file_if_exist_input:nF {tagpdf-latex-lab-testphase.ltx}
+ {
+ \RequirePackage{tagpdf}
+ \AddToDocumentProperties [document]{testphase/tagpdf}{loaded}
+ \tagpdfsetup{activate,paratagging,interwordspace}
+ \AddToDocumentProperties [document]{tagging}{active}
+ \AddToDocumentProperties [document]{tagging/para}{active}
+ \AddToDocumentProperties [document]{tagging/interwordspace}{active}
+ }
+ }
+ }
+ ,testphase / unknown .code:n =
+ {
+ \tl_gput_right:Nn\g_@@_testphase_tl
+ {
+ \file_if_exist_input:nF {#1-latex-lab-testphase.ltx}
+ {
+ \msg_warning:nnn{document}{latex-lab-pkg-missing}{#1}
+ }
+ }
+ }
+ ,activate .multichoice:
+ ,activate / tagging .code:n =
+ {
+ \PackageWarning{pdfmanagement-testphase}
+ {The~activate~key~is~deprecated.\MessageBreak
+ Tagging~is~activated~with~'testphase=tagpdf'~directly}{}
+ }
+ ,debug .code:n =
+ {
+ \keys_set:nn { document / metadata / debug } {#1}
+ }
+ ,debug / para .code:n =
+ {
+ \AddToHook
+ {
+ package/tagpdf/after
+ }
+ {
+ \tagpdfsetup{paratagging-show}
+ }
+ }
+ ,debug / log .code:n =
+ {
+ \AddToHook
+ {
+ package/tagpdf/after
+ }
+ {
+ \tagpdfsetup{log=#1}
+ }
+ }
+ ,debug / uncompress .code:n =
+ {
+ \pdf_uncompress:
+ }
+ ,debug / pdfmanagement .bool_gset:N = \g_@@_active_bool
+ ,debug / firstaidoff .clist_gset:N = \g_@@_firstaidoff_clist
+ }
+ }
% \end{macrocode}
-% \begin{macro}{\DeclareDocumentMetadata}
+%
+% \subsection{\cs{DocumentMetadata}/\cs{DeclareDocumentMetadata}}
+% At first we have to define the older alias \cs{DeclareDocumentMetadata} if
+% \cs{DocumentMetadata} is already defined in a newer LaTeX version. Here
+% we load the latex-lab support (if it hasn't been loaded
+% before) and redefine then \cs{DeclareDocumentMetadata}
+% to \cs{DocumentMetadata}
+%
% \begin{macrocode}
-\NewDocumentCommand\DeclareDocumentMetadata { m }
+\cs_if_exist:NT \DocumentMetadata
+ {
+ \cs_new_protected:Npn \DeclareDocumentMetadata
+ {
+ \cs_if_free:NT \DocumentMetadata
+ {
+ \file_if_exist_input:nF {documentmetadata-support.ltx}%
+ {
+ \@latex@error
+ {No~support~files~for~\noexpand\DeclareDocumentMetadata~found}
+ {
+ Is~the~'LaTeX-lab'~bundle~installed?
+ \MessageBreak
+ Without~it,~the~declaration~is~ignored.
+ }
+ \let\DeclareDocumentMetadata\@gobble
+ }
+ }
+ \RenewDocumentCommand \DeclareDocumentMetadata {}
+ { \DocumentMetadata }
+ \DocumentMetadata
+ }
+ }
+% \end{macrocode}
+% Now we provide a definition for \cs{DocumentMetadata} if it doesn't exist yet.
+% \begin{macrocode}
+\cs_if_free:NT \DocumentMetadata
{
- \cs_if_eq:NNTF \documentclass \@twoclasseserror
- { \msg_error:nn { document }{ setup-after-documentclass } }
+% \end{macrocode}
+% \cs{DocumentMetadata} should for now not be used after
+% \cs{documentclass} so we error in this case. It can be used more than once
+% but follow-up calls should not do the initialization code.
+% \begin{macrocode}
+ \prop_gput:Nnn \g_msg_module_type_prop { document } { LaTeX }
+ \prop_gput:Nnn \g_msg_module_name_prop { document } { DocumentMetadata }
+ \msg_new:nnn
+ { document } { setup-after-documentclass }
+ {
+ \token_to_str:N \DocumentMetadata \c_space_tl
+ should~be~used~only~before~\token_to_str:N\documentclass
+ }
+ \msg_new:nnn
+ { document } { latex-lab-pkg-missing }
+ {
+ LaTeX-lab~package~'#1'~not~found.
+ }
+% \end{macrocode}
+% \begin{macro}{\DocumentMetadata}
+% \begin{macrocode}
+ \NewDocumentCommand\DocumentMetadata { m }
{
+ \cs_if_eq:NNTF \documentclass \@twoclasseserror
+ { \msg_error:nn { document }{ setup-after-documentclass } }
+ {
% \end{macrocode}
% The wanted backend must be detected first, we read the init key and then
-% force the loading by either loading l3pdf (+ expl3) or only expl3.
-% The backend contains now management command, so the boolean should true first.
+% force the loading by loading expl3.
+% The backend can contains management commands, so the boolean should be set to true first.
% \begin{macrocode}
- \keys_set_groups:nnn { document / metadata} {init}{ #1 }
- %should be loaded after the backend is set, and only if not in the kernel
- \bool_gset_true:N \g_@@_active_bool
- \cs_if_free:NTF \pdf_uncompress:
- {\RequirePackage{l3pdf}}{\RequirePackage{expl3}}
+ \bool_gset_true:N \g_@@_active_bool
+ \keys_set_groups:nnn { document / metadata} {init}{ #1 }
+ %if no backend has been loaded force it now:
+ \str_if_exist:NF \c_sys_backend_str
+ {
+ \sys_load_backend:n {}
+ }
% \end{macrocode}
% Now we load the extra backend code
% \begin{macrocode}
\ExplSyntaxOn\makeatletter
- \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
+ \file_input:n {l3backend-testphase-\c_sys_backend_str.def}
\ExplSyntaxOff\makeatother
% \end{macrocode}
% set the default language, process the rest of the keys,
% and setup the generic driver
% \begin{macrocode}
- \keys_set_filter:nnn { document / metadata } { init } { lang=en-US, #1 }
- \bool_if:NT \g_@@_active_bool
- {
- \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
- }
+ \keys_set_filter:nnn { document / metadata } { init } { lang=en-US, #1 }
+ \bool_if:NT \g_@@_active_bool
+ {
+ \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
+ }
% \end{macrocode}
% \cs{pdfmanagement_add:nnn} has collected values in this hook.
% \begin{macrocode}
- \hook_use_once:n {pdfmanagement/add}
+ \hook_use_once:n {pdfmanagement/add}
% \end{macrocode}
-% Redefine \cs{DeclareDocumentMetadata} so that it only process the keys.
+% Redefine \cs{DocumentMetadata} so that it only process the keys.
% We need to update the hyperref option if the active status changes.
% \begin{macrocode}
- \RenewDocumentCommand\DeclareDocumentMetadata { m }
- {
- \keys_set_filter:nnn { document / metadata } { init } { ##1 }
- \bool_if:NTF \g_@@_active_bool
- {
- \str_remove_all:cn {opt@hyperref.sty}{customdriver=hgeneric-testphase}
- \PassOptionsToPackage{customdriver=hgeneric-testphase}{hyperref}
- }
- {
- \str_remove_all:cn {opt@hyperref.sty}{customdriver=hgeneric-testphase}
- }
- }
+ \RenewDocumentCommand\DocumentMetadata { m }
+ {
+ \keys_set_filter:nnn { document / metadata } { init } { ##1 }
+ \bool_if:NTF \g_@@_active_bool
+ {
+ \str_remove_all:cn
+ {opt@hyperref.sty}{customdriver=hgeneric-testphase}
+ \PassOptionsToPackage
+ {customdriver=hgeneric-testphase}{hyperref}
+ }
+ {
+ \str_remove_all:cn
+ {opt@hyperref.sty}{customdriver=hgeneric-testphase}
+ }
+ }
% \end{macrocode}
% Load more modules, the testphase code and the firstaid code.
% \begin{macrocode}
- \g_@@_testphase_tl
- \RequirePackage{pdfmanagement-firstaid}
+ \g_@@_testphase_tl
+ \RequirePackage{pdfmanagement-firstaid}
+ }
}
+% \end{macrocode}
+% At last we need to provide the older alias here too
+% \begin{macrocode}
+ \NewDocumentCommand\DeclareDocumentMetadata{}{\DocumentMetadata}
}
% \end{macrocode}
% \end{macro}
+%
% \subsection{Container for document Properties}
% The container for the document properties is a prop
% \begin{variable}{\g_@@_documentproperties_prop}
@@ -303,147 +531,6 @@
}
% \end{macrocode}
% \end{macro}
-% \subsection{The keys for \cs{DeclareDocumentMetadata}}
-% As they use \cs{AddToDocumentProperties} they have to come after
-% it has been defined.
-%
-% \begin{variable}{\g_@@_firstaidoff_clist}
-% A list to store the firstaid code which should be disabled
-% \begin{macrocode}
-\clist_new:N \g_@@_firstaidoff_clist
-% \end{macrocode}
-% \end{variable}
-% \begin{variable}{\g_@@_testphase_tl}
-% a tl to store the testphase loading code so that we can load them at
-% the end of the command.
-% \begin{macrocode}
-\tl_new:N \g_@@_testphase_tl
-% \end{macrocode}
-% \end{variable}
-% \begin{macrocode}
-\keys_define:nn { document / metadata }
- {
- backend .code:n =
- {
- \PassOptionsToPackage { driver=#1 } {expl3}
- \AddToDocumentProperties[document]{backend}{#1}
- },
- backend .groups:n = { init } ,
- }
-
-\keys_define:nn { document / metadata }
- {
- ,pdfversion .code:n =
- {
- \pdf_version_gset:n { #1 }
- \AddToDocumentProperties[document]{pdfversion}{#1}
- }
- ,uncompress .code:n =
- {
- \pdf_uncompress:
- }
- ,uncompress .value_forbidden:n = true
- ,lang .code:n =
- {
- \pdfmanagement_add:nnn {Catalog} {Lang}{(#1)}
- \AddToDocumentProperties[document]{lang}{#1}
- }
- %,xmpmeta .bool_gset:N = \g_pdfmeta_xmp_bool %see pdfmeta unused and undefined for now!
- % this uses internal command from pdfmeta, it should probably move there ...
- ,pdfstandard .code:n =
- {
- \exp_args:Nnx
- \keys_set:nn {document / metadata} {_pdfstandard=\str_uppercase:n{#1}}
- }
- ,_pdfstandard .choices:nn =
- {A-1B,A-2A,A-2B,A-2U,A-3A,A-3B,A-3U}
- {
- \prop_if_exist:cT { g__pdfmeta_standard_pdf/#1_prop }
- {
- \prop_gset_eq:Nc \g__pdfmeta_standard_prop { g__pdfmeta_standard_pdf/#1 _prop }
- }
- \AddToDocumentProperties [document]{pdfstandard}{#1}
- }
- ,_pdfstandard / unknown .code:n =
- {
- \msg_warning:nnn{pdf}{unknown-standard}{#1}
- }
- ,pdfmanagement .bool_gset:N = \g_@@_active_bool
- ,firstaidoff .clist_gset:N = \g_@@_firstaidoff_clist
- ,testphase .multichoice:
- ,testphase / tagpdf .code:n =
- {
- \tl_gput_right:Nn\g_@@_testphase_tl
- {
- \RequirePackage{tagpdf}
- \AddToDocumentProperties [document]{testphase/tagpdf}{loaded}
- }
- }
- ,testphase / headings .code:n =
- {
- \tl_gput_right:Nn\g_@@_testphase_tl
- {
- \RequirePackage{headings-testphase}
- \AddToDocumentProperties [document]{testphase/headings}{loaded}
- }
- }
- ,testphase / ptagging .code:n =
- {
- \tl_gput_right:Nn\g_@@_testphase_tl
- {
- \AddToHook{class/after}
- {
- \RequirePackage{ptagging-testphase}
- \AddToDocumentProperties [document]{testphase/ptagging}{loaded}
- }
- }
- }
- ,testphase / unknown .code:n =
- {
- \tl_gput_right:Nn\g_@@_testphase_tl
- {
- \AddToHook{class/after}
- {
- \RequirePackage{#1-testphase}
- \AddToDocumentProperties [document]{testphase/#1}{loaded}
- }
- }
- }
- ,activate .multichoice:
- ,activate / tagging .code:n =
- {
- \AddToHook{package/after/tagpdf}
- {
- \tagpdfsetup{activate,paratagging,interwordspace}
- \AddToDocumentProperties [document]{tagging}{active}
- \AddToDocumentProperties [document]{tagging/para}{active}
- \AddToDocumentProperties [document]{tagging/interwordspace}{active}
- }
- }
- ,debug .code:n =
- {
- \keys_set:nn { document / metadata / debug } {#1}
- }
- ,debug / para .code:n =
- {
- \AddToHook{package/after/tagpdf}
- {
- \tagpdfsetup{paratagging-show}
- }
- }
- ,debug / log .code:n =
- {
- \AddToHook{package/after/tagpdf}
- {
- \tagpdfsetup{log=#1}
- }
- }
- ,debug / uncompress .code:n =
- {
- \pdf_uncompress:
- }
- }
-% \end{macrocode}
% \begin{macrocode}
%</package>
% \end{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
index 1bc3aa262d..0816edae0f 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/ltdocinit.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
index 7b67c520b3..f084030fd2 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.dtx
@@ -119,7 +119,8 @@
% \end{itemize}
%
% \begin{macrocode}
-\AddToHook{package/after/multicol}{% multicol needs later loading
+\AddToHook{package/multicol/after}
+ {% multicol needs later loading
% \end{macrocode}
%
% \begin{macrocode}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
index 30d2a68ced..a99709cf13 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/output-patches-tmp-ltx.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
index b7a12f5545..677e3fe40e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdflscape-ltx.sty
@@ -22,7 +22,7 @@
%% This work consists of the main source file pdflscape-ltx.sty
%%
\NeedsTeXFormat{LaTeX2e}
-\ProvidesExplPackage{pdflscape-ltx}{2021-08-28}{0.95i}
+\ProvidesExplPackage{pdflscape-ltx}{2022-01-13}{0.95j}
{Display of landscape pages in PDF - adaption of pdflscape to the PDFmanagement bundle (testphase)}
\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphics}}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
index 65f3f7cfa4..6383bd9922 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.dtx
@@ -2,7 +2,7 @@
%
%% File: pdfmanagement-firstaid.dtx
%
-% Copyright (C) 2018-2021 The LaTeX Project
+% Copyright (C) 2018-2022 The LaTeX 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>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -63,11 +63,11 @@
% This code should disappear when packages adapt to the central interfaces.
%
% The package contains an number of sections for various packages. Every
-% section can be disabled in (the first) \cs{DeclareDocumentMetadata} with
-% |firstaidoff={name1,name2,...}|.
+% section can be disabled in (the first) \cs{DocumentMetadata} with
+% |debug={firstaidoff={name1,name2,...},...}|.
% \begin{macrocode}
%<*package>
-\ProvidesExplPackage{pdfmanagement-firstaid}{2021-08-28}{0.95i}
+\ProvidesExplPackage{pdfmanagement-firstaid}{2022-01-13}{0.95j}
{LaTeX PDF management testphase bundle / firstaid-patches}
%<@@=pdfmanagement>
@@ -137,7 +137,10 @@
% \begin{macrocode}
\bool_if:NT \g_@@_firstaid_xcolor_bool
{
- \AddToHook{package/after/xcolor}
+ \AddToHook
+ {
+ package/xcolor/after
+ }
{\RequirePackage{xcolor-patches-tmp-ltx}\XC@@@@names}
}
% \end{macrocode}
@@ -170,7 +173,10 @@
\bool_if:NT \g_@@_firstaid_pgf_bool
{
\msg_info:nnn{pdfmanagement }{firstaid}{pgf}
- \AddToHook{file/after/pgfrcs.sty}
+ \AddToHook
+ {
+ file/pgfrcs.sty/after
+ }
{
\cs_set_eq:NN
\@@_pgfori_pgfutil@setuppdfresources
@@ -274,7 +280,9 @@
\bool_if:NT \g_@@_firstaid_hyperxmp_bool
{
\AddToHook
- {file/after/hyperxmp.sty}
+ {
+ file/hyperxmp.sty/after
+ }
{\RequirePackage{hyperxmp-patches-tmp-ltx}}
}
%</package>
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
index 7f601e819e..b730d9e75e 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-firstaid.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
index 313f2d326e..1364b8e83c 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.dtx
@@ -2,7 +2,7 @@
%
%% File: pdfmanagement-testphase.dtx
%
-% Copyright (C) 2019-2021 The LaTeX Project
+% Copyright (C) 2019-2022 The LaTeX 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,9 +24,9 @@
%
%<*driver>
\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfstandard=A-2b}
+\DocumentMetadata{pdfstandard=A-2b}
\makeatletter
-\declare@file@substitution{doc.sty}{doc-v3beta.sty}
+%\declare@file@substitution{doc.sty}{doc-v3beta.sty}
\makeatother
\documentclass{l3doc}
\usepackage{tabularx,array,booktabs,hyperxmp}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Version 0.95i, released 2021-08-28}
+% \date{Version 0.95j, released 2022-01-13}
%
% \maketitle
% \begin{documentation}
@@ -66,7 +66,7 @@
% \begin{verbatim}
% \RequirePackage{pdfmanagement-testphase} % load the package
%
-% \DeclareDocumentMetadata % activate the PDF management (with options)
+% \DocumentMetadata % activate the PDF management (with options)
% {
% % options
% }
@@ -76,6 +76,8 @@
% Note that the activation has to happen before the \cs{documentclass} declaration.
% Because of this, the package needs loading with \cs{RequirePackage}.
%
+% Starting with LaTeX 2022-06-01 (or a suitable latex-dev) it is no longer necessary to
+% load pdfmanagement-testphase manually, using \cs{DocumentMetadata} is enough.
%
%
% \section*{Feedback wanted!}
@@ -125,8 +127,9 @@
% written by the kernel directly and this can not be done without proper,
% well-defined and well-behaving interfaces and hooks.
%
-% Some first steps for better support of PDF related commands have been already done
-% with the \pkg{l3pdf} package which has now been integrated into \pkg{l3kernel}.
+% Some first steps for better support of PDF related commands have been done
+% with the \pkg{l3pdf} package which has now been integrated as a module
+% into \pkg{l3kernel}.
% It offers backend independent commands to create
% PDF objects and destination, to set the compress level and the PDF version.
%
@@ -171,7 +174,7 @@
%
% Loading the package will only \emph{load} the modules,
% to \emph{activate} the core PDF management the trigger command
-% \cs{DeclareDocumentMetadata} has to be used too.
+% \cs{DocumentMetadata} has to be used too.
% The loading and activation has to be done
% \emph{before} the \cs{documentclass} command.
%
@@ -201,22 +204,24 @@
% \section{Use}\label{sec:use}
% The package should be loaded before \cs{documentclass}. To activate
% the resource management it should be followed by
-% \cs{DeclareDocumentMetadata}\marg{key-val}.
-% The options of \cs{DeclareDocumentMetadata} are described in the documentation of
+% \cs{DocumentMetadata}\marg{key-val}.
+% The options of \cs{DocumentMetadata} are described in the documentation of
% \pkg{ltdocinit}.
%
% \begin{verbatim}
% \RequirePackage{pdfmanagement-testphase} % load the package
-% \DeclareDocumentMetadata % activates the PDF management interface
+% % not needed with LaTeX 2022-06-01
+% \DocumentMetadata % activates the PDF management interface
% {
% %options
% }
% \documentclass {...}
% \end{verbatim}
%
-% The PDF management can be deactivated either setting the key
+% The PDF management can be deactivated either setting in the \texttt{debug} key
+% the key
% \texttt{pdfmanagement} to \texttt{false} or by commenting out
-% the whole \cs{DeclareDocumentMetadata} declaration.
+% the whole \cs{DocumentMetadata} declaration.
%
% To test if the PDF management is active the predicate
% \cs{pdfmanagement_if_active:TF} can be used, see the documentation of \pkg{l3pdfmanagement}.
@@ -250,7 +255,7 @@
%
% \item[l3pdfmanagement] This is the core code of the PDF management.
%
-% \item[ltdocinit] This module provides the \cs{DeclareDocumentMetadata} command.
+% \item[ltdocinit] This module provides the \cs{DocumentMetadata} command.
%
% \item[hyperref-generic] This module provides a new generic hyperref driver.
% The driver will
@@ -332,23 +337,23 @@
% Some patch code is provided by the bundle and loaded automatically,
% but it is not complete currently. Failures are e.g. possible with complicated
% author or title settings. The handling of dates isn't correct either yet.
-% The patch code can be disabled by using |firstaidoff=hyperxmp| in \cs{DeclareDocumentMetadata}
+% The patch code can be disabled by using |debug={firstaidoff=hyperxmp}| in \cs{DocumentMetadata}
%
% \subsection{tikz/pgf}
% \pkg{pgf} writes to the page resources too and so is incompatible. The needed
% changes are rather small and will be done in coordination with the maintainer.
% Until this works, \pkg{pagemanagement} will load the patches automatically.
-% This can be disabled by using |firstaidoff=pgf| in \cs{DeclareDocumentMetadata}
+% This can be disabled by using |debug={firstaidoff=pgf}| in \cs{DocumentMetadata}
%
% \subsection{transparent}
% The package \pkg{transparent} is incompatible. A replacement has been written
% (\pkg{transparent-ltx}) and is loaded automatically. It requires a very recent
% L3 programming layer!
-% This can be disabled by using |firstaidoff=transparent| in \cs{DeclareDocumentMetadata}
+% This can be disabled by using |debug={firstaidoff=transparent}| in \cs{DocumentMetadata}
% \subsection{pdflscape}
% The package \pkg{pdflscape} is incompatible. A replacement has been written
% (\pkg{pdflscape-ltx}) and is loaded automatically.
-% This can be disabled by using |firstaidoff=pdflscape| in \cs{DeclareDocumentMetadata}
+% This can be disabled by using |debug={firstaidoff=pdflscape}| in \cs{DocumentMetadata}
%
% \subsection{colorspace}
% The package is incompatible. Some patches
@@ -384,7 +389,7 @@
% \begin{macrocode}
%<@@=pdf>
%<*package>
-\ProvidesExplPackage{pdfmanagement-testphase}{2021-08-28}{0.95i}
+\ProvidesExplPackage{pdfmanagement-testphase}{2022-01-13}{0.95j}
{LaTeX PDF management testphase bundle}
\providecommand\IfFormatAtLeastTF{\@ifl@t@r\fmtversion}
\IfFormatAtLeastTF{2020-10-01}{}{
@@ -393,6 +398,7 @@
\MessageBreak Loading~is~aborted.}{}
\DeclareOption { debug }{}
\newcommand\DeclareDocumentMetadata[1]{}
+ \newcommand\DocumentMetadata[1]{}
\ProcessOptions\relax
}
\IfFormatAtLeastTF{2020-10-01}{}{\endinput}
@@ -411,13 +417,13 @@
% to allow to set it in the document.
% \begin{macrocode}
%<*header>
-\ProvidesExplFile{pdfmanagement-testphase.ltx}{2021-08-28}{0.95i}
+\ProvidesExplFile{pdfmanagement-testphase.ltx}{2022-01-13}{0.95j}
{PDF~management~code~(testphase)}
%</header>
%<*package>
%\RequirePackage{l3pdfdict} % needed by l3pdfmanagement
%\RequirePackage{l3pdfmanagement} % loads the core code with the boolean
-%\RequirePackage{ltdocinit} % DeclareDocumentMetadata,
+%\RequirePackage{ltdocinit} % DocumentMetadata,
%% can perhaps be combined or made optional ...
%\RequirePackage{l3pdfannot}
%\RequirePackage{l3pdfxform-beta}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
index 32ea161de1..70cf64c5c1 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
+++ b/macros/latex/contrib/pdfmanagement-testphase/pdfmanagement-testphase.pdf
Binary files differ
diff --git a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
index 61235bc846..f9987ba443 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/transparent-ltx.sty
@@ -3,7 +3,7 @@
%% a replacement for transparent sty from Heiko Oberdiek
%%
\NeedsTeXFormat{LaTeX2e}[2020/10/01]
-\ProvidesExplPackage{transparent-ltx}{2021-08-28}{0.95i}
+\ProvidesExplPackage{transparent-ltx}{2022-01-13}{0.95j}
{Transparency with color stacks (replacement for transparent.sty from Heiko Oberdiek)}%
\RequirePackage{l3opacity}
diff --git a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
index 45cd4413cf..5ff2ef0997 100644
--- a/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
+++ b/macros/latex/contrib/pdfmanagement-testphase/xcolor-patches-tmp-ltx.sty
@@ -1,6 +1,6 @@
%% LaTeX2e file `xcolor-patches.sty'
%%
-\ProvidesPackage{xcolor-patches-tmp-ltx}[2021-08-28 v0.95i patch xcolor for l3color]
+\ProvidesPackage{xcolor-patches-tmp-ltx}[2022-01-13 v0.95j patch xcolor for l3color]
\@ifundefined{color_set:nn}{\RequirePackage{l3color}}{}
\ExplSyntaxOn
diff --git a/macros/latex/contrib/siunitx/CHANGELOG.md b/macros/latex/contrib/siunitx/CHANGELOG.md
index 4c603b08ae..649008576a 100644
--- a/macros/latex/contrib/siunitx/CHANGELOG.md
+++ b/macros/latex/contrib/siunitx/CHANGELOG.md
@@ -7,7 +7,13 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
## [Unreleased]
-## [v3.0.40]: 2022-01-12
+## [v3.0.41] - 2022-01-13
+
+### Fixed
+- Rounding to an uncertainty purely in the integer part (see issue
+ [\#568](https://github.com/josephwright/siunitx/issues/568))
+
+## [v3.0.40] - 2022-01-12
### Changed
- Remove a deprecated `expl3` function
@@ -1654,7 +1660,8 @@ Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to
### Added
- First public testing release (as `si`)
-[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.40...HEAD
+[Unreleased]: https://github.com/josephwright/siunitx/compare/v3.0.41...HEAD
+[v3.0.41]: https://github.com/josephwright/siunitx/compare/v3.0.40...v3.0.41
[v3.0.40]: https://github.com/josephwright/siunitx/compare/v3.0.39...v3.0.40
[v3.0.39]: https://github.com/josephwright/siunitx/compare/v3.0.38...v3.0.39
[v3.0.38]: https://github.com/josephwright/siunitx/compare/v3.0.37...v3.0.38
diff --git a/macros/latex/contrib/siunitx/siunitx-code.pdf b/macros/latex/contrib/siunitx/siunitx-code.pdf
index a03f199dd8..b5922ebc96 100644
--- a/macros/latex/contrib/siunitx/siunitx-code.pdf
+++ b/macros/latex/contrib/siunitx/siunitx-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/siunitx/siunitx-number.dtx b/macros/latex/contrib/siunitx/siunitx-number.dtx
index 97600d5d4b..a7bd0b7e16 100644
--- a/macros/latex/contrib/siunitx/siunitx-number.dtx
+++ b/macros/latex/contrib/siunitx/siunitx-number.dtx
@@ -2848,7 +2848,11 @@
\prg_replicate:nn
{
\int_max:nn
- { 0 - ( \tl_count:n {#4} - \tl_count:n {#2} - #5 + 1 ) }
+ {
+ \tl_if_blank:nTF {#4}
+ { #5 }
+ { 0 - ( \tl_count:n {#4} - \tl_count:n {#2} - #5 + 1 ) }
+ }
{ 0 }
}
{ 0 }
diff --git a/macros/latex/contrib/siunitx/siunitx.dtx b/macros/latex/contrib/siunitx/siunitx.dtx
index 2381945c38..35902e25c7 100644
--- a/macros/latex/contrib/siunitx/siunitx.dtx
+++ b/macros/latex/contrib/siunitx/siunitx.dtx
@@ -121,7 +121,7 @@
%
% Identify the package and give the over all version information.
% \begin{macrocode}
-\ProvidesExplPackage {siunitx} {2022-01-12} {3.0.40}
+\ProvidesExplPackage {siunitx} {2022-01-13} {3.0.41}
{A comprehensive (SI) units package}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/siunitx/siunitx.pdf b/macros/latex/contrib/siunitx/siunitx.pdf
index 86ccfbcd8a..266462e8b6 100644
--- a/macros/latex/contrib/siunitx/siunitx.pdf
+++ b/macros/latex/contrib/siunitx/siunitx.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/README.md b/macros/latex/contrib/tagpdf/README.md
index d21932976e..f614f459fa 100644
--- a/macros/latex/contrib/tagpdf/README.md
+++ b/macros/latex/contrib/tagpdf/README.md
@@ -1,6 +1,6 @@
#tagpdf — A package to create tagged pdf
-Packageversion: 0.92
-Packagedate: 2021/08/27
+Packageversion: 0.93
+Packagedate: 2022/01/13
Author: Ulrike Fischer
## License
@@ -10,29 +10,35 @@ The tagpdf package may be modified and distributed under the terms and condition
## Contents
-- Readme (this file)
-- tagpdf.sty (the sty)
-- tagpdf-roles-code.sty (internal code)
-- tagpdf-mc-code-shared.sty (internal code)
-- tagpdf-mc-code-generic.sty (internal code)
-- tagpdf-mc-code-lua.sty (internal code)
-- tagpdf-struct-code.sty (internal code)
-- tagpdf-tree-code.sty (internal code)
-- tagpdf-space-code.sty (internal code)
-- tagpdf-attr-code.sty (internal code)
-- tagpdf-checks-code.sty (internal code)
-- tagpdf-user.sty (user commands)
-- tagpdf-pdftex.def (pdftex specific code)
-- tagpdf-luatex.def (luatex specific code)
-- tagpdf.lua (lua code for luatex)
-- tagpdf.tex, tagpdf.pdf, tagpdf.bib, tagpdfdocu-patches.sty,
- link-figure-input.tex, pac3.png (the docu)
-- various examples (part of the documentation)
+- README.md (this file)
+- code files:
+ - tagpdf.ins
+ - tagpdf.dtx
+ - tagpdf-roles.dtx
+ - tagpdf-mc-shared.dtx
+ - tagpdf-mc-generic.dtx
+ - tagpdf-mc-lua.dtx
+ - tagpdf-struct.dtx
+ - tagpdf-tree.dtx
+ - tagpdf-space.dtx
+ - tagpdf-checks.dtx
+ - tagpdf-user.dtx
+- documentation:
+ - tagpdf.pdf
+ - various examples (part of the documentation)
+- source files for the documentation:
+ - tagpdf.tex
+ - tagpdf.bib
+ - tagpdfdocu-patches.sty,
+ - link-figure-input.tex
+ - pac3.png, global-ex.png
## Installation
-Put the styles (with the exception of the tagpdfdocu-patches.sty),
-the .def and the lua-files where it can be found.
+At best use the package manager of your texsystem to install tagpdf.
+For a manual installation run the .ins-file with latex and put the
+created .sty, .def and .lua-files
+where they can be found.
## Issues, comments, etc
diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.pdf b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
index a1b7db7c77..19a9d7b8ea 100644
--- a/macros/latex/contrib/tagpdf/ex-AF-file.pdf
+++ b/macros/latex/contrib/tagpdf/ex-AF-file.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-AF-file.tex b/macros/latex/contrib/tagpdf/ex-AF-file.tex
index 3e569807db..2282cd0026 100644
--- a/macros/latex/contrib/tagpdf/ex-AF-file.tex
+++ b/macros/latex/contrib/tagpdf/ex-AF-file.tex
@@ -1,26 +1,26 @@
% !Mode:: "TeX:DE:UTF-8:Main"
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{
- pdfversion=2.0
- ,lang=de-DE
- ,uncompress}
+\IfFormatAtLeastTF{2022-06-01}{}
+ {\RequirePackage{pdfmanagement-testphase}}
+\DocumentMetadata
+ {
+ uncompress,
+ pdfversion=2.0,
+ lang=de-DE,
+ testphase=tagpdf %load and activate tagpdf
+ }
\documentclass{article}
-\usepackage{tagpdf}
\usepackage{iftex}
-\tagpdfsetup{tabsorder=structure,
- activate,
- interwordspace
- }
+\tagpdfsetup{tabsorder=structure}
-\iftutex
+\ifluatex
\usepackage{fontspec}
\usepackage{unicode-math}
\usepackage{luacode}
\newfontface\zerowidthfont{freeserif}
\else
\usepackage[T1]{fontenc}
-\fi
+\fi
\usepackage{graphicx}
\begin{filecontents}{example-input-file.tex}
@@ -29,6 +29,7 @@ Additional info!
\begin{document}
\pagestyle{empty}
+\tagpdfparaOff %we don't want to nest paragraphs ...
\ExplSyntaxOn
diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf b/macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
index 3cda28e0da..d77cb67941 100644
--- a/macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
+++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-alt-actualtext.tex b/macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
index 148a010701..ae44370152 100644
--- a/macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
+++ b/macros/latex/contrib/tagpdf/ex-alt-actualtext.tex
@@ -8,7 +8,7 @@
\usepackage{tagpdf}
\tagpdfsetup{tabsorder=structure,
activate}
-\usepackage{iftex}
+\usepackage{iftex}
\iftutex
\usepackage{fontspec}
\usepackage{unicode-math}
@@ -26,6 +26,7 @@
% with pdflatex there is a encoding problem with the math
\begin{document}
+\tagpdfparaOff
\pagestyle{empty}
@@ -155,9 +156,9 @@ Etwas unmarkierter Text.
actualtext=Ente,
alttext=Dies ist eine Ente}
%% a char is needed so that actualtext works,
- \tagpdfifluatexTF
+ \ifluatex
{{\zerowidthfont^^^^200c}}%
- {\makebox[0pt][l]{.}}%
+ \else {\makebox[0pt][l]{.}} \fi%
%it seems not to be needed for alttext and voice software ....
\includegraphics[width=1cm]{example-image-duck}
\tagmcend
diff --git a/macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf b/macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
index f813c0e919..dc0d6b9df8 100644
--- a/macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
+++ b/macros/latex/contrib/tagpdf/ex-attribute-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-attribute.pdf b/macros/latex/contrib/tagpdf/ex-attribute.pdf
deleted file mode 100644
index 9871e6a033..0000000000
--- a/macros/latex/contrib/tagpdf/ex-attribute.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf b/macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
index 5a9f8e03a9..f470531f33 100644
--- a/macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
+++ b/macros/latex/contrib/tagpdf/ex-formula-problem-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split.pdf b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
index 3dedd62f26..6fcda263ce 100644
--- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split.pdf
+++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split.tex b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
index d89e3601f4..92966275c5 100644
--- a/macros/latex/contrib/tagpdf/ex-mc-manual-para-split.tex
+++ b/macros/latex/contrib/tagpdf/ex-mc-manual-para-split-obsolete.tex
@@ -1,11 +1,17 @@
% !Mode:: "TeX:DE:UTF-8:Main"
% !!!!!!!!!!!!!!!!!
+% Obsolete example!
+% !!!!!!!!!!!!!!!!
% This test files shows how to add a manual page split.
% It *only* handles the mc-step in the page stream.
% Structure commands and all the related management are not
% involved. So it also only uses activate-mc.
+% It is obsolete as the current tagpdf version now handles the
+% page split automatically. To keep the example working this is disabled
+% below with \csname __tag_mc_disable_marks:\endcsname
+
\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{pdfversion=1.7,uncompress}
\documentclass{book}
@@ -17,7 +23,7 @@
\iftutex
\usepackage{fontspec}
\usepackage{luacode}
-\else
+\else
\usepackage[T1]{fontenc}
\fi
@@ -31,8 +37,10 @@
\pagestyle{fancy}
\fancyhf{}
-\cfoot{\tagmcbegin{artifact=pagination}\thepage\tagmcend}
\begin{document}
+%disable the automatic page break handler:
+\csname __tag_mc_disable_marks:\endcsname
+
\tagmcbegin{tag=P}
Cras egestas ipsum a nisl. Vivamus varius dolor
ut dolor. Fusce vel enim. Pellentesque accumsan ligula et eros. Cras
diff --git a/macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf b/macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
index 9ddd1a9f99..d432342c1e 100644
--- a/macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
+++ b/macros/latex/contrib/tagpdf/ex-patch-list-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex b/macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
new file mode 100644
index 0000000000..7245dd39b8
--- /dev/null
+++ b/macros/latex/contrib/tagpdf/ex-patch-list-obsolete.tex
@@ -0,0 +1,100 @@
+% !Mode:: "TeX:DE:UTF-8:Main"
+
+
+%!! Obsolete example as it uses manual tagging of paragraph.
+% Check the newer version ex-patch-list for a simpler version!
+
+%This example shows how one can patch lists command
+%it is based on enumitem
+
+%It uses a command to end \item (\meti). It is perhaps possible to hide this command
+% inside \item/end{list}, but with nested list it is not so easy.
+
+% not really up-to-date, with paratagging one could simplify things.
+
+% Pay attention to casing. Li/LI, Lbody/Lbody are different.
+%no page break involved. So the example works in lua and generic mode
+\RequirePackage{pdfmanagement-testphase}
+\DeclareDocumentMetadata{pdfversion=1.7,uncompress}
+
+\documentclass{scrbook}
+\usepackage[english]{babel}
+\usepackage{tagpdf}
+
+\usepackage{iftex}
+\iftutex
+ \usepackage{fontspec}
+ \usepackage{luacode}
+\else
+ \usepackage[T1]{fontenc}
+\fi
+
+
+
+\tagpdfsetup{tabsorder=structure,
+ activate,
+ }
+
+\usepackage{lipsum}%\textheight3cm
+
+\usepackage{enumitem,xpatch}
+
+\makeatletter
+
+\newcommand\tag@enit@format@preset[1]{%
+ \tagstructbegin{tag=LI}%
+ \tagstructbegin{tag=Lbl}%
+ \tagmcbegin{tag=Lbl}%
+ #1%
+ \tagmcend
+ \tagstructend %end Lbl
+ \tagstructbegin{tag=LBody}}
+
+\newcommand\meti{% end of \item
+ \tagstructend %end of LBody
+ \tagstructend %end of LI
+}
+
+\xpatchcmd\enit@preset{\@firstofone}{\tag@enit@format@preset}{}{\fail}
+
+\setlist{
+ before*=\tagstructbegin{tag=L},
+ after*={\tagstructend}}
+
+% keys that overwrite \enit@format must be patched, eg like the follow
+% the font key should be patched in a similar way
+\enitkv@key{enumitem}{format}{%
+ \def\enit@format{%
+ \tagstructbegin{tag=LI}%
+ \tagstructbegin{tag=Lbl}%
+ \tagmcbegin{tag=Lbl}%
+ #1\tagmcend}}
+\makeatother
+% marking of the text inside the list can not be handled automatically -- one doesn't know the type
+% we use simple P here
+\newcommand\TAGP{\tagstructbegin{tag=P}\tagmcbegin{tag=P}}
+\newcommand\PGAT{\tagmcend\tagstructend}
+
+\begin{document}
+%I don't want to handle pagestyles, so set everything to empty:
+\pagestyle{empty}\renewcommand\chapterpagestyle{empty}
+
+
+
+\begin{itemize}
+\item \TAGP Ducks say quack\PGAT\meti
+\item \TAGP Marmots say something Parmotlike\PGAT\meti
+\end{itemize}
+
+\begin{enumerate}
+\item \TAGP The highest pass is the Col de l'Iseran.\PGAT\meti
+\item \TAGP The second highest pass is the Passo dello Stelvio.\PGAT\meti
+\end{enumerate}
+
+\begin{description}
+\item[ducks] \TAGP yellow\PGAT\meti
+\item[marmots] \TAGP brown\PGAT\meti
+\end{description}
+
+
+\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/tagpdf/ex-patch-list.tex b/macros/latex/contrib/tagpdf/ex-patch-list.tex
index d6485c86fe..30448c6a80 100644
--- a/macros/latex/contrib/tagpdf/ex-patch-list.tex
+++ b/macros/latex/contrib/tagpdf/ex-patch-list.tex
@@ -1,24 +1,25 @@
% !Mode:: "TeX:DE:UTF-8:Main"
-%This example shows how one can patch lists command
-%it is based on enumitem
+% This example shows how one can patch lists command
+% it is based on enumitem
-%It uses a command to end \item (\meti). It is perhaps possible to hide this command
-% inside \item/end{list}, but with nested list it is not so easy.
+% Pay attention to casing. Li/LI, Lbody/Lbody are different.
-% not really up-to-date, with paratagging one could simplify things.
+% It doesn't test nesting!
+
+% We are using \DocumentMetadata
+% This requires a new pdfmanagement and/or latex-dev!
+% Older systems should use \DeclareDocumentMetadata
+\IfFormatAtLeastTF{2022-06-01}{}
+ {\RequirePackage{pdfmanagement-testphase}}
+\DocumentMetadata{pdfversion=1.7,uncompress,testphase=tagpdf}
-% Pay attention to casing. Li/LI, Lbody/Lbody are different.
-%no page break involved. So the example works in lua and generic mode
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfversion=1.7,uncompress}
\documentclass{scrbook}
\usepackage[english]{babel}
-\usepackage{tagpdf}
\usepackage{iftex}
-\iftutex
+\ifluatex
\usepackage{fontspec}
\usepackage{luacode}
\else
@@ -27,49 +28,53 @@
-\tagpdfsetup{tabsorder=structure,
- activate,
- }
+\tagpdfsetup
+ {
+ tabsorder=structure,
+ }
\usepackage{lipsum}%\textheight3cm
\usepackage{enumitem,xpatch}
-\makeatletter
+% At first we add to the begin/end hooks the structure commands.
+% To avoid problems with nested paragraphs we force a new paragraph for now.
+% Real code should avoid that!
+\AddToHook{env/itemize/begin}{\par\tagstructbegin{tag=L}}%\par is needed to close the paragraph before.
+\AddToHook{env/itemize/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L
+\AddToHook{env/enumerate/begin}{\par\tagstructbegin{tag=L}}
+\AddToHook{env/enumerate/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L
+\AddToHook{env/description/begin}{\par\tagstructbegin{tag=L}}
+\AddToHook{env/description/end}{\par\tagstructend\tagstructend\tagstructend}%LBody,LI,L
+\makeatletter
+\ExplSyntaxOn
+%We detect is this is the first or a follow up item where we have to end a structure first:
\newcommand\tag@enit@format@preset[1]{%
- \tagstructbegin{tag=LI}%
- \tagstructbegin{tag=Lbl}%
- \tagmcbegin{tag=Lbl}%
- #1%
+ \str_if_eq:eeTF { \prop_item:cn { g__tag_struct_\g__tag_struct_stack_current_tl _prop }{S} }{/L}
+ {
+ %\typeout{BEGIN~OF~LIST}
+ }
+ {%\typeout{NEXT ITEM}
+ \tagstructend\tagstructend} % for the LBody/LI
+ \tagstructbegin{tag=LI}
+ \tagstructbegin{tag=Lbl}
+ \tagmcbegin{tag=Lbl}
+ #1
\tagmcend
- \tagstructend %end Lbl
- \tagstructbegin{tag=LBody}}
-
-\newcommand\meti{% end of \item
- \tagstructend %end of LBody
- \tagstructend %end of LI
-}
+ \tagstructend
+ \tagstructbegin{tag=LBody}
+ }
+
+\ExplSyntaxOff
\xpatchcmd\enit@preset{\@firstofone}{\tag@enit@format@preset}{}{\fail}
+%close mc from paratagging and reopen ...
+\xpatchcmd\@item{\box\@labels}{\tagmcend \box\@labels \tagmcbegin{tag=P}}{}{\fail}
-\setlist{
- before*=\tagstructbegin{tag=L},
- after*={\tagstructend}}
-
-% keys that overwrite \enit@format must be patched, eg like the follow
-% the font key should be patched in a similar way
-\enitkv@key{enumitem}{format}{%
- \def\enit@format{%
- \tagstructbegin{tag=LI}%
- \tagstructbegin{tag=Lbl}%
- \tagmcbegin{tag=Lbl}%
- #1\tagmcend}}
\makeatother
-% marking of the text inside the list can not be handled automatically -- one doesn't know the type
-% we use simple P here
-\newcommand\TAGP{\tagstructbegin{tag=P}\tagmcbegin{tag=P}}
-\newcommand\PGAT{\tagmcend\tagstructend}
+
+
\begin{document}
%I don't want to handle pagestyles, so set everything to empty:
@@ -78,18 +83,18 @@
\begin{itemize}
-\item \TAGP Ducks say quack\PGAT\meti
-\item \TAGP Marmots say something Parmotlike\PGAT\meti
+\item Ducks say quack
+\item Marmots say something Parmotlike
\end{itemize}
\begin{enumerate}
-\item \TAGP The highest pass is the Col de l'Iseran.\PGAT\meti
-\item \TAGP The second highest pass is the Passo dello Stelvio.\PGAT\meti
+\item The highest pass is the Col de l'Iseran.
+\item The second highest pass is the Passo dello Stelvio.
\end{enumerate}
\begin{description}
-\item[ducks] \TAGP yellow\PGAT\meti
-\item[marmots] \TAGP brown\PGAT\meti
+\item[ducks] yellow
+\item[marmots] brown
\end{description}
diff --git a/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf b/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
index c0e033318c..2b76c005a8 100644
--- a/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
+++ b/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma-luatex.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.pdf b/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.pdf
deleted file mode 100644
index 4b1ceb47ad..0000000000
--- a/macros/latex/contrib/tagpdf/ex-patch-sectioning-koma.pdf
+++ /dev/null
@@ -1,2134 +0,0 @@
-%PDF-1.7
-%ÐÔÅØ
-11 0 obj
-<< /MCID 0 >>
-endobj
-16 0 obj
-<< /MCID 1 >>
-endobj
-18 0 obj
-<< /MCID 2 >>
-endobj
-20 0 obj
-<< /MCID 3 >>
-endobj
-23 0 obj
-<< /MCID 4 >>
-endobj
-25 0 obj
-<< /MCID 5 >>
-endobj
-28 0 obj
-<< /MCID 6 >>
-endobj
-30 0 obj
-<< /MCID 7 >>
-endobj
-32 0 obj
-<< /MCID 8 >>
-endobj
-35 0 obj
-<< /MCID 9 >>
-endobj
-37 0 obj
-<< /MCID 10 >>
-endobj
-39 0 obj
-<< /MCID 11 >>
-endobj
-41 0 obj
-<<
-/Length 5594
->>
-stream
-/opacity1 gs
-/H1 /l3pdf1 BDC
-BT
-/F32 20.6625 Tf 59.528 690.672 Td [(Contents)]TJ
-ET
-EMC
-/Lbl /l3pdf2 BDC
-BT
-/F29 10.9091 Tf 59.528 653.751 Td [(1)]TJ
-ET
-EMC
-/P /l3pdf3 BDC
-BT
-/F29 10.9091 Tf 75.798 653.751 Td [(c)28(hapter)]TJ
-ET
-EMC
-/Reference /l3pdf4 BDC
-BT
-/F29 10.9091 Tf 470.797 653.751 Td [(3)]TJ
-ET
-EMC
-/P /l3pdf5 BDC
-BT
-/F29 10.9091 Tf 59.528 629.354 Td [(c)28(hapter)]TJ
-ET
-EMC
-/Reference /l3pdf6 BDC
-BT
-/F29 10.9091 Tf 470.797 629.354 Td [(5)]TJ
-ET
-EMC
-/Lbl /l3pdf7 BDC
-BT
-/F29 10.9091 Tf 75.798 615.805 Td [(1.1)]TJ
-ET
-EMC
-/P /l3pdf8 BDC
-BT
-/F29 10.9091 Tf 100.747 615.805 Td [(section)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 138.478 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 146.947 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 155.416 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 163.885 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 172.355 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 180.824 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 189.293 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 197.762 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 206.231 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 214.701 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 223.17 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 231.639 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 240.108 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 248.578 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 257.047 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 265.516 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 273.985 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 282.454 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 290.924 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 299.393 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 307.862 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 316.331 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 324.801 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 333.27 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 341.739 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 350.208 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 358.677 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 367.147 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 375.616 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 384.085 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 392.554 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 401.023 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 409.493 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 417.962 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 426.431 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 434.9 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 443.37 615.805 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 451.839 615.805 Td [(.)]TJ
-ET
-EMC
-/Reference /l3pdf9 BDC
-BT
-/F29 10.9091 Tf 470.797 615.805 Td [(5)]TJ
-ET
-EMC
-/Lbl /l3pdf10 BDC
-BT
-/F29 10.9091 Tf 100.747 602.256 Td [(1.1.1)]TJ
-ET
-EMC
-/P /l3pdf11 BDC
-BT
-/F29 10.9091 Tf 135.458 602.256 Td [(subsection)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 189.293 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 197.762 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 206.231 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 214.701 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 223.17 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 231.639 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 240.108 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 248.578 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 257.047 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 265.516 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 273.985 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 282.454 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 290.924 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 299.393 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 307.862 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 316.331 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 324.801 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 333.27 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 341.739 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 350.208 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 358.677 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 367.147 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 375.616 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 384.085 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 392.554 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 401.023 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 409.493 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 417.962 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 426.431 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 434.9 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 443.37 602.256 Td [(.)]TJ
-ET
-EMC
-/Artifact BMC
-BT
-/F29 10.9091 Tf 451.839 602.256 Td [(.)]TJ
-ET
-EMC
-/Reference /l3pdf12 BDC
-BT
-/F29 10.9091 Tf 470.797 602.256 Td [(5)]TJ
-ET
-EMC
-
-endstream
-endobj
-12 0 obj
-<<
-/Type /Page
-/Contents 41 0 R
-/Resources 40 0 R
-/MediaBox [0 0 595.276 841.89]
-/Tabs /S /StructParents 0
-/Parent 44 0 R
->>
-endobj
-40 0 obj
-<<
-/Properties <</l3pdf1 11 0 R /l3pdf2 16 0 R /l3pdf3 18 0 R /l3pdf4 20 0 R /l3pdf5 23 0 R /l3pdf6 25 0 R /l3pdf7 28 0 R /l3pdf8 30 0 R /l3pdf9 32 0 R /l3pdf10 35 0 R /l3pdf11 37 0 R /l3pdf12 39 0 R >>/ExtGState 1 0 R
-/Font << /F32 42 0 R /F29 43 0 R >>
-/ProcSet [ /PDF /Text ]
->>
-endobj
-47 0 obj
-<<
-/Length 13
->>
-stream
-/opacity1 gs
-
-endstream
-endobj
-46 0 obj
-<<
-/Type /Page
-/Contents 47 0 R
-/Resources 45 0 R
-/MediaBox [0 0 595.276 841.89]
-/Tabs /S /StructParents 1
-/Parent 44 0 R
->>
-endobj
-45 0 obj
-<<
-/ExtGState 1 0 R
-/ProcSet [ /PDF ]
->>
-endobj
-49 0 obj
-<< /MCID 0 >>
-endobj
-51 0 obj
-<< /MCID 1 >>
-endobj
-53 0 obj
-<<
-/Length 157
->>
-stream
-/opacity1 gs
-/H1 /l3pdf13 BDC
-BT
-/F32 20.6625 Tf 59.528 690.672 Td [(1)]TJ
-ET
-EMC
-/H1 /l3pdf14 BDC
-BT
-/F32 20.6625 Tf 83.699 690.672 Td [(chapter)]TJ
-ET
-EMC
-
-endstream
-endobj
-50 0 obj
-<<
-/Type /Page
-/Contents 53 0 R
-/Resources 52 0 R
-/MediaBox [0 0 595.276 841.89]
-/Tabs /S /StructParents 2
-/Parent 44 0 R
->>
-endobj
-52 0 obj
-<<
-/Properties <</l3pdf13 49 0 R /l3pdf14 51 0 R >>/ExtGState 1 0 R
-/Font << /F32 42 0 R >>
-/ProcSet [ /PDF /Text ]
->>
-endobj
-56 0 obj
-<<
-/Length 13
->>
-stream
-/opacity1 gs
-
-endstream
-endobj
-55 0 obj
-<<
-/Type /Page
-/Contents 56 0 R
-/Resources 54 0 R
-/MediaBox [0 0 595.276 841.89]
-/Tabs /S /StructParents 3
-/Parent 44 0 R
->>
-endobj
-54 0 obj
-<<
-/ExtGState 1 0 R
-/ProcSet [ /PDF ]
->>
-endobj
-58 0 obj
-<< /MCID 0 >>
-endobj
-61 0 obj
-<< /MCID 1 >>
-endobj
-62 0 obj
-<< /MCID 2 >>
-endobj
-64 0 obj
-<< /MCID 3 >>
-endobj
-65 0 obj
-<< /MCID 4 >>
-endobj
-67 0 obj
-<< /MCID 5 >>
-endobj
-68 0 obj
-<< /MCID 6 >>
-endobj
-70 0 obj
-<< /MCID 7 >>
-endobj
-1 0 obj
-<< /opacity1 <</ca 1/CA 1>> >>
-endobj
-72 0 obj
-<<
-/Length 595
->>
-stream
-/opacity1 gs
-/H1 /l3pdf15 BDC
-BT
-/F32 20.6625 Tf 59.528 690.672 Td [(chapter)]TJ
-ET
-EMC
-/H2 /l3pdf16 BDC
-BT
-/F41 14.3462 Tf 59.528 649.367 Td [(1.1)]TJ
-ET
-EMC
-/H2 /l3pdf17 BDC
-BT
-/F41 14.3462 Tf 88.826 649.367 Td [(section)]TJ
-ET
-EMC
-/H3 /l3pdf18 BDC
-BT
-/F42 11.9552 Tf 59.528 624.619 Td [(1.1.1)]TJ
-ET
-EMC
-/H3 /l3pdf19 BDC
-BT
-/F42 11.9552 Tf 93.89 624.619 Td [(subsection)]TJ
-ET
-EMC
-/H4 /l3pdf20 BDC
-EMC
-/H4 /l3pdf21 BDC
-BT
-/F31 10.9091 Tf 59.528 604.026 Td [(subsubsection)]TJ
-ET
-EMC
-/P /l3pdf22 BDC
-BT
-/F29 10.9091 Tf 59.528 583.433 Td [(a)-331(paragraph)]TJ 10.847 -13.549 Td [(x)]TJ
-ET
-EMC
-
-endstream
-endobj
-59 0 obj
-<<
-/Type /Page
-/Contents 72 0 R
-/Resources 71 0 R
-/MediaBox [0 0 595.276 841.89]
-/Tabs /S /StructParents 4
-/Parent 44 0 R
->>
-endobj
-71 0 obj
-<<
-/Properties <</l3pdf15 58 0 R /l3pdf16 61 0 R /l3pdf17 62 0 R /l3pdf18 64 0 R /l3pdf19 65 0 R /l3pdf20 67 0 R /l3pdf21 68 0 R /l3pdf22 70 0 R >>/ExtGState 1 0 R
-/Font << /F32 42 0 R /F41 73 0 R /F42 74 0 R /F31 75 0 R /F29 43 0 R >>
-/ProcSet [ /PDF /Text ]
->>
-endobj
-76 0 obj
-<< /Marked true >>
-endobj
-6 0 obj
-<< /Nums [0 [ 10 0 R 15 0 R 17 0 R 19 0 R 22 0 R 24 0 R 27 0 R 29 0 R 31 0 R 34 0 R 36 0 R 38 0 R ]
-1 [ ]
-2 [ 48 0 R 48 0 R ]
-3 [ ]
-4 [ 57 0 R 60 0 R 60 0 R 63 0 R 63 0 R 66 0 R 66 0 R 69 0 R ]
-] >>
-endobj
-7 0 obj
-<< /DocumentFragment /Art /Aside /Note /Title /H1 /Sub /Span /H7 /H6 /H8 /H6 /H9 /H6 /H10 /H6 /FENote /Note /Em /Span /Strong /Span >>
-endobj
-8 0 obj
-[ ]
-endobj
-9 0 obj
-<< /Type /StructElem /S /Document /P 5 0 R /K [10 0 R 13 0 R 48 0 R 57 0 R 60 0 R 63 0 R 66 0 R 69 0 R] >>
-endobj
-10 0 obj
-<< /Type /StructElem /S /H1 /P 9 0 R /K <</Type /MCR /Pg 12 0 R/MCID 0>> >>
-endobj
-13 0 obj
-<< /Type /StructElem /S /TOC /P 9 0 R /K [14 0 R 21 0 R 26 0 R 33 0 R] >>
-endobj
-14 0 obj
-<< /Type /StructElem /S /TOCI /P 13 0 R /K [15 0 R 17 0 R 19 0 R] >>
-endobj
-15 0 obj
-<< /Type /StructElem /S /Lbl /P 14 0 R /K <</Type /MCR /Pg 12 0 R/MCID 1>> >>
-endobj
-17 0 obj
-<< /Type /StructElem /S /P /P 14 0 R /K <</Type /MCR /Pg 12 0 R/MCID 2>> >>
-endobj
-19 0 obj
-<< /Type /StructElem /S /Reference /P 14 0 R /K <</Type /MCR /Pg 12 0 R/MCID 3>> >>
-endobj
-21 0 obj
-<< /Type /StructElem /S /TOCI /P 13 0 R /K [22 0 R 24 0 R] >>
-endobj
-22 0 obj
-<< /Type /StructElem /S /P /P 21 0 R /K <</Type /MCR /Pg 12 0 R/MCID 4>> >>
-endobj
-24 0 obj
-<< /Type /StructElem /S /Reference /P 21 0 R /K <</Type /MCR /Pg 12 0 R/MCID 5>> >>
-endobj
-26 0 obj
-<< /Type /StructElem /S /TOCI /P 13 0 R /K [27 0 R 29 0 R 31 0 R] >>
-endobj
-27 0 obj
-<< /Type /StructElem /S /Lbl /P 26 0 R /K <</Type /MCR /Pg 12 0 R/MCID 6>> >>
-endobj
-29 0 obj
-<< /Type /StructElem /S /P /P 26 0 R /K <</Type /MCR /Pg 12 0 R/MCID 7>> >>
-endobj
-31 0 obj
-<< /Type /StructElem /S /Reference /P 26 0 R /K <</Type /MCR /Pg 12 0 R/MCID 8>> >>
-endobj
-33 0 obj
-<< /Type /StructElem /S /TOCI /P 13 0 R /K [34 0 R 36 0 R 38 0 R] >>
-endobj
-34 0 obj
-<< /Type /StructElem /S /Lbl /P 33 0 R /K <</Type /MCR /Pg 12 0 R/MCID 9>> >>
-endobj
-36 0 obj
-<< /Type /StructElem /S /P /P 33 0 R /K <</Type /MCR /Pg 12 0 R/MCID 10>> >>
-endobj
-38 0 obj
-<< /Type /StructElem /S /Reference /P 33 0 R /K <</Type /MCR /Pg 12 0 R/MCID 11>> >>
-endobj
-48 0 obj
-<< /Type /StructElem /S /H1 /P 9 0 R /K [<</Type /MCR /Pg 50 0 R/MCID 0>> <</Type /MCR /Pg 50 0 R/MCID 1>>] >>
-endobj
-57 0 obj
-<< /Type /StructElem /S /H1 /P 9 0 R /K <</Type /MCR /Pg 59 0 R/MCID 0>> >>
-endobj
-60 0 obj
-<< /Type /StructElem /S /H2 /P 9 0 R /K [<</Type /MCR /Pg 59 0 R/MCID 1>> <</Type /MCR /Pg 59 0 R/MCID 2>>] >>
-endobj
-63 0 obj
-<< /Type /StructElem /S /H3 /P 9 0 R /K [<</Type /MCR /Pg 59 0 R/MCID 3>> <</Type /MCR /Pg 59 0 R/MCID 4>>] >>
-endobj
-66 0 obj
-<< /Type /StructElem /S /H4 /P 9 0 R /K [<</Type /MCR /Pg 59 0 R/MCID 5>> <</Type /MCR /Pg 59 0 R/MCID 6>>] >>
-endobj
-69 0 obj
-<< /Type /StructElem /S /P /P 9 0 R /K <</Type /MCR /Pg 59 0 R/MCID 7>> /ActualText <FEFF0061006200630021> >>
-endobj
-5 0 obj
-<< /Type /StructTreeRoot /K 9 0 R /ParentTree 6 0 R /RoleMap 7 0 R /Namespaces 8 0 R >>
-endobj
-78 0 obj
-[565 489.6 565 502.5 336.6 550.8 565 259 289.6 534.4 259 871 565 550.8 565 565 374.3 422.3 397.8 565]
-endobj
-79 0 obj
-[312.4 562.4 562.4 562.4 562.4 562.4 562.4 562.4 562.4 562.4 562.4 562.4 312.4 312.4 874.8 874.8 874.8 531.1 749.8 742.9 746.3 718.6 808.8 671.1 639.9 749.8 786.8 305.5 527.6 774.1 608.6 974.3 786.8 830.8 715.1 830.8 724.4 624.8 768.3 764.9 742.9 1055.3 742.9 742.9 687.3 339 562.4 339 687.3 874.8 312.4 539.2 578.6 499.9 578.6 510.9 343.7 562.4 578.6 266.1 297.4 547.3 266.1 891 578.6 562.4 578.6 578.6 383 431.1 406.1 578.6]
-endobj
-80 0 obj
-[319.1 574.4 574.4 574.4 574.4 574.4 574.4 574.4 574.4 574.4 574.4 574.4 319.1 319.1 893.5 893.5 893.5 542.5 765.8 767.2 766.5 733.9 830.3 681.6 649.7 765.8 820.1 320.4 543.1 799.1 617.8 1011.6 820.1 840.5 734.6 840.5 740 638.2 776.7 793.6 767.2 1086.3 767.2 767.2 702 348.3 574.4 348.3 702 893.5 319.1 550.7 590.8 510.6 590.8 523.9 351 574.4 590.8 271.7 303.7 558.9 271.7 909.9 590.8 574.4 590.8 590.8 391.2 440.4 414.8]
-endobj
-81 0 obj
-[276.4 497.2 497.2 497.2 497.2 497.2 497.2 497.2 497.2 497.2 497.2 497.2 276.4 276.4 773.2 773.2 773.2 469.6 773.2 745.3 704 718 759.2 676.4 648.8 780 745.3 358.9 510.8 772.9 621.2 910.9 745.3 773.2 676.4 773.2 731.6 552.4 718 745.3 745.3 1021.3 745.3 745.3 607.6 276.4 497.2 276.4 607.6 773.2 276.4 497.2 552.4 442 552.4 442 304 497.2 552.4 276.4 304 524.8 276.4 828.4 552.4 497.2 552.4 524.8 386.8 392.3 386.8 552.4 524.8 718 524.8]
-endobj
-82 0 obj
-[584.9 584.9 584.9 584.9 584.9 584.9 584.9 584.9 584.9 325 325 909.9 909.9 909.9 552.4 779.9 781.2 780.6 747.4 845.5 706.8 674.3 779.9 822.5 326.3 553.1 813.7 641.8 1017.4 822.5 868.6 748.1 868.6 759.9 649.9 803.6 801.8 781.2 1106.2 781.2 781.2 714.9 343.9 584.9 343.9 714.9 909.9 325 562.8 605.7 519.9 605.7 522.6 357.5 584.9 605.7 280.8 313.3 573.2 280.8 930.7 605.7 584.9 605.7 605.7 400.3 448.4 422.4]
-endobj
-83 0 obj
-<<
-/Length1 721
-/Length2 14150
-/Length3 0
-/Length 14871
->>
-stream
-%!FontType1-1.0: SFRM1095 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv@vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ecrm1095, tcrm1095, larm1095, lbrm1095, lcrm1095, rxrm1095.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Roman) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/Weight (Medium) def
-end readonly def
-/FontName /HHSFZO+SFRM1095 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-188 -320 1445 942}readonly def
-currentdict end
-currentfile eexec
-ÙÖoc;„j—¶†©~E£Ðª+ÐÎ`U+Ö1×;ï[iÄhd_äíòT w Ïb=àìßIòµ"ae æËÌŒ!ˆ]Öø¥#ªg~®ÝúQ¡ù±ˆ^îVmcNï‰ñt™ÚÙ‚P*Ì4›žê®Jq§=G1Œ`¨ºÁÞØÓônG)]'šZþ eâ+­Ðh…¢îb?øáÙ‡ ƒà ï%_h¢©pä‡Yó5(¸9ßÔ¹-ðH$“…-:y¿nK”ˆ—" )ž€ˆcff,vrG+ø@‚¹îÇ)÷
-`É{³/}…¦*Dé @VÙ´²ÿ:Ix`(ã]Þ¼- óÿ.a1¬ÕÅ—/ÔO)ÿý@0p<n-„¤†fÖe Ì¸=yêrB<S¸‚'Zì±’ðÄá–ÕZ¿µ¥yÇ×DÞX㣢‚Ò}' MZêàèã‰c|Œ-5,»fôש ¦39ÖêÙ¦4ئ© y«5Íè+½²: ÷g}› `)ÕH«@‹ŒØ æÒÏÈÉ¥R/™¹{§xì}ìPzH³»Šá2ØLÉK¬¼$Q ™"‡ÔâÖÇjšçÈGÏœý…¢d;Î'w›‹À-®+=Áç0Ž¯"eÍ×÷<a{ÇÝ6
-o«ï—ž–·ÄK‰Ö^ðË"½]nºpYˆãÏ\°NCEù,ïpJó´ß˪ëÑÚ»¥–ÎW Ÿ¢·GB¤°Ëd·SQ²isÒúá;Îå®ÀÕæ…—¼d„É··z—Ýái”R?áXÝ<ÅænJ´gD
-§ŠAäµw€ŒÓËî êkæR›+-µ]íúÛûœ&9ƒZeÿ"J{|+<–+rŒ3Š§ÏùK0ÛDwÕ( y¬žVÀÌôR±§èfì‡òÛ¢O‘ùžűÛ8ËìEFŒ¶xÅxÆû~ l€áüâãϧÖôA&Û«+û|ç~n0+õ¦«=K¢¦9üʧ)
-ÞC*¼j
-Ê¢×ضʸÒÑç
-¼Fo¼?a…pt#á”Û`¹ J68è%„`oÂ
-À1=31ý#¬€™Qtõ†PíÖú ¼#YªÃ?®Ó>çIѹ׵B­@™È=ßTÓLßÚXœëá¢+ á2‘*æ"Å –V÷&Ðu‡¦NQ›âàXKë¥f¥Hñõît*ø±‚ßNx —sHí*…J1ÇK¯l<éåOFxgŒt#LŒÂéŠÚŸçl&!^¢cn™Ô˜,öÒ·eá4I>ôa½ÓåªÎ Cþ^ìªBò
-Å׌Rò]îï;{Ü»å¼bâ9õ·¥|4A_Ãcؤ1tÊ-áÌóbò0Úáq«ó+ùE0æL‰Œ f1æ¸ÁXŸ‹Œ†¡wcæÀÚûÄUÊãç׌?3þ¶BŒæ¡ôÄ0õ ãÂY>Ò‰mûÓ'D·&½©G;GûÌñÞwV![Ř¥Ò­ckdËã‰muV~w¨¶ô^W•ú•cÿžŠž§ Pes™oÿüšph>5“Tˆ&^W×UÛ‰ü‘£)ß
-Ç—­ð¿úÍçNÓhŸSHWd<ÁÕ]"ßìŠ}[w"L9 À!0µûG7»!õìÆl_ÒÆg«×’.V͇b>*[¢ß
-®ãVÛ8hnô^šõ—å$wî8"†é.±²ó¢"~’ bG!eIÞßxJÐuÅæ[Q[¹HœÐ¨÷Q&KÜÆp­éû¢³Ëì¸ü5ùd %f
-°Í`R¤±^¶áÍg ²)×aŠ„ŸlÛ C³Y 5”Œ÷ÃŒGŒÌ–)¤Õ á¦#“ò˜|íÒF„rHß Yß\¤ëI“ÍìµÄSÂÞ§ä)dPšbXOPʶ|b¢Dý,Õñ<ä­ÔqU¬¿…´L­QzÜýÜJXW€Ð!wòðˆÕÉSÂh×ïnûÈÏ BdcÏPòÄ0õ ãÂY>Ò‰mûÓ'ïe’HUDžÑŸø£Ÿ6D{ƒšz˜“r#Æ}—ÌÀq]`èÑœd !že¬a"\ÿ9™øÎE9D¿ÿšèðû¤*ªR¢1ÿ×Úøÿ[6•ŽïŒgw}–Ï°@8Ã
-*
-†sˆZd<÷»ƒ"ÂÊìæÞsX·AÖyõtü™¦`¶ve
-½eºË|r5ÿ|7Æè*
-æ”ìì}¹·V!Š¼¯PFqÚ:b?`×2ŸÿĦ9Ò¾ . Ac¢ BxwœQz ¨6ä´ŠYûº(Uªbâ`ؓȇºç·s‡vJô[ÿ’Ž
-v~
-ušè@›5/†V_Í-Š‰­ëô/üÚ^^Çd™ÞHZ²ZVX¨Ô°¦GBãÑ¢X
-%¯Ùzõ…ƒ…"Q•Íų¦oÈŹDEZ‡YìG¯’›¤qlP:! e”V³X¡ˆº¤~Œ[ßl$3j‘ Y XU}ù6y€~^yð°OOy Â,I×Íìo\¾µo“7õ˜¸WQ¸]fÿÝœÅÓ?÷±þîÈ:uEYRDñ÷|†IMJ5wÒï±t€Ð(´Ú•±›L)ÎHkü˜«ÞÔ‰ªqXI[0u¤8£Ž¨lÆ@V6Æ2N$é*,‘!‹9÷4&öÔûLÒ¾!ÿ Ø £ö"7·øo$ò?i[ÏY˜˜¨Â>9Š®åiuý¡ºe‚ð!©¿H òèð(‡Œds·,çÒ3'1ô³÷ï[Ížéì¨Lÿ̈Û<£!^•ˆ§…PÏâhx‚ÓÏá¤&ž^@Ý¥ú {‹~!Àî<Ù†`š¿:y&_a5Tì¿ó XÏ2zzH€Ë+ê3­Ú–’A8îG”?Où”?îŠÀMl¦³Ì
-¥´
-ÉF•?½Ä5gHïñ‚3Q›ñ‰±ɼe“¥Üðè˜'i7&9¬öûY+ÒBI'o,l686hÛ?µc‹¤)ðCâT“rñªH!7¶Ýa‘=1ÑÌawsÿÀcÞpDHaÐÌKÒR6<}”ë¿Ä¥[ê/ÂÒUä¦Ø°ÊÅ3qÝЀB‘JÉŒ2äWâá"`6Gí‚1/CPuåŠY§<³ƒä$W²æç8é¥6%,ÌHÌ9ðqï«y H3pïë†W¨z"Ø#Þ\t†¯K6=k¨
-ç?ìÙ”m?º
-»EâKþ=»Á³Æðòie~hAC½VöS' BZÔ"Œ¡,-ìÙCþ ÷ç`{Fö)Ž ЂìúÄ_I$Lb‡{æa®þpyçÐsÌ \[4·4È7?TÐçMdê½~Î$%ö, ogASûi×¾´%ýGAn­@ç îs¾´ y]è´p‹q› !ªˆ”ldKžnþŠ¨r¼?¢ \"úÿ:.ÁƒÝZˆ ¸¼ÛÁ¬‰££t¤é&uqxN*ZjR’¬T´*dßr„· 5߆¶/Få`ê¾¢)ªº-Iѯ¸°°;a7±hE?¹ñàbV~B4U×°¶g>6jã3ße à úæ‚÷7a0U
-Ëâ1纷â¢òpN8íY‡!¸ø7¡_ð3¤)¨ò”o^†ÅZ@]_?“±ÒÄUÊó“š•'Õ p̬î{uAõ"Éo%\–gÝ7˜„xâZõ3g€ŸVžüŸáU±„¬?©™8£"•¼_î äa&ò³wÄá l’­¡ (ÆØ‘ iÉ$«k"ù:nÞ2X²m*ê¹QÿÕŽI5Wÿ0¬üQ胛÷œ/\à¤#¢ ä‡Ò¡†·¨uù“šõ9ù3«ZDª ØQx$
-ajÍé KrÄòÝò ±¼6JàcZà£Á|‚ÿÔ{Ãy7àW °Å>„ ÂaD¦ÙS36–‰
-Xêâ0Ú×}˜«!3šðÇHe Ý65+îýo
-Ø.ó+Õ>¿Ç—ÜÄsØPÏ%ªgì›ÀwØe7| T rXL$´bζý&¡
-îr>xóÏz:ñ\÷iˆ»öø:VaÍ ‡…Çk z‚â¶ï¦ÍC~S~˜‘öÔÍÀù§¯‡õSßƾ~ŒðÀ)ññ¼¬Ú¯µ]•úù›³1KÖ¿ªŠ
-êód®L€å`|ïÃVcÀH)>}Âz4Ssh–»‘§ ùc*Àb aŒéÅ¢F§§ð+ržî€—¤¢‘\7îö±™wV{ÔÚ8ŒäRlœGÑ‘¡ßæPw=î °„K”ßÉ'Ç‘€ïw ºÃ
-¹î¡æëÆØ¥€n;¹üu˾°•#S²o ÝÒ¦d-®¢.Ø n¡§Lš›pÖñ¬%÷N<ifžj,Á
-™(‡½ÍºCZèß®ßÚCÐ>"sæéd±Ü~¤ËÏ_{I…¢—<ìi_Ý!J/Íñ7þx飠5x«uu`s¸_èzØà9¡JnGÀ$k 2³'Í& ÁTSù’×¾!Êi4«1•ÒøBÛ¨“ŸÂš}:Ž"ékÓç}Ðß©f&'ÚÚ‚u" Øâ2Þ¹•3CÕÛ{ÉÙ „…~¡´…á)¾Åª3­zF!—¨Œ+éÍJ8Ÿ’
-ŸôwSÏZÀS;ÏññVÀe J “Jójüg²¥¡‚x}òZó°'
-¢«bGƒIß3‹OWÓ r’NAc,ñ[@Ò‹N7Ф’<½á,<}îo®ê@µ¤‘rWû\ÜñŒœf©v«Ÿ=ÒŠA Œ»=bù…†SÇkñêþ•Ó FCr—ñy.GóÜ­áÙŒ`]§ø”(x»¹ß-ÂÌN²ëœ’åÁWœ±šò2¸ºk£†!îBˆÝh•Ëøù³VWÐ@?,¼˜[-¶ Ë^„`±¢ü{¾pÿ³¬ Û¡—9ýPP,&•I­6Š`Íf㩹uKûoÇ´°9K½Üʳîïybüÿ_mŠñŒÀý㼎ô5Ÿ+?sV«â
-‘ä0ØC± 5î;{ƒÝ%+&¿°ve ÒN%3Í]MáRhYDT´{Ê]N‡ÞãðÕÈê=».\Äoü!€…ú—þj‡®X]§V×>MšŠ9ZôɃS!DcÐSYl‰1Œ•W]fðö
-Óýí¢KýDîßïÅÞ{Óý6s¥H¶ ^S˜¯€ ¤´UÐbÓ˾ÉÁ]¤/ðb|¸Ø]ØhcpR)3qK0!a)d³ ßM§æý·`ëÆ®SÉs"¢ßHzSúLg>YïÉt¼ÂŽ
-ý–ì¥ìägÛ5g i"; Zuè»Ãÿk=V~Ó‚µ¯Žè-+òìµ †ÏqlhUMe$uqˆáPé ˆ4 ª<kÁÅ«[{+S{S Jã)ÕE..µêq÷ZÜJêÿj¾£»ÂÃ&@LñÞl”‚4øƒª€LÈ-0Ù³V<«5‡ßçÜrbY)Œ ó[îpÁ[,ÂãõeÄÅ´NhÌyeõ§,Œû©É¤K2–TóC?-=dCÖÛôÀÇs:h T¿~g™XžÝµ¾k«¥n°Xwø£h÷&{¡iÙøòŒµì¢^É9z†Š^¬I5ç4#¹OàÁ&eI&«fß»ŒdMIo«õ8‘/Þ„©›~]R(+ÌÔ¼æAócUÆ#”†àÝÐKQÚ¯(]öµÍ'±*û¿‘Oƒà¯·øòRìpR~$¶bë°.@÷%ñx¥Áa¶œŽYRR=D7LDA¼£=A˜Ñd#¯†ËSÂÞ§ä-¿%ˢ݅Œ£¦ºõðS0¢µÇœœoÊp¢"Q¼Ës%9±áVýéäxz3w(Ó_›/롘çydqEæµHDØd()lF§}ÿ/QCôâ4§Ô|ƒ»É*œ]Zo†,‚^ˆoJõË·ÀÄ<gÿ×7{|ó˜Tþ`´=!ºzEò™‰Š¡þÌ?Ź@®…ÜEÑñ(ÊAx|,&
-»Ç탲ƒÜܯ&–x‚èñ:±èÓOÀ;#ídÀ öŽ³ÛxUÔón]#\HËÃ>dCò|u*XÈ ¦ç‘=¤±W¶ZL{ %…fÿáýçlJ~r»ÕÚv‘H
-àÿ‰(ÆiG‚ù¦Y½hvOú0éWcߨ|B¬¡M#³# L+ñïôG‚è,bºáäD=4Ãâœ5ä• .—UD¤£qº‚ˆ‘'•Ê)ã[ò~ÿ¾Ê&) `û(×Ø5­?Õ±JÆ:ŸAýá `¯ÈöŸ‡e ªdWcÄ–·ÄK‰Ñ@§æ«UÙ€;µlbšd`+…CŸþ½àIù)B£Û&é"&’1d»1˜iKkÝ5NänÔ<¿ìë=•ð ê¹dÃþÇÉø p~+ÓØ£
-̶Æá&"]£éq°êÈU!´Övj+Mo¼Åo¨TiÓuŠ*
-%</BË™U×”rV@ik7 ½›¥7=…Rƒ{fbÿ!còBâx/íJÞj'Û>N¸ÓWÌTòs9Þ6õÛ¿z‡ Ò?…¿(&Bëù¼t< º¡$=¬–=å›=Ìp˜ê‡ÉzüSüùFú´ 2ŽÖœÚ/ ¿\‹8[ÝŒCE FÍ¿FfG•öø›øPbû€v<JëYᨉ6¸tL™¢Ô†
-Aócl‚ä!Òí{v\ïn@ü!ð)%oÓ2§qXb½%·“
-œiÎ@šÚˆ€T—>dLËì½ex6dñî¿Zh– ÄpÉâñˆ³¦"K‰²¨ {™E’{²f¹è©ŠT«ikIʵ‰¨†Eù9鮫…Ò}OJÈŠâ*Q[0 Úx†0üÐÂödŽ,#]9–|ô‚(7ö²‘9›n‰.<‡ô Ñóm`'c°7Þ;Bø´÷µüä$ JBšé7hã›üü Ýûà–CºÀ1V­”àÚuR«èØ× ¼VïÑp`ITPí…Ã÷ûã{ÓN¿vžƒÒêçEdªMö×üßõÊOrPNx/VÏ%RÞ‘epö2=@Íéë«“sœæXŒDoÚÚÝ€ó:dØ›k,æ¥çóæ$Ãì½NýI°£‚u˜Ú¿¸\‡¿tI‘$¥)q‘°­»½Åkçz~óÆ7LVOo&‘Kûq‚ÿá p_[QbÇ­Fln8[aããê€Ú¤[$Ë8‚qŒøY9 Ÿ õè{Û EÞUðóVô.y‰s·Gß‘Ì3Çm˜À½Cåp0•W ¹xYŒëdöcTÿVE£“­oû»Èêeêz.nw¬ˆ$Š3
-×Ëã8QV‚ád¹Ô'òÍ3`º9ÌH¿¢üvJ7)o ÐÕ&¶°a
-ªùútÿ4©2—úM§UOÔ(} õ¥Š3^ä°‚Z³Ê*3s˜Zý¦Ü#l{¹i±[‰yžLÖnª0ëù8/ˆ‹2qL¯È•Ô±]Eµ¦ÿBã[ɳkZýøº‚o8 RÛŠŸŽ
-©×j=¨¶p^ü*÷†^£)÷*Œ–áÚ¬m¶P³°:7ýSYác2×g%'ü&%Þ¥Œ1¸?2À@‘jE±3éôtø˜þŸlã!Ã9
-ÏU9¸>¶åŠc”LMù?Œœ#ø{zf¯é„7|IwîÝè«ŽéCå.Vö¹/è×~Ùež%YO•Y#
-æ׉:)Ð ‰Jrv5W¢(#ÅÅѬÃðÏ‹]—¾—ð½õ€ˆ¶Ö ;ÙÒs"c†åùm@ºI¹Ëª'+>*ª¥¹?­ˆ²ØnB29Qåγ¨P(ÊÓMŒ|_‡IÎb©.ÅN¸ŸIVªÄ»ã?~$ ~¼L<QµüŽ‰"ïöBœÔQÿ™ä]ê9÷A x)4I!ƒIƒš µ{×lÛÛ¯ôƒç?^XL{O“pa K*Xà¤ãûž~ƒý¾ü¨%“d„™­Cê|÷0!+zMë8K¬uR)¯Tuz˜ôÂý€†—½}£Ð€¦,€'ë˺ãï¯vp;"ûË”§á¤‰ÏÇó‘iÿ˜Ã’§s.ð2 gpX=Zx4ZVǺ-O•Fyù—…£“ü3âN]IÌ>É× ¾•0ll 2}vïW•¹Gjæ¾?Ü®š£fÝßËxÿÀìƒÏ»ã©~\Nà‘]ïtØR×)ÔU“·Q—H“D{ªÕÃA›ý–sl33læ'`˜o7V¥“³û¸
-8
-YÅo—eé$…í{S™Â·$`è™gWÛ~„û_ïÜù9ã…Û9ku¦O‡WúÎ"iî‘ Ö= Âä®l}¨úyz}Qú}xÕi™hÊ¢ÂóBaËiÆnâ ÞúX¢UAž Ê¢\eN¦ðÍVЀÓ._ øeúö›/'#îÙŠ~ñ"íóÏ!=Re
-áŒ!GQMËyÔæ ¹jzÌÁœ··ßg&}Þ µe÷Hùa]ðД":gûDZ°æú3•‹.â…qw"wSF©Ë·ý:TH“À­YäÙ¦ 6"†¢ë6øûÔ}öí'ˆÞ>ÔÚöO–K=O³7ôYI¥üGÒÿ®VEÕ »ž†Ãc'!ñFWù%áÞöîzERfÊŽ\)ñoÆï“¿´¨:šô¹|>Ö*ä*øS+“óg0ž ˜UÍ‚™Ç…½\O#pŸEs@xœ%Тû\ ?§[Ëß´$È£ÂÚì'Îj6³¥ŸÜEmÁ ˜¦™™J½ kôcÃÕl颳zuÛîNôÞµXÛŸ)zuE›oÇœ‹%v{ Äìí†9-5¬ÿ¦;®÷‡I®¥Ìç–²^Çjtbí¹.0JîÅ;FxRÙÉ#ãa@j‘±„—º`¸
-9þ¥J5~@•üÝK€m*‹öÓ Õ#Ø°ÖÎ>.çbÜyÖ*y­<Bó,\GJñ°ÓN,lVZ$/‹¾6ØG~¬n0FHû©4^JÕª=ã&€˜ãç‚•·Âˆ¬l÷ím14*Ý»rqE‚ÏkX7smèx½øf×AC½Ç‘É|€·Š)×q:-Åã«”‡zÅÌ
-)“ÑŸ Å -ÿ*#—~~ùŸWÛï Ínùw§ÝÊK¼¸ìN½°NZªÀ¬¯â¶6‘ñyÿÆh!ª¹%¥`VÆ9P˜¤f¡îˆ
-9Æ NñQ‚¥iF3¦Ç·¿qÉdÑSÛgx~êp€èá#-¯‚xÈËNS‘
-€ÍëöÖ´Ä݈gVL Š”õîÇ)m&V-yž[µÞÍ8GÚ:û %`Š¯wèl«*gZƒæi2;X¥ŒíJ •tZjkÌIÕ3H
-ä…D¤ pXëاÈù¿åfZ´RªÁ‚ ‹Öl¾ð·8Ás먴êõup{†ùM+üÈ äTky€µ ±SB vR¸¶íu3
-endstream
-endobj
-84 0 obj
-<<
-/Type /FontDescriptor
-/FontName /HHSFZO+SFRM1095
-/Flags 4
-/FontBBox [-188 -320 1445 942]
-/Ascent 689
-/CapHeight 689
-/Descent -194
-/ItalicAngle 0
-/StemV 50
-/XHeight 430
-/CharSet (/a/b/c/e/five/g/h/i/n/o/one/p/period/r/s/t/three/u/x)
-/FontFile 83 0 R
->>
-endobj
-85 0 obj
-<<
-/Length1 738
-/Length2 12419
-/Length3 0
-/Length 13157
->>
-stream
-%!FontType1-1.0: SFSX1095 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv@vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ecsx1095, tcsx1095, lasx1095, lbsx1095, lcsx1095, rxsx1095.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Sans Serif Bold Extended) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/Weight (Bold) def
-end readonly def
-/FontName /FKLUEV+SFSX1095 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-229 -332 1765 914}readonly def
-currentdict end
-currentfile eexec
-ÙÖoc;„j—¶†©~E£Ðª+ÐÎ`U+Ö1×;ï[iÄhd_äíòT w Ïb=àìßIòµ"ae æËÌŒ!ˆ]Öø¥#ªg~®ÝúQ¡ù±ˆ^îVmcNï‰ñt™ÚÙ‚P*Ì4›žê®Jq§=G1Œ`¨ºÁÞØÓônG)]'šZþ eâ+­Ðh…¢îb?øáÙ‡ ƒà ï%_h¢©pä‡Yó5(¸9ÚìÏÒ>(&ÆösÙ€1… —Þß7›‚_¢ŒÍl•u‘~NÛ 7ÐcG2„~Vhw©dOä_ÐFÇh-¶Ê¯JÞ&§Ÿ(j¤rªqûÛêßÝQ< +ŠV™\²@RxüæL–
-6È}fÊ•¼ *Ò|Ës°5
-Ù¾Qp¡×‰~!‹ Ö˜Iqyd“¢©èÙÖ!Lá"0L|8Ã(;uÔ’b
-2%®nS Å`½Ûsg™û|¶»wvqñ…+,YÊž tº°á\3Á¦¡•‡}h c±ã†æ¢s*aÑVÊ\¢Ž–¾»% ª‰yÂ9Hw½Æ ÇÕEO²ž‰dW&å!ä677ß«AØ/‹RF«Äj߬ið ùÉnM«Lƒ'ó{rUzo³Ö@‰’©’íeA>ýÍæ!˜7oŸ7bÖÎ!îj¡©Œ'Nô§&(‚Æ_N¹î~<-k!~;½¾ždqø„S]%‰¨ ¶ü:A8™7å²1oGEµæ|‘û|äÕ43‰å£í€
-JU®cÊc±'z`»/¢ÇjÙ;pÚø¶††›/àž÷¯4?ž=Ćýd9½
-Çãìþ°º„¬É$rX–Á±Óéïˆu ›±dÆ°ÒÏý³
-{¥½|û`¨Ôtµ}cÞ72f,WFǦ$|Ž`.2„D™s†ÝVÖRf˜[°‰fgì|ji¸C´•Tø“Éjk}·Î¸n_{›?ÁK«šp‘9»Ã´®°0yzf9õgC]µOIô¥ïè[™+ÌšÞýGÑ£*À$ Òö3W¨– ¹Ðt]ß*Táe²Ž$ÒÛ"N6
-ÍûÃì.iè¬ÃU¢X,ûúíîoÑ$£[*¼E­FÕÑé Uj1n6ÍCb ¹<À'„Á¡]a¨EïÛ§~Í$fÝ™¿ó àŒT½‚M†#<-G«¹,+ ·‰Ñþt©+¾ãµ*x ¦zm™¸=Bà`Z‘k¯—z¸ 1¯ÐT0 tËÖ*ù‡Ê>@3+iR¸M3+w®Ë¼8«º‹³3`o§} ;ñrJ6wþQÏ…N•ÈØ0t6püä{9êÈ‘]WeˆOƒ]«lnºÐýÓöà%ªVDƒ±þ1–Üy”ó­ë æùó ºÅr^û` ´e’®s•%ý]’UTfrFû—r •Ê›Ý÷¬'|qåáúvYCO³IxË1è½Z5!q„~dgÔ Fü°X#h,_¥1Ûbx ±ÌJ-¶îÈžo
-Ãü[ ê1Hs©–Çž#²ŽH¡û™-¶Ñ¸êEÜé²a" Ïb´(kðæ"=oθ%s'g¯3>G±}Ò4µgá—#ƒâgùRÁeLü‘Ä=¨ž¸è>K¼¼×ã-£W"Ãn²«` ñ›jÍØzȘáäŠÁÖ¦©\)C€mLWYîë·$VPoäËà™do÷{篛{Ã'0Ž íÑÞÕrwT¸¨zÇûìÜ[c¿‹îm³×ëJQœYÌ ÌxV ²§&\:,ù¶¡¢ýL*˜w à;Bó,Ġ•ÑQ
-Ý6[âÅukˆó\z¾“s‡'¼²¢YçÌâ`1 A¥=%ܾßV­¡Ð9Ú½ç„n`xÑþl^!›¤Õs´b‚<Ph¼‡GZ†cÖloç“Ý}–Mä4:j§‡¥Ý´Aq3ºéã¿5úöïË:c´˱¨É§ƒá­® Ÿêgöº1Ø áÛ 'îëÑt£÷™Á{ÇóóhOöõ›¾yå3)â)øöš<t”qò²9N§Ò†Ûc"ð´a3l*Ô¹(O,ô0ŸÅÀ¦Wz‡­ÞÞ_³€åõ¯™äGjç'|}Lhâ”ðË8Û.”ÊKâÐ}Ÿ»¢xåò>†üÕ©2²\$+Ï6I%Ñm;›Îgìšj)©º|\óØhƒ%èÍÇUǶϙ‡ó‘é7xt  éW>U¨Æ÷.b
- »pwÑç;&1øåPaØ9M<N–ìþiƒ›©„£‹®ömGäà0†Ô¡ž¦÷¾Ý°êµÇC×õÙ©ÑÂÍ…¹Þ–ÎЖ1þã\AËy$ȉYRB¿Íщn>.¿DªúU¾¿¾•h M4ÖÉ#ˆRH“£Ç³ØNßù¼ª»éo|Œó Îóì–¾¡”|zëžíÖFp¸SãVÛÒixDàÿùî|a>WÇrÞM½K’Eæeò†?$óöši½ERh÷F¥<8…ó»3£¦l=ÙãØ ‡œ¦æØjp ÄÝÏh–fZ¹ÚñðÁ;Û?uÖE€£BÒ?MÆ2ÏÚ`¾£Ôá 3÷Q½Ì<È7ru6 Cðèb¤X‚«¯D’ÒG¡Õ#\<Hêí\Ó8B9å))Q´´ð“É^þeõ\¢—›­Óï¬À¥œ.T>ÙÇ%¹7Uè1W„fÝ<õê'[¥h4¹ÜÂxü½6†÷ÁU½K›Ýe-诔P ñ»Ç§lÆ…w/ÝùNzºßÌ«š²ÜÝ.¶1†ì¦“ËXÃ{^a¯àöŸ){5ëu™³PÁ©ÓyÙã|†FЀêÍž¬mS9N¬5SCCã‚x5|Ê`­úS’½Ý<¤SÐ1‡ŸÌBXÚO(‚Ъšy[ëêâ>TØhD!U] íK)!¶òŠ¥!Ê•;òºqn¨³]Æõ ÷ß 2ìñžû
-==v ”ðN~˜dGý÷Í{ØêR ÍiÅб a€”@ÒcqC¹¹O¢~ÓwËa*ƒ96Ë9¯¨ÈvN歹íødLÕÙñϯ\¾sõ¾e"\8à¹ÙǨ„‡µz±Ype©,ˆ—rIÈ
-þ©3Æy§¢k‘Nø¹OÙ×X’çàpD*gò Ȥ…Í QF‹“X'Àøœ—Xl7ðlä%% L¤N#eH¿!{ù0Š»ìG ­R= þ ˆ¶{¾‘o †ï¬1õ×4!@Åý×x4éF,¦ÎÄ4ÿÝ| y£ZÀ¢T¸Yñ¼£X%Î_õ¸ÇÉÂÎ ±Vú
-žÀšíãI”íç‡Ø‡XËú§\‰Ñ¢,€{"ÎPoX/`ù¯Õã\3‹œ~K Z ¬@¬›”WñÌ¢Þ=OÒ4™mG£3±–°UÇ€Q½ò½Ëbyšh$ß?:+YñJ~Ø0^,g?‡=Ë©ùG
-jÌÊÚÝ Ä'Þd©…? ã¸ìÙvˆ^a¢À+YIZ_ÚUïxW¸ãž‡çW͉ïÖ˜ËgY¢ïjüì¤#Èó%Í >ÅÞZ‡ köÉBTÒ5 úíDm±ì
-ÃÌÕë¥ÇuܶuþP.ÂÓÃ,ìGkµÍ캳T Ó @¶&F]g
-ýP-ôÍqøræúºK´ÌTùÇ#†/~…®Az=ð/õLeÇ÷ ~ûÞ«„;Zºál¥Ó]uõÕ!±b=V æß‚Âî·-×uÃ/ba
-µ7ä©Ney{˜•´ú@R!Ó½Ïhõé: ŠXr$Õ³ÿwÐ0ðÞx0kÁ“öÚØ3‰ânjÜ4BÀÕ^,ßØyb©Éöl»-JR‘ùk2—yìPÒz–£mÆüQ~¥6¼‰V
-OlYäŽ6»Ä_µ[V¬­%FKD°Ž'Ñ
-3mñn…CG
-s÷ˆÎ¬Í©…5—
-èÍh”Ä j˜¶ê£Ë`מ3œfeÙŠòx]_ëi?h)ã8ܨ{Õ­Ì®³?@âF+<hô·­Òb¿ê¡G˜˜ Ó‹ã\œ “6Ù#©wÁ±öÏ
-xH
-äQ„¡xú÷y4®½ºh­¾à¸”“OrPk…Jju±Æ›LBÓ!Í€rƒ¤Ø$ɲhUe\::'%‚–ÐT*¹šÍsï‚¿ËE`_½Xðe¦¢¿Þ~}KcÉNÏþmM9{ëÎrËÿÝÛ.ñâËœUuÃß8n}¹IAF<P8jÊ k¢þ¶‡/ÓWgI_feöì«u+ÎoÔùúð¯aœSJ33ÈŒæõpI1R½Õ}L]"øƒ¶ÌÍ9ù+ËttèÕUÊÿ+ò²œ¥
-†Šá#ůڿ…ÿnê^­Ø€A×®aŒ7ȉŒ†Íu¥$/úÃñ,*4H¬¾¢ÂºðJ “ÏûÔ~P¹ì™ñ“0dÁ.Ý“ŠþÇ`†ÛuÝ©O@8 Óš†?L/ó؆õ[ùpr¿â¦TûŒuSßâ¯ÂåT;®6˜…ùœ%¸ËŒ(«Ifô +Õ§ÿÓ
-HdUïνÍÓAá?ƒG¾!€É­¿_0ëEøï”)Y(ÜŠAÈhËÓO÷ž5¤‚‚f`¡»J_“<­9F’óÍ ýE*§j ¬0)¬o~—ÍíPMGT/!´Ætõ=çÒ]†øU-ZWJ7kºwâ.§‚Õœbyrªa†‚ЮÛÙ\=OL­”EïeÕÒo<UWâÈ3í;B{GÜVE$ŽÅ˜N}èzu@ÉgWuÝgøÒ›YD>¦Ì5O–<Öéƒf¶Æ$Èd”\µãÐ</‚͵A ¦Á£ÚñT¹ïžB•oe%O|™ë<ôø«(.OHõn!:Ò¢‡ð”vìÛx®SD(ªT{^¯N¾ º»gÁÒ–A±¿`Âýœ]ë U]8–1z€õƒ;Ñú|ãi¨åõSÕP~ñµq2áy(Òd_øÄ–7/]•×ýù9§ÑhjÛÝáži„#´ö£÷\¼ ˆâ‚,ªRuìÛG”–ÌQS{£l4Ú=„ 2÷à.4ò²\ÀaZ}X¤iUý¦¬3_´Ž¢bá(ݽ …P\¼eh]U”õ1„û*iI ,N6ûÆ-3š_ûO>&(…2wÒPVŒ·¬Ë j¾\;áÆ|Ø=(P+2ÂŒƒ£\
-hI,JòTº Y
-øÒ)±>þG¬Rð³Q¼sú䙿Ã|2pøºq#§…5Š…¤¾BI#¡–ÿOCÅU
-£ƒ8Š¶Ô¾=MìÆm®©!>[hôØ?»¯îÛ˜‘¢s`¾ŽØdž[Á ›Ôí
-TåšCGõÞ}P‹].K›¥%NÂLñó3;M$7ä•YSªB/ˆ¯Ø‡²%2è—x$ƒ 7PAþÓA•Àú[ò %ë¹ñƒêh»«E“4%ÀòrÈìéBˆbT‡v&Z
-vÝa<':ÞtÌüŠFRÔ¸úŸîï©ñÉÐn/'ø-+…n²{¼*…vx¿
-²¯øÎX·{±bŒlÉ®áhKŸïá¡£‘ø
-¾<d˜LøÜ÷— ¥Žèå
- Hq8Ãm ÀNÜT?^ ˆG†_OdØâ®çS•žXÝåÒLJ1_%e$à¬CßÂü©ÒŠgB¯‘ɶ"v&
-nOv©ÕƒeýM~Y¾‘
-Š|•gA8òÁ¯ŒLmIr<*§,æ¨Ç?ÚÔ e–'˜5ÕRËsÌk–2º¶:y n'›£¡ôk- pO™OXÉ/õp9 “ø”±,3ljssØÅÖ׳ät mxèriÆ6'írÛÙq¹,ù<þŠ±jÔ-à'ðOoœIt'aHþÿdzNŒ’™òi
-Z¸ËóøCŠ^sÚ&0lêV1öÅ›Mp¢S V¬¦™àP(=è­¾«|dT(Ñ[T{¢…ÍÁ´~>“º·\´R C[„ðÕ$–iJþ+fV qÐI%Ôwº2Ìûó›bžª-×–½¯¼?1Ò†U{©¢mñ¿^YZ{%.ÂLw jJUÜUpu+Ôa^¸ÁâD;Gë,Þ †ÿ§Øa·Òj·šhÓý_j#å™ßJ8÷VÛqÄct]8 a'БO[ô'ðŽ…™«yC’uöx§ð*»žê1KÞæ nBöþAQÞà«åŽ…Ea©3Ùè4güã´vÃå†Kï€%šg~êfË4œ›o¹ñ3gÜÉIaΤV(7̶>@÷A#ÍÉXɱ*wNÆq +r³c†Ý®4K#´ª¾XCÔú­u©ŠÐlIÓ¨œ‚j‡%1’»2é륽~´¯ã)$ÇÑH½5·8¡!"+HøUúÿgüO¬Lwæ&Ѧì >kÑsôcAÞ
-endstream
-endobj
-86 0 obj
-<<
-/Type /FontDescriptor
-/FontName /FKLUEV+SFSX1095
-/Flags 4
-/FontBBox [-229 -332 1765 914]
-/Ascent 729
-/CapHeight 694
-/Descent -193
-/ItalicAngle 0
-/StemV 50
-/XHeight 459
-/CharSet (/b/c/e/i/n/o/s/t/u)
-/FontFile 85 0 R
->>
-endobj
-87 0 obj
-<<
-/Length1 738
-/Length2 12694
-/Length3 0
-/Length 13432
->>
-stream
-%!FontType1-1.0: SFSX1200 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv@vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ecsx1200, tcsx1200, lasx1200, lbsx1200, lcsx1200, rxsx1200.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Sans Serif Bold Extended) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/Weight (Bold) def
-end readonly def
-/FontName /KKGAAD+SFSX1200 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-232 -329 1767 915}readonly def
-currentdict end
-currentfile eexec
-ÙÖoc;„j—¶†©~E£Ðª+ÐÎ`U+Ö1×;ï[iÄhd_äíòT w Ïb=àìßIòµ"ae æËÌŒ!ˆ]Öø¥#ªg~®ÝúQ¡ù±ˆ^îVmcNï‰ñt™ÚÙ‚P*Ì4›žê®Jq§=G1Œ`¨ºÁÞØÓônG)]'šZþ eâ+­Ðh…¢îb?øáÙ‡ ƒà ï%_h¢©pä‡Yó5(¸9Ù7B2ç]çÚCõ2OÆaÜz–Ý*u]QÔøDŽŽnXæ´ý˜*vóÍZöŠXBJÌ‚ú¸,Bˆ/Š4…`b¾Ž÷8}׈&¹»P‰dùñ·J×Ø‘!Ÿ·IÙc‘s˜Ÿ\µºyF›éjA2’)z-LËô<’þié£!¿Ã"ûqZ @&MèøÒ„R
-3,ab<‘ÎŒåzÞµmTbòS¥cM¹kãÍÏÛ}ÈX#1Ÿðéd NuH(iKyÆövßгdÀpµñxËŒojûÛ šŠ‰Ñ<Æmo¹†õÄòæÔd WÃÆù¨µ!k<íøñ0nvƒ_]§‰’–[Šâöýç!QЄNVyjÛ³û³sÒº•Ñ[‰ÊÆ©·æƒœ­ -V¡–P{8³Ó%¥‰ñëT
-°þ²øù —Ž÷JVâ'µ^ÈLÍÃB|˜<ìÜB{"ÄÚKKÿ
-æ®–«Þ‰õ<šê Š2òT³3)š‹½4XOú¿¬«Fß"ÝãüQL«²kžn¤S "Û–u‰ÚF¥±hƒi,Gh
-¥Õ!˜$tôû©Œ43t¡óãHÐ6höô×j·–ƒ1“DÄ<Q<5ªE¹ÍÎB_r{éÌ]è‰ÁYa?{¸ý%Ä(¥(³ˆû/N¦„R…‚qv±ÒÎ#ó#‘©Ž‹=ð
-F¦yhA6BûJöÊ b[R›ÀŽ`ŸýÂÃò͆¸ç½ú­cO]ú¼p3c¡ªJ€g>Póå/!¸Ðº˜¯†)‡|ápw5’IãZEhÔ]BU>ù¶­[X 8àÕ-6À4„q“×››>¬¬ð(øFu¦ûJz¼–Q.¿;а³Ê÷„öE‚\Ÿ]2ë·ÞžõÕÌY4åˆÿˆºÅ]7²Yw½!å *°îùqÑ&H¦©;Í tAve4¸‰|Ä?ŸhKÒä Ž¢çÍ <֚șµËØÇ_À°<‘쥱«ŽÒA­/žfòÊÄœ'”ËßHQòÐF°iÈ­~ÃOßAöî›Ãrª1Zî{ˆ~+ÜZQ«ÞqtÁ`²fN»¿*Ž‹¢[Ž6×Ûíà»ûÙËWóƒ®ß[Qúÿt%òg
-ÇY‘¼:{MW沨ڙGí×Ôâ^ÊPþ«î]ÌFJpºüÛψA…{~‘š#MìJ˜½ ÿÖûkÊ•môð‹0 m ’|N,–ÿ3*¤Ê ?(šO˜>¥Þî<Lex“€á‘.ˆú¨6)bHEM\/b}ö–žž`ϲ_7Uã”L]T{"nÎóœfwN! >Ø+` Ÿå~áIu°ÿd»]“˜úAO¨y0{4óX…öW™K¿¶åŠÛ-™Æ©°|á>8ÀQýëù "R¿h f
-oÛ°²;–-O1b™Î#ƒÙ6‹0Ú<ISû¤Ü%a”ì÷!Ñiy³ÏEjŠglE?Y ~Òäz—%ìtZQ}µQåä²ç$ÅOç“+ÌtO%
-Àu_†w¨ Ì€»dóLMK·ìõßâLÀü7Íèª%]>ÚzË~³—Ë 9NÖ<\ˆ|]xŠÍ1Ö9]¿E§}5
-¢¾ë¯¹t¥¶ÈnD×øy£8±{1Á.βQÆ@óïÙáÈ6Í:œ†˜óˆN\²+P%%¶[nã;ö%kŽ_ ùÌøXŽî
-^ÑϱÙp?ãwoâfˆÓ§8
-(>TñÒ0­¥¬$“ƒŒ'Šå>}ä,–OmŠX'˜.,¬$/°í1N£Y÷¼Yr½âÒ»N!©«â1†á^{…Uµ'XîDÕéUrápÖ}’óî°’8*þ¬&_ÈzwhJЩʔ>R#Bu6˜@G|H™k‹’@Ãݨ(V?LzÇ`®öL0Rш| tÊŸœ€àÇÕ]~ïÏ,àT“„{¸ºðŸ—5fìÐe93ÆQ"¡êê}ŠÔÎÚlð…!7`/ŠË*¸¼2)Æ}[¸A2c±ž>¿‘4·Ò ÇrTÐiàmÏ{ì•À:…‰(Õ-­0œyõƒD¿ùË% ¶UÓèî&fTtŒnoM3%ÜñY±I3OǸ&ÏÃË-Q¶0G?r©ðñlyú—[Ïž¥x99!|8
-_{m§_çâkLª~•ðÄÖèˆCG%M’Œ¦Í‹?·rMczêùrm‡`|Õ˜¼Åù*‡’‘  …DÃ;WY`æi—{?~ó:jÈŸÜÒ)P…S;d“ØÉue|xR€%ózNM‘ÅžpØø?FËØv
-Vè4…-’¼¤0® kYôHï?¬,KÞ_Þ¾Ád;7U·0ÂJ0 ‰§E>ãJk)'Îèuc3›E*FQÚö¾©ØtbíÞ‹uI‡Ñ©¿ÀÈüÜDiHcÚ½^q„Wh !·ÜMÉ÷xÌèÿâ²I¶ÔÐÍ·];Æ‹Œ„`Q˜Œg)AC¾T”Á\"pikãùÊp£éèk„"X`yii L:9Ã¥úØ„5½4n! nd*é4†®”˯"N‘x0Õö¨'¥Þo9¨¼Õɇµ°ÀD²
-§92J~
-1“½e š¶È-ã…ÁoÙp…Ö
-FsíICãöe./L[ƒíNßÉ3`þ
-ùÖ£¬¦rg¸ÌšW‰Oäñ”šº=N"±BÍÕÖi;’&ûoËîÀ7ŵÏ^ÿ' ?yHpØôvüKß’m!Q¥Í•‹•íâ¾ÓVõI{‘šH³Xj
-ÙJ³½‚ßM’[ÊïOœý­«²mg»1’‡PÌ©÷e_dÙ#Ù'Üž×\µÑ…Ön#¢ë‰5›?Ž*|¹.$÷¤éý¦ÔÏX„“C5Y]²4nuˆ¹A&…H²­"()·é–¬‡ ñ2 6QÔÀ‹ÄûŒø]¾öÐÈ–œDˆSàäåÉôt§rç½–Ÿ˜­Ñí&^–ä1ÕöØkÝùölÜ-b?Óa,}Ÿ£ïô¾h8(\«õyü‘ˆr§ åS€½!Ù®Œâ‡`›™•Ê[ªªºZ™ør +çmX£# $SHx\|ÖòŒceÏ"jÔœèé‰ÊÇé:)‰C«#¡mì%Dž/¿XÏ ÔïÂ]+™.i¡KÂÄÜçò±]¥w.%ÛQò ìÌ'ѧÿ„Ï]IÙ0ˆÊÀ1)mÆ°"*䯞*£¥' º7#{’ºù:²ãØ㹯¢Â½`Á)ÚËøZUy©ö _yÔË;OÆ6nÄÀ¯. UáÓÇÙm¤¨yÃ,ÿQ ¦å„3<8À˜ƒû—ä¯WÖ€ñ­42LöûÛ)zàõ2ôš“‡<ézâôØÐÈBœ=J²Év‚ú´„”bŽi–‡¦
-Vuq£¬*+ø¨1;ƒ¡#»F dз„x½áq\Ø|(cËÌØt|#N€íë¯4Ÿ¶Œm9BPÔ¹¾«yqÕY8ÇoH#‹aÐgíß*J§Ü_4žÇ¦·-ÁbMHt›x;MØàN['Á§ 3 ’jBzúó³\ò{wX&7ÉuõØÃ"ëp]
-~˜m×S”ÀëШü_´zWìs妾WtkZ©ð]üÖ  2Llv+šþ“8›ûp½Õ(ì;½Œ¶°¯XÜŷܲš:ä³_%ήÝÏe%K½‡µ8¨½É=@üG£ë'?UM][ým wè‡,š[nã¡:?Ú8k§`ÿÍѪ@>xǺ_æ}­UŸ#¯±ÑÇéͨ*)s™3=Íäæn¨9I:5ŸiÍjr{«·QåWJa€÷Nôõ…i3)Iì«tl÷K†‰uO ó@˜OmiöÃá«q×ÌK!1¦Û¾°ÉxJCHǨ­ºY‚n^Ý;•ÙÉ[΃* }AQ5†Ò|%–-ÉÜ>O<¼È¹ªù„k‚ÿÒð¦bb¾\û§”Bn¡Í”8¡jíê*ð8XÏn¢ˉ„ +ÀE¨·*§4±‘ï!ÈD…bí
-©oiAv¿¢u&©báEÒ˜ pztY†’ø™éõ½I@kzègfZpÚÚe<c&!>»¼l‡¬®Ûɦ+Jƒê—4
-ÈQNp¡aŒ|IÔ.½Ô2ò‘ø‚œ²Q%âV%)Ù’F²¶k;ë³\2M8ååšÕ€Xr‰vŽ‚ÙB³i/mÜ6äÿ§E9]6\H§E£xãþ[õÛ_ƒUá1—]Æ°YSÝA¬®FÕ‘ýè‰Ä ?ì¬ÈÁ²XãšÎÜÖghS¤ûpip›ÕÀ½\Y=õ÷âÒyÙ–?Á‹CxEH&DR ò¶gÏu¤È+•ô›ÑnÉó`©’+ÅòsJ,6¶c–Sß]…:‚²®y˜ê·OÊKÂS‡<I3
-“L7.LšœL…IÞž¿¨‚­ý˜„s‘¯A?;|„TëܾéGRŸ=»(“Àrð–4°ŸDµýÓ[öyüe5Ý/áù‹ ’¼Ë,têDkø©Óí!Ø«¹%žÆÿøGöD÷à—­?½–ÈK0* PUVNÛ!s÷Æo¯9Ý@*²Ú
-²Mfq݆¤E€J#GZãd@ªæ)¿Ãg¦
- ÅCó¸çïDûu~c‚ïüØM%™Q59zwíj«¹0_Í`ú¨¶/]ß¿¸.? å~œàMµ§6xwø·¾Žæä5|ÙŸƒv™ñŒ!*°A!iE쟑˜ül‡fæû°;ì­¹Ÿ½´<²J£dZµ³†|ÆKÅ‚à’”¤IÅëŠ9€‘´XO-§Ù©¿!xÒRhhy<Ï·Ì“ÊØKmè 5¬‚b>{Ê<ª!ç^E›ÂÒrÕfªÀàJ>\Ž@NWa õ”x$â%a•Q¨—f«í…£¼;¦ž ÷\ :§4¢CÖóÓ1Âøi¨KÐ,Î_Æ 5d01¬€Bú¶µÔÑ)•­ È})ÌL¯¥gïzû ¥Ôˆ° Û¿Ùï:øµ~Mn™t“Ý=.åž-–„ïû<‹2“fãð&ª~èµWuåíÞ”¶ä|µè õ¥î„rªìT_Ò£˜B•Æ;6~’<œ8‰ å»'V`¡…Ò?S+-ÏÒ»N ûî\ûlÔà—Ry\ì8Wˆ{}ø&KJ|FQô3Æ%äˆsÏ™t K“¡C
-Zs bö<OÛÛAoiͲ¶øÂ%š?A ¡ÓüPpB2‚áøZm}Â|n¦ýï‡;ÔÈ2‘,¥°‰ÒúmOîAá"6Ò%@k9{Ø;±Ð³­Ó&}Ðèez£
-¶n’å.1®WÎÔSßÕUX­ütÚ,f
-š ´ÔÇߎµ2ÌMš1ë oë©%Ê>pKÝ«”AÑ·sz¦cì§àAX•OÜÞÑk}Ä¥;š]ÁNM2×D“7}k-’QÙ6²Æw‚´T‹Ïí¡"FLÿóc)±­àŒ4¨´}½—)<øûvpþ¨×"­w{9sÀÙ­MQ2à}–fŠÑ“cµØ(îS@-ÓÎ9¦Ï•H—„¨¥§B‚F=¬ šq\™ Åõ¬Ï¬mUFÿ.‹YÇzðF"Ä,åè.o /÷æoXÇߘAëÜ¿…‹ž=IPVZtÛr8„cfžòmb1 u€7Qñ£š•IçäÇ‘Ä¡nè…œ¥¤ÇÙɈ\­¥#̼ïã™$ÞýÍi×Ñ9²_;®?©ä ˆed\g×BÅ"·¬š;Y ×Aㄶºši¯Ù88é¦&ë3÷ qZŒ\¸¨¿ÕAx|"ß <yu>QôË;zü6ÍÌŽüîCëe“Å‹Ž…|¶9“™%‡4Ÿc{ùˆú¿sðÝN±fdŠâÓØõîæQÍv¨‚RÞF±ÀEanîÙ0z¤d¿–uŠÍh„ú÷‰rõJ!™B¦—¿Ñƒá§-—`È“
-? UI®¦ð6C¯Š™5°l‡,_DjŠglE?Y ~Òäz—%è9^9ƒÌ«*B$C:Z¥€0`P‰#vu<Ѭc =¸Êĵ¨­üØ&_ŠgÃrr@¢>ü ÷(ÿ\×fpãó ºP;Ì;+m«Ì™V÷]á$¤CQL)Lnž<Cû(îûR}K?Æÿ;¸qí,¯![–ç•'ðÇ8ð*€¶Gš·v8í ãç ûþ^“˜¤¾ãéØÃh†QÓÏ%µ=²/AªæÆ8c~që)´Šæ€
-güÌs ñV‘¿å!Þ¤&•7 2­ÁñI’UÃz;£rBŠšåÌÝ~у 1.=åžâPPÈ•÷ñTJ4A…õe¢¬ß{f¾©Õ)à
-šœi¸œ vâòíŠ?°ÑuˆŽhú ¢«Åïpñšbèqh¬ïdm"E{F³…C…eAÚô“Ú‘+TáÖ:ØŸ„ZJ¼Dº8/½oUQvЊÑïù*Óƒ­ïê‘á…Ki ºv‘¹  ¹©D³þüQ@¿ ð±¸Öº<àÏ ºßø™÷Yà¯ËÁÇ}ºé­¿bÇÍÖÕ‚t
-àú¢90-3¥¦r´³¾%½ƒiÞ!2Äœ5 'Ù3•®7\‘ºø¹>lKƒêâû­àt–® iÁͺî¢g_äºBˆ†È3¶O¶…¬DÔÎ'*1¢5ÏÇÙv\®ü™À¦2Ê·S&†`bVó½VІèò?5ZŽëFZ¡w
-ü:Í/­Ï!†V lÍŠœ=‹µvézãùŸv H§È 0p¨t™¾ûxU(Hß±Xúæ°¡S~™ÄdÈfCÕB³W$ÔY‚Oîk¼ÜÖÚ÷34‡Ú«]šYˆœ¥‚½z ¹?·ÛqÅìˆ/Zýóm6Š²R©VØÙgÿïªÛÌóS‰ùkBiù6Ò§ nˆþÈDÛ[¬ŠU)Å&çêìqðY`-‹—)oº‘ß:¬U±h³rJ3„ET0ºêF, 1ÔòJŽCt·~`x¼qK`ãÌRl Gq$Ä÷‡o
-“áþ‰Éæ÷Ña½hSÆôïs¦'B6.+ãwÂi$Pæ‰
-¾DÂkt:lÇÀ ‡>Ò"{„ô«N÷8ôãyým Èó°¹h½÷J»ÅÂËéNT«Ü‹Šý‰
-©ülš1"Õ $Ò_ί ËR-N.ú6ÙAò) uëK‚Jl,j!4 Óþø1çé>Ð'J涋ËË“ãøº&ÉÂÛm•’`ï‚þÙÄ+6 ÔÂÙKð
-IR½©ï´Á4©«¦–Îèo œX[±Ë|#,?;.ÙéðÒ »—Çá¾R•µ
-ÞÅn\Xç¨âM
-`x.&'R«’¤ÝQ°a:•[ZDñTν»ÇRÇ\´á\pâ·ì9³UcX#¯Ä4_Þ›Ú{CFƒvþ-Üe2èu`Þu¿s¦óO†©î¾9
- .ì ÒÓü×÷‚1ªK[º„?¿½ÿwα_bKšt{ø’JO ×úŒW¯wN› bÞ ý~£•±ùŽÒ
-0Ï'øûAxô¶H‹†`æi_tsÓ@bà¿¡ ¨h*ãi*U’øø³„íÚ¿sÄö©·9é·á¯'á,ÉòŽý¿HüA¿¤ R🱸0±8·a9èß\­å„/fö„
-Ú«É—§0–?1`ý *í©ŠŽœ θ1W%*”¡Â‚+6%Ó'
-endstream
-endobj
-88 0 obj
-<<
-/Type /FontDescriptor
-/FontName /KKGAAD+SFSX1200
-/Flags 4
-/FontBBox [-232 -329 1767 915]
-/Ascent 729
-/CapHeight 694
-/Descent -194
-/ItalicAngle 0
-/StemV 50
-/XHeight 458
-/CharSet (/b/c/e/i/n/o/one/period/s/t/u)
-/FontFile 87 0 R
->>
-endobj
-89 0 obj
-<<
-/Length1 738
-/Length2 11968
-/Length3 0
-/Length 12706
->>
-stream
-%!FontType1-1.0: SFSX1440 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv@vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ecsx1440, tcsx1440, lasx1440, lbsx1440, lcsx1440, rxsx1440.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Sans Serif Bold Extended) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/Weight (Bold) def
-end readonly def
-/FontName /RQIEES+SFSX1440 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-238 -326 1844 909}readonly def
-currentdict end
-currentfile eexec
-ÙÖoc;„j—¶†©~E£Ðª+ÐÎ`U+Ö1×;ï[iÄhd_äíòT w Ïb=àìßIòµ"ae æËÌŒ!ˆ]Öø¥#ªg~®ÝúQ¡ù±ˆ^îVmcNï‰ñt™ÚÙ‚P*Ì4›žê®Jq§=G1Œ`¨ºÁÞØÓônG)]'šZþ eâ+­Ðh…¢îb?øáÙ‡ ƒà ï%_h¢©pä‡Z¦¹eƒÍP‰¼EÇY}κH=Î-¸gÝ0Qà Láyf›´YÔ™“ >‘#çN >ùi‰ÌyøäçMÕ¦xbt,rEk](öö1Û„ÅÒ84­C+jj…è‹‘JÁXrI·›ÜÝ œ²ŒoüÇûc¡e3f l¥÷æ¶èü­îf% /5lê»ÃZ…lKê‰KË¥„¡O—Š:eœ—¥æÉmp†h¦ñ˜M|±Ÿ‘_ÿZm+³©‰êFÔ«jøkb·);šËÄÇ;S²&wÆÀáäÝøxgŽÖÿà©tósHìâë¹ÎVé‚Tð¸Ý}‚áâq3áÆJa_™7rGjm
-”­¦JÑÅ[H°†]~xèð¾uAE€ãôë2tŸ…«Ÿ|.5«_0ºpèí´Å˜ó‘…·«ûFâÒ>}GCý@Z¦¶‡SÒŸWœN >Z0[ <?ô8Êíø½´sÛž-¹þ·vă唊F™sá­à¬3éýH+˜êEx)Ùe^
-}å#íf^·‚9¢¾‡¦<¬!:ZÙÔ£ºÅÎÝ·ù+d {§xÌÎ…½áÃ[ ¶4Ä]"ikg•rö’ÅnéO\ž•Ïk÷|xÏ#MŽÍù–‘¦üÓøá-!¾~R)*Æÿoè›G3~äùªùángr#ùL»*ÚŒÂN‚«ýÝ cêõ…™ïೕdT=hŸ¹¥Åô4qø ¯ˆ$GíóF%tô®ëÄ0…K†–[3Ýfÿ¶¼©Ìü¤‹q×BíV™i”¯$.O\
-+BØ¥Öè¦oè‚R22˜€iV_zãìï…r« ŠàûPC@RvÐÚÅ#LÒÂ9"bÉç®eØÌ3½¾`À aß¹e¼_/
-Ge­îUCñWô‹µR–¦îw.Õ” ?Ã}-T—r[…¹w,JR&gû•:íy§ó³B¦ Ë>a6ÖáQãœ4´ÕS‘« õY*þdŽ”Æàz–Åì~Ú9§€w:)6Ôú¾Ö@ëyÜi¡õX_Wb«y
-yFû‚ßnxyÖ×”ÓMQ[Ó̉$ºï²Ù!Œïƒ}lþsRæº':{¤¥n=B1=•ÆÄ;ˆøƒEe®EøÿÍ6îÑÀž€åe’–.[ì¾ržLcÆpÅ ô:c÷ßýÿ$þæcwÀîãômI}HˆհôÝy˜”VpÓô!þÀp ö{˜õ6Ϲ¬çÊByÿú"—{¿J»îyá›ö¹$dݦ³aÇô\Å<xЛš£WSªDÅ
-'tÑ–0ãõð!.¡\H:u*A¢Ú¬Ïx^w{wk’Tm/¾“¥ÝX<ÚƒÒr°"-P^âB:Ü2‡7b3;x°&˜ºU»ÓS„JäÂ?ô¦-Ú€»GA¦““˜í©ü<Š×HEsƒÏ•œž%ëp]
-@™õU)»R©é¼LïïóU
- Ö@9Â0¦©þ!2¿¬
-Ä#b@®ÿP§Ö5\”BËk6Z_ôäyr2p,’#&#5^þ×:ð¢'õ{
-5âêiP§Ñ+/Úæ÷ ½‰ò@üm¥Å˜€¢böØ}šÚ±F
-ú6q̈û…x%.ï4¬†P™¬#bëÇ6@=}•óyÈèø"ÂB%R 8•ÜzX•^&…kUy¤ÉKä”c;pK„‘Y€ÏÊóÞ Å5Þ;_¹²ºBð1¼jòp3ëso”ÿñŸ±Tƒƒ©hê]"LKòã ·ˆÍtêr'‘”¤üÁÑ^¾ªã€­ŠâŒ¡–‘ç=Ý;@jÝW<.…Z`G¯bš¸^A «©QrÛï3tÐŽm–JiO¨-<óª8ü—Cõ˜áOTcaQhŒƲ kƒ"Uƒ(ÊR­—ðÁuí‹ÆQÎu.EUJ·1ˆ’’…€‘0<ÓÕ:–À°òc¬ï°¬·HK_…]f2NÑÎx´]ø´P\GRǹÙYsƒìO€‘¼‰´
-ŠjÁ”Ò¡hkZM½õŽÉ0,¯:5…“F–8‰•’ fEY½Œ‹¶‘L1ÓÀÚi‹•µ›Â4þײj–À¿'Á–[¤ž¾?”¾#ƒ¿l´Ÿ]F­»ýF0 ©‘ï];¹YIî9çƒb8áÄoKL@""8eD"×Ȇ“sÌ$R`2ö›YyScJ ²i©™Õé…‡cÓ­%¼sžs¿x-`&?ìÓêZln÷ó 0¯ÎUfÈ+ Ùµ |Y9M«ùBd3þuäî ]9>$IP Œs øźFÀgG`,S\vò^¼ô‰º<´€~Øç#0'ÑD
-ìp³›ˆ‚œ}LC!Š&½B'EýËguΰÚOR¯€óÜHC3ü|ÔDÊ}N” R¤UQxÎëÌ°çÙÕ1Nþ¢>³1rEI3TJÒ IšÅÎhSðߟpϾ"Y-Éh”YV,š™gH—bÏ%¨;„ZÏ J¢ 1¥‰Ðr»P«‚ÔvwÂŒi»ã3§Ñ˜Û •2ìë\¾oIã@•M6éaÙaªQÖnö¦'Ü‚ÃÔËÞm9N··ƒNvÓq¿ô"º  ªÛªœŠNÛ½Ó'ì ÄÈõ `ºøk9ïÀ£Î“›.ðP*É£¢Û+€6*WæNç°v%ɪž¹*qcÛñíU$Ç°ƒq¨ùø—Ir˜H1ïBYQ„tƒÕ8ž_âTB…gÆ,C!"Å+¿¶šuC¬Èµ‹…¯ãH7l#V®K`jÎÍXW?_2j}ýØ4˜¡I‘9 ûL6ÃÊ¡+õè<P=Øø+æA£ÛÝ%²Y›Y­êÚ>>D§~Ú„¤—¿I˜/¿ŒªI¼['öNÐÈfs¼U®Ó ݴû–ŽR.ЪÞ<êê%q²t!Õe–æÓÈ5naXb½¶"#Ûyç7¯Kµö_ôÊ“xíÖ> ïHzU¯-ÃEyjí¥É`W³@„RDÃês•8 w?c5Bkj'¯”/ùv"`S£Éƒ…<2¼¢˜7d¸HûFÓâè`c³ yO>Ò $µ®…Wè;ê Â‹1’—ˆ/ŽºÓ^ÒLJsö0Ü;Gòã*TP{gY1 ;gD ÙÀ%B†Öü]¸´PÇmª\M“éE–sX
-wô‹sߧŒ®¶+ùøž× ]B‡õ•6i_æ…µqOÒŸj&P03zÅvô¡eßdRlû ¾š¦õ;›Ú¥¹­Ò81xv9†×ÞräL> 
-VÎìΕIqàø
-PA
-p{o•ýè÷‹W‚ac†EM@ýw¯Yçºâä Ó‹-î‰ó¢¦LãbŽŽ¬HEóPÂÊò
-b–øUŽÄY0w›{ë§ìÄ\) ˆ¶Ïb*4{a™ÅÞ1äå 6 ËX)ËEë>ÉÆÒí$ä4Ù…s3m_I|ñ+ˆ£´E .ÿ1¹Î*}ª©MÜd€6å¾}¬˜ÄéF”/ˆ{ ›Ó ÊGü»®Q.J]½9o/J' )/°À¼ˆÅÄU¦9xU$ԉ桟¹˜õ u¬ Ên*Ò:‹Ÿ%G@ô±ŠûË­
-¸¼Ž0ìmgˆLÞO³ä0ÄjT×Ù zx¥z<û³Æÿiu skÊʧûÞ€Ûµ%ÃF}!ïÕÓeÐÕ‰=D¡º*©Ò#§r«Òð è'VhTÆø¦€êT¶Ú)ÕÿZY~Ñ¥‘Š1ÅwéùöE&¶>”Ž1zL-Š‡u½¾Jt)6ÎÕâY<ŽjDÚ'·Þ
-U’tvVæÁåj£fý¶5¶Ø^)CÀRÉOû4É«¢ŒÒ…•ùô†=ì·Dgi¦t¾šTš­J ³¯ëLLYÊa%—ÐT(*U±ü êM¡_èm$Ç""­œL7þQT›/é÷=µµ¾ã
-Û-T¢oP¢7ŸKå!ú+*æmÉ÷z¾5²Ò60ð¼(L$•þàÏbБÕ"d{û¾÷æ»û*µüm ¸DEè^ƒРãâm¶
-a% É ÄÁÙkðx þ—'çº]T»9ŸzØuV¬K-þ^9‡|ØòÛ„žüB­:öÑfZž‘b%†u§ã= gákÙg¯ÅHšb8âvTÒï84‹jOA:Vkt$ªƒl+O_G9"Ã/Ç“<’~!h¤¸•5ý«'¤WÑÓpL¶ŠÆ‹„ëQËœêÉb+ rÊKVÃ:”¬Ôæ·»‚€ÀI°{#3²·n{š{µ¨^4« ±°ßÁð1EÐëùjÓsµFÑk)hu-+x|óáEøäÄÏhSŽ%CLûMöh°#8Zk™A\)½¼>!ÞfаZŸØjÆøù¨$\À£\âC(Ã+”9Ä;1ÂÛKlW$ê,‹-ÜZC²lÖd<——„
-×l’Nïˆh:”µGYfX"²s0‘¿“¸µ³Èx%!1F—¬• žÆÿøGöD÷à—­?½–͸Ùl*Ͻåÿÿ`ÒÓ¢ÏEÅÎ1.ü´µ# n >Ýz\Ç>W27ãqËÒK©üo;m¤RïÈQ¯³*Dž"äøÁª09O<&«
-äÑØNö‚ ë.Åx„¯æªÇ·ÿhͱ«í@0uÁ‚ŒŠþ˜Éœ*UïÛ—µo?؉,¦º ÂȽDWD€ p¶±NFaT“ƒÆþíÒ\æÜ‚o¬Ð® [A!âô“Y$M U“ð WÀðŠ)úµOSèÆïPÙo”T.ö†R¤ºéîÿ‰ñ<UCuL)¹1?™VÞ;@ƒ6¿Í¢ÔâK^Œê‰ÿ2Fç¸m~ÿUN ~EC¦W2Ù²{í€ÛUì¥Ê7Kdΰ…¬—6õ„>„oIòø?9´ÃgÓwXftùxíŠp»XNýÿõõî–HO4Mqž1•õ9·ÏÕ0Ê Ò*~BÅîl{4º A*·{Èá‡Ló)$ î
-“ùüI̾0˜*Ò©"ç¢.†¦yBí­ïÁfßÕ5®)ÉÀ!¬äxcÀR‡8ÆÆ2(þ‚âHÐétø®¦ÏÏIXÐ&{°t¢Œ 3!’ásžGï¼›÷j:0esÙ×âA…ý|ºÞÓÐÁ‡Ô«½»u‚2·ïà Ä#7Ha)å²Xiäæ% ‰dŸüþhg-Ù„ÅËÏiÁ•-bªPu$·ŠBƒ¹ß/—Õ'cëiz§“ŒvžÇV üù8Q¾/,†¡Ï«Íõ* ‡ðW}lë“òAÿ­Â<7 nî7ýûÈcÃ
-[WæŶxÐF>ÃN–,P×øÀÛr¬Í» $
-“zê*9ºÇZˆ¦½ 3ŸmEW‘Ô¼æ®#m¸šp§à€e°¬¹“Þ0ùÊœä,‡uQA œ¹„ÒhŒŠ 9×É‘xÜÔ®Ò؇×ï²z¦§óĪçÁ¨ªýœ”9ýNZÈí‡ú¶vÞ>é/ʨe´‡ÜDýËü6„[¯À¬[ïœóœ#SU-]j Gïilòu·~Ó™*¤9mëéøåÔ}M¡DF“?)Íð&îšœ»¢+&
-„%å ï,„ì@ùèÛžBLvD«dá­¸lùõ¦UŽÈèš¡Øqø=:§&ù$¯ÞcôæÁí,×Ó׆¹¢!Èê¦FLêÒò;&«N7C[åœ*»Û,4|/›µGæÁ¼“À~p/3%[\·¼‡ÕÃîr‡ÚXeçÓÌãC¹³¤ìQ-rüSÄ3–BÊ—Wû¢‰ö< )xw0*N»)þÅMpœP†LVäŸ]Ý3ڸ鱃v[qq|e8Õù¸År Bm”ÅrPV ¨Œ’ËgY¢ïjüì¤#Èõ—8ïwUêÈG¬8ÿ§Õ¥¬Ùj+x³òœð¥µJÉg‚ÛjåKöñ.爂¢Š_,`.½å(ñþ²•Q½‰U´é:¹›DŒp¾I»áqùmÃmÛ
-Ðh#šyÝ/û}Ú]96³_DŽ3H£I„z¶&µí ƒ:Áœ7ï’ö½{ns‡Ê"c… ¬4m‘;¬ßÔ0f¸ú^Oÿ;P3lV¡*_Å9wÀF>X‰îiùgó퉼o¶éê%q²ßý:~)ç§4Ƽص¢&åJÇ*ÿU‰Ø Á
-ðr6¼·C¬¡\îÖŸŽ]:´ZÆÀäÅ>EÉPo »tÕ4'Œj©ÁŒÐƒ>3“ùÕ-ƒi ¦”iafœŸï,ˆ9þøcÓÆNfÄɶí ÄßâuÏy,´¤‡2vH óõænŒ§J¼ûŸJtZñ2ÂÑR¢Ú?;)œº»Èãr‹¡¯˜¦:Z0<„l8:šÊYQÔ百ëµÀ«û›»5¤ÓöÚ¢æÛ½gï VNzAÆãuXÛdÖö”™Mêð›ÿužIpã'=h|ýVâ¾µa65ú™Û&|æHJöîÊLè´c‹…t7{7uÙ/˜~lŒa•D™˜R ¶OózçýSVOIÒ•£üÒ\ƒ èÖÇߢ“ÝÿsÁk”WŽÇiÚNÝ›üïa§ô¶’ËÛŒ&FWG†RÙ£RýR¤Ú64JH ‡½Ý#PkXÉKkìQ†‘qôJ*™¿õ‰åçîEgf0~3Z!O.Ô—€ö³Äì¯ÇÀ݇äóß.3™DÁ¨˜Šmúøž¬×OsÈÈ@ùå¼mÅÖÀåúãtÐ{˜•åBF_‚)ÍßËY{, <¦åöŒfÓO™¶ Ÿ4ˆSË7«¶XúUnó3*>Fð@šÙex¨*™%º63@Cƒœw+žw®÷ï¿Ä²…¬—6õ„>„oIòø??UÁéŧbs@‡)(€&°S_Âga"ù­Ø$rôËäg!6œ% S5ü¯ê)N¥Öýb¶É™u¥8É6íªï˜†KŽ*y=>ë¼Ú(¥ù ˜Ä±~)ƒäœ0øžÅ9­ÞÁã8ælsÀ„Ž ý`_m^‚7W•½5=”ÇRÌRþü8ók$±±u~•VÌ Ê,ž×ÅhJ.XÉ—ÓõãJãv4Ek!9ô±CÅû[ Ȳ¶i#üH¿º6ÉÄ)ØJqCèRG›qr`ùûµeÓ$“ô Y¶:?ÔËo ³‚ßËB†¹…FNˆUEê ªù%ú€”å~¸ýœ(Õ¨é~ë¯÷f·‡³BêaG ¤À)S‚ÿÔŠïp×Üæöt-Í']‹ mI/fR’ù4È]žB6÷½ ß¡Ÿf§ÀL^!Äš=¿<4>H“µÒªæ
-M`8·â#ãE7ŽJLŽà”uhw[N .¬hð²áÅ#7 ùÞµŒMVˆ^jÛr²ØŸõ]‘ ü|ßÁh+ÒæS·P‚x­Œâ7JJ=½²ÓÃ!¡Š&•û˜#_ZÙ#+ܳö"â÷ý®K³²ÛJz‘\!záfzß7¨M-¡,îüvn Á¼D‡ŒN €„Wô¡Ø¦³‹Ô ЇY˜“Ì%•˜\›Í"’¬å#pÃÆ€LAÂ1ÛÕâ†ç²t.–B•áB©½‡Ãƺp ÄzÍ^n—!0 Îk$åáÓX\ÎLI_L+0O›a©atj&Éq Qæ -¥ 5Ê:\}ìÐæV†¸‡øŒ-PNyŃïqpÉþCtó1l+uy &U€*ó1?‰¦©IvšÝ®8|J¤mÖcÔ&ÿ9¹Ÿ¨ïÜICyæc’jMžßÈ
-ö?p¶Êczw
-—ÔžÑãüú¸·‹NúÁž*'1cX¶éÙd "}‚õcÆ8ƒÊÚÖýÉAH:4ãÁ?8Å0RÍLøgÄ«è5
-Mäz
-t ¤Üå[ä´s»ùÉ&pý*ƒÂÕ±$Õèæ7!úôÏB jƒ¢åg%³îEÙi§e$KãÎøzÔ«zšulˆs[ãPz…sÎ×uò¨è_È­ßï`5íÛÆÍÀý¨¿?\Þ1? d^yÙE­’áÄ_q1ÇÝ~¢±à=€øím»Ú†`ñQi­
-”Òiÿ[ R0îÂX?H*Ñ®•aZÞ»WH&çMÌ*Ó9š‚™‡93Y¼à—ñsh aÂ÷ã>ߜԣJ`”L«Íq~ž$íÏæÂjiUå"n¸·ç½àUõóÈ?Èhr“d6ÛGÅ@ô•:}{»|C׳.ymöW×S½örhÞ–!ò!íj+È>±Y}æ%°i™
- ˜3_Í3.#Ð&Þ Âmk 5;öè/ ž5qs´ÆšLÓ/¶:ql´Vé2œè–¿&„ìP¼ë)4-â¾ ï| Íy=¾Sãíòº¿Õr béßþQmˆëó?‘ÉÏ_zÒì¬Rc]s©©r³Ü¦*§>ßeX²#œí³±dÌþîB)iɧ™¯íàNñX¿!ReP‡Ï“ãfîÖ©dL…uÓ <—Èí'È9SÌ}Cve“Ìx@†wG»T»å–%B±ô#·À0®#0Þ11˜÷õ+{ 'Rr±Âx\[’mm§Þ½to¾°½z.*l
-uÏoC—pMcQóØ‹6lÔóºa:@k ¨L5‘Ìšõ ¾\î¡\íÒŠC<öö
-endstream
-endobj
-90 0 obj
-<<
-/Type /FontDescriptor
-/FontName /RQIEES+SFSX1440
-/Flags 4
-/FontBBox [-238 -326 1844 909]
-/Ascent 709
-/CapHeight 686
-/Descent -194
-/ItalicAngle 0
-/StemV 50
-/XHeight 451
-/CharSet (/c/e/i/n/o/one/period/s/t)
-/FontFile 89 0 R
->>
-endobj
-91 0 obj
-<<
-/Length1 738
-/Length2 8972
-/Length3 0
-/Length 9710
->>
-stream
-%!FontType1-1.0: SFSX2074 0.3
-%%CreationDate: Wed Sep 12 2001
-% Copyright (c) 2001 Vladimir Volovich <vvv@vsu.ru>.
-% See the file COPYING (GNU General Public License) for license conditions.
-% Converted from METAFONT EC/TC and LH fonts:
-% ecsx2074, tcsx2074, lasx2074, lbsx2074, lcsx2074, rxsx2074.
-11 dict begin
-/FontInfo 6 dict dup begin
-/version (0.3) def
-/FullName (Computer Modern Sans Serif Bold Extended) def
-/FamilyName (Computer Modern) def
-/ItalicAngle 0 def
-/isFixedPitch false def
-/Weight (Bold) def
-end readonly def
-/FontName /FEKEGK+SFSX2074 def
-/Encoding StandardEncoding def
-/PaintType 0 def
-/FontType 1 def
-/FontMatrix [0.001 0 0 0.001 0 0] def
-/FontBBox{-234 -319 1740 892}readonly def
-currentdict end
-currentfile eexec
-ÙÖoc;„j—¶†©~E£Ðª+ÐÎ`U+Ö1×;ï[iÄhd_äíòT w Ïb=àìßIòµ"ae æËÌŒ!ˆ]Öø¥#ªg~®ÝúQ¡ù±ˆ^îVmcNï‰ñt™ÚÙ‚P*Ì4›žê®Jq§=G1Œ`¨ºÁÞØÓônG)]'šZþ eâ+­Ðh…¢îb?øáÙ‡ ƒà ï%_h¢©pä‡Z¢ïrŠ =ôШ6äÅÐÕö(ÈYý´¤è åÀÇÈAĪvÁ™rÞû„ø%lÝíôÌrh™-Á…ôØÃÕ`‡=ÕJŽ2‰`¾¥pzÙêJPJ&G,Ÿïó Š xYMcÉ©ß1DŽj¤˜1ET}gð䲿ò¯·&3é8|{iÓÚF“Zvѵ E¡Æò¢ГTN} :˜6OYÐ=žà^Ÿau@A_ظý–š« É(g“ÉO*‡N0ÿ½¡¥Ó݆0Íݵ›6dm±»â²Bæ§ÔYŠ¦°Ë'³¶qÊp0‘û€ ž|—D8P¦”GÙ…ó9 &ߣUû¢³<vŽKþcE8RÅø‚•It:øª.'¼3ƒßkûý_±mo_"lrñØW'…Ðg6òù
-ÏÅa4cßq«Ô84äø‚n.“«¼©j!®}f_ ]…ûX«˜0•¦ªOMÑúþ=„oô¢©,^Ùeæèím©}+]žÁ©‡¹÷÷qQLó0ªí–¯ÚØzu?…8ãœV½&†ýv 2ýÑ8S?Gåg®ÝÞ§#¾Ï IO¢+“–€‘+æõ
-¶:´µä©nýÛ3tv¶2<¢­Ž ²·YÌØyÑü» [¢®Àô‡éšeFxZ >„œvÐKÎHIþ J_‘>äõ\Ð:‚ï|
-² —ÌY’G)uxNÀD…Oyî|¡¡‚oMKz»>¿Ø³ ôfrîV¶’]Ýé×++–e:õêé´ÈäøÛÖÀ":­Ë!¨JD,3x¸9 z÷/ZP³Ýãèã.4ä„‘¡kDúÀ½1¸†+’EgQ>O¦©´¿Q+¢é
-Òcý3lÿú/áKˆúD|§n>¨B¦#^4:©KO(ˆ,qÎ.L*ËÖ£a¬€&UÃýЫ¾¹‰×Âe€2“!Üq¨uå6¢Ïšmúnð ³ô˜Í}f)‘ÍìÃÔD#õ40-´ßÍŸuÃ¥=Ð^<Ø¢ËÃÙ¹ïJ§ü4Œ¥äjžÿ¤ŒÕDÊkï"BD,Á¦÷ÉækÎåµ]2,®‘ô‹¨,» ½ÐÒϺb«ô©ë‰ó)Rì&§ˆŠ
-_ÊD²<&£³FÀ_?ß'ñ%ƒÞßÀ;%€›¯Ÿ.2ÐòY=hcç‡&«`n|[þ_¤͵™ŠŸõjê}¬wÚår+¦P>°?¤üR •ŽÇÄvõ…É8¨ ã4;^’M|+Ö=…¿{m<ÑZÙ~Þà€w&ßY_A™‡;‚Ù@ªD¯lïÖHÂ~½‹뼸ð@Ä2Yµd¾2¡ä _}¹Žˆæ÷õïXwÙ…OÎ0@ûÓðµr™@œK[W±¥æéM¢35œãd3÷.— övN!´y€‡ò·
-ÕØb”3{Þ/c¶WÊû¶ëOÚ|ôÛ>vŠ{àzÅŠñôøVS­“0‹\5Ää bmÖ¨œàb¹Ñÿ£9y+†š·«ãËøÎË_[¸r׬'¹¸á-#½}×:¶÷æñe¡|}çwí¹\›7«é'×Àì3§„ÝK€_±[(RÓ¿¥~A‡¼÷¦y÷Gø×£aØsOi1½y¼Ÿî3·Vû2ÓÔ£ÌÂv&’yqzÖ¶§X]Â,óËD[Ë؃ðl}Ò ôP~%i+@
-1éÒ;üdßeïUÓŽüHëÒX(22UØ msöPñLþø6É€ÕìרžãQ7Ú+<dÑkqˆX
-˜ãK9“OÁ0Ö䪫ٓ7 šÐˆ6p‚íó,ß;–?ÁrÕ>!®Äƒö”"µÿ$]+ŠÅ<`ÍGöãLºyª£°iTÁ™ý©Üñݦúó,T¶a —Â5 Öä×è¬~–-S:ÙÁ ó7IÈ®Yà "­Æîç<:Ñi“FÈžã™!š¢<ÿ[Œ¹®5rMÆ=”¬/^“ƒÂã‡NU;û!ž¿âW"9åê»ÈÃÛ•cÆ3a—•¬aÌ©§ù\dÊU{„EpºYöå«!#WS¢ÆPJ
-½½>rz1¹ÿEËäqÿ°$S8{½…Õë*9hÓõQýStÌ#NÞHc•oµüϱÞ ‹Õr·,(ÿí^4÷aö˜4OŸHAKL\ G^
- à;!^Bº­²"þ!QãrÈÔÉ£\–7]¹OéÏà+ÂpŒ#¥üƒWû(GÁCÌfLL±9V&PHÏòßP|,n@¦wpëMdzŸ­,uÇÕ·È,|ÏÍãѱ¤Yt¡ xKMÁ«I¹a[0 "ÔE5„;€Ðö*Än˜PÝü° ¡±¿Ù,ƬKí_ÉyѾ¢‰+ò.ˆ51têéí‡vPSµ¬vc¹ý÷@á…=OðjH9^9"]Š^ËJv›¹¤ù6Ê#UµŸz©@¾ïR;Ó|"á"« "Äoˆ0/}—–ÎÕ*<Aþñ‹+1)òˆ$"lBéñS…®à?<÷ŽôÍE¤B6d§†*Fµ&§ƒYÀþ æa‰ã]p1§ÓÒM‹ç2©À´ŠHbø¶R ÷-áÍݱ}²þ3‚2VjÌÁb(Ù 
-cæÍ.ôå^•%ï†/®ìA®ÞUR´nSÊkìÊ`¨ì<ê¡ñiÄ„t}n])AÇ몷*×ßæ?
-f‡44ºTð;‚o­Q"ëÆ>ê]„„Q¢EÛLy<ÓJõäÑBX×a|m¥cwÃóß??ºŠb¡DaÁÞ3š#U­O‚f-ÄuÌ=§âò;ˆGKCr
-?¢äÉ
-üDCÛ u˜ö]óoиü¶5ÄèÁ¯øͼRW˜¬Õùù9Q%›!W:SÛóÂôyJFþ”F\)iÕùШV(t’¥CŽÞGF¬Ó}z×å©Š™€7QTåÏGÁµéµ_]"LÁ›mAudè뿺›W5DG70Im\Š." lŘ?Þ¹h´‡Bªäaf3cH°škm­k|u#´{0X¿.zT÷ϵ™ùÌø§õµ|B€O\éycŠH Oûª9:hh=ãå™wæXïŸÀæ^²úÛz%ðA,S\[ ½u>ÜbÔµ4$› ÈN¯óa†s…Üé\]©Qù¬†7V.ÆŠ=ùˆ¸d¸"ä½ÍÛ©´M¯ñƒ?Ì›§9¸Tc™ñ”÷cù‰¤×vötø]ÀkÆœ}å!¢š¹û6·ÚàYê‘D~ªK,•ˆ¦Qrˆ¨p¹“_º|ü!RÂ×küb¨Ê† Ñß_£DׂAª4¼.¥ÅçÀ®^%WÜR )=¥Á¢€¦Sè8ñ
-1”ÝYÚ ¨ì\’ïå°sëÔO°Šûs°Ît3A¯h]hl&Xé $Ä$–ÊG©HöCÀ¾kN¤ü³¤ÂFLöõúá;°;öˆ~ yž*a• -šûƒ¤EœÇóÃó®
-³ã†r=Ì©ÛºÒ¨Á§þÒaWœ,Y(mÃÎ#UkÚ‹, §fw Ùò~ ”Ù`¥ãûTGL*•'cò»T‡Obx ÍøK…c(ÌAE¢k ‡‡Ùm‰Øw$ÜÈ;*Ã6C€NxÚuà¹Ü¿>ÀulŸl`‹n>à^ÃÅÿÉl+/ò>FNêRºÂåsttÄ
-¸’QÌ2'wL Žò,´#%rk`ÿ¥©üÒ=ùÚ k-î%ÒêDFlzçSyES^À—û[ Ç‚d”DS''
-½=Ñ·fÅV˜‘+„eoVÞ¤wòÚÔArTóS÷$ÍR­‰åƒ[ Ôº O'xªJµùä¿ã´6ôÕœžIuD>È6ÉG¶ø4BκfðòѦ‚ª¤OhxíZ¹øc):•Ð mÄõàxâ)kŠ‚#?p–q†à¹[} ‘wå/n0œÅÀå!=uÏ@Eú å ô‹,ä<ÐT>MS¾™µMr|$çÚµ"áô­Ð ´eÔç¦jíÎz:óTØJ‚Ã̦)ôNþÛVê *m±ó'Q©x”#B)kPâêóÃGmÔ:Ú§¸ç¾˜B]m¶tpÑ-è9Ç°ó7>"™Ÿ¾/ïBg|R–IµÌK…·Z©ê³wß83y§²&58¢«;t !År×±( [œ»Ú”IqvúöPÜ„ctµÿ—ìœ1,ØîZX;N˜¹Ü/Œ îc†{?±å /¨«œABç2¹þ¬íp|´l³rDä¸ß»#Êl–YWH¶Hý b¶’o& Ò¦ÑH ‰ð@+VH5©ÄÃ*>§CD-°µ—ƒØÁWCÉ›ýîÉ…uäÝBUËÔŸlÂ@A@Z´›§‘‹<.çÎ8K¼[KÏ™!‰¬”Ž»sXF`Þ¾Î8Ž„bœ™³XpÃß)ù`6-k Æ-m¸ƒ‰Oóz(üé6:Žžû_w>µò‰•·ïŸa^ÜÉ”2¢®ÎÊ2OÛÄèGûî‚‹­ÃÊ'Ÿ€\R4³SÊd’xRãÙ„¢znÔ9þ˜}9ô涽-wÌÑPÝNÙµëÈ­æ~]ÏNCQE
-N·áäA:\0qÒùŽ`~³ÇÞ‚,ò"@Õwå¸Ú›,
-l“¸þ«½,W‘¬r)}}Éj€ÍêÄJ·ô{‰ÀW8“1¨ì:ÔÁŽ¢t
-×VIíb"íU½¾{ìÞ?ùF÷ÏÕé³zºmTó Šm¡·IèÁRS ½MØW–†¢+Ãdz5Jì¾y+m¿‚´˜0É Üu£²ù†.\(±Üõ_Ýj ‰À6Ü$Wì‹3ît(¬Eø)ÞU`¨ÑÖœƒõ€Â‚B̦èäƒòHJ#[rXܨ1~…}P®9Û°uá?³«ª¢ßÐÍc
-tÈu7J#n긂)çÿ7žWTxEƒýgsæk†f„u½¶æ|h\7Y*}¦a¬êiÆ
-ùh¨xrÎÈêÇöQ\ý å]¥¤n:D;âÑy¤á*kãXbÅ6yH:]¶Î!@m̆U Aâ®>œGϼ³âZÞMÞ¬¸õ[‰^z¬ ¯/Ù|iËå
-㈬q9Ù‹ìhPR!¾¯¢uBæê–ž·I"j±°âølå˜->4³Ù =kì-wÑ«úoR—ŸYúmúÄOùô‘ØV
-©)âÍbfZrã؆L¸ó¥5•1N4¡•·ˆH ¿k
-‹!·­u{l?´ø ƒ¾ŽGº +ýkâÆo2zQæãß${Ã1F ~cEZ]²CìWÄæÎÆ`(œ«D0àôúߦ*n¢ ™êï_2¿úö ÏUiFóåÓ÷‘;`láÈn*uÉŒÆe{z
-·v»J™:âÃhžî|çVï³AhK‹Ý0¿>pWGs˜>¡•¿LpU$µüãâY0.éw‚mÊŒªîØŒízD¿‘Q*õÁPt--LL¥‡òõìG¦I’È¥Á ø{LЩ°ÿèÜDK÷}Þ¤˜6ëÌŸ³; ˜ýé*®Ç¹nä¹ |N>tzv±ruTâBxVäÕá„iRo
-B4þCZÝHh|8ôcŸ©xH»Å?Bñé±3&ƒ>¢ùO—tÙݹ[F[>ûƒ)ΘÂÔ 7³„â2Äëâÿ¸ú‘ëùK¥0qt8… ì®–A$sÆdûReÈQ$0ù
-ó´D%3[#ˆý_X*¥ä@7µš
-endstream
-endobj
-92 0 obj
-<<
-/Type /FontDescriptor
-/FontName /FEKEGK+SFSX2074
-/Flags 4
-/FontBBox [-234 -319 1740 892]
-/Ascent 712
-/CapHeight 686
-/Descent -192
-/ItalicAngle 0
-/StemV 50
-/XHeight 447
-/CharSet (/C/a/c/e/h/n/o/one/p/r/s/t)
-/FontFile 91 0 R
->>
-endobj
-77 0 obj
-<<
-/Type /Encoding
-/Differences [46/period 49/one 51/three 53/five 67/C 97/a/b/c 101/e 103/g/h/i 110/n/o/p 114/r/s/t/u 120/x]
->>
-endobj
-93 0 obj
-<<
-/Length 1996
->>
-stream
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-ecrm1095-cm-super-t1-0)
-%%Title: (TeX-ecrm1095-cm-super-t1-0 TeX ecrm1095-cm-super-t1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (ecrm1095-cm-super-t1)
-/Supplement 0
->> def
-/CMapName /TeX-ecrm1095-cm-super-t1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <FF>
-endcodespacerange
-11 beginbfrange
-<0E> <0F> <2039>
-<10> <12> <201C>
-<15> <16> <2013>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-<98> <99> <0178>
-<C0> <D6> <00C0>
-<D8> <DE> <00D8>
-<E0> <F6> <00E0>
-<F8> <FE> <00F8>
-endbfrange
-94 beginbfchar
-<00> <0060>
-<01> <00B4>
-<02> <02C6>
-<03> <02DC>
-<04> <00A8>
-<05> <02DD>
-<06> <02DA>
-<07> <02C7>
-<08> <02D8>
-<09> <00AF>
-<0A> <02D9>
-<0B> <00B8>
-<0C> <02DB>
-<0D> <201A>
-<13> <00AB>
-<14> <00BB>
-<17> <200C>
-<19> <0131>
-<1A> <0237>
-<1B> <00660066>
-<1C> <00660069>
-<1D> <0066006C>
-<1E> <006600660069>
-<1F> <00660066006C>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <002D>
-<80> <0102>
-<81> <0104>
-<82> <0106>
-<83> <010C>
-<84> <010E>
-<85> <011A>
-<86> <0118>
-<87> <011E>
-<88> <0139>
-<89> <013D>
-<8A> <0141>
-<8B> <0143>
-<8C> <0147>
-<8D> <014A>
-<8E> <0150>
-<8F> <0154>
-<90> <0158>
-<91> <015A>
-<92> <0160>
-<93> <015E>
-<94> <0164>
-<95> <0162>
-<96> <0170>
-<97> <016E>
-<9A> <017D>
-<9B> <017B>
-<9C> <0132>
-<9D> <0130>
-<9E> <0111>
-<9F> <00A7>
-<A0> <0103>
-<A1> <0105>
-<A2> <0107>
-<A3> <010D>
-<A4> <010F>
-<A5> <011B>
-<A6> <0119>
-<A7> <011F>
-<A8> <013A>
-<A9> <013E>
-<AA> <0142>
-<AB> <0144>
-<AC> <0148>
-<AD> <014B>
-<AE> <0151>
-<AF> <0155>
-<B0> <0159>
-<B1> <015B>
-<B2> <0161>
-<B3> <015F>
-<B4> <0165>
-<B5> <0163>
-<B6> <0171>
-<B7> <016F>
-<B8> <00FF>
-<B9> <017A>
-<BA> <017E>
-<BB> <017C>
-<BC> <0133>
-<BD> <00A1>
-<BE> <00BF>
-<BF> <00A3>
-<D7> <0152>
-<DF> <00530053>
-<F7> <0153>
-<FF> <00DF>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-
-endstream
-endobj
-43 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/BaseFont /HHSFZO+SFRM1095
-/FontDescriptor 84 0 R
-/FirstChar 46
-/LastChar 120
-/Widths 81 0 R
-/Encoding 77 0 R
-/ToUnicode 93 0 R
->>
-endobj
-94 0 obj
-<<
-/Length 1996
->>
-stream
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-ecsx1095-cm-super-t1-0)
-%%Title: (TeX-ecsx1095-cm-super-t1-0 TeX ecsx1095-cm-super-t1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (ecsx1095-cm-super-t1)
-/Supplement 0
->> def
-/CMapName /TeX-ecsx1095-cm-super-t1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <FF>
-endcodespacerange
-11 beginbfrange
-<0E> <0F> <2039>
-<10> <12> <201C>
-<15> <16> <2013>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-<98> <99> <0178>
-<C0> <D6> <00C0>
-<D8> <DE> <00D8>
-<E0> <F6> <00E0>
-<F8> <FE> <00F8>
-endbfrange
-94 beginbfchar
-<00> <0060>
-<01> <00B4>
-<02> <02C6>
-<03> <02DC>
-<04> <00A8>
-<05> <02DD>
-<06> <02DA>
-<07> <02C7>
-<08> <02D8>
-<09> <00AF>
-<0A> <02D9>
-<0B> <00B8>
-<0C> <02DB>
-<0D> <201A>
-<13> <00AB>
-<14> <00BB>
-<17> <200C>
-<19> <0131>
-<1A> <0237>
-<1B> <00660066>
-<1C> <00660069>
-<1D> <0066006C>
-<1E> <006600660069>
-<1F> <00660066006C>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <002D>
-<80> <0102>
-<81> <0104>
-<82> <0106>
-<83> <010C>
-<84> <010E>
-<85> <011A>
-<86> <0118>
-<87> <011E>
-<88> <0139>
-<89> <013D>
-<8A> <0141>
-<8B> <0143>
-<8C> <0147>
-<8D> <014A>
-<8E> <0150>
-<8F> <0154>
-<90> <0158>
-<91> <015A>
-<92> <0160>
-<93> <015E>
-<94> <0164>
-<95> <0162>
-<96> <0170>
-<97> <016E>
-<9A> <017D>
-<9B> <017B>
-<9C> <0132>
-<9D> <0130>
-<9E> <0111>
-<9F> <00A7>
-<A0> <0103>
-<A1> <0105>
-<A2> <0107>
-<A3> <010D>
-<A4> <010F>
-<A5> <011B>
-<A6> <0119>
-<A7> <011F>
-<A8> <013A>
-<A9> <013E>
-<AA> <0142>
-<AB> <0144>
-<AC> <0148>
-<AD> <014B>
-<AE> <0151>
-<AF> <0155>
-<B0> <0159>
-<B1> <015B>
-<B2> <0161>
-<B3> <015F>
-<B4> <0165>
-<B5> <0163>
-<B6> <0171>
-<B7> <016F>
-<B8> <00FF>
-<B9> <017A>
-<BA> <017E>
-<BB> <017C>
-<BC> <0133>
-<BD> <00A1>
-<BE> <00BF>
-<BF> <00A3>
-<D7> <0152>
-<DF> <00530053>
-<F7> <0153>
-<FF> <00DF>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-
-endstream
-endobj
-75 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/BaseFont /FKLUEV+SFSX1095
-/FontDescriptor 86 0 R
-/FirstChar 98
-/LastChar 117
-/Widths 78 0 R
-/Encoding 77 0 R
-/ToUnicode 94 0 R
->>
-endobj
-95 0 obj
-<<
-/Length 1996
->>
-stream
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-ecsx1200-cm-super-t1-0)
-%%Title: (TeX-ecsx1200-cm-super-t1-0 TeX ecsx1200-cm-super-t1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (ecsx1200-cm-super-t1)
-/Supplement 0
->> def
-/CMapName /TeX-ecsx1200-cm-super-t1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <FF>
-endcodespacerange
-11 beginbfrange
-<0E> <0F> <2039>
-<10> <12> <201C>
-<15> <16> <2013>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-<98> <99> <0178>
-<C0> <D6> <00C0>
-<D8> <DE> <00D8>
-<E0> <F6> <00E0>
-<F8> <FE> <00F8>
-endbfrange
-94 beginbfchar
-<00> <0060>
-<01> <00B4>
-<02> <02C6>
-<03> <02DC>
-<04> <00A8>
-<05> <02DD>
-<06> <02DA>
-<07> <02C7>
-<08> <02D8>
-<09> <00AF>
-<0A> <02D9>
-<0B> <00B8>
-<0C> <02DB>
-<0D> <201A>
-<13> <00AB>
-<14> <00BB>
-<17> <200C>
-<19> <0131>
-<1A> <0237>
-<1B> <00660066>
-<1C> <00660069>
-<1D> <0066006C>
-<1E> <006600660069>
-<1F> <00660066006C>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <002D>
-<80> <0102>
-<81> <0104>
-<82> <0106>
-<83> <010C>
-<84> <010E>
-<85> <011A>
-<86> <0118>
-<87> <011E>
-<88> <0139>
-<89> <013D>
-<8A> <0141>
-<8B> <0143>
-<8C> <0147>
-<8D> <014A>
-<8E> <0150>
-<8F> <0154>
-<90> <0158>
-<91> <015A>
-<92> <0160>
-<93> <015E>
-<94> <0164>
-<95> <0162>
-<96> <0170>
-<97> <016E>
-<9A> <017D>
-<9B> <017B>
-<9C> <0132>
-<9D> <0130>
-<9E> <0111>
-<9F> <00A7>
-<A0> <0103>
-<A1> <0105>
-<A2> <0107>
-<A3> <010D>
-<A4> <010F>
-<A5> <011B>
-<A6> <0119>
-<A7> <011F>
-<A8> <013A>
-<A9> <013E>
-<AA> <0142>
-<AB> <0144>
-<AC> <0148>
-<AD> <014B>
-<AE> <0151>
-<AF> <0155>
-<B0> <0159>
-<B1> <015B>
-<B2> <0161>
-<B3> <015F>
-<B4> <0165>
-<B5> <0163>
-<B6> <0171>
-<B7> <016F>
-<B8> <00FF>
-<B9> <017A>
-<BA> <017E>
-<BB> <017C>
-<BC> <0133>
-<BD> <00A1>
-<BE> <00BF>
-<BF> <00A3>
-<D7> <0152>
-<DF> <00530053>
-<F7> <0153>
-<FF> <00DF>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-
-endstream
-endobj
-74 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/BaseFont /KKGAAD+SFSX1200
-/FontDescriptor 88 0 R
-/FirstChar 46
-/LastChar 117
-/Widths 79 0 R
-/Encoding 77 0 R
-/ToUnicode 95 0 R
->>
-endobj
-96 0 obj
-<<
-/Length 1996
->>
-stream
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-ecsx1440-cm-super-t1-0)
-%%Title: (TeX-ecsx1440-cm-super-t1-0 TeX ecsx1440-cm-super-t1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (ecsx1440-cm-super-t1)
-/Supplement 0
->> def
-/CMapName /TeX-ecsx1440-cm-super-t1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <FF>
-endcodespacerange
-11 beginbfrange
-<0E> <0F> <2039>
-<10> <12> <201C>
-<15> <16> <2013>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-<98> <99> <0178>
-<C0> <D6> <00C0>
-<D8> <DE> <00D8>
-<E0> <F6> <00E0>
-<F8> <FE> <00F8>
-endbfrange
-94 beginbfchar
-<00> <0060>
-<01> <00B4>
-<02> <02C6>
-<03> <02DC>
-<04> <00A8>
-<05> <02DD>
-<06> <02DA>
-<07> <02C7>
-<08> <02D8>
-<09> <00AF>
-<0A> <02D9>
-<0B> <00B8>
-<0C> <02DB>
-<0D> <201A>
-<13> <00AB>
-<14> <00BB>
-<17> <200C>
-<19> <0131>
-<1A> <0237>
-<1B> <00660066>
-<1C> <00660069>
-<1D> <0066006C>
-<1E> <006600660069>
-<1F> <00660066006C>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <002D>
-<80> <0102>
-<81> <0104>
-<82> <0106>
-<83> <010C>
-<84> <010E>
-<85> <011A>
-<86> <0118>
-<87> <011E>
-<88> <0139>
-<89> <013D>
-<8A> <0141>
-<8B> <0143>
-<8C> <0147>
-<8D> <014A>
-<8E> <0150>
-<8F> <0154>
-<90> <0158>
-<91> <015A>
-<92> <0160>
-<93> <015E>
-<94> <0164>
-<95> <0162>
-<96> <0170>
-<97> <016E>
-<9A> <017D>
-<9B> <017B>
-<9C> <0132>
-<9D> <0130>
-<9E> <0111>
-<9F> <00A7>
-<A0> <0103>
-<A1> <0105>
-<A2> <0107>
-<A3> <010D>
-<A4> <010F>
-<A5> <011B>
-<A6> <0119>
-<A7> <011F>
-<A8> <013A>
-<A9> <013E>
-<AA> <0142>
-<AB> <0144>
-<AC> <0148>
-<AD> <014B>
-<AE> <0151>
-<AF> <0155>
-<B0> <0159>
-<B1> <015B>
-<B2> <0161>
-<B3> <015F>
-<B4> <0165>
-<B5> <0163>
-<B6> <0171>
-<B7> <016F>
-<B8> <00FF>
-<B9> <017A>
-<BA> <017E>
-<BB> <017C>
-<BC> <0133>
-<BD> <00A1>
-<BE> <00BF>
-<BF> <00A3>
-<D7> <0152>
-<DF> <00530053>
-<F7> <0153>
-<FF> <00DF>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-
-endstream
-endobj
-73 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/BaseFont /RQIEES+SFSX1440
-/FontDescriptor 90 0 R
-/FirstChar 46
-/LastChar 116
-/Widths 80 0 R
-/Encoding 77 0 R
-/ToUnicode 96 0 R
->>
-endobj
-97 0 obj
-<<
-/Length 1996
->>
-stream
-%!PS-Adobe-3.0 Resource-CMap
-%%DocumentNeededResources: ProcSet (CIDInit)
-%%IncludeResource: ProcSet (CIDInit)
-%%BeginResource: CMap (TeX-ecsx2074-cm-super-t1-0)
-%%Title: (TeX-ecsx2074-cm-super-t1-0 TeX ecsx2074-cm-super-t1 0)
-%%Version: 1.000
-%%EndComments
-/CIDInit /ProcSet findresource begin
-12 dict begin
-begincmap
-/CIDSystemInfo
-<< /Registry (TeX)
-/Ordering (ecsx2074-cm-super-t1)
-/Supplement 0
->> def
-/CMapName /TeX-ecsx2074-cm-super-t1-0 def
-/CMapType 2 def
-1 begincodespacerange
-<00> <FF>
-endcodespacerange
-11 beginbfrange
-<0E> <0F> <2039>
-<10> <12> <201C>
-<15> <16> <2013>
-<21> <26> <0021>
-<28> <5F> <0028>
-<61> <7E> <0061>
-<98> <99> <0178>
-<C0> <D6> <00C0>
-<D8> <DE> <00D8>
-<E0> <F6> <00E0>
-<F8> <FE> <00F8>
-endbfrange
-94 beginbfchar
-<00> <0060>
-<01> <00B4>
-<02> <02C6>
-<03> <02DC>
-<04> <00A8>
-<05> <02DD>
-<06> <02DA>
-<07> <02C7>
-<08> <02D8>
-<09> <00AF>
-<0A> <02D9>
-<0B> <00B8>
-<0C> <02DB>
-<0D> <201A>
-<13> <00AB>
-<14> <00BB>
-<17> <200C>
-<19> <0131>
-<1A> <0237>
-<1B> <00660066>
-<1C> <00660069>
-<1D> <0066006C>
-<1E> <006600660069>
-<1F> <00660066006C>
-<20> <2423>
-<27> <2019>
-<60> <2018>
-<7F> <002D>
-<80> <0102>
-<81> <0104>
-<82> <0106>
-<83> <010C>
-<84> <010E>
-<85> <011A>
-<86> <0118>
-<87> <011E>
-<88> <0139>
-<89> <013D>
-<8A> <0141>
-<8B> <0143>
-<8C> <0147>
-<8D> <014A>
-<8E> <0150>
-<8F> <0154>
-<90> <0158>
-<91> <015A>
-<92> <0160>
-<93> <015E>
-<94> <0164>
-<95> <0162>
-<96> <0170>
-<97> <016E>
-<9A> <017D>
-<9B> <017B>
-<9C> <0132>
-<9D> <0130>
-<9E> <0111>
-<9F> <00A7>
-<A0> <0103>
-<A1> <0105>
-<A2> <0107>
-<A3> <010D>
-<A4> <010F>
-<A5> <011B>
-<A6> <0119>
-<A7> <011F>
-<A8> <013A>
-<A9> <013E>
-<AA> <0142>
-<AB> <0144>
-<AC> <0148>
-<AD> <014B>
-<AE> <0151>
-<AF> <0155>
-<B0> <0159>
-<B1> <015B>
-<B2> <0161>
-<B3> <015F>
-<B4> <0165>
-<B5> <0163>
-<B6> <0171>
-<B7> <016F>
-<B8> <00FF>
-<B9> <017A>
-<BA> <017E>
-<BB> <017C>
-<BC> <0133>
-<BD> <00A1>
-<BE> <00BF>
-<BF> <00A3>
-<D7> <0152>
-<DF> <00530053>
-<F7> <0153>
-<FF> <00DF>
-endbfchar
-endcmap
-CMapName currentdict /CMap defineresource pop
-end
-end
-%%EndResource
-%%EOF
-
-endstream
-endobj
-42 0 obj
-<<
-/Type /Font
-/Subtype /Type1
-/BaseFont /FEKEGK+SFSX2074
-/FontDescriptor 92 0 R
-/FirstChar 49
-/LastChar 116
-/Widths 82 0 R
-/Encoding 77 0 R
-/ToUnicode 97 0 R
->>
-endobj
-44 0 obj
-<<
-/Type /Pages
-/Count 5
-/Kids [12 0 R 46 0 R 50 0 R 55 0 R 59 0 R]
->>
-endobj
-98 0 obj
-<<
-/Type /Catalog
-/Pages 44 0 R
-/MarkInfo 76 0 R/Lang (en-US)/StructTreeRoot 5 0 R
->>
-endobj
-99 0 obj
-<<
-/Producer (pdfTeX-1.40.23)
-/Creator (TeX)
-/CreationDate (D:20210713163210+02'00')
-/ModDate (D:20210713163210+02'00')
-/Trapped /False
-/PTEX.Fullbanner (This is pdfTeX, Version 3.141592653-2.6-1.40.23 (TeX Live 2021/W32TeX) kpathsea version 6.3.3)
->>
-endobj
-xref
-0 100
-0000000002 65535 f
-0000007831 00000 n
-0000000003 00000 f
-0000000004 00000 f
-0000000000 00000 f
-0000011814 00000 n
-0000008990 00000 n
-0000009204 00000 n
-0000009355 00000 n
-0000009375 00000 n
-0000009498 00000 n
-0000000015 00000 n
-0000006042 00000 n
-0000009591 00000 n
-0000009682 00000 n
-0000009768 00000 n
-0000000046 00000 n
-0000009863 00000 n
-0000000077 00000 n
-0000009956 00000 n
-0000000108 00000 n
-0000010057 00000 n
-0000010136 00000 n
-0000000139 00000 n
-0000010229 00000 n
-0000000170 00000 n
-0000010330 00000 n
-0000010416 00000 n
-0000000201 00000 n
-0000010511 00000 n
-0000000232 00000 n
-0000010604 00000 n
-0000000263 00000 n
-0000010705 00000 n
-0000010791 00000 n
-0000000294 00000 n
-0000010886 00000 n
-0000000325 00000 n
-0000010980 00000 n
-0000000357 00000 n
-0000006184 00000 n
-0000000389 00000 n
-0000090532 00000 n
-0000081600 00000 n
-0000090710 00000 n
-0000006697 00000 n
-0000006555 00000 n
-0000006483 00000 n
-0000011082 00000 n
-0000006755 00000 n
-0000007033 00000 n
-0000006786 00000 n
-0000007175 00000 n
-0000006817 00000 n
-0000007525 00000 n
-0000007383 00000 n
-0000007311 00000 n
-0000011210 00000 n
-0000007583 00000 n
-0000008532 00000 n
-0000011303 00000 n
-0000007614 00000 n
-0000007645 00000 n
-0000011431 00000 n
-0000007676 00000 n
-0000007707 00000 n
-0000011559 00000 n
-0000007738 00000 n
-0000007769 00000 n
-0000011687 00000 n
-0000007800 00000 n
-0000008674 00000 n
-0000007878 00000 n
-0000088299 00000 n
-0000086066 00000 n
-0000083833 00000 n
-0000008954 00000 n
-0000079400 00000 n
-0000011918 00000 n
-0000012036 00000 n
-0000012479 00000 n
-0000012917 00000 n
-0000013368 00000 n
-0000013790 00000 n
-0000028759 00000 n
-0000029030 00000 n
-0000042285 00000 n
-0000042522 00000 n
-0000056052 00000 n
-0000056300 00000 n
-0000069104 00000 n
-0000069348 00000 n
-0000079155 00000 n
-0000079545 00000 n
-0000081778 00000 n
-0000084011 00000 n
-0000086244 00000 n
-0000088477 00000 n
-0000090797 00000 n
-0000090899 00000 n
-trailer
-<< /Size 100
-/Root 98 0 R
-/Info 99 0 R
-/ID [<A273A391B74CA8F331548AD088A757DA> <A273A391B74CA8F331548AD088A757DA>] >>
-startxref
-91167
-%%EOF
diff --git a/macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf b/macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
index 6ba2eec79e..ee9b314f4f 100644
--- a/macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
+++ b/macros/latex/contrib/tagpdf/ex-patch-sectioning-memoir.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
index 8f7271a6e6..d5dea39b12 100644
--- a/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
+++ b/macros/latex/contrib/tagpdf/ex-softhyphen.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
index 1d4b5312e9..a045fae9fa 100644
--- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
+++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
index d04f8824fb..affcdff51d 100644
--- a/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
+++ b/macros/latex/contrib/tagpdf/ex-spaceglyph-listings.tex
@@ -1,10 +1,11 @@
% !Mode:: "TeX:DE:UTF-8:Main"
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{uncompress,}
+\IfFormatAtLeastTF{2022-06-01}{}
+ {\RequirePackage{pdfmanagement-testphase}}
+\DocumentMetadata{uncompress,testphase=tagpdf}
\documentclass{article}
\usepackage{amsmath}
\usepackage[ngerman]{babel}
-\usepackage{tagpdf,listings}
+\usepackage{listings}
\makeatletter
%\def\lst@outputspace{\pdffakespace\ } %not so good
% this here works fine with luatex, if the font has a space glyph:
@@ -12,11 +13,11 @@
\def\lst@visiblespace{\lst@ttfamily{\char32}{\char32}}
% with pdftex this could work
%\def\lst@visiblespace{\lst@ttfamily{\pdffakespace\ }{\pdffakespace\ }}
-\tagpdfsetup{activate,interwordspace=on,show-spaces,log=v}
+\tagpdfsetup{show-spaces,log=v}
\begin{document}\pagestyle{empty}
-\tagmcbegin{tag=P}
+
\begin{lstlisting}[showspaces]
aaa aaa xxxx
\end{lstlisting}
-\tagmcend
+
\end{document} \ No newline at end of file
diff --git a/macros/latex/contrib/tagpdf/ex-structure-luatex.pdf b/macros/latex/contrib/tagpdf/ex-structure-luatex.pdf
deleted file mode 100644
index fce47848aa..0000000000
--- a/macros/latex/contrib/tagpdf/ex-structure-luatex.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-structure.tex b/macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
index 8ce5b624b8..1070b7c46d 100644
--- a/macros/latex/contrib/tagpdf/ex-structure.tex
+++ b/macros/latex/contrib/tagpdf/ex-structure-obsolete.tex
@@ -1,4 +1,9 @@
% !Mode:: "TeX:DE:UTF-8:Main"
+
+%!!!!!!!
+% obsolete in part (paratagging will interfere)
+% don't expect a correct output!
+%
\RequirePackage{pdfmanagement-testphase}
\DeclareDocumentMetadata{pdfversion=1.7,uncompress}
@@ -27,7 +32,6 @@
\pagestyle{fancy}
\fancyhf{}
-\cfoot{\tagmcbegin{artifact=pagination}\thepage\tagmcend}
\begin{document}
\tagstructbegin{tag=Sect}
diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
index 699f824495..337c049d53 100644
--- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
+++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/ex-tagpdf-template.tex b/macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
index a2b0db1164..c59ff33da3 100644
--- a/macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
+++ b/macros/latex/contrib/tagpdf/ex-tagpdf-template.tex
@@ -2,15 +2,22 @@
%this is more or less minimal template that can be used as starting point
%it doesn't set everything that would be needed!
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata
- {
- uncompress,
- pdfversion=2.0
- }
+
+% \DocumentMetadata requires a new pdfmanagement-testphase version! Older versions
+% should use \DeclareDocumentMetadata
+
+% with a new LaTeX it will not longer be needed to load pdfmanagment-testphase!
+\IfFormatAtLeastTF{2022-06-01}{}
+ {\RequirePackage{pdfmanagement-testphase}}
+\DocumentMetadata
+ {uncompress,
+ pdfversion=2.0,
+ testphase=tagpdf %load and activate tagpdf
+ }
+
\documentclass{scrartcl}
\usepackage[english]{babel}
-\usepackage{tagpdf}
+
\usepackage{iftex}
\iftutex
\usepackage{fontspec}
@@ -21,9 +28,6 @@
\tagpdfsetup
{
tabsorder=structure,
- activate, %adds Document structure
- paratagging, %activates tagging of paragraphs.
- interwordspace %actives interword spaces (lualatex, pdflatex)
}
\begin{document}
\pagestyle{empty} %
diff --git a/macros/latex/contrib/tagpdf/example-input-file.tex b/macros/latex/contrib/tagpdf/example-input-file.tex
deleted file mode 100644
index b85cfea571..0000000000
--- a/macros/latex/contrib/tagpdf/example-input-file.tex
+++ /dev/null
@@ -1,5 +0,0 @@
-%% LaTeX2e file `example-input-file.tex'
-%% generated by the `filecontents' environment
-%% from source `ex-AF-file' on 2021/02/23.
-%%
-Additional info!
diff --git a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
index f28a02ea6e..dcf7afb823 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-backend.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-backend.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -51,13 +51,13 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*luatex>
-\ProvidesExplFile {tagpdf-luatex.def} {2021-08-27} {0.92}
+\ProvidesExplFile {tagpdf-luatex.def} {2022-01-13} {0.93}
{tagpdf~driver~for~luatex}
% \end{macrocode}
% \section{Loading the lua}
@@ -161,8 +161,8 @@
local ProvidesLuaModule = {
name = "tagpdf",
- version = "0.92", --TAGVERSION
- date = "2021-08-27", --TAGDATE
+ version = "0.93", --TAGVERSION
+ date = "2022-01-13", --TAGDATE
description = "tagpdf lua code",
license = "The LATEX Project Public License 1.3c"
}
@@ -739,11 +739,6 @@ end
ltx.@@.func.markspaceoff=@@_deactivate_mark_space
% \end{macrocode}
% \end{macro}
-% \begin{macro}
-% {
-% default_space_char,
-% default_fontid,
-% }
% We need two local variable to setup a default space char.
% \begin{macrocode}
local default_space_char = node.new(GLYPH)
@@ -751,7 +746,6 @@ local default_fontid = font.id("TU/lmr/m/n/10")
default_space_char.char = 32
default_space_char.font = default_fontid
% \end{macrocode}
-% \end{macro}
% \begin{macro}
% {
% @@_space_chars_shipout,
diff --git a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
index 5cdbc60cf6..53f97383f8 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-checks.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-checks.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -52,7 +52,7 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{documentation}
% \section{Commands}
@@ -245,13 +245,60 @@
% INFO PARENTTREE-NUMENTRY & 3 \\
% INFO PARENTTREE-STRUCT-OBJREF & 4
% \end{longtable}
-
+%
+% \subsection{Debug mode messages and code}
+% If the package tagpdf-debug is loaded a number of commands are redefined and
+% enhanced with additional commands which can be used to output debug messages or
+% collect statistics. The commands are present but do nothing if the log-level is zero.
+% \begin{tabular}{llll}
+% command & name & action & remark\\\hline
+% |\tag_mc_begin:n| & mc-begin-insert & msg \\
+% & mc-begin-ignore & msg & if inactive \\
+% \end{tabular}
+%
+% \subsection{Messages}
+% \begin{function}{
+% mc-nested,
+% mc-tag-missing,
+% mc-label-unknown,
+% mc-used-twice,
+% mc-used-twice,
+% mc-not-open,
+% mc-pushed,
+% mc-popped,
+% mc-current}
+% Various messages related to mc-chunks. TODO document their meaning.
+% \end{function}
+% \begin{function}{struct-no-objnum,struct-faulty-nesting,
+% struct-missing-tag,struct-used-twice,struct-label-unknown,struct-show-closing}
+% Various messages related to structure. TODO document their meaning.
+% \end{function}
+%
+% \begin{function}{attr-unknown}
+% Message if an attribute i sunknown.
+% \end{function}
+%
+% \begin{function}{role-missing,role-unknown,role-unknown-tag,role-tag,new-tag}
+% Messages related to role mapping.
+% \end{function}
+%
+% \begin{function}{tree-mcid-index-wrong}
+% Used in the tree code, typically indicates the document must be rerun.
+% \end{function}
+%
+% \begin{function}{sys-no-interwordspace}
+% Message if an engine doesn't support inter word spaces
+% \end{function}
+%
+% \begin{function}{para-hook-count-wrong}
+% Message if the number of begin paragraph and end paragraph differ. This normally means faulty structure.
+% \end{function}
% \end{documentation}
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-checks-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-checks-code} {2022-01-13} {0.93}
{part of tagpdf - code related to checks, conditionals, debugging and messages}
%</header>
% \end{macrocode}
@@ -791,5 +838,88 @@
% \begin{macrocode}
%</package>
% \end{macrocode}
+% \begin{macrocode}
+%<*debug>
+% \end{macrocode}
+% Code for tagpdf-debug. This will probably change over time.
+% At first something for the mc commands.
+% \begin{macrocode}
+\msg_new:nnn { tag / debug } {mc-begin} { MC~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:] }
+\msg_new:nnn { tag / debug } {mc-end} { MC~end~#1~[\msg_line_context:] }
+
+\cs_new_protected:Npn \@@_debug_mc_begin_insert:n #1
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnnn { tag / debug } {mc-begin} {inserted} { #1 }
+ }
+ }
+\cs_new_protected:Npn \@@_debug_mc_begin_ignore:n #1
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnnn { tag / debug } {mc-begin } {ignored} { #1 }
+ }
+ }
+\cs_new_protected:Npn \@@_debug_mc_end_insert:
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnn { tag / debug } {mc-end} {inserted}
+ }
+ }
+\cs_new_protected:Npn \@@_debug_mc_end_ignore:
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnn { tag / debug } {mc-end } {ignored}
+ }
+ }
+% \end{macrocode}
+% And now something for the structures
+% \begin{macrocode}
+\msg_new:nnn { tag / debug } {struct-begin}
+ {
+ Struct~begin~#1~with~options:~\tl_to_str:n{#2}~[\msg_line_context:]
+ }
+\msg_new:nnn { tag / debug } {struct-end}
+ {
+ Struct~end~#1~[\msg_line_context:]
+ }
+
+\cs_new_protected:Npn \@@_debug_struct_begin_insert:n #1
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnnn { tag / debug } {struct-begin} {inserted} { #1 }
+ \seq_log:N \g_@@_struct_tag_stack_seq
+ }
+ }
+\cs_new_protected:Npn \@@_debug_struct_begin_ignore:n #1
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnnn { tag / debug } {struct-begin } {ignored} { #1 }
+ }
+ }
+\cs_new_protected:Npn \@@_debug_struct_end_insert:
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnn { tag / debug } {struct-end} {inserted}
+ \seq_log:N \g_@@_struct_tag_stack_seq
+ }
+ }
+\cs_new_protected:Npn \@@_debug_struct_end_ignore:
+ {
+ \int_compare:nNnT { \l_@@_loglevel_int } > {0}
+ {
+ \msg_note:nnn { tag / debug } {struct-end } {ignored}
+ }
+ }
+% \end{macrocode}
+% \begin{macrocode}
+%</debug>
+% \end{macrocode}
% \end{implementation}
% \PrintIndex
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.pdf b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
index 46d3a425fd..6f92329af5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf-code.tex b/macros/latex/contrib/tagpdf/tagpdf-code.tex
index 5d29d0ba6b..d51c209929 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-code.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf-code.tex
@@ -34,8 +34,15 @@
% version data.
\usepackage{longtable}
\usepackage{tagpdf}
-
-
+\makeatletter
+%\def\@setupverbvisiblespace{}
+%\def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
+% \bgroup
+% \verb@eol@error \let\do\@makeother \dospecials
+% \verbatim@font\@noligs
+% \language\l@nohyphenation
+% \@ifstar\@verb\@verb}
+\makeatother
\begin{document}
\GetFileInfo{tagpdf.sty}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
index 903b38d5a3..994e3b0b85 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-generic.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-mc.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{documentation}
% \end{documentation}
@@ -59,9 +59,13 @@
% \begin{macrocode}
%<@@=tag>
%<*generic>
-\ProvidesExplPackage {tagpdf-mc-code-generic} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-mc-code-generic} {2022-01-13} {0.93}
{part of tagpdf - code related to marking chunks - generic mode}
%</generic>
+%<*debug>
+\ProvidesExplPackage {tagpdf-debug-generic} {2022-01-13} {0.93}
+ {part of tagpdf - debugging code related to marking chunks - generic mode}
+%</debug>
% \end{macrocode}
%
%\subsection{Variables}
@@ -653,6 +657,7 @@
% It is use by the get command.
% \begin{macrocode}
\cs_new:Nn \@@_get_data_mc_tag: { \g_@@_mc_key_tag_tl }
+%</generic>
% \end{macrocode}
% \end{macro}
%
@@ -663,10 +668,20 @@
% the state is passed to the end command through a global var and
% a global boolean.
% \begin{macrocode}
+%<*generic|debug>
+%<*generic>
\cs_new_protected:Npn \tag_mc_begin:n #1 %#1 keyval
{
\@@_check_if_active_mc:T
{
+%</generic>
+%<*debug>
+\cs_set_protected:Npn \tag_mc_begin:n #1 %#1 keyval
+ {
+ \@@_check_if_active_mc:TF
+ {
+ \@@_debug_mc_begin_insert:n { #1 }
+%</debug>
\group_begin: %hm
\@@_check_mc_if_nested:
\bool_gset_true:N \g_@@_in_mc_bool
@@ -695,18 +710,38 @@
}
\group_end:
}
+%<*debug>
+ {
+ \@@_debug_mc_begin_ignore:n { #1 }
+ }
+%</debug>
}
+%<*generic>
\cs_new_protected:Nn \tag_mc_end:
{
\@@_check_if_active_mc:T
{
+%</generic>
+%<*debug>
+\cs_set_protected:Nn \tag_mc_end:
+ {
+ \@@_check_if_active_mc:TF
+ {
+ \@@_debug_mc_end_insert:
+%</debug>
\@@_check_mc_if_open:
\bool_gset_false:N \g_@@_in_mc_bool
\tl_gset:Nn \g_@@_mc_key_tag_tl { }
\@@_mc_emc:
\@@_mc_end_marks:
}
+%<*debug>
+ {
+ \@@_debug_mc_end_ignore:
+ }
+%</debug>
}
+%</generic|debug>
% \end{macrocode}
% \end{macro}
@@ -717,12 +752,15 @@
% we assume that their values are safe.
% \begin{macro}
% {
-% tag,raw,
-% alttext,
-% actualtext,
-% label,artifact
+% tag (mc-key),
+% raw (mc-key),
+% alttext (mc-key),
+% actualtext (mc-key),
+% label (mc-key),
+% artifact (mc-key)
% }
% \begin{macrocode}
+%<*generic>
\keys_define:nn { @@ / mc }
{
tag .code:n = % the name (H,P,Span) etc
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
index 2698b7ad59..d8dba57fd1 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-luacode.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-mc.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,9 +50,8 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
-
% \begin{implementation}
% The code is splitted into three parts: code shared by all engines,
% code specific to luamode and code not used by luamode.
@@ -91,7 +90,7 @@
% \begin{macrocode}
%<@@=tag>
%<*luamode>
-\ProvidesExplPackage {tagpdf-mc-code-lua} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-mc-code-lua} {2022-01-13} {0.93}
{tagpdf - mc code only for the luamode }
%</luamode>
% \end{macrocode}
@@ -159,7 +158,7 @@
\cs_new_protected:Npn \@@_add_missing_mcs_to_stream:Nn #1#2 {}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{\@@_mc_if_in:,\tag_mc_if_in:}
+% \begin{macro}[pTF]{\@@_mc_if_in:,\tag_mc_if_in:}
% This tests, if we are in an mc, for attributes
% this means to check against a number.
% \begin{macrocode}
@@ -358,10 +357,12 @@
% \subsection{Key definitions}
% \begin{macro}
% {
-% tag,raw,
-% alttext,
-% actualtext,
-% label,artifact
+% tag (mc-key),
+% raw (mc-key),
+% alttext (mc-key),
+% actualtext (mc-key),
+% label (mc-key),
+% artifact (mc-key)
% }
% TODO: check conversion, check if local/global setting is right.
% \begin{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
index 17f6df0fcf..852f1d0846 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-mc-shared.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-mc.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -120,7 +120,7 @@
% The following keys can be used with |\tag_mc_begin:n|, |\tagmcbegin|,
% |\tag_mc_begin_pop:n|,
%
-% \begin{function}{tag}
+% \begin{function}{tag (mc-key)}
% This key is required, unless artifact is used.
% The value is a tag like |P| or |H1| without a slash at the begin,
% this is added by the code.
@@ -131,7 +131,7 @@
% (some ascii with numbers like \texttt{H4} is fine).
% \end{function}
%
-% \begin{function}{artifact}
+% \begin{function}{artifact (mc-key)}
% This will setup the marked content as an artifact. The key should be used
% for content that should be ignored.
% The key can take one of the values |pagination|,
@@ -139,33 +139,33 @@
% (this is the default).
% \end{function}
%
-% \begin{function}{raw}
+% \begin{function}{raw (mc-key)}
% This key allows to add more entries to the properties dictionary.
% The value must be correct, low-level PDF. E.g.
% \verb+raw=/Alt (Hello)+ will insert an alternative Text.
% \end{function}
%
-% \begin{function}{alttext}
+% \begin{function}{alttext (mc-key)}
% This key inserts an \texttt{/Alt} value in the property dictionary of the BDC operator.
% The value is handled as verbatim string, commands are not expanded.
% The value will be expanded first once.
% \end{function}
%
-% \begin{function}{actualtext}
+% \begin{function}{actualtext (mc-key)}
% This key inserts an \texttt{/ActualText} value in the property dictionary
% of the BDC operator. The value is handled as verbatim string,
% commands are not expanded.
% The value will be expanded first once.
% \end{function}
%
-% \begin{function}{label}
+% \begin{function}{label (mc-key)}
% This key sets a label by which one can call the marked content
% later in another structure
% (if it has been stashed with the |stash| key).
% Internally the label name will start with \texttt{tagpdf-}.
% \end{function}
%
-% \begin{function}{stash}
+% \begin{function}{stash (mc-key)}
% This \enquote{stashes} an mc-chunk: it is not inserted into the current structure.
% It should be normally be used along with a label to be able to use the mc-chunk
% in another place.
@@ -178,7 +178,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-mc-code-shared} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-mc-code-shared} {2022-01-13} {0.93}
{part of tagpdf - code related to marking chunks -
code shared by generic and luamode }
%</header>
@@ -407,7 +407,7 @@
% \subsection{Keys}
% This are the keys where the code can be shared between the modes.
%
-% \begin{macro}{stash,__artifact-bool,__artifact-type}
+% \begin{macro}{stash (mc-key),__artifact-bool,__artifact-type}
% the two internal artifact keys are use to define the public |artifact|.
% For now we add support for the subtypes Header and Footer.
% Watermark,PageNum, LineNum,Redaction,Bates will be added if some use case
diff --git a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
index 78dccdc02a..f8b0589bb5 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-roles.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-roles.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,13 +50,48 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
+% \begin{documentation}
+% \begin{function}
+% {
+% add-new-tag (setup-key),
+% tag (rolemap-key),
+% namespace (rolemap-key),
+% role (rolemap-key),
+% role-namespace (rolemap-key)
+% }
+% This key can be used in \cs{tagpdfsetup} to declare and rolemap new tags.
+% It takes as value a key-value list or a simple |new-tag/old-tag|.
+%
+% The key-value list knows the following keys:
+% \begin{description}
+% \item[\texttt{tag}] This is the name of the new type as it should then be used in \cs{tagstructbegin}.
+% \item[\texttt{namespace}] This is the namespace of the new type.
+% The value should be a shorthand of a namespace.
+% The allowed values are currently |pdf|, |pdf2|, |mathml| and |user|.
+% The default value (and recommended value for a new tag) is |user|.
+% The public name of the user namespace is |tag/NS/user|. This can be used to reference
+% the namespace e.g. in attributes.
+% \item[\texttt{role}] This is the type the tag should be mapped too.
+% In a PDF 1.7 or earlier this is normally a type from the |pdf| set,
+% in PDF 2.0 from the |pdf|, |pdf2| and |mathml| set.
+% It can also be a user type, or a still unknown type.
+% The PDF format allows mapping to be done transitively.
+% But tagpdf can't/won't check such unusual role mapping.
+% \item[\texttt{role-namespace}] If the role is a known type
+% the default value is the default namespace of this type.
+% If the role is unknown, |user| is used and
+% the code hopes that the type will be defined later. With this key a specific
+% namespace can be forced.
+% \end{description}
+% \end{function}
+% \end{documentation}
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-roles-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-roles-code} {2022-01-13} {0.93}
{part of tagpdf - code related to roles and structure names}
%</header>
% \end{macrocode}
@@ -631,9 +666,15 @@
% \end{macrocode}
% \end{macro}
% \subsection{Key-val user interface}
-% The user interface use the key |add-new-tag|, which takes either a
+% The user interface uses the key |add-new-tag|, which takes either a
% keyval list as argument, or a tag/role.
-% \begin{macro}{tag,tag-namespace,role,role-namespace,add-new-tag}
+% \begin{macro}
+% {
+% tag (rolemap-key),
+% tag-namespace (rolemap-key),
+% role (rolemap-key),
+% role-namespace (rolemap-key),
+% add-new-tag (setup-key)}
% \begin{macrocode}
\keys_define:nn { @@ / tag-role }
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-space.dtx b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
index c2a999cc1b..40c4367ba2 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-space.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-space.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-space.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,13 +50,25 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
+% \begin{documentation}
+% \begin{function}{interwordspace (setup-key)}
+% This key allows to activate/deactivate the real space chars if the engine supports
+% it. The allowed values are |true|, |on|, |false|, |off|.
+% \end{function}
+% \begin{function}{show-spaces (setup-key)}
+% This key works only with luatex and shows with small red
+% bars where spaces have been inserted. This is only for debugging and
+% is not completly reliable (and change affect other literals and tagging), so it
+% should be used with care.
+% \end{function}
+% \end{documentation}
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-space-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-space-code} {2022-01-13} {0.93}
{part of tagpdf - code related to real space chars}
%</header>
% \end{macrocode}
@@ -65,7 +77,7 @@
% support real space chars. Most of the code for luatex which uses attributes
% is in the lua code, here are only the keys.
%
-% \begin{macro}{interwordspace,show-spaces}
+% \begin{macro}{interwordspace (setup-key),show-spaces (setup-key)}
% \begin{macrocode}
%<*package>
\sys_if_engine_pdftex:T
diff --git a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
index 610d631333..6f03c5ac0f 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-struct.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-struct.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{documentation}
% \section{Public Commands}
@@ -94,9 +94,9 @@
% \end{function}
% \section{Public keys}
% \subsection{Keys for the structure commands}
-% \begin{function}{tag}
+% \begin{function}{tag (struct-key)}
% This is required. The value of the key is normally one of the
-% standard types listed in section \ref{sec:new-tag}.
+% standard types listed in the main tagpdf documentation.
% It is possible to setup new tags/types.
% The value can also be of the form |type/NS|, where |NS| is the
% shorthand of a declared name space.
@@ -104,54 +104,54 @@
% This allows to use a different name space than
% the one connected by default to the tag. But normally this should not be needed.
% \end{function}
-% \begin{function}{stash}
+% \begin{function}{stash (struct-key)}
% Normally a new structure inserts itself as a kid
% into the currently active structure. This key prohibits this.
% The structure is nevertheless from now on
% \enquote{the current active structure}
% and parent for following marked content and structures.
% \end{function}
-% \begin{function}{label}
+% \begin{function}{label (struct-key)}
% This key sets a label by which
% one can use the structure later in another structure.
% Internally the label name will start with \texttt{tagpdfstruct-}.
% \end{function}
-% \begin{function}{title,title-o}
+% \begin{function}{title (struct-key),title-o (struct-key)}
% This keys allows to set the dictionary entry
% \texttt{/Title} in the structure object.
% The value is handled as verbatim string and hex encoded.
% Commands are not expanded. |title-o| will expand the value once.
% \end{function}
%
-% \begin{function}{alttext}
+% \begin{function}{alttext (struct-key)}
% This key inserts an \texttt{/Alt} value in the dictionary of structure object.
% The value is handled as verbatim string and hex encoded.
% The value will be expanded first once.
% \end{function}
-% \begin{function}{actualtext}
+% \begin{function}{actualtext (struct-key)}
% This key inserts an \texttt{/ActualText} value in the dictionary of structure object.
% The value is handled as verbatim string and hex encoded.
% The value will be expanded first once.
% \end{function}
-% \begin{function}{lang}
+% \begin{function}{lang (struct-key)}
% This key allows to set the language for a structure element. The value should be a bcp-identifier,
% e.g. |de-De|.
% \end{function}
-% \begin{function}{ref}
+% \begin{function}{ref (struct-key)}
% This key allows to add references to other structure elements,
% it adds the |/Ref| array to the structure.
% The value should be a comma separated list of structure labels
% set with the |label| key. e.g. |ref={label1,label2}|.
% \end{function}
-% \begin{function}{E}
+% \begin{function}{E (struct-key)}
% This key sets the |/E| key, the expanded form of an
% abbreviation or an acronym
% (I couldn't think of a better name, so I sticked to E).
% \end{function}
-% \begin{function}{AF,AFinline,AFinline-o}
+% \begin{function}{AF (struct-key),AFinline (struct-key),AFinline-o (struct-key)}
% \begin{syntax}
% AF = \meta{object name}\\
-% AF-inline = \meta{text content}
+% AF-inline = \meta{text content}\\
% \end{syntax}
% These keys allows to reference an associated file in the structure element.
% The value \meta{object name} should be the name of an object pointing
@@ -165,9 +165,11 @@
% Future versions will perhaps extend this to more mime types, but it is
% still a research task to find out what is really needed.
%
+% |AF| can be used more than once, to associate more than one file. The inline
+% keys can be used only once per structure. Additional calls are ignored.
% \end{function}
%
-% \begin{function}{attribute}
+% \begin{function}{attribute (struct-key)}
% This key takes as argument a comma list of attribute names
% (use braces to protect the commas from the external key-val parser)
% and allows to add one or more attribute dictionary entries in
@@ -179,7 +181,7 @@
%
% \end{function}
%
-% \begin{function}{attribute-class}
+% \begin{function}{attribute-class (struct-key)}
% This key takes as argument a comma list of attribute class names
% (use braces to protect the commas from the external key-val parser)
% and allows to add one or more attribute classes to the structure object.
@@ -188,7 +190,7 @@
% must be declared first in \cs{tagpdfsetup}.
% \end{function}
% \subsection{Setup keys}
-% \begin{function}{newattribute}
+% \begin{function}{newattribute (setup-key)}
% \begin{syntax}
% newattribute = \Arg{name}\Arg{Content}
% \end{syntax}
@@ -206,12 +208,20 @@
% \end{verbatim}
%
% \end{function}
+% \begin{function}{root-AF (setup-key)}
+% \begin{syntax}
+% root-AF = \meta{object name}
+% \end{syntax}
+% This key can be used in the setup command \cs{tagpdfsetup} and allows
+% to add associated files to the root structure. Like |AF| it can be used more than
+% once to add more than one file.
+% \end{function}
% \end{documentation}
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-struct-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-struct-code} {2022-01-13} {0.93}
{part of tagpdf - code related to storing structure}
%</header>
% \end{macrocode}
@@ -313,7 +323,8 @@
ParentTreeNextKey, % optional
RoleMap,
ClassMap,
- Namespaces
+ Namespaces,
+ AF %pdf 2.0
}
\seq_const_from_clist:Nn \c_@@_struct_StructElem_entries_seq
@@ -742,11 +753,16 @@
% at the begin.
% \begin{macro}
% {
-% label,stash,tag,
-% title,title-o,
-% alttext,
-% actualtext,
-% lang,ref,E
+% label (struct-key),
+% stash (struct-key),
+% tag (struct-key),
+% title (struct-key),
+% title-o (struct-key),
+% alttext (struct-key),
+% actualtext (struct-key),
+% lang (struct-key),
+% ref (struct-key),
+% E (struct-key)
% }
% \begin{macrocode}
\keys_define:nn { @@ / struct }
@@ -854,22 +870,51 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{AF,AFinline,AFinline-o}
+% \begin{macro}{AF (struct-key),AFinline (struct-key),AFinline-o (struct-key)}
% keys for the AF keys (associated files). They use commands from l3pdffile!
% The stream variants use txt as extension to get the mimetype.
% TODO: check if this should be configurable. For math we will perhaps need another
% extension.
+% AF is an array and can be used more than once, so we store it in a tl.
+% which is expanded.
+% AFinline can be use only once (more quite probably doesn't make sense).
% \begin{macrocode}
+\cs_new_protected:Npn \@@_struct_add_AF:nn #1 #2 % #1 struct num #2 object name
+ {
+ \tl_if_exist:cTF
+ {
+ g_@@_struct_#1_AF_tl
+ }
+ {
+ \tl_gput_right:cx
+ { g_@@_struct_#1_AF_tl }
+ { ~ \pdf_object_ref:n {#2} }
+ }
+ {
+ \tl_new:c
+ { g_@@_struct_#1_AF_tl }
+ \tl_gset:cx
+ { g_@@_struct_#1_AF_tl }
+ { \pdf_object_ref:n {#2} }
+ }
+ }
+\cs_generate_variant:Nn \@@_struct_add_AF:nn {en,ee}
\keys_define:nn { @@ / struct }
{
AF .code:n = % AF property
{
\pdf_object_if_exist:nTF {#1}
{
+ \@@_struct_add_AF:en { \int_eval:n {\c@g_@@_struct_abs_int} }{#1}
\@@_prop_gput:cnx
{ g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_prop }
{ AF }
- { \pdf_object_ref:n {#1} }
+ {
+ [
+ \tl_use:c
+ { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_AF_tl }
+ ]
+ }
}
{
@@ -879,16 +924,24 @@
{
\group_begin:
\pdf_object_if_exist:eF {@@/fileobj\int_use:N\c@g_@@_struct_abs_int}
- {
- \pdffile_embed_stream:nxx
- {#1}
- {tag-AFfile\int_use:N\c@g_@@_struct_abs_int.txt}
- {@@/fileobj\int_use:N\c@g_@@_struct_abs_int}
- }
- \@@_prop_gput:cnx
- { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop }
- { AF }
- { \pdf_object_ref:e {@@/fileobj\int_use:N\c@g_@@_struct_abs_int } }
+ {
+ \pdffile_embed_stream:nxx
+ {#1}
+ {tag-AFfile\int_use:N\c@g_@@_struct_abs_int.txt}
+ {@@/fileobj\int_use:N\c@g_@@_struct_abs_int}
+ \@@_struct_add_AF:ee
+ { \int_eval:n {\c@g_@@_struct_abs_int} }
+ { @@/fileobj\int_use:N\c@g_@@_struct_abs_int }
+ \@@_prop_gput:cnx
+ { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop }
+ { AF }
+ {
+ [
+ \tl_use:c
+ { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_AF_tl }
+ ]
+ }
+ }
\group_end:
}
,AFinline-o .code:n =
@@ -900,24 +953,63 @@
{#1}
{tag-AFfile\int_use:N\c@g_@@_struct_abs_int.txt}
{@@/fileobj\int_use:N\c@g_@@_struct_abs_int}
+ \@@_struct_add_AF:ee
+ { \int_eval:n {\c@g_@@_struct_abs_int} }
+ { @@/fileobj\int_use:N\c@g_@@_struct_abs_int }
+ \@@_prop_gput:cnx
+ { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop }
+ { AF }
+ {
+ [
+ \tl_use:c
+ { g_@@_struct_\int_eval:n {\c@g_@@_struct_abs_int}_AF_tl }
+ ]
+ }
}
- \@@_prop_gput:cnx
- { g_@@_struct_\int_use:N\c@g_@@_struct_abs_int _prop }
- { AF }
- { \pdf_object_ref:e {@@/fileobj\int_use:N\c@g_@@_struct_abs_int } }
\group_end:
}
}
+%</package>
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{root-AF (setup-key)}
+% The root structure can take AF keys too, so we provide a key for it.
+% This key is used with |\tagpdfsetup|, not in a structure!
+% \begin{macrocode}
+\keys_define:nn { @@ / setup }
+ {
+ root-AF .code:n =
+ {
+ \pdf_object_if_exist:nTF {#1}
+ {
+ \@@_struct_add_AF:en { 0 }{#1}
+ \@@_prop_gput:cnx
+ { g_@@_struct_0_prop }
+ { AF }
+ {
+ [
+ \tl_use:c
+ { g_@@_struct_0_AF_tl }
+ ]
+ }
+ }
+ {
+
+ }
+ },
+ }
% \end{macrocode}
% \end{macro}
-%
% \section{User commands}
%
% \begin{macro}{\tag_struct_begin:n,\tag_struct_end:}
% \begin{macrocode}
-\cs_new_protected:Npn \tag_struct_begin:n #1 %#1 key-val
+%<*package|debug>
+%<package>\cs_new_protected:Npn \tag_struct_begin:n #1 %#1 key-val
+%<debug>\cs_set_protected:Npn \tag_struct_begin:n #1 %#1 key-val
{
- \@@_check_if_active_struct:T
+%<package>\@@_check_if_active_struct:T
+%<debug>\@@_check_if_active_struct:TF
{
\group_begin:
\int_gincr:N \c@g_@@_struct_abs_int
@@ -970,16 +1062,18 @@
}
%\prop_show:c { g_@@_struct_\g_@@_struct_stack_current_tl _prop }
%\seq_show:c {g_@@_struct_kids_\l_@@_struct_stack_parent_tmpa_tl _seq}
+%<debug> \@@_debug_struct_begin_insert:n { #1 }
\group_end:
}
+%<debug>{ \@@_debug_struct_begin_ignore:n { #1 }}
}
-
-
-\cs_new_protected:Nn \tag_struct_end:
+%<package>\cs_new_protected:Nn \tag_struct_end:
+%<debug>\cs_set_protected:Nn \tag_struct_end:
{ %take the current structure num from the stack:
%the objects are written later, lua mode hasn't all needed info yet
%\seq_show:N \g_@@_struct_stack_seq
- \@@_check_if_active_struct:T
+%<package>\@@_check_if_active_struct:T
+%<debug>\@@_check_if_active_struct:TF
{
\seq_gpop:NN \g_@@_struct_tag_stack_seq \l_@@_tmpa_tl
\seq_gpop:NNTF \g_@@_struct_stack_seq \l_@@_tmpa_tl
@@ -999,14 +1093,18 @@
{
\tl_gset:NV \g_@@_struct_tag_tl \l_@@_tmpa_tl
}
+%<debug>\@@_debug_struct_end_insert:
}
+%<debug>{\@@_debug_struct_end_ignore:}
}
+%</package|debug>
% \end{macrocode}
% \end{macro}
% \begin{macro}{\tag_struct_use:n}
% This command allows to use a stashed structure in another place.
% TODO: decide how it should be guarded. Probably by the struct-check.
% \begin{macrocode}
+%<*package>
\cs_new_protected:Nn \tag_struct_use:n %#1 is the label
{
\@@_check_if_active_struct:T
@@ -1073,7 +1171,7 @@
% \section{Attributes and attribute classes}
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {tagpdf-attr-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-attr-code} {2022-01-13} {0.93}
{part of tagpdf - code related to attributes and attribute classes}
%</header>
% \end{macrocode}
@@ -1101,7 +1199,7 @@
% \end{macrocode}
% \end{variable}
% \subsection{Commands and keys}
-% \begin{macro}{\@@_attr_new_entry:nn,newattribute}
+% \begin{macro}{\@@_attr_new_entry:nn,newattribute (setup-key)}
% This allows to define attributes. Defined attributes
% are stored in a global property. |newattribute| expects
% two brace group, the name and the content. The content typically
@@ -1132,7 +1230,7 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{attribute-class}
+% \begin{macro}{attribute-class (struct-key)}
% attribute-class has to store the used attribute names so that
% they can be added to the ClassMap later.
% \begin{macrocode}
@@ -1172,7 +1270,7 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{attribute}
+% \begin{macro}{attribute (struct-key)}
% \begin{macrocode}
\keys_define:nn { @@ / struct }
{
diff --git a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
index b8e1b0d54a..e6964666d9 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-tree.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-tree.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -51,13 +51,13 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{implementation}
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-tree-code} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-tree-code} {2022-01-13} {0.93}
{part of tagpdf - code related to writing trees and dictionaries to the pdf}
%</header>
% \end{macrocode}
diff --git a/macros/latex/contrib/tagpdf/tagpdf-user.dtx b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
index 23737dfc29..2b58d81659 100644
--- a/macros/latex/contrib/tagpdf/tagpdf-user.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf-user.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf-user.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -50,7 +50,7 @@
% }^^A
% }
%
-% \date{Version 0.92, released 2021-08-27}
+% \date{Version 0.93, released 2022-01-13}
% \maketitle
% \begin{documentation}
% \section{Setup commands}
@@ -60,7 +60,18 @@
% \end{syntax}
% This is the main setup command to adapt the behaviour of tagpdf.
% It can be used in the preamble and in the document (but not all keys make sense there).
+% \end{function}
%
+% \begin{function}{activate (setup-key)}
+% And additional setup key which combine the other activate keys
+% |activate-mc|, |activate-tree|, |activate-struct| and additionally
+% add a document structure.
+% \end{function}
+%
+%
+% \begin{function}{\tagpdfifluatexTF,\tagpdfifluatexT,\tagpdfifpdftexT}
+% small wrappers around engine tests. This functions should not be used and will be removed
+% in one of the next versions.
% \end{function}
%
% \section{Commands related to mc-chunks}
@@ -76,7 +87,7 @@
% and \cs{tagmcend} will issue in horizontal mode an \cs{unskip}.
% \end{function}
%
-% \begin{function}{\tagmcifin}
+% \begin{function}{\tagmcifinTF}
% \begin{syntax}
% \cs{tagmcifin} \Arg{true code}\Arg{false code}
% \end{syntax}
@@ -112,7 +123,7 @@
% necessarly stops the compilation. The keys and their function are described below.
% \end{function}
%
-% \begin{function}{mc-data}
+% \begin{function}{mc-data (show-key)}
% \begin{syntax}
% |mc-data| = \meta{number}
% \end{syntax}
@@ -123,7 +134,7 @@
% newpage. The value is a positive integer and sets the first mc-shown. If no value
% is given, 1 is used and so all mc-chunks created so far are shown.
% \end{function}
-% \begin{function}{mc-current}
+% \begin{function}{mc-current (show-key)}
% \begin{syntax}
% |mc-current|
% \end{syntax}
@@ -131,7 +142,14 @@
% chunk is open it shows only the state of the abs count. It works in all mode,
% but the output in luamode looks different.
% \end{function}
-% \begin{function}{struct-stack}
+% \begin{function}{mc-marks (show-key)}
+% \begin{syntax}
+% |mc-marks| = |show|\verb+|+|use|
+% \end{syntax}
+% This key helps to debug the page marks. It should only be used at shipout in
+% header or footer.
+% \end{function}
+% \begin{function}{struct-stack (show-key)}
% \begin{syntax}
% |struct-stack| = |log|\verb+|+|show|
% \end{syntax}
@@ -163,7 +181,7 @@
% faulty code, e.g. a missing |\par| at the end of a low-level vbox can highly
% confuse the tagging. The tags should be carefully checked if this is used.
%
-% \begin{function}{paratagging,paratagging-show}
+% \begin{function}{paratagging (setup-key),paratagging-show (setup-key)}
% \begin{syntax}
% |paratagging| = |true|\verb+|+|false|\\
% |paratagging-show| = |true|\verb+|+|false|\\
@@ -179,15 +197,34 @@
% faster then |\tagpdfsetup|. But I'm not sure if the names are good.
% \end{function}
%
+% \begin{function}{\tagpdfsuppressmarks}
+% This command allows to suppress the creation of the marks. It takes an argument
+% which should normally be one of the mc-commands, puts a group around it and
+% suppress the marks creation in this group. This command should be used if
+% the begin and end command are at different boxing levels. E.g.
+% \begin{verbatim}
+% \@hangfrom
+% {
+% \tagstructbegin{tag=H1}%
+% \tagmcbegin {tag=H1}%
+% #2
+% }
+% {#3\tagpdfsuppressmarks{\tagmcend}\tagstructend}%
+% \end{verbatim}
+% \end{function}
+%
% \subsection{Header and footer}
-% Header and footer are automatically excluded from tagging. This can for
-% now to allow debugging be disabled with the following key, but probably
-% this key will disappear again. If some real content is in the header and
+% Header and footer are automatically excluded from tagging. This can
+% be disabled with the following key.
+% If some real content is in the header and
% footer, tagging must be restarted there explicitly.
+% The key accepts the values |true| which surrounds the header with an artifact
+% mc-chunk, |false| which disables the automatic tagging, and |pagination| which
+% additionally adds an artifact structure with an pagination attribute.
%
-% \begin{function}{exclude-header-footer}
+% \begin{function}{exclude-header-footer (setup-key)}
% \begin{syntax}
-% |exclude-header-footer| = |true|\verb+|+|false|
+% |exclude-header-footer| = |true|\verb+|+|false|\verb+|+pagination
% \end{syntax}%
% \end{function}
@@ -213,7 +250,7 @@
% \begin{macrocode}
%<@@=tag>
%<*header>
-\ProvidesExplPackage {tagpdf-user} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf-user} {2022-01-13} {0.93}
{tagpdf - user commands}
%</header>
% \end{macrocode}
@@ -288,14 +325,6 @@
% \end{macro}
%
%
-% \begin{macro}{\tagpdfifluatexTF,\tagpdfifluatexT,\tagpdfifpdftexTF}
-% I should deprecate them ...
-% \begin{macrocode}
-\cs_set_eq:NN\tagpdfifluatexTF \sys_if_engine_luatex:TF
-\cs_set_eq:NN\tagpdfifluatexT \sys_if_engine_luatex:T
-\cs_set_eq:NN\tagpdfifpdftexT \sys_if_engine_pdftex:T
-% \end{macrocode}
-% \end{macro}
%
% \section{Debugging}
% \begin{macro}{\ShowTagging}
@@ -310,7 +339,7 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{mc-data}
+% \begin{macro}{mc-data (show-key)}
% This key is (currently?) relevant for lua mode only.
% It shows the data of all mc-chunks created so far.
% It is accurate only after shipout, so typically should be issued after a
@@ -330,7 +359,7 @@
% \end{macrocode}
% \end{macro}
-% \begin{macro}{mc-current}
+% \begin{macro}{mc-current (show-key)}
% This shows some info about the current mc-chunk. It works in generic and lua-mode.
% \begin{macrocode}
\keys_define:nn { @@ / show }
@@ -397,7 +426,7 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{mc-marks}
+% \begin{macro}{mc-marks (show-key)}
% It maps the mc-marks into the sequences and then shows them.
% This allows to inspect the first and last mc-Mark on a page.
% It should only be used in the shipout (header/footer).
@@ -447,7 +476,7 @@
}
% \end{macrocode}
% \end{macro}
-% \begin{macro}{struct-stack}
+% \begin{macro}{struct-stack (show-key)}
% \begin{macrocode}
\keys_define:nn { @@ / show }
{
@@ -466,7 +495,7 @@
% This part should be regularly revisited to check if the code should go to a
% better place or can be improved.
% \subsection{Document structure}
-% \begin{macro}{\@@_add_document_structure:n,activate}
+% \begin{macro}{\@@_add_document_structure:n,activate (setup-key)}
% \begin{macrocode}
\cs_new_protected:Npn \@@_add_document_structure:n #1
{
@@ -485,6 +514,28 @@
}
% \end{macrocode}
% \end{macro}
+% \subsection{Structure destinations}
+% In TeXlive 2022 pdftex and luatex will offer support for structure destinations.
+% The pdfmanagement has already backend support. We activate them if the
+% prerequisites are there: The pdf version should be 2.0, structures should be activated,
+% the code in the pdfmanagement must be there.
+% \begin{macrocode}
+\AddToHook{begindocument/before}
+ {
+ \bool_lazy_all:nT
+ {
+ { \g_@@_active_struct_dest_bool }
+ { \g_@@_active_struct_bool }
+ { \cs_if_exist_p:N \pdf_activate_structure_destination: }
+ { ! \pdf_version_compare_p:Nn < {2.0} }
+ }
+ {
+ \tl_set:Nn \l_pdf_current_structure_destination_tl { __tag/struct/\g__tag_struct_stack_current_tl }
+ \pdf_activate_structure_destination:
+ }
+ }
+% \end{macrocode}
+
% \subsection{Fake space}
% \begin{macro}{\pdffakespace}
% We need a luatex variant for |\pdffakespace|. This should probably go into
@@ -518,8 +569,8 @@
%
%\begin{macro}
% {
-% paratagging,
-% paratagging-show,
+% paratagging (setup-key),
+% paratagging-show (setup-key),
% }
% These keys enable/disable locally paratagging, and the debug modus.
% It can affect the typesetting if |paratagging-show| is used. The small numbers
@@ -593,7 +644,7 @@
\tl_put_right:Nn \@mult@ptagging@hook
{
\@@_check_typeout_v:n {====>~In~\string\page@sofar}
- \process@cols\mult@gfirstbox
+ \process@cols\mult@firstbox
{
\@@_add_missing_mcs_to_stream:Nn \count@ {multicol}
}
@@ -686,7 +737,41 @@
\bool_gset_eq:NN \g_@@_in_mc_bool\g_@@_saved_in_mc_bool
}
}
+% \end{macrocode}
+% This version allows to use an Artifact structure
+% \begin{macrocode}
+\@@_attr_new_entry:nn {@@/attr/pagination}{/O/Artifact/Type/Pagination}
+\cs_new_protected:Npn \@@_exclude_struct_headfoot_begin:n #1
+ {
+ \bool_set_false:N \l_@@_para_bool
+ \bool_if:NTF \g_@@_mode_lua_bool
+ {
+ \tag_mc_end_push:
+ }
+ {
+ \bool_gset_eq:NN \g_@@_saved_in_mc_bool \g_@@_in_mc_bool
+ \bool_gset_false:N \g_@@_in_mc_bool
+ }
+ \tag_struct_begin:n{tag=Artifact,attribute-class=@@/attr/#1}
+ \tag_mc_begin:n {artifact=#1}
+ }
+\cs_new_protected:Npn \@@_exclude_struct_headfoot_end:
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ \bool_if:NTF \g_@@_mode_lua_bool
+ {
+ \tag_mc_begin_pop:n{}
+ }
+ {
+ \bool_gset_eq:NN \g_@@_in_mc_bool\g_@@_saved_in_mc_bool
+ }
+ }
+% \end{macrocode}
+% And now the keys
+% \begin{macro}{exclude-header-footer (setup-key)}
+% \begin{macrocode}
\keys_define:nn { @@ / setup }
{
exclude-header-footer .choice:,
@@ -697,6 +782,13 @@
\cs_set_eq:NN \@@_hook_kernel_after_head: \@@_exclude_headfoot_end:
\cs_set_eq:NN \@@_hook_kernel_after_foot: \@@_exclude_headfoot_end:
},
+ exclude-header-footer / pagination .code:n =
+ {
+ \cs_set:Nn \@@_hook_kernel_before_head: { \@@_exclude_struct_headfoot_begin:n {pagination} }
+ \cs_set:Nn \@@_hook_kernel_before_foot: { \@@_exclude_struct_headfoot_begin:n {pagination} }
+ \cs_set_eq:NN \@@_hook_kernel_after_head: \@@_exclude_struct_headfoot_end:
+ \cs_set_eq:NN \@@_hook_kernel_after_foot: \@@_exclude_struct_headfoot_end:
+ },
exclude-header-footer / false .code:n =
{
\cs_set_eq:NN \@@_hook_kernel_before_head: \prg_do_nothing:
@@ -708,7 +800,7 @@
exclude-header-footer .initial:n = true
}
% \end{macrocode}
-
+% \end{macro}
% \subsection{Links}
% We need to close and reopen mc-chunks around links.
% Currently we handle URI and GoTo (internal) links.
diff --git a/macros/latex/contrib/tagpdf/tagpdf.dtx b/macros/latex/contrib/tagpdf/tagpdf.dtx
index 0aeac22d7f..5406505c59 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.dtx
+++ b/macros/latex/contrib/tagpdf/tagpdf.dtx
@@ -2,7 +2,7 @@
%
%% File: tagpdf.dtx
%
-% Copyright (C) 2019-2021 Ulrike Fischer
+% Copyright (C) 2019-2022 Ulrike Fischer
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
@@ -23,13 +23,64 @@
% for those people who are interested.
%
% \fi
+% \begin{documentation}
+% \begin{function}{\ref_value:nnn}
+% This is a temporary definition which will have to
+% move to l3ref. It allows to locally set a default value if the label or the attribute
+% doesn't exist. See issue \#4 in Accessible-xref.
+% \begin{syntax}
+% \cs{ref_value:nnn}\Arg{label}\Arg{attribute}\Arg{fallback default}
+% \end{syntax}
+% \end{function}
+%
+% \begin{function}{ \tag_stop_group_begin:, \tag_stop_group_end: }
+% We need a command to stop tagging in some places.
+% This simply switches the two local booleans.
+% \end{function}
+%
+% \begin{function}{activate-space (setup-key)}
+% |activate-space| activates the additional parsing needed for
+% interword spaces. It is not documented, the parsing is currently
+% implicitly activated by the known key |interwordspace|, as the code will
+% perhaps move to some other place, now that it is better separated.
+% \end{function}
+%
+% \begin{function}{activate-mc (setup-key),
+% activate-tree (setup-key),
+% activate-struct (setup-key),
+% activate-all (setup-key)}
+% Keys to activate the various tagging steps
+% \end{function}
+%\begin{function}{no-struct-dest (setup-key)}
+% The key allows to suppress the creation of structure destinations
+% \end{function}
+%
+% \begin{function}{log (setup-key)}
+% The |log| takes currently the values |none|, |v|, |vv|, |vvv|, |all|.
+% More details are in \texttt{tagpdf-checks}.
+% \end{function}
+%
+% \begin{function}{tagunmarked (setup-key)}
+% This key allows to set if (in luamode) unmarked text should be
+% marked up as artifact. The initial value is true.
+% \end{function}
+%
+% \begin{function}{tabsorder (setup-key)}
+% This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default)
+% or |none|. Currently this is set more or less globally. More finer control can be
+% added if needed.
+% \end{function}
%
+% \begin{function}{tagstruct,tagstructobj,tagabspage,tagmcabs,tagmcid}
+% These are attributes used by the label/ref system.
+% \end{function}
+% \end{documentation}
% \begin{implementation}
% \section{Initialization and test if pdfmanagement is active.}
% \begin{macrocode}
%<@@=tag>
%<*package>
-\ProvidesExplPackage {tagpdf} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdf} {2022-01-13} {0.93}
{ A package to experiment with pdf tagging }
\bool_if:nF
@@ -51,18 +102,33 @@
before~\string\documentclass
}
}
+%</package>
% \end{macrocode}
+%<*debug>
+% \begin{macrocode}
+\ProvidesExplPackage {tagpdf-debug} {2022-01-13} {0.93}
+ { debug code for tagpdf }
+\@ifpackageloaded{tagpdf}{}{\PackageWarning{tagpdf-debug}{tagpdf~not~loaded,~quitting}\endinput}
+ \end{macrocode}
+%</debug>
% We map the internal module name \enquote{tag} to \enquote{tagpdf} in messages.
% \begin{macrocode}
-\prop_if_exist:NT \g_msg_module_name_prop
- {
- \prop_gput:Nnn \g_msg_module_name_prop { tag }{ tagpdf }
- }
+%<*package>
+\prop_gput:Nnn \g_msg_module_name_prop { tag }{ tagpdf }
+%</package>
+% \end{macrocode}
+% Debug mode has its special mapping:
+% \begin{macrocode}
+%<*debug>
+\prop_gput:Nnn \g_msg_module_type_prop { tag / debug} {}
+\prop_gput:Nnn \g_msg_module_name_prop { tag / debug }{tagpdf~DEBUG}
+%</debug>
% \end{macrocode}
%\section{Package options}
% There are only two options to switch for luatex between generic and luamode,
% TODO try to get rid of them.
% \begin{macrocode}
+%<*package>
\bool_new:N\g_@@_mode_lua_bool
\DeclareOption {luamode} { \sys_if_engine_luatex:T { \bool_gset_true:N \g_@@_mode_lua_bool } }
\DeclareOption {genericmode}{ \bool_gset_false:N\g_@@_mode_lua_bool }
@@ -105,10 +171,6 @@
% \begin{macro}{\ref_value:nnn}
% This allows to locally set a default value if the label or the attribute
% doesn't exist.
-% See issue \#4 in Accessible-xref.
-% \begin{syntax}
-% \cs{ref_value:nnn}\Arg{label}\Arg{attribute}\Arg{Fallback default}
-% \end{syntax}
% \begin{macrocode}
\cs_if_exist:NF \ref_value:nnn
{
@@ -180,7 +242,8 @@
% \g_@@_active_space_bool,
% \g_@@_active_mc_bool,
% \g_@@_active_tree_bool,
-% \g_@@_active_struct_bool
+% \g_@@_active_struct_bool,
+% \g_@@_active_struct_dest_bool
% }
% These booleans should help to control the global behaviour of tagpdf.
% Ideally it should more or less do nothing if all are false.
@@ -190,6 +253,8 @@
% commands, the struct-boolean activates the storing of the structure data.
% In a normal document all should be active, the split is only there for
% debugging purpose.
+% Structure destination will be activated automatically if pdf version 2.0 is detected,
+% but with the boolean struct-dest-boolean one can suppress them.
% Also we assume currently that they are set only at begin document. But
% if some control passing over groups are needed they could be perhaps
% used in a document too.
@@ -199,6 +264,8 @@
\bool_new:N \g_@@_active_mc_bool
\bool_new:N \g_@@_active_tree_bool
\bool_new:N \g_@@_active_struct_bool
+\bool_new:N \g_@@_active_struct_dest_bool
+\bool_gset_true:N \g_@@_active_struct_dest_bool
% \end{macrocode}
% \end{variable}
@@ -369,17 +436,19 @@
%
% \begin{macro}
% {
-% activate-space,
-% activate-mc,
-% activate-tree,
-% activate-struct,
-% activate-all,
+% activate-space (setup-key),
+% activate-mc (setup-key),
+% activate-tree (setup-key),
+% activate-struct (setup-key),
+% activate-all (setup-key),
+% no-struct-dest (setup-key)
% }
% Keys to (globally) activate tagging.
% |activate-space| activates the additional parsing needed for
% interword spaces. It is not documented, the parsing is currently
% implicitly activated by the known key |interwordspace|, as the code will
% perhaps move to some other place, now that it is better separated.
+% |no-struct-dest| allows to suppress structure destinations.
% \begin{macrocode}
\keys_define:nn { @@ / setup }
{
@@ -388,10 +457,12 @@
activate-tree .bool_gset:N = \g_@@_active_tree_bool,
activate-struct .bool_gset:N = \g_@@_active_struct_bool,
activate-all .meta:n =
- {activate-mc,activate-tree,activate-struct},
+ {activate-mc={#1},activate-tree={#1},activate-struct={#1}},
+ activate-all .default:n = true,
+ no-struct-dest .bool_gset_inverse:N = \g_@@_active_struct_dest_bool,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{log}
+% \begin{macro}{log (setup-key)}
% The |log| takes currently the values |none|, |v|, |vv|, |vvv|, |all|.
% The description of the log levels is in tagpdf-checks.
% \begin{macrocode}
@@ -407,7 +478,7 @@
log / all .code:n = {\int_set:Nn \l_@@_loglevel_int { 10 }},
% \end{macrocode}
% \end{macro}
-% \begin{macro}{tagunmarked}
+% \begin{macro}{tagunmarked (setup-key)}
% This key allows to set if (in luamode) unmarked text should be
% marked up as artifact. The initial value is true.
% \begin{macrocode}
@@ -415,9 +486,9 @@
tagunmarked .initial:n = true,
% \end{macrocode}
% \end{macro}
-% \begin{macro}{tabsorder}
-% This sets the tabsorder one a page. The values are |row|, |column|, |structure| (default)
-% or |none|. Currently this is set more or less globally. More finer controll can be
+% \begin{macro}{tabsorder (setup-key)}
+% This sets the tabsorder on a page. The values are |row|, |column|, |structure| (default)
+% or |none|. Currently this is set more or less globally. More finer control can be
% added if needed.
% \begin{macrocode}
tabsorder .choice:,
@@ -452,6 +523,15 @@
\RequirePackage {tagpdf-mc-code-generic} %
}
%</mcloading>
+%<*debug>
+\bool_if:NTF \g_@@_mode_lua_bool
+ {
+ \RequirePackage {tagpdf-debug-lua}
+ }
+ {
+ \RequirePackage {tagpdf-debug-generic} %
+ }
+%</debug>
% \end{macrocode}
% \end{implementation}
% \PrintIndex
diff --git a/macros/latex/contrib/tagpdf/tagpdf.ins b/macros/latex/contrib/tagpdf/tagpdf.ins
index 583509d4a2..e212ae48b2 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.ins
+++ b/macros/latex/contrib/tagpdf/tagpdf.ins
@@ -2,7 +2,7 @@
File: tagpdf.ins
-Copyright (C) 2019-2021 Ulrike Fischer
+Copyright (C) 2019-2022 Ulrike Fischer
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 @@ for those people who are interested.
\let\MetaPrefix\relax
\preamble
-Copyright (C) 2019-2021 Ulrike Fischer
+Copyright (C) 2019-2022 Ulrike Fischer
It may be distributed and/or modified under the conditions of
the LaTeX Project Public License (LPPL), either version 1.3c of
@@ -59,13 +59,13 @@ and all files in that bundle must be distributed together.
{
\from{tagpdf.dtx}{package}
\from{tagpdf-checks.dtx}{package}
- \from{tagpdf-user.dtx}{package}
\from{tagpdf-mc-shared.dtx}{shared}
\from{tagpdf.dtx}{mcloading}
\from{tagpdf-tree.dtx}{package}
\from{tagpdf-roles.dtx}{package}
\from{tagpdf-struct.dtx}{package}%contains also the attr code.
\from{tagpdf-space.dtx}{package}
+ \from{tagpdf-user.dtx}{package}
}
}
@@ -76,6 +76,26 @@ and all files in that bundle must be distributed together.
\generate
{\file{tagpdf-mc-code-lua.sty}{\from{tagpdf-mc-luacode.dtx}{luamode}}}
+% check later if the mc-code uses debug guards too.
+\generate
+ {\file{tagpdf-debug.sty}
+ {
+ \from{tagpdf.dtx}{debug}
+ \from{tagpdf-checks.dtx}{debug}
+ \from{tagpdf-user.dtx}{debug}
+ \from{tagpdf-mc-shared.dtx}{debug}
+ \from{tagpdf-tree.dtx}{debug}
+ \from{tagpdf-roles.dtx}{debug}
+ \from{tagpdf-struct.dtx}{debug}%
+ \from{tagpdf-space.dtx}{debug}
+ }
+ }
+
+\generate
+ {\file{tagpdf-debug-generic.sty}{\from{tagpdf-mc-generic.dtx}{debug}}}
+
+\generate
+ {\file{tagpdf-debug-lua.sty}{\from{tagpdf-mc-luacode.dtx}{debug}}}
\def\MetaPrefix{-- }
\def\defaultpostamble{%
diff --git a/macros/latex/contrib/tagpdf/tagpdf.pdf b/macros/latex/contrib/tagpdf/tagpdf.pdf
index 58004f717f..72892e853c 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.pdf
+++ b/macros/latex/contrib/tagpdf/tagpdf.pdf
Binary files differ
diff --git a/macros/latex/contrib/tagpdf/tagpdf.tex b/macros/latex/contrib/tagpdf/tagpdf.tex
index e1d690fc95..af08d81651 100644
--- a/macros/latex/contrib/tagpdf/tagpdf.tex
+++ b/macros/latex/contrib/tagpdf/tagpdf.tex
@@ -1,12 +1,11 @@
% !Mode:: "TeX:DE:UTF-8:Main"
%\PassOptionsToPackage{check-declarations,enable-debug}{expl3}
-\RequirePackage{pdfmanagement-testphase}
-\DeclareDocumentMetadata{pdfversion=2.0,lang=en-UK}
-
+%\RequirePackage{pdfmanagement-testphase}
+\DocumentMetadata{pdfversion=2.0,lang=en-UK,testphase=phase-II}
\makeatletter
-\def\UlrikeFischer@package@version{0.92}
-\def\UlrikeFischer@package@date{2021-08-27}
+\def\UlrikeFischer@package@version{0.93}
+\def\UlrikeFischer@package@date{2022-01-13}
\makeatother
\documentclass[DIV=12,parskip=half-,bibliography=totoc]{scrartcl}
@@ -16,6 +15,10 @@
\usepackage{unicode-math}
\setmainfont{Heuristica}
\usepackage{microtype}
+\makeatletter
+% see https://github.com/schlcht/microtype/issues/8
+\patchcmd{\MT@get@prot}{\noindent}{\RawNoindent}{}{\fail}
+\makeatother
\usepackage{scrlayer-scrpage}
@@ -46,12 +49,9 @@
commentstyle=\color{green!50!black}\bfseries}
-\usepackage{tagpdf}
+
\tagpdfsetup{
- activate-all,
- uncompress,
tabsorder=structure,
- interwordspace=true,
%log=v
%show-spaces
}
@@ -150,6 +150,21 @@ Issues, comments, suggestions should be added as issues to the github tracker:
\tableofcontents
+\section{Preface to version 0.93}
+The main change in the package itself in this version is the support for structure destinations.
+This is a new type of destinations in \PDF~2.0.
+For pdftex and luatex this requires new binaries. They will be included
+in texlive 2022, miktex already has the new pdftex, the new luatex will probably follow soon.
+
+Beside this mostly some clean up and bug fixes has been done.
+
+A more important step will be done in \LaTeX{} itself in the next dev-release: The command \cs{DocumentMetadata} will be
+added to the format and will take over the role of \cs{DeclareDocumentMetadata} from \pkg{pdfmanagement-testphase} and additionally
+will also load the pdf management code. This will simplify the documents as it will no longer be needed to load
+a package.
+
+
+
\section{Preface to version 0.92}
In this version support for page breaks in pdftex has been added. As described in section~\ref{sec:splitpara},
@@ -318,7 +333,7 @@ utf8 is now the required encoding.
\item The keys |lang|, |ref| and |E| have been added for structures.
\item The new hooks of LaTeX are used to tagged many paragraphs automatically. The small red numbers around paragraphs in the documentation show them in action. The main problem here is not to tag a paragraph, but to avoid to tag too many: paragraphs pop up in many places.
-\end{itemize}
+\end{itemize}
\subsection{Changes in version 0.81}
@@ -390,6 +405,25 @@ will now expand once.
\end{itemize}
+\subsection{Changes in version 0.93}
+
+\begin{itemize}
+\item Support for associated files in the root element (key \texttt{root-AF})
+has been added. This allow e.g. to add a css-file which is be used if the \PDF\ is converted to
+html.
+
+\item First steps have been done to adapt the package to planed changes in \LaTeX{}: The command \cs{DocumentMetadata} will be
+added to the format and will take over the role of \cs{DeclareDocumentMetadata} from \pkg{pdfmanagement-testphase}.
+
+\item The package has now support for \enquote{structure destinations}.
+This is a new type of destinations in \PDF~2.0.
+For pdftex and luatex this requires new binaries. They will be included
+in texlive 2022, miktex already has the new pdftex, the new luatex will probably follow soon.
+
+\item The commands \cs{tagpdfifluatexT}, \cs{tagpdfifluatexTF} has been removed \cs{tagpdfifpdftexT},
+
+\end{itemize}
+
\subsection{Proof of concept: the tagging of the documentation itself}
Starting with version 0.6 the documentation itself has been tagged. The tagging wasn't (and isn't) in no way perfect. The validator from Adobe didn't complain, but PAX3 wanted alternative text for all links (no idea why) and so I put everywhere simple text like \enquote{link} and \enquote{ref}. The links to footnotes gave warnings, so I disabled them. I used types from the \PDF{} version 1.7, mostly as I have no idea what should be used for code in 2.0. Margin notes were simply wrong \ldots
@@ -424,15 +458,27 @@ activated like this:
}
\documentclass{article}
\begin{document}
-some text
+some text
\end{document}
\end{lstlisting}
+With \LaTeX{} 2022-06-01 (or a current \LaTeX-dev) the call will be simpler
+
+\begin{lstlisting}
+\DocumentMetadata
+ {
+ testphase = tagpdf, % load + activate
+ }
+\documentclass{article}
+\begin{document}
+some text
+\end{document}
+\end{lstlisting}
\minisec{Activation needed!}
-When the package is loaded it will -- apart from loading more packages and defining a lot of things -- not do much. You will have to activate it with \verb+\tagpdfsetup+ or as shown above in \verb+\DeclareDocumentMetadata+.
+When the package is loaded it will -- apart from loading more packages and defining a lot of things -- not do much. You will have to activate it with \verb+\tagpdfsetup+ or as shown above in \verb+\DeclareDocumentMetadata+/\verb+\DocumentMetadata+.
Most commands do nothing if tagging is not activated, but in case a test is needed a command (with the usual p,T,F variants) is provided:
@@ -478,6 +524,9 @@ The default value is |Document|.
Boolean, initially false. Activates the code related to marked content.
\item[\PrintKeyName{activate-struct}]
Boolean, initially false. Activates the code related to structures. Should be used only if \PrintKeyName{activate-mc} has been used too.
+\item[\PrintKeyName{no-struct-dest}]
+ Starting with version 0.93 \pkg{tagpdf} will create automatically structure destinations (see section~\ref{sec:struct-dest} if \pkg{hyperref} is used, if
+ the engine supports it and if the pdf version is 2.0. With this key this can be suppressed.
\item[\PrintKeyName{activate-tree}]
Boolean, initially false. Activates the code related to trees. Should be used only if the two other keys has been used too.
\item[\PrintKeyName{add-new-tag}]
@@ -794,7 +843,7 @@ The key-val list understands the following keys:
This key sets a label by which you can call the marked content later in another structure (if it has been stashed with the previous key). Internally the label name will start with \texttt{tagpdf-}.
\item[\PrintKeyName{alttext}]
- This key inserts an \texttt{/Alt} value in the property dictionary of the BDC operator. See section~\ref{sec:alttext}. The value is handled as verbatim string, commands are not expanded but the value will be expanded first once (so works like the key \texttt{alttext-o} in previous versions which has been removed).
+ This key inserts an \texttt{/Alt} value in the property dictionary of the BDC operator. See section~\ref{sec:alttext}. The value is handled as verbatim string, commands are not expanded but the value will be expanded first once (so works like the key \texttt{alttext-o} in previous versions which has been removed).
That means that you can do something like in the following listing
and it will insert \verb+\frac{a}{b}+ (hex encoded) in the \PDF{}.
@@ -809,14 +858,17 @@ The key-val list understands the following keys:
\item[\PrintKeyName{actualtext}]
This key inserts an \texttt{/ActualText} value in the property dictionary of the BDC operator. See section~\ref{sec:alttext}. The value is handled as verbatim string, commands are not expanded but the value will be expanded first once (so works like the key \texttt{actualtext-o} in previous versions which has been removed).
- That means that you can do something like in the following listing and and it will insert \verb+X+ (hex encoded) in the \PDF{}.
+ That means that you can do something like in the following listing and and it will insert \verb+X+ (hex encoded) in the \PDF{}.
\begin{lstlisting}
\newcommand\myactualtext{X}
- \tagmcbegin{tag=P,actualtext=\myactualtext}
+ \tagmcbegin{tag=Span,actualtext=\myactualtext}
\end{lstlisting}
+ According to the PDF reference, \texttt{/ActualText} should only be used on marked content sequence of type Span. This is not enforced by the code currently.
+
+
\item[\PrintKeyName{raw}]
This key allows you to add more entries to the properties dictionary. The value must be correct, low-level \PDF{}. E.g. \verb+raw=/Alt (Hello)+ will insert an alternative Text.
\end{description}
@@ -1005,7 +1057,11 @@ repeated on every page at best only once. All this need some thoughts both from
providing support for header and footers.
For now tagpdf added some first support for automatically tagging:
-Starting with version 0.92 header and footer are automatically marked up as (simple) artifacts.
+Starting with version 0.92 header and footer are by default automatically marked up as (simple) artifacts.
+
+With the key \PrintKeyName{exclude-header-footer} the behaviour can be changed: The value \texttt{false} disables the
+automatic tagging, the value \texttt{pagination} add additionally an \texttt{/Artifact} structure with the attribute \texttt{/Pagination}.
+
If some additional markup (or even a structure) is wanted, something like this should be used (here with
the syntax of the \pkg{fancyhdr} package) to close the open mc-chunk and restart if after the content:
@@ -1299,8 +1355,10 @@ The key-val list understands the following keys:
For example:
\begin{lstlisting}
+ \group_begin:
\pdfdict_put:nnn {l_pdffile/Filespec} {AFRelationship}{/Supplement}
\pdffile_embed_file:nnn{example-input-file.tex}{}{tag/AFtest}
+ \group_end:
\tagstructbegin{tag=P,AF=tag/AFtest}
\end{lstlisting}
@@ -1311,6 +1369,12 @@ The key-val list understands the following keys:
a concept new in PDF 2.0, but the code currently doesn't check the pdf version, it is your responsability
to set it (this can be done with the \texttt{pdfversion} key in \verb+\DeclareDocumentMetadata+).
+ \item[\PrintKeyName{root-AF}]
+ This key allows to reference an associated file in the root structure element. Using the root
+ can be e.g. useful to add a css-file. When converting the pdf to a html with e.g. ngpdf this css-file is then
+ referenced in the head of the html.
+
+
\item[\PrintKeyName{AFinline}]
This key allows to embed an associated file with inline content. The value is some text,
which is embedded in the PDF as a text file with mime type text/plain.
@@ -1586,10 +1650,10 @@ syntax |section/H1| should in most cases do the right thing.
\item[\PrintKeyName{tag}] This is the name of the new type as it should then be used in \cs{tagstructbegin}.
\item[\PrintKeyName{namespace}] This is the namespace of the new type. The value should be a shorthand of a namespace. The allowed values are currently |pdf|, |pdf2|, |mathml| and |user|. The default value (and recommended value for a new tag) is |user|. The public name of the user namespace is |tag/NS/user|. This can be used to reference
the namespace e.g. in attributes.
-\item[\PrintKeyName{role}] This is type the tag should be mapped too. In a PDF 1.7 or earlier this is normally a type from the |pdf| set, in PDF 2.0 from the |pdf|, |pdf2| and |mathml| set. It can also be a user type, or a still unknown type. The PDF format allows mapping to be done transitively. But you should be aware that tagpdf can't (or more precisely won't) check such unusual role mapping. It lies in the responsability of the author to ensure here that every type is correctly role mapped.
+\item[\PrintKeyName{role}] This is the type the tag should be mapped too. In a PDF 1.7 or earlier this is normally a type from the |pdf| set, in PDF 2.0 from the |pdf|, |pdf2| and |mathml| set. It can also be a user type, or a still unknown type. The PDF format allows mapping to be done transitively. But you should be aware that tagpdf can't (or more precisely won't) check such unusual role mapping. It lies in the responsability of the author to ensure here that every type is correctly role mapped.
\item[\PrintKeyName{role-namespace}] If the role is a known type the default value is the default namespace: |pdf2| for all types in this set, |pdf| for the type which exist only in PDF 1.7, |mathml| for the MathML types, and for previously defined user types whatever namespace has been set there. If the role is unknown, |user| is used and the code hopes that the type will be defined later.
\item[unknown key] An unknown key is interpreted as a |tag/role|, this preserves the old syntax. So this two calls are equivalent:
-
+
\begin{lstlisting}
\tagpdfsetup{add-new-tag = section/H1}
\tagpdfsetup{add-new-tag = {tag=section,role=H1}}
@@ -1623,6 +1687,43 @@ The key \PrintKeyName{show-spaces} will show lines at the places where in lua mo
This is in pdftex a primitive. It inserts the dummy space glyph. \pkg{tagpdf} defines this command also for luatex -- attention if can perhaps insert break points.
+\section{Structure destinations}\label{sec:struct-dest}
+
+ Standard destinations (anchors for internal links)
+ consist of a reference to a page in the pdf and instructions
+ how to display it---typically they will put a specific coordinate in the left top corner
+ of the viewer and so give the impression that a link jumped to the word in this place.
+ But in reality they are not connected to the content.
+
+ Starting with pdf~2.0 destinations can in a tagged PDF also point
+ to a structure (to a \texttt{/StructElem} object).
+ GoTo links can then additionally to the \texttt{/D} key which points to a
+ standard page destination also point to such a structure destination with an \texttt{/SD} key.
+ Programs that e.g. convert such a PDF to html can then create better links.
+ (According to the reference, PDF-viewer should prefer the structure destination
+ over the page destination, but as far as it is known this isn't done yet.)
+
+ Currently structure destinations (and GoTo links making use of it) could natively only
+ be created with the dvipdfmx backend. With pdftex and lualatex it was only possible to create
+ a restricted type which used only the \enquote{Fit} mode. Starting with
+ \TeX{}live 2022 (earlier in miktex) both engines will knew new keywords which allow
+ to create structure destination easily.
+
+ Support for this has been already added to the pdfmanagement and \pkg{tagpdf} will make
+ use of it if possible. In most cases it should simply work, but one should be aware
+ that as one now has a destination that is actually tied to the content it gets more
+ important to actually consider the context and the place where such destinations
+ are created. It now makes a difference if the destination is created before the
+ structure is opened or after so in some cases
+ code that place destinations should be changed to place them inside the structure they
+ belong too. .
+ One also has to consider the pages connected to the destinations: The structure destination
+ is bound to the page where the structure \emph{begins}, if this differ from the page of the page destination
+ (e.g. if the destination is created by a \verb+\phantomsection+ in the middle of a longer paragraph)
+ then be necessary to surround
+ destinations with a dummy structure (a Span or an Artifact) to
+ get the right page number.
+
\section{Accessibility is not only tagging}
diff --git a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
index 6ba1ee8d3f..3c283a8a3e 100644
--- a/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
+++ b/macros/latex/contrib/tagpdf/tagpdfdocu-patches.sty
@@ -1,55 +1,7 @@
%\RequirePackage[enable-debug]{expl3}[2018/06/14]
-\ProvidesExplPackage {tagpdfdocu-patches} {2021-08-27} {0.92}
+\ProvidesExplPackage {tagpdfdocu-patches} {2022-01-13} {0.93}
{patches/commands for the tagpdf documentation}
\RequirePackage{etoolbox}
-%%%%
-% header and footer (now needed as attributes are global again)
-%%%%
-%% patching \@oddfoot/\@oddhead is nonsense, that is redefined all the time.
-%% Using the scrlayer interfaces would probably work
-%% but we will need a core latex solution anyway
-%% so let's test it here and patch \@outputpage
-%% we also disable paratagging, not for the tagging but to avoid that the small
-%% numbers gives overfull vbox messages ...
-\bool_new:N \g__tag_docu_saved_in_mc_bool
-\patchcmd\@outputpage
- {\hb@xt@\textwidth{\@thehead}}
- {
- \hb@xt@\textwidth
- {
- \bool_set_false:N \l__tag_para_bool
- \bool_gset_eq:NN \g__tag_docu_saved_in_mc_bool \g__tag_in_mc_bool
- \bool_gset_false:N \g__tag_in_mc_bool
- \hfil
- \tag_mc_begin:n {artifact=pagination}
- \tag_stop_group_begin:
- \@thehead
- \tag_stop_group_end:
- \tag_mc_end:
- \bool_gset_eq:NN \g__tag_in_mc_bool\g__tag_docu_saved_in_mc_bool
- \hfil
- }
- }
- {}{\fail}
-\patchcmd\@outputpage
- {\hb@xt@\textwidth{\@thefoot}}
- {
- \hb@xt@\textwidth
- {
- \bool_set_false:N \l__tag_para_bool
- \bool_gset_eq:NN \g__tag_docu_saved_in_mc_bool \g__tag_in_mc_bool
- \bool_gset_false:N \g__tag_in_mc_bool
- \hfil
- \tag_mc_begin:n {artifact=pagination}
- \tag_stop_group_begin:
- \@thefoot
- \tag_stop_group_end:
- \tag_mc_end:
- \bool_gset_eq:NN \g__tag_in_mc_bool\g__tag_docu_saved_in_mc_bool
- \hfil
- }
- }
- {}{\fail}
%%%%%
% tableofcontents
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index c622871995..58ca9bee34 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,13 @@
+2022-01-12 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-ooffice.tex (ooffice.4ht): added alternative
+ text support for images.
+ https://tex.stackexchange.com/a/630017/2891
+
+ * tex4ht-4ht.tex (graphicx.4ht): declare GraphicsAlt configuration,
+ in order to support the \includegraphics's alt attribute in other
+ output formats than HTML.
+
2022-01-11 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-4ht.tex (usepackage.4ht, unicode-math-hooks.4ht): added
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index ece2d419ea..0f0bcda129 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1054 2022-01-11 12:16:25Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1055 2022-01-12 21:28:48Z michal_h21 $
% tex tex4ht-4ht or ht tex tex4ht-4ht
%
% Copyright 2009-2022 TeX Users Group
@@ -26356,6 +26356,7 @@ dvips needs to be used instead
Support for the alt key of \Verb!\includegraphics! command.
\<fix graphicx\><<<
+\NewConfigure{GraphicsAlt}{1}
\define@key{Gin}{alt}{\Configure{GraphicsAlt}{#1}}
>>>
diff --git a/support/TeX4ht/source/tex4ht-ooffice.tex b/support/TeX4ht/source/tex4ht-ooffice.tex
index 9b1fbf1ffc..663fdb4711 100644
--- a/support/TeX4ht/source/tex4ht-ooffice.tex
+++ b/support/TeX4ht/source/tex4ht-ooffice.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-ooffice.tex 1053 2022-01-09 15:36:40Z karl $
+% $Id: tex4ht-ooffice.tex 1056 2022-01-12 22:24:14Z michal_h21 $
% compile 3 times: latex tex4ht-ooffice
% htlatex tex4ht-ooffice "xhtml,4,sections+"
%
@@ -1171,6 +1171,9 @@ Enable supported image extensions out of the box.
\def:image:mime:type{.gif}{image/gif}
\def:image:mime:type{.svg}{image/svg+xml}
\def\svg:width{0.0pt}\def\svg:height{0.0pt}
+% this is defined in graphicx.4ht, but we should it define here too, for cases
+% when graphicx is not used
+\NewConfigure{GraphicsAlt}{1}
\Configure{IMG}
{|<insert shadowing fig file|>%
\ht:special{t4ht=<draw:frame
@@ -1194,7 +1197,12 @@ Enable supported image extensions out of the box.
/><!--draw:name="}}
{" }
{\ht:special{t4ht=" }}
- {\ht:special{t4ht=--></draw:frame>}}
+ {%
+ \ifx\a:GraphicsAlt\relax%
+ \Configure{GraphicsAlt}{ALT}%
+ \fi%
+ \ht:special{t4ht=--><svg:title>\a:GraphicsAlt</svg:title></draw:frame>}%
+ }
>>>
\<configure ooffice pst-jtree\><<<
diff --git a/systems/texlive/tlnet/tlpkg/installer/config.guess b/systems/texlive/tlnet/tlpkg/installer/config.guess
index fb195112f9..7f76b6228f 100755
--- a/systems/texlive/tlnet/tlpkg/installer/config.guess
+++ b/systems/texlive/tlnet/tlpkg/installer/config.guess
@@ -1,10 +1,10 @@
#! /bin/sh
# Attempt to guess a canonical system name.
-# Copyright 1992-2021 Free Software Foundation, Inc.
+# Copyright 1992-2022 Free Software Foundation, Inc.
# shellcheck disable=SC2006,SC2268 # see below for rationale
-timestamp='2021-11-30'
+timestamp='2022-01-09'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
@@ -60,7 +60,7 @@ version="\
GNU config.guess ($timestamp)
Originally written by Per Bothner.
-Copyright 1992-2021 Free Software Foundation, Inc.
+Copyright 1992-2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -929,6 +929,9 @@ EOF
i*:PW*:*)
GUESS=$UNAME_MACHINE-pc-pw32
;;
+ *:SerenityOS:*:*)
+ GUESS=$UNAME_MACHINE-pc-serenity
+ ;;
*:Interix*:*)
case $UNAME_MACHINE in
x86)
diff --git a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
index 743f64a922..6acf250c03 100644
--- a/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
+++ b/systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl
@@ -82,6 +82,7 @@ $mirrors = {
'https://ctan.crest.fr/tex-archive/' => 1,
'https://ctan.gutenberg.eu.org/' => 1,
'https://ctan.mines-albi.fr/' => 1,
+ 'https://ctan.tetaneutral.net/' => 1,
'https://distrib-coffee.ipsl.jussieu.fr/pub/mirrors/ctan/' => 1,
'https://mirror.ibcp.fr/pub/CTAN/' => 1,
'https://mirrors.chevalier.io/CTAN/' => 1,
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 1f8152c438..248b76a5f4 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/2021
-depend revision/61577
+depend revision/61592
name 00texlive.image
category TLCore
-revision 61573
+revision 61592
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
@@ -40,7 +40,7 @@ longdesc IgnorePatterns in the check_files routine in tlmgr.pl augment
longdesc this list. Those are not included in the source/ tarball. For
longdesc information on the 00texlive prefix see
longdesc 00texlive.installation(.tlpsrc)
-runfiles size=12499
+runfiles size=12500
.mkisofsrc
autorun.inf
texmf-dist/README
@@ -213,6 +213,7 @@ runfiles size=12499
tlpkg/dev/profiles/TLctx.pro
tlpkg/dev/profiles/TLfmt.pro
tlpkg/dev/profiles/TLfull.pro
+ tlpkg/dev/profiles/TLhyphtest.pro
tlpkg/dev/profiles/TLinfra+exe.pro
tlpkg/dev/profiles/TLinfra+none.pro
tlpkg/dev/profiles/TLinfra+sys.pro
@@ -4511,7 +4512,7 @@ depend setting_available_architectures:aarch64-linux amd64-freebsd amd64-netbsd
name 00texlive.installer
category TLCore
-revision 61565
+revision 61579
shortdesc TeX Live standalone installer package
longdesc This package defines the files to go into the installer
longdesc archives (install-tl-unx.tar.gz, install-tl.zip) built by the
@@ -99686,21 +99687,21 @@ catalogue-topics notes editorial
name easybook
category Package
-revision 61570
+revision 61582
shortdesc Typeset Chinese theses or books
relocated 1
longdesc Easybook is a minimalist style template based on the ctexbook
longdesc book document class.
-containersize 17024
-containerchecksum 481f9dd0468cfd1f70819fc2b99cc286e53c3a237316d84bca72f1e6cd054dd192c9c1075b45ab816c6656c5336402e1e1714275f71cfd727a6ad4a3bb783690
-doccontainersize 614788
-doccontainerchecksum aa66a4808d812a998df3ce9d3265177b87136e90b960d303c8ec97f59289842c5ffd45fa3a3f5e4245bb08033b11103ccfdd5683e69eb6f7124bc4b9843c9825
-docfiles size=166
+containersize 17092
+containerchecksum 86710ec3dc6f470eddc50caac521af5826bb659212725dcd83f4a7a8f64ea707e682a1d73e090851bcae27bd7a1a26dfb488d6bb6b7e44ac5feb376a01653c34
+doccontainersize 616544
+doccontainerchecksum 69a0363c028dfaa6b56fd55ae9f25375cce2989d390dc42c26e34068afbc4979cd047a955e7ee525c62c19c8a6a5cda0498e3e76965f8cbfbb7f9cd6365dffbe
+docfiles size=168
RELOC/doc/latex/easybook/README.md details="Readme"
RELOC/doc/latex/easybook/easybook.pdf details="Package documentation" language="zh"
RELOC/doc/latex/easybook/easybook.tex
-srccontainersize 17068
-srccontainerchecksum 389700001771f66a33678242d543950949119f5585c3fa4586187be1829c9de93d9be8c2438df2c61428b80f4b00476e7ad3e84582691da929ccfad5e9da53f1
+srccontainersize 17128
+srccontainerchecksum 8911e09e274f0efd1aefe1ddd83de3d663171eccc7cd03917aed278ebc14ec0aa204498cf86e370c60e4d887393ce55bfe256c0220309955b58bd1f8a4c51445
srcfiles size=21
RELOC/source/latex/easybook/easybook.dtx
RELOC/source/latex/easybook/easybook.ins
@@ -99713,7 +99714,7 @@ catalogue-contact-repository https://gitee.com/texl3/easybook
catalogue-ctan /macros/latex/contrib/easybook
catalogue-license lppl1.3c
catalogue-topics book-pub class chinese expl3
-catalogue-version 1.45
+catalogue-version 1.46
name easyfig
category Package
@@ -159204,7 +159205,7 @@ catalogue-topics diagram
name knowledge
category Package
-revision 61356
+revision 61583
shortdesc Displaying, hyperlinking, and indexing notions in a document
relocated 1
longdesc The package offers a systematic way to handle
@@ -159212,18 +159213,18 @@ longdesc notions/concepts/terms throughout a document. It helps building
longdesc an index. In combination with hyperref it makes it easy to have
longdesc every reference of a concept linked to its introduction. It
longdesc also offers simple notations.
-containersize 22680
-containerchecksum 515a9f6a4d4b1df7bdd51994efbc45d62582696b970b616dc3d3250efd1525bb8523e04e8b56a0391acce8c2bff991a477c72078d4ea840dc9d1b377e15facb9
-doccontainersize 808504
-doccontainerchecksum 84b54a2544760cd138ea6f663a3a41899549555c4205b91d5f553c6b4411dfe034b4564bcac0c20e377abc47ccbf723c72fb3e404591b0c8f04a1fd6e16c3b6b
-docfiles size=236
+containersize 22636
+containerchecksum fad2f89ad35c36e934f3b26c27e7d3ed0bc18d6fd7ccee79a461274283acb6209ab615c9ff394fc8e00e1eff9931834346018fd0d78a61d15c8a744012a95b88
+doccontainersize 812476
+doccontainerchecksum 9fb7e643d9e43431b618b5acba33588ee648e16774b04eb9f97bb457ebbfb1b5bfa20c88e86313deb7029cd31f16204d490bb61ddea178b99ebd466cad868f12
+docfiles size=238
RELOC/doc/latex/knowledge/README.md details="Readme"
RELOC/doc/latex/knowledge/knowledge-example.tex
RELOC/doc/latex/knowledge/knowledge.pdf details="Package documentation"
RELOC/doc/latex/knowledge/knowledge.tex
RELOC/doc/latex/knowledge/makefile
-srccontainersize 42324
-srccontainerchecksum bf30d237fbd28fe29f6ae06dea71766cc74518251247ae6e6d00d754b8bea1a9f6a799b7406c44f4a94a7e16b64b01ff541928eafd49de3428cb6ebb1503ff40
+srccontainersize 42284
+srccontainerchecksum 231f340d9ed86877626ed5b957eba76870998bb4c37abedf7e9d4c1ba4b3e906fb32e89b6bb67b4d28354d3668e9128359cff3f9c289569a27f2eb593afce175
srcfiles size=57
RELOC/source/latex/knowledge/knowledge-code.dtx
RELOC/source/latex/knowledge/knowledge-configuration.dtx
@@ -159231,12 +159232,10 @@ srcfiles size=57
RELOC/source/latex/knowledge/knowledge.ins
runfiles size=35
RELOC/tex/latex/knowledge/knowledge.sty
-catalogue-contact-home https://www.irif.fr/~colcombe/knowledge_en.html
-catalogue-contact-repository https://www.irif.fr/~colcombe/Knowledge/
catalogue-ctan /macros/latex/contrib/knowledge
catalogue-license lppl1.2
catalogue-topics index label-ref expl3
-catalogue-version 1.26
+catalogue-version 1.27
name knuth-errata
category Package
@@ -163656,7 +163655,7 @@ catalogue-version 1.1
name l3backend
category Package
-revision 61303
+revision 61588
shortdesc LaTeX3 backend drivers
relocated 1
longdesc This package forms parts of expl3, and contains the code used
@@ -163665,17 +163664,17 @@ longdesc The functions here are defined differently depending on the
longdesc engine in use. As such, these are distributed separately from
longdesc l3kernel to allow this code to be updated on an independent
longdesc schedule.
-containersize 14984
-containerchecksum a860287ae480b1c14804e07a5985fb8b45d862cd9ef8250824bdbba5dff2adb010a9a3c61af2945da87a01153df6ba8264248e02ad2c87d45b6161c0acf7d67d
-doccontainersize 855616
-doccontainerchecksum 1422a6feb08107935ffe7646276893f8a2d328a24137368b9bb743723a22881a4fd061ddab34b26cf31d40768d8935b12cb3cf6b39c6b0c5bbbd6d5c968d8929
-docfiles size=224
+containersize 14980
+containerchecksum 8b87c7d29a673746bd3bad56e500aee3f1b9f78ee8666de759776f453082fb0f14212540257d0680f10c476ed0de1a6ef8c0731f75f290f9e0dc612382ec5922
+doccontainersize 855144
+doccontainerchecksum 59e20ffd7cb30514c2aa83fa7dac923e20e83b572b52005239e44e784a6726faeab9ea912df4a9a7906312fe76be8976e623db9a1d6ca547c4536ed3b2c632eb
+docfiles size=223
RELOC/doc/latex/l3backend/CHANGELOG.md
RELOC/doc/latex/l3backend/README.md details="Readme"
RELOC/doc/latex/l3backend/l3backend-code.pdf details="Package documentation"
RELOC/doc/latex/l3backend/l3backend-code.tex
-srccontainersize 32188
-srccontainerchecksum 40e033667381b9824f2e6d4a603007241ef085fe76432fae16203c581db09e2ef0514dbf1cc037fe6d0bad2b09ef91fdfac086f20af7fcb16c6d83adf1fccf0f
+srccontainersize 32184
+srccontainerchecksum 7c055d9174f176cab239bd1e5cdccdbcac7ae3a00c930f4e8f70393573c6b5b14a0f3c2471dd39938f798a320e064e8aab01a51900a287dd58a93dd01c0d50f3
srcfiles size=56
RELOC/source/latex/l3backend/l3backend-basics.dtx
RELOC/source/latex/l3backend/l3backend-box.dtx
@@ -163992,7 +163991,7 @@ catalogue-topics macro-supp layout latex3 pre-release
name l3kernel
category Package
-revision 61121
+revision 61588
shortdesc LaTeX3 programming conventions
relocated 1
longdesc The l3kernel bundle provides an implementation of the LaTeX3
@@ -164002,11 +164001,11 @@ longdesc LaTeX3 kernel and other future code are built: it is an API for
longdesc TeX programmers. The packages are set up so that the LaTeX3
longdesc conventions can be used with regular LaTeX2e packages.
depend l3backend
-containersize 169640
-containerchecksum a82e2199e56b039b4ffc50c7c8cb02076d182f4a3df1481b1e1a89510b5bbfb1b0aa35504c9df0d781699837c06f1a72d08efe0898b4456b352f45ad19f5972d
-doccontainersize 11059148
-doccontainerchecksum b97c8810586549231879494f8f162f0d5af47fbee459bb1d173f5e0962205c0e107c4b58fad1b4dc73c98f49a1689961eced9d2ac6954b4f9511f07e14d405b9
-docfiles size=3175
+containersize 170184
+containerchecksum 549bcfe74d3315d4a08c97fdd7fdca7542bd11ca383acbae53eb715615c33098f0c4c587519493fd6262faa83a61f4ddaeec64b862f436ce8fa239f89d3a29d0
+doccontainersize 11058484
+doccontainerchecksum 0eb98bd738614d9a7f153bda5fcb62c5ff61b61ace278eb01df0bcf3cf6d7d8daeb7bb4c194e599005d871896fc9c06ce67ded7af82c66d1f0192514067413a3
+docfiles size=3183
RELOC/doc/latex/l3kernel/CHANGELOG.md
RELOC/doc/latex/l3kernel/README.md details="Readme"
RELOC/doc/latex/l3kernel/expl3.pdf details="The LaTeX3 Programming Language"
@@ -164052,9 +164051,9 @@ docfiles size=3175
RELOC/doc/latex/l3kernel/source3.pdf
RELOC/doc/latex/l3kernel/source3.tex
RELOC/doc/latex/l3kernel/source3body.tex
-srccontainersize 584296
-srccontainerchecksum aa3c5069c5670eaf2a4a8f674c4f67e00ff220ca5cd40d0213fd99ca76937dd8bb7f43ed357ca339769c74cb5a5ad82be4a46f689778d9097ff202c098747a31
-srcfiles size=899
+srccontainersize 586076
+srccontainerchecksum 3d7695e6c0681a463f51abd0cb0517c3282cf5455dff6fb90e776bef90e2b7877dabb0222496d1e1050993153522adbdf6d048b9b1a7f815971bcaf265932299
+srcfiles size=903
RELOC/source/latex/l3kernel/expl3.dtx
RELOC/source/latex/l3kernel/l3.ins
RELOC/source/latex/l3kernel/l3basics.dtx
@@ -164112,14 +164111,13 @@ srcfiles size=899
RELOC/source/latex/l3kernel/l3tl.dtx
RELOC/source/latex/l3kernel/l3token.dtx
RELOC/source/latex/l3kernel/l3unicode.dtx
-runfiles size=344
+runfiles size=346
RELOC/tex/latex/l3kernel/expl3-code.tex
RELOC/tex/latex/l3kernel/expl3-generic.tex
RELOC/tex/latex/l3kernel/expl3.ltx
RELOC/tex/latex/l3kernel/expl3.lua
RELOC/tex/latex/l3kernel/expl3.sty
RELOC/tex/latex/l3kernel/l3debug.def
- RELOC/tex/latex/l3kernel/l3deprecation.def
RELOC/tex/latex/l3kernel/l3doc.cls
RELOC/tex/latex/l3kernel/l3docstrip.tex
RELOC/tex/latex/l3kernel/l3str-enc-iso88591.def
@@ -164147,7 +164145,7 @@ catalogue-topics format latex3 pre-release
name l3packages
category Package
-revision 61040
+revision 61588
shortdesc High-level LaTeX3 concepts
relocated 1
longdesc This collection contains implementations for aspects of the
@@ -164165,10 +164163,10 @@ longdesc provides a means of defining generic functions using a
longdesc key-value syntax xfrac, which provides flexible split-level
longdesc fractions
depend l3kernel
-containersize 21644
-containerchecksum 1ca8e7484f5d86fd85197e4bb0058444e68f73caf68c04f3ad67ce0a96f29c181d496227f069938604dd5a4dc095e15c0f2addf26f150da0ee7ccf6d48037536
-doccontainersize 1806792
-doccontainerchecksum 4c133f7ede9a37057371e838355daa1138b4cc9e1e8714d9f62925cb56b91645d1c9478b3bdf1050005c3a08b2282881fbc84f50c166173c958bf16604630814
+containersize 21640
+containerchecksum 4a6ec384f2b8ad262eb05f0d30a9b622f99a2c641b2382dfc8601b0c8bc7f4c105865b28e1275c917519d32095fc5b7e66a8c0c4253f7da32af01072092e85bf
+doccontainersize 1808188
+doccontainerchecksum a62939dad7274a3394e642167ba0ec4adb3fd76fe4e468f09b4bfa2d6e212607b121c26bba7ee9bc15d1e37c84d5b1e8876a0d3e50efcce8de192781809feda2
docfiles size=534
RELOC/doc/latex/l3packages/CHANGELOG.md
RELOC/doc/latex/l3packages/README.md details="Readme"
@@ -164178,8 +164176,8 @@ docfiles size=534
RELOC/doc/latex/l3packages/xfrac/xfrac.pdf details="xfrac documentation"
RELOC/doc/latex/l3packages/xparse/xparse.pdf details="xparse documentation"
RELOC/doc/latex/l3packages/xtemplate/xtemplate.pdf details="xtemplate documentation"
-srccontainersize 45256
-srccontainerchecksum 93dcfe3b4d04c60a9880d34f8a6d924ae5e800d0cd9a2116726c2e651ae43665b34e7bc232640857c4b4f235eaf3ab25eff62d43f175721e9272b1b65f09b3cc
+srccontainersize 45340
+srccontainerchecksum da245467908e1ed7245b6d57420dedf1ddc1b9f37b00c76725d6dbe45ed2b2ce172c1c003c4ca2e2b88fc6b220182799a73a15b3eb43240f344c842afef39b36
srcfiles size=59
RELOC/source/latex/l3packages/l3keys2e/l3keys2e.dtx
RELOC/source/latex/l3packages/l3keys2e/l3keys2e.ins
@@ -187498,25 +187496,25 @@ catalogue-version 0.6
name luamplib
category Package
-revision 61554
+revision 61587
shortdesc Use LuaTeX's built-in MetaPost interpreter
relocated 1
longdesc The package enables the user to specify MetaPost diagrams
longdesc (which may include colour specifications from the color or
longdesc xcolor packages) into a document, using LuaTeX's built-in
longdesc MetaPost library. The facility is only available in PDF mode.
-containersize 11988
-containerchecksum 0441c465368c774a4574f8cc54406d37bbf6c76a1812f55d6d26fa62b2dbad8e4f9cdb0b1fdf93e6bd1e40fde462297d8ea7d0d7313566ee177297066a6abe5d
-doccontainersize 155976
-doccontainerchecksum 6443f5ad83605bf87436b97c522470f83553e89e42cd8b6a7a8bc7b6a1ca86c578135353f14917519826cf481d8512ff1c2fb519e7793c6df694b9f173c549d0
+containersize 12060
+containerchecksum daa0a03eca57570f485d2b7decf564eb9f6614a5799d93b798310c20ecb2f055b6dd469c87fbafc1722cb931dc387eada416bb83d609d76a9cfc8c482298edc8
+doccontainersize 156860
+doccontainerchecksum 13b6b7322faf3fda798049bada6d1737f30cb2ce7841ea858ac798fa3f63818ae6661a4e050e4dca336dab37ba9292fa19446a9e1d07a86509c0856793716975
docfiles size=45
RELOC/doc/luatex/luamplib/NEWS
RELOC/doc/luatex/luamplib/README details="Readme"
RELOC/doc/luatex/luamplib/luamplib.pdf details="Package documentation"
RELOC/doc/luatex/luamplib/test-luamplib-latex.tex
RELOC/doc/luatex/luamplib/test-luamplib-plain.tex
-srccontainersize 27184
-srccontainerchecksum d825de00c0b2de78ef0b16898c298628e5ca224f30ccda6d3b308934d77965a63c44056cd439eea56605a91f596eba63172fe63db27e23ec750db994d87708fa
+srccontainersize 27400
+srccontainerchecksum 097a263699067a731409704d7de358c85f4509bfc6426dccd2b193b85430413c441a2c5dc011da613e1e673e6670f7d7ed847e59c58c74d6caae66b7b3c2a29d
srcfiles size=25
RELOC/source/luatex/luamplib/Makefile
RELOC/source/luatex/luamplib/luamplib.dtx
@@ -187528,7 +187526,7 @@ catalogue-contact-repository https://github.com/lualatex/luamplib
catalogue-ctan /macros/luatex/generic/luamplib
catalogue-license gpl2
catalogue-topics mp-use graphics-in-tex luatex
-catalogue-version 2.22.0
+catalogue-version 2.23.0
name luaotfload
category Package
@@ -215809,7 +215807,7 @@ catalogue-version 1.0
name newtx
category Package
-revision 61563
+revision 61581
shortdesc Alternative uses of the TX fonts, with improved metrics
relocated 1
longdesc The bundle splits txfonts.sty (from the TX fonts distribution)
@@ -215824,10 +215822,10 @@ longdesc garamondx package, thus offering a garamond-alike
longdesc text-with-maths combination.
depend kastrup
execute addMap newtx.map
-containersize 6388684
-containerchecksum 4ec1a9cec96170d491db64f69b1b3aede173f1da5c04f3b17aeefcff04b40191b83c328cfb00eca6eed70afc045bd7cd2a7dcc25525ac298e8f2bcdab86a9cef
-doccontainersize 631384
-doccontainerchecksum 10a0c89a9305fc0ed74011f7bc1f845bb75a38c82f5bd475e992e53e7c7f2ff625d39784d85f13c069a3f42211a1ae0a0fedf15b4d6c2ca0588e371512a3a3b7
+containersize 6408360
+containerchecksum 7e7bf18d36ab9b4769e033a0654d3e2ff2d11beb11a16a9bd6ab3203e7cafbfe9632cefb157c70e6b6ae85221f930c48e935e1c4ca5351757245780e26ceab54
+doccontainersize 631452
+doccontainerchecksum 24f58169ea7262cc87a397637a7f580fdf68126c367b5e0519a83c0f1f45f80558f651fbaa68b9951057d668e0c16cf75c7e3d3ee7db06be779d3f9a33edcd40
docfiles size=225
RELOC/doc/fonts/newtx/MANIFEST-newtx.txt
RELOC/doc/fonts/newtx/README details="Readme"
@@ -216793,7 +216791,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.704
+catalogue-version 1.705
name newtxsf
category Package
@@ -271042,23 +271040,23 @@ catalogue-version 1.5b
name sillypage
category Package
-revision 61573
+revision 61584
shortdesc John Cleese's Silly Walk as page numbering style
relocated 1
longdesc This simple LaTeX package provides John Cleese's iconic silly
longdesc walk routine as a page numbering style. Other counters, as well
longdesc as integers, can be typeset in this "silly" style, too.
-containersize 7476
-containerchecksum 80a161b2f0a1d29d888867493c90c653ecad9415f2d86ac1812ccb26d8855894198053b0906b5d4dd1eb703d8e5e4a12a34fcf0b10728187a3d8a6a74e44296a
+containersize 7504
+containerchecksum 9a2bdbb73934c33de398494e9a997719845a81db310df1f5fdb51ba3fe42c0312d5d7084705a7a5fc64d9737dd74b400f5b2b73c9a6aeecb08c49fcf6d08cc1f
doccontainersize 261828
-doccontainerchecksum d00c4c60908e5cbde9134833efcd7022c887f3ab3092d804106556f151617924cdd3916eca3204249d3fde340f17e36d5c434ebd5e6881ec94108e80b6f0abc4
+doccontainerchecksum 98596ffa355985493c8ba22443764a2981ad7929fe34b080f7ff63c76239d911a7cc81bd086057d37cb653c35a1c463cf8c77a05ab7a8dc3eba8d3ca87151b9f
docfiles size=71
RELOC/doc/latex/sillypage/README.md details="Readme"
RELOC/doc/latex/sillypage/sillypage-example.pdf details="Example of use"
RELOC/doc/latex/sillypage/sillypage-example.tex
RELOC/doc/latex/sillypage/sillypage.pdf details="Package documentation"
srccontainersize 3780
-srccontainerchecksum 6f5e43d6243c5c6fd7a864486ffd5969ee80e1ee2129aff0460ec94d1434b58bd96097d17239919621dde1ba43c7384a90b2aae271c993edcaa6f8eaf56a1e24
+srccontainerchecksum e15d9ba3ad74c34bf2110d2cfb23dcda29d91ea73dfe4a2a66f4563fd26a2a4a14f01d3c52703c3b34b5e6ea4f51d25f91bd295a8ff001659b4e9ca5ac4d92a6
srcfiles size=3
RELOC/source/latex/sillypage/sillypage.dtx
RELOC/source/latex/sillypage/sillypage.ins
@@ -271599,7 +271597,7 @@ catalogue-version 1.36
name siunitx
category Package
-revision 61515
+revision 61585
shortdesc A comprehensive (SI) units package
relocated 1
longdesc Typesetting values with units requires care to ensure that the
@@ -271624,17 +271622,17 @@ longdesc The package relies on LaTeX 3 support from the l3kernel and
longdesc l3packages bundles.
depend l3kernel
depend l3packages
-containersize 62520
-containerchecksum 94d5010dc6933de1a1ae1dc2846ca95f3eb74ba5f462ff2b80b352700fd4858c9eff7a0e0c833840b28ec1ecfa59f38111ef700a0192f9add789e84036fbc88e
-doccontainersize 1205800
-doccontainerchecksum ad5fe65cafd851c694dc46bac96cf893c29c6d817fee8d16345868b4abbbcbcf25ed9608189b720465642d195226fbf8f7664e2f6476c57019ff8db7e19eb688
+containersize 62556
+containerchecksum 870727f25a93b9dabdde584de0dc22d316f29fd293e8af8f518e18a13cb505275d85dc5657e1a0d30411ef84e882670a8e9f31cac2666c64597779994988a635
+doccontainersize 1205316
+doccontainerchecksum 7bb1cf726b9c457e10f3a0922993f941fe4bfbace711df94c11f20c5dfe811856c993a3f4d9d9c845da852a4815ad0b857066e67a0ebb9122c679948a38a6511
docfiles size=322
RELOC/doc/latex/siunitx/CHANGELOG.md
RELOC/doc/latex/siunitx/README.md details="Readme"
RELOC/doc/latex/siunitx/siunitx-code.pdf details="Code documentation"
RELOC/doc/latex/siunitx/siunitx.pdf details="User manual"
-srccontainersize 108004
-srccontainerchecksum 1805042baf24376a9d61b0b07fb8749c57dcd3846dfb65b248dec748986430785f3f53713ae6bfeedd41f47fc6d5e7263827ea54e9f2faf2361ac8a84399afe7
+srccontainersize 108000
+srccontainerchecksum 6f7621075917c6c90533b8d5f1daa1eec6bff2db00e3f5c20e4a19f93345ce081fd11abe0f4fed15903b54cd446f2fc1194592d971eafb4f0e50dd015d3cdcc2
srcfiles size=166
RELOC/source/latex/siunitx/siunitx-abbreviation.dtx
RELOC/source/latex/siunitx/siunitx-angle.dtx
@@ -271666,7 +271664,7 @@ catalogue-contact-repository https://github.com/josephwright/siunitx
catalogue-ctan /macros/latex/contrib/siunitx
catalogue-license lppl1.3c
catalogue-topics units scientific-docs expl3
-catalogue-version 3.0.39
+catalogue-version 3.0.40
name skak
category Package
@@ -288313,7 +288311,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 61574
+revision 61591
shortdesc Convert (La)TeX to HTML/XML
longdesc A converter from TeX and LaTeX to SGML-based formats such as
longdesc (X)HTML, MathML, OpenDocument, and Docbook, providing a
@@ -288334,10 +288332,10 @@ longdesc files from them is nontrivial, and generally done with the
longdesc Makefile in development, from which the TeX4ht package in TeX
longdesc Live is updated.
depend tex4ht.ARCH
-containersize 937868
-containerchecksum 26d8f7077684e093e70a90a3bbc64edc1692929962ed0ac0dcad387d83e6bf00c0e7761044636878f146e187a3394888707224f2a6d6bbbe366245ac30139f92
+containersize 937944
+containerchecksum 76a17fd8524426d05e58fc59651847ce3987b809b36c17dc2eafb4c0de2f0ea6899458960769fd1dd019a05c97ae406935d74a2be79636f6442c9c58db45f673
doccontainersize 136384
-doccontainerchecksum 42abbde0d568a7e7aa0b213e890743b151935dfe026b02c6db0c45bcb9c4d393e3618b4d97551204503c1764ab1c2cab968b7ad525c5bc9e1cb106922c999e30
+doccontainerchecksum 7b2c52840d82026a85bda6899e9a724f8eefc16b7349a952568798bab88275af1d46e3aa66ef979e5df50ef8f28496c8b4870cbc09671fbe30e9da04002dc08b
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -288409,8 +288407,8 @@ docfiles size=260
texmf-dist/doc/generic/tex4ht/mn56.html
texmf-dist/doc/generic/tex4ht/mn5x.png
texmf-dist/doc/generic/tex4ht/mn6x.png
-srccontainersize 1226692
-srccontainerchecksum 136204b39c43d2d1e59857535e91b50f93fc5a8b181411e73fec538535ec418ad5011cc7d19cb0868b1d66fe27059d03e97a5e1905ef50ccc5b17e51fdcc0668
+srccontainersize 1238904
+srccontainerchecksum 43f5b328233202650dca12c2b196b72aa7dcbe8fb63ee0b2b7b0efd954a905af30a6446a7ae7be6e5160cb2613c0aecced3536958e91307c77e22374289a1b8a
srcfiles size=3726
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -288484,7 +288482,7 @@ srcfiles size=3726
texmf-dist/source/generic/tex4ht/tex4ht-xhtmml-xtpipes.tex
texmf-dist/source/generic/tex4ht/wripro.tex
texmf-dist/source/generic/tex4ht/xtpipes.tex
-runfiles size=10613
+runfiles size=10614
texmf-dist/scripts/tex4ht/ht.sh
texmf-dist/scripts/tex4ht/htcontext.sh
texmf-dist/scripts/tex4ht/htcopy.pl
@@ -288916,6 +288914,7 @@ runfiles size=10613
texmf-dist/tex/generic/tex4ht/ucs.4ht
texmf-dist/tex/generic/tex4ht/ukraineb.4ht
texmf-dist/tex/generic/tex4ht/ulem.4ht
+ texmf-dist/tex/generic/tex4ht/unicode-math-hooks.4ht
texmf-dist/tex/generic/tex4ht/unicode.4ht
texmf-dist/tex/generic/tex4ht/url.4ht
texmf-dist/tex/generic/tex4ht/usepackage-fontspec.4ht
@@ -298324,7 +298323,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 61565
+revision 61579
shortdesc TeX Live infrastructure programs
longdesc Includes install-tl, tl-portable, rungs, etc.; not needed for
longdesc tlmgr to run but still ours. Not included in tlcritical.
@@ -298332,10 +298331,10 @@ depend texlive-scripts.ARCH
depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
-containersize 108288
-containerchecksum ea8d5cb2da212d7486e95de7edc681af82752d3a28975d2bf8ab9ed2cb83f6a6ba5f21bfca4668848af27d356097f3464b8a26c60f17f8b67322807338f10a0f
-doccontainersize 402636
-doccontainerchecksum 1cfe33cb7cec1b12a2b4bacd345bd5e03821d84a3eee006c596e6ba695823c474a5eeecae6086dda833bf60c06832ae278f5e3699a0e51698c3d1fe678393a8f
+containersize 108296
+containerchecksum 0b94ff1d4836583dca792cc0dc5b9df074388bfba2fa528bc11517e91963d9ec1997a8a663412c5d9377128e45de4310630511df2791b1b4c16ca296772e18a0
+doccontainersize 402560
+doccontainerchecksum 7d77e696399d9ce2209e66144201ec36870de705a629122b7930f2bb2161873855b887fc444a14fd16a2367525dda673b15afd6bcdc7c9a3b18ff5a5014d2382
docfiles size=500
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
@@ -313725,7 +313724,7 @@ catalogue-version 1.0
name tuda-ci
category Package
-revision 60754
+revision 61586
shortdesc LaTeX templates of Technische Universitat Darmstadt
relocated 1
longdesc The TUDa-CI-Bundle provides a possibility to use the Corporate
@@ -313733,11 +313732,11 @@ longdesc Design of TU Darmstadt in LaTeX. It contains documentclasses as
longdesc well as some helper packages and config files together with
longdesc some templates for user documentation, which currently are only
longdesc available in German.
-containersize 43656
-containerchecksum 4a9ae40df9c2f9165aaa23bcbc1065c4f78023e0f4284e14093140a35daf7b630159d8317812a7a7207aa5899cce9dc8c80541a7ef0eed33a13226083e21a75d
-doccontainersize 1140824
-doccontainerchecksum 60d971063b6a4821a49a7ccfa8add4dc2e9171fbd2a95b777ea2960bbcf0dd60fe007c3fbf687ba499557d33cc50f14435448c6a40854616e6e1e21b24c74f24
-docfiles size=1613
+containersize 43292
+containerchecksum e444d52c34d790d49df373e5a5b1e457833180eb517344aaf507359afae5b3b903beebcc8a8eaf8c519f0f20d05ce71cdfcd9d1b0c37909dfb597125554b297d
+doccontainersize 1141456
+doccontainerchecksum 09ddc5fa6472d5968bc0b58d2b265650dbf64341c66fb776c4ef6eb38758364de1637e7e08194701a527b3bef8dd797d3b68e8403fc707185e47367850479fd2
+docfiles size=1614
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.pdf
RELOC/doc/latex/tuda-ci/DEMO-TUDaAnnouncement.tex
RELOC/doc/latex/tuda-ci/DEMO-TUDaBeamer.pdf details="Example presentation" language="de"
@@ -313799,7 +313798,7 @@ catalogue-contact-repository https://github.com/tudace/tuda_latex_templates
catalogue-ctan /macros/latex/contrib/tuda-ci
catalogue-license lppl1.3c
catalogue-topics class doc-templ letter dissertation presentation poster std-conform
-catalogue-version 3.20
+catalogue-version 3.21
name tudscr
category Package
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 98b6002833..80d1d440db 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-ab6a922090a3c4b4bd785fba169da576 texlive.tlpdb
+a2242204ae0c5153943333121fc23435 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index 873c1209ce..0df26bdcdf 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-e7add9e46b1ececb233848ec2217538323f406b5e86eb24a58b4dc2ecd3d8d7933b92a6f585261fe88d11aca4c354fcb498da1262004bde49d4a308e4915a10f texlive.tlpdb
+f0ffe223778cda2109db76726ef962bd0ab90d2048424ec16f5f7fa8873236930039d629b8880fbe504f4f3562645027b260346c4ba8118c4d5cc7f52afef0f9 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index b0575e7757..8aa8ace88e 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-----
-iQEcBAEBCgAGBQJh3iauAAoJEEzhh34ZQ4xwFKwH/3gyOpGnjrxuDYUbAGeYchA/
-9Dv9XG8M55ZLSwDN/rmJeH4Uqq3kimhADqIVEos0nrMqfBScDx/Jgi+HGxd7tgo4
-P/9FvjgH2U7W8D0Yw4IqRv35455l4MB32jYvxHm1NeKi1G2wb5dDfrmzYjsvqQZd
-frMUyI9lbvrjrRr3AB6VaAqWE40I6f8R5H7IqVI4uL79d2hwPOTZK1DxxB8ES3Hh
-E+TPOhwP82QW1v36dS2mev57YoIgvfjul45fN2WucIy2Y0ayKZd1DK2gP6c/ZzoJ
-QjKZPkPAHC4OPthhxHdxCjzX4811RW03an062sK6eKRdpPiq5KcZTKV3l2t6nhg=
-=QN2K
+iQEcBAEBCgAGBQJh33fhAAoJEEzhh34ZQ4xwoSEH/R/oO5niBkv1Jmyw6DbG8S7P
+amqysSAsSIvj85JqYvBLblEMQq1TYVdNXkRdy75V+Bm8r9QyREFmX805/hZsZ8rk
+yYIPmTiisnD5Cm3dUlmfck8xQv9xvXPxSJPCOhXWzcK30NMELih6bF9FAhOZZT7l
+IF6GlUlBELzY2Fq2zeI0PlpSlg9YHC6/ddEkOmL8rM+iGpf9w15Lh0O4XT9NLP4Z
+QjKZgqU7WlglCXj5m3cIYMqLRk1eROpXByhOMIhQubosjYCcoOzXsiruRHIH3/+u
+1ZQbTr6mNk2wUWkb9hIsviCSaCdGPT0J1kNlj5oyPJ4Qa70KCAmXmyNHazmUu/Y=
+=XD9J
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 34937db6f1..ffd2d8c95b 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/next/pr.ini b/systems/win32/miktex/tm/packages/next/pr.ini
index 9f5bd3ce89..00125c1390 100644
--- a/systems/win32/miktex/tm/packages/next/pr.ini
+++ b/systems/win32/miktex/tm/packages/next/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1642022310
+date=1642108758
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=ed06dc3eab3896a25214f3cf52af697c
+lstdigest=623a7529ceb5228f9200a51789596f29
numpkg=5238
relstate=next
-version=8047
+version=8048
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: OB6e9BJK5qQkljVA8gjqmrcQ+C+DE/Zp1xXs0rPafhdataDzGQ/8TFt4+NhuT8oLeh3LCLfWbSDYQFfVTUkRkE9E3vrXELgfdeABpt38jRzkOAl6g8Be2mjgV10IGSrzj1XzZmCsf9LbNmhhSK26SB5E8YeNxl0nLzFXN8bsw+xe3vrhadFx6xbRplXfkYubXCgOmktaS+9santIoYPxYjfpo7chTktd5u2Hi3evFExeRHVyy66LT+5m2VHHBWm1yATlEIQPVbes8NQxxME8TsV0e4M/9pkgMWbU86tkZZ8+RxCzO/f8aOkARb4bqCemVHK9/Mraf7vWrq3SgaFQ8Q==
+;;;; signature/miktex: YNR82raXQ4J3oHRdezD4kL3MDbqGcHNYgthwW23LHtRXnfFCzZf9iWbw3+yYe8GjkZoIGT09PbxuZ/shQlPE93u5NKNcPRrgPovaidZsMT+llRUP2NUnZM6yvkUVBwsg4otf/eyCqNfzdgDt14/g+7djIDWDUMfTJruXcqK2ASK8DJuMW8D9EqZpUvL2dhiNr7O7XuxlPITXufPGoKtqDiFd+wSGyuHTwngBGzASz1dpSBC7xt3TEN3m4gS3fOVMdg9C/vJRVwTDkGHKWSGBB+Or86D+0frlmkfNdK32CkuuGqulqxBJowN/VdlS3+oPGEo5Pq6upDfumLZAv+QXVA==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/systems/win32/miktex/tm/packages/pr.ini b/systems/win32/miktex/tm/packages/pr.ini
index 6248ee2cac..a69162cf89 100644
--- a/systems/win32/miktex/tm/packages/pr.ini
+++ b/systems/win32/miktex/tm/packages/pr.ini
@@ -1,13 +1,13 @@
[repository]
-date=1642021880
+date=1642108272
lastupd=aalok aalok__doc aalok__source acro acro__doc acro__source biblatex-publist biblatex-publist__doc biblatex-publist__source cellspace cellspace__doc cellspace__source chhaya chhaya__doc chhaya__source codebox__doc codebox__source csvsimple csvsimple__doc dbshow
-lstdigest=30917c149e23c39913a9038da7dea390
+lstdigest=0e9c9881210d47efc05555dff7f9bb31
numpkg=5240
relstate=stable
-version=8047
+version=8048
;;;;This configuration file is signed by a MiKTeX maintainer. The signature follows.
;;;;-----BEGIN MIKTEX SIGNATURE-----
-;;;; signature/miktex: xNh45qydB6a8ct4AYTK68eLR+bDkoeAPV1fdtgTk2s3pYN8tifkkwrMr9B1lJkdQEjkHT/KOtTPEtvB41EM4fVrXzzlBu7FZsvvgLLB0juagLpNxtZ2tkXn2YWFP1JqyLDMDGbPV36Ayg0qr5WQrWKvFaiSgKTrdIs0pOqHWj7+kH7SFCgucj/3WmGY5DWbjDZIlbc1vaSNAgf+sPNHO2eRbXRd2OIGG5CgqMEqBV/Stxw8yO/OmzfW5EmeefejO2w1rx53tVKDJMxZrsgGadHW8M6h82Pj3u5AFOJq2z3u+a6eXgEs0e8PGOPerHxc/FFi+SolAvbNghxpp9okE2Q==
+;;;; signature/miktex: pNvuoks5unzJ6Q7EQuDfz5FoWIGxoJtsajneTbQKGK4qGjL1Ne2cWC+QVy6MqREGH86noeI85oUWxhL9kLYVzccn3RT3caN13FQ7yWKx2mHu8p8Zy3haAqGYB4FGAgJAlWpH2NjsPIJNSAEYqPyaRed/LP/AvIcfu4SAUskk8PTWTwUGCQDRM8EvaLiO9z7TUsFBT8K69l3akLCSaQViwbBZMS7ePRfhpqIFDNSxM9tAyuRuovGhpQ857e3ceqLYPoyD3W/sdVwbDse6F3VFkZLphn+60mOVkI3sQo6CddW9ql02BgENQH5G8Ew+PShmW4a6K2oS0QzUPxp5xmPHYw==
;;;;-----END MIKTEX SIGNATURE-----
diff --git a/timestamp b/timestamp
index 6155db788f..d8e0e1de3c 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:
-2022-01-13-02-02
+2022-01-14-02-02