summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2023-11-02 03:04:13 +0000
committerNorbert Preining <norbert@preining.info>2023-11-02 03:04:13 +0000
commit2da66dea964ffa47d24f26081f2942a6e1ef1121 (patch)
tree74283568549892324b317485ab0a26dc23917afb
parenta9d0083bcc66de9ea863ed14cf8cde44e88e4355 (diff)
CTAN sync 202311020304
-rw-r--r--FILES.byname1408
-rw-r--r--FILES.byname.gzbin2557325 -> 2557605 bytes
-rw-r--r--FILES.last07days804
-rw-r--r--biblio/ctan-bibdata/ctan.bib59
-rw-r--r--biblio/ctan-bibdata/ctan.pdfbin3721147 -> 3722453 bytes
-rw-r--r--fonts/newtx/README5
-rw-r--r--fonts/newtx/doc/newtx-ebgaramond-subs.tex18
-rw-r--r--fonts/newtx/doc/newtx-libertine-subs.tex17
-rw-r--r--fonts/newtx/doc/newtx-subs.tex17
-rw-r--r--fonts/newtx/tfm/zplsups-Regular-ts1.tfmbin604 -> 0 bytes
-rw-r--r--graphics/pstricks/contrib/pst-3dplot/Changes1
-rw-r--r--graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdfbin3033906 -> 3033899 bytes
-rw-r--r--graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex58
-rw-r--r--macros/latex/base/README.md2
-rw-r--r--macros/latex/base/alltt.pdfbin223828 -> 223831 bytes
-rw-r--r--macros/latex/base/cfgguide.pdfbin264157 -> 264168 bytes
-rw-r--r--macros/latex/base/changes.txt126
-rw-r--r--macros/latex/base/classes.pdfbin560996 -> 560998 bytes
-rw-r--r--macros/latex/base/clsguide-historic.pdfbin415586 -> 415615 bytes
-rw-r--r--macros/latex/base/clsguide.pdfbin452015 -> 489925 bytes
-rw-r--r--macros/latex/base/clsguide.tex200
-rw-r--r--macros/latex/base/cmfonts.pdfbin292647 -> 292600 bytes
-rw-r--r--macros/latex/base/cyrguide.pdfbin257359 -> 257359 bytes
-rw-r--r--macros/latex/base/doc-code.pdfbin1075741 -> 1075915 bytes
-rw-r--r--macros/latex/base/doc.pdfbin756154 -> 756298 bytes
-rw-r--r--macros/latex/base/docstrip.dtx25
-rw-r--r--macros/latex/base/docstrip.pdfbin504452 -> 506630 bytes
-rw-r--r--macros/latex/base/encguide.pdfbin1318565 -> 1318576 bytes
-rw-r--r--macros/latex/base/exscale.pdfbin204710 -> 204708 bytes
-rw-r--r--macros/latex/base/fix-cm.pdfbin287726 -> 287727 bytes
-rw-r--r--macros/latex/base/fntguide.pdfbin517658 -> 517708 bytes
-rw-r--r--macros/latex/base/fntguide.tex4
-rw-r--r--macros/latex/base/format.ins2
-rw-r--r--macros/latex/base/graphpap.pdfbin161717 -> 161722 bytes
-rw-r--r--macros/latex/base/ifthen.pdfbin221207 -> 221219 bytes
-rw-r--r--macros/latex/base/inputenc.pdfbin318162 -> 318199 bytes
-rw-r--r--macros/latex/base/lamport-manual.pdfbin170883 -> 170876 bytes
-rw-r--r--macros/latex/base/latexrelease.ins2
-rw-r--r--macros/latex/base/latexrelease.pdfbin282097 -> 282095 bytes
-rw-r--r--macros/latex/base/latexsym.pdfbin200762 -> 200759 bytes
-rw-r--r--macros/latex/base/lb2.err2
-rw-r--r--macros/latex/base/lb2.pdfbin252516 -> 252497 bytes
-rw-r--r--macros/latex/base/letter.pdfbin337923 -> 337852 bytes
-rw-r--r--macros/latex/base/lgc2.err2
-rw-r--r--macros/latex/base/lgc2.pdfbin217757 -> 217659 bytes
-rw-r--r--macros/latex/base/lppl.pdfbin132369 -> 132370 bytes
-rw-r--r--macros/latex/base/ltboxes.dtx95
-rw-r--r--macros/latex/base/ltcmd.dtx153
-rw-r--r--macros/latex/base/ltcmdhooks-code.pdfbin755602 -> 755882 bytes
-rw-r--r--macros/latex/base/ltcmdhooks-doc.pdfbin499096 -> 499346 bytes
-rw-r--r--macros/latex/base/ltexpl.dtx25
-rw-r--r--macros/latex/base/ltfilehook-code.pdfbin804186 -> 804030 bytes
-rw-r--r--macros/latex/base/ltfilehook-doc.pdfbin548776 -> 548695 bytes
-rw-r--r--macros/latex/base/ltfilehook.dtx3
-rw-r--r--macros/latex/base/ltfiles.dtx2
-rw-r--r--macros/latex/base/ltfssaxes.dtx6
-rw-r--r--macros/latex/base/ltfssbas.dtx4
-rw-r--r--macros/latex/base/lthooks-code.pdfbin1243214 -> 1258628 bytes
-rw-r--r--macros/latex/base/lthooks-doc.pdfbin739693 -> 755246 bytes
-rw-r--r--macros/latex/base/lthooks.dtx32
-rw-r--r--macros/latex/base/ltluatex.dtx12
-rw-r--r--macros/latex/base/ltluatex.pdfbin325074 -> 325191 bytes
-rw-r--r--macros/latex/base/ltmarks-code.pdfbin716492 -> 716681 bytes
-rw-r--r--macros/latex/base/ltmarks-doc.pdfbin586622 -> 586808 bytes
-rw-r--r--macros/latex/base/ltmiscen.dtx245
-rw-r--r--macros/latex/base/ltnews.pdfbin1287055 -> 1360066 bytes
-rw-r--r--macros/latex/base/ltnews.tex2
-rw-r--r--macros/latex/base/ltnews01.pdfbin169550 -> 169553 bytes
-rw-r--r--macros/latex/base/ltnews02.pdfbin151773 -> 151773 bytes
-rw-r--r--macros/latex/base/ltnews03.pdfbin151321 -> 151324 bytes
-rw-r--r--macros/latex/base/ltnews04.pdfbin152549 -> 152551 bytes
-rw-r--r--macros/latex/base/ltnews05.pdfbin175216 -> 175211 bytes
-rw-r--r--macros/latex/base/ltnews06.pdfbin142864 -> 142867 bytes
-rw-r--r--macros/latex/base/ltnews07.pdfbin138211 -> 138214 bytes
-rw-r--r--macros/latex/base/ltnews08.pdfbin155434 -> 155442 bytes
-rw-r--r--macros/latex/base/ltnews09.pdfbin130026 -> 130028 bytes
-rw-r--r--macros/latex/base/ltnews10.pdfbin169432 -> 169433 bytes
-rw-r--r--macros/latex/base/ltnews11.pdfbin112202 -> 112208 bytes
-rw-r--r--macros/latex/base/ltnews12.pdfbin156765 -> 156764 bytes
-rw-r--r--macros/latex/base/ltnews13.pdfbin182490 -> 182483 bytes
-rw-r--r--macros/latex/base/ltnews14.pdfbin170721 -> 170722 bytes
-rw-r--r--macros/latex/base/ltnews15.pdfbin130323 -> 130328 bytes
-rw-r--r--macros/latex/base/ltnews16.pdfbin138110 -> 138107 bytes
-rw-r--r--macros/latex/base/ltnews17.pdfbin166268 -> 166269 bytes
-rw-r--r--macros/latex/base/ltnews18.pdfbin39840 -> 39839 bytes
-rw-r--r--macros/latex/base/ltnews19.pdfbin225936 -> 225936 bytes
-rw-r--r--macros/latex/base/ltnews20.pdfbin318193 -> 318193 bytes
-rw-r--r--macros/latex/base/ltnews21.pdfbin245229 -> 245228 bytes
-rw-r--r--macros/latex/base/ltnews22.pdfbin318036 -> 318026 bytes
-rw-r--r--macros/latex/base/ltnews23.pdfbin286839 -> 286824 bytes
-rw-r--r--macros/latex/base/ltnews24.pdfbin265497 -> 265497 bytes
-rw-r--r--macros/latex/base/ltnews25.pdfbin205098 -> 205100 bytes
-rw-r--r--macros/latex/base/ltnews26.pdfbin379722 -> 379733 bytes
-rw-r--r--macros/latex/base/ltnews27.pdfbin251285 -> 251283 bytes
-rw-r--r--macros/latex/base/ltnews28.pdfbin376930 -> 376933 bytes
-rw-r--r--macros/latex/base/ltnews29.pdfbin455431 -> 455437 bytes
-rw-r--r--macros/latex/base/ltnews30.pdfbin512246 -> 512240 bytes
-rw-r--r--macros/latex/base/ltnews31.pdfbin526692 -> 526688 bytes
-rw-r--r--macros/latex/base/ltnews32.pdfbin546554 -> 546540 bytes
-rw-r--r--macros/latex/base/ltnews33.pdfbin522771 -> 522757 bytes
-rw-r--r--macros/latex/base/ltnews34.pdfbin508349 -> 508345 bytes
-rw-r--r--macros/latex/base/ltnews35.pdfbin563329 -> 563307 bytes
-rw-r--r--macros/latex/base/ltnews36.pdfbin517935 -> 517934 bytes
-rw-r--r--macros/latex/base/ltnews37.pdfbin456936 -> 456933 bytes
-rw-r--r--macros/latex/base/ltnews37.tex2
-rw-r--r--macros/latex/base/ltnews38.pdfbin0 -> 523672 bytes
-rw-r--r--macros/latex/base/ltnews38.tex602
-rw-r--r--macros/latex/base/ltpara-code.pdfbin672377 -> 672700 bytes
-rw-r--r--macros/latex/base/ltpara-doc.pdfbin560248 -> 560578 bytes
-rw-r--r--macros/latex/base/ltplain.dtx4
-rw-r--r--macros/latex/base/ltproperties-code.pdfbin0 -> 558646 bytes
-rw-r--r--macros/latex/base/ltproperties-code.tex5
-rw-r--r--macros/latex/base/ltproperties-doc.pdfbin0 -> 433141 bytes
-rw-r--r--macros/latex/base/ltproperties-doc.tex8
-rw-r--r--macros/latex/base/ltproperties.dtx966
-rw-r--r--macros/latex/base/ltshipout-code.pdfbin821824 -> 821655 bytes
-rw-r--r--macros/latex/base/ltshipout-doc.pdfbin566698 -> 566566 bytes
-rw-r--r--macros/latex/base/ltsockets-code.pdfbin0 -> 606454 bytes
-rw-r--r--macros/latex/base/ltsockets-code.tex5
-rw-r--r--macros/latex/base/ltsockets-doc.pdfbin0 -> 489314 bytes
-rw-r--r--macros/latex/base/ltsockets-doc.tex8
-rw-r--r--macros/latex/base/ltsockets.dtx1069
-rw-r--r--macros/latex/base/ltspace.dtx44
-rw-r--r--macros/latex/base/ltvers.dtx4
-rw-r--r--macros/latex/base/ltx3info.pdfbin219347 -> 219358 bytes
-rw-r--r--macros/latex/base/ltxdoc.pdfbin244224 -> 244215 bytes
-rw-r--r--macros/latex/base/makeindx.pdfbin165816 -> 165816 bytes
-rw-r--r--macros/latex/base/manifest.txt1
-rw-r--r--macros/latex/base/modguide.pdfbin257823 -> 257825 bytes
-rw-r--r--macros/latex/base/nfssfont.pdfbin211175 -> 211171 bytes
-rw-r--r--macros/latex/base/proc.pdfbin227060 -> 227065 bytes
-rw-r--r--macros/latex/base/slides.pdfbin375509 -> 375493 bytes
-rw-r--r--macros/latex/base/slifonts.pdfbin234183 -> 234171 bytes
-rw-r--r--macros/latex/base/source2e.pdfbin6007580 -> 6150042 bytes
-rw-r--r--macros/latex/base/source2e.tex4
-rw-r--r--macros/latex/base/source2edoc.cls2
-rw-r--r--macros/latex/base/syntonly.pdfbin189997 -> 190255 bytes
-rw-r--r--macros/latex/base/tlc2.err2
-rw-r--r--macros/latex/base/tlc2.pdfbin291233 -> 291143 bytes
-rw-r--r--macros/latex/base/tlc3.err703
-rw-r--r--macros/latex/base/tlc3.pdfbin250362 -> 326462 bytes
-rw-r--r--macros/latex/base/tulm.pdfbin162770 -> 162773 bytes
-rw-r--r--macros/latex/base/usrguide-historic.pdfbin438603 -> 438602 bytes
-rw-r--r--macros/latex/base/usrguide.pdfbin479599 -> 477695 bytes
-rw-r--r--macros/latex/base/usrguide.tex55
-rw-r--r--macros/latex/base/utf8ienc.pdfbin353579 -> 353655 bytes
-rw-r--r--macros/latex/base/webcomp.pdfbin146199 -> 146199 bytes
-rw-r--r--macros/latex/contrib/l3build/CHANGELOG.md12
-rw-r--r--macros/latex/contrib/l3build/README.md2
-rw-r--r--macros/latex/contrib/l3build/l3build-file-functions.lua8
-rw-r--r--macros/latex/contrib/l3build/l3build.12
-rw-r--r--macros/latex/contrib/l3build/l3build.dtx14
-rwxr-xr-xmacros/latex/contrib/l3build/l3build.lua2
-rw-r--r--macros/latex/contrib/l3build/l3build.pdfbin744760 -> 746427 bytes
-rw-r--r--macros/latex/contrib/l3experimental/CHANGELOG.md8
-rw-r--r--macros/latex/contrib/l3experimental/README.md2
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3benchmark.pdfbin308535 -> 308534 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3bitset.pdfbin404408 -> 404410 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-boxes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-code.pdfbin679935 -> 681452 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-layers.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-paths.dtx14
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-points.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-scopes.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-softpath.dtx52
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-state.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw-transforms.dtx2
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3draw.pdfbin517831 -> 517829 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3galley.pdfbin408917 -> 408914 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3graphics.pdfbin383648 -> 383641 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3opacity.pdfbin313597 -> 313597 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/l3str-format.pdfbin368030 -> 368029 bytes
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/l3sys-shell.pdfbin348054 -> 348053 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.dtx6
-rw-r--r--macros/latex/contrib/l3experimental/xcoffins.pdfbin394481 -> 394481 bytes
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.dtx4
-rw-r--r--macros/latex/contrib/l3experimental/xgalley.pdfbin299638 -> 299636 bytes
-rw-r--r--macros/latex/contrib/l3kernel/CHANGELOG.md31
-rw-r--r--macros/latex/contrib/l3kernel/README.md2
-rw-r--r--macros/latex/contrib/l3kernel/expl3.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/expl3.pdfbin622183 -> 623137 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.pdfbin1732906 -> 1766132 bytes
-rw-r--r--macros/latex/contrib/l3kernel/interface3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3.ins1
-rw-r--r--macros/latex/contrib/l3kernel/l3basics.dtx75
-rw-r--r--macros/latex/contrib/l3kernel/l3bootstrap.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3box.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3candidates.dtx261
-rw-r--r--macros/latex/contrib/l3kernel/l3cctab.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3clist.dtx26
-rw-r--r--macros/latex/contrib/l3kernel/l3coffins.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3color.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3debug.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3deprecation.dtx22
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3doc.pdfbin557935 -> 557934 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3docstrip.pdfbin151749 -> 151750 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3expan.dtx47
-rw-r--r--macros/latex/contrib/l3kernel/l3file.dtx14
-rw-r--r--macros/latex/contrib/l3kernel/l3flag.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-assign.dtx87
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-aux.dtx9
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-basics.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-convert.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-expo.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-extended.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-functions.dtx24
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-logic.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-parse.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-random.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-round.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-symbolic.dtx101
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-traps.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-trig.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp-types.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3fp.dtx17
-rw-r--r--macros/latex/contrib/l3kernel/l3fparray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3int.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3intarray.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3kernel-functions.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3keys.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3legacy.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3luatex.dtx5
-rw-r--r--macros/latex/contrib/l3kernel/l3msg.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3names.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3news.pdfbin396222 -> 396222 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news01.pdfbin122959 -> 122959 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news02.pdfbin150919 -> 150919 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news03.pdfbin148747 -> 148747 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news04.pdfbin114754 -> 114754 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news05.pdfbin112524 -> 112524 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news06.pdfbin151591 -> 151591 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news07.pdfbin128344 -> 128344 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news08.pdfbin163484 -> 163484 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news09.pdfbin250159 -> 250159 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news10.pdfbin150302 -> 150302 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news11.pdfbin170102 -> 170102 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3news12.pdfbin205020 -> 205020 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3pdf.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.csv1
-rw-r--r--macros/latex/contrib/l3kernel/l3prefixes.pdfbin82661 -> 82683 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3prg.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3prop.dtx10
-rw-r--r--macros/latex/contrib/l3kernel/l3quark.dtx4
-rw-r--r--macros/latex/contrib/l3kernel/l3regex.dtx54
-rw-r--r--macros/latex/contrib/l3kernel/l3seq.dtx66
-rw-r--r--macros/latex/contrib/l3kernel/l3skip.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3sort.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3str-convert.dtx8
-rw-r--r--macros/latex/contrib/l3kernel/l3str.dtx6
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.pdfbin296258 -> 296258 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3styleguide.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.pdfbin242903 -> 242903 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3syntax-changes.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3sys.dtx7
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.pdfbin218059 -> 218059 bytes
-rw-r--r--macros/latex/contrib/l3kernel/l3term-glossary.tex2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-case.dtx43
-rw-r--r--macros/latex/contrib/l3kernel/l3text-map.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text-purify.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/l3text.dtx15
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-analysis.dtx24
-rw-r--r--macros/latex/contrib/l3kernel/l3tl-build.dtx329
-rw-r--r--macros/latex/contrib/l3kernel/l3tl.dtx44
-rw-r--r--macros/latex/contrib/l3kernel/l3token.dtx12
-rw-r--r--macros/latex/contrib/l3kernel/l3unicode.dtx2
-rw-r--r--macros/latex/contrib/l3kernel/source3.pdfbin7475976 -> 7490669 bytes
-rw-r--r--macros/latex/contrib/l3kernel/source3.tex2
-rw-r--r--macros/latex/contrib/l3kernel/source3body.tex1
-rw-r--r--macros/latex/contrib/profmaquette/doc/TestCAN.pdfbin0 -> 20353 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/TestCAN.tex27
-rw-r--r--macros/latex/contrib/profmaquette/doc/TestCANComplement.pdfbin0 -> 21506 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/TestCANComplement.tex31
-rw-r--r--macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdfbin203416 -> 241332 bytes
-rw-r--r--macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex102
-rw-r--r--macros/latex/contrib/profmaquette/latex/ProfMaquette.sty337
-rw-r--r--macros/latex/required/amsmath/README.md2
-rw-r--r--macros/latex/required/amsmath/amsbsy.pdfbin174944 -> 174946 bytes
-rw-r--r--macros/latex/required/amsmath/amscd.pdfbin179953 -> 179951 bytes
-rw-r--r--macros/latex/required/amsmath/amsgen.pdfbin178181 -> 178193 bytes
-rw-r--r--macros/latex/required/amsmath/amsldoc.pdfbin508198 -> 508230 bytes
-rw-r--r--macros/latex/required/amsmath/amsmath.pdfbin419900 -> 419922 bytes
-rw-r--r--macros/latex/required/amsmath/amsopn.pdfbin140096 -> 140093 bytes
-rw-r--r--macros/latex/required/amsmath/amstext.pdfbin217502 -> 217504 bytes
-rw-r--r--macros/latex/required/amsmath/amsxtra.pdfbin113554 -> 113560 bytes
-rw-r--r--macros/latex/required/amsmath/changes.txt8
-rw-r--r--macros/latex/required/amsmath/subeqn.pdfbin109734 -> 109733 bytes
-rw-r--r--macros/latex/required/amsmath/technote.pdfbin147464 -> 147459 bytes
-rw-r--r--macros/latex/required/amsmath/testmath.pdfbin454559 -> 454658 bytes
-rw-r--r--macros/latex/required/amsmath/testmath.tex69
-rw-r--r--macros/latex/required/firstaid/changes.txt14
-rw-r--r--macros/latex/required/firstaid/firstaid.ins8
-rw-r--r--macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx155
-rw-r--r--macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdfbin269075 -> 263670 bytes
-rw-r--r--macros/latex/required/latex-lab/README.md2
-rw-r--r--macros/latex/required/latex-lab/TODOS-unsorted.md33
-rw-r--r--macros/latex/required/latex-lab/blocks-code.pdfbin878830 -> 886150 bytes
-rw-r--r--macros/latex/required/latex-lab/blocks-code.tex2
-rw-r--r--macros/latex/required/latex-lab/blocks-doc.pdfbin439729 -> 440234 bytes
-rw-r--r--macros/latex/required/latex-lab/blocks-doc.tex2
-rw-r--r--macros/latex/required/latex-lab/changes.txt77
-rw-r--r--macros/latex/required/latex-lab/documentmetadata-support-code.pdfbin519493 -> 523380 bytes
-rw-r--r--macros/latex/required/latex-lab/documentmetadata-support-doc.pdfbin385582 -> 389003 bytes
-rw-r--r--macros/latex/required/latex-lab/documentmetadata-support.dtx65
-rw-r--r--macros/latex/required/latex-lab/latex-lab-amsmath.pdfbin357363 -> 357553 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-bib.dtx11
-rw-r--r--macros/latex/required/latex-lab/latex-lab-bib.pdfbin412227 -> 411092 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-block.dtx (renamed from macros/latex/required/latex-lab/latex-lab-block-tagging.dtx)274
-rw-r--r--macros/latex/required/latex-lab/latex-lab-block.pdf (renamed from macros/latex/required/latex-lab/latex-lab-block-tagging.pdf)bin878830 -> 886150 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-firstaid.dtx62
-rw-r--r--macros/latex/required/latex-lab/latex-lab-firstaid.pdfbin271638 -> 272864 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-float.dtx60
-rw-r--r--macros/latex/required/latex-lab/latex-lab-float.pdfbin442979 -> 444977 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-footnotes.dtx999
-rw-r--r--macros/latex/required/latex-lab/latex-lab-footnotes.pdfbin800668 -> 815656 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-graphic.dtx103
-rw-r--r--macros/latex/required/latex-lab/latex-lab-graphic.pdfbin497530 -> 496997 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-math.dtx (renamed from macros/latex/required/latex-lab/latex-lab-mathtagging.dtx)105
-rw-r--r--macros/latex/required/latex-lab/latex-lab-math.pdf (renamed from macros/latex/required/latex-lab/latex-lab-mathtagging.pdf)bin609528 -> 612623 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-mathpkg.pdfbin302193 -> 302371 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-mathtools.pdfbin357363 -> 357553 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-minipage.dtx86
-rw-r--r--macros/latex/required/latex-lab/latex-lab-minipage.pdfbin277702 -> 280811 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-namespace.dtx100
-rw-r--r--macros/latex/required/latex-lab/latex-lab-namespace.pdfbin0 -> 234649 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-new-or-1.dtx57
-rw-r--r--macros/latex/required/latex-lab/latex-lab-new-or-1.pdfbin383693 -> 389721 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-new-or-2.dtx341
-rw-r--r--macros/latex/required/latex-lab/latex-lab-new-or-2.pdfbin530340 -> 632310 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-sec.dtx89
-rw-r--r--macros/latex/required/latex-lab/latex-lab-sec.pdfbin527667 -> 527916 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-table.dtx1975
-rw-r--r--macros/latex/required/latex-lab/latex-lab-table.pdfbin0 -> 621929 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-testphase.dtx46
-rw-r--r--macros/latex/required/latex-lab/latex-lab-testphase.pdfbin298269 -> 298403 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-text.dtx12
-rw-r--r--macros/latex/required/latex-lab/latex-lab-text.pdfbin308879 -> 307812 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx4
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdfbin296522 -> 296124 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx48
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdfbin357477 -> 361084 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.pdfbin379087 -> 0 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc.dtx (renamed from macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.dtx)82
-rw-r--r--macros/latex/required/latex-lab/latex-lab-toc.pdfbin0 -> 396817 bytes
-rw-r--r--macros/latex/required/latex-lab/latex-lab.ins115
-rw-r--r--macros/latex/required/latex-lab/usage-of-@footnotemark.md189
-rw-r--r--macros/latex/required/latex-lab/usage-of-@footnotetext.md848
-rw-r--r--macros/latex/required/latex-lab/usage-of-@makefntext.md1751
-rw-r--r--macros/latex/required/latex-lab/usage-of-kern-kern.md88
-rw-r--r--macros/latex/required/tools/README.md4
-rw-r--r--macros/latex/required/tools/afterpage.dtx12
-rw-r--r--macros/latex/required/tools/afterpage.pdfbin197735 -> 198100 bytes
-rw-r--r--macros/latex/required/tools/array.dtx4
-rw-r--r--macros/latex/required/tools/array.pdfbin517039 -> 517410 bytes
-rw-r--r--macros/latex/required/tools/bm.dtx63
-rw-r--r--macros/latex/required/tools/bm.pdfbin323438 -> 323929 bytes
-rw-r--r--macros/latex/required/tools/calc.dtx26
-rw-r--r--macros/latex/required/tools/calc.pdfbin370641 -> 370660 bytes
-rw-r--r--macros/latex/required/tools/changes.txt17
-rw-r--r--macros/latex/required/tools/dcolumn.dtx22
-rw-r--r--macros/latex/required/tools/dcolumn.pdfbin220838 -> 221038 bytes
-rw-r--r--macros/latex/required/tools/delarray.pdfbin191064 -> 191058 bytes
-rw-r--r--macros/latex/required/tools/enumerate.dtx10
-rw-r--r--macros/latex/required/tools/enumerate.pdfbin215495 -> 215077 bytes
-rw-r--r--macros/latex/required/tools/fileerr.pdfbin187704 -> 188281 bytes
-rw-r--r--macros/latex/required/tools/fontsmpl.pdfbin146441 -> 146438 bytes
-rw-r--r--macros/latex/required/tools/ftnright.dtx18
-rw-r--r--macros/latex/required/tools/ftnright.pdfbin387208 -> 387794 bytes
-rw-r--r--macros/latex/required/tools/hhline.pdfbin189673 -> 189678 bytes
-rw-r--r--macros/latex/required/tools/indentfirst.dtx4
-rw-r--r--macros/latex/required/tools/indentfirst.pdfbin157956 -> 157352 bytes
-rw-r--r--macros/latex/required/tools/layout.dtx42
-rw-r--r--macros/latex/required/tools/layout.pdfbin259965 -> 260278 bytes
-rw-r--r--macros/latex/required/tools/longtable.dtx36
-rw-r--r--macros/latex/required/tools/longtable.pdfbin391298 -> 391258 bytes
-rw-r--r--macros/latex/required/tools/multicol.pdfbin523315 -> 523618 bytes
-rw-r--r--macros/latex/required/tools/rawfonts.pdfbin138967 -> 138956 bytes
-rw-r--r--macros/latex/required/tools/shellesc.dtx18
-rw-r--r--macros/latex/required/tools/shellesc.pdfbin176204 -> 176171 bytes
-rw-r--r--macros/latex/required/tools/showkeys.dtx20
-rw-r--r--macros/latex/required/tools/showkeys.pdfbin252908 -> 252975 bytes
-rw-r--r--macros/latex/required/tools/somedefs.pdfbin167585 -> 167583 bytes
-rw-r--r--macros/latex/required/tools/tabularx.dtx38
-rw-r--r--macros/latex/required/tools/tabularx.pdfbin287074 -> 287013 bytes
-rw-r--r--macros/latex/required/tools/theorem.dtx12
-rw-r--r--macros/latex/required/tools/theorem.pdfbin351654 -> 352315 bytes
-rw-r--r--macros/latex/required/tools/tools-overview.pdfbin73672 -> 73673 bytes
-rw-r--r--macros/latex/required/tools/trace.pdfbin222080 -> 222074 bytes
-rw-r--r--macros/latex/required/tools/varioref.pdfbin393154 -> 393134 bytes
-rw-r--r--macros/latex/required/tools/verbatim.dtx24
-rw-r--r--macros/latex/required/tools/verbatim.pdfbin330785 -> 331003 bytes
-rw-r--r--macros/latex/required/tools/xr.dtx4
-rw-r--r--macros/latex/required/tools/xr.pdfbin169984 -> 170451 bytes
-rw-r--r--macros/latex/required/tools/xspace.pdfbin257018 -> 257027 bytes
-rw-r--r--support/TeX4ht/source/ChangeLog7
-rw-r--r--support/TeX4ht/source/tex4ht-4ht.tex7
-rw-r--r--support/TeX4ht/source/tex4ht-html4.tex5
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb124
-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.asc16
-rw-r--r--systems/texlive/tlnet/tlpkg/texlive.tlpdb.xzbin2482368 -> 2482092 bytes
-rw-r--r--timestamp2
412 files changed, 11115 insertions, 6281 deletions
diff --git a/FILES.byname b/FILES.byname
index 0cfacc70e6..e734defc86 100644
--- a/FILES.byname
+++ b/FILES.byname
@@ -2060,12 +2060,12 @@
2023/10/05 | 1710 | biblio/citation-style-language/README.md
2023/10/05 | 12878 | biblio/citation-style-language/vancouver.csl
2023/10/05 | 4531754 | biblio/citation-style-language.zip
-2023/10/31 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/11/01 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2022/10/08 | 127 | biblio/ctan-bibdata/biblatex-ctan/ctan.cbx
-2023/10/31 | 2821235 | biblio/ctan-bibdata/ctan.bib
-2023/10/31 | 3721147 | biblio/ctan-bibdata/ctan.pdf
+2023/11/01 | 2822762 | biblio/ctan-bibdata/ctan.bib
+2023/11/01 | 3722453 | biblio/ctan-bibdata/ctan.pdf
2023/01/16 | 1489 | biblio/ctan-bibdata/README
-2023/10/31 | 4124615 | biblio/ctan-bibdata.zip
+2023/11/01 | 4127344 | biblio/ctan-bibdata.zip
2023/02/23 | 3126 | biblio/pbibtex/pbibtex-base/cpp.awk
2023/02/23 | 1009 | biblio/pbibtex/pbibtex-base/generate.sh
2023/02/23 | 22362 | biblio/pbibtex/pbibtex-base/jabbrv.bst
@@ -2222,7 +2222,7 @@
1989/12/11 | 6196 | biblio/tib/tib.man
1989/03/29 | 23265 | biblio/tib/vitaMake
2005/12/15 | 366385 | biblio/tib.zip
-2023/10/30 | 17792 | CTAN.sites
+2023/11/01 | 18918 | CTAN.sites
1990/10/03 | 5032 | dviware/beebe/00readme.txt
1990/10/03 | 479 | dviware/beebe/doc/00dir.cmd
1990/10/03 | 1209 | dviware/beebe/doc/00dir.lst
@@ -5422,7 +5422,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
-2023/10/31 | 66862 | FILES.last07days
+2023/11/01 | 73233 | 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
@@ -85001,9 +85001,6 @@
2013/09/09 | 4388 | fonts/newtx/doc/mathnotes.tex
2023/10/29 | 675906 | fonts/newtx/doc/newtxdoc.pdf
2023/10/29 | 129272 | fonts/newtx/doc/newtxdoc.tex
-2019/10/01 | 164 | fonts/newtx/doc/newtx-ebgaramond-subs.tex
-2019/10/01 | 149 | fonts/newtx/doc/newtx-libertine-subs.tex
-2020/12/19 | 144 | fonts/newtx/doc/newtx-subs.tex
2012/05/27 | 17530 | fonts/newtx/doc/sample-lib-crop.pdf
2012/05/22 | 18519 | fonts/newtx/doc/sample-libmtp-crop.pdf
2012/05/06 | 18157 | fonts/newtx/doc/sample-mtp-crop.pdf
@@ -85088,7 +85085,7 @@
2023/09/20 | 217888 | fonts/newtx/opentype/TeXGyreTermesX-Italic.otf
2023/10/29 | 226088 | fonts/newtx/opentype/TeXGyreTermesX-Regular.otf
2023/09/20 | 237316 | fonts/newtx/opentype/TeXGyreTermesX-Slanted.otf
-2023/10/30 | 46188 | fonts/newtx/README
+2023/11/01 | 46326 | fonts/newtx/README
2023/05/07 | 245268 | fonts/newtxsf/doc/newtxsf-doc.pdf
2023/05/07 | 6715 | fonts/newtxsf/doc/newtxsf-doc.tex
2014/09/30 | 43780 | fonts/newtxsf/doc/OFL-FAQ.txt
@@ -85800,7 +85797,6 @@
2012/05/19 | 1172 | fonts/newtx/tfm/txsy5.tfm
2012/05/19 | 1156 | fonts/newtx/tfm/txsy7.tfm
2019/09/12 | 1580 | fonts/newtx/tfm/txsys.tfm
-2023/09/04 | 604 | fonts/newtx/tfm/zplsups-Regular-ts1.tfm
2021/05/08 | 3236 | fonts/newtx/tfm/ztmbsl-lf-ot1.tfm
2021/05/07 | 11508 | fonts/newtx/tfm/ztmbsl-lf-t1.tfm
2021/05/08 | 7432 | fonts/newtx/tfm/ztmbsl-lf-texnansi.tfm
@@ -86203,7 +86199,7 @@
2019/11/02 | 2656 | fonts/newtx/vf/zutbmi.vf
2021/03/22 | 2176 | fonts/newtx/vf/zutmia.vf
2019/11/02 | 2552 | fonts/newtx/vf/zutmi.vf
-2023/10/30 | 9637027 | fonts/newtx.zip
+2023/11/01 | 9636068 | fonts/newtx.zip
2005/10/24 | 6224 | fonts/niceframe/afm/bbding10.afm
2005/10/24 | 2299 | fonts/niceframe/afm/dingbat.afm
2005/10/24 | 9099 | fonts/niceframe/afm/karta15.afm
@@ -164519,16 +164515,16 @@
2008/12/27 | 73481 | graphics/pstricks/contrib/pst-2dplot.zip
2010/02/14 | 467 | graphics/pstricks/contrib/pst-3d/Changes
2009/12/30 | 1817 | graphics/pstricks/contrib/pst-3d/Makefile
-2023/09/08 | 6590 | graphics/pstricks/contrib/pst-3dplot/Changes
-2023/09/08 | 4137 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.bib
-2023/09/08 | 26449 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.dat
-2023/09/08 | 3033906 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
+2023/11/01 | 6641 | graphics/pstricks/contrib/pst-3dplot/Changes
+2023/11/01 | 4137 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.bib
+2023/11/01 | 26449 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.dat
+2023/11/01 | 3033899 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
2023/09/08 | 88137 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.tex
2021/09/08 | 25498 | graphics/pstricks/contrib/pst-3dplot/dvips/pst-3dplot.pro
-2023/09/08 | 551 | graphics/pstricks/contrib/pst-3dplot/latex/pst-3dplot.sty
+2023/11/01 | 551 | graphics/pstricks/contrib/pst-3dplot/latex/pst-3dplot.sty
2023/09/08 | 669 | graphics/pstricks/contrib/pst-3dplot/README
-2023/09/08 | 93510 | graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
-2023/09/08 | 2843326 | graphics/pstricks/contrib/pst-3dplot.zip
+2023/11/01 | 94042 | graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
+2023/11/01 | 2843408 | graphics/pstricks/contrib/pst-3dplot.zip
2009/10/19 | 3468 | graphics/pstricks/contrib/pst-3d/pst-3d-doc.bib
2010/02/14 | 139502 | graphics/pstricks/contrib/pst-3d/pst-3d-doc.pdf
2010/02/13 | 23213 | graphics/pstricks/contrib/pst-3d/pst-3d-doc.tex
@@ -194691,9 +194687,9 @@
2015/12/09 | 171418 | install/macros/latex/contrib/ksp-thesis.tds.zip
2019/12/19 | 302191 | install/macros/latex/contrib/kvdefinekeys.tds.zip
2023/10/23 | 972850 | install/macros/latex/contrib/l3backend.tds.zip
-2023/09/13 | 821916 | install/macros/latex/contrib/l3build.tds.zip
-2023/10/10 | 4457163 | install/macros/latex/contrib/l3experimental.tds.zip
-2023/10/23 | 14136490 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/11/01 | 823832 | install/macros/latex/contrib/l3build.tds.zip
+2023/11/01 | 4458429 | install/macros/latex/contrib/l3experimental.tds.zip
+2023/11/01 | 14184442 | install/macros/latex/contrib/l3kernel.tds.zip
2023/10/10 | 2257270 | install/macros/latex/contrib/l3packages.tds.zip
2023/10/14 | 606244 | install/macros/latex/contrib/lastpage.tds.zip
2009/09/02 | 556672 | install/macros/latex/contrib/layouts.tds.zip
@@ -194849,16 +194845,16 @@
2023/06/11 | 3111045 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip
2023/09/14 | 10803422 | install/macros/latex-dev/required/latex-lab-dev.tds.zip
2023/06/11 | 7340085 | install/macros/latex-dev/required/latex-tools-dev.tds.zip
-2023/06/19 | 40739586 | install/macros/latex/latex-base.tds.zip
+2023/11/01 | 43671611 | install/macros/latex/latex-base.tds.zip
2020/06/01 | 1578753 | install/macros/latex/required/amscls.tds.zip
2023/10/25 | 3584572 | install/macros/latex/required/babel-base.tds.zip
-2023/06/08 | 2795661 | install/macros/latex/required/latex-amsmath.tds.zip
+2023/11/01 | 2795407 | install/macros/latex/required/latex-amsmath.tds.zip
2022/06/14 | 242625 | install/macros/latex/required/latexbug.tds.zip
2022/06/16 | 1352652 | install/macros/latex/required/latex-cyrillic.tds.zip
-2023/06/08 | 275345 | install/macros/latex/required/latex-firstaid.tds.zip
+2023/11/01 | 268897 | install/macros/latex/required/latex-firstaid.tds.zip
2022/10/31 | 3109253 | install/macros/latex/required/latex-graphics.tds.zip
-2023/06/09 | 10431840 | install/macros/latex/required/latex-lab.tds.zip
-2023/06/08 | 7339262 | install/macros/latex/required/latex-tools.tds.zip
+2023/11/01 | 11455452 | install/macros/latex/required/latex-lab.tds.zip
+2023/11/01 | 7342805 | install/macros/latex/required/latex-tools.tds.zip
2016/09/02 | 108688 | install/macros/luatex/generic/cstypo.tds.zip
2015/10/01 | 154538 | install/macros/luatex/generic/ctablestack.tds.zip
2023/08/20 | 288576 | install/macros/luatex/generic/lualibs.tds.zip
@@ -211143,294 +211139,306 @@
1993/11/08 | 1691 | macros/latex209/contrib/zero/zero-test.tex
2006/09/21 | 3505 | macros/latex209/contrib/zero.zip
1997/01/22 | 274 | macros/latex209/distribs/README.obsolete
-2023/06/19 | 7104 | macros/latex/base/alltt.dtx
-2023/06/19 | 2890 | macros/latex/base/alltt.ins
-2023/06/19 | 223828 | macros/latex/base/alltt.pdf
-2023/06/19 | 3282 | macros/latex/base/bugs.txt
-2023/06/19 | 264157 | macros/latex/base/cfgguide.pdf
-2023/06/19 | 22723 | macros/latex/base/cfgguide.tex
-2023/06/19 | 42708 | macros/latex/base/changes.old.txt
-2023/06/19 | 400808 | macros/latex/base/changes.txt
-2023/06/19 | 156238 | macros/latex/base/classes.dtx
-2023/06/19 | 4087 | macros/latex/base/classes.ins
-2023/06/19 | 560996 | macros/latex/base/classes.pdf
-2023/06/19 | 415586 | macros/latex/base/clsguide-historic.pdf
-2023/06/19 | 69439 | macros/latex/base/clsguide-historic.tex
-2023/06/19 | 452015 | macros/latex/base/clsguide.pdf
-2023/06/19 | 56472 | macros/latex/base/clsguide.tex
-2023/06/19 | 5273 | macros/latex/base/cmextra.ins
-2023/06/19 | 44531 | macros/latex/base/cmfonts.fdd
-2023/06/19 | 4324 | macros/latex/base/cmfonts.ins
-2023/06/19 | 292647 | macros/latex/base/cmfonts.pdf
-2023/06/19 | 257359 | macros/latex/base/cyrguide.pdf
-2023/06/19 | 17782 | macros/latex/base/cyrguide.tex
-2023/06/19 | 29965 | macros/latex/base/doc-2016-02-15.sty
-2023/06/19 | 30499 | macros/latex/base/doc-2021-06-01.sty
-2023/06/19 | 1075741 | macros/latex/base/doc-code.pdf
-2023/06/19 | 96 | macros/latex/base/doc-code.tex
-2023/06/19 | 242471 | macros/latex/base/doc.dtx
-2023/06/19 | 756154 | macros/latex/base/doc.pdf
-2023/06/19 | 170595 | macros/latex/base/docstrip.dtx
-2023/06/19 | 4273 | macros/latex/base/docstrip.ins
-2023/06/19 | 504452 | macros/latex/base/docstrip.pdf
-2023/06/19 | 4390 | macros/latex/base/ec.ins
-2023/06/19 | 1318565 | macros/latex/base/encguide.pdf
-2023/06/19 | 52813 | macros/latex/base/encguide.tex
-2023/06/19 | 7216 | macros/latex/base/exscale.dtx
-2023/06/19 | 3338 | macros/latex/base/exscale.ins
-2023/06/19 | 204710 | macros/latex/base/exscale.pdf
-2023/06/19 | 23516 | macros/latex/base/fix-cm.dtx
-2023/06/19 | 2892 | macros/latex/base/fix-cm.ins
-2023/06/19 | 287726 | macros/latex/base/fix-cm.pdf
-2023/06/19 | 517658 | macros/latex/base/fntguide.pdf
-2023/06/19 | 108223 | macros/latex/base/fntguide.tex
-2023/06/19 | 60321 | macros/latex/base/fontdef.dtx
-2023/06/19 | 9779 | macros/latex/base/format.ins
-2023/06/19 | 5509 | macros/latex/base/graphpap.dtx
-2023/06/19 | 2892 | macros/latex/base/graphpap.ins
-2023/06/19 | 161717 | macros/latex/base/graphpap.pdf
-2023/06/19 | 2705 | macros/latex/base/idx.tex
-2023/06/19 | 18753 | macros/latex/base/ifthen.dtx
-2023/06/19 | 2888 | macros/latex/base/ifthen.ins
-2023/06/19 | 221207 | macros/latex/base/ifthen.pdf
-2023/06/19 | 106904 | macros/latex/base/inputenc.dtx
-2023/06/19 | 5714 | macros/latex/base/inputenc.ins
-2023/06/19 | 318162 | macros/latex/base/inputenc.pdf
-2023/06/19 | 4079 | macros/latex/base/lablst.tex
-2023/06/19 | 13759 | macros/latex/base/lamport-manual.err
-2023/06/19 | 170883 | macros/latex/base/lamport-manual.pdf
-2023/06/19 | 38730 | macros/latex/base/latex209.dtx
-2023/06/19 | 4219 | macros/latex/base/latex209.ins
-2023/06/19 | 45347 | macros/latex/base/latexrelease.dtx
-2023/06/19 | 6047 | macros/latex/base/latexrelease.ins
-2023/06/19 | 282097 | macros/latex/base/latexrelease.pdf
-2023/06/19 | 6709 | macros/latex/base/latexsym.dtx
-2023/06/19 | 5041 | macros/latex/base/latexsym.ins
-2023/06/19 | 200762 | macros/latex/base/latexsym.pdf
-2023/06/19 | 52887 | macros/latex/base/lb2.err
-2023/06/19 | 252516 | macros/latex/base/lb2.pdf
-2023/06/19 | 1279 | macros/latex/base/legal.txt
-2023/06/19 | 63280 | macros/latex/base/letter.dtx
-2023/06/19 | 3372 | macros/latex/base/letter.ins
-2023/06/19 | 337923 | macros/latex/base/letter.pdf
-2023/06/19 | 21229 | macros/latex/base/lgc2.err
-2023/06/19 | 217757 | macros/latex/base/lgc2.pdf
-2023/06/19 | 9068 | macros/latex/base/lppl-1-0.txt
-2023/06/19 | 14341 | macros/latex/base/lppl-1-1.txt
-2023/06/19 | 14421 | macros/latex/base/lppl-1-2.txt
-2023/06/19 | 132369 | macros/latex/base/lppl.pdf
-2023/06/19 | 23386 | macros/latex/base/lppl.tex
-2023/06/19 | 19040 | macros/latex/base/lppl.txt
-2023/06/19 | 4298 | macros/latex/base/ltalloc.dtx
-2023/06/19 | 17389 | macros/latex/base/ltbibl.dtx
-2023/06/19 | 45712 | macros/latex/base/ltboxes.dtx
-2023/06/19 | 145334 | macros/latex/base/ltclass.dtx
-2023/06/19 | 187531 | macros/latex/base/ltcmd.dtx
-2023/06/19 | 755602 | macros/latex/base/ltcmdhooks-code.pdf
-2023/06/19 | 103 | macros/latex/base/ltcmdhooks-code.tex
-2023/06/19 | 499096 | macros/latex/base/ltcmdhooks-doc.pdf
-2023/06/19 | 238 | macros/latex/base/ltcmdhooks-doc.tex
-2023/06/19 | 67588 | macros/latex/base/ltcmdhooks.dtx
-2023/06/19 | 9557 | macros/latex/base/ltcntrl.dtx
-2023/06/19 | 24286 | macros/latex/base/ltcounts.dtx
-2023/06/19 | 92954 | macros/latex/base/ltdefns.dtx
-2023/06/19 | 35984 | macros/latex/base/ltdirchk.dtx
-2023/06/19 | 27069 | macros/latex/base/lterror.dtx
-2023/06/19 | 18711 | macros/latex/base/ltexpl.dtx
-2023/06/19 | 804186 | macros/latex/base/ltfilehook-code.pdf
-2023/06/19 | 105 | macros/latex/base/ltfilehook-code.tex
-2023/06/19 | 548776 | macros/latex/base/ltfilehook-doc.pdf
-2023/06/19 | 241 | macros/latex/base/ltfilehook-doc.tex
-2023/06/19 | 67457 | macros/latex/base/ltfilehook.dtx
-2023/06/19 | 61493 | macros/latex/base/ltfiles.dtx
-2023/06/19 | 51180 | macros/latex/base/ltfinal.dtx
-2023/06/19 | 55687 | macros/latex/base/ltfloat.dtx
-2023/06/19 | 29267 | macros/latex/base/ltfntcmd.dtx
-2023/06/19 | 58551 | macros/latex/base/ltfssaxes.dtx
-2023/06/19 | 82916 | macros/latex/base/ltfssbas.dtx
-2023/06/19 | 10370 | macros/latex/base/ltfsscmp.dtx
-2023/06/19 | 75111 | macros/latex/base/ltfssdcl.dtx
-2023/06/19 | 84215 | macros/latex/base/ltfssini.dtx
-2023/06/19 | 72475 | macros/latex/base/ltfsstrc.dtx
-2023/06/19 | 1243214 | macros/latex/base/lthooks-code.pdf
-2023/06/19 | 102 | macros/latex/base/lthooks-code.tex
-2023/06/19 | 739693 | macros/latex/base/lthooks-doc.pdf
-2023/06/19 | 238 | macros/latex/base/lthooks-doc.tex
-2023/06/19 | 300812 | macros/latex/base/lthooks.dtx
-2023/06/19 | 4945 | macros/latex/base/lthyphen.dtx
-2023/06/19 | 5859 | macros/latex/base/ltidxglo.dtx
-2023/06/19 | 19853 | macros/latex/base/ltkeys.dtx
-2023/06/19 | 4757 | macros/latex/base/ltlength.dtx
-2023/06/19 | 36154 | macros/latex/base/ltlists.dtx
-2023/06/19 | 3725 | macros/latex/base/ltlogos.dtx
-2023/06/19 | 74921 | macros/latex/base/ltluatex.dtx
-2023/06/19 | 325074 | macros/latex/base/ltluatex.pdf
-2023/06/19 | 716492 | macros/latex/base/ltmarks-code.pdf
-2023/06/19 | 102 | macros/latex/base/ltmarks-code.tex
-2023/06/19 | 586622 | macros/latex/base/ltmarks-doc.pdf
-2023/06/19 | 238 | macros/latex/base/ltmarks-doc.tex
-2023/06/19 | 63142 | macros/latex/base/ltmarks.dtx
-2023/06/19 | 42287 | macros/latex/base/ltmath.dtx
-2023/06/19 | 6217 | macros/latex/base/ltmeta.dtx
-2023/06/19 | 59070 | macros/latex/base/ltmiscen.dtx
-2023/06/19 | 169550 | macros/latex/base/ltnews01.pdf
-2023/06/19 | 5246 | macros/latex/base/ltnews01.tex
-2023/06/19 | 151773 | macros/latex/base/ltnews02.pdf
-2023/06/19 | 5462 | macros/latex/base/ltnews02.tex
-2023/06/19 | 151321 | macros/latex/base/ltnews03.pdf
-2023/06/19 | 5369 | macros/latex/base/ltnews03.tex
-2023/06/19 | 152549 | macros/latex/base/ltnews04.pdf
-2023/06/19 | 5678 | macros/latex/base/ltnews04.tex
-2023/06/19 | 175216 | macros/latex/base/ltnews05.pdf
-2023/06/19 | 5699 | macros/latex/base/ltnews05.tex
-2023/06/19 | 142864 | macros/latex/base/ltnews06.pdf
-2023/06/19 | 5544 | macros/latex/base/ltnews06.tex
-2023/06/19 | 138211 | macros/latex/base/ltnews07.pdf
-2023/06/19 | 5576 | macros/latex/base/ltnews07.tex
-2023/06/19 | 155434 | macros/latex/base/ltnews08.pdf
-2023/06/19 | 5732 | macros/latex/base/ltnews08.tex
-2023/06/19 | 130026 | macros/latex/base/ltnews09.pdf
-2023/06/19 | 5451 | macros/latex/base/ltnews09.tex
-2023/06/19 | 169432 | macros/latex/base/ltnews10.pdf
-2023/06/19 | 5825 | macros/latex/base/ltnews10.tex
-2023/06/19 | 112202 | macros/latex/base/ltnews11.pdf
-2023/06/19 | 5529 | macros/latex/base/ltnews11.tex
-2023/06/19 | 156765 | macros/latex/base/ltnews12.pdf
-2023/06/19 | 5574 | macros/latex/base/ltnews12.tex
-2023/06/19 | 182490 | macros/latex/base/ltnews13.pdf
-2023/06/19 | 7029 | macros/latex/base/ltnews13.tex
-2023/06/19 | 170721 | macros/latex/base/ltnews14.pdf
-2023/06/19 | 6424 | macros/latex/base/ltnews14.tex
-2023/06/19 | 130323 | macros/latex/base/ltnews15.pdf
-2023/06/19 | 5986 | macros/latex/base/ltnews15.tex
-2023/06/19 | 138110 | macros/latex/base/ltnews16.pdf
-2023/06/19 | 5775 | macros/latex/base/ltnews16.tex
-2023/06/19 | 166268 | macros/latex/base/ltnews17.pdf
-2023/06/19 | 8970 | macros/latex/base/ltnews17.tex
-2023/06/19 | 39840 | macros/latex/base/ltnews18.pdf
-2023/06/19 | 1341 | macros/latex/base/ltnews18.tex
-2023/06/19 | 225936 | macros/latex/base/ltnews19.pdf
-2023/06/19 | 4190 | macros/latex/base/ltnews19.tex
-2023/06/19 | 318193 | macros/latex/base/ltnews20.pdf
-2023/06/19 | 7244 | macros/latex/base/ltnews20.tex
-2023/06/19 | 245229 | macros/latex/base/ltnews21.pdf
-2023/06/19 | 9935 | macros/latex/base/ltnews21.tex
-2023/06/19 | 318036 | macros/latex/base/ltnews22.pdf
-2023/06/19 | 10792 | macros/latex/base/ltnews22.tex
-2023/06/19 | 286839 | macros/latex/base/ltnews23.pdf
-2023/06/19 | 10791 | macros/latex/base/ltnews23.tex
-2023/06/19 | 265497 | macros/latex/base/ltnews24.pdf
-2023/06/19 | 12334 | macros/latex/base/ltnews24.tex
-2023/06/19 | 205098 | macros/latex/base/ltnews25.pdf
-2023/06/19 | 5588 | macros/latex/base/ltnews25.tex
-2023/06/19 | 379722 | macros/latex/base/ltnews26.pdf
-2023/06/19 | 10798 | macros/latex/base/ltnews26.tex
-2023/06/19 | 251285 | macros/latex/base/ltnews27.pdf
-2023/06/19 | 5691 | macros/latex/base/ltnews27.tex
-2023/06/19 | 376930 | macros/latex/base/ltnews28.pdf
-2023/06/19 | 15047 | macros/latex/base/ltnews28.tex
-2023/06/19 | 455431 | macros/latex/base/ltnews29.pdf
-2023/06/19 | 18944 | macros/latex/base/ltnews29.tex
-2023/06/19 | 512246 | macros/latex/base/ltnews30.pdf
-2023/06/19 | 23646 | macros/latex/base/ltnews30.tex
-2023/06/19 | 526692 | macros/latex/base/ltnews31.pdf
-2023/06/19 | 30452 | macros/latex/base/ltnews31.tex
-2023/06/19 | 546554 | macros/latex/base/ltnews32.pdf
-2023/06/19 | 33243 | macros/latex/base/ltnews32.tex
-2023/06/19 | 522771 | macros/latex/base/ltnews33.pdf
-2023/06/19 | 33911 | macros/latex/base/ltnews33.tex
-2023/06/19 | 508349 | macros/latex/base/ltnews34.pdf
-2023/06/19 | 32331 | macros/latex/base/ltnews34.tex
-2023/06/19 | 563329 | macros/latex/base/ltnews35.pdf
-2023/06/19 | 38226 | macros/latex/base/ltnews35.tex
-2023/06/19 | 517935 | macros/latex/base/ltnews36.pdf
-2023/06/19 | 19333 | macros/latex/base/ltnews36.tex
-2023/06/19 | 456936 | macros/latex/base/ltnews37.pdf
-2023/06/19 | 33083 | macros/latex/base/ltnews37.tex
-2023/06/19 | 21488 | macros/latex/base/ltnews.cls
-2023/06/19 | 1287055 | macros/latex/base/ltnews.pdf
-2023/06/19 | 8051 | macros/latex/base/ltnews.tex
-2023/06/19 | 148294 | macros/latex/base/ltoutenc.dtx
-2023/06/19 | 3367 | macros/latex/base/ltoutenc.ins
-2023/06/19 | 178567 | macros/latex/base/ltoutput.dtx
-2023/06/19 | 14091 | macros/latex/base/ltpage.dtx
-2023/06/19 | 2728 | macros/latex/base/ltpageno.dtx
-2023/06/19 | 672377 | macros/latex/base/ltpara-code.pdf
-2023/06/19 | 99 | macros/latex/base/ltpara-code.tex
-2023/06/19 | 560248 | macros/latex/base/ltpara-doc.pdf
-2023/06/19 | 234 | macros/latex/base/ltpara-doc.tex
-2023/06/19 | 54677 | macros/latex/base/ltpara.dtx
-2023/06/19 | 6155 | macros/latex/base/ltpar.dtx
-2023/06/19 | 69002 | macros/latex/base/ltpictur.dtx
-2023/06/19 | 60154 | macros/latex/base/ltplain.dtx
-2023/06/19 | 33946 | macros/latex/base/ltsect.dtx
-2023/06/19 | 821824 | macros/latex/base/ltshipout-code.pdf
-2023/06/19 | 104 | macros/latex/base/ltshipout-code.tex
-2023/06/19 | 566698 | macros/latex/base/ltshipout-doc.pdf
-2023/06/19 | 240 | macros/latex/base/ltshipout-doc.tex
-2023/06/19 | 81195 | macros/latex/base/ltshipout.dtx
-2023/06/19 | 45899 | macros/latex/base/ltspace.dtx
-2023/06/19 | 47896 | macros/latex/base/lttab.dtx
-2023/06/19 | 90660 | macros/latex/base/lttextcomp.dtx
-2023/06/19 | 8731 | macros/latex/base/ltthm.dtx
-2023/06/19 | 15346 | macros/latex/base/ltvers.dtx
-2023/06/19 | 219347 | macros/latex/base/ltx3info.pdf
-2023/06/19 | 18299 | macros/latex/base/ltx3info.tex
-2023/06/19 | 27122 | macros/latex/base/ltxcheck.tex
-2023/06/19 | 22814 | macros/latex/base/ltxdoc.dtx
-2023/06/19 | 244224 | macros/latex/base/ltxdoc.pdf
-2023/06/19 | 7528 | macros/latex/base/ltxguide.cls
-2023/06/19 | 21882 | macros/latex/base/ltxref.dtx
-2023/06/19 | 10601 | macros/latex/base/makeindx.dtx
-2023/06/19 | 3434 | macros/latex/base/makeindx.ins
-2023/06/19 | 165816 | macros/latex/base/makeindx.pdf
-2023/06/19 | 11412 | macros/latex/base/manifest.txt
-2023/06/19 | 1941 | macros/latex/base/minimal.cls
-2023/06/19 | 257823 | macros/latex/base/modguide.pdf
-2023/06/19 | 16500 | macros/latex/base/modguide.tex
-2023/06/19 | 4254 | macros/latex/base/newdc.ins
-2023/06/19 | 6357 | macros/latex/base/newlfont.dtx
-2023/06/19 | 18399 | macros/latex/base/nfssfont.dtx
-2023/06/19 | 2893 | macros/latex/base/nfssfont.ins
-2023/06/19 | 211175 | macros/latex/base/nfssfont.pdf
-2023/06/19 | 3960 | macros/latex/base/olddc.ins
-2023/06/19 | 8626 | macros/latex/base/oldlfont.dtx
-2023/06/19 | 9345 | macros/latex/base/preload.dtx
-2023/06/19 | 13589 | macros/latex/base/proc.dtx
-2023/06/19 | 3401 | macros/latex/base/proc.ins
-2023/06/19 | 227060 | macros/latex/base/proc.pdf
-2023/06/19 | 3100 | macros/latex/base/README.md
-2023/06/19 | 7200 | macros/latex/base/sample2e.tex
-2023/06/19 | 89727 | macros/latex/base/slides.dtx
-2023/06/19 | 6760 | macros/latex/base/slides.ins
-2023/06/19 | 375509 | macros/latex/base/slides.pdf
-2023/06/19 | 15703 | macros/latex/base/slifonts.fdd
-2023/06/19 | 234183 | macros/latex/base/slifonts.pdf
-2023/06/19 | 1694 | macros/latex/base/small2e.tex
-2023/06/19 | 9401 | macros/latex/base/source2edoc.cls
-2023/06/19 | 6007580 | macros/latex/base/source2e.pdf
-2023/06/19 | 15306 | macros/latex/base/source2e.tex
-2023/06/19 | 9395 | macros/latex/base/syntonly.dtx
-2023/06/19 | 2896 | macros/latex/base/syntonly.ins
-2023/06/19 | 189997 | macros/latex/base/syntonly.pdf
-2023/06/19 | 12520 | macros/latex/base/testpage.tex
-2023/06/19 | 173013 | macros/latex/base/tlc2.err
-2023/06/19 | 291233 | macros/latex/base/tlc2.pdf
-2023/06/19 | 24504 | macros/latex/base/tlc3.err
-2023/06/19 | 250362 | macros/latex/base/tlc3.pdf
-2023/06/19 | 12246 | macros/latex/base/tulm.fdd
-2023/06/19 | 3781 | macros/latex/base/tulm.ins
-2023/06/19 | 162770 | macros/latex/base/tulm.pdf
-2023/06/19 | 3181 | macros/latex/base/unpack.ins
-2023/06/19 | 438603 | macros/latex/base/usrguide-historic.pdf
-2023/06/19 | 68735 | macros/latex/base/usrguide-historic.tex
-2023/06/19 | 479599 | macros/latex/base/usrguide.pdf
-2023/06/19 | 53898 | macros/latex/base/usrguide.tex
-2023/06/19 | 92280 | macros/latex/base/utf8ienc.dtx
-2023/06/19 | 353579 | macros/latex/base/utf8ienc.pdf
-2023/06/19 | 10251 | macros/latex/base/webcomp.err
-2023/06/19 | 146199 | macros/latex/base/webcomp.pdf
-2023/06/19 | 40170256 | macros/latex/base.zip
+2023/11/01 | 7104 | macros/latex/base/alltt.dtx
+2023/11/01 | 2890 | macros/latex/base/alltt.ins
+2023/11/01 | 223831 | macros/latex/base/alltt.pdf
+2023/11/01 | 3282 | macros/latex/base/bugs.txt
+2023/11/01 | 264168 | macros/latex/base/cfgguide.pdf
+2023/11/01 | 22723 | macros/latex/base/cfgguide.tex
+2023/11/01 | 42708 | macros/latex/base/changes.old.txt
+2023/11/01 | 404085 | macros/latex/base/changes.txt
+2023/11/01 | 156238 | macros/latex/base/classes.dtx
+2023/11/01 | 4087 | macros/latex/base/classes.ins
+2023/11/01 | 560998 | macros/latex/base/classes.pdf
+2023/11/01 | 415615 | macros/latex/base/clsguide-historic.pdf
+2023/11/01 | 69439 | macros/latex/base/clsguide-historic.tex
+2023/11/01 | 489925 | macros/latex/base/clsguide.pdf
+2023/11/01 | 64604 | macros/latex/base/clsguide.tex
+2023/11/01 | 5273 | macros/latex/base/cmextra.ins
+2023/11/01 | 44531 | macros/latex/base/cmfonts.fdd
+2023/11/01 | 4324 | macros/latex/base/cmfonts.ins
+2023/11/01 | 292600 | macros/latex/base/cmfonts.pdf
+2023/11/01 | 257359 | macros/latex/base/cyrguide.pdf
+2023/11/01 | 17782 | macros/latex/base/cyrguide.tex
+2023/11/01 | 29965 | macros/latex/base/doc-2016-02-15.sty
+2023/11/01 | 30499 | macros/latex/base/doc-2021-06-01.sty
+2023/11/01 | 1075915 | macros/latex/base/doc-code.pdf
+2023/11/01 | 96 | macros/latex/base/doc-code.tex
+2023/11/01 | 242471 | macros/latex/base/doc.dtx
+2023/11/01 | 756298 | macros/latex/base/doc.pdf
+2023/11/01 | 171396 | macros/latex/base/docstrip.dtx
+2023/11/01 | 4273 | macros/latex/base/docstrip.ins
+2023/11/01 | 506630 | macros/latex/base/docstrip.pdf
+2023/11/01 | 4390 | macros/latex/base/ec.ins
+2023/11/01 | 1318576 | macros/latex/base/encguide.pdf
+2023/11/01 | 52813 | macros/latex/base/encguide.tex
+2023/11/01 | 7216 | macros/latex/base/exscale.dtx
+2023/11/01 | 3338 | macros/latex/base/exscale.ins
+2023/11/01 | 204708 | macros/latex/base/exscale.pdf
+2023/11/01 | 23516 | macros/latex/base/fix-cm.dtx
+2023/11/01 | 2892 | macros/latex/base/fix-cm.ins
+2023/11/01 | 287727 | macros/latex/base/fix-cm.pdf
+2023/11/01 | 517708 | macros/latex/base/fntguide.pdf
+2023/11/01 | 108248 | macros/latex/base/fntguide.tex
+2023/11/01 | 60321 | macros/latex/base/fontdef.dtx
+2023/11/01 | 9887 | macros/latex/base/format.ins
+2023/11/01 | 5509 | macros/latex/base/graphpap.dtx
+2023/11/01 | 2892 | macros/latex/base/graphpap.ins
+2023/11/01 | 161722 | macros/latex/base/graphpap.pdf
+2023/11/01 | 2705 | macros/latex/base/idx.tex
+2023/11/01 | 18753 | macros/latex/base/ifthen.dtx
+2023/11/01 | 2888 | macros/latex/base/ifthen.ins
+2023/11/01 | 221219 | macros/latex/base/ifthen.pdf
+2023/11/01 | 106904 | macros/latex/base/inputenc.dtx
+2023/11/01 | 5714 | macros/latex/base/inputenc.ins
+2023/11/01 | 318199 | macros/latex/base/inputenc.pdf
+2023/11/01 | 4079 | macros/latex/base/lablst.tex
+2023/11/01 | 13759 | macros/latex/base/lamport-manual.err
+2023/11/01 | 170876 | macros/latex/base/lamport-manual.pdf
+2023/11/01 | 38730 | macros/latex/base/latex209.dtx
+2023/11/01 | 4219 | macros/latex/base/latex209.ins
+2023/11/01 | 45347 | macros/latex/base/latexrelease.dtx
+2023/11/01 | 6145 | macros/latex/base/latexrelease.ins
+2023/11/01 | 282095 | macros/latex/base/latexrelease.pdf
+2023/11/01 | 6709 | macros/latex/base/latexsym.dtx
+2023/11/01 | 5041 | macros/latex/base/latexsym.ins
+2023/11/01 | 200759 | macros/latex/base/latexsym.pdf
+2023/11/01 | 52887 | macros/latex/base/lb2.err
+2023/11/01 | 252497 | macros/latex/base/lb2.pdf
+2023/11/01 | 1279 | macros/latex/base/legal.txt
+2023/11/01 | 63280 | macros/latex/base/letter.dtx
+2023/11/01 | 3372 | macros/latex/base/letter.ins
+2023/11/01 | 337852 | macros/latex/base/letter.pdf
+2023/11/01 | 21229 | macros/latex/base/lgc2.err
+2023/11/01 | 217659 | macros/latex/base/lgc2.pdf
+2023/11/01 | 9068 | macros/latex/base/lppl-1-0.txt
+2023/11/01 | 14341 | macros/latex/base/lppl-1-1.txt
+2023/11/01 | 14421 | macros/latex/base/lppl-1-2.txt
+2023/11/01 | 132370 | macros/latex/base/lppl.pdf
+2023/11/01 | 23386 | macros/latex/base/lppl.tex
+2023/11/01 | 19040 | macros/latex/base/lppl.txt
+2023/11/01 | 4298 | macros/latex/base/ltalloc.dtx
+2023/11/01 | 17389 | macros/latex/base/ltbibl.dtx
+2023/11/01 | 49020 | macros/latex/base/ltboxes.dtx
+2023/11/01 | 145334 | macros/latex/base/ltclass.dtx
+2023/11/01 | 183132 | macros/latex/base/ltcmd.dtx
+2023/11/01 | 755882 | macros/latex/base/ltcmdhooks-code.pdf
+2023/11/01 | 103 | macros/latex/base/ltcmdhooks-code.tex
+2023/11/01 | 499346 | macros/latex/base/ltcmdhooks-doc.pdf
+2023/11/01 | 238 | macros/latex/base/ltcmdhooks-doc.tex
+2023/11/01 | 67588 | macros/latex/base/ltcmdhooks.dtx
+2023/11/01 | 9557 | macros/latex/base/ltcntrl.dtx
+2023/11/01 | 24286 | macros/latex/base/ltcounts.dtx
+2023/11/01 | 92954 | macros/latex/base/ltdefns.dtx
+2023/11/01 | 35984 | macros/latex/base/ltdirchk.dtx
+2023/11/01 | 27069 | macros/latex/base/lterror.dtx
+2023/11/01 | 19533 | macros/latex/base/ltexpl.dtx
+2023/11/01 | 804030 | macros/latex/base/ltfilehook-code.pdf
+2023/11/01 | 105 | macros/latex/base/ltfilehook-code.tex
+2023/11/01 | 548695 | macros/latex/base/ltfilehook-doc.pdf
+2023/11/01 | 241 | macros/latex/base/ltfilehook-doc.tex
+2023/11/01 | 67442 | macros/latex/base/ltfilehook.dtx
+2023/11/01 | 61493 | macros/latex/base/ltfiles.dtx
+2023/11/01 | 51180 | macros/latex/base/ltfinal.dtx
+2023/11/01 | 55687 | macros/latex/base/ltfloat.dtx
+2023/11/01 | 29267 | macros/latex/base/ltfntcmd.dtx
+2023/11/01 | 58547 | macros/latex/base/ltfssaxes.dtx
+2023/11/01 | 82917 | macros/latex/base/ltfssbas.dtx
+2023/11/01 | 10370 | macros/latex/base/ltfsscmp.dtx
+2023/11/01 | 75111 | macros/latex/base/ltfssdcl.dtx
+2023/11/01 | 84215 | macros/latex/base/ltfssini.dtx
+2023/11/01 | 72475 | macros/latex/base/ltfsstrc.dtx
+2023/11/01 | 1258628 | macros/latex/base/lthooks-code.pdf
+2023/11/01 | 102 | macros/latex/base/lthooks-code.tex
+2023/11/01 | 755246 | macros/latex/base/lthooks-doc.pdf
+2023/11/01 | 238 | macros/latex/base/lthooks-doc.tex
+2023/11/01 | 301237 | macros/latex/base/lthooks.dtx
+2023/11/01 | 4945 | macros/latex/base/lthyphen.dtx
+2023/11/01 | 5859 | macros/latex/base/ltidxglo.dtx
+2023/11/01 | 19853 | macros/latex/base/ltkeys.dtx
+2023/11/01 | 4757 | macros/latex/base/ltlength.dtx
+2023/11/01 | 36154 | macros/latex/base/ltlists.dtx
+2023/11/01 | 3725 | macros/latex/base/ltlogos.dtx
+2023/11/01 | 75286 | macros/latex/base/ltluatex.dtx
+2023/11/01 | 325191 | macros/latex/base/ltluatex.pdf
+2023/11/01 | 716681 | macros/latex/base/ltmarks-code.pdf
+2023/11/01 | 102 | macros/latex/base/ltmarks-code.tex
+2023/11/01 | 586808 | macros/latex/base/ltmarks-doc.pdf
+2023/11/01 | 238 | macros/latex/base/ltmarks-doc.tex
+2023/11/01 | 63142 | macros/latex/base/ltmarks.dtx
+2023/11/01 | 42287 | macros/latex/base/ltmath.dtx
+2023/11/01 | 6217 | macros/latex/base/ltmeta.dtx
+2023/11/01 | 65684 | macros/latex/base/ltmiscen.dtx
+2023/11/01 | 169553 | macros/latex/base/ltnews01.pdf
+2023/11/01 | 5246 | macros/latex/base/ltnews01.tex
+2023/11/01 | 151773 | macros/latex/base/ltnews02.pdf
+2023/11/01 | 5462 | macros/latex/base/ltnews02.tex
+2023/11/01 | 151324 | macros/latex/base/ltnews03.pdf
+2023/11/01 | 5369 | macros/latex/base/ltnews03.tex
+2023/11/01 | 152551 | macros/latex/base/ltnews04.pdf
+2023/11/01 | 5678 | macros/latex/base/ltnews04.tex
+2023/11/01 | 175211 | macros/latex/base/ltnews05.pdf
+2023/11/01 | 5699 | macros/latex/base/ltnews05.tex
+2023/11/01 | 142867 | macros/latex/base/ltnews06.pdf
+2023/11/01 | 5544 | macros/latex/base/ltnews06.tex
+2023/11/01 | 138214 | macros/latex/base/ltnews07.pdf
+2023/11/01 | 5576 | macros/latex/base/ltnews07.tex
+2023/11/01 | 155442 | macros/latex/base/ltnews08.pdf
+2023/11/01 | 5732 | macros/latex/base/ltnews08.tex
+2023/11/01 | 130028 | macros/latex/base/ltnews09.pdf
+2023/11/01 | 5451 | macros/latex/base/ltnews09.tex
+2023/11/01 | 169433 | macros/latex/base/ltnews10.pdf
+2023/11/01 | 5825 | macros/latex/base/ltnews10.tex
+2023/11/01 | 112208 | macros/latex/base/ltnews11.pdf
+2023/11/01 | 5529 | macros/latex/base/ltnews11.tex
+2023/11/01 | 156764 | macros/latex/base/ltnews12.pdf
+2023/11/01 | 5574 | macros/latex/base/ltnews12.tex
+2023/11/01 | 182483 | macros/latex/base/ltnews13.pdf
+2023/11/01 | 7029 | macros/latex/base/ltnews13.tex
+2023/11/01 | 170722 | macros/latex/base/ltnews14.pdf
+2023/11/01 | 6424 | macros/latex/base/ltnews14.tex
+2023/11/01 | 130328 | macros/latex/base/ltnews15.pdf
+2023/11/01 | 5986 | macros/latex/base/ltnews15.tex
+2023/11/01 | 138107 | macros/latex/base/ltnews16.pdf
+2023/11/01 | 5775 | macros/latex/base/ltnews16.tex
+2023/11/01 | 166269 | macros/latex/base/ltnews17.pdf
+2023/11/01 | 8970 | macros/latex/base/ltnews17.tex
+2023/11/01 | 39839 | macros/latex/base/ltnews18.pdf
+2023/11/01 | 1341 | macros/latex/base/ltnews18.tex
+2023/11/01 | 225936 | macros/latex/base/ltnews19.pdf
+2023/11/01 | 4190 | macros/latex/base/ltnews19.tex
+2023/11/01 | 318193 | macros/latex/base/ltnews20.pdf
+2023/11/01 | 7244 | macros/latex/base/ltnews20.tex
+2023/11/01 | 245228 | macros/latex/base/ltnews21.pdf
+2023/11/01 | 9935 | macros/latex/base/ltnews21.tex
+2023/11/01 | 318026 | macros/latex/base/ltnews22.pdf
+2023/11/01 | 10792 | macros/latex/base/ltnews22.tex
+2023/11/01 | 286824 | macros/latex/base/ltnews23.pdf
+2023/11/01 | 10791 | macros/latex/base/ltnews23.tex
+2023/11/01 | 265497 | macros/latex/base/ltnews24.pdf
+2023/11/01 | 12334 | macros/latex/base/ltnews24.tex
+2023/11/01 | 205100 | macros/latex/base/ltnews25.pdf
+2023/11/01 | 5588 | macros/latex/base/ltnews25.tex
+2023/11/01 | 379733 | macros/latex/base/ltnews26.pdf
+2023/11/01 | 10798 | macros/latex/base/ltnews26.tex
+2023/11/01 | 251283 | macros/latex/base/ltnews27.pdf
+2023/11/01 | 5691 | macros/latex/base/ltnews27.tex
+2023/11/01 | 376933 | macros/latex/base/ltnews28.pdf
+2023/11/01 | 15047 | macros/latex/base/ltnews28.tex
+2023/11/01 | 455437 | macros/latex/base/ltnews29.pdf
+2023/11/01 | 18944 | macros/latex/base/ltnews29.tex
+2023/11/01 | 512240 | macros/latex/base/ltnews30.pdf
+2023/11/01 | 23646 | macros/latex/base/ltnews30.tex
+2023/11/01 | 526688 | macros/latex/base/ltnews31.pdf
+2023/11/01 | 30452 | macros/latex/base/ltnews31.tex
+2023/11/01 | 546540 | macros/latex/base/ltnews32.pdf
+2023/11/01 | 33243 | macros/latex/base/ltnews32.tex
+2023/11/01 | 522757 | macros/latex/base/ltnews33.pdf
+2023/11/01 | 33911 | macros/latex/base/ltnews33.tex
+2023/11/01 | 508345 | macros/latex/base/ltnews34.pdf
+2023/11/01 | 32331 | macros/latex/base/ltnews34.tex
+2023/11/01 | 563307 | macros/latex/base/ltnews35.pdf
+2023/11/01 | 38226 | macros/latex/base/ltnews35.tex
+2023/11/01 | 517934 | macros/latex/base/ltnews36.pdf
+2023/11/01 | 19333 | macros/latex/base/ltnews36.tex
+2023/11/01 | 456933 | macros/latex/base/ltnews37.pdf
+2023/11/01 | 33083 | macros/latex/base/ltnews37.tex
+2023/11/01 | 523672 | macros/latex/base/ltnews38.pdf
+2023/11/01 | 22948 | macros/latex/base/ltnews38.tex
+2023/11/01 | 21488 | macros/latex/base/ltnews.cls
+2023/11/01 | 1360066 | macros/latex/base/ltnews.pdf
+2023/11/01 | 8051 | macros/latex/base/ltnews.tex
+2023/11/01 | 148294 | macros/latex/base/ltoutenc.dtx
+2023/11/01 | 3367 | macros/latex/base/ltoutenc.ins
+2023/11/01 | 178567 | macros/latex/base/ltoutput.dtx
+2023/11/01 | 14091 | macros/latex/base/ltpage.dtx
+2023/11/01 | 2728 | macros/latex/base/ltpageno.dtx
+2023/11/01 | 672700 | macros/latex/base/ltpara-code.pdf
+2023/11/01 | 99 | macros/latex/base/ltpara-code.tex
+2023/11/01 | 560578 | macros/latex/base/ltpara-doc.pdf
+2023/11/01 | 234 | macros/latex/base/ltpara-doc.tex
+2023/11/01 | 54677 | macros/latex/base/ltpara.dtx
+2023/11/01 | 6155 | macros/latex/base/ltpar.dtx
+2023/11/01 | 69002 | macros/latex/base/ltpictur.dtx
+2023/11/01 | 60156 | macros/latex/base/ltplain.dtx
+2023/11/01 | 558646 | macros/latex/base/ltproperties-code.pdf
+2023/11/01 | 107 | macros/latex/base/ltproperties-code.tex
+2023/11/01 | 433141 | macros/latex/base/ltproperties-doc.pdf
+2023/11/01 | 243 | macros/latex/base/ltproperties-doc.tex
+2023/11/01 | 33306 | macros/latex/base/ltproperties.dtx
+2023/11/01 | 33946 | macros/latex/base/ltsect.dtx
+2023/11/01 | 821655 | macros/latex/base/ltshipout-code.pdf
+2023/11/01 | 104 | macros/latex/base/ltshipout-code.tex
+2023/11/01 | 566566 | macros/latex/base/ltshipout-doc.pdf
+2023/11/01 | 240 | macros/latex/base/ltshipout-doc.tex
+2023/11/01 | 81195 | macros/latex/base/ltshipout.dtx
+2023/11/01 | 606454 | macros/latex/base/ltsockets-code.pdf
+2023/11/01 | 104 | macros/latex/base/ltsockets-code.tex
+2023/11/01 | 489314 | macros/latex/base/ltsockets-doc.pdf
+2023/11/01 | 240 | macros/latex/base/ltsockets-doc.tex
+2023/11/01 | 37668 | macros/latex/base/ltsockets.dtx
+2023/11/01 | 47316 | macros/latex/base/ltspace.dtx
+2023/11/01 | 47896 | macros/latex/base/lttab.dtx
+2023/11/01 | 90660 | macros/latex/base/lttextcomp.dtx
+2023/11/01 | 8731 | macros/latex/base/ltthm.dtx
+2023/11/01 | 15346 | macros/latex/base/ltvers.dtx
+2023/11/01 | 219358 | macros/latex/base/ltx3info.pdf
+2023/11/01 | 18299 | macros/latex/base/ltx3info.tex
+2023/11/01 | 27122 | macros/latex/base/ltxcheck.tex
+2023/11/01 | 22814 | macros/latex/base/ltxdoc.dtx
+2023/11/01 | 244215 | macros/latex/base/ltxdoc.pdf
+2023/11/01 | 7528 | macros/latex/base/ltxguide.cls
+2023/11/01 | 21882 | macros/latex/base/ltxref.dtx
+2023/11/01 | 10601 | macros/latex/base/makeindx.dtx
+2023/11/01 | 3434 | macros/latex/base/makeindx.ins
+2023/11/01 | 165816 | macros/latex/base/makeindx.pdf
+2023/11/01 | 11463 | macros/latex/base/manifest.txt
+2023/11/01 | 1941 | macros/latex/base/minimal.cls
+2023/11/01 | 257825 | macros/latex/base/modguide.pdf
+2023/11/01 | 16500 | macros/latex/base/modguide.tex
+2023/11/01 | 4254 | macros/latex/base/newdc.ins
+2023/11/01 | 6357 | macros/latex/base/newlfont.dtx
+2023/11/01 | 18399 | macros/latex/base/nfssfont.dtx
+2023/11/01 | 2893 | macros/latex/base/nfssfont.ins
+2023/11/01 | 211171 | macros/latex/base/nfssfont.pdf
+2023/11/01 | 3960 | macros/latex/base/olddc.ins
+2023/11/01 | 8626 | macros/latex/base/oldlfont.dtx
+2023/11/01 | 9345 | macros/latex/base/preload.dtx
+2023/11/01 | 13589 | macros/latex/base/proc.dtx
+2023/11/01 | 3401 | macros/latex/base/proc.ins
+2023/11/01 | 227065 | macros/latex/base/proc.pdf
+2023/11/01 | 3086 | macros/latex/base/README.md
+2023/11/01 | 7200 | macros/latex/base/sample2e.tex
+2023/11/01 | 89727 | macros/latex/base/slides.dtx
+2023/11/01 | 6760 | macros/latex/base/slides.ins
+2023/11/01 | 375493 | macros/latex/base/slides.pdf
+2023/11/01 | 15703 | macros/latex/base/slifonts.fdd
+2023/11/01 | 234171 | macros/latex/base/slifonts.pdf
+2023/11/01 | 1694 | macros/latex/base/small2e.tex
+2023/11/01 | 9401 | macros/latex/base/source2edoc.cls
+2023/11/01 | 6150042 | macros/latex/base/source2e.pdf
+2023/11/01 | 15431 | macros/latex/base/source2e.tex
+2023/11/01 | 9395 | macros/latex/base/syntonly.dtx
+2023/11/01 | 2896 | macros/latex/base/syntonly.ins
+2023/11/01 | 190255 | macros/latex/base/syntonly.pdf
+2023/11/01 | 12520 | macros/latex/base/testpage.tex
+2023/11/01 | 173013 | macros/latex/base/tlc2.err
+2023/11/01 | 291143 | macros/latex/base/tlc2.pdf
+2023/11/01 | 43212 | macros/latex/base/tlc3.err
+2023/11/01 | 326462 | macros/latex/base/tlc3.pdf
+2023/11/01 | 12246 | macros/latex/base/tulm.fdd
+2023/11/01 | 3781 | macros/latex/base/tulm.ins
+2023/11/01 | 162773 | macros/latex/base/tulm.pdf
+2023/11/01 | 3181 | macros/latex/base/unpack.ins
+2023/11/01 | 438602 | macros/latex/base/usrguide-historic.pdf
+2023/11/01 | 68735 | macros/latex/base/usrguide-historic.tex
+2023/11/01 | 477695 | macros/latex/base/usrguide.pdf
+2023/11/01 | 52759 | macros/latex/base/usrguide.tex
+2023/11/01 | 92280 | macros/latex/base/utf8ienc.dtx
+2023/11/01 | 353655 | macros/latex/base/utf8ienc.pdf
+2023/11/01 | 10251 | macros/latex/base/webcomp.err
+2023/11/01 | 146199 | macros/latex/base/webcomp.pdf
+2023/11/01 | 43093435 | macros/latex/base.zip
2005/04/09 | 16501 | macros/latex/contrib/12many/12many.dtx
2005/04/09 | 1219 | macros/latex/contrib/12many/12many.ins
2005/04/09 | 393999 | macros/latex/contrib/12many/12many.pdf
@@ -228451,180 +228459,181 @@
2023/10/23 | 50952 | macros/latex/contrib/l3backend/l3backend-pdf.dtx
2023/10/23 | 549 | macros/latex/contrib/l3backend/README.md
2023/10/23 | 934765 | macros/latex/contrib/l3backend.zip
-2023/09/13 | 21587 | macros/latex/contrib/l3build/CHANGELOG.md
-2023/09/13 | 1816 | macros/latex/contrib/l3build/l3build.1
-2023/09/13 | 7805 | macros/latex/contrib/l3build/l3build-arguments.lua
-2023/09/13 | 6313 | macros/latex/contrib/l3build/l3build-aux.lua
-2023/09/13 | 37436 | macros/latex/contrib/l3build/l3build-check.lua
-2023/09/13 | 2149 | macros/latex/contrib/l3build/l3build-clean.lua
-2023/09/13 | 4972 | macros/latex/contrib/l3build/l3build-ctan.lua
-2023/09/13 | 113021 | macros/latex/contrib/l3build/l3build.dtx
-2023/09/13 | 12469 | macros/latex/contrib/l3build/l3build-file-functions.lua
-2023/09/13 | 2473 | macros/latex/contrib/l3build/l3build-help.lua
-2023/09/13 | 1540 | macros/latex/contrib/l3build/l3build.ins
-2023/09/13 | 11105 | macros/latex/contrib/l3build/l3build-install.lua
-2023/09/13 | 7505 | macros/latex/contrib/l3build/l3build.lua
-2023/09/13 | 7206 | macros/latex/contrib/l3build/l3build-manifest.lua
-2023/09/13 | 10786 | macros/latex/contrib/l3build/l3build-manifest-setup.lua
-2023/09/13 | 744760 | macros/latex/contrib/l3build/l3build.pdf
-2023/09/13 | 4338 | macros/latex/contrib/l3build/l3build-stdmain.lua
-2023/09/13 | 2285 | macros/latex/contrib/l3build/l3build-tagging.lua
-2023/09/13 | 6151 | macros/latex/contrib/l3build/l3build-typesetting.lua
-2023/09/13 | 2745 | macros/latex/contrib/l3build/l3build-unpack.lua
-2023/09/13 | 13211 | macros/latex/contrib/l3build/l3build-upload.lua
-2023/09/13 | 8092 | macros/latex/contrib/l3build/l3build-variables.lua
-2023/09/13 | 4150 | macros/latex/contrib/l3build/l3build-zip.lua
-2023/09/13 | 1019 | macros/latex/contrib/l3build/README.md
-2023/09/13 | 818015 | macros/latex/contrib/l3build.zip
-2023/10/10 | 8490 | macros/latex/contrib/l3experimental/CHANGELOG.md
-2023/10/10 | 16508 | macros/latex/contrib/l3experimental/l3benchmark.dtx
-2023/10/10 | 1558 | macros/latex/contrib/l3experimental/l3benchmark.ins
-2023/10/10 | 308535 | macros/latex/contrib/l3experimental/l3benchmark.pdf
-2023/10/10 | 18694 | macros/latex/contrib/l3experimental/l3bitset.dtx
-2023/10/10 | 1565 | macros/latex/contrib/l3experimental/l3bitset.ins
-2023/10/10 | 404408 | macros/latex/contrib/l3experimental/l3bitset.pdf
-2023/10/10 | 4323 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
-2023/10/10 | 679935 | macros/latex/contrib/l3experimental/l3draw-code.pdf
-2023/10/10 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
-2023/10/10 | 42560 | macros/latex/contrib/l3experimental/l3draw.dtx
-2023/10/10 | 1906 | macros/latex/contrib/l3experimental/l3draw.ins
-2023/10/10 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
-2023/10/10 | 32546 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
-2023/10/10 | 517831 | macros/latex/contrib/l3experimental/l3draw.pdf
-2023/10/10 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
-2023/10/10 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
-2023/10/10 | 20451 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
-2023/10/10 | 4448 | macros/latex/contrib/l3experimental/l3draw-state.dtx
-2023/10/10 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
-2023/10/10 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
-2023/10/10 | 408917 | macros/latex/contrib/l3experimental/l3galley.pdf
-2023/10/10 | 25919 | macros/latex/contrib/l3experimental/l3graphics.dtx
-2023/10/10 | 1553 | macros/latex/contrib/l3experimental/l3graphics.ins
-2023/10/10 | 383648 | macros/latex/contrib/l3experimental/l3graphics.pdf
-2023/10/10 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
-2023/10/10 | 1547 | macros/latex/contrib/l3experimental/l3opacity.ins
-2023/10/10 | 313597 | macros/latex/contrib/l3experimental/l3opacity.pdf
-2023/10/10 | 31827 | macros/latex/contrib/l3experimental/l3str-format.dtx
-2023/10/10 | 368030 | macros/latex/contrib/l3experimental/l3str-format.pdf
-2023/10/10 | 1564 | macros/latex/contrib/l3experimental/l3str.ins
-2023/10/10 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
-2023/10/10 | 1565 | macros/latex/contrib/l3experimental/l3sys-shell.ins
-2023/10/10 | 348054 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
-2023/10/10 | 4284 | macros/latex/contrib/l3experimental/README.md
-2023/10/10 | 35092 | macros/latex/contrib/l3experimental/xcoffins.dtx
-2023/10/10 | 1569 | macros/latex/contrib/l3experimental/xcoffins.ins
-2023/10/10 | 394481 | macros/latex/contrib/l3experimental/xcoffins.pdf
-2023/10/10 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
-2023/10/10 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
-2023/10/10 | 299638 | macros/latex/contrib/l3experimental/xgalley.pdf
-2023/10/10 | 4419131 | macros/latex/contrib/l3experimental.zip
-2023/10/23 | 53634 | macros/latex/contrib/l3kernel/CHANGELOG.md
-2023/10/23 | 70468 | macros/latex/contrib/l3kernel/expl3.dtx
-2023/10/23 | 622183 | macros/latex/contrib/l3kernel/expl3.pdf
-2023/10/23 | 1732906 | macros/latex/contrib/l3kernel/interface3.pdf
-2023/10/23 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
-2023/10/23 | 135561 | macros/latex/contrib/l3kernel/l3basics.dtx
-2023/10/23 | 12806 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
-2023/10/23 | 87744 | macros/latex/contrib/l3kernel/l3box.dtx
-2023/10/23 | 16639 | macros/latex/contrib/l3kernel/l3candidates.dtx
-2023/10/23 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
-2023/10/23 | 83184 | macros/latex/contrib/l3kernel/l3clist.dtx
-2023/10/23 | 88106 | macros/latex/contrib/l3kernel/l3coffins.dtx
-2023/10/23 | 112275 | macros/latex/contrib/l3kernel/l3color.dtx
-2023/10/23 | 43223 | macros/latex/contrib/l3kernel/l3debug.dtx
-2023/10/23 | 25810 | macros/latex/contrib/l3kernel/l3deprecation.dtx
-2023/10/23 | 157292 | macros/latex/contrib/l3kernel/l3doc.dtx
-2023/10/23 | 557935 | macros/latex/contrib/l3kernel/l3doc.pdf
-2023/10/23 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
-2023/10/23 | 151749 | macros/latex/contrib/l3kernel/l3docstrip.pdf
-2023/10/23 | 89007 | macros/latex/contrib/l3kernel/l3expan.dtx
-2023/10/23 | 144087 | macros/latex/contrib/l3kernel/l3file.dtx
-2023/10/23 | 10328 | macros/latex/contrib/l3kernel/l3flag.dtx
-2023/10/23 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
-2023/10/23 | 7472 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
-2023/10/23 | 47216 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
-2023/10/23 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
-2023/10/23 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
-2023/10/23 | 76329 | macros/latex/contrib/l3kernel/l3fp.dtx
-2023/10/23 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
-2023/10/23 | 51081 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
-2023/10/23 | 7662 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
-2023/10/23 | 23196 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
-2023/10/23 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
-2023/10/23 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
-2023/10/23 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
-2023/10/23 | 19821 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
-2023/10/23 | 12767 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
-2023/10/23 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
-2023/10/23 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
-2023/10/23 | 6351 | macros/latex/contrib/l3kernel/l3.ins
-2023/10/23 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
-2023/10/23 | 92999 | macros/latex/contrib/l3kernel/l3int.dtx
-2023/10/23 | 27270 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
-2023/10/23 | 129900 | macros/latex/contrib/l3kernel/l3keys.dtx
-2023/10/23 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
-2023/10/23 | 23866 | macros/latex/contrib/l3kernel/l3luatex.dtx
-2023/10/23 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
-2023/10/23 | 80195 | macros/latex/contrib/l3kernel/l3names.dtx
-2023/10/23 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
-2023/10/23 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
-2023/10/23 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
-2023/10/23 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
-2023/10/23 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
-2023/10/23 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
-2023/10/23 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
-2023/10/23 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
-2023/10/23 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
-2023/10/23 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
-2023/10/23 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
-2023/10/23 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
-2023/10/23 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
-2023/10/23 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
-2023/10/23 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
-2023/10/23 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
-2023/10/23 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
-2023/10/23 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
-2023/10/23 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
-2023/10/23 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
-2023/10/23 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
-2023/10/23 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
-2023/10/23 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
-2023/10/23 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
-2023/10/23 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
-2023/10/23 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
-2023/10/23 | 17901 | macros/latex/contrib/l3kernel/l3pdf.dtx
-2023/10/23 | 47968 | macros/latex/contrib/l3kernel/l3prefixes.csv
-2023/10/23 | 82661 | macros/latex/contrib/l3kernel/l3prefixes.pdf
-2023/10/23 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
-2023/10/23 | 70511 | macros/latex/contrib/l3kernel/l3prg.dtx
-2023/10/23 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
-2023/10/23 | 35441 | macros/latex/contrib/l3kernel/l3quark.dtx
-2023/10/23 | 305596 | macros/latex/contrib/l3kernel/l3regex.dtx
-2023/10/23 | 98903 | macros/latex/contrib/l3kernel/l3seq.dtx
-2023/10/23 | 91738 | macros/latex/contrib/l3kernel/l3skip.dtx
-2023/10/23 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
-2023/10/23 | 113435 | macros/latex/contrib/l3kernel/l3str-convert.dtx
-2023/10/23 | 79602 | macros/latex/contrib/l3kernel/l3str.dtx
-2023/10/23 | 296258 | macros/latex/contrib/l3kernel/l3styleguide.pdf
-2023/10/23 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
-2023/10/23 | 242903 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
-2023/10/23 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
-2023/10/23 | 36266 | macros/latex/contrib/l3kernel/l3sys.dtx
-2023/10/23 | 218059 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
-2023/10/23 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
-2023/10/23 | 76364 | macros/latex/contrib/l3kernel/l3text-case.dtx
-2023/10/23 | 49038 | macros/latex/contrib/l3kernel/l3text.dtx
-2023/10/23 | 16631 | macros/latex/contrib/l3kernel/l3text-map.dtx
-2023/10/23 | 20464 | macros/latex/contrib/l3kernel/l3text-purify.dtx
-2023/10/23 | 63960 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
-2023/10/23 | 148167 | macros/latex/contrib/l3kernel/l3tl.dtx
-2023/10/23 | 121564 | macros/latex/contrib/l3kernel/l3token.dtx
-2023/10/23 | 35675 | macros/latex/contrib/l3kernel/l3unicode.dtx
-2023/10/23 | 3062 | macros/latex/contrib/l3kernel/README.md
-2023/10/23 | 25069 | macros/latex/contrib/l3kernel/source3body.tex
-2023/10/23 | 7475976 | macros/latex/contrib/l3kernel/source3.pdf
-2023/10/23 | 2266 | macros/latex/contrib/l3kernel/source3.tex
-2023/10/23 | 13872012 | macros/latex/contrib/l3kernel.zip
+2023/11/01 | 21836 | macros/latex/contrib/l3build/CHANGELOG.md
+2023/11/01 | 1816 | macros/latex/contrib/l3build/l3build.1
+2023/11/01 | 7805 | macros/latex/contrib/l3build/l3build-arguments.lua
+2023/11/01 | 6313 | macros/latex/contrib/l3build/l3build-aux.lua
+2023/11/01 | 37436 | macros/latex/contrib/l3build/l3build-check.lua
+2023/11/01 | 2149 | macros/latex/contrib/l3build/l3build-clean.lua
+2023/11/01 | 4972 | macros/latex/contrib/l3build/l3build-ctan.lua
+2023/11/01 | 113393 | macros/latex/contrib/l3build/l3build.dtx
+2023/11/01 | 12611 | macros/latex/contrib/l3build/l3build-file-functions.lua
+2023/11/01 | 2473 | macros/latex/contrib/l3build/l3build-help.lua
+2023/11/01 | 1540 | macros/latex/contrib/l3build/l3build.ins
+2023/11/01 | 11105 | macros/latex/contrib/l3build/l3build-install.lua
+2023/11/01 | 7505 | macros/latex/contrib/l3build/l3build.lua
+2023/11/01 | 7206 | macros/latex/contrib/l3build/l3build-manifest.lua
+2023/11/01 | 10786 | macros/latex/contrib/l3build/l3build-manifest-setup.lua
+2023/11/01 | 746427 | macros/latex/contrib/l3build/l3build.pdf
+2023/11/01 | 4338 | macros/latex/contrib/l3build/l3build-stdmain.lua
+2023/11/01 | 2285 | macros/latex/contrib/l3build/l3build-tagging.lua
+2023/11/01 | 6151 | macros/latex/contrib/l3build/l3build-typesetting.lua
+2023/11/01 | 2745 | macros/latex/contrib/l3build/l3build-unpack.lua
+2023/11/01 | 13211 | macros/latex/contrib/l3build/l3build-upload.lua
+2023/11/01 | 8092 | macros/latex/contrib/l3build/l3build-variables.lua
+2023/11/01 | 4150 | macros/latex/contrib/l3build/l3build-zip.lua
+2023/11/01 | 1019 | macros/latex/contrib/l3build/README.md
+2023/11/01 | 819989 | macros/latex/contrib/l3build.zip
+2023/11/01 | 8628 | macros/latex/contrib/l3experimental/CHANGELOG.md
+2023/11/01 | 16498 | macros/latex/contrib/l3experimental/l3benchmark.dtx
+2023/11/01 | 1558 | macros/latex/contrib/l3experimental/l3benchmark.ins
+2023/11/01 | 308534 | macros/latex/contrib/l3experimental/l3benchmark.pdf
+2023/11/01 | 18694 | macros/latex/contrib/l3experimental/l3bitset.dtx
+2023/11/01 | 1565 | macros/latex/contrib/l3experimental/l3bitset.ins
+2023/11/01 | 404410 | macros/latex/contrib/l3experimental/l3bitset.pdf
+2023/11/01 | 4323 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+2023/11/01 | 681452 | macros/latex/contrib/l3experimental/l3draw-code.pdf
+2023/11/01 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
+2023/11/01 | 42560 | macros/latex/contrib/l3experimental/l3draw.dtx
+2023/11/01 | 1906 | macros/latex/contrib/l3experimental/l3draw.ins
+2023/11/01 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
+2023/11/01 | 32241 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
+2023/11/01 | 517829 | macros/latex/contrib/l3experimental/l3draw.pdf
+2023/11/01 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
+2023/11/01 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+2023/11/01 | 21241 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+2023/11/01 | 4448 | macros/latex/contrib/l3experimental/l3draw-state.dtx
+2023/11/01 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+2023/11/01 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
+2023/11/01 | 408914 | macros/latex/contrib/l3experimental/l3galley.pdf
+2023/11/01 | 25919 | macros/latex/contrib/l3experimental/l3graphics.dtx
+2023/11/01 | 1553 | macros/latex/contrib/l3experimental/l3graphics.ins
+2023/11/01 | 383641 | macros/latex/contrib/l3experimental/l3graphics.pdf
+2023/11/01 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
+2023/11/01 | 1547 | macros/latex/contrib/l3experimental/l3opacity.ins
+2023/11/01 | 313597 | macros/latex/contrib/l3experimental/l3opacity.pdf
+2023/11/01 | 31828 | macros/latex/contrib/l3experimental/l3str-format.dtx
+2023/11/01 | 368029 | macros/latex/contrib/l3experimental/l3str-format.pdf
+2023/11/01 | 1564 | macros/latex/contrib/l3experimental/l3str.ins
+2023/11/01 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
+2023/11/01 | 1565 | macros/latex/contrib/l3experimental/l3sys-shell.ins
+2023/11/01 | 348053 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
+2023/11/01 | 4284 | macros/latex/contrib/l3experimental/README.md
+2023/11/01 | 35077 | macros/latex/contrib/l3experimental/xcoffins.dtx
+2023/11/01 | 1569 | macros/latex/contrib/l3experimental/xcoffins.ins
+2023/11/01 | 394481 | macros/latex/contrib/l3experimental/xcoffins.pdf
+2023/11/01 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
+2023/11/01 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
+2023/11/01 | 299636 | macros/latex/contrib/l3experimental/xgalley.pdf
+2023/11/01 | 4420389 | macros/latex/contrib/l3experimental.zip
+2023/11/01 | 54576 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/11/01 | 70833 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/11/01 | 623137 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/11/01 | 1766132 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/11/01 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
+2023/11/01 | 136080 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/11/01 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/11/01 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/11/01 | 5772 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/11/01 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/11/01 | 83184 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/11/01 | 88106 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/11/01 | 112275 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/11/01 | 43223 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/11/01 | 26592 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/11/01 | 157376 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/11/01 | 557934 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/11/01 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/11/01 | 151750 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/11/01 | 88942 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/11/01 | 144121 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/11/01 | 10328 | macros/latex/contrib/l3kernel/l3flag.dtx
+2023/11/01 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/11/01 | 9435 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/11/01 | 47242 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/11/01 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/11/01 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/11/01 | 76359 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/11/01 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/11/01 | 51081 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/11/01 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
+2023/11/01 | 23196 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/11/01 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/11/01 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/11/01 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/11/01 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+2023/11/01 | 12767 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/11/01 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/11/01 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
+2023/11/01 | 6393 | macros/latex/contrib/l3kernel/l3.ins
+2023/11/01 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/11/01 | 92982 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/11/01 | 27270 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/11/01 | 129900 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/11/01 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/11/01 | 23813 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/11/01 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/11/01 | 80195 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/11/01 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/11/01 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/11/01 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/11/01 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/11/01 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/11/01 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/11/01 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/11/01 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/11/01 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/11/01 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/11/01 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/11/01 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/11/01 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/11/01 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/11/01 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/11/01 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/11/01 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/11/01 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/11/01 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/11/01 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/11/01 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/11/01 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/11/01 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/11/01 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/11/01 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/11/01 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/11/01 | 17901 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/11/01 | 48142 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/11/01 | 82683 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/11/01 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/11/01 | 70511 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/11/01 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/11/01 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/11/01 | 305449 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/11/01 | 98910 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/11/01 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/11/01 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/11/01 | 113435 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/11/01 | 79606 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/11/01 | 296258 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/11/01 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/11/01 | 242903 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/11/01 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/11/01 | 36313 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/11/01 | 218059 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/11/01 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/11/01 | 76368 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/11/01 | 48942 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/11/01 | 16631 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/11/01 | 20464 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/11/01 | 64037 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/11/01 | 12136 | macros/latex/contrib/l3kernel/l3tl-build.dtx
+2023/11/01 | 148194 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/11/01 | 121564 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/11/01 | 35675 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/11/01 | 3062 | macros/latex/contrib/l3kernel/README.md
+2023/11/01 | 25095 | macros/latex/contrib/l3kernel/source3body.tex
+2023/11/01 | 7490669 | macros/latex/contrib/l3kernel/source3.pdf
+2023/11/01 | 2266 | macros/latex/contrib/l3kernel/source3.tex
+2023/11/01 | 13919369 | macros/latex/contrib/l3kernel.zip
2023/10/10 | 7555 | macros/latex/contrib/l3packages/CHANGELOG.md
2023/10/10 | 1444 | macros/latex/contrib/l3packages/l3keys2e-demo.tex
2023/10/10 | 12312 | macros/latex/contrib/l3packages/l3keys2e.dtx
@@ -235020,13 +235029,17 @@
2023/04/13 | 6608 | macros/latex/contrib/proflycee/tex/proflycee-tools-suites.tex
2023/05/03 | 42723 | macros/latex/contrib/proflycee/tex/proflycee-tools-trigo.tex
2023/10/31 | 1726073 | macros/latex/contrib/proflycee.zip
-2023/10/25 | 203416 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
-2023/10/25 | 46854 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+2023/11/01 | 241332 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
+2023/11/01 | 48990 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+2023/11/01 | 21506 | macros/latex/contrib/profmaquette/doc/TestCANComplement.pdf
+2023/11/01 | 794 | macros/latex/contrib/profmaquette/doc/TestCANComplement.tex
+2023/11/01 | 20353 | macros/latex/contrib/profmaquette/doc/TestCAN.pdf
+2023/11/01 | 629 | macros/latex/contrib/profmaquette/doc/TestCAN.tex
2023/10/25 | 17412 | macros/latex/contrib/profmaquette/doc/TestParcoursPerso.pdf
2023/10/25 | 756 | macros/latex/contrib/profmaquette/doc/TestParcoursPerso.tex
-2023/10/25 | 97636 | macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+2023/11/01 | 105991 | macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
2023/06/23 | 355 | macros/latex/contrib/profmaquette/README
-2023/10/25 | 234237 | macros/latex/contrib/profmaquette.zip
+2023/11/01 | 311361 | macros/latex/contrib/profmaquette.zip
1996/02/05 | 1760 | macros/latex/contrib/progkeys/demo/demo.tex
1996/02/05 | 459 | macros/latex/contrib/progkeys/demo/prog1.tex
1996/02/05 | 347 | macros/latex/contrib/progkeys/demo/prog2.tex
@@ -245162,44 +245175,44 @@
2020/06/01 | 5281 | macros/latex/required/amscls/upref.dtx
2020/06/01 | 1999 | macros/latex/required/amscls/upref.ins
2020/06/01 | 1208335 | macros/latex/required/amscls.zip
-2023/06/08 | 8663 | macros/latex/required/amsmath/amsbsy.dtx
-2023/06/08 | 1505 | macros/latex/required/amsmath/amsbsy.ins
-2023/06/08 | 174944 | macros/latex/required/amsmath/amsbsy.pdf
-2023/06/08 | 11284 | macros/latex/required/amsmath/amscd.dtx
-2023/06/08 | 1487 | macros/latex/required/amsmath/amscd.ins
-2023/06/08 | 179953 | macros/latex/required/amsmath/amscd.pdf
-2023/06/08 | 5323 | macros/latex/required/amsmath/ams-external.txt
-2023/06/08 | 13442 | macros/latex/required/amsmath/amsgen.dtx
-2023/06/08 | 1484 | macros/latex/required/amsmath/amsgen.ins
-2023/06/08 | 178181 | macros/latex/required/amsmath/amsgen.pdf
-2023/06/08 | 5860 | macros/latex/required/amsmath/ams-internal.txt
-2023/06/08 | 508198 | macros/latex/required/amsmath/amsldoc.pdf
-2023/06/08 | 104792 | macros/latex/required/amsmath/amsldoc.tex
-2023/06/08 | 85099 | macros/latex/required/amsmath/amsmath-2018-12-01.sty
-2023/06/08 | 230377 | macros/latex/required/amsmath/amsmath.dtx
-2023/06/08 | 1504 | macros/latex/required/amsmath/amsmath.ins
-2023/06/08 | 419900 | macros/latex/required/amsmath/amsmath.pdf
-2023/06/08 | 10199 | macros/latex/required/amsmath/amsopn.dtx
-2023/06/08 | 1490 | macros/latex/required/amsmath/amsopn.ins
-2023/06/08 | 140096 | macros/latex/required/amsmath/amsopn.pdf
-2023/06/08 | 69732 | macros/latex/required/amsmath/amstex.sty
-2023/06/08 | 11398 | macros/latex/required/amsmath/amstext.dtx
-2023/06/08 | 1492 | macros/latex/required/amsmath/amstext.ins
-2023/06/08 | 217502 | macros/latex/required/amsmath/amstext.pdf
-2023/06/08 | 4336 | macros/latex/required/amsmath/amsxtra.dtx
-2023/06/08 | 1492 | macros/latex/required/amsmath/amsxtra.ins
-2023/06/08 | 113554 | macros/latex/required/amsmath/amsxtra.pdf
-2023/06/08 | 8245 | macros/latex/required/amsmath/changes.txt
-2023/06/08 | 22605 | macros/latex/required/amsmath/diffs-m.txt
-2023/06/08 | 369 | macros/latex/required/amsmath/manifest.txt
-2023/06/08 | 2709 | macros/latex/required/amsmath/README.md
-2023/06/08 | 109734 | macros/latex/required/amsmath/subeqn.pdf
-2023/06/08 | 6440 | macros/latex/required/amsmath/subeqn.tex
-2023/06/08 | 147464 | macros/latex/required/amsmath/technote.pdf
-2023/06/08 | 12005 | macros/latex/required/amsmath/technote.tex
-2023/06/08 | 454559 | macros/latex/required/amsmath/testmath.pdf
-2023/06/08 | 82371 | macros/latex/required/amsmath/testmath.tex
-2023/06/09 | 2762754 | macros/latex/required/amsmath.zip
+2023/11/01 | 8663 | macros/latex/required/amsmath/amsbsy.dtx
+2023/11/01 | 1505 | macros/latex/required/amsmath/amsbsy.ins
+2023/11/01 | 174946 | macros/latex/required/amsmath/amsbsy.pdf
+2023/11/01 | 11284 | macros/latex/required/amsmath/amscd.dtx
+2023/11/01 | 1487 | macros/latex/required/amsmath/amscd.ins
+2023/11/01 | 179951 | macros/latex/required/amsmath/amscd.pdf
+2023/11/01 | 5323 | macros/latex/required/amsmath/ams-external.txt
+2023/11/01 | 13442 | macros/latex/required/amsmath/amsgen.dtx
+2023/11/01 | 1484 | macros/latex/required/amsmath/amsgen.ins
+2023/11/01 | 178193 | macros/latex/required/amsmath/amsgen.pdf
+2023/11/01 | 5860 | macros/latex/required/amsmath/ams-internal.txt
+2023/11/01 | 508230 | macros/latex/required/amsmath/amsldoc.pdf
+2023/11/01 | 104792 | macros/latex/required/amsmath/amsldoc.tex
+2023/11/01 | 85099 | macros/latex/required/amsmath/amsmath-2018-12-01.sty
+2023/11/01 | 230377 | macros/latex/required/amsmath/amsmath.dtx
+2023/11/01 | 1504 | macros/latex/required/amsmath/amsmath.ins
+2023/11/01 | 419922 | macros/latex/required/amsmath/amsmath.pdf
+2023/11/01 | 10199 | macros/latex/required/amsmath/amsopn.dtx
+2023/11/01 | 1490 | macros/latex/required/amsmath/amsopn.ins
+2023/11/01 | 140093 | macros/latex/required/amsmath/amsopn.pdf
+2023/11/01 | 69732 | macros/latex/required/amsmath/amstex.sty
+2023/11/01 | 11398 | macros/latex/required/amsmath/amstext.dtx
+2023/11/01 | 1492 | macros/latex/required/amsmath/amstext.ins
+2023/11/01 | 217504 | macros/latex/required/amsmath/amstext.pdf
+2023/11/01 | 4336 | macros/latex/required/amsmath/amsxtra.dtx
+2023/11/01 | 1492 | macros/latex/required/amsmath/amsxtra.ins
+2023/11/01 | 113560 | macros/latex/required/amsmath/amsxtra.pdf
+2023/11/01 | 8425 | macros/latex/required/amsmath/changes.txt
+2023/11/01 | 22605 | macros/latex/required/amsmath/diffs-m.txt
+2023/11/01 | 369 | macros/latex/required/amsmath/manifest.txt
+2023/11/01 | 2709 | macros/latex/required/amsmath/README.md
+2023/11/01 | 109733 | macros/latex/required/amsmath/subeqn.pdf
+2023/11/01 | 6440 | macros/latex/required/amsmath/subeqn.tex
+2023/11/01 | 147459 | macros/latex/required/amsmath/technote.pdf
+2023/11/01 | 12005 | macros/latex/required/amsmath/technote.tex
+2023/11/01 | 454658 | macros/latex/required/amsmath/testmath.pdf
+2023/11/01 | 81184 | macros/latex/required/amsmath/testmath.tex
+2023/11/01 | 2762551 | macros/latex/required/amsmath.zip
2023/10/25 | 635805 | macros/latex/required/babel/base/babel-code.pdf
2023/10/25 | 782577 | macros/latex/required/babel/base/babel.dtx
2023/10/25 | 8905 | macros/latex/required/babel/base/babel.ins
@@ -245230,12 +245243,12 @@
2022/06/16 | 27558 | macros/latex/required/cyrillic/t2lhfnt.fdd
2022/06/16 | 144082 | macros/latex/required/cyrillic/t2lhfnt.pdf
2022/06/16 | 1207156 | macros/latex/required/cyrillic.zip
-2023/06/08 | 5081 | macros/latex/required/firstaid/changes.txt
-2023/06/08 | 2740 | macros/latex/required/firstaid/firstaid.ins
-2023/06/08 | 22575 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
-2023/06/08 | 269075 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
-2023/06/08 | 474 | macros/latex/required/firstaid/README.md
-2023/06/09 | 270601 | macros/latex/required/firstaid.zip
+2023/11/01 | 5645 | macros/latex/required/firstaid/changes.txt
+2023/11/01 | 2744 | macros/latex/required/firstaid/firstaid.ins
+2023/11/01 | 20140 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
+2023/11/01 | 263670 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
+2023/11/01 | 474 | macros/latex/required/firstaid/README.md
+2023/11/01 | 264140 | macros/latex/required/firstaid.zip
2022/10/31 | 15737 | macros/latex/required/graphics/cat.eps
2022/10/31 | 35660 | macros/latex/required/graphics/changes.txt
2022/10/31 | 32194 | macros/latex/required/graphics/color.dtx
@@ -245273,63 +245286,62 @@
2022/06/14 | 224606 | macros/latex/required/latexbug/latexbug.pdf
2022/06/14 | 248 | macros/latex/required/latexbug/README.md
2022/06/14 | 233263 | macros/latex/required/latexbug.zip
-2023/06/08 | 878830 | macros/latex/required/latex-lab/blocks-code.pdf
-2023/06/08 | 116 | macros/latex/required/latex-lab/blocks-code.tex
-2023/06/08 | 439729 | macros/latex/required/latex-lab/blocks-doc.pdf
-2023/06/08 | 113 | macros/latex/required/latex-lab/blocks-doc.tex
-2023/06/08 | 4222 | macros/latex/required/latex-lab/changes.txt
-2023/06/08 | 519493 | macros/latex/required/latex-lab/documentmetadata-support-code.pdf
-2023/06/08 | 117 | macros/latex/required/latex-lab/documentmetadata-support-code.tex
-2023/06/08 | 385582 | macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
-2023/06/08 | 191 | macros/latex/required/latex-lab/documentmetadata-support-doc.tex
-2023/06/08 | 16946 | macros/latex/required/latex-lab/documentmetadata-support.dtx
-2023/06/08 | 6221 | macros/latex/required/latex-lab/glyphtounicode-cmex.tex
-2023/06/08 | 3179 | macros/latex/required/latex-lab/latex-lab-amsmath.dtx
-2023/06/08 | 357363 | macros/latex/required/latex-lab/latex-lab-amsmath.pdf
-2023/06/08 | 13941 | macros/latex/required/latex-lab/latex-lab-bib.dtx
-2023/06/08 | 412227 | macros/latex/required/latex-lab/latex-lab-bib.pdf
-2023/06/08 | 132264 | macros/latex/required/latex-lab/latex-lab-block-tagging.dtx
-2023/06/08 | 878830 | macros/latex/required/latex-lab/latex-lab-block-tagging.pdf
-2023/06/08 | 4619 | macros/latex/required/latex-lab/latex-lab-firstaid.dtx
-2023/06/08 | 271638 | macros/latex/required/latex-lab/latex-lab-firstaid.pdf
-2023/06/08 | 15749 | macros/latex/required/latex-lab/latex-lab-float.dtx
-2023/06/08 | 442979 | macros/latex/required/latex-lab/latex-lab-float.pdf
-2023/06/08 | 82448 | macros/latex/required/latex-lab/latex-lab-footnotes.dtx
-2023/06/08 | 800668 | macros/latex/required/latex-lab/latex-lab-footnotes.pdf
-2023/06/08 | 34485 | macros/latex/required/latex-lab/latex-lab-graphic.dtx
-2023/06/08 | 497530 | macros/latex/required/latex-lab/latex-lab-graphic.pdf
-2023/06/08 | 5643 | macros/latex/required/latex-lab/latex-lab.ins
-2023/06/08 | 2453 | macros/latex/required/latex-lab/latex-lab-mathpkg.dtx
-2023/06/08 | 302193 | macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
-2023/06/08 | 35607 | macros/latex/required/latex-lab/latex-lab-mathtagging.dtx
-2023/06/08 | 609528 | macros/latex/required/latex-lab/latex-lab-mathtagging.pdf
-2023/06/08 | 6134 | macros/latex/required/latex-lab/latex-lab-mathtools.dtx
-2023/06/08 | 357363 | macros/latex/required/latex-lab/latex-lab-mathtools.pdf
-2023/06/08 | 5835 | macros/latex/required/latex-lab/latex-lab-minipage.dtx
-2023/06/08 | 277702 | macros/latex/required/latex-lab/latex-lab-minipage.pdf
-2023/06/08 | 4881 | macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
-2023/06/08 | 383693 | macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
-2023/06/08 | 16161 | macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
-2023/06/08 | 530340 | macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
-2023/06/08 | 26828 | macros/latex/required/latex-lab/latex-lab-sec.dtx
-2023/06/08 | 527667 | macros/latex/required/latex-lab/latex-lab-sec.pdf
-2023/06/08 | 4809 | macros/latex/required/latex-lab/latex-lab-testphase.dtx
-2023/06/08 | 298269 | macros/latex/required/latex-lab/latex-lab-testphase.pdf
-2023/06/08 | 3523 | macros/latex/required/latex-lab/latex-lab-text.dtx
-2023/06/08 | 308879 | macros/latex/required/latex-lab/latex-lab-text.pdf
-2023/06/08 | 5646 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
-2023/06/08 | 296522 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
-2023/06/08 | 17473 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
-2023/06/08 | 357477 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
-2023/06/08 | 11376 | macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.dtx
-2023/06/08 | 379087 | macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.pdf
-2023/06/08 | 1142 | macros/latex/required/latex-lab/README.md
-2023/06/08 | 682 | macros/latex/required/latex-lab/TODOS-unsorted.md
-2023/06/08 | 4508 | macros/latex/required/latex-lab/usage-of-@footnotemark.md
-2023/06/08 | 22525 | macros/latex/required/latex-lab/usage-of-@footnotetext.md
-2023/06/08 | 1790 | macros/latex/required/latex-lab/usage-of-kern-kern.md
-2023/06/08 | 66996 | macros/latex/required/latex-lab/usage-of-@makefntext.md
-2023/06/09 | 10358659 | macros/latex/required/latex-lab.zip
+2023/11/01 | 886150 | macros/latex/required/latex-lab/blocks-code.pdf
+2023/11/01 | 108 | macros/latex/required/latex-lab/blocks-code.tex
+2023/11/01 | 440234 | macros/latex/required/latex-lab/blocks-doc.pdf
+2023/11/01 | 105 | macros/latex/required/latex-lab/blocks-doc.tex
+2023/11/01 | 6593 | macros/latex/required/latex-lab/changes.txt
+2023/11/01 | 523380 | macros/latex/required/latex-lab/documentmetadata-support-code.pdf
+2023/11/01 | 117 | macros/latex/required/latex-lab/documentmetadata-support-code.tex
+2023/11/01 | 389003 | macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
+2023/11/01 | 191 | macros/latex/required/latex-lab/documentmetadata-support-doc.tex
+2023/11/01 | 19447 | macros/latex/required/latex-lab/documentmetadata-support.dtx
+2023/11/01 | 6221 | macros/latex/required/latex-lab/glyphtounicode-cmex.tex
+2023/11/01 | 3179 | macros/latex/required/latex-lab/latex-lab-amsmath.dtx
+2023/11/01 | 357553 | macros/latex/required/latex-lab/latex-lab-amsmath.pdf
+2023/11/01 | 14027 | macros/latex/required/latex-lab/latex-lab-bib.dtx
+2023/11/01 | 411092 | macros/latex/required/latex-lab/latex-lab-bib.pdf
+2023/11/01 | 135159 | macros/latex/required/latex-lab/latex-lab-block.dtx
+2023/11/01 | 886150 | macros/latex/required/latex-lab/latex-lab-block.pdf
+2023/11/01 | 4566 | macros/latex/required/latex-lab/latex-lab-firstaid.dtx
+2023/11/01 | 272864 | macros/latex/required/latex-lab/latex-lab-firstaid.pdf
+2023/11/01 | 16852 | macros/latex/required/latex-lab/latex-lab-float.dtx
+2023/11/01 | 444977 | macros/latex/required/latex-lab/latex-lab-float.pdf
+2023/11/01 | 87681 | macros/latex/required/latex-lab/latex-lab-footnotes.dtx
+2023/11/01 | 815656 | macros/latex/required/latex-lab/latex-lab-footnotes.pdf
+2023/11/01 | 34333 | macros/latex/required/latex-lab/latex-lab-graphic.dtx
+2023/11/01 | 496997 | macros/latex/required/latex-lab/latex-lab-graphic.pdf
+2023/11/01 | 6127 | macros/latex/required/latex-lab/latex-lab.ins
+2023/11/01 | 37115 | macros/latex/required/latex-lab/latex-lab-math.dtx
+2023/11/01 | 612623 | macros/latex/required/latex-lab/latex-lab-math.pdf
+2023/11/01 | 2453 | macros/latex/required/latex-lab/latex-lab-mathpkg.dtx
+2023/11/01 | 302371 | macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
+2023/11/01 | 6134 | macros/latex/required/latex-lab/latex-lab-mathtools.dtx
+2023/11/01 | 357553 | macros/latex/required/latex-lab/latex-lab-mathtools.pdf
+2023/11/01 | 7303 | macros/latex/required/latex-lab/latex-lab-minipage.dtx
+2023/11/01 | 280811 | macros/latex/required/latex-lab/latex-lab-minipage.pdf
+2023/11/01 | 2882 | macros/latex/required/latex-lab/latex-lab-namespace.dtx
+2023/11/01 | 234649 | macros/latex/required/latex-lab/latex-lab-namespace.pdf
+2023/11/01 | 5684 | macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
+2023/11/01 | 389721 | macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
+2023/11/01 | 23812 | macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
+2023/11/01 | 632310 | macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
+2023/11/01 | 26638 | macros/latex/required/latex-lab/latex-lab-sec.dtx
+2023/11/01 | 527916 | macros/latex/required/latex-lab/latex-lab-sec.pdf
+2023/11/01 | 65052 | macros/latex/required/latex-lab/latex-lab-table.dtx
+2023/11/01 | 621929 | macros/latex/required/latex-lab/latex-lab-table.pdf
+2023/11/01 | 4770 | macros/latex/required/latex-lab/latex-lab-testphase.dtx
+2023/11/01 | 298403 | macros/latex/required/latex-lab/latex-lab-testphase.pdf
+2023/11/01 | 3669 | macros/latex/required/latex-lab/latex-lab-text.dtx
+2023/11/01 | 307812 | macros/latex/required/latex-lab/latex-lab-text.pdf
+2023/11/01 | 12805 | macros/latex/required/latex-lab/latex-lab-toc.dtx
+2023/11/01 | 5733 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
+2023/11/01 | 296124 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
+2023/11/01 | 18464 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
+2023/11/01 | 361084 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
+2023/11/01 | 396817 | macros/latex/required/latex-lab/latex-lab-toc.pdf
+2023/11/01 | 1142 | macros/latex/required/latex-lab/README.md
+2023/11/01 | 11370239 | macros/latex/required/latex-lab.zip
2020/04/01 | 4858 | macros/latex/required/psnfss/8r.enc
2020/04/01 | 8765 | macros/latex/required/psnfss/changes.txt
2020/04/01 | 503 | macros/latex/required/psnfss/charter.map
@@ -245352,78 +245364,78 @@
2020/04/01 | 1004 | macros/latex/required/psnfss/test3.tex
2020/04/01 | 489 | macros/latex/required/psnfss/utopia.map
2020/04/01 | 1211157 | macros/latex/required/psnfss.zip
-2023/06/08 | 14072 | macros/latex/required/tools/afterpage.dtx
-2023/06/08 | 2538 | macros/latex/required/tools/afterpage.ins
-2023/06/08 | 197735 | macros/latex/required/tools/afterpage.pdf
-2023/06/08 | 11749 | macros/latex/required/tools/array-2016-10-06.sty
-2023/06/08 | 12559 | macros/latex/required/tools/array-2020-02-10.sty
-2023/06/08 | 128521 | macros/latex/required/tools/array.dtx
-2023/06/08 | 517039 | macros/latex/required/tools/array.pdf
-2023/06/08 | 61565 | macros/latex/required/tools/bm.dtx
-2023/06/08 | 2524 | macros/latex/required/tools/bm.ins
-2023/06/08 | 323438 | macros/latex/required/tools/bm.pdf
-2023/06/08 | 53167 | macros/latex/required/tools/calc.dtx
-2023/06/08 | 370641 | macros/latex/required/tools/calc.pdf
-2023/06/08 | 63243 | macros/latex/required/tools/changes.txt
-2023/06/08 | 12709 | macros/latex/required/tools/dcolumn.dtx
-2023/06/08 | 220838 | macros/latex/required/tools/dcolumn.pdf
-2023/06/08 | 6789 | macros/latex/required/tools/delarray.dtx
-2023/06/08 | 191064 | macros/latex/required/tools/delarray.pdf
-2023/06/08 | 10644 | macros/latex/required/tools/enumerate.dtx
-2023/06/08 | 215495 | macros/latex/required/tools/enumerate.pdf
-2023/06/08 | 4959 | macros/latex/required/tools/fileerr.dtx
-2023/06/08 | 187704 | macros/latex/required/tools/fileerr.pdf
-2023/06/08 | 10771 | macros/latex/required/tools/fontsmpl.dtx
-2023/06/08 | 146441 | macros/latex/required/tools/fontsmpl.pdf
-2023/06/08 | 39696 | macros/latex/required/tools/ftnright.dtx
-2023/06/08 | 387208 | macros/latex/required/tools/ftnright.pdf
-2023/06/08 | 11148 | macros/latex/required/tools/hhline.dtx
-2023/06/08 | 189673 | macros/latex/required/tools/hhline.pdf
-2023/06/08 | 2220 | macros/latex/required/tools/indentfirst.dtx
-2023/06/08 | 157956 | macros/latex/required/tools/indentfirst.pdf
-2023/06/08 | 32029 | macros/latex/required/tools/layout.dtx
-2023/06/08 | 259965 | macros/latex/required/tools/layout.pdf
-2023/06/08 | 12133 | macros/latex/required/tools/longtable-2020-01-07.sty
-2023/06/08 | 76397 | macros/latex/required/tools/longtable.dtx
-2023/06/08 | 2538 | macros/latex/required/tools/longtable.ins
-2023/06/08 | 391298 | macros/latex/required/tools/longtable.pdf
-2023/06/08 | 3284 | macros/latex/required/tools/manifest.txt
-2023/06/08 | 29712 | macros/latex/required/tools/multicol-2017-04-11.sty
-2023/06/08 | 31646 | macros/latex/required/tools/multicol-2019-10-01.sty
-2023/06/08 | 186367 | macros/latex/required/tools/multicol.dtx
-2023/06/08 | 2576 | macros/latex/required/tools/multicol.ins
-2023/06/08 | 523315 | macros/latex/required/tools/multicol.pdf
-2023/06/08 | 8976 | macros/latex/required/tools/rawfonts.dtx
-2023/06/08 | 138967 | macros/latex/required/tools/rawfonts.pdf
-2023/06/08 | 1650 | macros/latex/required/tools/README.md
-2023/06/08 | 9556 | macros/latex/required/tools/shellesc.dtx
-2023/06/08 | 176204 | macros/latex/required/tools/shellesc.pdf
-2023/06/08 | 8632 | macros/latex/required/tools/showkeys-2014-10-28.sty
-2023/06/08 | 30276 | macros/latex/required/tools/showkeys.dtx
-2023/06/08 | 252908 | macros/latex/required/tools/showkeys.pdf
-2023/06/08 | 5791 | macros/latex/required/tools/somedefs.dtx
-2023/06/08 | 167585 | macros/latex/required/tools/somedefs.pdf
-2023/06/08 | 35875 | macros/latex/required/tools/tabularx.dtx
-2023/06/08 | 2535 | macros/latex/required/tools/tabularx.ins
-2023/06/08 | 287074 | macros/latex/required/tools/tabularx.pdf
-2023/06/08 | 43448 | macros/latex/required/tools/theorem.dtx
-2023/06/08 | 351654 | macros/latex/required/tools/theorem.pdf
-2023/06/08 | 5680 | macros/latex/required/tools/tools.ins
-2023/06/08 | 73672 | macros/latex/required/tools/tools-overview.pdf
-2023/06/08 | 5211 | macros/latex/required/tools/tools-overview.tex
-2023/06/08 | 25146 | macros/latex/required/tools/trace.dtx
-2023/06/08 | 222080 | macros/latex/required/tools/trace.pdf
-2023/06/08 | 33863 | macros/latex/required/tools/varioref-2016-02-16.sty
-2023/06/08 | 114350 | macros/latex/required/tools/varioref.dtx
-2023/06/08 | 2531 | macros/latex/required/tools/varioref.ins
-2023/06/08 | 393154 | macros/latex/required/tools/varioref.pdf
-2023/06/08 | 72131 | macros/latex/required/tools/verbatim.dtx
-2023/06/08 | 330785 | macros/latex/required/tools/verbatim.pdf
-2023/06/08 | 6218 | macros/latex/required/tools/xr.dtx
-2023/06/08 | 169984 | macros/latex/required/tools/xr.pdf
-2023/06/08 | 17856 | macros/latex/required/tools/xspace.dtx
-2023/06/08 | 257018 | macros/latex/required/tools/xspace.pdf
-2023/06/09 | 7248730 | macros/latex/required/tools.zip
+2023/11/01 | 14075 | macros/latex/required/tools/afterpage.dtx
+2023/11/01 | 2538 | macros/latex/required/tools/afterpage.ins
+2023/11/01 | 198100 | macros/latex/required/tools/afterpage.pdf
+2023/11/01 | 11749 | macros/latex/required/tools/array-2016-10-06.sty
+2023/11/01 | 12559 | macros/latex/required/tools/array-2020-02-10.sty
+2023/11/01 | 128520 | macros/latex/required/tools/array.dtx
+2023/11/01 | 517410 | macros/latex/required/tools/array.pdf
+2023/11/01 | 61635 | macros/latex/required/tools/bm.dtx
+2023/11/01 | 2524 | macros/latex/required/tools/bm.ins
+2023/11/01 | 323929 | macros/latex/required/tools/bm.pdf
+2023/11/01 | 53167 | macros/latex/required/tools/calc.dtx
+2023/11/01 | 370660 | macros/latex/required/tools/calc.pdf
+2023/11/01 | 63675 | macros/latex/required/tools/changes.txt
+2023/11/01 | 12706 | macros/latex/required/tools/dcolumn.dtx
+2023/11/01 | 221038 | macros/latex/required/tools/dcolumn.pdf
+2023/11/01 | 6789 | macros/latex/required/tools/delarray.dtx
+2023/11/01 | 191058 | macros/latex/required/tools/delarray.pdf
+2023/11/01 | 10637 | macros/latex/required/tools/enumerate.dtx
+2023/11/01 | 215077 | macros/latex/required/tools/enumerate.pdf
+2023/11/01 | 4959 | macros/latex/required/tools/fileerr.dtx
+2023/11/01 | 188281 | macros/latex/required/tools/fileerr.pdf
+2023/11/01 | 10771 | macros/latex/required/tools/fontsmpl.dtx
+2023/11/01 | 146438 | macros/latex/required/tools/fontsmpl.pdf
+2023/11/01 | 39697 | macros/latex/required/tools/ftnright.dtx
+2023/11/01 | 387794 | macros/latex/required/tools/ftnright.pdf
+2023/11/01 | 11148 | macros/latex/required/tools/hhline.dtx
+2023/11/01 | 189678 | macros/latex/required/tools/hhline.pdf
+2023/11/01 | 2219 | macros/latex/required/tools/indentfirst.dtx
+2023/11/01 | 157352 | macros/latex/required/tools/indentfirst.pdf
+2023/11/01 | 32047 | macros/latex/required/tools/layout.dtx
+2023/11/01 | 260278 | macros/latex/required/tools/layout.pdf
+2023/11/01 | 12133 | macros/latex/required/tools/longtable-2020-01-07.sty
+2023/11/01 | 76541 | macros/latex/required/tools/longtable.dtx
+2023/11/01 | 2538 | macros/latex/required/tools/longtable.ins
+2023/11/01 | 391258 | macros/latex/required/tools/longtable.pdf
+2023/11/01 | 3284 | macros/latex/required/tools/manifest.txt
+2023/11/01 | 29712 | macros/latex/required/tools/multicol-2017-04-11.sty
+2023/11/01 | 31646 | macros/latex/required/tools/multicol-2019-10-01.sty
+2023/11/01 | 186367 | macros/latex/required/tools/multicol.dtx
+2023/11/01 | 2576 | macros/latex/required/tools/multicol.ins
+2023/11/01 | 523618 | macros/latex/required/tools/multicol.pdf
+2023/11/01 | 8976 | macros/latex/required/tools/rawfonts.dtx
+2023/11/01 | 138956 | macros/latex/required/tools/rawfonts.pdf
+2023/11/01 | 1651 | macros/latex/required/tools/README.md
+2023/11/01 | 9559 | macros/latex/required/tools/shellesc.dtx
+2023/11/01 | 176171 | macros/latex/required/tools/shellesc.pdf
+2023/11/01 | 8632 | macros/latex/required/tools/showkeys-2014-10-28.sty
+2023/11/01 | 30279 | macros/latex/required/tools/showkeys.dtx
+2023/11/01 | 252975 | macros/latex/required/tools/showkeys.pdf
+2023/11/01 | 5791 | macros/latex/required/tools/somedefs.dtx
+2023/11/01 | 167583 | macros/latex/required/tools/somedefs.pdf
+2023/11/01 | 35874 | macros/latex/required/tools/tabularx.dtx
+2023/11/01 | 2535 | macros/latex/required/tools/tabularx.ins
+2023/11/01 | 287013 | macros/latex/required/tools/tabularx.pdf
+2023/11/01 | 43446 | macros/latex/required/tools/theorem.dtx
+2023/11/01 | 352315 | macros/latex/required/tools/theorem.pdf
+2023/11/01 | 5680 | macros/latex/required/tools/tools.ins
+2023/11/01 | 73673 | macros/latex/required/tools/tools-overview.pdf
+2023/11/01 | 5211 | macros/latex/required/tools/tools-overview.tex
+2023/11/01 | 25146 | macros/latex/required/tools/trace.dtx
+2023/11/01 | 222074 | macros/latex/required/tools/trace.pdf
+2023/11/01 | 33863 | macros/latex/required/tools/varioref-2016-02-16.sty
+2023/11/01 | 114350 | macros/latex/required/tools/varioref.dtx
+2023/11/01 | 2531 | macros/latex/required/tools/varioref.ins
+2023/11/01 | 393134 | macros/latex/required/tools/varioref.pdf
+2023/11/01 | 72132 | macros/latex/required/tools/verbatim.dtx
+2023/11/01 | 331003 | macros/latex/required/tools/verbatim.pdf
+2023/11/01 | 6219 | macros/latex/required/tools/xr.dtx
+2023/11/01 | 170451 | macros/latex/required/tools/xr.pdf
+2023/11/01 | 17856 | macros/latex/required/tools/xspace.dtx
+2023/11/01 | 257027 | macros/latex/required/tools/xspace.pdf
+2023/11/01 | 7252209 | macros/latex/required/tools.zip
2016/05/20 | 847 | macros/lollipop/config/lollipop.ini
2016/05/20 | 5871 | macros/lollipop/doc/manual/address.tex
2016/05/20 | 2705 | macros/lollipop/doc/manual/appendix.tex
@@ -287047,7 +287059,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
-2023/10/27 | 235347 | support/TeX4ht/source/ChangeLog
+2023/10/31 | 235605 | 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
@@ -287059,7 +287071,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
-2023/10/25 | 1168227 | support/TeX4ht/source/tex4ht-4ht.tex
+2023/10/31 | 1168422 | 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
2023/10/16 | 21307 | support/TeX4ht/source/tex4ht-cond4ht.tex
@@ -287088,7 +287100,7 @@
2021/05/03 | 14218 | support/TeX4ht/source/tex4ht-htcmd.tex
2021/05/03 | 70683 | support/TeX4ht/source/tex4ht-html0.tex
2021/05/03 | 164748 | support/TeX4ht/source/tex4ht-html32.tex
-2023/10/25 | 622581 | support/TeX4ht/source/tex4ht-html4.tex
+2023/10/31 | 622587 | support/TeX4ht/source/tex4ht-html4.tex
2023/10/09 | 12034 | support/TeX4ht/source/tex4ht-html5.tex
2021/06/17 | 648233 | support/TeX4ht/source/tex4ht-html-speech.tex
2021/05/03 | 59483 | support/TeX4ht/source/tex4ht-html-speech-xtpipes.tex
@@ -288594,11 +288606,11 @@
2021/08/01 | 4655 | support/wp2latex/html2latex.htm
2007/07/22 | 600 | support/wp2latex/readme.1st
2021/08/01 | 7401 | support/wp2latex/readme.txt
-2022/01/02 | 3776184 | support/wp2latex/wp2latex-3.103.zip
+2022/02/11 | 3796175 | support/wp2latex/wp2latex-3.104.zip
2021/10/11 | 318682 | support/wp2latex/wp2latex-AMD64-3.100.deb
2018/01/26 | 45297 | support/wp2latex/wp2latex.doc.htm
2018/01/26 | 7259 | support/wp2latex/wp2latex.faq
-2022/01/02 | 1661344 | support/wp2latex/WP2LaTeX_Installer-3.103.exe
+2022/02/11 | 1663349 | support/wp2latex/WP2LaTeX_Installer-3.104.exe
2021/08/01 | 1241 | support/wp2latex/wp2latex.lsm
2018/01/26 | 35145 | support/wp2latex/wp2latex_pas-2.3.zip
2000/02/22 | 481 | support/wsuipa2tipa/README
@@ -291783,6 +291795,8 @@
2022/02/27 | 20636 | systems/texlive/tlnet/archive/autosp.x86_64-linuxmusl.r62210.tar.xz
2022/02/26 | 19972 | systems/texlive/tlnet/archive/autosp.x86_64-linux.r62187.tar.xz
2021/02/27 | 21748 | systems/texlive/tlnet/archive/autosp.x86_64-solaris.r57938.tar.xz
+2023/11/01 | 344352 | systems/texlive/tlnet/archive/autotype.doc.r68711.tar.xz
+2023/11/01 | 456812 | systems/texlive/tlnet/archive/autotype.r68711.tar.xz
2019/12/18 | 285640 | systems/texlive/tlnet/archive/auxhook.doc.r53173.tar.xz
2019/12/18 | 1660 | systems/texlive/tlnet/archive/auxhook.r53173.tar.xz
2019/12/18 | 5240 | systems/texlive/tlnet/archive/auxhook.source.r53173.tar.xz
@@ -293422,7 +293436,7 @@
2023/04/15 | 880 | systems/texlive/tlnet/archive/collection-langenglish.r66846.tar.xz
2023/03/08 | 724 | systems/texlive/tlnet/archive/collection-langeuropean.r66432.tar.xz
2023/08/17 | 644 | systems/texlive/tlnet/archive/collection-langfrench.r67951.tar.xz
-2020/07/01 | 628 | systems/texlive/tlnet/archive/collection-langgerman.r55706.tar.xz
+2023/11/01 | 632 | systems/texlive/tlnet/archive/collection-langgerman.r68711.tar.xz
2022/11/18 | 440 | systems/texlive/tlnet/archive/collection-langgreek.r65038.tar.xz
2020/05/14 | 432 | systems/texlive/tlnet/archive/collection-langitalian.r55129.tar.xz
2022/10/05 | 672 | systems/texlive/tlnet/archive/collection-langjapanese.r64603.tar.xz
@@ -296708,9 +296722,9 @@
2019/02/28 | 186676 | systems/texlive/tlnet/archive/hypernat.doc.r17358.tar.xz
2019/02/28 | 1916 | systems/texlive/tlnet/archive/hypernat.r17358.tar.xz
2019/02/28 | 15680 | systems/texlive/tlnet/archive/hyper.r17357.tar.xz
-2023/10/25 | 3309220 | systems/texlive/tlnet/archive/hyperref.doc.r68630.tar.xz
-2023/10/25 | 90912 | systems/texlive/tlnet/archive/hyperref.r68630.tar.xz
-2023/10/25 | 414588 | systems/texlive/tlnet/archive/hyperref.source.r68630.tar.xz
+2023/11/01 | 3677552 | systems/texlive/tlnet/archive/hyperref.doc.r68710.tar.xz
+2023/11/01 | 90912 | systems/texlive/tlnet/archive/hyperref.r68710.tar.xz
+2023/11/01 | 414660 | systems/texlive/tlnet/archive/hyperref.source.r68710.tar.xz
2019/02/28 | 32960 | systems/texlive/tlnet/archive/hyper.source.r17357.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.aarch64-linux.r56984.tar.xz
2020/11/23 | 356 | systems/texlive/tlnet/archive/hyperxmp.amd64-freebsd.r56984.tar.xz
@@ -297354,8 +297368,8 @@
2023/02/18 | 40136 | systems/texlive/tlnet/archive/kpathsea.x86_64-linux.r65877.tar.xz
2023/02/18 | 44616 | systems/texlive/tlnet/archive/kpathsea.x86_64-solaris.r65877.tar.xz
2023/01/20 | 1622220 | systems/texlive/tlnet/archive/kpfonts.doc.r65583.tar.xz
-2023/08/05 | 2030104 | systems/texlive/tlnet/archive/kpfonts-otf.doc.r67811.tar.xz
-2023/08/05 | 1114968 | systems/texlive/tlnet/archive/kpfonts-otf.r67811.tar.xz
+2023/11/01 | 2031084 | systems/texlive/tlnet/archive/kpfonts-otf.doc.r68709.tar.xz
+2023/11/01 | 1112096 | systems/texlive/tlnet/archive/kpfonts-otf.r68709.tar.xz
2023/01/20 | 2246256 | systems/texlive/tlnet/archive/kpfonts.r65583.tar.xz
2019/02/28 | 3968 | systems/texlive/tlnet/archive/ksfh_nat.r24825.tar.xz
2019/02/28 | 146928 | systems/texlive/tlnet/archive/ksp-thesis.doc.r39080.tar.xz
@@ -302718,13 +302732,13 @@
2023/08/16 | 108860 | systems/texlive/tlnet/archive/tex4ht.amd64-freebsd.r67940.tar.xz
2023/08/16 | 87320 | systems/texlive/tlnet/archive/tex4ht.amd64-netbsd.r67940.tar.xz
2023/08/16 | 69948 | systems/texlive/tlnet/archive/tex4ht.armhf-linux.r67940.tar.xz
-2023/10/28 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r68679.tar.xz
+2023/11/01 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r68712.tar.xz
2023/08/16 | 93764 | systems/texlive/tlnet/archive/tex4ht.i386-freebsd.r67940.tar.xz
2023/08/16 | 91236 | systems/texlive/tlnet/archive/tex4ht.i386-linux.r67940.tar.xz
2023/08/16 | 76184 | systems/texlive/tlnet/archive/tex4ht.i386-netbsd.r67940.tar.xz
2023/08/16 | 83936 | systems/texlive/tlnet/archive/tex4ht.i386-solaris.r67940.tar.xz
-2023/10/28 | 1104088 | systems/texlive/tlnet/archive/tex4ht.r68679.tar.xz
-2023/10/28 | 1458488 | systems/texlive/tlnet/archive/tex4ht.source.r68679.tar.xz
+2023/11/01 | 1104056 | systems/texlive/tlnet/archive/tex4ht.r68712.tar.xz
+2023/11/01 | 1458288 | systems/texlive/tlnet/archive/tex4ht.source.r68712.tar.xz
2023/08/16 | 184636 | systems/texlive/tlnet/archive/tex4ht.universal-darwin.r67940.tar.xz
2023/10/23 | 62056 | systems/texlive/tlnet/archive/tex4ht.windows.r68621.tar.xz
2023/08/16 | 57992 | systems/texlive/tlnet/archive/tex4ht.x86_64-cygwin.r67940.tar.xz
@@ -302985,7 +302999,7 @@
2022/09/13 | 600 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r64356.tar.xz
-2023/10/31 | 428452 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68698.tar.xz
+2023/11/01 | 428516 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68708.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
@@ -303007,7 +303021,7 @@
2022/09/13 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r64356.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r64356.tar.xz
-2023/10/31 | 114096 | systems/texlive/tlnet/archive/texlive-scripts.r68698.tar.xz
+2023/11/01 | 114096 | systems/texlive/tlnet/archive/texlive-scripts.r68708.tar.xz
2022/09/13 | 580 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r64356.tar.xz
2023/05/14 | 60312 | systems/texlive/tlnet/archive/texlive-scripts.windows.r67095.tar.xz
2022/09/13 | 596 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r64356.tar.xz
@@ -304889,16 +304903,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
2023/08/07 | 125713 | systems/texlive/tlnet/install-tl
-2023/10/31 | 5741006 | systems/texlive/tlnet/install-tl-unx.tar.gz
-2023/10/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/11/01 | 5741811 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/11/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/05/13 | 5083 | systems/texlive/tlnet/install-tl-windows.bat
-2023/10/31 | 21037691 | systems/texlive/tlnet/install-tl-windows.exe
-2023/10/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/10/31 | 26029201 | systems/texlive/tlnet/install-tl.zip
-2023/10/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/11/01 | 21037691 | systems/texlive/tlnet/install-tl-windows.exe
+2023/11/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/11/01 | 26029201 | systems/texlive/tlnet/install-tl.zip
+2023/11/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
2023/03/19 | 1229 | systems/texlive/tlnet/README.md
2023/03/19 | 0 | systems/texlive/tlnet/TEXLIVE_2023
2023/01/17 | 8401 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg
@@ -304950,12 +304964,12 @@
2023/02/21 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm
2021/12/21 | 5429 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm
2023/04/08 | 28167 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm
-2023/10/31 | 18312097 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
-2023/10/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/11/01 | 18315224 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/11/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
2023/10/16 | 87924 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm
-2023/10/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
-2023/10/31 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/10/31 | 2482368 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/11/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/11/01 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/11/01 | 2482092 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/02/20 | 58928 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm
2023/06/11 | 42749 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm
2023/02/21 | 16138 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm
@@ -315825,7 +315839,7 @@
2014/07/05 | 611 | systems/win32/yandy/README
2014/07/05 | 1004628 | systems/win32/yandy/yandy-src.tar.xz
2014/07/05 | 1012416 | systems/win32/yandy.zip
-2023/11/01 | 186 | timestamp
+2023/11/02 | 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 79eac350c0..7c65ff3d07 100644
--- a/FILES.byname.gz
+++ b/FILES.byname.gz
Binary files differ
diff --git a/FILES.last07days b/FILES.last07days
index f66cdc13bd..6b42a8b8f2 100644
--- a/FILES.last07days
+++ b/FILES.last07days
@@ -1,3 +1,707 @@
+2023/11/01 | 99 | macros/latex/base/ltpara-code.tex
+2023/11/01 | 9999 | macros/latex/contrib/l3kernel/l3news10.tex
+2023/11/01 | 9935 | macros/latex/base/ltnews21.tex
+2023/11/01 | 98910 | macros/latex/contrib/l3kernel/l3seq.dtx
+2023/11/01 | 9887 | macros/latex/base/format.ins
+2023/11/01 | 96 | macros/latex/base/doc-code.tex
+2023/11/01 | 9636068 | fonts/newtx.zip
+2023/11/01 | 96044 | macros/latex/contrib/l3experimental/l3galley.dtx
+2023/11/01 | 9559 | macros/latex/required/tools/shellesc.dtx
+2023/11/01 | 9557 | macros/latex/base/ltcntrl.dtx
+2023/11/01 | 9465 | macros/latex/contrib/l3kernel/l3news08.tex
+2023/11/01 | 9435 | macros/latex/contrib/l3kernel/l3fp-assign.dtx
+2023/11/01 | 94042 | graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
+2023/11/01 | 9401 | macros/latex/base/source2edoc.cls
+2023/11/01 | 9395 | macros/latex/base/syntonly.dtx
+2023/11/01 | 9345 | macros/latex/base/preload.dtx
+2023/11/01 | 92982 | macros/latex/contrib/l3kernel/l3int.dtx
+2023/11/01 | 92954 | macros/latex/base/ltdefns.dtx
+2023/11/01 | 92280 | macros/latex/base/utf8ienc.dtx
+2023/11/01 | 91722 | macros/latex/contrib/l3kernel/l3skip.dtx
+2023/11/01 | 90912 | systems/texlive/tlnet/archive/hyperref.r68710.tar.xz
+2023/11/01 | 9068 | macros/latex/base/lppl-1-0.txt
+2023/11/01 | 90660 | macros/latex/base/lttextcomp.dtx
+2023/11/01 | 8976 | macros/latex/required/tools/rawfonts.dtx
+2023/11/01 | 89727 | macros/latex/base/slides.dtx
+2023/11/01 | 8970 | macros/latex/base/ltnews17.tex
+2023/11/01 | 88942 | macros/latex/contrib/l3kernel/l3expan.dtx
+2023/11/01 | 886150 | macros/latex/required/latex-lab/latex-lab-block.pdf
+2023/11/01 | 886150 | macros/latex/required/latex-lab/blocks-code.pdf
+2023/11/01 | 88106 | macros/latex/contrib/l3kernel/l3coffins.dtx
+2023/11/01 | 87751 | macros/latex/contrib/l3kernel/l3box.dtx
+2023/11/01 | 87681 | macros/latex/required/latex-lab/latex-lab-footnotes.dtx
+2023/11/01 | 8731 | macros/latex/base/ltthm.dtx
+2023/11/01 | 8663 | macros/latex/required/amsmath/amsbsy.dtx
+2023/11/01 | 8632 | macros/latex/required/tools/showkeys-2014-10-28.sty
+2023/11/01 | 8628 | macros/latex/contrib/l3experimental/CHANGELOG.md
+2023/11/01 | 8626 | macros/latex/base/oldlfont.dtx
+2023/11/01 | 85099 | macros/latex/required/amsmath/amsmath-2018-12-01.sty
+2023/11/01 | 8481 | macros/latex/contrib/l3kernel/l3news11.tex
+2023/11/01 | 84779 | macros/latex/contrib/l3kernel/l3fp-basics.dtx
+2023/11/01 | 8425 | macros/latex/required/amsmath/changes.txt
+2023/11/01 | 84215 | macros/latex/base/ltfssini.dtx
+2023/11/01 | 83184 | macros/latex/contrib/l3kernel/l3clist.dtx
+2023/11/01 | 82917 | macros/latex/base/ltfssbas.dtx
+2023/11/01 | 82683 | macros/latex/contrib/l3kernel/l3prefixes.pdf
+2023/11/01 | 823832 | install/macros/latex/contrib/l3build.tds.zip
+2023/11/01 | 82320 | macros/latex/contrib/l3kernel/l3msg.dtx
+2023/11/01 | 821655 | macros/latex/base/ltshipout-code.pdf
+2023/11/01 | 819989 | macros/latex/contrib/l3build.zip
+2023/11/01 | 815656 | macros/latex/required/latex-lab/latex-lab-footnotes.pdf
+2023/11/01 | 81195 | macros/latex/base/ltshipout.dtx
+2023/11/01 | 81184 | macros/latex/required/amsmath/testmath.tex
+2023/11/01 | 8092 | macros/latex/contrib/l3build/l3build-variables.lua
+2023/11/01 | 8051 | macros/latex/base/ltnews.tex
+2023/11/01 | 804030 | macros/latex/base/ltfilehook-code.pdf
+2023/11/01 | 80195 | macros/latex/contrib/l3kernel/l3names.dtx
+2023/11/01 | 79606 | macros/latex/contrib/l3kernel/l3str.dtx
+2023/11/01 | 794 | macros/latex/contrib/profmaquette/doc/TestCANComplement.tex
+2023/11/01 | 7832 | macros/latex/contrib/l3kernel/l3fp-functions.dtx
+2023/11/01 | 7805 | macros/latex/contrib/l3build/l3build-arguments.lua
+2023/11/01 | 76541 | macros/latex/required/tools/longtable.dtx
+2023/11/01 | 76368 | macros/latex/contrib/l3kernel/l3text-case.dtx
+2023/11/01 | 76359 | macros/latex/contrib/l3kernel/l3fp.dtx
+2023/11/01 | 756298 | macros/latex/base/doc.pdf
+2023/11/01 | 755882 | macros/latex/base/ltcmdhooks-code.pdf
+2023/11/01 | 755246 | macros/latex/base/lthooks-doc.pdf
+2023/11/01 | 7528 | macros/latex/base/ltxguide.cls
+2023/11/01 | 75286 | macros/latex/base/ltluatex.dtx
+2023/11/01 | 75111 | macros/latex/base/ltfssdcl.dtx
+2023/11/01 | 7505 | macros/latex/contrib/l3build/l3build.lua
+2023/11/01 | 7490669 | macros/latex/contrib/l3kernel/source3.pdf
+2023/11/01 | 746427 | macros/latex/contrib/l3build/l3build.pdf
+2023/11/01 | 73835 | macros/latex/contrib/l3kernel/l3fp-trig.dtx
+2023/11/01 | 73673 | macros/latex/required/tools/tools-overview.pdf
+2023/11/01 | 7342805 | install/macros/latex/required/latex-tools.tds.zip
+2023/11/01 | 7303 | macros/latex/required/latex-lab/latex-lab-minipage.dtx
+2023/11/01 | 7252209 | macros/latex/required/tools.zip
+2023/11/01 | 72475 | macros/latex/base/ltfsstrc.dtx
+2023/11/01 | 7244 | macros/latex/base/ltnews20.tex
+2023/11/01 | 7216 | macros/latex/base/exscale.dtx
+2023/11/01 | 72132 | macros/latex/required/tools/verbatim.dtx
+2023/11/01 | 7206 | macros/latex/contrib/l3build/l3build-manifest.lua
+2023/11/01 | 7200 | macros/latex/base/sample2e.tex
+2023/11/01 | 716681 | macros/latex/base/ltmarks-code.pdf
+2023/11/01 | 7104 | macros/latex/base/alltt.dtx
+2023/11/01 | 70833 | macros/latex/contrib/l3kernel/expl3.dtx
+2023/11/01 | 7079 | macros/latex/contrib/l3kernel/l3term-glossary.tex
+2023/11/01 | 70511 | macros/latex/contrib/l3kernel/l3prg.dtx
+2023/11/01 | 7029 | macros/latex/base/ltnews13.tex
+2023/11/01 | 69732 | macros/latex/required/amsmath/amstex.sty
+2023/11/01 | 69439 | macros/latex/base/clsguide-historic.tex
+2023/11/01 | 69002 | macros/latex/base/ltpictur.dtx
+2023/11/01 | 68735 | macros/latex/base/usrguide-historic.tex
+2023/11/01 | 681452 | macros/latex/contrib/l3experimental/l3draw-code.pdf
+2023/11/01 | 6789 | macros/latex/required/tools/delarray.dtx
+2023/11/01 | 6760 | macros/latex/base/slides.ins
+2023/11/01 | 67588 | macros/latex/base/ltcmdhooks.dtx
+2023/11/01 | 67442 | macros/latex/base/ltfilehook.dtx
+2023/11/01 | 672700 | macros/latex/base/ltpara-code.pdf
+2023/11/01 | 6709 | macros/latex/base/latexsym.dtx
+2023/11/01 | 6677 | macros/latex/contrib/l3kernel/l3news02.tex
+2023/11/01 | 6641 | graphics/pstricks/contrib/pst-3dplot/Changes
+2023/11/01 | 6593 | macros/latex/required/latex-lab/changes.txt
+2023/11/01 | 65684 | macros/latex/base/ltmiscen.dtx
+2023/11/01 | 65052 | macros/latex/required/latex-lab/latex-lab-table.dtx
+2023/11/01 | 6482 | macros/latex/contrib/l3kernel/l3news03.tex
+2023/11/01 | 64604 | macros/latex/base/clsguide.tex
+2023/11/01 | 6440 | macros/latex/required/amsmath/subeqn.tex
+2023/11/01 | 6433 | macros/latex/contrib/l3kernel/l3news06.tex
+2023/11/01 | 6424 | macros/latex/base/ltnews14.tex
+2023/11/01 | 64037 | macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+2023/11/01 | 6393 | macros/latex/contrib/l3kernel/l3.ins
+2023/11/01 | 63675 | macros/latex/required/tools/changes.txt
+2023/11/01 | 6357 | macros/latex/base/newlfont.dtx
+2023/11/01 | 632 | systems/texlive/tlnet/archive/collection-langgerman.r68711.tar.xz
+2023/11/01 | 63280 | macros/latex/base/letter.dtx
+2023/11/01 | 632310 | macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
+2023/11/01 | 63142 | macros/latex/base/ltmarks.dtx
+2023/11/01 | 6313 | macros/latex/contrib/l3build/l3build-aux.lua
+2023/11/01 | 629 | macros/latex/contrib/profmaquette/doc/TestCAN.tex
+2023/11/01 | 6267 | macros/latex/contrib/l3kernel/l3syntax-changes.tex
+2023/11/01 | 623137 | macros/latex/contrib/l3kernel/expl3.pdf
+2023/11/01 | 6221 | macros/latex/required/latex-lab/glyphtounicode-cmex.tex
+2023/11/01 | 6219 | macros/latex/required/tools/xr.dtx
+2023/11/01 | 621929 | macros/latex/required/latex-lab/latex-lab-table.pdf
+2023/11/01 | 6217 | macros/latex/base/ltmeta.dtx
+2023/11/01 | 61635 | macros/latex/required/tools/bm.dtx
+2023/11/01 | 6155 | macros/latex/base/ltpar.dtx
+2023/11/01 | 6151 | macros/latex/contrib/l3build/l3build-typesetting.lua
+2023/11/01 | 6150042 | macros/latex/base/source2e.pdf
+2023/11/01 | 61493 | macros/latex/base/ltfiles.dtx
+2023/11/01 | 6145 | macros/latex/base/latexrelease.ins
+2023/11/01 | 6134 | macros/latex/required/latex-lab/latex-lab-mathtools.dtx
+2023/11/01 | 6127 | macros/latex/required/latex-lab/latex-lab.ins
+2023/11/01 | 612623 | macros/latex/required/latex-lab/latex-lab-math.pdf
+2023/11/01 | 606454 | macros/latex/base/ltsockets-code.pdf
+2023/11/01 | 60385 | macros/latex/contrib/l3kernel/l3prop.dtx
+2023/11/01 | 60321 | macros/latex/base/fontdef.dtx
+2023/11/01 | 60156 | macros/latex/base/ltplain.dtx
+2023/11/01 | 5986 | macros/latex/base/ltnews15.tex
+2023/11/01 | 586808 | macros/latex/base/ltmarks-doc.pdf
+2023/11/01 | 5860 | macros/latex/required/amsmath/ams-internal.txt
+2023/11/01 | 5859 | macros/latex/base/ltidxglo.dtx
+2023/11/01 | 58547 | macros/latex/base/ltfssaxes.dtx
+2023/11/01 | 5825 | macros/latex/base/ltnews10.tex
+2023/11/01 | 58083 | macros/latex/contrib/l3experimental/xgalley.dtx
+2023/11/01 | 5791 | macros/latex/required/tools/somedefs.dtx
+2023/11/01 | 5775 | macros/latex/base/ltnews16.tex
+2023/11/01 | 5772 | macros/latex/contrib/l3kernel/l3candidates.dtx
+2023/11/01 | 5741811 | systems/texlive/tlnet/install-tl-unx.tar.gz
+2023/11/01 | 5733 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
+2023/11/01 | 5732 | macros/latex/base/ltnews08.tex
+2023/11/01 | 5714 | macros/latex/base/inputenc.ins
+2023/11/01 | 5699 | macros/latex/base/ltnews05.tex
+2023/11/01 | 5691 | macros/latex/base/ltnews27.tex
+2023/11/01 | 5684 | macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
+2023/11/01 | 5680 | macros/latex/required/tools/tools.ins
+2023/11/01 | 5678 | macros/latex/base/ltnews04.tex
+2023/11/01 | 566566 | macros/latex/base/ltshipout-doc.pdf
+2023/11/01 | 5653 | macros/latex/contrib/l3experimental/l3draw-layers.dtx
+2023/11/01 | 5645 | macros/latex/required/firstaid/changes.txt
+2023/11/01 | 563307 | macros/latex/base/ltnews35.pdf
+2023/11/01 | 560998 | macros/latex/base/classes.pdf
+2023/11/01 | 560578 | macros/latex/base/ltpara-doc.pdf
+2023/11/01 | 5588 | macros/latex/base/ltnews25.tex
+2023/11/01 | 558646 | macros/latex/base/ltproperties-code.pdf
+2023/11/01 | 557934 | macros/latex/contrib/l3kernel/l3doc.pdf
+2023/11/01 | 5576 | macros/latex/base/ltnews07.tex
+2023/11/01 | 5574 | macros/latex/base/ltnews12.tex
+2023/11/01 | 55687 | macros/latex/base/ltfloat.dtx
+2023/11/01 | 5544 | macros/latex/base/ltnews06.tex
+2023/11/01 | 5529 | macros/latex/base/ltnews11.tex
+2023/11/01 | 551 | graphics/pstricks/contrib/pst-3dplot/latex/pst-3dplot.sty
+2023/11/01 | 5509 | macros/latex/base/graphpap.dtx
+2023/11/01 | 548695 | macros/latex/base/ltfilehook-doc.pdf
+2023/11/01 | 54677 | macros/latex/base/ltpara.dtx
+2023/11/01 | 546540 | macros/latex/base/ltnews32.pdf
+2023/11/01 | 5462 | macros/latex/base/ltnews02.tex
+2023/11/01 | 54576 | macros/latex/contrib/l3kernel/CHANGELOG.md
+2023/11/01 | 5451 | macros/latex/base/ltnews09.tex
+2023/11/01 | 5429 | macros/latex/contrib/l3kernel/l3news04.tex
+2023/11/01 | 5369 | macros/latex/base/ltnews03.tex
+2023/11/01 | 5323 | macros/latex/required/amsmath/ams-external.txt
+2023/11/01 | 53167 | macros/latex/required/tools/calc.dtx
+2023/11/01 | 52887 | macros/latex/base/lb2.err
+2023/11/01 | 52813 | macros/latex/base/encguide.tex
+2023/11/01 | 527916 | macros/latex/required/latex-lab/latex-lab-sec.pdf
+2023/11/01 | 52759 | macros/latex/base/usrguide.tex
+2023/11/01 | 5273 | macros/latex/base/cmextra.ins
+2023/11/01 | 526688 | macros/latex/base/ltnews31.pdf
+2023/11/01 | 5246 | macros/latex/base/ltnews01.tex
+2023/11/01 | 523672 | macros/latex/base/ltnews38.pdf
+2023/11/01 | 523618 | macros/latex/required/tools/multicol.pdf
+2023/11/01 | 523380 | macros/latex/required/latex-lab/documentmetadata-support-code.pdf
+2023/11/01 | 522757 | macros/latex/base/ltnews33.pdf
+2023/11/01 | 5211 | macros/latex/required/tools/tools-overview.tex
+2023/11/01 | 517934 | macros/latex/base/ltnews36.pdf
+2023/11/01 | 517829 | macros/latex/contrib/l3experimental/l3draw.pdf
+2023/11/01 | 517708 | macros/latex/base/fntguide.pdf
+2023/11/01 | 517410 | macros/latex/required/tools/array.pdf
+2023/11/01 | 512240 | macros/latex/base/ltnews30.pdf
+2023/11/01 | 51180 | macros/latex/base/ltfinal.dtx
+2023/11/01 | 51081 | macros/latex/contrib/l3kernel/l3fp-extended.dtx
+2023/11/01 | 508345 | macros/latex/base/ltnews34.pdf
+2023/11/01 | 508230 | macros/latex/required/amsmath/amsldoc.pdf
+2023/11/01 | 506630 | macros/latex/base/docstrip.pdf
+2023/11/01 | 5041 | macros/latex/base/latexsym.ins
+2023/11/01 | 499346 | macros/latex/base/ltcmdhooks-doc.pdf
+2023/11/01 | 4977 | macros/latex/contrib/l3kernel/l3news07.tex
+2023/11/01 | 4972 | macros/latex/contrib/l3build/l3build-ctan.lua
+2023/11/01 | 496997 | macros/latex/required/latex-lab/latex-lab-graphic.pdf
+2023/11/01 | 4959 | macros/latex/required/tools/fileerr.dtx
+2023/11/01 | 4945 | macros/latex/base/lthyphen.dtx
+2023/11/01 | 4937 | macros/latex/contrib/l3kernel/l3news01.tex
+2023/11/01 | 49311 | macros/latex/contrib/l3kernel/l3fp-expo.dtx
+2023/11/01 | 4912 | macros/latex/contrib/l3kernel/l3fp-types.dtx
+2023/11/01 | 49020 | macros/latex/base/ltboxes.dtx
+2023/11/01 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+2023/11/01 | 489925 | macros/latex/base/clsguide.pdf
+2023/11/01 | 48990 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+2023/11/01 | 48942 | macros/latex/contrib/l3kernel/l3text.dtx
+2023/11/01 | 489314 | macros/latex/base/ltsockets-doc.pdf
+2023/11/01 | 4890 | macros/latex/contrib/l3kernel/l3news.tex
+2023/11/01 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
+2023/11/01 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
+2023/11/01 | 48142 | macros/latex/contrib/l3kernel/l3prefixes.csv
+2023/11/01 | 47896 | macros/latex/base/lttab.dtx
+2023/11/01 | 477695 | macros/latex/base/usrguide.pdf
+2023/11/01 | 4770 | macros/latex/required/latex-lab/latex-lab-testphase.dtx
+2023/11/01 | 4757 | macros/latex/base/ltlength.dtx
+2023/11/01 | 474 | macros/latex/required/firstaid/README.md
+2023/11/01 | 47316 | macros/latex/base/ltspace.dtx
+2023/11/01 | 47242 | macros/latex/contrib/l3kernel/l3fp-aux.dtx
+2023/11/01 | 4716 | macros/latex/contrib/l3kernel/l3news05.tex
+2023/11/01 | 46326 | fonts/newtx/README
+2023/11/01 | 4574 | macros/latex/contrib/l3kernel/l3legacy.dtx
+2023/11/01 | 456933 | macros/latex/base/ltnews37.pdf
+2023/11/01 | 456812 | systems/texlive/tlnet/archive/autotype.r68711.tar.xz
+2023/11/01 | 4566 | macros/latex/required/latex-lab/latex-lab-firstaid.dtx
+2023/11/01 | 455437 | macros/latex/base/ltnews29.pdf
+2023/11/01 | 454658 | macros/latex/required/amsmath/testmath.pdf
+2023/11/01 | 45347 | macros/latex/base/latexrelease.dtx
+2023/11/01 | 4458429 | install/macros/latex/contrib/l3experimental.tds.zip
+2023/11/01 | 44531 | macros/latex/base/cmfonts.fdd
+2023/11/01 | 444977 | macros/latex/required/latex-lab/latex-lab-float.pdf
+2023/11/01 | 4448 | macros/latex/contrib/l3experimental/l3draw-state.dtx
+2023/11/01 | 4420389 | macros/latex/contrib/l3experimental.zip
+2023/11/01 | 440234 | macros/latex/required/latex-lab/blocks-doc.pdf
+2023/11/01 | 4390 | macros/latex/base/ec.ins
+2023/11/01 | 438602 | macros/latex/base/usrguide-historic.pdf
+2023/11/01 | 43671611 | install/macros/latex/latex-base.tds.zip
+2023/11/01 | 43446 | macros/latex/required/tools/theorem.dtx
+2023/11/01 | 4338 | macros/latex/contrib/l3build/l3build-stdmain.lua
+2023/11/01 | 4336 | macros/latex/required/amsmath/amsxtra.dtx
+2023/11/01 | 433141 | macros/latex/base/ltproperties-doc.pdf
+2023/11/01 | 4324 | macros/latex/base/cmfonts.ins
+2023/11/01 | 4323 | macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+2023/11/01 | 43223 | macros/latex/contrib/l3kernel/l3debug.dtx
+2023/11/01 | 43212 | macros/latex/base/tlc3.err
+2023/11/01 | 43093435 | macros/latex/base.zip
+2023/11/01 | 4298 | macros/latex/base/ltalloc.dtx
+2023/11/01 | 428516 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68708.tar.xz
+2023/11/01 | 4284 | macros/latex/contrib/l3experimental/README.md
+2023/11/01 | 4273 | macros/latex/base/docstrip.ins
+2023/11/01 | 42708 | macros/latex/base/changes.old.txt
+2023/11/01 | 42560 | macros/latex/contrib/l3experimental/l3draw.dtx
+2023/11/01 | 4254 | macros/latex/base/newdc.ins
+2023/11/01 | 42287 | macros/latex/base/ltmath.dtx
+2023/11/01 | 4219 | macros/latex/base/latex209.ins
+2023/11/01 | 419922 | macros/latex/required/amsmath/amsmath.pdf
+2023/11/01 | 4190 | macros/latex/base/ltnews19.tex
+2023/11/01 | 415615 | macros/latex/base/clsguide-historic.pdf
+2023/11/01 | 4150 | macros/latex/contrib/l3build/l3build-zip.lua
+2023/11/01 | 414660 | systems/texlive/tlnet/archive/hyperref.source.r68710.tar.xz
+2023/11/01 | 4137 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.bib
+2023/11/01 | 4127344 | biblio/ctan-bibdata.zip
+2023/11/01 | 411092 | macros/latex/required/latex-lab/latex-lab-bib.pdf
+2023/11/01 | 408914 | macros/latex/contrib/l3experimental/l3galley.pdf
+2023/11/01 | 4087 | macros/latex/base/classes.ins
+2023/11/01 | 4079 | macros/latex/base/lablst.tex
+2023/11/01 | 40728 | macros/latex/contrib/l3kernel/l3sort.dtx
+2023/11/01 | 404410 | macros/latex/contrib/l3experimental/l3bitset.pdf
+2023/11/01 | 404085 | macros/latex/base/changes.txt
+2023/11/01 | 4011 | macros/latex/contrib/l3experimental/l3opacity.dtx
+2023/11/01 | 39839 | macros/latex/base/ltnews18.pdf
+2023/11/01 | 39697 | macros/latex/required/tools/ftnright.dtx
+2023/11/01 | 396817 | macros/latex/required/latex-lab/latex-lab-toc.pdf
+2023/11/01 | 396222 | macros/latex/contrib/l3kernel/l3news.pdf
+2023/11/01 | 3960 | macros/latex/base/olddc.ins
+2023/11/01 | 394481 | macros/latex/contrib/l3experimental/xcoffins.pdf
+2023/11/01 | 393134 | macros/latex/required/tools/varioref.pdf
+2023/11/01 | 391258 | macros/latex/required/tools/longtable.pdf
+2023/11/01 | 389721 | macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
+2023/11/01 | 389003 | macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
+2023/11/01 | 387794 | macros/latex/required/tools/ftnright.pdf
+2023/11/01 | 38730 | macros/latex/base/latex209.dtx
+2023/11/01 | 383641 | macros/latex/contrib/l3experimental/l3graphics.pdf
+2023/11/01 | 38226 | macros/latex/base/ltnews35.tex
+2023/11/01 | 379733 | macros/latex/base/ltnews26.pdf
+2023/11/01 | 3781 | macros/latex/base/tulm.ins
+2023/11/01 | 376933 | macros/latex/base/ltnews28.pdf
+2023/11/01 | 37668 | macros/latex/base/ltsockets.dtx
+2023/11/01 | 375493 | macros/latex/base/slides.pdf
+2023/11/01 | 37436 | macros/latex/contrib/l3build/l3build-check.lua
+2023/11/01 | 3725 | macros/latex/base/ltlogos.dtx
+2023/11/01 | 3722453 | biblio/ctan-bibdata/ctan.pdf
+2023/11/01 | 37115 | macros/latex/required/latex-lab/latex-lab-math.dtx
+2023/11/01 | 370660 | macros/latex/required/tools/calc.pdf
+2023/11/01 | 369 | macros/latex/required/amsmath/manifest.txt
+2023/11/01 | 368029 | macros/latex/contrib/l3experimental/l3str-format.pdf
+2023/11/01 | 3677552 | systems/texlive/tlnet/archive/hyperref.doc.r68710.tar.xz
+2023/11/01 | 3669 | macros/latex/required/latex-lab/latex-lab-text.dtx
+2023/11/01 | 36313 | macros/latex/contrib/l3kernel/l3sys.dtx
+2023/11/01 | 36154 | macros/latex/base/ltlists.dtx
+2023/11/01 | 361084 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
+2023/11/01 | 36026 | macros/latex/contrib/l3experimental/l3draw-points.dtx
+2023/11/01 | 35984 | macros/latex/base/ltdirchk.dtx
+2023/11/01 | 35874 | macros/latex/required/tools/tabularx.dtx
+2023/11/01 | 357553 | macros/latex/required/latex-lab/latex-lab-mathtools.pdf
+2023/11/01 | 357553 | macros/latex/required/latex-lab/latex-lab-amsmath.pdf
+2023/11/01 | 35675 | macros/latex/contrib/l3kernel/l3unicode.dtx
+2023/11/01 | 35456 | macros/latex/contrib/l3kernel/l3quark.dtx
+2023/11/01 | 353655 | macros/latex/base/utf8ienc.pdf
+2023/11/01 | 352315 | macros/latex/required/tools/theorem.pdf
+2023/11/01 | 35077 | macros/latex/contrib/l3experimental/xcoffins.dtx
+2023/11/01 | 348053 | macros/latex/contrib/l3experimental/l3sys-shell.pdf
+2023/11/01 | 344352 | systems/texlive/tlnet/archive/autotype.doc.r68711.tar.xz
+2023/11/01 | 3434 | macros/latex/base/makeindx.ins
+2023/11/01 | 34333 | macros/latex/required/latex-lab/latex-lab-graphic.dtx
+2023/11/01 | 3401 | macros/latex/base/proc.ins
+2023/11/01 | 33946 | macros/latex/base/ltsect.dtx
+2023/11/01 | 33911 | macros/latex/base/ltnews33.tex
+2023/11/01 | 33863 | macros/latex/required/tools/varioref-2016-02-16.sty
+2023/11/01 | 337852 | macros/latex/base/letter.pdf
+2023/11/01 | 33773 | macros/latex/contrib/l3kernel/l3cctab.dtx
+2023/11/01 | 3372 | macros/latex/base/letter.ins
+2023/11/01 | 3367 | macros/latex/base/ltoutenc.ins
+2023/11/01 | 3338 | macros/latex/base/exscale.ins
+2023/11/01 | 33306 | macros/latex/base/ltproperties.dtx
+2023/11/01 | 33243 | macros/latex/base/ltnews32.tex
+2023/11/01 | 331003 | macros/latex/required/tools/verbatim.pdf
+2023/11/01 | 33083 | macros/latex/base/ltnews37.tex
+2023/11/01 | 3284 | macros/latex/required/tools/manifest.txt
+2023/11/01 | 3282 | macros/latex/base/bugs.txt
+2023/11/01 | 326462 | macros/latex/base/tlc3.pdf
+2023/11/01 | 325191 | macros/latex/base/ltluatex.pdf
+2023/11/01 | 323929 | macros/latex/required/tools/bm.pdf
+2023/11/01 | 32331 | macros/latex/base/ltnews34.tex
+2023/11/01 | 32241 | macros/latex/contrib/l3experimental/l3draw-paths.dtx
+2023/11/01 | 32047 | macros/latex/required/tools/layout.dtx
+2023/11/01 | 31828 | macros/latex/contrib/l3experimental/l3str-format.dtx
+2023/11/01 | 3181 | macros/latex/base/unpack.ins
+2023/11/01 | 318199 | macros/latex/base/inputenc.pdf
+2023/11/01 | 318193 | macros/latex/base/ltnews20.pdf
+2023/11/01 | 318026 | macros/latex/base/ltnews22.pdf
+2023/11/01 | 3179 | macros/latex/required/latex-lab/latex-lab-amsmath.dtx
+2023/11/01 | 31646 | macros/latex/required/tools/multicol-2019-10-01.sty
+2023/11/01 | 313597 | macros/latex/contrib/l3experimental/l3opacity.pdf
+2023/11/01 | 311361 | macros/latex/contrib/profmaquette.zip
+2023/11/01 | 3086 | macros/latex/base/README.md
+2023/11/01 | 308534 | macros/latex/contrib/l3experimental/l3benchmark.pdf
+2023/11/01 | 307812 | macros/latex/required/latex-lab/latex-lab-text.pdf
+2023/11/01 | 3062 | macros/latex/contrib/l3kernel/README.md
+2023/11/01 | 305449 | macros/latex/contrib/l3kernel/l3regex.dtx
+2023/11/01 | 30508 | macros/latex/contrib/l3kernel/l3intarray.dtx
+2023/11/01 | 30499 | macros/latex/base/doc-2021-06-01.sty
+2023/11/01 | 30452 | macros/latex/base/ltnews31.tex
+2023/11/01 | 3033899 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
+2023/11/01 | 30279 | macros/latex/required/tools/showkeys.dtx
+2023/11/01 | 302371 | macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
+2023/11/01 | 301237 | macros/latex/base/lthooks.dtx
+2023/11/01 | 29965 | macros/latex/base/doc-2016-02-15.sty
+2023/11/01 | 299636 | macros/latex/contrib/l3experimental/xgalley.pdf
+2023/11/01 | 298403 | macros/latex/required/latex-lab/latex-lab-testphase.pdf
+2023/11/01 | 29712 | macros/latex/required/tools/multicol-2017-04-11.sty
+2023/11/01 | 296258 | macros/latex/contrib/l3kernel/l3styleguide.pdf
+2023/11/01 | 296124 | macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
+2023/11/01 | 29267 | macros/latex/base/ltfntcmd.dtx
+2023/11/01 | 292600 | macros/latex/base/cmfonts.pdf
+2023/11/01 | 291143 | macros/latex/base/tlc2.pdf
+2023/11/01 | 2896 | macros/latex/base/syntonly.ins
+2023/11/01 | 2893 | macros/latex/base/nfssfont.ins
+2023/11/01 | 2892 | macros/latex/base/graphpap.ins
+2023/11/01 | 2892 | macros/latex/base/fix-cm.ins
+2023/11/01 | 2890 | macros/latex/base/alltt.ins
+2023/11/01 | 2888 | macros/latex/base/ifthen.ins
+2023/11/01 | 2882 | macros/latex/required/latex-lab/latex-lab-namespace.dtx
+2023/11/01 | 287727 | macros/latex/base/fix-cm.pdf
+2023/11/01 | 287013 | macros/latex/required/tools/tabularx.pdf
+2023/11/01 | 286824 | macros/latex/base/ltnews23.pdf
+2023/11/01 | 2843408 | graphics/pstricks/contrib/pst-3dplot.zip
+2023/11/01 | 2822762 | biblio/ctan-bibdata/ctan.bib
+2023/11/01 | 2821 | macros/latex/contrib/l3kernel/l3prefixes.tex
+2023/11/01 | 282095 | macros/latex/base/latexrelease.pdf
+2023/11/01 | 280811 | macros/latex/required/latex-lab/latex-lab-minipage.pdf
+2023/11/01 | 2795407 | install/macros/latex/required/latex-amsmath.tds.zip
+2023/11/01 | 2762551 | macros/latex/required/amsmath.zip
+2023/11/01 | 2745 | macros/latex/contrib/l3build/l3build-unpack.lua
+2023/11/01 | 2744 | macros/latex/required/firstaid/firstaid.ins
+2023/11/01 | 2728 | macros/latex/base/ltpageno.dtx
+2023/11/01 | 272864 | macros/latex/required/latex-lab/latex-lab-firstaid.pdf
+2023/11/01 | 27270 | macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+2023/11/01 | 27122 | macros/latex/base/ltxcheck.tex
+2023/11/01 | 2709 | macros/latex/required/amsmath/README.md
+2023/11/01 | 27069 | macros/latex/base/lterror.dtx
+2023/11/01 | 2705 | macros/latex/base/idx.tex
+2023/11/01 | 268897 | install/macros/latex/required/latex-firstaid.tds.zip
+2023/11/01 | 26638 | macros/latex/required/latex-lab/latex-lab-sec.dtx
+2023/11/01 | 26592 | macros/latex/contrib/l3kernel/l3deprecation.dtx
+2023/11/01 | 265497 | macros/latex/base/ltnews24.pdf
+2023/11/01 | 26449 | graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.dat
+2023/11/01 | 264168 | macros/latex/base/cfgguide.pdf
+2023/11/01 | 264140 | macros/latex/required/firstaid.zip
+2023/11/01 | 263670 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
+2023/11/01 | 26029201 | systems/texlive/tlnet/install-tl.zip
+2023/11/01 | 260278 | macros/latex/required/tools/layout.pdf
+2023/11/01 | 25919 | macros/latex/contrib/l3experimental/l3graphics.dtx
+2023/11/01 | 257825 | macros/latex/base/modguide.pdf
+2023/11/01 | 2576 | macros/latex/required/tools/multicol.ins
+2023/11/01 | 257359 | macros/latex/base/cyrguide.pdf
+2023/11/01 | 257027 | macros/latex/required/tools/xspace.pdf
+2023/11/01 | 2538 | macros/latex/required/tools/longtable.ins
+2023/11/01 | 2538 | macros/latex/required/tools/afterpage.ins
+2023/11/01 | 2535 | macros/latex/required/tools/tabularx.ins
+2023/11/01 | 2531 | macros/latex/required/tools/varioref.ins
+2023/11/01 | 252975 | macros/latex/required/tools/showkeys.pdf
+2023/11/01 | 2524 | macros/latex/required/tools/bm.ins
+2023/11/01 | 252497 | macros/latex/base/lb2.pdf
+2023/11/01 | 25146 | macros/latex/required/tools/trace.dtx
+2023/11/01 | 251283 | macros/latex/base/ltnews27.pdf
+2023/11/01 | 25095 | macros/latex/contrib/l3kernel/source3body.tex
+2023/11/01 | 250159 | macros/latex/contrib/l3kernel/l3news09.pdf
+2023/11/01 | 2482092 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+2023/11/01 | 2473 | macros/latex/contrib/l3build/l3build-help.lua
+2023/11/01 | 2453 | macros/latex/required/latex-lab/latex-lab-mathpkg.dtx
+2023/11/01 | 245228 | macros/latex/base/ltnews21.pdf
+2023/11/01 | 244215 | macros/latex/base/ltxdoc.pdf
+2023/11/01 | 243 | macros/latex/base/ltproperties-doc.tex
+2023/11/01 | 242903 | macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+2023/11/01 | 24286 | macros/latex/base/ltcounts.dtx
+2023/11/01 | 242471 | macros/latex/base/doc.dtx
+2023/11/01 | 241 | macros/latex/base/ltfilehook-doc.tex
+2023/11/01 | 241332 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
+2023/11/01 | 240 | macros/latex/base/ltsockets-doc.tex
+2023/11/01 | 240 | macros/latex/base/ltshipout-doc.tex
+2023/11/01 | 238 | macros/latex/base/ltmarks-doc.tex
+2023/11/01 | 238 | macros/latex/base/lthooks-doc.tex
+2023/11/01 | 238 | macros/latex/base/ltcmdhooks-doc.tex
+2023/11/01 | 2385 | macros/latex/contrib/l3kernel/l3docstrip.dtx
+2023/11/01 | 23813 | macros/latex/contrib/l3kernel/l3luatex.dtx
+2023/11/01 | 23812 | macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
+2023/11/01 | 23646 | macros/latex/base/ltnews30.tex
+2023/11/01 | 23574 | macros/latex/contrib/l3kernel/l3fp-random.dtx
+2023/11/01 | 23516 | macros/latex/base/fix-cm.dtx
+2023/11/01 | 234 | macros/latex/base/ltpara-doc.tex
+2023/11/01 | 234649 | macros/latex/required/latex-lab/latex-lab-namespace.pdf
+2023/11/01 | 234171 | macros/latex/base/slifonts.pdf
+2023/11/01 | 23386 | macros/latex/base/lppl.tex
+2023/11/01 | 23196 | macros/latex/contrib/l3kernel/l3fp-logic.dtx
+2023/11/01 | 230377 | macros/latex/required/amsmath/amsmath.dtx
+2023/11/01 | 22948 | macros/latex/base/ltnews38.tex
+2023/11/01 | 2285 | macros/latex/contrib/l3build/l3build-tagging.lua
+2023/11/01 | 22814 | macros/latex/base/ltxdoc.dtx
+2023/11/01 | 22723 | macros/latex/base/cfgguide.tex
+2023/11/01 | 227065 | macros/latex/base/proc.pdf
+2023/11/01 | 2266 | macros/latex/contrib/l3kernel/source3.tex
+2023/11/01 | 22605 | macros/latex/required/amsmath/diffs-m.txt
+2023/11/01 | 225936 | macros/latex/base/ltnews19.pdf
+2023/11/01 | 223831 | macros/latex/base/alltt.pdf
+2023/11/01 | 222074 | macros/latex/required/tools/trace.pdf
+2023/11/01 | 2219 | macros/latex/required/tools/indentfirst.dtx
+2023/11/01 | 221219 | macros/latex/base/ifthen.pdf
+2023/11/01 | 221038 | macros/latex/required/tools/dcolumn.pdf
+2023/11/01 | 219358 | macros/latex/base/ltx3info.pdf
+2023/11/01 | 21882 | macros/latex/base/ltxref.dtx
+2023/11/01 | 21836 | macros/latex/contrib/l3build/CHANGELOG.md
+2023/11/01 | 218059 | macros/latex/contrib/l3kernel/l3term-glossary.pdf
+2023/11/01 | 217659 | macros/latex/base/lgc2.pdf
+2023/11/01 | 217504 | macros/latex/required/amsmath/amstext.pdf
+2023/11/01 | 215077 | macros/latex/required/tools/enumerate.pdf
+2023/11/01 | 21506 | macros/latex/contrib/profmaquette/doc/TestCANComplement.pdf
+2023/11/01 | 2149 | macros/latex/contrib/l3build/l3build-clean.lua
+2023/11/01 | 21488 | macros/latex/base/ltnews.cls
+2023/11/01 | 21241 | macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+2023/11/01 | 21229 | macros/latex/base/lgc2.err
+2023/11/01 | 211171 | macros/latex/base/nfssfont.pdf
+2023/11/01 | 21037691 | systems/texlive/tlnet/install-tl-windows.exe
+2023/11/01 | 2072 | macros/latex/contrib/l3kernel/interface3.tex
+2023/11/01 | 205100 | macros/latex/base/ltnews25.pdf
+2023/11/01 | 205020 | macros/latex/contrib/l3kernel/l3news12.pdf
+2023/11/01 | 204708 | macros/latex/base/exscale.pdf
+2023/11/01 | 20464 | macros/latex/contrib/l3kernel/l3text-purify.dtx
+2023/11/01 | 20353 | macros/latex/contrib/profmaquette/doc/TestCAN.pdf
+2023/11/01 | 2031084 | systems/texlive/tlnet/archive/kpfonts-otf.doc.r68709.tar.xz
+2023/11/01 | 20268 | macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+2023/11/01 | 20140 | macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
+2023/11/01 | 200759 | macros/latex/base/latexsym.pdf
+2023/11/01 | 19853 | macros/latex/base/ltkeys.dtx
+2023/11/01 | 198100 | macros/latex/required/tools/afterpage.pdf
+2023/11/01 | 19641 | macros/latex/contrib/l3kernel/l3fp-convert.dtx
+2023/11/01 | 19533 | macros/latex/base/ltexpl.dtx
+2023/11/01 | 19447 | macros/latex/required/latex-lab/documentmetadata-support.dtx
+2023/11/01 | 1941 | macros/latex/base/minimal.cls
+2023/11/01 | 19333 | macros/latex/base/ltnews36.tex
+2023/11/01 | 191 | macros/latex/required/latex-lab/documentmetadata-support-doc.tex
+2023/11/01 | 191058 | macros/latex/required/tools/delarray.pdf
+2023/11/01 | 1906 | macros/latex/contrib/l3experimental/l3draw.ins
+2023/11/01 | 19040 | macros/latex/base/lppl.txt
+2023/11/01 | 190255 | macros/latex/base/syntonly.pdf
+2023/11/01 | 189678 | macros/latex/required/tools/hhline.pdf
+2023/11/01 | 18944 | macros/latex/base/ltnews29.tex
+2023/11/01 | 18918 | CTAN.sites
+2023/11/01 | 188281 | macros/latex/required/tools/fileerr.pdf
+2023/11/01 | 18753 | macros/latex/base/ifthen.dtx
+2023/11/01 | 18694 | macros/latex/contrib/l3experimental/l3bitset.dtx
+2023/11/01 | 186367 | macros/latex/required/tools/multicol.dtx
+2023/11/01 | 18532 | macros/latex/contrib/l3kernel/l3fp-round.dtx
+2023/11/01 | 18464 | macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
+2023/11/01 | 18399 | macros/latex/base/nfssfont.dtx
+2023/11/01 | 18315224 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
+2023/11/01 | 183132 | macros/latex/base/ltcmd.dtx
+2023/11/01 | 18299 | macros/latex/base/ltx3info.tex
+2023/11/01 | 182483 | macros/latex/base/ltnews13.pdf
+2023/11/01 | 1816 | macros/latex/contrib/l3build/l3build.1
+2023/11/01 | 179951 | macros/latex/required/amsmath/amscd.pdf
+2023/11/01 | 17901 | macros/latex/contrib/l3kernel/l3pdf.dtx
+2023/11/01 | 17856 | macros/latex/required/tools/xspace.dtx
+2023/11/01 | 178567 | macros/latex/base/ltoutput.dtx
+2023/11/01 | 178193 | macros/latex/required/amsmath/amsgen.pdf
+2023/11/01 | 17782 | macros/latex/base/cyrguide.tex
+2023/11/01 | 1766132 | macros/latex/contrib/l3kernel/interface3.pdf
+2023/11/01 | 176171 | macros/latex/required/tools/shellesc.pdf
+2023/11/01 | 175211 | macros/latex/base/ltnews05.pdf
+2023/11/01 | 174946 | macros/latex/required/amsmath/amsbsy.pdf
+2023/11/01 | 17389 | macros/latex/base/ltbibl.dtx
+2023/11/01 | 173013 | macros/latex/base/tlc2.err
+2023/11/01 | 171396 | macros/latex/base/docstrip.dtx
+2023/11/01 | 170876 | macros/latex/base/lamport-manual.pdf
+2023/11/01 | 170722 | macros/latex/base/ltnews14.pdf
+2023/11/01 | 170451 | macros/latex/required/tools/xr.pdf
+2023/11/01 | 170102 | macros/latex/contrib/l3kernel/l3news11.pdf
+2023/11/01 | 169553 | macros/latex/base/ltnews01.pdf
+2023/11/01 | 1694 | macros/latex/base/small2e.tex
+2023/11/01 | 169433 | macros/latex/base/ltnews10.pdf
+2023/11/01 | 16852 | macros/latex/required/latex-lab/latex-lab-float.dtx
+2023/11/01 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
+2023/11/01 | 167583 | macros/latex/required/tools/somedefs.pdf
+2023/11/01 | 16631 | macros/latex/contrib/l3kernel/l3text-map.dtx
+2023/11/01 | 166269 | macros/latex/base/ltnews17.pdf
+2023/11/01 | 165816 | macros/latex/base/makeindx.pdf
+2023/11/01 | 1651 | macros/latex/required/tools/README.md
+2023/11/01 | 16500 | macros/latex/base/modguide.tex
+2023/11/01 | 16498 | macros/latex/contrib/l3experimental/l3benchmark.dtx
+2023/11/01 | 163484 | macros/latex/contrib/l3kernel/l3news08.pdf
+2023/11/01 | 162773 | macros/latex/base/tulm.pdf
+2023/11/01 | 1624 | macros/latex/contrib/l3experimental/xgalley.ins
+2023/11/01 | 161722 | macros/latex/base/graphpap.pdf
+2023/11/01 | 157376 | macros/latex/contrib/l3kernel/l3doc.dtx
+2023/11/01 | 157352 | macros/latex/required/tools/indentfirst.pdf
+2023/11/01 | 15703 | macros/latex/base/slifonts.fdd
+2023/11/01 | 1569 | macros/latex/contrib/l3experimental/xcoffins.ins
+2023/11/01 | 156764 | macros/latex/base/ltnews12.pdf
+2023/11/01 | 1565 | macros/latex/contrib/l3experimental/l3sys-shell.ins
+2023/11/01 | 1565 | macros/latex/contrib/l3experimental/l3bitset.ins
+2023/11/01 | 1564 | macros/latex/contrib/l3experimental/l3str.ins
+2023/11/01 | 156238 | macros/latex/base/classes.dtx
+2023/11/01 | 1558 | macros/latex/contrib/l3experimental/l3benchmark.ins
+2023/11/01 | 155442 | macros/latex/base/ltnews08.pdf
+2023/11/01 | 1553 | macros/latex/contrib/l3experimental/l3graphics.ins
+2023/11/01 | 1547 | macros/latex/contrib/l3experimental/l3opacity.ins
+2023/11/01 | 15431 | macros/latex/base/source2e.tex
+2023/11/01 | 1540 | macros/latex/contrib/l3build/l3build.ins
+2023/11/01 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
+2023/11/01 | 15346 | macros/latex/base/ltvers.dtx
+2023/11/01 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
+2023/11/01 | 152551 | macros/latex/base/ltnews04.pdf
+2023/11/01 | 151773 | macros/latex/base/ltnews02.pdf
+2023/11/01 | 151750 | macros/latex/contrib/l3kernel/l3docstrip.pdf
+2023/11/01 | 151591 | macros/latex/contrib/l3kernel/l3news06.pdf
+2023/11/01 | 151324 | macros/latex/base/ltnews03.pdf
+2023/11/01 | 150919 | macros/latex/contrib/l3kernel/l3news02.pdf
+2023/11/01 | 1505 | macros/latex/required/amsmath/amsbsy.ins
+2023/11/01 | 1504 | macros/latex/required/amsmath/amsmath.ins
+2023/11/01 | 15047 | macros/latex/base/ltnews28.tex
+2023/11/01 | 150302 | macros/latex/contrib/l3kernel/l3news10.pdf
+2023/11/01 | 1492 | macros/latex/required/amsmath/amsxtra.ins
+2023/11/01 | 1492 | macros/latex/required/amsmath/amstext.ins
+2023/11/01 | 14913 | macros/latex/contrib/l3kernel/l3news12.tex
+2023/11/01 | 1490 | macros/latex/required/amsmath/amsopn.ins
+2023/11/01 | 1487 | macros/latex/required/amsmath/amscd.ins
+2023/11/01 | 148747 | macros/latex/contrib/l3kernel/l3news03.pdf
+2023/11/01 | 1484 | macros/latex/required/amsmath/amsgen.ins
+2023/11/01 | 148294 | macros/latex/base/ltoutenc.dtx
+2023/11/01 | 148194 | macros/latex/contrib/l3kernel/l3tl.dtx
+2023/11/01 | 147459 | macros/latex/required/amsmath/technote.pdf
+2023/11/01 | 146438 | macros/latex/required/tools/fontsmpl.pdf
+2023/11/01 | 146199 | macros/latex/base/webcomp.pdf
+2023/11/01 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
+2023/11/01 | 1458288 | systems/texlive/tlnet/archive/tex4ht.source.r68712.tar.xz
+2023/11/01 | 145334 | macros/latex/base/ltclass.dtx
+2023/11/01 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+2023/11/01 | 14421 | macros/latex/base/lppl-1-2.txt
+2023/11/01 | 144121 | macros/latex/contrib/l3kernel/l3file.dtx
+2023/11/01 | 14341 | macros/latex/base/lppl-1-1.txt
+2023/11/01 | 142867 | macros/latex/base/ltnews06.pdf
+2023/11/01 | 14184442 | install/macros/latex/contrib/l3kernel.tds.zip
+2023/11/01 | 14091 | macros/latex/base/ltpage.dtx
+2023/11/01 | 14075 | macros/latex/required/tools/afterpage.dtx
+2023/11/01 | 14027 | macros/latex/required/latex-lab/latex-lab-bib.dtx
+2023/11/01 | 140093 | macros/latex/required/amsmath/amsopn.pdf
+2023/11/01 | 13919369 | macros/latex/contrib/l3kernel.zip
+2023/11/01 | 138956 | macros/latex/required/tools/rawfonts.pdf
+2023/11/01 | 138214 | macros/latex/base/ltnews07.pdf
+2023/11/01 | 138107 | macros/latex/base/ltnews16.pdf
+2023/11/01 | 13759 | macros/latex/base/lamport-manual.err
+2023/11/01 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r68712.tar.xz
+2023/11/01 | 1360 | macros/latex/contrib/l3experimental/l3draw-code.tex
+2023/11/01 | 136080 | macros/latex/contrib/l3kernel/l3basics.dtx
+2023/11/01 | 1360066 | macros/latex/base/ltnews.pdf
+2023/11/01 | 13589 | macros/latex/base/proc.dtx
+2023/11/01 | 135159 | macros/latex/required/latex-lab/latex-lab-block.dtx
+2023/11/01 | 13442 | macros/latex/required/amsmath/amsgen.dtx
+2023/11/01 | 1341 | macros/latex/base/ltnews18.tex
+2023/11/01 | 132370 | macros/latex/base/lppl.pdf
+2023/11/01 | 13211 | macros/latex/contrib/l3build/l3build-upload.lua
+2023/11/01 | 1318576 | macros/latex/base/encguide.pdf
+2023/11/01 | 130328 | macros/latex/base/ltnews15.pdf
+2023/11/01 | 130028 | macros/latex/base/ltnews09.pdf
+2023/11/01 | 129900 | macros/latex/contrib/l3kernel/l3keys.dtx
+2023/11/01 | 12949 | macros/latex/contrib/l3kernel/l3bootstrap.dtx
+2023/11/01 | 128520 | macros/latex/required/tools/array.dtx
+2023/11/01 | 128344 | macros/latex/contrib/l3kernel/l3news07.pdf
+2023/11/01 | 12805 | macros/latex/required/latex-lab/latex-lab-toc.dtx
+2023/11/01 | 1279 | macros/latex/base/legal.txt
+2023/11/01 | 12767 | macros/latex/contrib/l3kernel/l3fp-traps.dtx
+2023/11/01 | 12706 | macros/latex/required/tools/dcolumn.dtx
+2023/11/01 | 12611 | macros/latex/contrib/l3build/l3build-file-functions.lua
+2023/11/01 | 1258628 | macros/latex/base/lthooks-code.pdf
+2023/11/01 | 12559 | macros/latex/required/tools/array-2020-02-10.sty
+2023/11/01 | 12520 | macros/latex/base/testpage.tex
+2023/11/01 | 12361 | macros/latex/contrib/l3experimental/l3sys-shell.dtx
+2023/11/01 | 12334 | macros/latex/base/ltnews24.tex
+2023/11/01 | 122959 | macros/latex/contrib/l3kernel/l3news01.pdf
+2023/11/01 | 12246 | macros/latex/base/tulm.fdd
+2023/11/01 | 121564 | macros/latex/contrib/l3kernel/l3token.dtx
+2023/11/01 | 12136 | macros/latex/contrib/l3kernel/l3tl-build.dtx
+2023/11/01 | 12133 | macros/latex/required/tools/longtable-2020-01-07.sty
+2023/11/01 | 12005 | macros/latex/required/amsmath/technote.tex
+2023/11/01 | 11884 | macros/latex/contrib/l3kernel/l3styleguide.tex
+2023/11/01 | 117 | macros/latex/required/latex-lab/documentmetadata-support-code.tex
+2023/11/01 | 11781 | macros/latex/contrib/l3kernel/l3fparray.dtx
+2023/11/01 | 11749 | macros/latex/required/tools/array-2016-10-06.sty
+2023/11/01 | 114754 | macros/latex/contrib/l3kernel/l3news04.pdf
+2023/11/01 | 11463 | macros/latex/base/manifest.txt
+2023/11/01 | 11455452 | install/macros/latex/required/latex-lab.tds.zip
+2023/11/01 | 114350 | macros/latex/required/tools/varioref.dtx
+2023/11/01 | 1142 | macros/latex/required/latex-lab/README.md
+2023/11/01 | 114096 | systems/texlive/tlnet/archive/texlive-scripts.r68708.tar.xz
+2023/11/01 | 11398 | macros/latex/required/amsmath/amstext.dtx
+2023/11/01 | 11370239 | macros/latex/required/latex-lab.zip
+2023/11/01 | 113560 | macros/latex/required/amsmath/amsxtra.pdf
+2023/11/01 | 113435 | macros/latex/contrib/l3kernel/l3str-convert.dtx
+2023/11/01 | 113393 | macros/latex/contrib/l3build/l3build.dtx
+2023/11/01 | 11284 | macros/latex/required/amsmath/amscd.dtx
+2023/11/01 | 112524 | macros/latex/contrib/l3kernel/l3news05.pdf
+2023/11/01 | 112275 | macros/latex/contrib/l3kernel/l3color.dtx
+2023/11/01 | 112208 | macros/latex/base/ltnews11.pdf
+2023/11/01 | 11148 | macros/latex/required/tools/hhline.dtx
+2023/11/01 | 1112096 | systems/texlive/tlnet/archive/kpfonts-otf.r68709.tar.xz
+2023/11/01 | 11105 | macros/latex/contrib/l3build/l3build-install.lua
+2023/11/01 | 1104056 | systems/texlive/tlnet/archive/tex4ht.r68712.tar.xz
+2023/11/01 | 109733 | macros/latex/required/amsmath/subeqn.pdf
+2023/11/01 | 108 | macros/latex/required/latex-lab/blocks-code.tex
+2023/11/01 | 108248 | macros/latex/base/fntguide.tex
+2023/11/01 | 107 | macros/latex/base/ltproperties-code.tex
+2023/11/01 | 10798 | macros/latex/base/ltnews26.tex
+2023/11/01 | 10792 | macros/latex/base/ltnews22.tex
+2023/11/01 | 10791 | macros/latex/base/ltnews23.tex
+2023/11/01 | 10786 | macros/latex/contrib/l3build/l3build-manifest-setup.lua
+2023/11/01 | 10771 | macros/latex/required/tools/fontsmpl.dtx
+2023/11/01 | 1075915 | macros/latex/base/doc-code.pdf
+2023/11/01 | 107383 | macros/latex/contrib/l3kernel/l3news09.tex
+2023/11/01 | 106904 | macros/latex/base/inputenc.dtx
+2023/11/01 | 10637 | macros/latex/required/tools/enumerate.dtx
+2023/11/01 | 10601 | macros/latex/base/makeindx.dtx
+2023/11/01 | 105 | macros/latex/required/latex-lab/blocks-doc.tex
+2023/11/01 | 105 | macros/latex/base/ltfilehook-code.tex
+2023/11/01 | 105991 | macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+2023/11/01 | 105012 | macros/latex/contrib/l3kernel/l3fp-parse.dtx
+2023/11/01 | 104 | macros/latex/base/ltsockets-code.tex
+2023/11/01 | 104 | macros/latex/base/ltshipout-code.tex
+2023/11/01 | 104792 | macros/latex/required/amsmath/amsldoc.tex
+2023/11/01 | 103 | macros/latex/base/ltcmdhooks-code.tex
+2023/11/01 | 10370 | macros/latex/base/ltfsscmp.dtx
+2023/11/01 | 10328 | macros/latex/contrib/l3kernel/l3flag.dtx
+2023/11/01 | 102 | macros/latex/base/ltmarks-code.tex
+2023/11/01 | 102 | macros/latex/base/lthooks-code.tex
+2023/11/01 | 10251 | macros/latex/base/webcomp.err
+2023/11/01 | 1019 | macros/latex/contrib/l3build/README.md
+2023/11/01 | 10199 | macros/latex/required/amsmath/amsopn.dtx
+2023/11/01 | 10138 | macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+2023/11/01 | 10018 | macros/latex/contrib/l3experimental/l3draw-scopes.dtx
2023/10/31 | 992 | macros/xetex/latex/quran-id/doc/quran-id-test.tex
2023/10/31 | 96368 | systems/texlive/tlnet/archive/pgfornament-han.r68704.tar.xz
2023/10/31 | 960368 | systems/texlive/tlnet/archive/newtx.doc.r68703.tar.xz
@@ -26,19 +730,14 @@
2023/10/31 | 7495528 | systems/texlive/tlnet/archive/pstricks.doc.r68705.tar.xz
2023/10/31 | 73552 | systems/texlive/tlnet/archive/cweb.doc.r68702.tar.xz
2023/10/31 | 6691 | macros/xetex/latex/quran-id/doc/quran-id-doc.tex
+2023/10/31 | 622587 | support/TeX4ht/source/tex4ht-html4.tex
2023/10/31 | 6058312 | systems/texlive/tlnet/archive/newtx.r68703.tar.xz
2023/10/31 | 5766 | macros/latex/contrib/hyperref/xr-hyper.sty
-2023/10/31 | 5741006 | systems/texlive/tlnet/install-tl-unx.tar.gz
2023/10/31 | 525392 | macros/latex/contrib/hyperref/doc/hyperref-doc.html
2023/10/31 | 5079 | macros/latex/contrib/coloredbelts/tex/coloredbelts.sty
2023/10/31 | 50695 | macros/latex/contrib/hyperref/hluatex.dtx
2023/10/31 | 5024 | macros/latex/contrib/hyperref/hyperref.ins
2023/10/31 | 49568 | fonts/kpfonts-otf/fonts/KpMono-Italic.otf
-2023/10/31 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
-2023/10/31 | 488 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl.zip.sha512.asc
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc
-2023/10/31 | 488 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc
2023/10/31 | 48260 | fonts/kpfonts-otf/fonts/KpMono-BoldItalic.otf
2023/10/31 | 480 | fonts/kpfonts-otf/tex/KpLight.fontspec
2023/10/31 | 469 | fonts/kpfonts-otf/tex/KpRoman.fontspec
@@ -48,15 +747,12 @@
2023/10/31 | 440050 | macros/latex/contrib/hyperref/doc/hyperref-linktarget.pdf
2023/10/31 | 4382954 | fonts/kpfonts-otf.zip
2023/10/31 | 4300186 | macros/latex/contrib/hyperref.zip
-2023/10/31 | 428452 | systems/texlive/tlnet/archive/texlive-scripts.doc.r68698.tar.xz
2023/10/31 | 425332 | fonts/kpfonts-otf/fonts/KpMath-Regular.otf
2023/10/31 | 42248 | fonts/kpfonts-otf/fonts/KpMono-Regular.otf
-2023/10/31 | 4124615 | biblio/ctan-bibdata.zip
2023/10/31 | 41096 | fonts/kpfonts-otf/fonts/KpMono-Bold.otf
2023/10/31 | 3891912 | systems/texlive/tlnet/archive/luajittex.windows.r68699.tar.xz
2023/10/31 | 384001 | macros/latex/contrib/hyperref/doc/slides.pdf
2023/10/31 | 37768 | macros/xetex/latex/quran-id/doc/quran-id-test.pdf
-2023/10/31 | 3721147 | biblio/ctan-bibdata/ctan.pdf
2023/10/31 | 35903 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.ltx
2023/10/31 | 33476 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.ltx
2023/10/31 | 317671 | macros/latex/contrib/hyperref/doc/hyperref-doc.pdf
@@ -66,19 +762,16 @@
2023/10/31 | 28789 | macros/latex/contrib/hyperref/nameref.dtx
2023/10/31 | 28694 | macros/latex/contrib/hyperref/backref.dtx
2023/10/31 | 284 | macros/latex/contrib/hyperref/ntheorem-hyper.sty
-2023/10/31 | 2821235 | biblio/ctan-bibdata/ctan.bib
2023/10/31 | 280 | macros/latex/contrib/hyperref/minitoc-hyper.sty
2023/10/31 | 26680 | systems/texlive/tlnet/archive/cweb.r68702.tar.xz
-2023/10/31 | 26029201 | systems/texlive/tlnet/install-tl.zip
2023/10/31 | 257264 | fonts/kpfonts-otf/fonts/KpMath-Semibold.otf
-2023/10/31 | 2482368 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
2023/10/31 | 247116 | macros/latex/contrib/hyperref/paperslides99.zip
2023/10/31 | 240630 | macros/latex/contrib/proflycee/doc/proflycee-docctan.zip
+2023/10/31 | 235605 | support/TeX4ht/source/ChangeLog
2023/10/31 | 2347765 | macros/latex/contrib/hyperref/doc/hyperref.pdf
2023/10/31 | 233864 | fonts/kpfonts-otf/fonts/KpMath-Bold.otf
2023/10/31 | 231 | fonts/kpfonts-otf/tex/KpSans.fontspec
2023/10/31 | 2263593 | macros/luatex/latex/autotype.zip
-2023/10/31 | 21037691 | systems/texlive/tlnet/install-tl-windows.exe
2023/10/31 | 2079928 | systems/texlive/tlnet/archive/luatex.windows.r68699.tar.xz
2023/10/31 | 206681 | macros/latex/contrib/hyperref/doc/backref.pdf
2023/10/31 | 20068 | fonts/kpfonts-otf/tex/kpfonts-otf.sty
@@ -90,19 +783,13 @@
2023/10/31 | 185 | fonts/kpfonts-otf/tex/KpMono.fontspec
2023/10/31 | 184798 | macros/latex/contrib/hyperref/doc/nameref.pdf
2023/10/31 | 1834074 | fonts/kpfonts-otf/doc/unimath-kpfonts.pdf
-2023/10/31 | 18312097 | systems/texlive/tlnet/tlpkg/texlive.tlpdb
2023/10/31 | 180195 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-French.pdf
2023/10/31 | 176956 | systems/texlive/tlnet/archive/circuitikz.r68706.tar.xz
2023/10/31 | 176761 | fonts/kpfonts-otf/doc/Kpfonts-OTF-Doc-English.pdf
2023/10/31 | 1726073 | macros/latex/contrib/proflycee.zip
2023/10/31 | 171497 | macros/latex/contrib/hyperref/doc/hyperref-doc.tex
2023/10/31 | 16806 | fonts/kpfonts-otf/doc/unimath-kpfonts.ltx
-2023/10/31 | 1678 | biblio/ctan-bibdata/biblatex-ctan/ctan.bbx
2023/10/31 | 15673 | macros/latex/contrib/hyperref/doc/hyperref-doc.css
-2023/10/31 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512
-2023/10/31 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512
-2023/10/31 | 145 | systems/texlive/tlnet/install-tl.zip.sha512
-2023/10/31 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
2023/10/31 | 1441530 | macros/xetex/latex/quran-id/tex/qurantext-idi.translation.def
2023/10/31 | 1350376 | systems/texlive/tlnet/archive/pgfornament-han.doc.r68704.tar.xz
2023/10/31 | 132446 | macros/latex/contrib/hyperref/doc/paper.pdf
@@ -111,17 +798,16 @@
2023/10/31 | 125755 | macros/latex/contrib/hyperref/ChangeLog.txt
2023/10/31 | 124228 | fonts/kpfonts-otf/fonts/KpRoman-SemiboldItalic.otf
2023/10/31 | 117168 | fonts/kpfonts-otf/fonts/KpRoman-Italic.otf
+2023/10/31 | 1168422 | support/TeX4ht/source/tex4ht-4ht.tex
2023/10/31 | 116696 | fonts/kpfonts-otf/fonts/KpRoman-LightItalic.otf
2023/10/31 | 116612 | fonts/kpfonts-otf/fonts/KpRoman-Bold.otf
2023/10/31 | 114500 | fonts/kpfonts-otf/fonts/KpRoman-Regular.otf
-2023/10/31 | 114096 | systems/texlive/tlnet/archive/texlive-scripts.r68698.tar.xz
2023/10/31 | 114088 | fonts/kpfonts-otf/fonts/KpRoman-Light.otf
2023/10/31 | 113644 | fonts/kpfonts-otf/fonts/KpRoman-Semibold.otf
2023/10/31 | 1030 | macros/latex/contrib/hyperref/doc/hyperref-doc4.html
2023/10/31 | 10297 | fonts/kpfonts-otf/README.md
2023/10/31 | 1018882 | macros/latex/contrib/coloredbelts.zip
2023/10/30 | 98838 | graphics/pstricks/base/doc/pst-news23.pdf
-2023/10/30 | 9637027 | fonts/newtx.zip
2023/10/30 | 9625 | graphics/pgf/contrib/pgfornament-han/han/han65.pgf
2023/10/30 | 943100 | systems/texlive/tlnet/archive/etoc.doc.r68691.tar.xz
2023/10/30 | 9382 | graphics/pgf/contrib/pgfornament-han/han/han75.pgf
@@ -174,7 +860,6 @@
2023/10/30 | 4818 | graphics/pstricks/base/README
2023/10/30 | 474 | graphics/pgf/contrib/pgfornament-han/han/han34.pgf
2023/10/30 | 471 | graphics/pgf/contrib/pgfornament-han/han/han23.pgf
-2023/10/30 | 46188 | fonts/newtx/README
2023/10/30 | 458 | graphics/pgf/contrib/pgfornament-han/han/han18.pgf
2023/10/30 | 454 | graphics/pgf/contrib/pgfornament-han/han/han47.pgf
2023/10/30 | 4531 | graphics/pstricks/base/doc/pst-news23.tex
@@ -235,7 +920,6 @@
2023/10/30 | 18797 | graphics/pgf/contrib/pgfornament-han/han/han52.pgf
2023/10/30 | 1850 | fonts/newtx/tex/ot1ntxinf.fd
2023/10/30 | 1850927 | graphics/pgf/contrib/pgfornament-han.zip
-2023/10/30 | 17792 | CTAN.sites
2023/10/30 | 17766 | macros/luatex/latex/autotype/autotype-pdnm_nl_manipulation.lua
2023/10/30 | 1764 | graphics/pgf/contrib/pgfornament-han/han/han4.pgf
2023/10/30 | 1736 | graphics/pgf/contrib/pgfornament-han/han/han74.pgf
@@ -396,10 +1080,7 @@
2023/10/28 | 18618 | biblio/bibtex/contrib/francais-bst/francaissc.dbj
2023/10/28 | 18612 | biblio/bibtex/contrib/francais-bst/francais.dbj
2023/10/28 | 1466 | biblio/bibtex/contrib/francais-bst/francais-bst.ins
-2023/10/28 | 1458488 | systems/texlive/tlnet/archive/tex4ht.source.r68679.tar.xz
-2023/10/28 | 136384 | systems/texlive/tlnet/archive/tex4ht.doc.r68679.tar.xz
2023/10/28 | 132498 | install/biblio/bibtex/contrib/francais-bst.tds.zip
-2023/10/28 | 1104088 | systems/texlive/tlnet/archive/tex4ht.r68679.tar.xz
2023/10/28 | 102301 | macros/latex/contrib/exesheet/exesheet.dtx
2023/10/28 | 1004 | systems/texlive/tlnet/archive/collection-plaingeneric.r68675.tar.xz
2023/10/27 | 950 | macros/latex/contrib/tagpdf/ex-formula-problem.tex
@@ -456,7 +1137,6 @@
2023/10/27 | 24559 | fonts/newpx/tex/newpxtext.sty
2023/10/27 | 243464 | systems/texlive/tlnet/archive/xcharter-math.r68658.tar.xz
2023/10/27 | 2400915 | macros/latex/contrib/tagpdf.zip
-2023/10/27 | 235347 | support/TeX4ht/source/ChangeLog
2023/10/27 | 23381 | macros/latex/contrib/tagpdf/tagpdf.dtx
2023/10/27 | 23311 | macros/latex/contrib/tagpdf/acrobat.png
2023/10/27 | 2278 | macros/latex/contrib/tagpdf/tagpdf-code.tex
@@ -520,7 +1200,6 @@
2023/10/26 | 870212 | systems/win32/miktex/tm/packages/yet-another-guide-latex2e.tar.lzma
2023/10/26 | 85821 | systems/win32/miktex/tm/packages/hvlogos__doc.tar.lzma
2023/10/26 | 855221 | systems/win32/miktex/tm/packages/babel__source.tar.lzma
-2023/10/26 | 854604 | systems/texlive/tlnet/archive/babel.source.r68651.tar.xz
2023/10/26 | 8472 | systems/win32/miktex/tm/packages/advice__doc.tar.lzma
2023/10/26 | 8449 | systems/win32/miktex/tm/packages/customenvs__source.tar.lzma
2023/10/26 | 8379 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-presentation.tex
@@ -531,7 +1210,6 @@
2023/10/26 | 82036 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma
2023/10/26 | 81677 | systems/win32/miktex/tm/packages/tkz-euclide__source.tar.lzma
2023/10/26 | 81615 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma
-2023/10/26 | 8080 | systems/texlive/tlnet/archive/advice.doc.r68648.tar.xz
2023/10/26 | 8032 | systems/win32/miktex/tm/packages/outilsgeomtikz__source.tar.lzma
2023/10/26 | 78356 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma
2023/10/26 | 7814 | macros/latex/contrib/tkz/tkz-euclide/doc/latex/TKZdoc-euclide-main.tex
@@ -552,7 +1230,6 @@
2023/10/26 | 7152 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/README.md
2023/10/26 | 707322 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma
2023/10/26 | 699884 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma
-2023/10/26 | 6988 | systems/texlive/tlnet/archive/collection-latexextra.r68643.tar.xz
2023/10/26 | 6988 | fonts/xcharter-math/xcharter-otf.sty
2023/10/26 | 69655 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma
2023/10/26 | 6892 | macros/latex/contrib/coloredbelts/tex/judobelt-brown.pdf
@@ -589,7 +1266,6 @@
2023/10/26 | 61073 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma
2023/10/26 | 609014 | systems/win32/miktex/tm/packages/l3kernel__source.tar.lzma
2023/10/26 | 606688 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma
-2023/10/26 | 60580 | systems/texlive/tlnet/archive/ctanbib.doc.r68650.tar.xz
2023/10/26 | 603434 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma
2023/10/26 | 6017 | systems/win32/miktex/tm/packages/unbtex__source.tar.lzma
2023/10/26 | 59678 | macros/latex/contrib/cje.zip
@@ -625,7 +1301,6 @@
2023/10/26 | 4845 | systems/win32/miktex/tm/packages/indextools.tar.lzma
2023/10/26 | 48287 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma
2023/10/26 | 4772894 | systems/win32/miktex/tm/packages/newpx.tar.lzma
-2023/10/26 | 4764 | systems/texlive/tlnet/archive/advice.r68648.tar.xz
2023/10/26 | 4740 | systems/win32/miktex/tm/packages/customenvs.tar.lzma
2023/10/26 | 47356 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma
2023/10/26 | 473173 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma
@@ -644,7 +1319,6 @@
2023/10/26 | 43113 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma
2023/10/26 | 42761 | systems/win32/miktex/tm/packages/proflycee.tar.lzma
2023/10/26 | 4256 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/demo/demo-arguelles.tex
-2023/10/26 | 42412 | systems/texlive/tlnet/archive/proflycee.r68649.tar.xz
2023/10/26 | 4237 | macros/latex/contrib/physics2/physics2.ins
2023/10/26 | 42215 | systems/win32/miktex/tm/packages/tkz-euclide.tar.lzma
2023/10/26 | 421125 | macros/latex/contrib/tkz/tkz-elements/doc/tkz-elements.pdf
@@ -672,7 +1346,6 @@
2023/10/26 | 35991 | macros/latex/contrib/hypdoc/hypdoc.dtx
2023/10/26 | 35354 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma
2023/10/26 | 351879 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma
-2023/10/26 | 3508 | systems/texlive/tlnet/archive/ctanbib.r68650.tar.xz
2023/10/26 | 3497 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-base.tex
2023/10/26 | 3496 | macros/latex/contrib/tkz/tkz-euclide/latex/tools-lua/tkz-tools-eu-lua-base.tex
2023/10/26 | 3473 | macros/latex/contrib/tkz/tkz-euclide/latex/obj/tkz-obj-eu-grids.tex
@@ -708,7 +1381,6 @@
2023/10/26 | 2916835 | systems/win32/miktex/tm/packages/isosafety.tar.lzma
2023/10/26 | 291515 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma
2023/10/26 | 29147 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma
-2023/10/26 | 2898480 | systems/texlive/tlnet/archive/isosafety.r68643.tar.xz
2023/10/26 | 2879 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerthemeArguelles.sty
2023/10/26 | 287536 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma
2023/10/26 | 2863626 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles.zip
@@ -746,7 +1418,6 @@
2023/10/26 | 2268 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-colors.tex
2023/10/26 | 225946 | systems/win32/miktex/tm/packages/tikz-osci__doc.tar.lzma
2023/10/26 | 22499 | systems/win32/miktex/tm/packages/indextools__source.tar.lzma
-2023/10/26 | 222588 | systems/texlive/tlnet/archive/babel.r68651.tar.xz
2023/10/26 | 221543 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma
2023/10/26 | 219047 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma
2023/10/26 | 2180 | macros/latex/contrib/tkz/tkz-elements/README.md
@@ -754,7 +1425,6 @@
2023/10/26 | 21762 | macros/latex/contrib/physics2/physics2.tex
2023/10/26 | 217404 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma
2023/10/26 | 21718 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-angles.tex
-2023/10/26 | 2120 | systems/texlive/tlnet/archive/isosafety.source.r68643.tar.xz
2023/10/26 | 21021 | macros/latex/contrib/physics2/physics2-legacy.tex
2023/10/26 | 20951 | systems/win32/miktex/tm/packages/newpx__source.tar.lzma
2023/10/26 | 2079493 | systems/win32/miktex/tm/packages/nicematrix__doc.tar.lzma
@@ -786,7 +1456,6 @@
2023/10/26 | 174145 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma
2023/10/26 | 173615 | systems/win32/miktex/tm/packages/recorder-fingering__doc.tar.lzma
2023/10/26 | 1734543 | systems/win32/miktex/tm/packages/csvsimple__doc.tar.lzma
-2023/10/26 | 17278 | fonts/newpx/doc/footsnippet-crop.pdf
2023/10/26 | 17127 | fonts/xcharter-math/unimath-xcharter.ltx
2023/10/26 | 171092 | systems/win32/miktex/tm/packages/nicematrix__source.tar.lzma
2023/10/26 | 1691108 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma
@@ -794,7 +1463,6 @@
2023/10/26 | 16696 | systems/win32/miktex/tm/packages/profmaquette.tar.lzma
2023/10/26 | 16493 | systems/win32/miktex/tm/packages/jourrr__source.tar.lzma
2023/10/26 | 16457 | systems/win32/miktex/tm/packages/l3backend.tar.lzma
-2023/10/26 | 1637092 | systems/texlive/tlnet/archive/proflycee.doc.r68649.tar.xz
2023/10/26 | 1636143 | systems/win32/miktex/tm/packages/newcomputermodern__doc.tar.lzma
2023/10/26 | 159906 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma
2023/10/26 | 15752 | systems/win32/miktex/tm/packages/minim-pdf.tar.lzma
@@ -815,14 +1483,12 @@
2023/10/26 | 13662 | systems/win32/miktex/tm/packages/advice__source.tar.lzma
2023/10/26 | 1363091 | macros/latex/contrib/proflycee/doc/ProfLycee-doc.pdf
2023/10/26 | 1340838 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma
-2023/10/26 | 13220 | systems/texlive/tlnet/archive/advice.source.r68648.tar.xz
2023/10/26 | 1309430 | macros/latex/contrib/tkz/tkz-euclide.zip
2023/10/26 | 12913 | systems/win32/miktex/tm/packages/minimalist.tar.lzma
2023/10/26 | 12900 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-ellipse.tex
2023/10/26 | 12765157 | systems/win32/miktex/tm/packages/newcomputermodern__source.tar.lzma
2023/10/26 | 1274766 | systems/win32/miktex/tm/packages/asmejour__source.tar.lzma
2023/10/26 | 126789 | systems/win32/miktex/tm/packages/isosafety__doc.tar.lzma
-2023/10/26 | 126360 | systems/texlive/tlnet/archive/isosafety.doc.r68643.tar.xz
2023/10/26 | 1224 | macros/latex/contrib/tkz/tkz-euclide/latex/tools/tkz-tools-eu-BB.tex
2023/10/26 | 12163 | macros/latex/contrib/tkz/tkz-euclide/README.md
2023/10/26 | 12163 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-sectors.tex
@@ -851,62 +1517,6 @@
2023/10/26 | 103568 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma
2023/10/26 | 1032 | macros/latex/contrib/beamer-contrib/themes/beamertheme-arguelles/beamerfontthemeArguelles.sty
2023/10/26 | 1031990 | systems/win32/miktex/tm/packages/babel__doc.tar.lzma
-2023/10/26 | 1031432 | systems/texlive/tlnet/archive/babel.doc.r68651.tar.xz
2023/10/26 | 1022 | macros/latex/contrib/physics2/README.md
2023/10/26 | 10203 | macros/latex/contrib/tkz/tkz-euclide/latex/drawings/tkz-draw-eu-lines.tex
2023/10/26 | 10183 | systems/win32/miktex/tm/packages/profmaquette__source.tar.lzma
-2023/10/25 | 97636 | macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
-2023/10/25 | 9715 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-intersection.tex
-2023/10/25 | 9679 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-misc.tex
-2023/10/25 | 9398 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-triangle.tex
-2023/10/25 | 907 | macros/generic/advice/README.md
-2023/10/25 | 8905 | macros/latex/required/babel/base/babel.ins
-2023/10/25 | 8278 | support/ctanbib/ctanbib
-2023/10/25 | 7832 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-point.tex
-2023/10/25 | 782577 | macros/latex/required/babel/base/babel.dtx
-2023/10/25 | 7643 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-circle.tex
-2023/10/25 | 7613 | macros/latex/contrib/tkz/tkz-elements/examples/tkz-elements-demo_2.pdf
-2023/10/25 | 756 | macros/latex/contrib/profmaquette/doc/TestParcoursPerso.tex
-2023/10/25 | 723 | support/ctanbib/README.md
-2023/10/25 | 7224 | support/ctanbib/ctanbib-doc.tex
-2023/10/25 | 635805 | macros/latex/required/babel/base/babel-code.pdf
-2023/10/25 | 622581 | support/TeX4ht/source/tex4ht-html4.tex
-2023/10/25 | 5478 | macros/latex/contrib/cje/cjetemplate.tex
-2023/10/25 | 48789 | macros/latex/contrib/cje/cjeguide.tex
-2023/10/25 | 48503 | macros/latex/contrib/cje/cje.cls
-2023/10/25 | 47307 | macros/generic/advice/advice.edtx
-2023/10/25 | 46854 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
-2023/10/25 | 46594 | support/ctanbib.zip
-2023/10/25 | 45552 | macros/latex/contrib/cje/ageingbib.bib
-2023/10/25 | 4305 | macros/latex/contrib/tkz/tkz-elements/latex/tkz_elements_point.lua
-2023/10/25 | 413338 | macros/latex/required/babel/base/babel.pdf
-2023/10/25 | 4111 | macros/latex/contrib/cje/cjeupmath.sty
-2023/10/25 | 39862 | support/ctanbib/ctanbib-doc.pdf
-2023/10/25 | 39145 | install/macros/generic/advice.tds.zip
-2023/10/25 | 35891 | macros/latex/contrib/cje/cjenatbib.sty
-2023/10/25 | 3584572 | install/macros/latex/required/babel-base.tds.zip
-2023/10/25 | 3526 | macros/latex/required/babel/base/bbidxglo.dtx
-2023/10/25 | 31238 | macros/latex/contrib/cje/cjebibstyle.bst
-2023/10/25 | 2663 | macros/latex/contrib/cje/README.txt
-2023/10/25 | 2359 | macros/latex/contrib/tkz/tkz-elements/examples/tkz-elements-demo_3.tex
-2023/10/25 | 23546 | macros/generic/advice.zip
-2023/10/25 | 234237 | macros/latex/contrib/profmaquette.zip
-2023/10/25 | 2288392 | macros/latex/required/babel/base.zip
-2023/10/25 | 2248 | macros/latex/contrib/tkz/tkz-elements/examples/tkz-elements-demo_2.tex
-2023/10/25 | 2236 | macros/generic/advice/INSTALL.md
-2023/10/25 | 2202 | support/ctanbib/ctanbib.1
-2023/10/25 | 21890 | macros/latex/required/babel/base/bbcompat.dtx
-2023/10/25 | 20611 | macros/latex/contrib/tkz/tkz-elements/examples/tkz-elements-demo_1.pdf
-2023/10/25 | 203416 | macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
-2023/10/25 | 2030 | macros/latex/required/babel/base/README.md
-2023/10/25 | 19102 | macros/generic/advice/LICENCE
-2023/10/25 | 17412 | macros/latex/contrib/profmaquette/doc/TestParcoursPerso.pdf
-2023/10/25 | 17158 | macros/latex/contrib/tkz/tkz-elements/examples/tkz-elements-demo_3.pdf
-2023/10/25 | 162 | macros/generic/advice/Makefile
-2023/10/25 | 13413 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-classes-line.tex
-2023/10/25 | 1281 | macros/generic/advice/advice.ins
-2023/10/25 | 125624 | macros/latex/contrib/tkz/tkz-elements/doc/latex/TKZdoc-elements-examples.tex
-2023/10/25 | 1168227 | support/TeX4ht/source/tex4ht-4ht.tex
-2023/10/25 | 1145 | macros/latex/contrib/tkz/tkz-elements/latex/tkz-elements.sty
-2023/10/25 | 1056 | macros/generic/advice/CHANGELOG.md
-2023/10/25 | 1033891 | macros/latex/required/babel/base/locale.zip
diff --git a/biblio/ctan-bibdata/ctan.bib b/biblio/ctan-bibdata/ctan.bib
index 26c6b7e4cc..38c6d37286 100644
--- a/biblio/ctan-bibdata/ctan.bib
+++ b/biblio/ctan-bibdata/ctan.bib
@@ -1,7 +1,7 @@
%% bib file of all CTAN packages
%% (C) Herbert Voß
%%
-%% created at 31-10-2023, 02:00:53
+%% created at 01-11-2023, 02:03:57
%%
%% This file is provided under the terms of the LPPL v1.3 or
@@ -4234,6 +4234,23 @@
url = {https://ctan.org/pkg/autotoc},
}
+@manual{ctan-autotype,
+ title = {The \texttt{autotype} package},
+ subtitle = {A Lua\LaTeX{} package for automatic language-specific typography},
+ author = {Keno Wehr},
+ date = {2023-10-31},
+ version = {0.4},
+ license = {lppl1.3,mit,other-free},
+ mirror = {https://mirror.ctan.org/macros/luatex/latex/autotype},
+ url = {https://ctan.org/pkg/autotype},
+ annotation = {is a Lua\LaTeX{} package for automatic
+ language-specific typography.
+ Currently, it supports ligature suppression at word boundaries,
+ long s insertion for blackletter typesetting,
+ and weighted hyphenation,
+ but only for German (old and new orthography).},
+}
+
@manual{ctan-autoview,
title = {The \texttt{autoview} package},
subtitle = {Maintain a Ghostscript view of emacs buffer},
@@ -14049,6 +14066,17 @@
url = {https://ctan.org/pkg/colordvi},
}
+@manual{ctan-coloredbelts,
+ title = {The \texttt{coloredbelts} package},
+ subtitle = {Insert colored belts (vectorial format) in documents (to presetn skills, for example)},
+ author = {Cédric Pierquet},
+ date = {2023-10-31},
+ version = {0.1.0},
+ license = {lppl1.3c,cc-by-sa-3},
+ mirror = {https://mirror.ctan.org/macros/latex/contrib/coloredbelts},
+ url = {https://ctan.org/pkg/coloredbelts},
+}
+
@manual{ctan-coloremoji,
title = {The \texttt{coloremoji} package},
subtitle = {Style package for directly including color emojis in \LaTeX{} documents},
@@ -32795,8 +32823,8 @@
title = {The \texttt{hyperref} package},
subtitle = {Extensive support for hypertext in \LaTeX{}},
author = {Heiko Oberdiek and Sebastian Rahtz and {Oberdiek Package Support Group} and {The \LaTeX{} Project Team}},
- date = {2023-10-22},
- version = {7.01c},
+ date = {2023-10-31},
+ version = {7.01d},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/latex/contrib/hyperref},
url = {https://ctan.org/pkg/hyperref},
@@ -36712,8 +36740,8 @@
title = {The \texttt{kpfonts-otf} package},
subtitle = {OTF version of the Kp-fonts},
author = {Daniel Flipo},
- date = {2023-08-04},
- version = {0.56},
+ date = {2023-10-31},
+ version = {0.60},
license = {ofl,lppl1.3},
mirror = {https://mirror.ctan.org/fonts/kpfonts-otf},
url = {https://ctan.org/pkg/kpfonts-otf},
@@ -55066,8 +55094,8 @@
title = {The \texttt{ProfLycee} package},
subtitle = {A \LaTeX{} package for French maths teachers in high school},
author = {Cédric Pierquet},
- date = {2023-10-25},
- version = {3.00b},
+ date = {2023-10-31},
+ version = {3.00c},
license = {lppl1.3c},
mirror = {https://mirror.ctan.org/macros/latex/contrib/proflycee},
url = {https://ctan.org/pkg/proflycee},
@@ -58222,6 +58250,17 @@
url = {https://ctan.org/pkg/quran-de},
}
+@manual{ctan-quran-id,
+ title = {The \texttt{quran-id} package},
+ subtitle = {Indonesian translation extension to the quran package},
+ author = {Seiied-Mohammad-Javad Razavian},
+ date = {2023-10-31},
+ version = {0.1},
+ license = {lppl1.3c},
+ mirror = {https://mirror.ctan.org/macros/xetex/latex/quran-id},
+ url = {https://ctan.org/pkg/quran-id},
+}
+
@manual{ctan-quran-ur,
title = {The \texttt{quran-ur} package},
subtitle = {Urdu translations to the quran package},
@@ -61676,7 +61715,7 @@
title = {The \texttt{selnolig} package},
subtitle = {Selectively disable typographic ligatures},
author = {Mico Loretan},
- date = {2018-03-07},
+ date = {2023-10-31},
version = {0.302},
license = {lppl1.3},
mirror = {https://mirror.ctan.org/macros/luatex/latex/selnolig},
@@ -77979,8 +78018,8 @@
title = {The \texttt{xr-hyper} package},
subtitle = {Inter-document hyper-references},
author = {David Carlisle and {Oberdiek Package Support Group}},
- date = {2023-10-22},
- version = {7.01c},
+ date = {2023-10-31},
+ version = {7.01d},
license = {lppl},
mirror = {https://mirror.ctan.org/macros/latex/contrib/hyperref/xr-hyper.sty},
url = {https://ctan.org/pkg/xr-hyper},
diff --git a/biblio/ctan-bibdata/ctan.pdf b/biblio/ctan-bibdata/ctan.pdf
index f7fabd6b87..f7d7612ecc 100644
--- a/biblio/ctan-bibdata/ctan.pdf
+++ b/biblio/ctan-bibdata/ctan.pdf
Binary files differ
diff --git a/fonts/newtx/README b/fonts/newtx/README
index 651974fa95..ca0aae79c4 100644
--- a/fonts/newtx/README
+++ b/fonts/newtx/README
@@ -1,10 +1,13 @@
This package, initially based on txfonts, provides many fixes and enhancements to the txfonts package, splitting it into two separate packages---newtxtext and newtxmath, which may be run independently of one another. It provides scaling, improved metrics, and other options. In particular, newtxmath offers a libertine option which substitutes Linux Libertine (provided with TeXLive and MikTeX) italic and Greek letters for the default Times letters, providing a good match for the Libertine text font, which is heavier than Computer Modern but lighter than Times, and in my experience, looks very sharp and clear on the screen.
-Current version: 1.73 2023-10-29
+Current version: 1.731 2023-10-31
This material is subject to the LaTeX Project Public License. See http://www.ctan.org/license/lppl1.3
for the details of that license.
+Changes in version 1.731
+Removed zplsups-Regular-ts1.tfm from the newtx package as it conflicted with a file of the same name in newpx.
+
Changes in version 1.73
1. Corrected some misbehaviors of footnote markers. They should work now in all LaTeX engines. In Koma classes, there is not yet the flexibility to reshape and color the markers.
2. Added new option propmathfigs to newtxmath, replacing tabular lining figure in math by proportional lining figures.
diff --git a/fonts/newtx/doc/newtx-ebgaramond-subs.tex b/fonts/newtx/doc/newtx-ebgaramond-subs.tex
deleted file mode 100644
index 7cabd181e1..0000000000
--- a/fonts/newtx/doc/newtx-ebgaramond-subs.tex
+++ /dev/null
@@ -1,18 +0,0 @@
-{f}{-.5}
-{j}{-3}
-{p}{-2.5}
-{y}{-2.5}
-{A}{-2.5}
-{B}{-1}
-{D}{-1}
-{H}{-1}
-{I}{-1}
-{K}{-1}
-{L}{-1}
-{M}{-1}
-{N}{-0.5}
-{P}{-1}
-{X}{-1}
-{\rho}{-3.5}
-{\mu}{-1}
-{\beta}{-1}
diff --git a/fonts/newtx/doc/newtx-libertine-subs.tex b/fonts/newtx/doc/newtx-libertine-subs.tex
deleted file mode 100644
index 82f4f2c693..0000000000
--- a/fonts/newtx/doc/newtx-libertine-subs.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-{f}{-1.5}
-{j}{-2}
-{p}{-.5}
-{y}{-1}
-{A}{-1.5}
-{B}{-1}
-{D}{-1}
-{H}{-1}
-{I}{-1}
-{K}{-1}
-{L}{-1}
-{M}{-1}
-{N}{-0.5}
-{P}{-1}
-{X}{-1}
-{\rho}{-1}
-{\beta}{-1} \ No newline at end of file
diff --git a/fonts/newtx/doc/newtx-subs.tex b/fonts/newtx/doc/newtx-subs.tex
deleted file mode 100644
index 3335a4406b..0000000000
--- a/fonts/newtx/doc/newtx-subs.tex
+++ /dev/null
@@ -1,17 +0,0 @@
-{f}{-3}
-{j}{-3}
-{p}{-1}
-{y}{-1}
-{A}{-2}
-{B}{-1}
-{D}{-1}
-{H}{-1}
-{I}{-1}
-{K}{-1}
-{L}{-1}
-{M}{-1}
-{N}{-0.5}
-{P}{-1}
-{X}{-1}
-{\rho}{-1.5}
-{\mu}{-1} \ No newline at end of file
diff --git a/fonts/newtx/tfm/zplsups-Regular-ts1.tfm b/fonts/newtx/tfm/zplsups-Regular-ts1.tfm
deleted file mode 100644
index d60a15ca98..0000000000
--- a/fonts/newtx/tfm/zplsups-Regular-ts1.tfm
+++ /dev/null
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-3dplot/Changes b/graphics/pstricks/contrib/pst-3dplot/Changes
index 24dbaf7446..80f836170f 100644
--- a/graphics/pstricks/contrib/pst-3dplot/Changes
+++ b/graphics/pstricks/contrib/pst-3dplot/Changes
@@ -20,6 +20,7 @@ pst-3dplot.pro --------
pst-3dplot.tex --------
+2.09 2023-11-01 - updated code from package trig
2.08 2023-09-08 - fix bug for consequtive \pstThreeDCircle
2.07a 2022-01-14 - fix for the documentation
2.07 2021-09-23 - fix for lualatex and color values on PS level
diff --git a/graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf b/graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
index 921fbb5188..8d181c00e3 100644
--- a/graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
+++ b/graphics/pstricks/contrib/pst-3dplot/doc/pst-3dplot-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex b/graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
index 2593ab594f..72dcb1da95 100644
--- a/graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
+++ b/graphics/pstricks/contrib/pst-3dplot/tex/pst-3dplot.tex
@@ -1,4 +1,4 @@
-%% $Id: pst-3dplot.tex 758 2023-09-08 13:33:46Z herbert $
+%% $Id: pst-3dplot.tex 796 2023-11-01 19:00:59Z herbert $
%%
%% This is file `pst-3dplot.tex',
%%
@@ -27,9 +27,9 @@
\ifx\PSTMultidoLoaded\endinput\else \input multido.tex\fi
\ifx\PSTXKeyLoaded\endinput\else \input pst-xkey \fi
%
-\def\fileversion{2.08}
+\def\fileversion{2.09}
\let\IIIDplotfileversion\fileversion
-\def\filedate{2023/09/08}
+\def\filedate{2023/11/01}
\let\IIIDplotfiledate\filedate
\message{`PST-3dplot' v\fileversion, \filedate\space (HV,DL)}
%
@@ -2390,7 +2390,7 @@
\let\pstDiv\pst@divide
%
\chardef\nin@ty=90% stolen from the trig.sty package by David Carlisle
-\chardef\@clxx=180
+\chardef\@clxxx=180
\chardef\@lxxi=71
\mathchardef\@mmmmlxviii=4068
\chardef\@coeffz=72
@@ -2403,18 +2403,18 @@
\dimen@\@tempb\dimen@
\advance\dimen@ #1\p@}
\def\TG@series{%
- \dimen@\@lxxi\dimen@
- \divide \dimen@ \@mmmmlxviii
- \edef\@tempa{\TG@rem@pt\dimen@}%
- \dimen@\@tempa\dimen@
- \edef\@tempb{\TG@rem@pt\dimen@}%
- \divide\dimen@\@coeffz
- \advance\dimen@\m@ne\p@
- \TG@term\@coefb
- \TG@term{-\@coefc}%
- \TG@term\@coefd
- \dimen@\@tempa\dimen@
- \divide\dimen@ \@coefd}
+ \dimen@\@lxxi\dimen@
+ \divide \dimen@ \@mmmmlxviii
+ \edef\@tempa{\TG@rem@pt\dimen@}%
+ \dimen@\@tempa\dimen@
+ \edef\@tempb{\TG@rem@pt\dimen@}%
+ \divide\dimen@\@coeffz
+ \advance\dimen@\m@ne\p@
+ \TG@term\@coefb
+ \TG@term{-\@coefc}%
+ \TG@term\@coefd
+ \dimen@\@tempa\dimen@
+ \divide\dimen@ \@coefd}
\def\CalculateSin#1{{%
\expandafter\ifx\csname sin(\number#1)\endcsname\relax
\dimen@=#1\p@\TG@@sin
@@ -2431,7 +2431,7 @@
\fi}}
\def\TG@reduce#1#2{%
\dimen@#1#2\nin@ty\p@
- \advance\dimen@#2-\@clxx\p@
+ \advance\dimen@#2-\@clxxx\p@
\dimen@-\dimen@
\TG@@sin}
\def\TG@@sin{%
@@ -2440,16 +2440,28 @@
\else\TG@series\fi\fi}%
\def\UseSin#1{\csname sin(\number#1)\endcsname}
\def\UseCos#1{\csname cos(\number#1)\endcsname}
-\chardef\z@num\z@
+\def\z@num{0 }
+\def\@tempa{1 }
+\def\@tempb{-1 }
\expandafter\let\csname sin(0)\endcsname\z@num
-\expandafter\let\csname cos(0)\endcsname\@ne
-\expandafter\let\csname sin(90)\endcsname\@ne
+\expandafter\let\csname cos(0)\endcsname\@tempa
+\expandafter\let\csname sin(90)\endcsname\@tempa
\expandafter\let\csname cos(90)\endcsname\z@num
-\expandafter\let\csname sin(-90)\endcsname\m@ne
+\expandafter\let\csname sin(-90)\endcsname\@tempb
\expandafter\let\csname cos(-90)\endcsname\z@num
\expandafter\let\csname sin(180)\endcsname\z@num
-\expandafter\let\csname cos(180)\endcsname\m@ne
-
+\expandafter\let\csname cos(180)\endcsname\@tempb
+\expandafter\let\csname sin(270)\endcsname\@tempb
+\expandafter\let\csname cos(270)\endcsname\z@num
+\expandafter\let\csname sin(360)\endcsname\z@num
+\expandafter\let\csname cos(360)\endcsname\@tempa
+\expandafter\let\csname sin(-180)\endcsname\z@num
+\expandafter\let\csname cos(-180)\endcsname\@tempb
+\expandafter\let\csname sin(-270)\endcsname\@tempa
+\expandafter\let\csname cos(-270)\endcsname\z@num
+\expandafter\let\csname sin(-360)\endcsname\z@num
+\expandafter\let\csname cos(-360)\endcsname\@tempa
+%
% A macro for sin cos values
% \pstSinCos{30}\SinVal\CosVal ==> \SinVal 0.5 \CosVal 0.86
%
diff --git a/macros/latex/base/README.md b/macros/latex/base/README.md
index 758e6c7184..09de821f1d 100644
--- a/macros/latex/base/README.md
+++ b/macros/latex/base/README.md
@@ -1,7 +1,7 @@
The LaTeX kernel
================
-Release 2023-06-01 patch level 1
+Release 2023-11-01
Overview
--------
diff --git a/macros/latex/base/alltt.pdf b/macros/latex/base/alltt.pdf
index 24b95189f8..0bcc657737 100644
--- a/macros/latex/base/alltt.pdf
+++ b/macros/latex/base/alltt.pdf
Binary files differ
diff --git a/macros/latex/base/cfgguide.pdf b/macros/latex/base/cfgguide.pdf
index fe237e926a..1c143425f9 100644
--- a/macros/latex/base/cfgguide.pdf
+++ b/macros/latex/base/cfgguide.pdf
Binary files differ
diff --git a/macros/latex/base/changes.txt b/macros/latex/base/changes.txt
index 686286d2ad..812143d3e3 100644
--- a/macros/latex/base/changes.txt
+++ b/macros/latex/base/changes.txt
@@ -1,16 +1,126 @@
-================================================================================
-This file lists changes to the LaTeX2e files in reverse chronological order of
-publication (therefore the dates might be out of sequence if there are hotfixes).
-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.
-================================================================================
+================================================================================
+This file lists changes to the LaTeX2e files in reverse chronological order
+of publication (therefore the dates might be out of sequence if there are
+hotfixes). 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.
+================================================================================
================================================================================
All changes above are only part of the development branch for the next release.
================================================================================
#########################
+# 2023-11-01 Release
+#########################
+
+2023-10-15 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * ltproperties.dtx:
+ Add support for pagetarget property.
+
+2023-10-26 David Carlisle <David.Carlisle@latex-project.org>
+ * ltboxes.dtx:
+ add check so \makebox[4cm][?]{abc} does not discard text (gh1072)
+
+2023-10-26 Joseph Wright <Joseph.Wright@latex-project.org>
+ * ltspace.tex:
+ Use a protected definition for tilde which is safe in csnames
+
+2023-10-21 Yukai Chou <muzimuzhi@gmai.com>
+ * ltfssbas.dtx, ltplain.dtx, ltspace.dtx:
+ Correct typos
+
+2023-10-14 Joseph Wright <Joseph.Wright@latex-project.org>
+ * clsguide.tex:
+ Additional documentation
+
+2023-10-14 Joseph Wright <Joseph.Wright@latex-project.org>
+ * clsguide.tex:
+ Add that \CurrentOption is available in \DeclareUnknownKeyHandler
+
+2023-10-13 Joseph Wright <Joseph.Wright@latex-project.org>
+ * ltexpl.dtx:
+ Add \IfExplAtLeastTF
+
+2023-10-10 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * docstrip.dtx (section{Internal functions and variables}):
+ Explain the steps carried out by the replacement algorithm for @@.
+
+2023-09-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * ltproperties.dtx:
+ Use \protected@edef for expansion in the LaTeX2e commands.
+
+2023-09-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * ltproperties.dtx:
+ Expand consistently the label/property names in the LaTeX2e commands.
+
+2023-09-13 Joseph Wright <Joseph.Wright@latex-project.org>
+ * ltmiscen.dtx:
+ Correct typo
+
+2023-09-05 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * ltproperties.dtx:
+ First implementation of properties module
+
+ * ltmiscen.dtx:
+ Add test to \enddocument for changes in property values.
+
+2023-09-01 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltmiscen.dtx
+ Provide global definition for active tab
+
+2023-06-15 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltmiscen.dtx
+ Refinements to tab support
+
+2023-06-14 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltmiscen.dtx, ltspace.dtx
+ Support (visible) tabs in verbatim material
+
+2023-08-19 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * ltcmd.dtx, usrguide.tex
+ Remove \GetDocumentCommandArgSpec,
+ \GetDocumentEnvironmentArgSpec,
+ \ShowDocumentCommandArgSpec,
+ \ShowDocumentEnvironmentArgSpec
+
+2023-08-05 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * ltsockets.dtx:
+ First implementation of the sockets module.
+
+2023-07-10 Marcel Krüger <marcel.krueger@latex-project.org>
+
+ * ltluatex.dtx
+ Restore post_mlist_to_hlist_filter callback type to reverselist (gh1116)
+
+2023-07-10 Yukai Chou <muzimuzhi@gmail.com>
+
+ * ltfilehook.dtx (subsection{Declaring a file substitution}):
+ Drop a redundant \ExplSyntaxOff
+
+2023-07-02 David Carlisle <David.Carlisle@latex-project.org>
+
+ * ltluatex.dtx modify new_luafunction to ensure
+ \e@alloc@luafunction@count always matches the size of the Lua
+ table of function allocations (gh100)
+
+2023-06-12 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * usrguide.tex
+ Correct description of font encodings supported for case changing
+
+2023-06-09 Joseph Wright <Joseph.Wright@latex-project.org>
+
+ * usrguide.tex
+ Various refinements to descriptions of \NewDocumentCommand, etc.
+
+#########################
# 2023-06-01 PL1 Release
#########################
@@ -41,7 +151,7 @@ All changes above are only part of the development branch for the next release.
2023-05-31 Joseph Wright <Joseph.Wright@latex-project.org>
- * usrguide.text
+ * usrguide.tex
Correct syntax of opt. arg. for \DeclareLowercaseMapping, etc.
2023-05-30 Joseph Wright <Joseph.Wright@latex-project.org>
diff --git a/macros/latex/base/classes.pdf b/macros/latex/base/classes.pdf
index b02f360cc0..0a016cdee7 100644
--- a/macros/latex/base/classes.pdf
+++ b/macros/latex/base/classes.pdf
Binary files differ
diff --git a/macros/latex/base/clsguide-historic.pdf b/macros/latex/base/clsguide-historic.pdf
index 39f80d57d4..05014b96fb 100644
--- a/macros/latex/base/clsguide-historic.pdf
+++ b/macros/latex/base/clsguide-historic.pdf
Binary files differ
diff --git a/macros/latex/base/clsguide.pdf b/macros/latex/base/clsguide.pdf
index 585dd936db..06dd277b56 100644
--- a/macros/latex/base/clsguide.pdf
+++ b/macros/latex/base/clsguide.pdf
Binary files differ
diff --git a/macros/latex/base/clsguide.tex b/macros/latex/base/clsguide.tex
index 7225425ec8..457f74f287 100644
--- a/macros/latex/base/clsguide.tex
+++ b/macros/latex/base/clsguide.tex
@@ -42,7 +42,7 @@
\texttt{clsguide.tex} for full details.}%
}
-\date{2023-01-12}
+\date{2023-10-24}
\NewDocumentCommand\cs{m}{\texttt{\textbackslash\detokenize{#1}}}
\NewDocumentCommand\marg{m}{\arg{#1}}
@@ -143,7 +143,7 @@ There are several reasons why we should not make such changes to these
files.
\begin{itemize}
\item
- However misguided, the current behaviour is clearly what was
+ However misguided, the current behavior is clearly what was
intended when these classes were designed.
\item
It is not good practice to change such aspects of `standard classes'
@@ -188,7 +188,7 @@ command which should only be used in the \LaTeX{} kernel, whereas
However, this rule of thumb is still useful: if a command has |@| in
its name then it is not part of the supported \LaTeX{} language---and
-its behaviour may change in future releases! If a command is
+its behavior may change in future releases! If a command is
mixed-case, or is described in \emph{\LaTeXbook}, then you can rely on
future releases of \LaTeX{} supporting the command.
@@ -489,7 +489,7 @@ the |article| class to set the |\paperheight| and |\paperwidth| lengths:
\end{verbatim}
Sometimes a user will request an option which the class or package has not
explicitly declared. By default this will produce a warning (for classes) or
-error (for packages); this behaviour can be altered as follows:
+error (for packages); this behavior can be altered as follows:
\begin{verbatim}
\DeclareOption*{<code>}
\end{verbatim}
@@ -847,7 +847,7 @@ The basic properties provided here are
has no limitation on scope (\texttt{general})
\end{itemize}
The part of the \meta{key} before the \m{property} is the \m{name}, with the
-\m{value} working with the \m{property} to define the behaviour of the option.
+\m{value} working with the \m{property} to define the behavior of the option.
For example, with
\begin{verbatim}
@@ -875,7 +875,15 @@ options.
The command |\DeclareUnknownKeyHandler| may be used to define the behavior when
an undefined key is encountered. The \m{code} will receive the unknown key name
as |#1| and the value as |#2|. These can then be processed as appropriate,
-e.g.~by forwarding to another package.
+e.g.~by forwarding to another package. The entire option is available as
+\cs{CurrentOption}, should it be necessary to pass on options which may or
+may not contain an |=|~sign. For example, this may be used to pass an
+unknown option on to a non-keyval class such as \pkg{article}:
+\begin{verbatim}
+\DeclareUnknownKeyHandler{%
+ \PassOptionsToClass{\CurrentOption}{article}
+}
+\end{verbatim}
\begin{decl}
|\ProcessKeyOptions| \oarg{family}
@@ -883,6 +891,8 @@ e.g.~by forwarding to another package.
The |\ProcessKeyOptions| function is used to check the current option list
against the keys defined for \m{family}. Global (class) options and local
(package) options are checked when this function is called in a package.
+The command will process \emph{all} options given the the current
+package or class: there is no need to also apply \cs{ProcessOptions}.
\begin{decl}
|\SetKeys| \oarg{family} \arg{keyvals}
@@ -1181,12 +1191,184 @@ defined as
where |#1| is the user input and the first argument to
\cs{MakeUppercaseAux} takes two arguments, the locale and input text.
+\subsection{Extended and expandable references of properties}
+
+A property is something that \LaTeX{} can track while processing
+the document, such as a page
+number, a heading number, other counter values, a heading title,
+a position on the page, etc.
+The current value of such properties can be labeled and
+written to the \texttt{aux}-file. It can then be referenced in
+the next compilation, similar to the way the standard \cs{label}/\cs{ref}
+commands work (they record/reference a fixed set of properties:
+label, page, title, and target).
+
+\begin{decl}
+ |\RecordProperties|\arg{label}\arg{list of properties}
+\end{decl}
+This command writes the value(s) of the \meta{list of properties}
+\texttt{aux}-file labeled by \meta{label}. Recorded are either the
+values current when \cs{RecordProperties} is called or the value
+current when the next shipout happens---which depends on the
+declaration for each property.
+%
+The arguments \meta{label} and \meta{list of properties} can contain
+commands that are expanded. \meta{label} can expand to an arbitrary
+string (as long as it can safely be written to the \texttt{aux}-file)
+but note that the label names of \cs{label} and \cs{RecordProperties}
+share a singe namespace. This means that you get a \texttt{Label `A'
+ multiply defined} warning with the following code:
+\begin{verbatim}
+\label{A}\RecordProperties{A}{abspage}
+\end{verbatim}
+
+
+\begin{decl}
+ |\RefProperty|\arg{label}\arg{property}
+\end{decl}
+This command allows to reference the value of the property
+\meta{property} recorded in the previous run and labeled by \meta{label}.
+Differently to the standard
+\cs{ref} command the command is expandable and the value can for
+example---if it is a number---be used in an assignment.\footnote{For
+this to work the default value for the property would need to be a number too,
+because recorded values aren't known in the first \LaTeX{} run.}
+
+\begin{verbatim}
+\section{A section}
+\RecordProperties{mylabel}{pagenum,counter}
+\RefProperty{mylabel}{counter} % outputs section
+\setcounter{mycounter}{\RefProperty{mylabel}{pagenum}}
+\end{verbatim}
+
+
+
+As \cs{RefProperty} is expandable it can not issue a rerun warning if
+a label is not found. If needed such a warning can be forced by the
+following command:
+\begin{decl}
+ |\RefUndefinedWarn|\arg{label}\arg{property}
+\end{decl}
+
+\LaTeX{} predefines a set of properties, this set contains also the
+properties stored by the standard \cs{label} command. In the list
+below \enquote{default} indicates the value returned when the value is
+not yet known (i.e., if it wasn't recorded in the previous run and
+\enquote{at shipout} means that this property is not recorded
+immediately when \cs{RecordProperties} is used but during the next
+\cs{shipout}.
+
+\begin{description}
+ \item[\texttt{abspage} (default: \texttt{0}, at shipout)] The absolute value of the current page:
+ starts at $1$ and increases monotonically at each shipout.
+
+ \item[\texttt{page} (default: \texttt{0}, at shipout)] The current page as given by \cs{thepage}: this may or
+ may not be a numerical value, depending on the current
+ style. Contrast with \texttt{abspage}. You get this value also with
+ the standard \cs{label}/\cs{pageref}.
+
+ \item[\texttt{pagenum} (default: \texttt{0}, at shipout)] The current page as arabic number. This is
+ suitable for integer operations and comparisions.
+
+ \item[\texttt{label} (default: \texttt{??})] The content of \cs{@currentlabel}. This is the value
+ that you get also with the standard \cs{label}/\cs{ref}.
+
+ \item[\texttt{title} (default: \texttt{\cs{textbf}\{??\}})] The content of \cs{@currentlabelname}. This
+ command is filled beside others by the \pkg{nameref} package and
+ some classes (e.g.~\pkg{memoir}) and typically gives
+ the title defined in the document by some sectioning command
+
+ \item[\texttt{target} (default: \meta{\mdseries empty})] The content of \cs{@currentHref}. This
+ command is normally filled by \pkg{hyperref} and holds the name of
+ the last destination it created.
+
+\item[\texttt{pagetarget} (default: \meta{\mdseries empty}, at shipout)]
+ The content of \cs{@currentHpage}. This command is filled by
+ \pkg{hyperref} (version v7.01c or newer) and holds the name of the last
+ page anchor it created.
+
+ \item[\texttt{counter} (default: \meta{\mdseries empty})] The content of \cs{@currentcounter}. This
+ command contains after a \cs{refstepcounter} the name of the
+ counter.
+
+ \item[\texttt{xpos}, \texttt{ypos} (default: \texttt{0}, at shipout)] These properties records the
+ $x$~and $y$ coordinates of a point previously stored with
+ \cs{pdfsavepos}/\cs{savepos}. E.g.~(if \pkg{bidi} is used it can
+ be necessary to save the position before and after the label):
+ \begin{verbatim}
+ \pdfsavepos
+ \RecordProperties{myposition}{xpos,ypos}%
+ \pdfsavepos
+ \end{verbatim}
+\end{description}
+
+Class and package authors can define more properties to store other
+values they are interested in.
+\begin{decl}
+ |\NewProperty|\arg{name}\arg{setpoint}\arg{default}\arg{code}\\
+ |\SetProperty|\arg{name}\arg{setpoint}\arg{default}\arg{code}
+\end{decl}
+These commands declare or change a property \meta{name}\footnote{Only change
+properties that you have declared. The declarations of standard properties of \LaTeX{} and
+properties of other packages should never be altered!}. If a new property is
+declared within a package it is suggested that its name is always structured
+as follows: \meta{package-name}\texttt{/}\meta{property-name}.
+\meta{setpoint} is either |now| or |shipout| and decides if the value is
+written directly or at the next shipout. \meta{default} is used if the
+property is referenced but not yet known, e.g., in the first run.
+\meta{code} is the code executed when storing the value. For example, the
+\texttt{pagenum} property is declared as
+\begin{verbatim}
+\NewProperty{pagenum}{shipout}{0}{\the\value{page}}
+\end{verbatim}
+
+The commands related to properties are offered as a set of CamelCase
+commands for traditional \LaTeXe{} packages (and for use in the
+document preamble if needed) as well as \texttt{expl3} commands for
+modern packages, that use the L3 programming layer of \LaTeX{}. The
+\texttt{expl3} commands and more details can be found in
+\texttt{ltproperties-doc.pdf}.
+
+\subsection{Preparing link targets}
+
+Active links in a document need targets to which they can jump to. Such
+targets are often created automatically (if the package \pkg{hyperref}
+is loaded) by the \cs{refstepcounter} command but there are also cases
+where class or package authors need to add a target manually, for
+example, in unnumbered sectioning commands or in environments. For this
+\LaTeX{} provides the following commands. \emph{Without}
+\pkg{hyperref} they do nothing or insert only a whatsits
+(to ensure that spacing doesn't change when hyperref is loaded), \emph{with}
+\pkg{hyperref} they add the necessary targets. Details about the
+behavior and the arguments of the following commands can by found in
+the \pkg{hyperref} package in \texttt{hyperref-linktarget.pdf}.
+
+\begin{decl}
+ |\MakeLinkTarget|\oarg{prefix}\arg{counter}\\
+ |\MakeLinkTarget|\oarg{prefix}\{\}\\
+ |\MakeLinkTarget|*\arg{target name}
+\end{decl}
+This command prepares the creations of targets.
+
+\begin{decl}
+ |\LinkTargetOn|\\
+ |\LinkTargetOff|
+\end{decl}
+These commands allow to enable and disable locally the creation of
+targets. This can be useful to suppress targets otherwise created automatically
+by \cs{refstepcounter}.
+
+\begin{decl}
+ |\NextLinkTarget|\arg{target name}
+\end{decl}
+This changes the name of the next target that will be created.
+
\section{Commands superseded for new material}
A small number of commands were introduced as part of \LaTeXe{} in the
-mid-1990s, are widely used but have been superseded by more modern methods.
-These are covered here as they are likely to be encountered routinely in
-existing classes and packages.
+mid-1990s, are widely used but have been superseded by more modern
+methods. These are covered here as they are likely to be encountered
+routinely in existing classes and packages.
\subsection{Defining commands}
diff --git a/macros/latex/base/cmfonts.pdf b/macros/latex/base/cmfonts.pdf
index 396362c196..6dae682fa8 100644
--- a/macros/latex/base/cmfonts.pdf
+++ b/macros/latex/base/cmfonts.pdf
Binary files differ
diff --git a/macros/latex/base/cyrguide.pdf b/macros/latex/base/cyrguide.pdf
index 0ce387ea1b..a4f49af98f 100644
--- a/macros/latex/base/cyrguide.pdf
+++ b/macros/latex/base/cyrguide.pdf
Binary files differ
diff --git a/macros/latex/base/doc-code.pdf b/macros/latex/base/doc-code.pdf
index 357fa04afc..d9eec5ba62 100644
--- a/macros/latex/base/doc-code.pdf
+++ b/macros/latex/base/doc-code.pdf
Binary files differ
diff --git a/macros/latex/base/doc.pdf b/macros/latex/base/doc.pdf
index fc6b230c2a..bea75c57ef 100644
--- a/macros/latex/base/doc.pdf
+++ b/macros/latex/base/doc.pdf
Binary files differ
diff --git a/macros/latex/base/docstrip.dtx b/macros/latex/base/docstrip.dtx
index be373499e6..776d0e68d7 100644
--- a/macros/latex/base/docstrip.dtx
+++ b/macros/latex/base/docstrip.dtx
@@ -31,7 +31,7 @@
\def\filename{docstrip.dtx}
\def\fileversion{v2.6b}
\def\filedate{2022-09-03}
-\def\docdate {2022-09-03}
+\def\docdate {2023-10-10}
%%
%
%\iffalse
@@ -838,6 +838,29 @@
% suppressed by giving an empty module name, namely using the
% syntax \texttt{\%<@@=>}.
%
+% The exact steps that are carried out by this replacement
+% algorithm are the following:
+% \begin{enumerate}
+% \item First, deal with \texttt{@@@@} as a special case (by using a
+% temporary disguise).
+%
+% \item Then change all |__@@| to |__|\meta{module}.
+%
+% \item Then change all remaining |_@@| to
+% |__|\meta{module}.
+%
+% \item Then change all remaining \texttt{@@} to
+% |__|\meta{module}.
+%
+% \item Finally, tidy up by changing each ``disguised
+% \texttt{@@@@}'' to \texttt{@@}.
+% \end{enumerate}
+% Thus, replacement means that \texttt{@@} is replaced by the
+% \meta{module} name and that 0, 1, or 2 underscores in front of
+% \texttt{@@} are replaced by exactly 2 underscores (whilst any
+% larger number of underscores is preserved).
+%
+%
% \section{Those other languages}
% Since \TeX\ is an open system some of \TeX\ packages include
% non-\TeX\ files. Some authors use \ds\ to generate PostScript
diff --git a/macros/latex/base/docstrip.pdf b/macros/latex/base/docstrip.pdf
index 39026d1bdc..86eeca561d 100644
--- a/macros/latex/base/docstrip.pdf
+++ b/macros/latex/base/docstrip.pdf
Binary files differ
diff --git a/macros/latex/base/encguide.pdf b/macros/latex/base/encguide.pdf
index 14feaa7f03..2eb91dada3 100644
--- a/macros/latex/base/encguide.pdf
+++ b/macros/latex/base/encguide.pdf
Binary files differ
diff --git a/macros/latex/base/exscale.pdf b/macros/latex/base/exscale.pdf
index ae7329dd91..100c365be9 100644
--- a/macros/latex/base/exscale.pdf
+++ b/macros/latex/base/exscale.pdf
Binary files differ
diff --git a/macros/latex/base/fix-cm.pdf b/macros/latex/base/fix-cm.pdf
index a78b9a4e1a..4c6012e007 100644
--- a/macros/latex/base/fix-cm.pdf
+++ b/macros/latex/base/fix-cm.pdf
Binary files differ
diff --git a/macros/latex/base/fntguide.pdf b/macros/latex/base/fntguide.pdf
index 5b6920cb3f..92cfacfab8 100644
--- a/macros/latex/base/fntguide.pdf
+++ b/macros/latex/base/fntguide.pdf
Binary files differ
diff --git a/macros/latex/base/fntguide.tex b/macros/latex/base/fntguide.tex
index 619cc907b2..143956ecc4 100644
--- a/macros/latex/base/fntguide.tex
+++ b/macros/latex/base/fntguide.tex
@@ -52,7 +52,7 @@
\texttt{fntguide.tex} for full details.}%
}
-\date{May 2023}
+\date{October 2023}
\begin{document}
@@ -1463,7 +1463,7 @@ which is specific to one encoding. For example, the definition of |\k|
in the |T1| encoding is:
\begin{verbatim}
\DeclareTextCommand{\k}{T1}[1]
- {\oalign{\null#1\crcr\hidewidth\char12}}
+ {\hmode@bgroup\ooalign{\null#1\crcr\hidewidth\char12}\egroup}
\end{verbatim}
|\DeclareTextCommand| takes the same optional arguments as
|\newcommand|.
diff --git a/macros/latex/base/format.ins b/macros/latex/base/format.ins
index 74cd78ff4a..ba0965004d 100644
--- a/macros/latex/base/format.ins
+++ b/macros/latex/base/format.ins
@@ -169,6 +169,7 @@ the system are in the document `cfgguide.tex'.
\from{ltcmd.dtx}{2ekernel} % L3 layer module (used to be xparse)
\from{lthooks.dtx}{2ekernel} % L3 layer module
\from{ltcmdhooks.dtx}{2ekernel} % L3 layer module
+ \from{ltsockets.dtx}{2ekernel} % L3 layer module
\from{ltalloc.dtx}{2ekernel}
\from{ltcntrl.dtx}{2ekernel}
\from{lterror.dtx}{2ekernel}
@@ -191,6 +192,7 @@ the system are in the document `cfgguide.tex'.
\from{lttextcomp.dtx}{2ekernel}
\from{ltpageno.dtx}{2ekernel}
\from{ltxref.dtx}{2ekernel}
+ \from{ltproperties.dtx}{2ekernel}
\from{ltmiscen.dtx}{2ekernel}
\from{ltmath.dtx}{2ekernel}
\from{ltlists.dtx}{2ekernel}
diff --git a/macros/latex/base/graphpap.pdf b/macros/latex/base/graphpap.pdf
index f52ddaa65f..cc40850371 100644
--- a/macros/latex/base/graphpap.pdf
+++ b/macros/latex/base/graphpap.pdf
Binary files differ
diff --git a/macros/latex/base/ifthen.pdf b/macros/latex/base/ifthen.pdf
index 05bdaae4dd..fd8a7a4f0b 100644
--- a/macros/latex/base/ifthen.pdf
+++ b/macros/latex/base/ifthen.pdf
Binary files differ
diff --git a/macros/latex/base/inputenc.pdf b/macros/latex/base/inputenc.pdf
index 961cd7f8da..bb00659632 100644
--- a/macros/latex/base/inputenc.pdf
+++ b/macros/latex/base/inputenc.pdf
Binary files differ
diff --git a/macros/latex/base/lamport-manual.pdf b/macros/latex/base/lamport-manual.pdf
index 0066c0893d..57e79f436e 100644
--- a/macros/latex/base/lamport-manual.pdf
+++ b/macros/latex/base/lamport-manual.pdf
Binary files differ
diff --git a/macros/latex/base/latexrelease.ins b/macros/latex/base/latexrelease.ins
index 61315f8e07..93739630e3 100644
--- a/macros/latex/base/latexrelease.ins
+++ b/macros/latex/base/latexrelease.ins
@@ -96,6 +96,7 @@ extension .ins) which are part of the distribution.
\from{ltcmd.dtx} {latexrelease}% L3 layer module
\from{lthooks.dtx} {latexrelease}% L3 layer module
\from{ltcmdhooks.dtx} {latexrelease}% L3 layer module
+ \from{ltsockets.dtx} {latexrelease}% L3 layer module
\from{ltalloc.dtx} {latexrelease}% empty
\from{ltcntrl.dtx} {latexrelease}% empty
\from{lterror.dtx} {latexrelease}% empty
@@ -118,6 +119,7 @@ extension .ins) which are part of the distribution.
\from{lttextcomp.dtx} {latexrelease}%
\from{ltpageno.dtx} {latexrelease}% empty
\from{ltxref.dtx} {latexrelease}% empty
+ \from{ltproperties.dtx}{latexrelease}%
\from{ltmiscen.dtx} {latexrelease}%
\from{ltmath.dtx} {latexrelease}%
\from{ltlists.dtx} {latexrelease}% empty
diff --git a/macros/latex/base/latexrelease.pdf b/macros/latex/base/latexrelease.pdf
index c75ad13489..4063f8d212 100644
--- a/macros/latex/base/latexrelease.pdf
+++ b/macros/latex/base/latexrelease.pdf
Binary files differ
diff --git a/macros/latex/base/latexsym.pdf b/macros/latex/base/latexsym.pdf
index 6e3e837ccd..d7c3ee94d0 100644
--- a/macros/latex/base/latexsym.pdf
+++ b/macros/latex/base/latexsym.pdf
Binary files differ
diff --git a/macros/latex/base/lb2.err b/macros/latex/base/lb2.err
index d2ea742f82..74c0e222b6 100644
--- a/macros/latex/base/lb2.err
+++ b/macros/latex/base/lb2.err
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2014-09-30}
+\newcommand\erratafiledate{2014/09/30}
\def\comando#1{\texttt{\string#1}}
diff --git a/macros/latex/base/lb2.pdf b/macros/latex/base/lb2.pdf
index 6f22661ffe..32d9e799c4 100644
--- a/macros/latex/base/lb2.pdf
+++ b/macros/latex/base/lb2.pdf
Binary files differ
diff --git a/macros/latex/base/letter.pdf b/macros/latex/base/letter.pdf
index 69f6a08831..591c90152d 100644
--- a/macros/latex/base/letter.pdf
+++ b/macros/latex/base/letter.pdf
Binary files differ
diff --git a/macros/latex/base/lgc2.err b/macros/latex/base/lgc2.err
index cb1a382348..c899388be9 100644
--- a/macros/latex/base/lgc2.err
+++ b/macros/latex/base/lgc2.err
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2008-06-13}
+\newcommand\erratafiledate{2008/06/13}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% To produce a printed version of this errata file run this file through
diff --git a/macros/latex/base/lgc2.pdf b/macros/latex/base/lgc2.pdf
index 8ea67bbe08..9fc5080fec 100644
--- a/macros/latex/base/lgc2.pdf
+++ b/macros/latex/base/lgc2.pdf
Binary files differ
diff --git a/macros/latex/base/lppl.pdf b/macros/latex/base/lppl.pdf
index 56c2eb87cb..a576e1fd9d 100644
--- a/macros/latex/base/lppl.pdf
+++ b/macros/latex/base/lppl.pdf
Binary files differ
diff --git a/macros/latex/base/ltboxes.dtx b/macros/latex/base/ltboxes.dtx
index ff1717caa9..d84158c161 100644
--- a/macros/latex/base/ltboxes.dtx
+++ b/macros/latex/base/ltboxes.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltboxes.dtx}
- [2022/09/07 v1.4d LaTeX Kernel (Box Commands)]
+ [2023/10/26 v1.4e LaTeX Kernel (Box Commands)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltboxes.dtx}
@@ -342,13 +342,36 @@
% \begin{macro}{\@imakebox}
% \changes{v0.1a}{1993/12/03}
% {macro modified}
+% \changes{v1.4e}{2023/10/26}
+% {Guard against unknown alignment gh/1072}
% Internal form of |\makebox|.
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@imakebox}{Unknown alignment warning}%
+%<*2ekernel|latexrelease>
\long\def\@imakebox[#1][#2]#3{%
\@begin@tempboxa\hbox{#3}%
\setlength\@tempdima{#1}% support calc
- \hb@xt@\@tempdima{\csname bm@#2\endcsname}%
+ \hb@xt@\@tempdima{%
+ \expandafter\ifx\csname bm@#2\endcsname\relax
+ \bm@c
+ \@latex@warning{Unexpected alignment #2}%
+ \else
+ \csname bm@#2\endcsname
+ \fi}%
\@end@tempboxa}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@imakebox}{Unknown alignment warning}%
+%<latexrelease>\long\def\@imakebox[#1][#2]#3{%
+%<latexrelease> \@begin@tempboxa\hbox{#3}%
+%<latexrelease> \setlength\@tempdima{#1}% support calc
+%<latexrelease> \hb@xt@\@tempdima{\csname bm@#2\endcsname}%
+%<latexrelease> \@end@tempboxa}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -748,19 +771,46 @@
% {\cs{leavevmode} moved to \cs{@frameb@x}}
% \changes{v1.0s}{1995/04/27}
% {Move \cs{leavevmode} for graphics/1512}
+% \changes{v1.4e}{2023/10/26}
+% {Guard against unknown alignment gh/1072}
% In order to set the whole box, including the frame to the
% specified dimension, we first determine that dimension
% from the natural size of the text, |#3|.
% calculated width.
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@iframebox}{Unknown alignment warning}%
+%<*2ekernel|latexrelease>
\long\def\@iframebox[#1][#2]#3{%
\leavevmode
\@begin@tempboxa\hbox{#3}%
\setlength\@tempdima{#1}%
\setbox\@tempboxa\hb@xt@\@tempdima
- {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
+ {\kern\fboxsep
+ \expandafter\ifx\csname bm@#2\endcsname\relax
+ \bm@c
+ \@latex@warning{Unexpected alignment #2}%
+ \else
+ \csname bm@#2\endcsname
+ \fi
+ \kern\fboxsep}%
\@frameb@x{\kern-\fboxrule}%
\@end@tempboxa}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@iframebox}{Unknown alignment warning}%
+%<latexrelease>\long\def\@iframebox[#1][#2]#3{%
+%<latexrelease> \leavevmode
+%<latexrelease> \@begin@tempboxa\hbox{#3}%
+%<latexrelease> \setlength\@tempdima{#1}%
+%<latexrelease> \setbox\@tempboxa\hb@xt@\@tempdima
+%<latexrelease> {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
+%<latexrelease> \@frameb@x{\kern-\fboxrule}%
+%<latexrelease> \@end@tempboxa}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
%
@@ -881,9 +931,17 @@
% \changes{v1.1g}{2006/05/18}
% {Ensure \cs{@parboxto} holds the value of \cs{@tempdimb} not the
% register itself (pr/3867)}
+% \changes{v1.4e}{2023/10/26}
+% {Guard against unknown alignment gh/1072}
% The internal version of |\parbox|.
% \begin{macrocode}
\let\@parboxto\@empty
+% \end{macrocode}
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@iiiparbox}{Unknown alignment warning}%
+%<*2ekernel|latexrelease>
\long\def\@iiiparbox#1#2[#3]#4#5{%
\leavevmode
\@pboxswfalse
@@ -899,9 +957,38 @@
\else\@pboxswtrue $\vcenter
\fi\fi\fi
\@parboxto{\let\hss\vss\let\unhbox\unvbox
- \csname bm@#3\endcsname}%
+ \expandafter\ifx\csname bm@#3\endcsname\relax
+ \bm@c
+ \@latex@warning{Unexpected alignment #3}%
+ \else
+ \csname bm@#3\endcsname
+ \fi}%
\if@pboxsw \m@th$\fi
\@end@tempboxa}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@iiiparbox}{Unknown alignment warning}%
+%<latexrelease>\long\def\@iiiparbox#1#2[#3]#4#5{%
+%<latexrelease> \leavevmode
+%<latexrelease> \@pboxswfalse
+%<latexrelease> \setlength\@tempdima{#4}%
+%<latexrelease> \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
+%<latexrelease> \ifx\relax#2\else
+%<latexrelease> \setlength\@tempdimb{#2}%
+%<latexrelease> \edef\@parboxto{to\the\@tempdimb}%
+%<latexrelease> \fi
+%<latexrelease> \if#1b\vbox
+%<latexrelease> \else\if #1t\vtop
+%<latexrelease> \else\ifmmode\vcenter
+%<latexrelease> \else\@pboxswtrue $\vcenter
+%<latexrelease> \fi\fi\fi
+%<latexrelease> \@parboxto{\let\hss\vss\let\unhbox\unvbox
+%<latexrelease> \csname bm@#3\endcsname}%
+%<latexrelease> \if@pboxsw \m@th$\fi
+%<latexrelease> \@end@tempboxa}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
% \end{macro}
diff --git a/macros/latex/base/ltcmd.dtx b/macros/latex/base/ltcmd.dtx
index d6322ff3ee..dcb85a1ae8 100644
--- a/macros/latex/base/ltcmd.dtx
+++ b/macros/latex/base/ltcmd.dtx
@@ -34,8 +34,8 @@
%%% From File: ltcmd.dtx
%
% \begin{macrocode}
-\def\ltcmdversion{v1.1e}
-\def\ltcmddate{2023-05-26}
+\def\ltcmdversion{v1.2a}
+\def\ltcmddate{2023-08-19}
% \end{macrocode}
%
%<*driver>
@@ -59,6 +59,8 @@
% \section{Creating document commands}
%
% \changes{v1.0a}{2020/11/20}{Initial version derived from \texttt{xparse.dtx}}
+% \changes{v1.2a}{2023/08/19}{Removed commands that should have remained
+% only in \texttt{xparse.dtx}}
%
% Document commands should be created using the tools provided by this module:
% \cs{NewDocumentCommand}, etc.\@, in almost all cases. This allows clean
@@ -4263,116 +4265,6 @@
% \end{macro}
% \end{macro}
%
-% \subsection{Access to the argument specification}
-%
-% \begin{macro}{\@@_get_arg_spec_error:N, \@@_get_arg_spec_error:n}
-% \begin{macro}{\@@_get_arg_spec_error_aux:n}
-% Provide an informative error when trying to get the argument
-% specification of a non-\pkg{xparse} command or environment.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_get_arg_spec_error:N #1
- {
- \bool_set_false:N \l_@@_environment_bool
- \tl_set:Nn \l_@@_fn_tl {#1}
- \@@_get_arg_spec_error_aux:n { \cs_if_exist:NTF #1 }
- }
-\cs_new_protected:Npn \@@_get_arg_spec_error:n #1
- {
- \bool_set_true:N \l_@@_environment_bool
- \str_set:Nx \l_@@_environment_str {#1}
- \@@_get_arg_spec_error_aux:n
- { \cs_if_exist:cTF { \l_@@_environment_str } }
- }
-\cs_new_protected:Npn \@@_get_arg_spec_error_aux:n #1
- {
- #1
- {
- \msg_error:nnx { cmd } { non-xparse }
- { \@@_environment_or_command: }
- }
- {
- \msg_error:nnx { cmd } { unknown }
- { \@@_environment_or_command: }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_get_arg_spec:NTF}
-% If the command is not an \pkg{xparse} command, complain. If it is,
-% its second \enquote{item} is the argument specification.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_get_arg_spec:NTF #1#2#3
- {
- \__kernel_cmd_if_xparse:NTF #1
- {
- \tl_set:Nx \ArgumentSpecification { \tl_item:Nn #1 { 2 } }
- #2
- }
- {#3}
- }
-% \end{macrocode}
-% \end{macro}
-%
-% Rolling forward from 2020-10-01 is tricky because the entire |ltcmd|
-% module is new, but the user-level commands have the same name, so only
-% these will clash. To work around that, in |latexrelease| mode we will
-% (temporarily) disable \cs{__kernel_chk_if_free_cs:N} for this final
-% part of the code, then restore at the end.
-% \begin{macrocode}
-%<latexrelease>\cs_new_eq:NN \@@_chk_if_free_cs:N \__kernel_chk_if_free_cs:N
-%<latexrelease>\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \use_none:n
-% \end{macrocode}
-%
-% \begin{variable}{\ArgumentSpecification}
-% \begin{macrocode}
-\tl_new:N \ArgumentSpecification
-% \end{macrocode}
-% \end{variable}
-%
-% \begin{macro}{\@@_get_arg_spec:N}
-% \begin{macro}{\@@_get_arg_spec:n}
-% Recovering the argument specification is now trivial.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_get_arg_spec:N #1
- {
- \@@_get_arg_spec:NTF #1 { }
- { \@@_get_arg_spec_error:N #1 }
- }
-\cs_new_protected:Npn \@@_get_arg_spec:n #1
- {
- \exp_args:Nc \@@_get_arg_spec:NTF
- { environment~ \tl_to_str:n {#1} }
- { }
- { \@@_get_arg_spec_error:n {#1} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\@@_show_arg_spec:N}
-% \begin{macro}{\@@_show_arg_spec:n}
-% Showing the argument specification simply means finding it and then
-% calling the \cs{tl_show:N} function.
-% \begin{macrocode}
-\cs_new_protected:Npn \@@_show_arg_spec:N #1
- {
- \@@_get_arg_spec:NTF #1
- { \tl_show:N \ArgumentSpecification }
- { \@@_get_arg_spec_error:N #1 }
- }
-\cs_new_protected:Npn \@@_show_arg_spec:n #1
- {
- \exp_args:Nc \@@_get_arg_spec:NTF
- { environment~ \tl_to_str:n {#1} }
- { \tl_show:N \ArgumentSpecification }
- { \@@_get_arg_spec_error:n {#1} }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
% \subsection{Utilities}
%
% \begin{macro}{\@@_check_definable:nNT, \@@_check_definable_aux:nN}
@@ -4817,12 +4709,6 @@
LaTeX~did~not~find~this~argument~and~will~insert~a~default~value~
for~further~processing.
}
-\msg_new:nnnn { cmd } { non-xparse }
- { \str_uppercase:n #1~not~defined~using~xparse. }
- {
- You~have~asked~for~the~argument~specification~for~the~#1,~
- but~this~was~not~defined~using~xparse.
- }
\msg_new:nnnn { cmd } { arg-split }
{ Too~many~'#1'~separators~in~argument. }
{
@@ -4830,12 +4716,6 @@
at~each~occurrence~of~the~separator~'#1'~into~#2~parts.~
Too~many~separators~were~found.
}
-\msg_new:nnnn { cmd } { unknown }
- { Unknown~document~#1. }
- {
- You~have~asked~for~the~argument~specification~for~the~#1,~
- but~it~is~not~defined.
- }
\msg_new:nnnn { cmd } { verbatim-nl }
{ Verbatim-like~#1~ended~by~end~of~line. }
{
@@ -5153,31 +5033,6 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\GetDocumentCommandArgSpec}
-% \begin{macro}{\GetDocumentEnvironmentArgSpec}
-% \begin{macro}{\ShowDocumentCommandArgSpec}
-% \begin{macro}{\ShowDocumentEnvironmentArgSpec}
-% More simple mappings, with a check that the argument is a single
-% control sequence or active character.
-% \begin{macrocode}
-\cs_new_protected:Npn \GetDocumentCommandArgSpec #1
- {
- \@@_check_definable:nNT {#1} \GetDocumentCommandArgSpec
- { \@@_get_arg_spec:N #1 }
- }
-\cs_new_eq:NN \GetDocumentEnvironmentArgSpec \@@_get_arg_spec:n
-\cs_new_protected:Npn \ShowDocumentCommandArgSpec #1
- {
- \@@_check_definable:nNT {#1} \ShowDocumentCommandArgSpec
- { \@@_show_arg_spec:N #1 }
- }
-\cs_new_eq:NN \ShowDocumentEnvironmentArgSpec \@@_show_arg_spec:n
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-% \end{macro}
-%
% Finally as promised, restore \cs{__kernel_chk_if_free_cs:N}:
% \begin{macrocode}
%<latexrelease>\cs_gset_eq:NN \__kernel_chk_if_free_cs:N \@@_chk_if_free_cs:N
diff --git a/macros/latex/base/ltcmdhooks-code.pdf b/macros/latex/base/ltcmdhooks-code.pdf
index 91ad94bbf1..f31b145a3d 100644
--- a/macros/latex/base/ltcmdhooks-code.pdf
+++ b/macros/latex/base/ltcmdhooks-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltcmdhooks-doc.pdf b/macros/latex/base/ltcmdhooks-doc.pdf
index 08d79f4e0a..bb4499d9c3 100644
--- a/macros/latex/base/ltcmdhooks-doc.pdf
+++ b/macros/latex/base/ltcmdhooks-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltexpl.dtx b/macros/latex/base/ltexpl.dtx
index 92e6de52cb..4e5eba550b 100644
--- a/macros/latex/base/ltexpl.dtx
+++ b/macros/latex/base/ltexpl.dtx
@@ -33,7 +33,7 @@
%<*driver>
% \fi
\ProvidesFile{ltexpl.dtx}
- [2022/02/28 v1.3f LaTeX Kernel (expl3-dependent code)]
+ [2023/10/13 v1.3g LaTeX Kernel (expl3-dependent code)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltexpl.dtx}
@@ -516,4 +516,27 @@
%<latexrelease>\EndIncludeInRelease
% \end{macrocode}
%
+% \DescribeMacro\IfExplAtLeastTF
+% A pretty simple wrapper.
+%
+% \begin{macro}{\IfExplAtLeastTF}
+% \changes{v1.3g}{2023/10/13}{Provide a test for \pkg{expl3} date (gh/1004)}
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\IfExplAtLeastTF}{Test for expl3 date}%
+\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate}
+% \end{macrocode}
+% \end{macro}
+% We make sure the command is always available.
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\IfExplAtLeastTF}{Test for expl3 date}%
+%<latexrelease>
+%<latexrelease>\def\IfExplAtLeastTF{\@ifl@t@r\ExplLoaderFileDate}
+%<latexrelease>\EndIncludeInRelease
+% \end{macrocode}
+%
% \Finale
diff --git a/macros/latex/base/ltfilehook-code.pdf b/macros/latex/base/ltfilehook-code.pdf
index 1a78aaec89..ea7c06646a 100644
--- a/macros/latex/base/ltfilehook-code.pdf
+++ b/macros/latex/base/ltfilehook-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltfilehook-doc.pdf b/macros/latex/base/ltfilehook-doc.pdf
index 8ebe83242b..f135c2a8b4 100644
--- a/macros/latex/base/ltfilehook-doc.pdf
+++ b/macros/latex/base/ltfilehook-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltfilehook.dtx b/macros/latex/base/ltfilehook.dtx
index e10a5416e5..ae183bfeb4 100644
--- a/macros/latex/base/ltfilehook.dtx
+++ b/macros/latex/base/ltfilehook.dtx
@@ -32,7 +32,7 @@
%
% \begin{macrocode}
\providecommand\ltfilehookversion{v1.0o}
-\providecommand\ltfilehookdate{2023/04/02}
+\providecommand\ltfilehookdate{2023/07/10}
% \end{macrocode}
%
%<*driver>
@@ -1043,7 +1043,6 @@
%
% \begin{macrocode}
%<@@=>
-\ExplSyntaxOff
% \end{macrocode}
%
% \subsection{Selecting a file (\cs{set@curr@file})}
diff --git a/macros/latex/base/ltfiles.dtx b/macros/latex/base/ltfiles.dtx
index 9b02824197..f079c2cf5b 100644
--- a/macros/latex/base/ltfiles.dtx
+++ b/macros/latex/base/ltfiles.dtx
@@ -1225,7 +1225,7 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2023/05/01}%
+%<latexrelease>\IncludeInRelease{2023/06/01}%
%<latexrelease> {\IfFileExists@}{IfFileExists}
\long\def \IfFileExists@#1#2#3{%
\edef\@filef@und{\IfFileExists@@{#1}}%
diff --git a/macros/latex/base/ltfssaxes.dtx b/macros/latex/base/ltfssaxes.dtx
index 9e68b38654..a0746bd08c 100644
--- a/macros/latex/base/ltfssaxes.dtx
+++ b/macros/latex/base/ltfssaxes.dtx
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssaxes.dtx}
- [2021/03/18 v1.0i LaTeX Kernel (NFSS Axes handing)]
+ [2023/10/30 v1.0i LaTeX Kernel (NFSS Axes handing)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -1240,9 +1240,9 @@
% The next rule might be a bit surprising and rightly so. Correct
% would be that \texttt{sc} is not affected by \texttt{up}, i.e.,
% remains \texttt{sc} as showed in the commented out rule. However,
-% for nearly three decades commands such as \upshape{sc} or
+% for nearly three decades commands such as \cs{sc} or
% \cs{textup} changed small caps back to the ``normal'' shape. So
-% for backward compatibility we keep hat behavior.
+% for backward compatibility we keep that behavior.
%
% As a result you are currently typesetting in \texttt{scit} or
% \texttt{scsl} using \cs{upshape} twice will return you to the
diff --git a/macros/latex/base/ltfssbas.dtx b/macros/latex/base/ltfssbas.dtx
index fda3d1ca4b..fa82bd73bb 100644
--- a/macros/latex/base/ltfssbas.dtx
+++ b/macros/latex/base/ltfssbas.dtx
@@ -35,7 +35,7 @@
%
%
\ProvidesFile{ltfssbas.dtx}
- [2023/04/01 v3.2l LaTeX Kernel (NFSS Basic Macros)]
+ [2023/10/21 v3.2l LaTeX Kernel (NFSS Basic Macros)]
% \iffalse
\documentclass{ltxdoc}
\begin{document}
@@ -279,7 +279,7 @@
% For this we compare the given value \verb=#3= with one where we
% may have dropped an ``m''. If nothing has changes,
% fine. Otherwise there was a wrong value which is now corrected in
-% \cs{reservedb} so we use that and also issue a warning.
+% \cs{reserved@b} so we use that and also issue a warning.
% \changes{v3.2j}{2021/06/09}{Improve information message}
% \begin{macrocode}
\edef\reserved@a{#3}%
diff --git a/macros/latex/base/lthooks-code.pdf b/macros/latex/base/lthooks-code.pdf
index ba8140f1a6..357bdba228 100644
--- a/macros/latex/base/lthooks-code.pdf
+++ b/macros/latex/base/lthooks-code.pdf
Binary files differ
diff --git a/macros/latex/base/lthooks-doc.pdf b/macros/latex/base/lthooks-doc.pdf
index c271b480eb..3be0d9ef92 100644
--- a/macros/latex/base/lthooks-doc.pdf
+++ b/macros/latex/base/lthooks-doc.pdf
Binary files differ
diff --git a/macros/latex/base/lthooks.dtx b/macros/latex/base/lthooks.dtx
index 8f78ecd0c6..20d48730c4 100644
--- a/macros/latex/base/lthooks.dtx
+++ b/macros/latex/base/lthooks.dtx
@@ -32,7 +32,7 @@
%
% \begin{macrocode}
\def\lthooksversion{v1.1f}
-\def\lthooksdate{2023/06/16}
+\def\lthooksdate{2023/10/02}
% \end{macrocode}
%
%<*driver>
@@ -298,10 +298,6 @@
% consumed and any further attempt to add to it will result in
% executing the code to be added immediately.
%
-% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
-% A leading |.| is treated literally. See
-% section~\ref{sec:default-label} for details.
-%
% Using \cs{UseOneTimeHook} several times with the same
% \Arg{hook} means that it only executes the first time it is used.
% For example, if it is used in a command that can be called several times
@@ -311,6 +307,11 @@
% Mixing \cs{UseHook} and \cs{UseOneTimeHook} for the same
% \Arg{hook} should be avoided, but if this is done then neither will execute
% after the first \cs{UseOneTimeHook}.
+%
+% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
+% A leading |.| is treated literally. See
+% section~\ref{sec:default-label} for details.
+%
% \end{function}
%
% \begin{function}{\UseOneTimeHookWithArguments}
@@ -327,6 +328,11 @@
% longer possible to use \cs{AddToHookWithArguments} or similar with
% that hook. \cs{AddToHook} continues to work as normal.
% Section~\ref{sec:hook-args} explains hooks with arguments.
+%
+% The \meta{hook} \emph{cannot} be specified using the dot-syntax.
+% A leading |.| is treated literally. See
+% section~\ref{sec:default-label} for details.
+%
% \end{function}
%
%
@@ -607,7 +613,10 @@
% \meta{hook} arguments, both in the \LaTeXe{} interface, and the \LaTeX3
% interface described in section~\ref{sec:l3hook-interface}.
%
-% Note, however, that the replacement of |.| by the \meta{default label}
+% Note,\marginpar{\raggedleft\rightskip5pt\itshape \textbf{Important:}\break The dot-syntax
+% is \textbf{not} available with
+% \cs{UseHook} and some other commands that are typically used within code!}
+% however, that the replacement of |.| by the \meta{default label}
% takes place when the hook command is executed, so actions that are
% somehow executed after the package ends will have the wrong
% \meta{default label} if the dot-syntax is used. For that reason,
@@ -786,7 +795,7 @@
% \end{itemize}
% There can only be a single relation between two labels for a
% given hook,
-% i.e., a later \cs{DeclareHookrule} overwrites any previous
+% i.e., a later \cs{DeclareHookRule} overwrites any previous
% declaration.
%
% The \meta{hook} and \meta{label} can be specified using the
@@ -1557,8 +1566,8 @@
%
% Generic hooks defined in this way are always normal hooks (i.e.,
% you can't implement reversed hooks this way). This is a
-% deliberate limitation, because it speeds up the processessing
-% conciderably.
+% deliberate limitation, because it speeds up the processing
+% considerably.
%
%
% \subsection{Hooks with arguments}
@@ -1997,8 +2006,9 @@
%
% \item[\hook{begindocument}]
%
-% This hook is added to when using \cs{AtBeginDocument} and it is
-% executed after the \texttt{.aux} file as be read in and most
+% This hook is added to by using \cs{AddToHook}\texttt{\{begindocument\}}
+% or by using \cs{AtBeginDocument} and it is
+% executed after the \texttt{.aux} file has been read and most
% initialization are done, so they can be altered and inspected by
% the hook code. It is followed by a small number of further
% initializations that shouldn't be altered and are therefore
diff --git a/macros/latex/base/ltluatex.dtx b/macros/latex/base/ltluatex.dtx
index 135cb63009..6d274ed5c3 100644
--- a/macros/latex/base/ltluatex.dtx
+++ b/macros/latex/base/ltluatex.dtx
@@ -28,7 +28,7 @@
\ProvidesFile{ltluatex.dtx}
%</driver>
%<*tex>
-[2023/01/19 v1.2b
+[2023/08/03 v1.2c
%</tex>
%<plain> LuaTeX support for plain TeX (core)
%<*tex>
@@ -1284,6 +1284,7 @@ luatexbase.new_chunkname = new_chunkname
%
% \begin{macro}{new_luafunction}
% \changes{v1.1i}{2018/10/21}{Function added}
+% \changes{v1.2c}{2023/07/02}{Ensure existing table entries not overwritten gh/1100}
% Much the same as for attribute allocation in Lua.
% The optional \meta{name} argument is used in the log if given.
% \begin{macrocode}
@@ -1291,7 +1292,11 @@ local luafunction_count_name =
luafunction_count_name or "e@alloc@luafunction@count"
local function new_luafunction(name)
tex_setcount("global", luafunction_count_name,
- tex_count[luafunction_count_name] + 1)
+ math.max(
+ #(lua.get_functions_table()),
+ tex_count[luafunction_count_name])
+ + 1)
+ lua.get_functions_table()[tex_count[luafunction_count_name]] = false
if tex_count[luafunction_count_name] > 65534 then
luatexbase_error("No room for a new luafunction register")
end
@@ -2147,12 +2152,13 @@ luatexbase.uninstall = uninstall
% \begin{macro}{mlist_to_hlist}
% \changes{v1.1l}{2020/02/02}{|pre/post_mlist_to_hlist| added}
% \changes{v1.1y}{2022/08/13}{Use shared\_callback system for pre/post/mlist_to_hlist}
+% \changes{v1.2c}{2023/08/03}{Fix callback type of post_mlist_to_hlist_callback}
% To emulate these callbacks, the ``real'' |mlist_to_hlist| is replaced by a
% wrapper calling the wrappers before and after.
% \begin{macrocode}
create_callback('pre_mlist_to_hlist_filter', 'list')
create_callback('mlist_to_hlist', 'exclusive', node.mlist_to_hlist)
-create_callback('post_mlist_to_hlist_filter', 'list')
+create_callback('post_mlist_to_hlist_filter', 'reverselist')
function shared_callbacks.mlist_to_hlist.handler(head, display_type, need_penalties)
local current = call_callback("pre_mlist_to_hlist_filter", head, display_type, need_penalties)
if current == false then
diff --git a/macros/latex/base/ltluatex.pdf b/macros/latex/base/ltluatex.pdf
index 23f80ce8cb..d523e3d3ea 100644
--- a/macros/latex/base/ltluatex.pdf
+++ b/macros/latex/base/ltluatex.pdf
Binary files differ
diff --git a/macros/latex/base/ltmarks-code.pdf b/macros/latex/base/ltmarks-code.pdf
index acc4a4fd07..b2e54b6915 100644
--- a/macros/latex/base/ltmarks-code.pdf
+++ b/macros/latex/base/ltmarks-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltmarks-doc.pdf b/macros/latex/base/ltmarks-doc.pdf
index 5ed0b04298..ce69138e07 100644
--- a/macros/latex/base/ltmarks-doc.pdf
+++ b/macros/latex/base/ltmarks-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltmiscen.dtx b/macros/latex/base/ltmiscen.dtx
index 801d1e6862..74a9685f1f 100644
--- a/macros/latex/base/ltmiscen.dtx
+++ b/macros/latex/base/ltmiscen.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltmiscen.dtx}
- [2022/11/06 v1.2a LaTeX Kernel (Misc. Environments)]
+ [2023/09/13 v1.2c LaTeX Kernel (Misc. Environments)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltmiscen.dtx}
@@ -194,8 +194,8 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease> {\enddocument}{Use Hooks}%
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\enddocument}{check property labels}%
\def\enddocument{%
% \end{macrocode}
% The |\end{document}| hook is executed first. If necessary it can
@@ -230,6 +230,10 @@
\let\@setckpt\@gobbletwo
\let\@newl@bel\@testdef
% \end{macrocode}
+% \changes{v1.2b}{2023/09/06}{Test changes of values in \cs{new@label@record}}
+% \begin{macrocode}
+ \let\new@label@record\@kernel@new@label@record@testdef
+% \end{macrocode}
% \changes{v1.0z}{1995/07/13}{Shorten redefinition of \cs{bibcite} and
% \cs{newlabel}}
% The previous line is equiv to setting
@@ -357,6 +361,67 @@
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\enddocument}{Use Hooks}%
+%<latexrelease>\def\enddocument{%
+%<latexrelease> \@kernel@before@enddocument
+%<latexrelease> \UseOneTimeHook{enddocument}%
+%<latexrelease> \@kernel@after@enddocument
+%<latexrelease> \@checkend{document}%
+%<latexrelease> \clearpage
+%<latexrelease> \UseOneTimeHook{enddocument/afterlastpage}%
+%<latexrelease> \@kernel@after@enddocument@afterlastpage
+%<latexrelease> \begingroup
+%<latexrelease> \if@filesw
+%<latexrelease> \immediate\closeout\@mainaux
+%<latexrelease> \let\@setckpt\@gobbletwo
+%<latexrelease> \let\@newl@bel\@testdef
+%<latexrelease> \@tempswafalse
+%<latexrelease> \makeatletter \@@input\jobname.aux
+%<latexrelease> \fi
+%<latexrelease> \UseOneTimeHook{enddocument/afteraux}%
+%<latexrelease> \UseOneTimeHook{enddocument/info}%
+%<latexrelease> \endgroup
+%<latexrelease> \UseOneTimeHook{enddocument/end}%
+%<latexrelease> \deadcycles\z@\@@end}
+%<latexrelease>\NewHook{enddocument}
+%<latexrelease>\NewHook{enddocument/afterlastpage}
+%<latexrelease>\NewHook{enddocument/afteraux}
+%<latexrelease>\NewHook{enddocument/info}
+%<latexrelease>\NewHook{enddocument/end}
+%<latexrelease>\AddToHook{enddocument/info}[kernel/filelist]{\@dofilelist}
+%<latexrelease>\AddToHook{enddocument/info}[kernel/warnings]{\@enddocument@kernel@warnings}
+%<latexrelease>\AddToHook{enddocument/info}[kernel/release]{%
+%<latexrelease> \let\show@release@info\wlog
+%<latexrelease> \show@release@info{ ***********}%
+%<latexrelease> \the\LaTeXReleaseInfo
+%<latexrelease> \show@release@info{ ***********}}
+%<latexrelease>
+%<latexrelease>\DeclareHookRule{enddocument/info}{kernel/release}{before}{kernel/filelist}
+%<latexrelease>\DeclareHookRule{enddocument/info}{kernel/filelist}{before}{kernel/warnings}
+%<latexrelease>\def\@enddocument@kernel@warnings{%
+%<latexrelease> \ifdim \font@submax >\fontsubfuzz\relax
+%<latexrelease> \@font@warning{Size substitutions with differences\MessageBreak
+%<latexrelease> up to \font@submax\space have occurred.\@gobbletwo}%
+%<latexrelease> \fi
+%<latexrelease> \@defaultsubs
+%<latexrelease> \@refundefined
+%<latexrelease> \if@filesw
+%<latexrelease> \ifx \@multiplelabels \relax
+%<latexrelease> \if@tempswa
+%<latexrelease> \@latex@warning@no@line{Label(s) may have changed.
+%<latexrelease> Rerun to get cross-references right}%
+%<latexrelease> \fi
+%<latexrelease> \else
+%<latexrelease> \@multiplelabels
+%<latexrelease> \fi
+%<latexrelease> \ifx \@extra@page@added \relax
+%<latexrelease> \@latex@warning@no@line{Temporary extra page added at the end.
+%<latexrelease> Rerun to get it removed}%
+%<latexrelease> \fi
+%<latexrelease> \fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{0000/00/00}%
%<latexrelease> {\enddocument}{Use Hooks}%
%<latexrelease>
@@ -496,8 +561,7 @@
\protected\def\protected@file@percent{}
% \end{macrocode}
% \end{macro}
-
-
+%
% \begin{macro}{\add@percent@to@temptokena}
% Helper function which is used to inspect a sequence of tokens
% (the second argument of \cs{@writefile} and it the last token is
@@ -1189,11 +1253,33 @@
% print as the \TeX{}book's space character instead of as blank spaces.
%
% \begin{macro}{\@vobeyspaces}
+% \changes{v1.2b}{2023/06/15}{Support tabs}
+% \begin{macro}{\@vobeytabs}
+% \changes{v1.2b}{2023/06/14}{Macro added}
+% \changes{v1.2c}{2023/09/01}{Provide global definition for active tab}
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@vobeytabs}{Obeyed tabs}%
+%<*2ekernel|latexrelease>
{\catcode`\ =\active%
-\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
+\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp\@vobeytabs}}
+{\catcode`\^^I=\active
+\gdef\@vobeytabs{\catcode`\^^I\active\let^^I\@xobeytab}%
+\global\let^^I=\space
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@vobeytabs}{Obeyed tabs}%
+%<latexrelease>{\catcode`\ =\active%
+%<latexrelease>\gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
+%<latexrelease>\let\@vobeytabs\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
% \end{macro}
+% \end{macro}
%
% \begin{macro}{\@xobeysp}
% \changes{v1.0z}{1995/07/13}{Use \cs{nobreak}}
@@ -1368,44 +1454,8 @@
% \end{macro}
%
%
-
-% \begin{macro}{\@setupverbvisiblespace}
-%
-% In pdf\TeX{} a catcode 12 space will produce the character in
-% slot 32 which is assumed to be a visible space character (in a
-% typewriter font in OT1 or T1 encoding). In Xe\TeX{} or Lua\TeX{} a
-% font in TU encoding is normally used and that has a real space in
-% this slot. So what we do in this case is this: we check the
-% definition of
-% |\verbvisiblespace| and if it is |\asciispace| we assume that the
-% char32 can be used (e.g., in pdf\TeX{}). We then redefine
-% |\@xobeysp| so that after running |\@vobeyspaces| we get
-% characters from slot 32 for each active space.
-%
-% \changes{v1.1o}{2018/10/11}
-% {Provide visible space in \cs{verb*} also for XeTeX and LuaTeX (github/69)}
-% \begin{macrocode}
-\def\@setupverbvisiblespace{%
- \ifx\verbvisiblespace\asciispace
- \let\@xobeysp\asciispace
- \else
-% \end{macrocode} Otherwise we measure the width of a character in
-% the mon-spaced current font and place a
-% |\verbvisiblespace| into a box of the right width which we are then
-% using as the character for a space. By default this will be the space
-% character from OT1 cmtt but by changing
-% |\verbvisiblespace| one could use, for example, the |\textvisiblespace|
-% of the current typewriter font.
-% \begin{macrocode}
- \setbox\z@\hbox{x}%
- \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}%
- \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}%
- \fi
-}
-% \end{macrocode}
-% \end{macro}
+% ^^A \@setupverbvisiblespace was here
%
-
% \begin{macro}{\@verbvisiblespacebox}
% The box to hold the visible space character if it isn't in slot
% 32 in the current typewriter font.
@@ -1426,6 +1476,8 @@
% check if space is already active---it shouldn't be.
% \changes{v1.1o}{2018/10/11}
% {Provide visible space in \cs{verb*} also for XeTeX and LuaTeX (github/69)}
+% \changes{v1.2b}{2023/06/14}
+% {Support visible tabs in \cs{verb*}}
% \begin{macrocode}
\@namedef{verbatim*}{\@verbatim
\@setupverbvisiblespace
@@ -1434,8 +1486,6 @@
% \end{macrocode}
% \end{environment}
%
-%
-%
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
@@ -1452,7 +1502,88 @@
%<*2ekernel>
% \end{macrocode}
%
+% \begin{macro}{\@setupverbvisiblespace}
%
+% In pdf\TeX{} a catcode 12 space will produce the character in
+% slot 32 which is assumed to be a visible space character (in a
+% typewriter font in OT1 or T1 encoding). In Xe\TeX{} or Lua\TeX{} a
+% font in TU encoding is normally used and that has a real space in
+% this slot. So what we do in this case is this: we check the
+% definition of
+% |\verbvisiblespace| and if it is |\asciispace| we assume that the
+% char32 can be used (e.g., in pdf\TeX{}). We then redefine
+% |\@xobeysp| so that after running |\@vobeyspaces| we get
+% characters from slot 32 for each active space.
+%
+% \changes{v1.1o}{2018/10/11}
+% {Provide visible space in \cs{verb*} also for XeTeX and LuaTeX (github/69)}
+% \changes{v1.2b}{2023/06/15}
+% {Support visible tabs}
+% \begin{macrocode}
+%</2ekernel>
+%<*2ekernel|latexrelease>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@setupverbvisiblespace}{Setup visible tab for \verb}%
+\def\@setupverbvisiblespace{%
+ \ifx\verbvisiblespace\asciispace
+ \let\@xobeysp\asciispace
+ \else
+% \end{macrocode}
+% Otherwise we measure the width of a character in
+% the mono-spaced current font and place a
+% |\verbvisiblespace| into a box of the right width which we are then
+% using as the character for a space. By default this will be the space
+% character from OT1 cmtt but by changing
+% |\verbvisiblespace| one could use, for example, the |\textvisiblespace|
+% of the current typewriter font.
+% \begin{macrocode}
+ \setbox\z@\hbox{x}%
+ \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}%
+ \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}%
+ \fi
+ \@setupverbvisibletab
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2018/12/01}%
+%<latexrelease> {\@setupverbvisiblespace}{Setup visible space for \verb}%
+%<latexrelease>\def\@setupverbvisiblespace{%
+%<latexrelease> \ifx\verbvisiblespace\asciispace
+%<latexrelease> \let\@xobeysp\asciispace
+%<latexrelease> \else
+%<latexrelease> \setbox\z@\hbox{x}%
+%<latexrelease> \setbox\@verbvisiblespacebox\hbox to\wd\z@{\hss\verbvisiblespace\hss}%
+%<latexrelease> \def\@xobeysp{\leavevmode\copy\@verbvisiblespacebox}%
+%<latexrelease> \fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@setupverbvisiblespace}{Setup visible space for \verb}%
+%<latexrelease>\let\@setupverbvisiblespace\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@setupverbvisibletab}
+% \changes{v1.2q}{2023/06/15}
+% {Provide visible tab in \cs{verb*}}
+% A redirection: just a simple wrapper.
+% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@setupverbvisibletab}{Setup visible tab for \verb}%
+%<*2ekernel|latexrelease>
+\def\@setupverbvisibletab{\let\@xobeytab\@xobeysp}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@setupverbvisibletab}{Setup visible tab for \verb}%
+%<latexrelease>\let\@setupverbvisibletab\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
+% \end{macrocode}
+% \end{macro}
%
% \begin{macro}{\@sverb}
% \begin{macro}{\@@sverb}
@@ -1464,8 +1595,8 @@
% \begin{macrocode}
%</2ekernel>
%<*2ekernel|latexrelease>
-%<latexrelease>\IncludeInRelease{2020/10/01}%
-%<latexrelease> {\@sverb}{Drop spaces before \verb delimiter}%
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@sverb}{Support visible tabs}%
% \end{macrocode}
%
% If the users types \verb=\verb !~! foo= then surprisingly we would
@@ -1496,8 +1627,13 @@
% it the definition for the active space character.
% \changes{v1.1o}{2018/10/11}
% {Provide visible space in \cs{verb*} also for XeTeX and LuaTeX (github/69)}
+% \changes{v1.2b}{2023/06/15}
+% {Support visible tabs}
% \begin{macrocode}
- \ifnum\catcode`\ =\active
+ \ifnum0%
+ \ifnum\catcode`\ =\active\else 1\fi
+ \ifnum\catcode`\^^I=\active\else 1\fi
+ =0 %
\else \@setupverbvisiblespace \@vobeyspaces \fi
}
% \end{macrocode}
@@ -1505,6 +1641,19 @@
% \begin{macrocode}
%</2ekernel|latexrelease>
%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{2020/10/01}%
+%<latexrelease> {\@sverb}{Drop spaces before \verb delimiter}%
+%<latexrelease>\def\@@sverb#1{%
+%<latexrelease> \catcode`#1\active
+%<latexrelease> \lccode`\~`#1%
+%<latexrelease> \gdef\verb@balance@group{\verb@egroup
+%<latexrelease> \@latex@error{\noexpand\verb illegal in argument}\@ehc}%
+%<latexrelease> \aftergroup\verb@balance@group
+%<latexrelease> \lowercase{\let~\verb@egroup}%
+%<latexrelease> \ifnum\catcode`\ =\active
+%<latexrelease> \else \@setupverbvisiblespace \@vobeyspaces \fi
+%<latexrelease>}
+%<latexrelease>\EndIncludeInRelease
%<latexrelease>\IncludeInRelease{2018/12/01}%
%<latexrelease> {\@sverb}{Setup visible space for \verb}%
%<latexrelease>
diff --git a/macros/latex/base/ltnews.pdf b/macros/latex/base/ltnews.pdf
index c95766d1b7..c4db47e2e1 100644
--- a/macros/latex/base/ltnews.pdf
+++ b/macros/latex/base/ltnews.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews.tex b/macros/latex/base/ltnews.tex
index d239fc274f..0cb6ad55cc 100644
--- a/macros/latex/base/ltnews.tex
+++ b/macros/latex/base/ltnews.tex
@@ -40,7 +40,7 @@
\ProvidesFile{ltnews.tex}%
[2022/06/10 v1.4e Master file for ltnews*.tex (LaTeX Project)]
-\providecommand*{\lastissue}{37}
+\providecommand*{\lastissue}{38}
\InputIfFileExists{ltnews-lastissue.cfg}{}{}
diff --git a/macros/latex/base/ltnews01.pdf b/macros/latex/base/ltnews01.pdf
index c02ecc8850..cc27a40283 100644
--- a/macros/latex/base/ltnews01.pdf
+++ b/macros/latex/base/ltnews01.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews02.pdf b/macros/latex/base/ltnews02.pdf
index e28e51abe1..8bf08308cf 100644
--- a/macros/latex/base/ltnews02.pdf
+++ b/macros/latex/base/ltnews02.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews03.pdf b/macros/latex/base/ltnews03.pdf
index ca84edebb2..22c5d06530 100644
--- a/macros/latex/base/ltnews03.pdf
+++ b/macros/latex/base/ltnews03.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews04.pdf b/macros/latex/base/ltnews04.pdf
index 0d6aae69ab..c7e38be796 100644
--- a/macros/latex/base/ltnews04.pdf
+++ b/macros/latex/base/ltnews04.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews05.pdf b/macros/latex/base/ltnews05.pdf
index 2495387708..2bfbc5203c 100644
--- a/macros/latex/base/ltnews05.pdf
+++ b/macros/latex/base/ltnews05.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews06.pdf b/macros/latex/base/ltnews06.pdf
index a4add5f134..002b4628cd 100644
--- a/macros/latex/base/ltnews06.pdf
+++ b/macros/latex/base/ltnews06.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews07.pdf b/macros/latex/base/ltnews07.pdf
index 03553e8991..df61b0c0eb 100644
--- a/macros/latex/base/ltnews07.pdf
+++ b/macros/latex/base/ltnews07.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews08.pdf b/macros/latex/base/ltnews08.pdf
index 48c0387289..8214a4b51e 100644
--- a/macros/latex/base/ltnews08.pdf
+++ b/macros/latex/base/ltnews08.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews09.pdf b/macros/latex/base/ltnews09.pdf
index 14664f9631..902e595af4 100644
--- a/macros/latex/base/ltnews09.pdf
+++ b/macros/latex/base/ltnews09.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews10.pdf b/macros/latex/base/ltnews10.pdf
index 6ddb248e51..ba8b2b7344 100644
--- a/macros/latex/base/ltnews10.pdf
+++ b/macros/latex/base/ltnews10.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews11.pdf b/macros/latex/base/ltnews11.pdf
index 0cfbd4c631..170e28d7a4 100644
--- a/macros/latex/base/ltnews11.pdf
+++ b/macros/latex/base/ltnews11.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews12.pdf b/macros/latex/base/ltnews12.pdf
index eb6f956288..03d8a54107 100644
--- a/macros/latex/base/ltnews12.pdf
+++ b/macros/latex/base/ltnews12.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews13.pdf b/macros/latex/base/ltnews13.pdf
index 81e503d9be..b626a354ea 100644
--- a/macros/latex/base/ltnews13.pdf
+++ b/macros/latex/base/ltnews13.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews14.pdf b/macros/latex/base/ltnews14.pdf
index 5d7fd76410..3fc0e8c4a7 100644
--- a/macros/latex/base/ltnews14.pdf
+++ b/macros/latex/base/ltnews14.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews15.pdf b/macros/latex/base/ltnews15.pdf
index e8c79bdc3a..2f938fc524 100644
--- a/macros/latex/base/ltnews15.pdf
+++ b/macros/latex/base/ltnews15.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews16.pdf b/macros/latex/base/ltnews16.pdf
index 6929abe599..8bee08869f 100644
--- a/macros/latex/base/ltnews16.pdf
+++ b/macros/latex/base/ltnews16.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews17.pdf b/macros/latex/base/ltnews17.pdf
index d61986c987..fd22f3e20a 100644
--- a/macros/latex/base/ltnews17.pdf
+++ b/macros/latex/base/ltnews17.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews18.pdf b/macros/latex/base/ltnews18.pdf
index c45ce489ce..cb3d992d88 100644
--- a/macros/latex/base/ltnews18.pdf
+++ b/macros/latex/base/ltnews18.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews19.pdf b/macros/latex/base/ltnews19.pdf
index 00b9942605..8c7fef291f 100644
--- a/macros/latex/base/ltnews19.pdf
+++ b/macros/latex/base/ltnews19.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews20.pdf b/macros/latex/base/ltnews20.pdf
index b30f5cea8f..1e3f7bbf7e 100644
--- a/macros/latex/base/ltnews20.pdf
+++ b/macros/latex/base/ltnews20.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews21.pdf b/macros/latex/base/ltnews21.pdf
index 1a42b64807..337869f93e 100644
--- a/macros/latex/base/ltnews21.pdf
+++ b/macros/latex/base/ltnews21.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews22.pdf b/macros/latex/base/ltnews22.pdf
index e33218e80a..276644765a 100644
--- a/macros/latex/base/ltnews22.pdf
+++ b/macros/latex/base/ltnews22.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews23.pdf b/macros/latex/base/ltnews23.pdf
index e61131c806..2c4f701092 100644
--- a/macros/latex/base/ltnews23.pdf
+++ b/macros/latex/base/ltnews23.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews24.pdf b/macros/latex/base/ltnews24.pdf
index 97198edd5a..eac6c0c552 100644
--- a/macros/latex/base/ltnews24.pdf
+++ b/macros/latex/base/ltnews24.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews25.pdf b/macros/latex/base/ltnews25.pdf
index 0210784c0a..487826d5d5 100644
--- a/macros/latex/base/ltnews25.pdf
+++ b/macros/latex/base/ltnews25.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews26.pdf b/macros/latex/base/ltnews26.pdf
index 1a2ca7d552..b4033bc8f5 100644
--- a/macros/latex/base/ltnews26.pdf
+++ b/macros/latex/base/ltnews26.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews27.pdf b/macros/latex/base/ltnews27.pdf
index 6fbdbacd6c..e9aedc8be7 100644
--- a/macros/latex/base/ltnews27.pdf
+++ b/macros/latex/base/ltnews27.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews28.pdf b/macros/latex/base/ltnews28.pdf
index d9bfd13c15..fcc6a0797b 100644
--- a/macros/latex/base/ltnews28.pdf
+++ b/macros/latex/base/ltnews28.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews29.pdf b/macros/latex/base/ltnews29.pdf
index e8ca694ce4..9c29d4cb19 100644
--- a/macros/latex/base/ltnews29.pdf
+++ b/macros/latex/base/ltnews29.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews30.pdf b/macros/latex/base/ltnews30.pdf
index 79e55868c2..cecd625638 100644
--- a/macros/latex/base/ltnews30.pdf
+++ b/macros/latex/base/ltnews30.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews31.pdf b/macros/latex/base/ltnews31.pdf
index c5f601fdfc..d8f120c891 100644
--- a/macros/latex/base/ltnews31.pdf
+++ b/macros/latex/base/ltnews31.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews32.pdf b/macros/latex/base/ltnews32.pdf
index d859dde5f0..71ad0309e1 100644
--- a/macros/latex/base/ltnews32.pdf
+++ b/macros/latex/base/ltnews32.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews33.pdf b/macros/latex/base/ltnews33.pdf
index 133dfde137..0e32c23c80 100644
--- a/macros/latex/base/ltnews33.pdf
+++ b/macros/latex/base/ltnews33.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews34.pdf b/macros/latex/base/ltnews34.pdf
index 8c0b7bb996..c2721f2c55 100644
--- a/macros/latex/base/ltnews34.pdf
+++ b/macros/latex/base/ltnews34.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews35.pdf b/macros/latex/base/ltnews35.pdf
index adb182f7eb..7b221cca29 100644
--- a/macros/latex/base/ltnews35.pdf
+++ b/macros/latex/base/ltnews35.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews36.pdf b/macros/latex/base/ltnews36.pdf
index e084426828..7bd4c0d29d 100644
--- a/macros/latex/base/ltnews36.pdf
+++ b/macros/latex/base/ltnews36.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews37.pdf b/macros/latex/base/ltnews37.pdf
index 2abb7b1415..0de6516335 100644
--- a/macros/latex/base/ltnews37.pdf
+++ b/macros/latex/base/ltnews37.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews37.tex b/macros/latex/base/ltnews37.tex
index 5527975c54..3adda3ea90 100644
--- a/macros/latex/base/ltnews37.tex
+++ b/macros/latex/base/ltnews37.tex
@@ -585,7 +585,7 @@ class option \texttt{doc2}. This has now been corrected.
-\subsection{Improve spacing at top of \env{minipages}}
+\subsection{Improve spacing at top of \env{minipage}s}
A list and several other document elements add some vertical space in
front of them. However this should not happen at the beginning of a
diff --git a/macros/latex/base/ltnews38.pdf b/macros/latex/base/ltnews38.pdf
new file mode 100644
index 0000000000..3929f78180
--- /dev/null
+++ b/macros/latex/base/ltnews38.pdf
Binary files differ
diff --git a/macros/latex/base/ltnews38.tex b/macros/latex/base/ltnews38.tex
new file mode 100644
index 0000000000..04ffe1a0ed
--- /dev/null
+++ b/macros/latex/base/ltnews38.tex
@@ -0,0 +1,602 @@
+% \iffalse meta-comment
+%
+% Copyright 2023
+% 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: ltnews38.tex
+%
+% This is issue 38 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
+ \else
+ % githubissue preceding
+ \vskip-\smallskipamount
+ \vskip-\parskip
+ \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
+
+
+\let\finalpagebreak\pagebreak % for TUB (if they use it)
+
+\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{November}
+%\publicationyear{2023 --- DRAFT version for upcoming release}
+\publicationyear{2023}
+
+\publicationissue{38}
+
+\begin{document}
+
+\tubcommand{\addtolength\textheight{4.2pc}} % only for TUB
+
+\maketitle
+{\hyphenpenalty=10000 \exhyphenpenalty=10000 \spaceskip=3.33pt \hbadness=10000
+\tableofcontents}
+
+\setlength\rightskip{0pt plus 3em}
+
+\medskip
+
+%\section{Introduction}
+
+
+\section{News from the \enquote{\LaTeX{} Tagged PDF} project}
+
+The multi-year project to automatically tag \LaTeX{} documents in
+order to make them accessible~\cite{38:blueprint} is progressing
+steadily (at this point in time mainly as experimental
+\texttt{latex-lab} code).
+
+Just recently we added support for automatic tagging of tabular
+structures including environments from \pkg{tabularx} and
+\pkg{longtable}. The code is still in its early stages and lacks
+configuration possibilities\Dash these will be added in the future.
+
+\subsection{Approaching an important milestone}
+
+Nevertheless, with this new addition we are more or less able to
+automatically tag any document that confines itself to the commands
+and environments described in Leslie Lamport's \emph{\LaTeX{}
+Manual}~\cite{38:Lamport} by simply adding a single configuration line
+at the top.
+
+In addition, a number of extension packages that go beyond Lamport are
+already supported, most importantly perhaps \pkg{amsmath} (providing
+extended math capabilities) and \pkg{hyperref} (enhancing \LaTeX{}
+with interactive hyperlinking features).
+\finalpagebreak
+Also already supported are
+some of the major bibliography support packages such as \pkg{natbib}
+and \pkg{biblatex}.
+
+For now activation is done through the line
+\begin{verbatim}
+\DocumentMetadata
+ {testphase={phase-III,math,tabular}}
+\end{verbatim}
+The math and the tabular support are not yet incorporated into
+\texttt{phase-III} but need their own activation, so that we can
+better experiment with additions and code adjustments.
+
+The \texttt{latex-lab} bundle contains various (still untagged)
+documentation files about the new code that can be accessed with
+\verb|texdoc -l latex-lab|.
+
+\subsection{A GitHub repository dedicated to the project}
+
+We have also started a new GitHub repository mainly intended for
+reporting issues, and offering a platform for discussions. For
+example, there is one discussion on ways to extend the \LaTeX{}
+\env{tabular} syntax to allow describing the logical structure of
+tables (e.g., which cells are header cells, etc.).
+
+Having all issues and discussions related to the project in a single
+place instead of being spread across multiple repositories such as
+\pkg{latex2e}, \pkg{latex3}, \pkg{tagpdf}, \pkg{hyperref},
+\pkg{pdfresources}, etc., helps people to find information easily
+and report any issue related to the project without needing to know in which
+code repository the problematic code resides.
+
+You find this repository at
+\url{https://github.com/latex3/tagging-project} and the mentioned
+discussion on \env{tabular} syntax at
+\url{https://github.com/latex3/tagging-project/discussions/1}.
+
+Your feedback is important and reporting what doesn't yet work is
+beneficial to all users, so we hope to see you there and thank you for
+any contribution, whether it is an issue or a post on a discussion
+thread.
+
+
+\section{Hooks, sockets and plugs}
+
+In previous releases of \LaTeX{} we introduced the general concept of
+hooks (both specific and generic ones). These are places in the
+code into which different packages (or the user in the document
+preamble) can safely add their own code to extend the functionality of
+existing commands and environments without the need to overwrite or
+patch them in incompatible ways. An important feature of such hooks is
+that the code chunks added by different packages can be ordered by
+rules, if necessary,
+\finalpagebreak
+thereby avoiding problems arising from
+differences in package loading order. See \LaTeX{} News issues
+32--34~\cite{38:ltnews} for more information.
+
+However, sometimes you need a kind of \enquote{hook} into which only a
+single chunk of code is placed at any time.\footnote{While this is in
+theory possible to model with the existing hook mechanism, it is
+inefficient and cumbersome.} For example, there is code that
+implements footnote placement in relation to bottom floats (above or
+below them). But at any time in the document only one such placement
+code can be in force. Or consider the extra code needed for making
+\LaTeX{} documents accessible (e.g., adding tags to the PDF
+output). Such code is either there (perhaps in alternative versions)
+or not at all, but it cannot have code from other packages added at
+the same point interfering with the algorithm.
+
+For these use cases we now introduce the concept of sockets and plugs.
+A socket is a place in the code into which one can put a plug (a
+chunk of code with a name) after which the socket is in use; to put in
+a different plug, the former one has to be taken out
+first.\footnote{Think of electric outlets and plugging something into
+them.} A socket may or may not have inputs that can then be used by
+the plugs.
+%
+While this is technically not much different to putting a command in
+the code and at some point alter its definition, the advantage is that
+this offers a consistent interface, allows for status information,
+supports tracing, etc.
+
+You declare a new socket and possibly some plugs for it with
+\begin{flushleft}
+ \cs{NewSocket}\Arg{socket name}\Arg{\# of inputs} \\
+ \cs{NewSocketPlug}\Arg{socket name}\Arg{plug name}\Arg{code}
+\end{flushleft}
+For example, after the declaration \verb=\NewSocket{foo}{0}= you can
+immediately use this socket in your code with \verb=\UseSocket{foo}=.
+The \cs{NewSocket} declaration automatically defines a simple plug
+with the name \texttt{noop} for the socket and assigns it to the socket
+(plugs it in), thus your \cs{UseSocket} sits idle doing
+nothing\footnote{Sockets with one input also define an
+\texttt{identity} plug and initially assign that to the socket\Dash
+this means that their input is simply returned without processing.}
+until you assign it a different plug, which is done with
+\cs{AssignSocketPlug}. This takes the current plug out and puts the
+new one in.
+%
+All the declarations and commands are also available in the \LaTeX3
+programming layer as \cs{socket\_new:nn}, \cs{socket\_new\_plug:nnn},
+etc.
+
+With this concept we can, for example, add tagging support for the
+\enquote{\LaTeX{} Tagged PDF} project to various packages without
+altering their behavior if the tagging code is inactive. Activating
+one or the other form of tagging then just means to assign named plugs
+to the different sockets.
+
+This is just a brief introduction to the mechanism; for more detailed
+documentation see \texttt{texdoc ltsockets-doc}.
+
+
+\finalpagebreak
+
+\section{Document properties and cross-referencing}
+
+Traditional \LaTeX{} uses \cs{label}\Arg{key} to record the values of two
+\enquote{local} properties of the document: the textual
+representations of the \emph{current page number} and the
+\emph{current \textup{\cs{ref}} value} set by \cs{refstepcounter}
+declarations~\cite[p.~209]{38:Lamport}. (These declarations are
+issued, for example, by sectioning commands, by numbered environments
+like \env{equation}, and by \cs{item} in an \env{enumerate} or
+similar environment.)
+
+These two recorded values can then be accessed and typeset (from
+anywhere in the next run of the document) by use of the
+(non-expandable) commands \cs{ref} and \cs{pageref} using the
+\emph{key} that was specified as the argument to \cs{label} when
+recording these values. This supported basic cross-referencing
+(within a document), using these recorded values to provide both
+page-related and counter-related information (such as the page xvii or
+the subsection number 4.5.2).\footnote{In the Spring 2023 release of
+\LaTeX{}, the \cs{label} command was extended to record, in addition,
+both a title (such as the text used in a section head) and the
+\emph{logical name} used for an associated link target provided these
+have been set by packages such as \pkg{nameref} or \pkg{hyperref}.}
+
+
+Over the years \LaTeX{} packages have appeared that extend
+this basic \enquote{label-ref system} in various ways.
+%
+For example, the \pkg{refcount} package made a small but significant change
+to the functions used to access recorded values, by making them expandable.
+And the \pkg{smart-ref} package supports the storage of a larger
+collection of counter values so that, for example, a cross-reference
+can refer to the relevant chapter together with an equation tag.
+The \pkg{cleveref} package stores (by means of a second, internal
+\enquote{logical label}) extra information such as the name of the counter.
+The \pkg{hyperref} package adds the \cs{autoref} command, which
+tries to retrieve the name of a counter from the \emph{logical name}
+used for a link target.
+The \pkg{tikzmarks} library records information about
+ \emph{labelled positions} on the page when using \pkg{tikz}.
+Finally, the \pkg{zref} package implements many related ideas, including a general
+idea of properties and lists of properties, with methods to record, and
+subsequently access, the value of any declared property.
+
+
+Starting with this release, the \LaTeX{} kernel provides handling of
+general document properties as a core functionality with standard
+interfaces.
+%
+This is based on concepts introduced by the \pkg{zref} package but
+with some differences in detail, particularly in the implementation.
+It supports the declaration of new properties, and the recording of
+the values of any list of properties. These values are retrieved
+expandably.
+
+To set up a new property that is the current chapter
+number, for example, here is the declaration to use.
+\begin{verbatim}
+ \NewProperty{chapter}{now}{?}{\thechapter}
+\end{verbatim}
+\par\finalpagebreak\noindent
+The second argument means that the property value will be recorded
+immediately (\enquote{now}), and not \enquote{during the next
+ \cs{shipout}}. The third argument sets a default to be used when,
+for example, an unknown label is supplied.
+%
+The final argument contains the code that will, as part of the
+recording process, be expanded to obtain the value to record for this
+property.
+
+Then, to record the value of this new property,
+together with others, use this command.
+\begin{verbatim}
+ \RecordProperties{mylabel}
+ {chapter,page,label}
+\end{verbatim}
+This records the current values for the properties \texttt{chapter},
+\texttt{page}, and \texttt{label}, using \texttt{mylabel} as the
+label, or \emph{key}, for the record.
+
+To \emph{reference} (i.e., retrieve) this recorded value for use in a
+cross-reference to this chapter, use the \cs{RefProperty} command with
+two arguments: the label, or \emph{key}, and the property.
+\begin{verbatim}
+ \RefProperty{mylabel}{chapter}
+\end{verbatim}
+
+The
+\LaTeX{} kernel itself contains
+declarations for some generally useful properties,
+including these:
+\begin{description}
+\item[\texttt{label}] the textual representation of the \emph{current
+\textup{\cs{ref}} value}, see above;
+
+\item[\texttt{page}] the textual representation of the page number for
+ the page currently under construction;
+
+\item[\texttt{title}] the title, if set by, e.g.,~\pkg{nameref};
+
+\item[\texttt{target}] the logical name of the associated link target,
+ if set by, e.g.,~\pkg{hyperref};
+
+\item[\texttt{pagetarget}] the logical name of the target added by
+ \pkg{hyperref} at the origin of each shipped out page;
+
+\item[\texttt{pagenum}] the value of the \LaTeX{} counter
+ \texttt{page} in Arabic numerals;
+
+\item[\texttt{abspage}] the absolute page number of the page under
+ construction, i.e., one more than the number of pages shipped out so
+ far (thus it starts at 1 and is increased by 1 whenever a page is
+ shipped out);
+
+\item[\texttt{counter}] the name of the counter that produced the
+ \emph{current \textup{\cs{ref}} value}, i.e., the counter that was
+ stepped in the most recent \cs{refstepcounter} within the current
+ scope;
+
+\item[\texttt{xpos}, \texttt{ypos}] the position on the shipped out
+ page as set by the most recent \cs{pdfsavepos}: recording these
+ properties should be done as soon as possible after saving the
+ position.
+\end{description}
+
+Both \LaTeXe{} commands (using camel-case names) and
+\LaTeX3 programming layer commands are provided.
+%
+For a more complete documentation, see \texttt{texdoc ltproperties-doc}.
+
+
+
+\finalpagebreak
+
+\section{New or improved commands}
+
+\subsection{Testing for the \LaTeX3 programming layer version: \cs{IfExplAtLeastTF}}
+
+The integration of \pkg{expl3} (the \LaTeX3 programming layer)
+into the kernel means that programmers can use all of the features
+available without needing to load it explicitly. However, as \pkg{expl3}
+is upgraded separately from \LaTeXe{} and is not a separate package, its
+version is different from that of \LaTeXe{} and cannot be tested using
+\cs{IfPackageAtLeastTF}. To date, low-level methods have therefore
+been needed to check for the availability of features in
+\pkg{expl3}. We have now added \cs{IfExplAtLeastTF} as a test working
+in the same way as \cs{IfPackageAtLeastTF} but focused on the
+pre-loaded programming layer. Programmers can check the date of
+\pkg{expl3} they are using in the \texttt{.log}, as it appears both at
+the start and end in the format
+\begin{verbatim}
+ L3 programming layer <YYYY-MM-DD>
+\end{verbatim}
+just after the line which identifies the format (\texttt{LaTeX2e}, etc.).
+%
+\githubissue{1004}
+
+
+\section{Code improvements}
+
+\subsection{Support for tabs in \cs{verb*} and \env{verbatim*}}
+
+\LaTeX{} converts a single tab to a single space, which is then treated like a
+\enquote{real} space in typesetting. The same has been true to date inside
+\cs{verb}, but was done in a way that meant that they remained as normal spaces
+even in \cs{verb*}, etc. We have now adjusted the code so that tabs are
+retained within the argument to \cs{verb} and \cs{verb*}, and the
+\env{verbatim} and \env{verbatim*} environments, independently from
+spaces, and are set up to print in the same way spaces do. This means that they
+now generate visible spaces inside \cs{verb*} and \env{verbatim*}, and their
+behavior can be adjusted if required to be different from that of spaces.
+%
+\githubissue{1085}
+
+
+\subsection{Improved argument checking for box commands}
+Previously if an alignment option had an unexpected value, such as
+\verb|\makebox[4cm][x]{text}|,
+no warning was given but the box content was silently discarded.
+This will now produce a warning and act like the default \texttt{c} alignment.
+\cs{framebox} and \cs{parbox} have a similar change.
+%
+\githubissue{1072}
+
+
+\subsection{Aligning status of tilde with other active characters}
+
+Some time ago we revised the definition of active characters in \pdfTeX{} to
+allow the full range of UTF-8 codepoints to be used in for example labels,
+file names, etc. However, \verb|~| was not changed at that point as it is active
+independent of the engine in use. This has now been corrected: the definition
+of \verb|~| is an engine-protected one which gives the string version of the
+character if used inside a csname.
+
+\finalpagebreak
+
+\subsection{In the programming layer}
+
+In the programming layer (\pkg{expl3}), we have revised the behavior of the
+titlecasing function to enable this to either titlecase only the first word of
+the input, or to titlecase every word. This should be transparent at the
+document level but will be useful for programmers.
+
+We have also added the ability to define variables and functions inside
+\cs{fpeval} (at the \pkg{expl3} level this is \cs{fp\_eval:n}). This allows
+programmers to create non-standard functions that can then be used inside
+\cs{fpeval}. For example, this could be used to create a new function
+\texttt{dinner}:
+\begin{verbatim}
+\ExplSyntaxOn
+\fp_new_variable:n{duck}
+\fp_new_function:n{dinner}
+\fp_set_function:nnn{dinner}{duck}
+ {duck - 0.25 * duck}
+\fp_set_variable:nn{duck}{1}
+$\fp_eval:n{duck}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+$
+\ExplSyntaxOff
+\end{verbatim}
+
+The computation above would then generate
+\begin{quote}
+\ExplSyntaxOn
+\fp_new_variable:n{duck}
+\fp_new_function:n{dinner}
+\fp_set_function:nnn{dinner}{duck}
+ {duck - 0.25 * duck}
+\fp_set_variable:nn{duck}{1}
+$\fp_eval:n{duck}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+ \fp_set_variable:nn{duck}{dinner(duck)}
+ >\fp_eval:n{dinner(duck)}
+$
+\ExplSyntaxOff
+\end{quote}
+
+Users will be able to access added functions without needing to use the
+\pkg{expl3} layer. It is possible that a future release of \LaTeX{} will
+add the ability to create and set floating point variables at the
+document level: this will be examined based on feedback on the
+utility of the programming layer change.
+
+
+\section{\emph{Removed} kernel commands}
+
+It is very rare that commands are removed from the \LaTeX{} kernel. However, in
+this release we have elected to remove \cs{GetDocumentCommandArgSpec},
+\cs{GetDocumentEnvironmentArgSpec}, \cs{ShowDocumentCommandArgSpec} and
+\cs{ShowDocumentEnvironmentArgSpec} from the kernel. These commands have been
+moved back to the \enquote{stub} \pkg{xparse} provided in \pkg{l3packages}. The
+reason for this change is that the removed commands exposed implementation
+details. They were essentially debugging tools which with hindsight should
+not have been made available directly in the kernel.
+
+
+% \section{Bug fixes}
+
+\finalpagebreak
+
+\section{Changes to packages in the \pkg{tools} category}
+
+\subsection{\pkg{longtable}: correct p-column definition}
+
+In general the \pkg{longtable} implementation follows the \pkg{array}
+usage but the package didn't take over a change made 1992 in
+\pkg{array} which adjusted the handling of the strut inserted at the
+begin of p-columns. As a consequence there are a number of
+inconsistencies in the output of p-columns between \pkg{tabular} and
+\pkg{longtable}. This has been corrected; \pkg{longtable} now uses for
+the strut the same definition as \pkg{array}.
+%
+\githubissue{1128}
+
+\medskip
+\tubcommand{\newpage}
+
+\begin{thebibliography}{9}
+
+%\fontsize{9.3}{11.3}\selectfont
+
+
+\bibitem{38:Lamport}
+Leslie Lamport.
+\newblock \emph{{\LaTeX}: {A} Document Preparation System: User's Guide and Reference
+ Manual}.
+\newblock \mbox{Addison}-Wesley, Reading, MA, USA, 2nd edition, 1994.
+\newblock ISBN 0-201-52983-1.
+\newblock Reprinted with corrections in 1996.
+
+
+\bibitem{38:ltnews} \LaTeX{} Project Team.
+ \emph{\LaTeXe{} news 1--38}.\\
+ \url{https://latex-project.org/news/latex2e-news/ltnews.pdf}
+
+\bibitem{38: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/}
+
+
+
+\end{thebibliography}
+
+\end{document}
diff --git a/macros/latex/base/ltpara-code.pdf b/macros/latex/base/ltpara-code.pdf
index 0ea61b04f8..0f092ff3eb 100644
--- a/macros/latex/base/ltpara-code.pdf
+++ b/macros/latex/base/ltpara-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltpara-doc.pdf b/macros/latex/base/ltpara-doc.pdf
index a586608830..70da3eb859 100644
--- a/macros/latex/base/ltpara-doc.pdf
+++ b/macros/latex/base/ltpara-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltplain.dtx b/macros/latex/base/ltplain.dtx
index 89e5017300..b41810373d 100644
--- a/macros/latex/base/ltplain.dtx
+++ b/macros/latex/base/ltplain.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltplain.dtx}
- [2023/04/15 v2.3i LaTeX Kernel (Plain TeX)]
+ [2023/10/21 v2.3i LaTeX Kernel (Plain TeX)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltplain.dtx}
@@ -1281,7 +1281,7 @@
% \cs{par} with whatever definition \cs{par} has when it is
% executed. It can, however, be
% redefined (before calling \cs{obeylines}!) to achieve some
-% special effects. If you want to alter is definition when already
+% special effects. If you want to alter this definition when already
% in the scope of \cs{obeylines}, it has no effect (because
% \cs{let} is used above).
% In that case simply make another call to \cs{obeylines}
diff --git a/macros/latex/base/ltproperties-code.pdf b/macros/latex/base/ltproperties-code.pdf
new file mode 100644
index 0000000000..063c5c6bab
--- /dev/null
+++ b/macros/latex/base/ltproperties-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltproperties-code.tex b/macros/latex/base/ltproperties-code.tex
new file mode 100644
index 0000000000..486cefa7b9
--- /dev/null
+++ b/macros/latex/base/ltproperties-code.tex
@@ -0,0 +1,5 @@
+% This will typeset documentation + code
+%
+
+\AtBeginDocument{\AlsoImplementation}
+\input{ltproperties.dtx}
diff --git a/macros/latex/base/ltproperties-doc.pdf b/macros/latex/base/ltproperties-doc.pdf
new file mode 100644
index 0000000000..fd6d3be8b5
--- /dev/null
+++ b/macros/latex/base/ltproperties-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltproperties-doc.tex b/macros/latex/base/ltproperties-doc.tex
new file mode 100644
index 0000000000..072dfedad0
--- /dev/null
+++ b/macros/latex/base/ltproperties-doc.tex
@@ -0,0 +1,8 @@
+% This will typeset only documentation but not the code
+%
+
+\AtBeginDocument{\OnlyDescription
+% \let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
+ }
+\input{ltproperties.dtx}
diff --git a/macros/latex/base/ltproperties.dtx b/macros/latex/base/ltproperties.dtx
new file mode 100644
index 0000000000..40c50cd20a
--- /dev/null
+++ b/macros/latex/base/ltproperties.dtx
@@ -0,0 +1,966 @@
+% \iffalse meta-comment
+%
+%% File: ltproperties.dtx
+%
+% Copyright (C) 2021-2023 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
+%
+% http://www.latex-project.org/lppl.txt
+%
+% This file is part of the LaTeX base system. (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex2e
+%
+% for those people who are interested.
+% \begin{macrocode}
+\def\ltpropertiesversion{1.0c}
+\def\ltpropertiesdate{2023-10-15}
+% \end{macrocode}
+
+%<*driver>
+\documentclass[full]{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{ltproperties.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% Recording and cross-referencing document properties^^A
+% \thanks{This module has version
+% \ltpropertiesversion\ dated \ltpropertiesdate, \copyright\ The \LaTeX\
+% Project.}
+% }
+%
+% \author{^^A
+% The \LaTeX\ Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \maketitle
+%
+% \begin{documentation}
+% \begin{abstract}
+% This code implements command to record and (expandably) reference
+% document properties. It extends the standard \cs{label}/\cs{ref}/\cs{pageref}
+% commands.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% The module allows to record the \enquote{current state} of various
+% document properties (typically the content of macros and values of counters)
+% and to access them in other places through a label.
+% The list of properties that can be recorded and retrieved
+% are not fix and can be extended by the user. The values of the properties
+% are recorded in the \texttt{.aux} file and can be retrieved at the second compilation.
+%
+%
+% The module uses the ideas of properties and labels. A label is
+% a document reference point: a name for the user. An property is something
+% that \LaTeX{} can track, such as a page number, section number or name.
+% The names of labels and properties may be arbitrary. Note that there is
+% a single namespace for each.
+%
+% \section{Design discussion}
+%
+% The design here largely follows ideas from \pkg{zref}. In particular, there
+% are two independent concepts: properties that can be recorded between runs,
+% and labels which consist of lists of these properties. The reason for the
+% split is that individual labels will want to record some but not all
+% properties. For examples, a label concerned with position would track
+% the $x$ and $y$ co-ordinates of the current point, but not for example
+% the page number.
+%
+% In the current implementation, properties share a single namespace. This
+% allows multiple lists to re-use the same properties, for example page number,
+% absolute page number, etc. This does mean that \emph{changing} a standard
+% property is an issue. However, some properties have complex definitions
+% (again, see \pkg{zref} at present): having them in a single shared space
+% avoids the need to copy code.
+%
+% Labels could be implemented as |prop| data. That is not done at present as
+% there is no obvious need to map to or copy the data. As such, faster
+% performance is available using a hash table approach as in a \enquote{classical}
+% set up. Data written to the |.aux| file uses simple paired \emph{balanced
+% text} not keyvals: this avoids any restrictions on names and again offers
+% increased performance.
+%
+% The \pkg{expl3} versions of the label command do not
+% use \cs{@bsphack}/\cs{@esphack} to avoid double spaces,
+% but the \LaTeXe{} command does as it lives at the document command level.
+%
+% The reference commands are expandable.
+%
+% Currently the code has nearly no impact on the main \cs{label} and \cs{ref} commands as
+% too many external packages rely on the concrete implementation.
+% There is one exception:
+% the label names share the same namespace. That means that if both |\label{ABC}| and
+% |\RecordProperties{ABC}{page}| are used there is a warning
+% \texttt{Label `ABC' multiply defined}.
+%
+% \section{Handling unknown labels and properties}
+% With the standard \cs{label}/\cs{ref} commands the requested label is
+% either in the |.aux|-file (and so known) or not.
+% In the first case the stored value can be used,
+% in the second case the reference commands print two question marks.
+%
+% With flexible property lists a reference commands asks for the
+% value of a specific property stored under a label name
+% and we have to consider more variants:
+% \begin{itemize}
+% \item If the requested property is unknown (not declared) the system
+% is not correctly set up and an error is issued.
+% \item If the label is unknown, the default of the property is used.
+% \item If the label is known, but doesn't provide a value for the
+% property then again the default of the property is used.
+% \item The command |\property_ref:nnn| allows to give a local default
+% which is used instead of the property default in the two cases before.
+% \end{itemize}
+%
+% \section{Rerun messages}
+%
+% As the reference commands are expandable they can neither issue a message that
+% the label or the label-property combination is unknown, nor can they trigger the
+% rerun message at the end of the \LaTeX{} run.
+%
+% Where needed such messages must therefore be triggered manually. For this two commands
+% are provided: \cs{property_ref_undefined_warn:} and \cs{property_ref_undefined_warn:nn}.
+% See below for a description.
+%
+% \section{Open points}
+%
+% \begin{itemize}
+% \item The \texttt{xpos} and \texttt{ypos} properties require that the position is
+% stored first but there is no (public) engine independent interface yet. Code must
+% use \cs{tex_savepos:D}.
+% \end{itemize}
+%
+% \section{Code interfaces}
+%
+% \begin{function}{\property_new:nnnn,\property_gset:nnnn}
+% \begin{syntax}
+% \cs{property_new:nnnn} \Arg{property} \Arg{setpoint} \Arg{default} \Arg{code}
+% \cs{property_gset:nnnn} \Arg{property}\Arg{setpoint} \Arg{default} \Arg{code}
+% \end{syntax}
+% \LaTeXe-interface: see \cs{NewProperty}, \cs{SetProperty}.\\
+% Sets the \meta{property} to have the \meta{default} specified, and at the
+% \meta{setpoint} (either |now| or |shipout|) to write the result of the
+% \meta{code} as part of a label. The \meta{code} should be expandable. The expansion
+% of \meta{code} (the value of the property) is written to the |.aux| file and read
+% back from there at the next compilation. Values should assume that the
+% standard \LaTeX{} catcode régime with |@| a letter is active then.
+%
+% If the property is declared within a package it is suggested
+% that its name is build from letters, hyphens and slashes,
+% and is always structured as follows:\\
+% \meta{package-name}\texttt{/}\meta{property-name}.
+% \end{function}
+%
+% \begin{function}
+% {
+% \property_record:nN,
+% \property_record:nn, \property_record:nV, \property_record:ee
+% }
+% \begin{syntax}
+% \cs{property_record:nN} \Arg{label} \Arg{clist var}
+% \cs{property_record:nn} \Arg{label} \Arg{clist}
+% \end{syntax}
+% \LaTeXe{}-interface: see \cs{RecordProperties}.\\
+% Writes the list of properties given by the \meta{clist} to the |.aux|
+% file with the \meta{label} specified.
+% \end{function}
+%
+% \begin{function}[EXP]{\property_ref:nn,\property_ref:ee}
+% \begin{syntax}
+% \cs{property_ref:nn} \Arg{label} \Arg{property}
+% \end{syntax}
+% \LaTeXe{}-interface: see \cs{RefProperty}.\\
+% Expands to the value of the \meta{property} for the \meta{label}, if
+% available, and the default value of the property otherwise.
+% If \meta{property} has not been declared with |\property_new:nnnn|
+% an error is issued. The command raises an internal, expandable, local flag
+% if the reference can not be resolved.
+% \end{function}
+%
+% \begin{function}[EXP]{\property_ref:nnn,\property_ref:een}
+% \begin{syntax}
+% \cs{property_ref:nnn} \Arg{label} \Arg{property} \Arg{local default}
+% \end{syntax}
+% \LaTeXe{}-interface: see \cs{RefProperty}.\\
+% Expands to the value of the \meta{property} for the \meta{label}, if
+% available, and to \meta{local default} otherwise.
+% If \meta{property} has not been declared with |\property_new:nnnn|
+% an error is issued. The command raises an internal, expandable local flag
+% if the reference can not be resolved.
+% \end{function}
+%
+% \begin{function}{\property_ref_undefined_warn:}
+% \begin{syntax}
+% \cs{property_ref_undefined_warn:}
+% \end{syntax}
+% \LaTeXe{}-interface: not provided.\\
+% The commands triggers the standard warning
+% \\
+% \hspace*{1em}\texttt{LaTeX Warning: There were undefined references.}
+% \\
+% at the end of the document if there was a recent
+% \cs{property_ref:nn} or \cs{property_ref:nnn} which couldn't be resolved
+% and so raised the flag. \enquote{Recent} means in the same group
+% or in some outer group!
+% \end{function}
+%
+% \begin{function}{\property_ref_undefined_warn:n,\property_ref_undefined_warn:e}
+% \begin{syntax}
+% \cs{property_ref_undefined_warn:n} \Arg{label}
+% \end{syntax}
+% \LaTeXe{}-interface: not provided.\\
+% The commands triggers the standard warning\\
+% \hspace*{1em}\texttt{LaTeX Warning: There were undefined references.}
+% \\
+% at the end of the document if \meta{label} is not known.
+% At the point where it is called it also issues the warning\\
+% \hspace*{1em}%
+% \texttt{Reference~`\meta{label}'~on~page~\meta{page}\space undefined}.
+% \end{function}
+%
+% \begin{function}{\property_ref_undefined_warn:nn,\property_ref_undefined_warn:ee}
+% \begin{syntax}
+% \cs{property_ref_undefined_warn:nn} \Arg{label} \Arg{property}
+% \end{syntax}
+% \LaTeXe{}-interface: see \cs{RefUndefinedWarn}.\\
+% The commands triggers the standard warning\\
+% \hspace*{1em}%
+% \texttt{LaTeX Warning: There were undefined references.}\\
+% at the end of the document if the reference can not be resolved.
+% At the point where it is called it also issues the warning\\
+% \hspace*{1em}%
+% \texttt{Reference~`\meta{label}'~on~page~\meta{page}\space undefined}\\
+% if the label
+% is unknown, or the more specific\\
+% \hspace*{1em}%
+% \texttt{Property `\meta{property}' undefined for reference
+% `\meta{label}' on page \meta{page}}\\
+% if the label is known but doesn't provide a value for the requested property.
+% \end{function}
+%
+% \begin{function}[pTF]{\property_if_exist:n,\property_if_exist:e}
+% \begin{syntax}
+% \cs{property_if_exist_p:n} \Arg{property}
+% \cs{property_if_exist:nTF} \Arg{property} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% \LaTeXe{}-interface: \cs{IfPropertyExistTF}.\\
+% Tests if the \meta{property} has been declared.
+% \end{function}
+%
+% \begin{function}[pTF]{\property_if_recorded:n,\property_if_recorded:e}
+% \begin{syntax}
+% \cs{property_if_recorded_p:n} \Arg{label}
+% \cs{property_if_recorded:nTF} \Arg{label} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% \LaTeXe{}-interface: \cs{IfLabelExistTF}\\
+% Tests if the \meta{label} is known. This is also true if the label has been
+% set with the standard \cs{label} command.
+% \end{function}
+%
+% \begin{function}[pTF]{\property_if_recorded:nn,\property_if_recorded:ee}
+% \begin{syntax}
+% \cs{property_if_recorded_p:nn} \Arg{label} \Arg{property}
+% \cs{property_if_recorded:nnTF} \Arg{label} \Arg{property} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% \LaTeXe{}-interface: \cs{IfPropertyRecordedTF}.\\
+% Tests if the label \meta{label} is known and if it provides a value of the \meta{property}.
+% \end{function}
+%
+% \section{Auxiliary file interfaces}
+%
+% \begin{function}{\new@label@record}
+% \begin{syntax}
+% \cs{new@label@record} \Arg{label} \Arg{data}
+% \end{syntax}
+% This is a command only for use in the |.aux| file. It loads the key--value
+% list of \meta{data} to be available for the \meta{label}.
+% \end{function}
+%
+% \section{\LaTeXe{} interface}
+%
+% The LaTeXe{} interfaces always expand label and property arguments.
+% This means that one must be careful when using active chars or commands in the
+% names. UTF8-chars are protected and should be safe, similar most babel shorthands.
+%
+% \begin{function}{\NewProperty,\SetProperty}
+% \begin{syntax}
+% \cs{NewProperty} \Arg{property} \Arg{setpoint} \Arg{default} \Arg{code}
+% \cs{SetProperty} \Arg{property} \Arg{setpoint} \Arg{default} \Arg{code}
+% \end{syntax}
+% Sets the \meta{property} to have the \meta{default} specified, and at the
+% \meta{setpoint} (either |now| or |shipout|) to write the result of the
+% \meta{code} as part of a label. The \meta{code} should be expandable. The expansion
+% of \meta{code} (the value of the property) is written to the |.aux| file and read
+% back from there at the next compilation (at which point normally
+% the standard \LaTeX{} catcode régime with |@| a letter is active).
+%
+% \end{function}
+%
+% \begin{function}{\RecordProperties}
+% \begin{syntax}
+% \cs{RecordProperties} \Arg{label} \Arg{clist}
+% \end{syntax}
+% Writes the list of properties given by the \meta{clist} to the |.aux|
+% file with the \meta{label} specified. Similar to the standard \cs{label} command
+% the arguments are expanded. So \meta{clist} can be a macro containing a list
+% of properties. Also similar to the standard \cs{label} command, the command is surrounded
+% by an \cs{@bsphack}/\cs{@esphack} pair to preserve spacing.
+% \end{function}
+
+% \begin{function}[EXP]{\RefProperty}
+% \begin{syntax}
+% \cs{RefProperty} \oarg{local default} \Arg{label} \Arg{property}
+% \end{syntax}
+% Expands to the value of the \meta{property} for the \meta{label}, if
+% available, and the default value of the property or -- if given --
+% to \meta{local default} otherwise.
+% If \Arg{property} has not been declared an error is issued.
+% \end{function}
+%
+% \begin{function}{\IfPropertyExistTF}
+% \begin{syntax}
+% \cs{IfPropertyExistTF} \Arg{property} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the \meta{property} has been declared.
+% \end{function}
+%
+% \begin{function}{\IfLabelExistTF}
+% \begin{syntax}
+% \cs{IfLabelExistTF} \Arg{label} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the \meta{label} has been recorded. This is also true if a label
+% has been set with the standard \cs{label} command.
+% \end{function}
+%
+% \begin{function}{\IfPropertyRecordedTF}
+% \begin{syntax}
+% \cs{IfPropertyRecordedTF} \Arg{label} \Arg{property} \Arg{true code} \Arg{false code}
+% \end{syntax}
+% Tests if the label and a value of the \meta{property} for the \meta{label} are both known.
+% \end{function}
+
+% \begin{function}{\RefUndefinedWarn}
+% \begin{syntax}
+% \cs{RefUndefinedWarn} \Arg{label} \Arg{property}
+% \end{syntax}
+% This commands triggers the standard warning\\
+% \hspace*{1em}%
+% \texttt{LaTeX Warning: There were undefined references.}\\
+% at the end of the document if the reference for \meta{label} and \meta{property}
+% can not be resolved.
+% At the point where it is called it also issues the warning\\
+% \hspace*{1em}%
+% \texttt{Reference `\meta{label}' on page \meta{page} undefined}\\
+% if the label is unknown, or the more specific\\
+% \hspace*{1em}%
+% \texttt{Property `\meta{property}' undefined for reference
+% `\meta{label}' on page \meta{page}}
+% if the label is known but doesn't provide a value for the requested property.
+% \end{function}
+%
+% \section{Pre-declared properties}
+%
+% \begin{variable}{abspage}
+% (shipout) The absolute value of the current page: starts at $1$ and increases
+% monotonically at each shipout.
+% \end{variable}
+%
+% \begin{variable}{page}
+% (shipout) The current page as given by \cs{thepage}: this may or may not
+% be a numerical value, depending on the current style. Contrast with
+% \cs{abspage}. You get this value also with the standard \cs{label}/\cs{pageref}.
+% \end{variable}
+%
+% \begin{variable}{pagenum}
+% (shipout) The current page as arabic number. This is suitable for integer operations and
+% comparisions.
+% \end{variable}
+%
+% \begin{variable}{label}
+% (now) The content of \cs{@currentlabel}. This is the value that
+% you get also with the standard \cs{label}/\cs{ref}.
+% \end{variable}
+%
+% \begin{variable}{title}
+% (now) The content of \cs{@currentlabelname}.
+% This command is filled beside others by the \pkg{nameref} package and some
+% classes (e.g.~\pkg{memoir}).
+% \end{variable}
+%
+% \begin{variable}{target}
+% (now) The content of \cs{@currentHref}.
+% This command is normally filled by for example
+% \pkg{hyperref} and gives the name of the last destination it created.
+% \end{variable}
+%
+% \begin{variable}{pagetarget}
+% (shipout) The content of \cs{@currentHpage}.
+% This command is filled for example by a recent version of
+% \pkg{hyperref} and then gives the name of the last page
+% destination it created.
+% \end{variable}
+%
+% \begin{variable}{counter}
+% (now) The content of \cs{@currentcounter}.
+% This command contains after a \cs{refstepcounter} the name of the counter.
+% \end{variable}
+%
+% \begin{variable}{xpos,ypos}
+% (shipout) This stores the $x$~and $y$ coordinates of a point previously
+% stored with \cs{pdfsavepos}/\cs{savepos}.
+% E.g.~(if bidi is used it can be necessary to save the position
+% before and after the label):
+% \begin{verbatim}
+% \tex_savepos:D
+% \property_record:nn{myposition}{xpos,ypos}
+% \tex_savepos:D
+% \end{verbatim}
+% \end{variable}
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{The Implementation}
+%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=property>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\NewModuleRelease{2023/11/01}{ltproperties}
+%<latexrelease> {Cross-referencing~properties}
+% \end{macrocode}
+%
+% The approach here is based closely on that from \pkg{zref}; separate out
+% lists of properties and the properties themselves, so the latter can be
+% used multiple times and in varying combinations.
+% However, not everything is a straight copy. Firstly,
+% we treat lists of properties as simple comma lists: that allows us to have
+% either saved or dynamic lists and to avoid another data structure. The cost
+% is that errors are detected at point-of-use, but in any real case that should
+% be true anyway (and is true for \tn{zref@labelbyprop} already). Secondly,
+% we allow properties to have
+% arbitrary names, as the code does not require them to tokenize as control
+% sequences.
+%
+% \begin{macro}{\property_new:nnnn, \property_gset:nnnn, \@@_gset:nnnn}
+% As properties can be reset, they are not constants. But they also have
+% various pieces of required data. So we use the same approach as color and
+% make them declarations. Data-wise, we need the detail of the implementation,
+% the default and a flag to show if the code works now or at shipout. This
+% last entry is done using text so needs a check. We could use a set of
+% |prop| here, but as we never need to map or copy the lists, we can gain
+% performance using the hash table approach.
+% \begin{macrocode}
+\cs_new_protected:Npn \property_new:nnnn #1#2#3#4
+ {
+ \cs_if_free:cTF { @@_code_ #1 : }
+ {
+ \exp_args:Nx \@@_gset:nnnn { \tl_to_str:n {#1} }
+ {#2} {#3} {#4}
+ }
+ {
+ \msg_error:nn { property }{ exists }{#1}
+ }
+ }
+\cs_new_protected:Npn \property_gset:nnnn #1#2#3#4
+ {
+ \@@_gset:ennn { \tl_to_str:n {#1} }
+ {#2} {#3} {#4}
+ }
+\cs_new_protected:Npn \@@_gset:nnnn #1#2#3#4
+ {
+ \cs_gset:cpn { @@_code_ #1 : } {#4}
+ \tl_gclear_new:c { g_@@_default_ #1 _tl }
+ \tl_gset:cn { g_@@_default_ #1 _tl } {#3}
+ \bool_if_exist:cF { g_@@_shipout_ #1 _tl }
+ { \bool_new:c { g_@@_shipout_ #1 _tl } }
+ \str_case:nnF {#2}
+ {
+ { now } { { \bool_gset_false:c { g_@@_shipout_ #1 _tl } } }
+ { shipout }
+ { \bool_gset_true:c { g_@@_shipout_ #1 _tl } }
+ }
+ { \msg_error:nnnn { property } { unknown-setpoint } {#1} {#2} }
+ }
+\cs_generate_variant:Nn \@@_gset:nnnn {ennn}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\NewProperty,\SetProperty}
+% For consistency we expand the property name, but this doesn't warant a
+% variant of the L3-commands.
+% \changes{v1.0c}{2023-09-20}{use \cs{protected@edef}}
+% \begin{macrocode}
+\cs_new_protected:Npn \NewProperty #1#2#3#4
+ {
+ \protected@edef\reserved@a{#1}
+ \exp_args:No \property_new:nnnn {\reserved@a} {#2}{#3}{#4}
+ }
+\cs_new_protected:Npn \SetProperty #1#2#3#4
+ {
+ \protected@edef\reserved@a{#1}
+ \exp_args:No \property_gset:nnnn {\reserved@a} {#2}{#3}{#4}
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\property_record:nN}
+% \begin{macro}
+% {
+% \property_record:nn,
+% \property_record:nV,
+% \property_record:ee,
+% \property_record:oo,
+% \@@_record:nn,
+% \@@_record:en
+% }
+% \begin{macro}[EXP]
+% {\@@_record_value:n, \@@_record_value_aux:n, \@@_record_value_aux:e}
+% Writing data when it is labelled means expanding at this stage and possibly
+% later too. That is all pretty easy using \pkg{expl3}: we accept a stray
+% comma at the end of the list as that is easier to deal with than trying
+% to tidy up, and there is no real downside.
+% \begin{macrocode}
+\cs_new_protected:Npn \property_record:nN #1#2
+ { \property_record:nV {#1} #2 }
+\cs_new_protected:Npn \property_record:nn #1#2
+ { \@@_record:en { \tl_to_str:n {#1} } {#2} }
+\cs_generate_variant:Nn \property_record:nn { nV , ee, oo }
+\cs_new_protected:Npn \@@_record:nn #1#2
+ {
+ \legacy_if:nT { @filesw }
+ {
+ \iow_shipout_x:Nx \@auxout
+ {
+ \token_to_str:N \new@label@record
+ {#1}
+ { \clist_map_function:nN {#2} \@@_record_value:n }
+ }
+ }
+ }
+\cs_generate_variant:Nn \@@_record:nn { e }
+\cs_new:Npn \@@_record_value:n #1
+ { \@@_record_value_aux:e { \tl_to_str:n {#1} } }
+\cs_new:Npn \@@_record_value_aux:n #1
+ {
+ \cs_if_exist:cTF { @@_code_ #1 : }
+ {
+ {#1}
+ {
+ \bool_if:cTF { g_@@_shipout_ #1 _tl }
+ { \exp_not:c }
+ { \use:c }
+ { @@_code_ #1 : }
+ }
+ }
+ { \msg_expandable_error:nnn { property } { not-declared } {#1} }
+ }
+\cs_generate_variant:Nn \@@_record_value_aux:n { e }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\RecordProperties}
+% \changes{v1.0c}{2023-09-20}{use \cs{protected@edef} for safer handling of active chars.} %
+% \begin{macrocode}
+\NewDocumentCommand\RecordProperties { m m }
+ {
+ \@bsphack
+ \protected@edef\reserved@a{#1}
+ \protected@edef\reserved@b{#2}
+ \property_record:oo {\reserved@a}{\reserved@b}
+ \@esphack
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Reference commands}
+%
+% \begin{variable}{ l_@@_ref_flag }
+% A flag that is set if a reference couldn't be resolved.
+% \begin{macrocode}
+\flag_new:n { l_@@_ref_flag }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}[EXP]{\property_ref:nn,\property_ref:ee}
+% Search for the label/property combination, and if not found fall back
+% to the default of the property.
+% \begin{macrocode}
+\cs_new:Npn \property_ref:nn #1#2
+ {
+ \@@_ref:een
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ { \tl_use:c { g_@@_default_ #2 _tl } }
+ }
+\cs_generate_variant:Nn \property_ref:nn {ee}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\property_ref:nnn,\property_ref:een, \@@_ref:nnn, \@@_ref:een}
+% This allows to set a local default value which overrides the default value
+% of the property.
+% \begin{macrocode}
+\cs_new:Npn \property_ref:nnn #1#2#3
+ {
+ \@@_ref:een
+ { \tl_to_str:n {#1} }
+ { \tl_to_str:n {#2} }
+ {#3}
+ }
+\cs_new:Npn \@@_ref:nnn #1#2#3
+ {
+ \tl_if_exist:cTF { g_@@_label_ #1 _ #2 _tl }
+ { \tl_use:c { g_@@_label_ #1 _ #2 _tl } }
+ {
+ \flag_if_raised:nF
+ { l_@@_ref_flag } { \flag_raise:n { l_@@_ref_flag } }
+% \end{macrocode}
+% We test for the default of the property only to check if the property has
+% been declared.
+% \begin{macrocode}
+ \tl_if_exist:cTF { g_@@_default_ #2 _tl }
+ { #3 }
+ { \msg_expandable_error:nnn { property } { not-declared } {#2} }
+ }
+ }
+\cs_generate_variant:Nn \@@_ref:nnn { ee }
+\cs_generate_variant:Nn \property_ref:nnn {een}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]{\RefProperty}
+% Search for the label/property combination, and if not found fall back
+% to the default of the property or the given default.
+% \begin{macrocode}
+\NewExpandableDocumentCommand \RefProperty { o m m }
+ {
+ \IfNoValueTF {#1}
+ {
+ \property_ref:ee {#2}{#3}
+ }
+ {
+ \property_ref:een {#2}{#3}{#1}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\new@label@record}
+% \begin{macro}{\@@_data:nnn}
+% A standard recursion loop.
+% \begin{macrocode}
+\cs_new_protected:Npn \new@label@record #1#2
+ {
+ \tl_if_exist:cTF { r@#1 }
+ {
+ \gdef \@multiplelabels
+ { \@latex@warning@no@line { There~were~multiply-defined~labels } }
+ \@latex@warning@no@line { Label~`#1'~multiply~defined }
+ }
+ {
+ \tl_new:c { r@#1 }
+ \tl_gset:cn { r@#1 }{#2}
+ }
+ \@@_data:nnn {#1} #2 { \q_recursion_tail } { ? } \q_recursion_stop
+ }
+\cs_new_protected:Npn \@@_data:nnn #1#2#3
+ {
+ \quark_if_recursion_tail_stop:n {#2}
+ \tl_gclear_new:c { g_@@_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl }
+ \tl_gset:cn { g_@@_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl } {#3}
+ \@@_data:nnn {#1}
+ }
+% \end{macrocode}
+%
+% This command is used in \cs{enddocument} to test if some label values have changed.
+% \begin{macrocode}
+\cs_new_protected:Npn \@kernel@new@label@record@testdef #1 #2
+ {
+ \tl_if_eq:cnF { r@#1 } {#2}
+ { \@tempswatrue }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Tests and warnings}
+%
+% \begin{macro}[pTF]{\property_if_exist:n}
+% Tests if property has been declared.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \property_if_exist:n #1 { p , T , F, TF }
+ % #1 property
+ {
+ \cs_if_exist:cTF { @@_code_ #1 : }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+\prg_generate_conditional_variant:Nnn \property_if_exist:n {e} {TF}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{IfPropertyExistTF}
+% \begin{macrocode}
+\cs_new_eq:NN \IfPropertyExistTF \property_if_exist:eTF
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[pTF]{\property_if_recorded:n}
+% Tests if the label has been set.
+% This can then be used to setup e.g.~rerun messages.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \property_if_recorded:n #1 { p , T , F, TF }
+ % #1 label
+ {
+ \tl_if_exist:cTF { r@#1 }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+\prg_generate_conditional_variant:Nnn \property_if_recorded:n {e} {TF}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfLabelExistTF}
+% \begin{macrocode}
+\cs_new_eq:NN \IfLabelExistTF \property_if_recorded:eTF
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[pTF]{\property_if_recorded:nn}
+% tests if the label/property combination has been set
+% This can then be used to setup e.g.~rerun messages.
+% \begin{macrocode}
+\prg_new_conditional:Npnn \property_if_recorded:nn #1#2 { p , T , F, TF }
+ % #1 label #2 property
+ {
+ \tl_if_exist:cTF { g_@@_label_ \tl_to_str:n {#1} _ \tl_to_str:n {#2} _tl }
+ {
+ \prg_return_true:
+ }
+ {
+ \prg_return_false:
+ }
+ }
+\prg_generate_conditional_variant:Nnn \property_if_recorded:nn {ee} {TF}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\IfPropertyRecordedTF}
+% \begin{macrocode}
+\cs_new_eq:NN \IfPropertyRecordedTF \property_if_recorded:eeTF
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\property_ref_undefined_warn:}
+% \cs{G@refundefinedtrue} is defined in \texttt{ltxref} and redefines a warning message.
+% \begin{macrocode}
+\cs_new_protected:Npn \property_ref_undefined_warn:
+ {
+ \flag_if_raised:nT { l_@@_ref_flag }
+ {
+ \G@refundefinedtrue
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\property_ref_undefined_warn:n}
+% \begin{macrocode}
+\cs_new_protected:Npn \property_ref_undefined_warn:n #1 %#1 label
+ {
+ \property_if_recorded:nF {#1}
+ {
+ \G@refundefinedtrue
+ \@latex@warning{Reference~`#1'~on~page~\thepage\space undefined}%
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\property_ref_undefined_warn:nn,
+% \property_ref_undefined_warn:ee,
+% \RefUndefinedWarn}
+% \begin{macrocode}
+\cs_new_protected:Npn \property_ref_undefined_warn:nn #1#2 %#1 label, #2 property
+ {
+ \property_if_recorded:nTF {#1}
+ {
+ \property_if_recorded:nnF {#1}{#2}
+ {
+ \G@refundefinedtrue
+ \@latex@warning
+ { Property~`#2'~undefined~for~reference~`#1'~on~page~\thepage }
+ }
+ }
+ {
+ \G@refundefinedtrue
+ \@latex@warning { Reference~`#1'~on~page~\thepage\space undefined }%
+ }
+ }
+\cs_generate_variant:Nn \property_ref_undefined_warn:nn {ee}
+\cs_set_eq:NN \RefUndefinedWarn \property_ref_undefined_warn:ee
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Predeclared properties}
+%
+% \begin{variable}{abspage}
+% \begin{macrocode}
+\property_new:nnnn { abspage } { shipout }
+ { 0 } { \int_use:N \g_shipout_readonly_int }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{page}
+% \begin{macrocode}
+\property_new:nnnn { page } { shipout } { 0 } { \thepage }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{pagenum}
+% \begin{macrocode}
+\property_new:nnnn { pagenum } { shipout } { 0 } { \the \value { page } }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{label}
+% \begin{macrocode}
+\property_new:nnnn { label } { now } { ?? } { \@currentlabel }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{title}
+% \begin{macrocode}
+\property_new:nnnn { title } { now }
+ { \exp_not:n { \textbf { ?? } } } { \@currentlabelname }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{target}
+% \begin{macrocode}
+\property_new:nnnn { target } { now } { } { \@currentHref }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{target}
+% \begin{macrocode}
+\newcommand\@currentHpage{}
+\property_new:nnnn { pagetarget } { shipout } { } { \@currentHpage }
+% \end{macrocode}
+% \end{variable}
+
+% \begin{variable}{counter}
+% \begin{macrocode}
+\property_new:nnnn { counter } { now } { } { \@currentcounter }
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{variable}{xpos,ypos}
+% \begin{macrocode}
+\property_new:nnnn { xpos } { shipout } { 0} { \int_use:N \tex_lastxpos:D }
+\property_new:nnnn { ypos } { shipout } { 0} { \int_use:N \tex_lastypos:D }
+% \end{macrocode}
+% \end{variable}
+%
+% \subsection{Messages}
+% \begin{macrocode}
+\msg_new:nnnn { property } { exists }
+ { Property~'#1'~ has~ already~ been~ declared. }
+ { There~ already~ exists~ a~ property~ declaration~ with~ this~
+ name.\\
+ Please~ use~ a~ different~ name~ for~ your~ property.}
+
+\msg_new:nnnn { property } { not-declared }
+ { Property~'#1'~not~declared. }
+ {
+ LaTeX~has~been~asked~to~use~property~'#1',~but~this~
+ name~has~not~been~declared.
+ }
+\msg_new:nnnn { property } { unknown-setpoint }
+ { Unknown~keyword~'#2'~for~setting~property~'#1'. }
+ {
+ LaTeX~has~been~asked~to~set~the~property~'#1',~but~the~keyword~
+ '#2'~is~not~one~of~the~two~known~values:~'now'~or~'shipout'.
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{ltproperties}
+%<latexrelease> {cross-referencing~properties~(undo)}%
+%<latexrelease>
+%<latexrelease>\let \NewProperty \@undefined
+%<latexrelease>\let \SetProperty \@undefined
+%<latexrelease>
+%<latexrelease>\let \RecordProperties \@undefined
+%<latexrelease>\let \RefProperty \@undefined
+%<latexrelease>\let \RefUndefinedWarn \@undefined
+%<latexrelease>
+%<latexrelease>\let \IfPropertyExistTF \@undefined
+%<latexrelease>\let \IfLabelExistTF \@undefined
+%<latexrelease>\let \IfPropertyRecordedTF \@undefined
+%<latexrelease>
+%<latexrelease>\let\new@label@record \@undefined
+%<latexrelease>\let\@kernel@new@label@record@testdef\@undefined
+%<latexrelease>\EndModuleRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+% \end{macrocode}
+%
+% Reset module prefix:
+% \begin{macrocode}
+%<@@=>
+% \end{macrocode}
+%
+%
+% \end{implementation}
+%
+% \Finale
diff --git a/macros/latex/base/ltshipout-code.pdf b/macros/latex/base/ltshipout-code.pdf
index d7fc1394f9..e530fd038b 100644
--- a/macros/latex/base/ltshipout-code.pdf
+++ b/macros/latex/base/ltshipout-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltshipout-doc.pdf b/macros/latex/base/ltshipout-doc.pdf
index d4084e3f3f..2d8b422fc7 100644
--- a/macros/latex/base/ltshipout-doc.pdf
+++ b/macros/latex/base/ltshipout-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltsockets-code.pdf b/macros/latex/base/ltsockets-code.pdf
new file mode 100644
index 0000000000..be3842b9b6
--- /dev/null
+++ b/macros/latex/base/ltsockets-code.pdf
Binary files differ
diff --git a/macros/latex/base/ltsockets-code.tex b/macros/latex/base/ltsockets-code.tex
new file mode 100644
index 0000000000..82ca0b059b
--- /dev/null
+++ b/macros/latex/base/ltsockets-code.tex
@@ -0,0 +1,5 @@
+% This will typeset documentation + code
+%
+
+\AtBeginDocument{\AlsoImplementation}
+\input{ltsockets.dtx}
diff --git a/macros/latex/base/ltsockets-doc.pdf b/macros/latex/base/ltsockets-doc.pdf
new file mode 100644
index 0000000000..e842b80328
--- /dev/null
+++ b/macros/latex/base/ltsockets-doc.pdf
Binary files differ
diff --git a/macros/latex/base/ltsockets-doc.tex b/macros/latex/base/ltsockets-doc.tex
new file mode 100644
index 0000000000..c181fbb3cc
--- /dev/null
+++ b/macros/latex/base/ltsockets-doc.tex
@@ -0,0 +1,8 @@
+% This will typeset only documentation but not the code
+%
+
+\AtBeginDocument{\OnlyDescription
+% \let\tableofcontents\relax
+ \RenewCommandCopy\MaybeStop\StopEventually
+ }
+\input{ltsockets.dtx}
diff --git a/macros/latex/base/ltsockets.dtx b/macros/latex/base/ltsockets.dtx
new file mode 100644
index 0000000000..7d2940f454
--- /dev/null
+++ b/macros/latex/base/ltsockets.dtx
@@ -0,0 +1,1069 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2023
+% Frank Mittelbach, The LaTeX Project
+%
+% 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: ltsockets.dtx
+%
+% \begin{macrocode}
+\def\ltsocketsversion{0.9a}
+\def\ltsocketsdate{2023-08-21}
+% \end{macrocode}
+%
+%<*driver>
+\documentclass{l3doc}
+
+
+\providecommand\InternalDetectionOff{}
+\providecommand\InternalDetectionOn{}
+
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{ltsockets.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+%
+%
+%
+% \title{\LaTeX{}'s socket management\thanks{This module has version
+% \ltsocketsversion\ dated \ltsocketsdate, \copyright\ \LaTeX\
+% Project.}}
+%
+% \author{Frank Mittelbach}
+%
+% \maketitle
+%
+% ^^A this needs some cleanup:
+% \long\def\fmi#1{\begin{quote} TODO: \itshape #1\end{quote}}
+%
+% \providecommand\pkg[1]{\texttt{#1}}
+% \providecommand\hook[1]{\texttt{#1}}
+% \providecommand\env[1]{\texttt{#1}}
+% \providecommand\plug[1]{\texttt{#1}}
+% \providecommand\socket[1]{\texttt{#1}}
+%
+%
+% \begin{abstract}
+% This code implements sockets which are places in the code into
+% which predeclared chunks of code (plugs) can be placed. Both the sockets
+% and the plugs are \enquote{named} and each socket is
+% assigned exactly one plug at any given time.
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Introduction}
+%
+% A \LaTeX{} source file is transformed into a typeset document by
+% executing code for each command or environment in the document
+% source. Through various steps this code transforms the input and
+% eventually generates typeset output appearing in a \enquote{galley}
+% from which individual pages are cut off in an asyncronous way. This
+% page generating process is normally not directly associated with
+% commands in the input\footnote{Excepts for directives such as
+% \cs{newpage}.} but is triggered whenever the galley has received
+% enough material to form another page (giving current settings).
+%
+% As part of this transformation input data may get stored in some form
+% and later reused, for example, as part of the output routine
+% processing.
+%
+% \section{Configuration of the transformation process}
+%
+% There are three different major methods offered by \LaTeX{} to
+% configure the transformation process:
+% \begin{itemize}
+% \item through the template mechanism,
+% \item through the hook mechanism, or
+% \item through sockets and plugs.
+% \end{itemize}
+% They offer different possibilities (with different features and
+% limitations) and are intended for specific use cases, though it is
+% possible to combine them.
+%
+% \subsection{The template mechanism}
+%
+% The template mechanism is intended for more complex document-level
+% elements (e.g., headings such as \verb=\section= or environments like
+% \env{itemize}). The template code implements the overall processing
+% logic for such an element and offers a set of parameters to influence
+% the final result.
+%
+% The document element is then implemented by (a) selecting a suitable
+% template (there may be more than one available for the kind of
+% document element) and (b) by setting its parameters to desired
+% values. This then forms a so-called instance which is executed when
+% the document element is found in the source.
+%
+% By altering the parameter values (in a document class or in the
+% document preamble) or, if more drastic layout changes are desired, by
+% selecting a different template and then adjusting its parameters, a
+% wide variety of layouts can be realized through simple configuration
+% setups without the need to develop new code.
+%
+% The target audience of this method are therefore document class
+% developers or users who wish to alter an existing layout (implemented
+% by a document class) in certain (minor) ways.
+%
+% The template mechanism is currently documented as part of the
+% \pkg{xtemplate} package and one more elaborate implementation can be
+% found as part of the \texttt{latex-lab} code for lists (to be
+% documented further).
+%
+% \subsection{The hook mechanism}
+%
+% Hooks are places in the kernel code (or in packages) that offer
+% packages the possibility to inject additional code at specific
+% points in the processing in a controlled way without the need to
+% replace the existing code block (and thereby overwriting
+% modifications/extensions made by other packages). The target
+% audience is therefore mainly package developers, even though some
+% hooks can be useful for document authors.
+%
+% Obviously, what can reasonably be added into a hook depends on the
+% individual hook (hopefully documented as part of the hook
+% documentation), but in general the idea behind hooks is that more
+% than one package could add code into the hook at the same
+% time. Perhaps the most famous hook (that \LaTeX{} had for a very
+% long time) is \hook{begindocument} into which many packages add code
+% to through \cs{AtBeginDocument}\marg{code} (which is nowadays
+% implemented as a shorthand for
+% \cs{AddToHook}\texttt{\{\hook{begindocument}\}}\marg{code}). To
+% resolve possible conflicts between injections by different packages
+% there is a rule mechanism by which code chunks in a hook can be
+% ordered in a certain way and by which incompatible packages can be
+% detected if a resolution is impossible.
+%
+% In contrast to template code, there is no standard configuration
+% method through parameters for hooks, i.e., the code added to a hook
+% \enquote{is} the configuration. If it wants to provide for
+% configuration through parameters it has to also provide its own
+% method to set such parameters in some way. However, in that case it
+% is likely that using a hook is not the right approach and the
+% developer better calls a template instance instead which then offers
+% configuration through a key/value interface.
+%
+% In most cases, hooks do not take any arguments as input. Instead, the data
+% that they can (and are allowed to) access depends on the surrounding
+% context.
+%
+% For example, the various hooks available during the page shipout
+% process in \LaTeX's output routine can (and have to) access the
+% accumulated page material stored in a box named
+% \verb=\ShipoutBox=. This way, code added to, say, the
+% \hook{shipout/before} hook could access the page content, alter it,
+% and then write it back into \verb=\ShipoutBox= and any other code
+% added to this hook could then operate on the modified content. Of
+% course, for such a scheme to work the code prior to executing the hook
+% would need to setup up data in appropriate places and the hook
+% documentation would need to document what kind of storage can be
+% accessed (and possibly altered) by the hook.
+%
+% There are also hooks that take arguments (typically portions of
+% document data) and in that case the hook code can access these
+% arguments through \verb=#1=, \verb=#2=, etc.
+%
+% The hook mechanism is documented in \texttt{lthooks-doc.pdf}.
+%
+%
+%
+% \subsection{The socket mechanism}
+%
+% In some cases there is code that implements a certain programming
+% logic (for example, combining footnotes, floats, and the text for the
+% current page to be shipped out) and if this logic should change (e.g.,
+% footnotes to be placed above bottom floats instead of below) then this
+% whole code block needs to be replaced with different code.
+%
+% In theory, this could be implemented with templates, i.e., the code
+% simply calls some instance that implements the logic and that instance
+% is altered by selecting a different templates and/or adjusting their
+% parameters. However, in many cases customization through parameters is
+% overkill in such a case (or otherwise awkward, because paramerization
+% is better done on a higher level instead of individually for small
+% blocks of code) and using the template mechanism just to replace one
+% block of code with a different one results in a fairly high
+% performance hit. It is therefore usually not a good choice.
+%
+% In theory, it would also be possible to use a hook, but again that is
+% basically a misuse of the concept, because in this use case there should
+% never be more than one block of code inside the hook; thus, to alter
+% the processing logic one would need to set up rules that replace code
+% rather than (as intended) execute all code added to the hook.
+%
+%
+%
+% For this reason \LaTeX{} now offers a third mechanism:
+% \enquote{sockets} into which one can place exactly one code block
+% --- a \enquote{plug}.
+%
+% In a nutshell: instead of having a fixed code block somewhere as part
+% of the code, implementing a certain programming logic there is a
+% reference to a named socket at this point.
+% This is done by first declaring the named socket with:
+% \begin{quote}
+% \cs{NewSocket}\marg{socket-name}\marg{number-of-inputs}
+% \end{quote}
+% This is then referenced at the point where the replaceable code block
+% should be executed with:
+% \begin{quote}
+% \cs{UseSocket}\marg{socket-name}
+% \end{quote}
+% or, if the socket should take a number of inputs (additional
+% arguments beside the name) with
+% \begin{quote}
+% \cs{UseSocket}\marg{socket-name}\marg{arg\textsubscript{1}}\ldots
+% \marg{arg\textsubscript{\meta{number-of-inputs}}}
+% \end{quote}
+%
+% In addition, several code blocks (a.k.a.\ plugs) implementing different logic for this
+% socket are set up, each with a declaration of the form:
+% \begin{quote}
+% \cs{NewSocketPlug}\marg{socket-name}\marg{socket-plug-name}\marg{code}
+% \end{quote}
+% Finally,
+% one of them is assigned to the socket:
+% \begin{quote}
+% \cs{AssignSocketPlug}\marg{socket-name}\marg{socket-plug-name}
+% \end{quote}
+% If the programming logic should change, then all that is necessary is
+% to make a new assignment with \cs{AssignSocketPlug} to a different
+% \marg{socket-plug-name}. This assignment obeys scope so that an
+% environment can alter a socket without the need to restore the
+% previous setting manually.
+%
+% If the socket takes inputs, then those need to be provided to
+% \cs{UseSocket} and in that case they can be referenced in the \meta{code}
+% argument of \cs{NewSocketPlug} with \verb=#1=, \verb=#2=, etc.
+%
+% In most cases a named socket is used only in a single place, but there
+% is, of course, nothing wrong with using it in several places, as long
+% as the code in all places is supposed to change in the same way.
+%
+%
+%
+%
+%
+% \subsubsection{Examples}
+%
+%
+% We start by declaring a new socket named \socket{foo} that expects
+% two inputs:
+%\begin{verbatim}
+% \NewSocket{foo}{2}
+%\end{verbatim}
+% \NewSocket{foo}{2}
+%
+% Such a declaration has do be unique across the whole \LaTeX{}
+% run. Thus, if another package attempts to use the same name
+% (regardless of the number of inputs) it will generate an error:
+%\begin{verbatim}
+% \NewSocket{foo}{2}
+% \NewSocket{foo}{1}
+% \end{verbatim}
+% Both declarations would therefore produce:
+% \begin{verbatim}
+% ! LaTeX socket Error: Socket 'foo' already declared!
+%\end{verbatim}
+%
+% You also get an error if you attempt to declare some socket plug and
+% the socket name is not yet declared, e.g.,
+%\begin{verbatim}
+% \NewSocketPlug{baz}{undeclared}{some code}
+%\end{verbatim}
+% generates
+%\begin{verbatim}
+% ! LaTeX socket Error: Socket 'baz' undeclared!
+%\end{verbatim}
+%
+%
+% Setting up plugs for the socket is done like this:
+%\begin{verbatim}
+% \NewSocketPlug{foo}{plug-A}
+% {\begin{quote}\itshape foo-A: #1!#2\end{quote}}
+% \NewSocketPlug{foo}{plug-B}
+% {\begin{quote}\sffamily foo-B: #2\textsuperscript{2}\end{quote}}
+%\end{verbatim}
+% This will set up the plugs \texttt{plug-A} and \texttt{plug-B} for
+% this socket.
+%
+%\NewSocketPlug{foo}{plug-A}{\begin{quote}\itshape foo-A: #1!#2\end{quote}}
+%\NewSocketPlug{foo}{plug-B}{\begin{quote}\sffamily foo-B: #2\textsuperscript{2}\end{quote}}
+%
+% We still have to assign one or the other to the socket, thus without
+% doing that the line
+% \begin{verbatim}
+% \UseSocket{foo}{hello}{world}
+% \end{verbatim}
+% produces nothing because the default plug for sockets with 2 inputs
+% is \plug{noop} (which grabs the additional arguments and throws them
+% away).\footnote{If socket \socket{foo} would have been a socket with one
+% input, then the default plug would be \plug{identity}, in which case
+% the socket input would remain without braces and gets typeset!}
+%
+% \UseSocket{foo}{hello}{world} ^^A nothing happens
+%
+% So let's do the assignment
+% \begin{verbatim}
+% \AssignSocketPlug{foo}{plug-A}
+% \end{verbatim}
+% and then
+% \begin{verbatim}
+% \UseSocket{foo}{hello}{world}
+% \end{verbatim}
+% will properly typeset
+% \AssignSocketPlug{foo}{plug-A}\UseSocket{foo}{hello}{world}
+% and after
+% \begin{verbatim}
+% \AssignSocketPlug{foo}{plug-B}
+% \end{verbatim}
+% and another call to
+% \begin{verbatim}
+% \UseSocket{foo}{hello}{world}
+% \end{verbatim}
+% we get
+% \AssignSocketPlug{foo}{plug-B}\UseSocket{foo}{hello}{world}
+%
+% If we attempt to assign a plug that was not defined, e.g.,
+% \begin{verbatim}
+% \AssignSocketPlug{foo}{plug-C}
+% \end{verbatim}
+% then we get an error during the assignment
+% \begin{verbatim}
+% ! LaTeX socket Error: Plug 'plug-C' for socket 'foo' undeclared!
+% \end{verbatim}
+% and the previous assignment remains in place.
+%
+% To see what is known about a socket and its plugs you can use
+% \cs{ShowSocket} or \cs{LogSocket} which displays information similar
+% to this on the terminal or in the transcript file:
+% \begin{verbatim}
+% Socket foo:
+% number of inputs = 2
+% available plugs = noop, plug-A, plug-B
+% current plug = plug-B
+% definition = \protected\long macro:#1#2->\begin {quote}\sffamily
+% foo-B: #2\textsuperscript {2}\end {quote}
+% \end{verbatim}
+% \LogSocket{foo}
+%
+%
+% \subsubsection{Details and semantics}
+%
+% In this section we collect some normative statements.
+%
+% \begin{itemize}
+%
+% \item
+% From a functional point of view sockets are like simple \TeX{} macros,
+% i.e., they expect 0 to 9 mandatory arguments (the socket inputs) and get replaced by
+% their \enquote{expansion}
+%
+% \item
+% A socket is \enquote{named} and the name consists of ASCII letters
+% \texttt{[a-z]},
+% \texttt{[A-Z]}, \texttt{[0-9]}, \texttt{[-/@]} only
+%
+% \item
+% Socket names have to be unique, i.e., there can be only one socket
+% named \meta{name}. This is ensured by declaring each socket with
+% \cs{NewSocket}.
+%
+% However, there is no requirement that sockets and
+% hook names have to be different. In fact, if a certain action that
+% could overwise be specified as hook code has to be executed always
+% last (or first) one could ensure this by placing a socket (single
+% action) after a hook (or vice versa) and using the same name to
+% indicate the relationship, e.g.,
+%\begin{verbatim}
+% \UseHook{foo} % different package can add code here
+% \UseSocket{foo} % only one package can assign a plug
+%\end{verbatim}
+% This avoids the need to order the hook code to ensure that
+% something is always last.
+%
+% \item
+% Best practice naming conventions are \ldots\ \emph{to be documented}
+%
+% \item
+% A socket has documented inputs which are
+%
+% \begin{itemize}
+% \item
+% the positional arguments (if any) with a description of what
+% they contain when used
+%
+% \item
+% implicit data (registers and other 2e/expl3 data stores) that
+% the socket is allowed to make use of, with a documented description
+% of what they contain (if relevant for the task at hand---no need to
+% describe the whole \LaTeX{} universe)
+%
+% \item
+% information about the state of the \TeX{} engine (again when
+% relevant), e.g. is called in mmode or vmode or in the output routine or \ldots
+%
+% \item
+% \ldots\ \empty{anything missing?}
+% \end{itemize}
+%
+%
+% \item
+% A socket has documented results/outputs which can be
+%
+% \begin{itemize}
+% \item
+% what kind of data it should write to the current list (if that
+% is part of its task)
+%
+% \item
+% what kind of registers and other 2e/expl3 data stores it should
+% modify and in what way
+%
+% \item
+% what kind of state changes it should do (if any)
+%
+% \item
+% \emph{\ldots\ anything else?}
+% \end{itemize}
+%
+% \item
+%
+% At any time a socket has one block of code (a plug \iffalse(\fi:-)\,)
+% associated with it. Such code is itself named and the association
+% is done by linking the socket name to the code name (putting a
+% plug into the socket).
+%
+% \item
+%
+% The name of a plug consists of ASCII letters \texttt{[a-z]},
+% \texttt{[A-Z]}, \texttt{[0-9]}, \texttt{[-/@]} only.
+%
+% \item
+% Socket plug names have to be unique within on a per socket basis,
+% but it is perfectly allowed (and sensible in some cases) to use
+% the same plug name with different sockets (where based on the
+% sockets' purposes, different actions may be associated with the plug
+% name). For example \plug{noop} is a plug name declared for every
+% socket, yet it action \enquote{grab the socket inputs and throw
+% them away} obviously differs depending on how many inputs the
+% socket has.
+%
+% \item
+%
+% When declaring a plug it is stated for which socket it is meant
+% (i.e., its code can only be used with that socket). This means
+% that the same plug name can be used with different sockets
+% referring to different code in each case.
+%
+% \item
+% Configuration of a socket can only be done by
+% linking different code to it. Nevertheless the code linked to it can
+% provide its own means of configuration (but this is outside of the
+% spec).
+%
+% \item
+% Technically execution of a socket (\cs{UseSocket}) involves
+%
+% \begin{itemize}
+% \item
+% doing any house keeping (like writing debugging info, \ldots);
+%
+% \item
+% looking up the current code association (what plug is in the socket);
+%
+% \item
+% executing this code which will pick up the mandatory arguments
+% (happens at this point, not
+% before), i.e., it is like calling a csname defined with
+% \begin{verbatim}
+% \def\foo#1#2...{...#1...#2...}
+% \end{verbatim}
+%
+% \item
+% do some further house keeping (if needed).
+% \end{itemize}
+%
+% \item
+% A socket is typically only used in one place in code, but this is not
+% a requirement, i.e., if the same operation with the same inputs need
+% to be carried out in several places the same named socket can be used.
+%
+% \end{itemize}
+%
+%
+%
+%
+%
+% \subsubsection{Command syntax}
+%
+% We give both the \LaTeXe{} and the L3 programming layer command names.
+%
+% \begin{function}{\NewSocket,\socket_new:nn}
+% \begin{syntax}
+% \cs{NewSocket} \Arg{socket-name}\Arg{number-of-inputs}
+% \cs{socket_new:nn}\Arg{socket-name}\Arg{number-of-inputs}
+% \end{syntax}
+% Declares a new socket with name \meta{socket-name} having
+% \meta{number-of-inputs} inputs. There is automatically a
+% plug \plug{noop} declared for it, which does nothing, i.e., it gobbles
+% the socket inputs (if any). This is made the default plug except for
+% sockets with one input which additionally define the plug
+% \plug{identity} and assign that as their default.
+%
+% This \plug{identity} plug simply returns the socket input without
+% its outer braces.
+% The use case for this plug are situations like this:
+% \begin{quote}
+% \cs{UseSocket}\verb={tagsupport/footnote}=\Arg{code}
+% \end{quote}
+% If tagging is not active and the socket contains the plug \plug{identity}
+% then this returns \meta{code} without the outer braces and to
+% activate tagging all that is necessary is to change the plug to
+% say \plug{tagpdf} so
+% that it surrounds \meta{code} by some tagging magic.
+% This is the most common use case for sockets with one input, which
+% is why they have this special default.
+%
+% The socket documentation should describe its purpose, its inputs and the
+% expected results as discussed above.
+%
+% The declaration is only allowed at top-level, i.e., not inside a group.
+% \end{function}
+%
+%
+% \begin{function}{\NewSocketPlug,\socket_new_plug:nnn,\socket_set_plug:nnn}
+% \begin{syntax}
+% \cs{NewSocketPlug} \Arg{socket-name}\Arg{socket-plug-name}\Arg{code}
+% \cs{socket_new_plug:nnn}\Arg{socket-name}\Arg{socket-plug-name}\Arg{code}
+% \cs{socket_set_plug:nnn}\Arg{socket-name}\Arg{socket-plug-name}\Arg{code}
+% \end{syntax}
+% Declares a new plug for socket \meta{socket-name} that runs
+% \meta{code} when executing. It complains if the plug was already
+% declared previously.
+%
+% The form \cs{socket_set_plug:nnn} changes an existing plug. As
+% this should normally not be necessary, we currently have only an L3
+% layer name for the few cases it might be useful.
+%
+% The declarations can be made inside a group and obey scope, i.e.,
+% they vanish if the group ends.
+% \end{function}
+%
+%
+% \begin{function}{\AssignSocketPlug,\socket_assign_plug:nn}
+% \begin{syntax}
+% \cs{AssignSocketPlug} \Arg{socket-name}\Arg{socket-plug-name}
+% \cs{socket_assign_plug:nn}\Arg{socket-name}\Arg{socket-plug-name}
+% \end{syntax}
+% Assigns the plug \meta{socket-plug-name} to the socket
+% \meta{socket-name}. It errors if either socket or plug is not
+% defined.
+%
+% The assignment is local, i.e., it obeys scope.
+% \end{function}
+%
+%
+% \begin{function}{\UseSocket,\socket_use:nw,\socket_use:n,\socket_use:nn,\socket_use:nnn,\socket_use:nnnn}
+% \begin{syntax}
+% \cs{UseSocket} \Arg{socket-name}
+% \cs{socket_use:nnn}\Arg{socket-name} \Arg{socket-arg\textsubscript{1}} \Arg{socket-arg\textsubscript{2}}
+% \end{syntax}
+% Executes the socket \meta{socket-name} by retrieving the
+% \meta{code} of the current plug assigned to the socket. This is
+% the only command that would appear inside macro code in packages.
+%
+% For performance reasons there is no explicit check that the socket
+% was declared!
+%
+% The different L3 programming layer commands are really doing the
+% same thing: they grab as many arguments as defined as inputs for the socket
+% and then pass them to the plug. The different names are only there
+% to make the code more readable, i.e., to indicate how many
+% arguments are grabbed in total (note that no runtime check is made to
+% verify that this is actually true). We only provide them for
+% sockets with up to 3 inputs (most likely those with zero or one input would
+% have been sufficient). If you happen to have a socket with more
+% inputs, use \cs{socket_use:nw}.
+% \end{function}
+%
+%
+% \begin{function}{\ShowSocket,\LogSocket,\socket_show:n,\socket_log:n}
+% \begin{syntax}
+% \cs{ShowSocket} \Arg{socket-name}
+% \cs{socket_show:n}\Arg{socket-name}
+% \end{syntax}
+% Displays information about the socket \meta{socket-name} and its
+% state then stops and waits for further instructions --- at the
+% moment some what rudimentary.
+%
+% \cs{LogSocket} and \cs{socket_log:n} only differ in that they don't stop.
+% \end{function}
+%
+%
+% \begin{function}{\DebugSocketsOn,\DebugSocketsOff,
+% \socket_debug_on:,\socket_debug_off:}
+% \begin{syntax}
+% \cs{DebugSocketsOn} \ldots\ \cs{DebugSocketsOff}
+% \end{syntax}
+% Turns debugging of sockets on or off.
+% \end{function}
+%
+% \subsubsection{Rationale for error handling}
+%
+% The errors during the declarations are produced to help with
+% typos---after all, such declarations might be part of a document
+% preamble (not that likely, but possible). However, \cs{UseSocket} is
+% not doing much checking, e.g.,
+% \begin{verbatim}
+% \UseSocket{mispelled-socket}{hello}{world}
+% \end{verbatim}
+% will generate a rather low-level error and then typesets
+% ``{hello}{world}'' because there is no dedicated runtime check if
+% \texttt{mispelled-socket} is a known socket.
+%
+% The reason is that if the misspelling is in the code, then this is a
+% programming error in the package and for speed reasons \LaTeX{} does
+% not repeately make runtime checks for coding errors unless they can or
+% are likely to be user introduced.
+%
+%
+% \MaybeStop{\setlength\IndexMin{200pt} \PrintIndex }
+%
+%
+% \section{The Implementation}
+%
+% The implementation of the socket mechanism should be (partially)
+% redone and we should probably store the different code chunks in
+% a property list so that we can have a decent \cs{ShowSocket}
+% command that shows the available alternatives.\fmi{implement?}
+%
+% \begin{macrocode}
+%<*2ekernel|latexrelease>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOn
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=socket>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<latexrelease>\NewModuleRelease{2023/11/01}{ltsockets}
+%<latexrelease> {The~socket~management~system}
+% \end{macrocode}
+%
+%
+%
+% \subsection{Debugging the socket structures}
+%
+% Code and commands in this section are not final, it needs more
+% experimentation to see what kind of tracing information is going to
+% be useful in practice. For now the tracing is mainly meant to be used
+% for code testing and not so much for application testing.
+%
+% It is quite likely that the
+% commands and the behavior of the tracing might change in the
+% future once we gained some experience with it.
+%
+% \begin{macro}{\g_@@_debug_bool}
+% Holds the current debugging state.
+% \begin{macrocode}
+\bool_new:N \g_@@_debug_bool
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\socket_debug_on:,\socket_debug_off:}
+% \begin{macro}{\@@_debug:n, \@@_debug_term:n}
+% \begin{macro}{\@@_debug_gset:}
+% Turns debugging on and off by redefining \cs{@@_debug:n} and
+% \cs{@@_debug_term:n}. By default they do nothing.
+% \begin{macrocode}
+\cs_new_eq:NN \@@_debug:n \use_none:n
+\cs_new_eq:NN \@@_debug_term:n \use_none:n
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_debug_on:
+ {
+ \bool_gset_true:N \g_@@_debug_bool
+ \@@_debug_gset:
+ }
+\cs_new_protected:Npn \socket_debug_off:
+ {
+ \bool_gset_false:N \g_@@_debug_bool
+ \@@_debug_gset:
+ }
+\cs_new_protected:Npn \@@_debug_gset:
+ {
+ \cs_gset_protected:Npx \@@_debug:n ##1
+ { \bool_if:NT \g_@@_debug_bool {##1} }
+ \cs_gset_protected:Npx \@@_debug_term:n ##1
+ { \bool_if:NT \g_@@_debug_bool
+ { \iow_term:x { ^^J [Sockets]~ ==>~ ##1} } }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+%
+% \subsection{The L3 layer commands}
+%
+% \begin{macro}{\socket_new:nn}
+%
+% Declaring a socket creates a str to hold the name (a pointer) to the
+% code that should be used when the socket is executed, and an integer to
+% hold the number of inputs of that socket. Initially, an
+% ``empty'' code chunk is created and assigned so the socket
+% does nothing by default other than swallowing its inputs (if any).
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_new:nn #1 #2 {
+ \str_if_exist:cTF { l_@@_#1_plug_str }
+ {
+ \msg_error:nnn { socket } { already-declared } {#1}
+ }
+ {
+% \end{macrocode}
+% We only support declarations on top-level.
+% \begin{macrocode}
+ \int_if_zero:nTF \tex_currentgrouplevel:D
+ {
+ \str_new:c { l_@@_#1_plug_str }
+ \seq_new:c { l_@@_#1_plugs_seq }
+ \int_const:cn { c_@@_#1_args_int } {#2}
+ \socket_new_plug:nnn {#1} { noop } {}
+ \int_compare:nNnTF {#2} = 1
+ {
+ \socket_new_plug:nnn {#1} { identity } {##1}
+ \socket_assign_plug:nn {#1} { identity }
+ }
+ { \socket_assign_plug:nn {#1} { noop } }
+ \@@_debug_term:n
+ { Socket~ '#1'~ declared~ with~ #2~ input(s) }
+ }
+ {
+ \msg_error:nn { socket } { not-top-level }
+ }
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\socket_log:n,\socket_show:n}
+% Show the current state of the socket --- for now this is just a
+% quick draft and should be redone and extended.
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_log:n #1 {
+ \typeout{ Socket~ #1:}
+ \str_if_exist:cTF { l_@@_#1_plug_str }
+ {
+ \typeout{ \@spaces number~ of~ inputs~ =~
+ \int_use:c { c_@@_#1_args_int } }
+ \typeout{ \@spaces available~plugs~ =~
+ \seq_use:cnnn { l_@@_#1_plugs_seq }{,~}{,~}{,~} }
+ \typeout{ \@spaces current~ plug~ =~
+ \str_use:c { l_@@_#1_plug_str } }
+ \typeout{ \@spaces definition~ =~
+ \cs_meaning:c
+ { @@_#1_plug_ \str_use:c { l_@@_#1_plug_str } :w } }
+ \typeout{}
+ }
+ {
+% \end{macrocode}
+% If we are showing a socket it is not an error if it doesn't exist.
+% \begin{macrocode}
+ \typeout { Socket~ is~ not~ declared! }
+ }
+}
+% \end{macrocode}
+% And here the version that stops:
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_show:n #1 {\socket_log:n {#1} \errmessage{}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+%
+% \begin{macro}{\socket_new_plug:nnn,\socket_set_plug:nnn}
+%
+% Declaring a code for a socket is just making a definition, taking
+% the number of arguments from the saved int.
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_new_plug:nnn #1#2#3 {
+ \str_if_exist:cTF { l_@@_#1_plug_str }
+ {
+ \cs_if_exist:cTF { @@_#1_plug_#2:w }
+ {
+ \msg_error:nnnn { socket } { plug-already-declared } {#1} {#2}
+ }
+ {
+ \cs_generate_from_arg_count:cNnn
+ { @@_#1_plug_#2:w }
+ \cs_new_protected:Npn
+ { \int_use:c { c_@@_#1_args_int } }
+ {#3}
+% \end{macrocode}
+% This is a new declaration so we add the name to a seq for the
+% debugging info.
+% \begin{macrocode}
+ \seq_put_right:cn { l_@@_#1_plugs_seq } {#2}
+ \@@_debug_term:n
+ { Plug~ '#2'~ for~ socket~ '#1'~ declared. }
+ }
+ }
+ {
+ \msg_error:nnn { socket } { undeclared } {#1}
+ }
+}
+% \end{macrocode}
+% Changing the plug of an existing socket is rather similar, except
+% that we don't have to deal with adding it to the debugging
+% sequence.
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_set_plug:nnn #1#2#3 {
+ \str_if_exist:cTF { l_@@_#1_plug_str }
+ {
+ \cs_if_exist:cTF { @@_#1_plug_#2:w }
+ {
+ \cs_generate_from_arg_count:cNnn
+ { @@_#1_plug_#2:w }
+ \cs_set_protected:Npn
+ { \int_use:c { c_@@_#1_args_int } }
+ {#3}
+ \@@_debug_term:n
+ { Plug~ '#2'~ for~ socket~ '#1'~ changed. }
+ }
+ {
+ \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2}
+ }
+ }
+ {
+ \msg_error:nnn { socket } { undeclared } {#1}
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\socket_assign_plug:nn}
+%
+% Assigning a plug to a socket just changes the name in
+% the socket string. The assignment is local to the current group.
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_assign_plug:nn #1 #2 {
+ \str_if_exist:cTF { l_@@_#1_plug_str }
+ {
+ \cs_if_exist:cTF { @@_#1_plug_#2:w }
+ {
+ \@@_debug_term:n
+ { Replacing~ plug~ '\str_use:c { l_@@_#1_plug_str }'~
+ with~ '#2'~ in~ socket~ '#1'. }
+ \str_set:cn { l_@@_#1_plug_str } {#2}
+ }
+ {
+ \msg_error:nnnn { socket } { plug-undeclared } {#1} {#2}
+ }
+ }
+ { \msg_error:nnn { socket } { undeclared } {#1} }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\socket_use:nw,\socket_use:n,\socket_use:nn,\socket_use:nnn,\socket_use:nnnn}
+%
+% And using it is more or less a \cs{use:c} so very lightweight. We do not
+% add a runtime check for speed reasons!
+%
+% This command is named
+% \cs{socket_use:nw} because we don't know how many inputs the
+% socket has until we have looked at the socket name (in argument \verb=#1=).
+% But, of course, the developer knows so we also offer a few aliases
+% \cs{socket_use:nn}, etc.\ so that one can indicate the correct number of
+% arguments (socket inputs plus one) in the L3 layer code.
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \socket_use:nw #1 {
+ \@@_debug_term:n
+ { Socket~ '#1'~ containing~ plug~
+ '\str_use:c { l_@@_#1_plug_str }'~ used. }
+ \use:c { @@_#1_plug_ \str_use:c { l_@@_#1_plug_str } :w }
+}
+% \end{macrocode}
+% To make code a bit more readable we also define functions that
+% indicate how many arguments are picked up. However, this is just for
+% code documentation: internally they all do the same and the number
+% of arguments isn't checked by default.
+% \begin{macrocode}
+\cs_new_eq:NN \socket_use:n \socket_use:nw % socket with no inputs
+\cs_new_eq:NN \socket_use:nn \socket_use:nw % socket with one input
+\cs_new_eq:NN \socket_use:nnn \socket_use:nw % socket with two inputs
+\cs_new_eq:NN \socket_use:nnnn \socket_use:nw % socket with three inputs
+% \end{macrocode}
+% The above commands could be changed to check how many inputs
+% the socket is declared with (for example, when checking is in
+% force).
+% \fmi{Implement?}
+% \end{macro}
+%
+%
+%
+%
+%
+%
+%
+% \subsection{Error messages}
+%
+
+%
+% \begin{macrocode}
+\msg_new:nnnn { socket } { already-declared }
+ { Socket~ '#1'~ already~ declared! }
+ { A~ socket~ can~ only~ be~ declared~ once.~ The~ name~ '#1'~ is~
+ already~ taken.~ Use~ \ShowSocket{#1}~ to~ see~ its~ definition. }
+
+\msg_new:nnnn { socket } { undeclared }
+ { Socket~ '#1'~ undeclared! }
+ { You~ tried~ to~ use~ a~ socket~ that~ was~ not~ declared~ before. }
+
+\msg_new:nnnn { socket } { not-top-level }
+ { Sockets~ can~ only~ be~ declared~ at~ top-level! }
+ { It~ is~ not~ allowed~ to~ declare~ sockets~ inside~ a~
+ group.~ Move~ the~ declaration~ to~ the~ top-level. }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\msg_new:nnnn { socket } { plug-already-declared }
+ { Plug~ '#2'~ for~ socket~ '#1'~ already~ declared! }
+ { You~ can't~ change~ an~ existing~ plug~ with~ \NewSocketPlug~ and~ it~
+ is~ normally~ not~ sensible~ to~ do~ so.~ Use~ the~ L3~ programming~
+ layer~ function~ \socket_set_plug:nnn~ if~ you~ really~ have~ to. }
+
+\msg_new:nnnn { socket } { plug-undeclared }
+ { Plug~ '#2'~ for~ socket~ '#1'~ undeclared! }
+ { The~ plug~ name~ is~ unknown.~ Is~ the~ name~ misspelled~ or~ did~ you~
+ intend~ to~ assign~ it~ to~ a~ different~ socket? }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\prop_gput:Nnn \g_msg_module_type_prop { socket } { LaTeX }
+% \end{macrocode}
+%
+%
+%
+%
+% \subsection{The \LaTeXe{} interface commands}
+%
+% \begin{macro}{\NewSocket,\NewSocketPlug,
+% \ShowSocket,\LogSocket,
+% \AssignSocketPlug,\UseSocket,
+% \DebugSocketsOn,\DebugSocketsOff}
+% As we expect that there are existing \LaTeXe{} packages that may
+% want to make use of the socket mechanism, we provide 2e names for
+% most of the commands.
+% \begin{macrocode}
+\cs_new_eq:NN \NewSocket \socket_new:nn
+\cs_new_eq:NN \ShowSocket \socket_show:n
+\cs_new_eq:NN \LogSocket \socket_log:n
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_eq:NN \NewSocketPlug \socket_new_plug:nnn
+\cs_new_eq:NN \AssignSocketPlug \socket_assign_plug:nn
+\cs_new_eq:NN \UseSocket \socket_use:nw
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_eq:NN \DebugSocketsOn \socket_debug_on:
+\cs_new_eq:NN \DebugSocketsOff \socket_debug_off:
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macrocode}
+%
+%<latexrelease>\IncludeInRelease{0000/00/00}{ltsockets}
+%<latexrelease> {The~socket~management~(undo)}%
+%<latexrelease>
+%<latexrelease>\let \NewSocket \@undefined
+%<latexrelease>\let \ShowSocket \@undefined
+%<latexrelease>\let \LogSocket \@undefined
+%<latexrelease>
+%<latexrelease>\let \NewSocketPlug \@undefined
+%<latexrelease>\let \AssignSocketPlug \@undefined
+%<latexrelease>\let \UseSocket \@undefined
+%<latexrelease>
+%<latexrelease>\let \DebugSocketsOn \@undefined
+%<latexrelease>\let \DebugSocketsOff \@undefined
+%<latexrelease>
+%<latexrelease>\EndModuleRelease
+% \end{macrocode}
+%
+% \begin{macrocode}
+\ExplSyntaxOff
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</2ekernel|latexrelease>
+% \end{macrocode}
+%
+% Reset module prefix:
+% \begin{macrocode}
+%<@@=>
+% \end{macrocode}
+%
+%
+% \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/base/ltspace.dtx b/macros/latex/base/ltspace.dtx
index a77314b1bd..03b3445047 100644
--- a/macros/latex/base/ltspace.dtx
+++ b/macros/latex/base/ltspace.dtx
@@ -32,7 +32,7 @@
%<*driver>
% \fi
\ProvidesFile{ltspace.dtx}
- [2023/05/26 v1.3p LaTeX Kernel (spacing)]
+ [2023/10/26 v1.3r LaTeX Kernel (spacing)]
% \iffalse
\documentclass{ltxdoc}
\GetFileInfo{ltspace.dtx}
@@ -742,7 +742,7 @@
% true (as |\@esphack| used to do previously).
% This is currently used only for floats and similar environments.
% \changes{v1.2s}{1996/08/02}{Remove \cs{global} before \cs{@ignore...}}
-% \changes{v1.3d}{2015/01/11}{Allow hyphenation (Donald Arseneau pr/3498) (latexrelease)}w
+% \changes{v1.3d}{2015/01/11}{Allow hyphenation (Donald Arseneau pr/3498) (latexrelease)}
% \begin{macrocode}
%</2ekernel>
%<latexrelease>\IncludeInRelease{2015/01/01}%
@@ -1195,6 +1195,7 @@
%
% \begin{macro}{\nobreakspace}
% \changes{v1.2k}{1995/12/04}{(Macro added}
+% \changes{v1.3r}{2023/10/26}{Protected definition for tilde}
% \begin{macro}{\@xobeysp}
% \changes{v1.2t}{1996/09/28}{Moved from ltmiscen.dtx and redefined to
% use \cs{nobreakspace }}
@@ -1213,19 +1214,54 @@
% We need to keep \cs{@xobeysp} as it is widely used; so here it is
% let to the non-robust command \cs{nobreakspace }.
%
+% The fragile version of |~| needs a brace group after \cs{nobreakspace}
+% to prevent loss of spaces if it occurs in an expansion context. That's
+% not an issue with the updated \cs{protected} definition, so we keep the
+% code shorter and avoid that.
% \begin{macrocode}
\DeclareRobustCommand{\nobreakspace}{%
\leavevmode\nobreak\ }
\catcode `\~=13
-\def~{\nobreakspace{}}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\tilde}{Protected tilde}%
+%<*2ekernel|latexrelease>
+\protected\edef~{%
+ \noexpand\ifincsname\noexpand\expandafter\string~%
+ \noexpand\else
+ \noexpand\expandafter\noexpand\nobreakspace
+ \noexpand\fi
+}
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\tilde}{Protected tilde}%
+%<latexrelease>\def~{\nobreakspace{}}
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
\expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
% \end{macrocode}
% \end{macro}
% \end{macro}
%
+% \begin{macro}{\@xobeytab}
+% \changes{v1.3q}{2023/06/14}{Macro added}
+% Equivalent to the space case with the default settings.
% \begin{macrocode}
+%</2ekernel>
+%<latexrelease>\IncludeInRelease{2023/11/01}%
+%<latexrelease> {\@xobeytab}{Obeyed tabs}%
+%<*2ekernel|latexrelease>
+\let\@xobeytab\@xobeysp
+%</2ekernel|latexrelease>
+%<latexrelease>\EndIncludeInRelease
+%<latexrelease>\IncludeInRelease{0000/00/00}%
+%<latexrelease> {\@xobeytab}{Obeyed tabs}%
+%<latexrelease>\let\@xobeytab\@undefined
+%<latexrelease>\EndIncludeInRelease
+%<*2ekernel>
% \end{macrocode}
-%
+% \end{macro}
%
%
% \begin{macro}{\@}
diff --git a/macros/latex/base/ltvers.dtx b/macros/latex/base/ltvers.dtx
index b324a38020..b2198bbbbc 100644
--- a/macros/latex/base/ltvers.dtx
+++ b/macros/latex/base/ltvers.dtx
@@ -112,10 +112,10 @@
%</2ekernel>
%<latexrelease>\edef\latexreleaseversion
%<*2ekernel|latexrelease>
- {2023-06-01}
+ {2023-11-01}
%</2ekernel|latexrelease>
%<*2ekernel>
-\def\patch@level{1}
+\def\patch@level{0}
% \end{macrocode}
%
% \begin{macro}{\development@branch@name}
diff --git a/macros/latex/base/ltx3info.pdf b/macros/latex/base/ltx3info.pdf
index 40e4f48331..d94fc56f61 100644
--- a/macros/latex/base/ltx3info.pdf
+++ b/macros/latex/base/ltx3info.pdf
Binary files differ
diff --git a/macros/latex/base/ltxdoc.pdf b/macros/latex/base/ltxdoc.pdf
index 9ff5be506c..bffaeceb51 100644
--- a/macros/latex/base/ltxdoc.pdf
+++ b/macros/latex/base/ltxdoc.pdf
Binary files differ
diff --git a/macros/latex/base/makeindx.pdf b/macros/latex/base/makeindx.pdf
index d656a530e6..6a8cd10b17 100644
--- a/macros/latex/base/makeindx.pdf
+++ b/macros/latex/base/makeindx.pdf
Binary files differ
diff --git a/macros/latex/base/manifest.txt b/macros/latex/base/manifest.txt
index 22791a2494..ff7bf49ad1 100644
--- a/macros/latex/base/manifest.txt
+++ b/macros/latex/base/manifest.txt
@@ -145,6 +145,7 @@
% ltcmdhooks.dtx -- Hook management (generic) for commands
% ltpara.dtx -- Hook management for paragraphs
% ltmarks.dtx -- Mark management
+% ltsockets.dtx -- Sockets and plugs management
%
% Standard Classes:
% -----------------
diff --git a/macros/latex/base/modguide.pdf b/macros/latex/base/modguide.pdf
index e6d7de3b3e..e3182bf680 100644
--- a/macros/latex/base/modguide.pdf
+++ b/macros/latex/base/modguide.pdf
Binary files differ
diff --git a/macros/latex/base/nfssfont.pdf b/macros/latex/base/nfssfont.pdf
index e99ee3d534..7293533226 100644
--- a/macros/latex/base/nfssfont.pdf
+++ b/macros/latex/base/nfssfont.pdf
Binary files differ
diff --git a/macros/latex/base/proc.pdf b/macros/latex/base/proc.pdf
index b215de97dc..74bd93e935 100644
--- a/macros/latex/base/proc.pdf
+++ b/macros/latex/base/proc.pdf
Binary files differ
diff --git a/macros/latex/base/slides.pdf b/macros/latex/base/slides.pdf
index 4be668aade..c347373ea5 100644
--- a/macros/latex/base/slides.pdf
+++ b/macros/latex/base/slides.pdf
Binary files differ
diff --git a/macros/latex/base/slifonts.pdf b/macros/latex/base/slifonts.pdf
index da07645303..02b6504061 100644
--- a/macros/latex/base/slifonts.pdf
+++ b/macros/latex/base/slifonts.pdf
Binary files differ
diff --git a/macros/latex/base/source2e.pdf b/macros/latex/base/source2e.pdf
index 8d2cc4f2f7..5c112d7b48 100644
--- a/macros/latex/base/source2e.pdf
+++ b/macros/latex/base/source2e.pdf
Binary files differ
diff --git a/macros/latex/base/source2e.tex b/macros/latex/base/source2e.tex
index 873daebb4d..c538593ddd 100644
--- a/macros/latex/base/source2e.tex
+++ b/macros/latex/base/source2e.tex
@@ -254,6 +254,8 @@ page_precedence "rnaA"
\DocInclude{ltcmdhooks}% Hook management for commands (L3 module)
+ \DocInclude{ltsockets}% Socket and plug management (L3 module)
+
\DocInclude{ltalloc} % Allocation of counters and others.
\DocInclude{ltcntrl} % Program control macros.
@@ -301,6 +303,8 @@ page_precedence "rnaA"
\DocInclude{ltpageno} % Page numbering
\DocInclude{ltxref} % Cross referencing
+
+ \DocInclude{ltproperties} % Extended Cross referencing
\DocInclude{ltmiscen} % Miscellaneous environment definitions.
diff --git a/macros/latex/base/source2edoc.cls b/macros/latex/base/source2edoc.cls
index f0f1479cac..5f731af7ae 100644
--- a/macros/latex/base/source2edoc.cls
+++ b/macros/latex/base/source2edoc.cls
@@ -30,7 +30,7 @@
\seq_if_empty:NF \g__codedoc_nested_names_seq
{
% This is a crude change: we grab the first name
- \__codedoc_get_hyper_target:xN
+ \__codedoc_get_hyper_target:eN
{ \seq_item:Nn \g__codedoc_nested_names_seq { 1 } }
\l__codedoc_tmpa_tl
% ... and check if it has a reference
diff --git a/macros/latex/base/syntonly.pdf b/macros/latex/base/syntonly.pdf
index a916465230..cfd0712147 100644
--- a/macros/latex/base/syntonly.pdf
+++ b/macros/latex/base/syntonly.pdf
Binary files differ
diff --git a/macros/latex/base/tlc2.err b/macros/latex/base/tlc2.err
index 5b01ff0513..5c8723a4cb 100644
--- a/macros/latex/base/tlc2.err
+++ b/macros/latex/base/tlc2.err
@@ -1,4 +1,4 @@
-\newcommand\erratafiledate{2023-01-08}
+\newcommand\erratafiledate{2023/01/08}
\def\comando#1{\texttt{\string#1}}
diff --git a/macros/latex/base/tlc2.pdf b/macros/latex/base/tlc2.pdf
index 731b1d3c38..385bfb2af9 100644
--- a/macros/latex/base/tlc2.pdf
+++ b/macros/latex/base/tlc2.pdf
Binary files differ
diff --git a/macros/latex/base/tlc3.err b/macros/latex/base/tlc3.err
index b7e2c1c0fd..d4f94705d7 100644
--- a/macros/latex/base/tlc3.err
+++ b/macros/latex/base/tlc3.err
@@ -1,6 +1,4 @@
-\newcommand\erratafiledate{2023-05-30}
-
-\def\comando#1{\texttt{\string#1}}
+\newcommand\erratafiledate{2023/10/30} % needs / and not -
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% To produce a printed version of this errata file run this file through
@@ -255,15 +253,22 @@
%
% Specifies the date from which on errata entries should be listed.
%
-% The format is YYYY/MM/DD.
+% The format is YYYY/MM/DD (hyphens are not supported)
%
% The default below ensures that all entries for a particular
% printing are typeset.
%
-\renewcommand\erratastartdate{2023/04/01}
+\renewcommand\erratastartdate{2023/04/01} % ALL ENTRIES
+%\renewcommand\erratastartdate{2023/05/30} % for the first digital edition
+%\renewcommand\erratastartdate{2023/09/01} %
+% If you own a digital edition (which is more often updated than the
+% print edition) then you can alter the above date to match the date
+% shown at the bottom of the Copyright page --- if it says
+% "First digital release, 2023" then use the date 2023/05/30 above.
+%
%
% \myprinting
%
@@ -306,9 +311,15 @@
\let\u\underline % shortcut for this file
\newcommand\meta[1]{$\langle$\textit{#1\/}$\rangle$}
-\usepackage{textcomp}
+\usepackage{color}
+\newcommand\bl{\color{blue}}
+
+\newcommand\textttu[1]{\texttt{\upshape #1}}
+
+\usepackage{hyperref}
+
+\let\u\underline % needs resetting after hyperref
-\usepackage{url}
\begin{document}
@@ -333,9 +344,16 @@
\end{verbatim}
-\begin{list}{}{\setlength\leftmargin{0cm}\setlength\rightmargin{3cm}}
+\begin{list}{}{\setlength\leftmargin{0cm}%
+ \setlength\rightmargin{3cm}%
+ \setlength\listparindent{1em}}
\item[]
+\tableofcontents
+
+\bigskip
+
+\noindent
This file (\texttt{\jobname.err}) can be found as part of the \LaTeX{}
distribution and its latest version is maintained on the \LaTeX{}
project site at \texttt{https://www.latex-project.org/help/books/\jobname.err}
@@ -350,6 +368,7 @@ are counted from the bottom of the page). The third column shows the
first finder of the problem.
You can customize this list to only show errata related to the printing
+or digital edition
you own by changing the configuration in the file \texttt{\jobname.cfg}.
\begin{center}
@@ -358,11 +377,11 @@ you own by changing the configuration in the file \texttt{\jobname.cfg}.
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 5
-periods) 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
-the authors do not count.
+limited time periods) to the eligible person who finds the largest number of bugs
+during that period (more precisely, it is a lottery among the people
+with the 5 top-most findings up to that point). A person can receive
+at most one prize, ever; errors found by any of the authors do not
+count.
Each prize is a free choice of any single computing book found on the
Addison-Wesley/Pearson web site:
@@ -388,9 +407,9 @@ Due to its size the third edition of \textit{The \LaTeX{} Companion} is printed
as a two-volume set. The digital version, however, is provided as a
single PDF or ePub. This means that a small fraction of the digital
content differs from that of the printed version: there is only a
-single font matter, a single bibliography, and a single index, whereas
+single front matter, a single bibliography, and a single index, whereas
in the printed books these are separated out. However, all versions share the main
-matter (down to the page numbering) so most of the errata applies to
+matter (down to the page numbering) so most of the errata apply to
all versions, but a few only to the digital and some only to the
printed version. Thus, we end up with three separate lists.
@@ -403,21 +422,34 @@ printed version. Thus, we end up with three separate lists.
%<--------------------------
\newcommand\BibTeX{\textsc{Bib}\TeX}
-\newcommand\cs[1]{\texttt{\textbackslash #1}}
+\newcommand\cs[1]{\texttt{\upshape\textbackslash #1}}
\newcommand\env[1]{\texttt{#1}}
\newcommand\pkg[1]{\textsf{#1}}
-\section*{Errata for the print version (not applicable to the digital version)}
+\section{Errata for the print version (not applicable to the digital version)}
The printed books differ from the digital version in that the
-bibliography is split across both volumes (with a few repeats) and that
-the font matter of each volume has its own table of contents and list
+bibliography is split across both volumes (with a few repeats) and
+the front matter of each volume has its own table of contents and list
of figures and tables. Therefore these parts have different page
numbers and you will see similar errata entries for both print and
digital differing only in that respect.
\begin{erratalist}
+\CHAPTER{General}
+
+\erroronpage{}{}{FMi}{2023/07/30}{}
+
+Text or graphics typeset in the the spot color (blue) are not always
+perfectly aligned. This is a side-effect of the printing technology.
+On most pages everything is fine, but occasionally blue text in a
+paragraph seems to be slightly above or below the baseline or blue
+text in tables appears slightly misaligned horizontally. It differs
+from book to book (and therefore not recorded in this errata) and
+can't be controlled by the authors, unfortunately.
+
+
\CHAPTER{Front matter (Part I)}
\erroronpage{I-ix\ldots I-xvi}{}{FMi}{2023/04/04}{s}
@@ -435,8 +467,12 @@ beyond \> \u{B}eyond
\erroronpage{I-xx\ldots I-xxi}{}{FMi}{2023/04/04}{s}
Dot leaders have been changed on all sections.
+
\CHAPTER{Bibliography (Part I)}
+\erroronpage{I-779}{[24], l.-1}{FMi}{2023/10/28}{s}
+Link should use \texttt{https://}
+
\erroronpage{I-783}{[55], l.-2}{FMi}{2023/04/04}{s}
all \> \u{them} all
@@ -510,23 +546,30 @@ Publishing \> Publishing\u{,}
%<--------------------------
-\section*{Errata for the digital version (not applicable to the print version)}
+\section{Errata for the digital version (not applicable to the print version)}
-All known errors to the digital version have already been incorporated in the product as distributed.
+Most known errors to the digital version have already been
+incorporated in the product as distributed, here are the remaining
+ones.
+
+\begin{erratalist}
-%\begin{erratalist}
-%
%\CHAPTER{General}
%
%\CHAPTER{Front matter}
-%
-%\end{erratalist}
+
+\CHAPTER{Bibliography}
+
+\erroronpage{II-800}{[50], l.-1}{FMi}{2023/10/28}{s}
+Link should use \texttt{https://}
+
+\end{erratalist}
%<--------------------------
-\section*{Errata common to the print and digital versions}
+\section{Errata common to the print and digital versions}
The main matter is identical (also in page numbers) in the print and
the digital versions. Therefore most errata entries appear in this
@@ -537,51 +580,107 @@ section.
\CHAPTER{General}
-\erroronpage{}{}{FMi}{2023/04/04}{s}
+\erroronpage{}{}{FMi}{2023/04/04}{}
Some corrections result in index changes. These are not tracked here;
the index is always fully regenerated for new printings.
+\erroronpage{}{}{MJo/FMi}{2023/07/07}{}
+
+ There are a dozen occurrences of the word \u{rôle} throughout the book,
+ which is more commonly spelled \u{role}. However, this is not wrong
+ but is the somewhat dated form used mostly in British
+ English. Personally, I prefer the version with accent (as does Don
+ Knuth) so it is deliberate and will not change.
+
\CHAPTER{Chapter 1 --- Introduction}
\erroronpage{I-5}{para 4, l.4}{kb}{2023/04/04}{s}
\u{of} the bugs \> \u{with} the bugs
-\\ Already corrected in the digital version.
+
\erroronpage{I-5}{para 5, l.5}{kb}{2023/04/04}{s}
not least \> \u{but} not least
-\\ Already corrected in the digital version.
+
\CHAPTER{Chapter 2 --- The Structure of a \LaTeX{} Document}
\erroronpage{I-34}{l.-1}{FMi}{2023/04/04}{s}
Moved first line of page 35 to 34.
-\\ Already corrected in the digital version.
+
\erroronpage{I-35}{l.1}{FMi}{2023/04/04}{s}
Moved first line of page 35 to 34.
-\\ Already corrected in the digital version.
+
\erroronpage{I-113}{listing}{FMi}{2023/05/14}{s}
Situation is the same in the 2023 distributions; listing output updated.
-\\ Already corrected in the digital version.
+
+
+\erroronpage{I-117}{l.-5}{BeB}{2023/07/25}{s}
+\textit{latexrelease} \> \texttt{latexrelease}
\CHAPTER{Chapter 3 --- Basic Formatting Tools -- Paragraph \ldots}
+\erroronpage{I-160}{para -2, l.1}{BeB}{2023/07/14}{s}
+Repeated word: keys \u{keys} \> keys
+
+\erroronpage{I-163}{para 2, l.2}{FMi}{2023/07/26}{s}
+as we did \u{above}. \> as we did \u{in Example 3-3-14 below}.
+
+\erroronpage{I-163}{para 3, margin}{FMi}{2023/07/26}{s}
+Add a marginal note: \u{No warning if another \LaTeX{} run is necessary!}
+
+\erroronpage{I-163}{example 3-3-14}{BeB}{2023/07/25}{s}
+Output of example misses the page numbers in acronym list \> Run example 3 times (not only twice---there is no warning)
+
+
\CHAPTER{Chapter 4 --- Basic Formatting Tools -- Larger \ldots}
+\erroronpage{I-323}{Table 4.4, left column}{BeB}{2023/07/25}{s}
+Typo: Assembler (\u{N}otorola68k, x86masm) \> \\ Assembler (\u{M}otorola68k, x86masm)
+% Matlab \> Matlab \u{(empty, 5.1)}
+% könnte auch aktualisiert werden, steht aber in Version 1.8d nicht drin
+
\CHAPTER{Chapter 5 --- The Layout of the Page}
+\erroronpage{I-386}{exa 5-3-1, l.7}{EOl}{2023/09/09}{s}
+Change:
+paragraph over \u{two} pages. \> paragraph over \u{three} pages.
+
+\textit{Reason: The third page contains just the word ``pages.'' (which would be page 8)
+is not shown.}
+
+\erroronpage{I-389}{syntax box -1}{DC}{2023/10/06}{s}
+
+\u{\cs{right}} \> \u{\cs{rightmark}}
+
+
\CHAPTER{Chapter 6 --- Tabular Material}
+\erroronpage{I-489}{para 1, l.3}{EOl}{2023/07/30}{s}
+Change:
+to \u{additionally} load \textsf{longtable} or \textsf{supertabular} \u{prior} to \>
+to load \textsf{longtable} or \textsf{supertabular} \u{in addition} to
+
+\erroronpage{I-490}{footnote}{EOl}{2023/07/30}{s}
+Replace footnote text with \>
+If you forget this, you either get an empty cell or, if parts of the
+text can be interpreted as a value, a somewhat ``random'' number and
+the rest is dropped. For example, \texttt{31 December 2022} would
+result in ``31.00'', which is probably not desired.
+
\CHAPTER{Chapter 7 --- Mastering Floats}
+\erroronpage{I-520}{paragraph 4, l.3}{EOl}{2023/09/09}{s}
+Change:
+For \u{a} example \> For example
\CHAPTER{Chapter 8 --- Graphics Generation and Manipulation}
@@ -593,54 +692,274 @@ The example uses \verb*/left color=red!20/ but this is not really
visible if the red is turned into some gray value in the book (which
is then made even lighter through \texttt{!20}). So it is better to
start from full red, i.e., \> \verb*/left color=red/ instead.
-\\ Already corrected in the digital version.
+
+
+
+\erroronpage{I-644}{syntaxbox for \cs{foreach}}{BeB}{2023/07/14}{s}
+superfluous ``in'': \ldots\{\textsl{commands}\} \u{in} \> \ldots\{\textsl{commands}\}
+
+
\CHAPTER{Chapter 9 --- Font Selection and Encodings}
-
+
+
+\erroronpage{I-688}{para -2, l. 1}{BeB}{2023/08/13}{s}
+acronym PSNFSS not explained: PSNFSS \> PostScript New Font Selection Scheme (PSNFSS)
+
+
\erroronpage{I-669}{exa 9-3-11}{FMi}{2023/04/04}{s}
Changed line breaks in example.
+\erroronpage{I-681}{para 2, l.1}{BeB}{2023/07/14}{s}
+Missing space: Theproblem \> The problem
+
\erroronpage{I-708}{listing}{FMi}{2023/05/14}{s}
Situation is the same in the 2023 distributions; listing output updated.
-\\ Already corrected in the digital version.
+
+\erroronpage{I-759}{l.1}{BeB}{2023/08/20}{s}
+in the range of 0000 to \u{00FF} \> in the range of 0000 to \u{007F}
\CHAPTER{Chapter 10 --- Text and Symbol Fonts}
+
+\erroronpage{II-5}{table 10.1, l. 5}{BeB/FMi}{2023/08/13}{s}
+ official \u{companion} family name \> \u{related} official \u{font} family name
+
+\erroronpage{II-5}{para -1, l.2}{FMi}{2023/08/15}{s}
+
+then this structure is repeated as often as necessary. \>
+then this structure is repeated \u{for the related font families} as often as necessary.
+
+
+\erroronpage{II-24}{para 3, l. -2}{BeB}{2023/08/13}{s}
+There is no slanted shape in Grande Mono: \\
+\u{\textsl{naïve}} \> \u{\textsl{\bl naïve}}
+
+
+\erroronpage{II-25}{para -4, margin}{BeB}{2023/08/13}{s}
+Open Type font is available: \\
+\u{— no Open Type —} \> \u{Lucida Handwriting OT}
+
+\erroronpage{II-25}{para -2, l.-2}{BeB}{2023/08/13}{s}
+There are no italic blackletters: \\
+\textit{phœnix's official rôle}\> \textit{\bl phœnix's official rôle}
+
+\erroronpage{II-28}{table 10.14, l. 3}{BeB}{2023/08/13}{s}
+Inconsistent order: sl, l \> l, sl
+
+\erroronpage{II-28}{table 10.14, lines 7 + 19}{BeB}{2023/08/13}{s}
+semi-bold twice, extra-bold missing: sbsc, bsc, \u{sbsc} \> sbsc, bsc, \u{ebsc}
+
+\erroronpage{II-28}{table 10.14, lines 13 + 25}{BeB}{2023/08/13}{s}
+semi-bold twice, extra-bold missing: sbec, bec, \u{sbec} \> sbec, bec, \u{ebec}
+
+\erroronpage{II-29}{table 10.15, lines 7}{BeB}{2023/08/13}{s}
+semi-bold twice, extra-bold missing: sbsc, bsc, \u{sbsc} \> sbsc, bsc, \u{ebsc}
+
+\erroronpage{II-29}{table 10.15, l. 10}{BeB}{2023/08/13}{s}
+semi-bold twice, extra-bold missing: sbc, bc, \u{sbc} \> sbc, bc, \u{ebc}
+
+\erroronpage{II-29}{table 10.15, l.13}{BeB}{2023/08/13}{s}
+semi-bold twice, extra-bold missing: sbec, bec, \u{sbec} \> sbec, bec, \u{ebec}
+
+
+\erroronpage{II-34}{table 10.20}{FMi}{2023/08/15}{s}
+Add table note:
+%
+\textit{\textttu{k} (black) is a nonstandard series name for \textttu{eb} (extra
+bold) or in some families for \textttu{ub} (ultra bold).}
+
+\erroronpage{II-40}{table 10.24}{FMi}{2023/08/15}{s}
+In table note: \textit{Unfortunately, \u{\texttt{sco}}} \> \textit{Unfortunately, \u{\textttu{sco}}}
+
+
+\erroronpage{II-50}{font sample Cambria}{FMi}{2023/08/14}{s}
+
+Because of problems with the font names, the Cambria family currently requires a \texttt{Cambria.fontspec} file
+(possibly only temporary) when used with Lua\TeX{} with the following content:
+\begin{verbatim}
+\defaultfontfeatures[Cambria]{%
+ UprightFont =cambria.ttc,
+ BoldFont = cambriab.ttf,
+ ItalicFont = cambriai.ttf,
+ BoldItalicFont = cambriaz.ttf}
+\end{verbatim}
+Without it, the bold fonts are not correctly set up, which is why
+\textbf{almost anything} is not in bold and \textbf{Fields} is not typeset in
+bold small caps in the sample even though Cambria supports these typefaces.
+
+
+\erroronpage{II-61}{table 10.48}{FMi}{2023/08/15}{s}
+Add table note:
+%
+\textit{Unfortunately, \textttu{sco} is a nonstandard shape name for
+\textttu{scsl}; thus, low-level shape commands are needed to access it.}
+
+\erroronpage{II-62}{table 10.50}{FMi}{2023/08/15}{s}
+Add table note:
+%
+\textit{Unfortunately, \textttu{sco} is a nonstandard shape name for
+\textttu{scsl}; thus, low-level shape commands are needed to access it.}
+
+\erroronpage{II-63}{table 10.51}{FMi}{2023/08/15}{s}
+Table moved to page II-62 for better pagination.
+
+\erroronpage{II-65}{para 1, l.1}{YvH}{2023/08/20}{s}
+ Slap \> Slab
+
+\erroronpage{II-66}{Unicode box}{DFl}{2023/08/03}{s}
+ OpenType fonts for the Concrete family do exist.
+
+ Therefore changed the text to
+ \begin{quote}
+ OpenType fonts of the family for use in Unicode engines do exist. They offer additional characters
+ and also true \textbf{bold} and \textbf{\itshape bold italic} shapes.
+ \end{quote}
+ and moved it down after the discussion of missing bold fonts.
+
+\erroronpage{II-66}{table 10.55}{FMi}{2023/08/03}{s}
+ Change: \u{---no OpenType---} \> \u{CMU Concrete}
+
+ Added line showing: \u{\texttt{b}\qquad\texttt{n, it}}
+ and the text \u{---Not available with pdf\TeX, only in Unicode engines---}
+
+\erroronpage{II-66}{1st font example}{FMi}{2023/08/03}{s}
+ Change: \u{---no OpenType---} \> \u{CMU Concrete}
+
+\erroronpage{II-66}{2nd font example}{FMi}{2023/08/03}{s}
+ Added (in margin info): \u{---only OT1---}
+
+\erroronpage{II-71}{para 1, l.1}{BeB}{2023/08/13}{s}
+ub should be upright: \verb+\fontseries{+\u{\textsl{ub}}\verb+}+ \> \verb+\fontseries{ub}+
+
+
+\erroronpage{II-71}{para 2, l.5}{YFu}{2023/07/25}{s}
+\u{Akira Kobayashi} should be written in Japanese style \> \u{KOBAYASHI Akira}\\
+Also corrected in the index.
+
+\erroronpage{II-75}{table 10.64}{FMi}{2023/08/15}{s}
+Add table note:
+%
+\textit{Unfortunately, \textttu{sco} is a nonstandard shape name for
+\textttu{scsl}; thus, low-level shape commands are needed to access it.}
+
+
+\erroronpage{II-76,77}{both font examples}{BeB}{2023/08/13}{s}
+Helvetica and its clones do not have true italics but instead an
+oblique/slanted face (despite the fact that the internal font
+information claims it is ``italic''). For this reason the blue
+text in both Helvetica examples should be as follows:
+
+ \textsl{\bl naïve} vis-à-vis the dæmonic \textit{phœnix's official rôle} \> \\
+ \textsl{naïve} vis-à-vis the dæmonic \textit{\bl phœnix's official rôle}
+
+
+\erroronpage{II-86}{table 10.74, l.4}{FMi}{2023/08/15}{s}
+
+It's weights not widths:\\
+\u{S}ome nonstandard \u{widths} \> \u{Also s}ome nonstandard \u{weights}
+
+
+\erroronpage{II-86}{table 10.74}{FMi}{2023/08/15}{s}
+Add table note:
+%
+\textit{Unfortunately, the font family uses the nonstandard series
+ names \textttu{t} (thin) and \textttu{k} (black) instead of the
+ standard series names \textttu{ul} (ultra light) and \textttu{ub}
+ (ultra bold). The \textttu{mb} (medium) is halfway between the
+ standard \textttu{m} and \textttu{sb} and does not fit into the NFSS
+ naming conventions. It can serve as a replacement for \textttu{m},
+ e.g., via \cs{DeclareFontSeriesDefault}.}
+
+
+
+\erroronpage{II-91}{l. -1}{BeB}{2023/08/13}{s}
+In the DejaVu Sans Mono Example add: \texttt{OIl or 011?}
+
+
+
+\erroronpage{II-102}{para -4, margin}{BeB}{2023/08/13}{s}
+Change: \u{— no Open Type —} \> \u{Lucida Handwriting OT}
+
+
+\erroronpage{II-104}{para -1, l.2}{FMi}{2023/08/13}{s}
+
+Footnote added after: \u{Unicode characters}
+\begin{quote}
+ However, strangely enough this only works in pdf\TeX{} and \emph{not} in Unicode engines!
+\end{quote}
+
+\erroronpage{II-105}{para 1 replaced}{FMi/BeB}{2023/08/13}{s}
+
+The yfonts have a suprising feature: you can use the Unicode
+characters {ÄÖÜäöüß} in pdf\TeX{}, but this is not possible in
+Unicode engines! The first paragraph was therefore replaced to
+clarify this. The new text is:
+\begin{quote}
+ The next example shows the various ligatures. With pdf\TeX{} one can
+ use the Unicode characters \texttt{ÄÖÜäöüß} directly and only needs
+ the ``{short s}'' ligature. However, due to the special font
+ encoding this \emph{does not work} in Unicode engines\,---\,with
+ these engines you have to enter the accents as ligatures or \LaTeX{}
+ commands.
+\end{quote}
+
+
+\erroronpage{II-106}{para -3, l. 1}{BeB}{2023/08/13}{s}
+Acronym GFS not explained: Greek Font Society \> Greek Font Society (GFS)
+
+
+\erroronpage{II-107}{exa 10-11-1}{FMi}{2023/08/14}{s}
+
+The Cambria fonts currently require a \texttt{Cambria.fontspec} file
+(possibly temporary) when used with Lua\TeX{} --- see errata on page II-50.
+Without it, the bold fonts are not correctly set up, which is why they are
+not showing in the example.
+
+\erroronpage{II-110}{exa 10-12-1}{FMi}{2023/08/14}{s}
+
+The Cambria fonts currently require a \texttt{Cambria.fontspec} file
+(possibly temporary) when used with Lua\TeX{} --- see errata on page II-50.
+Without it, the bold fonts are not correctly set up, which is why they are
+not showing in the example.
+
+
+
\erroronpage{II-114}{table 10.89}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-117}{table 10.92}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-121}{table 10.96}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-122}{table 10.98}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-122}{table 10.99}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-123}{table 10.100}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
\erroronpage{II-124}{table 10.103}{FMi}{2023/04/04}{s}
Added missing \texttt{U+00Fx} line.
There was a bug in code generating it.
-\\ Already corrected in the digital version.
+
@@ -652,44 +971,48 @@ package, \pkg{amsmath}, which \u{makes} \ldots
\>\\
\u{In the early nineties the} American Mathematical Society (AMS)
\u{provided} a major package, \pkg{amsmath}, which \u{made} \ldots
-\\ Already corrected in the digital version.
+
\erroronpage{II-129}{para -3, l.1}{bb/FMi}{2023/04/04}{s}
The principal documentation for these packages
\>\\
The principal documentation for these \u{two} packages
-\\ Already corrected in the digital version.
+
\erroronpage{II-129}{para -1, l.3}{bb}{2023/04/04}{s}
\u{lot} additions \> \u{many} additions
-\\ Already corrected in the digital version.
+
\erroronpage{II-132}{table 11.1}{bb/FMi}{2023/04/04}{s}
Also mention \env{alignat}, \env{alignat*}, and \env{alignedat}.
-\\ Already corrected in the digital version.
+
\erroronpage{II-133}{para 4,l.2}{bb/FMi}{2023/04/04}{s}
Add:
Furthermore, they move the equation tag out of the way if it would
otherwise overprint the formula.
-\\ Already corrected in the digital version.
+
+
+
+\erroronpage{II-133}{para. -3, l. -1}{BeB}{2023/08/13}{s}
+Wrong reference: Section 11.2.\u{10} \> 11.2.\u{11}
\erroronpage{II-138}{heading}{bb/FMi}{2023/04/04}{s}
Multiple alignments: \env{align} \u{and \env{flalign}}
\>
Multiple alignments: \env{align}\u{, \env{flalign}, and \env{alignat}}
-\\ Already corrected in the digital version.
+
\erroronpage{II-138}{}{FMi}{2023/04/04}{s}
Moved para from 139 to end of this page.
-\\ Already corrected in the digital version.
+
\erroronpage{II-139}{para 1}{FMi}{2023/04/04}{s}
Moved para back to page 138.
-\\ Already corrected in the digital version.
+
\erroronpage{II-139}{bottom}{FMi}{2023/04/04}{s}
Add:
@@ -703,34 +1026,34 @@ it does not add any spaces between the pairs, e.g.,
\begin{alignat}{3} x &= y &\qquad X &= Y &\qquad a &= b+c \\ ...
\end{verbatim}
As usual, equation numbers can be altered with \cs{tag} or suppressed with \cs{notag}.
-\\ Already corrected in the digital version.
+
\erroronpage{II-140}{para 1, l.2}{bb/FMi}{2023/04/04}{s}
Add:
Do not forget to reset \cs{minalignsep} if you change it in this manner.
-\\ Already corrected in the digital version.
-\erroronpage{II-140}{para 2, l.4}{bb/FMi}{2023/04/04}{s}
+
+\erroronpage{II-140}{para 2, l.4}{bb/FMi}{2023/08/16}{s}
Add:
You can think of them as subsidiary environments that can be used
-within any of the display environments discussed so far (below we use
-them inside equation).
-\\ Already corrected in the digital version.
+within any of the display environments discussed so far. (Below we use
+them inside equation.)
+
\erroronpage{II-140}{para -1}{FMi}{2023/04/04}{s}
Paragraph moved to page 141.
-\\ Already corrected in the digital version.
+
\erroronpage{II-141}{}{FMi}{2023/04/04}{s}
One paragraph moved over from page 140.
-\\ Already corrected in the digital version.
+
\erroronpage{II-144}{para 2, l.-3}{FMi}{2023/04/04}{s}
the issue \> the \u{spacing} issue
-\\ Already corrected in the digital version.
+
\erroronpage{II-145}{para 2, l.1}{bb/FMi}{2023/04/04}{s}
Add:
@@ -738,47 +1061,277 @@ Add:
Another problem is that an empty line introduces an unwanted break
point in front of the display, thus \cs{predisplaypenalty} is no
longer honored.
-\\ Already corrected in the digital version.
+\erroronpage{II-167}{para. 3, l. -2}{BeB}{2023/08/13}{s}
+option\u e \> option\u{s}
+
+
+\erroronpage{II-178}{table 11.3, l.10}{EOl}{2023/07/30}{s}
+ Cross-\u{produce} tensor \> Cross-\u{product} tensor
+
+\erroronpage{II-178}{Tab. 11.3, l.10}{BeB}{2023/08/13}{s}
+in the description column: \u{array}-symbol-arrow \> \u{arrow}-symbol-arrow
+
+
+
+
+
\CHAPTER{Chapter 12 --- Fonts in Formulas}
\erroronpage{II-225}{heading}{FMi}{2023/04/04}{s}
Chapter title not properly capitalized.
-\\ Already corrected in the digital version.
+
+
+\erroronpage{II-229}{para -3, l.1}{BeB}{2023/08/15}{s}
+for Lucida fonts \> Lucida \u{and Cambria} fonts
+
+\erroronpage{II-274}{exa 12-18-fig}{FMi}{2023/08/14}{s}
+
+The Cambria fonts currently require a \texttt{Cambria.fontspec} file
+(possibly temporary) when used with Lua\TeX{} --- see errata on page II-50.
+Without it, the bold fonts are not correctly set up, which is why they are
+missing in the section heading of the example.
+
\erroronpage{II-261}{para 3, l.3}{FMi}{2023/05/26}{s}
Yoda spoke it seems: \ldots \u{and compare we should} \>
\ldots \u{and you should compare}
-\\ Already corrected in the digital version.
+
+
+\erroronpage{II-286}{fig. 12-36}{FMi}{2023/08/21}{s}
+
+Heading is not bold because of an error in the distributed
+\texttt{.fontspec} file for this family. This needs to be corrected
+in the NewComputerModern distribution and maybe also in the
+\pkg{fontspec} package itself. A \texttt{NewCM10-Regular.fontspec}
+file that works could look like this:
+\begin{verbatim}
+\defaultfontfeatures[NewCM10-Regular]{
+ Extension = .otf ,
+% Can't use NewCM10-Regular here (or we get a fontspec error).
+% Doesn't matter in this case, but looks like a fontspec issue.
+ UprightFont = NewCM08-Regular ,
+ UprightFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-Regular} ,
+ {Size = 8- , Font = NewCM10-Regular} ,
+ },
+ },
+% Same here:
+ SlantedFont = NewCM08-Regular ,
+ SlantedFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-Regular} ,
+ {Size = 8- , Font = NewCM10-Regular} ,
+ },
+ FakeSlant=0.25,
+ },
+ ItalicFont = NewCM10-Italic ,
+ ItalicFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-Italic} ,
+ {Size = 8- , Font = NewCM10-Italic} ,
+ },
+ },
+ BoldFont = NewCM10-Bold ,
+ BoldItalicFont = NewCM10-BoldItalic ,
+ BoldSlantedFont = NewCM10-Bold ,
+ BoldSlantedFeatures = { FakeSlant=0.25 },
+ SmallCapsFeatures = { Numbers=OldStyle },
+}
+\end{verbatim}
+
+
+\erroronpage{II-286}{fig. 12-36}{FMi}{2023/08/21}{s}
+
+Change in title: \u{Mathematical} typesetting \> \u{Math} typesetting
+
+
+\erroronpage{II-286}{fig. 12-37}{FMi}{2023/08/21}{s}
+
+Heading is not bold because of an error in the distributed
+\texttt{.fontspec} file for this family. This needs to be corrected
+in the NewComputerModern distribution and maybe also in the
+\pkg{fontspec} package itself. A \texttt{NewCM10-Book.fontspec}
+file that works could look like this:
+\begin{verbatim}
+\defaultfontfeatures[NewCM10-Book]{
+ Extension = .otf ,
+ UprightFont = NewCM08-Book ,
+ UprightFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-Book} ,
+ {Size = 8- , Font = NewCM10-Book} ,
+ },
+ },
+ SlantedFont = NewCM08-Book ,
+ SlantedFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-Book} ,
+ {Size = 8- , Font = NewCM10-Book} ,
+ },
+ FakeSlant=0.25,
+ },
+ ItalicFont = NewCM10-BookItalic ,
+ ItalicFeatures = {
+ SizeFeatures = {
+ {Size = -8 , Font = NewCM08-BookItalic} ,
+ {Size = 8- , Font = NewCM10-BookItalic} ,
+ },
+ },
+ BoldFont = NewCM10-Bold ,
+ BoldItalicFont = NewCM10-BoldItalic ,
+ BoldSlantedFont = NewCM10-Bold ,
+ BoldSlantedFeatures = { FakeSlant=0.25 },
+ SmallCapsFeatures = { Numbers=OldStyle },
+}
+\end{verbatim}
+
+\erroronpage{II-286}{fig. 12-37}{FMi}{2023/08/21}{s}
+Change title to more or less fit the width of the sample:\\
+\hspace*{1em}\u{Mathematical} typesetting with NewComputerModern \> \\
+\hspace*{1em}\u{Math} typesetting with NewComputerModern \u{Book}\\
+
+
+\erroronpage{II-288}{para 3, l.-1}{BeB}{2023/08/20}{s}
+Typo and spurious comma: series\u{, though} substitution. \> series \u{through} substitution.
+
+
+\erroronpage{II-295}{par -2, l.-1}{BeB}{2023/08/20}{s}
+
+Options \texttt{vvarbb} and \texttt{upint} show no effect in figure
+12.50. This was due to a bug in the package --- now corrected. Thus,
+rerunning the example shows the expected behavior.
\CHAPTER{Chapter 13 --- Localizing Documents}
\erroronpage{II-297}{heading}{FMi}{2023/04/04}{s}
Chapter title not properly capitalized.
-\\ Already corrected in the digital version.
+\erroronpage{II-307}{after exa 13-2-5}{BeB/FMi}{2023/08/20}{s}
+
+Replace:
+On the other hand, \pkg{tikz} provides a library to overcome these issues.
+\>\\
+In the particular case of \pkg{tikz}, you can use
+\cs{usetikzlibrary}\verb={babel}= instead of \cs{shorthandoff}
+to overcome these issues for all \pkg{tikz} pictures of the document.
+
+
+
+\erroronpage{II-308}{para 2, l.3}{BeB}{2023/08/20}{s}
+Acronyms BCP and IETF not explained:\\
+BCP \> the Best Current Practice (BCP)\\
+IETF \> the Internet Engineering Task Force (IETF)
+
+\erroronpage{II-308}{para 3, l.1}{BeB}{2023/08/20}{s}
+ BPD \> BCP
+
+\erroronpage{II-319}{para 2, l.1}{BeB}{2023/08/20}{s}
+Missing word: is described \textit{A History} \> is described \u{in}
+\textit{A History}
+
+\erroronpage{II-332}{exa 13-5-2, and above}{FMi}{2023/04/28}{s}
+
+The keyword \texttt{Harf\u{b}uzz} should be spelled
+\texttt{Harf\u{B}uzz}. Both names are supported, but the recommended
+spelling is \texttt{HarfBuzz}.
+
\CHAPTER{Chapter 14 --- Index Generation}
+% Das Beispiel von S. II-352 als File wäre schön, dann könnte man das mit
+% dem Index mal durchspielen. Das Beispiel 16-7-6 ist zwar mal wieder
+% recht eindrucksvoll, berührt die Thematik aber nur so nebenbei.
+% \erroronpage{II-352}{Fig. 14.3}{BeB}{2023/08/31}{}
+% The code shown in Fig. 14.3 now is the Example 14-2-1
+
+
\CHAPTER{Chapter 15 --- Bibliography Generation}
+\erroronpage{II-390}{para 4, l.1}{BeB/FMi}{2023/08/31}{s}
+Replace:
+ \u{predates the Internet} and so\> \\
+ \u{were developed when the Internet was in its infancy} and so
+
+
+\erroronpage{II-391}{Fig. 15.2, bib-entry jane-2}{BeB}{2023/08/31}{s}
+\verb+\title = {A+\texttt{\u{n} second book\}}\> \verb+\title = {A second book}+
+
+Changes the output of example 16-7-31 on page II-560 as well.
+
+% For later:
+%S. II-399: Man könnte in dem biber/biblatex Kasten noch anmerken, dass die
+% Konvertierung auch on-the-fly geht – hatte mir in der Übergangsphase weitergeholfen:
+%\erroronpage{II-399}{biber/biblatex box}{BeB}{2023/08/31}{}
+%Add: One can do this conversion directly from a .bib file to a .bbl file by using e.g.
+%\verb+biber --output-encoding=ascii --output-safecharsset=full+
+%and stay with one .bib file (in UTF8-encoding).
+
+
+\erroronpage{II-396}{in box: para 2, l.2}{MJo}{2023/10/30}{s}
+the \cs{MakeUpper}\texttt{\u{C}ase} trick \>
+the \cs{MakeUpper}\texttt{\u{c}ase} trick
+
+
\erroronpage{II-435}{code}{FMi}{2023/05/26}{s}
-\verb=\textcolor{See= \> \verb=\textcolor{blue}{See=
-\\ Already corrected in the digital version.
+\verb=\textcolor{See= \> \cs{textcolor}\u{\texttt{\{blue\}}}\texttt{\{See}
+
+\erroronpage{II-443}{biblatex-mla style}{BeB}{2023/08/31}{s}
+Explain acronym: \u{MLA handbook} \> \u{Modern Language Association (MLA) handbook}
+
+\smallskip
+
+This moves the text line on the bottom to the next page.
\CHAPTER{Chapter 16 --- Managing Citations}
+\erroronpage{II-475}{para -2, l.6}{BeB}{2023/08/31}{s}
+Figure 15.1 \> Figure 15.1 \u{on pages 382--383}
+
+
+\erroronpage{II-513}{para -1}{BeB/FMi}{2023/08/31}{s}
+
+Extend the explanation:\\
+is created only if the entry \u{contains} a shorttitle \u{field} and the title and shorttitle fields differ. \>\\
+is created only if the entry \u{has been referenced (prior to typesetting}\\
+\u{the bibliography), contains} a shorttitle \u{field,} and the title and shorttitle fields differ.
+
+
+\erroronpage{II-560}{exa 16-7-31}{FMi}{2023/08/31}{s}
+Jane Doe.\ \textit{A\u{n} second book.}\ 2020.\> Jane Doe.\ \textit{A second book.}\ 2020.
+
\CHAPTER{Chapter 17 --- \LaTeX{} Package Documentation Tools}
-
+
+\erroronpage{II-599}{para 3, l.1}{EOl}{2023/07/30}{s}
+\u{Whencreating automatically} the driver \> \u{When} the driver
+
+\erroronpage{II-605}{para 1, l.10}{CAR}{2023/10/10}{s}
+\u{right numbers} of underscores \> \u{correct number} of underscores
+
\CHAPTER{Appendix A --- \LaTeX{} Overview for Preamble, \ldots}
-
+
+\erroronpage{II-624--629}{}{BeB/FMi}{2023/08/31}{s}
+Replace for consistency with section 1.4: \u{command definition} \> \u{code}
+
+\erroronpage{II-629}{para 1, l.3}{FMi}{2023/08/31}{s}
+\u{An} warning \> \u{A} warning
+
+
+\erroronpage{II-633}{para 2}{BeB/FMi}{2023/08/31}{s}
+Add at the end: A maximum of nine ``argument'' letters is supported.
+
+
+\erroronpage{II-682}{para -2, l.3}{FMi}{2023/04/28}{s}
+\texttt{Harf\u{b}uzz} \> \texttt{Harf\u{B}uzz}
+
\CHAPTER{Appendix B --- Tracing and Resolving Problems}
@@ -787,7 +1340,7 @@ Chapter title not properly capitalized.
\erroronpage{II-297}{heading}{FMi}{2023/04/04}{s}
Appendix title not properly capitalized.
-\\ Already corrected in the digital version.
+
\CHAPTER{Biographies}
@@ -798,13 +1351,23 @@ Appendix title not properly capitalized.
+\section*{Notes on this errata document}
+
\setcounter{collectmore}{3}
\begin{multicols}{3}[Thanks to all who have found errors or
omissions. Listed are the people who found an errata entry first.]
-\contributor{bb}{Barbara Beeton}
+\contributor{BeB}{Bernd Burghardt}
+\contributor{CAR}{Chris Rowley}
+\contributor{DC}{Davide Campagnari}
+\contributor{DFl}{Daniel Flipo}
+\contributor{EOl}{Edgar Olthof}
\contributor{FMi}{Frank Mittelbach}
+\contributor{MJo}{Maciej Jończyk}
+\contributor{YFu}{FUJIMURA Yukitoshi}
+\contributor{YvH}{Yvon Henel}
+\contributor{bb}{Barbara Beeton}
\contributor{kb}{Karl Berry}
\end{multicols}
@@ -827,7 +1390,7 @@ Here is an example:
\erroronpage{5}{para 3, l.1}{FMi}{2023/06/21}{}
\u{LaTeX} \> \u{\LaTeX}
\end{verbatim}
-\verb=\u= underlines a text fragment and \verb=\>= produces \>.
+\verb=\u{...}= underlines a text fragment, \verb=\>= produces \>, and \verb=\bl= is a short form for \verb=\color{blue}=.
\end{document}
diff --git a/macros/latex/base/tlc3.pdf b/macros/latex/base/tlc3.pdf
index bb91b4ed5a..13bcd9631c 100644
--- a/macros/latex/base/tlc3.pdf
+++ b/macros/latex/base/tlc3.pdf
Binary files differ
diff --git a/macros/latex/base/tulm.pdf b/macros/latex/base/tulm.pdf
index 38d7209c2c..d5449eedea 100644
--- a/macros/latex/base/tulm.pdf
+++ b/macros/latex/base/tulm.pdf
Binary files differ
diff --git a/macros/latex/base/usrguide-historic.pdf b/macros/latex/base/usrguide-historic.pdf
index 2c946d5201..ba175af6d0 100644
--- a/macros/latex/base/usrguide-historic.pdf
+++ b/macros/latex/base/usrguide-historic.pdf
Binary files differ
diff --git a/macros/latex/base/usrguide.pdf b/macros/latex/base/usrguide.pdf
index 284736bfaa..e4bd8c51fe 100644
--- a/macros/latex/base/usrguide.pdf
+++ b/macros/latex/base/usrguide.pdf
Binary files differ
diff --git a/macros/latex/base/usrguide.tex b/macros/latex/base/usrguide.tex
index 42d5e401f8..05fc93e7af 100644
--- a/macros/latex/base/usrguide.tex
+++ b/macros/latex/base/usrguide.tex
@@ -142,7 +142,7 @@ arguments. The mandatory types
is read between two identical characters, which cannot be any of |%|, |\|,
|#|, |{|, |}| or \verb*| |. The verbatim argument can also be enclosed
between braces, |{| and |}|. A command with a verbatim argument will
- produce an error when it appears within an argument of another function.
+ produce an error when it appears within an argument of another command.
\item[\texttt{b}] Only suitable in the argument specification of an
environment, it denotes the body of the environment, between
|\begin|\marg{environment} and |\end|\marg{environment}. See
@@ -244,7 +244,7 @@ defined.
\item \cs{RenewDocumentCommand} will issue an error if \meta{cmd}
has not previously been defined.
\item \cs{ProvideDocumentCommand} creates a new definition for
- \meta{function} only if one has not already been given.
+ \meta{cmd} only if one has not already been given.
\item \cs{DeclareDocumentCommand} will always create the new
definition, irrespective of any existing \meta{cmd} with the
same name. This should be used sparingly.
@@ -619,7 +619,8 @@ Spaces are trimmed at each end of each item parsed.
The \texttt{E} argument type is somewhat special, because with a single
\texttt{E} in the command declaration you may end up with several
arguments in a command (one formal argument per embellishment token).
-Therefore, when an argument processor is applied to an \texttt{E}-type
+Therefore, when an argument processor is applied to an
+\texttt{e}/\texttt{E}-type
argument, all the arguments pass through that processor before being fed
to the \meta{code}. For example, this command
\begin{verbatim}
@@ -640,9 +641,9 @@ processed argument can be further processed using a mapping function
\NewDocumentCommand \foo {>{\SplitList{;}} m}
{\MappingFunction#1}
\end{verbatim}
-If only a single character \meta{token} is used for the split, any
-category code $13$ (active) character matching the \meta{token} will
-be replaced before the split takes place.
+If only a single character \meta{token} is used for the split, it will
+take account of the possibility that the \meta{token} has been made active
+(category code~$13$) and will split at such tokens.
Spaces are trimmed at each end of each item parsed. Exactly one set
of braces will be stripped if an entire item is surrounded by them,
i.e.~the following inputs and outputs result (each separte item as
@@ -658,11 +659,11 @@ a,{b}c ==> {a}{{b}c}
\end{verbatim}
\begin{decl}
- |\ProcessList| \arg{list} \arg{function}
+ |\ProcessList| \arg{list} \arg{cmd}
\end{decl}
To support \cs{SplitList}, the function \cs{ProcessList} is available
-to apply a \meta{function} to every entry in a \meta{list}. The
-\meta{function} should absorb one argument: the list entry. For example
+to apply a \meta{cmd} to every entry in a \meta{list}. The
+\meta{cmd} should absorb one argument: the list entry. For example
\begin{verbatim}
\NewDocumentCommand \foo {>{\SplitList{;}} m}
{\ProcessList{#1}{\SomeDocumentCommand}}
@@ -751,10 +752,10 @@ This facility should only be used when \emph{necessary}.
|\ProvideExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code} \\
|\DeclareExpandableDocumentCommand| \arg{cmd} \arg{arg spec} \arg{code}
\end{decl}
-This family of commands is used to create a document-level \meta{function},
+This family of commands is used to create a document-level \meta{cmd},
which will grab its arguments in a fully-expandable manner. The
argument specification for the function is given by \meta{arg spec},
-and the function will execute \meta{code}. In general, \meta{code} will
+and the \meta{cmd} will execute \meta{code}. In general, \meta{code} will
also be fully expandable, although it is possible that this will
not be the case (for example, a function for use in a table might
expand so that \cs{omit} is the first non-expandable non-space token).
@@ -832,7 +833,7 @@ and the command call is aborted.
\subsubsection{Control sequence tokens}
-A control sequence (or control character) token is characterized by is
+A control sequence (or control character) token is characterized by
its name, and its meaning is its definition.
A token cannot have two different meanings at the same time.
When a control sequence is defined as delimiter in a command,
@@ -876,33 +877,6 @@ defined as
[As an aside: the code is written in \pkg{expl3}, so we don't have to
worry about spaces creeping into the definition.]
-\subsection{Access to the argument specification}
-
-The argument specifications for document commands and environments are
-available for examination and use.
-
-\begin{decl}
- |\GetDocumentCommandArgSpec| \arg{cmd} \\
- |\GetDocumentEnvironmentArgSpec| \arg{environment}
-\end{decl}
-These functions transfer the current argument specification for the
-requested \meta{cmd} or \meta{environment} into the token list
-variable \cs{ArgumentSpecification}. If the \meta{cmd} or
-\meta{environment} has no known argument specification then an error
-is issued. The assignment to \cs{ArgumentSpecification} is local to
-the current \TeX{} group.
-
-\begin{decl}
- |\ShowDocumentCommandArgSpec| \arg{cmd} \\
- |\ShowDocumentEnvironmentArgSpec| \arg{environment}
-\end{decl}
-These functions show the current argument specification for the
-requested \meta{cmd} or \meta{environment} at the terminal. If
-the \meta{cmd} or \meta{environment} has no known argument
-specification then an error is issued.
-
-
-
\section{Copying and showing (robust) commands and environments}
If you want to (slightly) alter an existing command you may want to
@@ -1211,8 +1185,7 @@ Upper- and lower-casing are well-understood in general conversation.
Titlecasing here follows the definition given by the Unicode Consortium: the
first character of the input will be converted to (broadly) uppercase, and the
rest of the input to lowercase. The full range of Unicode UTF-8 input can be
-supported, with the proviso that at present the characters set up with 8-bit
-engines match those available in standard input encodings (|T1|, |T2|, |LGR|).
+supported.
\begin{quotation}
\begin{tabular}{rl}
|\MakeUppercase{hello WORLD ßüé}| & \MakeUppercase{hello WORLD ßüé} \\
diff --git a/macros/latex/base/utf8ienc.pdf b/macros/latex/base/utf8ienc.pdf
index fb390aacbe..beafa65973 100644
--- a/macros/latex/base/utf8ienc.pdf
+++ b/macros/latex/base/utf8ienc.pdf
Binary files differ
diff --git a/macros/latex/base/webcomp.pdf b/macros/latex/base/webcomp.pdf
index 8515e01056..7b331e2e17 100644
--- a/macros/latex/base/webcomp.pdf
+++ b/macros/latex/base/webcomp.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3build/CHANGELOG.md b/macros/latex/contrib/l3build/CHANGELOG.md
index f0af1e3c8c..6b6e1c7f16 100644
--- a/macros/latex/contrib/l3build/CHANGELOG.md
+++ b/macros/latex/contrib/l3build/CHANGELOG.md
@@ -7,6 +7,15 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-11-01]
+
+### Changed
+- Drop duplicate backslashes in doc
+
+### Fixed
+- Support non-ASCII filenames that fall within the system codepage on Windows
+ (see \#122)
+
## [2023-09-13]
### Added
@@ -712,7 +721,8 @@ this project uses date-based 'snapshot' version identifiers.
- Rationalise short option names: removed `-d`, `-E`, `-r`
- Target `cmdcheck`: specific to LaTeX kernel work
-[Unreleased]: https://github.com/latex3/l3build/compare/2023-09-13...HEAD
+[Unreleased]: https://github.com/latex3/l3build/compare/2023-11-01...HEAD
+[2023-11-01]: https://github.com/latex3/l3build/compare/2023-09-13...2023-11-01
[2023-09-13]: https://github.com/latex3/l3build/compare/2023-09-07...2023-09-13
[2023-09-07]: https://github.com/latex3/l3build/compare/2023-09-05...2023-09-07
[2023-09-05]: https://github.com/latex3/l3build/compare/2023-07-20...2023-09-05
diff --git a/macros/latex/contrib/l3build/README.md b/macros/latex/contrib/l3build/README.md
index 0b7cfe9f97..7288867655 100644
--- a/macros/latex/contrib/l3build/README.md
+++ b/macros/latex/contrib/l3build/README.md
@@ -1,7 +1,7 @@
l3build: a testing and building system for LaTeX
=================================================
-Release 2023-09-13
+Release 2023-11-01
Overview
--------
diff --git a/macros/latex/contrib/l3build/l3build-file-functions.lua b/macros/latex/contrib/l3build/l3build-file-functions.lua
index d6ec0cd513..847a1d15e6 100644
--- a/macros/latex/contrib/l3build/l3build-file-functions.lua
+++ b/macros/latex/contrib/l3build/l3build-file-functions.lua
@@ -153,9 +153,15 @@ if os_type == "windows" then
os_yes = "for /l %I in (1,1,300) do @echo y"
end
+-- Deal with codepage hell on Windows
+local function fixname(f) return f end
+if chgstrcp then
+ fixname = chgstrcp.utf8tosyscp
+end
+
-- Deal with the fact that Windows and Unix use different path separators
local function unix_to_win(path)
- return gsub(path, "/", "\\")
+ return fixname(gsub(path, "/", "\\"))
end
function normalize_path(path)
diff --git a/macros/latex/contrib/l3build/l3build.1 b/macros/latex/contrib/l3build/l3build.1
index fbf4b84fda..0ff6254515 100644
--- a/macros/latex/contrib/l3build/l3build.1
+++ b/macros/latex/contrib/l3build/l3build.1
@@ -1,4 +1,4 @@
-.TH l3build 1 "2023-09-13"
+.TH l3build 1 "2023-11-01"
.SH NAME
l3build \- Checking and building packages
.SH SYNOPSIS
diff --git a/macros/latex/contrib/l3build/l3build.dtx b/macros/latex/contrib/l3build/l3build.dtx
index b6787a1044..e425786e03 100644
--- a/macros/latex/contrib/l3build/l3build.dtx
+++ b/macros/latex/contrib/l3build/l3build.dtx
@@ -251,7 +251,7 @@
% }^^A
% }
%
-% \date{Released 2023-09-13}
+% \date{Released 2023-11-01}
%
% \maketitle
% \tableofcontents
@@ -529,7 +529,7 @@
% If the compilation is successful the |.pdf| is moved back into the main directory.
%
% The documentation compilation is performed with the \var{typesetexe} binary (default \texttt{pdflatex}), with options \var{typesetopts}.
-% Additional \TeX{} material defined in \var{typesetcmds} is passed to the document (e.g., for writing |\\PassOptionsToClass{l3doc}{letterpaper}|, and so on---note that backslashes need to be escaped in Lua strings).
+% Additional \TeX{} material defined in \var{typesetcmds} is passed to the document (e.g., for writing |\PassOptionsToClass{l3doc}{letterpaper}|, and so on---note that backslashes need to be escaped in Lua strings).
%
% Files that match |typesetsuppfiles| in the |support| directory (|supportdir|) are copied into the |build/doc| directory (|typesetdir|) for the typesetting compilation process.
% Additional dependencies listed in the \var{typesetdeps} variable (empty by default) will also be installed.
@@ -1819,7 +1819,7 @@
% |normalize_path(|\meta{path}|)|
% \end{syntax}
% When called on Windows, returns a string comprising the \meta{path} with
-% |/| characters replaced by |\\|. In other cases returns the path unchanged.
+% |/| characters replaced by |\|. In other cases returns the path unchanged.
% \end{function}
%
% \subsection{System-dependent strings}
@@ -2141,6 +2141,14 @@
% Full descriptions of their usage and arguments can be found within the |l3build-manifest-setup.lua|
% code itself.
%
+% \section{Known limitations}
+%
+% \subsection{Non-\textsc{ascii} filenames}
+%
+% On Windows, support for non-\textsc{ascii} filenames is limited by the way
+% that Lua handles system calls. While calling \TeX{} engines should work with
+% any name, general file operations will only success if the filename falls
+% within the codepage currently in use by the operating system.
%
% \end{documentation}
%
diff --git a/macros/latex/contrib/l3build/l3build.lua b/macros/latex/contrib/l3build/l3build.lua
index e520cd1811..cf8f66cc1f 100755
--- a/macros/latex/contrib/l3build/l3build.lua
+++ b/macros/latex/contrib/l3build/l3build.lua
@@ -25,7 +25,7 @@ for those people who are interested.
--]]
-- Version information
-release_date = "2023-09-13"
+release_date = "2023-11-01"
-- File operations are aided by the LuaFileSystem module
local lfs = require("lfs")
diff --git a/macros/latex/contrib/l3build/l3build.pdf b/macros/latex/contrib/l3build/l3build.pdf
index 4e7c03759d..fdd536d4ac 100644
--- a/macros/latex/contrib/l3build/l3build.pdf
+++ b/macros/latex/contrib/l3build/l3build.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/CHANGELOG.md b/macros/latex/contrib/l3experimental/CHANGELOG.md
index 7befc1cdf8..7d3becf388 100644
--- a/macros/latex/contrib/l3experimental/CHANGELOG.md
+++ b/macros/latex/contrib/l3experimental/CHANGELOG.md
@@ -7,6 +7,11 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-11-01]
+
+### Changed
+- Track `expl3` core changes
+
## [2023-10-10]
### Changed
@@ -281,7 +286,8 @@ this project uses date-based 'snapshot' version identifiers.
- New `l3color` module using `xcolor`-like expression syntax
- New `l3draw` module, based on `pgf` layer of the TikZ system
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-10...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-01...HEAD
+[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-10...2023-11-01
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-05-11...2023-10-10
[2023-05-11]: https://github.com/latex3/latex3/compare/2023-04-19...2023-05-11
[2023-04-19]: https://github.com/latex3/latex3/compare/2023-03-30...2023-04-19
diff --git a/macros/latex/contrib/l3experimental/README.md b/macros/latex/contrib/l3experimental/README.md
index f78ecff28a..138d797530 100644
--- a/macros/latex/contrib/l3experimental/README.md
+++ b/macros/latex/contrib/l3experimental/README.md
@@ -1,7 +1,7 @@
Experimental LaTeX3 Concepts
============================
-Release 2023-10-10
+Release 2023-11-01
Overview
--------
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.dtx b/macros/latex/contrib/l3experimental/l3benchmark.dtx
index cd41c2103e..26feb420ab 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.dtx
+++ b/macros/latex/contrib/l3experimental/l3benchmark.dtx
@@ -2,7 +2,7 @@
%
%% File: l3benchmark.dtx
%
-% Copyright (C) 2011,2012,2014-2023 The LaTeX Project
+% Copyright (C) 2011-2023 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
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -122,7 +122,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3benchmark}{2023-10-10}{}
+\ProvidesExplPackage{l3benchmark}{2023-11-01}{}
{L3 Experimental benchmarking}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3benchmark.pdf b/macros/latex/contrib/l3experimental/l3benchmark.pdf
index a4f0054473..382968cbf2 100644
--- a/macros/latex/contrib/l3experimental/l3benchmark.pdf
+++ b/macros/latex/contrib/l3experimental/l3benchmark.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3bitset.dtx b/macros/latex/contrib/l3experimental/l3bitset.dtx
index 6d342b0955..4783bd7786 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.dtx
+++ b/macros/latex/contrib/l3experimental/l3bitset.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
% \begin{documentation}
@@ -264,7 +264,7 @@
%<@@=bitset>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage{l3bitset}{2023-10-10}{}
+\ProvidesExplPackage{l3bitset}{2023-11-01}{}
{L3 Experimental bitset support}
% \end{macrocode}
% A bitset is a string variable.
diff --git a/macros/latex/contrib/l3experimental/l3bitset.pdf b/macros/latex/contrib/l3experimental/l3bitset.pdf
index 095a3dd391..17b59d8a2b 100644
--- a/macros/latex/contrib/l3experimental/l3bitset.pdf
+++ b/macros/latex/contrib/l3experimental/l3bitset.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
index b48aa9d995..44989999a5 100644
--- a/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-boxes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-code.pdf b/macros/latex/contrib/l3experimental/l3draw-code.pdf
index 9e5404c221..8c79d0a1b7 100644
--- a/macros/latex/contrib/l3experimental/l3draw-code.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw-code.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3draw-layers.dtx b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
index e85f370c34..1337427dc2 100644
--- a/macros/latex/contrib/l3experimental/l3draw-layers.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-layers.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-paths.dtx b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
index 41e866e563..5d8b63247f 100644
--- a/macros/latex/contrib/l3experimental/l3draw-paths.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-paths.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -999,19 +999,11 @@
\dim_set_eq:NN \l_@@_softpath_lastx_dim \g_@@_softpath_lastx_dim
\dim_set_eq:NN \l_@@_softpath_lasty_dim \g_@@_softpath_lasty_dim
\@@_path_reset_limits:
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_main_tl
- \bool_set_eq:NN
- \l_@@_softpath_corners_bool
- \g_@@_softpath_corners_bool
- \@@_softpath_clear:
+ \@@_softpath_save:
}
\cs_new_protected:Npn \draw_path_scope_end:
{
- \@@_softpath_clear:
- \bool_gset_eq:NN
- \g_@@_softpath_corners_bool
- \l_@@_softpath_corners_bool
- \@@_softpath_add:o \l_@@_softpath_main_tl
+ \@@_softpath_restore:
\dim_gset_eq:NN \g_@@_softpath_lastx_dim \l_@@_softpath_lastx_dim
\dim_gset_eq:NN \g_@@_softpath_lasty_dim \l_@@_softpath_lasty_dim
\dim_gset_eq:NN \g_@@_path_xmax_dim \l_@@_path_xmax_dim
diff --git a/macros/latex/contrib/l3experimental/l3draw-points.dtx b/macros/latex/contrib/l3experimental/l3draw-points.dtx
index 044f01a374..ba47cddd4c 100644
--- a/macros/latex/contrib/l3experimental/l3draw-points.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-points.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
index 4017e46f17..5917a0c6bc 100644
--- a/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-scopes.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
index 44524fb17b..9419015a91 100644
--- a/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-softpath.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -82,10 +82,10 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{variable}{\l_@@_softpath_internal_tl}
-% The soft path itself.
+% \begin{variable}{\l_@@_softpath_tmp_tl}
+% Scratch space.
% \begin{macrocode}
-\tl_new:N \l_@@_softpath_internal_tl
+\tl_new:N \l_@@_softpath_tmp_tl
% \end{macrocode}
% \end{variable}
%
@@ -104,23 +104,51 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}
-% {\@@_softpath_use:, \@@_softpath_clear:}
+% \begin{macro}{\@@_softpath_use:, \@@_softpath_clear:}
% Using and clearing is trivial.
% \begin{macrocode}
\cs_new_protected:Npn \@@_softpath_use:
{
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl
- \l_@@_softpath_internal_tl
+ \tl_build_gend:N \g_@@_softpath_main_tl
+ \tl_set_eq:NN \l_@@_softpath_tmp_tl \g_@@_softpath_main_tl
+ \l_@@_softpath_tmp_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
+ \exp_args:NNV \tl_build_gput_right:Nn
+ \g_@@_softpath_main_tl \l_@@_softpath_tmp_tl
}
\cs_new_protected:Npn \@@_softpath_clear:
{
- \tl_build_gclear:N \g_@@_softpath_main_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
\bool_gset_false:N \g_@@_softpath_corners_bool
}
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@@_softpath_save:, \@@_softpath_restore:}
+% Abstracted ideas to keep variables inside this submodule.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_softpath_save:
+ {
+ \tl_build_gend:N \g_@@_softpath_main_tl
+ \tl_set_eq:NN
+ \l_@@_softpath_main_tl
+ \g_@@_softpath_main_tl
+ \bool_set_eq:NN
+ \l_@@_softpath_corners_bool
+ \g_@@_softpath_corners_bool
+ \@@_softpath_clear:
+ }
+\cs_new_protected:Npn \@@_softpath_restore:
+ {
+ \@@_softpath_clear:
+ \@@_softpath_add:o \l_@@_softpath_main_tl
+ \bool_gset_eq:NN
+ \g_@@_softpath_corners_bool
+ \l_@@_softpath_corners_bool
+ }
+% \end{macrocode}
+% \end{macro}
+%
% \begin{variable}{\g_@@_softpath_lastx_dim, \g_@@_softpath_lasty_dim}
% For tracking the end of the path (to close it).
% \begin{macrocode}
@@ -323,9 +351,9 @@
\fp_zero:N \l_@@_softpath_lasty_fp
\tl_clear:N \l_@@_softpath_first_tl
\tl_clear:N \l_@@_softpath_move_tl
- \tl_build_get:NN \g_@@_softpath_main_tl \l_@@_softpath_internal_tl
+ \tl_build_gend:N \g_@@_softpath_main_tl
\exp_after:wN \@@_softpath_round_loop:Nnn
- \l_@@_softpath_internal_tl
+ \g_@@_softpath_main_tl
\q_@@_recursion_tail ? ?
\q_@@_recursion_stop
\group_end:
@@ -587,7 +615,7 @@
\l_@@_softpath_move_tl
\tl_put_right:No \l_@@_softpath_main_tl
\l_@@_softpath_part_tl
- \tl_build_gclear:N \g_@@_softpath_main_tl
+ \tl_build_gbegin:N \g_@@_softpath_main_tl
\@@_softpath_add:o \l_@@_softpath_main_tl
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/l3draw-state.dtx b/macros/latex/contrib/l3experimental/l3draw-state.dtx
index e1a67309e2..36b30cdecc 100644
--- a/macros/latex/contrib/l3experimental/l3draw-state.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-state.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
index 35b31395db..31d8b95ea2 100644
--- a/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw-transforms.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.dtx b/macros/latex/contrib/l3experimental/l3draw.dtx
index d1e604d42d..8f0467519c 100644
--- a/macros/latex/contrib/l3experimental/l3draw.dtx
+++ b/macros/latex/contrib/l3experimental/l3draw.dtx
@@ -110,7 +110,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1173,7 +1173,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3draw}{2023-10-10}{}
+\ProvidesExplPackage{l3draw}{2023-11-01}{}
{L3 Experimental core drawing support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3draw.pdf b/macros/latex/contrib/l3experimental/l3draw.pdf
index 485b4ded36..583e37966b 100644
--- a/macros/latex/contrib/l3experimental/l3draw.pdf
+++ b/macros/latex/contrib/l3experimental/l3draw.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3galley.dtx b/macros/latex/contrib/l3experimental/l3galley.dtx
index 7272d8625e..7aaf367785 100644
--- a/macros/latex/contrib/l3experimental/l3galley.dtx
+++ b/macros/latex/contrib/l3experimental/l3galley.dtx
@@ -61,7 +61,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -686,7 +686,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3galley}{2023-10-10}{}
+\ProvidesExplPackage{l3galley}{2023-11-01}{}
{L3 Experimental galley code}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3galley.pdf b/macros/latex/contrib/l3experimental/l3galley.pdf
index 3ba577c159..f4f6d46e8c 100644
--- a/macros/latex/contrib/l3experimental/l3galley.pdf
+++ b/macros/latex/contrib/l3experimental/l3galley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3graphics.dtx b/macros/latex/contrib/l3experimental/l3graphics.dtx
index 0266b711fa..ebb4f86a2c 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.dtx
+++ b/macros/latex/contrib/l3experimental/l3graphics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -184,7 +184,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3graphics}{2023-10-10}{}
+\ProvidesExplPackage{l3graphics}{2023-11-01}{}
{L3 Experimental graphics inclusion support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3graphics.pdf b/macros/latex/contrib/l3experimental/l3graphics.pdf
index dd86d0bd76..52daaf7cb6 100644
--- a/macros/latex/contrib/l3experimental/l3graphics.pdf
+++ b/macros/latex/contrib/l3experimental/l3graphics.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3opacity.dtx b/macros/latex/contrib/l3experimental/l3opacity.dtx
index 3fce2c27d1..1bb27e2ca3 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.dtx
+++ b/macros/latex/contrib/l3experimental/l3opacity.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -96,7 +96,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3opacity}{2023-10-10}{}
+\ProvidesExplPackage{l3opacity}{2023-11-01}{}
{L3 Experimental opacity support}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3opacity.pdf b/macros/latex/contrib/l3experimental/l3opacity.pdf
index bd73f200d5..4f871a2bcb 100644
--- a/macros/latex/contrib/l3experimental/l3opacity.pdf
+++ b/macros/latex/contrib/l3experimental/l3opacity.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3str-format.dtx b/macros/latex/contrib/l3experimental/l3str-format.dtx
index 10ccfb2f79..57aebd6296 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.dtx
+++ b/macros/latex/contrib/l3experimental/l3str-format.dtx
@@ -48,7 +48,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -123,7 +123,7 @@
%
% \begin{function}[EXP]{\fp_format:nn}
% \begin{syntax}
-% \cs{fp_format:nn} \Arg{fpexpr} \Arg{format specification}
+% \cs{fp_format:nn} \Arg{fp expr} \Arg{format specification}
% \end{syntax}
% Evaluates the \meta{floating point expression} and converts the
% result to a string according to the \meta{format specification}.
@@ -166,7 +166,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3str-format}{2023-10-10}{}
+\ProvidesExplPackage{l3str-format}{2023-11-01}{}
{L3 Experimental string formatting}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3str-format.pdf b/macros/latex/contrib/l3experimental/l3str-format.pdf
index dbc0058ace..9a8715c64f 100644
--- a/macros/latex/contrib/l3experimental/l3str-format.pdf
+++ b/macros/latex/contrib/l3experimental/l3str-format.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.dtx b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
index 0cc622dbbb..c17d9a97b1 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.dtx
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.dtx
@@ -46,7 +46,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -151,7 +151,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{l3sys-shell}{2023-10-10}{}
+\ProvidesExplPackage{l3sys-shell}{2023-11-01}{}
{L3 Experimental system shell functions}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/l3sys-shell.pdf b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
index 2416721b43..201397cbd6 100644
--- a/macros/latex/contrib/l3experimental/l3sys-shell.pdf
+++ b/macros/latex/contrib/l3experimental/l3sys-shell.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xcoffins.dtx b/macros/latex/contrib/l3experimental/xcoffins.dtx
index 8e8a9f0ca1..2dc6cffa6a 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.dtx
+++ b/macros/latex/contrib/l3experimental/xcoffins.dtx
@@ -2,7 +2,7 @@
%
%% File: xcoffins.dtx
%
-% Copyright (C) 2010-2012,2014,2016-2023 The LaTeX Project
+% Copyright (C) 2010-2023 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
@@ -53,7 +53,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -672,7 +672,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xcoffins}{2023-10-10}{}
+\ProvidesExplPackage{xcoffins}{2023-11-01}{}
{L3 Experimental design level coffins}
% \end{macrocode}
%
diff --git a/macros/latex/contrib/l3experimental/xcoffins.pdf b/macros/latex/contrib/l3experimental/xcoffins.pdf
index 4e7d4f9a57..b10dcf8453 100644
--- a/macros/latex/contrib/l3experimental/xcoffins.pdf
+++ b/macros/latex/contrib/l3experimental/xcoffins.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3experimental/xgalley.dtx b/macros/latex/contrib/l3experimental/xgalley.dtx
index abda67cc7e..3dd89b46e8 100644
--- a/macros/latex/contrib/l3experimental/xgalley.dtx
+++ b/macros/latex/contrib/l3experimental/xgalley.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-10}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -731,7 +731,7 @@
% \end{macrocode}
%
% \begin{macrocode}
-\ProvidesExplPackage{xgalley}{2023-10-10}{}
+\ProvidesExplPackage{xgalley}{2023-11-01}{}
{L3 Experimental galley}
\RequirePackage{xtemplate,l3galley}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3experimental/xgalley.pdf b/macros/latex/contrib/l3experimental/xgalley.pdf
index eacea34401..9aeb6d4e19 100644
--- a/macros/latex/contrib/l3experimental/xgalley.pdf
+++ b/macros/latex/contrib/l3experimental/xgalley.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/CHANGELOG.md b/macros/latex/contrib/l3kernel/CHANGELOG.md
index 919e6779b6..43a783d0b7 100644
--- a/macros/latex/contrib/l3kernel/CHANGELOG.md
+++ b/macros/latex/contrib/l3kernel/CHANGELOG.md
@@ -7,6 +7,29 @@ this project uses date-based 'snapshot' version identifiers.
## [Unreleased]
+## [2023-11-01]
+
+### Added
+- `\seq_(g)set_map_e:NNn`
+- Documentation for `\ExplLoaderFileDate` in `expl3.pdf`
+
+### Changed
+- Documentation improvements
+- Refine action of `\text_titlecase_first:n(n)` to be focussed strictly on
+ first (relevant) codepoint in the input
+- Standardize "This is the (e)TeX primitive ..." in `texnote` in documentation
+- Move `\tl_build_(g)begin:N`, `\tl_build_(g)end:N`, `\tl_build_(g)put_left:Nn`
+ and `\tl_build_(g)right:Nn` to stable status
+
+### Deprecated
+- `\seq_(g)set_map_x:NNn` in favor of `e`-type naming
+
+### Fixed
+- `\fp_clear_variable:n` should act locally (issue \#1298)
+- `\fp_clear_function:n` should act locally and correctly
+- Support for `\fp_show:N` showing symbolic expressions (issue \#1301)
+- Undefined `\str_case:en(TF)` (excluding `\str_case:en`)
+
## [2023-10-23]
### Added
@@ -18,11 +41,12 @@ this project uses date-based 'snapshot' version identifiers.
`\fp_new_function:n`, `\fp_set_function:nnn` and `\fp_clear_function:n`
### Changed
-- Refine action of `\text_titlecase_first:n(n)` to be focussed strictly on
- first (relevant) codepoint in the input
+- Clarify action of `\text_titlecase_first:n(n)`
+- Detect letters for titlecasing based on Unicode general category
### Deprecated
- `\text_titlecase:n(n)` as ambiguous: replaced by `\text_titlecase_all:n(n)`
+- `\tl_build_(g)clear:N` in favour of `\tl_build_(g)begin:N`
### Fixed
- Support arbitrary BCP-47 locales for case-changing overrides (issue \#1239)
@@ -1558,7 +1582,8 @@ this project uses date-based 'snapshot' version identifiers.
- Step functions have been added for dim variables,
e.g. `\dim_step_inline:nnnn`
-[Unreleased]: https://github.com/latex3/latex3/compare/2023-10-23...HEAD
+[Unreleased]: https://github.com/latex3/latex3/compare/2023-11-01...HEAD
+[2023-11-01]: https://github.com/latex3/latex3/compare/2023-10-23...2023-11-01
[2023-10-23]: https://github.com/latex3/latex3/compare/2023-10-10...2023-10-23
[2023-10-10]: https://github.com/latex3/latex3/compare/2023-08-29...2023-10-10
[2023-08-29]: https://github.com/latex3/latex3/compare/2023-08-11...2023-08-29
diff --git a/macros/latex/contrib/l3kernel/README.md b/macros/latex/contrib/l3kernel/README.md
index 5f52ac444b..559fcaf4ae 100644
--- a/macros/latex/contrib/l3kernel/README.md
+++ b/macros/latex/contrib/l3kernel/README.md
@@ -1,7 +1,7 @@
LaTeX3 Programming Conventions
==============================
-Release 2023-10-23
+Release 2023-11-01
Overview
--------
diff --git a/macros/latex/contrib/l3kernel/expl3.dtx b/macros/latex/contrib/l3kernel/expl3.dtx
index 09e21e4710..bf5bc9e46f 100644
--- a/macros/latex/contrib/l3kernel/expl3.dtx
+++ b/macros/latex/contrib/l3kernel/expl3.dtx
@@ -24,7 +24,7 @@
%
%<*driver|generic|package|2ekernel>
%</driver|generic|package|2ekernel>
-\def\ExplFileDate{2023-10-23}%
+\def\ExplFileDate{2023-11-01}%
%<*driver>
\documentclass[full]{l3doc}
\usepackage{graphicx}
@@ -51,7 +51,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -958,6 +958,16 @@
% loadable: package loading is dependent on the \LaTeXe{} package-management
% mechanism.
%
+% \section{Getting the version of \pkg{expl3}}
+%
+% \begin{function}{\ExplLoaderFileDate}
+% Once the programming layer is loaded by one of the loaders, you can access
+% its version in the ISO date format \meta{year}-\meta{month}-\meta{day},
+% through \cs{ExplLoaderFileDate}.
+%
+% The current version of \pkg{expl3} is \ExplLoaderFileDate.
+% \end{function}
+%
% \section{Engine/primitive requirements}
%
% To use \pkg{expl3} and the higher level packages provided by the
diff --git a/macros/latex/contrib/l3kernel/expl3.pdf b/macros/latex/contrib/l3kernel/expl3.pdf
index 48ef0d9e7e..adfa71fe8e 100644
--- a/macros/latex/contrib/l3kernel/expl3.pdf
+++ b/macros/latex/contrib/l3kernel/expl3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.pdf b/macros/latex/contrib/l3kernel/interface3.pdf
index d80ff728b7..a63062c398 100644
--- a/macros/latex/contrib/l3kernel/interface3.pdf
+++ b/macros/latex/contrib/l3kernel/interface3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/interface3.tex b/macros/latex/contrib/l3kernel/interface3.tex
index ded23a7954..18cd1df664 100644
--- a/macros/latex/contrib/l3kernel/interface3.tex
+++ b/macros/latex/contrib/l3kernel/interface3.tex
@@ -64,7 +64,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/l3.ins b/macros/latex/contrib/l3kernel/l3.ins
index 24f11d8f7b..0018a81d70 100644
--- a/macros/latex/contrib/l3kernel/l3.ins
+++ b/macros/latex/contrib/l3kernel/l3.ins
@@ -65,6 +65,7 @@ and all files in that bundle must be distributed together.
\from{l3expan.dtx} {package}
\from{l3quark.dtx} {package}
\from{l3tl.dtx} {package}
+ \from{l3tl-build.dtx} {package}
\from{l3str.dtx} {package}
\from{l3seq.dtx} {package}
\from{l3int.dtx} {package}
diff --git a/macros/latex/contrib/l3kernel/l3basics.dtx b/macros/latex/contrib/l3kernel/l3basics.dtx
index 00e159d817..716b916817 100644
--- a/macros/latex/contrib/l3kernel/l3basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3basics.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -106,6 +106,9 @@
% level may be closed by a \cs{group_end:} function or by a token
% with category code $2$ (close-group), namely a ^^A{
% |}| if standard category codes apply.
+% \begin{texnote}
+% This is the \TeX{} primitive \tn{aftergroup}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[added = 2021-05-11]{\group_show_list:, \group_log_list:}
@@ -116,7 +119,7 @@
% Display (to the terminal or log file) a list of the groups that are
% currently opened. This is intended for tracking down problems.
% \begin{texnote}
-% This is a wrapper around the \tn{showgroups} primitive.
+% This is a wrapper around the \eTeX{} primitive \tn{showgroups}.
% \end{texnote}
% \end{function}
%
@@ -130,8 +133,9 @@
% is therefore used as a shorthand for \enquote{replacement text}.
%
% Functions which are not \enquote{protected} are fully expanded
-% inside an \texttt{x} expansion. In contrast, \enquote{protected}
-% functions are not expanded within \texttt{x} expansions.
+% inside an \texttt{e}-type or \texttt{x}-type expansion.
+% In contrast, \enquote{protected} functions are not expanded within
+% \texttt{e} and \texttt{x} expansions.
%
% \subsection{Defining functions}
%
@@ -175,7 +179,7 @@
% Create a new function with the \texttt{protected} restriction,
% such as \cs{cs_set_protected:Npn}. The parameter may contain
% \cs{par} tokens but the function will not expand within an
-% \texttt{x}-type or \texttt{e}-type expansion.
+% \texttt{e}-type or \texttt{x}-type expansion.
% \end{description}
%
% Finally, the functions in
@@ -245,8 +249,8 @@
% Creates \meta{function} to expand to \meta{code} as replacement text.
% Within the \meta{code}, the \meta{parameters} (|#1|, |#2|,
% \emph{etc.}) will be replaced by those absorbed by the function.
-% The \meta{function} will not expand within an \texttt{x}-type or
-% or \texttt{e}-type
+% The \meta{function} will not expand within an \texttt{e}-type or
+% or \texttt{x}-type
% argument. The definition is global and an error results if the
% \meta{function} is already defined.
% \end{function}
@@ -265,7 +269,7 @@
% \emph{etc.}) will be replaced by those absorbed by the function.
% When the \meta{function} is used the \meta{parameters} absorbed
% cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global
+% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global
% and an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -317,7 +321,7 @@
% \emph{etc.}) will be replaced by those absorbed by the function.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level. The \meta{function} will
-% not expand within an \texttt{x}-type or \texttt{e}-type argument.
+% not expand within an \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -336,7 +340,7 @@
% cannot contain \cs{par} tokens. The assignment of a meaning
% to the \meta{function} is restricted to the current \TeX{} group
% level. The \meta{function} will not expand within an
-% \texttt{x}-type or \texttt{e}-type argument.
+% \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -389,7 +393,7 @@
% The assignment of a meaning to the \meta{function} is \emph{not}
% restricted to the current \TeX{} group level: the assignment is
% global. The \meta{function} will not expand within an
-% \texttt{x}-type or \texttt{e}-type argument.
+% \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \begin{function}
@@ -408,7 +412,7 @@
% cannot contain \cs{par} tokens. The assignment of a meaning to the
% \meta{function} is \emph{not} restricted to the current \TeX{}
% group level: the assignment is global. The \meta{function} will
-% not expand within an \texttt{x}-type or \texttt{e}-type argument.
+% not expand within an \texttt{e}-type or \texttt{x}-type argument.
% \end{function}
%
% \subsection{Defining new functions using the signature}
@@ -459,8 +463,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument. The definition is global and
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument. The definition is global and
% an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -478,7 +482,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument. The definition is global and
+% expand within an \texttt{e}-type or \texttt{x}-type argument. The definition is global and
% an error results if the \meta{function} is already defined.
% \end{function}
%
@@ -529,8 +533,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument.
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
% \end{function}
@@ -549,7 +553,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument.
+% expand within an \texttt{e}-type or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is restricted to
% the current \TeX{} group level.
% \end{function}
@@ -599,8 +603,8 @@
% Within the \meta{code}, the number of \meta{parameters} is detected
% automatically from the function signature. These \meta{parameters}
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
-% function. The \meta{function} will not expand within an \texttt{x}-type
-% or \texttt{e}-type argument.
+% function. The \meta{function} will not expand within an \texttt{e}-type
+% or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is global.
% \end{function}
%
@@ -618,7 +622,7 @@
% (|#1|, |#2|, \emph{etc.}) will be replaced by those absorbed by the
% function. When the \meta{function} is used the \meta{parameters}
% absorbed cannot contain \cs{par} tokens. The \meta{function} will not
-% expand within an \texttt{x}-type or \texttt{e}-type argument.
+% expand within an \texttt{e}-type or \texttt{x}-type argument.
% The assignment of a meaning to the \meta{function} is global.
% \end{function}
%
@@ -712,7 +716,7 @@
% This function expands to the \emph{meaning} of the \meta{control sequence}
% control sequence. For a macro, this includes the \meta{replacement text}.
% \begin{texnote}
-% This is \TeX{}'s \tn{meaning} primitive.
+% This is the \TeX{} primitive \tn{meaning}.
% For tokens that are not control sequences, it is more logical to
% use \cs{token_to_meaning:N}.
% The \texttt{c} variant correctly reports undefined arguments.
@@ -825,7 +829,7 @@
% of category code $10$. The result does \emph{not} include
% the current escape token, contrarily to \cs{token_to_str:N}.
% Full expansion of this function requires exactly $2$ expansion
-% steps, and so an \texttt{x}-type or \texttt{e}-type expansion, or two
+% steps, and so an \texttt{e}-type or \texttt{x}-type expansion, or two
% \texttt{o}-type expansions are required to
% convert the \meta{control sequence} to a sequence of characters
% in the input stream. In most cases, an \texttt{f}-expansion
@@ -1207,7 +1211,7 @@
% Certain conditionals deal with specific data types like boxes and
% fonts and are described there. The ones described below are either
% the universal conditionals or deal with control sequences. We
-% prefix primitive conditionals with |\if_|.
+% prefix primitive conditionals with |\if_|, except for \cs{if:w}.
%
% \begin{function}[EXP]
% {\if_true:, \if_false:, \else:, \fi:, \reverse_if:N}
@@ -1222,8 +1226,10 @@
% conditional. The function "\or:" is documented in \pkg{l3int} and
% used in case switches.
% \begin{texnote}
-% These are equivalent to their corresponding \TeX\ primitive
-% conditionals; \cs{reverse_if:N} is \eTeX's \tn{unless}.
+% \cs{if_true:} and \cs{if_false:} are equivalent to their corresponding
+% \TeX{} primitive conditionals \tn{iftrue} and \tn{iffalse};
+% \cs{else:} and \cs{fi:} are the \TeX{} primitives \tn{else} and \tn{fi};
+% \cs{reverse_if:N} is the \eTeX{} primitive \tn{unless}.
% \end{texnote}
% \end{function}
%
@@ -1236,7 +1242,7 @@
% <arg_1> and <arg_2> could be functions, variables, tokens; in all cases the
% \emph{unexpanded} definitions are compared.
% \begin{texnote}
-% This is \TeX{}'s \tn{ifx}.
+% This is the \TeX{} primitive \tn{ifx}.
% \end{texnote}
% \end{function}
%
@@ -1251,6 +1257,10 @@
% tests if the category codes of the two tokens are the same whereas
% "\if:w" tests if the character codes are
% identical. "\if_charcode:w" is an alternative name for "\if:w".
+% \begin{texnote}
+% \cs{if:w} and \cs{if_charcode:w} are both the \TeX{} primitive \tn{if}.
+% \cs{if_catcode:w} is the \TeX{} primitive \tn{ifcat}.
+% \end{texnote}
% \end{function}
%
% \begin{function}[EXP]{\if_cs_exist:N, \if_cs_exist:w}
@@ -1264,7 +1274,7 @@
% "\scan_stop:"! This can be useful when dealing with control
% sequences which cannot be entered as a single token.
% \begin{texnote}
-% These are \TeX{}'s \tn{ifdefined} and \tn{ifcsname}, respectively.
+% These are the \TeX{} primitives \tn{ifdefined} and \tn{ifcsname}.
% \end{texnote}
% \end{function}
%
@@ -1278,6 +1288,10 @@
% \end{syntax}
% Execute <true code> if currently in horizontal mode, otherwise
% execute <false code>. Similar for the other functions.
+% \begin{texnote}
+% These are the \TeX{} primitives \tn{ifhmode}, \tn{ifvmode}, \tn{ifmmode},
+% and~\tn{ifinner}.
+% \end{texnote}
% \end{function}
%
% \section{Starting a paragraph}
@@ -2414,9 +2428,6 @@
% returned with \meta{true} for when there is a colon in the function
% and \meta{false} if there is not.
%
-% We cannot use |:| directly as it has the wrong category code so
-% an |x|-type expansion is used to force the conversion.
-%
% First ensure that we actually get a properly evaluated string by
% expanding \cs{cs_to_str:N} twice. If the function contained a
% colon, the auxiliary takes as |#1| the function name, delimited by
@@ -3245,7 +3256,7 @@
% wrapping code as otherwise we would wrongly see the definitions that
% are in place there. To get correct escape characters, set the
% \tn{escapechar} in a group; this also localizes the assignment
-% performed by \texttt{x}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands
+% performed by \texttt{e}-expansion. The \cs{cs_show:c} and \cs{cs_log:c} commands
% convert their argument to a control sequence within a group to avoid
% showing \tn{relax} for undefined control sequences.
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3bootstrap.dtx b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
index a42f358ae8..395e5e35b4 100644
--- a/macros/latex/contrib/l3kernel/l3bootstrap.dtx
+++ b/macros/latex/contrib/l3kernel/l3bootstrap.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -51,9 +51,16 @@
%
% \section{Using the \LaTeX3 modules}
%
-% The modules documented in \file{source3} are designed to be used on top of
-% \LaTeXe{} and are loaded all as one with the usual |\usepackage{expl3}| or
-% |\RequirePackage{expl3}| instructions.
+% The modules documented in ^^A
+% \ifinterface
+% this file (and \file{source3} for documented sources) ^^A
+% \else
+% \file{interface3} (and this file) ^^A
+% \fi
+% are designed to be used on top of \LaTeXe{} and are already pre-loaded
+% since \LaTeXe{} 2020-02-02.
+% To support older formats, the |\usepackage{expl3}| or |\RequirePackage{expl3}|
+% instructions are still available to load them all as one.
%
% As the modules use a coding syntax different from standard
% \LaTeXe{} it provides a few functions for setting it up.
@@ -80,7 +87,6 @@
% \begin{function}[updated = 2017-03-19, updated = 2023-08-03]
% {\ProvidesExplPackage, \ProvidesExplClass, \ProvidesExplFile}
% \begin{syntax}
-% |\RequirePackage{expl3}| \\
% \cs{ProvidesExplPackage} \Arg{package} \Arg{date} \Arg{version} \Arg{description}
% \end{syntax}
% These functions act broadly in the same way as the corresponding
@@ -99,7 +105,6 @@
%
% \begin{function}[updated = 2012-06-04]{\GetIdInfo}
% \begin{syntax}
-% |\RequirePackage{l3bootstrap}|
% \cs{GetIdInfo} |$Id:| \meta{SVN info field} |$| \Arg{description}
% \end{syntax}
% Extracts all information from a SVN field. Spaces are not
diff --git a/macros/latex/contrib/l3kernel/l3box.dtx b/macros/latex/contrib/l3kernel/l3box.dtx
index 5757653168..b92b4faaa6 100644
--- a/macros/latex/contrib/l3kernel/l3box.dtx
+++ b/macros/latex/contrib/l3kernel/l3box.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -639,7 +639,7 @@
% variable does not exist or if it is invalid. This function may be applied to
% local or global boxes.
% \begin{texnote}
-% This is the \tn{box} primitive.
+% This is the \TeX{} primitive \tn{box}.
% \end{texnote}
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3candidates.dtx b/macros/latex/contrib/l3kernel/l3candidates.dtx
index 567969d545..b5c30bd42f 100644
--- a/macros/latex/contrib/l3kernel/l3candidates.dtx
+++ b/macros/latex/contrib/l3kernel/l3candidates.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -103,49 +103,6 @@
%
% \section{Additions to \pkg{l3tl}}
%
-% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N}
-% \begin{syntax}
-% \cs{tl_build_begin:N} \meta{tl~var}
-% \end{syntax}
-% Clears the \meta{tl~var} and sets it up to support other
-% \cs[no-index]{tl_build_\ldots{}} functions, which allow accumulating
-% large numbers of tokens piece by piece much more efficiently than
-% standard \pkg{l3tl} functions. Until \cs{tl_build_end:N}
-% \meta{tl~var} is called, applying any function from \pkg{l3tl} other
-% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect
-% results. The |begin| and |gbegin| functions must be used for local
-% and global \meta{tl~var} respectively.
-% \end{function}
-%
-% \begin{function}[added = 2018-04-01]{\tl_build_clear:N, \tl_build_gclear:N}
-% \begin{syntax}
-% \cs{tl_build_clear:N} \meta{tl~var}
-% \end{syntax}
-% Clears the \meta{tl~var} and sets it up to support other
-% \cs[no-index]{tl_build_\ldots{}} functions. The |clear| and
-% |gclear| functions must be used for local and global \meta{tl~var}
-% respectively.
-% \end{function}
-%
-% \begin{function}[added = 2018-04-01]
-% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Ne,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
-% \tl_build_put_right:Nn, \tl_build_put_right:Ne,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
-% }
-% \begin{syntax}
-% \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
-% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens}
-% \end{syntax}
-% Adds \meta{tokens} to the left or right side of the current contents
-% of \meta{tl~var}. The \meta{tl~var} must have been set up with
-% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and
-% |gput| functions must be used for local and global \meta{tl~var}
-% respectively. The |right| functions are about twice faster than the
-% |left| functions.
-% \end{function}
-%
% \begin{function}[added = 2018-04-01]{\tl_build_get:NN}
% \begin{syntax}
% \cs{tl_build_get:NN} \meta{tl~var_1} \meta{tl~var_2}
@@ -157,20 +114,6 @@
% \cs{tl_set:Nn}.
% \end{function}
%
-% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N}
-% \begin{syntax}
-% \cs{tl_build_end:N} \meta{tl~var}
-% \end{syntax}
-% Gets the contents of \meta{tl~var} and stores that into the
-% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}.
-% The \meta{tl~var} must have
-% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}.
-% The |end| and |gend| functions must be used for local and global
-% \meta{tl~var} respectively. These functions completely remove the
-% setup code that enabled \meta{tl~var} to be used for other
-% \cs[no-index]{tl_build_\ldots{}} functions.
-% \end{function}
-%
% \end{documentation}
%
% \begin{implementation}
@@ -195,7 +138,7 @@
% and skipping out of that would break horribly.
% The \cs{@@_wrap_item:n} function inserts the relevant
% \cs{@@_item:n} without expansion in the input stream,
-% hence in the \texttt{x}-expanding assignment.
+% hence in the \texttt{e}-expanding assignment.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_filter:NNn
{ \@@_set_filter:NNNn \__kernel_tl_set:Ne }
@@ -219,210 +162,10 @@
%<@@=tl>
% \end{macrocode}
%
-% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N}
-% \meta{tl~var}, the \meta{tl~var} has the structure
-% \begin{quote}
-% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn}
-% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right}
-% \end{quote}
-% where \meta{right} is not braced. The \enquote{data} it represents is
-% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed
-% by \meta{right}. The \meta{next~tl} is a token list variable whose
-% name is that of \meta{tl~var} followed by~|'|. There are between $0$
-% and $4$ \cs{exp_end:} to keep track of when \meta{left} and
-% \meta{right} should be put into the \meta{next~tl}. The
-% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
-% and \cs{cs_gset_nopar:Npe} if it is global.
-%
-% \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
-% \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
-% First construct the \meta{next~tl}: using a prime here conflicts
-% with the usual \pkg{expl3} convention but we need a name that can be
-% derived from |#1| without any external data such as a counter.
-% Empty that \meta{next~tl} and setup the structure. The local and
-% global versions only differ by a single function
-% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
-% important because only that function is stored in the \meta{tl~var}
-% and \meta{next~tl} for subsequent assignments. In principle
-% \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
-% to empty |#1| and make sure it is defined, but logging the
-% definition does not seem useful so we just do |#3| |#1| |{}| to
-% clear it locally or globally as appropriate.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_begin:N #1
- { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
-\cs_new_protected:Npn \tl_build_gbegin:N #1
- { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
-\cs_new_protected:Npn \@@_build_begin:NN #1#2
- { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
-\cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
- {
- #3 #1 { }
- #3 #2
- {
- \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
- \exp_not:n { \@@_build_last:NNn #3 #1 { } }
- }
- }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N}
-% The |begin| and |gbegin| functions already clear enough to make the
-% token list variable effectively empty. Eventually the |begin| and
-% |gbegin| functions should check that |#1'| is empty or undefined,
-% while the |clear| and |gclear| functions ought to empty |#1'|,
-% |#1''| and so on, similar to \cs{tl_build_end:N}. This only affects
-% memory usage.
-% \begin{macrocode}
-\cs_new_eq:NN \tl_build_clear:N \tl_build_begin:N
-\cs_new_eq:NN \tl_build_gclear:N \tl_build_gbegin:N
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-% {
-% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
-% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx,
-% \@@_build_last:NNn, \@@_build_put:nn, \@@_build_put:nw
-% }
-% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most
-% of the time this just removes one \cs{exp_end:}. When there are
-% none left, \cs{@@_build_last:NNn} is expanded instead. It resets
-% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and
-% the definition early. Then it makes sure the \meta{next~tl} (its
-% argument |#1|) is set-up and starts a new definition. Then
-% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left}
-% part of the original \meta{tl~var} as appropriate for the definition
-% of the \meta{next~tl} (the \meta{right} part is left in the right
-% place without ever becoming a macro argument). We use
-% \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
-% arguments that are likely very long token lists. We use
-% \cs[no-index]{cs_(g)set_nopar:Npe} rather than
-% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
-% because the assignments are interrupted by brace tricks, which
-% implies that the assignment does not simply set the token list to an
-% |x|-expansion of the second argument.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
- {
- \cs_set_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
- {
- \cs_gset_nopar:Npe #1
- { \exp_after:wN \exp_not:n \exp_after:wN { \exp:w #1 #2 } }
- }
-\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
-\cs_new_protected:Npn \@@_build_last:NNn #1#2
- {
- \if_false: { { \fi:
- \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
- \@@_build_last:NNn #1 #2 { }
- }
- }
- \if_meaning:w \c_empty_tl #2
- \@@_build_begin:NN #1 #2
- \fi:
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \if_false: } } \fi:
- \exp_after:wN \@@_build_put:nn \exp_after:wN {#2}
- }
-\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 }
-\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5
- { #2 \@@_build_last:NNn #3 #4 { #1 #5 } }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}
-% {
-% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
-% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx,
-% \@@_build_put_left:NNn
-% }
-% See \cs{tl_build_put_right:Nn} for all the machinery. We could
-% easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
-% add the \meta{right} material after the \Arg{left} in the
-% |x|-expanding assignment.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_put_left:Nn #1
- { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \tl_build_gput_left:Nn #1
- { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
-\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
-\cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
- {
- #1 #2
- {
- \exp_after:wN \exp_not:n \exp_after:wN
- {
- \exp:w \exp_after:wN \@@_build_put:nn
- \exp_after:wN {#2} {#3}
- }
- }
- }
-% \end{macrocode}
-% \end{macro}
-%
% \begin{macro}{\tl_build_get:NN}
-% \begin{macro}{\@@_build_get:NNN, \@@_build_get:w, \@@_build_get_end:w}
-% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and
-% so on, all within an |x|-expanding assignment, and wrap as
-% appropriate in \cs{exp_not:n}. The various \meta{left} parts are
-% left in the assignment as we go, which enables us to expand the
-% \meta{next~tl} at the right place. The various \meta{right} parts
-% are eventually picked up in one last \cs{exp_not:n}, with a brace
-% trick to wrap all the \meta{right} parts together.
% \begin{macrocode}
\cs_new_protected:Npn \tl_build_get:NN
{ \@@_build_get:NNN \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \@@_build_get:NNN #1#2#3
- { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
-\cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
- {
- \exp_not:n {#4}
- \if_meaning:w \c_empty_tl #3
- \exp_after:wN \@@_build_get_end:w
- \fi:
- \exp_after:wN \@@_build_get:w #3
- }
-\cs_new:Npn \@@_build_get_end:w #1#2#3
- { \exp_after:wN \exp_not:n \exp_after:wN { \if_false: } \fi: }
-% \end{macrocode}
-% \end{macro}
-% \end{macro}
-%
-% \begin{macro}{\tl_build_end:N, \tl_build_gend:N, \@@_build_end_loop:NN}
-% Get the data then clear the \meta{next~tl} recursively until finding
-% an empty one. It is perhaps wasteful to repeatedly use
-% \cs{cs_to_str:N}. The local/global scope is checked by
-% \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
-% \begin{macrocode}
-\cs_new_protected:Npn \tl_build_end:N #1
- {
- \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
- }
-\cs_new_protected:Npn \tl_build_gend:N #1
- {
- \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
- }
-\cs_new_protected:Npn \@@_build_end_loop:NN #1#2
- {
- \if_meaning:w \c_empty_tl #1
- \exp_after:wN \use_none:nnnnnn
- \fi:
- #2 #1
- \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2
- }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/contrib/l3kernel/l3cctab.dtx b/macros/latex/contrib/l3kernel/l3cctab.dtx
index 794b53b5f4..317f623f2f 100644
--- a/macros/latex/contrib/l3kernel/l3cctab.dtx
+++ b/macros/latex/contrib/l3kernel/l3cctab.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3clist.dtx b/macros/latex/contrib/l3kernel/l3clist.dtx
index bd8082cf34..21563de7ea 100644
--- a/macros/latex/contrib/l3kernel/l3clist.dtx
+++ b/macros/latex/contrib/l3kernel/l3clist.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -361,7 +361,7 @@
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the
% comma list does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -586,8 +586,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -611,8 +611,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -631,8 +631,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -737,8 +737,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -753,8 +753,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1523,7 +1523,7 @@
% \clist_reverse:N, \clist_reverse:c,
% \clist_greverse:N, \clist_greverse:c
% }
-% Use \cs{clist_reverse:n} in an \texttt{x}-expanding assignment. The
+% Use \cs{clist_reverse:n} in an \texttt{e}-expanding assignment. The
% extra work that \cs{clist_reverse:n} does to preserve braces and
% spaces would not be needed for the well-controlled case of
% \texttt{N}-type comma lists, but the slow-down is not too bad.
diff --git a/macros/latex/contrib/l3kernel/l3coffins.dtx b/macros/latex/contrib/l3kernel/l3coffins.dtx
index cf046706b6..3f3e484cfa 100644
--- a/macros/latex/contrib/l3kernel/l3coffins.dtx
+++ b/macros/latex/contrib/l3kernel/l3coffins.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3color.dtx b/macros/latex/contrib/l3kernel/l3color.dtx
index 2cdf604d02..ca0aae12ae 100644
--- a/macros/latex/contrib/l3kernel/l3color.dtx
+++ b/macros/latex/contrib/l3kernel/l3color.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3debug.dtx b/macros/latex/contrib/l3kernel/l3debug.dtx
index c351529d85..ec27fe33af 100644
--- a/macros/latex/contrib/l3kernel/l3debug.dtx
+++ b/macros/latex/contrib/l3kernel/l3debug.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3deprecation.dtx b/macros/latex/contrib/l3kernel/l3deprecation.dtx
index 98d8df40e5..6fcc98968a 100644
--- a/macros/latex/contrib/l3kernel/l3deprecation.dtx
+++ b/macros/latex/contrib/l3kernel/l3deprecation.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -137,7 +137,7 @@
% In case we want a warning, the \meta{function} is defined to produce
% such a warning without grabbing any argument, then redefine itself
% to the standard definition that the \meta{function} should have,
-% with arguments, and call that definition. The \texttt{x}-type
+% with arguments, and call that definition. The \texttt{e}-type
% expansion and \cs{exp_not:n} avoid needing to double the~|#|, which
% we could not do anyways. We then deal with the code for
% \cs{debug_off:n} |{deprecation}|: presumably someone doing that does
@@ -536,6 +536,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_set_map_e:NNn }
+\cs_gset_protected:Npn \seq_set_map_x:NNn { \seq_set_map_e:NNn }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-26 } { \seq_gset_map_e:NNn }
+\cs_gset_protected:Npn \seq_gset_map_x:NNn { \seq_gset_map_e:NNn }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3sys} functions}
%
% \begin{macrocode}
@@ -614,6 +623,15 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\tl_build_clear:N, \tl_build_gclear:N}
+% \begin{macrocode}
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_begin:N }
+\cs_new_protected:Npn \tl_build_clear:N { \tl_build_begin:N }
+\__kernel_patch_deprecation:nnNNpn { 2023-10-18 } { \tl_build_gbegin:N }
+\cs_new_protected:Npn \tl_build_gclear:N { \tl_build_gbegin:N }
+% \end{macrocode}
+% \end{macro}
+%
% \subsection{Deprecated \pkg{l3token} functions}
%
% \begin{macro}[EXP]{\char_to_utfviii_bytes:n}
diff --git a/macros/latex/contrib/l3kernel/l3doc.dtx b/macros/latex/contrib/l3kernel/l3doc.dtx
index 789095d104..920145ce23 100644
--- a/macros/latex/contrib/l3kernel/l3doc.dtx
+++ b/macros/latex/contrib/l3kernel/l3doc.dtx
@@ -85,7 +85,7 @@ and all files in that bundle must be distributed together.
% require you to do updates, if the class changes.}}
%
% \author{\Team}
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
% \tableofcontents
%
@@ -1190,7 +1190,7 @@ and all files in that bundle must be distributed together.
% Get predicate from a function's base name. The code is not broken
% by functions with no signature. The |n|-type version can be used
% for keys and other non-control sequences. The output after
-% |x|-expansion is a string.
+% |e|-expansion is a string.
% \begin{macrocode}
\cs_new:Npn \@@_predicate_from_base:n #1
{
@@ -1930,9 +1930,9 @@ and all files in that bundle must be distributed together.
\raisebox{\baselineskip}[0pt][0pt]{\hypertarget{expstar}{}}%
\write \@auxout { \def \string \Codedoc@expstar { } }
\@@_typeset_exp:\ indicates~fully~expandable~functions,~which~
- can~be~used~within~an~\texttt{x}-type~argument~(in~plain~
- \TeX{}~terms,~inside~an~\cs{edef}),~as~well~as~within~an~
- \texttt{f}-type~argument.
+ can~be~used~within~an~\texttt{e}-type~argument~(inside~an~\tn{expanded}),~
+ \texttt{x}-type~argument~(in~plain~\TeX{}~terms,~inside~an~\tn{edef}),~
+ as~well~as~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainREXP } { }
{
@@ -1940,8 +1940,8 @@ and all files in that bundle must be distributed together.
\write \@auxout { \def \string \Codedoc@rexpstar { } }
\@@_typeset_rexp:\ indicates~
restricted~expandable~functions,~which~can~be~used~within~an~
- \texttt{x}-type~argument~but~cannot~be~fully~expanded~within~an~
- \texttt{f}-type~argument.
+ \texttt{x}-type~argument~or~an~\texttt{e}-type~argument,~
+ but~cannot~be~fully~expanded~within~an~\texttt{f}-type~argument.
}
\NewDocumentCommand { \CodedocExplainTF } { }
{
diff --git a/macros/latex/contrib/l3kernel/l3doc.pdf b/macros/latex/contrib/l3kernel/l3doc.pdf
index 2612bef184..905adabf2d 100644
--- a/macros/latex/contrib/l3kernel/l3doc.pdf
+++ b/macros/latex/contrib/l3kernel/l3doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.dtx b/macros/latex/contrib/l3kernel/l3docstrip.dtx
index 59bd089ae6..9c363c8753 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.dtx
+++ b/macros/latex/contrib/l3kernel/l3docstrip.dtx
@@ -63,7 +63,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3docstrip.pdf b/macros/latex/contrib/l3kernel/l3docstrip.pdf
index 4f43b61756..537e38e21a 100644
--- a/macros/latex/contrib/l3kernel/l3docstrip.pdf
+++ b/macros/latex/contrib/l3kernel/l3docstrip.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3expan.dtx b/macros/latex/contrib/l3kernel/l3expan.dtx
index 3bf2bd6153..d133eaae45 100644
--- a/macros/latex/contrib/l3kernel/l3expan.dtx
+++ b/macros/latex/contrib/l3kernel/l3expan.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -229,7 +229,7 @@
% contrast to |e|, all macro parameter characters |#| must be doubled,
% and omitting this leads to low-level errors. In addition this type of
% expansion is not expandable, namely functions that have |x| in their
-% signature do not themselves expand when appearing inside |x| or |e|
+% signature do not themselves expand when appearing inside |e| or |x|
% expansion.
%
% The |f| type is so special that it deserves an example. It is
@@ -264,8 +264,7 @@
% \begin{quote}
% |\example:n { 3 , 7 }|
% \end{quote}
-% at the cost of being protected (for |x| type) or very much slower in
-% old engines (for |e| type).
+% at the cost of being protected for |x|-type.
% If you use |f| type expansion in conditional processing then
% you should stick to using |TF| type functions only as the expansion
% does not finish any |\if... \fi:| itself!
@@ -642,7 +641,7 @@
% appropriate argument specifier variant or the appropriate
% \cs[no-index]{exp_args:N\meta{variant}} function.
% \begin{texnote}
-% This is the \TeX{} primitive \tn{expandafter} renamed.
+% This is the \TeX{} primitive \tn{expandafter}.
% \end{texnote}
% \end{function}
%
@@ -659,10 +658,10 @@
% \cs{exp_not:N} \meta{token}
% \end{syntax}
% Prevents expansion of the \meta{token} in a context where it would
-% otherwise be expanded, for example an |x|-type argument or the first
-% token in an |o| or |e| or |f| argument.
+% otherwise be expanded, for example an |e|-type or |x|-type argument or
+% the first token in an |o|-type or |f|-type argument.
% \begin{texnote}
-% This is the \TeX{} \tn{noexpand} primitive. It only prevents
+% This is the \TeX{} primitive \tn{noexpand}. It only prevents
% expansion. At the beginning of an |f|-type argument, a space
% \meta{token} is removed even if it appears as \cs{exp_not:N}
% \cs{c_space_token}. In an |e|-expanding definition
@@ -686,16 +685,16 @@
% \begin{syntax}
% \cs{exp_not:n} \Arg{tokens}
% \end{syntax}
-% Prevents expansion of the \meta{tokens} in an |e| or |x|-type argument. In
-% all other cases the \meta{tokens} continue to be expanded, for
+% Prevents expansion of the \meta{tokens} in an |e|-type or |x|-type argument.
+% In all other cases the \meta{tokens} continue to be expanded, for
% example in the input stream or in other types of arguments such as
% \texttt{c}, \texttt{f}, \texttt{v}. The argument of \cs{exp_not:n}
% \emph{must} be surrounded by braces.
% \begin{texnote}
-% This is the \eTeX{} \tn{unexpanded} primitive. In an
-% |x|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
+% This is the \eTeX{} primitive \tn{unexpanded}. In an
+% |e|-expanding definition (\cs{cs_new:Npe}), \cs{exp_not:n}~|{#1}|
% is equivalent to |##1| rather than to~|#1|, namely it inserts the
-% two characters |#| and~|1|. In an |e|-type argument
+% two characters |#| and~|1|, and
% \cs{exp_not:n}~|{#}| is equivalent to |#|, namely it inserts the
% character~|#|.
% \end{texnote}
@@ -706,7 +705,7 @@
% \cs{exp_not:o} \Arg{tokens}
% \end{syntax}
% Expands the \meta{tokens} once, then prevents any further expansion
-% in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}.
+% in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:V}
@@ -714,7 +713,7 @@
% \cs{exp_not:V} \meta{variable}
% \end{syntax}
% Recovers the content of the \meta{variable}, then prevents expansion
-% of this material in |x|-type or \texttt{e}-type arguments using \cs{exp_not:n}.
+% of this material in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:v}
@@ -725,7 +724,7 @@
% converts this into a control sequence which should be a \meta{variable}
% name.
% The content of the \meta{variable} is recovered, and further
-% expansion in |x|-type or \texttt{e}-type arguments is prevented using \cs{exp_not:n}.
+% expansion in |e|-type or |x|-type arguments is prevented using \cs{exp_not:n}.
% \end{function}
%
% \begin{function}[EXP]{\exp_not:e}
@@ -734,7 +733,7 @@
% \end{syntax}
% Expands \meta{tokens} exhaustively, then protects the result of the
% expansion (including any tokens which were not expanded) from
-% further expansion in |e| or |x|-type arguments using \cs{exp_not:n}.
+% further expansion in |e|-type or |x|-type arguments using \cs{exp_not:n}.
% This is very rarely useful but is provided for consistency.
% \end{function}
%
@@ -745,7 +744,7 @@
% Expands \meta{tokens} fully until the first unexpandable token is
% found (if it is a space it is removed). Expansion then stops, and
% the result of the expansion (including any tokens which were not
-% expanded) is protected from further expansion in |x|-type or \texttt{e}-type arguments
+% expanded) is protected from further expansion in |e|-type or |x|-type arguments
% using \cs{exp_not:n}.
% \end{function}
%
@@ -758,7 +757,7 @@
% and all of \meta{tokens} are expandable \cs{exp_stop_f:}
% terminates the expansion of tokens even if \meta{more tokens}
% are also expandable. The function itself is an implicit space
-% token. Inside an \texttt{x}-type or \texttt{e}-type expansion, it retains its
+% token. Inside an \texttt{e}-type or \texttt{x}-type expansion, it retains its
% form, but when typeset it produces the underlying space (\verb*| |).
% \end{function}
%
@@ -948,7 +947,7 @@
% In this section a general mechanism for defining functions that handle
% arguments is defined. These general expansion functions are
% expandable unless |x| is used. (Any version of |x| is going to have
-% to use one of the \LaTeX3 names for \cs{cs_set:Npe} at some
+% to use one of the \LaTeX3 names for \cs{cs_set:Npx} at some
% point, and so is never going to be expandable.)
%
% The definition of expansion functions with this technique happens
@@ -1062,7 +1061,7 @@
% Since the expansion of \cs{exp:w} \cs{exp_end_continue_f:w} is
% empty, we wind up with a fully expanded list, only \TeX{} has not
% tried to execute any of the non-expandable tokens. This is what
-% differentiates this function from the |x| argument type.
+% differentiates this function from the |e| and |x| argument type.
% \begin{macrocode}
\cs_new:Npn \::f #1 \::: #2#3
{
@@ -1818,7 +1817,7 @@
% trigger an error, because we do not have a means to replace
% |o|-expansion by |x|-expansion.
% More generally, we can only convert |N| to |c|, or convert |n|
-% to |V|, |v|, |o|, |f|, |x|.
+% to |V|, |v|, |o|, |e|, |f|, or |x|.
% \end{itemize}
% All this boils down to a few rules. Only |n| and |N|-type
% arguments can be replaced by \cs{cs_generate_variant:Nn}. Other
@@ -1828,7 +1827,7 @@
% part is ignored.
%
% We compare the base and variant signatures one character at a time
-% within |x|-expansion. The result is given to
+% within |e|-expansion. The result is given to
% \cs{@@_generate_variant:wwNN} (defined later) in the form
% \meta{processed variant signature} \cs{s_@@_mark} \meta{errors}
% \cs{s_@@_stop} \meta{base function} \meta{new function}. If all went
@@ -1889,7 +1888,7 @@
%
% The case where the two letters are different is only allowed if the
% base is |N| and the variant is |c|, or when the base is |n| and the
-% variant is |o|, |V|, |v|, |f| or |x|. Otherwise, call
+% variant is |V|, |v|, |o|, |e|, |f|, or |x|. Otherwise, call
% \cs{@@_generate_variant_loop_invalid:NNwNNnn} to remove the end of
% the loop, get arguments at the end of the loop, and place an
% appropriate error message as a second argument of
diff --git a/macros/latex/contrib/l3kernel/l3file.dtx b/macros/latex/contrib/l3kernel/l3file.dtx
index af83fe4e08..423c9c2761 100644
--- a/macros/latex/contrib/l3kernel/l3file.dtx
+++ b/macros/latex/contrib/l3kernel/l3file.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -486,7 +486,7 @@
% \end{syntax}
% This function writes \meta{tokens} to the specified
% \meta{stream} when the current page is finalised (\emph{i.e.}~at
-% shipout). The \texttt{x}-type variants expand the \meta{tokens}
+% shipout). The \texttt{e}-type variants expand the \meta{tokens}
% at the point where the function is used but \emph{not} when the
% resulting tokens are written to the \meta{stream}
% (\emph{cf.}~\cs{iow_shipout_e:Nn}).
@@ -597,7 +597,7 @@
% output does \emph{not} expand further when written to a file.
%
% \begin{texnote}
-% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{x}-type expansion
+% Internally, \cs{iow_wrap:nnnN} carries out an \texttt{e}-type expansion
% on the \meta{text} to expand it. This is done in such a way that
% \cs{exp_not:N} or \cs{exp_not:n} \emph{could} be used to prevent
% expansion of material. However, this is less conceptually clear than
@@ -687,9 +687,11 @@
% \emph{not} end in |/| other than the case that it is exactly equal
% to the root directory. The \meta{name} and \meta{ext} parts together
% make up the file name, thus the \meta{name} part may be thought of
-% as the \enquote{job name} for the current file. Note that \TeX{} does
-% not provide information on the \meta{ext} part for the main (top
-% level) file and that this file always has an empty \meta{dir} component.
+% as the \enquote{job name} for the current file.
+%
+% Note that \TeX{} does not provide information on the \meta{dir} and
+% \meta{ext} part for the main (top level) file and that this file
+% always has empty \meta{dir} and \meta{ext} components.
% Also, the \meta{name} here will be equal to \cs{c_sys_jobname_str},
% which may be different from the real file name (if set using
% |--jobname|, for example).
diff --git a/macros/latex/contrib/l3kernel/l3flag.dtx b/macros/latex/contrib/l3kernel/l3flag.dtx
index 278c71f27c..831f583aa1 100644
--- a/macros/latex/contrib/l3kernel/l3flag.dtx
+++ b/macros/latex/contrib/l3kernel/l3flag.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-assign.dtx b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
index 17d75d1045..385086dca4 100644
--- a/macros/latex/contrib/l3kernel/l3fp-assign.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-assign.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
%
% \begin{documentation}
@@ -165,7 +165,6 @@
% \subsection{Showing values}
%
% \begin{macro}{\fp_show:N, \fp_show:c, \fp_log:N, \fp_log:c, \@@_show:NN}
-% \begin{macro}[EXP]{\@@_show_validate:w}
% This shows the result of computing its argument by
% passing the right data to \cs{tl_show:n} or \cs{tl_log:n}.
% \begin{macrocode}
@@ -176,21 +175,91 @@
\cs_new_protected:Npn \@@_show:NN #1#2
{
\__kernel_chk_tl_type:NnnT #2 { fp }
+ { \exp_args:No \@@_show_validate:n #2 }
+ { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}[EXP]
+% {
+% \@@_show_validate:n, \@@_show_validate_aux:n, \@@_show_validate:nn,
+% }
+% \begin{macro}[EXP]
+% {
+% \@@_show_validate:w,
+% \@@_tuple_show_validate:w,
+% \@@_symbolic_show_validate:w
+% }
+% To support symbolic expression, validation has to be done recursively.
+% Two |\@@_show_validate:nn| wrappers are used to distinguish between
+% initial and recursive calls, in which the former provides a demo of
+% possible forms a |fp| variable would have.
+% \begin{macrocode}
+\cs_new:Npn \@@_show_validate:n #1
+ {
+ \@@_show_validate:nn { #1 }
+ {
+ \s_@@ \@@_chk:w ??? ;~ or \iow_newline:
+ \s_@@_tuple \_@@_tuple_chk:w ? ;~ or \iow_newline:
+ \s_@@_symbolic \@@_symbolic_chk:w ? , ? ;
+ }
+ }
+\cs_new:Npn \@@_show_validate_aux:n #1
+ {
+ \@@_show_validate:nn { #1 } { }
+ }
+\cs_new:Npn \@@_show_validate:nn #1#2
+ {
+ \tl_if_empty:nF { #1 }
{
- \str_if_eq:eeTF { \tl_head:N #2 } { \s_@@_tuple } { \exp_not:o #2 }
+ \str_case:enF { \tl_head:n { #1 } }
{
- \exp_after:wN \@@_show_validate:w #2
- \s_@@ \@@_chk:w ??? ; \s_@@_stop
+ { \s_@@ }
+ {
+ \@@_show_validate:w #1 \s_@@
+ \@@_chk:w ??? ; \s_@@_stop
+ }
+ { \s_@@_tuple }
+ {
+ \@@_tuple_show_validate:w #1
+ \s_@@_tuple \_@@_tuple_chk:w ?? ; \s_@@_stop
+ }
+ { \s_@@_symbolic }
+ {
+ \@@_symbolic_show_validate:w #1
+ \s_@@_symbolic \@@_symbolic_chk:w ? , ?? ; \s_@@_stop
+ }
}
+ { #2 }
}
- { \exp_args:Ne #1 { \token_to_str:N #2 = \fp_to_tl:N #2 } }
}
\cs_new:Npn \@@_show_validate:w
#1 \s_@@ \@@_chk:w #2#3#4#5 ; #6 \s_@@_stop
{
- \token_if_eq_meaning:NNTF #2 1
- { \s_@@ \@@_chk:w #2 #3 {#4} #5 ; }
- { \s_@@ \@@_chk:w #2 #3 #4 #5 ; }
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \token_if_eq_meaning:NNTF #2 1
+ { \s_@@ \@@_chk:w #2 #3 { #4 } #5 ; }
+ { \s_@@ \@@_chk:w #2 #3 #4 #5 ; }
+ \@@_show_validate_aux:n { #6 }
+ }
+ }
+\cs_new:Npn \@@_tuple_show_validate:w
+ #1 \s_@@_tuple \_@@_tuple_chk:w #2#3 ; #4 \s_@@_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ { \s_@@_tuple \@@_tuple_chk:w { \@@_show_validate_aux:n { #2 } } ; }
+ }
+\cs_new:Npn \@@_symbolic_show_validate:w
+ #1 \s_@@_symbolic \@@_symbolic_chk:w #2 , #3#4 ; #5 \s_@@_stop
+ {
+ \str_if_eq:nnF { #2 } {?}
+ {
+ \s_@@_symbolic \@@_symbolic_chk:w \exp_not:n { #2 } ,
+ { \@@_show_validate_aux:n { #3 } };
+ \@@_show_validate_aux:n { #5 }
+ }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3fp-aux.dtx b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
index ccd5e63ac1..83191b8074 100644
--- a/macros/latex/contrib/l3kernel/l3fp-aux.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-aux.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -97,8 +97,8 @@
% When used directly without an accessor function, floating points
% should produce an error: this is the role of \cs{@@_chk:w}. We could
% make floating point variables be protected to prevent them from
-% expanding under \texttt{x}-expansion, but it seems more convenient to
-% treat them as a subcase of token list variables.
+% expanding under \texttt{e}/\texttt{x}-expansion, but it seems more
+% convenient to treat them as a subcase of token list variables.
%
% The (decimal part of the) IEEE-754-2008 standard requires the format
% to be able to represent special floating point numbers besides the
@@ -235,7 +235,8 @@
% where \cs{s_@@} is equal to the \TeX{} primitive \tn{relax}, and
% \cs{@@_chk:w} is protected. The rest of the floating point number
% is made of characters (or \tn{relax}). This ensures that nothing
-% expands under \texttt{f}-expansion, nor under \texttt{x}-expansion.
+% expands under \texttt{f}-expansion, nor under
+% \texttt{e}/\texttt{x}-expansion.
% However, when typeset, \cs{s_@@} does nothing, and \cs{@@_chk:w} is
% expanded. We define \cs{@@_chk:w} to produce an error.
% \begin{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3fp-basics.dtx b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
index b79950c267..bba9b9535f 100644
--- a/macros/latex/contrib/l3kernel/l3fp-basics.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-basics.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-convert.dtx b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
index 70983272dd..499e1f2f5f 100644
--- a/macros/latex/contrib/l3kernel/l3fp-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-convert.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-expo.dtx b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
index f0e691f310..a2ff43ef28 100644
--- a/macros/latex/contrib/l3kernel/l3fp-expo.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-expo.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-extended.dtx b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
index e374e7e288..2720891ef3 100644
--- a/macros/latex/contrib/l3kernel/l3fp-extended.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-extended.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-functions.dtx b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
index a899f3493a..55729bbcd8 100644
--- a/macros/latex/contrib/l3kernel/l3fp-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-functions.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -72,7 +72,7 @@
\cs_new_protected:Npn \@@_new_function:n #1
{
\@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { invalid-identifier } {#1} }
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
\cs_if_exist:cT { @@_parse_word_#1:N }
{
@@ -91,12 +91,12 @@
% \begin{macro}
% {\@@_function_set_parsing:Nn, \@@_function_set_parsing_aux:NNn}
% \begin{macrocode}
-\cs_new:Npn \@@_function_set_parsing:Nn #1#2
+\cs_new_protected:Npn \@@_function_set_parsing:Nn #1#2
{
\exp_args:NNc \@@_function_set_parsing_aux:NNn #1
{ @@_parse_word_#2:N } {#2}
}
-\cs_new:Npn \@@_function_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \@@_function_set_parsing_aux:NNn #1#2#3
{
\cs_set:Npe \@@_tmp:w
{
@@ -171,7 +171,7 @@
\cs_new_protected:Npn \@@_set_function:Nnnn #1#2#3#4
{
\@@_id_if_invalid:nTF {#2}
- { \msg_error:nnn { fp } { invalid-identifier } {#2} }
+ { \msg_error:nnn { fp } { id-invalid } {#2} }
{
\cs_if_exist:cF { @@_parse_word_#2:N }
{ \@@_function_set_parsing:Nn \cs_set_eq:NN {#2} }
@@ -180,8 +180,10 @@
\exp_args:No \clist_map_inline:nn { \tl_to_str:n {#3} }
{
\int_incr:N \l_@@_function_arg_int
- \exp_args:Ne \@@_clear_variable:n
- { _ \tex_romannumeral:D \l_@@_function_arg_int }
+ \exp_args:Ne \@@_clear_variable_aux:n
+ {
+ \c_underscore_str \tex_romannumeral:D \l_@@_function_arg_int
+ }
\fp_clear_variable:n {##1}
\cs_set_nopar:cpe { l_@@_variable_##1_fp }
{
@@ -264,8 +266,12 @@
{ \exp_args:No \@@_clear_function:n { \tl_to_str:n {#1} } }
\cs_new_protected:Npn \@@_clear_function:n #1
{
- \cs_undefine:c { @@_parse_word_ #1 :N }
- \@@_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
+ {
+ \cs_set_eq:cN { @@_#1_o:w } \tex_undefine:D
+ \@@_function_set_parsing:Nn \cs_set_eq:NN {#1}
+ }
}
% \end{macrocode}
% \end{macro}
diff --git a/macros/latex/contrib/l3kernel/l3fp-logic.dtx b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
index 5e98d6b62c..edf16c72b2 100644
--- a/macros/latex/contrib/l3kernel/l3fp-logic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-logic.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-parse.dtx b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
index 58fc4f1f2a..e13a671892 100644
--- a/macros/latex/contrib/l3kernel/l3fp-parse.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-parse.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-random.dtx b/macros/latex/contrib/l3kernel/l3fp-random.dtx
index 3cff0bdc1a..5e213c5e4c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-random.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-random.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-round.dtx b/macros/latex/contrib/l3kernel/l3fp-round.dtx
index 901cb5ba34..783a7fd0a3 100644
--- a/macros/latex/contrib/l3kernel/l3fp-round.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-round.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
index 277ecfabf5..29ac5aa07c 100644
--- a/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-symbolic.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -157,8 +157,8 @@
% \begin{macro}[EXP]
% {\@@_if_has_symbolic:nTF, \@@_if_has_symbolic_aux:w}
% Tests if |#1| contains \cs{s_@@_symbolic} at top-level. This test
-% should be precise enough to determine if a given an array contains a
-% symbolic expression or only consists in floating points. Used in
+% should be precise enough to determine if a given array contains a
+% symbolic expression or only consists of floating points. Used in
% \cs{@@_exp_after_symbolic_f:nw}.
% \begin{macrocode}
\cs_new:Npn \@@_if_has_symbolic:nTF #1
@@ -255,9 +255,9 @@
% \@@_&_symbolic_o:ww,
% }
% \begin{macrocode}
-\cs_set:Npn \@@_tmp:w #1#2
+\cs_set_protected:Npn \@@_tmp:w #1#2
{
- \cs_new_nopar:cpn
+ \cs_new:cpn
{ @@_symbolic_#2_symbolic_o:ww }
{ \@@_symbolic_binary_o:Nww #1 }
\cs_new_eq:cc
@@ -277,7 +277,7 @@
%
% \subsection{Applying prefix functions to expressions}
%
-% \begin{macro}[aux, EXP]{\@@_symbolic_unary_o:NNw}
+% \begin{macro}[EXP]{\@@_symbolic_unary_o:NNw}
% Used when applying infix operators to expressions.
% \begin{macrocode}
\cs_new:Npn \@@_symbolic_unary_o:NNw #1#2#3; @
@@ -313,7 +313,7 @@
{not} {sec} {set_sign} {sin} {sqrt} {tan}
}
{
- \cs_new_nopar:cpe { @@_symbolic_#1_o:w }
+ \cs_new:cpe { @@_symbolic_#1_o:w }
{
\exp_not:N \@@_symbolic_unary_o:NNw
\exp_not:c { @@_#1_o:w }
@@ -336,7 +336,7 @@
% \begin{macrocode}
\cs_set_protected:Npn \@@_tmp:w #1#2#3
{
- \cs_new_nopar:cpn { @@_symbolic_to_#1:w }
+ \cs_new:cpn { @@_symbolic_to_#1:w }
{
\exp_after:wN \@@_symbolic_convert:wnnN
\exp:w \exp_end_continue_f:w
@@ -384,7 +384,8 @@
% \begin{macro}[rEXP]
% {
% \@@_symbolic_unary_to_tl:NNw,
-% \@@_symbolic_binary_to_tl:Nww
+% \@@_symbolic_binary_to_tl:Nww,
+% \@@_symbolic_function_to_tl:Nw
% }
% Converting a symbolic expression to a token list is possible.
% \begin{macrocode}
@@ -440,6 +441,7 @@
% loop through letters in |#1|: if it is not a letter, break the loop
% and return \texttt{true}. If the end of the loop is reached
% without finding any non-letter, return \texttt{false}.
+% Note |#1| must be a str (i.e., resulted from \cs{tl_to_str:n}).
% \begin{macrocode}
\prg_new_protected_conditional:Npnn
\@@_id_if_invalid:n #1 { T , F , TF }
@@ -447,10 +449,10 @@
\tl_if_empty:nTF {#1}
{ \prg_return_true: }
{
- \tl_if_in:onTF { \tl_to_str:n {#1} } { ~ }
+ \tl_if_in:nnTF { #1 } { ~ }
{ \prg_return_true: }
{
- \exp_after:wN \@@_id_if_invalid_aux:N \tl_to_str:n {#1}
+ \@@_id_if_invalid_aux:N #1
{ ? \prg_break:n \prg_return_false: }
\prg_break_point:
}
@@ -511,9 +513,9 @@
% \begin{macro}
% {\@@_variable_set_parsing:Nn, \@@_variable_set_parsing_aux:NNn}
% \begin{macrocode}
-\cs_new:Npn \@@_variable_set_parsing:Nn #1#2
+\cs_new_protected:Npn \@@_variable_set_parsing:Nn #1#2
{
- \cs_set_nopar:Npn \@@_tmp:w
+ \cs_set:Npn \@@_tmp:w
{
\@@_exp_after_symbolic_f:nw { \@@_parse_infix:NN }
\s_@@_symbolic \@@_symbolic_chk:w
@@ -522,7 +524,7 @@
\exp_args:NNc \@@_variable_set_parsing_aux:NNn #1
{ @@_parse_word_#2:N } {#2}
}
-\cs_new:Npn \@@_variable_set_parsing_aux:NNn #1#2#3
+\cs_new_protected:Npn \@@_variable_set_parsing_aux:NNn #1#2#3
{
\cs_if_eq:NNF #2 \@@_tmp:w
{
@@ -541,23 +543,32 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\fp_clear_variable:n}
-% \begin{macro}{\@@_clear_variable:n}
+% \begin{macro}
+% {
+% \fp_clear_variable:n,
+% \@@_clear_variable:n, \@@_clear_variable_aux:n
+% }
+% We need local undefining, so have to do it low-level.
+% \cs{@@_clear_variable_aux:n} is needed by \cs{@@_set_function:Nnnn}
+% to skip \cs{@@_id_if_invalid:nTF}.
% \begin{macrocode}
\cs_new_protected:Npn \fp_clear_variable:n #1
{
+ \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} }
+ }
+\cs_new_protected:Npn \@@_clear_variable:n #1
+ {
\@@_id_if_invalid:nTF {#1}
{ \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_clear_variable:n { \tl_to_str:n {#1} } }
+ { \@@_clear_variable_aux:n {#1} }
}
-\cs_new_protected:Npn \@@_clear_variable:n #1
+\cs_new_protected:Npn \@@_clear_variable_aux:n #1
{
- \cs_undefine:c { l_@@_variable_#1_fp }
+ \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D
\@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
}
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
% \begin{macro}{\fp_new_variable:n}
% \begin{macro}{\@@_new_variable:n}
@@ -567,20 +578,22 @@
% \begin{macrocode}
\cs_new_protected:Npn \fp_new_variable:n #1
{
- \@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} } }
+ \exp_args:No \@@_new_variable:n { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \@@_new_variable:n #1
{
- \cs_if_exist:cT { @@_parse_word_#1:N }
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nnn
- { fp } { id-already-defined } {#1}
- \cs_undefine:c { @@_parse_word_#1:N }
- \cs_undefine:c { l_@@_variable_#1_fp }
+ \cs_if_exist:cT { @@_parse_word_#1:N }
+ {
+ \msg_error:nnn
+ { fp } { id-already-defined } {#1}
+ \cs_undefine:c { @@_parse_word_#1:N }
+ \cs_set_eq:cN { l_@@_variable_#1_fp } \tex_undefined:D
+ }
+ \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
- \@@_variable_set_parsing:Nn \cs_gset_eq:NN {#1}
}
% \end{macrocode}
% \end{macro}
@@ -605,24 +618,26 @@
\flag_new:n { @@_symbolic }
\cs_new_protected:Npn \fp_set_variable:nn #1
{
- \@@_id_if_invalid:nTF {#1}
- { \msg_error:nnn { fp } { id-invalid } {#1} }
- { \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} } }
+ \exp_args:No \@@_set_variable:nn { \tl_to_str:n {#1} }
}
\cs_new_protected:Npn \@@_set_variable:nn #1#2
{
- \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
- \fp_set:Nn \l_@@_symbolic_fp {#2}
- \cs_set_nopar:cpn { l_@@_variable_#1_fp }
- { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp }
- \flag_clear:n { @@_symbolic }
- \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp }
- \flag_if_raised:nT { @@_symbolic }
+ \@@_id_if_invalid:nTF {#1}
+ { \msg_error:nnn { fp } { id-invalid } {#1} }
{
- \msg_error:nneee { fp } { id-loop }
- { \tl_to_str:n {#1} }
- { \tl_to_str:n {#2} }
- { \fp_to_tl:N \l_@@_symbolic_fp }
+ \@@_variable_set_parsing:Nn \cs_set_eq:NN {#1}
+ \fp_set:Nn \l_@@_symbolic_fp {#2}
+ \cs_set_nopar:cpn { l_@@_variable_#1_fp }
+ { \flag_ensure_raised:n { @@_symbolic } \c_nan_fp }
+ \flag_clear:n { @@_symbolic }
+ \fp_set:cn { l_@@_variable_#1_fp } { \l_@@_symbolic_fp }
+ \flag_if_raised:nT { @@_symbolic }
+ {
+ \msg_error:nneee { fp } { id-loop }
+ { #1 }
+ { \tl_to_str:n {#2} }
+ { \fp_to_tl:N \l_@@_symbolic_fp }
+ }
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3fp-traps.dtx b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
index 1bdece9ba7..5fec65448d 100644
--- a/macros/latex/contrib/l3kernel/l3fp-traps.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-traps.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
% \maketitle
%
% \begin{documentation}
diff --git a/macros/latex/contrib/l3kernel/l3fp-trig.dtx b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
index c49383a178..8b9b843e2a 100644
--- a/macros/latex/contrib/l3kernel/l3fp-trig.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-trig.dtx
@@ -40,7 +40,7 @@
% {latex-team@latex-project.org}^^A
% }^^A
% }
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp-types.dtx b/macros/latex/contrib/l3kernel/l3fp-types.dtx
index 693cec5ccc..b99be49f16 100644
--- a/macros/latex/contrib/l3kernel/l3fp-types.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp-types.dtx
@@ -42,7 +42,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3fp.dtx b/macros/latex/contrib/l3kernel/l3fp.dtx
index 578d568978..1391e8b758 100644
--- a/macros/latex/contrib/l3kernel/l3fp.dtx
+++ b/macros/latex/contrib/l3kernel/l3fp.dtx
@@ -49,7 +49,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -768,7 +768,8 @@
% \end{syntax}
% Defines the \meta{identifier} to stand in any further expression for
% the result of evaluating the \meta{floating point expression}, with
-% the \meta{identifier} accepting the \meta{vars} (a comma list).
+% the \meta{identifier} accepting the \meta{vars} (a non-empty
+% comma-separated list).
% The result may contain other functions, which are
% then replaced by their results if they have any. For instance,
% \begin{quote}
@@ -1376,10 +1377,10 @@
% \end{syntax}
% Computes the arcsine, arccosine, arccosecant, or arcsecant of the
% \meta{fp expr} and returns the result in degrees, in the range
-% $[-90,90]$ for \texttt{asin} and \texttt{acsc} and $[0,180]$ for
-% \texttt{acos} and \texttt{asec}. For a result in radians, use
-% \texttt{asin}, \emph{etc.} If the argument of |asin| or |acos| lies
-% outside the range $[-1,1]$, or the argument of |acsc| or |asec|
+% $[-90,90]$ for \texttt{asind} and \texttt{acscd} and $[0,180]$ for
+% \texttt{acosd} and \texttt{asecd}. For a result in radians, use
+% \texttt{asin}, \emph{etc.} If the argument of |asind| or |acosd| lies
+% outside the range $[-1,1]$, or the argument of |acscd| or |asecd|
% inside the range $(-1,1)$, an \enquote{invalid operation} exception
% is raised. \enquote{Underflow} and \enquote{overflow} occur when
% appropriate.
@@ -1424,8 +1425,8 @@
% \cs{fp_eval:n} \{ |acotd(| \meta{fp expr} |)| \}
% \cs{fp_eval:n} \{ |acotd(| \meta{fp expr_1} , \meta{fp expr_2} |)| \}
% \end{syntax}
-% Those functions yield an angle in degrees: \texttt{atand} and
-% \texttt{acotd} are their analogs in radians. The one-argument
+% Those functions yield an angle in degrees: \texttt{atan} and
+% \texttt{acot} are their analogs in radians. The one-argument
% versions compute the arctangent or arccotangent of the
% \meta{fp expr}: arctangent takes values in the range $[-90,90]$, and
% arccotangent in the range $[0,180]$. The two-argument arctangent
diff --git a/macros/latex/contrib/l3kernel/l3fparray.dtx b/macros/latex/contrib/l3kernel/l3fparray.dtx
index 36d84a593d..e06c4d39bc 100644
--- a/macros/latex/contrib/l3kernel/l3fparray.dtx
+++ b/macros/latex/contrib/l3kernel/l3fparray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3int.dtx b/macros/latex/contrib/l3kernel/l3int.dtx
index c1dc697e71..b658aedd8d 100644
--- a/macros/latex/contrib/l3kernel/l3int.dtx
+++ b/macros/latex/contrib/l3kernel/l3int.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1035,7 +1035,7 @@
% |=|, |<| or |>| with category code $12$.
% The \cs{else:} branch is optional.
% \begin{texnote}
-% These are both names for the \TeX{} primitive \tn{ifnum}.
+% This is the \TeX{} primitive \tn{ifnum}.
% \end{texnote}
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3intarray.dtx b/macros/latex/contrib/l3kernel/l3intarray.dtx
index cbfdc48666..3d1f4b8b1f 100644
--- a/macros/latex/contrib/l3kernel/l3intarray.dtx
+++ b/macros/latex/contrib/l3kernel/l3intarray.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
index ce3ab20970..9971ab4305 100644
--- a/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
+++ b/macros/latex/contrib/l3kernel/l3kernel-functions.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -101,7 +101,7 @@
% given \meta{specific type} of token list. Produces suitable error
% messages if the \meta{control sequence} does not exist, or if it is
% not a token list variable at all, or if the \meta{control sequence}
-% differs from the result of |x|-expanding \meta{reconstruction}. If
+% differs from the result of |e|-expanding \meta{reconstruction}. If
% all of these tests succeed then the \meta{true code} is run.
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3keys.dtx b/macros/latex/contrib/l3kernel/l3keys.dtx
index 9fea120c91..d5bdf4d969 100644
--- a/macros/latex/contrib/l3kernel/l3keys.dtx
+++ b/macros/latex/contrib/l3kernel/l3keys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1023,12 +1023,12 @@
% all). Spaces are trimmed from the ends of the \meta{key} and \meta{value},
% then one \emph{outer} set of braces is removed from the \meta{key}
% and \meta{value} as part of the processing. If you need exactly the output
-% shown above, you'll need to either \texttt{x}-type or \texttt{e}-type expand
+% shown above, you'll need to either \texttt{e}-type or \texttt{x}-type expand
% the function.
% \begin{texnote}
% The result of each list element is returned within \cs{exp_not:n}, which
% means that the converted input stream does not expand further when
-% appearing in an \texttt{x}-type or \texttt{e}-type argument expansion.
+% appearing in an \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1068,7 +1068,7 @@
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
% converted input stream does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1805,7 +1805,7 @@
% }
% Searching for a property means finding the last |.| in the input,
% and storing the text before and after it. Everything is turned into
-% strings, so there is no problem using an \texttt{x}-type expansion. Since
+% strings, so there is no problem using an \texttt{e}-type expansion. Since
% \cs{@@_trim_spaces:n} will turn its argument into a string anyway, this
% function uses \cs{cs_set_nopar:Npe} instead of \cs{tl_set:Ne} to gain some
% speed.
diff --git a/macros/latex/contrib/l3kernel/l3legacy.dtx b/macros/latex/contrib/l3kernel/l3legacy.dtx
index 78adefa2da..cd483bc1b8 100644
--- a/macros/latex/contrib/l3kernel/l3legacy.dtx
+++ b/macros/latex/contrib/l3kernel/l3legacy.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3luatex.dtx b/macros/latex/contrib/l3kernel/l3luatex.dtx
index c0ec4f69a0..47570a46ac 100644
--- a/macros/latex/contrib/l3kernel/l3luatex.dtx
+++ b/macros/latex/contrib/l3kernel/l3luatex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -244,13 +244,12 @@
% Wrapper around |require'|\meta{module}|'|.
% \begin{macrocode}
\str_new:N \l_@@_err_msg_str
-\cs_generate_variant:Nn \msg_error:nnnn { nnnV }
\cs_new_protected:Npn \lua_load_module:n #1
{
\bool_if:nF { \@@_load_module_p:n { #1 } }
{
\msg_error:nnnV
- { luatex } { module-not-found } { #1 } { \l_@@_err_msg_str }
+ { luatex } { module-not-found } { #1 } \l_@@_err_msg_str
}
}
% \end{macrocode}
diff --git a/macros/latex/contrib/l3kernel/l3msg.dtx b/macros/latex/contrib/l3kernel/l3msg.dtx
index 382aab68dd..57d7f05b3d 100644
--- a/macros/latex/contrib/l3kernel/l3msg.dtx
+++ b/macros/latex/contrib/l3kernel/l3msg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -288,7 +288,7 @@
% message, extra arguments are ignored, or empty arguments added (of
% course the sense of the message may be impaired). The four arguments are
% converted to strings before being added to the message text: the
-% \texttt{x}-type variants should be used to expand material.
+% \texttt{e}-type variants should be used to expand material.
% Note that this expansion takes place with the standard definitions in
% effect, which means that shorthands such as |\~| or |\\| are
% \emph{not} available; instead one should use \cs{iow_char:N} |\~| and
@@ -961,7 +961,7 @@
% \begin{macro}{\@@_interrupt_text:n, \@@_interrupt_more_text:n}
% First setup \TeX{}'s \tn{errhelp} register with the extra help |#1|,
% then build a nice-looking error message with |#2|. Everything is
-% done using \texttt{x}-type expansion as the new line markers are
+% done using \texttt{e}-type expansion as the new line markers are
% different for the two type of text and need to be correctly set up.
% The auxiliary \cs{@@_interrupt_more_text:n} receives its argument
% as a line-wrapped string, which is thus unaffected by expansion.
diff --git a/macros/latex/contrib/l3kernel/l3names.dtx b/macros/latex/contrib/l3kernel/l3names.dtx
index e85262831f..afd91b76b3 100644
--- a/macros/latex/contrib/l3kernel/l3names.dtx
+++ b/macros/latex/contrib/l3kernel/l3names.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3news.pdf b/macros/latex/contrib/l3kernel/l3news.pdf
index b5c1844444..1c2156589f 100644
--- a/macros/latex/contrib/l3kernel/l3news.pdf
+++ b/macros/latex/contrib/l3kernel/l3news.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news01.pdf b/macros/latex/contrib/l3kernel/l3news01.pdf
index 4d0a8ae25d..76d3d67a09 100644
--- a/macros/latex/contrib/l3kernel/l3news01.pdf
+++ b/macros/latex/contrib/l3kernel/l3news01.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news02.pdf b/macros/latex/contrib/l3kernel/l3news02.pdf
index 7342946a43..ddb8613f00 100644
--- a/macros/latex/contrib/l3kernel/l3news02.pdf
+++ b/macros/latex/contrib/l3kernel/l3news02.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news03.pdf b/macros/latex/contrib/l3kernel/l3news03.pdf
index 331b9cf1b4..4ebd7e81c0 100644
--- a/macros/latex/contrib/l3kernel/l3news03.pdf
+++ b/macros/latex/contrib/l3kernel/l3news03.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news04.pdf b/macros/latex/contrib/l3kernel/l3news04.pdf
index b860cf5ff4..9aeaf6e808 100644
--- a/macros/latex/contrib/l3kernel/l3news04.pdf
+++ b/macros/latex/contrib/l3kernel/l3news04.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news05.pdf b/macros/latex/contrib/l3kernel/l3news05.pdf
index 7e616f5a29..64be0087b8 100644
--- a/macros/latex/contrib/l3kernel/l3news05.pdf
+++ b/macros/latex/contrib/l3kernel/l3news05.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news06.pdf b/macros/latex/contrib/l3kernel/l3news06.pdf
index 77334146c0..0c13cd3cc3 100644
--- a/macros/latex/contrib/l3kernel/l3news06.pdf
+++ b/macros/latex/contrib/l3kernel/l3news06.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news07.pdf b/macros/latex/contrib/l3kernel/l3news07.pdf
index 1193adac7e..f003a75d6b 100644
--- a/macros/latex/contrib/l3kernel/l3news07.pdf
+++ b/macros/latex/contrib/l3kernel/l3news07.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news08.pdf b/macros/latex/contrib/l3kernel/l3news08.pdf
index ae70965ba3..fb00f3e886 100644
--- a/macros/latex/contrib/l3kernel/l3news08.pdf
+++ b/macros/latex/contrib/l3kernel/l3news08.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news09.pdf b/macros/latex/contrib/l3kernel/l3news09.pdf
index d9791e7186..85b20e8051 100644
--- a/macros/latex/contrib/l3kernel/l3news09.pdf
+++ b/macros/latex/contrib/l3kernel/l3news09.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news10.pdf b/macros/latex/contrib/l3kernel/l3news10.pdf
index 366041530a..4dfef6f18d 100644
--- a/macros/latex/contrib/l3kernel/l3news10.pdf
+++ b/macros/latex/contrib/l3kernel/l3news10.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news11.pdf b/macros/latex/contrib/l3kernel/l3news11.pdf
index 410448f654..55e13420dc 100644
--- a/macros/latex/contrib/l3kernel/l3news11.pdf
+++ b/macros/latex/contrib/l3kernel/l3news11.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3news12.pdf b/macros/latex/contrib/l3kernel/l3news12.pdf
index 127946bd80..b1c9c79ff8 100644
--- a/macros/latex/contrib/l3kernel/l3news12.pdf
+++ b/macros/latex/contrib/l3kernel/l3news12.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3pdf.dtx b/macros/latex/contrib/l3kernel/l3pdf.dtx
index 9c6172caaf..9380b62220 100644
--- a/macros/latex/contrib/l3kernel/l3pdf.dtx
+++ b/macros/latex/contrib/l3kernel/l3pdf.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.csv b/macros/latex/contrib/l3kernel/l3prefixes.csv
index 8b4ead7bf3..b6f56360ca 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.csv
+++ b/macros/latex/contrib/l3kernel/l3prefixes.csv
@@ -243,6 +243,7 @@ substances,substances,Clemens Niederberger,https://github.com/cgnieder/substance
sys,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2015-09-07,2015-09-08,
tag,l3kernel,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex3.git,https://github.com/latex3/latex3/issues,2019-06-02,2019-06-02,
tasks,tasks,Clemens Niederberger,https://github.com/cgnieder/tasks/,https://github.com/cgnieder/tasks.git,https://github.com/cgnieder/cgnieder/tasks/issues,2013-03-16,2020-04-14,
+tbl,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2023-10-23,2023-10-23,
tblr,tabularray,Jianrui Lyu,https://github.com/lvjr/tabularray,https://github.com/lvjr/tabularray.git,https://github.com/lvjr/tabularray/issues,2022-04-02,2022-04-02,
tcobox,tcolorbox,Thomas F. Sturm,https://github.com/T-F-S/tcolorbox,https://github.com/T-F-S/tcolorbox.git,https://github.com/T-F-S/tcolorbox/issues,2020-02-19,2020-02-19,
template,latex2e,The LaTeX Project,https://www.latex-project.org/latex3.html,https://github.com/latex3/latex2e.git,https://github.com/latex3/latex2e/issues,2021-01-20,2021-03-03,
diff --git a/macros/latex/contrib/l3kernel/l3prefixes.pdf b/macros/latex/contrib/l3kernel/l3prefixes.pdf
index de3f86bdb7..29c821848c 100644
--- a/macros/latex/contrib/l3kernel/l3prefixes.pdf
+++ b/macros/latex/contrib/l3kernel/l3prefixes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3prg.dtx b/macros/latex/contrib/l3kernel/l3prg.dtx
index c676e7343e..f57c433fd6 100644
--- a/macros/latex/contrib/l3kernel/l3prg.dtx
+++ b/macros/latex/contrib/l3kernel/l3prg.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3prop.dtx b/macros/latex/contrib/l3kernel/l3prop.dtx
index 8fb7648af5..320a0b926b 100644
--- a/macros/latex/contrib/l3kernel/l3prop.dtx
+++ b/macros/latex/contrib/l3kernel/l3prop.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -335,8 +335,8 @@
% \cs{prop_get:NnN}.
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{value}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -358,7 +358,7 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded} primitive
% (\cs{exp_not:n}), which means that the key--value list does not expand
-% further when appearing in an \texttt{x}-type or \texttt{e}-type argument expansion.
+% further when appearing in an \texttt{e}-type or \texttt{x}-type argument expansion.
% It also needs exactly two steps of expansion.
% \end{texnote}
% \end{function}
@@ -1258,7 +1258,7 @@
% \meta{value} may contain arbitrary tokens, it is not safe to include
% them in the argument of \cs{@@_split:NnTF}. We thus start by
% storing in \cs{l_@@_internal_tl} tokens which (after
-% \texttt{x}-expansion) encode the key--value pair. This variable can
+% \texttt{e}-expansion) encode the key--value pair. This variable can
% safely be used in \cs{@@_split:NnTF}. If the \meta{key} was absent,
% append the new key--value to the list.
% Otherwise concatenate the extracts |##1|
diff --git a/macros/latex/contrib/l3kernel/l3quark.dtx b/macros/latex/contrib/l3kernel/l3quark.dtx
index d515229582..d5687886f5 100644
--- a/macros/latex/contrib/l3kernel/l3quark.dtx
+++ b/macros/latex/contrib/l3kernel/l3quark.dtx
@@ -31,7 +31,7 @@
% \fi
%
% \title{^^A
-% The \pkg{l3quark} package\\ Quarks^^A
+% The \pkg{l3quark} package\\ Quarks and scan marks^^A
% }
%
% \author{^^A
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3regex.dtx b/macros/latex/contrib/l3kernel/l3regex.dtx
index cd7bd9f33b..c07583f539 100644
--- a/macros/latex/contrib/l3kernel/l3regex.dtx
+++ b/macros/latex/contrib/l3kernel/l3regex.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1090,7 +1090,7 @@
% When actually building the result,
% \begin{itemize}
% \item \tn{toks}\meta{position} holds \meta{tokens} which \texttt{o}-
-% and \texttt{x}-expand to the \meta{position}-th token in the query.
+% and \texttt{e}-expand to the \meta{position}-th token in the query.
% \item \cs{g_@@_balance_intarray} holds the balance of begin-group and
% end-group character tokens which appear before that point in the
% token list.
@@ -1160,12 +1160,12 @@
%
% \begin{macro}{\@@_toks_put_left:Ne}
% \begin{macro}{\@@_toks_put_right:Ne, \@@_toks_put_right:Nn}
-% During the building phase we wish to add \texttt{x}-expanded
+% During the building phase we wish to add \texttt{e}-expanded
% material to \tn{toks}, either to the left or to the right. The
% expansion is done \enquote{by hand} for optimization (these
% operations are used quite a lot). The \texttt{Nn} version of
% \cs{@@_toks_put_right:Ne} is provided because it is more
-% efficient than \texttt{x}-expanding with \cs{exp_not:n}.
+% efficient than \texttt{e}-expanding with \cs{exp_not:n}.
% \begin{macrocode}
\cs_new_protected:Npn \@@_toks_put_left:Ne #1#2
{
@@ -1188,7 +1188,7 @@
% \begin{macro}[rEXP]{\@@_curr_cs_to_str:}
% Expands to the string representation of the token (known to be a
% control sequence) at the current position \cs{l_@@_curr_pos_int}.
-% It should only be used in \texttt{x}-expansion to avoid losing a
+% It should only be used in \texttt{e}/\texttt{x}-expansion to avoid losing a
% leading space.
% \begin{macrocode}
\cs_new:Npn \@@_curr_cs_to_str:
@@ -1705,14 +1705,14 @@
% a string, then read from left to right, interpreting backslashes as
% escaping the next character. Unescaped characters are fed to the
% function \meta{inline~1}, and escaped characters are fed to the function
-% \meta{inline~2} within an \texttt{x}-expansion context (typically those
+% \meta{inline~2} within an \texttt{e}-expansion context (typically those
% functions perform some tests on their argument to decide how to output
% them). The escape sequences |\a|, |\e|, |\f|, |\n|, |\r|, |\t| and
% |\x| are recognized, and those are replaced by the corresponding
% character, then fed to \meta{inline~3}. The result is then left in the
% input stream. Spaces are ignored unless escaped.
%
-% The conversion is done within an \texttt{x}-expanding assignment.
+% The conversion is done within an \texttt{e}-expanding assignment.
%
% \begin{macro}{\@@_escape_use:nnnn}
% The result is built in \cs{l_@@_internal_a_tl}, which is then left
@@ -2393,7 +2393,7 @@
% \begin{macro}{\@@_compile:w, \@@_compile_end:}
% Used when compiling a user regex or a regex for the |\c{...}| escape
% sequence within another regex. Start building a token list within a
-% group (with \texttt{x}-expansion at the outset), and set a few
+% group (with \texttt{e}-expansion at the outset), and set a few
% variables (group level, catcodes), then start the first branch. At
% the end, make sure there are no dangling classes nor groups, close
% the last branch: we are done building \cs{l_@@_internal_regex}.
@@ -3638,7 +3638,7 @@
%
% \begin{macro}[EXP]{\@@_compile_u_loop:NN}
% We collect the characters for the argument of |\u| within an
-% \texttt{x}-expanding assignment. In principle we could just wait to
+% \texttt{e}-expanding assignment. In principle we could just wait to
% encounter a right brace, but this is unsafe: if the right brace was
% missing, then we would reach the end-markers of the regex, and
% continue, leading to obscure fatal errors. Instead, we only allow
@@ -4220,7 +4220,7 @@
\cs_new_protected:Npn \@@_show_item_exact_cs:n #1
{
\seq_set_split:Nnn \l_@@_internal_seq { \scan_stop: } {#1}
- \seq_set_map_x:NNn \l_@@_internal_seq
+ \seq_set_map_e:NNn \l_@@_internal_seq
\l_@@_internal_seq { \iow_char:N\\##1 }
\@@_show_one:n
{ control~sequence~ \seq_use:Nn \l_@@_internal_seq { ~or~ } }
@@ -5363,7 +5363,7 @@
}
\cs_new_protected:Npn \@@_match_once_init_aux:
{
- \tl_build_clear:N \l_@@_matched_analysis_tl
+ \tl_build_begin:N \l_@@_matched_analysis_tl
\tl_clear:N \l_@@_curr_analysis_tl
}
% \end{macrocode}
@@ -5663,7 +5663,7 @@
\l_@@_fresh_thread_bool
\int_set_eq:NN \l_@@_success_pos_int \l_@@_curr_pos_int
\int_set_eq:NN \l_@@_last_char_success_int \l_@@_last_char_int
- \tl_build_clear:N \l_@@_matched_analysis_tl
+ \tl_build_begin:N \l_@@_matched_analysis_tl
\tl_set_eq:NN \l_@@_success_submatches_tl
\l_@@_curr_submatches_tl
\prg_break:
@@ -5748,7 +5748,7 @@
% \cs{exp_not:n} requires a braced argument. As far as I can tell, it
% is only needed if the user tries to include in the replacement text
% a control sequence set equal to a macro parameter character, such as
-% \cs{c_parameter_token}. Indeed, within an \texttt{x}-expanding
+% \cs{c_parameter_token}. Indeed, within an \texttt{e}/\texttt{x}-expanding
% assignment, \cs{exp_not:N}~|#| behaves as a single |#|, whereas
% \cs{exp_not:n}~|{#}| behaves as a doubled |##|.
% \begin{macrocode}
@@ -5774,7 +5774,7 @@
% exclusive. The function \cs{@@_query_range:nn} \Arg{min}
% \Arg{max} unpacks registers from the position \meta{min} to the
% position $\meta{max}-1$ included. Once this is expanded, a second
-% \texttt{x}-expansion results in the actual tokens from the
+% \texttt{e}-expansion results in the actual tokens from the
% query. That second expansion is only done by user functions at the
% very end of their operation, after checking (and correcting) the
% brace balance first.
@@ -6056,9 +6056,7 @@
% Unless the submatch appears inside a |\c{...}| or |\u{...}|
% construction, it must be taken into account in the brace balance.
% Later on, |##1| will be replaced by a pointer to the $0$-th submatch for a
-% given match. There is an \cs{exp_not:N} here as at the point-of-use
-% of \cs{g_@@_balance_tl} there is an \texttt{x}-type expansion which is needed
-% to get |##1| in correctly.
+% given match.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_put_submatch:n #1
{
@@ -6292,7 +6290,7 @@
%
% \begin{macro}{\@@_replacement_c_A:w}
% For an active character, expansion must be avoided, twice because we
-% later do two \texttt{x}-expansions, to unpack \tn{toks} for the
+% later do two \texttt{e}-expansions, to unpack \tn{toks} for the
% query, and to expand their contents to tokens of the query.
% \begin{macrocode}
\char_set_catcode_active:N \^^@
@@ -6305,7 +6303,7 @@
% An explicit begin-group token increases the balance, unless within a
% |\c{...}| or |\u{...}| construction. Add the desired begin-group
% character, using the standard \cs{if_false:} trick. We eventually
-% \texttt{x}-expand twice. The first time must yield a balanced token
+% \texttt{e}-expand twice. The first time must yield a balanced token
% list, and the second one gives the bare begin-group token. The
% \cs{exp_after:wN} is not strictly needed, but is more consistent
% with \pkg{l3tl-analysis}.
@@ -6326,7 +6324,7 @@
% This is not quite catcode-related: when the user requests a
% character with category \enquote{control sequence}, the
% one-character control symbol is returned. As for the active
-% character, we prepare for two \texttt{x}-expansions.
+% character, we prepare for two \texttt{e}-expansions.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replacement_c_C:w #1#2
{
@@ -6347,7 +6345,7 @@
% \end{macro}
%
% \begin{macro}{\@@_replacement_c_E:w}
-% Similar to the begin-group case, the second \texttt{x}-expansion
+% Similar to the begin-group case, the second \texttt{e}-expansion
% produces the bare end-group token.
% \begin{macrocode}
\char_set_catcode_group_end:N \^^@
@@ -6391,7 +6389,7 @@
%
% \begin{macro}{\@@_replacement_c_P:w}
% For macro parameters, expansion is a tricky issue. We need to
-% prepare for two \texttt{x}-expansions and passing through various
+% prepare for two \texttt{e}-expansions and passing through various
% macro definitions. Note that we cannot replace one \cs{exp_not:n} by
% doubling the macro parameter characters because this would misbehave
% if a mischievous user asks for |\c{\cP\#}|, since that macro
@@ -7213,7 +7211,7 @@
% this match; we need to add the tokens from the end of the match to
% the end of the query. Finally, store the result in the user's
% variable after closing the group: this step involves an additional
-% \texttt{x}-expansion, and checks that braces are balanced in the
+% \texttt{e}-expansion, and checks that braces are balanced in the
% final result.
% \begin{macrocode}
\cs_new_protected:Npn \@@_replace_once:nnN #1#2
@@ -7303,7 +7301,7 @@
% \@@_group_end_replace:N, \@@_group_end_replace_try:,
% \@@_group_end_replace_check:w, \@@_group_end_replace_check:n
% }
-% At this stage \cs{l_@@_internal_a_tl} (|x|-expands to the desired
+% At this stage \cs{l_@@_internal_a_tl} (|e|-expands to the desired
% result). Guess from \cs{l_@@_balance_int} the number of braces to
% add before or after the result then try expanding. The simplest
% case is when \cs{l_@@_internal_a_tl} together with the braces we
@@ -7476,7 +7474,7 @@
\@@_single_match:
#1
\@@_match_init:
- \tl_build_clear:N \l_@@_input_tl
+ \tl_build_begin:N \l_@@_input_tl
\@@_match_once_init:
\peek_analysis_map_inline:n
{
@@ -7499,7 +7497,7 @@
% match. For \cs{peek_regex_remove_once:nTF} we reinsert the tokens
% seen only if the match failed; otherwise we just reinsert the
% tokens~|#1|, with one expansion. To be more precise, |#1| consists
-% of tokens that \texttt{o}-expand and \texttt{x}-expand to the last
+% of tokens that \texttt{o}-expand and \texttt{e}-expand to the last
% token seen, for example it is \cs{exp_not:N} \meta{cs} for a control
% sequence. This means that just doing \cs{exp_after:wN}
% \cs{l_@@_peek_true_tl} |#1| would be unsafe because the expansion of
@@ -7661,12 +7659,12 @@
% \begin{macro}{\@@_peek_replacement_put:n}
% While building the replacement function
% \cs{@@_replacement_do_one_match:n}, we often want to put simple
-% material, given as |#1|, whose \texttt{x}-expansion
+% material, given as |#1|, whose \texttt{e}-expansion
% \texttt{o}-expands to a single token. Normally we can just add the
% token to \cs{l_@@_build_tl}, but for
% \cs{peek_regex_replace_once:nnTF} we eventually want to do some
% strange expansion that is basically using \cs{exp_after:wN} to jump
-% through numerous tokens (we cannot use \texttt{x}-expansion like for
+% through numerous tokens (we cannot use \texttt{e}-expansion like for
% \cs{regex_replace_once:nnNTF} because it is ok for the result to be
% unbalanced since we insert it in the input stream rather than
% storing it. When within a csname we don't do any such shenanigan
diff --git a/macros/latex/contrib/l3kernel/l3seq.dtx b/macros/latex/contrib/l3kernel/l3seq.dtx
index 56662dc623..d9ab9ba1dd 100644
--- a/macros/latex/contrib/l3kernel/l3seq.dtx
+++ b/macros/latex/contrib/l3kernel/l3seq.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -327,8 +327,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -342,8 +342,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -740,15 +740,15 @@
% \end{texnote}
% \end{function}
%
-% \begin{function}[added = 2020-07-16]
-% {\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
+% \begin{function}[added = 2020-07-16, updated = 2023-10-26]
+% {\seq_set_map_e:NNn, \seq_gset_map_e:NNn}
% \begin{syntax}
-% \cs{seq_set_map_x:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function}
+% \cs{seq_set_map_e:NNn} \meta{seq~var_1} \meta{seq~var_2} \Arg{inline function}
% \end{syntax}
% Applies \meta{inline function} to every \meta{item} stored
% within the \meta{seq~var_2}. The \meta{inline function} should
% consist of code which will receive the \meta{item} as |#1|.
-% The sequence resulting from \texttt{x}-expanding
+% The sequence resulting from \texttt{e}-expanding
% \meta{inline function} applied to each \meta{item}
% is assigned to \meta{seq~var_1}. As such, the code
% in \meta{inline function} should be expandable.
@@ -796,8 +796,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -821,8 +821,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{items}
-% do not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% do not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1308,14 +1308,14 @@
% spaces the item is enclosed within braces. After
% \cs{tl_replace_all:Nnn}, the token list \cs{l_@@_internal_a_tl}
% is a repetition of the pattern
-% \cs{@@_set_split_auxi:w} \cs{prg_do_nothing:}
+% \cs{@@_set_split:Nw} \cs{prg_do_nothing:}
% \meta{item with spaces} \cs{@@_set_split_end:}.
-% Then, \texttt{x}-expansion causes \cs{@@_set_split_auxi:w}
+% Then, \texttt{e}-expansion causes \cs{@@_set_split:Nw}
% to trim spaces, and leaves its result as
-% \cs{@@_set_split_auxii:w} \meta{trimmed item}
+% \cs{@@_set_split:w} \meta{trimmed item}
% \cs{@@_set_split_end:}. This is then converted
% to the \pkg{l3seq} internal structure by another
-% \texttt{x}-expansion. In the first step, we insert
+% \texttt{e}-expansion. In the first step, we insert
% \cs{prg_do_nothing:} to avoid losing braces too early:
% that would cause space trimming to act within those
% lost braces. The second step is solely there to strip
@@ -1480,7 +1480,7 @@
%
% \begin{macro}{\@@_wrap_item:n}
% This function converts its argument to a proper sequence item
-% in an \texttt{x}-expansion context.
+% in an \texttt{e}-expansion context.
% \begin{macrocode}
\cs_new:Npn \@@_wrap_item:n #1 { \exp_not:n { \@@_item:n {#1} } }
% \end{macrocode}
@@ -1542,15 +1542,15 @@
% items one at a time to an intermediate sequence.
% The approach taken is therefore similar to
% that in \cs{@@_pop_right:NNN}, using a \enquote{flexible}
-% \texttt{x}-type expansion to do most of the work. As \cs{tl_if_eq:nnT}
+% \texttt{e}-type expansion to do most of the work. As \cs{tl_if_eq:nnT}
% is not expandable, a two-part strategy is needed. First, the
-% \texttt{x}-type expansion uses \cs{str_if_eq:nnT} to find potential
+% \texttt{e}-type expansion uses \cs{str_if_eq:nnT} to find potential
% matches. If one is found, the expansion is halted and the necessary
-% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{x}-type
+% set up takes place to use the \cs{tl_if_eq:NNT} test. The \texttt{e}-type
% is started again, including all of the items copied already. This
% happens repeatedly until the entire sequence has been scanned. The code
-% is set up to avoid needing and intermediate scratch list: the lead-off
-% \texttt{x}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
+% is set up to avoid needing an intermediate scratch list: the lead-off
+% \texttt{e}-type expansion (|#1 #2 {#2}|) ensures that nothing is lost.
% \begin{macrocode}
\cs_new_protected:Npn \seq_remove_all:Nn
{ \@@_remove_all_aux:NNn \__kernel_tl_set:Ne }
@@ -1993,7 +1993,7 @@
% use some of the same ideas as getting from the right. What is needed is a
% \enquote{flexible length} way to set a token list variable. This is
% supplied by the |{ \if_false: } \fi:| \ldots
-% |\if_false: { \fi: }| construct. Using an \texttt{x}-type
+% |\if_false: { \fi: }| construct. Using an \texttt{e}-type
% expansion and a \enquote{non-expanding} definition for \cs{@@_item:n},
% the left-most $n - 1$ entries in a sequence of $n$ items are stored
% back in the sequence. That needs a loop of unknown length, hence using the
@@ -2280,7 +2280,7 @@
% }
% \UnitTested
% This is just a specialised version of the in-line mapping function,
-% using an \texttt{x}-type expansion for the code set up so that the
+% using an \texttt{e}-type expansion for the code set up so that the
% number of |#| tokens required is as expected.
% \begin{macrocode}
\cs_new_protected:Npn \seq_map_variable:NNn #1#2#3
@@ -2389,17 +2389,17 @@
% \end{macro}
% \end{macro}
%
-% \begin{macro}{\seq_set_map_x:NNn, \seq_gset_map_x:NNn}
-% \begin{macro}{\@@_set_map_x:NNNn}
+% \begin{macro}{\seq_set_map_e:NNn, \seq_gset_map_e:NNn}
+% \begin{macro}{\@@_set_map_e:NNNn}
% Very similar to \cs{seq_set_filter:NNn}. We could actually
% merge the two within a single function, but it would have weird
% semantics.
% \begin{macrocode}
-\cs_new_protected:Npn \seq_set_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_set:Ne }
-\cs_new_protected:Npn \seq_gset_map_x:NNn
- { \@@_set_map_x:NNNn \__kernel_tl_gset:Ne }
-\cs_new_protected:Npn \@@_set_map_x:NNNn #1#2#3#4
+\cs_new_protected:Npn \seq_set_map_e:NNn
+ { \@@_set_map_e:NNNn \__kernel_tl_set:Ne }
+\cs_new_protected:Npn \seq_gset_map_e:NNn
+ { \@@_set_map_e:NNNn \__kernel_tl_gset:Ne }
+\cs_new_protected:Npn \@@_set_map_e:NNNn #1#2#3#4
{
\@@_push_item_def:n { \exp_not:N \@@_item:n {#4} }
#1 #2 { #3 }
@@ -2411,7 +2411,7 @@
%
% \begin{macro}{\seq_set_map:NNn, \seq_gset_map:NNn}
% \begin{macro}{\@@_set_map:NNNn}
-% Similar to \cs{seq_set_map_x:NNn}, but prevents expansion of the
+% Similar to \cs{seq_set_map_e:NNn}, but prevents expansion of the
% <inline function>.
% \begin{macrocode}
\cs_new_protected:Npn \seq_set_map:NNn
diff --git a/macros/latex/contrib/l3kernel/l3skip.dtx b/macros/latex/contrib/l3kernel/l3skip.dtx
index 3130ef8597..9dd5b3cbed 100644
--- a/macros/latex/contrib/l3kernel/l3skip.dtx
+++ b/macros/latex/contrib/l3kernel/l3skip.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -907,7 +907,7 @@
% Inserts a horizontal \meta{skip} into the current list.
% The argument can also be a \meta{dim}.
% \begin{texnote}
-% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip} renamed.
+% \cs{skip_horizontal:N} is the \TeX{} primitive \tn{hskip}.
% \end{texnote}
% \end{function}
%
@@ -920,7 +920,7 @@
% Inserts a vertical \meta{skip} into the current list.
% The argument can also be a \meta{dim}.
% \begin{texnote}
-% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip} renamed.
+% \cs{skip_vertical:N} is the \TeX{} primitive \tn{vskip}.
% \end{texnote}
% \end{function}
%
diff --git a/macros/latex/contrib/l3kernel/l3sort.dtx b/macros/latex/contrib/l3kernel/l3sort.dtx
index 0a987712f3..a82fa5c16f 100644
--- a/macros/latex/contrib/l3kernel/l3sort.dtx
+++ b/macros/latex/contrib/l3kernel/l3sort.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3str-convert.dtx b/macros/latex/contrib/l3kernel/l3str-convert.dtx
index c4fc416d42..a36a77ec18 100644
--- a/macros/latex/contrib/l3kernel/l3str-convert.dtx
+++ b/macros/latex/contrib/l3kernel/l3str-convert.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -345,7 +345,7 @@
%
% \begin{variable}{str_byte, str_error}
% Conversions from one \meta{encoding}/\meta{escaping} pair to another
-% are done within \texttt{x}-expanding assignments. Errors are
+% are done within \texttt{e}-expanding assignments. Errors are
% signalled by raising the relevant flag.
% \begin{macrocode}
\flag_new:n { str_byte }
@@ -979,7 +979,7 @@
% non-Unicode-aware engines we use a fall-back character |?| rather
% than nothing when given a character code outside $[0,255]$. We
% detect the presence of bad characters using a flag and only produce
-% a single error after the \texttt{x}-expanding assignment.
+% a single error after the \texttt{e}-expanding assignment.
% \begin{macrocode}
\bool_lazy_any:nTF
{
@@ -2515,7 +2515,7 @@
% its second argument (expanded or not). It sets \cs{@@_tmp:w} to
% expand to the character code of either of its two arguments
% depending on endianness, then triggers the \texttt{_loop} auxiliary
-% inside an \texttt{x}-expanding assignment to \cs{g_@@_result_tl}.
+% inside an \texttt{e}-expanding assignment to \cs{g_@@_result_tl}.
%
% The \texttt{_loop} auxiliary first checks for the end-of-string
% marker \cs{s_@@_stop}, calling the \texttt{_end} auxiliary if
diff --git a/macros/latex/contrib/l3kernel/l3str.dtx b/macros/latex/contrib/l3kernel/l3str.dtx
index 99c0f980a5..6aca45dae0 100644
--- a/macros/latex/contrib/l3kernel/l3str.dtx
+++ b/macros/latex/contrib/l3kernel/l3str.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -1036,7 +1036,7 @@
% simplified version of the token list code because neither the
% delimiter nor the replacement can contain macro parameters or
% braces. The delimiter \cs{s_@@_mark} cannot appear in the string to
-% edit so it is used in all cases. Some |x|-expansion is unnecessary.
+% edit so it is used in all cases. Some |e|-expansion is unnecessary.
% There is no need to avoid losing braces nor to protect against
% expansion. The ending code is much simplified and does not need to
% hide in braces.
@@ -1266,7 +1266,7 @@
{ \@@_case:nw {#1} #2 {#1} { } \s_@@_mark {#3} \s_@@_mark {#4} \s_@@_stop }
\cs_generate_variant:Nn \str_case:nn { V , o , e , nV , nv }
\prg_generate_conditional_variant:Nnn \str_case:nn
- { V , o , nV , nv } { T , F , TF }
+ { V , o , e , nV , nv } { T , F , TF }
\cs_new_eq:NN \str_case:Nn \str_case:Vn
\cs_new_eq:NN \str_case:NnT \str_case:VnT
\cs_new_eq:NN \str_case:NnF \str_case:VnF
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.pdf b/macros/latex/contrib/l3kernel/l3styleguide.pdf
index 945554d2f4..fdaafb1a43 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.pdf
+++ b/macros/latex/contrib/l3kernel/l3styleguide.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3styleguide.tex b/macros/latex/contrib/l3kernel/l3styleguide.tex
index 995a5d3668..704fc29a32 100644
--- a/macros/latex/contrib/l3kernel/l3styleguide.tex
+++ b/macros/latex/contrib/l3kernel/l3styleguide.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\begin{document}
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
index f2db75a12a..1fd86e3b60 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3syntax-changes.tex b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
index d93e7bc8dc..e9a9840a5f 100644
--- a/macros/latex/contrib/l3kernel/l3syntax-changes.tex
+++ b/macros/latex/contrib/l3kernel/l3syntax-changes.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3sys.dtx b/macros/latex/contrib/l3kernel/l3sys.dtx
index 577e4daa19..65c64f4da3 100644
--- a/macros/latex/contrib/l3kernel/l3sys.dtx
+++ b/macros/latex/contrib/l3kernel/l3sys.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -54,7 +54,7 @@
% \begin{variable}[added = 2015-09-19, updated = 2019-10-27]{\c_sys_jobname_str}
% Constant that gets the \enquote{job name} assigned when \TeX{} starts.
% \begin{texnote}
-% This copies the contents of the primitive \tn{jobname}. For technical
+% This is the \TeX{} primitive \tn{jobname}. For technical
% reasons, the string here is not of the same internal form as other,
% but may be manipulated using normal string functions.
% \end{texnote}
@@ -73,7 +73,8 @@
% The date and time at which the current job was started: these are
% all reported as integers.
% \begin{texnote}
-% Whilst the underlying primitives can be altered by the user, this
+% Whilst the underlying \TeX{} primitives \tn{time}, \tn{day}, \tn{month},
+% and~\tn{year} can be altered by the user, this
% interface to the time and date is intended to be the \enquote{real}
% values.
% \end{texnote}
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.pdf b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
index ffdbc76f29..1bb44c049e 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.pdf
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/l3term-glossary.tex b/macros/latex/contrib/l3kernel/l3term-glossary.tex
index 25a510d9e6..03ec043f69 100644
--- a/macros/latex/contrib/l3kernel/l3term-glossary.tex
+++ b/macros/latex/contrib/l3kernel/l3term-glossary.tex
@@ -32,7 +32,7 @@ The released version of this bundle is available from CTAN.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\newcommand{\TF}{\textit{(TF)}}
diff --git a/macros/latex/contrib/l3kernel/l3text-case.dtx b/macros/latex/contrib/l3kernel/l3text-case.dtx
index e34e9043a5..7c4eca5178 100644
--- a/macros/latex/contrib/l3kernel/l3text-case.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-case.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -192,8 +192,12 @@
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnw}
% \begin{macro}[EXP]{\@@_change_case_lower_sigma:nnnnN}
+% \begin{macro}[EXP]
+% {
+% \@@_change_case_codepoint_title_auxi:nnnn ,
+% \@@_change_case_codepoint_title_auxii:nnnn
+% }
% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnn}
-% \begin{macro}[EXP]{\@@_change_case_codepoint_title:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_codepoint:nnnnn}
% \begin{macro}[EXP]{\@@_change_case_codepoint:nn}
% \begin{macro}[EXP]
@@ -695,40 +699,39 @@
\@@_change_case_loop:nnnw {#2} {#3} {#4} #5
}
% \end{macrocode}
-% For titlecasing, we need to fully expand the new character to see if it
-% is a letter (or active).
+% For titlecasing, we need to obtain the general category of the current
+% codepoint.
% \begin{macrocode}
\cs_new:Npn \@@_change_case_codepoint_title:nnnn #1#2#3#4
{
\bool_if:NTF \l_text_titlecase_check_letter_bool
{
- \tl_if_single:nTF {#4}
+ \exp_args:Ne \@@_change_case_codepoint_title_auxi:nnnn
{
- \bool_lazy_or:nnTF
- { \token_if_letter_p:N #4 }
- {
- \bool_lazy_and_p:nn
- { \token_if_active_p:N #4 }
- { ! \int_compare_p:nNn {`#4} < { "80 } }
- }
- { \@@_change_case_codepoint_title:nnn }
- { \@@_change_case_codepoint_title:nnnnn { title } {#1} }
+ \codepoint_to_category:n
+ { \@@_codepoint_from_chars:Nw #4 }
}
- { \@@_change_case_codepoint_title:nnn }
}
{ \@@_change_case_codepoint_title:nnn }
{#2} {#3} {#4}
}
+\cs_new:Npn \@@_change_case_codepoint_title_auxi:nnnn #1#2#3#4
+ {
+ \tl_if_head_eq_charcode:nNTF {#1} { L }
+ { \@@_change_case_codepoint_title:nnn }
+ { \@@_change_case_codepoint_title_auxii:nnnn { title } }
+ {#2} {#3} {#4}
+ }
\cs_new:Npn \@@_change_case_codepoint_title:nnn #1#2#3
- { \@@_change_case_codepoint_title:nnnnn { title } { end } {#1} {#2} {#3} }
-\cs_new:Npn \@@_change_case_codepoint_title:nnnnn #1#2#3#4#5
+ { \@@_change_case_codepoint_title_auxii:nnnn { end } {#1} {#2} {#3} }
+\cs_new:Npn \@@_change_case_codepoint_title_auxii:nnnn #1#2#3#4
{
- \cs_if_exist_use:cF { @@_change_case_title_ #4 :nnnnn }
+ \cs_if_exist_use:cF { @@_change_case_title_ #3 :nnnnn }
{
- \cs_if_exist_use:cF { @@_change_case_upper_ #4 :nnnnn }
+ \cs_if_exist_use:cF { @@_change_case_upper_ #3 :nnnnn }
{ \@@_change_case_codepoint:nnnnn }
}
- {#1} {#2} {#3} {#4} {#5}
+ { title } {#1} {#2} {#3} {#4}
}
\cs_new:Npn \@@_change_case_codepoint:nnnnn #1#2#3#4#5
{
diff --git a/macros/latex/contrib/l3kernel/l3text-map.dtx b/macros/latex/contrib/l3kernel/l3text-map.dtx
index d863e51ace..4399853c15 100644
--- a/macros/latex/contrib/l3kernel/l3text-map.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-map.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text-purify.dtx b/macros/latex/contrib/l3kernel/l3text-purify.dtx
index 5770853cd7..afd0e6b850 100644
--- a/macros/latex/contrib/l3kernel/l3text-purify.dtx
+++ b/macros/latex/contrib/l3kernel/l3text-purify.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/l3text.dtx b/macros/latex/contrib/l3kernel/l3text.dtx
index ea33b58855..131084f832 100644
--- a/macros/latex/contrib/l3kernel/l3text.dtx
+++ b/macros/latex/contrib/l3kernel/l3text.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -188,13 +188,12 @@
% \end{itemize}
%
% Determining whether non-letter characters at the start of text should count
-% as the uppercase element is controllable. When \cs{l_text_titlecase_check_letter_bool} is
-% \texttt{true}, characters which are not letters (category code~$11$) are
-% \enquote{skipped}: the first \emph{letter} is uppercased.
-% (With $8$-bit engines, this is extended to active characters which form
-% part of a multi-byte letter codepoint.) When
-% \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first
-% character is uppercased, irrespective of the category code of the character.
+% as the uppercase element is controllable. When
+% \cs{l_text_titlecase_check_letter_bool} is \texttt{true}, codepoints which are
+% not letters (Unicode general category \texttt{L}) are not changed, and only
+% the first \emph{letter} is uppercased.
+% When \cs{l_text_titlecase_check_letter_bool} is \texttt{false}, the first
+% codepoint is uppercased, irrespective of the general code of the character.
%
% \begin{function}[added = 2022-07-04]
% {
diff --git a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
index 6336b0d076..2ad8d9b9f9 100644
--- a/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl-analysis.dtx
@@ -44,7 +44,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -61,7 +61,7 @@
% \meta{token}:
% \begin{itemize}
% \item \meta{tokens}, which both \texttt{o}-expand and
-% \texttt{x}-expand to the \meta{token}. The detailed form of
+% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of
% \meta{tokens} may change in later releases.
% \item \meta{char code}, a decimal representation of the character
% code of the \meta{token}, $-1$ if it is a control sequence.
@@ -132,7 +132,7 @@
% We thus need a way to encode any \meta{token} (even begin-group and
% end-group character tokens) in a way amenable to manipulating tokens
% individually. The best we can do is to find \meta{tokens} which both
-% \texttt{o}-expand and \texttt{x}-expand to the given
+% \texttt{o}-expand and \texttt{e}/\texttt{x}-expand to the given
% \meta{token}. Collecting more information about the category code and
% character code is also useful for regular expressions, since most
% regexes are catcode-agnostic. The internal format thus takes the form
@@ -140,7 +140,7 @@
% \begin{quote}
% \meta{tokens} \cs{s_@@} \meta{catcode} \meta{char code} \cs{s_@@}
% \end{quote}
-% The \meta{tokens} \texttt{o}- \emph{and} \texttt{x}-expand to the
+% The \meta{tokens} \texttt{o}- \emph{and} \texttt{e}/\texttt{x}-expand to the
% original token in the token list or to the cluster of tokens
% corresponding to one Unicode character in the given encoding (for
% \pkg{l3str-convert}). The \meta{catcode} is given as a single hexadecimal
@@ -155,7 +155,7 @@
% converting from a general token list to the internal format.
%
% The current rule for converting a \meta{token} to a balanced set of
-% \meta{tokens} which both \texttt{o}-expands and \texttt{x}-expands to
+% \meta{tokens} which both \texttt{o}-expands and \texttt{e}/\texttt{x}-expands to
% it is the following.
% \begin{itemize}
% \item A control sequence |\cs| becomes |\exp_not:n { \cs }|
@@ -189,7 +189,7 @@
% then need to control expansion much more carefully: compare
% \cs{int_value:w} |`#1| \cs{s_@@} with \cs{int_value:w} |`#1|
% \cs{exp_stop_f:} \cs{exp_not:N} \cs{q_mark} to extract a character
-% code followed by the delimiter in an \texttt{x}-expansion.
+% code followed by the delimiter in an \texttt{e}-expansion.
% \begin{macrocode}
\scan_new:N \s_@@
% \end{macrocode}
@@ -350,7 +350,7 @@
% (\texttt{N}-type) argument by \TeX{}. The plan is to have a two pass
% system. In the first pass, locate special tokens, and store them in
% various \tn{toks} registers. In the second pass, which is done within
-% an \texttt{x}-expanding assignment, normal tokens are taken in as
+% an \texttt{e}-expanding assignment, normal tokens are taken in as
% \texttt{N}-type arguments, and special tokens are retrieved from the
% \tn{toks} registers, and removed from the input stream by some means.
% The whole process takes linear time, because we avoid building the
@@ -830,7 +830,7 @@
% while a control sequence is always longer (we have set the escape
% character to a printable value). In both cases, we leave
% \cs{exp_not:n} \Arg{token} \cs{s_@@} in the input stream
-% (after \texttt{x}-expansion). Here, \cs{exp_not:n} is used
+% (after \texttt{e}-expansion). Here, \cs{exp_not:n} is used
% rather than \cs{exp_not:N} because |#3| could be
% a macro parameter character or could be \cs{s_@@}
% (which must be hidden behind braces in the result).
@@ -937,7 +937,7 @@
% Check now whether we reached the end (we shouldn't keep the trailing
% end-group character that marked the end of the token list in the
% first pass).
-% Unpack the \tn{toks} register: when \texttt{x}-expanding again,
+% Unpack the \tn{toks} register: when \texttt{e}/\texttt{x}-expanding again,
% we will get the special token.
% Then leave the category code in the input stream, followed by
% the character code, and call \cs{@@_analysis_b_loop:w} with the next index.
@@ -1069,7 +1069,7 @@
% \end{macro}
%
% \begin{macro}[rEXP]{\@@_analysis_show:, \@@_analysis_show_loop:wNw}
-% Here, |#1| \texttt{o}- and \texttt{x}-expands to the token;
+% Here, |#1| \texttt{o}- and \texttt{e}/\texttt{x}-expands to the token;
% |#2| is the category code (one uppercase hexadecimal digit),
% $0$ for control sequences;
% |#3| is the character code, which we ignore.
@@ -1390,7 +1390,7 @@
% characters to anything else than character code~$32$), then we apply
% \cs{@@_analysis_b_char:Nn}, which detects active characters by
% comparing them to \cs{tex_undefined:D}, and we must have undefined
-% the active space for this test to work ---we use an |x|-expanding
+% the active space for this test to work ---we use an |e|-expanding
% assignment to get the active space in the right place. Finally
% \cs{@@_peek_analysis_char:w} puts the arguments in the correct
% order, including \cs{exp_not:n} for macro parameter characters and
@@ -1549,7 +1549,7 @@
% character code. In the latter two cases we call
% \cs{char_generate:nn} with suitable arguments and put suitable
% \cs{if_false:} \cs{fi:} constructions to make the result balanced
-% and such that \texttt{o}-expanding or \texttt{x}-expanding gives
+% and such that \texttt{o}-expanding or \texttt{e}/\texttt{x}-expanding gives
% back a single (unbalanced) begin-group or end-group character.
% \begin{macrocode}
\cs_new_protected:Npn \@@_peek_analysis_explicit:n #1
diff --git a/macros/latex/contrib/l3kernel/l3tl-build.dtx b/macros/latex/contrib/l3kernel/l3tl-build.dtx
new file mode 100644
index 0000000000..08eb31e1b2
--- /dev/null
+++ b/macros/latex/contrib/l3kernel/l3tl-build.dtx
@@ -0,0 +1,329 @@
+% \iffalse meta-comment
+%
+%% File: l3tl-build.dtx
+%
+% Copyright (C) 2018-2023 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
+%
+% This file is part of the "l3kernel bundle" (The Work in LPPL)
+% and all files in that bundle must be distributed together.
+%
+% -----------------------------------------------------------------------
+%
+% The development version of the bundle can be found at
+%
+% https://github.com/latex3/latex3
+%
+% for those people who are interested.
+%
+%<*driver>
+\documentclass[full,kernel]{l3doc}
+\begin{document}
+ \DocInput{\jobname.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% \title{^^A
+% The \textsf{l3tl-build} package\\ Piecewise \texttt{tl} constructions^^A
+% }
+%
+% \author{^^A
+% The \LaTeX{} Project\thanks
+% {^^A
+% E-mail:
+% \href{mailto:latex-team@latex-project.org}
+% {latex-team@latex-project.org}^^A
+% }^^A
+% }
+%
+% \date{Released 2023-11-01}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+% \section{Constructing \meta{tl~var} by accumulation}
+%
+% When creating a \meta{tl~var} by accumulation of many tokens, the performance
+% available using a combination of \cs{tl_set:Nn} and \cs{tl_put_right:Nn} or
+% similar begins to become an issue. To address this, a set of functions are
+% available to \enquote{build} a \meta{tl~var}. The performance of this approach
+% is much more efficient than the standard \cs{tl_put_right:Nn}, but the
+% constructed token list cannot be accessed during construction other than
+% by methods provided in this section.
+%
+% \begin{function}[added = 2018-04-01]{\tl_build_begin:N, \tl_build_gbegin:N}
+% \begin{syntax}
+% \cs{tl_build_begin:N} \meta{tl~var}
+% \end{syntax}
+% Clears the \meta{tl~var} and sets it up to support other
+% \cs[no-index]{tl_build_\ldots{}} functions. Until \cs{tl_build_end:N}
+% \meta{tl~var} is called, applying any function from \pkg{l3tl} other
+% than \cs[no-index]{tl_build_\ldots{}} will lead to incorrect
+% results. The |begin| and |gbegin| functions must be used for local
+% and global \meta{tl~var} respectively.
+% \end{function}
+%
+% \begin{function}[added = 2018-04-01]
+% {
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne,
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne
+% }
+% \begin{syntax}
+% \cs{tl_build_put_left:Nn} \meta{tl~var} \Arg{tokens}
+% \cs{tl_build_put_right:Nn} \meta{tl~var} \Arg{tokens}
+% \end{syntax}
+% Adds \meta{tokens} to the left or right side of the current contents
+% of \meta{tl~var}. The \meta{tl~var} must have been set up with
+% \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}. The |put| and
+% |gput| functions must be used for local and global \meta{tl~var}
+% respectively. The |right| functions are about twice faster than the
+% |left| functions.
+% \end{function}
+%
+% \begin{function}[added = 2018-04-01]{\tl_build_end:N, \tl_build_gend:N}
+% \begin{syntax}
+% \cs{tl_build_end:N} \meta{tl~var}
+% \end{syntax}
+% Gets the contents of \meta{tl~var} and stores that into the
+% \meta{tl~var} using \cs{tl_set:Nn} or \cs{tl_gset:Nn}.
+% The \meta{tl~var} must have
+% been set up with \cs{tl_build_begin:N} or \cs{tl_build_gbegin:N}.
+% The |end| and |gend| functions must be used for local and global
+% \meta{tl~var} respectively. These functions completely remove the
+% setup code that enabled \meta{tl~var} to be used for other
+% \cs[no-index]{tl_build_\ldots{}} functions. After the action of
+% |end|/|gend|, the \meta{tl~var} may be manipulated using standard
+% \texttt{tl} functions.
+% \end{function}
+%
+% \end{documentation}
+%
+% \begin{implementation}
+%
+% \section{\pkg{l3tl-build} implementation}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macrocode}
+%<@@=tl>
+% \end{macrocode}
+%
+% Between \cs{tl_build_begin:N} \meta{tl~var} and \cs{tl_build_end:N}
+% \meta{tl~var}, the \meta{tl~var} has the structure
+% \begin{quote}
+% \cs{exp_end:} \ldots{} \cs{exp_end:} \cs{@@_build_last:NNn}
+% \meta{assignment} \meta{next~tl} \Arg{left} \meta{right}
+% \end{quote}
+% where \meta{right} is not braced. The \enquote{data} it represents is
+% \meta{left} followed by the \enquote{data} of \meta{next~tl} followed
+% by \meta{right}. The \meta{next~tl} is a token list variable whose
+% name is that of \meta{tl~var} followed by~|'|. There are between $0$
+% and $4$ \cs{exp_end:} to keep track of when \meta{left} and
+% \meta{right} should be put into the \meta{next~tl}. The
+% \meta{assignment} is \cs{cs_set_nopar:Npe} if the variable is local,
+% and \cs{cs_gset_nopar:Npe} if it is global.
+%
+% \begin{macro}{\tl_build_begin:N, \tl_build_gbegin:N}
+% \begin{macro}{\@@_build_begin:NN, \@@_build_begin:NNN}
+% First construct the \meta{next~tl}: using a prime here conflicts
+% with the usual \pkg{expl3} convention but we need a name that can be
+% derived from |#1| without any external data such as a counter.
+% Empty that \meta{next~tl} and setup the structure. The local and
+% global versions only differ by a single function
+% \cs[no-index]{cs_(g)set_nopar:Npe} used for all assignments: this is
+% important because only that function is stored in the \meta{tl~var}
+% and \meta{next~tl} for subsequent assignments. In principle
+% \cs{@@_build_begin:NNN} could use \cs[no-index]{tl_(g)clear_new:N}
+% to empty |#1| and make sure it is defined, but logging the
+% definition does not seem useful so we just do |#3| |#1| |{}| to
+% clear it locally or globally as appropriate.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_begin:N #1
+ { \@@_build_begin:NN \cs_set_nopar:Npe #1 }
+\cs_new_protected:Npn \tl_build_gbegin:N #1
+ { \@@_build_begin:NN \cs_gset_nopar:Npe #1 }
+\cs_new_protected:Npn \@@_build_begin:NN #1#2
+ { \exp_args:Nc \@@_build_begin:NNN { \cs_to_str:N #2 ' } #2 #1 }
+\cs_new_protected:Npn \@@_build_begin:NNN #1#2#3
+ {
+ #3 #1 { }
+ #3 #2
+ {
+ \exp_not:n { \exp_end: \exp_end: \exp_end: \exp_end: }
+ \exp_not:n { \@@_build_last:NNn #3 #1 { } }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \tl_build_put_right:Nn, \tl_build_put_right:Ne, \tl_build_put_right:Nx,
+% \tl_build_gput_right:Nn, \tl_build_gput_right:Ne, \tl_build_gput_right:Nx
+% }
+% \begin{macro}{\@@_build_last:NNn}
+% \begin{macro}{\@@_build_put:nn}
+% \begin{macro}{\@@_build_put:nw}
+% Similar to \cs{tl_put_right:Nn}, but apply \cs{exp:w} to |#1|. Most
+% of the time this just removes one \cs{exp_end:}. When there are
+% none left, \cs{@@_build_last:NNn} is expanded instead. It resets
+% the definition of the \meta{tl~var} by ending the \cs{exp_not:n} and
+% the definition early. Then it makes sure the \meta{next~tl} (its
+% argument |#1|) is set-up and starts a new definition. Then
+% \cs{@@_build_put:nn} and \cs{@@_build_put:nw} place the \meta{left}
+% part of the original \meta{tl~var} as appropriate for the definition
+% of the \meta{next~tl} (the \meta{right} part is left in the right
+% place without ever becoming a macro argument). We use
+% \cs{exp_after:wN} rather than some \cs{exp_args:No} to avoid reading
+% arguments that are likely very long token lists. We use
+% \cs[no-index]{cs_(g)set_nopar:Npe} rather than
+% \cs[no-index]{tl_(g)set:Ne} partly for the same reason and partly
+% because the assignments are interrupted by brace tricks, which
+% implies that the assignment does not simply set the token list to an
+% |e|-expansion of the second argument.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_put_right:Nn #1#2
+ {
+ \cs_set_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_put_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_right:Nn #1#2
+ {
+ \cs_gset_nopar:Npe #1
+ { \__kernel_exp_not:w \exp_after:wN { \exp:w #1 #2 } }
+ }
+\cs_generate_variant:Nn \tl_build_gput_right:Nn { Ne , Nx }
+\cs_new_protected:Npn \@@_build_last:NNn #1#2
+ {
+ \if_false: { { \fi:
+ \exp_end: \exp_end: \exp_end: \exp_end: \exp_end:
+ \@@_build_last:NNn #1 #2 { }
+ }
+ }
+ \if_meaning:w \c_empty_tl #2
+ \@@_build_begin:NN #1 #2
+ \fi:
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \if_false: } } \fi:
+ \exp_after:wN \@@_build_put:nn \exp_after:wN {#2}
+ }
+\cs_new_protected:Npn \@@_build_put:nn #1#2 { \@@_build_put:nw {#2} #1 }
+\cs_new_protected:Npn \@@_build_put:nw #1#2 \@@_build_last:NNn #3#4#5
+ { #2 \@@_build_last:NNn #3 #4 { #1 #5 } }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \tl_build_put_left:Nn, \tl_build_put_left:Ne, \tl_build_put_left:Nx,
+% \tl_build_gput_left:Nn, \tl_build_gput_left:Ne, \tl_build_gput_left:Nx
+% }
+% \begin{macro}{\@@_build_put_left:NNn}
+% See \cs{tl_build_put_right:Nn} for all the machinery. We could
+% easily provide \cs[no-index]{tl_build_put_left_right:Nnn}, by just
+% adding the \meta{right} material after the \Arg{left} in the
+% |e|-expanding assignment.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_put_left:Nn #1
+ { \@@_build_put_left:NNn \cs_set_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_put_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \tl_build_gput_left:Nn #1
+ { \@@_build_put_left:NNn \cs_gset_nopar:Npe #1 }
+\cs_generate_variant:Nn \tl_build_gput_left:Nn { Ne , Nx }
+\cs_new_protected:Npn \@@_build_put_left:NNn #1#2#3
+ {
+ #1 #2
+ {
+ \__kernel_exp_not:w \exp_after:wN
+ {
+ \exp:w \exp_after:wN \@@_build_put:nn
+ \exp_after:wN {#2} {#3}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\tl_build_end:N, \tl_build_gend:N}
+% \begin{macro}{\@@_build_end_loop:NN}
+% Get the data then clear the \meta{next~tl} recursively until finding
+% an empty one. It is perhaps wasteful to repeatedly use
+% \cs{cs_to_str:N}. The local/global scope is checked by
+% \cs{tl_set:Ne} or \cs{tl_gset:Ne}.
+% \begin{macrocode}
+\cs_new_protected:Npn \tl_build_end:N #1
+ {
+ \@@_build_get:NNN \__kernel_tl_set:Ne #1 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_clear:N
+ }
+\cs_new_protected:Npn \tl_build_gend:N #1
+ {
+ \@@_build_get:NNN \__kernel_tl_gset:Ne #1 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } \tl_gclear:N
+ }
+\cs_new_protected:Npn \@@_build_end_loop:NN #1#2
+ {
+ \if_meaning:w \c_empty_tl #1
+ \exp_after:wN \use_none:nnnnnn
+ \fi:
+ #2 #1
+ \exp_args:Nc \@@_build_end_loop:NN { \cs_to_str:N #1 ' } #2
+ }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@@_build_get:NNN}
+% \begin{macro}{\@@_build_get:w, \@@_build_get_end:w}
+% The idea is to expand the \meta{tl~var} then the \meta{next~tl} and
+% so on, all within an |e|-expanding assignment, and wrap as
+% appropriate in \cs{exp_not:n}. The various \meta{left} parts are
+% left in the assignment as we go, which enables us to expand the
+% \meta{next~tl} at the right place. The various \meta{right} parts
+% are eventually picked up in one last \cs{exp_not:n}, with a brace
+% trick to wrap all the \meta{right} parts together.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_build_get:NNN #1#2#3
+ { #1 #3 { \if_false: { \fi: \exp_after:wN \@@_build_get:w #2 } } }
+\cs_new:Npn \@@_build_get:w #1 \@@_build_last:NNn #2#3#4
+ {
+ \exp_not:n {#4}
+ \if_meaning:w \c_empty_tl #3
+ \exp_after:wN \@@_build_get_end:w
+ \fi:
+ \exp_after:wN \@@_build_get:w #3
+ }
+\cs_new:Npn \@@_build_get_end:w #1#2#3
+ { \__kernel_exp_not:w \exp_after:wN { \if_false: } \fi: }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \end{implementation}
+%
+% \PrintIndex
diff --git a/macros/latex/contrib/l3kernel/l3tl.dtx b/macros/latex/contrib/l3kernel/l3tl.dtx
index f3c52e2a0f..774814ad33 100644
--- a/macros/latex/contrib/l3kernel/l3tl.dtx
+++ b/macros/latex/contrib/l3kernel/l3tl.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -566,8 +566,8 @@
% See also \cs{tl_reverse:N}.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -603,8 +603,8 @@
% consider the slower function \cs{tl_reverse:n}.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -623,8 +623,8 @@
% stream.
% \begin{texnote}
% The result is returned within \tn{unexpanded}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -873,8 +873,8 @@
% \cs{tl_head:n} leaving nothing in the input stream.
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the token
-% list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -918,8 +918,8 @@
% in \cs{tl_tail:n} leaving nothing in the input stream.
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
-% token list does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% token list does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -959,8 +959,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -976,8 +976,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1047,8 +1047,8 @@
% \begin{texnote}
% The result is returned within the \tn{unexpanded}
% primitive (\cs{exp_not:n}), which means that the \meta{item}
-% does not expand further when appearing in an \texttt{x}-type
-% or \texttt{e}-type argument expansion.
+% does not expand further when appearing in an \texttt{e}-type
+% or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1079,7 +1079,7 @@
% \begin{texnote}
% The result is returned within \cs{exp_not:n}, which means that the
% token list does not expand further when appearing in an
-% \texttt{x}-type or \texttt{e}-type argument expansion.
+% \texttt{e}-type or \texttt{x}-type argument expansion.
% \end{texnote}
% \end{function}
%
@@ -1255,7 +1255,7 @@
% single-line string, as if it appeared in the middle of a line
% read from a file.
%
-% Contrarily to the \tn{scantokens} primitive, \cs{tl_rescan:nn}
+% Contrarily to the \tn{scantokens} \eTeX{} primitive, \cs{tl_rescan:nn}
% tokenizes the whole string in the same category code regime rather
% than one token at a time, so that directives such as \tn{verb}
% that rely on changing category codes will not function properly.
@@ -2153,7 +2153,7 @@
% All of its work is done between
% \cs{group_align_safe_begin:} and \cs{group_align_safe_end:} to avoid
% issues in alignments. It does the actual replacement within
-% |#3|~|#4|~|{...}|, an \texttt{x}-expanding \meta{assignment}~|#3| to
+% |#3|~|#4|~|{...}|, an \texttt{e}-expanding \meta{assignment}~|#3| to
% the \meta{tl~var}~|#4|. The auxiliary \cs{@@_replace_next:w} is
% called, followed by the \meta{token list}, some tokens including the
% \meta{delimiter}~|#1|, followed by the \meta{pattern}~|#5|.
@@ -2166,7 +2166,7 @@
% |##1| cannot contain the \meta{delimiter}~|#1| that we worked so
% hard to obtain, thus \cs{@@_replace_wrap:w} gets~|##1| as its own
% argument~|##1|, and protects it against
-% the \texttt{x}-expanding assignment. It also finds \cs{exp_not:n}
+% the \texttt{e}-expanding assignment. It also finds \cs{exp_not:n}
% as~|##2| and does nothing to it, thus letting through \cs{exp_not:n}
% \Arg{replacement} into the assignment. Note that
% \cs{@@_replace_next:w} and \cs{@@_replace_wrap:w} are always called
@@ -2858,7 +2858,7 @@
% \cs{@@_trim_mark:} expands to nothing in a single expansion. In the case
% at hand, we take \cs{__kernel_exp_not:w} \cs{exp_after:wN} as our
% continuation, so that space trimming behaves correctly within an
-% \texttt{x}-type expansion.
+% \texttt{e}-type or \texttt{x}-type expansion.
% \begin{macrocode}
\cs_new:Npn \tl_trim_spaces:n #1
{
diff --git a/macros/latex/contrib/l3kernel/l3token.dtx b/macros/latex/contrib/l3kernel/l3token.dtx
index 888ceb3601..81534b5480 100644
--- a/macros/latex/contrib/l3kernel/l3token.dtx
+++ b/macros/latex/contrib/l3kernel/l3token.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
@@ -456,7 +456,7 @@
% as |macro|s.
% \begin{texnote}
% This is the \TeX{} primitive \tn{meaning}.
-% The \meta{token} can thus be an explicit space tokens or an
+% The \meta{token} can thus be an explicit space token or an
% explicit begin-group or end-group character token (|{|~or~|}| when
% normal \TeX{} category codes apply) even though these are not
% valid \texttt{N}-type arguments.
@@ -473,7 +473,7 @@
% category code $12$ (the escape character is part of the
% \meta{token}). This function requires only a single expansion.
% \begin{texnote}
-% \cs{token_to_str:N} is the \TeX{} primitive \tn{string} renamed.
+% \cs{token_to_str:N} is the \TeX{} primitive \tn{string}.
% The \meta{token} can thus be an explicit space tokens or an
% explicit begin-group or end-group character token (|{|~or~|}| when
% normal \TeX{} category codes apply) even though these are not
@@ -752,7 +752,7 @@
% \cs{token_if_primitive:NTF} \meta{token} \Arg{true code} \Arg{false code}
% \end{syntax}
% Tests if the \meta{token} is an engine primitive. In \LuaTeX{}
-% this includes primitive-like commands defined using |{token.set_lua}|.
+% this includes primitive-like commands defined using |token.set_lua|.
% \end{function}
%
% \begin{function}[added = 2020-12-03, EXP, noTF]
@@ -968,7 +968,7 @@
% receives three arguments for each \meta{token} in the input stream:
% \begin{itemize}
% \item \meta{tokens}, which both \texttt{o}-expand and
-% \texttt{x}-expand to the \meta{token}. The detailed form of
+% \texttt{e}/\texttt{x}-expand to the \meta{token}. The detailed form of
% \meta{tokens} may change in later releases.
% \item \meta{char code}, a decimal representation of the character
% code of the \meta{token}, $-1$ if it is a control sequence.
@@ -2328,7 +2328,7 @@
%
% Characters used as delimiters must have catcode~$12$
% and are obtained through \cs{tl_to_str:n}. This requires doing all
-% definitions within \texttt{x}-expansion. The temporary function
+% definitions within \texttt{e}-expansion. The temporary function
% \cs{@@_tmp:w} used to define each conditional receives three
% arguments: the name of the conditional, the auxiliary's delimiter
% (also used to name the auxiliary), and the string to which one
diff --git a/macros/latex/contrib/l3kernel/l3unicode.dtx b/macros/latex/contrib/l3kernel/l3unicode.dtx
index 54486cc0fa..1ee49aeb44 100644
--- a/macros/latex/contrib/l3kernel/l3unicode.dtx
+++ b/macros/latex/contrib/l3kernel/l3unicode.dtx
@@ -43,7 +43,7 @@
% }^^A
% }
%
-% \date{Released 2023-10-23}
+% \date{Released 2023-11-01}
%
% \maketitle
%
diff --git a/macros/latex/contrib/l3kernel/source3.pdf b/macros/latex/contrib/l3kernel/source3.pdf
index 13567c5b2a..830fc37b84 100644
--- a/macros/latex/contrib/l3kernel/source3.pdf
+++ b/macros/latex/contrib/l3kernel/source3.pdf
Binary files differ
diff --git a/macros/latex/contrib/l3kernel/source3.tex b/macros/latex/contrib/l3kernel/source3.tex
index bb91c59643..9c7384cad0 100644
--- a/macros/latex/contrib/l3kernel/source3.tex
+++ b/macros/latex/contrib/l3kernel/source3.tex
@@ -57,7 +57,7 @@ for those people who are interested.
{latex-team@latex-project.org}%
}%
}
-\date{Released 2023-10-23}
+\date{Released 2023-11-01}
\pagenumbering{roman}
\maketitle
diff --git a/macros/latex/contrib/l3kernel/source3body.tex b/macros/latex/contrib/l3kernel/source3body.tex
index f76e8f2872..b469621d95 100644
--- a/macros/latex/contrib/l3kernel/source3body.tex
+++ b/macros/latex/contrib/l3kernel/source3body.tex
@@ -551,6 +551,7 @@ used on top of \LaTeXe{} if \tn{outer} tokens are used in the arguments.
\part{Data types}
\DocInput{l3tl.dtx}
+\DocInput{l3tl-build.dtx}
\DocInput{l3str.dtx}
\DocInput{l3str-convert.dtx}
\DocInput{l3quark.dtx}
diff --git a/macros/latex/contrib/profmaquette/doc/TestCAN.pdf b/macros/latex/contrib/profmaquette/doc/TestCAN.pdf
new file mode 100644
index 0000000000..ce210e3c71
--- /dev/null
+++ b/macros/latex/contrib/profmaquette/doc/TestCAN.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/TestCAN.tex b/macros/latex/contrib/profmaquette/doc/TestCAN.tex
new file mode 100644
index 0000000000..58cbf7a758
--- /dev/null
+++ b/macros/latex/contrib/profmaquette/doc/TestCAN.tex
@@ -0,0 +1,27 @@
+\documentclass[french]{article}
+\usepackage[nonamssymb]{ProfCollegeT}
+\usepackage{ProfMaquetteT}
+
+\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+\usepackage[math-style=french,Scale=0.98]{fourier-otf}
+
+\newfontfamily\myfontScratch[Scale=0.725]{DejaVu Sans}
+
+%\usepackage[a5paper,margin=1cm,noheadfoot]{geometry}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}
+
+\usepackage{babel}
+
+\usepackage{lipsum}
+
+\begin{document}
+\begin{Maquette}[CAN]{}
+ \begin{exercice}
+ On considère un triangle $ABC$\dots
+ \end{exercice}
+\end{Maquette}
+\end{document}
+% Local Variables:
+% TeX-engine: luatex
+% End:
diff --git a/macros/latex/contrib/profmaquette/doc/TestCANComplement.pdf b/macros/latex/contrib/profmaquette/doc/TestCANComplement.pdf
new file mode 100644
index 0000000000..a2b2f04465
--- /dev/null
+++ b/macros/latex/contrib/profmaquette/doc/TestCANComplement.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/TestCANComplement.tex b/macros/latex/contrib/profmaquette/doc/TestCANComplement.tex
new file mode 100644
index 0000000000..565b168d7e
--- /dev/null
+++ b/macros/latex/contrib/profmaquette/doc/TestCANComplement.tex
@@ -0,0 +1,31 @@
+\documentclass[french]{article}
+\usepackage[nonamssymb]{ProfCollegeT}
+\usepackage{ProfMaquetteT}
+
+\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
+\usepackage[math-style=french,Scale=0.98]{fourier-otf}
+
+\newfontfamily\myfontScratch[Scale=0.725]{DejaVu Sans}
+
+%\usepackage[a5paper,margin=1cm,noheadfoot]{geometry}
+\setlength{\parindent}{0pt}
+\pagestyle{empty}
+
+\usepackage{babel}
+
+\usepackage{lipsum}
+
+\begin{document}
+\begin{Maquette}[CAN]{CoefQ=0.5,CoefR=0.25}
+ \begin{exercice}
+ $17+19$
+ \end{exercice}
+ \begin{exercice}
+ $ABC$ est un triangle tel que $\widehat{ABC}=\ang{30}$ et $\widehat{BCA}=\ang{70}$. Alors\dots
+ \Complement{$\widehat{CAB}=\dots$}
+ \end{exercice}
+\end{Maquette}
+\end{document}
+% Local Variables:
+% TeX-engine: luatex
+% End:
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
index 26ddb6c90f..684fb60cce 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
+++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.pdf
Binary files differ
diff --git a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
index 201af9c0d0..deb64e3d34 100644
--- a/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
+++ b/macros/latex/contrib/profmaquette/doc/profmaquette-doc.tex
@@ -5,6 +5,7 @@
\input{Christ7}
\usepackage[warnings-off={mathtools-colon,mathtools-overbracket}]{unicode-math}
\usepackage{fourier-otf}
+
\usepackage[a4paper,margin=1.5cm,nohead,includefoot]{geometry}
\setlength{\parindent}{0pt}
\pagestyle{empty}
@@ -120,13 +121,13 @@
texcsstyle=*\color{black},%pour colorer la contre-oblique
classoffset=5,
texcsstyle=*\color{blue},%pour colorer la contre-oblique
- moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux,TikzContrat,TikzContratCor,TikzFdR,TikzFdRCor,AfficheContrat,AfficheFdR},
+ moretexcs={brm,TikzDM,TikzDMCor,TikzDS,TikzDSCor,TikzIE,TikzIECor,TikzFiche,TikzFicheCor,TikzCours,Competences,TikzParcours,TikzParcoursCor,TikzPdT,TikzPdTCor,PfMCompNA,PfMCompECA,PfMCompA,AfficheParcours,CheminVrai,CheminFaux,TikzContrat,TikzContratCor,TikzFdR,TikzFdRCor,AfficheContrat,AfficheFdR,TikzCAN,TikzCANCor,Complement},
emph={Maquette,exercice,exercice,Solution,Reponse,Indice},%
classoffset=1,
- keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours,FdR,Contrat},
+ keywords={DM,DS,IE,Fiche,CorrigeFin,CorrigeApres,PdT,Parcours,ParcoursPerso,Cours,FdR,Contrat,CAN},
keywordstyle=\color{OliveDrab},
classoffset=2,
- keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type},
+ keywords={Theme,Niveau,Classe,Date,Calculatrice,Code,Numero,Sujet,Nom,NumSujet,Fichier,Type,CoefQ,CoefR,CoefJ},
keywordstyle=\color{BlueViolet},%DarkMagenta},
classoffset=3,
keywords={Pouce,Direct,PasCorrige,BaremeDetaille,BaremeTotal,Source,Titre,Oral,Calculatrice,Competence,Trajet,Confiance,Route,Stop},
@@ -182,8 +183,8 @@
{\sffamily\textlangle #1\textrangle}%
}%
-\newcommand{\Defaut}[1]{%
-\hfill valeur par défaut : {\sffamily #1}\par%
+\newcommand\Defaut[1]{%
+\hfill valeur par défaut : {\sffamily #1}\\[-1em]%
}%
\usepackage{parskip}
@@ -303,7 +304,7 @@ Le c\oe ur de l'utilisation du package \lstinline!ProfMaquette! est donc une ges
\end{Codes}
C'est lui qui indique :
\begin{itemize}
-\item le type de document souhaité \metamk{TypeDocument} (Devoir Maison / Devoir Surveillé / Interrogation écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail / Cours / Contrat de confiance / Feuille de route);
+\item le type de document souhaité \metamk{TypeDocument} (Devoir Maison / Devoir Surveillé / Interrogation écrite / Fiche d'exercices / Parcours d'exercices / Parcours personnalisé / Plan de travail / Cours / Contrat de confiance / Feuille de route / CAN (Course aux nombres));
\item et si ce travail est corrigé \metamk{TypeCorrection} (à la suite d'un exercice ou à la fin du document) ou pas;
\end{itemize}
puis il indiquera les caractéristiques \metamk{Caracteristiques} du document souhaité.
@@ -382,7 +383,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\item[]La clé \Cle{Niveau}\Defaut{6}
\item[]La clé \Cle{Theme} Thème de la fiche \Defaut{Les nombres décimaux}
\item[]La clé \Cle{Code}\Defaut{}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -405,7 +406,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\item[]La clé \Cle{Niveau}\Defaut{6}
\item[]La clé \Cle{Theme} Thème du parcours \Defaut{Les nombres décimaux}
\item[]La clé \Cle{Code}\Defaut{}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -426,7 +427,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\item[]La clé \Cle{Niveau}\Defaut{6}
\item[]La clé \Cle{Theme} Thème du plan de travail \Defaut{Les nombres décimaux}
\item[]La clé \Cle{Code}\Defaut{}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -462,7 +463,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\begin{itemize}
\item[]La clé \Cle{Theme} modifie le titre du \og cours\fg\Defaut{Trace écrite}
\item[]La clé \Cle{Couleur} modifie la couleur donnée à l'entête\Defaut{Crimson}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -482,7 +483,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\begin{itemize}
\item[]La clé \Cle{Theme} modifie le titre du \og cours\fg\Defaut{-}
\item[]La clé \Cle{Couleur} modifie la couleur donnée à l'entête\Defaut{Crimson}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -502,7 +503,7 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
\begin{itemize}
\item[]La clé \Cle{Theme} modifie le titre du \og cours\fg\Defaut{-}
\item[]La clé \Cle{Couleur} modifie la couleur donnée à l'entête\Defaut{Crimson}
- \item[]La clé \Cle{Nomexercice} pour modifier le nom des exercices\Defaut{exercice}
+ \item[]La clé \Cle{NomExercice} pour modifier le nom des exercices\Defaut{exercice}
\end{itemize}
\end{Description}
\end{CadreMP}
@@ -515,6 +516,35 @@ puis il indiquera les caractéristiques \metamk{Caracteristiques} du document so
On considère un triangle $ABC$\dots
\end{Maquette}
\clearpage
+\subsection*{Course aux nombres}
+\begin{CadreMP}
+ \begin{Description}
+\item[La clé \Cle{CAN}]\Defaut{false}
+ \begin{itemize}
+ \item[]La clé \Cle{Date}\Defaut{\lstinline!\\today!}
+ \item[]La clé \Cle{Niveau}\Defaut{6}
+ \item[]La clé \Cle{Duree} modifie la durée de la course\Defaut{9}
+ \item[]La clé \Cle{CoefQ} modifie, en multipliant \lstinline!\\linewidth! par la valeur donnée, la largeur de la colonne \og Questions\fg{}\Defaut{0.4}
+ \item[]La clé \Cle{CoefR} modifie, en multipliant \lstinline!\\linewidth! par la valeur donnée, la largeur de la colonne \og Réponse\fg{}\Defaut{0.35}
+ \item[]La clé \Cle{CoefJ} modifie, en multipliant \lstinline!\\linewidth! par la valeur donnée, la largeur de la colonne \og Jury\fg{}\Defaut{0.1}
+ \end{itemize}
+\end{Description}
+\end{CadreMP}
+\begin{Codes}[listing only]{0.4}{}
+\begin{Maquette}[CAN]{}
+ \begin{exercice}
+ On considère un triangle $ABC$\dots
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
+%\begin{Maquette}[CAN]{}
+% \begin{exercice}
+% On considère un triangle $ABC$\dots
+% \end{exercice}
+%\end{Maquette}
+\clearpage
+\includepdf[nup=1x2,pages=-,landscape]{TestCAN.pdf}
+\clearpage
Comme on peut le voir, chaque type de travail est associé à une présentation. Ces présentations sont créées par les commandes associées à des styles prédéfinies.\footnote{Qu'on peut donc redéfinir. Par exemple, c'est ce que j'ai fait dans ce document pour la commande \lstinline!\\TikzFiche! : elle ne commence plus une nouvelle page.} \lstinline!tcolorbox! :
\begin{itemize}[label=\textbullet]
\item \lstinline!userdm/userdmcor! pour la clé \Cle{DM};
@@ -573,8 +603,9 @@ Pour modifier {\em plus finement} les entêtes des différentes maquettes, on di
\item \lstinline!\TikzParcours/\TikzParcoursCor! pour la clé \Cle{Parcours};%*
\item \lstinline!\TikzPdT/\TikzPdTCor! pour la clé \Cle{PdT};%*
\item \lstinline!\TikzCours! pour la clé \Cle{Cours};
-\item \lstinline!\TikzContrat/\TikzContratCor! pour la clé \Cle{PdT};%*
-\item et \lstinline!\TikzFdR/\TikzFdRCor! pour la clé \Cle{PdT}.%*
+\item \lstinline!\TikzContrat/\TikzContratCor! pour la clé \Cle{Contrat};%*
+\item \lstinline!\TikzFdR/\TikzFdRCor! pour la clé \Cle{FdR};%*
+\item et \lstinline!\TikzCAN/\TikzCANCor! pour la clé \Cle{CAN}.%*
\end{itemize}
Leurs modifications seront facilitées en copiant le code fourni par le fichier \lstinline!ProfMaquette.sty!.
\clearpage
@@ -607,7 +638,7 @@ Si l'on souhaite davantage de niveaux d'évaluations (ou moins), on utilisera le
L'environnement \lstinline!exercice! doit {\em impérativement} être inclus dans un environnement \lstinline!Maquette! car le choix de document influence la présentation des exercices.
\begin{Codes}[]{0.5}{}
\begin{Maquette}[IE]{Theme=Les fonctions,Niveau=3,Classe=Gide}
- \begin{exercice}
+ \begin{exercice}%
La fonction $f:x\mapsto3x+2$ est-elle une fonction affine ? Justifier.
\end{exercice}
\end{Maquette}
@@ -636,10 +667,8 @@ L'environnement \lstinline!exercice! doit {\em impérativement} être inclus dan
\subsection*{La personnalisation}
On peut, dans un premier temps, utiliser les clés suivantes :
\begin{Description}
-\item[La clé \Cle{BackGround}]\Defaut{white}
- modifie les arrière-plans des exercices.
-\item[La clé \Cle{Cadre}]\Defaut{gray!50}
- modifie la couleur du cadre des exercices.
+\item[La clé \Cle{BackGround}] modifie les arrière-plans des exercices.\Defaut{white}
+\item[La clé \Cle{Cadre}] modifie la couleur du cadre des exercices.\Defaut{gray!50}
\end{Description}
\begin{Codes}[]{0.4}{}
\begin{Maquette}[Fiche]{Theme=Les fonctions,Niveau=3,Classe=Gide}
@@ -656,9 +685,9 @@ On remarque que certains exercices sont associés à un total de point. C'est un
\item est {\em fixée} à {\sffamily false} pour la clé \Cle{Fiche};
\item est positionnée à {\sffamily true} mais {\em modifiable} pour les clés \Cle{DM}, \Cle{DS} et \Cle{IE}.
\end{itemize}
-\item[La clé \Cle{BaremeDetaille}]\Defaut{false}\par qui a le même fonctionnement que la clé \Cle{BaremeTotal}.
- La commande \lstinline!\brm{}! permet la construction du barème (détaillé et total).
-\item[La clé \Cle{MotPoint}]\Defaut{point}\par donnée sous forme de texte puisque le pluriel est géré.
+\item[La clé \Cle{BaremeDetaille}] a le même fonctionnement que la clé \Cle{BaremeTotal}.
+ La commande \lstinline!\brm{}! permet la construction du barème (détaillé et total).\Defaut{false}
+\item[La clé \Cle{MotPoint}] donnée sous forme de texte puisque le pluriel est géré.\Defaut{point}
\begin{Codes}[listing only]{0.4}{}
\begin{Maquette}[DS]{Numero=3,Classe=Euler,Niveau=4}
\begin{exercice} % ici le barème est total, pas de détail : comportement par défaut
@@ -732,10 +761,8 @@ Si on souhaite citer la source d'un exercice ou lui donner un titre, on dispose
Les clés décrites dans cette partie ne sont disponibles que pour les maquettes
\lstinline!Fiche! / \lstinline!Parcours!.
\begin{Description}
-\item[La clé \Cle{Oral}]\Defaut{false}\par
- pour indiquer que l'exercice se résout oralement.
-\item[La clé \Cle{Calculatrice}]\Defaut{true}\par
- pour afficher que la calculatrice {\em est interdite}.
+\item[La clé \Cle{Oral}] pour indiquer que l'exercice se résout oralement.\Defaut{false}
+\item[La clé \Cle{Calculatrice}] pour afficher que la calculatrice {\em est interdite}.\Defaut{true}
\end{Description}
\begin{Codes}[listing only,listing options={frame=,escapechar=!}]{0.4}{}
\begin{Maquette}[Fiche]{Theme=Calcul mental}
@@ -1088,6 +1115,25 @@ Dans le cas de cette maquette, l'environnement \lstinline!exercice! dispose des
\end{exercice}
\end{Maquette}
\clearpage
+\subsection*{Focus sur la maquette \lstinline!CAN!}
+Dans le cas de cette maquette, l'environnement \lstinline!exercice! n'admet aucune clé. La création de la page de garde et du tableau est automatique mais nécessite {\em au moins} deux compilations pour adapter au mieux les dimensions du tableau.
+
+La commande \lstinline!\Complement{}! permet d'ajouter du contenu à la colonne \og Réponse\fg.
+
+\begin{Codes}[listing only]{0.5}{}
+% cet exemple a été créé avec une feuille au format A5
+\begin{Maquette}[CAN]{CoefQ=0.5,CoefR=0.25}
+ \begin{exercice}
+ $17+19$
+ \end{exercice}
+ \begin{exercice}
+ $ABC$ est un triangle tel que $\widehat{ABC}=\ang{30}$ et $\widehat{BCA}=\ang{70}$. Alors\dots
+ \Complement{$\widehat{CAB}=\dots$}
+ \end{exercice}
+\end{Maquette}
+\end{Codes}
+\includegraphics{pg_0002-crop.pdf}
+\clearpage
\subsection*{\og Correction\fg{} des exercices}
Un exercice avec correction pourra\footnote{Dans les faits, seul l'environnement \lstinline!exercice! est nécessaire.} avoir la forme suivante :
\begin{Codes}[listing only]{0.4}{}
@@ -1120,7 +1166,7 @@ On peut gérer la correction des exercices à deux niveaux :
\end{quote}
\end{Description}
-Pour la maquette \lstinline!ParcoursPerso!, seule la clé \Cle{CorrigeFin} est autorisée.
+Pour les maquettes \lstinline!ParcoursPerso! et \lstinline!CAN!, seule la clé \Cle{CorrigeFin} est autorisée.
\begin{Codes}[listing only]{0.4}{\footnotesize}
\begin{Maquette}[IE,CorrigeApres]{Theme=Calcul littéral}
@@ -1275,7 +1321,7 @@ Cela engendre, si nécessaire, la création de fichier \lstinline!*.sol! pour le
\clearpage
\section*{Historique}
\begin{description}
-\item[\PfMfiledate{}--v \PfMfileversion] Création des feuilles de route et contrat de confiance.
+\item[\PfMfiledate{}--v \PfMfileversion] Création du format CAN (Course aux nombres).
\end{description}
\end{document}
%%% Local Variables:
diff --git a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
index 31e188b47a..714e745a63 100644
--- a/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
+++ b/macros/latex/contrib/profmaquette/latex/ProfMaquette.sty
@@ -2,35 +2,35 @@
% licence : Released under the LaTeX Project Public License v1.3c
% or later, see http://www.latex-project.org/lppl.txtf
\NeedsTeXFormat{LaTeX2e}%
-\def\filedate{2023/10/25}%
+\def\filedate{2023/11/01}%
\let\PfMfiledate\filedate%
-\def\fileversion{0.55}%
+\def\fileversion{0.65}%
\let\PfMfileversion\fileversion%
\ProvidesPackage{ProfMaquette}[\filedate\space v\fileversion\space Maquettage de documents]%
% packages nécessaires
-\RequirePackage{verbatim}
+\RequirePackage{verbatim}%
-\RequirePackage{calc}
+\RequirePackage{calc}%
-\RequirePackage{xlop}
+\RequirePackage{xlop}%
-\RequirePackage{varwidth}
+\RequirePackage{varwidth}%
-\RequirePackage{tcolorbox}
-\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8}
+\RequirePackage{tcolorbox}%
+\tcbuselibrary{breakable,external,fitting,hooks,magazine,poster,raster,skins,theorems,listings,listingsutf8}%
-\RequirePackage{xinttools}
+\RequirePackage{xinttools}%
-\RequirePackage{listofitems}
-\RequirePackage{array}
-\RequirePackage{datatool}
+\RequirePackage{listofitems}%
+\RequirePackage{array}%
+\RequirePackage{datatool}%
-\RequirePackage{modulus}
+\RequirePackage{modulus}%
%définition des clés
\RequirePackage{simplekv}
-\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
+\setKVdefault[Boulot]{Cours=false,Base=false,BaseHTML=false,CAN=false,Fiche=false,DM=false,DS=false,IE=false,Kholle=false,RecapBrevet=false,PdT=false,Parcours=false,Contrat=false,FdR=false,ParcoursPerso=false,CorrigeApres=false,CorrigeFin=false,CorrigeAll=false,Brevet=false,BaremeComplet=false,BaremeGlobal=false,CorrectionColonnes=false,Epaisseur=0pt,AllDirect=false,AllPouce=false}%Les deux derniers pour essayer de mettre tous les exercices d'un même fichier en mode Reponse, en mode Indice. Pas implanté, pas testé
\defKV[Boulot]{Colonnes=\setKV[Boulot]{CorrectionColonnes}}%
\setKVdefault[Cours]{Couleur=Crimson,Theme=Trace écrite,NomExercice=Exercice}%
\setKVdefault[DM]{Numero=1,Date=\today,Classe={},Niveau=3,Code=\jobname}%
@@ -46,6 +46,7 @@
\setKVdefault[RecapBrevet]{Theme=Les nombres décimaux,Date=\today,Code={},NomExercice=Exercice}%
\setKVdefault[Kholle]{Sujet=1,Numero=1,Date=15,Niveau=TSI-1,Code=\jobname,Lieu=Lycée
du Hainaut (Valenciennes),NomEleve=Albert Einstein,CR=false}%
+\setKVdefault[CAN]{Date=\today,Niveau=6,Duree=9,CoefQ=0.4,CoefR=0.35,CoefJ=0.1}%
\setKVdefault[ClesExercices]{NbQuestions=1,PasTitre=false,AffichageSource=false,BaremeTotal,BaremeDetaille=false,MotPoint=point,AffichageTitre=false,Calculatrice=true,Oral=false,Difficulte=0,AffichageCompetence=false,PasCorrige=false,Direct=false,Pouce=false,Parcours=false,Contrat=false,FdR=false,Routes=false,Stops=false,Background=white,Cadre=gray!50,Numerote}%
\defKV[ClesExercices]{Source=\setKV[ClesExercices]{AffichageSource}}%
\defKV[ClesExercices]{Titre=\setKV[ClesExercices]{AffichageTitre}}%
@@ -64,9 +65,12 @@
\newlength\PfMRayonSchemaContrat%
\newlength\PfMLargeurSchemaFdR%
\newlength\PfMRayonSchemaFdR%
-\newlength{\PfMHauteurAppreciation}%
+\newlength\PfMHauteurAppreciation%
+\newlength\PfMHauteurRemarque%
+\newlength\PfMLargeurQuestion%
+\newlength\PfMLargeurReponse%
+\newlength\PfMLargeurJury%
\setlength{\PfMHauteurAppreciation}{5cm}%
-\newlength{\PfMHauteurRemarque}%
\setlength{\PfMHauteurRemarque}{5cm}%
% définition des compteurs
\newcounter{PfMMaquette}%Pour compter le nombres de "travaux"
@@ -92,21 +96,22 @@
\newcounter{PfMNbLogo}%Pour décaler les logos sur la ligne haute de tcolorbox
\setcounter{PfMNbLogo}{0}%
\newcount\Orientation%Pour le schéma des parcours
+\newcounter{PfMCNNumQ}%
% couleurs
-\colorlet{PfMColCpt}{gray!50}
-\colorlet{PfMColSrc}{gray!50}
+\colorlet{PfMColCpt}{gray!50}%
+\colorlet{PfMColSrc}{gray!50}%
%\colorlet{PfMCadreFiche}{gray!50}
-\colorlet{PfMCadreDM}{gray!85}
-\colorlet{PfMCadreParcours}{gray!50}
-\colorlet{PfMCadreContrat}{gray!50}
-\colorlet{PfMCadreFdR}{gray!50}
+\colorlet{PfMCadreDM}{gray!85}%
+\colorlet{PfMCadreParcours}{gray!50}%
+\colorlet{PfMCadreContrat}{gray!50}%
+\colorlet{PfMCadreFdR}{gray!50}%
% Définitions de commandes
-\newcommand\PfMIENom{\dotfill}
-\newcommand\PfMIEPrenom{\dotfill}
-\newcommand\PfMIEClasse{\dotfill}
-\newcommand\PfMCompNA{NA}
-\newcommand\PfMCompECA{ECA}
-\newcommand\PfMCompA{A}
+\newcommand\PfMIENom{\dotfill}%
+\newcommand\PfMIEPrenom{\dotfill}%
+\newcommand\PfMIEClasse{\dotfill}%
+\newcommand\PfMCompNA{NA}%
+\newcommand\PfMCompECA{ECA}%
+\newcommand\PfMCompA{A}%
% Pour la gestion de l'aléatoire
% afin de permettre d'utiliser le même exercice.
% Extraire des sommets
@@ -169,6 +174,7 @@
\RenewDocumentCommand\ChoixAlea{s o m m m}{%
\IfBooleanTF{#1}{%
\stepcounter{PfMAlea}%
+% je sauvegarde la valeur \thePfMExo-\thePfMAlea
\IfNoValueTF{#2}{%
\expandafter\xdef\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname{\fpeval{randint(#3,#4)}}%
\expandafter\xdef\csname #5\endcsname{\csname valeur\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
@@ -212,7 +218,7 @@
% #4 valeur(s) exclue(s)
% #5 Nom de la liste qui récupère les données.
\ifx\bla#4\bla%
- \PackageWarning{ProfMaquette}{Il faut définir au moins une valeur à exclure.}
+ \PackageWarning{ProfMaquette}{Il faut définir au moins une valeur à exclure.}%
\else%
\xdef\PfMMixFoo{#2}%
\setsepchar{,}\ignoreemptyitems%
@@ -250,23 +256,71 @@
\NewDocumentCommand\RestoreChoixAlea{m}{%
\stepcounter{PfMAlea}%
- \expandafter\xdef\csname #1\endcsname{\csname valeur\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}
+ %Je restaure la valeur \thePfMExoSol-\thePfMAlea
+ \expandafter\xdef\csname #1\endcsname{\csname valeur\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
}%
\NewDocumentCommand\ExporteListe{mm}{%
%#1 le nom de la liste
%#2 le contenu de la liste.
- \stepcounter{PfMAlea}
+ \stepcounter{PfMAlea}%
\expandafter\xdef\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname{#2}%
- \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname}
+ \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExo}\roman{PfMAlea}\endcsname}%
}%
\NewDocumentCommand\RestoreListe{m}{%
%#1 le nom de la liste à restaurer
\stepcounter{PfMAlea}%
- \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}
+ \expandafter\xdef\csname #1\endcsname{\csname Liste\Roman{PfMExoSol}\roman{PfMAlea}\endcsname}%
}%
+%%
+%\newcounter{Melquestions}%
+%\newcounter{Comptequestions}%
+%
+%\NewDocumentEnvironment{Enumelange}{o+b}{%
+% \setcounter{Melquestions}{0}%
+% \setsepchar{\item}%
+% \readlist*\ListeTest{#2}%
+% \IfNoValueTF{#1}{%
+% \ChoixAleaMultiMix{\ListeTestlen}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
+% \xdef\MelangeValeurTotale{\ListeTestlen}%
+% }{%
+% \ChoixAleaMultiMix{#1}{1}{\ListeTestlen}{0}{\ListeShuffleA}%
+% \xdef\MelangeValeurTotale{#1}%
+% }%
+% \ExporteListe{ListeShuffle}{\ListeShuffleA}%
+% \setsepchar{,}\ignoreemptyitems%
+% \readlist*\ListeNumQ{\ListeShuffleA}%
+% \setcounter{Comptequestions}{1}%
+% \begin{enumerate}
+% \loop%
+% \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
+% \item \ListeTest[\theMelquestions]%
+% \stepcounter{Comptequestions}%
+% \ifnum\theComptequestions<\numexpr\MelangeValeurTotale+1%
+% \repeat%
+% \end{enumerate}
+%}{}%
+
+%\NewDocumentEnvironment{Enumelangesol}{b}{%
+% \setcounter{Melquestions}{0}%
+% \setsepchar{\item}%
+% \readlist*\ListeTest{#1}%
+% \RestoreListe{ListeShuffle}%
+% \setsepchar{,}\ignoreemptyitems%
+% \readlist*\ListeNumQ{\ListeShuffle}%
+% \setcounter{Comptequestions}{1}%
+% \begin{enumerate}
+% \loop%
+% \setcounter{Melquestions}{\ListeNumQ[\theComptequestions]}%
+% \item \ListeTest[\theMelquestions]%
+% \stepcounter{Comptequestions}%
+% \ifnum\theComptequestions<\numexpr\ListeNumQlen+1%
+% \repeat%
+% \end{enumerate}
+%}{}%
+
% Définitions pour les compétences
\NewDocumentCommand\Competences{O{3}m}{%
\setsepchar[*]{/}\ignoreemptyitems%
@@ -312,14 +366,14 @@
\def\SolutionWrite{%
\setcounter{PfMAlea}{0}%
- \@bsphack
- \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol" %
- \let\do\@makeother\dospecials
- \catcode`\^^M\active
+ \@bsphack%
+ \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.sol"%
+ \let\do\@makeother\dospecials%
+ \catcode`\^^M\active%
\def\verbatim@processline{%
\immediate\write\verbatim@out{\the\verbatim@line}}%
- \verbatim@start}
-\def\endSolutionWrite{\immediate\closeout\verbatim@out\@esphack}
+ \verbatim@start}%
+\def\endSolutionWrite{\immediate\closeout\verbatim@out\@esphack}%
\def\SolutionWritePP{%
\@bsphack
@@ -450,6 +504,13 @@
}%
\NewDocumentCommand\PfMAffichageCorrige{}{%
+ \ifboolKV[Boulot]{CAN}{%Toto
+ \xintFor* ##1 in{\xintSeq{1}{\PfMCANTotalExo}}\do{%
+ \setcounter{PfMExoSol}{##1}%
+ \setcounter{PfMAlea}{0}%
+ \IfFileExists{\jobname-Ex##1.sol}{\textbf{Question\ifnum\PfMCANTotalExo=1\relax\else~##1 :\fi}~\input{\jobname-Ex##1.sol}\par\goodbreak}{}%
+ }%
+ }{%
\xintFor* ##1 in{\xintSeq{1}{\thePfMExo}}\do{%
\setcounter{PfMExoSol}{##1}%
\setcounter{PfMAlea}{0}%
@@ -458,6 +519,7 @@
}%
}%
}%
+ }%
}%
%%%%%%%% BAREME %%%%%%%%%%%
%% Bareme
@@ -1083,6 +1145,104 @@
%\makeatother
+%CAN
+\setsepchar[*]{,*/}%
+\readlist*\ListeNoms{Aude/Elle/d'Aude/qu'Aude,Bernard/Il/de Bernard/que Bernard,Céline/Elle/de Céline/que Céline,Daniel/Il/de Daniel/que Daniel,\'Elise/Elle/d'\'Elise/qu'\'Elise,Fabien/Il/de Fabien/que Fabien,Gérard/Il/de Gérard/que Gérard,Hélène/Elle/d'Hélène/qu'Hélène,Ilies/Il/d'Ilies/qu'Ilies,Jasmine/Elle/de Jasmine/que Jasmine,Kylian/Il/de Kylian/que Kylian,Laurent/Il/de Laurent/que Laurent,Mathilde/Elle/de Mathilde/que Mathilde,Nina/Elle/de Nina/que Nina,Octave/Il/d'Octave/qu'Octave,Philippe/Il/de Philippe/que Philippe,Joachim/Il/de Joachim/que Joachim,Thérèse/Elle/de Thérèse/que Thérèse,Nawel/Elle/de Nawel/que Nawel,Alexandre/Il/d'Alexandre/qu'Alexandre,Maxence/Il/de Maxence/que Maxence,Sophie/Elle/de Sophie/que Sophie,Christophe/Il/de Christophe/que Christophe,Myriam/Elle/de Myriam/que Myriam,Nathalie/Elle/de Nathalie/que Nathalie,Sébastien/Il/de Sébastion/que Sébastien}%
+\readlist*\ListeChersObjets{montre/une,collier/un,bague/une,pendentif/un}%
+\setsepchar{,}%
+\readlist*\ListePetitsObjets{bonbons,billes,biscuits,gommes,clous,vis,cahiers,trousses}%
+\readlist*\ListeFruits{pommes,poires,abricots,cerises,fraises,framboises,noix,pêches,nectarines,myrtilles,oranges,mandarines,kiwis}%
+\readlist*\ListeVariables{a,b,c,m,n,p,r,s,t,x,y,z}%
+
+\makeatletter
+\def\ExoCANWrite{%
+ \setcounter{PfMAlea}{0}%
+ \PfMChoixCorrection%
+ \stepcounter{PfMExo}%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }%
+ \@bsphack
+ \immediate\openout \verbatim@out "\jobname-Ex\thePfMExo.can"
+ \let\do\@makeother\dospecials
+ \catcode`\^^M\active
+ %\immediate\write\verbatim@out{ \string\setcounter{PfMAlea}{0}}
+ \def\verbatim@processline{\immediate\write\verbatim@out{\the\verbatim@line}}
+ \verbatim@start}
+\def\endExoCANWrite{\immediate\closeout\verbatim@out\@esphack}
+\makeatother
+
+\NewDocumentCommand\Complement{+m}{%
+ \ifboolKV[Boulot]{CAN}{%
+ \expandafter\xdef\csname CNReponse\endcsname{#1}%
+ }{%
+ \begin{center}
+ #1%
+ \end{center}
+ }%
+}%
+
+\NewDocumentCommand\EcartComplement{m}{%
+ \rule{0mm}{#1}%
+}%
+
+\tcbset{%
+ usercan/.style={%
+ enhanced,
+ % spread upwards=-1cm,colback=gray!5%
+ frame hidden,
+ colback=white,
+ middle=24pt,
+ overlay={% unbroken and first={%
+ \draw[line width=2pt] (frame.north west)--(frame.north east);
+ \draw[line width=2pt] (frame.south west)--(frame.south east);
+ }
+ }%
+}%
+\tcbset{%
+ usercancor/.style={%
+ spread upwards=-1cm,colback=gray!5%
+ }%
+}%
+
+\makeatletter
+\NewDocumentCommand\TikzCAN{}{%
+ \begin{tcolorbox}[usercan]%
+ {\sc Nom :} \PfCTBstrut\pointilles[0.35\linewidth]\hfill\textbf{\sc Prénom :} \pointilles[0.35\linewidth]
+ \par\bigskip\par
+ \textbf{\sc Classe :} \pointilles[0.35\linewidth]\hfill
+ \begin{minipage}{0.3\linewidth}
+ \begin{tcolorbox}
+ \textbf{\sc Score :} \hfill\textbf{/\@ifundefined{Op@TotalExo}{Recompilez}{\opexport{TotalExo}{\TotalExo}\TotalExo}}
+ \end{tcolorbox}
+ \end{minipage}
+ \tcblower
+ \begin{itemize}
+ \item[\faCheck] \textbf{Durée : \useKV[CAN]{Duree} minutes.}\\[0.5em]
+ \item[\faCheck] \textit{L'épreuve comporte \@ifundefined{Op@TotalExo}{Recompilez}{\opexport{TotalExo}{\TotalExo}\TotalExo{} question\ifnum\TotalExo=1\else\relax s\fi.}}\\[0.5em]
+ \item[\faCheck] \textit{L'usage de la calculatrice et du brouillon sont interdits. Il n'est pas permis d'écrire des calculs intermédiaires.}
+ \end{itemize}
+ \vspace*{12pt}
+ \end{tcolorbox}%
+ \begin{center}
+ \Large Sujet \useKV[CAN]{Niveau}\hspace{0.15\linewidth}\useKV[CAN]{Date}
+ \end{center}
+ \clearpage%
+}%
+\makeatother
+
+\makeatletter
+\NewDocumentCommand\TikzCANCor{m}{%
+ \clearpage
+ \setKV[CAN]{#1}%
+ \begin{tcolorbox}[usercancor]%
+ \begin{center}
+ \Large\sffamily Course aux nombres (Correction)
+ \end{center}
+ \hfill\useKV[CAN]{Niveau}%
+ %\par{\tiny\useKV[FdR]{Code}}\hfill{\scriptsize\useKV[FdR]{Date}}%
+ \end{tcolorbox}%
+}
%%% FdR %%%
\tcbset{%
userfdr/.style={%
@@ -1357,7 +1517,30 @@
\endtcolorbox%
}{}
-\newenvironment{exerciceDS}[1][]{%
+\NewDocumentEnvironment{exerciceDS}{so+b}{%
+ \setcounter{PfMAlea}{0}%
+ \useKVdefault[ClesExercices]%
+ \setKV[ClesExercices]{#2}%
+ \refstepcounter{PfMSection}%
+ \PfMChoixCorrection%
+ \refstepcounter{PfMExo}%
+ \immediate\write\@auxout{%
+ \string\opcopy{\thePfMExo}{TotalExo}%
+ }
+ \ifboolKV[ClesExercices]{BaremeTotal}{%
+ \immediate\write\@auxout{%
+ \string\opcopy{0}{total\the\c@PfMSection-\the\c@PfMExo}%
+ }}{}
+ \tcolorbox[%
+ tikzds,
+ label is label,
+ label=page-\thePfMMaquette-\thePfMExo
+ ]
+ #3
+\endtcolorbox%
+}{}%
+
+\newenvironment{exerciceDSold}[1][]{%
\setcounter{PfMAlea}{0}%
\useKVdefault[ClesExercices]%
\setKV[ClesExercices]{#1}%
@@ -1377,7 +1560,7 @@
label=page-\thePfMMaquette-\thePfMExo
]
}{\endtcolorbox%
-}
+}%
\makeatother
%%% Recap Brevet
%%% Style Brevet
@@ -2227,6 +2410,42 @@
\useKVdefault[Boulot]%
\setKV[Boulot]{#1}%
\IfHookExistsTF{env/exercice/after}{\RemoveFromHook{env/exercice/after}[*]\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}{\AddToHook{env/exercice/after}[ChoixExo]{\PfMChoixAffichageCorrection}}%
+ % Test
+ \IfHookExistsTF{env/exercice/begin}{\RemoveFromHook{env/exercice/begin}[*]}{}%
+ \IfHookExistsTF{env/Maquette/end}{\RemoveFromHook{env/Maquette/end}[*]}{}%
+ \ifboolKV[Boulot]{CAN}{%
+ \setKV[CAN]{#2}\TikzCAN%
+ \setcounter{PfMCNNumQ}{1}%
+ \setlength{\PfMLargeurQuestion}{\useKV[CAN]{CoefQ}\linewidth}\setlength{\PfMLargeurReponse}{\useKV[CAN]{CoefR}\linewidth}\setlength{\PfMLargeurJury}{\useKV[CAN]{CoefJ}\linewidth}%
+ \let\exercice\ExoCANWrite\let\endexercice\endExoCANWrite%
+ \AddToHook{env/exercice/begin}{\setcounter{PfMAlea}{0}}%
+ \AddToHook{env/Maquette/end}{%
+ \xdef\PfMCANTotalExo{\thePfMExo}%
+ \setcounter{PfMExo}{0}%
+ \renewcommand{\arraystretch}{2}%
+ \begin{longtable}{|c|m{\PfMLargeurQuestion}|>{\centering\arraybackslash}m{\PfMLargeurReponse}|m{\PfMLargeurJury}|}%
+ \hhline{~---}%
+ \multicolumn{1}{c|}{}&\cellcolor{gray!15}\centering Question&\cellcolor{gray!15}\centering Réponse&\cellcolor{gray!15}\centering\arraybackslash Jury\\%
+ \hline%
+ \endhead%
+ \xintFor* ##1 in {\xintSeq{1}{\PfMCANTotalExo}}\do{%
+ \ttfamily{\thePfMCNNumQ}\stepcounter{PfMCNNumQ}&\Complement{}\stepcounter{PfMExo}\setcounter{PfMAlea}{0}\input{\jobname-Ex##1.can}&\CNReponse&\\
+ \hline%
+ }%
+ \end{longtable}%
+ \renewcommand{\arraystretch}{1}%
+ }%
+ \ifboolKV[Boulot]{CorrigeFin}{%
+ \AddToHook{env/Maquette/after}[Correction]{%
+ \setKV[Boulot]{#1}%
+ \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ \TikzCANCor{#2}%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ \PfMAffichageCorrige%
+ \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ }%
+ }{}%
+ }{%
\ifboolKV[Boulot]{FdR}{%
\setKV[FdR]{#2}\TikzFdR%
\let\exercice\exerciceFdR\let\endexercice\endexerciceFdR%
@@ -2234,7 +2453,7 @@
\AddToHook{env/Maquette/after}[Correction]{%
\setKV[Boulot]{#1}%
\setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzFdRCor{#2}
+ \TikzFdRCor{#2}%
\ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
\PfMAffichageCorrige%
\ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
@@ -2385,24 +2604,23 @@
}{}%
}{%
\ifboolKV[Boulot]{DS}{%
- \setKV[DS]{#2}\TikzDS%
+ \setKV[DS]{#2}\TikzDS
\let\exercice\exerciceDS\let\endexercice\endexerciceDS%
-% \let\Exercice\exerciceDS\let\endExercice\endexerciceDS%
- \ifboolKV[Boulot]{BaremeComplet}{%
- \begin{center}
- \TableauRecapitulatif
- \end{center}
- }{}%
- \ifboolKV[Boulot]{CorrigeFin}{%
- \AddToHook{env/Maquette/after}[Correction]{%
- \setKV[Boulot]{#1}%
- \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
- \TikzDSCor{#2}%
- \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
- \PfMAffichageCorrige%
- \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
- }%
- }{}%
+ %\ifboolKV[Boulot]{BaremeComplet}{%
+ % \begin{center}
+ % \TableauRecapitulatif
+ % \end{center}
+ %}{}%
+ %\ifboolKV[Boulot]{CorrigeFin}{%
+ % \AddToHook{env/Maquette/after}[Correction]{%
+ % \setKV[Boulot]{#1}%
+ % \setlength{\columnseprule}{\useKV[Boulot]{Epaisseur}}%
+ % \TikzDSCor{#2}%
+ % \ifboolKV[Boulot]{CorrectionColonnes}{\begin{multicols}{\useKV[Boulot]{Colonnes}}}{}%
+ % \PfMAffichageCorrige%
+ % \ifboolKV[Boulot]{CorrectionColonnes}{\end{multicols}}{}%
+ % }%
+ %}{}%
}{%
\ifboolKV[Boulot]{IE}{%
\setKV[IE]{#2}\TikzIE%
@@ -2445,6 +2663,7 @@
}%
}%
}%
+}
}{}%
%\makeatother
diff --git a/macros/latex/required/amsmath/README.md b/macros/latex/required/amsmath/README.md
index 267418fc5c..9235c7c6b3 100644
--- a/macros/latex/required/amsmath/README.md
+++ b/macros/latex/required/amsmath/README.md
@@ -1,7 +1,7 @@
The amsmath bundle for LaTeX
============================
-Release 2023-06-01
+Release 2023-11-01
Overview
--------
diff --git a/macros/latex/required/amsmath/amsbsy.pdf b/macros/latex/required/amsmath/amsbsy.pdf
index fd67fc9cfa..dba61eacae 100644
--- a/macros/latex/required/amsmath/amsbsy.pdf
+++ b/macros/latex/required/amsmath/amsbsy.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amscd.pdf b/macros/latex/required/amsmath/amscd.pdf
index 823a98bdd7..e993750122 100644
--- a/macros/latex/required/amsmath/amscd.pdf
+++ b/macros/latex/required/amsmath/amscd.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amsgen.pdf b/macros/latex/required/amsmath/amsgen.pdf
index 2fd862962b..87c0c3c6ab 100644
--- a/macros/latex/required/amsmath/amsgen.pdf
+++ b/macros/latex/required/amsmath/amsgen.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amsldoc.pdf b/macros/latex/required/amsmath/amsldoc.pdf
index f9f7824c1f..64ec8110b7 100644
--- a/macros/latex/required/amsmath/amsldoc.pdf
+++ b/macros/latex/required/amsmath/amsldoc.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amsmath.pdf b/macros/latex/required/amsmath/amsmath.pdf
index 43358382aa..4eff5231f7 100644
--- a/macros/latex/required/amsmath/amsmath.pdf
+++ b/macros/latex/required/amsmath/amsmath.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amsopn.pdf b/macros/latex/required/amsmath/amsopn.pdf
index afe2d02c11..f2177722b9 100644
--- a/macros/latex/required/amsmath/amsopn.pdf
+++ b/macros/latex/required/amsmath/amsopn.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amstext.pdf b/macros/latex/required/amsmath/amstext.pdf
index 6af69a0585..31d39a346b 100644
--- a/macros/latex/required/amsmath/amstext.pdf
+++ b/macros/latex/required/amsmath/amstext.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/amsxtra.pdf b/macros/latex/required/amsmath/amsxtra.pdf
index da423751ec..4d1ff74d58 100644
--- a/macros/latex/required/amsmath/amsxtra.pdf
+++ b/macros/latex/required/amsmath/amsxtra.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/changes.txt b/macros/latex/required/amsmath/changes.txt
index 149da6b425..10ce2ec83b 100644
--- a/macros/latex/required/amsmath/changes.txt
+++ b/macros/latex/required/amsmath/changes.txt
@@ -3,6 +3,14 @@ All changes above are only part of the development branch for the next release.
================================================================================
#########################
+# 2023-11-01 Release
+#########################
+
+2023-08-24 David Carlisle <David.Carlisle@latex-project.org>
+
+ * testmath.tex: remove spaces before ~,
+
+#########################
# 2023-06-01 Release
#########################
diff --git a/macros/latex/required/amsmath/subeqn.pdf b/macros/latex/required/amsmath/subeqn.pdf
index ecd2007fc4..e5beafd105 100644
--- a/macros/latex/required/amsmath/subeqn.pdf
+++ b/macros/latex/required/amsmath/subeqn.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/technote.pdf b/macros/latex/required/amsmath/technote.pdf
index 737227c298..b8ebef38d0 100644
--- a/macros/latex/required/amsmath/technote.pdf
+++ b/macros/latex/required/amsmath/technote.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/testmath.pdf b/macros/latex/required/amsmath/testmath.pdf
index 3fe7a82152..51eae10c15 100644
--- a/macros/latex/required/amsmath/testmath.pdf
+++ b/macros/latex/required/amsmath/testmath.pdf
Binary files differ
diff --git a/macros/latex/required/amsmath/testmath.tex b/macros/latex/required/amsmath/testmath.tex
index 069944ee9d..c0df337015 100644
--- a/macros/latex/required/amsmath/testmath.tex
+++ b/macros/latex/required/amsmath/testmath.tex
@@ -1,41 +1,15 @@
%%% ====================================================================
-%%% @LaTeX-file{
-%%% filename = "testmath.tex",
-%%% version = "2.0",
-%%% date = "1999/11/15",
-%%% time = "15:09:17 EST",
-%%% checksum = "07762 2342 7811 82371",
-%%% author = "American Mathematical Society",
-%%% copyright = "Copyright 1995, 1999 American Mathematical Society,
-%%% all rights reserved. Copying of this file is
-%%% authorized only if either:
-%%% (1) you make absolutely no changes to your copy,
-%%% including name; OR
-%%% (2) if you do make changes, you first rename it
-%%% to some other name.",
-%%% address = "American Mathematical Society,
-%%% Technical Support,
-%%% Electronic Products and Services,
-%%% P. O. Box 6248,
-%%% Providence, RI 02940,
-%%% USA",
-%%% telephone = "401-455-4080 or (in the USA and Canada)
-%%% 800-321-4AMS (321-4267)",
-%%% FAX = "401-331-3842",
-%%% email = "tech-support@ams.org (Internet)",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "latex, amsmath, examples, documentation",
-%%% supported = "yes",
-%%% abstract = "This is a test file containing extensive examples of
-%%% mathematical constructs supported by the amsmath
-%%% package.",
-%%% docstring = "The checksum field above contains a CRC-16
-%%% checksum as the first value, followed by the
-%%% equivalent of the standard UNIX wc (word
-%%% count) utility output of lines, words, and
-%%% characters. This is produced by Robert
-%%% Solovay's checksum utility.",
-%%% }
+%%% filename = testmath.tex
+%%% version = 2.0a
+%%% date = 2023/08/24
+%%% author = American Mathematical Society
+%%% copyright = Copyright 1995, 1999 American Mathematical Society
+%%% 2023 LaTeX Project.
+%%% License = https://www.latex-project.org/lppl/lppl-1-3c
+%%% keywords = latex, amsmath, examples, documentation
+%%% abstract = This is a test file containing extensive examples of
+%%% mathematical constructs supported by the amsmath
+%%% package."
%%% ====================================================================
\NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX)
[1994/12/01]% LaTeX date must December 1994 or later
@@ -45,7 +19,7 @@
\title{Sample Paper for the \pkg{amsmath} Package\\
File name: \fn{testmath.tex}}
\author{American Mathematical Society}
-\date{Version 2.0, 1999/11/15}
+\date{Version 2.0a, 2023/08/24}
\usepackage{amsmath,amsthm}
@@ -250,7 +224,7 @@ Then, it follows that
\end{lem}
Note that all basic properties of determinants are direct consequences
-of Lemma ~\ref{lem-det}. Write
+of Lemma~\ref{lem-det}. Write
\begin{equation}\label{sum-bij}
\sum_{j\in\mathbf{n}}b_{ij}\hat y_j=\sum_{j\in\mathbf{n}}b^{(\lambda)}
_{ij}\hat y_j+(b_{ii}-\lambda_i)\hat y_i\hat y
@@ -325,7 +299,7 @@ D(t_1,\dots,t_n)
where $\mathbf{K}(t=1,t_1,\dots,t_n; i|i)$ is the $i$th principal
submatrix of $\mathbf{K}(t=1,t_1,\dots,t_n)$.
-Theorem ~\ref{thm-main} leads to
+Theorem~\ref{thm-main} leads to
\begin{equation}\label{detK1}
\det\mathbf{K}(t_1,t_1,\dots,t_n)
=\sum_{I\in\mathbf{n}}(-1)^{\envert{I}}t^{n-\envert{I}}
@@ -339,7 +313,7 @@ Note that
^{(\lambda)}(\overline{I}|\overline{I})=0.
\end{equation}
-Let $t_i=\hat x_i,i=1,\dots,n$. Lemma ~\ref{lem-per} yields
+Let $t_i=\hat x_i,i=1,\dots,n$. Lemma~\ref{lem-per} yields
\begin{multline}
\biggl(\sum_{\,i\in\mathbf{n}}a_{l _i}x_i\biggr)
\det\mathbf{K}(t=1,x_1,\dots,x_n;l |l )\\
@@ -381,8 +355,8 @@ D(t_1,\dots,t_n)}_{t_i=\left\{\begin{smallmatrix}
\section{Application}
\label{lincomp}
-We consider here the applications of Theorems~\ref{th-info-ow-ow} and
-~\ref{th-weak-ske-owf} to a complete
+We consider here the applications of Theorems~\ref{th-info-ow-ow}
+and~\ref{th-weak-ske-owf} to a complete
multipartite graph $K_{n_1\dots n_p}$. It can be shown that the
number of spanning trees of $K_{n_1\dots n_p}$
may be written
@@ -395,8 +369,7 @@ where
n=n_1+\dots+n_p.
\end{equation}
-It follows from Theorems~\ref{th-info-ow-ow} and
-~\ref{th-weak-ske-owf} that
+It follows from Theorems~\ref{th-info-ow-ow} and~\ref{th-weak-ske-owf} that
\begin{equation}\label{e:barwq}
\begin{split}
H_c&=\frac1{2n}
@@ -423,7 +396,7 @@ H_c&=\frac12\sum^{n-1}_{l =0}
\end{equation}
The enumeration of $H_c$ in a $K_{n_1\dotsm n_p}$ graph can also be
-carried out by Theorem ~\ref{thm-H-param} or ~\ref{thm-asym}
+carried out by Theorem~\ref{thm-H-param} or~\ref{thm-asym}
together with the algebraic method of \eqref{multdef}.
Some elegant representations may be obtained. For example, $H_c$ in
a $K_{n_1n_2n_3}$ graph may be written
@@ -499,7 +472,7 @@ We begin our discussion with the following definition:
A function $H\colon \Re^n \to \Re^n$ is said to be
\emph{B-differentiable} at the point $z$ if (i)~$H$ is Lipschitz
-continuous in a neighborhood of $z$, and (ii)~ there exists a positive
+continuous in a neighborhood of $z$, and (ii)~there exists a positive
homogeneous function $BH(z)\colon \Re^n \to \Re^n$, called the
\emph{B-derivative} of $H$ at $z$, such that
\[ \lim_{v \to 0} \frac{H(z+v) - H(z) - BH(z)v}{\enVert{v}} = 0. \]
@@ -1112,7 +1085,7 @@ A_l =
0,&\text{otherwise }.\end{cases}
\label{compl-bip-gr}
\end{equation}
-Theorem ~\ref{thm-H-param}
+Theorem~\ref{thm-H-param}
leads to
\begin{equation}
H_c=\frac1{n_1+n_2}n_1!n_2!\delta_{n_1n_2}.
diff --git a/macros/latex/required/firstaid/changes.txt b/macros/latex/required/firstaid/changes.txt
index e326957807..8db6a5d0fd 100644
--- a/macros/latex/required/firstaid/changes.txt
+++ b/macros/latex/required/firstaid/changes.txt
@@ -1,3 +1,15 @@
+2023-09-20 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+
+ * latex2e-first-aid-for-external-files.dtx: add firstaid for underscore to
+ make the active char protected and safe for use in csnames.
+
+2023-07-18 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for
+ everysel
+ * latex2e-first-aid-for-external-files.dtx: remove no longer needed code for bidi
+ * latex2e-first-aid-for-external-files.dtx:
+ remove no longer needed code for memoir/stockheight
+
2023-05-20 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
* latex2e-first-aid-for-external-files.dtx: removed temporary fix for
@@ -137,5 +149,3 @@
* latex2e-first-aid-for-external-files.dtx:
Initial version for 2020-10-01 release containing first aid
for packages bidi, filehook and class dinbrief.
-
-
diff --git a/macros/latex/required/firstaid/firstaid.ins b/macros/latex/required/firstaid/firstaid.ins
index cd5ea2006d..22067390cd 100644
--- a/macros/latex/required/firstaid/firstaid.ins
+++ b/macros/latex/required/firstaid/firstaid.ins
@@ -3,7 +3,7 @@
%% driver files from the doc files in this package when run through
%% LaTeX or TeX.
%%
-%% Copyright (C) 2020-2021
+%% Copyright (C) 2020-2023
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%%
@@ -44,7 +44,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) 2020-2021
+Copyright (C) 2020-2023
The LaTeX Project and any individual authors listed elsewhere
in this file.
@@ -72,7 +72,7 @@ without such generated files.
\generate{\file{filehook-ltx.sty}
{\from{latex2e-first-aid-for-external-files.dtx}{filehook-ltx}}}
-\generate{\file{everysel-ltx.sty}
- {\from{latex2e-first-aid-for-external-files.dtx}{everysel-ltx}}}
+\generate{\file{underscore-ltx.sty}
+ {\from{latex2e-first-aid-for-external-files.dtx}{underscore-ltx}}}
\endbatchfile
diff --git a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
index 90958ed777..ed6c898d65 100644
--- a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
+++ b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.dtx
@@ -111,8 +111,8 @@
% \end{macrocode}
%
% \begin{macrocode}
-\def\LaTeXFirstAidDate{2023/05/20}
-\def\LaTeXFirstAidVersion{v1.0z}
+\def\LaTeXFirstAidDate{2023/09/20}
+\def\LaTeXFirstAidVersion{v1.1b}
% \end{macrocode}
%
% \begin{macrocode}
@@ -285,62 +285,10 @@
%</filehook-ltx>
% \end{macrocode}
%
-%
-%
-%
-% \subsection{The \pkg{bidi} package first aid}
-%
-% The \pkg{bidi} package adds a lot of hooks in various places and
-% those added to \cs{document} and \cs{enddocument} are now no
-% longer necessary as the kernel already provides the right hooks
-% there.
-%
-% However, we aren't trying to change that but instead only make
-% sure that the existing patches still work by adding some first
-% aid after \pkg{biditools} has been loaded.
-%
-% If the package gets updated one can easily take that out simply
-% through
-%\begin{verbatim}
-% \RemoveFromHook{file/biditools.sty/after}[firstaid]
-%\end{verbatim}
-% This makes it easy to test new bidi code while the first aid code
-% is still in the kernel.
-%
% \begin{macrocode}
%<*kernel>
% \end{macrocode}
%
-% Bidi is now ar a new version: patches are no longer needed.
-% \begin{macrocode}
-%\AddToHook{file/biditools.sty/after}[firstaid]{%
-% \FirstAidNeededT{biditools}{sty}%
-% {2020/05/13 v2 Programming tools for bidi package}%
-% {%
-% \end{macrocode}
-% \pkg{bidi} adds some code to the beginning of \cs{document} which
-% contains \cs{endgroup} and \cs{begingroup} which is no longer
-% correct.
-%
-% Patching \cs{document} using \cs{bidi@patchcmd} doesn't work so
-% we take the extra groups out by hand:
-% \begin{macrocode}
-% \def\firstaid@bidi@document@patch
-% \endgroup#1\begingroup#2\firstaid@bidi@document@patch
-% {\unexpanded{#1#2}}%
-% \edef\document{\expandafter\firstaid@bidi@document@patch\document
-% \firstaid@bidi@document@patch}%
-% \end{macrocode}
-% There are also some patches into \cs{enddocument}, some continue
-% to go in but one fails, so we add that now into the right place.
-% \begin{macrocode}
-% \AddToHook{enddocument/info}%
-% {\let\bidi@AfterEndDocumentCheckLabelsRerun\@firstofone
-% \bidi@afterenddocumentchecklabelsrerunhook}%
-% }%
-%}
-% \end{macrocode}
-%
% \subsection{The \pkg{dinbrief} class first aid}
%
% Again a case of a no longer correct \cs{endgroup} in document.
@@ -482,46 +430,6 @@
%</kernel>
% \end{macrocode}
%
-% \subsection{The \pkg{everysel} package first aid}
-%
-%
-% The \cs{selectfont} command got a hook (with the 2021/05 release) which
-% was originally provided by the \pkg{everysel}
-% package. Now that it is in the kernel this package is no longer
-% needed (or only in a simplified manner).
-%
-% If it is requested we replace it with a simplified package
-% (until) it gets updated at which point this line can be removed.
-% \changes{v2.2k}{2020/12/04}{Emulate everysel package}
-% \begin{macrocode}
-%<*kernel>
-% this has been updated
-%\declare@file@substitution{everysel.sty}{everysel-ltx.sty}
-%</kernel>
-% \end{macrocode}
-%
-%
-%
-% \begin{macrocode}
-%<*everysel-ltx>
-\ProvidesPackage{everysel-ltx}
- [2020/12/04 v1.0a
- Emulation of the original everysel^^Jpackage with kernel methods]
-% \end{macrocode}
-%
-% \begin{macrocode}
-\newcommand*{\EverySelectfont}[1]
- {\AddToHook{selectfont}{#1}}
-\newcommand*{\AtNextSelectfont}[1]
- {\AddToHookNext{selectfont}{#1}}
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-%</everysel-ltx>
-% \end{macrocode}
-%
-%
%
% \begin{macrocode}
%<*kernel>
@@ -652,32 +560,45 @@
}
% \end{macrocode}
%
-%
-% \subsection{First aid for \pkg{memoir}}
-%
-% The introduction of \cs{stockheight} and \cs{stockwidth} into the
-% kernel requires some first aid. This has to go in \emph{before}
-% loading the class, so we cannot check the version string here.
% \begin{macrocode}
-\AddToHook{file/memoir.cls/before}[firstaid]{%
- \expandafter\def\expandafter\@tempa\string\dimen{}%
- \edef\kernel@stockheight{\expandafter\@tempa\meaning\stockheight}%
- \edef\kernel@stockwidth{\expandafter\@tempa\meaning\stockwidth}%
- \let\stockheight\@undefined
- \let\stockwidth\@undefined
-}
-\AddToHook{file/memoir.cls/after}[firstaid]{%
- \dimen\kernel@stockheight=\stockheight
- \dimen\kernel@stockwidth=\stockwidth
- \dimendef\stockheight=\kernel@stockheight
- \dimendef\stockwidth=\kernel@stockwidth
-}
+%</kernel>
+% \end{macrocode}
+% \subsection{The \pkg{underscore} first aid}
+%
+% The \pkg{underscore} package makes the underscore active. This means that the
+% underscore can not be used in label and references unless the package option \texttt{strings} is used
+% (which patches a selection of problematic commands like \cs{label} and \cs{ref})
+% or \pkg{babel} is used which redefines\footnote{unless the recommended option \texttt{safe=none} is used}
+% a selection of problematic commands like \cs{@testdef} or \cs{@newl@bel}.
+%
+% With the new property commands the work-around do not work. We therefore make the
+% underscore protected and use \cs{ifincsname} to allow its use in csnames.
+%
+% \begin{macrocode}
+%<*underscore-ltx>
+\ProvidesPackage{underscore-ltx}[2023/09/20 LaTeX firstaid to make underscore protected ]
+\begingroup
+ \catcode`\_=\active
+ \protected\gdef _{%
+ \ifincsname %
+ \string_%
+ \else
+ \ifx\protect\@typeset@protect
+ \ifmmode \sb \else \BreakableUnderscore \fi
+ \else
+ \ifx\protect\@unexpandable@protect \noexpand_%
+ \else \protect_%
+ \fi\fi
+ \fi
+ }
+ \global\let\ActiveUnderscore=_
+\endgroup
+%</underscore-ltx>
% \end{macrocode}
-%
-%
-%
-%
% \begin{macrocode}
+%<*kernel>
+\AddToHook{file/underscore.sty/after}[firstaid]{%
+ \FirstAidNeededT{underscore}{sty}{2006/09/13}{\RequirePackage{underscore-ltx}}}
%</kernel>
% \end{macrocode}
%
diff --git a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
index 14434f3755..ffb97f276f 100644
--- a/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
+++ b/macros/latex/required/firstaid/latex2e-first-aid-for-external-files.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/README.md b/macros/latex/required/latex-lab/README.md
index dbb1e72f42..b27d0dc8fb 100644
--- a/macros/latex/required/latex-lab/README.md
+++ b/macros/latex/required/latex-lab/README.md
@@ -1,6 +1,6 @@
# LaTeX laboratory
-Release 2023-06-01
+Release 2023-11-01
## Overview
diff --git a/macros/latex/required/latex-lab/TODOS-unsorted.md b/macros/latex/required/latex-lab/TODOS-unsorted.md
deleted file mode 100644
index 1e2771ae67..0000000000
--- a/macros/latex/required/latex-lab/TODOS-unsorted.md
+++ /dev/null
@@ -1,33 +0,0 @@
-
-# A number of todos (unsorted and incomplete)
-
-
-## Code extensions / cleanup
-
-### theorem-like envs
-
- - this can currently only handle the simple version from LaTeX2e
- - it is missing a proper set of templates
- - it is missing extensions to support different styles (a la amsmath and the like)
-
-
-## Missing basic support
-
- - `\textbf` should probably mapt to `<Strong>`
- - `\emph` should probably map to `<Em>`
-
- - Logos such as `\TeX` and `\LaTeX` should produce proper ActualText
-
-
-
-
-## Package Support
-
-### csquotes
-
- - we can't really grab TeX's basic quotes, e.g.
- ```
- some quotes around ``text'' here
-```
- at least not easily, but we can support `\enquote` and the like
-
diff --git a/macros/latex/required/latex-lab/blocks-code.pdf b/macros/latex/required/latex-lab/blocks-code.pdf
index efd9930bfe..91771be25c 100644
--- a/macros/latex/required/latex-lab/blocks-code.pdf
+++ b/macros/latex/required/latex-lab/blocks-code.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/blocks-code.tex b/macros/latex/required/latex-lab/blocks-code.tex
index f71342d6f5..00bc2fa328 100644
--- a/macros/latex/required/latex-lab/blocks-code.tex
+++ b/macros/latex/required/latex-lab/blocks-code.tex
@@ -1,4 +1,4 @@
% this will typeset documentation + code
\AtBeginDocument{\AlsoImplementation}
-\input{latex-lab-block-tagging.dtx}
+\input{latex-lab-block.dtx}
diff --git a/macros/latex/required/latex-lab/blocks-doc.pdf b/macros/latex/required/latex-lab/blocks-doc.pdf
index 4bbad5d393..5f56e9052f 100644
--- a/macros/latex/required/latex-lab/blocks-doc.pdf
+++ b/macros/latex/required/latex-lab/blocks-doc.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/blocks-doc.tex b/macros/latex/required/latex-lab/blocks-doc.tex
index 39a93479a1..28008be6c0 100644
--- a/macros/latex/required/latex-lab/blocks-doc.tex
+++ b/macros/latex/required/latex-lab/blocks-doc.tex
@@ -1,4 +1,4 @@
% this will typeset documentation + code
\AtBeginDocument{\OnlyDescription}
-\input{latex-lab-block-tagging.dtx}
+\input{latex-lab-block.dtx}
diff --git a/macros/latex/required/latex-lab/changes.txt b/macros/latex/required/latex-lab/changes.txt
index 7e76d74996..1a65830e8b 100644
--- a/macros/latex/required/latex-lab/changes.txt
+++ b/macros/latex/required/latex-lab/changes.txt
@@ -1,14 +1,65 @@
+2023-10-30 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * added latex-lab-table.dtx for basic table tagging.
+
+2023-10-21 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex-lab-minipage.dtx: use sockets to allow local changes
+
+2023-10-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex-lab-toc.dtx, latex-lab-sec.dtx, latex-lab-toc-kernel-changes: extend
+ \MakeLinkTarget to store the target-structure relationship too, see tagging issue #20
+
+2023-10-13 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex-lab-graphic.dtx: fix handling of scale factor, tagging issue #16
+ * latex-lab-graphic.dtx, latex-lab-footnote.dtx: switch to new property referencing code.
+ * latex-lab-math.dtx: fix grabbing of \(..\), tagging issue #19
+
+2023-09-04 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex-lab-math.dtx: fix below display skip, tagging issue #11
+ * latex-lab-math.dtx: allow to use it without tagging.
+ * latex-lab-math.dtx: avoid tagging as math if fakemath is detected, tagging issue #5.
+
+2023-09-04 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * label-lab-new-or-1.dtx latex-lab-new-or-2.dtx
+ fix position of kernel hook in \@makecol (tagpdf issue #58)
+
+2023-09-04 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * documentmetadata-support.dtx: add debug key to load tagpdf-debug.
+ * new latex-lab-namespace.dtx with role mappings
+
+2023-09-01 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
+
+ * latex-lab-block.dtx:
+ end environment \par handling needs to be specified for all display blocks
+ because the standalone receipt should not influence inner environments
+ and vice versa (bug reported in tagging-project/9)
+
+2023-07-21 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * rename latex-lab-toc-tagging.dtx to latex-lab-toc.dtx
+ * clean up versions and package declarations
+ * remove firstaid for ltugboat, this is now handled by the class
+ * do not load glyphtounicode with dvilualatex
+
+2023-07-19 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * really rename sec-tagging to sec
+ * really rename toc-tagging to toc
+ * rename block-tagging to block
+ * rename mathtagging to math
+ * document testphase key sec, toc, math, graphic, block
+
+2023-06-21 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+ * latex-lab-sec.dtx: redefine \part only if it defined (letter.cls ...)
+ * latex-lab-block-tagging: add definition for verse
+
2023-06-07 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
- * latex-lab-block-tagging.dtx corrected tagging of caption
- * new latex-lab-firstaid.dtx with adaptions to external packages
- * latex-lab-float.dtx: declare variable
- * latex-lab-toc-hyperref-changes: use hooks with arguments
- * latex-lab-toc-kernel-changes: use hooks with arguments
- * latex-lab-sec.dtx: provide \pdfgentounicode with lualatex
-
+ * latex-lab-block-tagging.dtx corrected tagging of caption
+ * new latex-lab-firstaid.dtx with adaptions to external packages
+ * latex-lab-float.dtx: declare variable
+ * latex-lab-toc-hyperref-changes: use hooks with arguments
+ * latex-lab-toc-kernel-changes: use hooks with arguments
+ * latex-lab-sec.dtx: provide \pdfgentounicode with lualatex
+
2023-05-20 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
- * renamed latex-lab-sec-tagging -> latex-lab-sec for consistency
-
+ * renamed latex-lab-sec-tagging -> latex-lab-sec for consistency
2023-05-19 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
* new latex-lab-bib.dtx:
@@ -18,10 +69,10 @@
2023-05-18 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
* new latex-lab-floats.dtx:
tagging support for float environments
- * new latex-lab-graphic.dtx
- tagging support for includegraphics and picture environment
- * new latex-lab-minipage.dtx
- tagging support for minipage and parbox
+ * new latex-lab-graphic.dtx
+ tagging support for includegraphics and picture environment
+ * new latex-lab-minipage.dtx
+ tagging support for minipage and parbox
2023-05-16 Frank Mittelbach <Frank.Mittelbach@latex-project.org>
diff --git a/macros/latex/required/latex-lab/documentmetadata-support-code.pdf b/macros/latex/required/latex-lab/documentmetadata-support-code.pdf
index bf0d11a71a..d419630dff 100644
--- a/macros/latex/required/latex-lab/documentmetadata-support-code.pdf
+++ b/macros/latex/required/latex-lab/documentmetadata-support-code.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/documentmetadata-support-doc.pdf b/macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
index ce81773be5..a1c42b21f4 100644
--- a/macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
+++ b/macros/latex/required/latex-lab/documentmetadata-support-doc.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/documentmetadata-support.dtx b/macros/latex/required/latex-lab/documentmetadata-support.dtx
index 0dccdd87cb..b37ae6c9d7 100644
--- a/macros/latex/required/latex-lab/documentmetadata-support.dtx
+++ b/macros/latex/required/latex-lab/documentmetadata-support.dtx
@@ -18,8 +18,8 @@
% for those people who are interested or want to report an issue.
%
% \begin{macrocode}
-\def\documentmetadatasupportversion{1.0d}
-\def\documentmetadatasupportdate{2023-06-07}
+\def\documentmetadatasupportversion{1.0f}
+\def\documentmetadatasupportdate{2023-09-01}
% \end{macrocode}
%
%
@@ -139,7 +139,7 @@
% |pdfstandard| can be used more than once to set overlapping standards, e.g:\\
% |pdfstandard=A-2b,pdfstandard=X-4,pdfstandard=UA-1|
%
-% If XMP-metadata are added (see the following key \texttt{xmp}
+% If XMP-metadata are added (see the following key \texttt{xmp})
% the needed conformance marker for the standards are set.
%
% More information can be found in the documentation
@@ -151,9 +151,13 @@
% \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.
+% \item[\texttt{testphase}] This key is used to load testphase code.
+% The |testphase| key can only be used in the first \cs{DocumentMetadata}.
+% 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. The key accepts a list of values
+% and it can be used more than once.
+%
+% The \texttt{phase} key bundle testphase modules. They also all activate tagging.
% \begin{description}
% \item[\texttt{phase-I}]
% This value loads code implementing the first phase of the project~\cite{blueprint}, i.e., it
@@ -172,7 +176,13 @@
% table of contents and similar lists, graphics, minipages and floats.
% As it redefines many internals it is currently restricted to the use of
% standard classes (article, report, and book)
-% and it supports only a limited number of add-on packages.
+% and it supports only a limited number of add-on packages.
+% \end{description}
+%
+% The various testphase modules can also be loaded individually (and least in theory,
+% there can be hidden dependencies). If loaded like this, the tagpdf package is not
+% loaded and tagging is not activated! The list of modules will change over time.
+% \begin{description}
% \item[\texttt{new-or-1}] This patches a few commands related
% to the output routine. The patches are needed for the tagging
% of paragraphs, for the tagging of header and footer and
@@ -183,8 +193,32 @@
% \item[\texttt{new-or}] This loads more changes to the output routine required for the
% tagging. It is not compatible with every class! The code is also loaded by the
% \texttt{phase-II} value.
+% \item[\texttt{sec}] This adapts commands related to sectioning to make them tagging aware.
+% The \texttt{sec} module is loaded by \texttt{phase-III}.
+% \item[\texttt{toc}] This adapts commands related to the table of contents and
+% similar list to make them tagging aware. The \texttt{toc} module is loaded by \texttt{phase-III}.
+% \item[\texttt{graphic}] This enables tagging support for
+% the \cs{includegraphics} command and the \texttt{picture} environment.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{block}] This reimplements lists and blocks environments and
+% add tagging support.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{minipage}] This adds tagging support to \texttt{minipage}
+% and \cs{parbox}.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{float}] This adds tagging support to floats.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{bib}] This adds tagging support to citations and bibliographies.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{text}] This module adds tagging support to the \LaTeX{} logo and
+% to the \cs{emph} command.
+% This code is also loaded by the \texttt{phase-III} key.
+% \item[\texttt{math}] This adapts math for tagging. This is only a prototype.
+% The module is currently not loaded by any \texttt{phase} key.
+% \item[\texttt{firstaid}] This contains small adjustments to external packages.
+% The module is currently not loaded by any \texttt{phase} key.
% \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:
@@ -200,7 +234,10 @@
% \item[\texttt{xmp-export}] This will export the XMP-metadata to a file \verb+\jobname.xmpi+.
% with \texttt{debug=\{xmp-export=filename\}} the file name can be changed.
% More information can be found in the documentation of \pkg{l3pdfmeta} of the \pkg{pdfmanagement-testphase}
-% bundle.
+% bundle.
+% \item[\texttt{tagpdf}] This loads the package tagpdf-debug which enhances
+% various commands from tagpdf with additional debugging options. This can slow down
+% the compilation!
% \end{description}
% \end{description}
%
@@ -426,6 +463,16 @@
\tagpdfsetup{log=#1}
}
}
+ ,debug / tagpdf .code:n =
+ {
+ \AddToHook
+ {
+ package/tagpdf/after
+ }
+ {
+ \RequirePackage{tagpdf-debug}
+ }
+ }
,debug / uncompress .code:n =
{
\pdf_uncompress:
diff --git a/macros/latex/required/latex-lab/latex-lab-amsmath.pdf b/macros/latex/required/latex-lab/latex-lab-amsmath.pdf
index 9c53d2ba81..54ffaaf99a 100644
--- a/macros/latex/required/latex-lab/latex-lab-amsmath.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-amsmath.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-bib.dtx b/macros/latex/required/latex-lab/latex-lab-bib.dtx
index 9a5ee81720..a467bf3158 100644
--- a/macros/latex/required/latex-lab/latex-lab-bib.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-bib.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabbibdate{2023-07-20}
+\def\ltlabbibversion{0.81a}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -31,7 +33,7 @@
% Changes and additions to the kernel related to tagging and links in citations and
% bibliography entries}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.81 2023-06-07}
+% \date{v\ltlabbibversion\ \ltlabbibdate}
%
% \maketitle
%
@@ -129,12 +131,12 @@
%<@@=tag>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-bib} {2023-05-18} {0.8}
+\ProvidesExplPackage {latex-lab-testphase-bib} {\ltlabbibdate} {\ltlabbibversion}
{Code related to the tagging of bibliography and cite command}
% \end{macrocode}
% We need at least the block tagging code.
% \begin{macrocode}
-\RequirePackage{latex-lab-testphase-block-tagging}
+\RequirePackage{latex-lab-testphase-block}
% \end{macrocode}
%
% At first we suppress the patches from hyperref. This will only work with the next
@@ -398,7 +400,8 @@
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{bib-latex-lab-testphase.ltx}
- [2023-05-18 v0.8 code related to the tagging of bib and citations]
+ [\ltlabbibdate\space v\ltlabbibversion\space
+ latex-lab wrapper bib]
\RequirePackage{latex-lab-testphase-bib}
diff --git a/macros/latex/required/latex-lab/latex-lab-bib.pdf b/macros/latex/required/latex-lab/latex-lab-bib.pdf
index 99f4722dc2..fabcc7cfa3 100644
--- a/macros/latex/required/latex-lab/latex-lab-bib.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-bib.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-block-tagging.dtx b/macros/latex/required/latex-lab/latex-lab-block.dtx
index 63145d929e..e0a723ca87 100644
--- a/macros/latex/required/latex-lab/latex-lab-block-tagging.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-block.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: latex-lab-block-tagging.dtx (C) Copyright 2021-2023 LaTeX Project
+%% File: latex-lab-block.dtx (C) Copyright 2021-2023 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
@@ -9,7 +9,8 @@
%
% https://www.latex-project.org/lppl.txt
%
-%
+\def\ltlabblockdate{2023-09-01}
+\def\ltlabblockversion{0.8h}
%<*driver>
\documentclass{l3doc}
\usepackage{amstext}
@@ -19,21 +20,25 @@
\usepackage{todonotes}
\begin{document}
- \DocInput{latex-lab-block-tagging.dtx}
+ \DocInput{latex-lab-block.dtx}
\end{document}
%</driver>
%
% \fi
%
-
-\def\ltblocksversion{v0.8d}
-\def\ltblocksdate{2023/06/07}
-
+% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}}
+% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}}
+% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}}
+%
+% \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+% \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
+%
%
% \title{Prototype reimplementation of \LaTeXe{}'s block environments using templates}
% \author{\LaTeX{} Project\thanks{Initial reimplementation of lists done by Bruno
% Le Floch, generalized second version with tagging support by Frank Mittelbach.}}
-% \date{\ltblocksversion\ \ltblocksdate}
+% \date{v\ltlabblockversion\ \ltlabblockdate}
%
% \maketitle
%
@@ -253,7 +258,7 @@
% \TemplateKey{max-inner-levels}{tokenlist}{Maximum number of nested
% environments of this kind. Only relevant if there is a
% \key{inner-level-counter} specified}{4}
-% \TemplateKey{inner-instance-type}{tokenlist}{Opject type of the
+% \TemplateKey{inner-instance-type}{tokenlist}{Object type of the
% inner instance}{list}
% \TemplateKey{inner-instance}{tokenlist}{Name of the inner instance
% (if any).}{}
@@ -544,6 +549,30 @@
% \key{tagging-recipe} of the \xt{blockenv} template. Currently the
% following values are implemented:
% \begin{description}
+% \item[\texttt{standalone}]
+% This recipe does the following:
+% \begin{itemize}
+% \item
+% Ensure that the \xt{blockenv} is not inside a \struct{text-unit}
+% structure. If necessary, close the open one (and any open
+% \struct{text} structure).
+%
+% \item
+% Text inside the body of the environment start with
+% \struct{text-unit}\struct{text} unless the key
+% \key{para-flattened} is set to \texttt{true}
+% (which is most likely the wrong thing to do because we then get just
+% \struct{text} as the structure).
+%
+% \item
+% At the end of the environment close \struct{/text} and possibly an
+% inner \struct{/text-unit} if open.
+%
+% \item
+% Finally, ensure that after the environment a new
+% \struct{text-unit} is started, if appropriate, e.g., if text is following.
+% \end{itemize}
+%
% \item[\texttt{basic}]
% This recipe does the following:
% \begin{itemize}
@@ -555,7 +584,7 @@
% leave the \struct{text-unit} open.
%
% \item
-% Text inside the body of the environment starts with
+% Text inside the body of the environment start with
% \struct{text-unit}\struct{text} if \key{para-flattened} is set to \texttt{false},
% otherwise just with \struct{text}.
%
@@ -571,7 +600,6 @@
% paragraph indentation)
% \end{itemize}
%
-%
% \item[\texttt{standard}]
% This recipe is like the \texttt{basic} one as far as handling
% \struct{text-unit} and \struct{text} is concerned. In addition
@@ -641,8 +669,8 @@
%
%
% \begin{macrocode}
-\ProvidesPackage {latex-lab-testphase-block-tagging}
- [\ltblocksdate\space \ltblocksversion\space
+\ProvidesPackage {latex-lab-testphase-block}
+ [\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
% \end{macrocode}
%
@@ -886,17 +914,6 @@
% \end{macrocode}
% \end{macro}
%
-%
-% \begin{macro}{\tag_if_active:T}
-% If tagging support is not loaded then we shouldn't try to execute
-% any tagging related commands. Eventually this can go once the
-% basic support is available in the kernel.
-% \fmi{can vanish one day}
-% \begin{macrocode}
-\cs_if_exist:NF \tag_if_active:T
- { \cs_new_eq:NN \tag_if_active:T \use_none:n }
-% \end{macrocode}
-% \end{macro}
%
% \subsubsection{Debugging}
%
@@ -1143,8 +1160,6 @@
% \end{macro}
%
%
-%
-%
% \subsubsection{Standard list environments}
%
%
@@ -1173,8 +1188,32 @@
% \end{environment}
%
%
+% \subsubsection{verse environment}
%
-%
+% \begin{environment}{verse}
+% The verse environment has not special tagging currently. It is
+% defined as a simple standard list and takes the tagging from there.
+% But it must be redefined so that \cs{itemindent} is correctly set.
+% \begin{macrocode}
+\AddToHook{begindocument/before}{
+ \RenewDocumentEnvironment{verse}{ !O{} }
+ {
+ \let\\\@centercr
+ \UseInstance{blockenv}{list}
+ {
+ item-indent=-1.5em,
+ parindent=-1.5em,
+ item-skip=0pt,
+ rightmargin=\leftmargin,
+ leftmargin=\leftmargin+1.5em,
+ #1
+ }
+ \item\relax
+ }
+ { \endblockenv }
+ }
+% \end{macrocode}
+% \end{environment}
%
%
% \begin{environment}{list}
@@ -1201,12 +1240,6 @@
}
% \end{macrocode}
%
-% Again something that should probably elsewhere: the rolemapping.
-% \begin{macrocode}
-\tag_if_active:T {
- \tagpdfsetup{add-new-tag={tag=list,role=L}}
-}
-% \end{macrocode}
% \end{environment}
%
%
@@ -1339,20 +1372,42 @@
% \end{macrocode}
% \end{macro}
%
+% \begin{macro}{\@thm}
+% \cs{@thm} executes \cs{refstepcounter} too early for hyperref
+% and structure destinations: the generated target is outside the structure
+% and can be separated from the theorem by a page break. We therefore move
+% the anchor setting into \cs{@begintheorem}. \cs{@begintheorem} doesn't
+% currently get the name of the counter as argument, so we store it in variable
+% for now, to be able to pass it along.
+% \begin{macrocode}
+\tl_new:N \l_@@_thm_current_counter_tl
+\def\@thm#1#2{%
+ \@kernel@refstepcounter{#1}
+ \tl_set:Nn \l_@@_thm_current_counter_tl{#1}
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+% \end{macrocode}
+% To avoid that hyperref overwrites the definition again we must its patch:
+% \begin{macrocode}
+\def\hyper@nopatch@thm{}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\@begintheorem,\@opargbegintheorem}
%
% The \cs{@thm} command expands to either \cs{@beginthorem} or
% \cs{@opargbegintheorem}. For the moment we stick with this as it
-% will help with the transion. But instead of using a
+% will help with the transition. But instead of using a
% \env{trivlist} we use a blockenv and some tagging for the title
% (as a Caption).
% We do not want potential tagging from \cs{textbf} here,
-% so we use \cs{bfseries} to set the font.
+% so we use \cs{bfseries} to set the font. The commands set also the link targets
+% which should be inside the main structure.
% \begin{macrocode}
\def\@begintheorem#1#2{
\UseInstance{blockenv}{theorem}{}
\tagpdfparaOff
- \mode_leave_vertical:
+ \mode_leave_vertical:
+ \MakeLinkTarget{\l_@@_thm_current_counter_tl}
\tag_struct_begin:n{tag=Caption}
\group_begin:
\bfseries
@@ -1382,6 +1437,7 @@
\UseInstance{blockenv}{theorem}{}
\tagpdfparaOff
\mode_leave_vertical:
+ \MakeLinkTarget{\l_@@_thm_current_counter_tl}
\tag_struct_begin:n{tag=Caption}
\group_begin:
\bfseries
@@ -1470,7 +1526,7 @@
\tl_if_empty:nF {#1} { \SetTemplateKeys{blockenv}{display}{#1} }
%
% \end{macrocode}
-% We need to know later if we haved nested blockenvs inside
+% We need to know later if we have nested blockenvs inside
% a flattened environment. Whenever we start a new blockenv we
% increment \cs{\l_@@_flattened_level_int} if it is already
% different from zero. If it is zero we increment it if flattening
@@ -1556,7 +1612,7 @@
\UseInstance{para}{ \l_@@_para_instance_tl } {}
}
% \end{macrocode}
-% In the inner instance may have its own levels or none depending
+% The inner instance may have its own levels or none depending
% on which the instance name differs. Again we pass it the optional
% key/value list.
% \begin{macrocode}
@@ -1594,7 +1650,7 @@
%
% \begin{macro}{\c@maxblocklevels}
% A counter to increase or decrease the number of supported
-% level. If increased, one needs to suply additional level instances.
+% level. If increased, one needs to supply additional level instances.
% \begin{macrocode}
\newcounter{maxblocklevels}
\setcounter{maxblocklevels}{6}
@@ -1668,7 +1724,7 @@
% point here, i.e., only if the list didn't start a paragraph. One
% can make a case for that, but it can be somewhat surprising to
% the user and there is a good argument that even such a list could
-% be followed expanatory text that is part of the same paragraph
+% be followed explanatory text that is part of the same paragraph
% and doesn't start a new one.\fmi{decide which logic we want to
% use! If the old logic is used we need to close the text-unit
% ourselves in the true branch}
@@ -1679,18 +1735,13 @@
% So this is for now always done. Probably \cs{l_@@_topsepadd_skip} above
% should be added only if the paragraph ends here and not if it
% continues, so this need some further cleanup.\fmi{decide}
- % \begin{macrocode}
- \bool_if:NTF \l_@@_standalone_bool
-% \end{macrocode}
-% It is possible that \texttt{@endpe} is true because a
-% displayblock has just ended before we end the standalone
-% displayblock and in that casevthere is no outer
-% \struct{text-unit} so we have to explicitly set \texttt{@endpe}
-% back to false to prevent it from closing a structure later that
-% isn't there.
+%
+% Finally, we have a socket that handles the \cs{par} handling
+% after the block. Normally, we use it with the \plug{on} plug (check for a
+% following \cs{par}) but in the case of standalone environments we
+% assign it the \plug{off} plug.
% \begin{macrocode}
- { \legacy_if_gset_false:n { @endpe } }
- { \legacy_if_gset_true:n { @endpe } }
+ \socket_use:n {tagsupport/block-endpe}
}
% \end{macrocode}
%
@@ -1708,13 +1759,29 @@
%
%
%
-% \begin{macro}{\l_@@_standalone_bool}
-%
+% \begin{socketdecl}{tagsupport/block-endpe}
+% This socket is responsible for the end environment \cs{par}
+% handling. We define two plugs for it (\plug{on} and \plug{off}).
% \begin{macrocode}
-\bool_new:N \l_@@_standalone_bool
-\bool_set_false:N \l_@@_standalone_bool
+\socket_new:nn {tagsupport/block-endpe}{0}
% \end{macrocode}
-% \end{macro}
+% \end{socketdecl}
+%
+% \begin{plugdecl}{on,off}
+% The plugs set the legacy \texttt{@endpe} switch. This must always
+% happen because block environments with different settings can be nested
+% and should not inherit the setting from the outer environment.
+% \begin{macrocode}
+\socket_new_plug:nnn{tagsupport/block-endpe}{on}
+ { \legacy_if_gset_true:n { @endpe } }
+\socket_new_plug:nnn{tagsupport/block-endpe}{off}
+ { \legacy_if_gset_false:n { @endpe } }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\socket_assign_plug:nn{tagsupport/block-endpe}{on}
+% \end{macrocode}
+% \end{plugdecl}
%
%
%
@@ -2247,7 +2314,7 @@
% \end{macrocode}
% \end{variable}
%
-% \begin{macro}{\@@_make_label_box:n, \@@_label_format:x}
+% \begin{macro}{\@@_make_label_box:n, \@@_label_format:e}
% Make one label, wrapped in \cs{@@_label_format:n}, with an
% appropriate \tn{strut} and possibly \tn{makelabel} in compatibility
% mode (used for the \env{list} environment).
@@ -2516,6 +2583,10 @@
\@@_beginpar_vmode:
\let \__kernel_displayblock_begin: \prg_do_nothing:
\let \__kernel_displayblock_end: \prg_do_nothing:
+% \end{macrocode}
+% End environment \cs{par} handling:
+% \begin{macrocode}
+ \socket_assign_plug:nn{tagsupport/block-endpe}{on}
}
% \end{macrocode}
% \end{macro}
@@ -2534,9 +2605,9 @@
\cs_set_eq:NN \__kernel_displayblock_begin: \@@_inner_begin:
\cs_set_eq:NN \__kernel_displayblock_end: \@@_inner_end:
% \end{macrocode}
-%
+% End environment \cs{par} handling:
% \begin{macrocode}
- \bool_set_true:N \l_@@_standalone_bool
+ \socket_assign_plug:nn{tagsupport/block-endpe}{off}
% \end{macrocode}
%
% \begin{macrocode}
@@ -2574,6 +2645,10 @@
\cs_set_eq:NN \__kernel_displayblock_begin: \@@_inner_begin:
\cs_set_eq:NN \__kernel_displayblock_end: \@@_inner_end:
% \end{macrocode}
+% End environment \cs{par} handling:
+% \begin{macrocode}
+ \socket_assign_plug:nn{tagsupport/block-endpe}{on}
+% \end{macrocode}
%
% \begin{macrocode}
\tl_if_empty:NTF \l_@@_tag_name_tl
@@ -2598,7 +2673,7 @@
% \begin{itemize}
% \item It opens a \struct{text-unit}-structure or keeps the current one open (only
% closing the MC).
-% \item It then starts a new structure rollmapped to L-structure
+% \item It then starts a new structure rolemapped to L-structure
% and arranges for handling list items, e.g., Li, Lbl and LBody
% structures.
% \item At the end it closes open list structures as needed but
@@ -2624,6 +2699,11 @@
\cs_set_eq:NN \__kernel_list_item_begin: \@@_list_item_begin:
\cs_set_eq:NN \__kernel_list_item_end: \@@_list_item_end:
% \end{macrocode}
+% End environment \cs{par} handling:
+% \begin{macrocode}
+ \socket_assign_plug:nn{tagsupport/block-endpe}{on}
+% \end{macrocode}
+%
% Handle the tag name and attribute classess using the key values
% from the current list instance.
% \begin{macrocode}
@@ -2753,14 +2833,7 @@
% \subsubsection{Blockquote instances}
%
% \begin{instance}{blockenv quotation}
-%
-% \begin{macrocode}
-\tag_if_active:T {
- \tagpdfsetup{add-new-tag={tag=quote,role=BlockQuote}}
- \tagpdfsetup{add-new-tag={tag=quotation,role=BlockQuote}}
-}
-% \end{macrocode}
-%
+ %
% \begin{macrocode}
\DeclareInstance{blockenv}{quotation}{display}
{
@@ -2851,32 +2924,15 @@
}
% \end{macrocode}
%
-% We use \struct{theorem-like} as the structure name and rollmap it
+% We use \struct{theorem-like} as the structure name and rolemap it
% to a \struct{Sect} because that can hold a \struct{Caption}.
-% \begin{macrocode}
-\tag_if_active:T {
- \tagpdfsetup{add-new-tag={tag=theorem-like,role=Sect}}
-}
-% \end{macrocode}
-%
-%
-%
%
% \subsubsection{Verbatim instances}
%
% \begin{instance}{blockenv verbatim}
%
-% \begin{macrocode}
-\tag_if_active:T {
- \tagpdfsetup{add-new-tag={tag=verbatim,role=P}}
- \tagpdfsetup{add-new-tag={tag=codeline,role=Sub}}
-% \end{macrocode}
-% Possible alternative for PDF 1.7:
-% \begin{macrocode}
-% \tagpdfsetup{add-new-tag={tag=verbatim,role=Div}}
-% \tagpdfsetup{add-new-tag={tag=codeline,role=P}}
-}
-% \end{macrocode}
+% The rolemapping is current verbatim to P and codeline to Sub (which is role mapped
+% to Span in pdf 1.7. Alternatives for PDF 1.7: Div and P.
%
% \begin{macrocode}
\DeclareInstance{blockenv}{verbatim}{display}
@@ -3118,7 +3174,7 @@
% block list-5,
% block list-6 }
% The block instances for the various list environments use the
-% same underlying instance (well by default) and nothing nothing
+% same underlying instance (well by default) and nothing
% needs to be set up specifically (because that is already done in
% the legacy \cs{list\meta{romannumeral}} unless a
% different layout is wanted.
@@ -3149,7 +3205,7 @@
% \subsection{List instances for the standard lists}
%
% For all list instances we have to say what kind of label we want
-% (\texttt{label-instance}) and how it should beformatted.
+% (\texttt{label-instance}) and how it should be formatted.
%
% \begin{instance}{list itemize-1,
% list itemize-2,
@@ -3339,7 +3395,7 @@
% All of the following definitions should only be made if tagging
% is active!
% \begin{macrocode}
-\tag_if_active:T {
+\tag_if_active:TF {
% \end{macrocode}
%
% \begin{macro}{\@@_beginpar_vmode:}
@@ -3417,7 +3473,7 @@
% e.g., \verb=...\end{itemize} \item ...\par= it can happen that
% \cs{__kernel_displayblock_doendpe:} is called while
% \texttt{@endpe} is already handled and then we should not attempt
-% to close a \texttt{text-unit} structure. So we need to check for this.
+% to close a \texttt{text-unit} structure). So we need to check for this.
% \begin{macrocode}
\legacy_if:nT { @endpe }
{
@@ -3425,7 +3481,7 @@
% If the display block currently ending was \enquote{flattened}
% (i.e., uses simplified paragraphs that are not tagged by a
% combination of \texttt{text-unit} followed by \struct{text}, but simply
-% with a \struct{text},
+% with a \struct{text}),
% then we don't have to do anything, because the \struct{text} is already closed.
% \begin{macrocode}
\@@_debug_typeout:n
@@ -3450,7 +3506,7 @@
%
% Paragraph tagging is mainly done using the paragraph hooks (will
% get moved eventually). The default hook setting is not good
-% enough when lists get suppported: we need to delay starting the
+% enough when lists get supported: we need to delay starting the
% paragraph tagging if we still have to place the list label.
% We therefore remove the existing hook data and replace it with an
% augmented version (this will get combined eventually).
@@ -3511,7 +3567,7 @@
}
% \end{macrocode}
% The same code, but without testing \texttt{@endpe}. This is not
-% needed in the standalong e case and wrong inside lists.
+% needed in the standalone case and wrong inside lists.
% \begin{macrocode}
\cs_new_protected:Npn \@@_start_para_structure_unconditionally:n #1 {
\bool_if:NF \l__tag_para_flattened_bool
@@ -3532,14 +3588,6 @@
% \end{macrocode}
% \end{macro}
%
-%
-%
-% \begin{macrocode}
-\tag_if_active:T {
-% \tagpdfsetup{add-new-tag={tag=text-unit,role=Part}}
-}
-% \end{macrocode}
-%
% \begin{macrocode}
\RemoveFromHook{para/end}[tagpdf]
\AddToHook{para/end}
@@ -3600,8 +3648,6 @@
\cs_set_eq:NN \endgraf \para_end:
% \end{macrocode}
%
-% \begin{macrocode}
-% \end{macrocode}
% \end{macro}
%
%
@@ -3817,16 +3863,16 @@
}
% \end{macrocode}
% \end{macro}
-%
-%
-%
-%
-%
-%
% End of tagging related declarations.
% \begin{macrocode}
}
% \end{macrocode}
+% These command should have a dummy declaration if tagging is not active
+% \begin{macrocode}
+{
+ \cs_new:Npn \@@_start_para_structure_unconditionally:n #1 {}
+}
+% \end{macrocode}
%
%
%
@@ -3844,10 +3890,10 @@
%
% \begin{macrocode}
%<*latex-lab>
-\ProvidesFile{block-tagging-latex-lab-testphase.ltx}
- [\ltblocksdate\space \ltblocksversion\space
+\ProvidesFile{block-latex-lab-testphase.ltx}
+ [\ltlabblockdate\space v\ltlabblockversion\space
blockenv implementation]
-\RequirePackage{latex-lab-testphase-block-tagging}
+\RequirePackage{latex-lab-testphase-block}
%</latex-lab>
% \end{macrocode}
%
diff --git a/macros/latex/required/latex-lab/latex-lab-block-tagging.pdf b/macros/latex/required/latex-lab/latex-lab-block.pdf
index 7b35aa4c7f..ad89aede81 100644
--- a/macros/latex/required/latex-lab/latex-lab-block-tagging.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-block.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-firstaid.dtx b/macros/latex/required/latex-lab/latex-lab-firstaid.dtx
index 8f474e6b12..e2ee78b2ff 100644
--- a/macros/latex/required/latex-lab/latex-lab-firstaid.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-firstaid.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabfirstaiddate{2023-07-20}
+\def\ltlabfirstaidversion{0.85a}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -28,9 +30,9 @@
% \fi
%
% \title{The \textsf{latex-lab-firstaid} package\\
-% Temporary patches to external packages}
+% Temporary patches to external packages needed for the tagging project}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.80 2023-06-04}
+% \date{v\ltlabfirstaidversion\ \ltlabfirstaiddate}
%
% \maketitle
%
@@ -58,8 +60,9 @@
%<@@=tag>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesPackage {latex-lab-testphase-firstaid} [2023-06-04 v0.8
- Temporary patches to external packages need for the tagging project]
+\ProvidesPackage {latex-lab-testphase-firstaid} [%
+ \ltlabfirstaiddate\space v\ltlabfirstaiddate\space
+ Temporary patches to external packages needed for the tagging project]
% \end{macrocode}
% \subsection{blindtext}
@@ -103,43 +106,38 @@
}%
}
% \end{macrocode}
-% \subsection{ltugboat}
-% ltugboat need only a redefinition of \cs{l@section} to add the hooks
+% \subsection{cleveref}
+% The cleveref package redefines \cs{@makefntext} and this means that the patches in
+% the new footnote code fails. We use a hook instead
% \begin{macrocode}
-\AddToHook{file/ltugboat.cls/after}
+\AddToHook{package/cleveref/after}
{
- \def\l@section#1#2{\addpenalty{\@secpenalty}%
- \addvspace{\TBtocsectionspace}%
- \@tempdima 1.5em
- \begingroup
- \parindent\z@ \rightskip\z@ % article style makes \rightskip > 0
- \parfillskip\z@
- \TBtocsectionfont
- \leavevmode\advance\leftskip\@tempdima\hskip-\leftskip
- \UseHookWithArguments{contentsline/text/before}{4}
- {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
- \csname contentsline@text@1@format\endcsname{#1}%
- \UseHookWithArguments{contentsline/text/after}{4}
- {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
- \nobreak\hfil
- \nobreak\hb@xt@\@pnumwidth{\hss
- \UseHookWithArguments{contentsline/page/before}{4}
- {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
- #2%
- \UseHookWithArguments{contentsline/page/after}{4}
- {\toclevel@part}{#1}{#2}{\@contentsline@destination}%
- }\par
- \endgroup}
- }
+ \let\@makefntext\cref@old@makefntext
+ \AddToHook{cmd/@makefntext/before}{%
+ \cref@constructprefix{footnote}{\cref@result}%
+ \protected@edef\cref@currentlabel{%
+ [footnote][\arabic{footnote}][\cref@result]%
+ \p@footnote\@thefnmark}}
+% \end{macrocode}
+% The second problem is that it redefines \cs{refstepcounter} to use an argument.
+% In itself this isn't a problem but as the new definition doesn't grab the arguments
+% directly it fails over the generic hook inserted at the end of the definition
+% \begin{macrocode}
+ \RenewDocumentCommand\refstepcounter{om}{%
+ \IfNoValueTF{#1}%
+ {\refstepcounter@noarg{#2}}%
+ {\refstepcounter@optarg[#1]{#2}}%
+ }%
+ }
% \end{macrocode}
-
% \begin{macrocode}
%</package>
% \end{macrocode}
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{firstaid-latex-lab-testphase.ltx}
- [2023-06-04 v0.8 Temporary patches to external packages need for the tagging project]
+ [\ltlabfirstaiddate\space v\ltlabfirstaidversion\space
+ latex-lab wrapper firstaid]
\RequirePackage{latex-lab-testphase-firstaid}
diff --git a/macros/latex/required/latex-lab/latex-lab-firstaid.pdf b/macros/latex/required/latex-lab/latex-lab-firstaid.pdf
index e1f696499d..c2b3b49a43 100644
--- a/macros/latex/required/latex-lab/latex-lab-firstaid.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-firstaid.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-float.dtx b/macros/latex/required/latex-lab/latex-lab-float.dtx
index 430b2aec96..3bd3483600 100644
--- a/macros/latex/required/latex-lab/latex-lab-float.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-float.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabfloatdate{2023-07-20}
+\def\ltlabfloatversion{0.81a}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -31,7 +33,7 @@
% \title{The \textsf{latex-lab-floats} package\\
% Tagging of floats }
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{v0.81 2023-06-07}
+% \date{v\ltlabfloatversion\ \ltlabfloatdate}
%
% \maketitle
%
@@ -128,17 +130,11 @@
% \begin{implementation}
% \section{Implementation}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-float} {2023-04-28} {0.8}
+\ProvidesExplPackage {latex-lab-testphase-float} {\ltlabfloatdate} {\ltlabfloatversion}
{Code related to the tagging of floats}
% \end{macrocode}
% \subsection{Variables}
-% We rolemap to Aside, and float sections to Sect
-%
-% \begin{macrocode}
-\tagpdfsetup{add-new-tag=float/Aside}
-\tagpdfsetup{add-new-tag=figures/Sect}
-\tagpdfsetup{add-new-tag=tables/Sect}
-% \end{macrocode}
+% We rolemap to float to Aside, and float sections to Sect.
%
% \begin{variable}{
% \g_@@_float_sect_prop,
@@ -408,6 +404,32 @@
\fi
\fi
}
+% \end{macrocode}
+% and similar for double floats:
+% \begin{macrocode}
+\def\end@dblfloat{%
+ \if@twocolumn
+ \@endfloatbox
+ \@nameuse{@@_float_end:}%
+ \ifnum\@floatpenalty <\z@
+ \@largefloatcheck
+ \global\dp\@currbox1sp %
+ \@cons\@currlist\@currbox
+ \ifnum\@floatpenalty <-\@Mii
+ \penalty -\@Miv
+ \@tempdima\prevdepth
+ \vbox{}%
+ \prevdepth\@tempdima
+ \penalty\@floatpenalty
+ \else
+ \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
+ \@nameuse{@@_float_start_par:} %restart P safe here??
+ \fi
+ \fi
+ \else
+ \end@float
+ \fi
+}%
\ExplSyntaxOn
% \end{macrocode}
%
@@ -417,6 +439,22 @@
% \begin{macrocode}
\def\hyper@nopatch@caption{}
% \end{macrocode}
+%
+% With hyperref that means that the \cs{refstepcounter} now can affect spacing so we
+% change that to the kernel refstepcounter:
+% \begin{macrocode}
+\let\@kernel@refstepcounter\refstepcounter %as long it is not in the kernel
+\def\caption{%
+ \ifx\@captype\@undefined
+ \@latex@error{\noexpand\caption outside float}\@ehd
+ \expandafter\@gobble
+ \else
+ \@kernel@refstepcounter\@captype
+ \expandafter\@firstofone
+ \fi
+ {\@dblarg{\@caption\@captype}}%
+}
+% \end{macrocode}
% As we will use the structure number in the target, we need to provide a
% theH-representation. (Once the kernel will create
% theH-representation generally this will be provided automatically, as tagpdf uses
@@ -471,7 +509,7 @@
\tag_mc_end:
\tag_struct_end:
\tag_mc_begin:n{}
- #2\par
+ #2
\tag_mc_end:\hfil}%
\fi
\tag_struct_end: %caption
@@ -487,7 +525,7 @@
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{float-latex-lab-testphase.ltx}
- [2023-04-30 v0.8 code related to the tagging of floats]
+ [\ltlabfloatdate\space v\ltlabfloatversion\space latex-lab wrapper float]
\RequirePackage{latex-lab-testphase-float}
%</latex-lab>
% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-float.pdf b/macros/latex/required/latex-lab/latex-lab-float.pdf
index bdd5ef0169..8655d7309f 100644
--- a/macros/latex/required/latex-lab/latex-lab-float.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-float.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-footnotes.dtx b/macros/latex/required/latex-lab/latex-lab-footnotes.dtx
index 4c8c9b73a6..2389906c5a 100644
--- a/macros/latex/required/latex-lab/latex-lab-footnotes.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-footnotes.dtx
@@ -17,6 +17,9 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabfootnotedate{2023-09-04}
+\def\ltlabfootnoteversion{0.8c}
+
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -38,7 +41,14 @@
% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}}
% \providecommand\class[1]{\texttt{#1.cls}}
% \providecommand\pkg[1]{\texttt{#1}}
-% \providecommand\hook[1]{\texttt{#1}}
+%
+% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}}
+% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}}
+% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}}
+%
+% \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+% \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
%
% \begin{abstract}
% \emph{to be written}
@@ -56,7 +66,7 @@
% some adjustments are mutually exclusive). This is achieved by
% providing a larger number of hooks (for areas where different
% packages/classes can easily coexist with their adjustments) and a
-% number of configuration points to which only one class or package
+% number of sockets to which only one class or package
% can write to successfully (in case of multiple changes the
% last one wins). The latter are for special functionality, e.g.,
% if footnote text is typeset as a single paragraph, it can't be configured
@@ -67,7 +77,7 @@
% for this to work, all packages altering the footnote setup should
% use the interfaces provided here and not do it through the
% legacy methods (though there is some support for the latter as
-% well, but if will not work in a cases).
+% well, but it will not work in all cases).
%
% \subsection{Configuration methods}
%
@@ -103,11 +113,14 @@
%
%
%
-% \section{Hooks and configuration points}
+% \section{Sockets and hooks}
+%
+% We use sockets for those parts that can be controlled only by one
+% package or by the kernel and hooks for places where it may be
+% possible that several packages or the document class adds code
+% (typically declarations such as font changes, etc.).
%
-% Note: the configuration points do not have an interface mechanism
-% yet and all their names are temporary right now.
-% Also note that configuration points are of interest only to very
+% Note that sockets are of interest only to very
% few specialized packages, mainly \pkg{footmisc}, and packages
% providing similar functionality---the current documentation is
% therefore fairly sketchy.
@@ -124,7 +137,7 @@
% in the same place, etc.
%
%
-% \subsubsection{Configuration points}
+% \subsubsection{Sockets}
%
% None: everything is implemented through a single definition for
% \cs{@footnotemark} that offers a number of hooks that can be used
@@ -132,12 +145,14 @@
% formatting of marks.
%
%
-% \subsubsection{Hooks}
+% \subsubsection{Hooks for formatting the footnote mark in text}
%
% The hooks to customize the marks in the text are the following:
% \begin{description}
% \item[\hook{fnmark/before}]
%
+% \DescribeHook[noprint]{fnmark/before}
+%
% Executed at the very beginning of \cs{footnotemark}. Currently
% there are two packages (\pkg{bibarts} and \pkg{chextras}) that
% prepend material at this point (not necessarily correctly, e.g.,
@@ -147,6 +162,8 @@
%
% \item[\hook{fnmark}]
%
+% \DescribeHook[noprint]{fnmark}
+%
% Executed in horizontal mode and after the current space factor
% has been saved away for reuse. This is where currently code for multiple
% marks does its preparation (as done by \pkg{footmisc} and
@@ -156,12 +173,14 @@
% generated in math --- maybe that means the multiple handling
% should happen later?
%
-% After the hook \cs{nobreak} is executed, so any
+% After the hook a \cs{nobreak} is executed, so any
% ``material'' added in the hook is tied to the following mark
% unless it contains its own permissible penalty.
%
% \item[\hook{fnmark/begin}]
%
+% \DescribeHook[noprint]{fnmark/begin}
+%
% This hook is executed directly in front of the typeset mark.
% This is the place where \pkg{hyperref} would have added
% part of its code, i.e., after the \cs{nobreak} mentioned above.
@@ -170,6 +189,8 @@
%
% \item[\hook{fnmark/end}]
%
+% \DescribeHook[noprint]{fnmark/end}
+%
% This hook is executed directly after the typeset mark. It is
% used by \pkg{memhfixc}, \pkg{scrlttr2}, and
% \pkg{footmisc}. Used, for example, to implement support for
@@ -180,6 +201,8 @@
%
% \item[\hook{fnmark/after}]
%
+% \DescribeHook[noprint]{fnmark/after}
+%
% This hook is executed at the very end of the \cs{footnotemark} command.
%
% It is a reversed hook to pair with \hook{fnmark/before}
@@ -201,78 +224,114 @@
% appears at the bottom of the page (default case), or possibly
% elsewhere, e.g. in the margin.
%
-% \subsubsection{Configuration points}
+% \subsubsection{Sockets}
%
% To cater for different layout configurations there are four
-% configuration points which can be set only by one package or
-% class, if two packages/classes set them they are mutually
-% incompatible.
+% sockets that can be set by a package or
+% class but there should be only one per document setting them, i.e., if two packages/classes set them they are mutually
+% incompatible (or rather the last one wins most likely).
% These are:
% \begin{description}
-% \item[\cs{@footnotetext@cfgpoint} (1 argument)]
+% \item[\socket{fntext/process} (1 argument)]
+%
+% \DescribeSocket[noprint]{fntext/process}
+%
+% This socket receives all material that is to be processed (or
+% stored) including color protection code and what have you.
+% The \plug{default} executes \cs{insert}\cs{footins}.
+%
+% Available plugs are \plug{default}, \plug{side} (side notes), and \plug{mp} (minipage).
+%
+%
+% \item[\socket{fntext/make} (1 argument)]
%
-% This receives all material that is to be processed (or stored)
-% including color protection code and what have you. The default
-% definition is to run \cs{insert}\cs{footins}.
+% \DescribeSocket[noprint]{fntext/make}
%
-% \item[\cs{@footnotetext@cfgpointii} (1 argument)]
+% This socket receives the \meta{text} as given in \cs{footnote}
+% or \cs{footnotetext} in the document and adds formatting
+% instructions to it.
%
-% The default definition runs \cs{@makefntext} which contains
+% The \plug{default} plug runs \cs{@makefntext} which contains
% various hooks for customization. For most scenarios this is
% sufficient. However, when running all footnotes as a single
% paragraph at the bottom, then each footnote needs to be
-% prepared prior to storing in the insert and this configuration
-% point allows running extra code to do that.
+% prepared prior to storing it with \cs{insert} and this socket
+% allows running extra code to do that.
%
-% \item[\cs{@footnotetext@cfgpointiii} (no argument)]
+% Available plugs are \plug{default} and \plug{para}.
%
-% By default this configuration point adds a strut to the
-% footnote material so that consecutive footnotes are properly
-% spaced vertically. In some use cases this is not appropriate
-% (e.g., when running all footnotes as a single paragraph) and so
-% this configuration point can cancel the action or do something
-% else instead.
+% \item[\socket{fntext/begin} (no argument)]
%
-% The configuration point is executed near the start of the
-% argument for the configuration point
-% \cs{@footnotetext@cfgpointii}.
+% \DescribeSocket[noprint]{fntext/begin}
%
-% \item[\cs{@footnotetext@cfgpointiv} (no argument)]
+% The socket is executed near the start of the
+% argument for the \socket{fntext/make} socket.
+% By \plug{default} it adds a strut to the footnote
+% material so that consecutive footnotes are properly spaced
+% vertically. In some use cases this is not appropriate (e.g.,
+% when running all footnotes as a single paragraph) and so with
+% this socket one can cancel the action or do something else
+% instead.
%
-% This configuration point is executed at the very end of the
-% argument passed to \cs{@footnotetext@cfgpointii}.
-% By default it adds a final strut as long as we are still in
-% horizontal mode (i.e., processing the footnote text paragraph.
-% When running several footnotes in one paragraph some additional
-% material (some horizontal glue) needs adding at this point.
+% Available plugs are \plug{default} and \plug{noop}.
%
+%
+% \item[\socket{fntext/end} (no argument)]
+%
+% \DescribeSocket[noprint]{fntext/end}
+%
+% This socket is executed at the very end of the argument passed
+% to socket \socket{fntext/make}. By \plug{default} it
+% adds a final strut as long as we are still in horizontal mode
+% (i.e., processing the footnote text paragraph). When running
+% several footnotes in one paragraph some additional material
+% (some horizontal glue) needs adding at this point which is done
+% with the plug \plug{para}.
+%
+% Available plugs are \plug{default}, \plug{para}, and
+% \plug{noop}.
% \end{description}
-% The configuration point \cs{@footnotetext@cfgpointii} runs
+%
+%
+% All standard plugs for the socket \socket{fntext/make} run
% \cs{@makefntext} and this command contains two further
-% configuration points (and a few hooks):
+% sockets (unless it is overwritten by a legacy class):
% \begin{description}
-% \item[\cs{@makefntext@cfgpoint} (1 argument)]
+% \item[\socket{fntext/mark} (0 arguments)]
+%
+% \DescribeSocket[noprint]{fntext/mark}
%
-% This configuration point receives the material to typeset the
-% footnote mark. By default, all it does is running \cs{indent}
-% to get a paragraph indentation (if one is set up---in most
-% layouts it is 0~points) and then typesets the mark, but in
-% some designs it executes more elaborate code.
+% This socket has no input arguments but uses \cs{@makefnmark} to
+% typeset the mark in front of the footnote text. Its
+% \plug{default} uses code that examines the value of
+% \cs{footnotemargin} and based on its setting typeset the mark
+% in different ways:
+% \begin{itemize}
+% \item positive: typeset the mark in a box of that size
+% \item zero: use \cs{llap} around the mark
+% \item negative: use \cs{llap} but with a box of the given size
+% negated inside
+% \item \texttt{-}\cs{maxdimen}: just use \cs{@makefnmark}
+% \end{itemize}
+% For most cases this would be flexible enough, but if not then a
+% class can define its own plug to specify the placement of the mark.
%
-% If tagging is produced this configuration point is also
-% responsible for surrounding the mark with the appropriate tags
-% marking the mark as an Lbl. It does this using the command
-% \cs{tag@FENoteLbl}.
+% Available plugs are \plug{default} and \plug{noop} (no mark is produced).
%
-% \item[\cs{@makefntext@cfgpointii} (1 argument)]
%
-% This configuration point manages the formatting of the footnote
-% text once the mark has been typeset.
+% \item[\socket{fntext/text} (1 argument)]
%
-% If tagging is produced this configuration point is also
-% responsible for surrounding the mark with the appropriate tags
-% marking the mark as an MC of type FENote. It does this using
-% the command \cs{tag@FENotetext}.
+% \DescribeSocket[noprint]{fntext/text}
+%
+% This socket manages the formatting of the footnote text
+% (presented as an argument) once the mark has been typeset. In
+% all cases we can think of this formatting is better configured
+% via the available hooks described below, so the \plug{default}
+% just grabs the argument and processes it without any other
+% action. It is really only there to allow for some fancy stuff
+% that some design comes up with.
+%
+% Available plugs are \plug{identity} (default) and \plug{noop}.
%
% \end{description}
%
@@ -284,19 +343,23 @@
%
%
%
-% \subsubsection{Hooks}
+% \subsubsection{Hooks for formatting the footnote text}
%
% \begin{description}
% \item[\hook{fntext/before}]
%
+% \DescribeHook[noprint]{fntext/before}
+%
% Executed at the very beginning of \cs{footnotetext}. Currently
-% there is on package (\pkg{linguex}) that
+% there is one package (\pkg{linguex}) that
% prepends material at this point.
%
% This hook is paired with hook \hook{fnmark/after}.
%
% \item[\hook{fntext}]
%
+% \DescribeHook[noprint]{fntext}
+%
% Executed at the beginning of the material passed to the first
% configuration point. Typically used to set any baseline
% stretch for the footnote text, e.g., by \pkg{setspace},
@@ -308,32 +371,42 @@
%
% \item[\hook{fntext/para}]
%
-% After the font is set default paragraph parameters are set up
+% \DescribeHook[noprint]{fntext/para}
+%
+% After the font is set (after the previous hook), some default
+% paragraph parameters
+% are set up
% including \cs{interlinepenalty}, \cs{hsize}, \cs{parindent} and
% a number of others, as some of them depend on the font
-% size. Then the \hook{fntext/para} is run. If one wants to
+% size. Then the \hook{fntext/para} is run which can overwrite
+% the default. If one wants to
% change the font size, it is probably necessary to reset these
% other parameters too, e.g., \cs{parindent}, which can be done
% here.
%
-% The configuration point \cs{@footnotetext@cfgpointii} normally
+% Note: the socket \socket{fntext/make} normally
% runs the command \cs{@makefntext} or some code that eventually
-% runs this command, and this then produces the footnote mark (in
-% front of the footnote text) and the formatted footnote text. In
+% runs this command, and this then produces the footnote mark in
+% front of the formatted footnote text. In
% front of both the mark and the footnote text some classes have
% placed paragraph parameter adjustments in their redefinition of
% \cs{@makefntext}. However, there is no need to place it there
% it could equally well go into the \hook{fntext/para} hook. We
-% therefore do not provide another hook at this point.
+% therefore do not provide another hook at this other point.
%
% \item[\hook{fntext/begin} \& \hook{fntext/end}]
%
+% \DescribeHook[noprint]{fntext/begin}
+% \DescribeHook[noprint]{fntext/end}
+%
% The footnote text itself is surrounded by the hooks
% \hook{fntext/begin} and \hook{fntext/end}. The two hooks are
% not paired as they are typically used independently.
%
% \item[\hook{fntext/after}]
%
+% \DescribeHook[noprint]{fntext/after}
+%
% At the very end of \cs{footnotetext} we execute the hook
% \hook{fntext/after} which is a reversed hook paired with
% \hook{fntext/before}. Some packages, e.g., \pkg{linguex}, have
@@ -384,6 +457,8 @@
%
% \section{Tagging and hyperlinking support}
%
+% \fmi{this section needs work (and probably csname changes)}
+%
% Footnotes consist of a \emph{footnotemark} (short: mark) that is typically placed in the text
% as a superscript number like this\footnotemark[1], and a \emph{footnotetext}
% (short: note) that is placed at the bottom of the page.
@@ -407,6 +482,38 @@
%
% \subsection{Technical details for the tagging}
%
+% The following sockets are set up for kernel use, when doing tagging:
+% \begin{description}
+% \item[\socket{tagsupport/fnmark} (1 argument)]
+%
+% \DescribeSocket[noprint]{tagsupport/fnmark}
+%
+% \fmi{describe and decide on names}
+%
+%
+% \item[\socket{tagsupport/fntext/begin} (no argument)]
+%
+% \DescribeSocket[noprint]{tagsupport/fntext/begin}
+%
+%
+% \item[\socket{tagsupport/fntext/end} (no argument)]
+%
+% \DescribeSocket[noprint]{tagsupport/fntext/end}
+%
+%
+% \item[\socket{tagsupport/fntext/mark} (1 argument)]
+%
+% \DescribeSocket[noprint]{tagsupport/fntext/mark}
+%
+%
+% \item[\socket{tagsupport/fntext/text} (1 argument)]
+%
+% \DescribeSocket[noprint]{tagsupport/fntext/text}
+%
+%
+% \end{description}
+%
+%
% The \emph{footnotemark} should create a \texttt{/Lbl} structure\footnote{to make it easier
% to identify the role we use \texttt{/footnotemark} which we rolemap to \texttt{/Lbl}} that should contain a \texttt{/Ref} entry pointing
% to the structure of the \emph{footnotetext}.
@@ -475,36 +582,36 @@
% as long as nothing unusual is done to \cs{@thefnmark}.
% It also works if a document uses more than one footnote series as long as they have distinct numbering
% systems, but in case a distinction is needed it is possible to define
-% a new data structure and to switch locally to use this
-% container. The following three commands are used for this.
+% a new class with its own data structure and to switch locally to use this
+% class. The following three commands are used for this.
%
-% The default property uses the name \texttt{default}
+% The default class uses the name \texttt{default}
%
-% \begin{function}{\fnote_new:nn}
+% \begin{function}{\fnote_class_new:nn}
% \begin{syntax}
-% \cs{fnote_new:nn}\Arg{name}\Arg{key/value option}
+% \cs{fnote_class_new:nn}\Arg{name}\Arg{key/value option}
% \end{syntax}
-%
-% This commands set up the needed data structure. Currently this only
-% consists of a property which is used to store and manage the mark values.
-% There are no options yet.
+% This declaration sets up the needed data structure. Currently this only
+% consists of a property list which is used to store and manage the mark values.
+% There are no options yet.
% \end{function}
%
% \begin{function}{\fnote_mark_gput:nn,\fnote_mark_gput:no,\fnote_mark_gput:oo}
% \begin{syntax}
-% \cs{fnote_mark_gput:nn}\Arg{mark}\Arg{footnote type name}
+% \cs{fnote_mark_gput:nn}\Arg{mark}\Arg{class name}
% \end{syntax}
-% This command stores the current structure number as key and the \meta{mark} as
-% value in the property associated with the \meta{footnote type name}
+% This command stores the current structure number as key and the \meta{mark} as
+% value in the property list associated with the \meta{class name}.
% \end{function}
%
-% \begin{function}{\fnote_mark_gpop:nnN}
+% \begin{function}{\fnote_mark_gpop_all:nnN}
% \begin{syntax}
-% \cs{fnote_mark_gpop:nnN}\Arg{mark}\Arg{footnote type name}\meta{sequence}
+% \cs{fnote_mark_gpop_all:nnN}\Arg{mark}\Arg{class name}\meta{sequence}
% \end{syntax}
-% This command stores the keys/structure numbers whose value are \meta{mark} in the
-% property associated with \meta{footnote type name} in the \meta{sequence}
-% and then remove them from the property. The content of the sequence can then be
+% This command stores all the keys/structure numbers whose value in the
+% property list for \meta{class name} are equal to \meta{mark}
+% into the sequence \meta{sequence} and then removes them from the property list.
+% The content of the sequence can then be
% used to create link targets and references.
% \end{function}
%
@@ -516,7 +623,7 @@
% above, as it contains a reference command it can't be used to match a note, also \cs{footref} can
% be used after the note has already been set. \cs{footref} disables therefore the automatic detection.
%
-% Instead the \cs{label} command is (currently with the help of a hook from the \texttt{nameref} package)
+% Instead the \cs{label} command is
% extended in the \cs{footnotetext} command to also store the structure number and \cs{footref} retrieves this
% number to setup the reference and the link.
%
@@ -560,28 +667,33 @@
% by the mark commands) and one for the structure number of the footnotetest itself
% (used as target by \cs{footref}s commands).
%
-% \subsection{Implementation details}
+% \subsection{Implementation details regarding tagging}
%
% \subsection{Handling the mark}
%
-% The mark in the text is handled by redefining the kernel configuration point
-% \cs{@kernel@process@makefnmark} to \cs{tag@FEMark}.
-% It takes one argument, \cs{@makefnmark}, the command which formats the
-% mark, and surrounds it by link and tagging commands.
-% At the point where \cs{@kernel@process@makefnmark} is issued \cs{@thefnmark} has already been
-% defined and can be used to setup the reference detections.
+% The mark in the text is handled by assigning an appropriate
+% plug to the socket \socket{tagsupport/fnmark}.
+% It takes one argument, \cs{@makefnmark}, the
+% command which formats the mark, and surrounds it by link and tagging
+% commands. At the point where the socket is
+% executed, \cs{@thefnmark} has already been defined and can be used to
+% setup the reference detections.
%
%
% \subsection{Handling the footnotetext}
%
-% The main part is done by redefining \cs{@kernel@process@footnotetext}. This configuration point takes two arguments, \cs{@footnotetext@cfgpoint} (by default \verb+\insert\footins+) and as second argument lots of code related to typesetting the notemark and the footnote text with the actual content of the footnote text somewhere in the middle.
+% The main part is done by assigning a different plug to socket \socket{tagsupport/fntext/begin}
+% and \socket{tagsupport/fntext/end}
+% surrounding the footnote text.
+% These sockets are used to start and end the structure and
+% attempt to detect to which mark the note is related.
%
-% The redefinition of \cs{@kernel@process@footnotetext} surrounds the content with the structure command
-% and tries to detect to which mark the note is related.
-%
-% The actual typesetting of the note text is done
-% by \cs{@makefntext}/\cs{fnote_makefntext:n}. In the new implementation this contains two configuration
-% points, \cs{@makefntext@cfgpoint} and \cs{@makefntext@cfgpointii}. These are redefined to add the tagging commands around note mark and note text.
+% The actual typesetting of the note text is done by
+% \cs{fnote_makefntext:n} (or its \LaTeXe{} name \cs{@makefntext}). In
+% the new implementation this contains two further kernel sockets for tagging:
+% \socket{tagsupport/fntext/mark} and
+% \socket{tagsupport/fntext/text}. They get plugs assigned that add the
+% tagging commands around note mark and note text.
%
% \subsection{Footnotes in minipages}
%
@@ -603,13 +715,6 @@
%
% \begin{itemize}
%
-% \item tagging destroys footnotes directly following the text with pdflatex.
-%
-% \item there is a dependency on nameref as it provides the hook in \cs{label}
-% used by the \cs{footref} code.
-%
-% \item there is a dependency to etoolbox as we patch \cs{\@iiiminipage}
-%
% \item Special formatting of footnote marks in the text, e.g. if ranges or commas are
% used require special care as they should normally mark up such text as artifacts and
% perhaps have to insert empty structures to represent an invisible mark. This must be coordinated
@@ -617,9 +722,6 @@
%
% \item manyfoot doesn't work correctly and must be analyzed.
%
-% \item Check if additional kernel configuration points are needed/possible
-% to avoid the redefinitions of \cs{@makefntext@cfgpoint} and \cs{@makefntext@cfgpointii}.
-%
% \item \pkg{memoir} is not supported at all and errors when the code tries to patch
% \cs{@makefntext}.
% \end{itemize}
@@ -644,7 +746,8 @@
% \subsection{File declaration}
% \begin{macrocode}
\ProvidesFile{latex-lab-footnotes.ltx}
- [2023-02-04 v0.7 changes to the footnote interfaces]
+ [\ltlabfootnotedate\space v\ltlabfootnoteversion\space
+ changes to the footnote interfaces]
% \end{macrocode}
%
% \subsection{code not fully handled yet}
@@ -796,9 +899,6 @@
% \subsection{Variants}
%
% \begin{macrocode}
-\cs_generate_variant:Nn \ref_label:nn { Vn }
-\cs_generate_variant:Nn \ref_value:nn { Vn }
-\cs_generate_variant:Nn \prop_gput:Nnn {cxn}
\cs_generate_variant:Nn \hook_gput_code:nnn{nne}
\cs_generate_variant:Nn \tag_struct_use:n {e}
% \end{macrocode}
@@ -852,14 +952,22 @@
%
% \subsection{Hooks}
%
-% Hooks in the footnotemark command.
+% \begin{hookdecl}{fnmark/before,fnmark/after,
+% fnmark,
+% fnmark/begin,fnmark/end}
+% Hooks in the footnotemark command.
% \begin{macrocode}
\NewMirroredHookPair{fnmark/before}{fnmark/after}
\NewHook{fnmark}
\NewHook{fnmark/begin}
\NewHook{fnmark/end}
% \end{macrocode}
-% Hooks in the footnotetext command
+% \end{hookdecl}
+%
+% \begin{hookdecl}{fntext/before,fntext/after,
+% fntext,
+% fntext/begin,fntext/end,fntext/para}
+% Hooks in the footnotetext command:
% \begin{macrocode}
\NewMirroredHookPair{fntext/before}{fntext/after}
\NewHook{fntext}
@@ -867,6 +975,7 @@
\NewHook{fntext/begin}
\NewHook{fntext/end}
% \end{macrocode}
+% \end{hookdecl}
%
% \subsection{Debugging code}
% the debugging code is just temporary
@@ -882,11 +991,11 @@
{
\bool_if:NT \g_fnote_debug_bool
{
- \LogHook{fnmark/before}
- \LogHook{fnmark}
- \LogHook{fnmark/begin}
- \LogHook{fnmark/end}
- \LogHook{fnmark/after}
+ \hook_log:n {fnmark/before}
+ \hook_log:n {fnmark}
+ \hook_log:n {fnmark/begin}
+ \hook_log:n {fnmark/end}
+ \hook_log:n {fnmark/after}
\cs_gset_eq:NN \@@_debug_footnotemark: \prg_do_nothing:
}
}
@@ -897,18 +1006,32 @@
{
\bool_if:NT \g_fnote_debug_bool
{
- \cs_log:N\@footnotetext@cfgpoint
- \cs_log:N\@footnotetext@cfgpointii
- \cs_log:N\@footnotetext@cfgpointiii
- \cs_log:N\@footnotetext@cfgpointiv
- \cs_log:N\@makefntext@cfgpoint
- \cs_log:N\@makefntext@cfgpointii
- \LogHook{fntext/before}
- \LogHook{fntext}
- \LogHook{fntext/para}
- \LogHook{fntext/begin}
- \LogHook{fntext/end}
- \LogHook{fntext/after}
+ \socket_log:n {fntext/process}
+ \socket_log:n {fntext/make}
+ \socket_log:n {fntext/begin}
+ \socket_log:n {fntext/end}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \socket_log:n {fntext/mark}
+ \socket_log:n {fntext/text}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \socket_log:n {tagsupport/fnmark}
+ \socket_log:n {tagsupport/fntext/begin}
+ \socket_log:n {tagsupport/fntext/end}
+ \socket_log:n {tagsupport/fntext/mark}
+ \socket_log:n {tagsupport/fntext/text}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \hook_log:n {fntext/before}
+ \hook_log:n {fntext}
+ \hook_log:n {fntext/para}
+ \hook_log:n {fntext/begin}
+ \hook_log:n {fntext/end}
+ \hook_log:n {fntext/after}
% \end{macrocode}
% Show the info only once (if at all).
% \begin{macrocode}
@@ -926,7 +1049,7 @@
%-------
% bibarts
% chextras --- actually in the wrong place does an \unskip
- \UseHook{fnmark/before}
+ \hook_use:n {fnmark/before}
%-------
\leavevmode
\ifhmode
@@ -936,21 +1059,24 @@
% (a bit less efficient)
% memhfixc.sty
% footmisc.sty
- \UseHook{fnmark}
+ \hook_use:n {fnmark}
%-------
\nobreak
\fi
%-------
% hyperref.sty
- \UseHook{fnmark/begin}
+ \hook_use:n {fnmark/begin}
%-------
- \@kernel@process@makefnmark
- \@makefnmark
+% \end{macrocode}
+% The kernel socket for tagging. It picks up \cs{@makefnmark} as its
+% argument and if tagging is not active it contains the \plug{identity} plug.
+% \begin{macrocode}
+ \socket_use:nn {tagsupport/fnmark} \@makefnmark
%-------
% \end{macrocode}
% If a footnote mark is placed by its own then it should finish by
-% executing \hook{fnmark/end}, resetting the space factor, and
-% finishing with \hook{fnmark/after}. However, in a complete
+% executing the hook \hook{fnmark/end}, resetting the space factor, and
+% finishing with the hook \hook{fnmark/after}. However, in a complete
% footnote these actions have to happen only after we have handled
% the footnote text (e.g., by placing it into an \cs{insert}). In
% such a situation \cs{_@@_footmark_finish:} below does nothing
@@ -961,9 +1087,10 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@@_finish:,\@@_footnotemark_finish:}
+% \begin{macro}{\@@_footnotemark_default_finish:,\@@_footnotemark_finish:}
+% The default definition for \cs{@@_footnotemark_finish:} is called \cs{@@_footnotemark_default_finish:}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_finish: {
+\cs_new_protected:Npn \@@_footnotemark_default_finish: {
% hyperref.sty
% memhfixc.sty --- could move fnmark/after
% scrlttr2.cls --- could vanish if footmisc uses a hook
@@ -978,20 +1105,24 @@
\UseHook{fnmark/after}
%-------
}
-
-\cs_new_eq:NN \@@_footnotemark_finish: \@@_finish:
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\@kernel@process@makefnmark}
-% Not a public config point but the kernel hook to add tagging
% \begin{macrocode}
-\def \@kernel@process@makefnmark { }
+\cs_new_eq:NN \@@_footnotemark_finish: \@@_footnotemark_default_finish:
% \end{macrocode}
% \end{macro}
%
+% \begin{socketdecl}{tagsupport/fnmark}
+% Not a public socket but reserved for tagging. By
+% default it contains \plug{identity} and is reassigned if tagging is active.
+% \begin{macrocode}
+\NewSocket{tagsupport/fnmark}{1}
+% \end{macrocode}
+% \end{socketdecl}
+%
% \begin{macro}{\@footnotemark}
-% At last provide the name \LaTeXe{} is used to.
+% Here we provide the traditional \LaTeXe{} name in case it is directly used
+% in some legacy class.
% \begin{macrocode}
\cs_set_eq:NN \@footnotemark \fnote_footnotemark:
% \end{macrocode}
@@ -1007,16 +1138,23 @@
\@@_debug_footnotetext:
%-------
% ./linguex/linguex.sty
- \UseHook{fntext/before}
+ \hook_use:n {fntext/before}
%-------
- \@kernel@process@footnotetext
- \@footnotetext@cfgpoint { % config point
+% \end{macrocode}
+% Execute a kernel socket for tagging.
+% \begin{macrocode}
+ \socket_use:n {tagsupport/fntext/begin}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \socket_use:nn {fntext/process}
+ {
%-------
% resetting baselinestretch ... (could be done further down)
% ./uafthesis/uafthesis.cls
% ./setspace/setspace.sty
% ./footmisc/footmisc.sty (normal)
- \UseHook{fntext}
+ \hook_use:n {fntext}
%-------
\reset@font
\footnotesize
@@ -1046,84 +1184,144 @@
% and \cs{@currentlabel} is that is necessary.
%
% ./resphilosophica/resphilosophica.cls
- \UseHook{fntext/para}
+ \hook_use:n {fntext/para}
%-------
\color@begingroup
%-------
-% fnpara wants to replace \@makefntext{...} and para and side option of footmisc etc too ...
-% so we make this a config point
+% fnpara wants to replace \@makefntext{...} and para and side
+% option of footmisc etc too ...
+% so we make this a socket, because only one action can be active:
%-------
- \@footnotetext@cfgpointii % config point
+ \socket_use:nn {fntext/make}
{
%-------
% ./resphilosophica/resphilosophica.cls
%-------
- \@footnotetext@cfgpointiii % config point
+ \socket_use:n {fntext/begin}%
%-------
% bibarts
% fnbreak.sty
- \UseHook{fntext/begin}
+ \hook_use:n {fntext/begin}
%-------
\ignorespaces
#1
%-------
% bibarts
% fnbreak.sty
- \UseHook{fntext/end}
+ \hook_use:n {fntext/end}
%-------
- \@footnotetext@cfgpointiv % config point
+% \end{macrocode}
+% The socket code (by default adding a strut) has to come
+% \emph{after} everything added into the hook above.
+% \begin{macrocode}
+ \socket_use:n {fntext/end}
}
\par
\color@endgroup
}
%-------
+% \end{macrocode}
+% The corresponding kernel hook that ends the tagging structure if
+% tagging is active.
+% \begin{macrocode}
+ \socket_use:n{tagsupport/fntext/end}
+%-------
% ./linguex/linguex.sty
- \UseHook{fntext/after}
+ \hook_use:n {fntext/after}
%-------
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@footnotetext@cfgpoint}
-% default for config point (1 arg)
+% \begin{socketdecl}{fntext/process}
+%
% \begin{macrocode}
-\cs_new_protected:Npn \@footnotetext@cfgpoint { \insert\footins }
+\NewSocket {fntext/process}{1}
+\NewSocketPlug{fntext/process}{default}{ \insert\footins {#1} }
+\NewSocketPlug{fntext/process}{side} { \marginpar {#1} }
% \end{macrocode}
-% \end{macro}
+%
+% \begin{macrocode}
+\AssignSocketPlug{fntext/process}{default}
+% \end{macrocode}
+% \end{socketdecl}
%
%
-% \begin{macro}{\@footnotetext@cfgpointii}
-% default for config point (1 arg)
+%
+% \begin{socketdecl}{fntext/make}
+% This socket receives the \meta{text} from the \cs{footnote} or
+% \cs{footnotetext} and formats it.
% \begin{macrocode}
-\cs_new_protected:Npn \@footnotetext@cfgpointii { \@makefntext }
+\NewSocket {fntext/make}{1}
+\NewSocketPlug{fntext/make}{default}{ \@makefntext {#1} }
+% \end{macrocode}
+% When running several footnotes together as a paragraph some
+% additional work is necessary to unbox the individual footnotes
+% recursively (see \TeX{}book algorithm in appendix~D).
+% \begin{macrocode}
+\NewSocketPlug{fntext/make}{para}
+{
+ \setbox\FN@tempboxa\hbox{\@makefntext{#1}}%
+ \dp\FN@tempboxa\z@
+ \ht\FN@tempboxa
+ \dimexpr\wd\FN@tempboxa *%
+ \footnotebaselineskip /\columnwidth\relax
+ \box\FN@tempboxa
+}
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\@footnotetext@cfgpointiii}
-% default for config point (0 args)
% \begin{macrocode}
-\cs_new_protected:Npn \@footnotetext@cfgpointiii { \rule\z@\footnotesep }
+\AssignSocketPlug{fntext/make}{default}
% \end{macrocode}
-% \end{macro}
+% \end{socketdecl}
%
-% \begin{macro}{\@footnotetext@cfgpointiv}
-% default for config point (0 args)
+% \begin{socketdecl}{fntext/begin}
+% By default adds a strut at the start of the footnote text.
% \begin{macrocode}
-\cs_new_protected:Npn \@footnotetext@cfgpointiv { \@finalstrut\strutbox }
+\NewSocket {fntext/begin}{0}
+\NewSocketPlug{fntext/begin}{default}{ \rule\z@\footnotesep }
% \end{macrocode}
-% \end{macro}
%
-% \begin{macro}{\@kernel@process@footnotetext}
-% kernel hook for tagging (2 args)
% \begin{macrocode}
-\cs_new_protected:Npn \@kernel@process@footnotetext {}
+\AssignSocketPlug{fntext/begin}{default}
% \end{macrocode}
-% \end{macro}
+% \end{socketdecl}
+%
+% \begin{socketdecl}{fntext/end}
+% By default adds a strut at the end of the footnote text unless we
+% are no longer in hmode.
+% \begin{macrocode}
+\NewSocket {fntext/end}{0}
+\NewSocketPlug{fntext/end}{default}{ \@finalstrut\strutbox }
+% \end{macrocode}
+% When running several footnotes together as a paragraph some
+% additional glue has to be added between them.
+% \begin{macrocode}
+\NewSocketPlug{fntext/end}{para}
+ {%
+ \strut
+ \penalty-10\relax
+ \hskip\footglue
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\AssignSocketPlug{fntext/end}{default}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% \begin{socketdecl}{tagsupport/fntext/begin,tagsupport/fntext/end}
+% Kernel sockets for tagging.
+% \begin{macrocode}
+\NewSocket{tagsupport/fntext/begin}{0}
+\NewSocket{tagsupport/fntext/end}{0}
+% \end{macrocode}
+% \end{socketdecl}
%
% Provide the name \LaTeXe{} is used to and do this unconditionally
-% (no patching of class code if any). This means that if a class provides it own
-% definition that gets lost and if necessary needs to be handled
-% with firstaid (or updating of the class).
+% (no patching of class code if any). This means that if a class
+% provides it own definition that gets lost and if necessary needs to
+% be handled with firstaid (or updating of the class).
% \begin{macrocode}
\AddToHook{begindocument}
{
@@ -1131,6 +1329,9 @@
}
% \end{macrocode}
%
+%
+%
+%
% \subsection{The new \cs{@makefntext} command}
%
% \cs{footnotemargin} is the logic implemented by footmisc. Perhaps we
@@ -1147,57 +1348,85 @@
\fi
}
% \end{macrocode}
-
+%
+%
+%
+%
% \begin{macro}{\fnote_makefntext:n}
% \begin{macrocode}
\cs_new_protected:Npn \fnote_makefntext:n #1 {
% \end{macrocode}
% Some classes in their redefinition for \cs{@makefntext} have
-% places some paragraph parameters at this point, but those can
+% placed some paragraph parameters at this point, but those can
% equally well go into the hook \hook{fntext/para}. We therefore do
% not provide a further hook at this point.
% \begin{macrocode}
- \@makefntext@cfgpoint
- {
- \ifdim\footnotemargin>\z@
- \hb@xt@ \footnotemargin{\hss\@makefnmark}
- \else
- \ifdim\footnotemargin=\z@
- \llap{\@makefnmark}
- \else
- \ifdim\footnotemargin=-\maxdimen
- \@makefnmark
- \else
- \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}
- \fi
- \fi
- \fi
- }
- \@makefntext@cfgpointii
- { #1 }
+ \noindent
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \socket_use:nn {tagsupport/fntext/mark} { \socket_use:n {fntext/mark} }
+ \socket_use:nn {tagsupport/fntext/text} { \socket_use:nn {fntext/text}{#1} }
}
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@makefntext@cfgpoint}
-% default for config point (1 arg)
+% \begin{socketdecl}{fntext/mark}
+% A socket to typeset the mark at the start of a footnote.
+% \begin{macrocode}
+\NewSocket {fntext/mark}{0}
+% \end{macrocode}
+% The \plug{default} plug implements the logic introduced with the
+% \pkg{footmisc} package.
+% \begin{macrocode}
+\NewSocketPlug{fntext/mark}{default}{
+ \ifdim\footnotemargin>\z@
+ \hb@xt@ \footnotemargin{\hss\@makefnmark}
+ \else
+ \ifdim\footnotemargin=\z@
+ \llap{\@makefnmark}
+ \else
+ \ifdim\footnotemargin=-\maxdimen
+ \@makefnmark
+ \else
+ \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}
+ \fi
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
% \begin{macrocode}
-\cs_new_protected:Npn \@makefntext@cfgpoint { \noindent }
+\AssignSocketPlug{fntext/mark}{default}
% \end{macrocode}
-% \end{macro}
+% \end{socketdecl}
%
-% \begin{macro}{\@makefntext@cfgpointii}
-% default for config point (1 arg)
+% \begin{socketdecl}{fntext/text}
+% By default this socket does nothing special and simply processes
+% its argument as provided.
% \begin{macrocode}
-\cs_new_protected:Npn \@makefntext@cfgpointii #1 { #1 }
+\NewSocket {fntext/text}{1}
% \end{macrocode}
-% \end{macro}
+% \end{socketdecl}
+%
+%
+%
+% \begin{socketdecl}{tagsupport/fntext/mark,tagsupport/fntext/text}
+% Not a public socket but reserved for tagging. By
+% default it contains \plug{identity} and is reassigned if tagging is active.
+% \begin{macrocode}
+\NewSocket{tagsupport/fntext/mark}{1}
+\NewSocket{tagsupport/fntext/text}{1}
+% \end{macrocode}
+% \end{socketdecl}
+%
+%
%
% \subsubsection{Making documents use the new \cs{@makefntext}}
%
% If the definition for \cs{@makefntext} is that of the standard
% classes then replace it with \cs{fnote_makefntext:n}, otherwise
-% try to patch the definition.
+% try to patch the definition used in the class.
%
% Here is the definition the way it is in
% \texttt{classes.dtx}. Notice that (for saving space) there is no
@@ -1217,22 +1446,24 @@
%
% Here is the messy code for patching. Note that this is only there
% to help classes along that aren't updated yet so it does some
-% minimal patching to hopefully add configuration points in the
-% right place.
+% minimal patching to hopefully add kernel configuration hooks in the
+% right place while otherwise leaving the legacy code alone. An
+% updated class would not redefine \cs{@makefntext} but simply add
+% appropriate code to the provided hooks.
%
% What it does is roughly the
-% following: It look for a definition of \cs{@makefntext} of the form
+% following: It looks for a definition of \cs{@makefntext} of the form
%\begin{verbatim}
% {AAA \hbox BBB { CCC } DDD #1 EEE }
%\end{verbatim}
% where ``BBB'' is something like \texttt{to 1em} or similar. It then
% replaces that with
%\begin{verbatim}
-% {AAA \@makefntext@cfgpoint{\hbox BBB { CCC }} DDD
-% \@makefntext@cfgpointii{#1} EEE }
+% {AAA \UseSocket{tagsupport/fntext/mark}{\hbox BBB { CCC }} DDD
+% \UseSocket{tagsupport/fntext/text}{#1} EEE }
%\end{verbatim}
% The patching is not very careful, i.e., it assumes there is only
-% one \verb=#1= in the replacement text and that a \cs{hbox} found
+% one \verb=#1= in the replacement text and that the first \cs{hbox} found
% is the right one to patch. But that is enough to cater for all
% definitions of \cs{@makefntext} out there in the TL distribution.
%
@@ -1247,7 +1478,7 @@
\cs_new_protected:Npn \@@_patch:
{
- \tl_set:No \l_@@_patch_tl { \@makefntext { \@makefntext@cfgpointii{##1} } }
+ \tl_set:No \l_@@_patch_tl { \@makefntext { \UseSocket{tagsupport/fntext/text}{##1} } }
\tl_if_in:NnTF \l_@@_patch_tl { \hbox }
{ \cs_set_eq:NN \@@_tmp:w \@@_patch_hbox:w }
{
@@ -1268,7 +1499,7 @@
% \end{macrocode}
%
% If \cs{@makefntext} contains \cs{hbox} then grab ``AAA'' as
-% \verb=#1= and ``BBB'' (up to the open \verb={=) and return it as
+% \verb=#1= and ``BBB'' (up to the open \texttt{\{}) and return it as
%\begin{verbatim}
% AAA \@makefntext@processX { \hbox BBB }
%\end{verbatim}
@@ -1291,12 +1522,13 @@
% not a patch person, so this is the simple way out for now:
%
% \begin{macrocode}
-\cs_new:Npn \@makefntext@processX #1#2{\@makefntext@cfgpoint{#1{#2}}}
+\cs_new:Npn \@makefntext@processX #1#2{\UseSocket{tagsupport/fntext/mark}{#1{#2}}}
% \end{macrocode}
%
% At \verb=\begin{document}= check if the current definition is
% that of the standard classes and if so replace it by
% \cs{fnote_makefntext:n} otherwise try and patch the definition
+% made by some class or package
% using the approach above.
% \begin{macrocode}
@@ -1340,7 +1572,7 @@
\fnote_step_fnmark:nn {#1} \@mpfn
\cs_set_eq:NN \@@_footnotemark_finish: \prg_do_nothing:
\@footnotemark
- \cs_set_eq:NN \@@_footnotemark_finish: \@@_finish:
+ \cs_set_eq:NN \@@_footnotemark_finish: \@@_footnotemark_default_finish:
\@footnotetext {#2}
\@@_footnotemark_finish:
}
@@ -1362,7 +1594,7 @@
% \cs{footref} used the starred \cs{ref} in \cs{@thefnmark}
% as the linking is handled by the tagging code inside
% the \cs{@footnotemark}.
-% \cs{footref} should not try to link to its related related
+% \cs{footref} should not try to link to its related
% note automatically but should instead use the label.
% This is passed to \cs{@footnotemark} through
% \cs{l__fnote_currentlabel_tl}.
@@ -1388,9 +1620,8 @@
% Tagging of footnotes in minipages require a change in the minipage commands
% We define at first a local configuration command for minipage footnotes.
%
-% TODO remove the dependency to etoolbox, and need for the patch.
% \begin{macrocode}
-\cs_new_protected:Npn \@mpfootnotetext@cfgpoint #1
+\NewSocketPlug{fntext/process}{mp}
{
\global\setbox\@mpfootins\vbox{%
\unvbox\@mpfootins
@@ -1398,16 +1629,6 @@
}
}
% \end{macrocode}
-% Then we patch \cs{@iiiminipage}
-% \begin{macrocode}
-\RequirePackage{etoolbox}
-\ExplSyntaxOff
-\patchcmd\@iiiminipage
- {\let\@footnotetext\@mpfootnotetext}
- {\let\@footnotetext@cfgpoint\@mpfootnotetext@cfgpoint}
- {}{\ERROR}
-\ExplSyntaxOn
-% \end{macrocode}
%
% \subsubsection{\pkg{memoir}}
% The \pkg{memoir} class redefines various internal commands to inject its
@@ -1484,35 +1705,28 @@
% For \cs{footref} and (perhaps later for labeled footnotes)
% we must extend the label system.
% Beside the normal values we also need the structure number of the note.
-% We use the \pkg{nameref} hook until latex provides a hook for its label.
+% We use the inbuild label hook
% At first we define a suitable attribute, it uses as value the structure
% number of the note as stored in \cs{l__fnote_currentstruct_tl}
% \begin{macrocode}
-\ref_attribute_gset:nnnn {fnote/struct}{1}{now}{\l_@@_currentstruct_tl}
+\property_new:nnnn {fnote/struct}{now}{1}{\l_@@_currentstruct_tl}
% \end{macrocode}
%
-% We add a hook to the \pkg{nameref} hook. By default it does nothing
-% \begin{macro}{\@@_label_hook:}
+% We add a hook to the label hook. By default it does nothing
+% \begin{macro}{\@@_label_hook:e}
% \begin{macrocode}
-\cs_new_protected:Npn \@@_label_hook: {}
-\AddToHook{begindocument/before}
- {
- \RequirePackage{nameref}
- \g@addto@macro\label@hook
- {
- \@@_label_hook:
- }
- }
+\cs_new_protected:Npn \@@_label_hook:e #1 {}
+\AddToHookWithArguments{label}{ \@@_label_hook:e{#1}}
% \end{macrocode}
% \end{macro}
% Inside a footnotetext we change the hook to store the structure number too.
-% nameref provides the name of label in \cs{label@name}.
+% The name of label is provided as argument in the label hook.
% \begin{macrocode}
\AddToHook{fntext/begin}
{
- \cs_set_protected:Npn \@@_label_hook:
+ \cs_set_protected:Npn \@@_label_hook:e #1
{
- \ref_label:Vn \label@name {fnote/struct}
+ \property_record:ee {@@/#1} {fnote/struct}
}
}
% \end{macrocode}
@@ -1526,7 +1740,7 @@
% tabular notes, other footnote series) to make use of this.
%
%
-% \begin{macro}{\fnote_new:nn}
+% \begin{macro}{\fnote_class_new:nn}
% This sets up a new footnote type, the first argument
% is the name, the second is meant for options. Currently
% it does nothing at all.
@@ -1534,23 +1748,23 @@
% command as its own type!
%
% \begin{macrocode}
-\cs_new_protected:Npn \fnote_new:nn #1 #2 % #1 name, #2 options
+\cs_new_protected:Npn \fnote_class_new:nn #1 #2 % #1 name, #2 options
{
\prop_new:c { g_@@_currentmarks_ #1 _prop }
}
-\fnote_new:nn {default}{}
+\fnote_class_new:nn {default}{}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\fnote_mark_gput:nn}
-% This commands takes as argument the representation of the mark
-% (e.g. \cs{@thefnmark} and the type (typically default should work)
+% This commands takes as argument the representation of the mark,
+% e.g., \cs{@thefnmark} and the type (typically default should work).
% \begin{macrocode}
\cs_new_protected:Npn \fnote_mark_gput:nn #1 #2 % #1 the representation of the mark, #2 type
{
- \prop_gput:cxn { g_@@_currentmarks_ #2 _prop }
+ \prop_gput:cen { g_@@_currentmarks_ #2 _prop }
{ \tag_get:n{struct_num} }
{ #1 }
}
@@ -1559,13 +1773,13 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\fnote_mark_gpop:nnN}
+% \begin{macro}{\fnote_mark_gpop_all:nnN}
% This commands takes as argument the representation of the mark
-% (e.g. the content of\cs{@thefnmark}), the series (typically default should work)
+% (e.g. the content of\cs{@thefnmark}), the class (typically |default| should work)
% and a sequence into which every structure number in the property
-% is stored that has the same value as the mark
+% is stored that has the same value as the mark. The sequence is cleared first.
% \begin{macrocode}
-\cs_new_protected:Npn \fnote_mark_gpop:nnN #1 #2 #3
+\cs_new_protected:Npn \fnote_mark_gpop_all:nnN #1 #2 #3
{
\seq_clear:N #3
\prop_set_eq:Nc \l_@@_tmpa_prop { g_@@_currentmarks_ #2 _prop }
@@ -1584,20 +1798,28 @@
}
}
}
-\cs_generate_variant:Nn\fnote_mark_gpop:nnN {ooN}
+\cs_generate_variant:Nn\fnote_mark_gpop_all:nnN {ooN}
% \end{macrocode}
% \end{macro}
-
-
+%
+%
+%
+%
% \subsubsection{Enabling tagging and links for the mark command}
-% To handle the mark in the text, we define a special command
-% which will surround \cs{@makefntext}.
-% At this time \cs{@thefnmark} is already set.
+%
+%
+% \begin{plugdecl}{FEMark}
+%
+% To handle the mark in the text, we define a special plug for
+% the socket \socket{tagsupport/fnmark} that receives
+% \cs{@makefntext} as its argument. At this time \cs{@thefnmark}
+% is already set.
+%
% \begin{macrocode}
-\cs_new_protected:Npn \tag@FEMark #1 %#1 content
+\NewSocketPlug{tagsupport/fnmark}{FEMark}
{
% \end{macrocode}
-% end an open mc and start the structure.
+% End an open mc and start the structure.
% \begin{macrocode}
\tag_mc_end_push:
\tag_struct_begin:n { tag=footnotemark }
@@ -1615,7 +1837,7 @@
% which means the name of the prop shouldn't be fix.
% \begin{macrocode}
\fnote_mark_gput:oo {\@thefnmark}{\l_fnote_type_tl}
- \tl_set:Nx \l_@@_linktarget_tl {footnote*.\tag_get:n{struct_num}}
+ \tl_set:Ne \l_@@_linktarget_tl {footnote*.\tag_get:n{struct_num}}
}
% \end{macrocode}
% If there is no autodetecting we need some id,
@@ -1630,13 +1852,13 @@
{
\exp_not:N\fnote_gput_refs:ee
{ \tag_get:n{struct_num} }
- { \ref_value:Vn\l_@@_currentlabel_tl {fnote/struct} }
+ { \property_ref:ee{ @@/\l_@@_currentlabel_tl } {fnote/struct} }
}
% \end{macrocode}
% in this case we set the name of the linktarget in the note
% to the structure number of the text mark.
% \begin{macrocode}
- \tl_set:Nx \l_@@_linktarget_tl {footnote*.\ref_value:Vn\l_@@_currentlabel_tl {fnote/struct}}
+ \tl_set:Ne \l_@@_linktarget_tl {footnote*.\property_ref:ee {@@/\l_@@_currentlabel_tl} {fnote/struct}}
}
% \end{macrocode}
% And now the actual content
@@ -1658,11 +1880,15 @@
\tag_mc_begin_pop:n{}
}
% \end{macrocode}
-% At last set the kernel command to this one
+% At last assign the plug:
% \begin{macrocode}
-\cs_set_eq:NN \@kernel@process@makefnmark \tag@FEMark
+\AssignSocketPlug{tagsupport/fnmark}{FEMark}
% \end{macrocode}
-
+% \end{plugdecl}
+%
+%
+%
+%
% \subsubsection{The footnote text}
% We need a public command to append values to the Ref keys
@@ -1688,11 +1914,13 @@
\tl_new:N \l_@@_dflt_struct_tl
\tl_set:Nn \l_@@_dflt_struct_tl {1}
% \end{macrocode}
-% kernel hook for tagging (2 args)
+% kernel hooks for taggin
% this sets the structure around the whole text
%
+%
+% \begin{plugdecl}{FENote}
% \begin{macrocode}
-\cs_new_protected:Npn \tag@FENote #1#2 % #1 config point, \insert\footins #2 content
+\NewSocketPlug{tagsupport/fntext/begin}{FENote}
{
\tag_mc_end_push:
% \end{macrocode}
@@ -1708,7 +1936,7 @@
% \end{macrocode}
% Store the current structure number for labels.
% \begin{macrocode}
- \tl_set:Nx \l_@@_currentstruct_tl { \tag_get:n{struct_num} }
+ \tl_set:Ne \l_@@_currentstruct_tl { \tag_get:n{struct_num} }
% \end{macrocode}
% We want to move the label structure here. So we provide a container
% It number is |\l__fnote_currentstruct_tl| plus 1.
@@ -1724,7 +1952,7 @@
% \end{macrocode}
% find open marks with identical \cs{@thefnmark}
% \begin{macrocode}
- \fnote_mark_gpop:ooN { \@thefnmark }{ \l_fnote_type_tl } \l_@@_currentrefs_seq
+ \fnote_mark_gpop_all:ooN { \@thefnmark }{ \l_fnote_type_tl } \l_@@_currentrefs_seq
% \end{macrocode}
% Then we store the object numbers of the marks in the /Ref of the FENote structure:
% and the number of the FEnote into the marks structure:
@@ -1744,57 +1972,62 @@
{%no auto
}
+ }
% \end{macrocode}
% This finish the setup of the tagging structure.
+% \end{plugdecl}
+
+
+
% Now we process the text. The destinations for the links are set with the label
% so that we can be sure that we are in hmode.
% \begin{macrocode}
- #1 {#2}
+\NewSocketPlug{tagsupport/fntext/end}{FENote}
+ {
\tag_struct_end:
\tag_mc_begin_pop:n{}
}
% \end{macrocode}
-% At last set the kernel command to this one
+% At last assign the plugs:
% \begin{macrocode}
-\cs_set_eq:NN \@kernel@process@footnotetext \tag@FENote
+\AssignSocketPlug{tagsupport/fntext/begin}{FENote}
+\AssignSocketPlug{tagsupport/fntext/end}{FENote}
% \end{macrocode}
%
-% \cs{@makefntext@cfgpoint} is the configuration point responsible for
-% typesetting the mark in the note. We use it to surround
+% The kernel socket \socket{tagsupport/fntext/mark} is responsible for
+% tagging the mark in the note. We use it to surround
% the mark with the needed tagging commands.
%
-% TODO check if this should/can be kernel configuration points
-% or if an additional kernel configuration points are needed.
+% TODO check if additional kernel configuration points are needed.
% If yes, what about the paragraph start and the paratagging??
%
-% \begin{macrocode}
-\cs_set_protected:Npn \@makefntext@cfgpoint #1 %#1 code that typesets the mark.
- {
- \noindent
- \tag_mc_end_push:
- \tag@FENoteLbl { #1 }
- \tag_mc_begin_pop:n{}
- }
-% \end{macrocode}
-% \cs{tag@FENoteLbl} creates the label in the note on the bottom.
-% It also adds link targets for the hyperlinking.
%
-% \begin{macro}{\tag@FENoteLbl}
+%
+%^^A If tagging is produced this configuration point is also
+%^^A responsible for surrounding the mark with the appropriate tags
+%^^A marking the mark as an Lbl. It does this using the
+%^^A \socket{tagsupport/fntext/mark} socket.
+%
+% \begin{plugdecl}{FENoteLbl}
+% This plug creates the label in the note on the bottom.
+% It also adds link targets for the hyperlinking.
% \begin{macrocode}
-\cs_new_protected:Npn \tag@FENoteLbl #1
+\NewSocketPlug{tagsupport/fntext/mark}{FENoteLbl}
{
+ \tag_mc_end_push:
% \end{macrocode}
-% We create a link target for every related mark. The name is footnote* + structure number
-% of the mark. We also add a link target for the current structure (for footref)
+% We create a link target for every related mark. The name is
+% \texttt{footnote*} \meta{structure number of the mark}. We also add a link
+% target for the current structure (for \cs{footref}).
% \begin{macrocode}
%\seq_show:N\l_@@_currentrefs_seq
\seq_map_inline:Nn\l_@@_currentrefs_seq {\MakeLinkTarget*{footnote*.##1}}
\MakeLinkTarget*{footnote*.\l_@@_currentstruct_tl}
% \end{macrocode}
-% now we add the tagging commands. We move the structure of the label to
-% to the container at the begin of the note.
+% Now we add the tagging commands. We move the structure of the label to
+% to the container at the begin of the note.
% \begin{NOTE}{UF}
-% check if the NonStruct is really needed. Perhaps we can simply move the mc.
+% Check if the NonStruct is really needed. Perhaps we can simply move the mc.
% \end{NOTE}
% \begin{macrocode}
\tag_struct_begin:n { tag=NonStruct,parent=\l_@@_currentstruct_tl +1 }
@@ -1802,37 +2035,43 @@
#1
\tag_mc_end:
\tag_struct_end:
+ \tag_mc_begin_pop:n{}
}
% \end{macrocode}
-% \end{macro}
-%
-%
-% \cs{@makefntext@cfgpointii} is the
-% configuration point around the actual note text.
%
-% TODO check if this should/can be kernel configuration points
% \begin{macrocode}
-\cs_set_protected:Npn \@makefntext@cfgpointii #1
- {
- \tag_mc_end_push:
- \tag@FENotetext { #1 }
- \tag_mc_begin_pop:n{}
- }
+\AssignSocketPlug{tagsupport/fntext/mark}{FENoteLbl}
% \end{macrocode}
-% \begin{macro}{\tag@FENotetext}
+% \end{plugdecl}
+%
+%
+%^^A If tagging is produced this configuration point is also
+%^^A responsible for surrounding the mark with the appropriate tags
+%^^A marking the mark as an MC of type FENote. It does this using
+%^^A the socket \socket{tagsupport/fntext/text}.
%
-% This command currently only adds an MC chunk,
+% \begin{plugdecl}{FENotetext}
+%
+% This plug is for the kernel socket \socket{tagsupport/fntext/text}
+% around the actual note text when doing tagging.
+% Currently it only adds an MC chunk.
%
% TODO Should it set a mc or could it rely on the content?
% \begin{macrocode}
-\cs_new_protected:Npn \tag@FENotetext #1
+\NewSocketPlug{tagsupport/fntext/text}{FENotetext}
{
+ \tag_mc_end_push:
\tag_mc_begin:n{}
#1
\tag_mc_end:
+ \tag_mc_begin_pop:n{}
}
% \end{macrocode}
-% \end{macro}
+%
+% \begin{macrocode}
+\AssignSocketPlug{tagsupport/fntext/text}{FENotetext}
+% \end{macrocode}
+% \end{plugdecl}
%-------------------------------------
% \begin{macrocode}
@@ -1849,7 +2088,7 @@
%<*footmisc>
%%
%% Copyright (c) 1995-2011 Robin Fairbairns
-%% Copyright (c) 2018-2022 Robin Fairbairns, Frank Mittelbach
+%% Copyright (c) 2018-2023 Robin Fairbairns, Frank Mittelbach
%%
%% This file is part of the `latex-lab Bundle'.
%% --------------------------------------------
@@ -1864,9 +2103,6 @@
%%
%% This work has the LPPL maintenance status 'maintained'.
%%
-%%
-%% File: footmisc.dtx (C) Copyright 1995-2011 Robin Fairbairns
-%% (C) Copyright 2018-2022 Frank Mittelbach
\NeedsTeXFormat{LaTeX2e}
\providecommand\DeclareRelease[3]{}
\providecommand\DeclareCurrentRelease[2]{}
@@ -1916,14 +2152,14 @@
option "para"}%
{I shall ignore "\CurrentOption"}%
\else
- \def\@footnotetext@cfgpoint {\marginpar}
\AddToHook{fntext/para}{%
\hsize\marginparwidth % correct the default \hsize
\footnotesep\z@ % don't add a default separation
}
- \def\@footnotetext@cfgpointii {\@makefntext}
- \def\@footnotetext@cfgpointiii {}
- \def\@footnotetext@cfgpointiv {}
+ \AssignSocketPlug{fntext/process}{side}
+% \AssignSocketPlug{fntext/make}{default}
+ \AssignSocketPlug{fntext/begin}{noop}
+ \AssignSocketPlug{fntext/end}{noop}
\fi
}
\let\footnotelayout\@empty
@@ -1992,25 +2228,16 @@
\DeclareOption{multiple}{\FN@multiplefootnotetrue}
\ProcessOptions
% \end{macrocode}
-% This version of \pkg{footmisc} can assume that the new OR code is
-% already available, thus nothing needs loading at this
-% point. However, as long as we use this code also in a package
-% version that can be loaded by other package while we are in a
-% transition phase it is not clear whether not the kernel code is
-% already available for other packages.
-% \begin{macrocode}
-%\@ifundefined{@kernel@before@cclv}
-% {\input{latex-lab-new-or.ltx}}{}
-% \end{macrocode}
%
% Footnote box layout for para footnotes;
% this would also be the hook to support dblfootnotes (from the
% \texttt{dblfnote} package if we integrate that).
% \begin{macrocode}
\ifFN@para
- \def\@makecol@cfgpointii {%
+ \NewSocketPlug{@makecol/footnotes}{para}{%
\global\setbox\footins\vbox{\FN@makefootnoteparagraph}%
}
+ \AssignSocketPlug{@makecol/footnotes}{para}
\fi
% \end{macrocode}
%
@@ -2038,64 +2265,29 @@
% \end{macrocode}
%
%
-%
% \begin{macrocode}
\ifcase \FN@bottomcases\relax
-\ERROR
-\or
+ \ERROR
+\or %1
\ifFN@abovefloats
- \def\@makecol@cfgpoint {%
- \@if@footnotes@TF
- {\@outputbox@append{\vfill}}%
- {\@if@bfloats@TF{\@outputbox@append{\vfill}}%
- {\@outputbox@reinsertbskip}}%
- \@outputbox@appendfootnotes
- \@outputbox@attachfloats
- }
+ \AssignSocketPlug {@makecol/outputbox}{space-footnotes-floats}
\else
- \def\@makecol@cfgpoint {%
- \@outputbox@attachfloats
- \@if@footnotes@TF
- {\@outputbox@append{\vfill}}%
- {\@outputbox@reinsertbskip}%
- \@outputbox@appendfootnotes
- }
+ \AssignSocketPlug {@makecol/outputbox}{floats-footnotes-space}
\fi
-\or
+\or %2
\ifFN@abovefloats
- \def\@makecol@cfgpoint {%
- \@outputbox@appendfootnotes
- \@if@bfloats@TF
- {\@outputbox@append{\vfill}}%
- {\@outputbox@reinsertbskip}%
- \@outputbox@attachfloats
- }
+ \AssignSocketPlug {@makecol/outputbox}{footnotes-space-floats}
\else
- \def\@makecol@cfgpoint {%
- \@if@footnotes@TF
- {\@outputbox@append{\vfill}}%
- {\@if@bfloats@TF{\@outputbox@append{\vfill}}%
- {\@outputbox@reinsertbskip}}%
- \@outputbox@attachfloats
- \@outputbox@appendfootnotes
- }
+ \AssignSocketPlug {@makecol/outputbox}{space-floats-footnotes}
\fi
-\or
+\or %3
\ifFN@abovefloats
- \def\@makecol@cfgpoint {%
- \@outputbox@appendfootnotes
- \@outputbox@attachfloats
- \@outputbox@reinsertbskip
- }
+ \AssignSocketPlug {@makecol/outputbox}{footnotes-floats}
\else
- \def\@makecol@cfgpoint {%
- \@outputbox@attachfloats
- \@outputbox@appendfootnotes
- \@outputbox@reinsertbskip
-}
+ \AssignSocketPlug {@makecol/outputbox}{floats-footnotes}
\fi
\else
-\ERROR
+ \ERROR
\fi
% next can be dropped when cleaned up
@@ -2120,24 +2312,12 @@
\ifFN@para
- \def\@footnotetext@cfgpoint {\insert\footins}
- \long\def\@footnotetext@cfgpointii #1{%
- \setbox\FN@tempboxa\hbox{\@makefntext{#1}}%
- \dp\FN@tempboxa\z@
- \ht\FN@tempboxa
- \dimexpr\wd\FN@tempboxa *%
- \footnotebaselineskip /\columnwidth\relax
- \box\FN@tempboxa
- }
-
-
- \def\@footnotetext@cfgpointiii {}
- \def\@footnotetext@cfgpointiv {% config point
- \strut
- \penalty-10\relax
- \hskip\footglue
- }
+% \AssignSocketPlug{fntext/process}{default}
+ \AssignSocketPlug{fntext/make}{para}
+ \AssignSocketPlug{fntext/begin}{noop}
+ \AssignSocketPlug{fntext/end}{para}
+
\fi
@@ -2211,7 +2391,7 @@
% perpage is loaded this results in updating counters on the reset
% list to 1 (or to a higher starting value if \cs{MakePerPage} is
% used with an optional argument, which is precisely the problem
-% here. By subtracting 1 in that case we set it back to 1 lower
+% here). By subtracting 1 in that case we set it back to 1 lower
% than the starting value.
%
% But to make this fully work we also need to update a support
@@ -2236,10 +2416,7 @@
%}
-\AddToHook{fntext/begin}{\nobreak \hspace{.2em}}
-
-
-
+ \AddToHook{fntext/begin}{\nobreak \hspace{.2em}}
\else
@@ -2296,7 +2473,11 @@
\ifFN@multiplefootnote
\providecommand*{\multiplefootnotemarker}{3sp}
-% we tag the separator as artifact
+% \end{macrocode}
+%
+% We tag the separator as artifact
+% \fmi{why is this done with \cs{providecommand}?}
+% \begin{macrocode}
\ExplSyntaxOn
\providecommand*{\multfootsep}{\tag_mc_end_push:\tag_mc_begin:n{artifact},\tag_mc_end:\tag_mc_begin_pop:n{}}
\ExplSyntaxOff
@@ -2526,7 +2707,7 @@
{\mathparagraph\mathparagraph\mathparagraph}%
}
\newcommand\mpfootnotemark{%
- \@ifnextchar[%
+ \@ifnextchar[%]
\@xmpfootnotemark
{%
\stepcounter\@mpfn
diff --git a/macros/latex/required/latex-lab/latex-lab-footnotes.pdf b/macros/latex/required/latex-lab/latex-lab-footnotes.pdf
index b383bff74b..8f55486a67 100644
--- a/macros/latex/required/latex-lab/latex-lab-footnotes.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-footnotes.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-graphic.dtx b/macros/latex/required/latex-lab/latex-lab-graphic.dtx
index f9457e0524..158b0d2a9c 100644
--- a/macros/latex/required/latex-lab/latex-lab-graphic.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-graphic.dtx
@@ -15,6 +15,8 @@
% https://github.com/latex3/latex2e/required/latex-lab
%
% for those people who are interested or want to report an issue.
+\def\ltlabgraphicdate{2023-10-13}
+\def\ltlabgraphicversion{0.80b}
%
%<*driver>
\documentclass{l3doc}
@@ -31,7 +33,7 @@
% \title{The \textsf{latex-lab-graphic} package\\
% Tagging of included graphics }
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{v0.8 2023-04-07}
+% \date{v\ltlabgraphicversion\ \ltlabgraphicdate}
%
% \maketitle
%
@@ -174,7 +176,7 @@
% \begin{implementation}
% \section{Implementation}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-graphic} {2023-04-07} {0.8}
+\ProvidesExplPackage {latex-lab-testphase-graphic} {\ltlabgraphicdate} {\ltlabgraphicversion}
{Code related to the tagging of graphics}
% \end{macrocode}
% We load l3opacity for the debug code
@@ -182,25 +184,16 @@
\RequirePackage{l3opacity}
% \end{macrocode}
%
-%\subsection{Saving the position}
-% We need a replacement for zref-savepos. This uses l3ref which loaded
-% by the pdfmanagement/tagpdf.
%
-% TODO: this is perhaps needed in other places too and should be moved to
-% l3ref!!
-% \begin{macrocode}
-\ref_attribute_gset:nnnn{xpos}{0}{shipout}{\int_use:N\tex_lastxpos:D}
-\ref_attribute_gset:nnnn{ypos}{0}{shipout}{\int_use:N\tex_lastypos:D}
-% \end{macrocode}
-
% \begin{macro}{\@@_graphic_savepos:n}
-% this is the command which stores the position. It uses
-% two savepos in case bidi needs it (see zref-savepos).
+% this is the command which stores the position. Similar to
+% zref-savepos it uses two savepos commands
+% for the case that bidi changes the processing order.
% \begin{macrocode}
\cs_new_protected:Npn\@@_graphic_savepos:n #1
{
\tex_savepos:D
- \ref_label:nn{#1}{xpos,ypos,abspage}
+ \property_record:nn{#1}{xpos,ypos,abspage}
\tex_savepos:D
}
\cs_generate_variant:Nn \@@_graphic_savepos:n {e}
@@ -308,8 +301,7 @@
\fp_new:N\l_@@_graphic_lx_fp
\fp_new:N\l_@@_graphic_uy_fp
% \end{macrocode}
-% this holds the scale value. Currently this only the one from
-% \cs{Gin@scalex}
+% this holds the scale value. Either \cs{Gin@scalex} or (if that is !) \cs{Gin@scaley}
% \begin{macrocode}
\fp_new:N\l_@@_graphic_scale_fp
% \end{macrocode}
@@ -351,8 +343,8 @@
{
\tl_if_empty:NT\l_@@_graphic_alt_tl
{
- \msg_warning:nnx{tag}{alt-text-missing}{\l_@@_graphic_alt_dflt_tl}
- \tl_set:Nx\l_@@_graphic_alt_tl {\l_@@_graphic_alt_dflt_tl}
+ \msg_warning:nne{tag}{alt-text-missing}{\l_@@_graphic_alt_dflt_tl}
+ \tl_set:Ne\l_@@_graphic_alt_tl {\l_@@_graphic_alt_dflt_tl}
}
\tag_struct_begin:n
{
@@ -468,7 +460,7 @@
% \begin{macrocode}
\AddToHook{package/graphicx/after}[latex-lab]
{
- \define@key{Gin}{alt} {\tl_set:Nx\l_@@_graphic_alt_tl{\text_purify:n{#1}}}
+ \define@key{Gin}{alt} {\tl_set:Ne\l_@@_graphic_alt_tl{\text_purify:n{#1}}}
\define@key{Gin}{artifact}[]
{
\bool_set_true:N \l_@@_graphic_artifact_bool
@@ -476,7 +468,7 @@
}
\define@key{Gin}{actualtext}
{
- \tl_set:Nx\l_@@_graphic_actual_tl{\text_purify:n{#1}}
+ \tl_set:Ne\l_@@_graphic_actual_tl{\text_purify:n{#1}}
\bool_set_false:N \l_@@_graphic_BBox_bool
}
\define@key{Gin}{correct-BBox}
@@ -507,7 +499,7 @@
\keys_define:nn{tag/picture}
{
,alt .code:n =
- {\tl_set:Nx\l_@@_graphic_alt_tl{\text_purify:n{#1}}}
+ {\tl_set:Ne\l_@@_graphic_alt_tl{\text_purify:n{#1}}}
,artifact .code:n =
{
\bool_set_true:N \l_@@_graphic_artifact_bool
@@ -515,7 +507,7 @@
}
,actualtext .code:n =
{
- \tl_set:Nx\l_@@_graphic_actual_tl{\text_purify:n{#1}}
+ \tl_set:Ne\l_@@_graphic_actual_tl{\text_purify:n{#1}}
\bool_set_false:N \l_@@_graphic_BBox_bool
}
,correct-BBox .code:n =
@@ -579,7 +571,12 @@
% \begin{macrocode}
\cs_new_protected:Npn \@@_graphic_get_scale:
{
- \fp_set:Nn \l_@@_graphic_scale_fp { \Gin@scalex }
+ \fp_set:Nn \l_@@_graphic_scale_fp
+ {
+ \str_if_eq:eeTF {\Gin@scalex} { ! }
+ { \Gin@scaley }
+ { \Gin@scalex }
+ }
}
% \end{macrocode}
% \end{macro}
@@ -634,7 +631,7 @@
(\l_@@_graphic_uy_fp-\l_@@_graphic_ly_fp-\l_@@_graphic_trim_ly_fp)
* (-\l_@@_graphic_sin_fp)
}
- \tl_gset:Nx\g_@@_graphic_lx_tl
+ \tl_gset:Ne\g_@@_graphic_lx_tl
{
\fp_eval:n
{
@@ -649,7 +646,7 @@
+\l_@@_graphic_trim_lx_fp
}
}
- \tl_gset:Nx\g_@@_graphic_ux_tl
+ \tl_gset:Ne\g_@@_graphic_ux_tl
{
\fp_eval:n
{
@@ -693,7 +690,7 @@
(\l_@@_graphic_uy_fp-\l_@@_graphic_ly_fp-\l_@@_graphic_trim_ly_fp)
* \l_@@_graphic_cos_fp
}
- \tl_gset:Nx\g_@@_graphic_ly_tl
+ \tl_gset:Ne\g_@@_graphic_ly_tl
{
\fp_eval:n
{
@@ -707,7 +704,7 @@
+ \l_@@_graphic_ly_fp + \l_@@_graphic_trim_ly_fp
}
}
- \tl_gset:Nx\g_@@_graphic_uy_tl
+ \tl_gset:Ne\g_@@_graphic_uy_tl
{
\fp_eval:n
{
@@ -733,7 +730,7 @@
{
\bool_if:NT\l_@@_graphic_bboxcorr_bool
{
- \tl_set:Nx #1
+ \tl_set:Ne #1
{
\fp_eval:n
{
@@ -742,7 +739,7 @@
\dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {1} }
}
}
- \tl_set:Nx #2
+ \tl_set:Ne #2
{
\fp_eval:n
{
@@ -751,7 +748,7 @@
\dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {2} }
}
}
- \tl_set:Nx #3
+ \tl_set:Ne #3
{
\fp_eval:n
{
@@ -760,7 +757,7 @@
\dim_to_decimal_in_bp:n {\seq_item:Nn \l_@@_graphic_bboxcorr_seq {3} }
}
}
- \tl_set:Nx #4
+ \tl_set:Ne #4
{
\fp_eval:n
{
@@ -789,22 +786,22 @@
{\l_@@_graphic_BBox_bool}
}
{
- \fp_set:Nn \l_@@_graphic_scale_fp { \Gin@scalex }
+ \__tag_graphic_get_scale:
\@@_graphic_get_trim:
\int_gincr:N\g_@@_graphic_int
- \tl_set:Nx\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int}
+ \tl_set:Ne\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int}
\@@_graphic_savepos:e { \l_@@_graphic_currentlabel_tl }
- \tl_gset:Nx\g_@@_graphic_lx_tl
+ \tl_gset:Ne\g_@@_graphic_lx_tl
{
\dim_to_decimal_in_bp:n
- { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp }
+ { \property_ref:een {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp }
}
- \tl_gset:Nx\g_@@_graphic_ly_tl
+ \tl_gset:Ne\g_@@_graphic_ly_tl
{
\dim_to_decimal_in_bp:n
- { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp }
+ { \property_ref:een {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp }
}
- \tl_gset:Nx\g_@@_graphic_ux_tl
+ \tl_gset:Ne\g_@@_graphic_ux_tl
{
\fp_eval:n
{
@@ -813,7 +810,7 @@
\dim_to_decimal_in_bp:n { \Gin@req@width }
}
}
- \tl_gset:Nx\g_@@_graphic_uy_tl
+ \tl_gset:Ne\g_@@_graphic_uy_tl
{
\fp_eval:n
{
@@ -827,7 +824,7 @@
% \begin{macrocode}
\legacy_if:nF {Gin@clip}
{
- \tl_gset:Nx\g_@@_graphic_ux_tl
+ \tl_gset:Ne\g_@@_graphic_ux_tl
{
\fp_eval:n
{
@@ -836,7 +833,7 @@
\l_@@_graphic_trim_ux_fp
}
}
- \tl_gset:Nx\g_@@_graphic_lx_tl
+ \tl_gset:Ne\g_@@_graphic_lx_tl
{
\fp_eval:n
{
@@ -845,7 +842,7 @@
\l_@@_graphic_trim_lx_fp
}
}
- \tl_gset:Nx\g_@@_graphic_uy_tl
+ \tl_gset:Ne\g_@@_graphic_uy_tl
{
\fp_eval:n
{
@@ -854,7 +851,7 @@
\l_@@_graphic_trim_uy_fp
}
}
- \tl_gset:Nx\g_@@_graphic_ly_tl
+ \tl_gset:Ne\g_@@_graphic_ly_tl
{
\fp_eval:n
{
@@ -932,26 +929,26 @@
}
{
\int_gincr:N\g_@@_graphic_int
- \tl_set:Nx\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int}
+ \tl_set:Ne\l_@@_graphic_currentlabel_tl {_@@_graphic_\int_use:N \g_@@_graphic_int}
\@@_graphic_savepos:e { \l_@@_graphic_currentlabel_tl }
- \tl_gset:Nx \g_@@_graphic_lx_tl
+ \tl_gset:Ne \g_@@_graphic_lx_tl
{
\dim_to_decimal_in_bp:n
- { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp }
+ { \property_ref:een {\l_@@_graphic_currentlabel_tl}{xpos}{0}sp }
}
- \tl_gset:Nx \g_@@_graphic_ly_tl
+ \tl_gset:Ne \g_@@_graphic_ly_tl
{
\dim_to_decimal_in_bp:n
- { \@@_ref_value:enn {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox }
+ { \property_ref:een {\l_@@_graphic_currentlabel_tl}{ypos}{0}sp - \dp\@picbox }
}
- \tl_gset:Nx \g_@@_graphic_ux_tl
+ \tl_gset:Ne \g_@@_graphic_ux_tl
{
\dim_to_decimal_in_bp:n
{
\g_@@_graphic_lx_tl bp + \wd\@picbox
}
}
- \tl_gset:Nx \g_@@_graphic_uy_tl
+ \tl_gset:Ne \g_@@_graphic_uy_tl
{
\dim_to_decimal_in_bp:n
{
@@ -1042,7 +1039,7 @@
\int_compare:nNnT
{\g_shipout_readonly_int}
=
- {\@@_ref_value:enn{_@@_graphic_#6}{abspage}{0}}
+ {\property_ref:een{_@@_graphic_#6}{abspage}{0}}
{
\put
(#1 bp,\dim_eval:n{-\paperheight + \dim_eval:n{#2 bp}})
@@ -1066,7 +1063,7 @@
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{graphic-latex-lab-testphase.ltx}
- [2023-04-07 v0.8 code related to the tagging included graphics]
+ [\ltlabgraphicdate\space v\ltlabgraphicversion\space latex-lab wrapper graphic]
\RequirePackage{latex-lab-testphase-graphic}
%</latex-lab>
% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-graphic.pdf b/macros/latex/required/latex-lab/latex-lab-graphic.pdf
index 7a5a07325e..a8570de484 100644
--- a/macros/latex/required/latex-lab/latex-lab-graphic.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-graphic.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-mathtagging.dtx b/macros/latex/required/latex-lab/latex-lab-math.dtx
index 923001f559..285471addc 100644
--- a/macros/latex/required/latex-lab/latex-lab-mathtagging.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-math.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: latex-lab-mathtagging.dtx
+%% File: latex-lab-math.dtx
%
% Copyright (C) 2022-2023 The LaTeX Project
%
@@ -19,8 +19,8 @@
% for those people who are interested or want to report an issue.
%
%
-\def\ltmathtaggingdate{2023-03-08}
-\def\ltmathtaggingversion{v0.5a}
+\def\ltlabmathdate{2023-09-11}
+\def\ltlabmathversion{0.5c}
%
%<*driver>
\documentclass{l3doc}
@@ -30,16 +30,17 @@
\usepackage{todonotes}
\begin{document}
- \DocInput{latex-lab-mathtagging.dtx}
+ \DocInput{latex-lab-math.dtx}
\end{document}
%</driver>
%
% \fi
%
%
-% \title{The \texttt{latex-lab-mathtagging} code\thanks{}}
+% \title{The \texttt{latex-lab-math} code\thanks{}}
% \author{Frank Mittelbach, Joseph Wright, \LaTeX{} Project}
-%
+% \date{v\ltlabmathversion\ \ltlabmathdate}
+%
% \maketitle
%
% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}}
@@ -163,8 +164,6 @@
% presumably)\\
% - Math environments created with \pkg{ltcmd} [commands] should not be copied, . . .\\
% - Package authors should be able to manually set up math environments with a public boolean.}
-%
-% \item
% \end{enumerate}
%
%
@@ -198,15 +197,15 @@
%
% \car{Change description here?}
% \begin{macrocode}
-\ProvidesFile{latex-lab-mathtagging.ltx}
- [\ltmathtaggingdate\space
- \ltmathtaggingversion\space
+\ProvidesFile{latex-lab-math.ltx}
+ [\ltlabmathdate\space
+ v\ltlabmathversion\space
Grab all the math(s) and tag it (experiments)]
% \end{macrocode}
%
% Temp loading \ldots
% \begin{macrocode}
-\AddToHook{begindocument/before}{\RequirePackage{latex-lab-testphase-block-tagging}}
+\AddToHook{begindocument/before}{\RequirePackage{latex-lab-testphase-block}}
% \end{macrocode}
%
% \begin{macrocode}
@@ -242,6 +241,8 @@
% Or do we need an extra storage tl?}
%
% \begin{variable}{\g_@@_grabbed_env_tl, \g_@@_grabbed_math_tl}
+% \cs{g_@@_grabbed_env_tl} contains the name of the math environment (\texttt{math} in the case
+% of inline math, \cs{g_@@_grabbed_math_tl} the math content.
% \begin{macrocode}
\tl_new:N \g_@@_grabbed_env_tl
\tl_new:N \g_@@_grabbed_math_tl
@@ -309,11 +310,25 @@
{
\@@_process:nn { math } {#1} % $
% fairly simple this one
- \tagmcend %end P-chunk, in code: \tag_mc_end_push:
- \@kernel@math@begin
- #1 $
- \@kernel@math@end
- \tagmcbegin{} % restart P-chunk (whatsits in pdftex)
+% \end{macrocode}
+% We do not want math tagging in fakemath or when measuring,
+% so we imitate the test inside \cs{@@_process:nn} for now,
+% see https://github.com/latex3/tagging-project/issues/5
+% TODO: use socket to get more control about typesetting variants (tagged, drop etc)?
+% \begin{macrocode}
+ \legacy_if:nTF { measuring@ }
+ { #1 $ }
+ {
+ \tl_if_in:nnTF {#1} { \m@th }
+ { #1 $ }
+ {
+ \tagmcend %end P-chunk, in code: \tag_mc_end_push:
+ \@kernel@math@begin
+ #1 $
+ \@kernel@math@end
+ \tagmcbegin{} % restart P-chunk (whatsits in pdftex)
+ }
+ }
}
}
% \end{macrocode}
@@ -334,9 +349,14 @@
$$
}
}
-
+% \end{macrocode}
+% To allow to use the code without tagging we guard. But probably tagpdf should
+% provide some tools for such manual para-ends.
+% \begin{macrocode}
\cs_new_protected:Npn \@kernel@close@P {
- \tagmcend %end P-chunk, in code: \tag_mc_end_push:
+ \tag_if_active:T
+ {
+ \tagmcend %end P-chunk, should perhaps be \tag_mc_end_push: ...
\int_gincr:N \g__tag_para_end_int
\bool_if:NT \l__tag_para_show_bool
{ \tag_mc_begin:n{artifact}
@@ -344,6 +364,7 @@
\tag_mc_end:
}
\tag_struct_end:
+ }
}
@@ -368,12 +389,15 @@
\l_@@_tmpa_skip \lastskip
\@kernel@math@end
\penalty \postdisplaypenalty
- \skip_vertical:n { -\l_@@_tmpa_skip }
+% \end{macrocode}
+% This reinserts the below display skips. It must be doubled to
+% get the right amount:
+% \begin{macrocode}
+ \skip_vertical:n { -\l_@@_tmpa_skip * 2 }
%
\@doendpe % this has no \end{...} to take care of it
}
-
% \end{macrocode}
% \end{macro}
%
@@ -691,7 +715,6 @@
{ $ }
}
{
- \bool_set_true:N \l_@@_collected_bool
\@@_grab_inline:w
}
} % \(
@@ -772,16 +795,16 @@
\tl_gset:Nx\tmpmathcontent
{
LaTeX~ formula~ starts~
- \exp_not:N\begin{\g__math_grabbed_env_tl}
+ \exp_not:N\begin{\g_@@_grabbed_env_tl}
\space
- \exp_not:V\g__math_grabbed_math_tl
+ \exp_not:V\g_@@_grabbed_math_tl
\space
- \exp_not:N\end{\g__math_grabbed_env_tl}
+ \exp_not:N\end{\g_@@_grabbed_env_tl}
\space LaTeX~ formula~ ends~
}
\tagstructbegin{tag=Formula,
AFinline-o=\tmpmathcontent,
- title-o=\g__math_grabbed_env_tl,
+ title-o=\g_@@_grabbed_env_tl,
actualtext=\tmpmathcontent
% alt=\tmpmathcontent
}
@@ -813,12 +836,23 @@
\@@_grab_dollar:w
}
}
+
\exp_args:No \tex_everydisplay:D
{
\tex_the:D \tex_everydisplay:D
\iftrue % this may have to be a settable flag!
% {
% \typeout{==>~ in~ everydisplay}
+% \end{macrocode}
+% flipping the \cs{belowdisplay} values is done so that we get (assumption)
+% a negative skip and not make the page bigger then we take that out,
+% then we add the tagging code (in \cs{@@_tag_dollardollar_display_end} ) and
+% then we put a real \cs{postdisplaypenalty} in and
+% the right skip (of which we don't know if it is short or a
+% normal \cs{belowdisplayskip}). This might need some refinement if that skip
+% is actually negative from the start
+% (not sure it ever is and is worth bothering about)
+% \begin{macrocode}
\skip_set:Nn \belowdisplayskip {-\belowdisplayskip}
\skip_set:Nn \belowdisplayshortskip {-\belowdisplayshortskip}
\int_set:Nn \postdisplaypenalty {10000}
@@ -1185,10 +1219,10 @@
\tl_new:N \result
\cs_new_protected:Npn\grabaformulapartandstart {
- \@@_split_at_nl:NN \g__math_grabbed_math_tl \result
+ \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result
\typeout{====>first-result=\meaning\result}
- \typeout{====>first-tmpmathcontent=\meaning\g__math_grabbed_math_tl}
- \tl_if_empty:NTF \g__math_grabbed_math_tl
+ \typeout{====>first-tmpmathcontent=\meaning\g_@@_grabbed_math_tl}
+ \tl_if_empty:NTF \g_@@_grabbed_math_tl
{
\typeout{====>formula~ has~ no~ subparts}
\global\@subformulasfalse
@@ -1196,7 +1230,7 @@
{
\typeout{====>formula~ has~ subparts}
\global\@subformulastrue
- \edef\resulttitle{\g__math_grabbed_env_tl\space (part)}
+ \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)}
\tagstructbegin{tag=Formula,
% \end{macrocode}
% For now we don't put anything in /alt or /ActualText on subformulas
@@ -1209,16 +1243,16 @@
}
\cs_new_protected:Npn\grabaformulapartandmayberestart {
- \@@_split_at_nl:NN \g__math_grabbed_math_tl \result
+ \@@_split_at_nl:NN \g_@@_grabbed_math_tl \result
\typeout{====>result=\meaning\result}
- \typeout{====>tmpmathcontent=\meaning\g__math_grabbed_math_tl}
-% \tl_if_empty:NTF \g__math_grabbed_math_tl
+ \typeout{====>tmpmathcontent=\meaning\g_@@_grabbed_math_tl}
+% \tl_if_empty:NTF \g_@@_grabbed_math_tl
% {
% \typeout{====>tmpmathcontent=empty}
% }
% {
% \typeout{====>tmpmathcontent=not-empty}
- \edef\resulttitle{\g__math_grabbed_env_tl\space (part)}
+ \edef\resulttitle{\g_@@_grabbed_env_tl\space (part)}
\tagstructbegin{tag=Formula,
alt=\result,
title-o=\resulttitle
@@ -1237,7 +1271,7 @@
\if@subformulas
\ifmeasuring@\else
%
- \tl_if_empty:NF \g__math_grabbed_math_tl
+ \tl_if_empty:NF \g_@@_grabbed_math_tl
{
\tagmcend
\tagstructend
@@ -1277,4 +1311,3 @@
% \Finale
%
%
-
diff --git a/macros/latex/required/latex-lab/latex-lab-mathtagging.pdf b/macros/latex/required/latex-lab/latex-lab-math.pdf
index 6f6df64408..e65f6cd1bb 100644
--- a/macros/latex/required/latex-lab/latex-lab-mathtagging.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-math.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-mathpkg.pdf b/macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
index acc2d859a6..6669de2eb6 100644
--- a/macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-mathpkg.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-mathtools.pdf b/macros/latex/required/latex-lab/latex-lab-mathtools.pdf
index 5a001d442d..e079d79d48 100644
--- a/macros/latex/required/latex-lab/latex-lab-mathtools.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-mathtools.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-minipage.dtx b/macros/latex/required/latex-lab/latex-lab-minipage.dtx
index 00b1d649a1..1d3ee828aa 100644
--- a/macros/latex/required/latex-lab/latex-lab-minipage.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-minipage.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabminipagedate{2023-10-30}
+\def\ltlabminipageversion{0.81c}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -27,15 +29,11 @@
%
% \fi
%
-
-\def\ltlistsversion{v0.81}
-\def\ltlistsdate{2023/05/10}
-
%
% \title{The \textsf{latex-lab-minipage} package\\
% Changes related to the tagging of minipage and parbox}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{\ltlistsversion\ \ltlistsdate}
+% \date{v\ltlabminipageversion\ \ltlabminipagedate}
%
% \maketitle
%
@@ -51,12 +49,21 @@
%
% \section{Introduction}
%
-% How to tag minipages and parboxes is still under discussion.
+% How to best tag minipages and parboxes is still under discussion.
% But as they start and contain paragraphs it is clear that
-% hooks are needed to interrupt and restart the tagging.
+% some sockets are needed to interrupt and restart the tagging.
+%
+% The tagging added is currently quite simple-minded. See the
+% todo-testfiles and the code comments for some open points.
%
-% The tagging added is currently quite simple minded. See the todo-testfiles and the
-% code comments for some open points.
+% One of the main problems is how to properly embed them in the
+% surrounding. When used in normal text (in a paragraph) they
+% typically should close the \texttt{text} structure and reopen one
+% at the end. But when used inside low-level \cs{vbox} or \cs{hbox}
+% this is often wrong. The code uses now there two sockets
+% \texttt{tagsupport/parbox/before} and
+% \texttt{tagsupport/parbox/after} which can be set to noop, if
+% necessary.
%
% \begin{macrocode}
%<*package>
@@ -64,9 +71,15 @@
%
% \section{Implementation}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-minipage} {2023-05-10} {0.81}
+\ProvidesExplPackage {latex-lab-testphase-minipage}
+ {\ltlabminipagedate} {\ltlabminipageversion}
{Code related to the tagging of minipages and parboxes}
% \end{macrocode}
+% As minipage uses a socket from the footnote code we must load the OR-code:
+% \begin{macrocode}
+\RequirePackage{latex-lab-testphase-new-or-1}
+\RequirePackage{latex-lab-testphase-new-or-2}
+% \end{macrocode}
%
% \subsection{Provide the kernel hooks}
@@ -78,12 +91,13 @@
\def\@kernel@init@minipage{}
\def\@kernel@init@parbox{}
% \end{macrocode}
-% We need a few hooks.
+% We use sockets for the tag support code, as there will be cases where we want
+% to exchange the content or disable it.
% \begin{macrocode}
-\def\@kernel@before@minipage{}
-\def\@kernel@after@minipage{}
-\def\@kernel@before@parbox{}
-\def\@kernel@after@parbox{}
+\socket_new:nn {tagsupport/minipage/before}{0}
+\socket_new:nn {tagsupport/minipage/after} {0}
+\socket_new:nn {tagsupport/parbox/before} {0}
+\socket_new:nn {tagsupport/parbox/after}{0}
% \end{macrocode}
%
% \subsection{Patch minipage}
@@ -102,16 +116,16 @@
\setlength\@tempdima{#4}%
\def\@mpargs{{#1}{#2}[#3]{#4}}%
% \end{macrocode}
-% insert the hook
+% insert the socket
% \begin{macrocode}
- \@kernel@before@minipage% new
+ \socket_use:n{tagsupport/minipage/before}% new
\setbox\@tempboxa\vbox\bgroup
\color@begingroup
\hsize\@tempdima
\textwidth\hsize \columnwidth\hsize
\@parboxrestore
\def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
- \let\@footnotetext\@mpfootnotetext
+ \socket_assign_plug:nn{fntext/process}{mp}%
\let\@listdepth\@mplistdepth \@mplistdepth\z@
\@minipagerestore
\@setminipage}
@@ -131,13 +145,13 @@
\color@endgroup
\egroup
% \end{macrocode}
-% as the parbox command is called, we must prevent that it adds its additional
-% tagging commands:
+% As the parbox command is called, we must prevent that it adds its
+% additional tagging commands:
% \begin{macrocode}
\tag_stop:n{minipage}
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
\tag_start:n{minipage}
- \@kernel@after@minipage%new end ...
+ \socket_use:n{tagsupport/minipage/after} %new end ...
}
% \end{macrocode}
%
@@ -148,7 +162,7 @@
\leavevmode
\@pboxswfalse
\setlength\@tempdima{#4}%
- \@kernel@before@parbox% new
+ \socket_use:n{tagsupport/parbox/before}
\@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
\ifx\relax#2\else
\setlength\@tempdimb{#2}%
@@ -163,7 +177,7 @@
\csname bm@#3\endcsname}%
\if@pboxsw \m@th$\fi
\@end@tempboxa%
- \@kernel@after@parbox%new end
+ \socket_use:n{tagsupport/parbox/after}
}
% \end{macrocode}
%
@@ -172,7 +186,7 @@
% \begin{macrocode}
\tl_new:N \l__ltboxes_tag_tl
\tl_set:Nn \l__ltboxes_tag_tl {Div}
-\cs_set_protected:Npn\@kernel@before@minipage
+\socket_new_plug:nnn{tagsupport/minipage/before}{tag/dflt}
{
% \end{macrocode}
% As there was a \cs{leavevmode} before that is a P/text open that we have to close.
@@ -181,14 +195,27 @@
% \end{macrocode}
% TODO: the P can be further up, we need a proper method to test and handle this.
% \begin{macrocode}
- \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
-\cs_set_protected:Npn\@kernel@after@minipage
+ \tag_struct_begin:n{tag=\l__ltboxes_tag_tl}
+ }
+% \end{macrocode}
+% similar for the other sockets:
+% \begin{macrocode}
+\socket_new_plug:nnn{tagsupport/minipage/after}{tag/dflt}
{\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
-\cs_set_protected:Npn\@kernel@before@parbox
+
+\socket_new_plug:nnn{tagsupport/parbox/before}{tag/dflt}
{\tag_mc_end_push:\tag_struct_end:\tag_struct_begin:n{tag=\l__ltboxes_tag_tl}}
-\cs_set_protected:Npn\@kernel@after@parbox
+
+\socket_new_plug:nnn{tagsupport/parbox/after}{tag/dflt}
{\tag_struct_end:\tag_struct_begin:n{tag=\l__tag_para_tag_tl}\tag_mc_begin_pop:n{}}
% \end{macrocode}
+% Activate the default tagging plug
+% \begin{macrocode}
+\socket_assign_plug:nn{tagsupport/minipage/before}{tag/dflt}
+\socket_assign_plug:nn{tagsupport/minipage/after} {tag/dflt}
+\socket_assign_plug:nn{tagsupport/parbox/before} {tag/dflt}
+\socket_assign_plug:nn{tagsupport/parbox/after} {tag/dflt}
+% \end{macrocode}
% \begin{macrocode}
%</package>
% \end{macrocode}
@@ -196,7 +223,8 @@
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{minipage-latex-lab-testphase.ltx}
- [2022-10-26 v0.8 code related to the tagging of sectioning commands]
+ [\ltlabminipagedate\space v\ltlabminipageversion
+ code related to the tagging of minipage and parbox]
\RequirePackage{latex-lab-testphase-minipage}
%</latex-lab>
% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-minipage.pdf b/macros/latex/required/latex-lab/latex-lab-minipage.pdf
index 8660ffa7ab..3ee22bfc51 100644
--- a/macros/latex/required/latex-lab/latex-lab-minipage.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-minipage.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-namespace.dtx b/macros/latex/required/latex-lab/latex-lab-namespace.dtx
new file mode 100644
index 0000000000..2ec9b0584b
--- /dev/null
+++ b/macros/latex/required/latex-lab/latex-lab-namespace.dtx
@@ -0,0 +1,100 @@
+% \iffalse meta-comment
+%
+%% File: latex-lab-namespace.dtx (C) Copyright 2023 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
+%
+%<*driver>
+\documentclass{l3doc}
+\usepackage{amstext}
+\EnableCrossrefs
+\CodelineIndex
+
+\usepackage{todonotes}
+
+\begin{document}
+ \DocInput{latex-lab-namespace.dtx}
+\end{document}
+%</driver>
+% \fi
+% \title{Prototype reimplementation of \LaTeXe{}'s role mapping}
+% \author{\LaTeX{} Project, initial implementation Ulrike Fischer}
+% \date{v0.8 2023-09-04}
+%
+% \maketitle
+%
+% \begin{documentation}
+%
+%
+%
+% \section{Introduction}
+%
+% This short file collects tag names from the \LaTeX{} namespace and their role mapping used
+% in the latex-lab files. The names and the roles are not necessarly the final ones!
+%
+% Later settings of the same tag overwrite previous settings.
+% The syntax of a line is a list of three strings ending with commas:
+% \begin{verbatim}
+% latex-tag, PDF-tag, name space,
+% \end{verbatim}
+%
+% The name space is normally pdf2 with the exception of the following PDF-tags
+% which are only in pdf namespace:
+% Art, BlockQuote, TOC, TOCI, Index, Private, Quote, Note,
+% Reference, BibEntry, Code.
+%
+% \end{documentation}
+% \begin{implementation}
+% \begin{macrocode}
+%<*ns-latex-lab>
+%% \ProvidesExplFile {tagpdf-ns-latex-lab.def} {2023-09-04} {0.8}
+%% {latex} {https://www.latex-project.org/ns/lab/2022}{}
+% \end{macrocode}
+% \subsection{Role from tagpdf}
+% The following tags are already set by tagpdf, so deleting here will not remove them.
+% \begin{macrocode}
+title, Title, pdf2,
+part, Title, pdf2,
+section, H1, pdf2,
+subsection, H2, pdf2,
+subsubsection,H3, pdf2,
+paragraph, H4, pdf2,
+subparagraph, H5, pdf2,
+list, L, pdf2,
+itemize, L, pdf2,
+enumerate, L, pdf2,
+description, L, pdf2,
+quote, BlockQuote,pdf,
+quotation, BlockQuote,pdf,
+verbatim, Div, pdf2,
+item, LI, pdf2,
+itemlabel, Lbl, pdf2,
+itembody, LBody, pdf2,
+footnote, FENote, pdf2,
+footnotemark, Lbl, pdf2,
+footnotelabel,Lbl, pdf2,
+text-unit, Part, pdf2,
+text, P, pdf2,
+% \end{macrocode}
+% \subsection{From block code}
+% \begin{macrocode}
+theorem-like, Sect, pdf2,
+verbatim, P, pdf2,
+codeline, Sub, pdf2,
+% \end{macrocode}
+% \subsection{From float code}
+% \begin{macrocode}
+float, Aside, pdf2,
+figures, Sect, pdf2,
+tables, Sect, pdf2,
+% \end{macrocode}
+% \begin{macrocode}
+%</ns-latex-lab>
+% \end{macrocode}
+% \end{implementation}
+\endinput
diff --git a/macros/latex/required/latex-lab/latex-lab-namespace.pdf b/macros/latex/required/latex-lab/latex-lab-namespace.pdf
new file mode 100644
index 0000000000..d8c4cba427
--- /dev/null
+++ b/macros/latex/required/latex-lab/latex-lab-namespace.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-new-or-1.dtx b/macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
index ef799e813c..cc60f50de0 100644
--- a/macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-new-or-1.dtx
@@ -9,6 +9,8 @@
%
% https://www.latex-project.org/lppl.txt
%
+\def\ltlabneworIdate{2023-07-20}
+\def\ltlabneworIversion{0.85a}
%<*driver>
\documentclass{l3doc}
@@ -27,7 +29,8 @@
%
% \title{Temporary output patches for tagging and better link support}
% \author{Frank Mittelbach \and Ulrike Fischer}
-%
+% \date{v\ltlabneworIversion\ \ltlabneworIdate}
+%
% \maketitle
%
% \section{Introduction}
@@ -47,12 +50,13 @@
%
% \section{The Implementation}
% \begin{macrocode}
-%<*code>
+%<*package>
% \end{macrocode}
%
% \begin{macrocode}
\ProvidesPackage{latex-lab-testphase-new-or-1}
- [2022-11-94 v0.1a Temporary output patches for tagging and better link support]
+ [\ltlabneworIdate\space v\ltlabneworIversion\space
+ Temporary output patches for tagging and better link support]
\RequirePackage{etoolbox}
% \end{macrocode}
%
@@ -94,18 +98,36 @@
%
% We patch \cs{@makecol}, if new-or-2 is loaded too it will overwrite that again.
% \begin{macrocode}
- \providecommand\@kernel@before@footins{}
- \providecommand\@kernel@before@cclv{}
+\providecommand\@kernel@before@footins{}
+\providecommand\@kernel@tagsupport@@makecol{}
- \patchcmd\@makecol
- {\vskip\skip\footins}
- {\vskip\skip\footins\@kernel@before@footins}
- {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
+\patchcmd\@makecol
+ {\vskip\skip\footins}
+ {\vskip\skip\footins\@kernel@before@footins}
+ {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
-%for some reason patching with etoolbox only works in this order ...
+\patchcmd\@makecol
+ {\let\@elt\relax}
+ {\@kernel@tagsupport@@makecol\let\@elt\relax}
+ {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
- \pretocmd\@makecol{\@kernel@before@cclv}
- {\typeout{Patching \string\@makecol\space for tagging}}{\PATCHerror }
+\AddToHook{package/footmisc/after}
+ {%
+ \def\@makecol{%
+ \setbox\@outputbox \box\@cclv
+ \@outputbox@removebskip
+ \@kernel@tagsupport@@makecol
+ \let\@elt\relax
+ \xdef\@freelist{\@freelist\@midlist}%
+ \global \let \@midlist \@empty
+ \@makecol@appendblocks
+ \ifvbox\@kludgeins
+ \@makespecialcolbox
+ \else
+ \@makenormalcolbox
+ \fi
+ \global \maxdepth \@maxdepth}
+}
% \end{macrocode}
% \end{macro}
%
@@ -150,9 +172,16 @@
\def\@kernel@after@foot {\pdfannot_link_on:}
\ExplSyntaxOff
% \end{macrocode}
-%
% \begin{macrocode}
-%</code>
+%</package>
+% \end{macrocode}
+% \begin{macrocode}
+%<*latex-lab>
+\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
+ [\ltlabneworIdate\space v\ltlabneworIversion\space
+ latex-lab wrapper new-or-1]
+\RequirePackage{latex-lab-testphase-new-or-1}
+%</latex-lab>
% \end{macrocode}
%
% \Finale
diff --git a/macros/latex/required/latex-lab/latex-lab-new-or-1.pdf b/macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
index d5576ad3c9..501f7ac3d2 100644
--- a/macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-new-or-1.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-new-or-2.dtx b/macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
index 74d56d687f..d2011256b1 100644
--- a/macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-new-or-2.dtx
@@ -1,7 +1,7 @@
% \iffalse meta-comment
%
%% File: latex-lab-new-or-2.dtx
-% Copyright (C) 2022 The LaTeX Project
+% Copyright (C) 2022-2023 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
@@ -17,6 +17,9 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabneworIIdate{2023-09-04}
+\def\ltlabneworIIversion{0.85c}
+
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -31,41 +34,58 @@
%
% \title{The \texttt{latex-lab-testphase-new-or-2} code\thanks{}}
% \author{Frank Mittelbach, \LaTeX{} Project}
-%
+% % \date{v\ltlabneworIIversion\ \ltlabneworIIdate}
% \maketitle
%
% \newcommand\fmi[1]{\begin{quote} TODO: \itshape #1\end{quote}}
% \newcommand\NEW[1]{\marginpar{\mbox{}\hfill\fbox{New: #1}}}
% \providecommand\pkg[1]{\texttt{#1}}
%
+% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}}
+% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}}
+% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}}
+%
+% \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
+% \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+%
+%
% \begin{abstract}
+% This code implements changes to the output routine intended to be
+% moved in the \LaTeX{} kernel at some point in the future.
% \end{abstract}
%
-% \section{Introduction}
-%
-% This code implements changes to the output routine.
%
%
%
+% \section{Introduction}
%
-% \section{Hooks and configuration points}
%
-% Note: the configuration points do not have an interface mechanism
-% yet and all their names are temporary right now.
+% \section{Hooks and replaceable code blocks}
%
%
-% \subsubsection{Configuration points}
+% \subsubsection{Replaceable code blocks (sockets)}
%
% To cater for different layouts with respect to text, footnotes,
-% and bottom-floats placements there are two configuration points for
+% and bottom-floats placements there are two sockets for
% now.
% \begin{description}
-% \item[\cs{@makecol@cfgpoint} (0 arguments)]
+% \item[\socket{@makecol/outputbox} (0 arguments)]
%
-% In this configuration point the \cs{@outputbox} (holding the
+% In code for this socket the \cs{@outputbox} (holding the
% galley text for the current column or page) is augmented by
% attaching floats and footnote areas together with appropriate
-% spacing. Before the code is run any existing glue at the bottom
+% spacing.
+%
+% Prior to calling the socket the output routine has already
+% decided which floats go into which area and which get deferred.
+% Therefore, the assumption is that the code in the socket attaches all
+% areas that contain floats. If this is not done, then the order
+% of floats is likely to be screwed up unless unused floats
+% are moved to the defer list in an appropriate way (for now we
+% don't offer any interface for that scenario).
+%
+% Before the code in the socket is run, any existing glue at the bottom
% of the \cs{@outputbox} is removed and stored in a safe
% place. If needed, it can be reinserted with one of the helper
% commands.
@@ -74,17 +94,25 @@
% \begin{description}
% \item[\cs{@outputbox@append} (1 argument)]
%
+% \DescribeMacro[noprint]{@outputbox@append}
+%
% This general purpose command alters the \cs{@outputbox} box by
% appending material to it.
%
% \item[\cs{@outputbox@appendfootnotes} (0 arguments)]
%
+% \DescribeMacro[noprint]{@outputbox@appendfootnotes}
+%
% This command appends the footnotes to the \cs{@outputbox} (if
% there are any). If not, then it does nothing.
%
% \item[\cs{@outputbox@attachfloats} (0 arguments)]
% \item[\cs{@outputbox@attachtopfloats} (0 arguments)]
% \item[\cs{@outputbox@attachbottomfloats} (0 arguments)]
+%
+% \DescribeMacro[noprint]{@outputbox@attachfloats}
+% \DescribeMacro[noprint]{@outputbox@attachtopfloats}
+% \DescribeMacro[noprint]{@outputbox@attachbottomfloats}
%
% Attaching top and bottom floats can usually be done in one
% go, but for special layouts we might want more control so we
@@ -92,11 +120,16 @@
%
% \item[\cs{@outputbox@reinsertbskip} (0 arguments)]
%
+% \DescribeMacro[noprint]{@outputbox@reinsertbskip}
+%
% Reinsert the bottom skip of the \cs{@outputbox} that was
% saved before.
%
% \item[Testing for existence of material]
%
+% \DescribeMacro[noprint]{@if@footnotes@TF}
+% \DescribeMacro[noprint]{@if@bfloats@TF}
+%
% There are a number of helpers to run conditional code
% depending on whether or not there are footnotes or bottom
% floats. They are \cs{@if@footnotes@TF} and
@@ -104,16 +137,67 @@
% (names are likely to change).
%
% \end{description}
-% This configuration point needs an appropriate definition; a
-% default is already given in the kernel.
%
-% \item[\cs{@makecol@cfgpointii} (0 arguments)]
+% \fmi{Decide on names for these helper commands. We could keep
+% them similar to the above (because they are only supposed to be
+% used by a few packages). However, we could alternatively use
+% CamelCase names, under the assumption that classes may also
+% directly define a plug for the socket, instead of loading a
+% support package such as \pkg{footmisc} (or in addition
+% to). --- decide}
+%
+% This socket cannot be empty but needs appropriate code; a set
+% of suitable plugs for it are already given in the kernel. These
+% are
+% \begin{description}
+% \item[\plug{space-footnotes-floats}]
+%
+% After the galley text there is a vertical \cs{vfill}
+% followed by any footnotes followed by the bottom floats, if any.
+%
+% \item[\plug{floats-footnotes-space}]
+%
+% As before but the \cs{vfill} is at the bottom (page is
+% ragged bottom).
+%
+% \item[\plug{footnotes-space-floats}]
+%
+% As before but the \cs{vfill} is between footnotes and floats.
%
-% This configuration point is used to manipulate the footnote
+% \item[\plug{space-floats-footnotes}]
+%
+% Here the footnotes come last.\footnote{There are two more
+% permutations, but neither of them has ever been requested so
+% they aren't set up by default --- doing that in a class
+% would be trivial though.}
+%
+% \item[\plug{floats-footnotes}]
+%
+% All excess space has to be distributed across the existing
+% glue on the page, e.g., within the text galley, the
+% separation between blocks, etc.
+% The order is text, floats, footnotes.
+%
+% \item[\plug{footnotes-floats}]
+%
+% As the previous one but floats and footnotes are
+% swapped. This is the \LaTeX{} default, i.e., this plug is
+% assigned to the socket.
+%
+% \end{description}
+%
+%-----------------------
+%
+% \item[\socket{@makecol/footnotes} (0 arguments)]
+%
+% This socket is used to manipulate the footnote
% material inside \cs{box}\cs{footins}. It if contains code, it
% is supposed to do some processing of that box and then write
% the result back into it (and nothing else!). By default it
-% does nothing.
+% does nothing, i.e., has the \plug{noop} assigned.
+%
+% If (short) footnotes are run as a paragraph this socket gets
+% the plug \plug{para} assigned which is defined elsewhere.
%
% \end{description}
%
@@ -123,28 +207,32 @@
% \section{The Implementation}
%
% \begin{macrocode}
-%<*code>
+%<*package>
% \end{macrocode}
%
% \subsection{File declaration}
% \begin{macrocode}
\ProvidesPackage{latex-lab-testphase-new-or-2}
- [2022-11-04 v0.1c changes to the output routine]
+ [\ltlabneworIIdate\space v\ltlabneworIIversion\space
+ Changes to the output routine]
% \end{macrocode}
+%
% \subsection{\cs{@makecol} reimplementation}
%
% In order for other packages to prepend or append code to
-% \cs{@makecol}, they can use the generic command hooks
-% \texttt{cmd/@makecol/before} and \texttt{cmd/@makecol/after}, so
-% there is nothing we need to do here.
+% \cs{@makecol} the generic command hooks
+% \texttt{cmd/@makecol/before} and \texttt{cmd/@makecol/after} can
+% be used, so for now there is nothing we need to do for this.
%
%
% \begin{macro}{\@makecol}
% \cs{@makecol} is shortened a lot, basically all the hardwired
-% code in the middle has moved into a configuration point.
+% code in the middle has moved into a socket.
% \begin{macrocode}
\def \@makecol {%
- \@kernel@before@cclv
+% \end{macrocode}
+% Save away box 255 as \cs{@outputbox} to make it available for further adjustments.
+% \begin{macrocode}
\setbox\@outputbox \box\@cclv
% \end{macrocode}
% The only real addition is the next command which either does
@@ -153,25 +241,31 @@
% \begin{macrocode}
\@outputbox@removebskip
% \end{macrocode}
-% Any ``here'' floats in the \cs{@outputbox} are now handled so we
+% Now a kernel hook for tagging.
+% \fmi{The name is likely to change and it probably will eventually
+% be replaced with a socket.}
+% \begin{macrocode}
+ \@kernel@tagsupport@@makecol
+% \end{macrocode}
+% When this code is run any ``here'' floats in the \cs{@outputbox} are already handled, so we
% recycle their registers and put them back to the \cs{@freelist}.
% \begin{macrocode}
\let\@elt\relax
\xdef\@freelist{\@freelist\@midlist}%
\global \let \@midlist \@empty
% \end{macrocode}
-% Here we have the configurable part.
-% \fmi{Interface to configuration points will change in the future}
+% Here we have the configurable part. This socket is supposed to add floats,
+% footnotes and stretchable vertical space as appropriate to the \cs{@outputbox}.
% \begin{macrocode}
- \@makecol@cfgpoint
+ \UseSocket{@makecol/outputbox}%
% \end{macrocode}
-% The we deal with any \cs{enlargethispage} or run the normal code
+% Then we deal with any \cs{enlargethispage} or run the normal code
% to build a column.
% \begin{macrocode}
\ifvbox\@kludgeins
- \@makespecialcolbox
+ \@make@specialcolbox
\else
- \@makenormalcolbox
+ \@make@normalcolbox
\fi
\global \maxdepth \@maxdepth
}
@@ -188,10 +282,10 @@
% \end{macrocode}
% \end{macro}
%
-% \begin{macro}{\@makenormalcolbox}
+% \begin{macro}{\@make@normalcolbox}
% Taken out of \cs{@makecol} for readability.
% \begin{macrocode}
-\def \@makenormalcolbox {%
+\def \@make@normalcolbox {%
\setbox\@outputbox \vbox to\@colht {%
\@texttop
\@outputbox@depth \dp\@outputbox
@@ -204,10 +298,10 @@
% \end{macro}
%
%
-% \begin{macro}{\@makespecialcolbox}
+% \begin{macro}{\@make@specialcolbox}
% Make the colbox when \cs{enlargethispage} was used.
% \begin{macrocode}
-\def \@makespecialcolbox {%
+\def \@make@specialcolbox {%
\@outputbox@append {\vskip-\@outputbox@depth}%
\@tempdima \@colht
\ifdim \wd\@kludgeins>\z@
@@ -235,7 +329,7 @@
% \begin{macro}{\@outputbox@removebskip}
%
% This is really a bug fix for the kernel but one we only
-% automatically make in new documents using \cs{DocumentMetadata}.
+% automatically make in new documents that are using \cs{DocumentMetadata}.
% \fmi{may make optional for legacy docs}
% If
% \cs{raggedbottom} is in force, footnotes get attached to the main
@@ -248,7 +342,7 @@
% short, but the footnotes are not pushed to the bottom.
%
% In \pkg{footmisc} \cs{@outputbox@removebskip} is only applied when
-% \pkg{footmisc} is called with with an option specifying the
+% \pkg{footmisc} is called with an option specifying the
% footnote placement, i.e., not in the default case.
% In new documents we apply it always.
% \begin{macrocode}
@@ -270,6 +364,7 @@
\ifnum \gluestretchorder\@tempskipa>\z@
\vskip-\@tempskipa
% \end{macrocode}
+%
% \begin{macro}{\@outputbox@reinsertbskip}
% We also record the value so that it can be reinserted
% elsewhere. As we have to do this globally, we also need to
@@ -295,25 +390,28 @@
%
%
%
-% \begin{macro}{\@kernel@before@cclv}
-% \begin{macro}{\@kernel@before@footins}
+% \begin{macro}{\@kernel@before@cclv,
+% \@kernel@before@footins}
% These two commands are internal kernel hooks intended for tagging
-% support in case that is active. By default they do nothing (and
+% support in case that is active. They should not be altered by package code!
+% By default they do nothing (and
% may have been defined already by \cs{DocumentMetadata}).
+% \fmi{The names might change and perhaps each of them is turned
+% into a socket named something like \socket{tagsupport/before/cclv}
+% or similar.}
% \begin{macrocode}
\providecommand\@kernel@before@cclv{}
\providecommand\@kernel@before@footins{}
% \end{macrocode}
% \end{macro}
-% \end{macro}
%
%
%
%
% \subsection{The output routine configuration components}
%
-% Here we provide the components that are used to define
-% \cs{@makecol@cfgpoint}.
+% Here we provide the components that are used to define code for the
+% \socket{@makecol/outputbox} socket.
%
%
% \begin{macro}{\@outputbox@append}
@@ -346,7 +444,7 @@
% \begin{macro}{\@outputbox@appendfootnotes}
%
% This command appends the footnotes to the \cs{@outputbox} (if
-% there are any). If not then it does nothing.
+% there are any). If not, then it does nothing.
% \begin{macrocode}
\def\@outputbox@appendfootnotes {%
\ifvoid\footins \else
@@ -354,22 +452,34 @@
% First come two configuration points: what to do if we are in a split
% footnote situation and a second one that does some manipulation
% of the \cs{footins} box before it gets appended.
-% \fmi{this code will get revised as part of CP handling in the future}
+% \fmi{The code for handling split footnotes will get revised as part of socket handling in the future}
% \begin{macrocode}
\@makecol@handlesplitfootnotes
- \@makecol@cfgpointii
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \UseSocket{@makecol/footnotes}%
% \end{macrocode}
% Then the footnotes are appended:
% \begin{macrocode}
\@outputbox@append{%
\vskip \skip\footins
+% \end{macrocode}
+% This is a kernel hook for tagging.
+% \fmi{The name is likely to change and it probably will eventually
+% be replaced with a socket.}
+% \begin{macrocode}
\@kernel@before@footins
+% \end{macrocode}
+%
+% \begin{macrocode}
\color@begingroup
\normalcolor
\footnoterule
% \end{macrocode}
% Support for \pkg{pdfcolfoot}, eventually this can go once color
-% is properly supported.
+% is properly supported. The csname is constructed in case it
+% doesn't exist.
% \begin{macrocode}
\csname pdfcolfoot@current\endcsname
\unvbox \footins
@@ -435,17 +545,16 @@
%
%
%
-% \begin{macro}{\@makecol@cfgpointii}
+% \begin{socketdecl}{@makecol/footnote}
%
-% Configuration point to support manipulation of footins box
-% (result needs to be moved back in there). Used by the
-% \texttt{para} option.
-% \fmi{Interface will change in the future}
+% The socket allowing the manipulation of \cs{footins} box
+% (result needs to be moved back in there). Used when footnotes are
+% reformatted into a single paragraph by the
+% \texttt{para} option of \pkg{footmisc}. By default it does nothing.
% \begin{macrocode}
-\let \@makecol@cfgpointii \@empty
+\NewSocket{@makecol/footnotes}{0}
% \end{macrocode}
-%
-% \end{macro}
+% \end{socketdecl}
%
%
%
@@ -497,27 +606,124 @@
% \subsection{The \cs{@makecol} configuration}
%
%
-% \begin{macro}{\@makecol@cfgpoint}
+% \begin{socketdecl}{@makecol/outputbox}
+% We have one socket that is supposed to augment the \cs{@outputbox}
+% by attaching floats and footnotes with appropriate spacing.
+%
+% \begin{macrocode}
+\NewSocket{@makecol/outputbox}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% The following plugs are available for
+% this socket:
+%
+% \begin{plugdecl}{space-footnotes-floats}
+% After the galley text there is a vertical \cs{vfill} followed by
+% any footnotes followed by the bottom floats, if any.
+% \begin{macrocode}
+\NewSocketPlug {@makecol/outputbox}{space-footnotes-floats} {%
+ \@if@footnotes@TF
+ {\@outputbox@append{\vfill}}%
+ {\@if@bfloats@TF
+ {\@outputbox@append{\vfill}}%
+ {\@outputbox@reinsertbskip}%
+ }%
+ \@outputbox@appendfootnotes
+ \@outputbox@attachfloats
+}
+% \end{macrocode}
+% \end{plugdecl}
%
-% Here is only the configuration for the default case for now,
-% others are provided by \pkg{footmisc}.
+% \begin{plugdecl}{floats-footnotes-space}
+% As before but the \cs{vfill} is at the bottom (page is ragged
+% bottom).
+% \begin{macrocode}
+\NewSocketPlug {@makecol/outputbox}{floats-footnotes-space} {%
+ \@outputbox@attachfloats
+ \@if@footnotes@TF
+ {\@outputbox@append{\vfill}}%
+ {\@outputbox@reinsertbskip}%
+ \@outputbox@appendfootnotes
+}
+% \end{macrocode}
+% \end{plugdecl}
%
+% \begin{plugdecl}{footnotes-space-floats}
+% As before but the \cs{vfill} is between footnotes and floats.
% \begin{macrocode}
- \def\@makecol@cfgpoint {%
- \@outputbox@appendfootnotes
- \@outputbox@attachfloats
+\NewSocketPlug {@makecol/outputbox}{footnotes-space-floats} {%
+ \@outputbox@appendfootnotes
+ \@if@bfloats@TF
+ {\@outputbox@append{\vfill}}%
+ {\@outputbox@reinsertbskip}%
+ \@outputbox@attachfloats
+}
% \end{macrocode}
-% We do, however, reinsert the bottom skip from \cs{newpage} if it
+% \end{plugdecl}
+%
+% \begin{plugdecl}{space-floats-footnotes}
+% Here the footnotes come last.\footnote{There are two more
+% permutations, but neither of them has ever been requested so
+% they aren't set up by default --- doing that in a class
+% would be trivial though.}
+% \begin{macrocode}
+\NewSocketPlug {@makecol/outputbox}{space-floats-footnotes} {%
+ \@if@footnotes@TF
+ {\@outputbox@append{\vfill}}%
+ {\@if@bfloats@TF
+ {\@outputbox@append{\vfill}}%
+ {\@outputbox@reinsertbskip}}%
+ \@outputbox@attachfloats
+ \@outputbox@appendfootnotes
+}
+% \end{macrocode}
+% \end{plugdecl}
+%
+%
+%
+% \begin{plugdecl}{floats-footnotes}
+% All excess space has to be distributed across the existing
+% glue on the page, e.g., within the text galley, the
+% separation between blocks, etc.
+% The order is text, floats, footnotes.
+% \begin{macrocode}
+\NewSocketPlug {@makecol/outputbox}{floats-footnotes} {%
+ \@outputbox@attachfloats
+ \@outputbox@appendfootnotes
+% \end{macrocode}
+% We do reinsert the bottom skip from \cs{newpage} if it
% was taken out earlier. This is, strictly speaking, not necessary
% in most cases, but it is a \cs{vfil} while \cs{raggedbottom} is
% only generating \verb=\vspace{0pt plus .0001fil}=, so if you have
% several \cs{vfil} on the page before the \cs{newpage} you would
% alter the space distribution if one is taken out.
% \begin{macrocode}
- \@outputbox@reinsertbskip
- }
+ \@outputbox@reinsertbskip
+}
% \end{macrocode}
-% \end{macro}
+%
+% \end{plugdecl}
+%
+% \begin{plugdecl}{footnotes-floats}
+% \begin{macrocode}
+\NewSocketPlug {@makecol/outputbox}{footnotes-floats} {%
+ \@outputbox@appendfootnotes
+ \@outputbox@attachfloats
+ \@outputbox@reinsertbskip
+}
+% \end{macrocode}
+% The \texttt{footnote-floats} plug is the default used by
+% \LaTeX{}; it can be overwritten either through \pkg{footmisc} or
+% by assigning any of the other plugs (or by coding yet another
+% plug for the socket).
+% \begin{macrocode}
+\AssignSocketPlug {@makecol/outputbox}{footnotes-floats}
+% \end{macrocode}
+% \end{plugdecl}
+%
+%
+%
%
%
% \section {Replacement for the \pkg{footmisc} package}
@@ -532,13 +738,14 @@
%
% \section {Temp stuff that is related but should go to the kernel}
%
+% This is the code from \texttt{latex-lab-footnotes.dtx}.
% \begin{macrocode}
\input{latex-lab-footnotes.ltx}
% \end{macrocode}
%
%
% \begin{macrocode}
-%</code>
+%</package>
% \end{macrocode}
%
% \Finale
diff --git a/macros/latex/required/latex-lab/latex-lab-new-or-2.pdf b/macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
index 1a1ce038d1..e15dd5abd0 100644
--- a/macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-new-or-2.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-sec.dtx b/macros/latex/required/latex-lab/latex-lab-sec.dtx
index 5df3803b54..ae7a0b85c3 100644
--- a/macros/latex/required/latex-lab/latex-lab-sec.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-sec.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabsecdate{2023-10-16}
+\def\ltlabsecversion{0.84b}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -31,7 +33,7 @@
% \title{The \textsf{latex-lab-sec} package\\
% Changes related to the tagging of sectioning commands}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{v0.83 2023-06-07}
+% \date{v\ltlabsecversion\ \ltlabsecdate}
%
% \maketitle
%
@@ -147,7 +149,7 @@
%
% \section{Implementation}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-sec} {2023-05-20} {0.81}
+\ProvidesExplPackage {latex-lab-testphase-sec} {\ltlabsecdate} {\ltlabsecversion}
{Code related to the tagging of sectioning commands}
% \end{macrocode}
%
@@ -177,10 +179,12 @@
% \begin{macrocode}
%<*kernelchange>
\ifdefined\directlua
- \pdfvariable gentounicode =1
- \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
- \protected\edef\pdfgentounicode {\pdfvariable gentounicode}
- \input{glyphtounicode}
+ \ifnum\outputmode > 0
+ \pdfvariable gentounicode =1
+ \protected\def\pdfglyphtounicode {\pdfextension glyphtounicode }
+ \protected\edef\pdfgentounicode {\pdfvariable gentounicode}
+ \input{glyphtounicode}
+ \fi
\fi
\ifdefined\pdfglyphtounicode
\input{glyphtounicode-cmex}
@@ -437,45 +441,48 @@
% \end{macrocode}
% This redefines \cs{part} in article class.
% \begin{macrocode}
- \RenewDocumentCommand\part{ s O{#3} m }
+ \@ifundefined{part}{}
{
- \if@noskipsec \leavevmode \fi
- \par
- \addvspace{4ex}%
- \@afterindentfalse
+ \RenewDocumentCommand\part{ s O{#3} m }
+ {
+ \if@noskipsec \leavevmode \fi
+ \par
+ \addvspace{4ex}%
+ \@afterindentfalse
% \end{macrocode}
% This are the tagging commands needed at the begin. They open a Part structure
% and the structure for the title of the heading.
% \begin{macrocode}
% tagging start commands
- \tag_tool:n {sec-start-part=#2}
+ \tag_tool:n {sec-start-part=#2}
% end tagging start commands
% \end{macrocode}
% This adds a manual target if the part is unnumbered or starred.
% It replaces the hyperref patches.
% \begin{macrocode}
- \bool_lazy_any:nT
- {
- { #1 }
- {
- \int_compare_p:nNn {\c@secnumdepth}<{-1}
- }
- }
- {
- \MakeLinkTarget[part]{}
- }
+ \bool_lazy_any:nT
+ {
+ { #1 }
+ {
+ \int_compare_p:nNn {\c@secnumdepth}<{-1}
+ }
+ }
+ {
+ \MakeLinkTarget[part]{}
+ }
% \end{macrocode}
% The main call to the underlying commands.
% \begin{macrocode}
- \IfBooleanTF
- {#1}
- { \@spart {#3} }
- { \@part [#2]{#3} }
+ \IfBooleanTF
+ {#1}
+ { \@spart {#3} }
+ { \@part [#2]{#3} }
% \end{macrocode}
% and now the closing command for the tagging of the title.
% \begin{macrocode}
- \tag_tool:n {sec-stop-part}
- }
+ \tag_tool:n {sec-stop-part}
+ }
+ }
}
% \end{macrocode}
% Redefinitions for book and report
@@ -510,12 +517,10 @@
}
}
{
+% \end{macrocode}
+% The relation target-struct is stored internally by the MakeLinkTarget commands
+% \begin{macrocode}
\MakeLinkTarget[chapter]{}
- %todo public function for this update!
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
}
% \end{macrocode}
% The main call to the underlying commands.
@@ -571,10 +576,6 @@
}
{
\MakeLinkTarget[part]{}
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
}
% \end{macrocode}
% The main call to the underlying commands.
@@ -626,18 +627,14 @@
% probably need something slightly different based on \cs{MakeLinkTarget}.
% \begin{macrocode}
\cs_new_protected:Npn \@hyp@section@target@nnn #1 #2 #3 %#1 optarg #2 name/counter, #3 indent
- {
- \makebox[0pt][l]
+ {
+ \makebox[0pt][l]
{
\skip_set:Nn \@tempskipa {#3}
\dim_compare:nNnF {\@tempskipa}<{0pt}{\kern-\@tempskipa}
\MakeLinkTarget#1{#2}
}
- \tl_if_blank:VF \@currentHref
- {
- \prop_gput:Nxx \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
- }
+ }
% \end{macrocode}
% \end{macro}
%
@@ -812,8 +809,8 @@
% \begin{macrocode}
%<*latex-lab>
-\ProvidesFile{sec-tagging-latex-lab-testphase.ltx}
- [2023-05-20 v0.82 code related to the tagging of sectioning commands]
+\ProvidesFile{sec-latex-lab-testphase.ltx}
+ [\ltlabsecdate\space v\ltlabsecversion\space latex-lab wrapper sec]
\RequirePackage{latex-lab-testphase-sec}
%</latex-lab>
% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-sec.pdf b/macros/latex/required/latex-lab/latex-lab-sec.pdf
index 97f5caca08..d470f9bbfb 100644
--- a/macros/latex/required/latex-lab/latex-lab-sec.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-sec.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-table.dtx b/macros/latex/required/latex-lab/latex-lab-table.dtx
new file mode 100644
index 0000000000..700d4ce6c1
--- /dev/null
+++ b/macros/latex/required/latex-lab/latex-lab-table.dtx
@@ -0,0 +1,1975 @@
+% \iffalse meta-comment
+%
+%% File: latex-lab-table.dtx (C) Copyright 2023 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.
+%
+\def\ltlabtbldate{2023-10-30}
+\def\ltlabtblversion{0.85d}
+%<*driver>
+\documentclass{l3doc}
+\EnableCrossrefs
+\CodelineIndex
+\begin{document}
+ \DocInput{latex-lab-table.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \providecommand\hook[1]{\texttt{#1\DescribeHook[noprint]{#1}}}
+% \providecommand\socket[1]{\texttt{#1\DescribeSocket[noprint]{#1}}}
+% \providecommand\plug[1]{\texttt{#1\DescribePlug[noprint]{#1}}}
+%
+% \NewDocElement[printtype=\textit{socket},idxtype=socket,idxgroup=Sockets]{Socket}{socketdecl}
+% \NewDocElement[printtype=\textit{hook},idxtype=hook,idxgroup=Hooks]{Hook}{hookdecl}
+% \NewDocElement[printtype=\textit{plug},idxtype=plug,idxgroup=Plugs]{Plug}{plugdecl}
+%
+%
+%
+%
+% \title{The \textsf{latex-lab-table} package\\
+% Changes related to the tagging of tables}
+% \author{Frank \& Ulrike, \LaTeX{} Project\thanks{Initial implementation done by Frank Mittelbach}}
+% \date{v\ltlabtblversion\ \ltlabtbldate}
+%
+% \maketitle
+%
+% \newcommand{\xt}[1]{\textsl{\textsf{#1}}}
+% \newcommand{\TODO}[1]{\textbf{[TODO:} #1\textbf{]}}
+% \newcommand{\docclass}{document class \marginpar{\raggedright document class
+% customizations}}
+%
+%
+% \begin{abstract}
+% The following code implements a first draft for the tagging of
+% tables. It still has a large number of limitations and restrictions!
+% \end{abstract}
+%
+% \tableofcontents
+%
+% \section{Documentation}
+%
+% In \LaTeX{} the word \texttt{table} is used as the name of the float environment that can contain
+% a data table\footnote{But it does not really have to, you can put
+% other material into such environments.} along with a caption and some additional text. The environments for
+% actual data tables have various names like \texttt{tabular}, \texttt{tabular*},
+% \texttt{tabularx} and \texttt{longtable}---the last should not be used inside a float
+% and supports its own caption command.
+%
+% In this documentation \enquote{table} always means such data tables and not the float
+% environment.
+%
+% Tagging of tables is on one side doesn't look very difficult: one only has to
+% surround rows and cells by TR and TH or TD structures.
+% But there are difficulties:
+% \begin{itemize}
+% \item
+% One is that over the years various packages related to tables have
+% been written that all change some of the internals. Inserting the
+% tagging commands and testing all the variants and various nestings
+% is not trivial.
+%
+% \item
+% The other difficulty is that most of the existing environments to
+% create tables do not know the concept of headers as a semantic
+% structures.
+%
+% \item
+% Headers are only produced through visual formatting, e.g., by
+% making them bold or by underlying some color. But accessible
+% tables need headers (and the PDF/UA standards requires them) and
+% this means that additional syntax to declare headers (when they
+% can't be guessed) must be developed. This is still an area for
+% research.
+% \end{itemize}
+%
+% Right now, this module therefore does implement only some basic
+% support for the tagging of tables. A list of the known limitations
+% is shown below.
+%
+% The module is not loaded automatically (i.e., not yet integrated
+% into any \texttt{phase-XX}) and by itself it doesn't activate
+% tagging. For experimenting with table tagging it is therefore best
+% to load it in combination
+% with phase-III in \cs{DocumentMetadata}, i.e.:
+%
+% \begin{verbatim}
+% \DocumentMetadata{testphase={phase-III,table}}
+% \end{verbatim}
+%
+% It will then automatically tag all table environments it already supports with
+% the exception of tables in the header and footer of the page (where tagging is disabled).
+% Such tables can be nested.
+%
+% If a table should not be tagged as table, for example because it is merely used
+% to produce a layout or because it is a not yet (fully) supported table structure,
+% the tagging can be disabled with
+% \verb|\tagpdfsetup{table-tagging=false}|.
+%
+% Inside cells the automatic tagging of paragraphs is disabled with the exception of
+% p/m/b-type cells.
+%
+% Rows do not need to contain a full number of \&, missing cells are automatically
+% added with an empty TD-structure.
+%
+% There is some basic support\footnote{This is not meant to be the
+% final interface, though.} for headers. With
+% \begin{quote}
+% \verb|\tagpdfsetup{table-header-rows={|\meta{list of row numbers}\verb|}|
+% \end{quote}
+% you can
+% declare which (absolute) row numbers should be tagged as header rows.
+% It applies to all tables until it is changed to a different list of row numbers or undone by setting
+% the key to \meta{empty}.
+% A row number can be
+% negative, then the counting starts from the end of the table. There is no support
+% for header columns yet. In a \env{longtable} the code will currently use the \cs{endhead} or
+% \cs{endfirsthead} rows as header if one of these commands has been
+% used and in that case the code
+% ignores a \texttt{table-header-rows} setting.
+%
+% You should not insert meaningful text with \verb+!{...}+ or \verb+@{...}+ or \cs{noalign}
+% between the rows or columns of the table.
+% With pdflatex such text will be unmarked, with lualatex it will be marked as artifact.
+% Either case means that it will be currently ignored in the
+% structure.\footnote{While it is theoretically possible
+% to collect such text and move it into a structure it would require manual markup
+% from the author to clarify where this text belongs too.}
+%
+% As mentioned below the \pkg{colortbl} doesn't yet work properly with the tagging,
+% but once it does, then colors inside the table will probably be
+% simply ignored (at least initially). If such a color
+% has a semantic meaning (like \enquote{important value}) this meaning will be lost.
+%
+% Feedback and problems with the code can be reported at
+% \url{https://github.com/latex3/tagging-project} either in form of
+% explicit issues or as a \enquote{discussion topic}, whatever works best.
+%
+%
+% \section{Limitations}
+%
+% \begin{itemize}
+% \item The code loads the \pkg{array} package and so does not work without it (that is
+% not really a limitation, but can affect existing tables).
+%
+% \item It supports only a restricted number of tables types. Currently
+% \env{tabular}, \env{tabular*}, \env{tabularx}, and \env{longtable}.
+%
+% \item the \env{array} environment is assumed to be part of math and tagging as a table is disabled for
+% it.
+%
+% \item Row spans are not yet supported (and the \pkg{multirow} package is untested).
+%
+% \item The \pkg{colortbl} package breaks tagging if there are nested tables. It also breaks
+% the filling up of incomplete rows.
+%
+% \item The \pkg{tabularray} package use a completed different
+% method to create tables and will not be supported by this code.
+%
+% \item The \pkg{nicematrix} package is currently incompatible.
+%
+% \item Most other packages related to tables in \LaTeX{} are not yet tested,
+% that includes packages that change rules like \pkg{booktabs}, \pkg{hhline},
+% \pkg{arydshln}, \pkg{hvdashln}.
+%
+% \item \env{longtable} currently only works with lualatex.
+% With other engines it breaks as its output
+% routine clashes with the code which closes open MC-chunks at pagebreaks and
+% if this is resolved there will probably be problems with the head and foot boxes
+% (but this can't be tested currently).
+%
+% \item Not every table should be tagged as a Table structure, often they are
+% only used as layout help, e.g. to align authors in a title pages. In such uses
+% the tagging of the table must be deactivated with \verb|\tagpdfsetup{table-tagging=false}|.
+%
+% \item Only simple header rows are currently supported. Columns and complex headers with
+% subheaders will be handled later as that needs some syntax changes. Tables
+% with more than one header row are probably not pdf/UA as the headers array in
+% the cells is missing.
+%
+% \item A \pkg{longtable} \cs{caption} is currently simply formatted as a multicolumn and
+% not tagged as a \texttt{Caption} structure.
+%
+% \item The \pkg{caption} package will quite probably break the \pkg{longtable} caption.
+%
+% \item The setup for \pkg{longtable} requires lots of patches to internal \pkg{longtable}
+% commands and so can easily break if other packages try to patch \pkg{longtable} too.
+%
+% \item The \env{longtable} environment supports footnotes in p-type columns, but it hasn't been
+% tested yet if this works also with the tagging code.
+%
+% \item The code is quite noisy and fills the log with lots of
+% messages.\footnote{Helpful for us at this stage.}
+% \end{itemize}
+%
+%
+%
+% \section{Introduction}
+%
+%
+% \section{Technical details and problems}
+%
+% The implementation has to take care of various details.
+%
+% \subsection{TODOs}
+%
+% \begin{itemize}
+% \item
+% Test \texttt{array-006-longtable.lvt} and
+% \texttt{array-007-longtable.lvt} have errors with pdftex (para
+% tagging)
+%
+% \item
+% Instead of before/after hooks we should add sockets directly
+% into the code.
+%
+% \item Debugging code and messages must be improved.
+%
+% \item Cells need an \texttt{Headers} array.
+%
+% \item Row spans should be supported (but perhaps need syntax support)
+%
+% \item Longtable captions should be properly supported.
+%
+% \item Handle p-cells better. para-tagging should probably be enabled,
+% but Part can't be a child of TD, so this should probably be changed to Div here.
+% Also there is a stray MC somewhere.
+%
+% \item More packages must be tested.
+% \end{itemize}
+%
+%
+% \section{Implementation}
+% \begin{macrocode}
+%<@@=tbl>
+%<*package>
+% \end{macrocode}
+% \begin{macrocode}
+\ProvidesExplPackage {latex-lab-testphase-table} {\ltlabtbldate} {\ltlabtblversion}
+ {Code related to the tagging of tables}
+% \end{macrocode}
+% This builds on \pkg{array} so we load it by default:
+% \begin{macrocode}
+\RequirePackage{array}
+% \end{macrocode}
+%
+%
+% \subsection{Variables}
+% \begin{macro}
+% {
+% \l_@@_celltag_tl
+% ,\l_@@_rowtag_tl
+% ,\l_@@_cellattribute_tl
+% ,\l_@@_rowattribute_tl
+% ,\g_@@_missingcells_int
+% ,\l_@@_tmpa_clist
+% ,\l_@@_tmpa_seq
+% ,\l_@@_tmpa_tl
+% }
+% This is for the celltag, e.g. TD or TH:
+% \begin{macrocode}
+\tl_new:N \l_@@_celltag_tl
+\tl_set:Nn \l_@@_celltag_tl {TD}
+% \end{macrocode}
+% For the rowtag, probably always TR:
+% \begin{macrocode}
+\tl_new:N \l_@@_rowtag_tl
+\tl_set:Nn \l_@@_rowtag_tl {TR}
+% \end{macrocode}
+% And here cell and row attributes:
+% \begin{macrocode}
+\tl_new:N \l_@@_cellattribute_tl
+\tl_set:Nn \l_@@_cellattribute_tl {}
+\tl_new:N \l_@@_rowattribute_tl
+\tl_set:Nn \l_@@_rowattribute_tl {}
+% \end{macrocode}
+% This will contain the number of missing cells used:
+% \begin{macrocode}
+\int_new:N \g_@@_missing_cells_int
+% \end{macrocode}
+% Temp variables
+% \begin{macrocode}
+\clist_new:N \l_@@_tmpa_clist
+\seq_new:N \l_@@_tmpa_seq
+\tl_new:N \l_@@_tmpa_tl
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Sockets}
+%
+% The code uses a number of sockets to inject the tagging
+% commands. These can be easily set to a noop-plug in case the
+% automated tagging is not wanted At first sockets for the begin and
+% end of cells and rows
+%
+% \begin{socketdecl}{tagsupport/tblcell/begin,
+% tagsupport/tblcell/end,
+% tagsupport/tblrow/begin,
+% tagsupport/tblrow/end,
+% }
+% \begin{macrocode}
+\NewSocket{tagsupport/tblcell/begin}{0}
+\NewSocket{tagsupport/tblcell/end}{0}
+\NewSocket{tagsupport/tblrow/begin}{0}
+\NewSocket{tagsupport/tblrow/end}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% \begin{socketdecl}{tagsupport/tbl/init}
+% This socket should be at the begin of the table, inside a group.
+% It is meant for settings like disabling paratagging. This socket
+% can perhaps be merged later into the begin-sockets when they are
+% no longer added as hooks but in the environment definitions.
+% \begin{macrocode}
+\NewSocket{tagsupport/tbl/init}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+%
+% \begin{socketdecl}{tagsupport/tbl/finalize}
+% To fine tune the structure (change cells to header cells, remove
+% unwanted structures, move a foot to the end, etc.) we also need a
+% socket that is executed at the end of the table but \emph{before}
+% all the variables are restored to the outer or default values.
+% The code in the socket can make assignments, but probably
+% shouldn't do typesetting and not write whatsits.
+% \begin{macrocode}
+\NewSocket{tagsupport/tbl/finalize}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% \begin{socketdecl}{tagsupport/tbl/finalize/longtable}
+% \env{longtable} needs its own socket to fine tune the structure.
+% Simply switching the plug in the previous socket interferes with
+% enabling/disabling the tagging.
+% \begin{macrocode}
+\NewSocket{tagsupport/tbl/finalize/longtable}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% \begin{socketdecl}{tagsupport/tblhmode/begin,
+% tagsupport/tblhmode/end,
+% tagsupport/tblvmode/begin,
+% tagsupport/tblvmode/end
+% }
+%
+% These sockets are used in the begin and end code of environments,
+% to allow a fast enabling and disabling of the tagging. We
+% distinguish between tables that can be used inside paragraphs and
+% standalone tables like longtable.
+% \begin{macrocode}
+\NewSocket{tagsupport/tblhmode/begin}{0}
+\NewSocket{tagsupport/tblhmode/end}{0}
+\NewSocket{tagsupport/tblvmode/begin}{0}
+\NewSocket{tagsupport/tblvmode/end}{0}
+% \end{macrocode}
+% \end{socketdecl}
+%
+% This are the standard plugs for tagging of cells and rows.
+%
+% \begin{plugdecl}{TD}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblcell/begin}{TD}
+ {
+ \tag_struct_begin:n
+ {
+ tag =\l_@@_celltag_tl,
+ attribute-class =\l_@@_cellattribute_tl
+ }
+ \seq_gput_right:Ne \g_@@_struct_cur_seq { \tag_get:n {struct_num} }
+% \end{macrocode}
+% we store the cells of multicolumns as negative number. This allow to skip them
+% or to use them as needed.
+% \begin{macrocode}
+ \int_step_inline:nn { \g_@@_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g_@@_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tag_mc_begin:n{}
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{TD}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblcell/end}{TD}
+ {
+ \tag_mc_end:
+ \tag_struct_end:
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% In p-columns we need a slightly different plug which reactivates the
+% paragraph tagging.
+% tagging
+% \begin{plugdecl}{TD}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblcell/begin}{TDpbox}
+ {
+ \tag_struct_begin:n
+ {
+ tag =\l__tbl_celltag_tl,
+ attribute-class =\l__tbl_cellattribute_tl
+ }
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { \tag_get:n {struct_num} }
+ \int_step_inline:nn { \g__tbl_span_tl - 1 }
+ {
+ \seq_gput_right:Ne \g__tbl_struct_cur_seq { -\tag_get:n {struct_num} }
+ }
+ \tagpdfparaOn
+ \tl_set:Nn \l__tag_para_main_tag_tl {Div}
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{TD}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblcell/end}{TDpbox}
+ {
+ \tag_struct_end:
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{TR}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblrow/begin}{TR}
+ {
+ \seq_gclear:N \g_@@_struct_cur_seq
+ \tag_struct_begin:n
+ {
+ tag =\l_@@_rowtag_tl,
+ attribute-class=\l_@@_rowattribute_tl
+ }
+ \seq_gput_right:Ne \g_@@_struct_rows_seq { \tag_get:n {struct_num} }
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{TR}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblrow/end}{TR}
+ {
+ \__tag_tbl_add_missing_cells:n { \g_@@_missing_cells_int }
+ \seq_gput_right:Ne \g_@@_struct_cells_seq
+ {
+ \seq_use:Nn \g_@@_struct_cur_seq {,}
+ }
+ \int_compare:nNnTF { \g_@@_row_int } = { \seq_count:N\g_@@_struct_cells_seq }
+ {
+ \typeout
+ {==>~
+ stucture~stored~for~row~\int_use:N\g_@@_row_int :~
+ \seq_use:Nn \g_@@_struct_cur_seq {,}
+ }
+ }
+ { \ERROR } % should not happen ...
+ \tag_struct_end:
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% And the plugs for the table as whole. The code can be different for
+% normal tables which can also be used inline and nested and
+% \enquote{vmode} tables like longtable.
+%
+% \begin{plugdecl}{Table}
+% Inside a table we currently only disable paratagging. We assume
+% that these sockets are in an environment group, so there is no
+% need to reenable paratagging.
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/init}{Table}
+ {
+ \tag_if_active:T
+ {
+ \bool_set_false:N \l__tag_para_bool
+ }
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+%
+% \begin{plugdecl}{Table}
+% This plug will fine tune the structure.
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/finalize}{Table}
+ {
+ \@@_set_header_rows:
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{Table}
+% This plug will fine tune the structure of longtable.
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tbl/finalize/longtable}{Table}
+ {
+% \end{macrocode}
+% If neither \cs{endhead} nor \cs{endfirsthead} has been used
+% we use the standard header command:
+% \begin{macrocode}
+ \bool_lazy_and:nnTF
+ { \seq_if_empty_p:N \g_@@_LT@head_rows_seq }
+ { \seq_if_empty_p:N \g_@@_LT@firsthead_rows_seq }
+ { \@@_set_header_rows: }
+% \end{macrocode}
+% Otherwise, if firsthead has not been used we use head. For this
+% we simple retrieve the row numbers and then call the header
+% command.
+% \begin{macrocode}
+ {
+ \seq_if_empty:NTF \g_@@_LT@firsthead_rows_seq
+ {
+ \clist_set:Ne \l_@@_header_rows_clist
+ {\seq_use:Nn \g_@@_LT@head_rows_seq {,}}
+ \@@_set_header_rows:
+ }
+% \end{macrocode}
+% In the other case we use firsthead.
+% \begin{macrocode}
+ {
+ \clist_set:Ne \l_@@_header_rows_clist
+ { \seq_use:Nn \g_@@_LT@firsthead_rows_seq {,} }
+ \@@_set_header_rows:
+% \end{macrocode}
+% Additionally we have to remove the head to avoid duplication. The
+% one option here is to remove the rows from the kid sequence of
+% the table (which will lead to orphaned structure elements), the
+% other to make them artifact. For now we use the first option for
+% pdf 1.7 and the second for pdf 2.0.
+% \begin{macrocode}
+ \pdf_version_compare:NnTF < {2.0}
+ {
+ \seq_map_inline:Nn \g_@@_LT@head_rows_seq
+ {
+ \seq_gset_item:cnn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ { ##1 }
+ {}
+% \end{macrocode}
+% Not sure if needed, but if needed we can remove also the P tag.
+% This is currently disabled as it produce warnings. TODO: This
+% needs also a tagpdf command which takes care of debug code.
+% \begin{macrocode}
+ \tl_set:Ne \l_@@_tmpa_tl
+ { \seq_item:Nn\g_@@_struct_rows_seq {##1} }
+ \prop_if_exist:cT
+ { g__tag_struct_ \l_@@_tmpa_tl _prop }
+ {
+ %\prop_gremove:cn {g__tag_struct_ \l_@@_tmpa_tl _prop} {P}
+ }
+ }
+ }
+ {
+ \seq_map_inline:Nn \g_@@_LT@head_rows_seq
+ {
+ \tl_set:Ne \l_@@_tmpa_tl
+ { \seq_item:Nn\g_@@_struct_rows_seq {##1} }
+ \prop_if_exist:cT
+ { g__tag_struct_ \l_@@_tmpa_tl _prop }
+ {
+ \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact}
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% The foot is handled similar, the difference is
+% that we have to move it to the end one of them
+% is not empty, but do nothing if they aren't there.
+% \begin{macrocode}
+ \bool_lazy_and:nnF
+ { \seq_if_empty_p:N \g_@@_LT@foot_rows_seq }
+ { \seq_if_empty_p:N \g_@@_LT@lastfoot_rows_seq }
+ {
+% \end{macrocode}
+% If lastfoot is empty move foot to the end.
+% \begin{macrocode}
+ \seq_if_empty:NTF \g_@@_LT@lastfoot_rows_seq
+ {
+ \seq_map_inline:Nn \g_@@_LT@foot_rows_seq
+ {
+ \tl_set:Ne \l_@@_tmpa_tl
+ {
+ \seq_item:cn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ {##1}
+ }
+ \seq_gset_item:cnn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ { ##1 }
+ {}
+ \seq_gput_right:cV
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ \l_@@_tmpa_tl
+ }
+ }
+% \end{macrocode}
+% If lastfoot is not empty we move that.
+% \begin{macrocode}
+ {
+ \seq_map_inline:Nn \g_@@_LT@lastfoot_rows_seq
+ {
+ \tl_set:Ne \l_@@_tmpa_tl
+ {
+ \seq_item:cn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ {##1}
+ }
+ \seq_gset_item:cnn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ { ##1 }
+ {}
+ \seq_gput_right:cV
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ \l_@@_tmpa_tl
+ }
+% \end{macrocode}
+% and we hide foot
+% \begin{macrocode}
+ \pdf_version_compare:NnTF < {2.0}
+ {
+ \seq_map_inline:Nn \g_@@_LT@foot_rows_seq
+ {
+ \seq_gset_item:cnn
+ {g__tag_struct_kids_ \g_@@_struct_table_tl _seq}
+ { ##1 }
+ {}
+% \end{macrocode}
+% Not sure if needed, but if needed we can remove also the P tag.
+% This is currently disabled as it produce warnings.
+% TODO: This needs also
+% a tagpdf command which takes care of debug code.
+% \begin{macrocode}
+ \tl_set:Ne \l_@@_tmpa_tl
+ { \seq_item:Nn\g_@@_struct_rows_seq {##1} }
+ \prop_if_exist:cT
+ { g__tag_struct_ \l_@@_tmpa_tl _prop }
+ {
+ %\prop_gremove:cn {g__tag_struct_ \l_@@_tmpa_tl _prop} {P}
+ }
+ }
+ }
+ {
+ \seq_map_inline:Nn \g_@@_LT@foot_rows_seq
+ {
+ \tl_set:Ne \l_@@_tmpa_tl
+ { \seq_item:Nn\g_@@_struct_rows_seq {##1} }
+ \prop_if_exist:cT
+ { g__tag_struct_ \l_@@_tmpa_tl _prop }
+ {
+ \@@_struct_prop_gput:Vnn \l_@@_tmpa_tl {S}{/Artifact}
+ }
+ }
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{Table}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblhmode/begin}{Table}
+ {
+ \mode_leave_vertical:
+ \tag_mc_end_push:
+% \end{macrocode}
+% Close the P-chunk. This assumes that para-tagging is active.
+% For nested tables that is not necessarly true, so we test for it.
+% \begin{macrocode}
+ \bool_lazy_and:nnT
+ { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool }
+ { \tag_struct_end:n { text } }
+ \tag_struct_begin:n {tag=Table}
+ \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} }
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{Table}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblhmode/end}{Table}
+ {
+ \tag_struct_end:
+% \end{macrocode}
+% reopen the P-chunk. This assumes that para-tagging is active.
+% For nested tables that is not necessarly true, so we test for it.
+% \begin{macrocode}
+ \bool_lazy_and:nnT
+ { \bool_if_exist_p:N \l__tag_para_bool } { \l__tag_para_bool }
+ { \tag_struct_begin:n { tag=\l__tag_para_tag_tl } }
+ \tag_mc_begin_pop:n{}
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{Table}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblvmode/begin}{Table}
+ {
+ \tag_struct_begin:n {tag=Table}
+ \tl_gset:Ne \g_@@_struct_table_tl { \tag_get:n {struct_num} }
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+% \begin{plugdecl}{Table}
+% \begin{macrocode}
+\NewSocketPlug{tagsupport/tblvmode/end}{Table}
+ {
+ \tag_struct_end:
+ \par
+ }
+% \end{macrocode}
+% \end{plugdecl}
+%
+%
+%
+%
+%
+%\subsection{Environments}
+%
+% Currently only tabular, tabular*, tabularx and longtable.
+% We must use the \texttt{before} and \texttt{after} hooks as the \texttt{end}
+% hook is executed before the end of the last row and then MC are messed up.
+% This means that this sockets should only contain code that doesn't needs to be
+% grouped!
+% \begin{macrocode}
+\AddToHook{env/tabular/before} {\UseSocket{tagsupport/tblhmode/begin}}
+\AddToHook{env/tabular/after} {\UseSocket{tagsupport/tblhmode/end}}
+\AddToHook{env/tabular*/before} {\UseSocket{tagsupport/tblhmode/begin}}
+\AddToHook{env/tabular*/after} {\UseSocket{tagsupport/tblhmode/end}}
+\AddToHook{env/tabularx/before} {\UseSocket{tagsupport/tblhmode/begin}}
+\AddToHook{env/tabularx/after} {\UseSocket{tagsupport/tblhmode/end}}
+\AddToHook{env/longtable/before}{\UseSocket{tagsupport/tblvmode/begin}}
+\AddToHook{env/longtable/after} {\UseSocket{tagsupport/tblvmode/end}}
+% \end{macrocode}
+%
+% The \env{array} environment is math. So we disable table tagging for now.
+% \begin{macrocode}
+\AddToHook{env/array/begin} {\__tag_tbl_disable:}
+% \end{macrocode}
+%
+%
+% \subsection{Interfaces to tagging}
+%
+% \subsubsection{Tagging helper commands}
+%
+% \begin{macro}{\@@_set_colspan:n}
+% This commands takes a number, checks if is larger than one,
+% checks if the colspan attribute exists (we can't predefine an
+% arbitrary number), and updates \cs{l_@@_cellattribute_tl}.
+% \begin{macrocode}
+\tag_if_active:T
+ { \cs_generate_variant:Nn \__tag_attr_new_entry:nn {ee} }
+\cs_new_protected:Npn \@@_set_colspan:n #1
+ {
+ \tag_if_active:T
+ {
+ \int_compare:nNnT {#1}>{1}
+ {
+ \prop_get:NeNF \g__tag_attr_entries_prop
+ {colspan-\int_eval:n{#1}}
+ \l_@@_tmpa_tl
+ {
+ \__tag_attr_new_entry:ee
+ {colspan-\int_eval:n{#1}}
+ {/O /Table /ColSpan~\int_eval:n{#1}}
+ }
+ \tl_set:Ne \l_@@_cellattribute_tl
+ {colspan-\int_eval:n{#1}}
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsubsection{Disabling/enabling}
+%
+% For now we have only the option true/false but this will probably be extended
+% to allow different setups like first row header etc.
+
+% \begin{macro}{\__tag_tbl_disable:}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \__tag_tbl_disable:
+ {
+ \AssignSocketPlug{tagsupport/tblcell/begin}{noop}
+ \AssignSocketPlug{tagsupport/tblcell/end}{noop}
+ \AssignSocketPlug{tagsupport/tblrow/begin}{noop}
+ \AssignSocketPlug{tagsupport/tblrow/end}{noop}
+ \AssignSocketPlug{tagsupport/tbl/init}{noop}
+ \AssignSocketPlug{tagsupport/tbl/finalize}{noop}
+ \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{noop}
+ \AssignSocketPlug{tagsupport/tblhmode/begin}{noop}
+ \AssignSocketPlug{tagsupport/tblhmode/end}{noop}
+ \AssignSocketPlug{tagsupport/tblvmode/begin}{noop}
+ \AssignSocketPlug{tagsupport/tblvmode/end}{noop}
+ }
+% \end{macrocode}
+% \end{macro}
+
+
+% \begin{macro}{\__tag_tbl_enable:}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \__tag_tbl_enable:
+ {
+ \AssignSocketPlug{tagsupport/tblcell/begin}{TD}
+ \AssignSocketPlug{tagsupport/tblcell/end}{TD}
+ \AssignSocketPlug{tagsupport/tblrow/begin}{TR}
+ \AssignSocketPlug{tagsupport/tblrow/end}{TR}
+ \AssignSocketPlug{tagsupport/tbl/init}{Table}
+ \AssignSocketPlug{tagsupport/tbl/finalize}{Table}
+ \AssignSocketPlug{tagsupport/tbl/finalize/longtable}{Table}
+ \AssignSocketPlug{tagsupport/tblhmode/begin}{Table}
+ \AssignSocketPlug{tagsupport/tblhmode/end}{Table}
+ \AssignSocketPlug{tagsupport/tblvmode/begin}{Table}
+ \AssignSocketPlug{tagsupport/tblvmode/end}{Table}
+ }
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macrocode}
+% TODO decide about key name
+\keys_define:nn { __tag / setup }
+ {
+ table-tagging .choices:nn = { true, on }
+ { \__tag_tbl_enable: },
+ table-tagging .choices:nn = { false, off }
+ { \__tag_tbl_disable: },
+ table-tagging .default:n = true,
+ table-tagging .initial:n = true
+ }
+% \end{macrocode}
+%
+% Table tagging should be disabled in the head and foot.
+% \begin{macrocode}
+\AddToHook{begindocument}
+ {
+ \cs_if_exist:NT \@kernel@before@head
+ {
+ \tl_put_right:Nn \@kernel@before@head {\__tag_tbl_disable:}
+ \tl_put_right:Nn \@kernel@before@foot {\__tag_tbl_disable:}
+ }
+ }
+% \end{macrocode}
+%
+% \subsubsection{Header support}
+%
+% Accessible table must have header cells declaring the meaning of the
+% data in a row or column. To allow a data cell to find it header cell(s)
+% a number of things must be done:
+% \begin{itemize}
+% \item every cell meant as a header should use the tag \texttt{TH}.
+%
+% \item header cells should have a \texttt{Scope} attribute with the
+% value \texttt{Column}, \texttt{Row} or \texttt{Both}. This is not
+% needed in the first row or column of a table.
+%
+% \item For more complex cases both \texttt{TD} and \texttt{TH} cell
+% can contain a \texttt{Headers} attribute, that is an array of
+% \texttt{ID}s of \texttt{TH} cell.
+% \end{itemize}
+%
+% For now we support only header rows.
+%
+% At first we define attributes for the three standard cases:
+% We delay to begin document
+% as we can't know if tagpdf is already loaded.
+% \begin{macrocode}
+\AddToHook{begindocument}
+ {
+ \tag_if_active:T
+ {
+ \tagpdfsetup
+ {
+ newattribute =
+ {TH-col}{/O /Table /Scope /Column},
+ newattribute =
+ {TH-row}{/O /Table /Scope /Row},
+ newattribute =
+ {TH-both}{/O /Table /Scope /Both},
+ }
+% \end{macrocode}
+%
+% And we put all three into the class map (perhaps the next tagpdf
+% should do that directly with newattribute):
+%
+% \begin{macrocode}
+ \seq_gput_left:Ne\g__tag_attr_class_used_seq
+ {\pdf_name_from_unicode_e:n{TH-col}}
+ \seq_gput_left:Ne\g__tag_attr_class_used_seq
+ {\pdf_name_from_unicode_e:n{TH-row}}
+ \seq_gput_left:Ne\g__tag_attr_class_used_seq
+ {\pdf_name_from_unicode_e:n{TH-both}}
+ }
+ }
+
+% \end{macrocode}
+%
+% \begin{variable}{\l_@@_header_rows_clist}
+% This holds the numbers of the header rows. Negative numbers are
+% possible and count from the back.
+% \begin{macrocode}
+\clist_new:N \l_@@_header_rows_clist
+% \end{macrocode}
+% \end{variable}
+%
+% \begin{macro}{\@@_set_header_rows:}
+% TEMP: Next tagpdf will have the right command which also updates
+% the debug info.
+% For now a temporary command:
+% \begin{macrocode}
+\cs_if_free:NTF \__tag_struct_prop_gput:nnn
+ {
+ \cs_new_protected:Npn \@@_struct_prop_gput:nnn #1#2#3
+ { \prop_gput:cnn { g__tag_struct_#1_prop }{#2}{#3} }
+ }
+ { \cs_new_protected:Npn \@@_struct_prop_gput:nnn #1#2#3
+ { \__tag_struct_prop_gput:nnn {#1}{#2}{#3} }
+ }
+\cs_generate_variant:Nn \@@_struct_prop_gput:nnn {nne,Vnn}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_set_header_rows:
+ {
+ \clist_map_inline:Nn \l_@@_header_rows_clist
+ {
+ \clist_set:Ne\l_@@_tmpa_clist
+ {
+ \seq_item:Nn \g_@@_struct_cells_seq {##1}
+ }
+ \clist_map_inline:Nn \l_@@_tmpa_clist
+ {
+% \end{macrocode}
+% We can have negative numbers in the list from the multicolumn.
+% \begin{macrocode}
+ \prop_if_exist:cT { g__tag_struct_####1_prop }
+ {
+ \@@_struct_prop_gput:nnn{ ####1 }{S}{/TH}
+% \end{macrocode}
+% This need refinement once row headers (and perhaps other attributes)
+% are used too, but for now it should be ok.
+% \begin{macrocode}
+ \prop_get:cnNTF
+ { g__tag_struct_####1_prop }
+ { C }
+ \l_@@_tmpa_tl
+ {\@@_struct_prop_gput:nne{ ####1 }{C}{[/TH-col~\l_@@_tmpa_tl]} }
+ {\@@_struct_prop_gput:nnn{ ####1 }{C}{/TH-col}}
+ }
+ }
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% And some key support:
+% \begin{macrocode}
+% TODO decide about key name
+\keys_define:nn { __tag / setup }
+ {
+ table-header-rows .clist_set:N = \l_@@_header_rows_clist
+ }
+% \end{macrocode}
+%
+% \subsection{Changes to \pkg{array} commands}
+%
+%
+%
+% \begin{macro}{\@@_show_curr_cell_data:}
+% Show the row/column index and span count for current table cell
+% for debugging.
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_show_curr_cell_data: {
+ \typeout { ==>~ current~cell~data:~
+ \int_use:N \g_@@_row_int ,
+ \int_use:N \g_@@_col_int ,
+ \g_@@_span_tl
+ }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+%
+% \begin{macro}{\insert@column}
+% \cs{insert@column} is defined in \pkg{array}, here only the two
+% sockets are inserted.
+% \begin{macrocode}
+\def\insert@column{%
+ \@@_show_curr_cell_data:
+ \UseSocket{tagsupport/tblcell/begin}%
+ \the@toks \the \@tempcnta
+ \ignorespaces \@sharp \unskip
+ \the@toks \the \count@ \relax
+ \UseSocket{tagsupport/tblcell/end}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@classz}
+% \begin{macrocode}
+\def\@classz{\@classx
+ \@tempcnta \count@
+ \prepnext@tok
+ \@addtopreamble{\ifcase \@chnum
+ \hfil
+ \hskip1sp%
+ \d@llarbegin
+ \insert@column
+ \d@llarend \do@row@strut \hfil \or
+ \hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \hfil \or
+ \hfil\hskip1sp\d@llarbegin \insert@column \d@llarend \do@row@strut \or
+ \setbox\ar@mcellbox\vbox
+ \@startpbox{\@nextchar}
+ \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
+ \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
+ \insert@column \@endpbox
+ \ar@align@mcell
+ \do@row@strut \or
+ \vtop \@startpbox{\@nextchar}
+ \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
+ \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
+ \insert@column \@endpbox\do@row@strut \or
+ \vbox \@startpbox{\@nextchar}
+ \AssignSocketPlug{tagsupport/tblcell/begin}{TDpbox}
+ \AssignSocketPlug{tagsupport/tblcell/end}{TDpbox}
+ \insert@column \@endpbox\do@row@strut
+ \fi}\prepnext@tok}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@array,\@@@@array}
+% We modificate the \cs{@array} from \pkg{array}.
+% \begin{macrocode}
+\def\@array[#1]#2{%
+ \@tempdima \ht \strutbox
+ \advance \@tempdima by\extrarowheight
+ \setbox \@arstrutbox \hbox{\vrule
+ \@height \arraystretch \@tempdima
+ \@depth \arraystretch \dp \strutbox
+ \@width \z@}%
+% \end{macrocode}
+% The total number of table columns of the current table is
+% determined in \cs{@@_determine_table_cols:} but this is called in
+% a group, so local settings do not survive. Thus, to save away the
+% outer value of \cs{g_@@_table_cols_tl} we do it before the group.
+% \begin{macrocode}
+ \tl_set_eq:NN \l_@@_saved_table_cols_tl \g_@@_table_cols_tl
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \begingroup
+ \@mkpream{#2}
+% \end{macrocode}
+% Next call has to happen immediately after \cs{@mkpream} because
+% it uses implementation details from that.
+% \begin{macrocode}
+ \@@_determine_table_cols:
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \xdef\@preamble{%
+ \noexpand
+% \end{macrocode}
+% \cs{ialign} in the original definition is replaced by
+% \cs{ar@ialign} defined below.
+% \begin{macrocode}
+ \ar@ialign
+ \@halignto
+ \bgroup \@arstrut
+% \end{macrocode}
+% A socket is inserted
+% \begin{macrocode}
+ \UseSocket{tagsupport/tblrow/begin}%
+% \end{macrocode}
+% At the start of the preamble for the first column we set
+% \cs{g_@@_col_int} to \texttt{1} as we are no longer "at" but "in"
+% the first column. This is done in \cs{@@_init_cell_data:}. In
+% later columns this data is updated via \cs{@@_update_cell_data:}.
+% \begin{macrocode}
+ \@@_init_cell_data:
+ \@preamble
+ \tabskip \z@ \cr}%
+ \endgroup
+ \@arrayleft
+% \end{macrocode}
+% Another socket for tagging. TODO: what about \cs{arrayleft}?
+% \begin{macrocode}
+ \UseSocket{tagsupport/tbl/init}
+ \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
+ \bgroup
+ \let \@sharp ##\let \protect \relax
+ \lineskip \z@
+ \baselineskip \z@
+ \m@th
+ \let\\\@arraycr \let\tabularnewline\\\let\par\@empty
+%\show\@preamble
+ \@preamble}
+% \end{macrocode}
+% Finally, also set \cs{@@@@array} to the new definition:
+% \begin{macrocode}
+\let\@@@@array\@array
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_init_cell_data:}
+%
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_init_cell_data: {
+ \int_gset:Nn \g_@@_col_int {1}
+ \tl_gset:Nn \g_@@_span_tl {1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_update_cell_data:}
+% Updating cell data in columns after the first means we have to
+% increment the \cs{g_@@_col_int} by the span count of the previous
+% cell (in case it was a \cs{multicolumn} and then reset the
+% \cs{g_@@_span_tl} to one (as the default).
+% \begin{macrocode}
+\cs_new_protected:Npn \@@_update_cell_data: {
+ \int_gadd:Nn \g_@@_col_int { \g_@@_span_tl }
+ \tl_gset:Nn \g_@@_span_tl {1}
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_determine_table_cols:}
+% Current implementation of \cs{@mkpream} uses the scratch counter
+% \cs{count@} to keep track of the number of toks registers it needs
+% (2 per column), but this can't be used as it counts also
+% insertings made with \verb+!{}+ and \verb+@{}+.
+% So similar as does longtable for \cs{LT@cols} we count the
+% numbers of ambersands instead.
+% \begin{macrocode}
+\cs_new:Npn \@@_determine_table_cols: {
+ \seq_set_split:NnV\l_@@_tmpa_seq {&}\@preamble
+ \tl_gset:Ne \g_@@_table_cols_tl { \seq_count:N \l_@@_tmpa_seq }
+ \typeout{ ==>~ Table~ has~ \g_@@_table_cols_tl \space columns }
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@arraycr}
+% Add code that figures out if the current table row is incomplete
+% (not enough \verb=&=s). It can then do extra actions, such as
+% inserting missing cell tags.
+% \begin{macrocode}
+\protected\def\@arraycr{
+ \relax
+ \@@_store_missing_cells:n{@arraycr}
+ %
+ \iffalse{\fi\ifnum 0=`}\fi
+ \@ifstar \@xarraycr \@xarraycr}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_store_missing_cells:n,
+% \__tag_tbl_add_missing_cells:n}
+% The storing and use of the number of missing cells
+% must happen at different places as the testing happens at
+% the end of the last cell of a row, but
+% still inside that cell, so we use two commands. The second is used in
+% the endrow socket.
+% \begin{macrocode}
+\cs_new:Npn \@@_store_missing_cells:n #1 {
+ \int_compare:nNnT \g_@@_col_int > 0
+ {
+ \int_gset:Nn \g_@@_missing_cells_int
+ {
+ \g_@@_table_cols_tl
+ - \g_@@_col_int
+ - \g_@@_span_tl
+ + 1
+ }
+ \int_compare:nNnT \g_@@_missing_cells_int < 0 \ERROR % should not happen
+ \typeout{==>~
+ (#1)~
+ This~ row~ needs~
+ \int_use:N \g_@@_missing_cells_int \space
+ additional~ cell(s)
+ }
+ }
+}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\cs_new:Npn \__tag_tbl_add_missing_cells:n #1
+ {
+% \end{macrocode}
+% The TD-socket messages are issued after the message about the end-row socket,
+% but the structure is ok, so better issue a message for now to avoid confusion:
+% \begin{macrocode}
+ \int_compare:nNnT {#1}>{0}
+ {
+ \typeout{==>~
+ ~Inserting~\int_eval:n{#1}~additional~cell(s)~into~previous~row:}
+ }
+ \int_step_inline:nn { #1 }
+ {
+ \UseSocket{tagsupport/tblcell/begin}
+ \UseSocket{tagsupport/tblcell/end}
+ }
+ }
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\endarray}
+% If tables are nested into another then it is necessary to
+% restore information about the cell the inner table started
+% in. Otherwise, \cs{g_@@_row_int}, \cs{g_@@_col_int}, and
+% \cs{g_@@_span_tl} reflect the status in the outer table as they
+% are globally manipulated. We restore in all cases even if we are
+% not in a nesting situation as that makes the code simpler (and
+% probably faster).
+%
+% \cs{endtabular} and \cs{endtabular*} inherit from \cs{endarray}
+% so we only need to change that. \texttt{tabularx} is handled
+% below.
+% \begin{macrocode}
+\def\endarray{
+ \@@_store_missing_cells:n{endarray}
+ \crcr \egroup
+ \UseSocket{tagsupport/tbl/finalize}
+ \int_gset:Nn \g_@@_col_int { \l_@@_saved_col_tl }
+ \int_gset:Nn \g_@@_row_int { \l_@@_saved_row_tl }
+ \tl_gset_eq:NN \g_@@_span_tl \l_@@_saved_span_tl
+ \tl_gset_eq:NN \g_@@_table_cols_tl \l_@@_saved_table_cols_tl
+ \tl_gset_eq:NN \g_@@_struct_table_tl \l_@@_saved_struct_table_tl
+ \seq_gset_eq:NN \g_@@_struct_rows_seq \l_@@_saved_struct_rows_seq
+ \seq_gset_eq:NN \g_@@_struct_cells_seq\l_@@_saved_struct_cells_seq
+ \seq_gset_eq:NN \g_@@_struct_cur_seq \l_@@_saved_struct_cur_seq
+ \typeout{==>~ restored~cell~data:~
+ \int_use:N \g_@@_row_int,
+ \int_use:N \g_@@_col_int,
+ \l_@@_saved_span_tl \space
+ (
+ \int_compare:nNnTF \g_@@_table_cols_tl = 0
+ { outer~ level }
+ { max:~ \g_@@_table_cols_tl }
+ )
+ }
+ \egroup
+ \@arrayright \gdef\@preamble{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@addamp}
+% If we are after the first column we have to insert a \verb=&= and
+% also update the cell data.
+% \begin{macrocode}
+\def\@addamp {
+ \if@firstamp
+ \@firstampfalse
+ \else
+ \edef\@preamble{\@preamble &
+ \@@_update_cell_data:
+ }
+ \fi
+}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{
+% \g_@@_col_int,
+% \g_@@_row_int,
+% \g_@@_span_tl,
+% \g_@@_table_cols_tl}
+% \cs{g_@@_row_int} holds the current row number in the table. The value
+% \texttt{0} means we haven't yet processed the table preamble. It
+% is incremented by every \cs{cr} including the one ending the
+% table preamble.
+%
+% \cs{g_@@_col_int} holds the current column number. The value
+% \texttt{0} means we have not yet started the table or just finished a table row
+% (with \verb=\\= typically); any other positive value means we
+% are currently typesetting a cell in that column in some row
+% (denoted by the \cs{g_@@_row_int}.
+%
+% In a \cs{multicolumn} it holds the column number of the first
+% spanned column and \cs{g_@@_span_tl} the info how many cells are
+% spanned.
+%
+% \cs{g_@@_span_tl} is normally \texttt{1} except in a
+% \cs{multicolumn} cell.
+% \begin{macrocode}
+\int_new:N \g_@@_col_int
+\int_new:N \g_@@_row_int
+\tl_new:N \g_@@_span_tl
+\tl_new:N \g_@@_table_cols_tl
+
+\tl_gset:Nn \g_@@_span_tl {1}
+\tl_gset:Nn \g_@@_table_cols_tl {0} % indicates outer level
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\l_@@_saved_col_tl,\l_@@_saved_row_tl,
+% \l_@@_saved_span_tl,\l_@@_saved_table_cols_tl}
+%
+% Saving the outer values if we are nesting tables is necessary (as
+% the above variables are globally altered. For this we use always
+% token lists because they don't change and we do not need to blow
+% additional integer registers.
+% \begin{macrocode}
+\tl_new:N \l_@@_saved_col_tl
+\tl_new:N \l_@@_saved_row_tl
+\tl_new:N \l_@@_saved_span_tl
+\tl_new:N \l_@@_saved_table_cols_tl
+
+\tl_set:Nn \l_@@_saved_col_tl{0}
+\tl_set:Nn \l_@@_saved_row_tl{0}
+\tl_set:Nn \l_@@_saved_span_tl{1}
+\tl_set:Nn \l_@@_saved_table_cols_tl{0} % indicates outer level
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}
+% {
+% \g_@@_struct_table_tl, \l_@@_saved_struct_table_tl,
+% \g_@@_struct_rows_seq,\l_@@_saved_struct_rows_seq,
+% \g_@@_struct_cells_seq,\l_@@_saved_struct_cells_seq,
+% \g_@@_struct_cur_seq,\l_@@_saved_struct_cur_seq
+% }
+% We need to store the structure numbers for the fine tuning in the
+% finalize socket. For now we use a rather simple system: A
+% sequence that hold the numbers for the row structures, and one
+% that holds comma lists for the cells.
+%
+% \cs{g_@@_struct_table_tl} will hold the structure number of the
+% table, \cs{g_@@_struct_rows_seq} will hold at index i the
+% structure number of row i, \cs{g_@@_struct_cells_seq} will hold
+% at index i a comma list of the cell structure numbers of row i.
+% \cs{g_@@_struct_cur_seq} is used as a temporary store for the
+% cell structures of the current row. We need also local version
+% to store and restore the values.
+%
+% \begin{macrocode}
+\tl_new:N \g_@@_struct_table_tl
+\tl_new:N \l_@@_saved_struct_table_tl
+\seq_new:N \g_@@_struct_rows_seq
+\seq_new:N \l_@@_saved_struct_rows_seq
+\seq_new:N \g_@@_struct_cells_seq
+\seq_new:N \l_@@_saved_struct_cells_seq
+\seq_new:N \g_@@_struct_cur_seq
+\seq_new:N \l_@@_saved_struct_cur_seq
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ar@ialign}
+% A new command that replaces \cs{ialign} above. \cs{everycr} is
+% also applied to the \cs{cr} ending the preamble so we have to
+% program around that.
+% \begin{macrocode}
+\def\ar@ialign{%
+% \end{macrocode}
+% Before starting a table we locally stored the information related
+% to the current cell (if any) so that we can restore it once the
+% table is finished.
+% \begin{macrocode}
+ \tl_set:No \l_@@_saved_col_tl {\int_use:N \g_@@_col_int }
+ \tl_set:No \l_@@_saved_row_tl {\int_use:N \g_@@_row_int }
+ \tl_set_eq:NN \l_@@_saved_span_tl \g_@@_span_tl
+ \tl_set_eq:NN \l_@@_saved_struct_table_tl \g_@@_struct_table_tl
+ \seq_set_eq:NN \l_@@_saved_struct_rows_seq \g_@@_struct_rows_seq
+ \seq_set_eq:NN \l_@@_saved_struct_cells_seq \g_@@_struct_cells_seq
+ \seq_set_eq:NN \l_@@_saved_struct_cur_seq \g_@@_struct_cur_seq
+%
+ \typeout{==>~ saved~cell~data:~
+ \l_@@_saved_row_tl,
+ \l_@@_saved_col_tl,
+ \l_@@_saved_span_tl \space
+ (
+ \int_compare:nNnTF \l_@@_saved_table_cols_tl = 0
+ { outer~ level }
+ { max:~ \l_@@_saved_table_cols_tl }
+ )
+ }
+% \end{macrocode}
+% These are the initial values when starting a table:
+% \begin{macrocode}
+ \int_gzero:N \g_@@_row_int
+ \int_gzero:N \g_@@_col_int
+ \tl_gset:Nn \g_@@_span_tl {1}
+ \seq_gclear:N\g_@@_struct_rows_seq
+ \seq_gclear:N\g_@@_struct_cells_seq
+ \seq_gclear:N\g_@@_struct_cur_seq
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \everycr{%
+ \noalign{%
+% \end{macrocode}
+% We use \cs{g_@@_col_int} equal zero to indicate that we are just
+% after a TR (or at the very beginning of the table). Using the row
+% count is not so good as longtable may split the table in chunks.
+% \begin{macrocode}
+ \int_compare:nNnT \g_@@_col_int > 0
+ { \UseSocket{tagsupport/tblrow/end} }
+ \int_gincr:N \g_@@_row_int % this row about to start
+ \int_gzero:N \g_@@_col_int % we are before first col
+ }%
+ }%
+ \tabskip\z@skip\halign}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\multicolumn}
+%
+% \cs{multicolumn} is also defined in \pkg{array}. The redefinition
+% has to solve two problems: it must handle the row begin if it is
+% used there, and it must save the numbers of cells it spans so
+% that we can add a suitable ColSpan attribute.\footnote{FMi: This can
+% now perhaps cleaned up somewhat}
+% \begin{macrocode}
+\long\def\multicolumn#1#2#3{%
+ % alternative: determine first col with vmode test ...
+ % \ifvmode
+ % \multispan{#1}\typeout{A==> vmode}%
+ % \else
+ % \multispan{#1}\typeout{A==> not vmode}
+ % \fi
+ % but this makes the \crcr handling really complicated which would
+ % then need to become something like
+ % \ifvmode \expandafter \@gobble
+ % \else \expandafter \@iden \fi {\cr\noalign{do something}}%
+ % so not used.
+ % Instead:
+ \multispan{#1}\begingroup
+% \end{macrocode}
+% Insert rowbegin socket only if this multicolumn
+% replaces the preamble of the first column. In that case we have
+% to set \cs{g_@@_col_int} to 1 since this is no longer done in the
+% preamble for the cell.
+% \begin{macrocode}
+ \int_compare:nNnTF \g_@@_col_int = 0
+ {
+ \UseSocket{tagsupport/tblrow/begin}
+ \int_gset:Nn \g_@@_col_int {1}
+ }
+% \end{macrocode}
+% If we are in a later column we use \cs{g_@@_span_tl} from the
+% previous column to update.
+% \begin{macrocode}
+ {
+ \int_gadd:Nn \g_@@_col_int { \g_@@_span_tl }
+ }
+% \end{macrocode}
+% Then we set the span value so that it can be use in the next column.
+% \begin{macrocode}
+ \tl_gset:Nn \g_@@_span_tl {#1}
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \def\@addamp{\if@firstamp\@firstampfalse \else
+ \@preamerr 5\fi}%
+ \@mkpream{#2}\@addtopreamble\@empty
+ \endgroup
+% \end{macrocode}
+% Now we update the colspan attribute. This needs setting after
+% the group as it is hidden inside the plug in \cs{insert@column}.
+% \begin{macrocode}
+ \@@_set_colspan:n {#1}
+% \end{macrocode}
+% \begin{macrocode}
+ \def\@sharp{#3}%
+ \@arstrut \@preamble
+ \null
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{longtable}
+%
+% Longtable is complicated. When at the begin the \cs{endhead},
+% \cs{endfirsthead}, \cs{endfoot} and \cs{endlastfoot} are used to
+% setup head and foot they create each a structure subtree with one or
+% more rows. From this structures we want to keep at most two (head
+% and foot) and move the foot to the end of the table. When the head
+% and foot boxes are (re)inserted on following pages we want to mark
+% them up as artifact with the exception of the head at the begin and
+% the foot box at the end.
+%
+% TODO: When a line is killed the structure subtree is there already
+% too and must be removed.
+%
+% Hyperref patches longtable. This must be disabled and replace with
+% genuine code
+% \begin{macrocode}
+\let\@kernel@refstepcounter\refstepcounter
+\def\hyper@nopatch@longtable{}
+% \end{macrocode}
+% \begin{macrocode}
+\def\@@_patch_LT@array[#1]#2{%
+% \end{macrocode}
+% \cs{LT@array} is executed in a group, so we can disable para-tagging here.
+% \begin{macrocode}
+ \UseSocket{tagsupport/tbl/init}%
+ \@kernel@refstepcounter{table}\stepcounter{LT@tables}%
+% \end{macrocode}
+% The target is created rather late and a \cs{label} can come earlier,
+% so we have to define \cs{@currentHref} explicitly. We can't currently
+% assume that \cs{theHtable} is defined always.
+% \begin{macrocode}
+ \tl_gset:Ne \@currentHref {table.\cs_if_exist_use:N\theHtable}
+ \int_gzero:N \g_@@_row_int
+ \seq_gclear:N\g_@@_struct_rows_seq
+ \seq_gclear:N\g_@@_struct_cells_seq
+ \seq_gclear:N\g_@@_struct_cur_seq
+ \seq_gclear:N\g_@@_LT@firsthead_rows_seq
+ \seq_gclear:N\g_@@_LT@head_rows_seq
+ \seq_gclear:N\g_@@_LT@lastfoot_rows_seq
+ \seq_gclear:N\g_@@_LT@foot_rows_seq
+ \if l#1%
+ \LTleft\z@ \LTright\fill
+ \else\if r#1%
+ \LTleft\fill \LTright\z@
+ \else\if c#1%
+ \LTleft\fill \LTright\fill
+ \fi\fi\fi
+ \let\LT@mcol\multicolumn
+ \let\LT@@@@tabarray\@tabarray
+ \let\LT@@@@hl\hline
+ \def\@tabarray{%
+ \let\hline\LT@@@@hl
+ \LT@@@@tabarray}%
+ \let\\\LT@tabularcr
+ \let\tabularnewline\\%
+ \def\newpage{\noalign{\break}}%
+ \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
+ \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
+ \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
+ \@tempdima\ht\strutbox
+ \let\@endpbox\LT@endpbox
+ \ifx\extrarowheight\@undefined
+ \let\@acol\@tabacol
+ \let\@classz\@tabclassz \let\@classiv\@tabclassiv
+ \def\@startpbox{\vtop\LT@startpbox}%
+ \let\@@@@startpbox\@startpbox
+ \let\@@@@endpbox\@endpbox
+ \let\LT@LL@FM@cr\@tabularcr
+ \else
+ \advance\@tempdima\extrarowheight
+ \col@sep\tabcolsep
+ \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
+ \fi
+ \setbox\@arstrutbox\hbox{\vrule
+ \@height \arraystretch \@tempdima
+ \@depth \arraystretch \dp \strutbox
+ \@width \z@}%
+ \let\@sharp##\let\protect\relax
+ \begingroup
+ \@mkpream{#2}%
+ \@@_determine_table_cols:
+ \xdef\LT@bchunk{%
+% \end{macrocode}
+% At the start of a chunk we set \cs{g_@@_col_int} to zero to make
+% sure that we aren't generating /TR with the \cs{cr} ending the
+% chunk preamble.
+% \begin{macrocode}
+ \int_gzero:N \g_@@_col_int
+ \global\advance\c@LT@chunks\@ne
+ \global\LT@rows\z@\setbox\z@\vbox\bgroup
+ \LT@setprevdepth
+ \tabskip\LTleft \noexpand\halign to\hsize\bgroup
+ \tabskip\z@ \@arstrut
+% \end{macrocode}
+% Insert the socket and the setting of the conditional
+% \begin{macrocode}
+ \UseSocket{tagsupport/tblrow/begin}%
+ \@@_init_cell_data:
+% \end{macrocode}
+% \begin{macrocode}
+ \@preamble \tabskip\LTright \cr}%
+ \endgroup
+ \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
+ \LT@make@row
+ \m@th\let\par\@empty
+% \end{macrocode}
+% Socket and conditional
+% \begin{macrocode}
+ \everycr{%
+ \noalign{%
+% \end{macrocode}
+% In \pkg{longtable} we have a bunch of extra \cs{cr}s that are
+% executed whenever a chunk ends. In that case they should not
+% increment the main row counter, sigh.
+% \begin{macrocode}
+ \typeout{--longtable-->~chunk~row:~ \the\LT@rows \space
+ row:~ \the\g_@@_row_int \space
+ column:~ \the\g_@@_col_int
+ }
+ \int_compare:nNnT \g_@@_col_int > 0
+ {
+ \UseSocket{tagsupport/tblrow/end}
+ }
+% \end{macrocode}
+% This prevents any of the additional \cs{cr}s at the end of the
+% chunk to add another /TR. Then once we really start a new chunk
+% it gets incremented so\ldots
+% \begin{macrocode}
+ \int_gzero:N \g_@@_col_int % before first col
+% \end{macrocode}
+% And for the same reason such \cs{cr}s should not increment the
+% main row counter (but it has to be incremented after the preamble
+% of a chunk), so here we test against \cs{LT@rows} which is
+% \cs{LTchunksize} at the end of a chunk.
+% \begin{macrocode}
+ \int_compare:nNnT \LT@rows < \LTchunksize
+ { \int_gincr:N \g_@@_row_int } % this row about to start
+ }%
+ }%
+% \end{macrocode}
+% \begin{macrocode}
+ \lineskip\z@\baselineskip\z@
+ \LT@bchunk}
+% \end{macrocode}
+% The end code most stop to insert the endrow too.
+% \begin{macrocode}
+\def\@@_patch_endlongtable{%
+ \@@_store_missing_cells:n{endlongtable}
+ \crcr
+ \noalign{%
+ \UseSocket{tagsupport/tbl/finalize/longtable}
+ \int_gzero:N \g_@@_row_int % this prevents considering the next
+ % \crcr as another row end.
+ \let\LT@entry\LT@entry@chop
+ \xdef\LT@save@row{\LT@save@row}}%
+ \LT@echunk
+ \LT@start
+ \unvbox\z@
+ \LT@get@widths
+ \if@filesw
+ {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
+ \gdef\expandafter\noexpand
+ \csname LT@\romannumeral\c@LT@tables\endcsname
+ {\LT@save@row}}}%
+ \fi
+ \ifx\LT@save@row\LT@@@@save@row
+ \else
+ \LT@warn{Column~\@width s~have~changed\MessageBreak
+ in~table~\thetable}%
+ \LT@final@warn
+ \fi
+ \endgraf\penalty -\LT@end@pen
+ \ifvoid\LT@foot\else
+ \global\advance\vsize\ht\LT@foot
+ \global\advance\@colroom\ht\LT@foot
+ \dimen@\pagegoal\advance\dimen@\ht\LT@foot\pagegoal\dimen@
+ \fi
+ \endgroup
+ \global\@mparbottom\z@
+ \endgraf\penalty\z@\addvspace\LTpost
+ \ifvoid\footins\else\insert\footins{}\fi}
+% \end{macrocode}
+%
+%
+%
+% \begin{macro}{\@@_patch_LT@t@bularcr}
+%
+% \begin{macrocode}
+\def\@@_patch_LT@t@bularcr{%
+ \global\advance\LT@rows\@ne
+ \ifnum\LT@rows=\LTchunksize
+% \end{macrocode}
+% At the end of the chunk \verb=\\= is doing something special and
+% so we loose \cs{@@_store_missing_cells:n}. Below is about the
+% right place to add it do this code branch.
+% \begin{macrocode}
+ \@@_store_missing_cells:n{echunk}
+ \gdef\LT@setprevdepth{%
+ \prevdepth\z@
+ \global\let\LT@setprevdepth\relax}%
+ \expandafter\LT@xtabularcr
+ \else
+ \ifnum0=`{}\fi
+ \expandafter\LT@LL@FM@cr
+ \fi}
+
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@@_patch_LT@end@hd@ft}
+% This command is used to store the head and foot boxes.
+% We need to retrieve and store the row so that we can clean
+% up the structure in the finalize code.
+% \begin{macrocode}
+\def\@@_patch_LT@end@hd@ft#1{%
+% \end{macrocode}
+% To handle missing columns in the header we need this:
+% \begin{macrocode}
+ \__tbl_store_missing_cells:n{head/foot}
+ \int_step_inline:nn
+ { \LT@rows + 1 }
+ {
+ \seq_gput_left:ce
+ {g_@@_\cs_to_str:N #1 _rows_seq }
+ { \int_eval:n {\g_@@_row_int + 1 - ##1 } }
+ }
+% \end{macrocode}
+% We also have to set the chunk rows to its max value before
+% calling \cs{LTechunk} so that we don't get extra increments of
+% the main row counter due to \cs{everycr}.
+% \begin{macrocode}
+ \int_gset:Nn \LT@rows { \LTchunksize }
+ \LT@echunk
+ \ifx\LT@start\endgraf
+ \LT@err
+ {Longtable head or foot not at start of table}%
+ {Increase LTchunksize}%
+ \fi
+ \setbox#1\box\z@
+ \LT@get@widths
+ \LT@bchunk}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{\@@_patch_LT@start}
+% \begin{macrocode}
+\def\@@_patch_LT@start{%
+ \let\LT@start\endgraf
+ \endgraf\penalty\z@\vskip\LTpre\endgraf
+ \ifdim \pagetotal<\pagegoal \else
+ \dimen@=\pageshrink
+ \advance \dimen@ 1sp %
+ \kern\dimen@\penalty 9999\endgraf \kern-\dimen@
+ \fi
+ \dimen@\pagetotal
+ \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+ \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
+ \advance\dimen@ \ht\LT@foot
+ \edef\LT@reset@vfuzz{\vfuzz\the\vfuzz\vbadness\the\vbadness\relax}%
+ \vfuzz\maxdimen
+ \vbadness\@M
+ \setbox\tw@\copy\z@
+ \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
+ \setbox\tw@\vbox{\unvbox\tw@}%
+ \LT@reset@vfuzz
+ \advance\dimen@ \ht
+ \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
+ \advance\dimen@\dp
+ \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
+ \advance\dimen@ -\pagegoal
+ \ifdim \dimen@>\z@
+ \vfil\break
+ \else
+ \ifdim\pageshrink>\z@\pageshrink\z@\fi
+ \fi
+ \global\@colroom\@colht
+ \ifvoid\LT@foot\else
+ \global\advance\vsize-\ht\LT@foot
+ \global\advance\@colroom-\ht\LT@foot
+ \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
+ \maxdepth\z@
+ \fi
+ \MakeLinkTarget{table}
+ \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi\nobreak
+% \end{macrocode}
+% Avoid that following uses of the box add content:
+% \begin{macrocode}
+ \tagmcbegin{artifact}
+ \tag_mc_reset_box:N\LT@head
+ \tagmcend
+ \output{\LT@output}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\@@_patch_LT@output}
+% We must also avoid that the reuse of the foot box leads to
+% duplicated content:
+% \begin{macrocode}
+\def\@@_patch_LT@output{%
+ \ifnum\outputpenalty <-\@Mi
+ \ifnum\outputpenalty > -\LT@end@pen
+ \LT@err{floats and marginpars not allowed in a longtable}\@ehc
+ \else
+ \setbox\z@\vbox{\unvbox\@cclv}%
+ \ifdim \ht\LT@lastfoot>\ht\LT@foot
+ \dimen@\pagegoal
+ \advance\dimen@\ht\LT@foot
+ \advance\dimen@-\ht\LT@lastfoot
+ \ifdim\dimen@<\ht\z@
+ \setbox\@cclv\vbox{\unvbox\z@\copy\LT@foot\vss}%
+ \@makecol
+ \@outputpage
+ \global\vsize\@colroom
+ \setbox\z@\vbox{\box\LT@head}%
+ \fi
+ \fi
+ \unvbox\z@\box\ifvoid\LT@lastfoot\LT@foot\else\LT@lastfoot\fi
+% \end{macrocode}
+% Reset attribute of foot box:
+% \begin{macrocode}
+ \tagmcbegin{artifact}
+ \tag_mc_reset_box:N \LT@foot
+ \tagmcend
+ \fi
+ \else
+ \setbox\@cclv\vbox{\unvbox\@cclv\copy\LT@foot\vss}%
+% \end{macrocode}
+% Reset attribute of foot box:
+% \begin{macrocode}
+ \tagmcbegin{artifact}
+ \tag_mc_reset_box:N \LT@foot
+ \tagmcend
+ \@makecol
+ \@outputpage
+ \global\vsize\@colroom
+ \copy\LT@head\nobreak
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@@_patch_\LT@makecaption}
+% This patch is quite similar to the one for LaTeX's \cs{@makecaption}
+% we also have to change the parbox sockets.
+% \begin{macrocode}
+\def\@@_patch_LT@makecaption#1#2#3{%
+ \LT@mcol\LT@cols c{%
+ % test can go after merge
+ \str_if_exist:cT { l__socket_tagsupport/parbox/before_plug_str }
+ {
+ \AssignSocketPlug{tagsupport/parbox/before}{noop}
+ \AssignSocketPlug{tagsupport/parbox/after}{noop}
+ }
+ \hbox to\z@{\hss\parbox[t]\LTcapwidth{%
+ \reset@font
+ \tag_stop:n{caption}
+ \sbox\@tempboxa{#1{#2:~}#3}%
+ \tag_start:n{caption}
+ \ifdim\wd\@tempboxa>\hsize
+ #1{#2:~}#3%
+ \else
+ \hbox to\hsize{\hfil#1{#2:~}#3\hfil}%
+ \fi
+ \endgraf\vskip\baselineskip}%
+ \hss}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% Overwrite the longtable definition. That will probably break somewhere as
+% they are various package which patch too.
+% \begin{macrocode}
+\AddToHook{package/longtable/after}
+ {
+ \seq_new:N \g_@@_LT@firsthead_rows_seq
+ \seq_new:N \g_@@_LT@head_rows_seq
+ \seq_new:N \g_@@_LT@lastfoot_rows_seq
+ \seq_new:N \g_@@_LT@foot_rows_seq
+ \cs_set_eq:NN \LT@array\@@_patch_LT@array
+ \cs_set_eq:NN \endlongtable\@@_patch_endlongtable
+ \cs_set_eq:NN \LT@start\@@_patch_LT@start
+ \cs_set_eq:NN \LT@output\@@_patch_LT@output
+ \cs_set_eq:NN \LT@t@bularcr\@@_patch_LT@t@bularcr
+ \cs_set_eq:NN \LT@end@hd@ft\@@_patch_LT@end@hd@ft
+ \cs_set_eq:NN \LT@makecaption\@@_patch_LT@makecaption
+ }
+% \end{macrocode}
+
+
+
+
+
+% \subsection{tabularx}
+%
+% In tabularx we mainly need to ensure that no tagging is done during
+% the trial.
+%
+% \begin{macrocode}
+\def\@@_patch_TX@endtabularx{%
+ \expandafter\expandafter\expandafter
+ \TX@find@endtabularxa\csname end\TX@\endcsname
+ \endtabularx\TX@\endtabularx\TX@find@endtabularxa
+ \expandafter\TX@newcol\expandafter{\tabularxcolumn{\TX@col@width}}%
+ \let\verb\TX@verb
+ \def\@elt##1{\global\value{##1}\the\value{##1}\relax}%
+ \edef\TX@ckpt{\cl@@@@ckpt}%
+ \let\@elt\relax
+ \TX@old@table\maxdimen
+ \TX@col@width\TX@target
+ \global\TX@cols\@ne
+ \TX@typeout@
+ {\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
+% \end{macrocode}
+% Here we stop tagging:
+% \begin{macrocode}
+ \tag_stop:n{tabularx}
+ \TX@trial{\def\NC@rewrite@X{%
+ \global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
+ \loop
+ \TX@arith
+ \ifTX@
+ \TX@trial{}%
+ \repeat
+% \end{macrocode}
+% And now we restart it again.
+% \begin{macrocode}
+ \tag_start:n{tabularx}
+ {\let\@footnotetext\TX@ftntext\let\@xfootnotenext\TX@xftntext
+ \csname tabular*\expandafter\endcsname\expandafter\TX@target
+ \the\toks@
+ \csname endtabular*\endcsname}%
+ \global\TX@ftn\expandafter{\expandafter}\the\TX@ftn
+ \ifnum0=`{\fi}%
+ \expandafter\expandafter\expandafter
+ \TX@find@endtabularxbb
+ \expandafter\end\expandafter{\TX@}%
+ \endtabularx\TX@\endtabularx\TX@find@endtabularxb
+}
+
+\AddToHook{package/tabularx/after}
+ {\cs_set_eq:NN \TX@endtabularx\@@_patch_TX@endtabularx }
+% \end{macrocode}
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+%<*latex-lab>
+\ProvidesFile{table-latex-lab-testphase.ltx}
+ [\ltlabtbldate\space v\ltlabtblversion\space latex-lab wrapper table]
+\RequirePackage{latex-lab-testphase-table}
+%</latex-lab>
+% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-table.pdf b/macros/latex/required/latex-lab/latex-lab-table.pdf
new file mode 100644
index 0000000000..555b839e75
--- /dev/null
+++ b/macros/latex/required/latex-lab/latex-lab-table.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-testphase.dtx b/macros/latex/required/latex-lab/latex-lab-testphase.dtx
index ce882030e8..b2ed5ecf8a 100644
--- a/macros/latex/required/latex-lab/latex-lab-testphase.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-testphase.dtx
@@ -41,11 +41,14 @@
% \section{Introduction}
%
% This code implements small files which can be loaded with the |testphase|
-% key of \cs{DocumentMetadata}. This will be extended to allow user to load
+% key of \cs{DocumentMetadata} and which bundle various testphase modules.
+% This will be extended to allow user to load
% well defined parts of the tagged PDF project.
-% Currently the values |phase-I|, |phase-II| and |new-or| are provided.
-% |tagpdf| is an undocumented alias for |phase-II| which is kept for compability.
%
+% Currently the values |phase-I|, |phase-II|, |phase-III| and |new-or| (bundles |new-or-1|
+% and |new-or-2|) are provided.
+% |tagpdf| is an undocumented alias for |phase-II| which is kept for compability.
+% The value |math| combines various math related files.
%
% \StopEventually{\setlength\IndexMin{200pt} \PrintIndex }
%
@@ -53,17 +56,12 @@
% \section{The Implementation}
% new-or-1 contains the code for header and footer (tagging and
% suppressing links) and is always loaded
-% \begin{macrocode}
-%<*new-or-1>
-\ProvidesFile{new-or-1-latex-lab-testphase.ltx}
- [2022-11-04 v0.1a latex-lab wrapper new-or-1]
-%</new-or-1>
-% \end{macrocode}
+
% new-or combines all new-or parts (currently 1+2)
% \begin{macrocode}
%<*new-or>
\ProvidesFile{new-or-latex-lab-testphase.ltx}
- [2022-11-04 v0.1a latex-lab wrapper new-or]
+ [2023-06-15 v0.1b latex-lab wrapper new-or]
%</new-or>
% \end{macrocode}
% \begin{macrocode}
@@ -75,17 +73,17 @@
% \begin{macrocode}
%<*phase-II>
\ProvidesFile{phase-II-latex-lab-testphase.ltx}
- [2022-11-04 v0.1a latex-lab wrapper phase-II]
+ [2023-06-15 v0.1b latex-lab wrapper phase-II]
%</phase-II>
% \end{macrocode}
% \begin{macrocode}
%<*phase-III>
\ProvidesFile{phase-III-latex-lab-testphase.ltx}
- [2023-03-06 v0.1a latex-lab wrapper phase-III]
+ [2023-07-20 v0.1b latex-lab wrapper phase-III]
\input{phase-II-latex-lab-testphase.ltx}
\IfFormatAtLeastTF{2023-06-01}
{
- \RequirePackage{latex-lab-testphase-block-tagging}
+ \RequirePackage{latex-lab-testphase-block}
\RequirePackage{latex-lab-testphase-sec}
\RequirePackage{latex-lab-testphase-toc}
\RequirePackage{latex-lab-testphase-minipage}
@@ -106,11 +104,11 @@
%</tagpdf>
% \end{macrocode}
% \begin{macrocode}
-%<*tagpdf|phase-I|phase-II|new-or|new-or-1>
+%<*tagpdf|phase-I|phase-II|new-or>
\RequirePackage{latex-lab-testphase-new-or-1}
-%</tagpdf|phase-I|phase-II|new-or|new-or-1>
+%</tagpdf|phase-I|phase-II|new-or>
% \end{macrocode}
-% New output routine code is loaded in phase-II and new-or:
+% Support for the new output routine code are loaded in phase-II and new-or:
% \begin{macrocode}
%<*tagpdf|phase-II|new-or>
\RequirePackage{latex-lab-testphase-new-or-2}
@@ -135,23 +133,23 @@
% \begin{macrocode}
%</tagpdf|phase-I|phase-II>
% \end{macrocode}
-% Wrapper files for math tagging:
+% testphase wrapper files for math:
% \begin{macrocode}
-%<*math-lab>
+%<*math>
\ProvidesFile{math-latex-lab-testphase.ltx}
- [2023-01-07 v0.8 code related to the math tagging]
+ [2023-07-20 v0.8a latex-lab wrapper math]
\RequirePackage{latex-lab-testphase-math}
-%</math-lab>
+%</math>
% \end{macrocode}
% \begin{macrocode}
-%<*math-sty>
+%<*math-package>
\ProvidesPackage{latex-lab-testphase-math}
- [2023-01-07 v0.8 code related to the math tagging]
-\input{latex-lab-mathtagging.ltx}
+ [2023-07-20 v0.8a code related to the math tagging]
+\input{latex-lab-math.ltx}
\input{latex-lab-amsmath.ltx}
\input{latex-lab-mathtools.ltx}
\input{latex-lab-mathpkg.ltx}
-%</math-sty>
+%</math-package>
% \end{macrocode}
% \Finale
%
diff --git a/macros/latex/required/latex-lab/latex-lab-testphase.pdf b/macros/latex/required/latex-lab/latex-lab-testphase.pdf
index 35f6b6cd8e..f91a78d85a 100644
--- a/macros/latex/required/latex-lab/latex-lab-testphase.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-testphase.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-text.dtx b/macros/latex/required/latex-lab/latex-lab-text.dtx
index 0f31c45969..4041336ecb 100644
--- a/macros/latex/required/latex-lab/latex-lab-text.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-text.dtx
@@ -16,6 +16,9 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabtextdate{2023-07-20}
+\def\ltlabtextversion{0.85a}
+
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -30,7 +33,7 @@
% \title{The \textsf{latex-lab-text} package\\
% Changes and additions to the kernel related to the tagging of various small text commands}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.80 2023-05-28}
+% \date{v\ltlabtextversion\ \ltlabtextdate}
%
% \maketitle
%
@@ -61,8 +64,8 @@
%<@@=tag>
% \end{macrocode}
% \begin{macrocode}
-\ProvidesExplPackage {latex-lab-testphase-text} {2023-05-28} {0.8}
- {Code related to the tagging of inline text commands}
+\ProvidesExplPackage {latex-lab-testphase-text} {\ltlabtextdate} {\ltlabtextversion}
+ {Code related to the tagging of various small text commands}
% \end{macrocode}
% \subsection{The \LaTeX\ and \TeX\ logo}
@@ -124,7 +127,8 @@
% \begin{macrocode}
%<*latex-lab>
\ProvidesFile{text-latex-lab-testphase.ltx}
- [2023-05-28 v0.8 code related to the tagging of bib and citations]
+ [\ltlabtextdate\space v\ltlabtextversion\space
+ code related to the tagging of various small text commands]
\RequirePackage{latex-lab-testphase-text}
diff --git a/macros/latex/required/latex-lab/latex-lab-text.pdf b/macros/latex/required/latex-lab/latex-lab-text.pdf
index f4879150ac..b4e291df01 100644
--- a/macros/latex/required/latex-lab/latex-lab-text.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-text.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx b/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
index 186f388a19..2f00b83c05 100644
--- a/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.dtx
@@ -16,6 +16,8 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabtochyperdate{2023-07-20}
+\def\ltlabtochyperversion{0.85a}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -29,7 +31,7 @@
% \title{The \textsf{latex-lab-toc-hyperref-changes} package\\
% Changes and additions to hyperref related to toc entries}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.83 2023-06-07}
+% \date{v\ltlabtochyperversion\ \ltlabtochyperdate}
%
% \maketitle
%
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf b/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
index 6ae6eb3718..8662c9c37c 100644
--- a/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-toc-hyperref-changes.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx b/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
index 1c1ce7f44e..81c9edfe4d 100644
--- a/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: latex-lab-toc-kernel-functions.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc-kernel-changes.dtx (C) Copyright 2022-2023 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
@@ -16,6 +16,9 @@
%
% for those people who are interested or want to report an issue.
%
+% dates for latex-lab-kernel-changes.sty (pulled from various sources, see ins)
+\def\ltlabkerneldate{2023-10-16}
+\def\ltlabkernelversion{0.85b}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
@@ -56,6 +59,14 @@
% They are marked as [class]. They are inserted with hooks here: this will break
% if a non-standard class is used.
%
+% \subsection{Package declaration}
+% \begin{macrocode}
+%<*kernelchange>
+\ProvidesPackage{latex-lab-kernel-changes}
+ [\ltlabkerneldate\space v\ltlabkernelversion\space
+ General kernel and class changes]
+% \end{macrocode}
+%
% \subsection{Providing the counter representation \cs{theHxx} generally}
% [kernel?]
%
@@ -67,7 +78,6 @@
%
% At first we suppress the patches from hyperref:
% \begin{macrocode}
-%<*kernelchange>
\def\hyper@nopatch@counter{}
% \end{macrocode}
%
@@ -142,8 +152,32 @@
\def\toclevel@subparagraph{5}
\def\toclevel@figure{1}
\def\toclevel@table{1}
+% \end{macrocode}
+%
+%\subsection{Storing the relation between target names and structure numbers}
+% To be able to add a /Ref key to structures the tagging makes use of target names
+% and stores the relationship in a property. We add a hook to \cs{MakeLinkTarget} to
+% catch as much as possible, see also tagging issue \#20. This should work also
+% without hyperref. The property is defined in tagpdf-base, so the code would
+% work also without tagging but we add a test anyway, this is probably faster.
+% \begin{macrocode}
+\ExplSyntaxOn
+\AddToHookWithArguments{cmd/MakeLinkTarget/after}
+ {
+ \tag_if_active:T
+ {
+ \tl_if_blank:VF \@currentHref
+ {
+ \prop_gput:Nee \g__tag_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
+ }
+ }
+ }
+\ExplSyntaxOff
+% \end{macrocode}
+% \begin{macrocode}
%</kernelchange>
% \end{macrocode}
+%
% \subsection{load kernel changes}
% \begin{macrocode}
%<*package>
@@ -461,13 +495,3 @@
% \begin{macrocode}
%</package>
% \end{macrocode}
-
-% \begin{macrocode}
-%<*latex-lab>
-\ProvidesFile{toc-tagging-latex-lab-testphase.ltx}
- [2023-05-20 v0.81 code related to the tagging of toc and similar lists]
-
-\RequirePackage{latex-lab-testphase-toc}
-
-%</latex-lab>
-% \end{macrocode}
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf b/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
index 96b9ac1514..b559fb59e6 100644
--- a/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
+++ b/macros/latex/required/latex-lab/latex-lab-toc-kernel-changes.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.pdf b/macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.pdf
deleted file mode 100644
index 4ec6c4e614..0000000000
--- a/macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.pdf
+++ /dev/null
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.dtx b/macros/latex/required/latex-lab/latex-lab-toc.dtx
index a39ace44e5..6def505e11 100644
--- a/macros/latex/required/latex-lab/latex-lab-toc-tagging-functions.dtx
+++ b/macros/latex/required/latex-lab/latex-lab-toc.dtx
@@ -1,6 +1,6 @@
% \iffalse meta-comment
%
-%% File: latex-lab-toc-tagging-functions.dtx (C) Copyright 2022-2023 LaTeX Project
+%% File: latex-lab-toc.dtx (C) Copyright 2022-2023 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
@@ -16,22 +16,24 @@
%
% for those people who are interested or want to report an issue.
%
+\def\ltlabtocdate{2023-10-16}
+\def\ltlabtocversion{0.85b}
%<*driver>
\documentclass{l3doc}
\EnableCrossrefs
\CodelineIndex
\begin{document}
- \DocInput{latex-lab-toc-tagging-functions.dtx}
+ \DocInput{latex-lab-toc.dtx}
\end{document}
%</driver>
%
% \fi
%
%
-% \title{The \textsf{latex-lab-toc-tagging-functions} package\\
-% Tagpdf functions related to the tagging of toc and similar lists}
+% \title{The \textsf{latex-lab-toc} package\\
+% Changes related to the tagging of toc and similar lists}
% \author{\LaTeX{} Project\thanks{Initial implementation done by Ulrike Fischer}}
-% \date{Version 0.82 2023-05-20}
+% \date{v\ltlabtocdate\ \ltlabtocversion}
%
% \maketitle
%
@@ -48,16 +50,46 @@
% Header for the testphase package
% \begin{macrocode}
%<*header>
-\ProvidesExplPackage {latex-lab-testphase-toc} {2023-05-20} {0.82}
- { commands related to the tagging of toc-like lists}
+\ProvidesExplPackage {latex-lab-testphase-toc} {\ltlabtocdate} {\ltlabtocversion}
+ { Code related to the tagging of toc-like lists}
%</header>
% \end{macrocode}
-%
+% \begin{documentation}
% \section{Introduction}
%
% The followings contains various functions related to the tagging of the
-% table of contents and similar list. The functions will at some time
-% be moved inside the tagpdf code.
+% table of contents and similar list.
+%
+% The structure of tocs consist of nested TOC and TOCI structures.
+% The code uses the first argument of the \cs{contentsline} command to detect the
+% level and to decided if a structure should be closed. The structure that
+% should be used in \texttt{/Ref} key to link to the heading is detected from the
+% target name in the fourth argument -- because of this with this code such a target
+% name is created and stored also if hyperref is not loaded.
+%
+% \subsection{Manual toc additions}
+% As the \texttt{/Ref} key relies on the target name,
+% manual \cs{addcontentsline} commands must ensure that they reference the right
+% structure. If an unnumbered heading command is used before this is normally the case,
+% so the following should work fine:
+%
+% \begin{verbatim}
+% \chapter*{Unnumbered}
+% \addcontentsline{toc}{chapter}{Unnumbered}
+% \end{verbatim}
+%
+% If there is no heading command a target name must be created manually \emph{inside the
+% right structure} with \cs{MakeLinkTarget}:
+%
+% \begin{verbatim}
+% \noindent % start e.g. P-structure
+% \MakeLinkTarget*{unnumbered}% target inside the P-structure
+% Unnumbered
+% \addcontentsline{toc}{chapter}{Unnumbered}
+% \end{verbatim}
+%
+% \end{documentation}
+% \begin{implementation}
% \begin{macrocode}
%<*package>
%<@@=tag>
@@ -76,33 +108,28 @@
% This variable records for (some or all, not clear yet)
% destination names the related structure number to allow
% to reference them in a Ref. The key is the destination.
-% Moved into tagpdf!
+% Defined by tagpdf.
% \end{variable}
%
-% We use \cs{refstepcounter} to store the relation between
+% \cs{refstepcounter} doesn't use \cs{MakeLinkTarget} (yet) so
+% we have to patch it too to store the relation between
% destination names/\cs{@currentHref} and structure numbers
%
-% TODO: the functions should be moved into tagpdf so that one
-% doesn't has to test if the prop exists or not.
+% The property is set up in tagpdf-test so that one
+% doesn't has to check if the prop exists or not.
% \begin{macrocode}
\AddToHook{cmd/refstepcounter/after}
{
\tl_if_blank:VF \@currentHref
{
- \prop_if_exist:NT \g_@@_struct_dest_num_prop
- {
- \prop_gput:Nxx \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
+ \prop_gput:Nee \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
}
}
\AddToHook{cmd/H@refstepcounter/after}
{
\tl_if_blank:VF \@currentHref
{
- \prop_if_exist:NT \g_@@_struct_dest_num_prop
- {
- \prop_gput:Nxx \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
- }
+ \prop_gput:Nee \g_@@_struct_dest_num_prop {\@currentHref}{\tag_get:n{struct_num}}
}
}
% \end{macrocode}
@@ -363,3 +390,14 @@
% \begin{macrocode}
%</package>
% \end{macrocode}
+% Wrapper for the testphase key.
+% \begin{macrocode}
+%<*latex-lab>
+\ProvidesFile{toc-latex-lab-testphase.ltx}
+ [\ltlabtocdate\space v\ltlabtocversion latex-lab wrapper toc]
+
+\RequirePackage{latex-lab-testphase-toc}
+
+%</latex-lab>
+% \end{macrocode}
+% \end{implementation}
diff --git a/macros/latex/required/latex-lab/latex-lab-toc.pdf b/macros/latex/required/latex-lab/latex-lab-toc.pdf
new file mode 100644
index 0000000000..b60f71fb0b
--- /dev/null
+++ b/macros/latex/required/latex-lab/latex-lab-toc.pdf
Binary files differ
diff --git a/macros/latex/required/latex-lab/latex-lab.ins b/macros/latex/required/latex-lab/latex-lab.ins
index 1989ddcfa3..548f18a6fa 100644
--- a/macros/latex/required/latex-lab/latex-lab.ins
+++ b/macros/latex/required/latex-lab/latex-lab.ins
@@ -66,87 +66,104 @@ where one can also log issues in case there are any.
% files that should be loadable with the testphase key should use the naming scheme
% #1-latex-lab-testphase.ltx
+
+%%% phases and bundles %%%
+% phases
\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}}}
\generate{\file{phase-III-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{phase-III}}}
-
+% obsolete
\generate{\file{tagpdf-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{tagpdf}}}
+
+%new-or (no style, only wrapper, private and not documentated)
\generate{\file{new-or-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{new-or}}}
-\generate{\file{new-or-1-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{new-or-1}}}
-\generate{\file{math-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{math-lab}}}
-\generate{\file{latex-lab-testphase-math.sty}{\from{latex-lab-testphase.dtx}{math-sty}}}
+% math
+\generate{\file{math-latex-lab-testphase.ltx}{\from{latex-lab-testphase.dtx}{math}}}
+\generate{\file{latex-lab-testphase-math.sty}{\from{latex-lab-testphase.dtx}{math-package}}}
-% support files (the new-or code is a private package to make life easier)
-\generate{\file{latex-lab-testphase-new-or-2.sty}{\from{latex-lab-new-or-2.dtx}{code}}}
-\generate{\file{latex-lab-testphase-new-or-1.sty}{\from{latex-lab-new-or-1.dtx}{code}}}
+%%% support files loaded by phases and testphase modules %%%
+%footnotes
\generate{\file{latex-lab-footmisc.ltx}{\from{latex-lab-footnotes.dtx}{footmisc}}}
\generate{\file{latex-lab-footnotes.ltx}{\from{latex-lab-footnotes.dtx}{kernel}}}
-\generate{\file{latex-lab-mathtagging.ltx}{\from{latex-lab-mathtagging.dtx}{kernel}}}
+%new-or-2
+\generate{\file{latex-lab-testphase-new-or-2.sty}{\from{latex-lab-new-or-2.dtx}{package}}}
+
+%math
+\generate{\file{latex-lab-math.ltx}{\from{latex-lab-math.dtx}{kernel}}}
\generate{\file{latex-lab-amsmath.ltx}{\from{latex-lab-amsmath.dtx}{kernel}}}
\generate{\file{latex-lab-mathtools.ltx}{\from{latex-lab-mathtools.dtx}{kernel}}}
\generate{\file{latex-lab-mathpkg.ltx}{\from{latex-lab-mathpkg.dtx}{kernel}}}
-\generate{\file{latex-lab-testphase-sec.sty}{\from{latex-lab-sec.dtx}{package}}}
-\generate{\file{sec-tagging-latex-lab-testphase.ltx}{\from{latex-lab-sec.dtx}{latex-lab}}}
-
-
-\generate{\file{latex-lab-testphase-toc.sty}{%
- \from{latex-lab-toc-tagging-functions.dtx}{header}
- \from{latex-lab-toc-kernel-changes.dtx}{package}
- \from{latex-lab-toc-tagging-functions.dtx}{package}
- \from{latex-lab-toc-hyperref-changes.dtx}{package}}}
-
-\generate{\file{toc-tagging-latex-lab-testphase.ltx}{%
- \from{latex-lab-toc-kernel-changes.dtx}{latex-lab}}}
-
+% kernel changes need by more than one module
\generate{\file{latex-lab-kernel-changes.sty}
{\from{latex-lab-toc-kernel-changes.dtx}{kernelchange}
\from{latex-lab-sec.dtx}{kernelchange}
}}
-\generate{\file{latex-lab-testphase-graphic.sty}{%
- \from{latex-lab-graphic.dtx}{package}}}
+%%% single modules %%%
+%new-or-1
+\generate{\file{new-or-1-latex-lab-testphase.ltx}{\from{latex-lab-new-or-1.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-new-or-1.sty}{\from{latex-lab-new-or-1.dtx}{package}}}
-\generate{\file{graphic-latex-lab-testphase.ltx}{%
- \from{latex-lab-graphic.dtx}{latex-lab}}}
+%sec
+\generate{\file{sec-latex-lab-testphase.ltx}{\from{latex-lab-sec.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-sec.sty}{\from{latex-lab-sec.dtx}{package}}}
-\generate{\file{latex-lab-testphase-block-tagging.sty}{\from{latex-lab-block-tagging.dtx}{package}}}
-\generate{\file{block-tagging-latex-lab-testphase.ltx}{\from{latex-lab-block-tagging.dtx}{latex-lab}}}
-\generate{\file{latex-lab-testphase-minipage.sty}{%
- \from{latex-lab-minipage.dtx}{package}}}
+%toc
+\generate{\file{toc-latex-lab-testphase.ltx}{\from{latex-lab-toc.dtx}{latex-lab}}}
-\generate{\file{minipage-latex-lab-testphase.ltx}{%
- \from{latex-lab-minipage.dtx}{latex-lab}}}
-
- \generate{\file{latex-lab-testphase-float.sty}{%
- \from{latex-lab-float.dtx}{package}}}
+\generate{\file{latex-lab-testphase-toc.sty}{%
+ \from{latex-lab-toc.dtx}{header}
+ \from{latex-lab-toc-kernel-changes.dtx}{package}
+ \from{latex-lab-toc.dtx}{package}
+ \from{latex-lab-toc-hyperref-changes.dtx}{package}}}
-\generate{\file{float-latex-lab-testphase.ltx}{%
- \from{latex-lab-float.dtx}{latex-lab}}}
-
-\generate{\file{latex-lab-testphase-bib.sty}{%
- \from{latex-lab-bib.dtx}{package}}}
+%graphic
+\generate{\file{graphic-latex-lab-testphase.ltx}{\from{latex-lab-graphic.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-graphic.sty}{\from{latex-lab-graphic.dtx}{package}}}
+
+% block
+\generate{\file{latex-lab-testphase-block.sty}{\from{latex-lab-block.dtx}{package}}}
+\generate{\file{block-latex-lab-testphase.ltx}{\from{latex-lab-block.dtx}{latex-lab}}}
-\generate{\file{bib-latex-lab-testphase.ltx}{%
- \from{latex-lab-bib.dtx}{latex-lab}}}
+% minipage
+\generate{\file{minipage-latex-lab-testphase.ltx}{\from{latex-lab-minipage.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-minipage.sty}{\from{latex-lab-minipage.dtx}{package}}}
-\generate{\file{latex-lab-testphase-text.sty}{%
- \from{latex-lab-text.dtx}{package}}}
+%float
+\generate{\file{float-latex-lab-testphase.ltx}{\from{latex-lab-float.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-float.sty}{\from{latex-lab-float.dtx}{package}}}
-\generate{\file{text-latex-lab-testphase.ltx}{%
- \from{latex-lab-text.dtx}{latex-lab}}}
+%bib
+\generate{\file{bib-latex-lab-testphase.ltx}{\from{latex-lab-bib.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-bib.sty}{\from{latex-lab-bib.dtx}{package}}}
-\generate{\file{latex-lab-testphase-firstaid.sty}{%
- \from{latex-lab-firstaid.dtx}{package}}}
+%text
+\generate{\file{text-latex-lab-testphase.ltx}{\from{latex-lab-text.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-text.sty}{\from{latex-lab-text.dtx}{package}}}
-\generate{\file{firstaid-latex-lab-testphase.ltx}{%
- \from{latex-lab-firstaid.dtx}{latex-lab}}}
+%firstaid
+\generate{\file{firstaid-latex-lab-testphase.ltx}{\from{latex-lab-firstaid.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-firstaid.sty}{\from{latex-lab-firstaid.dtx}{package}}}
+
+%table
+\generate{\file{table-latex-lab-testphase.ltx}{\from{latex-lab-table.dtx}{latex-lab}}}
+\generate{\file{latex-lab-testphase-table.sty}{\from{latex-lab-table.dtx}{package}}}
+
+
+% stop docstrip adding \endinput
+\preamble
+\endpreamble
+\postamble
+\endpostamble
+% namespace definitions
+\generate{\file{tagpdf-ns-latex-lab.def}{\from{latex-lab-namespace.dtx}{ns-latex-lab}}}
\endbatchfile
diff --git a/macros/latex/required/latex-lab/usage-of-@footnotemark.md b/macros/latex/required/latex-lab/usage-of-@footnotemark.md
deleted file mode 100644
index ad50b36732..0000000000
--- a/macros/latex/required/latex-lab/usage-of-@footnotemark.md
+++ /dev/null
@@ -1,189 +0,0 @@
-# Packages that alter \@footnotemark ...
-
-Scan of TeXlive 2022 for checking ... may not be longer accurate and may contain a few false positives
-
-```
-% bibarts
-
-\let\ba@footnmark=\@footnotemark
-\def\@footnotemark{\ifhmode{\nobreak \hskip 0.04em plus 0.01em}\else\leavevmode\fi\ba@footnmark}%
-
-
-% ./bxjscls/bxjsja-minimal.def
-
-\def\bxjs@cjk@loaded{%
- \def\@footnotemark{%
- \leavevmode
- \ifhmode
- \edef\@x@sf{\the\spacefactor}%
- \ifdim\lastkern>\z@\ifdim\lastkern<5sp\relax
- \unkern\unkern
- \ifdim\lastskip>\z@ \unskip \fi
- \fi\fi
- \nobreak
- \fi
- \@makefnmark
- \ifhmode \spacefactor\@x@sf \fi
- \relax}%
- \let\bxjs@cjk@loaded\relax
-}
-
-% ./arabtex/afoot.sty
-
-\let \a@@footnotemark \@footnotemark
-
-\def \a@footnotemark {% inside Arabic environment
-\iftrans \unskip \unskip \nobreak \@makefnmark \fi
-\ifarab \a@spacefalse \putwordb@x \@makefnmark \a@spacetrue \fi }
-
-% ./hyperref/hyperref.sty
-
- \def\@footnotemark{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
- \stepcounter{Hfootnote}%
- \global\let\Hy@saved@currentHref\@currentHref
- \hyper@makecurrent{Hfootnote}%
- \global\let\Hy@footnote@currentHref\@currentHref
- \global\let\@currentHref\Hy@saved@currentHref
- \hyper@linkstart{link}{\Hy@footnote@currentHref}%
- \@makefnmark
- \hyper@linkend
- \ifhmode\spacefactor\@x@sf\fi
- \relax
- }%
-
-
-% ./hypdvips/hypdvips.sty
-
- \def\@footnotemark{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
- \stepcounter{Hfootnote}%
- \global\let\Hy@saved@currentHref\@currentHref
- \hyper@makecurrent{Hfootnote}%
- \global\let\Hy@footnote@currentHref\@currentHref
- \global\let\@currentHref\Hy@saved@currentHref
- \ifHy@draft%
- \@makefnmark%
- \else%
- \pp@hyperfootnote%
- \fi%
- \ifhmode\spacefactor\@x@sf\fi
- \relax
- }
-
- \newcommand{\pp@hyperfootnote}{%
- \ifx\pp@activerect\pp@true%
- \@makefnmark%
- \else%
- \ifpp@smallfootnotes%
- \let\pp@backup@@thefnmark\@thefnmark%
- \renewcommand{\@thefnmark}{\pdf@rect{\pp@backup@@thefnmark}}%
- \Hy@colorlink\@footnotecolor%
- \@makefnmark%
- \Hy@endcolorlink%
- \pdfmark{%
- pdfmark=/ANN,%
- linktype=footnote,%
- Subtype=/Link,%
- AcroHighlight=\@pdfhighlight,%
- Border=\@pdfborder,%
- BorderStyle=\@pdfborderstyle,%
- Color=\@footnotebordercolor,%
- Dest=\Hy@footnote@currentHref,%
- Raw=H.B%
- }%
- \let\@thefnmark\pp@backup@@thefnmark%
- \else%
- \pdfmark[\@makefnmark]{%
- pdfmark=/ANN,%
- linktype=footnote,%
- Subtype=/Link,%
- AcroHighlight=\@pdfhighlight,%
- Border=\@pdfborder,%
- BorderStyle=\@pdfborderstyle,%
- Color=\@footnotebordercolor,%
- Dest=\Hy@footnote@currentHref%
- }%
- \fi%
- \fi%
- }
-
-
-% ./memoir/memhfixc.sty
-
-\ifHy@hyperfootnotes
- \def\@footnotemark{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}%
- \m@mmf@check% <--- added
- \nobreak\fi
- \stepcounter{Hfootnote}%
- \global\let\Hy@saved@currentHref\@currentHref
- \hyper@makecurrent{Hfootnote}%
- \global\let\Hy@footnote@currentHref\@currentHref
- \global\let\@currentHref\Hy@saved@currentHref
- \hyper@linkstart{link}{\Hy@footnote@currentHref}%
- \@makefnmark
- \hyper@linkend
- \m@mmf@prepare% <--- added
- \ifhmode\spacefactor\@x@sf\fi
- \relax
- }%
-\fi
-
-
-% caption3.sty
-
-% this is altering the top-level when inside a float
-
-
-% ./koma-script/scrlttr2.cls
-
-\newcommand*{\scr@footnotemark}{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\FN@mf@check\nobreak\fi
- \@makefnmark
- \csname FN@mf@prepare\endcsname
- \ifhmode\spacefactor\@x@sf\fi
- \relax}
-
-% tested against this ...
-
-\newcommand*{\scr@saved@footnotemark}{%
- \leavevmode
- \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
- \@makefnmark
- \ifhmode\spacefactor\@x@sf\fi
- \relax}
-
-
-% ./chextras/chextras.sty
-
-\ifstd@notes\else
- \let\std@footnotemark\@footnotemark
- \def\alt@footnotemark{\unskip\thinspace\std@footnotemark}
- \let\@footnotemark\alt@footnotemark
-
-% footmisx.sty
-
- \newcommand*\@footmisxnotemark{%
- \leavevmode
- \ifhmode
- \edef\@x@sf{\the\spacefactor}%
- \FN@mf@check
- \nobreak
- \fi
- \@footmicx@makefnmark
- \ifFN@pp@towrite
- \FN@pp@writetemp
- \FN@pp@towritefalse
- \fi
- \FN@mf@prepare
- \ifhmode\spacefactor\@x@sf\fi
- \relax
- }
-
-
-```
diff --git a/macros/latex/required/latex-lab/usage-of-@footnotetext.md b/macros/latex/required/latex-lab/usage-of-@footnotetext.md
deleted file mode 100644
index deda69fcd8..0000000000
--- a/macros/latex/required/latex-lab/usage-of-@footnotetext.md
+++ /dev/null
@@ -1,848 +0,0 @@
-# Packages that alter \@footnotetext ...
-
-Scan of TeXlive 2022 for checking ... may not be longer accurate and may contain a few false positives
-
-```
-
-% ./bibarts/bibarts.sty
-
-\let\ba@footnotetext=\@footnotetext
-\long\def\@footnotetext#1{\ba@footnotetext{%
- \global\let\thisto@ba=-%
- \global\let\thisti@ba=-%
- \global\let\thisp@ba=-%
- \global\let\thisvol@ba=-%
- \global\let\thiss@ba=-%
- \global\let\thisn@ba=-%
- \global\let\pos@ba=0%
- \kern 0.1em\nulskip@ba{\@footnotetrue\ignorespaces
- #1\nulskip@ba\ba@textmode}\global\let\lastto@ba=\thisto@ba
- \global\let\lastti@ba=\thisti@ba
- \global\let\lastp@ba=\thisp@ba
- \global\let\lastvol@ba=\thisvol@ba
- \global\let\lasts@ba=\thiss@ba
- \global\let\lastn@ba=\thisn@ba}}%
-
-
-% ./fnbreak/fnbreak.sty
-
- \let\fnb@orig@footnotetext\@footnotetext
- \long\def\@footnotetext#1{\fnb@orig@footnotetext{\fnb@fnstart#1\fnb@fnend}}%
-
-
-% ./revtex4-1/revtex4-1.cls ./revtex/ltxutil.sty ./revtex/revtex4-2.cls ...
-
-\long\def\@footnotetext{%
- \insert\footins\bgroup
- \make@footnotetext
-}%
-\long\def\@mpfootnotetext{%
- \minipagefootnote@pick
- \make@footnotetext
-}%
-\long\def\make@footnotetext#1{%
- \set@footnotefont
- \set@footnotewidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@\@mpfn\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1%
- \@finalstrut\strutbox\vadjust{\vskip\z@skip}%
- }%
- \color@endgroup
- \minipagefootnote@drop
-}%
-
-
-% ./nrc/nrc1.cls ./nrc/nrc2.cls
-
-% this is missing the \par at the end and \@currentcounter
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \reset@font\smallt
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
- }%
- \color@endgroup
- }%
-}%
-
-%-------------------------------------
-
-% ./bigfoot/bigfoot.sty
-
- \def\@footnotetext{\Footnotetextdefault{}}%
-
-%-------------------------------------
-
-
-% ./uafthesis/uafthesis.cls
-
-% this is missing the \par at the end and \@currentcounter
-
-%% this little gem provides for single-spaced footnotes
-\long\def\@footnotetext#1{\insert\footins{%
- \ssp
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-%-------------------------------------
-
-
-
-% ./resphilosophica/resphilosophica.cls
-
-% I wonder if this \, is really intended below ...
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \normalfont\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep \splitmaxdepth \dp\strutbox
- \floatingpenalty\@MM \hsize\columnwidth
- \@parboxrestore \parindent\normalparindent \sloppy
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark}%
- \@makefntext{%
- \,\rule\z@\footnotesep\ignorespaces#1\unskip\strut\par}}}
-
-%-------------------------------------
-
-
-
-% ./setspace/setspace.sty
-
-% this is missing the \par at the end and \@currentcounter
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
-% GT: Next line added. Hook desired here!
- \def\baselinestretch {\setspace@singlespace}%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
-
-%-------------------------------------
-
-
-
-% ./linguex/linguex.sty
-
-
-\let\predefinedfootnotetext=\@footnotetext
-\long\def\@footnotetext#1{\@noftnotefalse\predefinedfootnotetext{#1}%
- \@noftnotetrue}
-
-
-%-------------------------------------
-
-
-% ./fnpara/fnpara.sty
-
-\long\def\@footnotetext#1{\insert\footins{%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \setbox0=\hbox{%
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
- \penalty -10
- \hskip\footglue
- }%
- }%
- \dp0=0pt \ht0=\fudgefactor\wd0 \box0
- \color@endgroup}}
-
-%-------------------------------------
-
-
-% ./footmisc/footmisc.sty (para option)
-
-% this is missing the \par at the end and \@currentcounter
-
- \long\def\FN@footnotetext#1{%
- \insert\footins{%
- \ifFN@setspace
- \let\baselinestretch\FN@baselinestretch
- \fi
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox
- \floatingpenalty\@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
- \color@begingroup
- \setbox\FN@tempboxa\hbox{%
- \@makefntext{\ignorespaces#1\strut
- \penalty-10\relax
- \hskip\footglue
- }% end of \@makefntext parameter
- }% end of \hbox
- \dp\FN@tempboxa\z@
- \ht\FN@tempboxa\dimexpr\wd\FN@tempboxa *%
- \footnotebaselineskip / \columnwidth\relax
- \box\FN@tempboxa
- \color@endgroup
- }%
- \FN@mf@prepare
- }
-
-%-------------------------------------
-
-
-% ./footmisc/footmisc.sty (normal)
-
-% this is missing the \par at the end and \@currentcounter
-
- \long\def\FN@footnotetext#1{%
- \insert\footins{%
- \ifFN@setspace
- \let\baselinestretch\FN@baselinestretch
- \fi
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox
- \floatingpenalty\@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep
- \ignorespaces#1\@finalstrut\strutbox
- }%
- \color@endgroup
- }%
- \FN@mf@prepare
- }%
-
-
-
-%-------------------------------------
-
-
-% ./footmisc/footmisc.sty (side option)
-
- \long\def\FN@footnotetext#1{%
- \marginpar{%
- \ifFN@setspace
- \let\baselinestretch\FN@baselinestretch
- \fi
- \reset@font\footnotesize
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \ignorespaces#1%
- }%
- \color@endgroup
- }%
- \FN@mf@prepare
- }%
-
-
-
-%-------------------------------------
-
-
-
-% ./bxjscls/bxjsarticle.cls ./bxjscls/bxjsbook.cls ...
-
-\long\def\@footnotetext{%
- \insert\footins\bgroup
- \normalfont\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces}%
- \futurelet\jsc@next\jsc@fo@t}
-\def\jsc@fo@t{\ifcat\bgroup\noexpand\jsc@next \let\jsc@next\jsc@f@@t
- \else \let\jsc@next\jsc@f@t\fi \jsc@next}
-\def\jsc@f@@t{\bgroup\aftergroup\jsc@@foot\let\jsc@next}
-\def\jsc@f@t#1{#1\jsc@@foot}
-\def\jsc@@foot{\@finalstrut\strutbox\color@endgroup\egroup
- \ifx\pltx@foot@penalty\@undefined\else
- \ifhmode\null\fi
- \ifnum\pltx@foot@penalty=\z@\else
- \penalty\pltx@foot@penalty
- \pltx@foot@penalty\z@
- \fi
- \fi}
-
-
-not covered so far supports \footnote{ catcode changes ...} but also
-\foonote A --- the latter is questionable I would say
-
-
-%-------------------------------------
-
-
-% ./fn2end/fn2end.sty
-
-obsolete I guess, ignored in evaluation
-
-
-%-------------------------------------
-
-
-% ./hyperref/hyperref.sty
-
- \long\def\@footnotetext#1{%
- \H@@footnotetext{%
- \ifHy@nesting
- \expandafter\ltx@firstoftwo
- \else
- \expandafter\ltx@secondoftwo
- \fi
- {%
- \expandafter\hyper@@anchor\expandafter{%
- \Hy@footnote@currentHref
- }{\ignorespaces #1}%
- }{%
- \Hy@raisedlink{%
- \expandafter\hyper@@anchor\expandafter{%
- \Hy@footnote@currentHref
- }{\relax}%
- }%
- \let\@currentHref\Hy@footnote@currentHref
- \let\@currentlabelname\@empty
- \ignorespaces #1%
- }%
- }%
- }%
-
-
-Handling of anchors (in nested context) I guess. This needs to be
-married with the anchor setting that the tagging currently does and
-the latter improved/adjusted
-
-
-%-------------------------------------
-
-% ./biblatex-gb7714-2015/gb7714-2015ms.bbx ./biblatex-gb7714-2015/gb7714-2015mx.bbx ...
-
- \long\def\@footnotetext##1{\insert\footins{%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \leftskip \footbibmargin%增加的左侧缩进
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces##1\@finalstrut\strutbox%
- }%
- \color@endgroup}}%
-
-fits the structure
-%-------------------------------------
-
-
-% ./amscls/amsbook.cls ./amscls/amsproc.cls ./amscls/amsart.cls ...
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \normalfont\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep \splitmaxdepth \dp\strutbox
- \floatingpenalty\@MM \hsize\columnwidth
- \@parboxrestore \parindent\normalparindent \sloppy
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark}%
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\unskip\strut\par}}}
-
-fits the structure
-%-------------------------------------
-
-
-% ./umich-thesis/umich-thesis.cls
-
-% change LaTeX's footnotes to get vertical spacing correct
-\skip\footins \baselinestretch2\skip\footins
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \def\baselinestretch {\setspace@singlespace}%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \vskip 1.2\baselineskip
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
-
-fits the structure
-%-------------------------------------
-
-
-% ./nostarch/nostarch.cls
-
-\long\def\@footnotetext#1{\insert\footins{%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@{13.5pt}\ignorespaces#1}%
- \color@endgroup}}%
-
-fixed \footsep, probably very old
-fits the structure
-%-------------------------------------
-
-
-
-% ./coursepaper/coursepaper.cls
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \def\baselinestretch {1}%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
-
-fits the structure
-%-------------------------------------
-
-
-
-% ./ucthesis/ucthesis.cls
-
-% Single-space footnotes.
-\long\def\@footnotetext#1{\insert\footins{\ssp\reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-fits the structure
-%-------------------------------------
-
-
-
-% ./jura/jura.cls
-
-\long\def\@footnotetext#1{\insert\footins{%
- \linespread{\J@FootnoteSpread}\reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}%
-
-fits the structure
-%-------------------------------------
-
-
-% ./asaetr/asaesub.sty
-
-2.09
-
-%-------------------------------------
-
-
-% ./lineno/fnlineno.sty
-
-%% |\FNLN@@text| stores the `\@footnotetext' found,
-%% we might check if it is `\FNLN@ltx@fntext' ... %% TODO
-\let\FNLN@@text\@footnotetext
-\def\@footnotetext{%
- \ifLineNumbers \expandafter \FNLN@text
- \else \expandafter \FNLN@@text
- \fi}
-
-
-\def \FNLN@text {% %% 2010/12/31 arg read later
- \vadjust{\penalty-\FNLN@M@swap@codepen}%
-%% Standard \LaTeX's `\@footnotetext' expands `\@thefnmark'
-%% to produce the footnote mark at the page bottom,
-%% right after it has been determined for the mark
-%% in the main text. \emph{Here} the footnote text
-%% will be typeset only when \emph{other} footnote marks
-%% may have been formed for typesetting the main text
-%% paragraph before.
-%% %%% (TODO clearer wording)
-%% In the \strong{footnote list}
-%% macro |\FNLN@list|, the (\dqtd{`&\protect'ed})
-%% \emph{current} expansion <mark> of `\@thefnmark'
-%% is stored as an item preceding the footnote text
-%% <text>. One footnote entry in `\FNLN@list'
-%% thus has the form \lq`<mark>\@lt<text>\@lt'\rq.
-%% \LaTeX's internal `\g@addto@macro' is used to \emph{append}
-%% an entry to the list (at the right). The OTR will later
-%% take the entries from the left of the list.
-%%
-%% The argument of the auxiliary/temporary `\@tempa'
-%% will contain the footnote text and thus must be able to
-%% carry `\par' tokens. We therefore need a `\long' version of
-%% `\protected@edef':
- \let\@@protect\protect
- \let\protect\@unexpandable@protect
- \afterassignment\restore@protect
- \long \edef \@tempa ##1{%
- \noexpand\g@addto@macro \noexpand\FNLN@list {%
- \@thefnmark \noexpand\@lt ##1\noexpand \@lt}}%
-%% ... issuing
-%% \lq`\g@addto@macro\FNLN@list{<mark>\elt<text>\@lt}'\rq\ ...
- \@tempa %% reads arg
-}
-%% Here we initialize |\FNLN@list|:
-\let\FNLN@list\@empty
-
-
-
-probably continues working but needs separate checking
-
-%-------------------------------------
-
-
-
-% ./jurabib/jurabib.sty
-
- \long\def\@footnotetext#1{%
- \Orig@tabularx@footnotetext{%
- \jb@fntrue
- #1%
- \setcounter{jb@cites@in@footnote}{0}%
- }%
- }%
-
- \let\jbsaved@footnotetext\@footnotetext
- \long\def\@footnotetext#1{%
- \begingroup
- \jb@fntrue
- \jbsaved@footnotetext{#1}%
- \setcounter{jb@cites@in@footnote}{0}%
- \endgroup
- }%
-
-
-first is table notes, second
-fits the structure
-%-------------------------------------
-
-
-
-% ./york-thesis/york-thesis.cls
-
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \def\baselinestretch {1}%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark}%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
-
-fits the structure
-%-------------------------------------
-
-
-% ./ucdavisthesis/ucdavisthesis.cls
-
-\long\def\@footnotetext#1{\insert\footins{\renewcommand\baselinestretch{1}
- \footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}\renewcommand\baselinestretch{\@spacing}}}
-
-looks old ...
-fits the structure
-%-------------------------------------
-
-
-% ./ledmac/afoot.sty
-
-fairly old and buggy in some aspects
-
-%%% Make the LaTeX \cs{footnote} catcode-safe, like in Plain TeX.
-
-\def \@footnotetext {% new, do not yet read footnote text
- \insert \footins \bgroup
- \ifx \footglue \undefined % prepare normal footnote
- \interlinepenalty \interfootnotelinepenalty \floatingpenalty \@MM
- \splittopskip \footnotesep \splitmaxdepth \dp \strutbox
- \else
- \global\long\def \@makefntext ##1{{$^{\@thefnmark }$}##1\nobreak }%
- \setbox0=\hbox \bgroup % fnpara.sty is present
- \floatingpenalty=20000 \footnotesize
- \fi
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
- \a@fntext }
-
-
-%-------------------------------------
-
-
-% ./toptesi/toptesi.sty
-
-
-\long\def\@footnotetext#1{\insert\footins{\linespread{1}\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth \@parboxrestore
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
- \@makefntext{\rule{\z@}{\footnotesep}\ignorespaces#1\strut}}}
-
-
-fits the structure
-%-------------------------------------
-
-
-% ./gb4e/gb4e.sty
-
-\let\@gbsaved@footnotetext=\@footnotetext
-\long\def\@footnotetext#1{%
- \@noftnotefalse\setcounter{fnx}{0}%
- \@gbsaved@footnotetext{#1}%
- \@noftnotetrue}
-
-fits the structure
-%-------------------------------------
-
-
-
-% ./koma-script/scrlttr2.cls ./koma-script/scrextend.sty ./koma-script/scrreprt.cls ...
-
-same bug as footmisc: the @prepare is in the wrong place
-
-fits the structure
-%-------------------------------------
-
-
-
-% ./tabu/tabu.sty
-
-not checked what that does
-
-
-%-------------------------------------
-
-
-% ./uwthesis/uwthesis.cls
-
-does chapter notes -- ignore for now
-
-%-------------------------------------
-
-
-% ./tools/multicol.sty
-
-\long\def\mult@footnotetext#1{\begingroup
- \columnwidth\textwidth
- \orig@footnotetext{#1}\endgroup}
-
-
-fits the structure, but need to think what makes sense here as this a
-temporary redefinition for the environment only
-
-%-------------------------------------
-
-
-% ./fancyvrb/fancyvrb.sty
-
-\long\def\V@footnotetext{%
- \afterassignment\V@@footnotetext
- \let\@tempa}
-\def\V@@footnotetext{%
- \insert\footins\bgroup
- \csname reset@font\endcsname
- \footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth\dp\strutbox
- \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \def\@currentcounter{footnote}%
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}%
- \@makefntext{}%
- \rule{\z@}{\footnotesep}%
- \bgroup
- \aftergroup\V@@@footnotetext
- \ignorespaces}
-\def\V@@@footnotetext{\strut\egroup}
-
-
-another one of the footnote commands that do not read they argument as an argument
-
-%-------------------------------------
-
-
-% ./savefnmark/savefnmark.sty
-
-obsolete
-
-%-------------------------------------
-
-
-% ./changebar/changebar.sty
-
-\let\ltx@footnotetext\@footnotetext
-\long\def\cb@footnotetext#1{%
- \cb@trace@stack{end footnote on page \the\c@page}%
- \cb@pop\cb@currentstack
- \ifnum\cb@topleft=\cb@nil
- \ltx@footnotetext{#1}%
- \else
- \cb@push\cb@currentstack
- \edef\cb@temp{\the\cb@curbarwd}%
- \ltx@footnotetext{\cb@start[\cb@temp]#1\cb@end}%
- \fi}
-\let\@footnotetext\cb@footnotetext
-
-
-% ./eledmac/eledmac.sty
-
-\apptocmd{\@footnotetext}{\m@mmf@prepare}{}{}
-\pretocmd{\@footnotetext}{%
- \ifnumberedpar@
- \edtext{}{\l@dbfnote{#1}}%
- \else
- }{}{}
-\apptocmd{\@footnotetext}{\fi}{}{}%
-
-
-% ./yafoot/dblfnote.sty
-
-\long\def\dfn@footnotetext#1{{\setbox\dfn@boxa\vbox{
- \let\insert\dfn@gobble
- \columnwidth\DFNcolumnwidth \hbadness\c@DFNsloppiness
- \def\@makefnmark{\smash{\dfn@makefnmark}}
- \dfn@latex@footnotetext{#1}\par \boxmaxdepth\dfn@fnmaxdp}%
- \dfn@dima\ht\dfn@boxa \advance\dfn@dima\dp\dfn@boxa
- \ifdim\dfn@dima>\z@\else
- \dfn@dima1sp\relax
- \setbox\dfn@boxa\vbox{\vbox to1sp{\unvbox\dfn@boxa\vfil}}\fi
- \global\setbox\dfn@ins\vbox{\boxmaxdepth\dfn@fnmaxdp
- \ifvoid\dfn@ins\else
- \unvbox\dfn@ins \allowbreak \nointerlineskip \fi
- \ifdfn@allowcbreak \unvbox \else \box \fi \dfn@boxa}%
- \setbox\dfn@boxa\copy\dfn@ins
- \dfn@split{.5\ht\dfn@boxa}\dfn@boxa\dfn@boxb\dfn@fnmaxdp\footnotesep
- \advance\@tempdima\@tempdimb \@tempdimb\@tempdima
- \advance\@tempdima-\dfn@fnht \global\dfn@fnht\@tempdimb
- \insert\footins{\floatingpenalty\@MM \vbox to\@tempdima{}}%
- \xdef\dfn@list{\dfn@list\@elt{\number\dfn@dima}{\number\@tempdima}}}}
-\let\dfn@latex@footnotetext\@footnotetext
-\let\@footnotetext\dfn@footnotetext
-
-
-% ./ftnxtra/ftnxtra.sty
-
-not checked what this does
-
-
-% ./acmart/acmart.cls
-
-\if@ACM@sigchiamode
-\long\def\@footnotetext#1{\marginpar{%
- \reset@font\small
- \interlinepenalty\interfootnotelinepenalty
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}%
-\fi
-
-
-% ./memoir/memoir.cls
-
- this needs some further analysis
-
-```
diff --git a/macros/latex/required/latex-lab/usage-of-@makefntext.md b/macros/latex/required/latex-lab/usage-of-@makefntext.md
deleted file mode 100644
index d7cb0a9b92..0000000000
--- a/macros/latex/required/latex-lab/usage-of-@makefntext.md
+++ /dev/null
@@ -1,1751 +0,0 @@
-# Packages that alter \@makefntext ...
-
-Scan of TeXlive 2022 for checking ... may not be longer accurate and may contain a few false positives
-
-```
-
-% ./footmisc/footmisc.sty
-
-% latex def (used with para option)
-
-
-
- \long\def\@makefntext#1{%
- \ifFN@hangfoot
- \bgroup
- \setbox\@tempboxa\hbox{%
- \ifdim\footnotemargin>0pt
- \hb@xt@\footnotemargin{\@makefnmark\hss}%
- \else
- \@makefnmark
- \fi
- }%
- \leftmargin\wd\@tempboxa
- \rightmargin\z@
- \linewidth \columnwidth
- \advance \linewidth -\leftmargin
- \parshape \@ne \leftmargin \linewidth
- \footnotesize
- \@setpar{{\@@par}}%
- \leavevmode
- \llap{\box\@tempboxa}%
- \parskip\hangfootparskip\relax
- \parindent\hangfootparindent\relax
- \else
- \parindent1em
- \noindent
- \ifdim\footnotemargin>\z@
- \hb@xt@ \footnotemargin{\hss\@makefnmark}%
- \else
- \ifdim\footnotemargin=\z@
- \llap{\@makefnmark}%
- \else
- \llap{\hb@xt@ -\footnotemargin{\@makefnmark\hss}}%
- \fi
- \fi
- \fi
- \footnotelayout#1%
- \ifFN@hangfoot
- \par\egroup
- \fi
- }
-
-
-
-
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/aastex/aastex631.cls
----------------------------------------------------------
-\def\@makefntext#1{\hsize=\columnwidth\mbox{}\hspace*{3mm}\@makefnmark~#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/paper/paper.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
-...
- \long\def\@makefntext#1{%
- \leftskip 2.0em%
- \noindent
- \hbox to 0em{\hss\@makefnmark\kern 0.25em}#1}
-...
- \long\def\@makefntext#1{%
- \parindent 1em%
- \noindent
- \hbox to 1.8em{\hss\@makefnmark\kern 0.25em}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex4-1/aip4-1.rtx
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex4-1/aps4-1.rtx
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex4-1/revtex4-1.cls
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \parindent1em%
- \noindent
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/smflatex/smfart.cls
----------------------------------------------------------
-\def\@makefntext{\parindent0pt\sloppy\indent\@makefnmark}
-\hfuzz=1pt \vfuzz=\hfuzz
-\def\sloppy{\tolerance9999 \emergencystretch 3em\relax}
-\setcounter{topnumber}{4}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/smflatex/smfbook.cls
----------------------------------------------------------
-\def\@makefntext{\parindent0pt\sloppy\indent\@makefnmark}
-\hfuzz=1pt \vfuzz=\hfuzz
-\def\sloppy{\tolerance9999 \emergencystretch 3em\relax}
-\setcounter{topnumber}{4}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/koma-script/scrlttr2.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \raggedfootnote
- \leftskip #2
- \l@addto@macro\@trivlist{%
-...
- \long\def\@makefntext##1{%
- \setlength{\@tempdimc}{#3}%
- \def\@tempa{#1}\ifx\@tempa\@empty
- \@setpar{\@@par
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/koma-script/scrextend.sty
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \raggedfootnote
- \leftskip #2
- \l@addto@macro\@trivlist{%
-...
- \long\def\@makefntext##1{%
- \setlength{\@tempdimc}{#3}%
- \def\@tempa{#1}\ifx\@tempa\@empty
- \@setpar{\@@par
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/koma-script/scrreprt.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \raggedfootnote
- \leftskip #2
- \l@addto@macro\@trivlist{%
-...
- \long\def\@makefntext##1{%
- \setlength{\@tempdimc}{#3}%
- \def\@tempa{#1}\ifx\@tempa\@empty
- \@setpar{\@@par
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/koma-script/scrartcl.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \raggedfootnote
- \leftskip #2
- \l@addto@macro\@trivlist{%
-...
- \long\def\@makefntext##1{%
- \setlength{\@tempdimc}{#3}%
- \def\@tempa{#1}\ifx\@tempa\@empty
- \@setpar{\@@par
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/koma-script/scrbook.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \raggedfootnote
- \leftskip #2
- \l@addto@macro\@trivlist{%
-...
- \long\def\@makefntext##1{%
- \setlength{\@tempdimc}{#3}%
- \def\@tempa{#1}\ifx\@tempa\@empty
- \@setpar{\@@par
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/uafthesis/uafthesis.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \parindent 1em%
- \noindent
- \hbox to 1.8em{\hss\@makefnmark}#1}
-...
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/uwthesis/uwthesis.cls
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em\noindent \hangindent\parindent
- \def\baselinestretch{1.0}\normalfont
- \hb@xt@1.8em{\hss\@makefnmark}#1}
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/uwa-letterhead/uwa-letterhead.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \global\@topnum\z@
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/onrannual/onrannual.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/thuthesis/thuthesis.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \begingroup
- % 序号取消上标
- \def\@makefnmark{\hbox{\normalfont\@thefnmark}}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/gaceta/gaceta.cls
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/jpsj/jpsj2.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%\vskip2\p@
- \hangindent8\p@ \hangafter1 \noindent
- \hb@xt@1em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/gmutils/gmtypos.sty
----------------------------------------------------------
- \ampulexdef#1{\long\def\@makefntext}%
- \if@twocolumn{\gmu@ATfootnotes\if@twocolumn}% Ampulex redefinition
- % of \incs{maketitle} for \pk{mwcls}.
-}
-...
- \long\pdef\@makefntext##1{%
- \ifdefined\@parindent \parindent\@parindent
- \else \parindent 1em\relax
- \fi
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/resphilosophica/resphilosophica.cls
----------------------------------------------------------
-\def\@makefntext{\noindent\@makefnmark
- \if@enddoc\else
- \immediate\write\@mainaux%
- {\string\xdef\string\lastfootnote@page{\the\c@page}}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/tools/ftnright.sty
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em
- \noindent\hbox to 2em{}%
- \llap{\@thefnmark.\,\,}#1}
-\setlength{\skip\footins}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/elegantnote/elegantnote.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/rapport1.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
- \long\def\@makefntext{\@xmakefntext{%
- \@textsuperscript{\normalfont\@thefnmark}}}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/brief.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent\hb@xt@\leftmargini{\normalfont\@thefnmark.\hfil}#1}
-\newcommand*\dutchbrief{%
- \def\uwbrieftekst{Uw brief van}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/boek.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/rapport3.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
- \long\def\@makefntext{\@xmakefntext{%
- \@textsuperscript{\normalfont\@thefnmark}}}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/boek3.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/artikel2.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}%
- \leavevmode\hb@xt@.5\unitindent{%
- \@textsuperscript{\normalfont\@thefnmark}\hfil}##1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/artikel3.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
- \long\def\@makefntext{\@xmakefntext{%
- \@textsuperscript{\normalfont\@thefnmark}}}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ntgclass/artikel1.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent\z@
- \def\labelitemi{\textendash}\@revlabeltrue
- \leavevmode\@textsuperscript{\@thefnmark}\kern1em\relax ##1}
- \renewcommand*\thefootnote{\@fnsymbol\c@footnote}%
-...
- \long\def\@makefntext{\@xmakefntext{%
- \@textsuperscript{\normalfont\@thefnmark}}}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cdpbundl/letteracdp.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent
- \hangindent 5\p@
- \hb@xt@5\p@{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/courseoutline/courseoutline.cls
----------------------------------------------------------
-\setlength {\evensidemargin}{0.0in} % right margin 1.0 inch
-\setlength {\textwidth}{6.5in} % right margin 1.0 inch
-\setlength {\footnotesep}{14pt} % baseline skip for fn's 1st line
-\setlength {\headheight}{0.2in} % make room for header
-\setlength {\headsep}{0.2in} % modest header separation
-\setlength {\parskip}{0.2in} % set a paragraph skip
-\setlength {\parindent}{0.0in} % no para indents
-%
-% redefine the titlematter
-%
-\renewcommand\maketitle{\par
- \begingroup
- \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
- \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
- \global\@topnum\z@ % Prevents figures from going at top of page.
- \@maketitle
- \thispagestyle{empty}\@thanks
- \endgroup
- \setcounter{footnote}{0}%
- \global\let\thanks\relax
- \global\let\maketitle\relax
- \global\let\@maketitle\relax
- \global\let\@thanks\@empty
- %
- \global\let\university\@empty
- \global\let\department\@empty
- \global\let\coursename\@empty
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/stellenbosch/ustitle.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/chextras/chextras.sty
----------------------------------------------------------
- \long\def\@makefntext#1{\settowidth\@tempdima{.\kern\marginparsep}
- \parindent\z@
- \advance\parindent-\@tempdima
- \rule\z@\footnotesep
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/aiaa/aiaa-tc.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/oberdiek/enparen.sty
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \enparen@org@makefntext{%
- \enparenBeginContext{footnote}%
- ##1%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cleveref/cleveref.sty
----------------------------------------------------------
-\long\def\@makefntext{%
- \cref@constructprefix{footnote}{\cref@result}%
- \protected@edef\cref@currentlabel{%
- [footnote][\arabic{footnote}][\cref@result]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ametsoc/ametsoc.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\footnotesize\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1
- \vskip1sp
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/combine/combine.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/active-conf/active-conf.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent##1}%
- \@note
- \setcounter{footnote}{0}
- \global\def\note##1{%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/iso/isov2.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \parindent 1em%
- \noindent
- \hbox to 1.8em{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/elegantpaper/elegantpaper.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@0.1em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/fnpara/fnpara.sty
----------------------------------------------------------
-\long\def\@makefntext#1{%
-% \parindent 1em%
-% \noindent
-% \hb@xt@1.8em{\hss\@makefnmark}#1
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bxjscls/bxjsarticle.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\advance\leftskip 3\jsZw
- \parindent 1\jsZw\noindent
- \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bxjscls/bxjsbook.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\advance\leftskip 3\jsZw
- \parindent 1\jsZw\noindent
- \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bxjscls/bxjsslide.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\advance\leftskip 3\jsZw
- \parindent 1\jsZw\noindent
- \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bxjscls/bxjsreport.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\advance\leftskip 3\jsZw
- \parindent 1\jsZw\noindent
- \llap{\@textsuperscript{\normalfont\@thefnmark}\hskip0.3\jsZw}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/lettre/lettre.cls
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/titlefoot/titlefoot.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex/aip4-2.rtx
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex/aps4-2.rtx
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex/revtex4-2.cls
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \parindent1em%
- \noindent
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex/sor4-2.rtx
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex/aapm4-2.rtx
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \leftskip1em%
- \parindent1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/lni/lni.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
-\long\def\@makefntext#1{%
- \parindent \fnindent%
- \leftskip \fnindent% Einrückung vor der footnotemark
- \noindent
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/arabtex/arabrep.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{\hss\@makefnmark}##1}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/arabtex/arabrep1.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{\hss\@makefnmark}##1}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/llncs/llncs.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \parindent \fnindent%
- \leftskip \fnindent%
- \noindent
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/frankenstein/blkcntrl.sty
----------------------------------------------------------
-\defcommand\@makefntext [1] {%
- \setlength\parindent{\@ne em}%
- \noindent
- \hb@xt@ 1.8em{\hss\@makefnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/frankenstein/blkcntrl.stq
----------------------------------------------------------
-\defcommand\@makefntext [1] {%
- \setlength\parindent{\@ne em}%
- \noindent
- \hb@xt@ 1.8em{\hss\@makefnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cmpj/cmpj2.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cmpj/cmpj3.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cmpj/cmpj.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/pracjourn/pracjourn.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
-...
-\def\@makefntext#1{%
- \parindent 0em\relax
- \makebox[1.5em][l]{\normalfont\footnotesize\@thefnmark.}#1}
-\def\@ifx@empty#1{% Implicit #2#3
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/extsizes/extbook.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/extsizes/extletter.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent
- \hangindent 5\p@
- \hb@xt@5\p@{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/extsizes/extarticle.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/extsizes/extproc.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \twocolumn[\@maketitle]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/extsizes/extreport.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/h2020proposal/h2020proposal.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ms.bbx
----------------------------------------------------------
- \long\def\@makefntext##1{%增加了脚注标记与正文的间隔
- \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1}
-
- }
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015mx.bbx
----------------------------------------------------------
- \long\def\@makefntext##1{%增加了脚注标记与正文的间隔
- \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1}
-
- }
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015ay.bbx
----------------------------------------------------------
- \long\def\@makefntext##1{%增加了脚注标记与正文的间隔
- \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1}
-
- }
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/biblatex-gb7714-2015/gb7714-2015.bbx
----------------------------------------------------------
- \long\def\@makefntext##1{%增加了脚注标记与正文的间隔
- \parindent 1em\noindent \hb@xt@ 0em{\hss \@makefnmark\makebox[\footbiblabelsep]{}}##1}
-
- }
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/suftesi/suftesi.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/mwcls/mwrep.cls
----------------------------------------------------------
- \long\def\@makefntext##1{
- \parindent\@parindent
- \@textsuperscript{\normalfont\@thefnmark}\enspace##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/mwcls/mwart.cls
----------------------------------------------------------
- \long\def\@makefntext##1{
- \parindent\@parindent
- \@textsuperscript{\normalfont\@thefnmark}\enspace##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/mwcls/mwbk.cls
----------------------------------------------------------
- \long\def\@makefntext##1{
- \parindent\@parindent
- \@textsuperscript{\normalfont\@thefnmark}\enspace##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/tugboat/ltugboat.cls
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em\noindent\hb@xt@2em{}%
- \llap{\@makefnmark}\null$\mskip5mu$#1}
-
-%% \long\def\@makefntext#1{\parindent 1em
-...
- \def\@makefntext##1{##1}%
- \footnotetext{\noindent #1#2}%
- \endgroup
-}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ptptex/ptptex.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
-\parindent 1.5em\noindent \footnotesize %
-\hbox to 2.5em{\hss$^{\@thefnmark}$}\hskip3\p@#1}
-\gdef\@thanks{}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/aguplus/aguplus.sty
----------------------------------------------------------
- \long\def\@makefntext##1{##1}
- \footnotetext{{\parindent=1em\indent
- \let\@elt=\par\@titlenote}}
- \fi
-...
- \long\def\@makefntext##1{##1}
- \footnotetext{{\parindent=10pt\indent
- \parskip=6pt\let\@elt=\par\@titlenote}}
- \fi
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/aguplus/aguplus.cls
----------------------------------------------------------
- \long\def\@makefntext##1{##1}
- \footnotetext{{\parindent=1em\indent
- \let\@elt=\par\@titlenote}}
- \fi
-...
- \long\def\@makefntext##1{##1}
- \footnotetext{{\parindent=10pt\indent
- \parskip=6pt\let\@elt=\par\@titlenote}}
- \fi
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/protocol/protocol.cls
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/cje/cje.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%\parindent 1em
- \noindent
-% \hb@xt@1.8em{%
-% \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
-...
-\long\def\@makefntext#1{\raggedright\@setpar{\@@par\@tempdima \hsize
- \advance\@tempdima-\@footindent
- \parshape \@ne \@footindent \@tempdima}\par
- \noindent \hbox to \z@{\hss\@thefnmark\enskip}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/tufte-latex/tufte-common.def
----------------------------------------------------------
-\long\def\@makefntext#1{\@textsuperscript{\@tufte@sidenote@font\tiny\@thefnmark}\,\footnotelayout#1}
-
-% Set the in-text footnote mark in the same typeface as the body text itself.
-\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\footnotesize\@thefnmark}}}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/amscls/amsdtx.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
- \if@twocolumn
- \ifnum \col@number=\@ne
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/amscls/amsbook.cls
----------------------------------------------------------
-\def\@makefntext{\indent\@makefnmark}
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \normalfont\footnotesize
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/amscls/amsproc.cls
----------------------------------------------------------
-\def\@makefntext{\indent\@makefnmark}
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \normalfont\footnotesize
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/amscls/amsart.cls
----------------------------------------------------------
-\def\@makefntext{\indent\@makefnmark}
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \normalfont\footnotesize
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/quantumarticle/quantumarticle.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \ifbool{@twocolumn}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ltxmisc/iagproc.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \twocolumn[\@maketitle]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/acmart/acmart.cls
----------------------------------------------------------
-\def\@makefntext{\noindent\@makefnmark}
-\if@ACM@sigchiamode
-\long\def\@footnotetext#1{\marginpar{%
- \reset@font\small
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/memoir/memoir.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\makethanksmark ##1}
- \if@twocolumn
- \ifnum \col@number=\@ne
- \@maketitle
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/footnotebackref/footnotebackref.sty
----------------------------------------------------------
-% than redefine the \@makefntext and \@makefnmark
-% The \@makefnmark macro is redefined in the space of
-% the \@makefntext macro
-% So the footnote numbers in the main text are not influenced
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bangtex/barticle.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bangtex/bletter.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent
- \hangindent 5\p@
- \hb@xt@5\p@{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/bangtex/bbook.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\sbng\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/elbioimp/elbioimp.cls
----------------------------------------------------------
- \def \@makefntext ##1{\noindent
- \small \@thefnmark. \it ##1}
- \renewcommand{\thempfootnote}%
- {\arabic{mpfootnote}}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ebsthesis/ebsthesis.cls
----------------------------------------------------------
- \long\def\@makefntext#1{%
- \bgroup
- \setbox\@tempboxa\hbox{%
- \ifdim\footnotemargin>0pt
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/coursepaper/coursepaper.cls
----------------------------------------------------------
- \setlength {\evensidemargin}{0.5in} % right margin 1.5 inch
- \setlength {\textwidth}{5.5in} % right margin 1.5 inch
- \spacing{2} % double spacing for final
- \renewenvironment{quote} % redef as single spaced
- {\oldquote\spacing{1}}
- {\oldendquote\spacing{2}}
- \renewenvironment{quotation} % redef as single spaced
- {\oldquotation\spacing{1}}
- {\oldendquotation\spacing{2}}
- \renewenvironment{verse} % redef as single spaced
- {\oldquotation\spacing{1}}
- {\oldendquotation\spacing{2}}
-}
-\setlength {\footnotesep}{14pt} % baseline skip for fn's 1st line
-\setlength {\headheight}{0.2in} % make room for header
-\setlength {\headsep}{0.2in} % modest header separation
-\setlength {\parskip}{0.2in} % set a paragraph skip
-\setlength {\parindent}{0.2in} % I hate unindented first lines
-\renewenvironment{bibliography}[1] % automatically enter toc line
- {\addcontentsline{toc}{chapter}{Bibliography}\oldbibliography {#1}}
- {\oldendbibliography}
-%
-% Make footnotes single spaced
-%
-% code shamelessly stolen from setspace.sty
-% written by Geoffrey Tobin <G.Tobin@latrobe.edu.au>
-%
-\long\def\@footnotetext#1{%
- \insert\footins{%
- \def\baselinestretch {1}%
- \reset@font\footnotesize
- \interlinepenalty\interfootnotelinepenalty
- \splittopskip\footnotesep
- \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
- \hsize\columnwidth
- \@parboxrestore
- \protected@edef\@currentlabel{%
- \csname p@footnote\endcsname\@thefnmark
- }%
- \color@begingroup
- \@makefntext{%
- \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
- \color@endgroup}}
-%
-% redefine the titlematter
-%
-\renewcommand\maketitle{\par
- \begingroup
- \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
- \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
- \global\@topnum\z@ % Prevents figures from going at top of page.
- \@maketitle
- \thispagestyle{empty}\@thanks
- \endgroup
- \setcounter{footnote}{0}%
- \global\let\thanks\relax
- \global\let\maketitle\relax
- \global\let\@maketitle\relax
- \global\let\@thanks\@empty
- \global\let\@author\@empty
- \global\let\@date\@empty
- \global\let\@title\@empty
- %
- \global\let\@studentnumber\@empty
- \global\let\@coursenumber\@empty
- \global\let\@coursename\@empty
- \global\let\@coursesection\@empty
- \global\let\@instructor\@empty
- \global\let\@college\@empty
- %
- \global\let\title\relax
- \global\let\author\relax
- \global\let\date\relax
- \global\let\and\relax
-}
-%
-\def\@maketitle{%
- \newpage
- \null
- \vskip 2em%
- \begin{flushleft}%
- \begin{spacing}{1}%
- {\sffamily \LARGE \@title \par}%
- \vskip 2em%
- {\sffamily \large\lineskip .75em\@author}\\%
- \sffamily \@studentnumber%
- \vskip 1em%
- \sffamily \@date
- \vskip 3em%
- \sffamily \@college\\%
- \sffamily \@coursenumber\hskip 6pt\@coursesection\hskip 6pt%
- \@coursename\\%
- \sffamily For: \@instructor%
- \par%
- \end{spacing}%
- \end{flushleft}\hrule\vskip 1em\par
- \par
- \vskip 1.5em}
-%
-% make section titles less obnoxious
-%
-\renewcommand\section{\@startsection {section}{1}{\z@}%
- {-3.5ex \@plus -1ex \@minus -.2ex}%
- {2.3ex \@plus.2ex}%
- {\normalfont\large\bfseries}}
-\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {-3.25ex\@plus -1ex \@minus -.2ex}%
- {1.5ex \@plus .2ex}%
- {\normalfont\normalsize\bfseries}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
- {-3.25ex\@plus -1ex \@minus -.2ex}%
- {1.5ex \@plus .2ex}%
- {\normalfont\normalsize\bfseries}}
-\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
- {3.25ex \@plus1ex \@minus.2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}}
-\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
- {3.25ex \@plus1ex \@minus .2ex}%
- {-1em}%
- {\normalfont\normalsize\bfseries}}
-%
-% Set up headers
-%
-\def\ps@myheadings{%
- \let\@oddfoot\@empty\let\@evenfoot\@empty
- \def\@evenhead{\thepage -- \slshape\leftmark\hfil}%
- \def\@oddhead{\hfil{\slshape\rightmark} -- \thepage}%
- \let\@mkboth\@gobbletwo
- \let\sectionmark\@gobble
- \let\subsectionmark\@gobble
- }
-%
-% Position the abstract depending on presence of titlepage
-%
-\if@titlepage
- \renewenvironment{abstract}{%
- \titlepage
- \null\vfil
- \@beginparpenalty\@lowpenalty
- \begin{center}%
- \bfseries \abstractname
- \@endparpenalty\@M
- \end{center}}%
- {\par\vfil\null\endtitlepage}
-\fi
-%
-% change some names
-%
-\renewcommand\contentsname{Table of Contents}
-\renewcommand\refname{Bibliography}
-%
-% \epigraph{text}{byline}
-%
-\newcommand{\epigraph}[2]{\begin{flushright}\begin{minipage}{4in}%
- \spacing{1}#1\begin{flushright}#2\end{flushright}%
- \hrule\end{minipage}\vskip 12pt\end{flushright}}
-%
-%% End of file `coursepaper.cls'.
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/kotex-utf/contrib/dhucsfn.sty
----------------------------------------------------------
- \long\def\@makefntext#1{
- \settowidth{\foot@parindent}{\fn@markstyle}
- \@setpar{\@@par\@tempdima \hsize
- \advance\@tempdima-\foot@parindent
-...
- \long\def\@makefntext#1{%
- \hbox{\fn@markstyle\hskip\footnumbersep #1}
- }%
-}
-...
- \long\def\@makefntext#1{%
- \fn@markstyle\ifdim\footnumbersep=\z@\else~\fi #1
- }%
-}
-...
- \long\def\@makefntext#1{
- \settowidth{\foot@parindent}{\reset@font 각주}
- \settowidth{\footnumbersep}{\reset@font 주}
- \divide\footnumbersep by2
-...
- \long\def\@makefntext#1{
- \settowidth{\leftskip}{\reset@font 각주}
- \settowidth{\foot@parindent}{\fn@markstyle}
- \settowidth{\footnumbersep}{\reset@font 주}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ucthesis/ucthesis.cls
----------------------------------------------------------
-% \long\def\@makefntext#1{\@setpar{\@@par\@tempdima \hsize
-% \advance\@tempdima-10pt\parshape \@ne 10pt \@tempdima}\par
-% \parindent 1em\noindent
-% \hbox to \z@{\hss$\m@th^{\@thefnmark}$}#1}
-...
-\long\def\@makefntext#1{\parindent 1em\noindent
- \hbox to 1.8em{\hss$\m@th^{\@thefnmark}$}#1}
-
-% \@makefnmark : A macro to generate the footnote marker that goes
-...
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/apa/apa.cls
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont{\tiny\@thefnmark}\hspace{1.5pt}}}#1}%
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/uestcthesis/uestcthesis.cls
----------------------------------------------------------
-\def\@makefntext #1{\ifFN@hangfoot \bgroup \setbox \@tempboxa \hbox {\ifdim
-\footnotemargin >0pt \hb@xt@ \footnotemargin {\hbox { \normalfont \@thefnmark}
-\hss }\else \hbox { \normalfont \@thefnmark} \fi }\leftmargin \wd \@tempboxa
-\rightmargin \z@ \linewidth \columnwidth \advance \linewidth -\leftmargin
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/gmdoc/gmdoc.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn \twocolumn [\@maketitle ]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/titling/titling.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\makethanksmark ##1}
- \null\vfil
- \vskip 60\p@
- \vspace*{\droptitle}
-...
- \long\def\@makefntext##1{\makethanksmark ##1}
- \if@twocolumn
- \ifnum \col@number=\@ne
- \@maketitle
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/chletter/chletter.cls
----------------------------------------------------------
-\long\def\@makefntext#1{\noindent\hb@xt@\z@{\hss\@makefnmark}#1}
-\def\fromname{\@author}
-\def\fromsig{\@author}
-\let\fromlocation\@empty
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/jurarsp/jurarsp.sty
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \rsp@fntrue%
- \@setpar{\@@par
- \@tempdima = \hsize
-...
-/usr/local/texlive/2021/texmf-dist/tex/latex/kluwer/klunote.sty
----------------------------------------------------------
-% \long\def\@makefntext#1{\parindent 1em\noindent
-% \hbox to 1.5em{\hss$^{\@thefnmark}$}\hskip0.5em\footnotesize#1}
-% \def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}}
-% SK: reimplemented with \textsuperscript, following LaTeX format
-...
-\long\def\@makefntext#1{\parindent 1em\noindent
- \hbox to 1.5em{\hss\textsuperscript{\@thefnmark}}%
- \hskip0.5em\footnotesize#1}
-\def\@makefnmark{\hbox{\textsuperscript{\@thefnmark}}}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/kluwer/kluwer.cls
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em\noindent
- \hbox to 1.5em{\hss\textsuperscript{\@thefnmark}}%
- \hskip0.5em\footnotesize#1}
-\def\@makefnmark{\hbox{\textsuperscript{\@thefnmark}}}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/asaetr/asaesub.sty
----------------------------------------------------------
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/asaetr/asaetr.sty
----------------------------------------------------------
-\long\def\@makefntext#1{\parindent 1em\noindent
- \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
-
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/refman/refrep.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
- \long\def\@makefntext##1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
-\long\def\@makefntext#1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/refman/refart.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
- \long\def\@makefntext##1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
-\long\def\@makefntext#1{%
- \@setpar{\@@par
- \@tempdima = \hsize
- \advance\@tempdima -1em
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/lwarp/lwarp-footnote.sty
----------------------------------------------------------
-\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~#1}
-
-\LWR@ProvidesPackagePass{footnote}[1997/01/28]
-
-...
-\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~{#1}}
-
-\def\spewnotes{%
- \endgroup%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/lwarp/lwarp.sty
----------------------------------------------------------
-\long\def\@makefntext#1{\textsuperscript{\@thefnmark}~{#1}}
-\def\@makefnmark{%
- \textsuperscript{\@thefnmark}%
-}
-...
-\long\def\@makefntext##1{%
-\textsuperscript{\@thefnmark}~%
-{##1}%
-}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/lwarp/lwarp-titling.sty
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \makethanksmark~%
- {##1}%
- }% \@makefntext
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/afthesis/afthesis.cls
----------------------------------------------------------
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}}}
-
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ijmart/ijmart.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\noindent\hangindent=2em\hangafter=1
- \hb@xt@2em{%
- \hss\@textsuperscript{\normalfont\footnotesize\@thefnmark\space}}##1}%
- \def\footnoterule{\kern-3pt\hrule width 2in\kern 2.6pt}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/oup-authoring-template/oup-authoring-template.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 3mm\noindent
- \if@traditional\if@small\@hangfrom{{\normalfont\@thefnmark}\enskip}\else\@textsuperscript{\normalfont\@thefnmark}\fi\else\@textsuperscript{\normalfont\@thefnmark}\fi
- ##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/akletter/akletter.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent
- \hangindent 5\p@
- \hb@xt@5\p@{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex4/aps.rtx
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \reset@font
- \footnotesize
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/revtex4/revtex4.cls
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\baselinestretch{1}%
- \reset@font\footnotesize
- \parindent 1em%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hitreport/hitreport.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \begingroup
- % 序号取消上标
- \def\@makefnmark{\hbox{\normalfont\@thefnmark}}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/footnotehyper/footnotehyper.sty
----------------------------------------------------------
- \def\FNH@prefntext{\@makefntext{}}%
- \iffootnotehyperwarn
- \PackageInfo{footnotehyper}%
- {Using the \string\@makefntext{} approach (see doc).\FNH@msgbk
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/basque-book/basque-book.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/dinbrief/dinbrief.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \noindent
- \hangindent 5pt%
- \hbox to 5pt{\hss $^{\@thefnmark}$}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/beamer/beamerbaseframecomponents.sty
----------------------------------------------------------
-\def\@makefntext#1{%
- \def\insertfootnotetext{#1}%
- \def\insertfootnotemark{\@makefnmark}%
- \usebeamertemplate***{footnote}}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ucdavisthesis/ucdavisthesis.cls
----------------------------------------------------------
- \edef\@currentlabel{\csname p@footnote\endcsname\@thefnmark}\@makefntext
- {\rule{\z@}{\footnotesep}\ignorespaces
- #1\strut}\renewcommand\baselinestretch{\@spacing}}}
-\ps@plain % 'plain' page style
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/computational-complexity/cclayout.sty
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/footmisx/footmisx.sty
----------------------------------------------------------
- \long\def\@makefntext#1{\leavevmode
- \@makefnmark\nobreak
- \hskip.5em\relax#1%
- }
-...
- \long\def\@makefntext#1{%
- \ifFN@hangfoot
- \bgroup
- \setbox\@tempboxa\hbox{%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/amsdtx.hyp
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/slides.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/book.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/ltxguide.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/ltnews.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/doc.hyp
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup
- \edef\@currenthyper{\hyper@current@fnmark}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/ftnright.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/letter.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/amsbook.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{\indent%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/ltxdoc.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/proc.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/amsart.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{\indent%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/amsproc.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{\indent%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/article.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hyper/report.hyp
----------------------------------------------------------
-\long\def\@makefntext#1{%
- \bgroup%
- \hyper@currentfnmark%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
- \long\def\@makefntext##1{%
- \hyper@currentfnmark%
- \bgroup%
- \edef\@currenthyper{\hyper@current@fnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/hitec/hitec.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \newpage
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/emulateapj/emulateapj.cls
----------------------------------------------------------
-\def\@makefntext#1{\mbox{}\hspace*{3mm}\@makefnmark~#1}
-
-\def\notetoeditor#1{}% % We do not need notes to editor in the preprint
-\def\placetable#1{}% % We do not need notes to editor in the preprint
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ledmac/afoot.sty
----------------------------------------------------------
- \long\def\@makefntext#1{{$^{\@thefnmark}$}#1\nobreak }
-\fi
-
-%%% Make the LaTeX \cs{footnote} catcode-safe, like in Plain TeX.
-...
- \global\long\def \@makefntext ##1{{$^{\@thefnmark }$}##1\nobreak }%
- \setbox0=\hbox \bgroup % fnpara.sty is present
- \floatingpenalty=20000 \footnotesize
- \fi
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/footmisc/footmisc.sty
----------------------------------------------------------
- \long\def\@makefntext#1{\leavevmode
- \@makefnmark\nobreak
- \hskip.5em\relax#1%
- }
-...
- \long\def\@makefntext#1{%
- \ifFN@hangfoot
- \bgroup
- \setbox\@tempboxa\hbox{%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/footmisc/footmisc-2011-06-06.sty
----------------------------------------------------------
- \long\def\@makefntext#1{\leavevmode
- \@makefnmark\nobreak
- \hskip.5em\relax#1%
- }
-...
- \long\def\@makefntext#1{%
- \ifFN@hangfoot
- \bgroup
- \setbox\@tempboxa\hbox{%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/book.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/slides.cls
----------------------------------------------------------
-\long\def\@makefntext#1{
- \noindent
- \hangindent 10\p@
- \hb@xt@10\p@{\hss\@makefnmark}#1}
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/doc.sty
----------------------------------------------------------
- \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
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/proc.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \twocolumn[\@maketitle]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/proc.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \twocolumn[\@maketitle]%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/doc-v3beta.sty
----------------------------------------------------------
- \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
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/article.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/base/report.cls
----------------------------------------------------------
- \long\def\@makefntext##1{\parindent 1em\noindent
- \hb@xt@1.8em{%
- \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
- \if@twocolumn
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/twoinone/2in1.sty
----------------------------------------------------------
-\long\def\@makefntext##1{\parindent 1em\noindent
-\hb@xt@1.8em{%
-\hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
-\@maketitle
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/ltxtools/ltxtools-review.sty
----------------------------------------------------------
- \long\def\@makefntext##1{\rule\z@\footnotesep\parindent1em\noindent
- \hb@xt@2em{\hss\@textsuperscript
- {\normalfont\textcolor{#1}{\@thefnmark}}}%
- \hspace{2\p@}\ignorespaces\textcolor{#1}{##1}%
-...
- \long\def\@makefntext##1{%
- \rule\z@\footnotesep\parindent1em\noindent
- \hb@xt@0em{\hss\@textsuperscript{\normalfont\color{#1}\@thefnmark}}%
- \hspace{2\p@}\color{#1}\ignorespaces##1%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/skeyval/skeyval-testclass.cls
----------------------------------------------------------
- \long\def\@makefntext##1{%
- \parindent1em\relax\noindent
- \hb@xt@1.8em{\hss\@textsuperscript{%
- \normalfont\skv@fnsymbol\@thefnmark}%
-...
----------------------------------------------------------
-/usr/local/texlive/2021/texmf-dist/tex/latex/newlfm/newlfm.cls
----------------------------------------------------------
-\long\def\@makefntext#1{%
-\noindent \hangindent 5\p@%
-\hb@xt@5\p@{\hss\@makefnmark}#1}%
-\renewcommand{\thefigure}{\@arabic\c@figure}%
-...
----------------------------------------------------------
-
-```
diff --git a/macros/latex/required/latex-lab/usage-of-kern-kern.md b/macros/latex/required/latex-lab/usage-of-kern-kern.md
deleted file mode 100644
index aac597db60..0000000000
--- a/macros/latex/required/latex-lab/usage-of-kern-kern.md
+++ /dev/null
@@ -1,88 +0,0 @@
-# Packages that use double \kern's
-
-Scan of TeXlive 2022 for checking ... may not be longer accurate and may contain a few false positives
-(definitely contains bogus entries right now)
-
-
-```
-
- \ifdim\lastkern>\z@\ifdim\lastkern<5sp\relax
-./bxjscls/bxjsja-minimal.def
-
-
-
- \ifdim\lastkern=-3sp \unkern
- \ifdim\lastkern=3sp \kern-3sp
- {\kern\MT@outer@kern\kern3sp\kern-3sp\relax}%
-./microtype/letterspace.sty
-
-
- \ifdim\lastkern=-3sp \unkern
- \ifdim\lastkern=3sp \kern-3sp
- {\kern\MT@outer@kern\kern3sp\kern-3sp\relax}%
-./microtype/microtype-pdftex.def
-
-
- \ifdim\lastkern=-3sp \unkern
- \ifdim\lastkern=3sp \kern-3sp
- {\kern\MT@outer@kern\kern3sp\kern-3sp\relax}%
-./microtype/microtype-luatex.def
-
-
-
-\providecommand*{\multiplefootnotemarker}{3sp}
-./eledmac/eledmac.sty
-
-
-
-\providecommand*{\multiplefootnotemarker}{3sp}
-./reledmac/reledmac.sty
-
-
-\edef\CJK@kern{\kern -2sp\kern 2sp}
-\edef\CJK@CJK{\kern -1sp\kern 1sp}
-./cjk/texinput/CJK.sty
-
-
-\edef\ruby@kern{\kern -5sp\kern 5sp}
-./cjk/texinput/ruby.sty
-
-
-% hyphenation between pinyin syllables. Values 1sp-3sp are already used
-\edef\py@sp{\kern -4sp\kern 4sp}
-./cjk/texinput/pinyin.sty
-
-
-\providecommand*{\multiplefootnotemarker}{3sp}
-./tufte-latex/tufte-common.def
-
-
-
-\newcommand*{\multiplefootnotemarker}{3sp}
-./memoir/memoir.cls
-
-
-\providecommand*{\multiplefootnotemarker}{3sp}
-./parnotes/parnotes.sty
-
-
-\providecommand*{\multiplefootnotemarker}{3sp}
-./lwarp/lwarp-footmisc.sty
-
-
- \bgroup \kern-3sp\kern3sp % kerns so I can test for beginning of list
-./examdesign/examdesign.cls
-
-
- \kern-1sp \kern1sp }
- \kern-2sp \kern2sp }
- \kern-3sp \kern3sp }
- \kern-4sp \kern4sp }
-./polyglossia/gloss-korean.ldf
-
-
-
-\NewDocumentCommand \@sidenotes@multisign { } {3sp}
-./sidenotes/sidenotes.sty
-
-```
diff --git a/macros/latex/required/tools/README.md b/macros/latex/required/tools/README.md
index 4778e9aca0..77ca1642ce 100644
--- a/macros/latex/required/tools/README.md
+++ b/macros/latex/required/tools/README.md
@@ -1,7 +1,7 @@
The LaTeX `tools` bundle
========================
-Release 2023-06-01
+Release 2023-11-01b
Overview
--------
@@ -51,4 +51,4 @@ of the package.
-----
-<p>Copyright (C) 1993-2022 The LaTeX Project <br />
+<p>Copyright (C) 1993-2023 The LaTeX Project <br />
diff --git a/macros/latex/required/tools/afterpage.dtx b/macros/latex/required/tools/afterpage.dtx
index b94a85d26d..518b70761d 100644
--- a/macros/latex/required/tools/afterpage.dtx
+++ b/macros/latex/required/tools/afterpage.dtx
@@ -25,7 +25,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{afterpage}
-%<package> [2014/10/28 v1.08 After-Page Package (DPC)]
+%<package> [2023/07/04 v1.08 After-Page Package (DPC)]
%
%<*driver>
\documentclass{ltxdoc}
@@ -199,7 +199,7 @@
\global\setbox\@ne\lastbox}%
% \end{macrocode}
% If the text that is saved in |\AP@partial| had footnotes, we'd
-% better grab them as well otherwise they may come out on a page
+% better grab them as well, otherwise they may come out on a page
% with the `afterpage' text, before the page that has the
% footnote mark! (Added at v1.08.)
% \begin{macrocode}
@@ -218,7 +218,7 @@
% \end{macrocode}
%
% Restore the |\everydisplay| register. |\ignorespaces| prevents a space
-% or newline after |$$| creating rogue a indentation or paragraph.
+% or newline after |$$| creating a rogue indentation or paragraph.
% \begin{macrocode}
\def\AP@ed{\everydisplay\expandafter{\the\toks@}\ignorespaces}
% \end{macrocode}
@@ -264,7 +264,7 @@
% `afterpage' commands, so just add the new commands to the end of the
% list. Otherwise save the commands in |\AP@|. (within a local group),
% and switch the output routine. (The new output routine just calls the
-% old one if it is invoked by a \LaTeX{} float.
+% old one if it is invoked by a \LaTeX{} float.)
% \begin{macrocode}
\long\def\afterpage#1{%
\ifx\AP@\relax
@@ -291,7 +291,7 @@
\global\output\expandafter{\the\AP@output}%
\AP@clearpage
% \end{macrocode}
-% At this point (since v1.08) Need to clear |\AP@| \emph{before}
+% At this point (since v1.08) need to clear |\AP@| \emph{before}
% using its expansion, as otherwise hit an infinite loop. Sigh.
% \begin{macrocode}
\global\expandafter\let\expandafter\AP@\expandafter\relax
@@ -350,7 +350,7 @@
% \end{macrocode}
% Subtract the new height of |#1| from |\skip@|, and add back on
% |\splittopskip|, so |\skip@| is now the height of the first row of
-% |#1| This may still be 0pt if (eg) a mark or whatsit is between the
+% |#1|. This may still be 0pt if (eg) a mark or whatsit is between the
% top glue and the first box. Save (this height${}-{}$|\splittopskip|)
% in |\skip\tw@|.
% \begin{macrocode}
diff --git a/macros/latex/required/tools/afterpage.pdf b/macros/latex/required/tools/afterpage.pdf
index 375b75ae5d..fcdd36ce1c 100644
--- a/macros/latex/required/tools/afterpage.pdf
+++ b/macros/latex/required/tools/afterpage.pdf
Binary files differ
diff --git a/macros/latex/required/tools/array.dtx b/macros/latex/required/tools/array.dtx
index 72e2f095e9..6e4e34ea26 100644
--- a/macros/latex/required/tools/array.dtx
+++ b/macros/latex/required/tools/array.dtx
@@ -33,7 +33,7 @@
%<+package>\DeclareCurrentRelease{}{2020-10-01}
%<+package>
%<+package>\ProvidesPackage{array}
-%<+package> [2022/09/04 v2.5g Tabular extension package (FMi)]
+%<+package> [2023/10/16 v2.5g Tabular extension package (FMi)]
%
% \fi
%
@@ -2272,7 +2272,7 @@
% insert the row strut now as it isn't inside the template (as that
% got =\omit=ted).
% \changes{v2.4h}{2018/04/30}{Fixing issue 42}
- % \begin{macrocode}
+% \begin{macrocode}
\ifnum\@multicnt >\z@ \do@row@strut \fi
\cr}
\let\do@row@strut\relax
diff --git a/macros/latex/required/tools/array.pdf b/macros/latex/required/tools/array.pdf
index ffdda545cc..891d503d1c 100644
--- a/macros/latex/required/tools/array.pdf
+++ b/macros/latex/required/tools/array.pdf
Binary files differ
diff --git a/macros/latex/required/tools/bm.dtx b/macros/latex/required/tools/bm.dtx
index 51ae53f041..a608c6aeb5 100644
--- a/macros/latex/required/tools/bm.dtx
+++ b/macros/latex/required/tools/bm.dtx
@@ -36,7 +36,7 @@
%<driver>\ProvidesFile{bm.drv}
% \fi
% \ProvidesFile{bm.dtx}
- [2022/01/05 v1.2f Bold Symbol Support (DPC/FMi)]
+ [2023/07/08 v1.2f Bold Symbol Support (DPC/FMi)]
%
% \iffalse
%<*driver>
@@ -97,7 +97,7 @@
%
% If there is a `heavy' math version defined (usually accessed by a
% user-command |\heavymath|) then a similar command |\hm|
-% is defined which access these `ultra bold' fonts. Currently this is
+% is defined which accesses these `ultra bold' fonts. Currently this is
% probably only useful with the `mathtime plus' font collection.
% Definitions of commands that use these fonts may be made by
% specifying the optional argument `heavy' to |\DeclareBoldMathCommand|.
@@ -140,7 +140,7 @@
% your font set.
%
% \section{Features}
-% In most cases this package should work in a fairly self explanatory
+% In most cases this package should work in a fairly self-explanatory
% way, but there are some things that might not be obvious.
%
% \subsection{Interaction with Math Alphabet Commands}
@@ -209,7 +209,7 @@
% Normally if a command takes arguments the full command, including
% any arguments, should be included in |\bm|.
%
-% So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$})
+% So |\bm{\overbrace{abc}}| (producing \smash{$\bm{\overbrace{abc}}$}),
% not
% |\bm{\overbrace}{abc}|. If you do not include all the arguments you
% will typically get the error message:\\
@@ -245,7 +245,7 @@
% allocations.
%
% If no bold font appears to be available for a particular symbol,
-% |\bm| will use `poor man's bold' that is, overprinting the same
+% |\bm| will use `poor man's bold', which will overprint the same
% character in slightly offset
% positions to give an appearance of boldness.
%
@@ -255,8 +255,8 @@
% font set there are suitable fonts for bold and heavy math setting,
% and so |\bm| and |\hm| work well. Similarly in the basic Lucida
% New Math font set there are no bold math fonts, so |\bm| will
-% use `poor man's bold. However if the Lucida Expert set is used,
-% Then |\bm| will detect, and use the bold math fonts that are
+% use `poor man's bold'. However, if the Lucida Expert set is used,
+% then |\bm| will detect, and use, the bold math fonts that are
% available.
%
% As discussed above, one may set |\bmmax| higher or lower than its
@@ -310,7 +310,7 @@
% ``poor man's bold''. That is, over-printing the character with slight offsets.
% Since version 1.2e, the package now warns if a font is set up to use this over-printing and
% 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,
+% use the non-bold for characters from the affected font.
%
% \MaybeStop{}
%
@@ -339,7 +339,7 @@
%
% \changes{v1.2e}{2021/04/25}
% {Package options gh/71}
-% Options to use or not use poor mans bold (over-printing)
+% Options to use or not use poor man's bold (over-printing)
% and level of warning messages.
% \begin{macrocode}
%<*package>
@@ -399,7 +399,7 @@
% code, which is temporarily defined to |\bm|, to save wasting a csname.
% Similarly |\bm@pmb|\ldots\ (which will be defined later) are used
% as scratch macros.
-% (This csname saving no longer used, setup command is |\bm@setup| not |\bm|).
+% (This csname saving no longer used, setup command is |\bm@setup|, not |\bm|.)
%
% The general plan. Run through the fonts allocated to the normal math
% version. Ignore \meta{math alphabet} allocations\footnote{For now?}
@@ -505,11 +505,11 @@
\ifx\bm@pmb@\@firstofone\else, using \string\pmb\fi}%
\else
% \end{macrocode}
-% Else make a new name by adjoining |#1| to the name of the symbol font
+% Else make a new name by adjoining |#1| to the name of the symbol font,
% eg, |\symboldsymbols| to match |\symsymbols|. If that font has already
% been allocated, or if |\@tempcnta| is positive so we can allocate a
% new slot for this font, then the table will be
-% set with the offset between the two fonts. otherwise set the offset to
+% set with the offset between the two fonts. Otherwise set the offset to
% zero (so |\boldmath| will be used to access the font).
% \begin{macrocode}
\edef\@tempa{sym#1\expandafter\@gobblefour\string##1}%
@@ -673,8 +673,8 @@
\fi
% \end{macrocode}
%
-% If there is no bold math version, It is very easy to set up
-% the table, no need to use all the tricky code above.
+% If there is no bold math version, it is very easy to set up
+% the table since there is no need to use all the tricky code above.
% Also, at the end of the package redefine the internal macro
% that |\bm| uses to call |\boldmath|, to use poor man's bold
% instead.
@@ -711,7 +711,7 @@
%
% \begin{macro}{\hmmax}
%
-% Same for heavy (but default to three this time (enough for mathtime
+% Same for heavy, but default to three this time (enough for mathtime
% plus, as no heavy operators font).
% \begin{macrocode}
\ifx\hmmax\@undefined
@@ -777,7 +777,7 @@
\let\protect\@empty
\let\@typeset@protect\@empty
% \end{macrocode}
-% Set up either bold or heavy
+% Set up either bold or heavy.
% \begin{macrocode}
\def\bm@mathchoice{\bm@m@thchoice#1}%
\def\bm@group{\bm@gr@up#1}%
@@ -848,9 +848,9 @@
\let\next@\copy
\global\let\bm@first\@empty
% \end{macrocode}
-% For AMS version of |\sqrt|: don't expand just wrap in brace group
-% so that it can be made bold in a safe but slow way. Do the same for
-% internal accent command
+% For AMS version of |\sqrt|: don't expand, just wrap it in a brace
+% group so that it can be made bold in a safe but slow way. Do the same
+% for internal accent command.
% \changes{v1.1b}{2003/10/05}{AMS \cs{sqrt} not working}
%
% \changes{v1.1c}{2004/02/26}{\cs{accentV} made safe (pr/3625)}
@@ -886,7 +886,7 @@
% |\mv@bold| or |\mv@heavy| and we execute that after redefining
% |\install@mathalphabet| and |\getanddefine@fonts| suitably.
% The definitions are reverted back to their original the moment
-% the scanning is done
+% the scanning is done.
% \changes{v1.0h}{2002/11/22}{Get math alphabets right (pr/3476)}
% \begin{macrocode}
\let\install@mathalphabet\def
@@ -972,7 +972,7 @@
% |\bm| is empty within the definition, so that either\\
% |\bmdefine\balpha{\bm\alpha}| or |\bmdefine\balpha{\alpha}| \\
% may be used. (The former just for compatibility with the original
-% version for plain \TeX).
+% version for plain \TeX.)
% \begin{macrocode}
\def\bmdefine{\DeclareBoldMathCommand[bold]}
% \end{macrocode}
@@ -1092,8 +1092,8 @@
% \begin{macro}{\bm@gr@up}
% \changes{v1.0c}{1997/10/09}
% {Extra brace around argument for \cs{over}}
-% If faced with a group,
-% If we are in math mode, stick it in a |\boldsymbol| like construct
+% If faced with a group
+% when we are in math mode, put it in a |\boldsymbol|-like construct
% and then recurse on |\bm@expand|.
% Otherwise just use |\bfseries\boldmath|.
% The actual test is deferred till `run time'.
@@ -1131,7 +1131,7 @@
% Other things just copy straight over to the command being built.
% (Anything inside a |\mathop| or similar will end up being made bold
% as the |\mathop| will be copied over, but its argument will be made
-% bold by the group code above.
+% bold by the group code above.)
% \begin{macrocode}
\def\bm@test@token#1{%
\let\bm@next\@empty
@@ -1139,7 +1139,7 @@
%
% Stop here. Note that it is vital that the terminating token
% is non-expandable and defined, rather than the usual \LaTeX\
-% terminators |\@nil| or |\@@|. (Worse still would be a `quark'
+% terminators |\@nil| and |\@@|. (Worse still would be a `quark'
% like |docstrip|'s |\qStop|.)
% \begin{macrocode}
\ifx#1\@@end
@@ -1166,7 +1166,7 @@
\afterassignment\bm@radical\count@
% \end{macrocode}
%
-% Need to trap spaces otherwise digits will get turned to bold
+% Need to trap spaces, otherwise digits will get turned to bold
% mathchars.
% \changes{v1.1a}{2003/09/01}{Forgotten to check for \cs{hskip} (pr/3572)}
% \begin{macrocode}
@@ -1451,7 +1451,7 @@
% \begin{macro}{\bm@pmb@}
% \changes{v0.10}{1997/01/04}
% {Macro added}
-% |\pmb| variant. (See \TeX{}Book, or AMS \textsf{amsbsy} package).
+% |\pmb| variant. (See \TeX{}book, or AMS \textsf{amsbsy} package.)
% This one takes a bit more care to use smaller offsets in subscripts.
% \begin{macrocode}
\ifx\bm@pmb@\@firstofone\else
@@ -1544,7 +1544,7 @@
\def\bm@mathaccent{%
\bm@changefam{}%
% \end{macrocode}
-% The next four lines were added a v1.0e. Without them |\bm{\hat{A}}|
+% The next four lines were added in v1.0e. Without them |\bm{\hat{A}}|
% makes the accent bold using |\bm| but the group |{A}| is made bold
% via a |\mathchoice| construction as for any other group, as |\bm|
% does not attempt to parse inside brace groups. While that produces
@@ -1674,9 +1674,10 @@
% \begin{macro}{\bm@changefam}
% \changes{v0.10}{1997/01/04}
% {Rewrite for new \cs{bm@table} system}
-% Pull out one specified hex digit and passes
-% it to |\bm@modify| to change. argument is empty normally but |000| to
-% access the second math group in a delimiter code.
+% Pull out one specified hex digit and pass
+% it to |\bm@modify| to change. Its one argument is normally empty,
+% but it will be |000| when necessary to access the second math group
+% in a delimiter code.
% \begin{macrocode}
\def\bm@changefam#1{%
\@tempcnta\count@
diff --git a/macros/latex/required/tools/bm.pdf b/macros/latex/required/tools/bm.pdf
index f2b6887434..6017ddc883 100644
--- a/macros/latex/required/tools/bm.pdf
+++ b/macros/latex/required/tools/bm.pdf
Binary files differ
diff --git a/macros/latex/required/tools/calc.dtx b/macros/latex/required/tools/calc.dtx
index c243eed8d3..2c4cecbf03 100644
--- a/macros/latex/required/tools/calc.dtx
+++ b/macros/latex/required/tools/calc.dtx
@@ -40,7 +40,7 @@
%<driver> \ProvidesFile{calc.drv}
% \fi
% \ProvidesFile{calc.dtx}
- [2017/05/25 v4.3 Infix arithmetic (KKT,FJ)]
+ [2023/07/08 v4.3 Infix arithmetic (KKT,FJ)]
%
% \iffalse
%<*driver>
@@ -102,7 +102,7 @@
% Arithmetic in \TeX\ is done using low-level operations such as
% |\advance| and |\multiply|. This may be acceptable when developing
% a macro package, but it is not an acceptable interface for the
-% end-user.
+% end user.
%
% This package introduces proper infix notation arithmetic which is
% much more familiar to most people. The infix notation is more
@@ -271,7 +271,7 @@
% or at the end of the expression being evaluated.
%
% When \TeX\ performs arithmetic on integers, any fractional part of
-% the results are discarded. For example,
+% the result is discarded. For example,
%\begin{verbatim}
% \setcounter{x}{7/2}
% \setcounter{y}{3*\real{1.6}}
@@ -318,7 +318,7 @@
% \setlength{\parindent}{%
% \minof{3pt}{\parskip}*\real{1.5}*\maxof{2*\real{1.6}}{2-1}}
%\end{verbatim}
-% will assign $\min(13.5\textrm{pt},4.5\cs{parskip})$ to \cs{parindent}
+% will assign $\min(13.5\textrm{pt},4.5\cs{parskip})$ to \cs{parindent}.
%
%
%
@@ -453,7 +453,7 @@
% or a parenthesized expression~$(E')$.
%
% Since the \TeX\ engine can only execute arithmetic operations in a
-% machine-code like manner, we have to find a way to translate the
+% machine-code-like manner, we have to find a way to translate the
% infix notation into this `instruction set'.
%
% Our goal is to design a translation scheme that translates~$X$ (an
@@ -565,9 +565,9 @@
% When an \<integer factor> is expected, we must change $A$ and~$B$ to
% refer to integer type registers. We can accomplish this by
% including instructions to change the type of $A$ and~$B$ to integer
-% type as part of the replacement code for~`$*$; if we append such
+% type as part of the replacement code for~`$*$'; if we append such
% instructions to the replacement code described above, we also ensure
-% that the type-change is local (provided that the type-changing
+% that the type change is local (provided that the type-changing
% instructions only have local effect). However, note that the
% instance of~$A$ referred to in $\savecode{B\lassign B*A}$ is the
% integer instance of~$A$.
@@ -933,7 +933,7 @@
% \begin{macro}{\calc@addAtoB}
% \begin{macro}{\calc@subtractAfromB}
% The replacement code for the binary operators `\texttt{+}' and
-% `\texttt{-}' follow a common pattern; the only difference is the
+% `\texttt{-}' follows a common pattern; the only difference is the
% token that is stored away by |\aftergroup|. After this replacement
% code, control is transferred to |\calc@pre@scan|.
% \begin{macrocode}
@@ -1063,7 +1063,7 @@
% \begin{macro}{\calc@ratio@multiply}
% \begin{macro}{\calc@ratio@divide}
% When |\calc@post@scan| encounters a |\ratio| control sequence, it hands
-% control to one of the macros |\calc@ratio@multiply| or |\calc@ratio@divide|,
+% control to one of the macros |\calc@ratio@multiply| and |\calc@ratio@divide|,
% depending on the preceding character. Those macros both forward the
% control to the macro |\calc@ratio@evaluate|, which performs two steps: (1) it
% calculates the ratio, which is saved in the global macro token
@@ -1109,7 +1109,7 @@
% Here we calculate the ratio. First, we check for negative numerator
% and/or denominator; note that \TeX\ interprets two minus signs the
% same as a plus sign. Then, we calculate the integer part.
-% The minus sign(s), the integer part, and a decimal point, form the
+% The minus sign(s), the integer part, and a decimal point form the
% initial expansion of the |\calc@the@ratio| macro.
% \begin{macrocode}
\gdef\calc@the@ratio{}%
@@ -1305,8 +1305,8 @@
% {Use \cs{PackageError} for error messages (DPC)}
% \changes{v4.0e}{1997/11/11}
% {typo fixed}
-% If |\calc@post@scan| reads a character that is not one of `\texttt{+}',
-% `\texttt{-}', `\texttt{*}', `\texttt{/}', or `\texttt{)}', an error
+% If |\calc@post@scan| reads a character that is neither `\texttt{+}',
+% `\texttt{-}', `\texttt{*}', `\texttt{/}', nor `\texttt{)}', an error
% has occurred, and this is reported to the user. Violations in the
% syntax of \<numeric>s will be detected and reported by \TeX.
% \changes{v4.1a}{1998/06/07}
@@ -1327,7 +1327,7 @@
% \changes{v4.2}{2005/08/06}
% {Added macro}
% The kernel macro \cs{@settodim} is changed so that it runs through a list
-% containing \cs{ht}, \cs{wd}, and \cs{dp} and than advance the length
+% containing \cs{ht}, \cs{wd}, and \cs{dp} and then advances the length
% one step at a time. We just have to use a scratch register in case the
% user decides to put in a \cs{global} prefix on the length register.
% A search on the internet confirmed that some people do that kind of thing.
diff --git a/macros/latex/required/tools/calc.pdf b/macros/latex/required/tools/calc.pdf
index 1debba20b1..e621722b56 100644
--- a/macros/latex/required/tools/calc.pdf
+++ b/macros/latex/required/tools/calc.pdf
Binary files differ
diff --git a/macros/latex/required/tools/changes.txt b/macros/latex/required/tools/changes.txt
index 74318d41bb..7b38392bd4 100644
--- a/macros/latex/required/tools/changes.txt
+++ b/macros/latex/required/tools/changes.txt
@@ -10,6 +10,23 @@ All changes above are only part of the development branch for the next release.
================================================================================
#########################
+# 2023-11-01b Release
+#########################
+
+2023-11-01 David Carlisle <David.Carlisle@latex-project.org>
+
+ * longtable.dtx: corrrect year in date
+
+#########################
+# 2023-11-01 Release
+#########################
+
+2023-08-25 Ulrike Fischer <Ulrike.Fischer@latex-project.org>
+
+ * longtable.dtx: use \everypar to insert the strut in \LT@startpbox
+ to match the array use, github/1128
+
+#########################
# 2023-06-01 Release
#########################
diff --git a/macros/latex/required/tools/dcolumn.dtx b/macros/latex/required/tools/dcolumn.dtx
index cfb7b4d33e..c8ddaf4ce6 100644
--- a/macros/latex/required/tools/dcolumn.dtx
+++ b/macros/latex/required/tools/dcolumn.dtx
@@ -31,7 +31,7 @@
%<driver>\ProvidesFile{dcolumn.drv}
% \fi
% \ProvidesFile{dcolumn.dtx}
- [2014/10/28 v1.06 decimal alignment package (DPC)]
+ [2023/07/08 v1.06 decimal alignment package (DPC)]
%
% \iffalse
%<*driver>
@@ -117,7 +117,7 @@
%
% \noindent"\newcolumntype{,}{D{,}{,}{2}}"
%
-% {\tt ,} specifies takes a column of entries with at most two decimal
+% {\tt ,} specifies a column of entries with at most two decimal
% places after a~$,$.
%
% \newcolumntype{d}[1]{D{.}{\cdot}{#1}}
@@ -138,7 +138,7 @@
% \end{center}
%
% Note that the first column, which had a negative \meta{decimal places}
-% argument is wider than the second column, so that the decimal point
+% argument, is wider than the second column, so that the decimal point
% appears in the middle of the column.
% Also note that this package deals correctly with entries with no
% decimal part, no integer part, and blank entries.
@@ -200,7 +200,7 @@
%<*package>
% \end{macrocode}
%
-% First we load {\tt array.sty} if it not already loaded.
+% First we load {\tt array.sty} if it is not already loaded.
% \begin{macrocode}
\RequirePackage{array}
% \end{macrocode}
@@ -243,10 +243,10 @@
% \begin{macro}{\DC@x}
% \changes{v1.03}{1996/02/28}{Macro added}
% If "\count@" is negative, centre on the decimal point. If it is
-% positive either "#1" will be empty in which case bad out decimal
+% positive either "#1" will be empty in which case pad out decimal
% part to the number of digits specified by "\count@" or (new feature
% in v1.03) it is none empty in which case "\count@" contains the
-% number of digits to the left of the point, and "#1" contains a junk
+% number of digits to the left of the point and "#1" contains a junk
% token (probably ".") followed by the number of digits to the right
% of the point. In either of these latter cases, "\DC@right" is used.
% \begin{macrocode}
@@ -261,7 +261,7 @@
% \end{macro}
%
% \begin{macro}{\DC@centre}
-% If centering on the decimal point, just need to box up the two halves.
+% If centering on the decimal point, just need to box up the two halves:
% \begin{macrocode}
\def\DC@centre#1#2#3{%
\let\DC@end\DC@endcentre
@@ -293,16 +293,16 @@
\ifx\relax#3\relax
% \end{macrocode}
% If "#3" is empty, add "\hfill" to right align the column, and
-% Just set "\DC@rl" to begin a group, so nothing fancy is done with
+% just set "\DC@rl" to begin a group, so that nothing fancy is done with
% the whole number part.
% \begin{macrocode}
\hfill
\let\DC@rl\bgroup
\else
% \end{macrocode}
-% Otherwise set "\DC@rl" so that the whole number part is put in a
+% Otherwise set "\DC@rl" so that the whole number part is put in a
% box "\count@" times as wide as a digit.
-% In order to share code with the other branch, then move "#3" (the
+% In order to share code with the other branch, move "#3" (the
% number of decimal places) into "\count@" throwing away the `.' from
% the user syntax.
% \changes{v1.04}{1996/09/23}{Add \cs{hfill} so integer part
@@ -318,7 +318,7 @@
% \end{macrocode}
% Box 2 contains the decimal part, set to "\dimen@" which is
% calculated below to be "\count@" times the width of a digit, plus
-% the with of the `decimal point'.
+% the width of the `decimal point'.
% \begin{macrocode}
\uppercase{\def~}{$\egroup\setbox\tw@\hbox to\dimen@\bgroup${#2}}%
\setbox\z@\hbox{$1$}\dimen@ii\wd\z@
diff --git a/macros/latex/required/tools/dcolumn.pdf b/macros/latex/required/tools/dcolumn.pdf
index 3b100acf93..7eb353b8d2 100644
--- a/macros/latex/required/tools/dcolumn.pdf
+++ b/macros/latex/required/tools/dcolumn.pdf
Binary files differ
diff --git a/macros/latex/required/tools/delarray.pdf b/macros/latex/required/tools/delarray.pdf
index cea166711c..21e318ae08 100644
--- a/macros/latex/required/tools/delarray.pdf
+++ b/macros/latex/required/tools/delarray.pdf
Binary files differ
diff --git a/macros/latex/required/tools/enumerate.dtx b/macros/latex/required/tools/enumerate.dtx
index 49179cfa06..2818a73a09 100644
--- a/macros/latex/required/tools/enumerate.dtx
+++ b/macros/latex/required/tools/enumerate.dtx
@@ -31,7 +31,7 @@
%<driver> \ProvidesFile{enumerate.drv}
% \fi
% \ProvidesFile{enumerate.dtx}
- [2015/07/23 v3.00 enumerate extensions (DPC)]
+ [2023/07/04 v3.00 enumerate extensions (DPC)]
%
% \iffalse
%<*driver>
@@ -66,7 +66,7 @@
% This package gives the enumerate environment an optional argument
% which determines the style in which the counter is printed.
%
-% An occurrence of one of the tokens |A a I i| or |1| produces the value
+% An occurrence of one of the tokens |A a I i 1| produces the value
% of the counter printed with (respectively) |\Alph \alph \Roman \roman|
% or |\arabic|.
%
@@ -233,7 +233,7 @@
%
% To enable a new counter type based on a letter, you just need
% to add a new |\ifx| clause by analogy with the code above.
-% So for example to make |*| trigger footnote symbol counting.
+% So for example to make |*| trigger footnote symbol counting,
% a package should do the following.
%
% Initialise the hook, in case the package is loaded before
@@ -255,7 +255,7 @@
% in this way.
%
% At this point we just need initialise the hook, taking care not
-% to over write any definitions another package may already have added.
+% to overwrite any definitions another package may already have added.
% \begin{macrocode}
\providecommand\@enhook{}
% \end{macrocode}
@@ -276,7 +276,7 @@
% \end{macro}
%
% \begin{macro}{\@@enum@}
-% Handle the optional argument..
+% Handle the optional argument.
% \begin{macrocode}
\def\@@enum@[#1]{%
% \end{macrocode}
diff --git a/macros/latex/required/tools/enumerate.pdf b/macros/latex/required/tools/enumerate.pdf
index 06a7029835..cf42db1dae 100644
--- a/macros/latex/required/tools/enumerate.pdf
+++ b/macros/latex/required/tools/enumerate.pdf
Binary files differ
diff --git a/macros/latex/required/tools/fileerr.pdf b/macros/latex/required/tools/fileerr.pdf
index 22c59c1158..92889c6a8d 100644
--- a/macros/latex/required/tools/fileerr.pdf
+++ b/macros/latex/required/tools/fileerr.pdf
Binary files differ
diff --git a/macros/latex/required/tools/fontsmpl.pdf b/macros/latex/required/tools/fontsmpl.pdf
index 31717658e3..077709eb13 100644
--- a/macros/latex/required/tools/fontsmpl.pdf
+++ b/macros/latex/required/tools/fontsmpl.pdf
Binary files differ
diff --git a/macros/latex/required/tools/ftnright.dtx b/macros/latex/required/tools/ftnright.dtx
index 00e98c3f77..663fa304a9 100644
--- a/macros/latex/required/tools/ftnright.dtx
+++ b/macros/latex/required/tools/ftnright.dtx
@@ -26,7 +26,7 @@
%% Copyright (C) 1989-2004 Frank Mittelbach, all rights reserved.
%<+package>\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%<+package>\ProvidesPackage{ftnright}
-%<+package> [2014/10/28 v1.1f footnote layout package (FMi)]
+%<+package> [2023/07/08 v1.1f footnote layout package (FMi)]
%
% \fi
%%
@@ -171,7 +171,7 @@
%
% I also upgraded the documentation to conform to the \LaTeXe{}
% terminology, e.g., this is a package since document classes will not
-% know about it. However it is very likely that i have missed some
+% know about it. However it is very likely that I have missed some
% necessary corrections.
%
% \section{Introduction}
@@ -220,7 +220,7 @@
%
% The result of this effort is presented in this paper and the reader
% can judge for himself whether it was successful or
-% not.\footnote{Please note, that this option only changed the
+% not.\footnote{Please note that this option changed only the
% placement of footnotes. Since this article also makes use of the
% {\tt doc} package \cite{bk:GMS94}, that assigns tiny numbers to
% code lines sprinkled throughout the text, the resulting design is
@@ -235,7 +235,7 @@
% footnote separator rule which is used in most publications prepared
% with \TeX{}.\footnote{People who prefer the rule can add it by
% redefining the command {\tt\bslash footnoterule}
-% \cite[p.~156]{book:LLa86}. Please, note, that this command should
+% \cite[p.~156]{book:LLa86}. Please note that this command should
% occupy no space, so that a negative space should be used to
% compensate for the width of the rule used.} Furthermore, I decided
% to place the footnote markers\footnote{\label{thisftn}The tiny
@@ -572,7 +572,7 @@
% are only partly typeset on the preceding page are not resolved.
% They are held over until \LaTeX{} starts a page (or column)
% containing text besides floats again. For our current layout,
-% this would mean, that if \LaTeX{} decided to make the right
+% this would mean that if \LaTeX{} decided to make the right
% column of a page a float column, footnotes from the left column
% would appear on a later page. A real cure for this problem would
% be to rewrite two-thirds of \LaTeX{}'s output routine, so I am
@@ -615,8 +615,8 @@
% footnotes from the left column. So we have to change the output
% routine at least in the part that contributes floats to the next
% column. The macro involved is called |\@startcolumn|. The first
-% thing we do is to check and see whether any deferred floats
-% exists.
+% thing we do is to check and see whether there are any deferred
+% floats.
% \begin{macrocode}
\def\@startcolumn{%
\ifx\@deferlist\@empty
@@ -764,7 +764,7 @@
% and output the footnotes on a separate page in an
% emergency.\footnote{Otherwise, the footnotes are held over for
% ever, preventing \TeX{} from finishing the document successfully.
-% Instead, \TeX{} will produce infinity many empty pages at the end
+% Instead, \TeX{} will produce infinitely many empty pages at the end
% of the document, trying in vain to output the held over
% footnotes. This problem was found by Rainer Sch\"opf when we
% prepared the paper for the Cork conference.}
@@ -790,7 +790,7 @@
% moment we simply detect it here, perhaps some better scheme can be
% implemented. One way to avoid this is to allow more than |\textheight| of
% footnotes in |\preparefootins|. However, that isn't such a good idea
-% either as that means that a footnote from column one, might end up
+% either since it means that a footnote from column one might end up
% completely on a later page.
% \changes{v1.1f}{2010/02/25}{Check for split footnotes (pr/4099)}
% \begin{macrocode}
diff --git a/macros/latex/required/tools/ftnright.pdf b/macros/latex/required/tools/ftnright.pdf
index 922c844c49..b92dd83a6d 100644
--- a/macros/latex/required/tools/ftnright.pdf
+++ b/macros/latex/required/tools/ftnright.pdf
Binary files differ
diff --git a/macros/latex/required/tools/hhline.pdf b/macros/latex/required/tools/hhline.pdf
index 58c210d9b3..0428482b71 100644
--- a/macros/latex/required/tools/hhline.pdf
+++ b/macros/latex/required/tools/hhline.pdf
Binary files differ
diff --git a/macros/latex/required/tools/indentfirst.dtx b/macros/latex/required/tools/indentfirst.dtx
index 295b678fd8..2314db1c70 100644
--- a/macros/latex/required/tools/indentfirst.dtx
+++ b/macros/latex/required/tools/indentfirst.dtx
@@ -25,7 +25,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{indentfirst}
-%<package> [1995/11/23 v1.03 Indent first paragraph (DPC)]
+%<package> [2023/07/02 v1.03 Indent first paragraph (DPC)]
%
%<*driver>
\documentclass{ltxdoc}
@@ -52,7 +52,7 @@
% \changes{v1.03}{1995/11/23}{Typo fixes in documentation}
%
% \begin{abstract}
-% Make the first line of all sections etc., be indented by the usual
+% Make the first line of all sections etc. be indented by the usual
% paragraph indentation. This should work with all the standard document
% classes.
% \end{abstract}
diff --git a/macros/latex/required/tools/indentfirst.pdf b/macros/latex/required/tools/indentfirst.pdf
index 5eb885ce60..42d4a696b0 100644
--- a/macros/latex/required/tools/indentfirst.pdf
+++ b/macros/latex/required/tools/indentfirst.pdf
Binary files differ
diff --git a/macros/latex/required/tools/layout.dtx b/macros/latex/required/tools/layout.dtx
index fffa6d8e18..2798bd4f60 100644
--- a/macros/latex/required/tools/layout.dtx
+++ b/macros/latex/required/tools/layout.dtx
@@ -30,7 +30,7 @@
%<+package>\ProvidesPackage{layout}
%<+driver>\ProvidesFile{layout.drv}
%\ProvidesFile{layout.dtx}
- [2021-03-10 v1.2e Show layout parameters]
+ [2023-08-20 v1.2e Show layout parameters]
%
% A short driver is provided that can be extracted if necessary by
% the \textsf{DocStrip} program provided with \LaTeXe.
@@ -409,7 +409,7 @@
%
% \begin{macro}{\cnt@paperwidth}
% \begin{macro}{\cnt@paperheight}
-% The dimensions of the paper
+% The dimensions of the paper,
% \begin{macrocode}
\newcount\cnt@paperwidth
\newcount\cnt@paperheight
@@ -514,7 +514,7 @@
\newcount\ref@hoffset
\newcount\ref@voffset
% \end{macrocode}
-% The |\hoffset| and |\voffset| values are added to the default
+% the |\hoffset| and |\voffset| values are added to the default
% offset of one inch.
% \begin{macrocode}
\ref@hoffset=\cnt@hoffset \advance\cnt@hoffset by \oneinch
@@ -531,7 +531,7 @@
% \end{macro}
%
% \begin{macro}{\ref@head}
-% and the text areas, running heads,
+% And the text areas, running heads,
% \begin{macrocode}
\newcount\ref@head
% \end{macrocode}
@@ -566,7 +566,7 @@
% \end{macro}
%
% The following are a number of scratch registers, used in the
-% positioning of the various pices of the picture.
+% positioning of the various pieces of the picture.
% \begin{macrocode}
\newcount\Interval
\newcount\ExtraYPos
@@ -639,7 +639,7 @@
\ifodd\count\z@
% \end{macrocode}
%
-% Here we deal with an odd page in the twosided case.
+% Here we deal with an odd page in the two-sided case.
%
% \begin{macrocode}
\typeout{Two-sided document style, odd page.}
@@ -667,7 +667,7 @@
\else
% \end{macrocode}
%
-% Here we deal with an even page in the twosided case.
+% Here we deal with an even page in the two-sided case.
%
% \begin{macrocode}
\typeout{Two-sided document style, even page.}
@@ -696,7 +696,7 @@
\else
% \end{macrocode}
%
-% Finally we the case for single sided printing.
+% Finally we deal with the case for single-sided printing.
%
% \changes{v1.1}{1994/02/23}{Added check for reversemargin}
% \begin{macrocode}
@@ -718,7 +718,7 @@
%
%
% Now we begin the picture environment; dividing all the lengths by
-% two is done by setting |\unitlength| to \texttt{0.5pt}
+% two is done by setting |\unitlength| to \texttt{0.5pt}.
% \begin{macrocode}
\setlength{\unitlength}{.5pt}
\begin{picture}(\cnt@paperwidth,\cnt@paperheight)
@@ -790,7 +790,7 @@
\InsideHArrow\cnt@textwidth
% \end{macrocode}
%
-% Now the |\textheight|
+% Now the |\textheight|.
% \begin{macrocode}
\SetToHalf\PositionY\cnt@textheight
\advance\PositionY by \ref@body
@@ -812,7 +812,7 @@
% \end{macrocode}
%
%
-% The |\hoffset|,
+% The |\hoffset|.
% \changes{v1.2}{1998/04/13}{\cs{PositionY} for label 1 is
% fixed at 50}
% \begin{macrocode}
@@ -840,12 +840,12 @@
\Identify{3}
% \end{macrocode}
%
-% the |\marginparwidth|,
+% The |\marginparwidth|.
% \begin{macrocode}
\SetToQuart\PositionY\cnt@textheight
\advance\PositionY by \ref@body
% \end{macrocode}
-% This arrow has to be bit below the one for the |\oddsidemargin|
+% This arrow has to be a bit below the one for the |\oddsidemargin|
% or\\ |\evensidemargin|.
% \begin{macrocode}
\advance\PositionY by 30
@@ -856,14 +856,14 @@
% \end{macrocode}
%
%
-% The |\marginparsep|, this depends on single or double sided
+% The |\marginparsep|, this depends on single- or double-sided
% printing.
% \begin{macrocode}
\advance\PositionY by 30
\if@twoside
% \end{macrocode}
%
-% Twosided mode, reversemargin;
+% Two-sided mode, reversemargin:
% \changes{v1.1b}{1994/03/23}{\cs{OutSideHArrow} should be
% \cs{OutsideHArrow}}
% \changes{v1.2}{1998/04/13}{Added check for reversemargin}
@@ -878,7 +878,7 @@
\fi
\else
% \end{macrocode}
-% Not reversemargin;
+% Not reversemargin:
% \begin{macrocode}
\ifodd\count\z@
\OutsideHArrow\ref@marginpar\cnt@marginparsep{20}
@@ -891,7 +891,7 @@
\else
% \end{macrocode}
%
-% Single sided mode.
+% Single-sided mode.
% \changes{v1.2}{1998/04/13}{Added check for reversemargin}
% \begin{macrocode}
\if@reversemargin
@@ -911,7 +911,7 @@
\Identify{9}
% \end{macrocode}
%
-% Identify the |\footskip|. The arrow will be located on $1/8$th of
+% Identify the |\footskip|. The arrow will be located on $1/8$ of
% the |\textwidth|.
% \changes{v1.2}{1998/04/13}{The \cs{PositionY} of the label 11 is
% changed to the upper side of the arrows}
@@ -942,7 +942,7 @@
%
% Identify |\topmargin|, |\headheight| and |\headsep|.
%
-% The arrows will be located on $1/8$th of the |\textwidth|, with
+% The arrows will be located on $1/8$ of the |\textwidth|, with
% intervals of the same size, stored in |\Interval|.
% \begin{macrocode}
\Interval = \cnt@textwidth
@@ -983,7 +983,7 @@
\Identify{5}
\advance\PositionX by \Interval
% \end{macrocode}
-% and finally the |\headsep|
+% and finally the |\headsep|.
% \changes{v1.2}{1998/04/13}{The \cs{PositionY} of the label 6 is
% fixed}
% \begin{macrocode}
@@ -1006,7 +1006,7 @@
%
% Below the picture we put a table to show the actual values of the
% parameters. Note that fractional points are truncated, i.e.,
-% \texttt{72.27pt} is displayed as \texttt{72pt}
+% \texttt{72.27pt} is displayed as \texttt{72pt}.
%
% The table is typeset inside a box with a depth of 0 to always
% keep it on the same page as the picture.
diff --git a/macros/latex/required/tools/layout.pdf b/macros/latex/required/tools/layout.pdf
index 263351e751..d2d9ce85e2 100644
--- a/macros/latex/required/tools/layout.pdf
+++ b/macros/latex/required/tools/layout.pdf
Binary files differ
diff --git a/macros/latex/required/tools/longtable.dtx b/macros/latex/required/tools/longtable.dtx
index 332a95d224..2a61ab0c87 100644
--- a/macros/latex/required/tools/longtable.dtx
+++ b/macros/latex/required/tools/longtable.dtx
@@ -37,7 +37,7 @@
%<driver> \ProvidesFile{longtable.drv}
% \fi
% \ProvidesFile{longtable.dtx}
- [2021-09-01 v4.17 Multi-page Table package (DPC)]
+ [2023-11-01 v4.19 Multi-page Table package (DPC)]
%
% \iffalse
%<*driver>
@@ -54,7 +54,7 @@
% has version number \fileversion, last
% revised \filedate.}}
% \author{David Carlisle\thanks{The new algorithm for aligning `chunks'
-% of a table used in version 4 of this package was devised coded
+% of a table used in version 4 of this package was devised, coded
% and documented by David Kastrup.}}
% \date{\filedate}
%
@@ -317,7 +317,7 @@
% ".aux" file, so that it can line up the different chunks.
% Prior to version~4 of this package, this information was not used
% unless a "\setlongtables" command was issued, however, now the
-% information is always used, using a new algorithm\footnote{Due to
+% information is always used, via a new algorithm,\footnote{Due to
% David Kastrup.} and so "\setlongtables" is no longer needed. It is
% defined (but does nothing) for the benefit of old documents that
% use it.
@@ -396,7 +396,7 @@
% are modified in a compatible manner.
%
% You may use the "\label" command so that you can cross reference
-% \env{longtable}s with "\ref". Note however, that the "\label" command
+% \env{longtable}s with "\ref". Note, however, that the "\label" command
% should not be used in a heading that may appear more than once. Place
% it either in the \env{firsthead}, or in the body of the table. It
% should not be the \emph{first} command in any entry.
@@ -493,7 +493,7 @@
% always converged in three passes as described above, but in examples
% such as the ones in Tables \ref{pass1}--\ref{pass4}, the final
% widths were not optimal as the width of column~2, which is
-% determined by a "\multicolumn" entry was not known when the final
+% determined by a "\multicolumn" entry, was not known when the final
% width for column~3 was fixed, due to the fact that \emph{both}
% "\multicolumn" commands were switched from `draft' mode to `normal'
% mode at the same time.
@@ -511,7 +511,7 @@
% many overlapping "\multicolumn" entries, all being wider than the
% natural widths of the columns they span, and all occurring in
% different chunks. In the typical case the algorithm will converge
-% after three or four passes, and, the benefits of not needing to edit
+% after three or four passes, and the benefits of not needing to edit
% the document before the final run to add "\setlongtables", and the
% better choice of final column widths in the case of multiple
% "\multicolumn" entries will hopefully more than pay for the extra
@@ -576,7 +576,7 @@
% \item The mechanism for adding the head and foot of the table has been
% completely rewritten. With this new mechanism, \env{longtable} does
% not need to issue a "\clearpage" at the start of the table, and so the
-% table may start half way down a page. Also the "\endlastfoot" command
+% table may start half way down a page. Also the "\endlastfoot" command,
% which could not safely be implemented under the old scheme, has been
% added.
% \item \env{longtable} now issues an error if started in the scope of
@@ -673,7 +673,7 @@
% "\endhead"&
% Specifies rows to appear at the top of every page.\\
% "\endfirsthead"&
-% Specifies rows to appear at the top the first page.\\
+% Specifies rows to appear at the top of the first page.\\
% "\endfoot"&
% Specifies rows to appear at the bottom of every page.\\
% "\endlastfoot"&
@@ -885,7 +885,7 @@
% \begin{macro}{\LTchunksize}
% \changes{v4.14}{2020/02/07}
% {Increase default chunksize from 20 to 200}
-% Chunk size (The number of rows taken per "\halign"). Default 200.
+% Chunk size (the number of rows taken per "\halign"). Default 200.
% \begin{macrocode}
\newcount\LTchunksize \LTchunksize=200
% \end{macrocode}
@@ -1189,12 +1189,12 @@
% \changes{v4.05}{1996/11/12}
% {\cs{LT@setprevdepth} added}
% The following line was added in v4.05.
-% In order to get the "\penalties" to work at chunk boundaries
-% Need to take more care about where and when "\lineskip" glue
+% In order to get the "\penalties" to work at chunk boundaries,
+% we need to take more care about where and when "\lineskip" glue
% is added. The following does nothing at top of table, and in
% header chunks, but in normal body chunks it sets "\prevdepth"
% (to 0pt, but any value would do) so that "\lineskip" glue will
-% be added. the important thing to note is that the glue will be
+% be added. The important thing to note is that the glue will be
% added \emph{after} any vertical material coming from "\noalign".
% \begin{macrocode}
\LT@setprevdepth
@@ -1257,7 +1257,7 @@
% \end{macrocode}
% \changes{v4.14}{2020/02/07}
% {Guard against shrink glue on current page tools/3396 and github 183}
-% This next block was suggested by Lars Hellström in pr tools/3396
+% This next block was suggested by Lars Hellström in pr tools/3396.
% He documents it as:
%
% The original problem occurs because TeX has not yet found an awfully bad
@@ -1325,7 +1325,7 @@
% \changes{v4.14}{2020/02/07}
% {Guard against shrink glue on current page see github 183}
% The LT output routine does not handle shrink on the page, which can cause
-% The first page to be over-long, so forget it is there.
+% the first page to be over-long, so forget it is there.
% \begin{macrocode}
\ifdim\pageshrink>\z@\pageshrink\z@\fi
\fi
@@ -1551,7 +1551,7 @@
% Increment the counter, and do \env{tabular}'s "\\" or finish the
% chunk.\\ The "\expandafter" trick was added in Version~3.
% Set the "\prevdepth" at the start of a new chunk. (Done here
-% so not set in header chunks).
+% so not set in header chunks.)
% \begin{macrocode}
\global\advance\LT@rows\@ne
\ifnum\LT@rows=\LTchunksize
@@ -2206,12 +2206,16 @@
\bgroup
% \end{macrocode}
% \changes{v4.12}{2019/02/06}{Color group to match array package}
+% \changes{v4.18}{2023/08/25}{Use \cs{everypar} to match array package, github 1128}%
% \begin{macrocode}
\color@begingroup
\let\@footnotetext\LT@p@ftntext
\setlength\hsize{#1}%
\@arrayparboxrestore
- \vrule \@height \ht\@arstrutbox \@width \z@}
+ \everypar{%
+ \vrule \@height \ht\@arstrutbox \@width \z@
+ \everypar{}}%
+ }
% \end{macrocode}
% \end{macro}
%
diff --git a/macros/latex/required/tools/longtable.pdf b/macros/latex/required/tools/longtable.pdf
index dbae1ce35b..9315c4d47e 100644
--- a/macros/latex/required/tools/longtable.pdf
+++ b/macros/latex/required/tools/longtable.pdf
Binary files differ
diff --git a/macros/latex/required/tools/multicol.pdf b/macros/latex/required/tools/multicol.pdf
index e7a2607bd3..5a79fd2e04 100644
--- a/macros/latex/required/tools/multicol.pdf
+++ b/macros/latex/required/tools/multicol.pdf
Binary files differ
diff --git a/macros/latex/required/tools/rawfonts.pdf b/macros/latex/required/tools/rawfonts.pdf
index 865ba76370..fe5da2fabe 100644
--- a/macros/latex/required/tools/rawfonts.pdf
+++ b/macros/latex/required/tools/rawfonts.pdf
Binary files differ
diff --git a/macros/latex/required/tools/shellesc.dtx b/macros/latex/required/tools/shellesc.dtx
index 97ec542b66..aa707fe550 100644
--- a/macros/latex/required/tools/shellesc.dtx
+++ b/macros/latex/required/tools/shellesc.dtx
@@ -20,7 +20,7 @@
%<driver> \ProvidesFile{shellesc.drv}
% \fi
% \ProvidesFile{shellesc.dtx}
- [2023/04/15 v1.0d unified shell escape interface for LaTeX]
+ [2023/07/08 v1.0d unified shell escape interface for LaTeX]
%
% \iffalse
%<*driver>
@@ -50,7 +50,7 @@
% \section{Introduction}
%
%
-% For many years web2c based \TeX\ implementations have used the syntax
+% For many years web2c-based \TeX\ implementations have used the syntax
% of the \verb|\write| command to access system commands by using a
% special stream 18 (streams above 15 can not be allocated to files in
% classical \TeX\ so stream 18 would otherwise just print to the
@@ -59,9 +59,9 @@
% This is a useful extension that did not break the strict rules on
% extensions in classical \TeX. This package provides a simple
% macro level interface hiding the \verb|write18| implementation
-% so a command to remove a file on a unix-like system could be
+% so a command to remove a file on a Unix-like system could be
% specified using \verb|\ShellEscape{rm file.txt}| (or \verb|del| in
-% windows). Note that by default system access is not allowed and
+% Windows). Note that by default system access is not allowed and
% \LaTeX\ will typically need to be called with the \verb|--shell-escape|
% command line option.
%
@@ -77,7 +77,7 @@
% \verb|\ShellEscape| in fact corresponds to \verb|\immediate\write18|
% (or \verb|\directlua|). Very rarely you may need to delay a system
% command until the current page is output (when page numbers are
-% known) for this classically you could use \verb|\write18| (or
+% known), for this you could classically use \verb|\write18| (or
% (\verb|\latelua|). This package provides \verb|\DelayedShellEscape|
% as a common syntax for this use.
%
@@ -92,7 +92,7 @@
% \verb|\immediate| will work as normal when writing to file streams
% or the terminal but the special case of stream 18 which is defined to
% use \verb|os.execute| always uses \verb|\directlua| (so corresponds
-% to \verb|\immediate\write18|. In the rare situations that you need
+% to \verb|\immediate\write18|). In the rare situations that you need
% non-immediate \verb|\write18| in a document being ported to current
% Lua\TeX, you will need to change to use the
% \verb|\DelayedShellEscape| command.
@@ -118,7 +118,7 @@
%
% \begin{macro}{\ShellEscapeStatus}
% \changes{v1.0a}{2019/10/13}{Command Introduced}
-% Integer value with meanings 0 (shell escape disabled), 1 (shell escape allowed), 2 (Restricted shell escape).
+% Integer value with meanings 0 (shell escape disabled), 1 (shell escape allowed), 2 (restricted shell escape).
%
% \begin{macrocode}
\chardef\ShellEscapeStatus
@@ -215,8 +215,8 @@ if status == nil then
%
% \subsection{The write18 package interface}
%
-% In web2c based engines other than Lua\TeX, |\write18| may be used
-% directly. The same was true in older LuaTeX, but from version 0.85
+% In web2c-based engines other than Lua\TeX, |\write18| may be used
+% directly. The same was true in older Lua\TeX, but from version 0.85
% onwards that is not available.
%
% The above |shellesc| package interface is recommended for new code,
diff --git a/macros/latex/required/tools/shellesc.pdf b/macros/latex/required/tools/shellesc.pdf
index abd95516e0..e000fcc21b 100644
--- a/macros/latex/required/tools/shellesc.pdf
+++ b/macros/latex/required/tools/shellesc.pdf
Binary files differ
diff --git a/macros/latex/required/tools/showkeys.dtx b/macros/latex/required/tools/showkeys.dtx
index 9841004156..c90b3863e1 100644
--- a/macros/latex/required/tools/showkeys.dtx
+++ b/macros/latex/required/tools/showkeys.dtx
@@ -39,7 +39,7 @@
%<driver> \ProvidesFile{showkeys.drv}
% \fi
% \ProvidesFile{showkeys.dtx}
- [2023/05/11 v3.19 Show cite and label keys (DPC, MH)]
+ [2023/07/08 v3.19 Show cite and label keys (DPC, MH)]
%
% \iffalse
%<*driver>
@@ -112,13 +112,13 @@
% print its key argument (usually in the margin).
%
% If you find the printed keys distracting, but don't want to use the
-% above options to stop them altogether you may use:
+% above options to stop them altogether, you may use:
% \begin{description}
% \item[color] Print the keys in a distinguishing colour. The default
% value is a light grey.
% \end{description}
% The colours may be changed by redefining the following two colours
-% after the package is loaded.
+% after the package is loaded:
% |refkey| (also used for |\cite|) and
% |labelkey| (also used for |\bibitem|).
% The defaults are:
@@ -131,7 +131,7 @@
%
% The package accepts two further options.
% \begin{description}
-% \item[final] to suporess the action of this package, for `final'
+% \item[final] to suppress the action of this package, for `final'
% versions.
% \item[draft] the normal behaviour of this package.
% \end{description}
@@ -437,7 +437,7 @@
% change |\prevdepth| as that would affect vertical spacing in the
% document. (The box itself should not cause any difference in break
% points as there is a node there anyway coming from the |\write| to
-% the aux file.
+% the aux file.)
% \begin{macrocode}
\dimen@\prevdepth
\nointerlineskip
@@ -451,8 +451,8 @@
% In inner vertical mode, attach the label to the right of the
% immediately preceding box, if it is a box before the current point.
% Otherwise just put it in a box of zero dimensions, with no interline
-% skip. (This may slightly move the surrounding text (but perhaps not
-% now that |\prevdepth| is restored.)
+% skip. This may slightly move the surrounding text (but perhaps not
+% now that |\prevdepth| is restored).
% \changes{v3.00}{1994/09/07}
% {Back up over a previous skip because of the new
% \cs{belowcaptionskip}}
@@ -502,7 +502,7 @@
\fi
\else
% \end{macrocode}
-% If we are in an numbered equation-style environment, do nothing as the
+% If we are in a numbered equation-style environment, do nothing as the
% code to print the number will also print the label, otherwise just
% stick the label at the current point, in a box of zero dimensions.
% \changes{v3.02}{1995/03/17}
@@ -650,7 +650,7 @@
% The following environments print an equation number, so |\label|
% should not print its argument at the point where it appears.
% Note this will fail to show the label if you are in an |eqnarray|
-% environment, and use |\label| together with |\nonumber| This might
+% environment, and use |\label| together with |\nonumber|. This might
% just about make sense if you are going to use |\pageref|, but that is
% too bad\ldots
% \begin{macrocode}
@@ -665,7 +665,7 @@
% \changes{v3.09}{1996/08/30}
% {Fix eqnarray AMS incompatibility. tools/2252}
% When the AMS packages are loaded |showkeys| assumes environments
-% work `The AMS way' However |eqnarray| (unlike |equation|) is not
+% work `The AMS way'. However, |eqnarray| (unlike |equation|) is not
% redefined, so here we need to remove some of the AMS hacks.
% \begin{macrocode}
\toks@\expandafter{\eqnarray}
diff --git a/macros/latex/required/tools/showkeys.pdf b/macros/latex/required/tools/showkeys.pdf
index 723b001ee1..cfda50983c 100644
--- a/macros/latex/required/tools/showkeys.pdf
+++ b/macros/latex/required/tools/showkeys.pdf
Binary files differ
diff --git a/macros/latex/required/tools/somedefs.pdf b/macros/latex/required/tools/somedefs.pdf
index 71ad9c4617..6a62cb5bbd 100644
--- a/macros/latex/required/tools/somedefs.pdf
+++ b/macros/latex/required/tools/somedefs.pdf
Binary files differ
diff --git a/macros/latex/required/tools/tabularx.dtx b/macros/latex/required/tools/tabularx.dtx
index 177d92f12f..6d59ca4c22 100644
--- a/macros/latex/required/tools/tabularx.dtx
+++ b/macros/latex/required/tools/tabularx.dtx
@@ -31,7 +31,7 @@
%<driver> \ProvidesFile{tabularx.drv}
% \fi
% \ProvidesFile{tabularx.dtx}
- [2020/01/15 v2.11c `tabularx' package (DPC)]
+ [2023/07/08 v2.11c `tabularx' package (DPC)]
% \iffalse
%<*driver>
\documentclass{ltxdoc}
@@ -164,7 +164,7 @@
% \item The body of the {\ttfamily tabularx} environment is in fact the
% argument to a command, and so certain constructions which are not
% allowed in command arguments (like "\verb") may not be used.\footnote
-% {Since Version 1.02, {\ttfamily\bslash verb and \ttfamily\bslash
+% {Since Version 1.02, {\ttfamily\bslash verb} and {\ttfamily\bslash
% verb*} may be used, but they may treat spaces incorrectly, and the
% argument can not contain an unmatched {\ttfamily\char`\{} or
% {\ttfamily\char`\}}, or a {\ttfamily\char`\%} character.}
@@ -207,7 +207,7 @@
%
% \DescribeMacro{\newcolumntype}
% These preamble specifications may of course be saved using the
-% command, "\newcolumntype", defined in {\ttfamily array.sty}. Thus we
+% command "\newcolumntype" defined in {\ttfamily array.sty}. Thus we
% may say\\
% "\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}"\\
% and then use {\ttfamily Y} in the {\ttfamily tabularx} preamble
@@ -314,7 +314,7 @@
% \footnote{This adds an extra level of grouping,
% which is not really needed. Instead, I could use \box0\ here, and
% \box2\ below, however the code here would then have to be moved after
-% the first line, because of the footnote to page 386 of the \TeX{}Book,
+% the first line, because of the footnote to page 386 of the \TeX{}book,
% and I do not think I should be writing code that is so obscure as to
% be documented in a footnote in an appendix called ``Dirty Tricks''!}
%
@@ -331,9 +331,9 @@
%\newenvironment{foo}{\tabularx{XX}}{\endtabularx}
%\end{verbatim}
% The scanner now looks for the end of the current environment ("foo" in
-% this example.) There are some restrictions on this usage, the
-% principal one being that "\endtabularx" must not be inside any "{ }" pairs
-% ao that the code before "\endtabularx" may be extracted and added to the table body
+% this example). There are some restrictions on this usage, the
+% principal one being that "\endtabularx" must not be inside any "{ }" pairs,
+% so that the code before "\endtabularx" may be extracted and added to the table body
% (prior to version 2.09 "\endtabularx" had to be
% the \emph{first} token of the `end code' of the environment).
% \begin{macrocode}
@@ -396,7 +396,7 @@
% \changes{v2.09}{2014/04/22}{macro added}
% \changes{v2.10}{2014/05/13}{macro modified to test for missing \cs{endtabularx}}
% \changes{v2.11}{2016/01/03}{Fix to previous change to guard against empty arg 2. (Ulrike Fischer)}
-% split up the end code, and extract the part that lives in the table body.
+% Split up the end code, and extract the part that lives in the table body.
% \begin{macrocode}
\long\def\TX@find@endtabularxa
#1\endtabularx#2\endtabularx#3\TX@find@endtabularxa{%
@@ -408,7 +408,7 @@
% \begin{macro}{\TX@find@endtabularxb}
% \changes{v2.09}{2014/04/22}{macro added}
% \changes{v2.10}{2014/05/13}{macro modified to test for missing \cs{endtabularx}}
-% split up the end code, and extract the part that lives outside the table body.
+% Split up the end code, and extract the part that lives outside the table body.
% \begin{macrocode}
\long\def\TX@find@endtabularxb
#1\endtabularx#2\endtabularx#3\TX@find@endtabularxb{%
@@ -502,7 +502,7 @@
\TX@col@width\TX@target
\global\TX@cols\@ne
% \end{macrocode}
-% Typeout some headings (unless this is disabled).
+% Type out some headings (unless this is disabled).
% \begin{macrocode}
\TX@typeout@
{\@spaces Table Width\@spaces Column Width\@spaces X Columns}%
@@ -514,7 +514,7 @@
\global\advance\TX@cols\@ne\NC@find p{\TX@col@width}}}%
% \end{macrocode}
% Repeatedly decrease column width until table is the correct width,
-% or stops shrinking, or the columns become two narrow.
+% or stops shrinking, or the columns become too narrow.
% If there are no multicolumn entries, this will only take one attempt.
% \begin{macrocode}
\loop
@@ -601,7 +601,7 @@
\ifdim\dimen@<\TX@delta
% \end{macrocode}
% If this amount is less than "\TX@delta", stop. ("\TX@delta"
-% should be non-zero otherwise we may miss the target due to rounding
+% should be non-zero, otherwise we may miss the target due to rounding
% error.)
% \begin{macrocode}
\TX@typeout@{Reached target.}%
@@ -621,7 +621,7 @@
\ifdim \dimen@ >\z@
% \end{macrocode}
% If the new width would be too narrow, abort the loop. At the moment
-% too narrow, means less than 0\,pt!
+% too narrow means less than 0\,pt!
%
% Prior to v2.03, if the loop was aborted here, the X columns were left
% with the width of the previous run, but this may make the table far
@@ -715,7 +715,7 @@
\expandafter\let\expandafter\endtabularx\csname endtabular*\endcsname
% \end{macrocode}
% Added at v1.05: disable "\write"s during a trial run. This trick is
-% from the \TeX{}Book.\footnote{Actually the \TeX{}Book trick does
+% from the \TeX{}book.\footnote{Actually the \TeX{}book trick does
% not work correctly, so changed for v2.05.}
% \changes{v2.05}{1997/09/18}
% {New \cs{write} trick. tools/2607}
@@ -789,7 +789,7 @@
% \end{macro}
%
% \begin{macro}{\TX@typeout}
-% The default is to be to be quiet
+% The default is to be quiet.
% \begin{macrocode}
\let\TX@typeout\@gobble
\let\TX@typeout@\@gobble
@@ -830,7 +830,7 @@
% tabularx}, but that did not stop people using it! This usually put
% \LaTeX\ into an irrecoverable error position, with error messages that
% did not mention the cause of the error. The `poor man's "\verb"' (and
-% "\verb*") defined here is based on page 382 of the \TeX{}Book. As
+% "\verb*") defined here is based on page 382 of the \TeX{}book. As
% explained there, doing verbatim this way means that spaces are not
% treated correctly, and so "\verb*" may well be useless, however I
% consider this section of code to be error-recovery, rather than a real
@@ -882,10 +882,10 @@
% does not consist of a single "{ }" group. \TeX\ would strip the outer
% braces from such a group. The `"!"' will be removed later.
%
-% Originally I followed Knuth, and had "\def\@tempa{##1}", however this
+% Originally I followed Knuth, and had "\def\@tempa{##1}", however, this
% did not allow "#" to appear in the argument. So in v1.04, I changed
-% this to use a token register, and "\edef". This allows "#" appear,
-% but makes each one appear twice!, so later we loop through, replacing
+% this to use a token register, and "\edef". This allows "#" to appear
+% but makes each one appear twice, so later we loop through, replacing
% "##" by "#".
% \begin{macrocode}
\def\TX@vb#1{\def\@tempa##1#1{\toks@{##1}\edef\@tempa{\the\toks@}%
diff --git a/macros/latex/required/tools/tabularx.pdf b/macros/latex/required/tools/tabularx.pdf
index 185925ebfb..4847659549 100644
--- a/macros/latex/required/tools/tabularx.pdf
+++ b/macros/latex/required/tools/tabularx.pdf
Binary files differ
diff --git a/macros/latex/required/tools/theorem.dtx b/macros/latex/required/tools/theorem.dtx
index 58476db07e..e3a8e90b8c 100644
--- a/macros/latex/required/tools/theorem.dtx
+++ b/macros/latex/required/tools/theorem.dtx
@@ -24,7 +24,7 @@
%%
%
%
-\def\FMithmInfo{2014/10/28 v2.2c Theorem extension package (FMi)}
+\def\FMithmInfo{2023/07/05 v2.2c Theorem extension package (FMi)}
%
% \ProvidesFile{theorem.dtx}[\FMithmInfo]
%\iffalse % this is a METACOMMENT !
@@ -100,7 +100,7 @@
%
% \begin{abstract}
% The macros described in this paper yield an extension of the
-% \LaTeX{} theorem mechanism. It is designed is to satisfy the
+% \LaTeX{} theorem mechanism. It is designed to satisfy the
% different requirements of various journals. Thus, the
% layout of the ``theorems'' can be manipulated by determining a
% ``style''. This article describes not only the use, but
@@ -226,7 +226,7 @@
% |\theorempreskipamount| and |\theorempostskipamount| define,
% respectively, the spacing before and after such an environment.
% These parameters apply for all theorem sets and can be manipulated
-% with the ordinary length macros. They are rubber lengths,
+% with the ordinary length macros. They are rubber lengths
% (`\textsf{skips}'), and therefore can contain \texttt{plus} and
% \texttt{minus} parts.
%
@@ -385,7 +385,7 @@
% \section{Definition of the Macros}
%
% If the file has been loaded before, we abort immediately. If not the
-% package announces itself (this is actually done at the very top if
+% package announces itself (this is actually done at the very top of
% the file---the way it is done isn't good style so don't copy it).
% \changes{v2.0e}{89/07/19}{Spaces removed from `typeout'.}
% \changes{v2.2b}{95/11/19}{Announce moved to top of file}
@@ -546,8 +546,8 @@
% ``non-Big-versions'', we have to avoid offering too many unused
% definitions. Therefore we define these styles in separate files
% that can be loaded on demand. Thus the commands themselves only
-% load these files. We use |\@input@| a \LaTeXe{} internal command
-% that ensures that the file will be listed with |\listfiles|
+% load these files. We use |\@input@|, a \LaTeXe{} internal command
+% that ensures that the file will be listed with |\listfiles|.
% \changes{v2.2a}{94/02/02}{Use `@input@ to load theorem layout files}
% \begin{macrocode}
\gdef\th@plain{\@input@{thp.sty}}
diff --git a/macros/latex/required/tools/theorem.pdf b/macros/latex/required/tools/theorem.pdf
index 28dec0a5bd..5163898bf6 100644
--- a/macros/latex/required/tools/theorem.pdf
+++ b/macros/latex/required/tools/theorem.pdf
Binary files differ
diff --git a/macros/latex/required/tools/tools-overview.pdf b/macros/latex/required/tools/tools-overview.pdf
index a456c299aa..1fa4dd3589 100644
--- a/macros/latex/required/tools/tools-overview.pdf
+++ b/macros/latex/required/tools/tools-overview.pdf
Binary files differ
diff --git a/macros/latex/required/tools/trace.pdf b/macros/latex/required/tools/trace.pdf
index cd6291818f..62243d66b6 100644
--- a/macros/latex/required/tools/trace.pdf
+++ b/macros/latex/required/tools/trace.pdf
Binary files differ
diff --git a/macros/latex/required/tools/varioref.pdf b/macros/latex/required/tools/varioref.pdf
index 4382c23f44..34b16f79ee 100644
--- a/macros/latex/required/tools/varioref.pdf
+++ b/macros/latex/required/tools/varioref.pdf
Binary files differ
diff --git a/macros/latex/required/tools/verbatim.dtx b/macros/latex/required/tools/verbatim.dtx
index 0085f166ea..832f80ef3a 100644
--- a/macros/latex/required/tools/verbatim.dtx
+++ b/macros/latex/required/tools/verbatim.dtx
@@ -48,14 +48,14 @@
\pagestyle{myheadings}
\title{A New Implementation of \LaTeX{}'s \\ \texttt{verbatim}
- and \texttt{verbatim*} Environments.}
+ and \texttt{verbatim*} Environments}
\author{Rainer Sch\"opf\\
\and
Bernd Raichle\\
\and
Chris Rowley}
-\date{2022/07/02}
+\date{2023/07/08}
\begin{document}
\markboth{Verbatim style option}{Verbatim style option}
\MaintainedByLaTeXTeam{tools}
@@ -434,7 +434,7 @@
%
% A further possibility is to define a variant of the |verbatim|
% environment that boxes and centers the whole verbatim text.
-% Note that the boxed text should be less than a page otherwise you
+% Note that the boxed text should be less than a page, otherwise you
% have to change this example.
%
%\begin{verbatim}
@@ -706,7 +706,7 @@
% necessary for correct vertical spacing if \texttt{verbatim}
% is nested inside \texttt{quote}.}
% The following extra vertical space is for compatibility with the
-% \LaTeX kernel: otherwise, using the |verbatim| package changes
+% \LaTeX{} kernel: otherwise, using the |verbatim| package changes
% the vertical spacing of a |verbatim| environment nested within a
% |quote| environment.
% \begin{macrocode}
@@ -790,18 +790,18 @@
\def\@noitemerr{\@warning{No verbatim text}}%
% \end{macrocode}
% Now we call |\obeylines| to make the end of line character
-% active,
+% active.
% \begin{macrocode}
\obeylines
% \end{macrocode}
-% change the category code of all special characters,
+% The category code of all special characters is changed,
% to $12$ (other).
% \changes{v1.5i}{1996/06/04}{Moved \cs{verbatim@font} after
% \cs{dospecials}.}
% \begin{macrocode}
\let\do\@makeother \dospecials
% \end{macrocode}
-% and switch to the font to be used.
+% We switch to the font to be used.
% \begin{macrocode}
\verbatim@font
% \end{macrocode}
@@ -1391,7 +1391,7 @@
% (This token list was inserted after the current macro
% by |\verbatim@@@|.)
% Since we are still in an |\edef| we protect it
-% by means of|\noexpand|.
+% by means of |\noexpand|.
% \begin{macrocode}
\noexpand\verbatim@rescan{\@currenvir}}%
% \end{macrocode}
@@ -1493,7 +1493,7 @@
\else
% \end{macrocode}
% At this point we pass the name of the file to |\@addtofilelist|
-% so that its appears in the output of a |\listfiles|
+% so that it appears in the output of a |\listfiles|
% command.
% \changes{v1.5j}{1996/09/25}{Add \cs{@addtofilelist} and
% \cs{ProvidesFile} so that the name of the file
@@ -1579,9 +1579,9 @@
% the contents of |\@filef@und|, we need to save it by expanding it
% first. The use of |\@swaptwoargs| makes it so that the
% \emph{expansion} of |\@filef@und| gets to be the second argument
-% of |\verbatim@readfile|.
+% of |\verbatim@readfile|.
% \changes{v1.5t}{2020-07-06}{Expand \cs{@filef@und} before the call
-% of \cs{@verbatim} (gh/222)}m
+% of \cs{@verbatim} (gh/222)}
% \begin{macrocode}
\def\verbatim@input#1#2{%
\IfFileExists {#2}{%
@@ -1606,7 +1606,7 @@
% \end{macro}
%
%
-% \subsection{Getting verbatim text into arguments.}
+% \subsection{Getting verbatim text into arguments}
%
% One way of achieving this is to define a macro (command) whose
% expansion is the required verbatim text. This command can then be
diff --git a/macros/latex/required/tools/verbatim.pdf b/macros/latex/required/tools/verbatim.pdf
index 94a1159503..2d3bf025df 100644
--- a/macros/latex/required/tools/verbatim.pdf
+++ b/macros/latex/required/tools/verbatim.pdf
Binary files differ
diff --git a/macros/latex/required/tools/xr.dtx b/macros/latex/required/tools/xr.dtx
index 0dd5f3ad95..be48f5a01b 100644
--- a/macros/latex/required/tools/xr.dtx
+++ b/macros/latex/required/tools/xr.dtx
@@ -25,7 +25,7 @@
%
%<package>\NeedsTeXFormat{LaTeX2e}
%<package>\ProvidesPackage{xr}
-%<package> [2020-05-10 v5.06 eXternal References (DPC)]
+%<package> [2023-07-04 v5.06 eXternal References (DPC)]
%
%<*driver>
\documentclass{ltxdoc}
@@ -74,7 +74,7 @@
% If any of the external documents, or the main document, use the same
% |\label| then an error will occur as the label will be multiply
% defined. To overcome this problem |\externaldocument| has an optional
-% argument. If you declare |\externaldocument[A-]{aaa}| Then all
+% argument. If you declare |\externaldocument[A-]{aaa}|, then all
% references from |aaa| are prefixed by |A-|. So for instance, if a
% section of |aaa| had |\label{intro}|, then this could be referenced
% with |\ref{A-intro}|. The prefix need not be |A-|, it can be any
diff --git a/macros/latex/required/tools/xr.pdf b/macros/latex/required/tools/xr.pdf
index 8af5483cd1..bbe96b4e1f 100644
--- a/macros/latex/required/tools/xr.pdf
+++ b/macros/latex/required/tools/xr.pdf
Binary files differ
diff --git a/macros/latex/required/tools/xspace.pdf b/macros/latex/required/tools/xspace.pdf
index 1ddc932527..9ed21d397c 100644
--- a/macros/latex/required/tools/xspace.pdf
+++ b/macros/latex/required/tools/xspace.pdf
Binary files differ
diff --git a/support/TeX4ht/source/ChangeLog b/support/TeX4ht/source/ChangeLog
index 6c152f54e5..88ba404e8a 100644
--- a/support/TeX4ht/source/ChangeLog
+++ b/support/TeX4ht/source/ChangeLog
@@ -1,3 +1,10 @@
+2023-10-31 Michal Hoftich <michal.h21@gmail.com>
+
+ * tex4ht-4ht.tex (enotez.4ht),
+ * tex4ht-html4.tex (html4.4ht): fixed missing and spurious space
+ around endnote mark. Don't show endnote mark in superscript.
+ https://tex.stackexchange.com/a/682624/2891
+
2023-10-27 Michal Hoftich <michal.h21@gmail.com>
* tex4ht-docbook.tex (docbook.4ht): fixed support for accented
diff --git a/support/TeX4ht/source/tex4ht-4ht.tex b/support/TeX4ht/source/tex4ht-4ht.tex
index 720483836c..631ba0523b 100644
--- a/support/TeX4ht/source/tex4ht-4ht.tex
+++ b/support/TeX4ht/source/tex4ht-4ht.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-4ht.tex 1398 2023-10-25 20:40:50Z michal_h21 $
+% $Id: tex4ht-4ht.tex 1400 2023-10-31 16:57:08Z michal_h21 $
% tex tex4ht-4ht or ht tex tex4ht-4ht
%
% Copyright 2009-2023 TeX Users Group
@@ -12794,6 +12794,7 @@ other packages (such as tablefootnote.sty) rely on them.
\<enotez definitions\><<<
\NewConfigure{enotezmark}{2}
\NewConfigure{enotezback}{2}
+\NewConfigure{enmark}{2}
% patch commands that print note numbers, so we can add links
\ExplSyntaxOn
% \:currentnoteid contains the note number
@@ -12803,6 +12804,10 @@ other packages (such as tablefootnote.sty) rely on them.
\protected\def\:tempa#1{\def\:currentnoteid{#1}\a:enotezback\o:enotez_write_list_number:n:{#1}\b:enotezback}
\HLet\enotez_write_list_number:n\:tempa
+% enmark has issue with spurious space after note number, but space is missing after dot.
+\cs_set:Npn \enmark #1 {\a:enmark#1\unskip\b:enmark}
+\Configure{enmark}{}{.}
+
\ExplSyntaxOff
>>>
diff --git a/support/TeX4ht/source/tex4ht-html4.tex b/support/TeX4ht/source/tex4ht-html4.tex
index f3a61fa344..ee47d2c956 100644
--- a/support/TeX4ht/source/tex4ht-html4.tex
+++ b/support/TeX4ht/source/tex4ht-html4.tex
@@ -1,4 +1,4 @@
-% $Id: tex4ht-html4.tex 1398 2023-10-25 20:40:50Z michal_h21 $
+% $Id: tex4ht-html4.tex 1400 2023-10-31 16:57:08Z michal_h21 $
% Compile 4 times: latex tex4ht-html4
% Copy html4.4ht into the work directory before all but the last compilation.
%
@@ -5682,7 +5682,8 @@ Add links and backlinks to pagenotes with the Enotez package
\<configure html4 enotez\><<<
\Configure{enotezmark}{\Link{enotez\:currentnoteid}{enotez-bk\:currentnoteid}}{\EndLink}
-\Configure{enotezback}{\Link{enotez-bk\:currentnoteid}{enotez\:currentnoteid}\HCode{<sup>}}{\HCode{</sup>}\EndLink}
+\Configure{enotezback}{\Link{enotez-bk\:currentnoteid}{enotez\:currentnoteid}}{\EndLink}
+\Configure{enmark}{}{\HCode{. }}
>>>
%%%%%%%%%%%%%%%%%%%%%
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb b/systems/texlive/tlnet/tlpkg/texlive.tlpdb
index 0b5a605f03..567e754558 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/2023
-depend revision/68706
+depend revision/68712
name 00texlive.image
category TLCore
-revision 68696
+revision 68711
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
@@ -586,6 +586,7 @@ runfiles size=13138
tlpkg/tlpsrc/autopdf.tlpsrc
tlpkg/tlpsrc/autopuncitems.tlpsrc
tlpkg/tlpsrc/autosp.tlpsrc
+ tlpkg/tlpsrc/autotype.tlpsrc
tlpkg/tlpsrc/auxhook.tlpsrc
tlpkg/tlpsrc/avantgar.tlpsrc
tlpkg/tlpsrc/avremu.tlpsrc
@@ -27874,6 +27875,57 @@ binfiles arch=x86_64-solaris size=15
bin/x86_64-solaris/autosp
bin/x86_64-solaris/tex2aspc
+name autotype
+category Package
+revision 68711
+shortdesc A LuaLaTeX package for automatic language-specific typography
+relocated 1
+longdesc autotype is a LuaLaTeX package for automatic language-specific
+longdesc typography. Currently, it supports ligature suppression at word
+longdesc boundaries, long s insertion for blackletter typesetting, and
+longdesc weighted hyphenation, but only for German (old and new
+longdesc orthography).
+containersize 456812
+containerchecksum a9f7f082fcbc2530265a2eb4484e7e193e727c8a679b399ac8825d0f7c79d960b84fc9f850e458904f9014bd9ecb1828e272b246e9a863ca686031b5efb91c8f
+doccontainersize 344352
+doccontainerchecksum c17f42a346aa1a800e6e1515e09a6d0c550b56b982b2acd2208b62028bc00f1d4af0823c9da9cf3bc78f4ef7925ac36619d5cf77c4dd1c77211fa1bacb74b4b5
+docfiles size=103
+ RELOC/doc/lualatex/autotype/README details="Readme"
+ RELOC/doc/lualatex/autotype/autotype-de.pdf details="Package documentation" language="de"
+ RELOC/doc/lualatex/autotype/autotype-de.tex
+runfiles size=1225
+ RELOC/tex/lualatex/autotype/autotype-cls_pdnm_oop.lua
+ RELOC/tex/lualatex/autotype/autotype-cls_pdnm_pattern.lua
+ RELOC/tex/lualatex/autotype/autotype-cls_pdnm_spot.lua
+ RELOC/tex/lualatex/autotype/autotype-cls_pdnm_trie_simple.lua
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1901-primary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1901-primary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1901-secondary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1901-secondary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1996-primary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1996-primary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1996-secondary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-1996-secondary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-CH-1901-primary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-CH-1901-primary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-CH-1901-secondary.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-hyph-de-CH-1901-secondary.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-ligbreak-de.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-ligbreak-de.pat.txt
+ RELOC/tex/lualatex/autotype/autotype-pdnm_nl_manipulation.lua
+ RELOC/tex/lualatex/autotype/autotype-round-s-de.lic.txt
+ RELOC/tex/lualatex/autotype/autotype-round-s-de.pat.txt
+ RELOC/tex/lualatex/autotype/autotype.lua
+ RELOC/tex/lualatex/autotype/autotype.sty
+catalogue-also selnolig
+catalogue-contact-bugs https://codeberg.org/wehr/autotype/issues
+catalogue-contact-repository https://codeberg.org/wehr/autotype
+catalogue-contact-support mailto:trennmuster@dante.de
+catalogue-ctan /macros/luatex/latex/autotype
+catalogue-license lppl1.3 mit other-free
+catalogue-topics hyphenation typesetting font-supp luatex expl3 german
+catalogue-version 0.4
+
name auxhook
category Package
revision 53173
@@ -70759,11 +70811,12 @@ containerchecksum 83be4aa190b32580ab6334a00785123be5678a95f84589dea2ccc2ce77a632
name collection-langgerman
category Collection
-revision 55706
+revision 68711
shortdesc German
relocated 1
longdesc Support for German.
depend apalike-german
+depend autotype
depend babel-german
depend bibleref-german
depend booktabs-de
@@ -70809,8 +70862,8 @@ depend udesoftec
depend uhrzeit
depend umlaute
depend voss-mathcol
-containersize 628
-containerchecksum 19b9f47b68ca6068900c413d8216e13c20d25ab084cdcbd500694a18a10cbaa35ba5681be09392e0b20873788519a436c28c1ea89a728e3f546083ce0883c15c
+containersize 632
+containerchecksum 3b52fac1e2520302998c3b11bc2f77b34d5bd4cc09f4fa4b9238ece66b0e36e676643f7476846d1b25eb64d31b0dbe87a33ad44669be101f61cf223e70ecb047
name collection-langgreek
category Collection
@@ -147221,7 +147274,7 @@ catalogue-version 1.0b
name hyperref
category Package
-revision 68630
+revision 68710
shortdesc Extensive support for hypertext in LaTeX
relocated 1
longdesc The hyperref package is used to handle cross-referencing
@@ -147252,16 +147305,16 @@ depend stringenc
depend url
depend zapfding
containersize 90912
-containerchecksum e79b5f0e7d1bfd398e448e0ae741e1f0cebbf0d637b5ecb59911b15a412b5aead0cce5df472e9c610e4ebe4e7c8beb409c5dc1c0a4f7c6ed2230018214a2e7be
-doccontainersize 3309220
-doccontainerchecksum ffc4b7b28c00e4c55f23762ba29206db2eee1344b43359d8a58eb0a37ca1e55937476813b8303b5edab6397af9e7ef47bfe69f6e1a837de2f08acd6a2f37460c
-docfiles size=1073
+containerchecksum 1698b1e6251d4540125b16dfe6b532fb752e99b3423a07b24c298556c87d4e073949f1cdc1257f4158eb3037aa7986a1ef589635b313dadb71d10e940648010c
+doccontainersize 3677552
+doccontainerchecksum 627997670a7dcc3f9ef096eec7086b9a660401cc62dbbdb35a1f6c90e79830458efa94651fad7da1163fc61d26bb9596d3d0428e9ba8d55e3b202acd96e7ab67
+docfiles size=1201
RELOC/doc/latex/hyperref/ChangeLog.txt
RELOC/doc/latex/hyperref/README.md details="Readme"
RELOC/doc/latex/hyperref/backref.pdf
RELOC/doc/latex/hyperref/hyperref-doc.css
RELOC/doc/latex/hyperref/hyperref-doc.html details="Manual, HTML version"
- RELOC/doc/latex/hyperref/hyperref-doc.pdf details="Manual, PDF version" language="en"
+ RELOC/doc/latex/hyperref/hyperref-doc.pdf details="Manual, PDF version"
RELOC/doc/latex/hyperref/hyperref-doc.tex
RELOC/doc/latex/hyperref/hyperref-doc2.html
RELOC/doc/latex/hyperref/hyperref-doc3.html
@@ -147275,8 +147328,10 @@ docfiles size=1073
RELOC/doc/latex/hyperref/hyperref.pdf
RELOC/doc/latex/hyperref/manifest.txt
RELOC/doc/latex/hyperref/nameref.pdf
-srccontainersize 414588
-srccontainerchecksum c155508515678b7419d68934951f783aaf66e9b07a0d4861262f0b2cb35fef1d4e7eeb53cb29773524234a0e7d9a66949ff1919fbc65fcad3c511ec9f2bf2cb1
+ RELOC/doc/latex/hyperref/paper.pdf details="Paper on tagging and navigation"
+ RELOC/doc/latex/hyperref/slides.pdf
+srccontainersize 414660
+srccontainerchecksum 8fa06ec209982889a97e73ca814dab1d5af850ab20e0c32447b84e148835548279b81dfe4ea91d8f3dd7c56386865ed7d90a01018501b814dc5d8fc4d52acfc9
srcfiles size=313
RELOC/source/latex/hyperref/backref.dtx
RELOC/source/latex/hyperref/bmhydoc.sty
@@ -147287,7 +147342,7 @@ srcfiles size=313
RELOC/source/latex/hyperref/hyperref.dtx
RELOC/source/latex/hyperref/hyperref.ins
RELOC/source/latex/hyperref/nameref.dtx
-runfiles size=201
+runfiles size=202
RELOC/tex/latex/hyperref/backref.sty
RELOC/tex/latex/hyperref/hdvipdfm.def
RELOC/tex/latex/hyperref/hdvips.def
@@ -147322,7 +147377,7 @@ catalogue-contact-home https://github.com/latex3/hyperref
catalogue-ctan /macros/latex/contrib/hyperref
catalogue-license lppl1.3
catalogue-topics hyper pdf-feat adobe-distiller form-fillin etex
-catalogue-version 7.01c
+catalogue-version 7.01d
name hyperxmp
category Package
@@ -171888,7 +171943,7 @@ catalogue-version 3.35
name kpfonts-otf
category Package
-revision 67811
+revision 68709
shortdesc OTF version of the Kp-fonts
relocated 1
longdesc This bundle provides OpenType versions of the Type1 Kp-fonts
@@ -171902,10 +171957,10 @@ longdesc st), ancient long-s and a long-tailed capital Q are available
longdesc via font features. Math fonts cover all usual symbols including
longdesc AMS'; a full list of available symbols is provided, see the
longdesc 'List of glyphs'.
-containersize 1114968
-containerchecksum afa444e525103a1b8657570a56551c4974ac94151aad9c0bf98a80fffcd454fd228a683aacd842ec7ed2fe39840081d715e9aca00525582cf0f7d90b610167d7
-doccontainersize 2030104
-doccontainerchecksum ae7a86909eb7f513ebb65c13acc28eeb4d11c1af4a941d4a60e180f51c75def00bd097473fc1851403889b19990abe54ff13b3104f69ba333f25c3c4989f6328
+containersize 1112096
+containerchecksum effa512d6b841c9bae9d8f93c15b96af60f6bd97ab0751e404a52b6b800493f147b9490bf3094027e6573e7a85e9c5238ce15cf55f4b41b5aeb606db8659b476
+doccontainersize 2031084
+doccontainerchecksum 62499009d6b24c8171ae639a83335b6bc92238c91e03546819902dc3c6bfb4e5bf1a0ffab8d55df9f72e952cc9a1da6300c866171923b28576839e864ce099df
docfiles size=562
RELOC/doc/fonts/kpfonts-otf/Kpfonts-OTF-Doc-English.ltx
RELOC/doc/fonts/kpfonts-otf/Kpfonts-OTF-Doc-English.pdf details="Package documentation (English)" language="en"
@@ -171914,7 +171969,7 @@ docfiles size=562
RELOC/doc/fonts/kpfonts-otf/README.md details="Readme"
RELOC/doc/fonts/kpfonts-otf/unimath-kpfonts.ltx
RELOC/doc/fonts/kpfonts-otf/unimath-kpfonts.pdf details="List of glyphs"
-runfiles size=836
+runfiles size=839
RELOC/fonts/opentype/public/kpfonts-otf/KpMath-Bold.otf
RELOC/fonts/opentype/public/kpfonts-otf/KpMath-Light.otf
RELOC/fonts/opentype/public/kpfonts-otf/KpMath-Regular.otf
@@ -171938,6 +171993,9 @@ runfiles size=836
RELOC/fonts/opentype/public/kpfonts-otf/KpSans-Italic.otf
RELOC/fonts/opentype/public/kpfonts-otf/KpSans-Regular.otf
RELOC/tex/latex/kpfonts-otf/KpLight.fontspec
+ RELOC/tex/latex/kpfonts-otf/KpMath-Light.fontspec
+ RELOC/tex/latex/kpfonts-otf/KpMath-Regular.fontspec
+ RELOC/tex/latex/kpfonts-otf/KpMath-Sans.fontspec
RELOC/tex/latex/kpfonts-otf/KpMono.fontspec
RELOC/tex/latex/kpfonts-otf/KpRoman.fontspec
RELOC/tex/latex/kpfonts-otf/KpSans.fontspec
@@ -171945,8 +172003,8 @@ runfiles size=836
catalogue-also kpfonts
catalogue-ctan /fonts/kpfonts-otf
catalogue-license ofl lppl1.3
-catalogue-topics font font-body font-serif font-sans font-proportional font-mono font-maths font-otf font-supp
-catalogue-version 0.56
+catalogue-topics font font-body font-maths font-mono font-otf font-proportional font-sans font-serif font-supp
+catalogue-version 0.60
name ksfh_nat
category Package
@@ -304833,7 +304891,7 @@ binfiles arch=x86_64-solaris size=1
name tex4ht
category Package
-revision 68679
+revision 68712
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
@@ -304854,10 +304912,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 1104088
-containerchecksum f8da89347294ddb64319c417f9d4551bcb06759d4fa821ab43bda3f7a096303d12a54da545608634e41ac5f6765432c894ea7a34b00a751cdb58e392f1f78125
+containersize 1104056
+containerchecksum 05e5719253213e19af6a459fb7730c3a3606fda749727bc850ecaf74eb65b3ff18dc487ed1031d76be6fc23b76b46e51613b0e53adc65f758abac8544ad72da0
doccontainersize 136384
-doccontainerchecksum 626b1ba0ff10d0de25adb4aa5e8fe6e039210a938cae7c551dc6386fbbf0c8161bc6280f979d44fed45e6fd29b44224921996d45c42e303c4317f1e3d68eff33
+doccontainerchecksum 5f45243ef5c1d4bb91dd117dc881c39342690d11e085a6a66d8567faf632cafb33106075241a263603548155e90e4346c1a8b08cb26796f45a0463408585a321
docfiles size=260
texmf-dist/doc/generic/tex4ht/Makefile
texmf-dist/doc/generic/tex4ht/README details="Readme"
@@ -304929,8 +304987,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 1458488
-srccontainerchecksum 1aacb615ce4662d85ff31a6fcce34c10c1202c9012b60f104d710091326edb42cceee92ff4a4fa2a24b5e4a93f14a318525c63677fa8927b9718a878b486ed46
+srccontainersize 1458288
+srccontainerchecksum 80f90429e640e68cb3e93eb3acb8a07f40a2a35e4931398efb52d3bb4cbd89a0c1d30da5166712abfe4dcd2130eb4f7f0c5c2155d5d66c28680d06432f7faccc
srcfiles size=4399
texmf-dist/source/generic/tex4ht/ChangeLog
texmf-dist/source/generic/tex4ht/Makefile
@@ -316436,7 +316494,7 @@ docfiles size=376
name texlive-scripts
category TLCore
-revision 68698
+revision 68708
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.
@@ -316445,9 +316503,9 @@ depend texlive.infra
execute addMap mathpple.map
postaction shortcut type=menu name="TeX Live command-line" cmd=TEXDIR/tlpkg/installer/tl-cmd.bat
containersize 114096
-containerchecksum 4182770ade09094b01aeef5f329af7f22af772a4660b7936c5d2307ff3b846d16b4a3e1358afcd84dbb969f2eef300495417a02b2356880db7bc4fa9c5ed5c1e
-doccontainersize 428452
-doccontainerchecksum 4fe54bb72519907d5293e5d8b8521a6aa93e43ac59e6be69235cbc3f7d27b68aad04259f30d1ccbb70f8722946fa55ca63951f17a807b212db7afe25ccdbd582
+containerchecksum f84b1528a750ff84a11dd7b75d309b72f6b1b37f0a2353650a3f30f89944d13d5601644e6d6a098f70f33b8da07e33eed7a2a9de14216df21ad71ecd9b8f56f8
+doccontainersize 428516
+doccontainerchecksum c82e857827e22deabcc8e4ac4af4603182cbb088d7a4d1cd1004dd49d582f01e3000d741aa6ceb716b4b7fc09fab2d67ed53a3839eca241ccce7c9ca51e49b36
docfiles size=550
doc.html
texmf-dist/doc/man/man1/fmtutil-sys.1
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
index 0cf9b0879e..a3bbe65839 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5
@@ -1 +1 @@
-8bf7d3cc4d4b71f2ffd9e77360c7cf0c texlive.tlpdb
+35478c2ef6518ae0f79022d69680b16e texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
index d3d38a0b77..8b9c4b2535 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512
@@ -1 +1 @@
-54a4de568ee3b4539d3dba54af0dd757b822dee60ba3b701b3c4500b415109fcb6b7725434f2a8f1691285e781f8137ddc98405b0921ca20e1b961d1f40aa4e0 texlive.tlpdb
+99143a6009d795d77cf75faa1da2ce585b07eec0fc4917477bab93b059ffa19bb2ec1b335617599fc40af6741a789da9e2760d0d2524192584f5812fd6cd4751 texlive.tlpdb
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
index cff75059ab..8e3022ec64 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc
@@ -1,11 +1,11 @@
-----BEGIN PGP SIGNATURE-----
-iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmVATf8ACgkQTOGHfhlD
-jHBKfggAsfBQsoizu20N4prH3lrbHYwyUaLR007p8l1PxfpICY0i3lYXaNQsraGx
-D+ypagh+rZY1qAPIb5bfRYtXC5YVoGkeLwfj4L2+nfGIq+YGgtjQAWhJHn35egxw
-OK9SZpgq14bCtB9nSeLWsVULmpGyDnOdQ5nlrkfk+QbqJ0oGJEdwe/Jhx6NcxVx9
-NEa24ak72JIPCVjOGOeIUc6CVI13sfFWDWp2OiOKIz/KPf72JBf94FyOmfAoU/y1
-NXwTFV8GuT4W3z5DoQnSV6sLex4s17Yoze4y/Rmnoe6XMYgyXULJTMrGyQp9k20+
-ByTUnwq3xgi3SX9gk56S65h9/8i5ZQ==
-=lOIW
+iQEzBAEBCgAdFiEE2PL4YFeoV+QqiBBqTOGHfhlDjHAFAmVBoCcACgkQTOGHfhlD
+jHCu2gf/VvdX2M3xd1k0ddzrPweooyN+upT1oeEzTwJ1sm0SzSuC1N2icw2E0p55
+SVeoV6IbBuLwKKeFRmOW/0tuev2+1abZsnClLQNXKIXV5MD9jLTogR0aBfbny9Rd
+aIm5yfbVOvd5dT9p/sBYBcVSw+7Gpg7JVQ+Rgjn61UbUUiOIlY+VYwIeOl81XwEw
+5IQtKmqrSIwRgjA6nj3St3iIciJZWCbMWJctbB+xETOZ4AuaXTV049xSyXY2RESu
+db1BG7rWJdjfWRtvTZD2XQGZxS2I5BzUsNMQjoHLYY+nQedP/wLw0KjFuwXmvYSa
+gq1wGrSkCfaPmlCXnDon2Kf7S8QX1Q==
+=8zR3
-----END PGP SIGNATURE-----
diff --git a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
index 3537d4ede5..46f44b21d0 100644
--- a/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
+++ b/systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz
Binary files differ
diff --git a/timestamp b/timestamp
index 25139f1afd..a726e73fcb 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:
-2023-11-01-02-02
+2023-11-02-02-02