From 32e0f5d0a5abc4f2b6c7341f19b854b5945c3ebd Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 21 Sep 2021 03:02:01 +0000 Subject: CTAN sync 202109210302 --- FILES.byname | 1545 ++++++++-------- FILES.byname.gz | Bin 2388058 -> 2388331 bytes FILES.last07days | 1117 ++++++++---- graphics/mcf2graph/CHANGELOG | 14 +- graphics/mcf2graph/README | 19 +- graphics/mcf2graph/mcf2graph.mf | 617 ++++--- graphics/mcf2graph/mcf_data_base.mcf | 10 +- graphics/mcf2graph/mcf_exa_soc.mf | 27 +- graphics/mcf2graph/mcf_example.pdf | Bin 314296 -> 314077 bytes graphics/mcf2graph/mcf_example.tex | 4 +- graphics/mcf2graph/mcf_man_soc.mf | 8 +- graphics/mcf2graph/mcf_manual.pdf | Bin 383098 -> 344886 bytes graphics/mcf2graph/mcf_manual.tex | 85 +- graphics/mcf2graph/mcf_mplib_exa.pdf | Bin 184493 -> 184158 bytes graphics/mcf2graph/mcf_mplib_exa.tex | 22 +- graphics/mcf2graph/mcf_setup.sty | 5 +- macros/latex-dev/base/README.md | 2 +- macros/latex-dev/base/alltt.pdf | Bin 214710 -> 214710 bytes macros/latex-dev/base/cfgguide.pdf | Bin 242886 -> 242886 bytes macros/latex-dev/base/changes.txt | 176 ++ macros/latex-dev/base/classes.dtx | 8 +- macros/latex-dev/base/classes.pdf | Bin 550002 -> 550711 bytes macros/latex-dev/base/clsguide.pdf | Bin 402779 -> 402779 bytes macros/latex-dev/base/cmfonts.pdf | Bin 292317 -> 292317 bytes macros/latex-dev/base/cyrguide.pdf | Bin 239681 -> 239681 bytes macros/latex-dev/base/doc.pdf | Bin 676637 -> 676958 bytes macros/latex-dev/base/docstrip.pdf | Bin 503316 -> 503607 bytes macros/latex-dev/base/encguide.pdf | Bin 1316472 -> 1316472 bytes macros/latex-dev/base/exscale.pdf | Bin 212307 -> 212307 bytes macros/latex-dev/base/fix-cm.pdf | Bin 287672 -> 287672 bytes macros/latex-dev/base/fntguide.pdf | Bin 493957 -> 493957 bytes macros/latex-dev/base/graphpap.pdf | Bin 169323 -> 169323 bytes macros/latex-dev/base/ifthen.pdf | Bin 220417 -> 220417 bytes macros/latex-dev/base/inputenc.pdf | Bin 318168 -> 318168 bytes macros/latex-dev/base/lamport-manual.err | 383 ++++ macros/latex-dev/base/lamport-manual.pdf | Bin 0 -> 170875 bytes macros/latex-dev/base/latexchanges.pdf | Bin 469966 -> 469966 bytes macros/latex-dev/base/latexrelease.pdf | Bin 290495 -> 290495 bytes macros/latex-dev/base/latexsym.pdf | Bin 208359 -> 208359 bytes macros/latex-dev/base/lb2.err | 21 +- macros/latex-dev/base/lb2.pdf | Bin 252154 -> 252154 bytes macros/latex-dev/base/letter.pdf | Bin 328861 -> 328443 bytes macros/latex-dev/base/lgc2.err | 21 +- macros/latex-dev/base/lgc2.pdf | Bin 215091 -> 215091 bytes macros/latex-dev/base/lppl.pdf | Bin 132373 -> 132373 bytes macros/latex-dev/base/ltclass.dtx | 153 +- macros/latex-dev/base/ltcmd.dtx | 805 ++++++++- macros/latex-dev/base/ltcmdhooks-code.pdf | Bin 693154 -> 699078 bytes macros/latex-dev/base/ltcmdhooks-doc.pdf | Bin 479463 -> 479642 bytes macros/latex-dev/base/ltcmdhooks.dtx | 87 +- macros/latex-dev/base/ltcounts.dtx | 132 +- macros/latex-dev/base/lterror.dtx | 67 +- macros/latex-dev/base/ltexpl.dtx | 2 +- macros/latex-dev/base/ltfilehook-code.pdf | Bin 795484 -> 795879 bytes macros/latex-dev/base/ltfilehook-doc.pdf | Bin 546050 -> 546791 bytes macros/latex-dev/base/ltfilehook.dtx | 164 +- macros/latex-dev/base/ltfiles.dtx | 20 +- macros/latex-dev/base/ltfinal.dtx | 40 +- macros/latex-dev/base/ltfntcmd.dtx | 5 +- macros/latex-dev/base/ltfssini.dtx | 383 +++- macros/latex-dev/base/ltfsstrc.dtx | 2 +- macros/latex-dev/base/lthooks-code.pdf | Bin 1029167 -> 1083948 bytes macros/latex-dev/base/lthooks-doc.pdf | Bin 683895 -> 703437 bytes macros/latex-dev/base/lthooks.dtx | 1899 ++++++++++++-------- macros/latex-dev/base/ltluatex.dtx | 4 +- macros/latex-dev/base/ltluatex.pdf | Bin 325289 -> 325107 bytes macros/latex-dev/base/ltnews.pdf | Bin 1079232 -> 1116092 bytes macros/latex-dev/base/ltnews01.pdf | Bin 161518 -> 161518 bytes macros/latex-dev/base/ltnews02.pdf | Bin 150466 -> 150466 bytes macros/latex-dev/base/ltnews03.pdf | Bin 150493 -> 150493 bytes macros/latex-dev/base/ltnews04.pdf | Bin 143686 -> 143686 bytes macros/latex-dev/base/ltnews05.pdf | Bin 174488 -> 174488 bytes macros/latex-dev/base/ltnews06.pdf | Bin 142909 -> 142909 bytes macros/latex-dev/base/ltnews07.pdf | Bin 138044 -> 138044 bytes macros/latex-dev/base/ltnews08.pdf | Bin 155055 -> 155055 bytes macros/latex-dev/base/ltnews09.pdf | Bin 129032 -> 129032 bytes macros/latex-dev/base/ltnews10.pdf | Bin 159313 -> 159313 bytes macros/latex-dev/base/ltnews11.pdf | Bin 111955 -> 111955 bytes macros/latex-dev/base/ltnews12.pdf | Bin 147587 -> 147587 bytes macros/latex-dev/base/ltnews13.pdf | Bin 173323 -> 173323 bytes macros/latex-dev/base/ltnews14.pdf | Bin 161405 -> 161405 bytes macros/latex-dev/base/ltnews15.pdf | Bin 130447 -> 130447 bytes macros/latex-dev/base/ltnews16.pdf | Bin 146533 -> 146533 bytes macros/latex-dev/base/ltnews17.pdf | Bin 166368 -> 166368 bytes macros/latex-dev/base/ltnews18.pdf | Bin 38031 -> 38031 bytes macros/latex-dev/base/ltnews19.pdf | Bin 245818 -> 245818 bytes macros/latex-dev/base/ltnews20.pdf | Bin 297070 -> 297070 bytes macros/latex-dev/base/ltnews21.pdf | Bin 244869 -> 244869 bytes macros/latex-dev/base/ltnews22.pdf | Bin 318399 -> 318399 bytes macros/latex-dev/base/ltnews23.pdf | Bin 287125 -> 287125 bytes macros/latex-dev/base/ltnews24.pdf | Bin 265211 -> 265211 bytes macros/latex-dev/base/ltnews25.pdf | Bin 205162 -> 205162 bytes macros/latex-dev/base/ltnews26.pdf | Bin 379735 -> 379735 bytes macros/latex-dev/base/ltnews27.pdf | Bin 252432 -> 252432 bytes macros/latex-dev/base/ltnews28.pdf | Bin 387987 -> 387987 bytes macros/latex-dev/base/ltnews29.pdf | Bin 454808 -> 454808 bytes macros/latex-dev/base/ltnews30.pdf | Bin 511855 -> 511855 bytes macros/latex-dev/base/ltnews31.pdf | Bin 526312 -> 526312 bytes macros/latex-dev/base/ltnews32.pdf | Bin 546162 -> 546162 bytes macros/latex-dev/base/ltnews33.pdf | Bin 522413 -> 522413 bytes macros/latex-dev/base/ltnews34.pdf | Bin 310056 -> 505243 bytes macros/latex-dev/base/ltnews34.tex | 512 +++++- macros/latex-dev/base/ltoutenc.dtx | 10 +- macros/latex-dev/base/ltoutput.dtx | 78 +- macros/latex-dev/base/ltpara-code.pdf | Bin 664537 -> 666188 bytes macros/latex-dev/base/ltpara-doc.pdf | Bin 560270 -> 560534 bytes macros/latex-dev/base/ltpara.dtx | 65 +- macros/latex-dev/base/ltplain.dtx | 20 +- macros/latex-dev/base/ltsect.dtx | 42 +- macros/latex-dev/base/ltshipout-code.pdf | Bin 818942 -> 818929 bytes macros/latex-dev/base/ltshipout-doc.pdf | Bin 564769 -> 564752 bytes macros/latex-dev/base/ltshipout.dtx | 2 +- macros/latex-dev/base/ltvers.dtx | 14 +- macros/latex-dev/base/ltx3info.pdf | Bin 219354 -> 219354 bytes macros/latex-dev/base/ltxdoc.pdf | Bin 238577 -> 238577 bytes macros/latex-dev/base/makeindx.pdf | Bin 173682 -> 173682 bytes macros/latex-dev/base/manifest.txt | 2 +- macros/latex-dev/base/manual.err | 365 ---- macros/latex-dev/base/manual.pdf | Bin 160521 -> 0 bytes macros/latex-dev/base/modguide.pdf | Bin 243601 -> 243601 bytes macros/latex-dev/base/nfssfont.pdf | Bin 218782 -> 218782 bytes macros/latex-dev/base/proc.pdf | Bin 233995 -> 233995 bytes macros/latex-dev/base/slides.pdf | Bin 374051 -> 374051 bytes macros/latex-dev/base/slifonts.pdf | Bin 234008 -> 234008 bytes macros/latex-dev/base/source2e.pdf | Bin 5280988 -> 5421635 bytes macros/latex-dev/base/syntonly.pdf | Bin 197319 -> 197195 bytes macros/latex-dev/base/tlc2.err | 25 +- macros/latex-dev/base/tlc2.pdf | Bin 289245 -> 289519 bytes macros/latex-dev/base/tulm.fdd | 9 +- macros/latex-dev/base/tulm.pdf | Bin 170529 -> 170530 bytes macros/latex-dev/base/usrguide.pdf | Bin 430996 -> 430996 bytes macros/latex-dev/base/usrguide3.pdf | Bin 325349 -> 325727 bytes macros/latex-dev/base/usrguide3.tex | 14 +- macros/latex-dev/base/utf8ienc.dtx | 16 +- macros/latex-dev/base/utf8ienc.pdf | Bin 362073 -> 361582 bytes macros/latex-dev/base/webcomp.err | 21 +- macros/latex-dev/base/webcomp.pdf | Bin 146200 -> 146200 bytes macros/latex-dev/required/amsmath/README.md | 6 +- macros/latex-dev/required/amsmath/amsbsy.pdf | Bin 173746 -> 173746 bytes macros/latex-dev/required/amsmath/amscd.pdf | Bin 178672 -> 178672 bytes macros/latex-dev/required/amsmath/amsgen.pdf | Bin 176740 -> 176740 bytes macros/latex-dev/required/amsmath/amsldoc.pdf | Bin 508231 -> 508199 bytes macros/latex-dev/required/amsmath/amsldoc.tex | 7 +- macros/latex-dev/required/amsmath/amsmath.dtx | 29 +- macros/latex-dev/required/amsmath/amsmath.pdf | Bin 398817 -> 399552 bytes macros/latex-dev/required/amsmath/amsopn.dtx | 6 +- macros/latex-dev/required/amsmath/amsopn.pdf | Bin 138991 -> 138783 bytes macros/latex-dev/required/amsmath/amstext.dtx | 6 +- macros/latex-dev/required/amsmath/amstext.pdf | Bin 215693 -> 215810 bytes macros/latex-dev/required/amsmath/amsxtra.pdf | Bin 112556 -> 112556 bytes macros/latex-dev/required/amsmath/changes.txt | 5 + macros/latex-dev/required/amsmath/subeqn.pdf | Bin 109737 -> 109737 bytes macros/latex-dev/required/amsmath/technote.pdf | Bin 145610 -> 145610 bytes macros/latex-dev/required/amsmath/testmath.pdf | Bin 454662 -> 454662 bytes macros/latex-dev/required/firstaid/changes.txt | 22 +- .../latex2e-first-aid-for-external-files.dtx | 168 +- .../latex2e-first-aid-for-external-files.pdf | Bin 237390 -> 246012 bytes macros/latex-dev/required/graphics/README.md | 2 +- macros/latex-dev/required/graphics/changes.txt | 14 +- macros/latex-dev/required/graphics/color.pdf | Bin 215002 -> 215002 bytes macros/latex-dev/required/graphics/drivers.pdf | Bin 286309 -> 286309 bytes macros/latex-dev/required/graphics/epsfig.pdf | Bin 167686 -> 167686 bytes macros/latex-dev/required/graphics/graphics.pdf | Bin 310676 -> 310676 bytes macros/latex-dev/required/graphics/graphicx.dtx | 11 +- macros/latex-dev/required/graphics/graphicx.pdf | Bin 247910 -> 248231 bytes macros/latex-dev/required/graphics/grfguide.pdf | Bin 330071 -> 330071 bytes macros/latex-dev/required/graphics/keyval.pdf | Bin 239654 -> 239654 bytes macros/latex-dev/required/graphics/lscape.pdf | Bin 163584 -> 163584 bytes macros/latex-dev/required/graphics/rotating.pdf | Bin 269186 -> 269103 bytes macros/latex-dev/required/graphics/rotex.pdf | Bin 172231 -> 172231 bytes macros/latex-dev/required/graphics/trig.dtx | 13 +- macros/latex-dev/required/graphics/trig.pdf | Bin 207299 -> 206897 bytes macros/latex-dev/required/tools/README.md | 2 +- macros/latex-dev/required/tools/afterpage.pdf | Bin 205344 -> 205344 bytes macros/latex-dev/required/tools/array.dtx | 8 +- macros/latex-dev/required/tools/array.pdf | Bin 516483 -> 517124 bytes macros/latex-dev/required/tools/bm.pdf | Bin 331424 -> 331424 bytes macros/latex-dev/required/tools/calc.pdf | Bin 370414 -> 370414 bytes macros/latex-dev/required/tools/changes.txt | 23 +- macros/latex-dev/required/tools/dcolumn.pdf | Bin 220689 -> 220689 bytes macros/latex-dev/required/tools/delarray.pdf | Bin 198647 -> 198647 bytes macros/latex-dev/required/tools/enumerate.pdf | Bin 215355 -> 215355 bytes macros/latex-dev/required/tools/fileerr.pdf | Bin 195103 -> 195434 bytes macros/latex-dev/required/tools/fontsmpl.pdf | Bin 154034 -> 154034 bytes macros/latex-dev/required/tools/ftnright.pdf | Bin 369810 -> 370134 bytes macros/latex-dev/required/tools/hhline.pdf | Bin 189538 -> 189538 bytes macros/latex-dev/required/tools/indentfirst.pdf | Bin 157803 -> 157803 bytes macros/latex-dev/required/tools/layout.pdf | Bin 267761 -> 267761 bytes macros/latex-dev/required/tools/longtable.dtx | 13 +- macros/latex-dev/required/tools/longtable.pdf | Bin 382541 -> 382155 bytes macros/latex-dev/required/tools/multicol.dtx | 4 +- macros/latex-dev/required/tools/multicol.pdf | Bin 516139 -> 516148 bytes macros/latex-dev/required/tools/rawfonts.pdf | Bin 146534 -> 146534 bytes macros/latex-dev/required/tools/shellesc.pdf | Bin 183532 -> 183532 bytes macros/latex-dev/required/tools/showkeys.pdf | Bin 260624 -> 260624 bytes macros/latex-dev/required/tools/somedefs.pdf | Bin 175169 -> 175169 bytes macros/latex-dev/required/tools/tabularx.pdf | Bin 278041 -> 278041 bytes macros/latex-dev/required/tools/theorem.pdf | Bin 351317 -> 351657 bytes macros/latex-dev/required/tools/tools-overview.pdf | Bin 73674 -> 73674 bytes macros/latex-dev/required/tools/trace.pdf | Bin 229713 -> 229713 bytes macros/latex-dev/required/tools/varioref.dtx | 6 +- macros/latex-dev/required/tools/varioref.pdf | Bin 383483 -> 383524 bytes macros/latex-dev/required/tools/verbatim.pdf | Bin 330815 -> 330815 bytes macros/latex-dev/required/tools/xr.pdf | Bin 177595 -> 177595 bytes macros/latex-dev/required/tools/xspace.pdf | Bin 256897 -> 256897 bytes macros/latex/contrib/elteikthesis/LICENSE | 2 +- macros/latex/contrib/elteikthesis/README.md | 11 +- macros/latex/contrib/elteikthesis/README.pdf | Bin 152282 -> 157578 bytes macros/latex/contrib/elteikthesis/README_hu.md | 11 +- macros/latex/contrib/elteikthesis/README_hu.pdf | Bin 156453 -> 161570 bytes .../latex/contrib/elteikthesis/chapters/impl.tex | 32 +- .../latex/contrib/elteikthesis/chapters/user.tex | 4 +- .../contrib/elteikthesis/elteikthesis-minted.pdf | Bin 0 -> 20680 bytes .../contrib/elteikthesis/elteikthesis-minted.tex | 33 + macros/latex/contrib/elteikthesis/elteikthesis.cls | 105 +- macros/latex/contrib/elteikthesis/elteikthesis.pdf | Bin 461186 -> 446255 bytes macros/latex/contrib/elteikthesis/elteikthesis.tex | 26 +- macros/latex/contrib/elteikthesis/settings.tex | 16 - macros/latex/contrib/genealogytree/CHANGES.md | 398 ++++ macros/latex/contrib/genealogytree/README | 48 - macros/latex/contrib/genealogytree/README.md | 49 + .../genealogytree/genealogytree-example-1.pdf | Bin 202898 -> 207638 bytes .../genealogytree/genealogytree-example-2.pdf | Bin 251357 -> 259454 bytes .../genealogytree/genealogytree-example-3.pdf | Bin 197945 -> 205128 bytes .../genealogytree/genealogytree-example-4.pdf | Bin 254364 -> 307949 bytes .../genealogytree/genealogytree-languages.pdf | Bin 441585 -> 466559 bytes .../latex/contrib/genealogytree/genealogytree.pdf | Bin 7328827 -> 8620249 bytes .../latex/contrib/genealogytree/genealogytree.sty | 9 +- .../contrib/genealogytree/gtrcore.contour.code.tex | 6 +- .../contrib/genealogytree/gtrcore.drawing.code.tex | 6 +- .../contrib/genealogytree/gtrcore.node.code.tex | 6 +- .../contrib/genealogytree/gtrcore.options.code.tex | 18 +- .../contrib/genealogytree/gtrcore.parser.code.tex | 6 +- .../genealogytree/gtrcore.processing.code.tex | 6 +- .../contrib/genealogytree/gtrcore.symbols.code.tex | 6 +- .../contrib/genealogytree/gtrlang.danish.code.tex | 6 +- .../contrib/genealogytree/gtrlang.dutch.code.tex | 6 +- .../contrib/genealogytree/gtrlang.english.code.tex | 6 +- .../contrib/genealogytree/gtrlang.french.code.tex | 6 +- .../contrib/genealogytree/gtrlang.german.code.tex | 6 +- .../contrib/genealogytree/gtrlang.italian.code.tex | 6 +- .../genealogytree/gtrlang.portuguese.code.tex | 87 + .../contrib/genealogytree/gtrlang.spanish.code.tex | 6 +- .../contrib/genealogytree/gtrlang.swedish.code.tex | 6 +- .../contrib/genealogytree/gtrlib.debug.code.tex | 6 +- .../contrib/genealogytree/gtrlib.fanchart.code.tex | 6 +- .../genealogytree/gtrlib.templates.code.tex | 6 +- macros/latex/contrib/lipsum/CHANGELOG.md | 8 + macros/latex/contrib/lipsum/README.md | 26 + macros/latex/contrib/lipsum/lipsum.dtx | 159 +- macros/latex/contrib/lipsum/lipsum.ins | 2 +- macros/latex/contrib/lipsum/lipsum.pdf | Bin 650470 -> 653611 bytes .../latex/contrib/spacingtricks/spacingtricks.dtx | 96 +- .../latex/contrib/spacingtricks/spacingtricks.ins | 6 +- .../latex/contrib/spacingtricks/spacingtricks.pdf | Bin 124789 -> 125414 bytes macros/luatex/generic/pdfextra/LICENSE | 12 + macros/luatex/generic/pdfextra/README.md | 41 + .../pdfextra/examples/pdfextra-example-latex.tex | 223 +++ .../pdfextra/examples/pdfextra-example-part.prc | Bin 0 -> 58592 bytes .../generic/pdfextra/examples/pdfextra-example.pdf | Bin 0 -> 385350 bytes .../generic/pdfextra/examples/pdfextra-example.tex | 345 ++++ macros/luatex/generic/pdfextra/pdfextra-doc.pdf | Bin 0 -> 245952 bytes macros/luatex/generic/pdfextra/pdfextra-doc.tex | 772 ++++++++ macros/luatex/generic/pdfextra/pdfextra.opm | 1728 ++++++++++++++++++ macros/luatex/generic/pdfextra/pdfextra.sty | 4 + macros/luatex/generic/pdfextra/pdfextra.tex | 364 ++++ macros/luatex/optex/pdfextra/LICENSE | 12 - macros/luatex/optex/pdfextra/README.md | 41 - .../pdfextra/examples/pdfextra-example-latex.tex | 223 --- .../pdfextra/examples/pdfextra-example-part.prc | Bin 58592 -> 0 bytes .../optex/pdfextra/examples/pdfextra-example.pdf | Bin 385350 -> 0 bytes .../optex/pdfextra/examples/pdfextra-example.tex | 345 ---- macros/luatex/optex/pdfextra/pdfextra-doc.pdf | Bin 245952 -> 0 bytes macros/luatex/optex/pdfextra/pdfextra-doc.tex | 772 -------- macros/luatex/optex/pdfextra/pdfextra.opm | 1728 ------------------ macros/luatex/optex/pdfextra/pdfextra.sty | 4 - macros/luatex/optex/pdfextra/pdfextra.tex | 364 ---- systems/mac/mactex/ExtrasFolder.pdf | Bin 38200 -> 38197 bytes systems/mac/mactex/Licenses.txt | 4 +- .../texlive/tlnet/tlpkg/installer/ctan-mirrors.pl | 4 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb | 237 +-- systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 | 2 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 | 2 +- .../texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc | 14 +- systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz | Bin 2311436 -> 2313876 bytes systems/win32/miktex/tm/packages/files.csv.lzma | Bin 614598 -> 615154 bytes .../win32/miktex/tm/packages/next/files.csv.lzma | Bin 614469 -> 615217 bytes systems/win32/miktex/tm/packages/next/pr.ini | 10 +- systems/win32/miktex/tm/packages/pr.ini | 12 +- timestamp | 2 +- 290 files changed, 10955 insertions(+), 6945 deletions(-) create mode 100644 macros/latex-dev/base/lamport-manual.err create mode 100644 macros/latex-dev/base/lamport-manual.pdf delete mode 100644 macros/latex-dev/base/manual.err delete mode 100644 macros/latex-dev/base/manual.pdf create mode 100644 macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf create mode 100644 macros/latex/contrib/elteikthesis/elteikthesis-minted.tex delete mode 100644 macros/latex/contrib/elteikthesis/settings.tex create mode 100644 macros/latex/contrib/genealogytree/CHANGES.md delete mode 100644 macros/latex/contrib/genealogytree/README create mode 100644 macros/latex/contrib/genealogytree/README.md create mode 100644 macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex create mode 100644 macros/latex/contrib/lipsum/README.md create mode 100644 macros/luatex/generic/pdfextra/LICENSE create mode 100644 macros/luatex/generic/pdfextra/README.md create mode 100644 macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex create mode 100644 macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc create mode 100644 macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf create mode 100644 macros/luatex/generic/pdfextra/examples/pdfextra-example.tex create mode 100644 macros/luatex/generic/pdfextra/pdfextra-doc.pdf create mode 100644 macros/luatex/generic/pdfextra/pdfextra-doc.tex create mode 100644 macros/luatex/generic/pdfextra/pdfextra.opm create mode 100644 macros/luatex/generic/pdfextra/pdfextra.sty create mode 100644 macros/luatex/generic/pdfextra/pdfextra.tex delete mode 100644 macros/luatex/optex/pdfextra/LICENSE delete mode 100644 macros/luatex/optex/pdfextra/README.md delete mode 100644 macros/luatex/optex/pdfextra/examples/pdfextra-example-latex.tex delete mode 100644 macros/luatex/optex/pdfextra/examples/pdfextra-example-part.prc delete mode 100644 macros/luatex/optex/pdfextra/examples/pdfextra-example.pdf delete mode 100644 macros/luatex/optex/pdfextra/examples/pdfextra-example.tex delete mode 100644 macros/luatex/optex/pdfextra/pdfextra-doc.pdf delete mode 100644 macros/luatex/optex/pdfextra/pdfextra-doc.tex delete mode 100644 macros/luatex/optex/pdfextra/pdfextra.opm delete mode 100644 macros/luatex/optex/pdfextra/pdfextra.sty delete mode 100644 macros/luatex/optex/pdfextra/pdfextra.tex diff --git a/FILES.byname b/FILES.byname index baccaddfac..56d5d0b6f1 100644 --- a/FILES.byname +++ b/FILES.byname @@ -5105,7 +5105,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 -2021/09/19 | 70048 | FILES.last07days +2021/09/20 | 72426 | 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 @@ -149560,20 +149560,20 @@ 2011/05/31 | 231925 | graphics/mathspic/perl/sourcecode113.html 2011/05/31 | 183530 | graphics/mathspic/perl/sourcecode113.nw 2011/05/31 | 2864043 | graphics/mathspic/perl/sourcecode113.pdf -2021/09/05 | 15474 | graphics/mcf2graph/CHANGELOG -2021/09/05 | 115008 | graphics/mcf2graph/mcf2graph.mf -2021/09/05 | 97828 | graphics/mcf2graph/mcf_data_base.mcf -2021/09/05 | 314296 | graphics/mcf2graph/mcf_example.pdf -2021/08/24 | 2324 | graphics/mcf2graph/mcf_example.tex -2021/09/05 | 2140 | graphics/mcf2graph/mcf_exa_soc.mf -2021/09/05 | 44760 | graphics/mcf2graph/mcf_man_soc.mf -2021/09/05 | 383098 | graphics/mcf2graph/mcf_manual.pdf -2021/09/05 | 62996 | graphics/mcf2graph/mcf_manual.tex -2021/09/05 | 184493 | graphics/mcf2graph/mcf_mplib_exa.pdf -2021/09/05 | 16212 | graphics/mcf2graph/mcf_mplib_exa.tex -2021/05/03 | 3843 | graphics/mcf2graph/mcf_setup.sty -2021/09/05 | 4485 | graphics/mcf2graph/README -2021/09/05 | 951194 | graphics/mcf2graph.zip +2021/09/20 | 15807 | graphics/mcf2graph/CHANGELOG +2021/09/20 | 116725 | graphics/mcf2graph/mcf2graph.mf +2021/09/16 | 97963 | graphics/mcf2graph/mcf_data_base.mcf +2021/09/20 | 314077 | graphics/mcf2graph/mcf_example.pdf +2021/09/20 | 2325 | graphics/mcf2graph/mcf_example.tex +2021/09/20 | 2117 | graphics/mcf2graph/mcf_exa_soc.mf +2021/09/20 | 44742 | graphics/mcf2graph/mcf_man_soc.mf +2021/09/20 | 344886 | graphics/mcf2graph/mcf_manual.pdf +2021/09/20 | 63153 | graphics/mcf2graph/mcf_manual.tex +2021/09/20 | 184158 | graphics/mcf2graph/mcf_mplib_exa.pdf +2021/09/20 | 16122 | graphics/mcf2graph/mcf_mplib_exa.tex +2021/09/20 | 3963 | graphics/mcf2graph/mcf_setup.sty +2021/09/20 | 4579 | graphics/mcf2graph/README +2021/09/20 | 914246 | graphics/mcf2graph.zip 2004/07/13 | 8567 | graphics/metaplot/axes.mp 2004/06/28 | 1122 | graphics/metaplot/examples/cap1.cc 2004/06/28 | 2178 | graphics/metaplot/examples/cap1.mp @@ -158680,10 +158680,10 @@ 2021/07/27 | 44151 | indexing/makeindexk/aclocal.m4 2009/04/23 | 341 | indexing/makeindexk/ac/withenable.ac 2021/06/30 | 5087 | indexing/makeindexk/c-auto.in -2019/11/01 | 8501 | indexing/makeindexk/ChangeLog +2021/09/19 | 8999 | indexing/makeindexk/ChangeLog 2007/07/03 | 710 | indexing/makeindexk/configure -2013/10/01 | 988 | indexing/makeindexk/configure.ac -2021/07/27 | 533226 | indexing/makeindexk/configure.texk +2021/09/19 | 988 | indexing/makeindexk/configure.ac +2021/09/19 | 533226 | indexing/makeindexk/configure.texk 2011/05/09 | 999 | indexing/makeindexk/CONTRIB 2011/09/24 | 2027 | indexing/makeindexk/COPYING 2014/06/19 | 11237 | indexing/makeindexk/genind.c @@ -158703,25 +158703,44 @@ 2013/04/16 | 12961 | indexing/makeindexk/mkind.c 2019/11/01 | 1097 | indexing/makeindexk/mkindex 2006/01/17 | 1128 | indexing/makeindexk/mkindex.1 -2019/03/21 | 14593 | indexing/makeindexk/mkind.h +2021/09/19 | 14627 | indexing/makeindexk/mkind.h 2006/01/17 | 3419 | indexing/makeindexk/NOTES 2012/07/27 | 5836 | indexing/makeindexk/qsort.c 2012/07/28 | 400 | indexing/makeindexk/qsort.h 2011/09/24 | 2570 | indexing/makeindexk/README -2014/06/19 | 17281 | indexing/makeindexk/scanid.c -2011/09/24 | 3620 | indexing/makeindexk/scanid.h -2011/09/24 | 15066 | indexing/makeindexk/scanst.c +2021/09/19 | 17507 | indexing/makeindexk/scanid.c +2021/09/19 | 3776 | indexing/makeindexk/scanid.h +2021/09/19 | 15087 | indexing/makeindexk/scanst.c 2011/09/24 | 5321 | indexing/makeindexk/scanst.h 2013/04/16 | 7443 | indexing/makeindexk/sortid.c -2017/11/15 | 550 | indexing/makeindexk/tests/makeindex.test +2021/09/19 | 1944 | indexing/makeindexk/tests/makeindex.test 2011/09/24 | 225 | indexing/makeindexk/tests/nested-range-bb.idx 2011/09/24 | 2251 | indexing/makeindexk/tests/nested-range-bb.tex 2011/09/24 | 84 | indexing/makeindexk/tests/nested-range.idx 2011/09/30 | 876 | indexing/makeindexk/tests/nested-range-test.pl 2011/09/24 | 564 | indexing/makeindexk/tests/nested-range.tex +2021/09/19 | 182 | indexing/makeindexk/tests/pprec0.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec1.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec2.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec3.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec4.ist +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-0.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-1.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-2.ind +2021/09/19 | 213 | indexing/makeindexk/tests/pprecA.idx +2021/09/19 | 96 | indexing/makeindexk/tests/pprecB-3.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecB-4.ind +2021/09/19 | 207 | indexing/makeindexk/tests/pprecB.idx +2021/09/19 | 1077 | indexing/makeindexk/tests/range1.ind +2021/09/19 | 70 | indexing/makeindexk/tests/range1.ist +2021/09/19 | 1169 | indexing/makeindexk/tests/range2.ind +2021/09/19 | 92 | indexing/makeindexk/tests/range2.ist +2021/09/19 | 1077 | indexing/makeindexk/tests/range3.ind +2021/09/19 | 93 | indexing/makeindexk/tests/range3.ist +2021/09/19 | 3278 | indexing/makeindexk/tests/range.idx 2012/07/27 | 459 | indexing/makeindexk/tests/sample.idx 2012/07/27 | 268 | indexing/makeindexk/tests/sample.ind -2021/07/28 | 233647 | indexing/makeindexk.zip +2021/09/20 | 239137 | indexing/makeindexk.zip 1989/08/31 | 10291 | indexing/makeindex/lib/idxmac-amstex.tex 1989/08/31 | 7082 | indexing/makeindex/lib/idxmac.tex 1989/08/31 | 280 | indexing/makeindex/lib/makeidx.doc @@ -183072,7 +183091,7 @@ 2011/06/06 | 351067 | install/macros/latex/contrib/footmisc.tds.zip 2019/11/24 | 417422 | install/macros/latex/contrib/footnoterange.tds.zip 2011/09/21 | 1010253 | install/macros/latex/contrib/frontespizio.tds.zip -2020/07/28 | 5740461 | install/macros/latex/contrib/genealogytree.tds.zip +2021/09/20 | 6112950 | install/macros/latex/contrib/genealogytree.tds.zip 2019/03/25 | 2001387 | install/macros/latex/contrib/getmap.tds.zip 2019/12/15 | 325426 | install/macros/latex/contrib/gettitlestring.tds.zip 2011/09/05 | 175901 | install/macros/latex/contrib/gincltex.tds.zip @@ -183280,11 +183299,11 @@ 2020/04/09 | 806385 | install/macros/latex/contrib/zhlipsum.tds.zip 2020/05/01 | 293478 | install/macros/latex/contrib/zhnumber.tds.zip 2020/10/09 | 728226 | install/macros/latex/contrib/zref.tds.zip -2021/06/17 | 34703709 | install/macros/latex-dev/latex-base-dev.tds.zip -2021/06/17 | 2763720 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip -2021/06/17 | 243419 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip -2021/06/17 | 2666092 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip -2021/06/17 | 7348487 | install/macros/latex-dev/required/latex-tools-dev.tds.zip +2021/09/20 | 35213177 | install/macros/latex-dev/latex-base-dev.tds.zip +2021/09/20 | 2767024 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip +2021/09/20 | 252568 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip +2021/09/20 | 2667651 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip +2021/09/20 | 7357248 | install/macros/latex-dev/required/latex-tools-dev.tds.zip 2021/06/15 | 34394602 | install/macros/latex/latex-base.tds.zip 2020/06/01 | 1578753 | install/macros/latex/required/amscls.tds.zip 2021/07/22 | 2824954 | install/macros/latex/required/babel-base.tds.zip @@ -208296,23 +208315,24 @@ 2019/03/20 | 4655 | macros/latex/contrib/els-cas-templates/thumbnails/cas-twitter.jpeg 2019/03/20 | 7736 | macros/latex/contrib/els-cas-templates/thumbnails/cas-url.jpeg 2021/05/12 | 844178 | macros/latex/contrib/els-cas-templates.zip -2020/07/24 | 2501 | macros/latex/contrib/elteikthesis/appendices/sim.tex -2020/07/24 | 5674 | macros/latex/contrib/elteikthesis/chapters/impl.tex -2020/07/24 | 1211 | macros/latex/contrib/elteikthesis/chapters/intro.tex -2020/07/24 | 1074 | macros/latex/contrib/elteikthesis/chapters/sum.tex -2020/07/24 | 11886 | macros/latex/contrib/elteikthesis/chapters/user.tex -2020/07/24 | 1512 | macros/latex/contrib/elteikthesis/elteikthesis.bib -2020/07/24 | 15768 | macros/latex/contrib/elteikthesis/elteikthesis.cls -2020/07/24 | 461186 | macros/latex/contrib/elteikthesis/elteikthesis.pdf -2020/07/24 | 3408 | macros/latex/contrib/elteikthesis/elteikthesis.tex +2021/09/20 | 2501 | macros/latex/contrib/elteikthesis/appendices/sim.tex +2021/09/20 | 5692 | macros/latex/contrib/elteikthesis/chapters/impl.tex +2021/09/20 | 1211 | macros/latex/contrib/elteikthesis/chapters/intro.tex +2021/09/20 | 1074 | macros/latex/contrib/elteikthesis/chapters/sum.tex +2021/09/20 | 11894 | macros/latex/contrib/elteikthesis/chapters/user.tex +2021/09/20 | 1512 | macros/latex/contrib/elteikthesis/elteikthesis.bib +2021/09/20 | 17382 | macros/latex/contrib/elteikthesis/elteikthesis.cls +2021/09/20 | 20680 | macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf +2021/09/20 | 519 | macros/latex/contrib/elteikthesis/elteikthesis-minted.tex +2021/09/20 | 446255 | macros/latex/contrib/elteikthesis/elteikthesis.pdf +2021/09/20 | 3809 | macros/latex/contrib/elteikthesis/elteikthesis.tex 2020/07/24 | 1093458 | macros/latex/contrib/elteikthesis/images/elte_cimer_szines.eps -2020/07/24 | 1424 | macros/latex/contrib/elteikthesis/LICENSE -2020/07/24 | 3110 | macros/latex/contrib/elteikthesis/README_hu.md -2020/07/24 | 156453 | macros/latex/contrib/elteikthesis/README_hu.pdf -2020/07/24 | 2812 | macros/latex/contrib/elteikthesis/README.md -2020/07/24 | 152282 | macros/latex/contrib/elteikthesis/README.pdf -2020/07/24 | 480 | macros/latex/contrib/elteikthesis/settings.tex -2020/07/24 | 1043736 | macros/latex/contrib/elteikthesis.zip +2021/09/20 | 1424 | macros/latex/contrib/elteikthesis/LICENSE +2021/09/20 | 3425 | macros/latex/contrib/elteikthesis/README_hu.md +2021/09/20 | 161570 | macros/latex/contrib/elteikthesis/README_hu.pdf +2021/09/20 | 3117 | macros/latex/contrib/elteikthesis/README.md +2021/09/20 | 157578 | macros/latex/contrib/elteikthesis/README.pdf +2021/09/20 | 1063568 | macros/latex/contrib/elteikthesis.zip 2009/06/22 | 24336 | macros/latex/contrib/eltex/eltex1.tex 2009/03/21 | 41235 | macros/latex/contrib/eltex/eltex2.tex 2009/03/21 | 9660 | macros/latex/contrib/eltex/eltex3.tex @@ -210812,34 +210832,36 @@ 2015/03/07 | 311223 | macros/latex/contrib/gender/gender.pdf 2015/03/07 | 614 | macros/latex/contrib/gender/README 2015/03/08 | 314717 | macros/latex/contrib/gender.zip -2020/07/28 | 214029 | macros/latex/contrib/genealogytree/genealogytree.doc.sources.zip -2020/07/28 | 202898 | macros/latex/contrib/genealogytree/genealogytree-example-1.pdf -2020/07/28 | 251357 | macros/latex/contrib/genealogytree/genealogytree-example-2.pdf -2020/07/28 | 197945 | macros/latex/contrib/genealogytree/genealogytree-example-3.pdf -2020/07/28 | 254364 | macros/latex/contrib/genealogytree/genealogytree-example-4.pdf -2020/07/28 | 441585 | macros/latex/contrib/genealogytree/genealogytree-languages.pdf -2020/07/28 | 7328827 | macros/latex/contrib/genealogytree/genealogytree.pdf -2020/07/28 | 5376 | macros/latex/contrib/genealogytree/genealogytree.sty -2020/07/28 | 12266 | macros/latex/contrib/genealogytree/gtrcore.contour.code.tex -2020/07/28 | 22483 | macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex -2020/07/28 | 33775 | macros/latex/contrib/genealogytree/gtrcore.node.code.tex -2020/07/28 | 20406 | macros/latex/contrib/genealogytree/gtrcore.options.code.tex -2020/07/28 | 21974 | macros/latex/contrib/genealogytree/gtrcore.parser.code.tex -2020/07/28 | 21569 | macros/latex/contrib/genealogytree/gtrcore.processing.code.tex -2020/07/28 | 9078 | macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex -2020/07/28 | 2866 | macros/latex/contrib/genealogytree/gtrlang.danish.code.tex -2020/07/28 | 2732 | macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex -2020/07/28 | 2666 | macros/latex/contrib/genealogytree/gtrlang.english.code.tex -2020/07/28 | 2964 | macros/latex/contrib/genealogytree/gtrlang.french.code.tex -2020/07/28 | 2976 | macros/latex/contrib/genealogytree/gtrlang.german.code.tex -2020/07/28 | 2825 | macros/latex/contrib/genealogytree/gtrlang.italian.code.tex -2020/07/28 | 2817 | macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex -2020/07/28 | 2747 | macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex -2020/07/28 | 18924 | macros/latex/contrib/genealogytree/gtrlib.debug.code.tex -2020/07/28 | 39385 | macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex -2020/07/28 | 24366 | macros/latex/contrib/genealogytree/gtrlib.templates.code.tex -2020/07/28 | 2402 | macros/latex/contrib/genealogytree/README -2020/07/28 | 5766238 | macros/latex/contrib/genealogytree.zip +2021/09/20 | 11739 | macros/latex/contrib/genealogytree/CHANGES.md +2021/09/20 | 210338 | macros/latex/contrib/genealogytree/genealogytree.doc.sources.zip +2021/09/20 | 207638 | macros/latex/contrib/genealogytree/genealogytree-example-1.pdf +2021/09/20 | 259454 | macros/latex/contrib/genealogytree/genealogytree-example-2.pdf +2021/09/20 | 205128 | macros/latex/contrib/genealogytree/genealogytree-example-3.pdf +2021/09/20 | 307949 | macros/latex/contrib/genealogytree/genealogytree-example-4.pdf +2021/09/20 | 466559 | macros/latex/contrib/genealogytree/genealogytree-languages.pdf +2021/09/20 | 8620249 | macros/latex/contrib/genealogytree/genealogytree.pdf +2021/09/20 | 5442 | macros/latex/contrib/genealogytree/genealogytree.sty +2021/09/20 | 12268 | macros/latex/contrib/genealogytree/gtrcore.contour.code.tex +2021/09/20 | 22485 | macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex +2021/09/20 | 33777 | macros/latex/contrib/genealogytree/gtrcore.node.code.tex +2021/09/20 | 20461 | macros/latex/contrib/genealogytree/gtrcore.options.code.tex +2021/09/20 | 21976 | macros/latex/contrib/genealogytree/gtrcore.parser.code.tex +2021/09/20 | 21571 | macros/latex/contrib/genealogytree/gtrcore.processing.code.tex +2021/09/20 | 9080 | macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex +2021/09/20 | 2868 | macros/latex/contrib/genealogytree/gtrlang.danish.code.tex +2021/09/20 | 2734 | macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex +2021/09/20 | 2668 | macros/latex/contrib/genealogytree/gtrlang.english.code.tex +2021/09/20 | 2966 | macros/latex/contrib/genealogytree/gtrlang.french.code.tex +2021/09/20 | 2978 | macros/latex/contrib/genealogytree/gtrlang.german.code.tex +2021/09/20 | 2827 | macros/latex/contrib/genealogytree/gtrlang.italian.code.tex +2021/09/20 | 2833 | macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex +2021/09/20 | 2819 | macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex +2021/09/20 | 2749 | macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex +2021/09/20 | 18926 | macros/latex/contrib/genealogytree/gtrlib.debug.code.tex +2021/09/20 | 39387 | macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex +2021/09/20 | 24368 | macros/latex/contrib/genealogytree/gtrlib.templates.code.tex +2021/09/20 | 2227 | macros/latex/contrib/genealogytree/README.md +2021/09/20 | 6141416 | macros/latex/contrib/genealogytree.zip 2020/05/24 | 75820 | macros/latex/contrib/gene/crossword/cwpuzzle.dtx 2020/05/24 | 1662 | macros/latex/contrib/gene/crossword/cwpuzzle.ins 2020/05/24 | 337589 | macros/latex/contrib/gene/crossword/cwpuzzle.pdf @@ -215030,16 +215052,17 @@ 2019/05/15 | 203 | macros/latex/contrib/lion-msc/minimal.tex 2020/06/03 | 677 | macros/latex/contrib/lion-msc/README.md 2020/06/04 | 1588710 | macros/latex/contrib/lion-msc.zip -2021/08/02 | 1789 | macros/latex/contrib/lipsum/CHANGELOG.md -2021/08/02 | 25 | macros/latex/contrib/lipsum/DEPENDS.txt -2021/08/02 | 134671 | macros/latex/contrib/lipsum/lipsum-cicero.txt -2021/08/02 | 98064 | macros/latex/contrib/lipsum/lipsum-cs.txt -2021/08/02 | 58283 | macros/latex/contrib/lipsum/lipsum.dtx -2021/08/02 | 3755 | macros/latex/contrib/lipsum/lipsum.ins -2021/08/02 | 91127 | macros/latex/contrib/lipsum/lipsum-la.txt -2021/08/02 | 650470 | macros/latex/contrib/lipsum/lipsum.pdf -2021/08/02 | 1525 | macros/latex/contrib/lipsum/README.txt -2021/08/02 | 781063 | macros/latex/contrib/lipsum.zip +2021/09/20 | 1926 | macros/latex/contrib/lipsum/CHANGELOG.md +2021/09/20 | 25 | macros/latex/contrib/lipsum/DEPENDS.txt +2021/09/20 | 134671 | macros/latex/contrib/lipsum/lipsum-cicero.txt +2021/09/20 | 98064 | macros/latex/contrib/lipsum/lipsum-cs.txt +2021/09/20 | 58989 | macros/latex/contrib/lipsum/lipsum.dtx +2021/09/20 | 3756 | macros/latex/contrib/lipsum/lipsum.ins +2021/09/20 | 91127 | macros/latex/contrib/lipsum/lipsum-la.txt +2021/09/20 | 653611 | macros/latex/contrib/lipsum/lipsum.pdf +2021/09/20 | 575 | macros/latex/contrib/lipsum/README.md +2021/09/20 | 1525 | macros/latex/contrib/lipsum/README.txt +2021/09/20 | 784793 | macros/latex/contrib/lipsum.zip 2015/10/25 | 11875 | macros/latex/contrib/lisp-on-tex/examples/div2.pdf 2015/10/25 | 973 | macros/latex/contrib/lisp-on-tex/examples/div2.tex 2015/10/25 | 36632 | macros/latex/contrib/lisp-on-tex/examples/fact.pdf @@ -222619,10 +222642,10 @@ 2019/04/05 | 114796 | macros/latex/contrib/soup/soup.pdf 2019/04/06 | 120099 | macros/latex/contrib/soup.zip 2019/06/26 | 769 | macros/latex/contrib/spacingtricks/README.md -2020/11/02 | 24236 | macros/latex/contrib/spacingtricks/spacingtricks.dtx -2020/11/02 | 1998 | macros/latex/contrib/spacingtricks/spacingtricks.ins -2020/11/02 | 124789 | macros/latex/contrib/spacingtricks/spacingtricks.pdf -2020/11/02 | 109527 | macros/latex/contrib/spacingtricks.zip +2021/09/20 | 24330 | macros/latex/contrib/spacingtricks/spacingtricks.dtx +2021/09/20 | 2005 | macros/latex/contrib/spacingtricks/spacingtricks.ins +2021/09/20 | 125414 | macros/latex/contrib/spacingtricks/spacingtricks.pdf +2021/09/20 | 109969 | macros/latex/contrib/spacingtricks.zip 2016/10/06 | 1360 | macros/latex/contrib/spalign/README.md 2016/10/06 | 45312 | macros/latex/contrib/spalign/spalign.dtx 2016/10/05 | 1964 | macros/latex/contrib/spalign/spalign.ins @@ -232312,421 +232335,421 @@ 2020/02/28 | 475910 | macros/latex/contrib/zwpagelayout/zwpagelayout.pdf 2020/02/28 | 36153 | macros/latex/contrib/zwpagelayout/zwpagelayout.sty 2020/02/28 | 69481 | macros/latex/contrib/zwpagelayout/zwpagelayout.tex -2021/06/17 | 7109 | macros/latex-dev/base/alltt.dtx -2021/06/17 | 2890 | macros/latex-dev/base/alltt.ins -2021/06/17 | 214710 | macros/latex-dev/base/alltt.pdf -2021/06/17 | 3282 | macros/latex-dev/base/bugs.txt -2021/06/17 | 242886 | macros/latex-dev/base/cfgguide.pdf -2021/06/17 | 22456 | macros/latex-dev/base/cfgguide.tex -2021/06/17 | 42708 | macros/latex-dev/base/changes.old.txt -2021/06/17 | 377366 | macros/latex-dev/base/changes.txt -2021/06/17 | 156210 | macros/latex-dev/base/classes.dtx -2021/06/17 | 4087 | macros/latex-dev/base/classes.ins -2021/06/17 | 550002 | macros/latex-dev/base/classes.pdf -2021/06/17 | 402779 | macros/latex-dev/base/clsguide.pdf -2021/06/17 | 69050 | macros/latex-dev/base/clsguide.tex -2021/06/17 | 5273 | macros/latex-dev/base/cmextra.ins -2021/06/17 | 43636 | macros/latex-dev/base/cmfonts.fdd -2021/06/17 | 4324 | macros/latex-dev/base/cmfonts.ins -2021/06/17 | 292317 | macros/latex-dev/base/cmfonts.pdf -2021/06/17 | 239681 | macros/latex-dev/base/cyrguide.pdf -2021/06/17 | 17495 | macros/latex-dev/base/cyrguide.tex -2021/06/17 | 204063 | macros/latex-dev/base/doc.dtx -2021/06/17 | 676637 | macros/latex-dev/base/doc.pdf -2021/06/17 | 170214 | macros/latex-dev/base/docstrip.dtx -2021/06/17 | 4221 | macros/latex-dev/base/docstrip.ins -2021/06/17 | 503316 | macros/latex-dev/base/docstrip.pdf -2021/06/17 | 41831 | macros/latex-dev/base/doc-v3beta.sty -2021/06/17 | 4390 | macros/latex-dev/base/ec.ins -2021/06/17 | 1316472 | macros/latex-dev/base/encguide.pdf -2021/06/17 | 52813 | macros/latex-dev/base/encguide.tex -2021/06/17 | 7221 | macros/latex-dev/base/exscale.dtx -2021/06/17 | 3338 | macros/latex-dev/base/exscale.ins -2021/06/17 | 212307 | macros/latex-dev/base/exscale.pdf -2021/06/17 | 23521 | macros/latex-dev/base/fix-cm.dtx -2021/06/17 | 2892 | macros/latex-dev/base/fix-cm.ins -2021/06/17 | 287672 | macros/latex-dev/base/fix-cm.pdf -2021/06/17 | 493957 | macros/latex-dev/base/fntguide.pdf -2021/06/17 | 90917 | macros/latex-dev/base/fntguide.tex -2021/06/17 | 60326 | macros/latex-dev/base/fontdef.dtx -2021/06/17 | 9583 | macros/latex-dev/base/format.ins -2021/06/17 | 5514 | macros/latex-dev/base/graphpap.dtx -2021/06/17 | 2892 | macros/latex-dev/base/graphpap.ins -2021/06/17 | 169323 | macros/latex-dev/base/graphpap.pdf -2021/06/17 | 2705 | macros/latex-dev/base/idx.tex -2021/06/17 | 18303 | macros/latex-dev/base/ifthen.dtx -2021/06/17 | 2888 | macros/latex-dev/base/ifthen.ins -2021/06/17 | 220417 | macros/latex-dev/base/ifthen.pdf -2021/06/17 | 106908 | macros/latex-dev/base/inputenc.dtx -2021/06/17 | 5714 | macros/latex-dev/base/inputenc.ins -2021/06/17 | 318168 | macros/latex-dev/base/inputenc.pdf -2021/06/17 | 4079 | macros/latex-dev/base/lablst.tex -2021/06/17 | 38735 | macros/latex-dev/base/latex209.dtx -2021/06/17 | 4219 | macros/latex-dev/base/latex209.ins -2021/06/17 | 469966 | macros/latex-dev/base/latexchanges.pdf -2021/06/17 | 41848 | macros/latex-dev/base/latexchanges.tex -2021/06/17 | 44409 | macros/latex-dev/base/latexrelease.dtx -2021/06/17 | 5917 | macros/latex-dev/base/latexrelease.ins -2021/06/17 | 290495 | macros/latex-dev/base/latexrelease.pdf -2021/06/17 | 6714 | macros/latex-dev/base/latexsym.dtx -2021/06/17 | 5041 | macros/latex-dev/base/latexsym.ins -2021/06/17 | 208359 | macros/latex-dev/base/latexsym.pdf -2021/06/17 | 52578 | macros/latex-dev/base/lb2.err -2021/06/17 | 252154 | macros/latex-dev/base/lb2.pdf -2021/06/17 | 1279 | macros/latex-dev/base/legal.txt -2021/06/17 | 63283 | macros/latex-dev/base/letter.dtx -2021/06/17 | 3372 | macros/latex-dev/base/letter.ins -2021/06/17 | 328861 | macros/latex-dev/base/letter.pdf -2021/06/17 | 20486 | macros/latex-dev/base/lgc2.err -2021/06/17 | 215091 | macros/latex-dev/base/lgc2.pdf -2021/06/17 | 9068 | macros/latex-dev/base/lppl-1-0.txt -2021/06/17 | 14341 | macros/latex-dev/base/lppl-1-1.txt -2021/06/17 | 14421 | macros/latex-dev/base/lppl-1-2.txt -2021/06/17 | 132373 | macros/latex-dev/base/lppl.pdf -2021/06/17 | 23386 | macros/latex-dev/base/lppl.tex -2021/06/17 | 19040 | macros/latex-dev/base/lppl.txt -2021/06/17 | 4303 | macros/latex-dev/base/ltalloc.dtx -2021/06/17 | 16105 | macros/latex-dev/base/ltbibl.dtx -2021/06/17 | 43867 | macros/latex-dev/base/ltboxes.dtx -2021/06/17 | 139369 | macros/latex-dev/base/ltclass.dtx -2021/06/17 | 142847 | macros/latex-dev/base/ltcmd.dtx -2021/06/17 | 693154 | macros/latex-dev/base/ltcmdhooks-code.pdf -2021/06/17 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex -2021/06/17 | 479463 | macros/latex-dev/base/ltcmdhooks-doc.pdf -2021/06/17 | 177 | macros/latex-dev/base/ltcmdhooks-doc.tex -2021/06/17 | 40970 | macros/latex-dev/base/ltcmdhooks.dtx -2021/06/17 | 9562 | macros/latex-dev/base/ltcntrl.dtx -2021/06/17 | 22676 | macros/latex-dev/base/ltcounts.dtx -2021/06/17 | 85862 | macros/latex-dev/base/ltdefns.dtx -2021/06/17 | 35302 | macros/latex-dev/base/ltdirchk.dtx -2021/06/17 | 25265 | macros/latex-dev/base/lterror.dtx -2021/06/17 | 13920 | macros/latex-dev/base/ltexpl.dtx -2021/06/17 | 795484 | macros/latex-dev/base/ltfilehook-code.pdf -2021/06/17 | 105 | macros/latex-dev/base/ltfilehook-code.tex -2021/06/17 | 546050 | macros/latex-dev/base/ltfilehook-doc.pdf -2021/06/17 | 180 | macros/latex-dev/base/ltfilehook-doc.tex -2021/06/17 | 63255 | macros/latex-dev/base/ltfilehook.dtx -2021/06/17 | 55087 | macros/latex-dev/base/ltfiles.dtx -2021/06/17 | 44724 | macros/latex-dev/base/ltfinal.dtx -2021/06/17 | 54680 | macros/latex-dev/base/ltfloat.dtx -2021/06/17 | 29191 | macros/latex-dev/base/ltfntcmd.dtx -2021/06/17 | 58556 | macros/latex-dev/base/ltfssaxes.dtx -2021/06/17 | 80726 | macros/latex-dev/base/ltfssbas.dtx -2021/06/17 | 10375 | macros/latex-dev/base/ltfsscmp.dtx -2021/06/17 | 61425 | macros/latex-dev/base/ltfssdcl.dtx -2021/06/17 | 76725 | macros/latex-dev/base/ltfssini.dtx -2021/06/17 | 72479 | macros/latex-dev/base/ltfsstrc.dtx -2021/06/17 | 1029167 | macros/latex-dev/base/lthooks-code.pdf -2021/06/17 | 102 | macros/latex-dev/base/lthooks-code.tex -2021/06/17 | 683895 | macros/latex-dev/base/lthooks-doc.pdf -2021/06/17 | 177 | macros/latex-dev/base/lthooks-doc.tex -2021/06/17 | 187818 | macros/latex-dev/base/lthooks.dtx -2021/06/17 | 4950 | macros/latex-dev/base/lthyphen.dtx -2021/06/17 | 5864 | macros/latex-dev/base/ltidxglo.dtx -2021/06/17 | 4762 | macros/latex-dev/base/ltlength.dtx -2021/06/17 | 36157 | macros/latex-dev/base/ltlists.dtx -2021/06/17 | 3730 | macros/latex-dev/base/ltlogos.dtx -2021/06/17 | 64748 | macros/latex-dev/base/ltluatex.dtx -2021/06/17 | 325289 | macros/latex-dev/base/ltluatex.pdf -2021/06/17 | 39431 | macros/latex-dev/base/ltmath.dtx -2021/06/17 | 58750 | macros/latex-dev/base/ltmiscen.dtx -2021/06/17 | 161518 | macros/latex-dev/base/ltnews01.pdf -2021/06/17 | 5246 | macros/latex-dev/base/ltnews01.tex -2021/06/17 | 150466 | macros/latex-dev/base/ltnews02.pdf -2021/06/17 | 5283 | macros/latex-dev/base/ltnews02.tex -2021/06/17 | 150493 | macros/latex-dev/base/ltnews03.pdf -2021/06/17 | 5200 | macros/latex-dev/base/ltnews03.tex -2021/06/17 | 143686 | macros/latex-dev/base/ltnews04.pdf -2021/06/17 | 5506 | macros/latex-dev/base/ltnews04.tex -2021/06/17 | 174488 | macros/latex-dev/base/ltnews05.pdf -2021/06/17 | 5608 | macros/latex-dev/base/ltnews05.tex -2021/06/17 | 142909 | macros/latex-dev/base/ltnews06.pdf -2021/06/17 | 5390 | macros/latex-dev/base/ltnews06.tex -2021/06/17 | 138044 | macros/latex-dev/base/ltnews07.pdf -2021/06/17 | 5425 | macros/latex-dev/base/ltnews07.tex -2021/06/17 | 155055 | macros/latex-dev/base/ltnews08.pdf -2021/06/17 | 5695 | macros/latex-dev/base/ltnews08.tex -2021/06/17 | 129032 | macros/latex-dev/base/ltnews09.pdf -2021/06/17 | 5293 | macros/latex-dev/base/ltnews09.tex -2021/06/17 | 159313 | macros/latex-dev/base/ltnews10.pdf -2021/06/17 | 5659 | macros/latex-dev/base/ltnews10.tex -2021/06/17 | 111955 | macros/latex-dev/base/ltnews11.pdf -2021/06/17 | 5529 | macros/latex-dev/base/ltnews11.tex -2021/06/17 | 147587 | macros/latex-dev/base/ltnews12.pdf -2021/06/17 | 5400 | macros/latex-dev/base/ltnews12.tex -2021/06/17 | 173323 | macros/latex-dev/base/ltnews13.pdf -2021/06/17 | 6871 | macros/latex-dev/base/ltnews13.tex -2021/06/17 | 161405 | macros/latex-dev/base/ltnews14.pdf -2021/06/17 | 6273 | macros/latex-dev/base/ltnews14.tex -2021/06/17 | 130447 | macros/latex-dev/base/ltnews15.pdf -2021/06/17 | 5839 | macros/latex-dev/base/ltnews15.tex -2021/06/17 | 146533 | macros/latex-dev/base/ltnews16.pdf -2021/06/17 | 5776 | macros/latex-dev/base/ltnews16.tex -2021/06/17 | 166368 | macros/latex-dev/base/ltnews17.pdf -2021/06/17 | 8863 | macros/latex-dev/base/ltnews17.tex -2021/06/17 | 38031 | macros/latex-dev/base/ltnews18.pdf -2021/06/17 | 1341 | macros/latex-dev/base/ltnews18.tex -2021/06/17 | 245818 | macros/latex-dev/base/ltnews19.pdf -2021/06/17 | 4170 | macros/latex-dev/base/ltnews19.tex -2021/06/17 | 297070 | macros/latex-dev/base/ltnews20.pdf -2021/06/17 | 7325 | macros/latex-dev/base/ltnews20.tex -2021/06/17 | 244869 | macros/latex-dev/base/ltnews21.pdf -2021/06/17 | 9809 | macros/latex-dev/base/ltnews21.tex -2021/06/17 | 318399 | macros/latex-dev/base/ltnews22.pdf -2021/06/17 | 10668 | macros/latex-dev/base/ltnews22.tex -2021/06/17 | 287125 | macros/latex-dev/base/ltnews23.pdf -2021/06/17 | 10687 | macros/latex-dev/base/ltnews23.tex -2021/06/17 | 265211 | macros/latex-dev/base/ltnews24.pdf -2021/06/17 | 12224 | macros/latex-dev/base/ltnews24.tex -2021/06/17 | 205162 | macros/latex-dev/base/ltnews25.pdf -2021/06/17 | 5473 | macros/latex-dev/base/ltnews25.tex -2021/06/17 | 379735 | macros/latex-dev/base/ltnews26.pdf -2021/06/17 | 10697 | macros/latex-dev/base/ltnews26.tex -2021/06/17 | 252432 | macros/latex-dev/base/ltnews27.pdf -2021/06/17 | 5506 | macros/latex-dev/base/ltnews27.tex -2021/06/17 | 387987 | macros/latex-dev/base/ltnews28.pdf -2021/06/17 | 14891 | macros/latex-dev/base/ltnews28.tex -2021/06/17 | 454808 | macros/latex-dev/base/ltnews29.pdf -2021/06/17 | 18940 | macros/latex-dev/base/ltnews29.tex -2021/06/17 | 511855 | macros/latex-dev/base/ltnews30.pdf -2021/06/17 | 23651 | macros/latex-dev/base/ltnews30.tex -2021/06/17 | 526312 | macros/latex-dev/base/ltnews31.pdf -2021/06/17 | 30456 | macros/latex-dev/base/ltnews31.tex -2021/06/17 | 546162 | macros/latex-dev/base/ltnews32.pdf -2021/06/17 | 33256 | macros/latex-dev/base/ltnews32.tex -2021/06/17 | 522413 | macros/latex-dev/base/ltnews33.pdf -2021/06/17 | 33916 | macros/latex-dev/base/ltnews33.tex -2021/06/17 | 310056 | macros/latex-dev/base/ltnews34.pdf -2021/06/17 | 4818 | macros/latex-dev/base/ltnews34.tex -2021/06/17 | 20469 | macros/latex-dev/base/ltnews.cls -2021/06/17 | 1079232 | macros/latex-dev/base/ltnews.pdf -2021/06/17 | 8259 | macros/latex-dev/base/ltnews.tex -2021/06/17 | 149221 | macros/latex-dev/base/ltoutenc.dtx -2021/06/17 | 3367 | macros/latex-dev/base/ltoutenc.ins -2021/06/17 | 175645 | macros/latex-dev/base/ltoutput.dtx -2021/06/17 | 11590 | macros/latex-dev/base/ltpage.dtx -2021/06/17 | 2733 | macros/latex-dev/base/ltpageno.dtx -2021/06/17 | 664537 | macros/latex-dev/base/ltpara-code.pdf -2021/06/17 | 99 | macros/latex-dev/base/ltpara-code.tex -2021/06/17 | 560270 | macros/latex-dev/base/ltpara-doc.pdf -2021/06/17 | 173 | macros/latex-dev/base/ltpara-doc.tex -2021/06/17 | 48746 | macros/latex-dev/base/ltpara.dtx -2021/06/17 | 6160 | macros/latex-dev/base/ltpar.dtx -2021/06/17 | 69007 | macros/latex-dev/base/ltpictur.dtx -2021/06/17 | 53199 | macros/latex-dev/base/ltplain.dtx -2021/06/17 | 32648 | macros/latex-dev/base/ltsect.dtx -2021/06/17 | 818942 | macros/latex-dev/base/ltshipout-code.pdf -2021/06/17 | 104 | macros/latex-dev/base/ltshipout-code.tex -2021/06/17 | 564769 | macros/latex-dev/base/ltshipout-doc.pdf -2021/06/17 | 179 | macros/latex-dev/base/ltshipout-doc.tex -2021/06/17 | 78332 | macros/latex-dev/base/ltshipout.dtx -2021/06/17 | 45245 | macros/latex-dev/base/ltspace.dtx -2021/06/17 | 47901 | macros/latex-dev/base/lttab.dtx -2021/06/17 | 90126 | macros/latex-dev/base/lttextcomp.dtx -2021/06/17 | 8736 | macros/latex-dev/base/ltthm.dtx -2021/06/17 | 13902 | macros/latex-dev/base/ltvers.dtx -2021/06/17 | 219354 | macros/latex-dev/base/ltx3info.pdf -2021/06/17 | 18299 | macros/latex-dev/base/ltx3info.tex -2021/06/17 | 27122 | macros/latex-dev/base/ltxcheck.tex -2021/06/17 | 19064 | macros/latex-dev/base/ltxdoc.dtx -2021/06/17 | 238577 | macros/latex-dev/base/ltxdoc.pdf -2021/06/17 | 7524 | macros/latex-dev/base/ltxguide.cls -2021/06/17 | 15625 | macros/latex-dev/base/ltxref.dtx -2021/06/17 | 10603 | macros/latex-dev/base/makeindx.dtx -2021/06/17 | 3434 | macros/latex-dev/base/makeindx.ins -2021/06/17 | 173682 | macros/latex-dev/base/makeindx.pdf -2021/06/17 | 10871 | macros/latex-dev/base/manifest.txt -2021/06/17 | 12946 | macros/latex-dev/base/manual.err -2021/06/17 | 160521 | macros/latex-dev/base/manual.pdf -2021/06/17 | 1937 | macros/latex-dev/base/minimal.cls -2021/06/17 | 243601 | macros/latex-dev/base/modguide.pdf -2021/06/17 | 16233 | macros/latex-dev/base/modguide.tex -2021/06/17 | 4254 | macros/latex-dev/base/newdc.ins -2021/06/17 | 6362 | macros/latex-dev/base/newlfont.dtx -2021/06/17 | 18404 | macros/latex-dev/base/nfssfont.dtx -2021/06/17 | 2893 | macros/latex-dev/base/nfssfont.ins -2021/06/17 | 218782 | macros/latex-dev/base/nfssfont.pdf -2021/06/17 | 3960 | macros/latex-dev/base/olddc.ins -2021/06/17 | 8631 | macros/latex-dev/base/oldlfont.dtx -2021/06/17 | 9373 | macros/latex-dev/base/preload.dtx -2021/06/17 | 13301 | macros/latex-dev/base/proc.dtx -2021/06/17 | 3401 | macros/latex-dev/base/proc.ins -2021/06/17 | 233995 | macros/latex-dev/base/proc.pdf -2021/06/17 | 3514 | macros/latex-dev/base/README.md -2021/06/17 | 7200 | macros/latex-dev/base/sample2e.tex -2021/06/17 | 89718 | macros/latex-dev/base/slides.dtx -2021/06/17 | 6760 | macros/latex-dev/base/slides.ins -2021/06/17 | 374051 | macros/latex-dev/base/slides.pdf -2021/06/17 | 15699 | macros/latex-dev/base/slifonts.fdd -2021/06/17 | 234008 | macros/latex-dev/base/slifonts.pdf -2021/06/17 | 1694 | macros/latex-dev/base/small2e.tex -2021/06/17 | 8531 | macros/latex-dev/base/source2edoc.cls -2021/06/17 | 5280988 | macros/latex-dev/base/source2e.pdf -2021/06/17 | 15104 | macros/latex-dev/base/source2e.tex -2021/06/17 | 9400 | macros/latex-dev/base/syntonly.dtx -2021/06/17 | 2896 | macros/latex-dev/base/syntonly.ins -2021/06/17 | 197319 | macros/latex-dev/base/syntonly.pdf -2021/06/17 | 12520 | macros/latex-dev/base/testpage.tex -2021/06/17 | 2738 | macros/latex-dev/base/tex2.txt -2021/06/17 | 8496 | macros/latex-dev/base/texpert.txt -2021/06/17 | 172278 | macros/latex-dev/base/tlc2.err -2021/06/17 | 289245 | macros/latex-dev/base/tlc2.pdf -2021/06/17 | 12119 | macros/latex-dev/base/tulm.fdd -2021/06/17 | 3781 | macros/latex-dev/base/tulm.ins -2021/06/17 | 170529 | macros/latex-dev/base/tulm.pdf -2021/06/17 | 3181 | macros/latex-dev/base/unpack.ins -2021/06/17 | 325349 | macros/latex-dev/base/usrguide3.pdf -2021/06/17 | 29907 | macros/latex-dev/base/usrguide3.tex -2021/06/17 | 430996 | macros/latex-dev/base/usrguide.pdf -2021/06/17 | 68435 | macros/latex-dev/base/usrguide.tex -2021/06/17 | 89942 | macros/latex-dev/base/utf8ienc.dtx -2021/06/17 | 362073 | macros/latex-dev/base/utf8ienc.pdf -2021/06/17 | 10105 | macros/latex-dev/base/webcomp.err -2021/06/17 | 146200 | macros/latex-dev/base/webcomp.pdf -2021/06/17 | 34212765 | macros/latex-dev/base.zip -2021/06/17 | 8668 | macros/latex-dev/required/amsmath/amsbsy.dtx -2021/06/17 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins -2021/06/17 | 173746 | macros/latex-dev/required/amsmath/amsbsy.pdf -2021/06/17 | 11289 | macros/latex-dev/required/amsmath/amscd.dtx -2021/06/17 | 1487 | macros/latex-dev/required/amsmath/amscd.ins -2021/06/17 | 178672 | macros/latex-dev/required/amsmath/amscd.pdf -2021/06/17 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt -2021/06/17 | 13447 | macros/latex-dev/required/amsmath/amsgen.dtx -2021/06/17 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins -2021/06/17 | 176740 | macros/latex-dev/required/amsmath/amsgen.pdf -2021/06/17 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt -2021/06/17 | 508231 | macros/latex-dev/required/amsmath/amsldoc.pdf -2021/06/17 | 104675 | macros/latex-dev/required/amsmath/amsldoc.tex -2021/06/17 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty -2021/06/17 | 225983 | macros/latex-dev/required/amsmath/amsmath.dtx -2021/06/17 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins -2021/06/17 | 398817 | macros/latex-dev/required/amsmath/amsmath.pdf -2021/06/17 | 9200 | macros/latex-dev/required/amsmath/amsopn.dtx -2021/06/17 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins -2021/06/17 | 138991 | macros/latex-dev/required/amsmath/amsopn.pdf -2021/06/17 | 69732 | macros/latex-dev/required/amsmath/amstex.sty -2021/06/17 | 11403 | macros/latex-dev/required/amsmath/amstext.dtx -2021/06/17 | 1492 | macros/latex-dev/required/amsmath/amstext.ins -2021/06/17 | 215693 | macros/latex-dev/required/amsmath/amstext.pdf -2021/06/17 | 4341 | macros/latex-dev/required/amsmath/amsxtra.dtx -2021/06/17 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins -2021/06/17 | 112556 | macros/latex-dev/required/amsmath/amsxtra.pdf -2021/06/17 | 6735 | macros/latex-dev/required/amsmath/changes.txt -2021/06/17 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt -2021/06/17 | 369 | macros/latex-dev/required/amsmath/manifest.txt -2021/06/17 | 2726 | macros/latex-dev/required/amsmath/README.md -2021/06/17 | 109737 | macros/latex-dev/required/amsmath/subeqn.pdf -2021/06/17 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex -2021/06/17 | 145610 | macros/latex-dev/required/amsmath/technote.pdf -2021/06/17 | 12005 | macros/latex-dev/required/amsmath/technote.tex -2021/06/17 | 454662 | macros/latex-dev/required/amsmath/testmath.pdf -2021/06/17 | 82371 | macros/latex-dev/required/amsmath/testmath.tex -2021/06/17 | 2733513 | macros/latex-dev/required/amsmath.zip -2021/06/17 | 2317 | macros/latex-dev/required/firstaid/changes.txt -2021/06/17 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins -2021/06/17 | 20131 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx -2021/06/17 | 237390 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf -2021/06/17 | 474 | macros/latex-dev/required/firstaid/README.md -2021/06/17 | 238249 | macros/latex-dev/required/firstaid.zip -2021/06/17 | 15737 | macros/latex-dev/required/graphics/cat.eps -2021/06/17 | 33916 | macros/latex-dev/required/graphics/changes.txt -2021/06/17 | 31659 | macros/latex-dev/required/graphics/color.dtx -2021/06/17 | 215002 | macros/latex-dev/required/graphics/color.pdf -2021/06/17 | 50810 | macros/latex-dev/required/graphics/drivers.dtx -2021/06/17 | 286309 | macros/latex-dev/required/graphics/drivers.pdf -2021/06/17 | 4113 | macros/latex-dev/required/graphics/epsfig.dtx -2021/06/17 | 167686 | macros/latex-dev/required/graphics/epsfig.pdf -2021/06/17 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty -2021/06/17 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins -2021/06/17 | 70176 | macros/latex-dev/required/graphics/graphics.dtx -2021/06/17 | 1128 | macros/latex-dev/required/graphics/graphics.ins -2021/06/17 | 310676 | macros/latex-dev/required/graphics/graphics.pdf -2021/06/17 | 30185 | macros/latex-dev/required/graphics/graphicx.dtx -2021/06/17 | 247910 | macros/latex-dev/required/graphics/graphicx.pdf -2021/06/17 | 330071 | macros/latex-dev/required/graphics/grfguide.pdf -2021/06/17 | 37089 | macros/latex-dev/required/graphics/grfguide.tex -2021/06/17 | 13880 | macros/latex-dev/required/graphics/keyval.dtx -2021/06/17 | 239654 | macros/latex-dev/required/graphics/keyval.pdf -2021/06/17 | 3937 | macros/latex-dev/required/graphics/lscape.dtx -2021/06/17 | 163584 | macros/latex-dev/required/graphics/lscape.pdf -2021/06/17 | 2092 | macros/latex-dev/required/graphics/README.md -2021/06/17 | 21072 | macros/latex-dev/required/graphics/rotating.dtx -2021/06/17 | 269186 | macros/latex-dev/required/graphics/rotating.pdf -2021/06/17 | 172231 | macros/latex-dev/required/graphics/rotex.pdf -2021/06/17 | 14575 | macros/latex-dev/required/graphics/rotex.tex -2021/06/17 | 10682 | macros/latex-dev/required/graphics/trig.dtx -2021/06/17 | 207299 | macros/latex-dev/required/graphics/trig.pdf -2021/06/17 | 2632295 | macros/latex-dev/required/graphics.zip -2021/06/17 | 14077 | macros/latex-dev/required/tools/afterpage.dtx -2021/06/17 | 2538 | macros/latex-dev/required/tools/afterpage.ins -2021/06/17 | 205344 | macros/latex-dev/required/tools/afterpage.pdf -2021/06/17 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty -2021/06/17 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty -2021/06/17 | 127986 | macros/latex-dev/required/tools/array.dtx -2021/06/17 | 516483 | macros/latex-dev/required/tools/array.pdf -2021/06/17 | 61460 | macros/latex-dev/required/tools/bm.dtx -2021/06/17 | 2524 | macros/latex-dev/required/tools/bm.ins -2021/06/17 | 331424 | macros/latex-dev/required/tools/bm.pdf -2021/06/17 | 53172 | macros/latex-dev/required/tools/calc.dtx -2021/06/17 | 370414 | macros/latex-dev/required/tools/calc.pdf -2021/06/17 | 59933 | macros/latex-dev/required/tools/changes.txt -2021/06/17 | 12714 | macros/latex-dev/required/tools/dcolumn.dtx -2021/06/17 | 220689 | macros/latex-dev/required/tools/dcolumn.pdf -2021/06/17 | 6794 | macros/latex-dev/required/tools/delarray.dtx -2021/06/17 | 198647 | macros/latex-dev/required/tools/delarray.pdf -2021/06/17 | 10649 | macros/latex-dev/required/tools/enumerate.dtx -2021/06/17 | 215355 | macros/latex-dev/required/tools/enumerate.pdf -2021/06/17 | 4964 | macros/latex-dev/required/tools/fileerr.dtx -2021/06/17 | 195103 | macros/latex-dev/required/tools/fileerr.pdf -2021/06/17 | 10776 | macros/latex-dev/required/tools/fontsmpl.dtx -2021/06/17 | 154034 | macros/latex-dev/required/tools/fontsmpl.pdf -2021/06/17 | 39701 | macros/latex-dev/required/tools/ftnright.dtx -2021/06/17 | 369810 | macros/latex-dev/required/tools/ftnright.pdf -2021/06/17 | 11153 | macros/latex-dev/required/tools/hhline.dtx -2021/06/17 | 189538 | macros/latex-dev/required/tools/hhline.pdf -2021/06/17 | 2225 | macros/latex-dev/required/tools/indentfirst.dtx -2021/06/17 | 157803 | macros/latex-dev/required/tools/indentfirst.pdf -2021/06/17 | 32034 | macros/latex-dev/required/tools/layout.dtx -2021/06/17 | 267761 | macros/latex-dev/required/tools/layout.pdf -2021/06/17 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty -2021/06/17 | 76075 | macros/latex-dev/required/tools/longtable.dtx -2021/06/17 | 2538 | macros/latex-dev/required/tools/longtable.ins -2021/06/17 | 382541 | macros/latex-dev/required/tools/longtable.pdf -2021/06/17 | 3284 | macros/latex-dev/required/tools/manifest.txt -2021/06/17 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty -2021/06/17 | 182354 | macros/latex-dev/required/tools/multicol.dtx -2021/06/17 | 2576 | macros/latex-dev/required/tools/multicol.ins -2021/06/17 | 516139 | macros/latex-dev/required/tools/multicol.pdf -2021/06/17 | 8981 | macros/latex-dev/required/tools/rawfonts.dtx -2021/06/17 | 146534 | macros/latex-dev/required/tools/rawfonts.pdf -2021/06/17 | 1666 | macros/latex-dev/required/tools/README.md -2021/06/17 | 9493 | macros/latex-dev/required/tools/shellesc.dtx -2021/06/17 | 183532 | macros/latex-dev/required/tools/shellesc.pdf -2021/06/17 | 29569 | macros/latex-dev/required/tools/showkeys.dtx -2021/06/17 | 260624 | macros/latex-dev/required/tools/showkeys.pdf -2021/06/17 | 5796 | macros/latex-dev/required/tools/somedefs.dtx -2021/06/17 | 175169 | macros/latex-dev/required/tools/somedefs.pdf -2021/06/17 | 35880 | macros/latex-dev/required/tools/tabularx.dtx -2021/06/17 | 2535 | macros/latex-dev/required/tools/tabularx.ins -2021/06/17 | 278041 | macros/latex-dev/required/tools/tabularx.pdf -2021/06/17 | 43453 | macros/latex-dev/required/tools/theorem.dtx -2021/06/17 | 351317 | macros/latex-dev/required/tools/theorem.pdf -2021/06/17 | 5680 | macros/latex-dev/required/tools/tools.ins -2021/06/17 | 73674 | macros/latex-dev/required/tools/tools-overview.pdf -2021/06/17 | 5211 | macros/latex-dev/required/tools/tools-overview.tex -2021/06/17 | 25151 | macros/latex-dev/required/tools/trace.dtx -2021/06/17 | 229713 | macros/latex-dev/required/tools/trace.pdf -2021/06/17 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty -2021/06/17 | 114211 | macros/latex-dev/required/tools/varioref.dtx -2021/06/17 | 2531 | macros/latex-dev/required/tools/varioref.ins -2021/06/17 | 383483 | macros/latex-dev/required/tools/varioref.pdf -2021/06/17 | 72141 | macros/latex-dev/required/tools/verbatim.dtx -2021/06/17 | 330815 | macros/latex-dev/required/tools/verbatim.pdf -2021/06/17 | 6223 | macros/latex-dev/required/tools/xr.dtx -2021/06/17 | 177595 | macros/latex-dev/required/tools/xr.pdf -2021/06/17 | 17861 | macros/latex-dev/required/tools/xspace.dtx -2021/06/17 | 256897 | macros/latex-dev/required/tools/xspace.pdf -2021/06/17 | 7266306 | macros/latex-dev/required/tools.zip +2021/09/20 | 7109 | macros/latex-dev/base/alltt.dtx +2021/09/20 | 2890 | macros/latex-dev/base/alltt.ins +2021/09/20 | 214710 | macros/latex-dev/base/alltt.pdf +2021/09/20 | 3282 | macros/latex-dev/base/bugs.txt +2021/09/20 | 242886 | macros/latex-dev/base/cfgguide.pdf +2021/09/20 | 22456 | macros/latex-dev/base/cfgguide.tex +2021/09/20 | 42708 | macros/latex-dev/base/changes.old.txt +2021/09/20 | 383566 | macros/latex-dev/base/changes.txt +2021/09/20 | 156219 | macros/latex-dev/base/classes.dtx +2021/09/20 | 4087 | macros/latex-dev/base/classes.ins +2021/09/20 | 550711 | macros/latex-dev/base/classes.pdf +2021/09/20 | 402779 | macros/latex-dev/base/clsguide.pdf +2021/09/20 | 69050 | macros/latex-dev/base/clsguide.tex +2021/09/20 | 5273 | macros/latex-dev/base/cmextra.ins +2021/09/20 | 43636 | macros/latex-dev/base/cmfonts.fdd +2021/09/20 | 4324 | macros/latex-dev/base/cmfonts.ins +2021/09/20 | 292317 | macros/latex-dev/base/cmfonts.pdf +2021/09/20 | 239681 | macros/latex-dev/base/cyrguide.pdf +2021/09/20 | 17495 | macros/latex-dev/base/cyrguide.tex +2021/09/20 | 204063 | macros/latex-dev/base/doc.dtx +2021/09/20 | 676958 | macros/latex-dev/base/doc.pdf +2021/09/20 | 170214 | macros/latex-dev/base/docstrip.dtx +2021/09/20 | 4221 | macros/latex-dev/base/docstrip.ins +2021/09/20 | 503607 | macros/latex-dev/base/docstrip.pdf +2021/09/20 | 41831 | macros/latex-dev/base/doc-v3beta.sty +2021/09/20 | 4390 | macros/latex-dev/base/ec.ins +2021/09/20 | 1316472 | macros/latex-dev/base/encguide.pdf +2021/09/20 | 52813 | macros/latex-dev/base/encguide.tex +2021/09/20 | 7221 | macros/latex-dev/base/exscale.dtx +2021/09/20 | 3338 | macros/latex-dev/base/exscale.ins +2021/09/20 | 212307 | macros/latex-dev/base/exscale.pdf +2021/09/20 | 23521 | macros/latex-dev/base/fix-cm.dtx +2021/09/20 | 2892 | macros/latex-dev/base/fix-cm.ins +2021/09/20 | 287672 | macros/latex-dev/base/fix-cm.pdf +2021/09/20 | 493957 | macros/latex-dev/base/fntguide.pdf +2021/09/20 | 90917 | macros/latex-dev/base/fntguide.tex +2021/09/20 | 60326 | macros/latex-dev/base/fontdef.dtx +2021/09/20 | 9583 | macros/latex-dev/base/format.ins +2021/09/20 | 5514 | macros/latex-dev/base/graphpap.dtx +2021/09/20 | 2892 | macros/latex-dev/base/graphpap.ins +2021/09/20 | 169323 | macros/latex-dev/base/graphpap.pdf +2021/09/20 | 2705 | macros/latex-dev/base/idx.tex +2021/09/20 | 18303 | macros/latex-dev/base/ifthen.dtx +2021/09/20 | 2888 | macros/latex-dev/base/ifthen.ins +2021/09/20 | 220417 | macros/latex-dev/base/ifthen.pdf +2021/09/20 | 106908 | macros/latex-dev/base/inputenc.dtx +2021/09/20 | 5714 | macros/latex-dev/base/inputenc.ins +2021/09/20 | 318168 | macros/latex-dev/base/inputenc.pdf +2021/09/20 | 4079 | macros/latex-dev/base/lablst.tex +2021/09/20 | 13759 | macros/latex-dev/base/lamport-manual.err +2021/09/20 | 170875 | macros/latex-dev/base/lamport-manual.pdf +2021/09/20 | 38735 | macros/latex-dev/base/latex209.dtx +2021/09/20 | 4219 | macros/latex-dev/base/latex209.ins +2021/09/20 | 469966 | macros/latex-dev/base/latexchanges.pdf +2021/09/20 | 41848 | macros/latex-dev/base/latexchanges.tex +2021/09/20 | 44409 | macros/latex-dev/base/latexrelease.dtx +2021/09/20 | 5917 | macros/latex-dev/base/latexrelease.ins +2021/09/20 | 290495 | macros/latex-dev/base/latexrelease.pdf +2021/09/20 | 6714 | macros/latex-dev/base/latexsym.dtx +2021/09/20 | 5041 | macros/latex-dev/base/latexsym.ins +2021/09/20 | 208359 | macros/latex-dev/base/latexsym.pdf +2021/09/20 | 52724 | macros/latex-dev/base/lb2.err +2021/09/20 | 252154 | macros/latex-dev/base/lb2.pdf +2021/09/20 | 1279 | macros/latex-dev/base/legal.txt +2021/09/20 | 63283 | macros/latex-dev/base/letter.dtx +2021/09/20 | 3372 | macros/latex-dev/base/letter.ins +2021/09/20 | 328443 | macros/latex-dev/base/letter.pdf +2021/09/20 | 20632 | macros/latex-dev/base/lgc2.err +2021/09/20 | 215091 | macros/latex-dev/base/lgc2.pdf +2021/09/20 | 9068 | macros/latex-dev/base/lppl-1-0.txt +2021/09/20 | 14341 | macros/latex-dev/base/lppl-1-1.txt +2021/09/20 | 14421 | macros/latex-dev/base/lppl-1-2.txt +2021/09/20 | 132373 | macros/latex-dev/base/lppl.pdf +2021/09/20 | 23386 | macros/latex-dev/base/lppl.tex +2021/09/20 | 19040 | macros/latex-dev/base/lppl.txt +2021/09/20 | 4303 | macros/latex-dev/base/ltalloc.dtx +2021/09/20 | 16105 | macros/latex-dev/base/ltbibl.dtx +2021/09/20 | 43867 | macros/latex-dev/base/ltboxes.dtx +2021/09/20 | 141971 | macros/latex-dev/base/ltclass.dtx +2021/09/20 | 171083 | macros/latex-dev/base/ltcmd.dtx +2021/09/20 | 699078 | macros/latex-dev/base/ltcmdhooks-code.pdf +2021/09/20 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex +2021/09/20 | 479642 | macros/latex-dev/base/ltcmdhooks-doc.pdf +2021/09/20 | 177 | macros/latex-dev/base/ltcmdhooks-doc.tex +2021/09/20 | 42705 | macros/latex-dev/base/ltcmdhooks.dtx +2021/09/20 | 9562 | macros/latex-dev/base/ltcntrl.dtx +2021/09/20 | 24291 | macros/latex-dev/base/ltcounts.dtx +2021/09/20 | 85862 | macros/latex-dev/base/ltdefns.dtx +2021/09/20 | 35302 | macros/latex-dev/base/ltdirchk.dtx +2021/09/20 | 27074 | macros/latex-dev/base/lterror.dtx +2021/09/20 | 13917 | macros/latex-dev/base/ltexpl.dtx +2021/09/20 | 795879 | macros/latex-dev/base/ltfilehook-code.pdf +2021/09/20 | 105 | macros/latex-dev/base/ltfilehook-code.tex +2021/09/20 | 546791 | macros/latex-dev/base/ltfilehook-doc.pdf +2021/09/20 | 180 | macros/latex-dev/base/ltfilehook-doc.tex +2021/09/20 | 64242 | macros/latex-dev/base/ltfilehook.dtx +2021/09/20 | 55654 | macros/latex-dev/base/ltfiles.dtx +2021/09/20 | 46297 | macros/latex-dev/base/ltfinal.dtx +2021/09/20 | 54680 | macros/latex-dev/base/ltfloat.dtx +2021/09/20 | 29272 | macros/latex-dev/base/ltfntcmd.dtx +2021/09/20 | 58556 | macros/latex-dev/base/ltfssaxes.dtx +2021/09/20 | 80726 | macros/latex-dev/base/ltfssbas.dtx +2021/09/20 | 10375 | macros/latex-dev/base/ltfsscmp.dtx +2021/09/20 | 61425 | macros/latex-dev/base/ltfssdcl.dtx +2021/09/20 | 84220 | macros/latex-dev/base/ltfssini.dtx +2021/09/20 | 72480 | macros/latex-dev/base/ltfsstrc.dtx +2021/09/20 | 1083948 | macros/latex-dev/base/lthooks-code.pdf +2021/09/20 | 102 | macros/latex-dev/base/lthooks-code.tex +2021/09/20 | 703437 | macros/latex-dev/base/lthooks-doc.pdf +2021/09/20 | 177 | macros/latex-dev/base/lthooks-doc.tex +2021/09/20 | 209026 | macros/latex-dev/base/lthooks.dtx +2021/09/20 | 4950 | macros/latex-dev/base/lthyphen.dtx +2021/09/20 | 5864 | macros/latex-dev/base/ltidxglo.dtx +2021/09/20 | 4762 | macros/latex-dev/base/ltlength.dtx +2021/09/20 | 36157 | macros/latex-dev/base/ltlists.dtx +2021/09/20 | 3730 | macros/latex-dev/base/ltlogos.dtx +2021/09/20 | 64850 | macros/latex-dev/base/ltluatex.dtx +2021/09/20 | 325107 | macros/latex-dev/base/ltluatex.pdf +2021/09/20 | 39431 | macros/latex-dev/base/ltmath.dtx +2021/09/20 | 58750 | macros/latex-dev/base/ltmiscen.dtx +2021/09/20 | 161518 | macros/latex-dev/base/ltnews01.pdf +2021/09/20 | 5246 | macros/latex-dev/base/ltnews01.tex +2021/09/20 | 150466 | macros/latex-dev/base/ltnews02.pdf +2021/09/20 | 5283 | macros/latex-dev/base/ltnews02.tex +2021/09/20 | 150493 | macros/latex-dev/base/ltnews03.pdf +2021/09/20 | 5200 | macros/latex-dev/base/ltnews03.tex +2021/09/20 | 143686 | macros/latex-dev/base/ltnews04.pdf +2021/09/20 | 5506 | macros/latex-dev/base/ltnews04.tex +2021/09/20 | 174488 | macros/latex-dev/base/ltnews05.pdf +2021/09/20 | 5608 | macros/latex-dev/base/ltnews05.tex +2021/09/20 | 142909 | macros/latex-dev/base/ltnews06.pdf +2021/09/20 | 5390 | macros/latex-dev/base/ltnews06.tex +2021/09/20 | 138044 | macros/latex-dev/base/ltnews07.pdf +2021/09/20 | 5425 | macros/latex-dev/base/ltnews07.tex +2021/09/20 | 155055 | macros/latex-dev/base/ltnews08.pdf +2021/09/20 | 5695 | macros/latex-dev/base/ltnews08.tex +2021/09/20 | 129032 | macros/latex-dev/base/ltnews09.pdf +2021/09/20 | 5293 | macros/latex-dev/base/ltnews09.tex +2021/09/20 | 159313 | macros/latex-dev/base/ltnews10.pdf +2021/09/20 | 5659 | macros/latex-dev/base/ltnews10.tex +2021/09/20 | 111955 | macros/latex-dev/base/ltnews11.pdf +2021/09/20 | 5529 | macros/latex-dev/base/ltnews11.tex +2021/09/20 | 147587 | macros/latex-dev/base/ltnews12.pdf +2021/09/20 | 5400 | macros/latex-dev/base/ltnews12.tex +2021/09/20 | 173323 | macros/latex-dev/base/ltnews13.pdf +2021/09/20 | 6871 | macros/latex-dev/base/ltnews13.tex +2021/09/20 | 161405 | macros/latex-dev/base/ltnews14.pdf +2021/09/20 | 6273 | macros/latex-dev/base/ltnews14.tex +2021/09/20 | 130447 | macros/latex-dev/base/ltnews15.pdf +2021/09/20 | 5839 | macros/latex-dev/base/ltnews15.tex +2021/09/20 | 146533 | macros/latex-dev/base/ltnews16.pdf +2021/09/20 | 5776 | macros/latex-dev/base/ltnews16.tex +2021/09/20 | 166368 | macros/latex-dev/base/ltnews17.pdf +2021/09/20 | 8863 | macros/latex-dev/base/ltnews17.tex +2021/09/20 | 38031 | macros/latex-dev/base/ltnews18.pdf +2021/09/20 | 1341 | macros/latex-dev/base/ltnews18.tex +2021/09/20 | 245818 | macros/latex-dev/base/ltnews19.pdf +2021/09/20 | 4170 | macros/latex-dev/base/ltnews19.tex +2021/09/20 | 297070 | macros/latex-dev/base/ltnews20.pdf +2021/09/20 | 7325 | macros/latex-dev/base/ltnews20.tex +2021/09/20 | 244869 | macros/latex-dev/base/ltnews21.pdf +2021/09/20 | 9809 | macros/latex-dev/base/ltnews21.tex +2021/09/20 | 318399 | macros/latex-dev/base/ltnews22.pdf +2021/09/20 | 10668 | macros/latex-dev/base/ltnews22.tex +2021/09/20 | 287125 | macros/latex-dev/base/ltnews23.pdf +2021/09/20 | 10687 | macros/latex-dev/base/ltnews23.tex +2021/09/20 | 265211 | macros/latex-dev/base/ltnews24.pdf +2021/09/20 | 12224 | macros/latex-dev/base/ltnews24.tex +2021/09/20 | 205162 | macros/latex-dev/base/ltnews25.pdf +2021/09/20 | 5473 | macros/latex-dev/base/ltnews25.tex +2021/09/20 | 379735 | macros/latex-dev/base/ltnews26.pdf +2021/09/20 | 10697 | macros/latex-dev/base/ltnews26.tex +2021/09/20 | 252432 | macros/latex-dev/base/ltnews27.pdf +2021/09/20 | 5506 | macros/latex-dev/base/ltnews27.tex +2021/09/20 | 387987 | macros/latex-dev/base/ltnews28.pdf +2021/09/20 | 14891 | macros/latex-dev/base/ltnews28.tex +2021/09/20 | 454808 | macros/latex-dev/base/ltnews29.pdf +2021/09/20 | 18940 | macros/latex-dev/base/ltnews29.tex +2021/09/20 | 511855 | macros/latex-dev/base/ltnews30.pdf +2021/09/20 | 23651 | macros/latex-dev/base/ltnews30.tex +2021/09/20 | 526312 | macros/latex-dev/base/ltnews31.pdf +2021/09/20 | 30456 | macros/latex-dev/base/ltnews31.tex +2021/09/20 | 546162 | macros/latex-dev/base/ltnews32.pdf +2021/09/20 | 33256 | macros/latex-dev/base/ltnews32.tex +2021/09/20 | 522413 | macros/latex-dev/base/ltnews33.pdf +2021/09/20 | 33916 | macros/latex-dev/base/ltnews33.tex +2021/09/20 | 505243 | macros/latex-dev/base/ltnews34.pdf +2021/09/20 | 24782 | macros/latex-dev/base/ltnews34.tex +2021/09/20 | 20469 | macros/latex-dev/base/ltnews.cls +2021/09/20 | 1116092 | macros/latex-dev/base/ltnews.pdf +2021/09/20 | 8259 | macros/latex-dev/base/ltnews.tex +2021/09/20 | 149318 | macros/latex-dev/base/ltoutenc.dtx +2021/09/20 | 3367 | macros/latex-dev/base/ltoutenc.ins +2021/09/20 | 177935 | macros/latex-dev/base/ltoutput.dtx +2021/09/20 | 11590 | macros/latex-dev/base/ltpage.dtx +2021/09/20 | 2733 | macros/latex-dev/base/ltpageno.dtx +2021/09/20 | 666188 | macros/latex-dev/base/ltpara-code.pdf +2021/09/20 | 99 | macros/latex-dev/base/ltpara-code.tex +2021/09/20 | 560534 | macros/latex-dev/base/ltpara-doc.pdf +2021/09/20 | 173 | macros/latex-dev/base/ltpara-doc.tex +2021/09/20 | 50193 | macros/latex-dev/base/ltpara.dtx +2021/09/20 | 6160 | macros/latex-dev/base/ltpar.dtx +2021/09/20 | 69007 | macros/latex-dev/base/ltpictur.dtx +2021/09/20 | 54088 | macros/latex-dev/base/ltplain.dtx +2021/09/20 | 33951 | macros/latex-dev/base/ltsect.dtx +2021/09/20 | 818929 | macros/latex-dev/base/ltshipout-code.pdf +2021/09/20 | 104 | macros/latex-dev/base/ltshipout-code.tex +2021/09/20 | 564752 | macros/latex-dev/base/ltshipout-doc.pdf +2021/09/20 | 179 | macros/latex-dev/base/ltshipout-doc.tex +2021/09/20 | 78325 | macros/latex-dev/base/ltshipout.dtx +2021/09/20 | 45245 | macros/latex-dev/base/ltspace.dtx +2021/09/20 | 47901 | macros/latex-dev/base/lttab.dtx +2021/09/20 | 90126 | macros/latex-dev/base/lttextcomp.dtx +2021/09/20 | 8736 | macros/latex-dev/base/ltthm.dtx +2021/09/20 | 14293 | macros/latex-dev/base/ltvers.dtx +2021/09/20 | 219354 | macros/latex-dev/base/ltx3info.pdf +2021/09/20 | 18299 | macros/latex-dev/base/ltx3info.tex +2021/09/20 | 27122 | macros/latex-dev/base/ltxcheck.tex +2021/09/20 | 19064 | macros/latex-dev/base/ltxdoc.dtx +2021/09/20 | 238577 | macros/latex-dev/base/ltxdoc.pdf +2021/09/20 | 7524 | macros/latex-dev/base/ltxguide.cls +2021/09/20 | 15625 | macros/latex-dev/base/ltxref.dtx +2021/09/20 | 10603 | macros/latex-dev/base/makeindx.dtx +2021/09/20 | 3434 | macros/latex-dev/base/makeindx.ins +2021/09/20 | 173682 | macros/latex-dev/base/makeindx.pdf +2021/09/20 | 10896 | macros/latex-dev/base/manifest.txt +2021/09/20 | 1937 | macros/latex-dev/base/minimal.cls +2021/09/20 | 243601 | macros/latex-dev/base/modguide.pdf +2021/09/20 | 16233 | macros/latex-dev/base/modguide.tex +2021/09/20 | 4254 | macros/latex-dev/base/newdc.ins +2021/09/20 | 6362 | macros/latex-dev/base/newlfont.dtx +2021/09/20 | 18404 | macros/latex-dev/base/nfssfont.dtx +2021/09/20 | 2893 | macros/latex-dev/base/nfssfont.ins +2021/09/20 | 218782 | macros/latex-dev/base/nfssfont.pdf +2021/09/20 | 3960 | macros/latex-dev/base/olddc.ins +2021/09/20 | 8631 | macros/latex-dev/base/oldlfont.dtx +2021/09/20 | 9373 | macros/latex-dev/base/preload.dtx +2021/09/20 | 13301 | macros/latex-dev/base/proc.dtx +2021/09/20 | 3401 | macros/latex-dev/base/proc.ins +2021/09/20 | 233995 | macros/latex-dev/base/proc.pdf +2021/09/20 | 3514 | macros/latex-dev/base/README.md +2021/09/20 | 7200 | macros/latex-dev/base/sample2e.tex +2021/09/20 | 89718 | macros/latex-dev/base/slides.dtx +2021/09/20 | 6760 | macros/latex-dev/base/slides.ins +2021/09/20 | 374051 | macros/latex-dev/base/slides.pdf +2021/09/20 | 15699 | macros/latex-dev/base/slifonts.fdd +2021/09/20 | 234008 | macros/latex-dev/base/slifonts.pdf +2021/09/20 | 1694 | macros/latex-dev/base/small2e.tex +2021/09/20 | 8531 | macros/latex-dev/base/source2edoc.cls +2021/09/20 | 5421635 | macros/latex-dev/base/source2e.pdf +2021/09/20 | 15104 | macros/latex-dev/base/source2e.tex +2021/09/20 | 9400 | macros/latex-dev/base/syntonly.dtx +2021/09/20 | 2896 | macros/latex-dev/base/syntonly.ins +2021/09/20 | 197195 | macros/latex-dev/base/syntonly.pdf +2021/09/20 | 12520 | macros/latex-dev/base/testpage.tex +2021/09/20 | 2738 | macros/latex-dev/base/tex2.txt +2021/09/20 | 8496 | macros/latex-dev/base/texpert.txt +2021/09/20 | 172409 | macros/latex-dev/base/tlc2.err +2021/09/20 | 289519 | macros/latex-dev/base/tlc2.pdf +2021/09/20 | 12242 | macros/latex-dev/base/tulm.fdd +2021/09/20 | 3781 | macros/latex-dev/base/tulm.ins +2021/09/20 | 170530 | macros/latex-dev/base/tulm.pdf +2021/09/20 | 3181 | macros/latex-dev/base/unpack.ins +2021/09/20 | 325727 | macros/latex-dev/base/usrguide3.pdf +2021/09/20 | 30453 | macros/latex-dev/base/usrguide3.tex +2021/09/20 | 430996 | macros/latex-dev/base/usrguide.pdf +2021/09/20 | 68435 | macros/latex-dev/base/usrguide.tex +2021/09/20 | 90560 | macros/latex-dev/base/utf8ienc.dtx +2021/09/20 | 361582 | macros/latex-dev/base/utf8ienc.pdf +2021/09/20 | 10251 | macros/latex-dev/base/webcomp.err +2021/09/20 | 146200 | macros/latex-dev/base/webcomp.pdf +2021/09/20 | 34686730 | macros/latex-dev/base.zip +2021/09/20 | 8668 | macros/latex-dev/required/amsmath/amsbsy.dtx +2021/09/20 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins +2021/09/20 | 173746 | macros/latex-dev/required/amsmath/amsbsy.pdf +2021/09/20 | 11289 | macros/latex-dev/required/amsmath/amscd.dtx +2021/09/20 | 1487 | macros/latex-dev/required/amsmath/amscd.ins +2021/09/20 | 178672 | macros/latex-dev/required/amsmath/amscd.pdf +2021/09/20 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt +2021/09/20 | 13447 | macros/latex-dev/required/amsmath/amsgen.dtx +2021/09/20 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins +2021/09/20 | 176740 | macros/latex-dev/required/amsmath/amsgen.pdf +2021/09/20 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt +2021/09/20 | 508199 | macros/latex-dev/required/amsmath/amsldoc.pdf +2021/09/20 | 104792 | macros/latex-dev/required/amsmath/amsldoc.tex +2021/09/20 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty +2021/09/20 | 227034 | macros/latex-dev/required/amsmath/amsmath.dtx +2021/09/20 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins +2021/09/20 | 399552 | macros/latex-dev/required/amsmath/amsmath.pdf +2021/09/20 | 9200 | macros/latex-dev/required/amsmath/amsopn.dtx +2021/09/20 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins +2021/09/20 | 138783 | macros/latex-dev/required/amsmath/amsopn.pdf +2021/09/20 | 69732 | macros/latex-dev/required/amsmath/amstex.sty +2021/09/20 | 11403 | macros/latex-dev/required/amsmath/amstext.dtx +2021/09/20 | 1492 | macros/latex-dev/required/amsmath/amstext.ins +2021/09/20 | 215810 | macros/latex-dev/required/amsmath/amstext.pdf +2021/09/20 | 4341 | macros/latex-dev/required/amsmath/amsxtra.dtx +2021/09/20 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins +2021/09/20 | 112556 | macros/latex-dev/required/amsmath/amsxtra.pdf +2021/09/20 | 6998 | macros/latex-dev/required/amsmath/changes.txt +2021/09/20 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt +2021/09/20 | 369 | macros/latex-dev/required/amsmath/manifest.txt +2021/09/20 | 2724 | macros/latex-dev/required/amsmath/README.md +2021/09/20 | 109737 | macros/latex-dev/required/amsmath/subeqn.pdf +2021/09/20 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex +2021/09/20 | 145610 | macros/latex-dev/required/amsmath/technote.pdf +2021/09/20 | 12005 | macros/latex-dev/required/amsmath/technote.tex +2021/09/20 | 454662 | macros/latex-dev/required/amsmath/testmath.pdf +2021/09/20 | 82371 | macros/latex-dev/required/amsmath/testmath.tex +2021/09/20 | 2734589 | macros/latex-dev/required/amsmath.zip +2021/09/20 | 3024 | macros/latex-dev/required/firstaid/changes.txt +2021/09/20 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins +2021/09/20 | 23162 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx +2021/09/20 | 246012 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf +2021/09/20 | 474 | macros/latex-dev/required/firstaid/README.md +2021/09/20 | 247461 | macros/latex-dev/required/firstaid.zip +2021/09/20 | 15737 | macros/latex-dev/required/graphics/cat.eps +2021/09/20 | 34281 | macros/latex-dev/required/graphics/changes.txt +2021/09/20 | 31659 | macros/latex-dev/required/graphics/color.dtx +2021/09/20 | 215002 | macros/latex-dev/required/graphics/color.pdf +2021/09/20 | 50810 | macros/latex-dev/required/graphics/drivers.dtx +2021/09/20 | 286309 | macros/latex-dev/required/graphics/drivers.pdf +2021/09/20 | 4113 | macros/latex-dev/required/graphics/epsfig.dtx +2021/09/20 | 167686 | macros/latex-dev/required/graphics/epsfig.pdf +2021/09/20 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty +2021/09/20 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins +2021/09/20 | 70176 | macros/latex-dev/required/graphics/graphics.dtx +2021/09/20 | 1128 | macros/latex-dev/required/graphics/graphics.ins +2021/09/20 | 310676 | macros/latex-dev/required/graphics/graphics.pdf +2021/09/20 | 30455 | macros/latex-dev/required/graphics/graphicx.dtx +2021/09/20 | 248231 | macros/latex-dev/required/graphics/graphicx.pdf +2021/09/20 | 330071 | macros/latex-dev/required/graphics/grfguide.pdf +2021/09/20 | 37089 | macros/latex-dev/required/graphics/grfguide.tex +2021/09/20 | 13880 | macros/latex-dev/required/graphics/keyval.dtx +2021/09/20 | 239654 | macros/latex-dev/required/graphics/keyval.pdf +2021/09/20 | 3937 | macros/latex-dev/required/graphics/lscape.dtx +2021/09/20 | 163584 | macros/latex-dev/required/graphics/lscape.pdf +2021/09/20 | 2092 | macros/latex-dev/required/graphics/README.md +2021/09/20 | 21072 | macros/latex-dev/required/graphics/rotating.dtx +2021/09/20 | 269103 | macros/latex-dev/required/graphics/rotating.pdf +2021/09/20 | 172231 | macros/latex-dev/required/graphics/rotex.pdf +2021/09/20 | 14575 | macros/latex-dev/required/graphics/rotex.tex +2021/09/20 | 10744 | macros/latex-dev/required/graphics/trig.dtx +2021/09/20 | 206897 | macros/latex-dev/required/graphics/trig.pdf +2021/09/20 | 2632331 | macros/latex-dev/required/graphics.zip +2021/09/20 | 14077 | macros/latex-dev/required/tools/afterpage.dtx +2021/09/20 | 2538 | macros/latex-dev/required/tools/afterpage.ins +2021/09/20 | 205344 | macros/latex-dev/required/tools/afterpage.pdf +2021/09/20 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty +2021/09/20 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty +2021/09/20 | 128187 | macros/latex-dev/required/tools/array.dtx +2021/09/20 | 517124 | macros/latex-dev/required/tools/array.pdf +2021/09/20 | 61460 | macros/latex-dev/required/tools/bm.dtx +2021/09/20 | 2524 | macros/latex-dev/required/tools/bm.ins +2021/09/20 | 331424 | macros/latex-dev/required/tools/bm.pdf +2021/09/20 | 53172 | macros/latex-dev/required/tools/calc.dtx +2021/09/20 | 370414 | macros/latex-dev/required/tools/calc.pdf +2021/09/20 | 60699 | macros/latex-dev/required/tools/changes.txt +2021/09/20 | 12714 | macros/latex-dev/required/tools/dcolumn.dtx +2021/09/20 | 220689 | macros/latex-dev/required/tools/dcolumn.pdf +2021/09/20 | 6794 | macros/latex-dev/required/tools/delarray.dtx +2021/09/20 | 198647 | macros/latex-dev/required/tools/delarray.pdf +2021/09/20 | 10649 | macros/latex-dev/required/tools/enumerate.dtx +2021/09/20 | 215355 | macros/latex-dev/required/tools/enumerate.pdf +2021/09/20 | 4964 | macros/latex-dev/required/tools/fileerr.dtx +2021/09/20 | 195434 | macros/latex-dev/required/tools/fileerr.pdf +2021/09/20 | 10776 | macros/latex-dev/required/tools/fontsmpl.dtx +2021/09/20 | 154034 | macros/latex-dev/required/tools/fontsmpl.pdf +2021/09/20 | 39701 | macros/latex-dev/required/tools/ftnright.dtx +2021/09/20 | 370134 | macros/latex-dev/required/tools/ftnright.pdf +2021/09/20 | 11153 | macros/latex-dev/required/tools/hhline.dtx +2021/09/20 | 189538 | macros/latex-dev/required/tools/hhline.pdf +2021/09/20 | 2225 | macros/latex-dev/required/tools/indentfirst.dtx +2021/09/20 | 157803 | macros/latex-dev/required/tools/indentfirst.pdf +2021/09/20 | 32034 | macros/latex-dev/required/tools/layout.dtx +2021/09/20 | 267761 | macros/latex-dev/required/tools/layout.pdf +2021/09/20 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty +2021/09/20 | 76402 | macros/latex-dev/required/tools/longtable.dtx +2021/09/20 | 2538 | macros/latex-dev/required/tools/longtable.ins +2021/09/20 | 382155 | macros/latex-dev/required/tools/longtable.pdf +2021/09/20 | 3284 | macros/latex-dev/required/tools/manifest.txt +2021/09/20 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty +2021/09/20 | 182355 | macros/latex-dev/required/tools/multicol.dtx +2021/09/20 | 2576 | macros/latex-dev/required/tools/multicol.ins +2021/09/20 | 516148 | macros/latex-dev/required/tools/multicol.pdf +2021/09/20 | 8981 | macros/latex-dev/required/tools/rawfonts.dtx +2021/09/20 | 146534 | macros/latex-dev/required/tools/rawfonts.pdf +2021/09/20 | 1666 | macros/latex-dev/required/tools/README.md +2021/09/20 | 9493 | macros/latex-dev/required/tools/shellesc.dtx +2021/09/20 | 183532 | macros/latex-dev/required/tools/shellesc.pdf +2021/09/20 | 29569 | macros/latex-dev/required/tools/showkeys.dtx +2021/09/20 | 260624 | macros/latex-dev/required/tools/showkeys.pdf +2021/09/20 | 5796 | macros/latex-dev/required/tools/somedefs.dtx +2021/09/20 | 175169 | macros/latex-dev/required/tools/somedefs.pdf +2021/09/20 | 35880 | macros/latex-dev/required/tools/tabularx.dtx +2021/09/20 | 2535 | macros/latex-dev/required/tools/tabularx.ins +2021/09/20 | 278041 | macros/latex-dev/required/tools/tabularx.pdf +2021/09/20 | 43453 | macros/latex-dev/required/tools/theorem.dtx +2021/09/20 | 351657 | macros/latex-dev/required/tools/theorem.pdf +2021/09/20 | 5680 | macros/latex-dev/required/tools/tools.ins +2021/09/20 | 73674 | macros/latex-dev/required/tools/tools-overview.pdf +2021/09/20 | 5211 | macros/latex-dev/required/tools/tools-overview.tex +2021/09/20 | 25151 | macros/latex-dev/required/tools/trace.dtx +2021/09/20 | 229713 | macros/latex-dev/required/tools/trace.pdf +2021/09/20 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty +2021/09/20 | 114351 | macros/latex-dev/required/tools/varioref.dtx +2021/09/20 | 2531 | macros/latex-dev/required/tools/varioref.ins +2021/09/20 | 383524 | macros/latex-dev/required/tools/varioref.pdf +2021/09/20 | 72141 | macros/latex-dev/required/tools/verbatim.dtx +2021/09/20 | 330815 | macros/latex-dev/required/tools/verbatim.pdf +2021/09/20 | 6223 | macros/latex-dev/required/tools/xr.dtx +2021/09/20 | 177595 | macros/latex-dev/required/tools/xr.pdf +2021/09/20 | 17861 | macros/latex-dev/required/tools/xspace.dtx +2021/09/20 | 256897 | macros/latex-dev/required/tools/xspace.pdf +2021/09/20 | 7268047 | macros/latex-dev/required/tools.zip 1999/05/03 | 8998 | macros/latex/exptl/delimtxt/delimtxt.dtx 1999/03/28 | 143 | macros/latex/exptl/delimtxt/delimtxt.ins 2006/03/21 | 55074 | macros/latex/exptl/delimtxt/delimtxt.pdf @@ -233698,6 +233721,18 @@ 2020/10/23 | 281887 | macros/luatex/generic/nodetree/nodetree.pdf 2020/10/23 | 4029 | macros/luatex/generic/nodetree/README.md 2020/10/23 | 289509 | macros/luatex/generic/nodetree.zip +2021/09/17 | 7235 | macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex +2021/09/17 | 58592 | macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc +2021/09/17 | 385350 | macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf +2021/09/17 | 9600 | macros/luatex/generic/pdfextra/examples/pdfextra-example.tex +2021/09/17 | 662 | macros/luatex/generic/pdfextra/LICENSE +2021/09/17 | 245952 | macros/luatex/generic/pdfextra/pdfextra-doc.pdf +2021/09/17 | 33962 | macros/luatex/generic/pdfextra/pdfextra-doc.tex +2021/09/17 | 68819 | macros/luatex/generic/pdfextra/pdfextra.opm +2021/09/17 | 69 | macros/luatex/generic/pdfextra/pdfextra.sty +2021/09/17 | 9358 | macros/luatex/generic/pdfextra/pdfextra.tex +2021/09/17 | 1101 | macros/luatex/generic/pdfextra/README.md +2021/09/18 | 714993 | macros/luatex/generic/pdfextra.zip 2021/09/19 | 20067 | macros/luatex/generic/penlight/penlight.pdf 2021/09/19 | 1550 | macros/luatex/generic/penlight/penlight.sty 2021/09/19 | 3376 | macros/luatex/generic/penlight/penlight.tex @@ -234444,18 +234479,6 @@ 2017/10/17 | 704910 | macros/luatex/latex/wallcalendar/wallcalendar-layouts.png 2017/10/17 | 2896302 | macros/luatex/latex/wallcalendar/wallcalendar.pdf 2017/10/21 | 9209120 | macros/luatex/latex/wallcalendar.zip -2021/09/17 | 7235 | macros/luatex/optex/pdfextra/examples/pdfextra-example-latex.tex -2021/09/17 | 58592 | macros/luatex/optex/pdfextra/examples/pdfextra-example-part.prc -2021/09/17 | 385350 | macros/luatex/optex/pdfextra/examples/pdfextra-example.pdf -2021/09/17 | 9600 | macros/luatex/optex/pdfextra/examples/pdfextra-example.tex -2021/09/17 | 662 | macros/luatex/optex/pdfextra/LICENSE -2021/09/17 | 245952 | macros/luatex/optex/pdfextra/pdfextra-doc.pdf -2021/09/17 | 33962 | macros/luatex/optex/pdfextra/pdfextra-doc.tex -2021/09/17 | 68819 | macros/luatex/optex/pdfextra/pdfextra.opm -2021/09/17 | 69 | macros/luatex/optex/pdfextra/pdfextra.sty -2021/09/17 | 9358 | macros/luatex/optex/pdfextra/pdfextra.tex -2021/09/17 | 1101 | macros/luatex/optex/pdfextra/README.md -2021/09/18 | 714993 | macros/luatex/optex/pdfextra.zip 1993/02/12 | 2330 | macros/mathematica/CHANGES 1993/02/12 | 7699 | macros/mathematica/README 1993/02/12 | 40574 | macros/mathematica/tex-mma-j.ps.gz @@ -283484,8 +283507,8 @@ 2021/04/13 | 2246548 | systems/texlive/tlnet/archive/luajittex.x86_64-darwinlegacy.r58850.tar.xz 2021/04/13 | 3849324 | systems/texlive/tlnet/archive/luajittex.x86_64-linuxmusl.r58850.tar.xz 2021/04/15 | 2675100 | systems/texlive/tlnet/archive/luajittex.x86_64-linux.r58872.tar.xz -2021/01/19 | 140576 | systems/texlive/tlnet/archive/luakeys.doc.r57463.tar.xz -2021/01/19 | 4904 | systems/texlive/tlnet/archive/luakeys.r57463.tar.xz +2021/09/20 | 154160 | systems/texlive/tlnet/archive/luakeys.doc.r60552.tar.xz +2021/09/20 | 5008 | systems/texlive/tlnet/archive/luakeys.r60552.tar.xz 2019/02/28 | 137620 | systems/texlive/tlnet/archive/lualatex-doc-de.doc.r30474.tar.xz 2019/02/28 | 536 | systems/texlive/tlnet/archive/lualatex-doc-de.r30474.tar.xz 2019/02/28 | 112928 | systems/texlive/tlnet/archive/lualatex-doc.doc.r30473.tar.xz @@ -285194,8 +285217,8 @@ 2019/12/11 | 342644 | systems/texlive/tlnet/archive/pdfescape.doc.r53082.tar.xz 2019/12/11 | 4264 | systems/texlive/tlnet/archive/pdfescape.r53082.tar.xz 2019/12/11 | 8308 | systems/texlive/tlnet/archive/pdfescape.source.r53082.tar.xz -2021/09/19 | 644568 | systems/texlive/tlnet/archive/pdfextra.doc.r60542.tar.xz -2021/09/19 | 22584 | systems/texlive/tlnet/archive/pdfextra.r60542.tar.xz +2021/09/20 | 641672 | systems/texlive/tlnet/archive/pdfextra.doc.r60553.tar.xz +2021/09/20 | 25320 | systems/texlive/tlnet/archive/pdfextra.r60553.tar.xz 2019/11/19 | 340 | systems/texlive/tlnet/archive/pdfjam.aarch64-linux.r52858.tar.xz 2019/11/19 | 340 | systems/texlive/tlnet/archive/pdfjam.amd64-freebsd.r52858.tar.xz 2019/11/19 | 340 | systems/texlive/tlnet/archive/pdfjam.amd64-netbsd.r52858.tar.xz @@ -285678,8 +285701,8 @@ 2019/12/07 | 14376 | systems/texlive/tlnet/archive/pmboxdraw.source.r53046.tar.xz 2019/02/28 | 129312 | systems/texlive/tlnet/archive/pmgraph.doc.r15878.tar.xz 2019/02/28 | 10064 | systems/texlive/tlnet/archive/pmgraph.r15878.tar.xz -2020/03/18 | 683796 | systems/texlive/tlnet/archive/pmhanguljamo.doc.r54378.tar.xz -2020/03/18 | 5136 | systems/texlive/tlnet/archive/pmhanguljamo.r54378.tar.xz +2021/09/20 | 679004 | systems/texlive/tlnet/archive/pmhanguljamo.doc.r60550.tar.xz +2021/09/20 | 5168 | systems/texlive/tlnet/archive/pmhanguljamo.r60550.tar.xz 2021/08/30 | 681608 | systems/texlive/tlnet/archive/pm-isomath.doc.r60368.tar.xz 2021/08/30 | 2840 | systems/texlive/tlnet/archive/pm-isomath.r60368.tar.xz 2021/08/30 | 19428 | systems/texlive/tlnet/archive/pm-isomath.source.r60368.tar.xz @@ -287880,7 +287903,7 @@ 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.amd64-freebsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.amd64-netbsd.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.armhf-linux.r55172.tar.xz -2021/09/19 | 400072 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60532.tar.xz +2021/09/20 | 399960 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60545.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 @@ -287904,7 +287927,7 @@ 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-linux.r55172.tar.xz 2020/05/17 | 592 | systems/texlive/tlnet/archive/texlive-scripts.i386-netbsd.r55172.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.i386-solaris.r55172.tar.xz -2021/09/19 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60532.tar.xz +2021/09/20 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60545.tar.xz 2021/02/25 | 572 | systems/texlive/tlnet/archive/texlive-scripts.universal-darwin.r57908.tar.xz 2021/04/12 | 36308 | systems/texlive/tlnet/archive/texlive-scripts.win32.r58829.tar.xz 2020/05/17 | 588 | systems/texlive/tlnet/archive/texlive-scripts.x86_64-cygwin.r55172.tar.xz @@ -288329,8 +288352,8 @@ 2021/08/12 | 12520 | systems/texlive/tlnet/archive/tipauni.source.r60220.tar.xz 2019/02/28 | 381176 | systems/texlive/tlnet/archive/tipfr.doc.r38646.tar.xz 2019/02/28 | 5880 | systems/texlive/tlnet/archive/tipfr.r38646.tar.xz -2021/07/23 | 135332 | systems/texlive/tlnet/archive/tiscreen.doc.r60020.tar.xz -2021/07/23 | 1184 | systems/texlive/tlnet/archive/tiscreen.r60020.tar.xz +2021/09/20 | 152220 | systems/texlive/tlnet/archive/tiscreen.doc.r60551.tar.xz +2021/09/20 | 1584 | systems/texlive/tlnet/archive/tiscreen.r60551.tar.xz 2019/02/28 | 261184 | systems/texlive/tlnet/archive/titlecaps.doc.r36170.tar.xz 2019/02/28 | 4148 | systems/texlive/tlnet/archive/titlecaps.r36170.tar.xz 2019/02/28 | 2928 | systems/texlive/tlnet/archive/titlefoot.r15878.tar.xz @@ -289467,7 +289490,7 @@ 2019/11/28 | 8464 | systems/texlive/tlnet/archive/xpdfopen.i386-solaris.r52917.tar.xz 2020/03/02 | 560 | systems/texlive/tlnet/archive/xpdfopen.r53998.tar.xz 2021/02/25 | 19720 | systems/texlive/tlnet/archive/xpdfopen.universal-darwin.r57908.tar.xz -2021/05/30 | 629004 | systems/texlive/tlnet/archive/xpdfopen.win32.r59385.tar.xz +2021/09/20 | 628828 | systems/texlive/tlnet/archive/xpdfopen.win32.r60546.tar.xz 2021/03/16 | 8636 | systems/texlive/tlnet/archive/xpdfopen.x86_64-cygwin.r58387.tar.xz 2020/03/13 | 8268 | systems/texlive/tlnet/archive/xpdfopen.x86_64-linuxmusl.r54264.tar.xz 2019/11/28 | 8072 | systems/texlive/tlnet/archive/xpdfopen.x86_64-linux.r52917.tar.xz @@ -289634,16 +289657,16 @@ 2020/07/18 | 47816 | systems/texlive/tlnet/archive/zztex.doc.r55862.tar.xz 2020/07/18 | 101724 | systems/texlive/tlnet/archive/zztex.r55862.tar.xz 2021/05/02 | 105152 | systems/texlive/tlnet/install-tl -2021/09/19 | 6811631 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/09/19 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 -2021/09/19 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/09/20 | 6811529 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/09/20 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/09/20 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc 2021/04/11 | 4945 | systems/texlive/tlnet/install-tl-windows.bat -2021/09/19 | 20875499 | systems/texlive/tlnet/install-tl-windows.exe -2021/09/19 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 -2021/09/19 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/09/19 | 25629531 | systems/texlive/tlnet/install-tl.zip -2021/09/19 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2021/09/19 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/09/20 | 20872840 | systems/texlive/tlnet/install-tl-windows.exe +2021/09/20 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/09/20 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/09/20 | 25629535 | systems/texlive/tlnet/install-tl.zip +2021/09/20 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/09/20 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc 2021/04/01 | 1229 | systems/texlive/tlnet/README.md 2021/04/01 | 0 | systems/texlive/tlnet/TEXLIVE_2021 2021/07/03 | 7181 | systems/texlive/tlnet/tlpkg/gpg/pubring.gpg @@ -289653,7 +289676,7 @@ 2021/07/03 | 1280 | systems/texlive/tlnet/tlpkg/gpg/trustdb.gpg 2021/07/02 | 49348 | systems/texlive/tlnet/tlpkg/installer/config.guess 2010/11/11 | 11651 | systems/texlive/tlnet/tlpkg/installer/COPYING.MinGW-runtime.txt -2021/09/18 | 6845 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl +2021/09/19 | 6877 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2020/04/15 | 223687 | systems/texlive/tlnet/tlpkg/installer/curl/curl-ca-bundle.crt 2020/04/15 | 2606592 | systems/texlive/tlnet/tlpkg/installer/curl/curl.exe 2017/04/16 | 2629 | systems/texlive/tlnet/tlpkg/installer/installer-options.txt @@ -289695,12 +289718,12 @@ 2021/05/16 | 20371 | systems/texlive/tlnet/tlpkg/TeXLive/TLCrypto.pm 2021/05/16 | 5402 | systems/texlive/tlnet/tlpkg/TeXLive/TLDownload.pm 2021/05/16 | 27555 | systems/texlive/tlnet/tlpkg/TeXLive/TLPaper.pm -2021/09/19 | 16885163 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2021/09/19 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/09/20 | 16885204 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/09/20 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 2021/05/16 | 86511 | systems/texlive/tlnet/tlpkg/TeXLive/TLPDB.pm -2021/09/19 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 -2021/09/19 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/09/19 | 2312048 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/09/20 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/09/20 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/09/20 | 2311436 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz 2021/05/16 | 58801 | systems/texlive/tlnet/tlpkg/TeXLive/TLPOBJ.pm 2021/05/16 | 42084 | systems/texlive/tlnet/tlpkg/TeXLive/TLPSRC.pm 2021/05/16 | 16103 | systems/texlive/tlnet/tlpkg/TeXLive/TLTREE.pm @@ -293914,9 +293937,9 @@ 2019/10/26 | 1524278 | systems/win32/miktex/tm/packages/clearsans.tar.lzma 2020/08/09 | 822023 | systems/win32/miktex/tm/packages/clefval.tar.lzma 2018/04/22 | 493341 | systems/win32/miktex/tm/packages/cleveref.tar.lzma -2021/09/18 | 258472 | systems/win32/miktex/tm/packages/clicks__doc.tar.lzma -2021/09/18 | 2033 | systems/win32/miktex/tm/packages/clicks__source.tar.lzma -2021/09/18 | 1740 | systems/win32/miktex/tm/packages/clicks.tar.lzma +2021/09/20 | 261067 | systems/win32/miktex/tm/packages/clicks__doc.tar.lzma +2021/09/20 | 2196 | systems/win32/miktex/tm/packages/clicks__source.tar.lzma +2021/09/20 | 1740 | systems/win32/miktex/tm/packages/clicks.tar.lzma 2018/05/19 | 162774 | systems/win32/miktex/tm/packages/clipboard.tar.lzma 2016/07/20 | 71559 | systems/win32/miktex/tm/packages/clock.tar.lzma 2020/07/01 | 592006 | systems/win32/miktex/tm/packages/cloze.tar.lzma @@ -294274,7 +294297,8 @@ 2011/02/23 | 223824 | systems/win32/miktex/tm/packages/drv.tar.lzma 2014/07/30 | 182735 | systems/win32/miktex/tm/packages/dsptricks.tar.lzma 2020/01/08 | 329004 | systems/win32/miktex/tm/packages/dsserif.tar.lzma -2021/06/04 | 414908 | systems/win32/miktex/tm/packages/dtk-bibliography.tar.lzma +2021/09/20 | 48248 | systems/win32/miktex/tm/packages/dtk-bibliography__source.tar.lzma +2021/09/20 | 377210 | systems/win32/miktex/tm/packages/dtk-bibliography.tar.lzma 2021/04/07 | 95995 | systems/win32/miktex/tm/packages/dtk.tar.lzma 2019/07/20 | 354196 | systems/win32/miktex/tm/packages/dtxdescribe.tar.lzma 2019/07/20 | 61900 | systems/win32/miktex/tm/packages/dtxgen.tar.lzma @@ -294527,16 +294551,18 @@ 2019/01/04 | 232811 | systems/win32/miktex/tm/packages/exercisepoints.tar.lzma 2020/05/18 | 368015 | systems/win32/miktex/tm/packages/exercises.tar.lzma 2014/11/20 | 341246 | systems/win32/miktex/tm/packages/exercise.tar.lzma -2021/09/06 | 179591 | systems/win32/miktex/tm/packages/exesheet__doc.tar.lzma -2021/09/06 | 16735 | systems/win32/miktex/tm/packages/exesheet__source.tar.lzma -2021/09/06 | 3942 | systems/win32/miktex/tm/packages/exesheet.tar.lzma +2021/09/20 | 178311 | systems/win32/miktex/tm/packages/exesheet__doc.tar.lzma +2021/09/20 | 16691 | systems/win32/miktex/tm/packages/exesheet__source.tar.lzma +2021/09/20 | 4086 | systems/win32/miktex/tm/packages/exesheet.tar.lzma 2020/02/25 | 450148 | systems/win32/miktex/tm/packages/exframe.tar.lzma 2008/06/26 | 80109 | systems/win32/miktex/tm/packages/expdlist.tar.lzma 2017/05/29 | 494705 | systems/win32/miktex/tm/packages/expex.tar.lzma 2021/07/08 | 444616 | systems/win32/miktex/tm/packages/expkv-cs__doc.tar.lzma 2021/07/08 | 26085 | systems/win32/miktex/tm/packages/expkv-cs__source.tar.lzma 2021/07/08 | 5754 | systems/win32/miktex/tm/packages/expkv-cs.tar.lzma -2021/05/29 | 418975 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma +2021/09/20 | 398276 | systems/win32/miktex/tm/packages/expkv-def__doc.tar.lzma +2021/09/20 | 17979 | systems/win32/miktex/tm/packages/expkv-def__source.tar.lzma +2021/09/20 | 5260 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma 2021/07/16 | 478234 | systems/win32/miktex/tm/packages/expkv__doc.tar.lzma 2021/04/07 | 276959 | systems/win32/miktex/tm/packages/expkv-opt.tar.lzma 2021/07/16 | 28281 | systems/win32/miktex/tm/packages/expkv__source.tar.lzma @@ -294618,7 +294644,7 @@ 2020/10/03 | 318630 | systems/win32/miktex/tm/packages/filehook.tar.lzma 2012/12/04 | 924573 | systems/win32/miktex/tm/packages/fileinfo.tar.lzma 2011/09/21 | 281409 | systems/win32/miktex/tm/packages/filemod.tar.lzma -2021/09/19 | 614598 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/09/20 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma 2001/05/14 | 5617 | systems/win32/miktex/tm/packages/finbib.tar.lzma 2015/10/20 | 44379 | systems/win32/miktex/tm/packages/findhyph.tar.lzma 2011/10/21 | 89323 | systems/win32/miktex/tm/packages/fink.tar.lzma @@ -295421,9 +295447,9 @@ 2019/10/25 | 3039369 | systems/win32/miktex/tm/packages/librefranklin.tar.lzma 2010/07/27 | 754595 | systems/win32/miktex/tm/packages/libris.tar.lzma 2020/02/04 | 588098 | systems/win32/miktex/tm/packages/lie-hasse.tar.lzma -2021/08/19 | 154401 | systems/win32/miktex/tm/packages/light-latex-make__doc.tar.lzma -2021/08/19 | 11698 | systems/win32/miktex/tm/packages/light-latex-make__source.tar.lzma -2021/08/19 | 13459 | systems/win32/miktex/tm/packages/light-latex-make.tar.lzma +2021/09/20 | 154495 | systems/win32/miktex/tm/packages/light-latex-make__doc.tar.lzma +2021/09/20 | 11704 | systems/win32/miktex/tm/packages/light-latex-make__source.tar.lzma +2021/09/20 | 13466 | systems/win32/miktex/tm/packages/light-latex-make.tar.lzma 2020/10/03 | 1578806 | systems/win32/miktex/tm/packages/lilyglyphs.tar.lzma 2017/07/23 | 286625 | systems/win32/miktex/tm/packages/limap.tar.lzma 2020/03/18 | 405237 | systems/win32/miktex/tm/packages/limecv.tar.lzma @@ -295545,7 +295571,9 @@ 2019/04/06 | 2685 | systems/win32/miktex/tm/packages/luaimageembed.tar.lzma 2011/02/19 | 180907 | systems/win32/miktex/tm/packages/luaindex.tar.lzma 2010/11/24 | 424357 | systems/win32/miktex/tm/packages/luainputenc.tar.lzma -2021/01/22 | 145490 | systems/win32/miktex/tm/packages/luakeys.tar.lzma +2021/09/20 | 149977 | systems/win32/miktex/tm/packages/luakeys__doc.tar.lzma +2021/09/20 | 4992 | systems/win32/miktex/tm/packages/luakeys__source.tar.lzma +2021/09/20 | 5601 | systems/win32/miktex/tm/packages/luakeys.tar.lzma 2013/05/21 | 154494 | systems/win32/miktex/tm/packages/lualatex-doc-de.tar.lzma 2013/05/21 | 128214 | systems/win32/miktex/tm/packages/lualatex-doc.tar.lzma 2021/07/06 | 201327 | systems/win32/miktex/tm/packages/lualatex-math__doc.tar.lzma @@ -295574,9 +295602,9 @@ 2021/06/06 | 4099 | systems/win32/miktex/tm/packages/luatex85__source.tar.lzma 2021/06/06 | 2000 | systems/win32/miktex/tm/packages/luatex85.tar.lzma 2015/10/06 | 276167 | systems/win32/miktex/tm/packages/luatexbase.tar.lzma -2021/06/08 | 3067480 | systems/win32/miktex/tm/packages/luatexja__doc.tar.lzma -2021/06/08 | 217931 | systems/win32/miktex/tm/packages/luatexja__source.tar.lzma -2021/06/08 | 189831 | systems/win32/miktex/tm/packages/luatexja.tar.lzma +2021/09/20 | 3068790 | systems/win32/miktex/tm/packages/luatexja__doc.tar.lzma +2021/09/20 | 218143 | systems/win32/miktex/tm/packages/luatexja__source.tar.lzma +2021/09/20 | 190348 | systems/win32/miktex/tm/packages/luatexja.tar.lzma 2021/07/12 | 338072 | systems/win32/miktex/tm/packages/luatexko__doc.tar.lzma 2021/07/12 | 12536 | systems/win32/miktex/tm/packages/luatexko__source.tar.lzma 2021/07/12 | 23646 | systems/win32/miktex/tm/packages/luatexko.tar.lzma @@ -296006,9 +296034,9 @@ 2018/01/12 | 157226 | systems/win32/miktex/tm/packages/miktex-zip-bin-x64.tar.lzma 2021/08/07 | 39000 | systems/win32/miktex/tm/packages/miktex-zlib-bin-2.9.tar.lzma 2021/08/07 | 43393 | systems/win32/miktex/tm/packages/miktex-zlib-bin-x64-2.9.tar.lzma -2021/09/19 | 240950 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2021/09/19 | 1356796 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma -2021/09/19 | 1261692 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/09/20 | 241657 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/09/20 | 1358118 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/09/20 | 1261940 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma 2021/08/07 | 13446 | systems/win32/miktex/tm/packages/miktex-zzip-bin-2.9.tar.lzma 2021/08/07 | 14327 | systems/win32/miktex/tm/packages/miktex-zzip-bin-x64-2.9.tar.lzma 2016/07/15 | 35914 | systems/win32/miktex/tm/packages/mil3.tar.lzma @@ -296218,189 +296246,189 @@ 2018/04/09 | 400132 | systems/win32/miktex/tm/packages/newunicodechar.tar.lzma 2011/09/19 | 101312 | systems/win32/miktex/tm/packages/newvbtm.tar.lzma 2021/03/17 | 232249 | systems/win32/miktex/tm/packages/newverbs.tar.lzma -2021/09/19 | 614469 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/09/19 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/09/19 | 56476 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/09/19 | 975020 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/09/19 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2021/09/19 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/09/19 | 31349 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2021/09/19 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2021/09/19 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/09/19 | 50152 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/09/19 | 57547 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/09/19 | 83539 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma -2021/09/19 | 95400 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/09/19 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/09/19 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2021/09/19 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2021/09/19 | 30824 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2021/09/19 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2021/09/19 | 392790 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/09/19 | 32674 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/09/19 | 36628 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2021/09/19 | 51309 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/09/19 | 56684 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/09/19 | 241811 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2021/09/19 | 263958 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma -2021/09/19 | 180009 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma -2021/09/19 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/09/19 | 54632 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma -2021/09/19 | 61813 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/09/19 | 21225 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/09/19 | 23364 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2021/09/19 | 461811 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/09/19 | 45905 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2021/09/19 | 51202 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/09/19 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/09/19 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma -2021/09/19 | 41193 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2021/09/19 | 45310 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma -2021/09/19 | 119820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/09/19 | 133864 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma -2021/09/19 | 1291300 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma -2021/09/19 | 1421867 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma -2021/09/19 | 100624 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma -2021/09/19 | 112982 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/09/19 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/09/19 | 48253 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/09/19 | 25019 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/09/19 | 28177 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/09/19 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2021/09/19 | 62787 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2021/09/19 | 136816 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/09/19 | 154425 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2021/09/19 | 73196 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/09/19 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma -2021/09/19 | 71668 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2021/09/19 | 80449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2021/09/19 | 258882 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2021/09/19 | 295204 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2021/09/19 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2021/09/19 | 24992 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma -2021/09/19 | 97338 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2021/09/19 | 112086 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma -2021/09/19 | 64427 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2021/09/19 | 73147 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2021/09/19 | 96633 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2021/09/19 | 115350 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2021/09/19 | 38141 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma -2021/09/19 | 43002 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/09/19 | 483653 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma -2021/09/19 | 566528 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/09/19 | 147372 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma -2021/09/19 | 159579 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma -2021/09/19 | 94800 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/09/19 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/09/19 | 16357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma -2021/09/19 | 17980 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2021/09/19 | 28391 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2021/09/19 | 30058 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/09/19 | 629398 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/09/19 | 681250 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2021/09/19 | 531850 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2021/09/19 | 596929 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2021/09/19 | 476920 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2021/09/19 | 510588 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma -2021/09/19 | 94311 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2021/09/19 | 103400 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/09/19 | 1713894 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/09/19 | 2009906 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma -2021/09/19 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/09/19 | 74211 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2021/09/19 | 27357 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/09/19 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/09/19 | 7721 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/09/19 | 8768 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma -2021/09/19 | 196871 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/09/19 | 215248 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/09/19 | 250262 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/09/19 | 284023 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/09/19 | 98382 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/09/19 | 103205 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2021/09/19 | 60638 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2021/09/19 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/09/19 | 124282 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2021/09/19 | 136819 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2021/09/19 | 178353 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma -2021/09/19 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/09/19 | 199732 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/09/19 | 180119 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/09/19 | 67484 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma -2021/09/19 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma -2021/09/19 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/09/19 | 35086 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2021/09/19 | 37805 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2021/09/19 | 42710 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/09/19 | 42891 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/09/19 | 46906 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/09/19 | 45970 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/09/19 | 52522 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma -2021/09/19 | 194383 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma -2021/09/19 | 206603 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2021/09/19 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/09/19 | 40228 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/09/19 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2021/09/19 | 815241 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2021/09/19 | 198171 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/09/19 | 202797 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/09/19 | 208047 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/09/19 | 243426 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2021/09/19 | 78774 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2021/09/19 | 87776 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2021/09/19 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/09/19 | 1301194 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma -2021/09/19 | 20138 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/09/19 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma -2021/09/19 | 31537 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2021/09/19 | 37242 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma -2021/09/19 | 64185 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2021/09/19 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2021/09/19 | 50396 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/09/19 | 57727 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/09/19 | 1340929 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/09/19 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2021/09/19 | 42386 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2021/09/19 | 51748 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma -2021/09/19 | 56515 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/09/19 | 60039 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/09/19 | 25292 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/09/19 | 27390 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/09/19 | 16413 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/09/19 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2021/09/19 | 63777 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/09/19 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2021/09/19 | 154806 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/09/19 | 169241 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2021/09/19 | 57014 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/09/19 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2021/09/19 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/09/19 | 105222 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2021/09/19 | 2672612 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2021/09/19 | 2796726 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2021/09/19 | 56356 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/09/19 | 62227 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2021/09/19 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma -2021/09/19 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/09/19 | 27729 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma -2021/09/19 | 33633 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/09/19 | 65619 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2021/09/19 | 70648 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/09/19 | 312108 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/09/19 | 345738 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma -2021/09/19 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma -2021/09/19 | 57138 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2021/09/19 | 589841 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/09/19 | 624651 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2021/09/19 | 39129 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma -2021/09/19 | 43426 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/09/19 | 240974 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/09/19 | 1357977 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2021/09/19 | 1260116 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/09/19 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/09/19 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/09/20 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/09/20 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/09/20 | 56478 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/09/20 | 975020 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/09/20 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/09/20 | 29036 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/09/20 | 31351 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/09/20 | 29842 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/09/20 | 34665 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/09/20 | 50153 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/09/20 | 57549 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/09/20 | 83541 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/09/20 | 95400 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/09/20 | 67821 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/09/20 | 75793 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/09/20 | 27199 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/09/20 | 30825 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/09/20 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/09/20 | 392794 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/09/20 | 32674 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/09/20 | 36629 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/09/20 | 51310 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/09/20 | 56686 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/09/20 | 241812 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/09/20 | 263959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/09/20 | 180010 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/09/20 | 195637 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/09/20 | 54633 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/09/20 | 61814 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/09/20 | 21226 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/09/20 | 23365 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/09/20 | 461813 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/09/20 | 45906 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/09/20 | 51204 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/09/20 | 284583 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/09/20 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/09/20 | 41196 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/09/20 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/09/20 | 119821 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/09/20 | 133865 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/09/20 | 1291300 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/09/20 | 1421868 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/09/20 | 100625 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2021/09/20 | 112985 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/09/20 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/09/20 | 48252 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/09/20 | 25021 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/09/20 | 28181 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/09/20 | 56318 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/09/20 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/09/20 | 136817 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/09/20 | 154427 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/09/20 | 73197 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/09/20 | 77954 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/09/20 | 71668 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/09/20 | 80450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/09/20 | 258882 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/09/20 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/09/20 | 22050 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/09/20 | 24996 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/09/20 | 97339 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/09/20 | 112088 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/09/20 | 64428 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/09/20 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/09/20 | 96635 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/09/20 | 115351 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/09/20 | 38142 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/09/20 | 43003 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/09/20 | 483653 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/09/20 | 566531 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/09/20 | 147373 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/09/20 | 159580 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/09/20 | 94800 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/09/20 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/09/20 | 16358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/09/20 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/09/20 | 28390 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/09/20 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/09/20 | 629400 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/09/20 | 681253 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/09/20 | 531849 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/09/20 | 596930 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/09/20 | 476922 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/09/20 | 510587 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/09/20 | 94310 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/09/20 | 103400 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/09/20 | 1713894 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/09/20 | 2009904 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/09/20 | 67620 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/09/20 | 74211 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/09/20 | 27359 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/09/20 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/09/20 | 7723 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/09/20 | 8769 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/09/20 | 196873 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/09/20 | 215249 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/09/20 | 250266 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/09/20 | 284025 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/09/20 | 98382 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/09/20 | 103206 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/09/20 | 60639 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/09/20 | 68025 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/09/20 | 124282 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/09/20 | 136822 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/09/20 | 178354 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/09/20 | 196742 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/09/20 | 199732 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/09/20 | 180121 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/09/20 | 67484 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/09/20 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/09/20 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/09/20 | 35085 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/09/20 | 37807 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/09/20 | 42713 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/09/20 | 42892 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/09/20 | 46907 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/09/20 | 45971 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/09/20 | 52524 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/09/20 | 194382 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/09/20 | 206604 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/09/20 | 35692 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/09/20 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/09/20 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/09/20 | 815244 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/09/20 | 198170 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/09/20 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/09/20 | 208049 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/09/20 | 243427 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/09/20 | 78775 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/09/20 | 87777 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/09/20 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/09/20 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/09/20 | 20137 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/09/20 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/09/20 | 31538 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/09/20 | 37238 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/09/20 | 64186 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/09/20 | 72208 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/09/20 | 50396 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/09/20 | 57729 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/09/20 | 1340933 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/09/20 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/09/20 | 42387 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/09/20 | 51750 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/09/20 | 56515 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/09/20 | 60040 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/09/20 | 25291 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/09/20 | 27392 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/09/20 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/09/20 | 18177 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/09/20 | 63778 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/09/20 | 69915 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/09/20 | 154808 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/09/20 | 169243 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/09/20 | 57013 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/09/20 | 65788 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/09/20 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/09/20 | 105225 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/09/20 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/09/20 | 2796726 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/09/20 | 56357 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/09/20 | 62231 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/09/20 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/09/20 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/09/20 | 27730 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/09/20 | 33634 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/09/20 | 65620 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/09/20 | 70649 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/09/20 | 312107 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/09/20 | 345737 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/09/20 | 55499 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/09/20 | 57141 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/09/20 | 589843 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/09/20 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/09/20 | 39128 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/09/20 | 43426 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/09/20 | 241697 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/09/20 | 1358573 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/09/20 | 1262219 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/09/20 | 13467 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/09/20 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2019/03/12 | 1412 | systems/win32/miktex/tm/packages/nextpage.tar.lzma -2021/09/19 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/09/20 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini 2018/07/06 | 145915 | systems/win32/miktex/tm/packages/nexus-otf.tar.lzma 2017/03/30 | 191149 | systems/win32/miktex/tm/packages/nfssext-cfr.tar.lzma 2012/12/20 | 612251 | systems/win32/miktex/tm/packages/nicefilelist.tar.lzma @@ -296598,7 +296626,9 @@ 2005/06/13 | 408363 | systems/win32/miktex/tm/packages/pdfcprot.cab 2020/06/09 | 20406 | systems/win32/miktex/tm/packages/pdfcrop.tar.lzma 2019/12/13 | 355594 | systems/win32/miktex/tm/packages/pdfescape.tar.lzma -2021/05/18 | 653196 | systems/win32/miktex/tm/packages/pdfextra.tar.lzma +2021/09/20 | 242893 | systems/win32/miktex/tm/packages/pdfextra__doc.tar.lzma +2021/09/20 | 400036 | systems/win32/miktex/tm/packages/pdfextra__source.tar.lzma +2021/09/20 | 25552 | systems/win32/miktex/tm/packages/pdfextra.tar.lzma 2019/11/20 | 111715 | systems/win32/miktex/tm/packages/pdfjam.tar.lzma 2018/02/13 | 89850 | systems/win32/miktex/tm/packages/pdflatexpicscale.tar.lzma 2019/12/09 | 306824 | systems/win32/miktex/tm/packages/pdflscape.tar.lzma @@ -296628,6 +296658,9 @@ 2021/04/27 | 109202 | systems/win32/miktex/tm/packages/pdfxup.tar.lzma 2011/04/20 | 83564 | systems/win32/miktex/tm/packages/pecha.tar.lzma 2012/04/17 | 262270 | systems/win32/miktex/tm/packages/pedigree-perl.tar.lzma +2021/09/20 | 18195 | systems/win32/miktex/tm/packages/penlight__doc.tar.lzma +2021/09/20 | 100636 | systems/win32/miktex/tm/packages/penlight__source.tar.lzma +2021/09/20 | 1556 | systems/win32/miktex/tm/packages/penlight.tar.lzma 2021/01/24 | 988837 | systems/win32/miktex/tm/packages/penrose.tar.lzma 2005/06/25 | 6737 | systems/win32/miktex/tm/packages/perception.cab 2019/07/27 | 173142 | systems/win32/miktex/tm/packages/perfectcut.tar.lzma @@ -296746,7 +296779,9 @@ 2021/06/08 | 17008 | systems/win32/miktex/tm/packages/pmdb__source.tar.lzma 2021/06/08 | 4053 | systems/win32/miktex/tm/packages/pmdb.tar.lzma 2008/11/07 | 139838 | systems/win32/miktex/tm/packages/pmgraph.tar.lzma -2020/03/18 | 774591 | systems/win32/miktex/tm/packages/pmhanguljamo.tar.lzma +2021/09/20 | 657179 | systems/win32/miktex/tm/packages/pmhanguljamo__doc.tar.lzma +2021/09/20 | 168392 | systems/win32/miktex/tm/packages/pmhanguljamo__source.tar.lzma +2021/09/20 | 5454 | systems/win32/miktex/tm/packages/pmhanguljamo.tar.lzma 2021/08/28 | 684701 | systems/win32/miktex/tm/packages/pm-isomath__doc.tar.lzma 2021/08/28 | 19851 | systems/win32/miktex/tm/packages/pm-isomath__source.tar.lzma 2021/08/28 | 3078 | systems/win32/miktex/tm/packages/pm-isomath.tar.lzma @@ -296790,7 +296825,7 @@ 2020/10/20 | 342254 | systems/win32/miktex/tm/packages/preview.tar.lzma 2019/06/20 | 375963 | systems/win32/miktex/tm/packages/prftree.tar.lzma 2021/04/23 | 274028 | systems/win32/miktex/tm/packages/principia.tar.lzma -2021/09/19 | 927 | systems/win32/miktex/tm/packages/pr.ini +2021/09/20 | 961 | systems/win32/miktex/tm/packages/pr.ini 2010/09/27 | 248469 | systems/win32/miktex/tm/packages/printlen.tar.lzma 2008/06/17 | 77313 | systems/win32/miktex/tm/packages/proba.tar.lzma 2017/07/12 | 988486 | systems/win32/miktex/tm/packages/probsoln.tar.lzma @@ -297028,9 +297063,9 @@ 2011/04/08 | 669307 | systems/win32/miktex/tm/packages/rcs-multi.tar.lzma 2007/06/09 | 163037 | systems/win32/miktex/tm/packages/rcs.tar.bz2 2021/01/15 | 211940 | systems/win32/miktex/tm/packages/readablecv.tar.lzma -2021/08/11 | 492659 | systems/win32/miktex/tm/packages/readarray__doc.tar.lzma -2021/08/11 | 12534 | systems/win32/miktex/tm/packages/readarray__source.tar.lzma -2021/08/11 | 5500 | systems/win32/miktex/tm/packages/readarray.tar.lzma +2021/09/20 | 494331 | systems/win32/miktex/tm/packages/readarray__doc.tar.lzma +2021/09/20 | 13191 | systems/win32/miktex/tm/packages/readarray__source.tar.lzma +2021/09/20 | 5739 | systems/win32/miktex/tm/packages/readarray.tar.lzma 2006/08/02 | 191 | systems/win32/miktex/tm/packages/README.TXT 2011/08/19 | 185962 | systems/win32/miktex/tm/packages/realboxes.tar.lzma 2019/11/20 | 137151 | systems/win32/miktex/tm/packages/realhats.tar.lzma @@ -297147,7 +297182,9 @@ 2009/01/22 | 155506 | systems/win32/miktex/tm/packages/schemabloc.tar.lzma 2021/03/03 | 844312 | systems/win32/miktex/tm/packages/schemata.tar.lzma 2021/04/07 | 2222920 | systems/win32/miktex/tm/packages/scholax.tar.lzma -2020/07/19 | 920155 | systems/win32/miktex/tm/packages/schooldocs.tar.lzma +2021/09/20 | 908269 | systems/win32/miktex/tm/packages/schooldocs__doc.tar.lzma +2021/09/20 | 10748 | systems/win32/miktex/tm/packages/schooldocs__source.tar.lzma +2021/09/20 | 3275 | systems/win32/miktex/tm/packages/schooldocs.tar.lzma 2021/08/11 | 3476704 | systems/win32/miktex/tm/packages/schule__doc.tar.lzma 2021/08/11 | 2813755 | systems/win32/miktex/tm/packages/schule__source.tar.lzma 2021/08/11 | 39647 | systems/win32/miktex/tm/packages/schule.tar.lzma @@ -297664,9 +297701,9 @@ 2021/08/19 | 13745 | systems/win32/miktex/tm/packages/tipauni__source.tar.lzma 2021/08/19 | 5930 | systems/win32/miktex/tm/packages/tipauni.tar.lzma 2015/01/13 | 388795 | systems/win32/miktex/tm/packages/tipfr.tar.lzma -2021/07/24 | 134584 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma -2021/07/24 | 2028 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma -2021/07/24 | 1391 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma +2021/09/20 | 151080 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma +2021/09/20 | 2375 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma +2021/09/20 | 1777 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma 2015/02/28 | 265279 | systems/win32/miktex/tm/packages/titlecaps.tar.lzma 2001/05/14 | 3146 | systems/win32/miktex/tm/packages/titlefoot.tar.lzma 2006/08/17 | 861587 | systems/win32/miktex/tm/packages/titlepage-uni-dortmund.tar.bz2 @@ -298158,7 +298195,7 @@ 2007/02/12 | 6896 | systems/win32/texshell32/WinTeXShell32.txt 2007/02/12 | 395234 | systems/win32/texshell32/WinTeXShell32.zip 2021/08/29 | 1984 | systems/win32/TLW64/00README.TLW64 -2021/09/03 | 99339852 | systems/win32/TLW64/tl-win64.zip +2021/09/19 | 99340207 | systems/win32/TLW64/tl-win64.zip 1996/11/26 | 1822 | systems/win32/tsconfig/readme 1996/11/26 | 30343 | systems/win32/tsconfig/tsconfig.zip 1998/01/20 | 766976 | systems/win32/util/cmdsh110.exe @@ -298394,7 +298431,7 @@ 2004/06/04 | 404 | tds/tds.sed 2004/06/23 | 65418 | tds/tds.tex 2019/05/29 | 304264 | tds.zip -2021/09/20 | 186 | timestamp +2021/09/21 | 186 | timestamp 2002/08/26 | 61898 | usergrps/dante/antrag.pdf 2002/08/26 | 118217 | usergrps/dante/antrag.ps 2021/08/04 | 917 | usergrps/dante/dtk/doc/beispiel.bib diff --git a/FILES.byname.gz b/FILES.byname.gz index bfaa9d6ff0..6bb8812c1d 100644 Binary files a/FILES.byname.gz and b/FILES.byname.gz differ diff --git a/FILES.last07days b/FILES.last07days index d5b8e490da..c86e1e540a 100644 --- a/FILES.last07days +++ b/FILES.last07days @@ -1,264 +1,835 @@ +2021/09/20 | 99 | macros/latex-dev/base/ltpara-code.tex +2021/09/20 | 98382 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma +2021/09/20 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma +2021/09/20 | 9809 | macros/latex-dev/base/ltnews21.tex +2021/09/20 | 98064 | macros/latex/contrib/lipsum/lipsum-cs.txt +2021/09/20 | 975020 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma +2021/09/20 | 97339 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma +2021/09/20 | 96635 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma +2021/09/20 | 961 | systems/win32/miktex/tm/packages/pr.ini +2021/09/20 | 9583 | macros/latex-dev/base/format.ins +2021/09/20 | 9562 | macros/latex-dev/base/ltcntrl.dtx +2021/09/20 | 95400 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma +2021/09/20 | 9493 | macros/latex-dev/required/tools/shellesc.dtx +2021/09/20 | 94800 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma +2021/09/20 | 94310 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma +2021/09/20 | 9400 | macros/latex-dev/base/syntonly.dtx +2021/09/20 | 9373 | macros/latex-dev/base/preload.dtx +2021/09/20 | 9200 | macros/latex-dev/required/amsmath/amsopn.dtx +2021/09/20 | 914246 | graphics/mcf2graph.zip +2021/09/20 | 91127 | macros/latex/contrib/lipsum/lipsum-la.txt +2021/09/20 | 90917 | macros/latex-dev/base/fntguide.tex +2021/09/20 | 908269 | systems/win32/miktex/tm/packages/schooldocs__doc.tar.lzma +2021/09/20 | 9080 | macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex +2021/09/20 | 9068 | macros/latex-dev/base/lppl-1-0.txt +2021/09/20 | 90560 | macros/latex-dev/base/utf8ienc.dtx +2021/09/20 | 90126 | macros/latex-dev/base/lttextcomp.dtx +2021/09/20 | 8981 | macros/latex-dev/required/tools/rawfonts.dtx +2021/09/20 | 89718 | macros/latex-dev/base/slides.dtx +2021/09/20 | 8863 | macros/latex-dev/base/ltnews17.tex +2021/09/20 | 87777 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma +2021/09/20 | 8769 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/09/20 | 8736 | macros/latex-dev/base/ltthm.dtx +2021/09/20 | 8668 | macros/latex-dev/required/amsmath/amsbsy.dtx +2021/09/20 | 8631 | macros/latex-dev/base/oldlfont.dtx +2021/09/20 | 8620249 | macros/latex/contrib/genealogytree/genealogytree.pdf +2021/09/20 | 85862 | macros/latex-dev/base/ltdefns.dtx +2021/09/20 | 8531 | macros/latex-dev/base/source2edoc.cls +2021/09/20 | 85099 | macros/latex-dev/required/amsmath/amsmath-2018-12-01.sty +2021/09/20 | 8496 | macros/latex-dev/base/texpert.txt +2021/09/20 | 84220 | macros/latex-dev/base/ltfssini.dtx +2021/09/20 | 83541 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma +2021/09/20 | 8259 | macros/latex-dev/base/ltnews.tex +2021/09/20 | 82371 | macros/latex-dev/required/amsmath/testmath.tex +2021/09/20 | 818929 | macros/latex-dev/base/ltshipout-code.pdf +2021/09/20 | 815244 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma +2021/09/20 | 80726 | macros/latex-dev/base/ltfssbas.dtx +2021/09/20 | 80450 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma +2021/09/20 | 795879 | macros/latex-dev/base/ltfilehook-code.pdf +2021/09/20 | 78775 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma +2021/09/20 | 784793 | macros/latex/contrib/lipsum.zip +2021/09/20 | 78325 | macros/latex-dev/base/ltshipout.dtx +2021/09/20 | 77954 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma +2021/09/20 | 7723 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma +2021/09/20 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma +2021/09/20 | 76402 | macros/latex-dev/required/tools/longtable.dtx +2021/09/20 | 75793 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma +2021/09/20 | 7524 | macros/latex-dev/base/ltxguide.cls +2021/09/20 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma +2021/09/20 | 74211 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma +2021/09/20 | 73674 | macros/latex-dev/required/tools/tools-overview.pdf +2021/09/20 | 7357248 | install/macros/latex-dev/required/latex-tools-dev.tds.zip +2021/09/20 | 7325 | macros/latex-dev/base/ltnews20.tex +2021/09/20 | 73197 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma +2021/09/20 | 73148 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma +2021/09/20 | 7268047 | macros/latex-dev/required/tools.zip +2021/09/20 | 72480 | macros/latex-dev/base/ltfsstrc.dtx +2021/09/20 | 7221 | macros/latex-dev/base/exscale.dtx +2021/09/20 | 72208 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma +2021/09/20 | 72141 | macros/latex-dev/required/tools/verbatim.dtx +2021/09/20 | 7200 | macros/latex-dev/base/sample2e.tex +2021/09/20 | 71668 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma +2021/09/20 | 7109 | macros/latex-dev/base/alltt.dtx +2021/09/20 | 70649 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma +2021/09/20 | 703437 | macros/latex-dev/base/lthooks-doc.pdf +2021/09/20 | 70176 | macros/latex-dev/required/graphics/graphics.dtx +2021/09/20 | 6998 | macros/latex-dev/required/amsmath/changes.txt +2021/09/20 | 69915 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma +2021/09/20 | 699078 | macros/latex-dev/base/ltcmdhooks-code.pdf +2021/09/20 | 69732 | macros/latex-dev/required/amsmath/amstex.sty +2021/09/20 | 69050 | macros/latex-dev/base/clsguide.tex +2021/09/20 | 69007 | macros/latex-dev/base/ltpictur.dtx +2021/09/20 | 6871 | macros/latex-dev/base/ltnews13.tex +2021/09/20 | 68435 | macros/latex-dev/base/usrguide.tex +2021/09/20 | 681253 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma +2021/09/20 | 6811529 | systems/texlive/tlnet/install-tl-unx.tar.gz +2021/09/20 | 68025 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma +2021/09/20 | 6794 | macros/latex-dev/required/tools/delarray.dtx +2021/09/20 | 679004 | systems/texlive/tlnet/archive/pmhanguljamo.doc.r60550.tar.xz +2021/09/20 | 67821 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma +2021/09/20 | 676958 | macros/latex-dev/base/doc.pdf +2021/09/20 | 67620 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma +2021/09/20 | 6760 | macros/latex-dev/base/slides.ins +2021/09/20 | 67484 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/09/20 | 6714 | macros/latex-dev/base/latexsym.dtx +2021/09/20 | 666188 | macros/latex-dev/base/ltpara-code.pdf +2021/09/20 | 65788 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma +2021/09/20 | 657179 | systems/win32/miktex/tm/packages/pmhanguljamo__doc.tar.lzma +2021/09/20 | 65620 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma +2021/09/20 | 653611 | macros/latex/contrib/lipsum/lipsum.pdf +2021/09/20 | 64850 | macros/latex-dev/base/ltluatex.dtx +2021/09/20 | 64428 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma +2021/09/20 | 6440 | macros/latex-dev/required/amsmath/subeqn.tex +2021/09/20 | 64242 | macros/latex-dev/base/ltfilehook.dtx +2021/09/20 | 64186 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma +2021/09/20 | 641672 | systems/texlive/tlnet/archive/pdfextra.doc.r60553.tar.xz +2021/09/20 | 63778 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma +2021/09/20 | 6362 | macros/latex-dev/base/newlfont.dtx +2021/09/20 | 63283 | macros/latex-dev/base/letter.dtx +2021/09/20 | 63153 | graphics/mcf2graph/mcf_manual.tex +2021/09/20 | 629400 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma +2021/09/20 | 628828 | systems/texlive/tlnet/archive/xpdfopen.win32.r60546.tar.xz +2021/09/20 | 62786 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma +2021/09/20 | 6273 | macros/latex-dev/base/ltnews14.tex +2021/09/20 | 624652 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma +2021/09/20 | 6223 | macros/latex-dev/required/tools/xr.dtx +2021/09/20 | 62231 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma +2021/09/20 | 61814 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma +2021/09/20 | 6160 | macros/latex-dev/base/ltpar.dtx +2021/09/20 | 615217 | systems/win32/miktex/tm/packages/next/files.csv.lzma +2021/09/20 | 615154 | systems/win32/miktex/tm/packages/files.csv.lzma +2021/09/20 | 61460 | macros/latex-dev/required/tools/bm.dtx +2021/09/20 | 61425 | macros/latex-dev/base/ltfssdcl.dtx +2021/09/20 | 6141416 | macros/latex/contrib/genealogytree.zip +2021/09/20 | 6112950 | install/macros/latex/contrib/genealogytree.tds.zip +2021/09/20 | 60699 | macros/latex-dev/required/tools/changes.txt +2021/09/20 | 60639 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma +2021/09/20 | 60326 | macros/latex-dev/base/fontdef.dtx +2021/09/20 | 60040 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma +2021/09/20 | 596930 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma +2021/09/20 | 5917 | macros/latex-dev/base/latexrelease.ins +2021/09/20 | 58989 | macros/latex/contrib/lipsum/lipsum.dtx +2021/09/20 | 589843 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma +2021/09/20 | 58750 | macros/latex-dev/base/ltmiscen.dtx +2021/09/20 | 5864 | macros/latex-dev/base/ltidxglo.dtx +2021/09/20 | 5860 | macros/latex-dev/required/amsmath/ams-internal.txt +2021/09/20 | 58556 | macros/latex-dev/base/ltfssaxes.dtx +2021/09/20 | 5839 | macros/latex-dev/base/ltnews15.tex +2021/09/20 | 5796 | macros/latex-dev/required/tools/somedefs.dtx +2021/09/20 | 5776 | macros/latex-dev/base/ltnews16.tex +2021/09/20 | 57729 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma +2021/09/20 | 575 | macros/latex/contrib/lipsum/README.md +2021/09/20 | 57549 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma +2021/09/20 | 5739 | systems/win32/miktex/tm/packages/readarray.tar.lzma +2021/09/20 | 5714 | macros/latex-dev/base/inputenc.ins +2021/09/20 | 57141 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma +2021/09/20 | 57013 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma +2021/09/20 | 5695 | macros/latex-dev/base/ltnews08.tex +2021/09/20 | 5692 | macros/latex/contrib/elteikthesis/chapters/impl.tex +2021/09/20 | 5680 | macros/latex-dev/required/tools/tools.ins +2021/09/20 | 56686 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma +2021/09/20 | 566531 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma +2021/09/20 | 5659 | macros/latex-dev/base/ltnews10.tex +2021/09/20 | 56515 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma +2021/09/20 | 56478 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma +2021/09/20 | 564752 | macros/latex-dev/base/ltshipout-doc.pdf +2021/09/20 | 56357 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma +2021/09/20 | 56318 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma +2021/09/20 | 5608 | macros/latex-dev/base/ltnews05.tex +2021/09/20 | 560534 | macros/latex-dev/base/ltpara-doc.pdf +2021/09/20 | 5601 | systems/win32/miktex/tm/packages/luakeys.tar.lzma +2021/09/20 | 55654 | macros/latex-dev/base/ltfiles.dtx +2021/09/20 | 55499 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma +2021/09/20 | 5529 | macros/latex-dev/base/ltnews11.tex +2021/09/20 | 5514 | macros/latex-dev/base/graphpap.dtx +2021/09/20 | 550711 | macros/latex-dev/base/classes.pdf +2021/09/20 | 5506 | macros/latex-dev/base/ltnews27.tex +2021/09/20 | 5506 | macros/latex-dev/base/ltnews04.tex +2021/09/20 | 5473 | macros/latex-dev/base/ltnews25.tex +2021/09/20 | 54680 | macros/latex-dev/base/ltfloat.dtx +2021/09/20 | 546791 | macros/latex-dev/base/ltfilehook-doc.pdf +2021/09/20 | 54633 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma +2021/09/20 | 546162 | macros/latex-dev/base/ltnews32.pdf +2021/09/20 | 5454 | systems/win32/miktex/tm/packages/pmhanguljamo.tar.lzma +2021/09/20 | 5442 | macros/latex/contrib/genealogytree/genealogytree.sty +2021/09/20 | 5425 | macros/latex-dev/base/ltnews07.tex +2021/09/20 | 5421635 | macros/latex-dev/base/source2e.pdf +2021/09/20 | 54088 | macros/latex-dev/base/ltplain.dtx +2021/09/20 | 5400 | macros/latex-dev/base/ltnews12.tex +2021/09/20 | 5390 | macros/latex-dev/base/ltnews06.tex +2021/09/20 | 5323 | macros/latex-dev/required/amsmath/ams-external.txt +2021/09/20 | 531849 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma +2021/09/20 | 53172 | macros/latex-dev/required/tools/calc.dtx +2021/09/20 | 5293 | macros/latex-dev/base/ltnews09.tex +2021/09/20 | 5283 | macros/latex-dev/base/ltnews02.tex +2021/09/20 | 52813 | macros/latex-dev/base/encguide.tex +2021/09/20 | 5273 | macros/latex-dev/base/cmextra.ins +2021/09/20 | 52724 | macros/latex-dev/base/lb2.err +2021/09/20 | 526312 | macros/latex-dev/base/ltnews31.pdf +2021/09/20 | 5260 | systems/win32/miktex/tm/packages/expkv-def.tar.lzma +2021/09/20 | 52524 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/09/20 | 5246 | macros/latex-dev/base/ltnews01.tex +2021/09/20 | 522413 | macros/latex-dev/base/ltnews33.pdf +2021/09/20 | 5211 | macros/latex-dev/required/tools/tools-overview.tex +2021/09/20 | 5200 | macros/latex-dev/base/ltnews03.tex +2021/09/20 | 519 | macros/latex/contrib/elteikthesis/elteikthesis-minted.tex +2021/09/20 | 51750 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma +2021/09/20 | 517124 | macros/latex-dev/required/tools/array.pdf +2021/09/20 | 5168 | systems/texlive/tlnet/archive/pmhanguljamo.r60550.tar.xz +2021/09/20 | 516148 | macros/latex-dev/required/tools/multicol.pdf +2021/09/20 | 51310 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma +2021/09/20 | 51204 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma +2021/09/20 | 511855 | macros/latex-dev/base/ltnews30.pdf +2021/09/20 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma +2021/09/20 | 510587 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma +2021/09/20 | 508199 | macros/latex-dev/required/amsmath/amsldoc.pdf +2021/09/20 | 50810 | macros/latex-dev/required/graphics/drivers.dtx +2021/09/20 | 505243 | macros/latex-dev/base/ltnews34.pdf +2021/09/20 | 5041 | macros/latex-dev/base/latexsym.ins +2021/09/20 | 50396 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma +2021/09/20 | 503607 | macros/latex-dev/base/docstrip.pdf +2021/09/20 | 50193 | macros/latex-dev/base/ltpara.dtx +2021/09/20 | 50153 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma +2021/09/20 | 5008 | systems/texlive/tlnet/archive/luakeys.r60552.tar.xz +2021/09/20 | 4992 | systems/win32/miktex/tm/packages/luakeys__source.tar.lzma +2021/09/20 | 4964 | macros/latex-dev/required/tools/fileerr.dtx +2021/09/20 | 4950 | macros/latex-dev/base/lthyphen.dtx +2021/09/20 | 494331 | systems/win32/miktex/tm/packages/readarray__doc.tar.lzma +2021/09/20 | 493957 | macros/latex-dev/base/fntguide.pdf +2021/09/20 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 +2021/09/20 | 483653 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma +2021/09/20 | 48252 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma +2021/09/20 | 48248 | systems/win32/miktex/tm/packages/dtk-bibliography__source.tar.lzma +2021/09/20 | 479642 | macros/latex-dev/base/ltcmdhooks-doc.pdf +2021/09/20 | 47901 | macros/latex-dev/base/lttab.dtx +2021/09/20 | 476922 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma +2021/09/20 | 4762 | macros/latex-dev/base/ltlength.dtx +2021/09/20 | 474 | macros/latex-dev/required/firstaid/README.md +2021/09/20 | 469966 | macros/latex-dev/base/latexchanges.pdf +2021/09/20 | 46907 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma +2021/09/20 | 466559 | macros/latex/contrib/genealogytree/genealogytree-languages.pdf +2021/09/20 | 46297 | macros/latex-dev/base/ltfinal.dtx +2021/09/20 | 461813 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma +2021/09/20 | 45971 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma +2021/09/20 | 45906 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma +2021/09/20 | 4579 | graphics/mcf2graph/README +2021/09/20 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc +2021/09/20 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc +2021/09/20 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc +2021/09/20 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc +2021/09/20 | 454808 | macros/latex-dev/base/ltnews29.pdf +2021/09/20 | 454662 | macros/latex-dev/required/amsmath/testmath.pdf +2021/09/20 | 45311 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma +2021/09/20 | 45245 | macros/latex-dev/base/ltspace.dtx +2021/09/20 | 44742 | graphics/mcf2graph/mcf_man_soc.mf +2021/09/20 | 446255 | macros/latex/contrib/elteikthesis/elteikthesis.pdf +2021/09/20 | 44409 | macros/latex-dev/base/latexrelease.dtx +2021/09/20 | 4390 | macros/latex-dev/base/ec.ins +2021/09/20 | 43867 | macros/latex-dev/base/ltboxes.dtx +2021/09/20 | 43636 | macros/latex-dev/base/cmfonts.fdd +2021/09/20 | 43453 | macros/latex-dev/required/tools/theorem.dtx +2021/09/20 | 43426 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma +2021/09/20 | 4341 | macros/latex-dev/required/amsmath/amsxtra.dtx +2021/09/20 | 4324 | macros/latex-dev/base/cmfonts.ins +2021/09/20 | 430996 | macros/latex-dev/base/usrguide.pdf +2021/09/20 | 4303 | macros/latex-dev/base/ltalloc.dtx +2021/09/20 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma +2021/09/20 | 43003 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma +2021/09/20 | 42892 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma +2021/09/20 | 42713 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma +2021/09/20 | 42708 | macros/latex-dev/base/changes.old.txt +2021/09/20 | 42705 | macros/latex-dev/base/ltcmdhooks.dtx +2021/09/20 | 4254 | macros/latex-dev/base/newdc.ins +2021/09/20 | 42387 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma +2021/09/20 | 4221 | macros/latex-dev/base/docstrip.ins +2021/09/20 | 4219 | macros/latex-dev/base/latex209.ins +2021/09/20 | 41848 | macros/latex-dev/base/latexchanges.tex +2021/09/20 | 41831 | macros/latex-dev/base/doc-v3beta.sty +2021/09/20 | 4170 | macros/latex-dev/base/ltnews19.tex +2021/09/20 | 41196 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma +2021/09/20 | 4113 | macros/latex-dev/required/graphics/epsfig.dtx +2021/09/20 | 4087 | macros/latex-dev/base/classes.ins +2021/09/20 | 4086 | systems/win32/miktex/tm/packages/exesheet.tar.lzma +2021/09/20 | 4079 | macros/latex-dev/base/lablst.tex +2021/09/20 | 402779 | macros/latex-dev/base/clsguide.pdf +2021/09/20 | 40230 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma +2021/09/20 | 400036 | systems/win32/miktex/tm/packages/pdfextra__source.tar.lzma +2021/09/20 | 399960 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60545.tar.xz +2021/09/20 | 399552 | macros/latex-dev/required/amsmath/amsmath.pdf +2021/09/20 | 398276 | systems/win32/miktex/tm/packages/expkv-def__doc.tar.lzma +2021/09/20 | 39701 | macros/latex-dev/required/tools/ftnright.dtx +2021/09/20 | 3963 | graphics/mcf2graph/mcf_setup.sty +2021/09/20 | 3960 | macros/latex-dev/base/olddc.ins +2021/09/20 | 39431 | macros/latex-dev/base/ltmath.dtx +2021/09/20 | 39387 | macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex +2021/09/20 | 3937 | macros/latex-dev/required/graphics/lscape.dtx +2021/09/20 | 392794 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma +2021/09/20 | 39128 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma +2021/09/20 | 387987 | macros/latex-dev/base/ltnews28.pdf +2021/09/20 | 38735 | macros/latex-dev/base/latex209.dtx +2021/09/20 | 383566 | macros/latex-dev/base/changes.txt +2021/09/20 | 383524 | macros/latex-dev/required/tools/varioref.pdf +2021/09/20 | 382155 | macros/latex-dev/required/tools/longtable.pdf +2021/09/20 | 38142 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma +2021/09/20 | 3809 | macros/latex/contrib/elteikthesis/elteikthesis.tex +2021/09/20 | 38031 | macros/latex-dev/base/ltnews18.pdf +2021/09/20 | 379735 | macros/latex-dev/base/ltnews26.pdf +2021/09/20 | 3781 | macros/latex-dev/base/tulm.ins +2021/09/20 | 37807 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma +2021/09/20 | 377210 | systems/win32/miktex/tm/packages/dtk-bibliography.tar.lzma +2021/09/20 | 3756 | macros/latex/contrib/lipsum/lipsum.ins +2021/09/20 | 374051 | macros/latex-dev/base/slides.pdf +2021/09/20 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma +2021/09/20 | 3730 | macros/latex-dev/base/ltlogos.dtx +2021/09/20 | 37238 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/09/20 | 37089 | macros/latex-dev/required/graphics/grfguide.tex +2021/09/20 | 370414 | macros/latex-dev/required/tools/calc.pdf +2021/09/20 | 370134 | macros/latex-dev/required/tools/ftnright.pdf +2021/09/20 | 369 | macros/latex-dev/required/amsmath/manifest.txt +2021/09/20 | 36629 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma +2021/09/20 | 361582 | macros/latex-dev/base/utf8ienc.pdf +2021/09/20 | 36157 | macros/latex-dev/base/ltlists.dtx +2021/09/20 | 35880 | macros/latex-dev/required/tools/tabularx.dtx +2021/09/20 | 35692 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma +2021/09/20 | 35302 | macros/latex-dev/base/ltdirchk.dtx +2021/09/20 | 35213177 | install/macros/latex-dev/latex-base-dev.tds.zip +2021/09/20 | 351657 | macros/latex-dev/required/tools/theorem.pdf +2021/09/20 | 3514 | macros/latex-dev/base/README.md +2021/09/20 | 35085 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma +2021/09/20 | 34686730 | macros/latex-dev/base.zip +2021/09/20 | 34665 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma +2021/09/20 | 345737 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma +2021/09/20 | 344886 | graphics/mcf2graph/mcf_manual.pdf +2021/09/20 | 3434 | macros/latex-dev/base/makeindx.ins +2021/09/20 | 34281 | macros/latex-dev/required/graphics/changes.txt +2021/09/20 | 3425 | macros/latex/contrib/elteikthesis/README_hu.md +2021/09/20 | 3401 | macros/latex-dev/base/proc.ins +2021/09/20 | 33951 | macros/latex-dev/base/ltsect.dtx +2021/09/20 | 33916 | macros/latex-dev/base/ltnews33.tex +2021/09/20 | 33863 | macros/latex-dev/required/tools/varioref-2016-02-16.sty +2021/09/20 | 33777 | macros/latex/contrib/genealogytree/gtrcore.node.code.tex +2021/09/20 | 3372 | macros/latex-dev/base/letter.ins +2021/09/20 | 3367 | macros/latex-dev/base/ltoutenc.ins +2021/09/20 | 33634 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma +2021/09/20 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma +2021/09/20 | 3338 | macros/latex-dev/base/exscale.ins +2021/09/20 | 33256 | macros/latex-dev/base/ltnews32.tex +2021/09/20 | 331424 | macros/latex-dev/required/tools/bm.pdf +2021/09/20 | 330815 | macros/latex-dev/required/tools/verbatim.pdf +2021/09/20 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma +2021/09/20 | 330071 | macros/latex-dev/required/graphics/grfguide.pdf +2021/09/20 | 3284 | macros/latex-dev/required/tools/manifest.txt +2021/09/20 | 328443 | macros/latex-dev/base/letter.pdf +2021/09/20 | 3282 | macros/latex-dev/base/bugs.txt +2021/09/20 | 3275 | systems/win32/miktex/tm/packages/schooldocs.tar.lzma +2021/09/20 | 32674 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma +2021/09/20 | 325727 | macros/latex-dev/base/usrguide3.pdf +2021/09/20 | 325107 | macros/latex-dev/base/ltluatex.pdf +2021/09/20 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/09/20 | 32034 | macros/latex-dev/required/tools/layout.dtx +2021/09/20 | 318399 | macros/latex-dev/base/ltnews22.pdf +2021/09/20 | 3181 | macros/latex-dev/base/unpack.ins +2021/09/20 | 318168 | macros/latex-dev/base/inputenc.pdf +2021/09/20 | 31659 | macros/latex-dev/required/graphics/color.dtx +2021/09/20 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma +2021/09/20 | 31538 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma +2021/09/20 | 314077 | graphics/mcf2graph/mcf_example.pdf +2021/09/20 | 31351 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma +2021/09/20 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma +2021/09/20 | 312107 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma +2021/09/20 | 3117 | macros/latex/contrib/elteikthesis/README.md +2021/09/20 | 310676 | macros/latex-dev/required/graphics/graphics.pdf +2021/09/20 | 30825 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma +2021/09/20 | 307949 | macros/latex/contrib/genealogytree/genealogytree-example-4.pdf +2021/09/20 | 3068790 | systems/win32/miktex/tm/packages/luatexja__doc.tar.lzma +2021/09/20 | 30456 | macros/latex-dev/base/ltnews31.tex +2021/09/20 | 30455 | macros/latex-dev/required/graphics/graphicx.dtx +2021/09/20 | 30453 | macros/latex-dev/base/usrguide3.tex +2021/09/20 | 3024 | macros/latex-dev/required/firstaid/changes.txt +2021/09/20 | 30059 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma +2021/09/20 | 2994 | macros/latex-dev/required/graphics/graphics-drivers.ins +2021/09/20 | 29842 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma +2021/09/20 | 2978 | macros/latex/contrib/genealogytree/gtrlang.german.code.tex +2021/09/20 | 29712 | macros/latex-dev/required/tools/multicol-2017-04-11.sty +2021/09/20 | 297070 | macros/latex-dev/base/ltnews20.pdf +2021/09/20 | 2966 | macros/latex/contrib/genealogytree/gtrlang.french.code.tex +2021/09/20 | 29569 | macros/latex-dev/required/tools/showkeys.dtx +2021/09/20 | 295203 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma +2021/09/20 | 29272 | macros/latex-dev/base/ltfntcmd.dtx +2021/09/20 | 292317 | macros/latex-dev/base/cmfonts.pdf +2021/09/20 | 290495 | macros/latex-dev/base/latexrelease.pdf +2021/09/20 | 29036 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma +2021/09/20 | 2896 | macros/latex-dev/base/syntonly.ins +2021/09/20 | 289519 | macros/latex-dev/base/tlc2.pdf +2021/09/20 | 2893 | macros/latex-dev/base/nfssfont.ins +2021/09/20 | 2892 | macros/latex-dev/base/graphpap.ins +2021/09/20 | 2892 | macros/latex-dev/base/fix-cm.ins +2021/09/20 | 2890 | macros/latex-dev/base/alltt.ins +2021/09/20 | 2888 | macros/latex-dev/base/ifthen.ins +2021/09/20 | 287672 | macros/latex-dev/base/fix-cm.pdf +2021/09/20 | 287125 | macros/latex-dev/base/ltnews23.pdf +2021/09/20 | 2868 | macros/latex/contrib/genealogytree/gtrlang.danish.code.tex +2021/09/20 | 286309 | macros/latex-dev/required/graphics/drivers.pdf +2021/09/20 | 284583 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma +2021/09/20 | 284025 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma +2021/09/20 | 28390 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma +2021/09/20 | 2833 | macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex +2021/09/20 | 2827 | macros/latex/contrib/genealogytree/gtrlang.italian.code.tex +2021/09/20 | 2819 | macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex +2021/09/20 | 28181 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma +2021/09/20 | 2796726 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma +2021/09/20 | 278041 | macros/latex-dev/required/tools/tabularx.pdf +2021/09/20 | 27730 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma +2021/09/20 | 2767024 | install/macros/latex-dev/required/latex-amsmath-dev.tds.zip +2021/09/20 | 2749 | macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex +2021/09/20 | 2740 | macros/latex-dev/required/firstaid/firstaid.ins +2021/09/20 | 27392 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma +2021/09/20 | 2738 | macros/latex-dev/base/tex2.txt +2021/09/20 | 27359 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma +2021/09/20 | 2734 | macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex +2021/09/20 | 2734589 | macros/latex-dev/required/amsmath.zip +2021/09/20 | 2733 | macros/latex-dev/base/ltpageno.dtx +2021/09/20 | 2724 | macros/latex-dev/required/amsmath/README.md +2021/09/20 | 27199 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma +2021/09/20 | 27122 | macros/latex-dev/base/ltxcheck.tex +2021/09/20 | 27074 | macros/latex-dev/base/lterror.dtx +2021/09/20 | 2705 | macros/latex-dev/base/idx.tex +2021/09/20 | 269103 | macros/latex-dev/required/graphics/rotating.pdf +2021/09/20 | 267761 | macros/latex-dev/required/tools/layout.pdf +2021/09/20 | 2672610 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma +2021/09/20 | 2668 | macros/latex/contrib/genealogytree/gtrlang.english.code.tex +2021/09/20 | 2667651 | install/macros/latex-dev/required/latex-graphics-dev.tds.zip +2021/09/20 | 265211 | macros/latex-dev/base/ltnews24.pdf +2021/09/20 | 263959 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma +2021/09/20 | 2632331 | macros/latex-dev/required/graphics.zip +2021/09/20 | 261067 | systems/win32/miktex/tm/packages/clicks__doc.tar.lzma +2021/09/20 | 260624 | macros/latex-dev/required/tools/showkeys.pdf +2021/09/20 | 25 | macros/latex/contrib/lipsum/DEPENDS.txt +2021/09/20 | 259454 | macros/latex/contrib/genealogytree/genealogytree-example-2.pdf +2021/09/20 | 258882 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma +2021/09/20 | 2576 | macros/latex-dev/required/tools/multicol.ins +2021/09/20 | 256897 | macros/latex-dev/required/tools/xspace.pdf +2021/09/20 | 25629535 | systems/texlive/tlnet/install-tl.zip +2021/09/20 | 25552 | systems/win32/miktex/tm/packages/pdfextra.tar.lzma +2021/09/20 | 2538 | macros/latex-dev/required/tools/longtable.ins +2021/09/20 | 2538 | macros/latex-dev/required/tools/afterpage.ins +2021/09/20 | 2535 | macros/latex-dev/required/tools/tabularx.ins +2021/09/20 | 25320 | systems/texlive/tlnet/archive/pdfextra.r60553.tar.xz +2021/09/20 | 2531 | macros/latex-dev/required/tools/varioref.ins +2021/09/20 | 25291 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma +2021/09/20 | 252568 | install/macros/latex-dev/required/latex-firstaid-dev.tds.zip +2021/09/20 | 2524 | macros/latex-dev/required/tools/bm.ins +2021/09/20 | 252432 | macros/latex-dev/base/ltnews27.pdf +2021/09/20 | 252154 | macros/latex-dev/base/lb2.pdf +2021/09/20 | 25151 | macros/latex-dev/required/tools/trace.dtx +2021/09/20 | 250266 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma +2021/09/20 | 25021 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma +2021/09/20 | 2501 | macros/latex/contrib/elteikthesis/appendices/sim.tex +2021/09/20 | 24996 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma +2021/09/20 | 248231 | macros/latex-dev/required/graphics/graphicx.pdf +2021/09/20 | 24782 | macros/latex-dev/base/ltnews34.tex +2021/09/20 | 247461 | macros/latex-dev/required/firstaid.zip +2021/09/20 | 246012 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf +2021/09/20 | 245818 | macros/latex-dev/base/ltnews19.pdf +2021/09/20 | 244869 | macros/latex-dev/base/ltnews21.pdf +2021/09/20 | 24368 | macros/latex/contrib/genealogytree/gtrlib.templates.code.tex +2021/09/20 | 243601 | macros/latex-dev/base/modguide.pdf +2021/09/20 | 243427 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma +2021/09/20 | 24330 | macros/latex/contrib/spacingtricks/spacingtricks.dtx +2021/09/20 | 24291 | macros/latex-dev/base/ltcounts.dtx +2021/09/20 | 242893 | systems/win32/miktex/tm/packages/pdfextra__doc.tar.lzma +2021/09/20 | 242886 | macros/latex-dev/base/cfgguide.pdf +2021/09/20 | 241812 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma +2021/09/20 | 241697 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma +2021/09/20 | 241657 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma +2021/09/20 | 239681 | macros/latex-dev/base/cyrguide.pdf +2021/09/20 | 239654 | macros/latex-dev/required/graphics/keyval.pdf +2021/09/20 | 239137 | indexing/makeindexk.zip +2021/09/20 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma +2021/09/20 | 238577 | macros/latex-dev/base/ltxdoc.pdf +2021/09/20 | 2375 | systems/win32/miktex/tm/packages/tiscreen__source.tar.lzma +2021/09/20 | 23651 | macros/latex-dev/base/ltnews30.tex +2021/09/20 | 23521 | macros/latex-dev/base/fix-cm.dtx +2021/09/20 | 234008 | macros/latex-dev/base/slifonts.pdf +2021/09/20 | 233995 | macros/latex-dev/base/proc.pdf +2021/09/20 | 23386 | macros/latex-dev/base/lppl.tex +2021/09/20 | 23365 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma +2021/09/20 | 2325 | graphics/mcf2graph/mcf_example.tex +2021/09/20 | 23162 | macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx +2021/09/20 | 2311436 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz +2021/09/20 | 229713 | macros/latex-dev/required/tools/trace.pdf +2021/09/20 | 227034 | macros/latex-dev/required/amsmath/amsmath.dtx +2021/09/20 | 22605 | macros/latex-dev/required/amsmath/diffs-m.txt +2021/09/20 | 22485 | macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex +2021/09/20 | 22456 | macros/latex-dev/base/cfgguide.tex +2021/09/20 | 2227 | macros/latex/contrib/genealogytree/README.md +2021/09/20 | 2225 | macros/latex-dev/required/tools/indentfirst.dtx +2021/09/20 | 220689 | macros/latex-dev/required/tools/dcolumn.pdf +2021/09/20 | 22050 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma +2021/09/20 | 220417 | macros/latex-dev/base/ifthen.pdf +2021/09/20 | 21976 | macros/latex/contrib/genealogytree/gtrcore.parser.code.tex +2021/09/20 | 2196 | systems/win32/miktex/tm/packages/clicks__source.tar.lzma +2021/09/20 | 219354 | macros/latex-dev/base/ltx3info.pdf +2021/09/20 | 218782 | macros/latex-dev/base/nfssfont.pdf +2021/09/20 | 218143 | systems/win32/miktex/tm/packages/luatexja__source.tar.lzma +2021/09/20 | 215810 | macros/latex-dev/required/amsmath/amstext.pdf +2021/09/20 | 21571 | macros/latex/contrib/genealogytree/gtrcore.processing.code.tex +2021/09/20 | 215355 | macros/latex-dev/required/tools/enumerate.pdf +2021/09/20 | 215249 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma +2021/09/20 | 215091 | macros/latex-dev/base/lgc2.pdf +2021/09/20 | 215002 | macros/latex-dev/required/graphics/color.pdf +2021/09/20 | 214710 | macros/latex-dev/base/alltt.pdf +2021/09/20 | 212307 | macros/latex-dev/base/exscale.pdf +2021/09/20 | 21226 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma +2021/09/20 | 2117 | graphics/mcf2graph/mcf_exa_soc.mf +2021/09/20 | 21072 | macros/latex-dev/required/graphics/rotating.dtx +2021/09/20 | 210338 | macros/latex/contrib/genealogytree/genealogytree.doc.sources.zip +2021/09/20 | 2092 | macros/latex-dev/required/graphics/README.md +2021/09/20 | 209026 | macros/latex-dev/base/lthooks.dtx +2021/09/20 | 20872840 | systems/texlive/tlnet/install-tl-windows.exe +2021/09/20 | 208359 | macros/latex-dev/base/latexsym.pdf +2021/09/20 | 208049 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma +2021/09/20 | 207638 | macros/latex/contrib/genealogytree/genealogytree-example-1.pdf +2021/09/20 | 206897 | macros/latex-dev/required/graphics/trig.pdf +2021/09/20 | 20680 | macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf +2021/09/20 | 206604 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma +2021/09/20 | 20632 | macros/latex-dev/base/lgc2.err +2021/09/20 | 205344 | macros/latex-dev/required/tools/afterpage.pdf +2021/09/20 | 205162 | macros/latex-dev/base/ltnews25.pdf +2021/09/20 | 205128 | macros/latex/contrib/genealogytree/genealogytree-example-3.pdf +2021/09/20 | 20469 | macros/latex-dev/base/ltnews.cls +2021/09/20 | 20461 | macros/latex/contrib/genealogytree/gtrcore.options.code.tex +2021/09/20 | 204063 | macros/latex-dev/base/doc.dtx +2021/09/20 | 202796 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma +2021/09/20 | 20137 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma +2021/09/20 | 2009904 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/09/20 | 2005 | macros/latex/contrib/spacingtricks/spacingtricks.ins +2021/09/20 | 199732 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma +2021/09/20 | 198647 | macros/latex-dev/required/tools/delarray.pdf +2021/09/20 | 198170 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma +2021/09/20 | 197195 | macros/latex-dev/base/syntonly.pdf +2021/09/20 | 196873 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma +2021/09/20 | 196742 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma +2021/09/20 | 195637 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma +2021/09/20 | 195434 | macros/latex-dev/required/tools/fileerr.pdf +2021/09/20 | 194382 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/09/20 | 1937 | macros/latex-dev/base/minimal.cls +2021/09/20 | 1926 | macros/latex/contrib/lipsum/CHANGELOG.md +2021/09/20 | 19064 | macros/latex-dev/base/ltxdoc.dtx +2021/09/20 | 19040 | macros/latex-dev/base/lppl.txt +2021/09/20 | 190348 | systems/win32/miktex/tm/packages/luatexja.tar.lzma +2021/09/20 | 189538 | macros/latex-dev/required/tools/hhline.pdf +2021/09/20 | 18940 | macros/latex-dev/base/ltnews29.tex +2021/09/20 | 18926 | macros/latex/contrib/genealogytree/gtrlib.debug.code.tex +2021/09/20 | 184158 | graphics/mcf2graph/mcf_mplib_exa.pdf +2021/09/20 | 18404 | macros/latex-dev/base/nfssfont.dtx +2021/09/20 | 183532 | macros/latex-dev/required/tools/shellesc.pdf +2021/09/20 | 18303 | macros/latex-dev/base/ifthen.dtx +2021/09/20 | 18299 | macros/latex-dev/base/ltx3info.tex +2021/09/20 | 182355 | macros/latex-dev/required/tools/multicol.dtx +2021/09/20 | 18195 | systems/win32/miktex/tm/packages/penlight__doc.tar.lzma +2021/09/20 | 18177 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma +2021/09/20 | 180 | macros/latex-dev/base/ltfilehook-doc.tex +2021/09/20 | 180121 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma +2021/09/20 | 180010 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/09/20 | 179 | macros/latex-dev/base/ltshipout-doc.tex +2021/09/20 | 17981 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma +2021/09/20 | 17979 | systems/win32/miktex/tm/packages/expkv-def__source.tar.lzma +2021/09/20 | 178672 | macros/latex-dev/required/amsmath/amscd.pdf +2021/09/20 | 17861 | macros/latex-dev/required/tools/xspace.dtx +2021/09/20 | 178354 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma +2021/09/20 | 178311 | systems/win32/miktex/tm/packages/exesheet__doc.tar.lzma +2021/09/20 | 177 | macros/latex-dev/base/lthooks-doc.tex +2021/09/20 | 177 | macros/latex-dev/base/ltcmdhooks-doc.tex +2021/09/20 | 177935 | macros/latex-dev/base/ltoutput.dtx +2021/09/20 | 1777 | systems/win32/miktex/tm/packages/tiscreen.tar.lzma +2021/09/20 | 177595 | macros/latex-dev/required/tools/xr.pdf +2021/09/20 | 176740 | macros/latex-dev/required/amsmath/amsgen.pdf +2021/09/20 | 175169 | macros/latex-dev/required/tools/somedefs.pdf +2021/09/20 | 17495 | macros/latex-dev/base/cyrguide.tex +2021/09/20 | 174488 | macros/latex-dev/base/ltnews05.pdf +2021/09/20 | 1740 | systems/win32/miktex/tm/packages/clicks.tar.lzma +2021/09/20 | 173 | macros/latex-dev/base/ltpara-doc.tex +2021/09/20 | 17382 | macros/latex/contrib/elteikthesis/elteikthesis.cls +2021/09/20 | 173746 | macros/latex-dev/required/amsmath/amsbsy.pdf +2021/09/20 | 173682 | macros/latex-dev/base/makeindx.pdf +2021/09/20 | 173323 | macros/latex-dev/base/ltnews13.pdf +2021/09/20 | 172409 | macros/latex-dev/base/tlc2.err +2021/09/20 | 172231 | macros/latex-dev/required/graphics/rotex.pdf +2021/09/20 | 1713894 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma +2021/09/20 | 171083 | macros/latex-dev/base/ltcmd.dtx +2021/09/20 | 170875 | macros/latex-dev/base/lamport-manual.pdf +2021/09/20 | 170530 | macros/latex-dev/base/tulm.pdf +2021/09/20 | 170214 | macros/latex-dev/base/docstrip.dtx +2021/09/20 | 1694 | macros/latex-dev/base/small2e.tex +2021/09/20 | 169323 | macros/latex-dev/base/graphpap.pdf +2021/09/20 | 169243 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma +2021/09/20 | 16885204 | systems/texlive/tlnet/tlpkg/texlive.tlpdb +2021/09/20 | 168392 | systems/win32/miktex/tm/packages/pmhanguljamo__source.tar.lzma +2021/09/20 | 167686 | macros/latex-dev/required/graphics/epsfig.pdf +2021/09/20 | 16691 | systems/win32/miktex/tm/packages/exesheet__source.tar.lzma +2021/09/20 | 1666 | macros/latex-dev/required/tools/README.md +2021/09/20 | 166368 | macros/latex-dev/base/ltnews17.pdf +2021/09/20 | 16414 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma +2021/09/20 | 16358 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma +2021/09/20 | 163584 | macros/latex-dev/required/graphics/lscape.pdf +2021/09/20 | 16233 | macros/latex-dev/base/modguide.tex +2021/09/20 | 161570 | macros/latex/contrib/elteikthesis/README_hu.pdf +2021/09/20 | 161518 | macros/latex-dev/base/ltnews01.pdf +2021/09/20 | 161405 | macros/latex-dev/base/ltnews14.pdf +2021/09/20 | 16122 | graphics/mcf2graph/mcf_mplib_exa.tex +2021/09/20 | 16105 | macros/latex-dev/base/ltbibl.dtx +2021/09/20 | 159580 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma +2021/09/20 | 159313 | macros/latex-dev/base/ltnews10.pdf +2021/09/20 | 1584 | systems/texlive/tlnet/archive/tiscreen.r60551.tar.xz +2021/09/20 | 15807 | graphics/mcf2graph/CHANGELOG +2021/09/20 | 157803 | macros/latex-dev/required/tools/indentfirst.pdf +2021/09/20 | 157578 | macros/latex/contrib/elteikthesis/README.pdf +2021/09/20 | 15737 | macros/latex-dev/required/graphics/cat.eps +2021/09/20 | 15699 | macros/latex-dev/base/slifonts.fdd +2021/09/20 | 15625 | macros/latex-dev/base/ltxref.dtx +2021/09/20 | 156219 | macros/latex-dev/base/classes.dtx +2021/09/20 | 1556 | systems/win32/miktex/tm/packages/penlight.tar.lzma +2021/09/20 | 155055 | macros/latex-dev/base/ltnews08.pdf +2021/09/20 | 154808 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma +2021/09/20 | 154495 | systems/win32/miktex/tm/packages/light-latex-make__doc.tar.lzma +2021/09/20 | 154427 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma +2021/09/20 | 15429 | macros/latex-dev/required/graphics/graphics-2017-06-25.sty +2021/09/20 | 154160 | systems/texlive/tlnet/archive/luakeys.doc.r60552.tar.xz +2021/09/20 | 154034 | macros/latex-dev/required/tools/fontsmpl.pdf +2021/09/20 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 +2021/09/20 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 +2021/09/20 | 1525 | macros/latex/contrib/lipsum/README.txt +2021/09/20 | 152220 | systems/texlive/tlnet/archive/tiscreen.doc.r60551.tar.xz +2021/09/20 | 1512 | macros/latex/contrib/elteikthesis/elteikthesis.bib +2021/09/20 | 151080 | systems/win32/miktex/tm/packages/tiscreen__doc.tar.lzma +2021/09/20 | 15104 | macros/latex-dev/base/source2e.tex +2021/09/20 | 1505 | macros/latex-dev/required/amsmath/amsbsy.ins +2021/09/20 | 1504 | macros/latex-dev/required/amsmath/amsmath.ins +2021/09/20 | 150493 | macros/latex-dev/base/ltnews03.pdf +2021/09/20 | 150466 | macros/latex-dev/base/ltnews02.pdf +2021/09/20 | 149977 | systems/win32/miktex/tm/packages/luakeys__doc.tar.lzma +2021/09/20 | 149318 | macros/latex-dev/base/ltoutenc.dtx +2021/09/20 | 1492 | macros/latex-dev/required/amsmath/amsxtra.ins +2021/09/20 | 1492 | macros/latex-dev/required/amsmath/amstext.ins +2021/09/20 | 1490 | macros/latex-dev/required/amsmath/amsopn.ins +2021/09/20 | 14891 | macros/latex-dev/base/ltnews28.tex +2021/09/20 | 1487 | macros/latex-dev/required/amsmath/amscd.ins +2021/09/20 | 1484 | macros/latex-dev/required/amsmath/amsgen.ins +2021/09/20 | 147587 | macros/latex-dev/base/ltnews12.pdf +2021/09/20 | 147373 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/09/20 | 146534 | macros/latex-dev/required/tools/rawfonts.pdf +2021/09/20 | 146533 | macros/latex-dev/base/ltnews16.pdf +2021/09/20 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma +2021/09/20 | 146200 | macros/latex-dev/base/webcomp.pdf +2021/09/20 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 +2021/09/20 | 14575 | macros/latex-dev/required/graphics/rotex.tex +2021/09/20 | 145610 | macros/latex-dev/required/amsmath/technote.pdf +2021/09/20 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/09/20 | 14421 | macros/latex-dev/base/lppl-1-2.txt +2021/09/20 | 143686 | macros/latex-dev/base/ltnews04.pdf +2021/09/20 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma +2021/09/20 | 14341 | macros/latex-dev/base/lppl-1-1.txt +2021/09/20 | 14293 | macros/latex-dev/base/ltvers.dtx +2021/09/20 | 142909 | macros/latex-dev/base/ltnews06.pdf +2021/09/20 | 1424 | macros/latex/contrib/elteikthesis/LICENSE +2021/09/20 | 1421868 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma +2021/09/20 | 141971 | macros/latex-dev/base/ltclass.dtx +2021/09/20 | 14077 | macros/latex-dev/required/tools/afterpage.dtx +2021/09/20 | 13917 | macros/latex-dev/base/ltexpl.dtx +2021/09/20 | 13880 | macros/latex-dev/required/graphics/keyval.dtx +2021/09/20 | 138783 | macros/latex-dev/required/amsmath/amsopn.pdf +2021/09/20 | 138044 | macros/latex-dev/base/ltnews07.pdf +2021/09/20 | 13759 | macros/latex-dev/base/lamport-manual.err +2021/09/20 | 136822 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma +2021/09/20 | 136817 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma +2021/09/20 | 1358573 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma +2021/09/20 | 1358118 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma +2021/09/20 | 13467 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma +2021/09/20 | 134671 | macros/latex/contrib/lipsum/lipsum-cicero.txt +2021/09/20 | 13466 | systems/win32/miktex/tm/packages/light-latex-make.tar.lzma +2021/09/20 | 13447 | macros/latex-dev/required/amsmath/amsgen.dtx +2021/09/20 | 1341 | macros/latex-dev/base/ltnews18.tex +2021/09/20 | 1340933 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma +2021/09/20 | 133865 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma +2021/09/20 | 13301 | macros/latex-dev/base/proc.dtx +2021/09/20 | 132373 | macros/latex-dev/base/lppl.pdf +2021/09/20 | 13191 | systems/win32/miktex/tm/packages/readarray__source.tar.lzma +2021/09/20 | 1316472 | macros/latex-dev/base/encguide.pdf +2021/09/20 | 130447 | macros/latex-dev/base/ltnews15.pdf +2021/09/20 | 1301193 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma +2021/09/20 | 1291300 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma +2021/09/20 | 129032 | macros/latex-dev/base/ltnews09.pdf +2021/09/20 | 128187 | macros/latex-dev/required/tools/array.dtx +2021/09/20 | 1279 | macros/latex-dev/base/legal.txt +2021/09/20 | 12714 | macros/latex-dev/required/tools/dcolumn.dtx +2021/09/20 | 1262219 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma +2021/09/20 | 1261940 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma +2021/09/20 | 12559 | macros/latex-dev/required/tools/array-2020-02-10.sty +2021/09/20 | 125414 | macros/latex/contrib/spacingtricks/spacingtricks.pdf +2021/09/20 | 12520 | macros/latex-dev/base/testpage.tex +2021/09/20 | 124282 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma +2021/09/20 | 12268 | macros/latex/contrib/genealogytree/gtrcore.contour.code.tex +2021/09/20 | 12242 | macros/latex-dev/base/tulm.fdd +2021/09/20 | 12224 | macros/latex-dev/base/ltnews24.tex +2021/09/20 | 12133 | macros/latex-dev/required/tools/longtable-2020-01-07.sty +2021/09/20 | 1211 | macros/latex/contrib/elteikthesis/chapters/intro.tex +2021/09/20 | 12005 | macros/latex-dev/required/amsmath/technote.tex +2021/09/20 | 119821 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma +2021/09/20 | 11894 | macros/latex/contrib/elteikthesis/chapters/user.tex +2021/09/20 | 11749 | macros/latex-dev/required/tools/array-2016-10-06.sty +2021/09/20 | 11739 | macros/latex/contrib/genealogytree/CHANGES.md +2021/09/20 | 11704 | systems/win32/miktex/tm/packages/light-latex-make__source.tar.lzma +2021/09/20 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma +2021/09/20 | 116725 | graphics/mcf2graph/mcf2graph.mf +2021/09/20 | 11590 | macros/latex-dev/base/ltpage.dtx +2021/09/20 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini +2021/09/20 | 115351 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma +2021/09/20 | 114351 | macros/latex-dev/required/tools/varioref.dtx +2021/09/20 | 11403 | macros/latex-dev/required/amsmath/amstext.dtx +2021/09/20 | 112985 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma +2021/09/20 | 1128 | macros/latex-dev/required/graphics/graphics.ins +2021/09/20 | 11289 | macros/latex-dev/required/amsmath/amscd.dtx +2021/09/20 | 112556 | macros/latex-dev/required/amsmath/amsxtra.pdf +2021/09/20 | 112088 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/09/20 | 111955 | macros/latex-dev/base/ltnews11.pdf +2021/09/20 | 1116092 | macros/latex-dev/base/ltnews.pdf +2021/09/20 | 11153 | macros/latex-dev/required/tools/hhline.dtx +2021/09/20 | 109969 | macros/latex/contrib/spacingtricks.zip +2021/09/20 | 109737 | macros/latex-dev/required/amsmath/subeqn.pdf +2021/09/20 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma +2021/09/20 | 10896 | macros/latex-dev/base/manifest.txt +2021/09/20 | 1083948 | macros/latex-dev/base/lthooks-code.pdf +2021/09/20 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60545.tar.xz +2021/09/20 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma +2021/09/20 | 10776 | macros/latex-dev/required/tools/fontsmpl.dtx +2021/09/20 | 1074 | macros/latex/contrib/elteikthesis/chapters/sum.tex +2021/09/20 | 10748 | systems/win32/miktex/tm/packages/schooldocs__source.tar.lzma +2021/09/20 | 10744 | macros/latex-dev/required/graphics/trig.dtx +2021/09/20 | 10697 | macros/latex-dev/base/ltnews26.tex +2021/09/20 | 106908 | macros/latex-dev/base/inputenc.dtx +2021/09/20 | 10687 | macros/latex-dev/base/ltnews23.tex +2021/09/20 | 10668 | macros/latex-dev/base/ltnews22.tex +2021/09/20 | 10649 | macros/latex-dev/required/tools/enumerate.dtx +2021/09/20 | 1063568 | macros/latex/contrib/elteikthesis.zip +2021/09/20 | 10603 | macros/latex-dev/base/makeindx.dtx +2021/09/20 | 105 | macros/latex-dev/base/ltfilehook-code.tex +2021/09/20 | 105225 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma +2021/09/20 | 104 | macros/latex-dev/base/ltshipout-code.tex +2021/09/20 | 104792 | macros/latex-dev/required/amsmath/amsldoc.tex +2021/09/20 | 103 | macros/latex-dev/base/ltcmdhooks-code.tex +2021/09/20 | 10375 | macros/latex-dev/base/ltfsscmp.dtx +2021/09/20 | 103400 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma +2021/09/20 | 103206 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma +2021/09/20 | 102 | macros/latex-dev/base/lthooks-code.tex +2021/09/20 | 10251 | macros/latex-dev/base/webcomp.err +2021/09/20 | 100636 | systems/win32/miktex/tm/packages/penlight__source.tar.lzma +2021/09/20 | 100625 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma 2021/09/19 | 99421 | support/light-latex-make/llmk.pdf -2021/09/19 | 98382 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-2.9.tar.lzma -2021/09/19 | 98262 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-2.9.tar.lzma -2021/09/19 | 975020 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-2.9.tar.lzma -2021/09/19 | 97338 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-2.9.tar.lzma -2021/09/19 | 96633 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-2.9.tar.lzma -2021/09/19 | 95400 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-x64-2.9.tar.lzma -2021/09/19 | 94800 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-2.9.tar.lzma -2021/09/19 | 94311 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-2.9.tar.lzma -2021/09/19 | 927 | systems/win32/miktex/tm/packages/pr.ini +2021/09/19 | 99340207 | systems/win32/TLW64/tl-win64.zip +2021/09/19 | 988 | indexing/makeindexk/configure.ac +2021/09/19 | 96 | indexing/makeindexk/tests/pprecB-4.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecB-3.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-2.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-1.ind +2021/09/19 | 96 | indexing/makeindexk/tests/pprecA-0.ind +2021/09/19 | 93 | indexing/makeindexk/tests/range3.ist +2021/09/19 | 92 | indexing/makeindexk/tests/range2.ist 2021/09/19 | 9234 | support/light-latex-make/README.md 2021/09/19 | 915258 | macros/latex/contrib/schooldocs.zip -2021/09/19 | 87776 | systems/win32/miktex/tm/packages/next/miktex-png-bin-x64-2.9.tar.lzma -2021/09/19 | 8768 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-x64-2.9.tar.lzma +2021/09/19 | 8999 | indexing/makeindexk/ChangeLog 2021/09/19 | 863 | info/dtk-bibliography/dtk-bibliography.tex -2021/09/19 | 83539 | systems/win32/miktex/tm/packages/next/miktex-bibtex8bit-bin-2.9.tar.lzma 2021/09/19 | 83276 | systems/texlive/tlnet/archive/luatexja.source.r60541.tar.xz 2021/09/19 | 828771 | language/korean/pmhanguljamo.zip 2021/09/19 | 8161 | support/light-latex-make/llmk-doc.cls -2021/09/19 | 815241 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-x64-2.9.tar.lzma -2021/09/19 | 80449 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-x64-2.9.tar.lzma -2021/09/19 | 78774 | systems/win32/miktex/tm/packages/next/miktex-png-bin-2.9.tar.lzma -2021/09/19 | 77951 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-x64-2.9.tar.lzma 2021/09/19 | 77263 | support/light-latex-make/llmk-logo.png -2021/09/19 | 7721 | systems/win32/miktex/tm/packages/next/miktex-md5-bin-2.9.tar.lzma -2021/09/19 | 76826 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-x64-2.9.tar.lzma 2021/09/19 | 758 | macros/luatex/generic/luakeys/luakeys-debug.sty -2021/09/19 | 75791 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-x64-2.9.tar.lzma -2021/09/19 | 744117 | systems/win32/miktex/tm/packages/next/miktex-pdftex-bin-2.9.tar.lzma -2021/09/19 | 74211 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-x64-2.9.tar.lzma -2021/09/19 | 73196 | systems/win32/miktex/tm/packages/next/miktex-fonts-bin-2.9.tar.lzma -2021/09/19 | 73147 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-x64-2.9.tar.lzma -2021/09/19 | 72206 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-x64-2.9.tar.lzma -2021/09/19 | 71668 | systems/win32/miktex/tm/packages/next/miktex-freeglut-bin-2.9.tar.lzma -2021/09/19 | 70648 | systems/win32/miktex/tm/packages/next/miktex-web-bin-x64-2.9.tar.lzma -2021/09/19 | 69914 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-x64-2.9.tar.lzma -2021/09/19 | 681250 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-x64-2.9.tar.lzma -2021/09/19 | 6811631 | systems/texlive/tlnet/install-tl-unx.tar.gz -2021/09/19 | 68024 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-x64-2.9.tar.lzma -2021/09/19 | 67819 | systems/win32/miktex/tm/packages/next/miktex-bibtex-bin-2.9.tar.lzma -2021/09/19 | 67619 | systems/win32/miktex/tm/packages/next/miktex-lzma-bin-2.9.tar.lzma -2021/09/19 | 67484 | systems/win32/miktex/tm/packages/next/miktex-mpmcli-bin-2.9.tar.lzma +2021/09/19 | 70 | indexing/makeindexk/tests/range1.ist +2021/09/19 | 6877 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2021/09/19 | 657 | info/dtk-bibliography/README.md -2021/09/19 | 65786 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-x64-2.9.tar.lzma -2021/09/19 | 65619 | systems/win32/miktex/tm/packages/next/miktex-web-bin-2.9.tar.lzma -2021/09/19 | 644568 | systems/texlive/tlnet/archive/pdfextra.doc.r60542.tar.xz -2021/09/19 | 64427 | systems/win32/miktex/tm/packages/next/miktex-graphite2-bin-2.9.tar.lzma -2021/09/19 | 64185 | systems/win32/miktex/tm/packages/next/miktex-ps2pk-bin-2.9.tar.lzma -2021/09/19 | 63777 | systems/win32/miktex/tm/packages/next/miktex-tex4ht-bin-2.9.tar.lzma -2021/09/19 | 629398 | systems/win32/miktex/tm/packages/next/miktex-lcdf-typetools-bin-2.9.tar.lzma -2021/09/19 | 62787 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-x64-2.9.tar.lzma -2021/09/19 | 624651 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-x64-2.9.tar.lzma -2021/09/19 | 62227 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-x64-2.9.tar.lzma -2021/09/19 | 61813 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-x64-2.9.tar.lzma -2021/09/19 | 614598 | systems/win32/miktex/tm/packages/files.csv.lzma -2021/09/19 | 614469 | systems/win32/miktex/tm/packages/next/files.csv.lzma -2021/09/19 | 60638 | systems/win32/miktex/tm/packages/next/miktex-mkfntmap-bin-2.9.tar.lzma -2021/09/19 | 60039 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin-x64.tar.lzma -2021/09/19 | 596929 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-x64-2.9.tar.lzma -2021/09/19 | 589841 | systems/win32/miktex/tm/packages/next/miktex-yap-bin-2.9.tar.lzma -2021/09/19 | 57727 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-x64-2.9.tar.lzma -2021/09/19 | 57547 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-x64-2.9.tar.lzma -2021/09/19 | 57138 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin-x64.tar.lzma -2021/09/19 | 57014 | systems/win32/miktex/tm/packages/next/miktex-texify-bin-2.9.tar.lzma -2021/09/19 | 56684 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-x64-2.9.tar.lzma -2021/09/19 | 566528 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-x64-2.9.tar.lzma -2021/09/19 | 56515 | systems/win32/miktex/tm/packages/next/miktex-tdsutil-bin.tar.lzma -2021/09/19 | 56476 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-x64-2.9.tar.lzma -2021/09/19 | 56356 | systems/win32/miktex/tm/packages/next/miktex-ttf2pk2-bin-2.9.tar.lzma -2021/09/19 | 56317 | systems/win32/miktex/tm/packages/next/miktex-fmt-bin-2.9.tar.lzma -2021/09/19 | 55498 | systems/win32/miktex/tm/packages/next/miktex-xml2pmx-bin.tar.lzma 2021/09/19 | 5492 | systems/texlive/tlnet/archive/readarray.r60540.tar.xz -2021/09/19 | 54632 | systems/win32/miktex/tm/packages/next/miktex-cweb-bin-2.9.tar.lzma 2021/09/19 | 533270 | language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.pdf -2021/09/19 | 531850 | systems/win32/miktex/tm/packages/next/miktex-libressl-bin-2.9.tar.lzma -2021/09/19 | 52522 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-x64-2.9.tar.lzma +2021/09/19 | 533226 | indexing/makeindexk/configure.texk 2021/09/19 | 522146 | info/dtk-bibliography/dtk-bibliography.bib 2021/09/19 | 520 | info/dtk-bibliography/dtk-authoryear.dbx -2021/09/19 | 51748 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-x64-2.9.tar.lzma 2021/09/19 | 51597 | language/korean/pmhanguljamo/doc/pmhanguljamo-kdoc.tex -2021/09/19 | 51309 | systems/win32/miktex/tm/packages/next/miktex-cjkutils-bin-2.9.tar.lzma -2021/09/19 | 51202 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-x64-2.9.tar.lzma -2021/09/19 | 51113 | systems/win32/miktex/tm/packages/next/miktex-arctrl-bin-2.9.tar.lzma -2021/09/19 | 510588 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-x64-2.9.tar.lzma 2021/09/19 | 506352 | systems/texlive/tlnet/archive/readarray.doc.r60540.tar.xz 2021/09/19 | 5060 | systems/texlive/tlnet/archive/expkv-def.r60538.tar.xz -2021/09/19 | 50396 | systems/win32/miktex/tm/packages/next/miktex-psutils-bin-2.9.tar.lzma -2021/09/19 | 50152 | systems/win32/miktex/tm/packages/next/miktex-bibarts-bin-2.9.tar.lzma -2021/09/19 | 48 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.md5 -2021/09/19 | 483653 | systems/win32/miktex/tm/packages/next/miktex-harfbuzz-bin-2.9.tar.lzma 2021/09/19 | 4834 | info/dtk-bibliography/dtk-logos.sty -2021/09/19 | 48253 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-x64-2.9.tar.lzma -2021/09/19 | 476920 | systems/win32/miktex/tm/packages/next/miktex-log4cxx-bin-2.9.tar.lzma -2021/09/19 | 46906 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-x64-2.9.tar.lzma -2021/09/19 | 461811 | systems/win32/miktex/tm/packages/next/miktex-doc.tar.lzma -2021/09/19 | 45970 | systems/win32/miktex/tm/packages/next/miktex-m-tx-bin-2.9.tar.lzma -2021/09/19 | 45905 | systems/win32/miktex/tm/packages/next/miktex-dvicopy-bin-2.9.tar.lzma -2021/09/19 | 455 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512.asc -2021/09/19 | 455 | systems/texlive/tlnet/install-tl.zip.sha512.asc -2021/09/19 | 455 | systems/texlive/tlnet/install-tl-windows.exe.sha512.asc -2021/09/19 | 455 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512.asc -2021/09/19 | 45310 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-x64-2.9.tar.lzma 2021/09/19 | 436311 | info/dtk-bibliography.zip -2021/09/19 | 43426 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-x64-2.9.tar.lzma -2021/09/19 | 43028 | systems/win32/miktex/tm/packages/next/miktex-expat-bin-2.9.tar.lzma -2021/09/19 | 43002 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-x64-2.9.tar.lzma -2021/09/19 | 42891 | systems/win32/miktex/tm/packages/next/miktex-mtprint-bin-2.9.tar.lzma -2021/09/19 | 42710 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-x64-2.9.tar.lzma -2021/09/19 | 42386 | systems/win32/miktex/tm/packages/next/miktex-synctex-bin-2.9.tar.lzma -2021/09/19 | 41193 | systems/win32/miktex/tm/packages/next/miktex-dvipng-bin-2.9.tar.lzma -2021/09/19 | 40228 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin-x64.tar.lzma -2021/09/19 | 400072 | systems/texlive/tlnet/archive/texlive-scripts.doc.r60532.tar.xz 2021/09/19 | 396880 | systems/texlive/tlnet/archive/expkv-def.doc.r60538.tar.xz 2021/09/19 | 39513 | support/light-latex-make/llmk.lua -2021/09/19 | 392790 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-x64-2.9.tar.lzma -2021/09/19 | 39129 | systems/win32/miktex/tm/packages/next/miktex-zlib-bin-2.9.tar.lzma 2021/09/19 | 3848 | systems/texlive/tlnet/archive/exesheet.r60537.tar.xz -2021/09/19 | 38141 | systems/win32/miktex/tm/packages/next/miktex-gsf2pk-bin-2.9.tar.lzma 2021/09/19 | 381060 | info/dtk-bibliography/dtk-bibliography.pdf -2021/09/19 | 37805 | systems/win32/miktex/tm/packages/next/miktex-mthelp-bin-2.9.tar.lzma -2021/09/19 | 37360 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin-x64.tar.lzma -2021/09/19 | 37242 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-x64-2.9.tar.lzma +2021/09/19 | 3776 | indexing/makeindexk/scanid.h 2021/09/19 | 36697 | support/light-latex-make/llmk.tex -2021/09/19 | 36628 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-x64-2.9.tar.lzma -2021/09/19 | 35691 | systems/win32/miktex/tm/packages/next/miktex-patgen-bin.tar.lzma -2021/09/19 | 35086 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-x64-2.9.tar.lzma -2021/09/19 | 34666 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-x64-2.9.tar.lzma -2021/09/19 | 345738 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-x64-2.9.tar.lzma 2021/09/19 | 3376 | macros/luatex/generic/penlight/penlight.tex -2021/09/19 | 33633 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-x64-2.9.tar.lzma -2021/09/19 | 33545 | systems/win32/miktex/tm/packages/next/miktex-upmendex-bin.tar.lzma -2021/09/19 | 330787 | systems/win32/miktex/tm/packages/next/miktex-cairo-bin-2.9.tar.lzma -2021/09/19 | 32674 | systems/win32/miktex/tm/packages/next/miktex-chktex-bin-2.9.tar.lzma -2021/09/19 | 325044 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-x64-2.9.tar.lzma +2021/09/19 | 3278 | indexing/makeindexk/tests/range.idx 2021/09/19 | 3204664 | systems/texlive/tlnet/archive/luatexja.doc.r60541.tar.xz -2021/09/19 | 31620 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-x64-2.9.tar.lzma -2021/09/19 | 31537 | systems/win32/miktex/tm/packages/next/miktex-posix-bin-2.9.tar.lzma -2021/09/19 | 31349 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-x64-2.9.tar.lzma -2021/09/19 | 31232 | systems/win32/miktex/tm/packages/next/miktex-mspack-bin-2.9.tar.lzma -2021/09/19 | 312108 | systems/win32/miktex/tm/packages/next/miktex-xetex-bin-2.9.tar.lzma -2021/09/19 | 30824 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-x64-2.9.tar.lzma -2021/09/19 | 30058 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-x64-2.9.tar.lzma -2021/09/19 | 29841 | systems/win32/miktex/tm/packages/next/miktex-axohelp-bin-2.9.tar.lzma -2021/09/19 | 295204 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-x64-2.9.tar.lzma -2021/09/19 | 29037 | systems/win32/miktex/tm/packages/next/miktex-autosp-bin-2.9.tar.lzma -2021/09/19 | 284580 | systems/win32/miktex/tm/packages/next/miktex-dvipdfmx-bin-2.9.tar.lzma -2021/09/19 | 284023 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-x64-2.9.tar.lzma -2021/09/19 | 28391 | systems/win32/miktex/tm/packages/next/miktex-lacheck-bin-2.9.tar.lzma -2021/09/19 | 28177 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-x64-2.9.tar.lzma -2021/09/19 | 2796726 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-x64-2.9.tar.lzma -2021/09/19 | 27729 | systems/win32/miktex/tm/packages/next/miktex-uriparser-bin-2.9.tar.lzma 2021/09/19 | 276 | systems/texlive/tlnet/archive/texlive-en.r60536.tar.xz -2021/09/19 | 27390 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-x64-2.9.tar.lzma -2021/09/19 | 27357 | systems/win32/miktex/tm/packages/next/miktex-makeindex-bin-2.9.tar.lzma -2021/09/19 | 27198 | systems/win32/miktex/tm/packages/next/miktex-bzip2-bin-2.9.tar.lzma -2021/09/19 | 2672612 | systems/win32/miktex/tm/packages/next/miktex-texworks-bin-2.9.tar.lzma -2021/09/19 | 263958 | systems/win32/miktex/tm/packages/next/miktex-console-bin-x64-2.9.tar.lzma 2021/09/19 | 260244 | systems/texlive/tlnet/archive/clicks.doc.r60539.tar.xz -2021/09/19 | 258882 | systems/win32/miktex/tm/packages/next/miktex-freetype2-bin-2.9.tar.lzma -2021/09/19 | 25629531 | systems/texlive/tlnet/install-tl.zip -2021/09/19 | 25292 | systems/win32/miktex/tm/packages/next/miktex-teckit-bin-2.9.tar.lzma -2021/09/19 | 250262 | systems/win32/miktex/tm/packages/next/miktex-metapost-bin-2.9.tar.lzma -2021/09/19 | 25019 | systems/win32/miktex/tm/packages/next/miktex-findtexmf-bin-2.9.tar.lzma -2021/09/19 | 24992 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-x64-2.9.tar.lzma 2021/09/19 | 24362 | language/korean/pmhanguljamo/doc/pmhanguljamo-doc.tex -2021/09/19 | 243426 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-x64-2.9.tar.lzma -2021/09/19 | 241811 | systems/win32/miktex/tm/packages/next/miktex-console-bin-2.9.tar.lzma -2021/09/19 | 240974 | systems/win32/miktex/tm/packages/next/miktex-zzdb1-2.9.tar.lzma -2021/09/19 | 240950 | systems/win32/miktex/tm/packages/miktex-zzdb1-2.9.tar.lzma -2021/09/19 | 23903 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-x64-2.9.tar.lzma 2021/09/19 | 2341 | support/light-latex-make/llmk.1 -2021/09/19 | 23364 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-x64-2.9.tar.lzma -2021/09/19 | 2312048 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.xz -2021/09/19 | 22584 | systems/texlive/tlnet/archive/pdfextra.r60542.tar.xz -2021/09/19 | 22048 | systems/win32/miktex/tm/packages/next/miktex-fribidixetex-bin-2.9.tar.lzma -2021/09/19 | 215248 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-x64-2.9.tar.lzma -2021/09/19 | 21225 | systems/win32/miktex/tm/packages/next/miktex-devnag-bin-2.9.tar.lzma -2021/09/19 | 20875499 | systems/texlive/tlnet/install-tl-windows.exe -2021/09/19 | 208047 | systems/win32/miktex/tm/packages/next/miktex-pmx-bin-2.9.tar.lzma -2021/09/19 | 206603 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-x64-2.9.tar.lzma -2021/09/19 | 202797 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-x64-2.9.tar.lzma -2021/09/19 | 20138 | systems/win32/miktex/tm/packages/next/miktex-popt-bin-2.9.tar.lzma -2021/09/19 | 2009906 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-x64-2.9.tar.lzma +2021/09/19 | 213 | indexing/makeindexk/tests/pprecA.idx +2021/09/19 | 207 | indexing/makeindexk/tests/pprecB.idx 2021/09/19 | 20067 | macros/luatex/generic/penlight/penlight.pdf -2021/09/19 | 199732 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-2.9.tar.lzma -2021/09/19 | 198171 | systems/win32/miktex/tm/packages/next/miktex-pixman-bin-2.9.tar.lzma -2021/09/19 | 196871 | systems/win32/miktex/tm/packages/next/miktex-metafont-bin-2.9.tar.lzma -2021/09/19 | 196740 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-x64-2.9.tar.lzma -2021/09/19 | 195636 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-x64-2.9.tar.lzma -2021/09/19 | 194383 | systems/win32/miktex/tm/packages/next/miktex-omegaware-bin-2.9.tar.lzma +2021/09/19 | 1944 | indexing/makeindexk/tests/makeindex.test 2021/09/19 | 1939872 | systems/texlive/tlnet/archive/texlive-en.doc.r60536.tar.xz 2021/09/19 | 190612 | systems/texlive/tlnet/archive/luatexja.r60541.tar.xz 2021/09/19 | 1869 | info/dtk-bibliography/dtk-authoryear.bbx -2021/09/19 | 18176 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-x64-2.9.tar.lzma -2021/09/19 | 180119 | systems/win32/miktex/tm/packages/next/miktex-mpfr-bin-x64-2.9.tar.lzma -2021/09/19 | 180009 | systems/win32/miktex/tm/packages/next/miktex-curl-bin-2.9.tar.lzma +2021/09/19 | 182 | indexing/makeindexk/tests/pprec0.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec4.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec3.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec2.ist +2021/09/19 | 179 | indexing/makeindexk/tests/pprec1.ist 2021/09/19 | 179998 | support/light-latex-make.zip -2021/09/19 | 17980 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-x64-2.9.tar.lzma -2021/09/19 | 178353 | systems/win32/miktex/tm/packages/next/miktex-mo-bin-2.9.tar.lzma 2021/09/19 | 178108 | systems/texlive/tlnet/archive/exesheet.doc.r60537.tar.xz +2021/09/19 | 17507 | indexing/makeindexk/scanid.c 2021/09/19 | 17488 | systems/texlive/tlnet/archive/expkv-def.source.r60538.tar.xz -2021/09/19 | 1713894 | systems/win32/miktex/tm/packages/next/miktex-luatex-bin-2.9.tar.lzma -2021/09/19 | 169241 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-x64-2.9.tar.lzma -2021/09/19 | 16885163 | systems/texlive/tlnet/tlpkg/texlive.tlpdb -2021/09/19 | 16413 | systems/win32/miktex/tm/packages/next/miktex-tex2xindy-bin-2.9.tar.lzma -2021/09/19 | 16357 | systems/win32/miktex/tm/packages/next/miktex-kpathsea-bin-2.9.tar.lzma 2021/09/19 | 16324 | systems/texlive/tlnet/archive/exesheet.source.r60537.tar.xz 2021/09/19 | 1618 | macros/luatex/generic/luakeys/luakeys-debug.tex -2021/09/19 | 159579 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-x64-2.9.tar.lzma 2021/09/19 | 159022 | macros/luatex/generic/luakeys.zip 2021/09/19 | 1550 | macros/luatex/generic/penlight/penlight.sty 2021/09/19 | 1548 | systems/texlive/tlnet/archive/clicks.r60539.tar.xz -2021/09/19 | 154806 | systems/win32/miktex/tm/packages/next/miktex-tex-bin-2.9.tar.lzma -2021/09/19 | 154425 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-x64-2.9.tar.lzma -2021/09/19 | 153 | systems/texlive/tlnet/install-tl-windows.exe.sha512 2021/09/19 | 153582 | macros/luatex/generic/luakeys/luakeys.pdf -2021/09/19 | 152 | systems/texlive/tlnet/install-tl-unx.tar.gz.sha512 2021/09/19 | 152964 | macros/luatex/generic/penlight.zip 2021/09/19 | 152528 | macros/latex/contrib/tiscreen.zip -2021/09/19 | 147372 | systems/win32/miktex/tm/packages/next/miktex-hunspell-bin-2.9.tar.lzma +2021/09/19 | 15087 | indexing/makeindexk/scanst.c 2021/09/19 | 14658 | macros/luatex/generic/luakeys/luakeys.lua -2021/09/19 | 1464203 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-x64-2.9.tar.lzma -2021/09/19 | 145 | systems/texlive/tlnet/install-tl.zip.sha512 -2021/09/19 | 144 | systems/texlive/tlnet/tlpkg/texlive.tlpdb.sha512 +2021/09/19 | 14627 | indexing/makeindexk/mkind.h 2021/09/19 | 143726 | language/korean/pmhanguljamo/doc/munjangganghwa.jpg -2021/09/19 | 14349 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-x64-2.9.tar.lzma 2021/09/19 | 1433 | support/light-latex-make/llmk-logo-code.tex -2021/09/19 | 1421867 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-x64-2.9.tar.lzma 2021/09/19 | 13750 | language/korean/pmhanguljamo/tex/pmhanguljamo.sty -2021/09/19 | 136819 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-x64-2.9.tar.lzma -2021/09/19 | 136816 | systems/win32/miktex/tm/packages/next/miktex-fontconfig-bin-2.9.tar.lzma -2021/09/19 | 1357977 | systems/win32/miktex/tm/packages/next/miktex-zzdb2-2.9.tar.lzma -2021/09/19 | 1356796 | systems/win32/miktex/tm/packages/miktex-zzdb2-2.9.tar.lzma 2021/09/19 | 13465 | macros/luatex/generic/luakeys/luakeys.tex -2021/09/19 | 13464 | systems/win32/miktex/tm/packages/next/miktex-zzip-bin-2.9.tar.lzma -2021/09/19 | 1340929 | systems/win32/miktex/tm/packages/next/miktex-runtime-bin-2.9.tar.lzma -2021/09/19 | 133864 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-x64-2.9.tar.lzma 2021/09/19 | 1319 | language/korean/pmhanguljamo/README.md -2021/09/19 | 1301194 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-x64-2.9.tar.lzma 2021/09/19 | 1300 | macros/luatex/generic/penlight/README.md -2021/09/19 | 1291300 | systems/win32/miktex/tm/packages/next/miktex-dvisvgm-bin-2.9.tar.lzma 2021/09/19 | 128727 | language/korean/pmhanguljamo/doc/pmhanguljamo-doc.pdf 2021/09/19 | 12851 | language/korean/pmhanguljamo/tex/pmhanguljamo-rrk.sty 2021/09/19 | 1271 | macros/luatex/generic/luakeys/README.md -2021/09/19 | 1261692 | systems/win32/miktex/tm/packages/miktex-zzdb3-2.9.tar.lzma -2021/09/19 | 1260116 | systems/win32/miktex/tm/packages/next/miktex-zzdb3-2.9.tar.lzma -2021/09/19 | 124282 | systems/win32/miktex/tm/packages/next/miktex-mktex-bin-2.9.tar.lzma -2021/09/19 | 119820 | systems/win32/miktex/tm/packages/next/miktex-dvips-bin-2.9.tar.lzma -2021/09/19 | 1169718 | systems/win32/miktex/tm/packages/next/miktex-poppler-bin-2.9.tar.lzma -2021/09/19 | 1153 | systems/win32/miktex/tm/packages/next/pr.ini -2021/09/19 | 115350 | systems/win32/miktex/tm/packages/next/miktex-gregorio-bin-x64-2.9.tar.lzma -2021/09/19 | 112982 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-x64-2.9.tar.lzma -2021/09/19 | 112086 | systems/win32/miktex/tm/packages/next/miktex-gd-bin-x64-2.9.tar.lzma +2021/09/19 | 1169 | indexing/makeindexk/tests/range2.ind 2021/09/19 | 1091 | support/light-latex-make/LICENSE -2021/09/19 | 109032 | systems/win32/miktex/tm/packages/next/miktex-jpeg-bin-x64-2.9.tar.lzma -2021/09/19 | 108292 | systems/texlive/tlnet/archive/texlive-scripts.r60532.tar.xz -2021/09/19 | 1077990 | systems/win32/miktex/tm/packages/next/miktex-asymptote-bin-x64-2.9.tar.lzma -2021/09/19 | 105222 | systems/win32/miktex/tm/packages/next/miktex-texware-bin-x64-2.9.tar.lzma -2021/09/19 | 103400 | systems/win32/miktex/tm/packages/next/miktex-lua53-bin-x64-2.9.tar.lzma -2021/09/19 | 103205 | systems/win32/miktex/tm/packages/next/miktex-mfware-bin-x64-2.9.tar.lzma -2021/09/19 | 100624 | systems/win32/miktex/tm/packages/next/miktex-epstopdf-bin-2.9.tar.lzma +2021/09/19 | 1077 | indexing/makeindexk/tests/range3.ind +2021/09/19 | 1077 | indexing/makeindexk/tests/range1.ind 2021/09/18 | 9765 | macros/luatex/generic/luatexja/src/addons/luatexja-ruby.sty 2021/09/18 | 9730 | systems/win32/miktex/tm/packages/luaxml__source.tar.lzma 2021/09/18 | 968940 | systems/win32/miktex/tm/packages/latexindent__doc.tar.lzma @@ -283,13 +854,12 @@ 2021/09/18 | 72763 | systems/win32/miktex/tm/packages/lua-uca.tar.lzma 2021/09/18 | 7234446 | systems/win32/miktex/tm/packages/latex2nemeth.tar.lzma 2021/09/18 | 7234364 | systems/texlive/tlnet/archive/latex2nemeth.r60528.tar.xz -2021/09/18 | 714993 | macros/luatex/optex/pdfextra.zip +2021/09/18 | 714993 | macros/luatex/generic/pdfextra.zip 2021/09/18 | 7026 | macros/luatex/generic/luatexja/src/ltj-pretreat.lua 2021/09/18 | 702212 | systems/texlive/tlnet/archive/njuthesis.doc.r60529.tar.xz 2021/09/18 | 694840 | macros/luatex/generic/luatexja/doc/luatexja-en.pdf 2021/09/18 | 69366 | macros/luatex/generic/luatexja/doc/ltjltxdoc.pdf 2021/09/18 | 6891 | macros/luatex/generic/luatexja/src/addons/luatexja-otf.sty -2021/09/18 | 6845 | systems/texlive/tlnet/tlpkg/installer/ctan-mirrors.pl 2021/09/18 | 68418 | systems/win32/miktex/tm/packages/njuthesis.tar.lzma 2021/09/18 | 6822 | systems/win32/miktex/tm/packages/pst-tools.tar.lzma 2021/09/18 | 6768 | systems/win32/miktex/tm/packages/mindflow__source.tar.lzma @@ -384,7 +954,6 @@ 2021/09/18 | 260709 | macros/latex/contrib/clicks.zip 2021/09/18 | 2601 | macros/luatex/generic/luatexja/src/jfm-banjiao.lua 2021/09/18 | 2586 | macros/luatex/generic/luatexja/src/jfm-kaiming.lua -2021/09/18 | 258472 | systems/win32/miktex/tm/packages/clicks__doc.tar.lzma 2021/09/18 | 2575 | macros/luatex/generic/luatexja/src/jfm-quanjiao.lua 2021/09/18 | 257190 | macros/latex/contrib/clicks/clicks.pdf 2021/09/18 | 2374 | macros/luatex/generic/luatexja/src/patches/lltjp-unicode-math.sty @@ -404,7 +973,6 @@ 2021/09/18 | 2057 | macros/luatex/generic/luatexja/src/patches/lltjp-microtype.sty 2021/09/18 | 2052 | systems/win32/miktex/tm/packages/ffcode.tar.lzma 2021/09/18 | 2037095 | systems/win32/miktex/tm/packages/siunitx__doc.tar.lzma -2021/09/18 | 2033 | systems/win32/miktex/tm/packages/clicks__source.tar.lzma 2021/09/18 | 20106 | systems/win32/miktex/tm/packages/njuthesis__source.tar.lzma 2021/09/18 | 200 | macros/luatex/generic/luatexja/src/jfm-prop.lua 2021/09/18 | 200880 | macros/latex/contrib/exesheet.zip @@ -426,7 +994,6 @@ 2021/09/18 | 1788905 | systems/win32/miktex/tm/packages/nicematrix__doc.tar.lzma 2021/09/18 | 177581 | macros/luatex/generic/luatexja/src/ltjclasses.dtx 2021/09/18 | 1765 | macros/luatex/generic/luatexja/src/ltj-inputbuf.lua -2021/09/18 | 1740 | systems/win32/miktex/tm/packages/clicks.tar.lzma 2021/09/18 | 166557 | macros/luatex/generic/luatexja/doc/lltjp-geometry.pdf 2021/09/18 | 165264 | systems/texlive/tlnet/archive/latex2nemeth.doc.r60528.tar.xz 2021/09/18 | 1637 | macros/luatex/generic/luatexja/src/addons/luatexja-fontspec.sty @@ -470,34 +1037,34 @@ 2021/09/18 | 107238 | systems/win32/miktex/tm/packages/siunitx__source.tar.lzma 2021/09/18 | 1055686 | systems/win32/miktex/tm/packages/zref-check__doc.tar.lzma 2021/09/18 | 1054416 | systems/texlive/tlnet/archive/zref-check.doc.r60527.tar.xz -2021/09/17 | 9600 | macros/luatex/optex/pdfextra/examples/pdfextra-example.tex -2021/09/17 | 9358 | macros/luatex/optex/pdfextra/pdfextra.tex +2021/09/17 | 9600 | macros/luatex/generic/pdfextra/examples/pdfextra-example.tex +2021/09/17 | 9358 | macros/luatex/generic/pdfextra/pdfextra.tex 2021/09/17 | 84739 | macros/unicodetex/latex/njuthesis/figure/njuname-large.pdf 2021/09/17 | 75268 | systems/texlive/tlnet/archive/lua-uca.doc.r60523.tar.xz 2021/09/17 | 7493000 | support/latex2nemeth.zip 2021/09/17 | 745 | macros/unicodetex/latex/njuthesis/README.md 2021/09/17 | 74132 | systems/texlive/tlnet/archive/lua-uca.r60523.tar.xz 2021/09/17 | 725848 | macros/unicodetex/latex/njuthesis.zip -2021/09/17 | 7235 | macros/luatex/optex/pdfextra/examples/pdfextra-example-latex.tex +2021/09/17 | 7235 | macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex 2021/09/17 | 72250 | macros/unicodetex/latex/njuthesis/njuthesis.dtx -2021/09/17 | 69 | macros/luatex/optex/pdfextra/pdfextra.sty -2021/09/17 | 68819 | macros/luatex/optex/pdfextra/pdfextra.opm +2021/09/17 | 69 | macros/luatex/generic/pdfextra/pdfextra.sty +2021/09/17 | 68819 | macros/luatex/generic/pdfextra/pdfextra.opm 2021/09/17 | 67528 | systems/texlive/tlnet/archive/latexindent.r60522.tar.xz -2021/09/17 | 662 | macros/luatex/optex/pdfextra/LICENSE +2021/09/17 | 662 | macros/luatex/generic/pdfextra/LICENSE 2021/09/17 | 6416 | systems/texlive/tlnet/archive/mindflow.source.r60520.tar.xz 2021/09/17 | 638180 | macros/unicodetex/latex/njuthesis/njuthesis.pdf -2021/09/17 | 58592 | macros/luatex/optex/pdfextra/examples/pdfextra-example-part.prc +2021/09/17 | 58592 | macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc 2021/09/17 | 530275 | macros/latex/contrib/readarray/readarray.pdf 2021/09/17 | 41408 | macros/latex/contrib/readarray/readarray.tex 2021/09/17 | 4060720 | systems/texlive/tlnet/archive/latexindent.win32.r60522.tar.xz 2021/09/17 | 3938 | macros/unicodetex/latex/njuthesis/README_ZH_CN.md -2021/09/17 | 385350 | macros/luatex/optex/pdfextra/examples/pdfextra-example.pdf -2021/09/17 | 33962 | macros/luatex/optex/pdfextra/pdfextra-doc.tex +2021/09/17 | 385350 | macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf +2021/09/17 | 33962 | macros/luatex/generic/pdfextra/pdfextra-doc.tex 2021/09/17 | 3356 | graphics/pstricks/contrib/luapstricks/README.md 2021/09/17 | 2704 | systems/texlive/tlnet/archive/mindflow.r60520.tar.xz 2021/09/17 | 26832 | systems/texlive/tlnet/archive/luamplib.source.r60521.tar.xz 2021/09/17 | 25311 | graphics/pstricks/contrib/luapstricks.zip -2021/09/17 | 245952 | macros/luatex/optex/pdfextra/pdfextra-doc.pdf +2021/09/17 | 245952 | macros/luatex/generic/pdfextra/pdfextra-doc.pdf 2021/09/17 | 21856 | macros/latex/contrib/readarray/readarray.sty 2021/09/17 | 21738 | macros/unicodetex/latex/njuthesis/figure/njulogo.pdf 2021/09/17 | 213608 | systems/texlive/tlnet/archive/mindflow.doc.r60520.tar.xz @@ -510,9 +1077,10 @@ 2021/09/17 | 1183078 | macros/latex/contrib/zref-check.zip 2021/09/17 | 117847490 | macros/context/latest/cont-tmf.zip 2021/09/17 | 1132 | systems/texlive/tlnet/archive/lua-uca.source.r60523.tar.xz -2021/09/17 | 1101 | macros/luatex/optex/pdfextra/README.md +2021/09/17 | 1101 | macros/luatex/generic/pdfextra/README.md 2021/09/17 | 1084236 | systems/texlive/tlnet/archive/latexindent.doc.r60522.tar.xz 2021/09/16 | 9809944 | support/latexindent/latexindent.exe +2021/09/16 | 97963 | graphics/mcf2graph/mcf_data_base.mcf 2021/09/16 | 9537 | support/latexindent/LatexIndent/IfElseFi.pm 2021/09/16 | 93702 | macros/luatex/generic/luamplib/luamplib.dtx 2021/09/16 | 9243 | support/latexindent/LatexIndent/Lines.pm @@ -793,110 +1361,3 @@ 2021/09/14 | 10521 | graphics/pstricks/contrib/pst-mirror/doc/createEPS/xc.eps 2021/09/14 | 1011404 | systems/texlive/tlnet/archive/libertinust1math.r60495.tar.xz 2021/09/14 | 10106 | macros/latex/contrib/siunitx/siunitx-abbreviation.dtx -2021/09/13 | 9762 | systems/win32/miktex/tm/packages/mcexam__source.tar.lzma -2021/09/13 | 966 | graphics/pstricks/contrib/pst-tools/README -2021/09/13 | 9654 | graphics/pstricks/contrib/pst-tools/tex/pst-tools.tex -2021/09/13 | 888455 | systems/win32/miktex/tm/packages/hecthese__doc.tar.lzma -2021/09/13 | 87293 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__source.tar.lzma -2021/09/13 | 8399446 | fonts/newtx.zip -2021/09/13 | 83022264 | systems/texlive/tlcontrib/archive/notocondensed.r349.tar.xz -2021/09/13 | 8227 | graphics/pstricks/contrib/pst-tools/dvips/pst-tools.pro -2021/09/13 | 77881217 | systems/win32/miktex/tm/packages/notocondensed.tar.lzma -2021/09/13 | 7490 | macros/latex/contrib/huawei/huawei.tex -2021/09/13 | 738340 | systems/texlive/tlnet/archive/pst-vectorian.doc.r60488.tar.xz -2021/09/13 | 7340726 | systems/win32/miktex/tm/packages/pstricks__doc.tar.lzma -2021/09/13 | 72858 | systems/win32/miktex/tm/packages/pstricks.tar.lzma -2021/09/13 | 6993 | systems/win32/miktex/tm/packages/uwa-letterhead__source.tar.lzma -2021/09/13 | 6246 | systems/win32/miktex/tm/packages/bithesis.tar.lzma -2021/09/13 | 6076 | systems/win32/miktex/tm/packages/libertinust1math__source.tar.lzma -2021/09/13 | 600346 | macros/latex/contrib/huawei.zip -2021/09/13 | 597848 | systems/texlive/tlnet/archive/easybook.doc.r60484.tar.xz -2021/09/13 | 5955 | systems/win32/miktex/tm/packages/ejpecp.tar.lzma -2021/09/13 | 58 | systems/mac/mactex/MacTeXtras-20210913.zip.md5 -2021/09/13 | 583561 | systems/win32/miktex/tm/packages/beamertheme-trigon__source.tar.lzma -2021/09/13 | 5820 | systems/win32/miktex/tm/packages/beamertheme-trigon.tar.lzma -2021/09/13 | 580775 | systems/win32/miktex/tm/packages/easybook__doc.tar.lzma -2021/09/13 | 57457 | systems/win32/miktex/tm/packages/uwa-letterhead__doc.tar.lzma -2021/09/13 | 546776 | systems/texlive/tlnet/archive/pst-vectorian.r60488.tar.xz -2021/09/13 | 54052 | systems/win32/miktex/tm/packages/xetexko.tar.lzma -2021/09/13 | 5119 | macros/latex/contrib/crumbs/crumbs.tex -2021/09/13 | 48 | systems/texlive/tlcontrib/tlpkg/texlive.tlpdb.md5 -2021/09/13 | 484 | systems/texlive/tlcontrib/tlpkg/texlive.tlpdb.sha512.asc -2021/09/13 | 450735592 | systems/mac/mactex/MacTeXtras-20210913.zip -2021/09/13 | 4447 | macros/latex/contrib/crumbs/crumbs.sty -2021/09/13 | 437591 | systems/win32/miktex/tm/packages/newpx__doc.tar.lzma -2021/09/13 | 433458 | systems/win32/miktex/tm/packages/xcharter__doc.tar.lzma -2021/09/13 | 432 | graphics/pstricks/contrib/pst-tools/latex/pst-tools.sty -2021/09/13 | 4328 | systems/texlive/tlnet/archive/pst-calendar.r60480.tar.xz -2021/09/13 | 42 | macros/latex/contrib/crumbs/DEPENDS.txt -2021/09/13 | 42377 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015.tar.lzma -2021/09/13 | 4234 | macros/latex/contrib/ffcode/ffcode.tex -2021/09/13 | 419 | macros/latex/contrib/huawei/DEPENDS.txt -2021/09/13 | 4174 | systems/win32/miktex/tm/packages/hecthese.tar.lzma -2021/09/13 | 40 | macros/latex/contrib/ffcode/DEPENDS.txt -2021/09/13 | 38200 | systems/mac/mactex/ExtrasFolder.pdf -2021/09/13 | 38009 | systems/win32/miktex/tm/packages/easybook__source.tar.lzma -2021/09/13 | 3756112 | systems/win32/miktex/tm/packages/media9__doc.tar.lzma -2021/09/13 | 3528 | systems/win32/miktex/tm/packages/uwa-letterhead.tar.lzma -2021/09/13 | 349862 | macros/latex/contrib/crumbs.zip -2021/09/13 | 348272 | systems/win32/miktex/tm/packages/notocondensed__doc.tar.lzma -2021/09/13 | 345876 | systems/texlive/tlcontrib/archive/notocondensed.doc.r349.tar.xz -2021/09/13 | 345354 | macros/latex/contrib/crumbs/crumbs.pdf -2021/09/13 | 342782 | systems/win32/miktex/tm/packages/noto__doc.tar.lzma -2021/09/13 | 340436 | systems/texlive/tlnet/archive/noto.doc.r60482.tar.xz -2021/09/13 | 3329 | systems/win32/miktex/tm/packages/uwa-colours__source.tar.lzma -2021/09/13 | 332659 | macros/latex/contrib/huawei/huawei.pdf -2021/09/13 | 3280 | systems/win32/miktex/tm/packages/beamertheme-trigon__doc.tar.lzma -2021/09/13 | 3247630 | systems/texlive/tlnet/tlpkg/installer/wget/wget.exe -2021/09/13 | 31139 | systems/win32/miktex/tm/packages/hecthese__source.tar.lzma -2021/09/13 | 3018 | macros/latex/contrib/ffcode/ffcode.sty -2021/09/13 | 266763 | systems/win32/miktex/tm/packages/ejpecp__doc.tar.lzma -2021/09/13 | 26607576 | systems/texlive/tlnet/archive/noto.r60482.tar.xz -2021/09/13 | 26433751 | systems/win32/miktex/tm/packages/noto.tar.lzma -2021/09/13 | 26151 | systems/win32/miktex/tm/packages/ejpecp__source.tar.lzma -2021/09/13 | 258814 | systems/win32/miktex/tm/packages/xetexko__doc.tar.lzma -2021/09/13 | 253724 | macros/latex/contrib/huawei/huawei-cover-picture.pdf -2021/09/13 | 252712 | systems/win32/miktex/tm/packages/bithesis__doc.tar.lzma -2021/09/13 | 232948 | systems/texlive/tlnet/archive/mcexam.doc.r60481.tar.xz -2021/09/13 | 22866 | systems/win32/miktex/tm/packages/miktex-misc.tar.lzma -2021/09/13 | 225810 | systems/win32/miktex/tm/packages/mcexam__doc.tar.lzma -2021/09/13 | 2176954 | systems/win32/miktex/tm/packages/newpx.tar.lzma -2021/09/13 | 2114 | macros/latex/contrib/huawei/samples/huawei-cfp.tex -2021/09/13 | 2108 | macros/latex/contrib/huawei/samples/huawei-charter.tex -2021/09/13 | 2056168 | systems/win32/miktex/tm/packages/xcharter.tar.lzma -2021/09/13 | 199008 | systems/win32/miktex/tm/packages/pstricks__source.tar.lzma -2021/09/13 | 190849 | macros/latex/contrib/ffcode.zip -2021/09/13 | 1900655 | systems/win32/miktex/tm/packages/media9.tar.lzma -2021/09/13 | 186641 | macros/latex/contrib/ffcode/ffcode.pdf -2021/09/13 | 17628 | macros/latex/contrib/huawei/huawei.cls -2021/09/13 | 1730145 | systems/texlive/tlcontrib/tlpkg/texlive.tlpdb -2021/09/13 | 17232 | systems/texlive/tlnet/archive/easybook.source.r60484.tar.xz -2021/09/13 | 17196 | systems/texlive/tlnet/archive/easybook.r60484.tar.xz -2021/09/13 | 1711 | systems/mac/mactex/Licenses.txt -2021/09/13 | 1636334 | systems/win32/miktex/tm/packages/csvsimple__doc.tar.lzma -2021/09/13 | 16141 | systems/win32/miktex/tm/packages/easybook.tar.lzma -2021/09/13 | 161069 | graphics/pstricks/contrib/pst-tools.zip -2021/09/13 | 1580 | systems/texlive/tlnet/archive/collection-publishers.r60486.tar.xz -2021/09/13 | 1552056 | systems/win32/miktex/tm/packages/circuitikz__doc.tar.lzma -2021/09/13 | 151064 | graphics/pstricks/contrib/pst-tools/doc/pst-tools-doc.pdf -2021/09/13 | 1497 | macros/latex/contrib/huawei/README.md -2021/09/13 | 149225 | systems/win32/miktex/tm/packages/circuitikz.tar.lzma -2021/09/13 | 1480 | systems/win32/miktex/tm/packages/uwa-colours.tar.lzma -2021/09/13 | 14721 | systems/win32/miktex/tm/packages/newpx__source.tar.lzma -2021/09/13 | 1461 | macros/latex/contrib/huawei/samples/huawei-main.bib -2021/09/13 | 1450371 | systems/win32/miktex/tm/packages/libertinust1math__doc.tar.lzma -2021/09/13 | 144 | systems/texlive/tlcontrib/tlpkg/texlive.tlpdb.sha512 -2021/09/13 | 142076 | systems/texlive/tlnet/archive/pst-calendar.doc.r60480.tar.xz -2021/09/13 | 1397 | graphics/pstricks/contrib/pst-tools/Changes -2021/09/13 | 1385596 | systems/win32/miktex/tm/packages/biblatex-gb7714-2015__doc.tar.lzma -2021/09/13 | 13087 | graphics/pstricks/contrib/pst-tools/doc/pst-tools-doc.tex -2021/09/13 | 128415 | systems/win32/miktex/tm/packages/uwa-colours__doc.tar.lzma -2021/09/13 | 1274 | macros/latex/contrib/ffcode/README.md -2021/09/13 | 12364 | systems/win32/miktex/tm/packages/bithesis__source.tar.lzma -2021/09/13 | 12167 | systems/win32/miktex/tm/packages/xetexko__source.tar.lzma -2021/09/13 | 1207 | macros/latex/contrib/crumbs/README.md -2021/09/13 | 11598 | systems/win32/miktex/tm/packages/mcexam.tar.lzma -2021/09/13 | 11440 | systems/win32/miktex/tm/packages/csvsimple.tar.lzma -2021/09/13 | 11396 | systems/texlive/tlnet/archive/mcexam.r60481.tar.xz -2021/09/13 | 112776 | systems/texlive/tlcontrib/tlpkg/texlive.tlpdb.xz -2021/09/13 | 1020392 | systems/win32/miktex/tm/packages/libertinust1math.tar.lzma diff --git a/graphics/mcf2graph/CHANGELOG b/graphics/mcf2graph/CHANGELOG index bb647d9145..4ed3c84848 100644 --- a/graphics/mcf2graph/CHANGELOG +++ b/graphics/mcf2graph/CHANGELOG @@ -1,6 +1,18 @@ ******************************************************************************* - Changelog of mcf2graph software package by Akira Yamaji 2021-09-05 + Changelog of mcf2graph software package by Akira Yamaji 2021-09-20 ******************************************************************************* +[ver. 4.72 / 2021-09-20] + -change syntax of beginfont() + keep file open 'f+' => 'v+' + enable to use default input file name + -change syntax of query() + input file name 'i:' => 'f:' + -fix bug in beginfont(),endfont + -fix bug in query() + -fix bug in expand mode + -update mcf_data_base.mcf + -update MCF manual,example + [ver. 4.71 / 2021-09-05] -add function query() for data base file -update mcf_data_base.mcf diff --git a/graphics/mcf2graph/README b/graphics/mcf2graph/README index 1fe6d2a632..aa2aee88f5 100644 --- a/graphics/mcf2graph/README +++ b/graphics/mcf2graph/README @@ -1,7 +1,7 @@ ******************************************************************************** mcf2graph : Convert Molecular Coding Format to graphics with METAFONT/METAPOST Author : Akira Yamaji - version : 4.71 2021-09-05 + version : 4.72 2021-09-20 E-mail : mcf2graph@gmail.com Located at : http://www.ctan.org/pkg/mcf2graph ******************************************************************************** @@ -26,7 +26,7 @@ make file 'mcf_man_soc-***.mps' before typeset >mpost mcf_man_soc.mf ( 7) mcf_man_soc.mf Molecular definition file for mcf_manual.tex - ( 8) mcf_manual.pdf PDF of (4) (used pdftex(LaTeX),makeindex) + ( 8) mcf_manual.pdf PDF of (6) (used pdftex(LaTeX),makeindex) ( 9) mcf_example.tex LaTeX example make file 'mcf_exa_soc-info.aux' before typeset >mpost -s ahlength=1 mcf_exa_soc.mf @@ -36,9 +36,9 @@ make file 'mcf_exa_soc-mf.aux' before typeset >mpost -s ahlength=7 mcf_exa_soc.mf (10) mcf_exa_soc.mf Metafont/Metapost souce file for mcf_example.tex - (11) mcf_example.pdf PDF of (8) typeset with pdftex(LaTeX) + (11) mcf_example.pdf PDF of (9) typeset with pdftex(LaTeX) (12) mcf_mplib_exa.tex luamplib(LuaLaTeX) example - (13) mcf_mplib_exa.pdf PDF of (11) typeset with LuaTeX(LaTeX) + (13) mcf_mplib_exa.pdf PDF of (12) typeset with LuaTeX(LaTeX) 3. How to use mcf2graph with Metapost Minimum requirement to use mcf2graph : mpost.exe,mpost.dll,mpost.mp,plain.mp @@ -48,17 +48,18 @@ ( 4) >mpost -s ahangle=11 FILENAME => output png file (1200dpi) ( 5) >mpost -s ahangle=2 FILENAME => output svg file ( 6) >mpost -s ahangle=3 FILENAME => output eps(.eps) file - ( 7) >mpost -s ahlength=1 FILENAME => output info-aux file + ( 7) >mpost -s ahlength=1 FILENAME => output information-aux file tag1:var1;tag2:var2; - ( 8) >mpost -s ahlength=2 FILENAME => output aux file + ( 8) >mpost -s ahlength=2 FILENAME => output information-aux file tag1;tag2; var1;var2; ( 9) >mpost -s ahlength=3 FILENAME => output report file (10) >mpost -s ahlength=5 FILENAME => output mol file(V2000) (11) >mpost -s ahlength=6 FILENAME => output mol file(V3000) - (12) >mpost -s ahlength=7 FILENAME => output mf-aux file - (13) >mpost -s labeloffset=1 FILENAME => use plain.mp 'label','drawarrow' - (14) >mpost -s labeloffset=2 FILENAME => atomfont="uhvr8r" + (12) >mpost -s ahlength=7 FILENAME => output metafont-aux file + (13) >mpost -s ahlength=8 FILENAME => output data-base-aux file + (14) >mpost -s labeloffset=1 FILENAME => use plain.mp 'label','drawarrow' + (15) >mpost -s labeloffset=2 FILENAME => atomfont="uhvr8r" 4. License Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/graphics/mcf2graph/mcf2graph.mf b/graphics/mcf2graph/mcf2graph.mf index ff1cb14b3d..2dfefbba64 100644 --- a/graphics/mcf2graph/mcf2graph.mf +++ b/graphics/mcf2graph/mcf2graph.mf @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf2graph ver 4.71 Copyright (c) 2013-2021 Akira Yamaji +% mcf2graph ver 4.72 Copyright (c) 2013-2021 Akira Yamaji % % Permission is hereby granted, free of charge, to any person obtaining a copy of this software % and associated documentation files (the "Software"), to deal in the Software without restriction, @@ -22,42 +22,44 @@ % This package is located at : http://www.ctan.org/pkg/mcf2graph % Suggestion or request mail to : mcf2graph@gmail.com %-------------------------------------------------------------------------------------------------- -% Set outputformat to "eps"(.mps) : mpost FILENAME -% Set output first font only : mpost -s bboxmargin=1 FILENAME -% Set outputformat to "png" : mpost -s ahangle=1 FILENAME -% Set outputformat to "svg" : mpost -s ahangle=2 FILENAME -% Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME -% Set output aux file (tag1:var1;tag2:var2) : mpost -s ahlength=1 FILENAME -% Set output aux file (tag1;tag2 var1;var2) : mpost -s ahlength=2 FILENAME -% Set output report : mpost -s ahlength=3 FILENAME -% Set output MOL(V2000) : mpost -s ahlength=5 FILENAME -% Set output MOL(V3000) : mpost -s ahlength=6 FILENAME -% Set output aux file for metafont : mpost -s ahlength=7 FILENAME -% Set to use plain.mp (label,arrow) : mpost -s labeloffset=1 FILENAME -% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME +% Set outputformat to "eps"(.mps) : mpost FILENAME +% Set output first font only : mpost -s bboxmargin=1 FILENAME +% Set outputformat to "png" : mpost -s ahangle=1 FILENAME +% Set outputformat to "svg" : mpost -s ahangle=2 FILENAME +% Set outputformat to "eps" (.eps) : mpost -s ahangle=3 FILENAME +% Set output information aux file (tag1:var1;tag2:var2) : mpost -s ahlength=1 FILENAME +% Set output information aux file (tag1;tag2 var1;var2) : mpost -s ahlength=2 FILENAME +% Set output report : mpost -s ahlength=3 FILENAME +% Set output MOL file (V2000) : mpost -s ahlength=5 FILENAME +% Set output MOL file (V3000) : mpost -s ahlength=6 FILENAME +% Set output aux metafont file : mpost -s ahlength=7 FILENAME +% Set output aux data-base file : mpost -s ahlength=8 FILENAME +% Set to use plain.mp (label,arrow) : mpost -s labeloffset=1 FILENAME +% Set to use plain.mp (label,arrow,atom) : mpost -s labeloffset=2 FILENAME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% tracingstats:=1; -message "* This is mcf2graph ver 4.71 2021.09.05"; +message "* This is mcf2graph ver 4.72 2021.09.20"; %------------------------------------------------------------------------------------------------- newinternal cntA,cntB,cntM,minX,minY,maxX,maxY,sftX,sftY,com,par,envT,envB,lenT,lineT,angT,rotT, crR,nA,nB,nC,nD,nE,nF,nS,nL,nR,nU,nP,xpos,ypos,markA,markB,saveA,saveB,bondL; numeric save_num[],comD[][],parD[][],adrD[][],cntD[],tbl_atom[],tbl_group[][],f_char[], tbl_atom_wt[],tbl_atom_mi[],tbl_char_wd[],tbl_char_ht[],addA[],add_rot[],chargeA[], com_group[][],par_group[][],cnt_group[],colorA[],colorB[],sumA[],bondC[],hideH[],lineB[], - sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[],cmm_adr[],mc_indent[]; + sB[],eB[],angB[],angA[],lenB[],angX[],numS[],wdM[],htM[],wdA[],dxA[], + cmm_adr[],mc_indent[],at_semicol[]; string save_str[],tbl_atom_str[],strD[],tag[],file_name_output,blank_str,aux_delimiter,atomfont, - default_data_file,default_temp_file,mpfont,s_tag,s_var,cal_FM,cal_MW,cal_MI, - inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW; + temps,default_data_file,default_temp_file,mpfont,tag_s,var_s,cal_FM,cal_MW,cal_MI, + inf_Cat,inf_NO,inf_EN,inf_JN,inf_FM,inf_CAS,inf_USE,inf_EXA,inf_EXB,inf_MW; pair save_pair[],posA[],posM[][],msize,mposition,fsize,fmargin,save_mposition,posBs,posBe,dum; picture mol_stru[],atom_picture,save_picture,temp_picture; path arrow_path,dottedline_path,line_path,arrow_head; %------------------------------------------------------------------------------------------------- char_num:=str_cnt:=tbl_cnt:=proc_end:=mangle:=sw_expand:=sw_frame:=sw_trimming:=sw_ext_all:=0; -sw_abbreviate:=sw_arrow_emu:=sw_output:=sw_numbering:=0; numbering_start:=1; numbering_end:=4095; +sw_abbreviate:=sw_arrow_emu:=sw_numbering:=sw_output:=0; numbering_start:=1; numbering_end:=4095; %------------------------------------------------------------------------------------------------- aux_max:=max_inf_num:=20; aux_delimiter:=";"; blank_str:= " "; dum:=(-4091,0); for i=1 upto aux_max: tag[i]:=""; endfor -Font:=1; Temp:=2; Info:=4; Table:=8; Report:=16; MOL2k:=32; MOL3k:=64; Mfont:=128; Mcode:=256; +Font:=1; Mfont:=2; Mcode:=4; Temp:=8; Info:=16; Table:=32; Report:=64; MOL2k:=128; MOL3k:=256; Atom:=8; Bond:=16; Brock:=32; Inverse:=64; Group:=32; Mol:=64; Outside:=1; Inside:=2; Bothside:=Outside+Inside; %------------------------------------------------------------------------------------------------- @@ -110,11 +112,11 @@ if (known green)and(known ahlength): if ahlength=1: sw_output:=Info; % output aux file elseif ahlength=2: sw_output:=Info+Table; % output aux file(Table mode) elseif ahlength=3: sw_output:=Report; % output report - elseif ahlength=4: sw_output:=0; % *default + elseif ahlength=4: sw_output:=Font; % *default elseif ahlength=5: sw_output:=MOL2k; % output MOL(V2000) elseif ahlength=6: sw_output:=MOL3k; % output MOL(V3000) elseif ahlength=7: sw_output:=Mfont; % output aux mf - elseif ahlength=8: sw_output:=Mcode; % output aux mc + elseif ahlength=8: sw_output:=Mcode+Info; % output aux data-base fi %-- default bboxmargin=2------------------------------------------------------------------ if bboxmargin=1: proc_end:=1; fi % output first font only @@ -135,6 +137,31 @@ if (known green)and(known ahlength): if atomfont="": atomfont:="draw"; fi % default atom font if defaultfont="": defaultfont:="draw"; fi % default label font %----------------------------------------------------------------------------------------- + if sw_output>=Info: + if bboxmargin=1: message "* output first font only"; fi + message "* jobname="&jobname; + message "* numbersystem="&numbersystem; + if (ahlength=1)or(ahlength=2): + message "* output information file"; + message "* file name="&jobname&"-info.aux"; + message "* info delimiter="&aux_delimiter; + ef ahlength=3: message "* output report file"; + message "* file name="&jobname&"-report.txt"; + ef ahlength=5: message "* output MOL file(V2000)"; + message "* "&jobname&"-nnn-"&"inf_EN"&".mol"; + ef ahlength=6: message "* output MOL file(V3000)"; + message "* "&jobname&"-nnn-"&"inf_EN"&".mol"; + ef ahlength=7: message "* output metafont file"; + message "* mf file name="&jobname&"-mf.aux"; + ef ahlength=8: message "* output data-base file"; + message "* data-base file name="&jobname&"-data.aux"; + fi + message "* outputformat="&outputformat; + if outputformat="png": message "* hppp="&decimal(hppp)&"/vppp="&decimal(vppp); fi + message "* outputtemplate="&outputtemplate; + message "* atomfont="&atomfont; + message "* defaultfont="&defaultfont; + fi else: f_MP:=0; def image = image_emu enddef; @@ -149,34 +176,11 @@ else: def color = transform enddef; atomfont:="draw"; defaultfont:="draw"; + sw_output:=Font; mode_setup; fi clearit; %-------------------------------------------------------------------------------------------------- -if f_MP=1: - if bboxmargin=1: message "* output first font only"; fi - message "* jobname="&jobname; - message "* numbersystem="&numbersystem; - if (ahlength=1)or(ahlength=2): - message "* output info file"; - message "* file name="&jobname&"-info.aux"; - message "* info delimiter="&aux_delimiter; - ef ahlength=3: message "* output report file"; - message "* file name="&jobname&"-report.txt"; - ef ahlength=5: message "* output MOL file(V2000)"; - message "* "&jobname&"-nnn-"&"inf_EN"&".mol"; - ef ahlength=6: message "* output MOL file(V3000)"; - message "* "&jobname&"-nnn-"&"inf_EN"&".mol"; - ef ahlength=7: message "* output mf file"; - message "* mf file name="&jobname&"-mf.aux"; - fi - message "* outputformat="&outputformat; - if outputformat="png": message "* hppp="&decimal(hppp)&"/vppp="&decimal(vppp); fi - message "* outputtemplate="&outputtemplate; - message "* atomfont="&atomfont; - message "* defaultfont="&defaultfont; -fi -%-------------------------------------------------------------------------------------------------- ?3:=?20:=Ph:=Ph1:=Ph2:=hz:=0; vt:=1; ratio_chain_ring:=0.66; ratio_atom_bond:=0.36; ratio_thickness_bond:=0.015; ratio_thickness_char:=0.1; ratio_char_bond:=1.5; ratio_bondgap_bond:=0.15; @@ -254,43 +258,47 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def beginfont(text s)= begingroup - save ',f_beginchar,f_ext,blen,ext,add,ang_br,n_fw,n_bw,at_colon,at_semicol,temps,t_tag, + save ',f_beginchar,f_ext,blen,ext,add,ang_br,fw_n,bw_n,at_colon,temp_tag, mc,info,file_name_input,bond_cnt,warning_cnt,hideH_cnt,bondC,filter_s; - numeric at_semicol[]; - string info[],mc[],mc,temps,file_name_input,t_tag,filter_s; + string info[],mc[],mc,file_name_input,temp_tag,filter_s; %------------------------------------------------------------------------------------------------ def ext=ext_to_font enddef; def add=add_to_molecule enddef; def '=read_ud enddef; %------------------------------------------------------------------------------------------------ - inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_USE:=inf_EXA:=inf_EXB:="-"; - mc:=t_tag:=file_name_input:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; + inf_NO:=inf_EN:=inf_JN:=inf_MW:=inf_FM:=inf_CAS:=inf_Cat:=inf_EXA:=inf_EXB:="-"; + mc:=temp_tag:=cal_MW:=cal_MI:=cal_FM:=filter_s:=""; + file_name_input:=default_data_file; %------------------------------------------------------------------------------------------------ parts_cnt:=parts_usr_start; parts_int:=parts_int_start; %------------------------------------------------------------------------------------------------ char_num:=char_num+1; store_par(parameter_list); - f_ext:=cntM:=mc_row:=inf_num:=f_EOF:=f_close:=0; - for list=s: inf_num:=inf_num+1; info[inf_num]:=list; mc[inf_num]:=""; endfor + f_ext:=cntM:=mc_row:=inf_num:=f_EOF:=0; %------------------------------------------------------------------------------------------------ - for j=1 upto inf_num: - at_colon:=scan_char(":",info[j],0,1); + for list=s: + at_colon:=scan_char(":",list,0,1); if at_colon=1: - n_fw:=scan_char(" ",info[j],1,2); - n_bw:=scan_char(" ",info[j],-1,2); + fw_n:=scan_char(" ",list,1,2); + bw_n:=scan_char(" ",list,-1,2); mc_row:=mc_row+1; - mc_indent[mc_row]:=n_fw-2; - mc[mc_row]:=substring (n_fw-1,n_bw) of info[j]; + mc_indent[mc_row]:=fw_n-2; + mc[mc_row]:=substring (fw_n-1,bw_n) of list; mc:=mc&mc[mc_row]; ef at_colon>=1: - s_tag:=substring (0,at_colon-1) of info[j]; - s_var:=substring (at_colon,length(info[j])) of info[j]; - if s_tag="f": if f_MP=1: file_name_input:=s_var&".mcf"; f_close:=1; fi - ef s_tag="f+": if f_MP=1: file_name_input:=s_var&".mcf"; fi - ef s_tag="t": if f_MP=1: t_tag:=s_var; fi - ef s_tag="v": if f_MP=1: pickup_data_unit(t_tag,s_var); fi - else: if known scantokens("inf_"&s_tag): scantokens("inf_"&s_tag):=s_var; fi + tag_s:=substring (0,at_colon-1) of list; + var_s:=substring (at_colon,length(list)) of list; + if tag_s="f": + if f_MP=1: + if scan_char(".",var_s,0,1)=0: file_name_input:=var_s&".mcf"; + else: file_name_input:=var_s; + fi + fi + ef tag_s="t": if f_MP=1: temp_tag:=var_s; fi + ef tag_s="v": if f_MP=1: pickup_data_unit(temp_tag,var_s,1); fi + ef tag_s="v+": if f_MP=1: pickup_data_unit(temp_tag,var_s,0); fi + else: if known scantokens("inf_"&tag_s): scantokens("inf_"&tag_s):=var_s; fi fi fi endfor @@ -299,88 +307,89 @@ def beginfont(text s)= enddef; %================================================================================================== def endfont= - %-------------------------------------------------------------------------------------------- if f_EOF=0: - %-------------------------------------------------------------------------------------------- - if (sw_output=0)or(scan_bit(sw_output,Font)): - if cntM>=1: - if sw_ext_all=1: ext_to_font(EXT_ALL); fi - if sw_trimming>=1: - nA:=nC:=4095; nB:=nD:=-4095; - for i=1 upto cntM: - if xpart(posM[1][i])nB: nB:=xpart(posM[2][i]); fi - if ypart(posM[1][i])nD: nD:=ypart(posM[2][i]); fi - endfor - font_wd:=nB-nA+2margin_lr; - font_ht:=nD-nC+2margin_tb; - fsize:=(font_wd,font_ht); + %-------------------------------------------------------------------------------------------- + if scan_bit(sw_output,Font): + if cntM>=1: + if sw_ext_all=1: ext_to_font(EXT_ALL); fi + if sw_trimming>=1: + nA:=nC:=4095; nB:=nD:=-4095; + for i=1 upto cntM: + if xpart(posM[1][i])nB: nB:=xpart(posM[2][i]); fi + if ypart(posM[1][i])nD: nD:=ypart(posM[2][i]); fi + endfor + font_wd:=nB-nA+2margin_lr; + font_ht:=nD-nC+2margin_tb; + fsize:=(font_wd,font_ht); + for i=1 upto cntM: + posM[0][i]:=posM[0][i]+(margin_lr-nA,margin_tb-nC); + posM[1][i]:=posM[1][i]+(margin_lr-nA,margin_tb-nC); + endfor + fi + %---------------------------------------------------------------------------------------- + if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0) + else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; chardp:=0; + if scan_bit(sw_frame,Outside): else: draw_corner((0,0),w,h,0.05bp); fi + fi + if scan_bit(sw_frame,Outside): draw_frame((0,0),w,h,thickness_frame); fi + if scan_bit(sw_frame,Inside): + draw_frame((margin_lr,margin_tb),w-2margin_lr,h-2margin_tb,thickness_frame); + fi for i=1 upto cntM: - posM[0][i]:=posM[0][i]+(margin_lr-nA,margin_tb-nC); - posM[1][i]:=posM[1][i]+(margin_lr-nA,margin_tb-nC); + addto currentpicture also mol_stru[i] shifted posM[0][i]; mol_stru[i]:=nullpicture; + if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],w[i],h[i],thickness_frame)) fi endfor + if f_ext=1: addto currentpicture also mol_stru[0]; mol_stru[0]:=nullpicture; fi + %---------------------------------------------------------------------------------------- + else: + font_wd:=xpart(fsize); font_ht:=ypart(fsize); + if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0) + else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; + fi + draw (0,h)--(0,0)--(w,0)--(w,h)--(0,h)--(w,0) wpcs thickness_frame; fi - %---------------------------------------------------------------------------------------- - if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0) - else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; chardp:=0; - if scan_bit(sw_frame,Outside): else: draw_corner((0,0),w,h,0.05bp); fi - fi - if scan_bit(sw_frame,Outside): draw_frame((0,0),w,h,thickness_frame); fi - if scan_bit(sw_frame,Inside): - draw_frame((margin_lr,margin_tb),w-2margin_lr,h-2margin_tb,thickness_frame); - fi - for i=1 upto cntM: - addto currentpicture also mol_stru[i] shifted posM[0][i]; mol_stru[i]:=nullpicture; - if scan_bit(sw_frame,Mol): ext(draw_frame(p[i],w[i],h[i],thickness_frame)) fi - endfor - if f_ext=1: addto currentpicture also mol_stru[0]; mol_stru[0]:=nullpicture; fi %----------------------------------------------------------------------------------------- - else: - font_wd:=xpart(fsize); font_ht:=ypart(fsize); - if f_MP=0: beginchar(char_num,font_wd/bp*bp#,font_ht/bp*bp#,0) - else: beginfig(char_num) w:=charwd:=font_wd; h:=charht:=font_ht; + endchar; + clearit; + %----------------------------------------------------------------------------------------- + if sw_output=Font+Info+Temp: proc_info_out(1,1); + ef sw_output=Font+Mcode+Temp: proc_mc_out(1); + ef sw_output=Font+Info+Mcode+Temp: proc_info_out(1,1); proc_mc_out(1); + ef sw_output=Font+Report+Temp: proc_report_out(1); fi - draw (0,h)--(0,0)--(w,0)--(w,h)--(0,h)--(w,0) wpcs thickness_frame; - fi - %----------------------------------------------------------------------------------------- - endchar; - clearit; - %----------------------------------------------------------------------------------------- - if sw_output=Font+Info+Temp: proc_info_out(1,1); - ef sw_output=Font+Mcode+Temp: proc_mc_out(1); - ef sw_output=Font+Info+Mcode+Temp: proc_info_out(1,1); proc_mc_out(1); - ef sw_output=Font+Report+Temp: proc_report_out(1); + %----------------------------------------------------------------------------------------- + ef sw_output=Info: proc_info_out(1,0); + ef sw_output=Info+Table: proc_info_out(2,0); + ef sw_output=Info+Temp: proc_info_out(1,1); + ef sw_output=Info+Mcode: proc_info_out(1,2); + ef sw_output=Mcode: proc_mc_out(0); + ef sw_output=Mcode+Temp: proc_mc_out(1); + ef sw_output=Mfont: proc_mf_out(1); + ef sw_output=Report: proc_report_out(0); + ef sw_output=Report+Temp: proc_report_out(1); + ef sw_output=MOL2k: proc_mol_out(1); + ef sw_output=MOL3k: proc_mol_out(2); + ef sw_output=Info+Mcode+Temp: proc_mc_out(1); proc_info_out(1,1); fi - %----------------------------------------------------------------------------------------- - ef sw_output=Info: proc_info_out(1,0); - ef sw_output=Info+Table: proc_info_out(2,0); - ef sw_output=Info+Temp: proc_info_out(1,1); - ef sw_output=Mcode: proc_mc_out(0); - ef sw_output=Mcode+Temp: proc_mc_out(1); - ef sw_output=Mfont: proc_mf_out(0); - ef sw_output=Report: proc_report_out(0); - ef sw_output=Report+Temp: proc_report_out(1); - ef sw_output=MOL2k: proc_mol_out(1); - ef sw_output=MOL3k: proc_mol_out(2); - ef sw_output=Info+Mcode+Temp: proc_mc_out(1); proc_info_out(1,1); - fi - %----------------------------------------------------------------------------------------------- - %% message "* parts_cnt (0)="& decimal(parts_cnt) &" "& decimal(parts_usr-parts_usr_start); - %% message "* parts_int (0)="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start); - %----------------------------------------------------------------------------------------------- + %--------------------------------------------------------------------------------------------- + %% message "* parts_cnt (0)="& decimal(parts_cnt) &" "& decimal(parts_usr-parts_usr_start); + %% message "* parts_int (0)="& decimal(parts_int) &" "& decimal(parts_int-parts_int_start); + %--------------------------------------------------------------------------------------------- fi - %----------------------------------------------------------------------------------------------- + %--------------------------------------------------------------------------------------------- restore_par(parameter_list); if proc_end=1: scantokens("bye"); fi endgroup; enddef; %------------------------------------------------------------------------------------------------- -def pickup_data_unit(expr t,v)= +def pickup_data_unit(expr t,v,f)= begingroup - save unit_cnt,f_end,semicol_cnt,cond,n_var; - f_end:=unit_cnt:=semicol_cnt:=cond:=at_semicol[0]:=inf_num:=0; - if t="n": n_var:=scantokens(v); fi + save unit_cnt,f_end,semicol_cnt,f_match,var_n,info_s,tag_a,var_a; + string tag_a[],var_a[],info_s; + f_end:=unit_cnt:=semicol_cnt:=f_match:=inf_num:=0; + if t="n": var_n:=scantokens(v); fi forever: temps:=readfrom file_name_input; if temps=EOF: f_EOF:=1; fi @@ -388,11 +397,10 @@ def pickup_data_unit(expr t,v)= if subc(1,temps)="%": ef (subc(1,temps)="+")and(subc(2,temps)<>"-"): unit_cnt:=unit_cnt+1; - if v="*": cond:=1; - ef t="n": if unit_cnt=n_var: cond:=1; fi - else: if v=scantokens("inf_"&t): cond:=1; fi + if v="*": f_match:=1; + ef t="n": if unit_cnt=var_n: f_match:=1; fi fi - if cond=1: + if f_match=1: forever: temps:=readfrom file_name_input; if temps=EOF: f_EOF:=1; fi @@ -400,12 +408,15 @@ def pickup_data_unit(expr t,v)= exitif subc(1,temps)="+"; if subc(1,temps)<>"%": mc_row:=mc_row+1; - n_fw:=scan_char(" ",temps,1,1); - mc_indent[mc_row]:=n_fw-1; - mc[mc_row]:=substring (n_fw-1,length(temps)) of temps; + fw_n:=scan_char(" ",temps,1,1); + mc_indent[mc_row]:=fw_n-1; + mc[mc_row]:=substring (fw_n-1,length(temps)) of temps; mc:=mc&mc[mc_row]; fi endfor + for i=1 upto inf_num: + if known scantokens("inf_"&tag_a[i]): scantokens("inf_"&tag_a[i]):=var_a[i]; fi + endfor f_end:=1; else: forever: @@ -416,21 +427,21 @@ def pickup_data_unit(expr t,v)= endfor fi else: - semicol_cnt:=count_char(";",temps); + semicol_cnt:=count_semicol(temps); inf_num:=semicol_cnt+1; for i=1 upto inf_num: - if i<=semicol_cnt: info[i]:=substring (at_semicol[i-1],at_semicol[i]-1) of temps; - else: info[i]:=substring (at_semicol[semicol_cnt],length(temps)) of temps; + if i<=semicol_cnt: info_s:=substring (at_semicol[i-1],at_semicol[i]-1) of temps; + else: info_s:=substring (at_semicol[semicol_cnt],length(temps)) of temps; fi - at_colon:=scan_char(":",info[i],0,1); - s_tag:=substring (0,at_colon-1) of info[i]; - s_var:=substring (at_colon,length(info[i])) of info[i]; - if known scantokens("inf_"&s_tag): scantokens("inf_"&s_tag):=s_var; fi + at_colon:=scan_char(":",info_s,0,1); + tag_a[i]:=substring (0,at_colon-1) of info_s; + var_a[i]:=substring (at_colon,length(info_s)) of info_s; + if t=tag_a[i]: if v=var_a[i]: f_match:=1; fi fi endfor fi exitif f_end=1; endfor - if f_close=1: closefrom file_name_input; fi + if f=1: closefrom file_name_input; fi endgroup; enddef; %-------------------------------------------------------------------------------------------------- @@ -445,13 +456,6 @@ vardef scan_char(expr c,s,d,n)= fi n_s enddef; -%-------------------------------------------------------------------------------------------------- -vardef count_char(expr c,s)= - save nS; - nS:=0; - for i=1 upto length(s): if subc(i,s)=c: nS:=nS+1; at_semicol[nS]:=i; fi endfor - nS -enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def set_def_MC= save /,//,/*,*/,**,*/*,~,^,',`,<,>,:,=,\,\\,*\,\*,*\*,@,@$,$,&,&$,#,##,{,},|,||,_,inside_def_MC; @@ -890,7 +894,7 @@ def MC(text TXT)= pair temp_p; %----------------------------------------------------------------------------------------------- if sw_numbering>=1: ratio_atom_bond:=0.25; fi - if (sw_expand=1)or(sw_output=MOL2k)or(sw_output=MOL3k): + if (sw_expand=1)or(scan_bit(sw_output,MOL2k))or(scan_bit(sw_output,MOL3k)): expand_set; crR:=1; else: crR:=-ratio_chain_ring; fi cntA:=cntB:=cntC:=cnt_group:=0; strD[0]:="C"; str_cnt:=2000; @@ -927,77 +931,86 @@ def MC(text TXT)= endfor if blen>max_blength: blen:=max_blength; proc_size_setup; proc_skeleton(0); proc_scaling; fi fi - %-draw atom------------------------------------------------------------------------------------- - if sw_numbering=0: for i=1 upto cntA: draw_atom(i); endfor fi - %-draw add to atom------------------------------------------------------------------------------ + %----------------------------------------------------------------------------------------------- for i=1 upto cntA: if addA[i]<>0: - temp_c:=char(addA[i]); nA:=angX[i]+add_rot[i]; nC:=nA mod 90; + temp_c:=char(addA[i]); if temp_c="+": chargeA[i]:=1; elseif temp_c="-": chargeA[i]:=-1; else: chargeA[i]:=0; fi - if numS[i]=0: nB:=.5atom_wd; - else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i]; - fi - temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA); - draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0); else: chargeA[i]:=0; fi endfor - %-draw bond------------------------------------------------------------------------------------- - for i=1 upto cntB: if lineB[i]=si_: draw_bond(i); fi endfor - %-atom numbering-------------------------------------------------------------------------------- - if scan_bit(sw_numbering,Atom): + %=============================================================================================== + if scan_bit(sw_output,Font): + %-draw atom----------------------------------------------------------------------------------- + if sw_numbering=0: for i=1 upto cntA: draw_atom(i); endfor fi + %-draw add to atom---------------------------------------------------------------------------- for i=1 upto cntA: - if (i>=numbering_start)and(i<=numbering_end): - if scan_bit(sw_numbering,Brock): nA:=i-numbering_start+1; - elseif scan_bit(sw_numbering,Inverse): - nA:=iif(numbering_end0: + nA:=angX[i]+add_rot[i]; nC:=nA mod 90; + if numS[i]=0: nB:=.5atom_wd; + else: nB:=.85wdA[i]+iif(nC<45,sind(nC),cosd(nC))*.5wdA[i]; fi - erase fill unitsquare xscaled (.8atom_wd*length(decimal(nA))) - yscaled atom_wd shifted (posA[i]-(.5atom_wd,.5atom_wd)); - defaultsize:=atom_wd; defaultscale:=1; - puts(posA[i]-(.5atom_wd,.5atom_wd))(decimal(nA)); + temp_p:=sfrt(posA[i]-(.35atom_wd,.35atom_wd),nB,nA); + draw_char(temp_c,temp_p,atom_wd,bond_pen_wd*ratio_char_bond,0); fi endfor - fi - %-bond numbering-------------------------------------------------------------------------------- - if scan_bit(sw_numbering,Bond): - for i=1 upto cntB: - if (i>=numbering_start)and(i<=numbering_end): - if scan_bit(sw_numbering,Brock): nB:=i-numbering_start+1; - elseif scan_bit(sw_numbering,Inverse): - nB:=iif(numbering_end=si_: draw_bond(i); fi endfor + %-atom numbering------------------------------------------------------------------------------ + if scan_bit(sw_numbering,Atom): + for i=1 upto cntA: + if (i>=numbering_start)and(i<=numbering_end): + if scan_bit(sw_numbering,Brock): nA:=i-numbering_start+1; + elseif scan_bit(sw_numbering,Inverse): + nA:=iif(numbering_end1: sftX:=xpart(mposition)-minX; - else: sftX:=margin_lr-minX+(font_wd-mol_wd-2margin_lr)*xpart(mposition); - fi - if ypart(mposition)>1: sftY:=ypart(mposition)-minY; - else: sftY:=margin_tb-minY+(font_ht-mol_ht-2margin_tb)*ypart(mposition); - fi - cntM:=cntM+1; - posM[0][cntM]:=(sftX,sftY); - posM[1][cntM]:=(minX+sftX,minY+sftY); - posM[2][cntM]:=(maxX+sftX,maxY+sftY); - wdM[cntM]:=mol_wd; - htM[cntM]:=mol_ht; - mol_stru[cntM]:=currentpicture; - clearit; - endgroup; - if sw_output>=1: proc_calc(0); fi - if cntC>=1: + endfor + fi + %-bond numbering------------------------------------------------------------------------------ + if scan_bit(sw_numbering,Bond): + for i=1 upto cntB: + if (i>=numbering_start)and(i<=numbering_end): + if scan_bit(sw_numbering,Brock): nB:=i-numbering_start+1; + elseif scan_bit(sw_numbering,Inverse): + nB:=iif(numbering_end1: sftX:=xpart(mposition)-minX; + else: sftX:=margin_lr-minX+(font_wd-mol_wd-2margin_lr)*xpart(mposition); + fi + if ypart(mposition)>1: sftY:=ypart(mposition)-minY; + else: sftY:=margin_tb-minY+(font_ht-mol_ht-2margin_tb)*ypart(mposition); + fi + cntM:=cntM+1; + posM[0][cntM]:=(sftX,sftY); + posM[1][cntM]:=(minX+sftX,minY+sftY); + posM[2][cntM]:=(maxX+sftX,maxY+sftY); + wdM[cntM]:=mol_wd; + htM[cntM]:=mol_ht; + mol_stru[cntM]:=currentpicture; + clearit; + if cntC>=1: for i=1 upto cntA: if colorA[i]<>0: colorA[i]:=0; fi endfor for i=1 upto cntB: if colorB[i]<>0: colorB[i]:=0; fi endfor + fi fi + if sw_output>=Info: proc_check_structure(0); fi + endgroup; enddef; %------------------------------------------------------------------------------------------------- def add_group= @@ -1591,7 +1604,7 @@ vardef erase_space(expr TXT)= temp_s enddef; %================================================================================================= -def proc_calc(expr n)= +def proc_check_structure(expr n)= begingroup save knownA,tmp_wtp; num_MW:=num_MI:=cen_MW:=cen_MI:=tbl_atom_max:=warning_cnt:=hideH_cnt:=0; @@ -1669,6 +1682,7 @@ enddef; def proc_info_out(expr n,f)= message "["&decimal(char_num)&"]:"&inf_EN; if f=1: file_name_output:="temp-info.aux"; + ef f=2: file_name_output:=jobname&"-data.aux"; else: file_name_output:=jobname&"-info.aux"; fi %-------------------------------------------------------------------------------------- @@ -1705,7 +1719,11 @@ def proc_info_out(expr n,f)= ef tag[i]="MC": & inf_MC fi endfor ; - if f=1: printf EOF; fi + if f=1: printf EOF; + ef f=2: printf "+"; + for i=1 upto mc_row: printf (substring(0,mc_indent[i]) of blank_str)&mc[i]; endfor + printf "+-----------------------------------------------------------------------------"; + fi enddef; %================================================================================================= def proc_report_out(expr f)= @@ -1823,12 +1841,10 @@ enddef; def proc_mf_out(expr f)= message "["&decimal(char_num)&"]:"&inf_EN; file_name_output:=jobname&"-mf.aux"; - printf "beginfont(" - for i=1 upto inf_num: &ditto&info[i]&ditto&"," endfor ; - for i=1 upto mc_row: - printf ditto&": " if i=mc_row: &mc[i]&ditto&")"; else: &mc[i]&ditto&","; fi - endfor - printf "if check(mc)=0: MC(scantokens(mc)) fi"; + printf "beginfont()"; + printf "MC("; + for i=1 upto mc_row: printf mc[i]; endfor + printf ")"; printf "endfont"; if f=1: printf "%-------------------------------------------------------------------------"; fi enddef; @@ -1952,9 +1968,11 @@ R6:='("R6"); R7:='("{R^7^}"); R8:='("{R^8^}"); R9:='("{R^9^}"); R10:='("R^10^"); hexose_hp:='(#1.4,-30~wf_r,30~bd_r`1,30~wb_r,120,O,30,&1,##); Pyranose_hp:='(#1.4,-35~wf_r,35~bd_r`1,30~wb_r,130`1.66,O,&1,##); %------------------------------------------------------------------------------------------------- -xCH3:='(/H,/H^60,60,H); xNH:='(N,/H); xNH2:='(N,/H,60,H); xNO2:='(N,//O,60~dm,O); xNO:='(N,!~dm,O); -xSO2H:='(S,//O,!,O,!,H); xSO3H:='(S,//O^35,//O^-35,!,O,!,H); xCOO:='(//O,!,O); -xOH:='(O,!,H); xCHO:='(//O,!,H); xCOOH:='(//O,!,O,!,H); xCN:='(!~tm,N); xSH:='(S,!,H); +xCH3:='(/H,/H^60,/H^-60); xNH:='(N,/H); xNH2:='(N,/H^60,/H^-60); xNO2:='(N,//O^60,//O^-60); +xOH:='(O,/H); xNO:='(N,//O); xSO2H:='(S,//O^60,/OH^-60); xSO3H:='(S,/OH,//O^60,//O^-60); +xCHO:='(//O^-60,/H^60); xCOOH:='(//O^-60,/xOH^60); xCN:='(/N~tm); xSH:='(S,/H); +!xOH:='(!,xOH); !xCHO:='(!,xCHO); !xCOOH:='(!,xCOOH); !xCH3:='(!,xCH3); !xCN:='(!,xCN); +!xNH2:='(!,xNH2); !xNO2:='(!,xNO2); !xSH:='(!,xSH); %================================================================================================= init_par(parameter_list); %------------------------------------------------------------------------------------------------- @@ -1963,9 +1981,8 @@ init_par(parameter_list); %------------------------------------------------------------------------------------------------- def expand_set= CH3:=xCH3; NH:=xNH; NH2:=xNH2; NO:=xNO; NO2:=xNO2; OH:=xOH; CHO:=xCHO; COOH:=xCOOH; CN:=xCN; - SH:=xSH; SO2H:=xSO2H; SO3H:=xSO3H; COO[-1]:=xCOO; - !CH3:='(!,CH3); !OH:='(!,OH); !NH2:='(!,NH2); !CHO:='(!,CHO); !COOH:='(!,COOH); !CN:='(!,CN); - !SH:='(!,SH); !NO2:='(!,NO2); + SH:=xSH; SO2H:=xSO2H; SO3H:=xSO3H; !SH:=!xSH; + !CH3:=!xCH3; !OH:=!xOH; !NH2:=!xNH2; !CHO:=!xCHO; !COOH:=!xCOOH; !CN:=!xCN; !NO2:=!xNO2; enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% vardef check(expr s)= @@ -2080,25 +2097,24 @@ enddef; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% def query(text s)= begingroup - save temps,file_name,f_mcf,f_line,unit_row,unit_cnt,line_s,unit_row_cnt,mc_row,line_cnt, - semicol_cnt,inf_num,info_s,filter_n,tag_s,var_s,order,min_s,min_n,par_cnt,key_cnt,var_n, - sign_at,sign_n,filter_tag,filter_var,filter_sign,filter_cnt,temp_s, - at_semicol,at_colon,at_equal,at_less,at_greater,at_n; - string line_s[][],sort_s[],par_list[],sort_all[],key_s[],filter_s[],filter_tag[],filter_var[], - temps,file_name_input,info_s,tag_s,var_s,temp_s,min_s; - numeric unit_row_cnt[],at_semicol[],order[],order_tbl[],filter_sign[]; - unit_row:=f_mcf:=mc_row:=line_cnt:=inf_num:=par_cnt:=key_cnt:=filter_cnt:=at_semicol[0]:=0; + save file_name,f_mcf,f_line,unit_row,unit_cnt,line_s,unit_row_cnt,mc_row,line_cnt, + semicol_cnt,info_cnt,info_s,filter_n,order,min_s,min_n,par_cnt,key_cnt,var_n,info_s, + sign_at,sign_n,filter_tag,filter_var,filter_sign,filter_cnt,filter_p,temp_s,par_s, + at_colon,at_equal,at_less,at_greater,at_n,info_cnt; + string line_s[][],sort_s[],par_s[],sort_all[],key_s[],filter_s[],filter_tag[],filter_var[], + info_s[],file_name_input,temp_s,min_s; + numeric unit_row_cnt[],order[],order_tbl[],filter_sign[],filter_p[]; + unit_row:=f_mcf:=mc_row:=line_cnt:=info_cnt:=par_cnt:=key_cnt:=filter_cnt:=0; unit_cnt:=1; - for list=s: par_cnt:=par_cnt+1; par_list[par_cnt]:=list; endfor %------------------------------------------------------------------------------------------------ file_name_input:=default_data_file; file_name_output:=default_temp_file; %------------------------------------------------------------------------------------------------ - for j=1 upto par_cnt: - at_colon:=scan_char(":",par_list[j],0,1); - at_equal:=scan_char("=",par_list[j],0,1); - at_less:=scan_char("<",par_list[j],0,1); - at_greater:=scan_char(">",par_list[j],0,1); + for list=s: + at_colon:=scan_char(":",list,0,1); + at_equal:=scan_char("=",list,0,1); + at_less:=scan_char("<",list,0,1); + at_greater:=scan_char(">",list,0,1); %--------------------------------------------------------------------------------------------- if at_colon>=2: sign_at:=at_colon; sign_n:=0; at_n:=1; ef at_equal>=2: if (at_equal-1)=at_less: sign_at:=at_equal; sign_n:=5; at_n:=2; @@ -2108,12 +2124,18 @@ def query(text s)= else: sign_at:=at_greater; sign_n:=4; at_n:=1; fi ef at_less>=2: sign_at:=at_less; sign_n:=3; at_n:=1; fi - tag_s:=substring (0,sign_at-at_n) of par_list[j]; - var_s:=substring (sign_at,length(par_list[j])) of par_list[j]; + tag_s:=substring (0,sign_at-at_n) of list; + var_s:=substring (sign_at,length(list)) of list; %--------------------------------------------------------------------------------------------- if sign_n=0: - if tag_s="i": file_name_input:=var_s; - ef tag_s="o": file_name_output:=var_s; + if tag_s="f": + if scan_char(".",var_s,0,1)=0: file_name_input:=var_s&".mcf"; + else: file_name_input:=var_s; + fi + ef tag_s="o": + if scan_char(".",var_s,0,1)=0: file_name_output:=var_s&".aux"; + else: file_name_output:=var_s; + fi ef tag_s="s": key_cnt:=key_cnt+1; key_s[key_cnt]:=var_s; fi %--------------------------------------------------------------------------------------------- @@ -2121,12 +2143,12 @@ def query(text s)= filter_cnt:=filter_cnt+1; filter_tag[filter_cnt]:=tag_s; filter_sign[filter_cnt]:=sign_n; - if (sign_n>=3)and(is_num(var_s)=1): filter_var[filter_cnt]:=fix_n(var_s); + if (sign_n>=3)and(is_num(var_s)=1): filter_var[filter_cnt]:=fix_num(var_s); else: filter_var[filter_cnt]:=var_s; fi fi endfor - %------------------------------------------------------------------------------------------------ + %----------------------------------------------------------------------------------------------- forever: temps:=readfrom file_name_input; exitif temps=EOF; if subc(1,temps)<>"%": @@ -2136,51 +2158,61 @@ def query(text s)= ef (subc(1,temps)="+")and(subc(2,temps)="-"): unit_row_cnt[unit_cnt]:=unit_row; f_mcf:=unit_row:=0; - if filter_n=1: unit_cnt:=unit_cnt+1; fi - ef (subc(1,temps)<>"+")and(subc(1,temps)<>"%"): - if f_mcf=1: mc_row:=mc_row+1; - else: - semicol_cnt:=count_char(";",temps); - inf_num:=semicol_cnt+1; - filter_n:=1; - %--------------------------------------------------------------------------------------- - for i=1 upto inf_num: - if i<=semicol_cnt: info_s:=substring (at_semicol[i-1],at_semicol[i]-1) of temps; - else: info_s:=substring (at_semicol[semicol_cnt],length(temps)) of temps; + filter_n:=1; + for i=1 upto filter_cnt: filter_p[i]:=0; endfor + for i=1 upto key_cnt: sort_s[i]:=""; endfor + %--------------------------------------------------------------------------------------- + for i=1 upto info_cnt: + at_colon:=scan_char(":",info_s[i],0,1); + tag_s:=substring (0,at_colon-1) of info_s[i]; + var_s:=substring (at_colon,length(info_s[i])) of info_s[i]; + %------------------------------------------------------------------------------------- + for j=1 upto key_cnt: + if key_s[j]=tag_s: + if is_num(var_s)=1: sort_s[j]:=fix_num(var_s); else: sort_s[j]:=var_s; fi fi - at_colon:=scan_char(":",info_s,0,1); - tag_s:=substring (0,at_colon-1) of info_s; - var_s:=substring (at_colon,length(info_s)) of info_s; - %------------------------------------------------------------------------------------- - for j=1 upto key_cnt: - if key_s[j]=tag_s: - if is_num(var_s)=1: sort_s[j]:=fix_n(var_s); else: sort_s[j]:=var_s; fi + endfor + %------------------------------------------------------------------------------------- + for j=1 upto filter_cnt: + if filter_tag[j]=tag_s: + filter_p[j]:=1; + if (filter_sign[j]>=3)and(is_num(var_s)=1): temp_s:=fix_num(var_s); + else: temp_s:=var_s; fi - endfor - %------------------------------------------------------------------------------------- - for j=1 upto filter_cnt: - if filter_tag[j]=tag_s: - if (filter_sign[j]>=3)and(is_num(var_s)=1): temp_s:=fix_n(var_s); - else: temp_s:=var_s; - fi - if filter_sign[j]=1: if not(temp_s= filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=2: if not(temp_s<>filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=3: if not(temp_s< filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=4: if not(temp_s> filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=5: if not(temp_s<=filter_var[j]): filter_n:=0; fi - ef filter_sign[j]=6: if not(temp_s>=filter_var[j]): filter_n:=0; fi - fi + if filter_sign[j]=1: if not(temp_s= filter_var[j]): filter_n:=0; fi + ef filter_sign[j]=2: if not(temp_s<>filter_var[j]): filter_n:=0; fi + ef filter_sign[j]=3: if not(temp_s< filter_var[j]): filter_n:=0; fi + ef filter_sign[j]=4: if not(temp_s> filter_var[j]): filter_n:=0; fi + ef filter_sign[j]=5: if not(temp_s<=filter_var[j]): filter_n:=0; fi + ef filter_sign[j]=6: if not(temp_s>=filter_var[j]): filter_n:=0; fi fi - endfor + fi endfor - %------------------------------------------------------------------------------------- - sort_all[unit_cnt]:=""; - for j=1 upto key_cnt: - if j=key_cnt: sort_all[unit_cnt]:=sort_all[unit_cnt]&sort_s[j]; - else: sort_all[unit_cnt]:=fix_s(15,sort_s[1]); + endfor + for i=1 upto filter_cnt: if filter_p[i]=0: filter_n:=0; fi endfor + %------------------------------------------------------------------------------------- + sort_all[unit_cnt]:=""; + for j=1 upto key_cnt: + if j=key_cnt: sort_all[unit_cnt]:=sort_all[unit_cnt]&sort_s[j]; + else: sort_all[unit_cnt]:=fix_str(15,sort_s[1]); + fi + endfor + %------------------------------------------------------------------------------------- + info_cnt:=0; + if filter_n=1: unit_cnt:=unit_cnt+1; fi + %------------------------------------------------------------------------------------- + ef (subc(1,temps)<>"+")and(subc(1,temps)<>"%"): + if f_mcf=1: mc_row:=mc_row+1; + else: + semicol_cnt:=count_semicol(temps); + for i=1 upto semicol_cnt+1: + info_cnt:=info_cnt+1; + if i<=semicol_cnt: + info_s[info_cnt]:=substring (at_semicol[i-1],at_semicol[i]-1) of temps; + else: + info_s[info_cnt]:=substring (at_semicol[semicol_cnt],length(temps)) of temps; fi endfor - %------------------------------------------------------------------------------------- fi fi fi @@ -2206,7 +2238,7 @@ def query(text s)= endgroup; enddef; %============================================================================================= -vardef fix_s(expr n,s)= +vardef fix_str(expr n,s)= save temp_s; string temp_s; if length(s)=150","MW<=300","s:MW"); -%%%%%query("i:mcf_data_base","o:temp","s:MW","s:EN"); +%%%%query("Cat=biological","MW<200","s:MW"); +%%%%query("Cat=biological","MW<150.0","s:EN"); +%%%%query("MW>=150","MW<=200","s:MW"); %****************************************************************************** +%%%% beginfont("t:EN","v:Caffeine") % select EN=Caffeine forever: -%%%%%%% beginfont("f+:temp","v:*") % use query output -%%%%%%% beginfont("f+:mcf_data_base","v:*") % select all - beginfont("f+:mcf_data_base","t:EXA","v:1") % 'f+'=keep file open - if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi % 'v:1' select EXA=1 - endfont % - exitif (f_EOF=1)or(f_close=1); % exit if file end +%%%% beginfont("f:mcf_data_base","v+:*") % 'mcf_data_base.mcf'(default) +%%%% beginfont("f:temp","v+:*") % use query output +%%%% beginfont("v+:*") % select all + beginfont("t:EXA","v+:1") % 'v+:1': select EXA=1 + if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi + endfont + exitif f_EOF=1; % exit if file end endfor %****************************************************************************** fi diff --git a/graphics/mcf2graph/mcf_example.pdf b/graphics/mcf2graph/mcf_example.pdf index 7ed3fd35fa..6d2b88c7e0 100644 Binary files a/graphics/mcf2graph/mcf_example.pdf and b/graphics/mcf2graph/mcf_example.pdf differ diff --git a/graphics/mcf2graph/mcf_example.tex b/graphics/mcf2graph/mcf_example.tex index 46401394dd..a61439d39b 100644 --- a/graphics/mcf2graph/mcf_example.tex +++ b/graphics/mcf2graph/mcf_example.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2021.08.01 +% Example of MCF typeset by LaTeX mcf_examples.tex by A.Yamaji 2021.09.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage{graphicx} @@ -10,7 +10,7 @@ %-------------------------------- %%%%\pdfpkresolution=1200 %-------------------------------- -%%%%\edef\f@ext{pk}% +%%%%%\edef\f@ext{pk}% \edef\f@ext{mps}% %-------------------------------- \pagestyle{empty} diff --git a/graphics/mcf2graph/mcf_man_soc.mf b/graphics/mcf2graph/mcf_man_soc.mf index c9339f4fad..3b5e2ce307 100644 --- a/graphics/mcf2graph/mcf_man_soc.mf +++ b/graphics/mcf2graph/mcf_man_soc.mf @@ -1,9 +1,9 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.09.05 +% Molecular Coding Format file for mcf_manual.tex by Akira.Yamaji 2021.09.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -input mcf2graph.mf; %% it must be version 4.71 +input mcf2graph.mf; %% it must be version 4.72 % ** use data base file 'mcf_data_base.mcf' -message "mcf_man_soc 2021.09.05"; message ""; +message "mcf_man_soc 2021.09.20"; message ""; %------------------------------------------------------------------------ sw_mframe:=0; sw_expand:=0; @@ -1240,7 +1240,7 @@ beginfont("EN:?6") endfont defaultsize:=save_defaultsize; %*************************************************************************** -beginfont("f:mcf_data_base","t:EN","v:Luciferin") +beginfont("t:EN","v:Luciferin") fsize:=(50mm,15mm); if check(mc)=0: MC(scantokens(mc)) fi endfont diff --git a/graphics/mcf2graph/mcf_manual.pdf b/graphics/mcf2graph/mcf_manual.pdf index 58e5597e79..070738c234 100644 Binary files a/graphics/mcf2graph/mcf_manual.pdf and b/graphics/mcf2graph/mcf_manual.pdf differ diff --git a/graphics/mcf2graph/mcf_manual.tex b/graphics/mcf2graph/mcf_manual.tex index dceb5999f3..59745ac19a 100644 --- a/graphics/mcf2graph/mcf_manual.tex +++ b/graphics/mcf2graph/mcf_manual.tex @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Molecular Coding Format manual by Akira Yamaji 2021.09.05 +% Molecular Coding Format manual by Akira Yamaji 2021.09.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \documentclass[a4paper]{article} \usepackage[pdftex]{graphicx} @@ -7,8 +7,8 @@ \usepackage{makeidx} \makeindex \hypersetup{colorlinks=true,linkcolor=blue} -\makeatletter \usepackage{mcf_setup} +\edef\MCFjobname{mcf_man_soc}% %---------------------------------------------------------------------------- %%%%\pdfpkresolution=1200 %---------------------------------------------------------------------------- @@ -38,7 +38,7 @@ \htmans=42mm% \fnum=1% %---------------------------------------------------------------------------- -\edef\MCFjobname{mcf_man_soc}% +\makeatletter %---------------------------------------------------------------------------- \font\@strufont=\MCFjobname\relax% %---------------------------------------------------------------------------- @@ -52,7 +52,7 @@ \fi% \global\advance\fnum\@ne\relax% }% -%--------------------------------------------------------------------------- +%---------------------------------------------------------------------------- \def\put@char{% \begin{picture}(75,100)% \put(0,95){\bf [\NO]\EN}% @@ -1542,27 +1542,27 @@ beginfont("EN:Cholesterol","MW:386.65", >information if check(mc)=0: MC(scantokens(mc)) fi > mc=mc1 - mc4 endfont > %------------------------------------------------------------------------------ -beginfont("f:mcf_data_base","t:EN","v:Adenine") > from mcf_data_base.mcf +beginfont("f:mcf_data_base.mcf","t:EN","v:Adenine") > from mcf_data_base.mcf if check(mc)=0: MC(scantokens(mc)) fi > select EN="Adenine" endfont > %------------------------------------------------------------------------------ -beginfont("f:mcf_data_base","t:EN","v:Guanine") > from mcf_data_base.mcf - if check(mc)=0: MC(scantokens(mc)) fi > select EN="Guanine" +beginfont("t:EN","v:Guanine") > select EN="Guanine" + if check(mc)=0: MC(scantokens(mc)) fi endfont %------------------------------------------------------------------------------ -beginfont("f:mcf_data_base","t:EN","v:Cytosine") > from mcf_data_base.mcf - if check(mc)=0: MC(scantokens(mc)) fi > select EN="Cytosine" +beginfont("t:EN","v:Cytosine") > select EN="Cytosine" + if check(mc)=0: MC(scantokens(mc)) fi > endfont > %------------------------------------------------------------------------------ -beginfont("f+:mcf_data_base","t:n","v:4") > from mcf_data_base.mcf - if check(mc)=0: MC(scantokens(mc)) fi > v:4 select No.4 -endfont > 'f+' keep file open +beginfont("t:n","v+:4") > v+:4 = select No.4 + if check(mc)=0: MC(scantokens(mc)) fi > keep file open +endfont > %------------------------------------------------------------------------------ forever: -%%%%%%%%%% beginfont("f+:mcf_data_base","v:*") > select all - beginfont("f+:mcf_data_base","t:EXA","v:1") > 'f+'=keep file open - if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > 'v:1' select EXA=1 - endfont > +%%%%%%%%%% beginfont("f:mcf_data_base","v+:*") > select all + beginfont("f:mcf_data_base","t:EXA","v+:1") > 'v+:1'= select EXA=1 + if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi > keep file open + endfont > exitif (f_EOF=1)or(f_close=1); > exit if file end endfor %------------------------------------------------------------------------------ @@ -1639,25 +1639,25 @@ Cat:biological;EN:Linoleic acid;MW:280.45 %-------------------------------------------------------------- % query() % -% "i:filename" : input file name (default "mcf_data_base.mcf") +% "f:filename" : input file name (default "mcf_data_base.mcf") % "o:filename" : output file name (default "temp.mcf") % "s:sort-key" : sort by sort-key % -% = , <> , <= , >= , < , > +% operator : = , <> , <= , >= , < , > % -% filter 1 : Cat=biological -% filter 2 : MW>=285 -% filter 3 : MW<=295 +% filter 1 : Cat=biological +% filter 2 : MW>=285 +% filter 3 : MW<=295 %-------------------------------------------------------------- query("s:EN", -%%%%% "i:mcf_data_base.mcf","o:temp.mcf","s:EN", +%%%%% "f:mcf_data_base.mcf","o:temp.mcf","s:EN", "Cat=biological","MW>=285","MW<=295"); %-------------------------------------------------------------- forever: - beginfont("f+:temp","v:*") % use file temp.mcf / select all + beginfont("f:temp","v+:*") % use file temp.mcf / select all if f_EOF=0: if check(mc)=0: MC(scantokens(mc)) fi fi endfont - exitif (f_EOF=1)or(f_close=1); + exitif f_EOF=1; endfor %--------------------------------------------------------------- \end{verbatim} @@ -1713,6 +1713,7 @@ Cat:biological;EN:Piperine;MW:285.343;EXA:1 sw_output:=Info; %% tag1:var1;tag2:var2 sw_output:=Info+Table; %% tag1;tag2 var1;var2 sw_output:=Info+Temp; %% tag1:var1;tag2:var2 / output 'temp-info.aux' + sw_output:=Info+Mcode; %% output jobname&'.aux' sw_output:=Info+Mcode+Temp; %% output 'temp-info.aux','temp-mc.aux' sw_output:=Font+Info+Temp; %% output font,'temp-info.aux','temp-mc.aux' \end{verbatim} @@ -1843,29 +1844,42 @@ endfont \index{Mcode}% \index{Temp}% \begin{verbatim} -sw_output:=Mcode; +sw_output:=Mcode; %% output 'jobname-nnn-EN-mc.aux' sw_output:=Mcode+Temp; %% output 'temp-mc.aux' +sw_output:=Info+Mcode; %% output 'jobname-data.aux' sw_output:=Info+Mcode+Temp; %% output 'temp-info.aux','temp-mc.aux' sw_output:=Font+Mcode+Temp; %% output font,'temp-mc.aux' sw_output:=Font+Info+Mcode+Temp; %% output font,'temp-info.aux','temp-mc.aux' \end{verbatim} \paragraph{(Command line)} \begin{verbatim} - >mpost -s ahlength=8 FILENAME (sw_output=Mcode) + >mpost -s ahlength=8 FILENAME (sw_output=Info+Mcode) \end{verbatim} -\paragraph{(file name)} +\paragraph{(Output temporary file)} \begin{verbatim} sw_output=Mcode ** file name = 'jobname-nnn-EN-mc.aux' sw_output=Mcode+Temp ** file name = 'temp-mc.aux' (result) <30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH + +\end{verbatim} +\paragraph{(Output data-base file)} +\begin{verbatim} +sw_output=Mcode+Info ** file name = 'jobname-data.aux' + +(result) +Cat:biological;EN:Adenine;MW:135.13;EXA:1 ++ +<30,?6,3=?5,{1,3,5,9}=dl,{2,6,9}:N,5:/NH2,7:NH ++-------------------------------------------------- + \end{verbatim} %------------------------------------------------------------------------ \paragraph{(Lualatex example)} %----------------------------------------------------------------------- \begin{verbatim} -beginfont("f:mcf_data_base","t:EN","v:Adenine") +beginfont("t:EN","v:Adenine") sw_output:=Mcode+Temp; endfont \end{verbatim} @@ -1873,7 +1887,7 @@ endfont \begin{verbatim} %----------------------------------------------------------------------- \begin{mplibcode} - beginfont("f:mcf_data_base","t:EN","v:Vancomycin") + beginfont("t:EN","v:Vancomycin") sw_output:=Mcode+Temp; %%%% output temp-mc.aux %%%% endfont; \end{mplibcode} @@ -1884,17 +1898,12 @@ endfont %----------------------------------------------------------------------- \begin{verbatim} (result) - file name = 'temp-mc.aux' -<-30,#1,!12,{1,3,12}=zf,7=wf,/H^-60,60,*/OH,60, - Ph,-4:/Cl,@-3,\,O,!,Ph,@-4,\,O,!,Ph,-1^15:/Cl,@-3,\,/*OH,*/H^-60,&1, - @7,&26,@$1,60,//O,60,NH,60,/*H,*/COOH^180,-60, - Ph,{-2,-4}:/OH,@-1,\,Ph,-5:/OH,@-2,&4,##, - {3^40,6,9,12}://O,{2,5,8,11}:NH,{1,4^180}:*/H,{7^-60,10^60,14^60}:/*H, - @10,*\^-60,60,//O,!,NH2,@13,*\,NH,!,//O,!,/??!,*/H^60,!~zf,NH,!, - @23,\,O,!,|,?6`.7,2:O,3^10:/!OH,{4,5}:/OH, - @-1,\,O,!,|,?6`.7,6:O,{3^35,5}:/_,3^-35:/NH2,4:/OH +<30,?6,@4,?6,@-4,\,!3,<-12,?5,@-3,<-12,?6,-3=?6,@-3,*\,!3, + ?6,@-4,?6,@6,\,!,/*Me^-40,*/OH^20,!,//O,!1,OH, + 3=wb,11=dl,15=dr,17=wf,19=wf,38=wb,{5,7,16,24,25,33,42}:O, + 32:*/H^60,10:/Me,{12,31}:*/_,27://_,37:/*_,28:/OH,{3,29}:/*OH \end{verbatim} %------------------------------------------------------------------------ \newpage diff --git a/graphics/mcf2graph/mcf_mplib_exa.pdf b/graphics/mcf2graph/mcf_mplib_exa.pdf index 0e527592eb..cb28688db6 100644 Binary files a/graphics/mcf2graph/mcf_mplib_exa.pdf and b/graphics/mcf2graph/mcf_mplib_exa.pdf differ diff --git a/graphics/mcf2graph/mcf_mplib_exa.tex b/graphics/mcf2graph/mcf_mplib_exa.tex index 825152629b..b204383651 100644 --- a/graphics/mcf2graph/mcf_mplib_exa.tex +++ b/graphics/mcf2graph/mcf_mplib_exa.tex @@ -1,7 +1,7 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.09.05 +% Example of MCF typest with LuaLaTeX(luamplib) by A.Yamaji 2021.09.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ** mcf2graph.mf must be version 4.71 +% ** mcf2graph.mf must be version 4.72 % ** use mcf_data_base.mcf \documentclass{article} %------------------------------------------------------------------------------ @@ -14,7 +14,7 @@ \everymplib{% if unknown Ph1: input mcf2graph.mf; fi outputformat:="eps"; - sw_output:=Font; + sw_output:=Font+Info+Temp; tag1:="J"; tag2:="C"; tag3:="fm"; tag4:="mw"; tag5:="EN"; tag6:="MW"; max_blength:=4.5mm; defaultfont:="uhvr8r"; @@ -47,7 +47,7 @@ \subsection{Chlorophyll a} \noindent% \begin{verbatim} -beginfont("f:mcf_data_base","t:EN","v:Chlorophyll a","NO:-", +beginfont("f:mcf_data_base.mcf","t:EN","v:Chlorophyll a","NO:-", ":,||,{4,11,17,23}:red,27:green") %%%% change color of atoms %%%% fsize:=(100mm,45mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -59,7 +59,7 @@ endfont \end{verbatim} %------------------------------------------------------------------------------------ \begin{mplibcode} -beginfont("f:mcf_data_base","t:EN","v:Chlorophyll a","NO:-", +beginfont("f:mcf_data_base.mcf","t:EN","v:Chlorophyll a","NO:-", ":,||,{4,11,17,23}:red,27:green") %%%% change color of atoms %%%% fsize:=(100mm,45mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -73,7 +73,7 @@ endfont \subsection{Dinophysistoxin-1} \noindent% \begin{verbatim} -beginfont("f:mcf_data_base","t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", +beginfont("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% fsize:=(150mm,35mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -85,7 +85,7 @@ endfont; \end{verbatim} %---------------------------------------------------------------------------- \begin{mplibcode} -beginfont("f:mcf_data_base","t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", +beginfont("t:EN","v:Okadaic acid","EN:Dinophysistoxin-1", "MW:819",":,38:*/_,65=red") %%%% add methyl group (color red) %%%% fsize:=(150mm,35mm); if check(mc)=0: MC(scantokens(mc)) fi @@ -198,13 +198,13 @@ endfont \begin{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} - beginfont("f:mcf_data_base","t:EN","v:Maitotoxin") + beginfont("t:EN","v:Maitotoxin") sw_output:=Info+Mcode+Temp; %%%% output temp-info,temp-mc.aux %%%% endfont; \end{mplibcode} \verbatiminput{temp-mc.aux} %%%% input temp-mc.aux %%%% \begin{mplibcode} - beginfont("f:mcf_data_base","t:EN","v:Maitotoxin") + beginfont("t:EN","v:Maitotoxin") fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside; if check(mc)=0: MC(scantokens(mc)) fi %%%% output font %%%% endfont @@ -220,13 +220,13 @@ endfont \end{verbatim} %-------------------------------------------------------------------------------- \begin{mplibcode} - beginfont("f:mcf_data_base","t:EN","v:Maitotoxin") + beginfont("t:EN","v:Maitotoxin") sw_output:=Info+Mcode+Temp; %%%% output temp-info.aux %%%% if check(mc)=0: MC(scantokens(mc)) fi endfont \end{mplibcode} \begin{mplibcode} - beginfont("f:mcf_data_base","t:EN","v:Maitotoxin") + beginfont("t:EN","v:Maitotoxin") fsize:=(120mm,60mm); fmargin:=(0,3mm); sw_frame:=Outside; if check(mc)=0: MC(scantokens(mc)) fi %%%% output font %%%% endfont diff --git a/graphics/mcf2graph/mcf_setup.sty b/graphics/mcf2graph/mcf_setup.sty index 57bcca621c..2b05d87138 100644 --- a/graphics/mcf2graph/mcf_setup.sty +++ b/graphics/mcf2graph/mcf_setup.sty @@ -1,5 +1,5 @@ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mcf_setup.sty for input aux file by Akira Yamaji 2021.05.05 +% mcf_setup.sty for input aux file by Akira Yamaji 2021.09.20 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %------------------------------------ \edef\@J{J} \edef\Job{}% 1 @@ -27,6 +27,8 @@ %------------------------------------ \edef\@EXA{EXA} \edef\EXA{}% 19 \edef\@EXB{EXB} \edef\EXB{}% 20 +%------------------------------------ +\edef\@Cat{Cat} \edef\Cat{}% 21 %--------------------------------------------------------------------------- \edef\@pk{pk}% \edef\@mps{mps}% @@ -69,6 +71,7 @@ \ifx\@tag\@EXA\edef\EXA{\@var}\fi% 19 \ifx\@tag\@EXB\edef\EXB{\@var}\fi% 20 %---------------------------------------- + \ifx\@tag\@Cat\edef\Cat{\@var}\fi% 21 \fi% }% %----------------------------------------------------------------------------- diff --git a/macros/latex-dev/base/README.md b/macros/latex-dev/base/README.md index cb626b79db..ae8444f5dd 100644 --- a/macros/latex-dev/base/README.md +++ b/macros/latex-dev/base/README.md @@ -1,7 +1,7 @@ The LaTeX kernel ================ -Release 2021-11-15 pre-release 1 +Release 2021-11-15 pre-release 2 Overview -------- diff --git a/macros/latex-dev/base/alltt.pdf b/macros/latex-dev/base/alltt.pdf index 22f9cff11c..637e33bf8b 100644 Binary files a/macros/latex-dev/base/alltt.pdf and b/macros/latex-dev/base/alltt.pdf differ diff --git a/macros/latex-dev/base/cfgguide.pdf b/macros/latex-dev/base/cfgguide.pdf index 5a8bf4282c..cc8ced07f7 100644 Binary files a/macros/latex-dev/base/cfgguide.pdf and b/macros/latex-dev/base/cfgguide.pdf differ diff --git a/macros/latex-dev/base/changes.txt b/macros/latex-dev/base/changes.txt index dfd7a9609f..50f916b233 100644 --- a/macros/latex-dev/base/changes.txt +++ b/macros/latex-dev/base/changes.txt @@ -6,6 +6,182 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ================================================================================ +2021-09-18 David Carlisle + + * ltpara.dtx: use a \hskip rather than \kern as the guard to + prevent more than one glue item being removed when the primitive + par is called twice to process the end of paragraph hooks. + +2021-09-12 David Carlisle + + * ltfntcmd.dtx: guard definition in \text@command with \unexpanded (gh/665) + +2021-09-12 Frank Mittelbach + + * ltoutenc.dtx (subsection{Definitions for the OT1 encoding}): + Move zero skip between i and j for hyphenation (gh/658) + +2021-09-10 Frank Mittelbach + + * ltfssini.dtx: + Improve handling of legacy changes to \bfdefault or \mddefault in + relation to \DeclareFontSeriesDefault setting (gh/663) + +2021-09-06 Frank Mittelbach + + * ltfinal.dtx (subsection{Lccodes and uccodes}): + Correctly upper and lowercase \ij and \IJ (gh/658) + +2021-08-30 Phelype Oleinik + + * lthooks.dtx (subsection{Using the hook}): + Clean up after \UseOneTimeHook and prevent a second usage (gh/606). + +2021-08-30 Phelype Oleinik + + * ltcmd.dtx (subsubsection{Copying a command and its internal structure}): + Add support for copying and showing ltcmd commands (gh/569). + +2021-08-27 Joseph Wright + + * ltfilehook.dtx: + Use \msg_... instead of \__kernel_msg... commands for normalized + error and warning commands. + + * ltfilehooks.dtx, lthooks.dtx, ltpara.dtx: + Internal changes to message names + + * ltcmd.dtx: + Check for end-of-enviroment commands + +2021-08-25 Phelype Oleinik + + * lthooks.dtx, ltcmdhooks.dtx, ltfilehook.dtx, ltclass.dtx, ltfiles.dtx: + Standardise generic hook names (gh/648). + +2021-08-20 Frank Mittelbach + + * lthooks.dtx: + Documentation updates for generic hook commands (gh/638). + + Deprecate \hook_disable:n, \hook_provide:n, + \hook_provide_reversed:n, \hook_provide_pair:nn, + \DisableHook, \ProvideHook, \ProvideReversedHook, + and \ProvideMirroredHookPair. + + Instead: \hook_activate_generic:n, \hook_disable_generic:n, + \ActivateGenericHook and \DisableGenericHook. + + * lterror.dtx (subsection{Specific errors}): + Improve \@badend error message (gh/587) + +2021-08-12 Frank Mittelbach + + * lthooks.dtx (subsubsection{Generic hooks for all environments}): + Fixed documentation of \AtBeginEnvironment and friends + -- was missing the main "env" argument (gh/646) + +2021-08-11 Marcel Krüger + + * ltluatex.dtx: + Define missing local copy of flush_list in ltluatex.lua found + by Michal Vlasák. + +2021-08-10 Phelype Oleinik + + * ltvers.dtx (section{Version Identification}): + Throw an error when a date 0000/00/00 is misused in \IncludeInRelease. + +2021-08-08 Frank Mittelbach + + * ltfinal.dtx (subsection{Prepare for suporting PDF management in backends}): + Default definition for \IfPDFManagementActiveTF added (gh/640) + +2021-08-07 Phelype Oleinik + + * ltcmd.dtx (subsection{Setting up a standard signature}): + Replicate argument processors for all embellishments (gh/639). + +2021-07-31 Frank Mittelbach + + * ltoutput.dtx (subsubsection{Float control}): + Add \ShowFloat to fltrace.sty so that you can easily display the + contents of a float register, argument is just the uppercase + letter (or letters or numbers) denoting the register. + +2021-07-28 Frank Mittelbach + + * ltsect.dtx (section| or |\caption|): + \contentsline now picks up all four arguments and doesn't rely on + the fourth being empty (gh/633) + +2021-07-27 Frank Mittelbach + + * lthooks.dtx: + Some clarification on hook command behavior. + Commands \ClearHookNext and \hook_gclear_next_code:n added (gh/565) + +2021-07-23 Frank Mittelbach + + * ltclass.dtx (section{Implementation}): + Make class/.../name one-time hooks; + Make package/.../name one-time hooks (gh/626) + + * ltfiles.dtx (section{File Handling}): + Make include/.../name one-time hooks (gh/626) + +2021-07-23 Marcel Krüger + + * tulm.fdd: + For Unicode engines, use OpenType version of Latin Modern Upright Italic. + +2021-07-20 Phelype Oleinik + + * lthooks.dtx: + Simplify \RemoveFromHook to not queue the removal of code chunks + that aren't yet in the hook (gh/625). + +2021-07-20 Phelype Oleinik + + * ltcmdhooks.dtx: + Fix usage of \@if@newcommand when patching a robust command (gh/623). + +2021-07-19 Frank Mittelbach + + * ltclass.dtx: Provide public names: + \IfPackageLoadedTF, \IfPackageLoadedWithOptionsTF, + \IfClassLoadedTF, \IfClassLoadedWithOptionsTF. + + Drop \@onlypremable restriction for several commands. + +2021-07-16 Frank Mittelbach + + * ltplain.dtx (section{Plain \TeX}): + Use 2 as value for \tracinglostchars so that one gets at least warnings + on the terminal (3 would be better as a missing char is an error) + +2021-07-12 David Carlisle + + * ltclass.dtx: fix for gh/617 prevent expansion in raw option list. + +2021-07-11 Frank Mittelbach + + * lterror.dtx (subsection{General commands}): + Provide \ClassNote and \PackageNote that write information to the + terminal but labels it as "Info" and not as "Warning", i.e. a cross + between \PackageWarning and \PackageInfo + +2021-07-08 Frank Mittelbach + + * ltcounts.dtx (subsection{Environment Counter Macros}): + New implementation for \counterwithout and \counterwithin + with an additional optional arg so it becomes a drop-in + replacement for amsmath \numberwithin + +2021-06-21 David Carlisle + + * base/utf8ienc.dtx: additional characters for gh/593 + 2021-06-09 Frank Mittelbach * ltshipout.dtx: diff --git a/macros/latex-dev/base/classes.dtx b/macros/latex-dev/base/classes.dtx index ffe04c620f..fdf0ef3a5b 100644 --- a/macros/latex-dev/base/classes.dtx +++ b/macros/latex-dev/base/classes.dtx @@ -53,7 +53,7 @@ %<*driver> \ProvidesFile{classes.drv} % - [2021/02/12 v1.4n + [2021/09/11 v1.4n % Standard LaTeX document class] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % \end{macrocode} @@ -221,9 +221,9 @@ % file has version number \fileversion, last revised \filedate.}} % % \author{% -% Copyright (C) 1992 by Leslie Lamport and -% Copyright (C) 1994-2020 by Frank Mittelbach and Johannes Braams and -% LaTeX Project Team +% Copyright (C) 1992 by Leslie Lamport \and +% Copyright (C) 1994-2021 by Frank Mittelbach, \and Johannes Braams and +% the \LaTeX\ Project Team % } % \date{\filedate} % \MaintainedByLaTeXTeam{latex} diff --git a/macros/latex-dev/base/classes.pdf b/macros/latex-dev/base/classes.pdf index 40f0cef13e..937b11968e 100644 Binary files a/macros/latex-dev/base/classes.pdf and b/macros/latex-dev/base/classes.pdf differ diff --git a/macros/latex-dev/base/clsguide.pdf b/macros/latex-dev/base/clsguide.pdf index 9f39397b24..4d049fe540 100644 Binary files a/macros/latex-dev/base/clsguide.pdf and b/macros/latex-dev/base/clsguide.pdf differ diff --git a/macros/latex-dev/base/cmfonts.pdf b/macros/latex-dev/base/cmfonts.pdf index d1707408ad..bdb26b2672 100644 Binary files a/macros/latex-dev/base/cmfonts.pdf and b/macros/latex-dev/base/cmfonts.pdf differ diff --git a/macros/latex-dev/base/cyrguide.pdf b/macros/latex-dev/base/cyrguide.pdf index 6b9ed561ea..5fca8b3953 100644 Binary files a/macros/latex-dev/base/cyrguide.pdf and b/macros/latex-dev/base/cyrguide.pdf differ diff --git a/macros/latex-dev/base/doc.pdf b/macros/latex-dev/base/doc.pdf index b5254608ea..60f15ff69f 100644 Binary files a/macros/latex-dev/base/doc.pdf and b/macros/latex-dev/base/doc.pdf differ diff --git a/macros/latex-dev/base/docstrip.pdf b/macros/latex-dev/base/docstrip.pdf index 08224e2a4c..325df35eb6 100644 Binary files a/macros/latex-dev/base/docstrip.pdf and b/macros/latex-dev/base/docstrip.pdf differ diff --git a/macros/latex-dev/base/encguide.pdf b/macros/latex-dev/base/encguide.pdf index 30aad2cd6c..98a03a7bb1 100644 Binary files a/macros/latex-dev/base/encguide.pdf and b/macros/latex-dev/base/encguide.pdf differ diff --git a/macros/latex-dev/base/exscale.pdf b/macros/latex-dev/base/exscale.pdf index 9785c78a4d..e00c839154 100644 Binary files a/macros/latex-dev/base/exscale.pdf and b/macros/latex-dev/base/exscale.pdf differ diff --git a/macros/latex-dev/base/fix-cm.pdf b/macros/latex-dev/base/fix-cm.pdf index d3e32f1678..cc3df9f5db 100644 Binary files a/macros/latex-dev/base/fix-cm.pdf and b/macros/latex-dev/base/fix-cm.pdf differ diff --git a/macros/latex-dev/base/fntguide.pdf b/macros/latex-dev/base/fntguide.pdf index d1da1e3f19..976d306413 100644 Binary files a/macros/latex-dev/base/fntguide.pdf and b/macros/latex-dev/base/fntguide.pdf differ diff --git a/macros/latex-dev/base/graphpap.pdf b/macros/latex-dev/base/graphpap.pdf index 7d65e21df6..bc9c785398 100644 Binary files a/macros/latex-dev/base/graphpap.pdf and b/macros/latex-dev/base/graphpap.pdf differ diff --git a/macros/latex-dev/base/ifthen.pdf b/macros/latex-dev/base/ifthen.pdf index 289b5c7f37..a291da6184 100644 Binary files a/macros/latex-dev/base/ifthen.pdf and b/macros/latex-dev/base/ifthen.pdf differ diff --git a/macros/latex-dev/base/inputenc.pdf b/macros/latex-dev/base/inputenc.pdf index 64c99acc9a..d8a2f584ed 100644 Binary files a/macros/latex-dev/base/inputenc.pdf and b/macros/latex-dev/base/inputenc.pdf differ diff --git a/macros/latex-dev/base/lamport-manual.err b/macros/latex-dev/base/lamport-manual.err new file mode 100644 index 0000000000..1f72c34938 --- /dev/null +++ b/macros/latex-dev/base/lamport-manual.err @@ -0,0 +1,383 @@ +\documentclass{article} + +\newcommand{\reportedby}[2]{{\small [First reported by #1 on \mbox{#2}.]}} +\newcommand{\erratum}[1]{\subsubsection*{#1}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% MODIFICATION DATE % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% Defines \moddate to expand to modification date such as % +% % +% 5 Aug 1991 % +% % +% and \prdate to print it in a large box. Assumes editor % +% updates modification date in standard SRC Gnu Emacs style. % +% (should work for any user name). % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\ypmd{% % +% % +% % + Last modified on Thu 5 August 2021 at 12:56:59 PST by lamport % + endypmd} % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\newcommand{\moddate}{\expandafter\xpmd\ypmd} % +\def\xpmd Last modified % +on #1 #2 #3 #4 at #5:#6:#7 #8 by #9 endypmd{#2 #3 #4} % +\newcommand{\prdate}{\noindent\fbox{\Large\moddate}} % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand{\mytt}{\normalfont\ttfamily} +\newcommand{\cindex}{\index} +\newcommand\bs{\char '134 } % A backslash character for \tt font + +\title{Errata to the Second Edition of the \LaTeX\ Manual} +\author{Leslie Lamport} +\date{\moddate} + +\begin{document} +\maketitle + +\noindent These are all the errors and omissions to the manual, +\LaTeX: {\em A Document Preparation System}, second edition, published +by Addison-Wesley, reported as of \moddate. Positions in the book are +indicated by page and line number, where the top line of a page is +number 1 and the bottom line is number $-1$. A running head and a +page number are not considered to be lines, but all other lines are. +Please report any additional errors to The \LaTeX\ Project at +\texttt{www.latex-project.org/bugs/}\,. + + +\subsection*{Errors Corrected in the First Printing} + +\erratum{page 25, example of \texttt{verse} environment} +Replace \verb|{\em all\/}| by \verb|\emph{all}|. + \reportedby{Rosemary Bailey}{29 Aug 1994} + +\erratum{page 28, first paragraph} +Not an error, but it would be +helpful to add the following sentence to the end of that paragraph: + ``(If a declaration has arguments, they become additional +arguments of the corresponding environment's \verb|\begin| command.)'' + + +\erratum{page 33, line 10} +Add \verb|\]| to the list of fragile commands. + \reportedby{Rosemary Bailey}{29 Aug 1994} + +\erratum{page 43, table 3.5} +Add an entry for \verb|\notin| ($\notin$). + \reportedby{Rosemary Bailey}{29 Aug 1994} + +\erratum{page 72, two examples} +Change \verb|{\em ...}| to \verb|\emph{...}| + \reportedby{Rosemary Bailey}{29 Aug 1994} + +\erratum{page 101} +This is not an error, but some readers will find it helpful if, in the +descriptions of \verb|\setlength| and \verb|\addtolength|, +\verb|\gnat| were replaced by \verb|\parskip|. + \reportedby{Ellen Gilkerson}{9 Aug 1994} + +\erratum{page 108, lines 7 and 10} +This is not an error, but it might be easier to understand +the example if \verb|\len| were replaced by something like \verb|\saved|. + \reportedby{Rosemary Bailey}{29 Aug 1994} + +\erratum{page 139, lines $-8$ and $-9$} + +The funny break between these two lines should be eliminated. +\reportedby{Malcolm Clark}{9 Aug 1994} + +\erratum{page 177, line $-12$} + +The \verb|twocolumn| option cannot be used with the \verb|letters| +class. + +\erratum{page 197, lines 7 and 9} + +The \verb|figure*| environment is ended by \verb|\end{figure*}|, and +the \verb|table*| environment is ended by \verb|\end{table*}|. +\reportedby{Malcolm Clark}{9 Aug 1994} + +\erratum{page 228} + +Add a note that, before running a LaTeX2.09 file in compatibility mode +in LaTeX2e, you should delete the old versions of the auxiliary files. + +\subsection*{Errors Corrected in the Second Printing} + +\erratum{page xv, line 10} +``Chris Rowley'' should come after ``Sebastian Rahtz''. +\reportedby{Martin Schr\"{o}der}{24 April 1995} + + + +\erratum{page 29, line $-10$} +Change ``error indicator line'' to ``error locator line''. +\reportedby{Xavier Perramon}{2 Jan 1995} + +\erratum{page 37, lines 26--28} +Change the two sentences ``None of these \ldots formula.'' to: +\begin{quote} +These text-producing commands can be used in math mode to put ordinary +text in a formula. (When the command is used in math mode, its +argument is processed in LR mode.) The declarations cannot be used in +math mode. Section 3.3.8 explains how to change the type style of a +formula's math-mode symbols. +\end{quote} +\reportedby{Mike Piff}{7 Mar 1995} + +\erratum{page 39, line 6} +Replace ``any mode'' with ``paragraph and LR mode''. Also, +after line 8, add: +\begin{quote} +The commands \verb|\dag|, \verb|\ddag|, \verb|\S|, and \verb|\P| +can also be used in math mode. +\end{quote} + +\erratum{page 53, line 24} +Change ``are needed in the'' to ``are used in the'' +\reportedby{Mike Piff}{21 Oct 1994} + +\erratum{page 80, line 1} +The section heading should not be outdented. +\reportedby{Martin Schr\"{o}der}{23 Jan 1995} + +\erratum{page 83, line $-8$} +Change ``\verb|\resettime|'' to ``\verb|\settime|''. + +\erratum{page 84, after line $11$} Add the following sentence: ``The +\hbox{\verb|\onlyslides|} and \hbox{\verb|\onlynotes|} commands may +not work right if a \texttt{slide}, \texttt{overlay}, or \texttt{note} +environment appears in the argument of any command.'' +\reportedby{Eike Ritter}{May 1996} + +\erratum{page 153, line 1} +Add ``or subentry'' after ``entry''. +\reportedby{Martin Schr\"{o}der}{22 Feb 1995} + +\erratum{page 171} +Add the following before line $-4$: +\begin{description} +\item[\mytt \bs columnwidth] +Normal width + \cindex{columnwidth}% +of a column; +% \index{column!width}% + \index{width!of column}% +equals \verb|\textwidth| except for multiple-column styles. +Its value should not be changed with the length-setting commands. +\end{description} +Also, in line $-4$, change \verb|\textwidth| to \verb|\columnwidth|. +%\reportedby{Volker Kuhlmav}{20 Jan 1995} +\reportedby{Rosemary Bailey}{9 Sep 1994} + +\erratum{page 180, lines 15--19} +% +Replace these five lines (which begin ``These commands are overridden'') +with: +\begin{itemize} \item[] +To override a heading on a right-hand page (any page for one-sided +printing), put a \verb|\markright| after the sectioning command and in +its mandatory argument, and add an optional argument without the +\verb|markright|, as in +\begin{itemize} +\item[] + \verb|\chapter[Gnu Scents]{Gnu Scents\markright{|\textit{right\_head}\verb|}}|\\ + \verb|\markright{|\textit{right\_head}\verb|}| +\end{itemize} +To change the heading on a left-hand page, put a \verb|\markboth| +command immediately after the sectioning command. +\end{itemize} +\reportedby{Jerome Breitenbach}{14 Dec 1995} + +\erratum{page 182} +The dimensions +\verb|\pageheight| and \verb|\pagewidth| +should be \verb|\paperheight| and \verb|\paperwidth|, +respectively. (The index entries on page 260 should also be changed.) +\reportedby{Alan Jeffrey, on behalf of a user}{12 Sep 1995} +\erratum{page 192, line 19} +Change ``\emph{cmd}'' to ``\emph{def}''. +\reportedby{Martin Schr\"{o}der}{9 Mar 1995} + + +\erratum{page 195, line 14} +Change ``numbered `within' it'' to ``numbered directly `within' it''. +\reportedby{Martin Schr\"{o}der}{5 Dec 1994} + +\erratum{page 197, line 14} +After ``\verb|\textwidth|'' add ``or \verb|\columnwidth|'' +\reportedby{Volker Kuhlmann}{22 Jan 1995} + +\erratum{page 226} + +After line 7, add +\begin{quote} +These declarations may not be used in math mode. +\end{quote} +Replace lines 16-19 (beginning ``None of these commands'') with +\begin{quote} +When these commands are used in math mode, the \emph{text} +argument is processed in LR mode. + +These commands and declarations are robust. Words typeset in +typewriter style are not hyphenated except where permitted by \verb|\-| +commands. +\end{quote} +\reportedby{Marc Lavine}{22 Aug 1995} + +\erratum{page 228} +To the section ``Type Styles and Sizes'', add the following sentence: +A few mathematical symbols now require the \texttt{latexsym} package---see +Tables 3.4--3.7. + +\subsection*{Errors Corrected in the Sixteenth Printing} + +\erratum{page 42, line 14} +Change ``through a symbol'' by ``through a relation symbol''. +\reportedby{Frank Mittelbach}{15 Nov 1996} + +\erratum{page 42, Table 3.4} +\verb|\land| should be listed as a synonym for \verb|\wedge|, and +\verb|\lor| should be listed as a synonym for \verb|\vee|. +\reportedby{Chris Rowley}{28 Oct 1998} + +\erratum{page 43, Table 3.7} +\verb|\lnot| should be listed as a synonym for \verb|\neg|. +\reportedby{Chris Rowley}{15 Oct 1998} + +\erratum{page 137} This is not an error, but it would be better to +change lines 23 and 24 to: +\begin{quote} +\LaTeX\ + \index{file!not found error}% + \index{file!nonexistent}% +is trying to read a file that apparently doesn't exist. If the missing +file has the extension \texttt{tex}, then \LaTeX\ is trying to + \index{input)@\verb+\input+!of nonexistent file}% + \index{include)@\verb+\include+!of nonexistent file}% +\verb|\input| or \verb|\include| it; if it +\end{quote} + +\erratum{page 171, line 19} +Change the description of \verb|\indent| to: +\begin{description} +\item[\mytt \bs indent] +Produces a +% \cindex{indent}% +% \index{paragraph!indentation}% +horizontal space whose width equals the width of the +paragraph indentation. It can be used to add a paragraph indentation +where one would otherwise be suppressed. (If it doesn't work, +try typing \verb|\indent\indent|.) Robust. +\end{description} +\reportedby{Chris Rowley}{15 Oct 1998} + +\erratum{page 179, line 19} +% +Change to: +\begin{quote} +page style for the \texttt{article} and \texttt{report} document classes. +\end{quote} +\reportedby{Stephen J. Alter}{17 Sep 1997} + +\erratum{page 195, line 28} +Replace ``\textit{num}$_1$ and \textit{num}$_1$ are numbers'' +with ``\textit{num}$_1$ and \textit{num}$_2$ are numbers''. +\reportedby{Magnus Lewis-Smith}{14 Jan 1999} + +\erratum{page 196, line $-5$} +Change \verb|\newboolean{|\emph{name}\verb|}| to +\verb|\newboolean{|\emph{nam}\verb|}|. +\reportedby{Christopher von B\"{u}low}{28 Aug 2000} + + +\erratum{page 198, line 14} +Change ``it will not be printed'' to ``it will usually not be printed''. + +\erratum{page 218, line $-14$} +Change ``\texttt{tabular}'' to ``\texttt{tabbing}''. +\reportedby{Carlos Pita}{27 Aug 2001} + +\erratum{foldout, column 3, line 3} +Replace \emph{style} with \emph{class}. \reportedby{Christopher von B\"{u}low}{28 Aug 2000} + +\subsection*{Errors Corrected in the Seventeenth Printing} + +\erratum{page 51, line 8} +Change ``The \verb|\,| command'' to ``The \verb|\,| and \verb*|\ | commands''. +\reportedby{Phillip J Shelton}{2 Jul 1999} + +\erratum{page 61, second example (middle of page)} +Remove the \verb|\mbox{}| following the \texttt{tabbing} environment. +\reportedby{Marcin Wolinski}{17 Sep 2003} + +\erratum{page 210, line 20} +Add a space after ``bibliography''. +\reportedby{Marcin Wolinski}{17 Sep 2003} + +\subsection*{Error Corrected in the Twenty-First Printing} +\erratum{page 198, line $-11$} +The sentence beginning ``The last three rules'' is hard to read. Better +would be: +\begin{quote} +\noindent The last three rules are suspended when a + \verb|\clearpage|,\linebreak + \verb|\cleardoublepage|, or + \verb|\end{document}| command occurs, +at which point all unprocessed figures and tables are allowed a +\hbox{\mytt p} option and printed. +\end{quote} +\reportedby{Paul Stanford}{9 Oct 2004} + +\subsection*{Error Corrected in the Twenty-Second Printing} + +\erratum{page 253, column 2, lines $-5$ and $-6$} + +The two index entries for \verb|\ldots| should be combined. + + +\reportedby{Christopher Dutchyn}{22 July 2005} + + +\subsection*{Uncorrected Errors} + +\erratum{page 206, line 17 (\texttt{\string\multicolumn} explanation)} + +Insert the following text right after ``\texttt{l}, and \texttt{r}.'' +\begin{quote} +If the part of the environment's \emph{cols} argument being replaced +immediately follows an \texttt{@} expression, then the \emph{item} +will be preceded by a normal intercolumn space unless the +\verb|\multicolumn| command's \emph{col} argument begins with an +\texttt{@} expression. In particular, beginning the \emph{col} +argument with \verb|@{}| will suppress that space. +\end{quote} +\reportedby{Ulrike Fischer, Frank Mittelbach}{23 Sep 2018} + + +\erratum{page 201, line $-1$ and page 202, line 1 (\emph{next\_tab\_stop} + explanation)} +Change ``it is reset to the value of \emph{left\_margin\_tab}'' to ``it is +reset to the value of $\mathit{left\_margin\_tab} + 1$''. +\reportedby{Austin Kim}{25 June 2021} + +\erratum{page 202, lines 23--24 (\texttt{\string\\} command) + and lines 25--27 (\texttt{\string\kill} command)} +Change ``to the value of +\emph{left\_margin\_tab}'' to ``to the value of $\mathit{left\_margin\_tab} + 1$''. +\reportedby{Austin Kim}{25 June 2021} + +% \erratum{page 202, line 25--27 (\texttt{\string\kill} command)} +% Change ``sets the value of \emph{next\_tab\_stop} to the value of +% \emph{left\_margin\_tab}'' to ``sets the value of \emph{next\_tab\_stop} equal +% to the value of $\mathit{left\_margin\_tab} + 1$''. + +\end{document} + +%try +%try \ No newline at end of file diff --git a/macros/latex-dev/base/lamport-manual.pdf b/macros/latex-dev/base/lamport-manual.pdf new file mode 100644 index 0000000000..06adb9a77a Binary files /dev/null and b/macros/latex-dev/base/lamport-manual.pdf differ diff --git a/macros/latex-dev/base/latexchanges.pdf b/macros/latex-dev/base/latexchanges.pdf index 5664c1789b..75144a2fd0 100644 Binary files a/macros/latex-dev/base/latexchanges.pdf and b/macros/latex-dev/base/latexchanges.pdf differ diff --git a/macros/latex-dev/base/latexrelease.pdf b/macros/latex-dev/base/latexrelease.pdf index cdc6dec415..0bdfb2ccf3 100644 Binary files a/macros/latex-dev/base/latexrelease.pdf and b/macros/latex-dev/base/latexrelease.pdf differ diff --git a/macros/latex-dev/base/latexsym.pdf b/macros/latex-dev/base/latexsym.pdf index 5f1b36c59a..5b7ae7f8b4 100644 Binary files a/macros/latex-dev/base/latexsym.pdf and b/macros/latex-dev/base/latexsym.pdf differ diff --git a/macros/latex-dev/base/lb2.err b/macros/latex-dev/base/lb2.err index 767cc86a05..53148e2833 100644 --- a/macros/latex-dev/base/lb2.err +++ b/macros/latex-dev/base/lb2.err @@ -36,9 +36,10 @@ % % v1.0a - changed name from errata.cls to ttcterrata.cls % v1.0b - added \arraybackslash +% v1.0c - and took it out again and used \tabularnewline instead \ProvidesClass{ttcterrata} - [2021/04/22 v1.0b Mini class for errata files; subject to change (FMi)] + [2021/08/03 v1.0c Mini class for errata files; subject to change (FMi)] \LoadClass{article} @@ -63,7 +64,9 @@ \setbox\@tempboxa\vbox\bgroup \let\endgobble\egroup \let\hideamp\relax - \let\\\relax\let\par\@@par} + \let\\\relax + \let\tabularnewline\relax + \let\par\@@par} \newcommand*\hideamp{&} @@ -140,7 +143,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -154,18 +157,18 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } \newcommand\CHAPTER[1]{\endgobble - &\\[4pt]% - \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \\} + &\tabularnewline[4pt]% + \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \tabularnewline} \newenvironment{erratalist} - {\begin{longtable}{r>{\raggedright\arraybackslash}p{2cm}l>{\raggedright\arraybackslash}p{10cm}l}} + {\begin{longtable}{r>{\raggedright}p{2cm}l>{\raggedright}p{10cm}l}} {\endgobble\end{longtable}} \newcommand\erratatitle[2] @@ -213,7 +216,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -228,7 +231,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp diff --git a/macros/latex-dev/base/lb2.pdf b/macros/latex-dev/base/lb2.pdf index f8e5526427..6c01b2a28f 100644 Binary files a/macros/latex-dev/base/lb2.pdf and b/macros/latex-dev/base/lb2.pdf differ diff --git a/macros/latex-dev/base/letter.pdf b/macros/latex-dev/base/letter.pdf index 846fabe6bc..258a768277 100644 Binary files a/macros/latex-dev/base/letter.pdf and b/macros/latex-dev/base/letter.pdf differ diff --git a/macros/latex-dev/base/lgc2.err b/macros/latex-dev/base/lgc2.err index cbee8d6f35..96fd378fe9 100644 --- a/macros/latex-dev/base/lgc2.err +++ b/macros/latex-dev/base/lgc2.err @@ -34,9 +34,10 @@ % % v1.0a - changed name from errata.cls to ttcterrata.cls % v1.0b - added \arraybackslash +% v1.0c - and took it out again and used \tabularnewline instead \ProvidesClass{ttcterrata} - [2021/04/22 v1.0b Mini class for errata files; subject to change (FMi)] + [2021/08/03 v1.0c Mini class for errata files; subject to change (FMi)] \LoadClass{article} @@ -61,7 +62,9 @@ \setbox\@tempboxa\vbox\bgroup \let\endgobble\egroup \let\hideamp\relax - \let\\\relax\let\par\@@par} + \let\\\relax + \let\tabularnewline\relax + \let\par\@@par} \newcommand*\hideamp{&} @@ -138,7 +141,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -152,18 +155,18 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } \newcommand\CHAPTER[1]{\endgobble - &\\[4pt]% - \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \\} + &\tabularnewline[4pt]% + \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \tabularnewline} \newenvironment{erratalist} - {\begin{longtable}{r>{\raggedright\arraybackslash}p{2cm}l>{\raggedright\arraybackslash}p{10cm}l}} + {\begin{longtable}{r>{\raggedright}p{2cm}l>{\raggedright}p{10cm}l}} {\endgobble\end{longtable}} \newcommand\erratatitle[2] @@ -211,7 +214,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -226,7 +229,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp diff --git a/macros/latex-dev/base/lgc2.pdf b/macros/latex-dev/base/lgc2.pdf index 5ef3d28403..2bf91f2d66 100644 Binary files a/macros/latex-dev/base/lgc2.pdf and b/macros/latex-dev/base/lgc2.pdf differ diff --git a/macros/latex-dev/base/lppl.pdf b/macros/latex-dev/base/lppl.pdf index ce56cf02d9..f55fe97188 100644 Binary files a/macros/latex-dev/base/lppl.pdf and b/macros/latex-dev/base/lppl.pdf differ diff --git a/macros/latex-dev/base/ltclass.dtx b/macros/latex-dev/base/ltclass.dtx index 643587b0ef..06e0f437af 100644 --- a/macros/latex-dev/base/ltclass.dtx +++ b/macros/latex-dev/base/ltclass.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltclass.dtx} - [2021/06/09 v1.4c LaTeX Kernel (Class & Package Interface)] + [2021/08/25 v1.4f LaTeX Kernel (Class & Package Interface)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltclass.dtx} @@ -68,6 +68,7 @@ % \changes{v1.0z}{1998/03/21}{Added to documentation of filecontents} % \changes{v1.1c}{1998/08/17}{(RmS) Minor documentation fixes.} % \changes{v1.3o}{2020/08/21}{Integration of new hook management interface} +% \changes{v1.4f}{2021/08/25}{Standardise generic hook names (gh/648)} % % % \section{Introduction} @@ -311,27 +312,49 @@ % default option handler, which is not used for |landscape| as that % option is explicitly declared. % +% \DescribeMacro\IfPackageLoadedTF +% \DescribeMacro\IfClassLoadedTF % \DescribeMacro\@ifpackageloaded -% To find out if a package has already been loaded, use\\ % \DescribeMacro\@ifclassloaded -% |\@ifpackageloaded{|\meta{package}|}{|\meta{true}|}{|\meta{false}|}|. -% +% To find out if a package has already been loaded, use +% \begin{quote} +% |\IfPackageLoadedTF{|\meta{package}|}{|\meta{true}|}{|\meta{false}|}|\\ +% \end{quote} +% or the old name \cs{@ifpackageloaded}. +% +% \DescribeMacro\IfPackageAtLeastTF +% \DescribeMacro\IfClassAtLeastTF % \DescribeMacro\@ifpackagelater +% \DescribeMacro\@ifclasslater % \changes{v1.1i}{2013/07/07}{Correctly describe how the date in % \cs{@ifpackagelater} is used} % To find out if a package has already been loaded with a version % equal to or more -% recent than \meta{version}, use\\ -% \DescribeMacro\@ifclasslater -% |\@ifpackagelater{|\meta{package}|}{|\meta{version}|}{|^^A -% \meta{true}|}{|\meta{false}|}|. -% +% recent than \meta{date}, use +% \begin{quote} +% |\IfPackageAtLeastTF{|\meta{package}|}{|\meta{date}|}{|^^A +% \meta{true}|}{|\meta{false}|}| +% \end{quote} +% or the old name \cs{@ifpackagelater}. + +% \DescribeMacro\IfFormatAtLeastTF +% To test the format date use +% \begin{quote} +% |\IfFormatAtLeastTF{|\meta{date}|}{|^^A +% \meta{true}|}{|\meta{false}|}| +% \end{quote} +% +% \DescribeMacro\IfPackageLoadedWithOptionsTF +% \DescribeMacro\IfClassLoadedWithOptionsTF % \DescribeMacro\@ifpackagewith +% \DescribeMacro\@ifclasswith % To find out if a package has already been loaded with at least the % options \meta{options}, use -% \DescribeMacro\@ifclasswith -% |\@ifpackagewith{|\meta{package}|}{|\meta{options}|}{|^^A -% \meta{true}|}{|\meta{false}|}|. +% \begin{quote} +% |\IfPackageLoadedWithOptionsTF{|\meta{package}|}{|\meta{options}|}{|^^A +% \meta{true}|}{|\meta{false}|}| +% \end{quote} +% or the old name \cs{@ifpackagewith}. % % There exists one package that can't be tested with the above % commands: the \texttt{fontenc} package pretends that it was never @@ -499,9 +522,10 @@ % \begin{macro}{\@classoptionslist} % List of options of the main class. % \changes{v1.0u}{1996/07/26}{made only preamble} +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \let\@classoptionslist\relax -\@onlypreamble\@classoptionslist +%\@onlypreamble\@classoptionslist % \end{macrocode} % \end{macro} % @@ -517,9 +541,10 @@ % \changes{v1.0u}{1996/07/26}{made only preamble} % List of options of the main class that haven't been declared or % loaded as class option files. +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \let\@unusedoptionlist\@empty -\@onlypreamble\@unusedoptionlist +%\@onlypreamble\@unusedoptionlist % \end{macrocode} % \end{macro} % @@ -571,11 +596,10 @@ % \begin{macro}{\@clsextension} % \begin{macro}{\@pkgextension} % The two possible values of |\@currext|. +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@clsextension{cls} \def\@pkgextension{sty} -\@onlypreamble\@clsextension -\@onlypreamble\@pkgextension % \end{macrocode} % \end{macro} % \end{macro} @@ -811,10 +835,11 @@ % % \begin{macro}{\@ptionlist} % Returns the option list of the file. +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@ptionlist#1{% \@ifundefined{opt@#1}\@empty{\csname opt@#1\endcsname}} -\@onlypreamble\@ptionlist +%\@onlypreamble\@ptionlist % \end{macrocode} % \end{macro} % @@ -824,11 +849,10 @@ % Checks to see whether a file has been loaded. % \changes{v0.2t}{1994/01/18} % {Fix typo \cs{@pkgetension}} +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@ifpackageloaded{\@ifl@aded\@pkgextension} \def\@ifclassloaded{\@ifl@aded\@clsextension} -\@onlypreamble\@ifpackageloaded -\@onlypreamble\@ifclassloaded % \end{macrocode} % % \begin{macrocode} @@ -838,11 +862,12 @@ \else \expandafter\@firstoftwo \fi} -\@onlypreamble\@ifl@aded % \end{macrocode} % \end{macro} % \end{macro} % +% +% % \begin{macro}{\@ifpackagelater} % \begin{macro}{\@ifclasslater} % |\@ifpackagelater{|\meta{name}|}{YYYY/MM/DD}{|\meta{true @@ -852,17 +877,17 @@ % A better name for it would therefore been % |\@ifpackagelaterorequal| but it is in use for more than 30 % years, so \ldots +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@ifpackagelater{\@ifl@ter\@pkgextension} \def\@ifclasslater{\@ifl@ter\@clsextension} -\@onlypreamble\@ifpackagelater -\@onlypreamble\@ifclasslater % \end{macrocode} % \end{macro} % \end{macro} % % % +% % \begin{macro}{\IfPackageAtLeastTF} % \begin{macro}{\IfClassAtLeastTF} % \begin{macro}{\IfFormatAtLeastTF} @@ -870,6 +895,7 @@ % code}|}{|\meta{false code}|}| % Test if the format is later or equal to the given date. % \changes{v1.3k}{2020/04/07}{Macro added; also in rollback (gh/168)} +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} % %<*2ekernel|latexrelease> @@ -878,9 +904,6 @@ \def\IfFormatAtLeastTF{\@ifl@t@r\fmtversion} \let\IfPackageAtLeastTF\@ifpackagelater \let\IfClassAtLeastTF\@ifclasslater -\@onlypreamble\IfFormatAtLeastTF -\@onlypreamble\IfPackageAtLeastTF -\@onlypreamble\IfClassAtLeastTF % \end{macrocode} % For rollback pretend it was available since the beginning of dawn. % \begin{macrocode} @@ -899,11 +922,11 @@ % \end{macro} % % \begin{macro}{\@ifl@ter} +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@ifl@ter#1#2{% \expandafter\@ifl@t@r \csname ver@#2.#1\endcsname} -\@onlypreamble\@ifl@ter % % \end{macrocode} % @@ -942,9 +965,6 @@ %<*2ekernel> % \end{macrocode} % -% \begin{macrocode} -\@onlypreamble\@ifl@t@r -% \end{macrocode} % \end{macro} % % \changes{v1.1j}{2016/06/20} @@ -974,17 +994,15 @@ % |\@ifpackagewith{|\meta{name}|}{|\meta{option-list}|}| % Checks that \meta{option-list} is a subset of the options % \textbf{with} which \meta{name} was loaded. +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} \def\@ifpackagewith{\@if@ptions\@pkgextension} \def\@ifclasswith{\@if@ptions\@clsextension} -\@onlypreamble\@ifpackagewith -\@onlypreamble\@ifclasswith % \end{macrocode} % % \begin{macrocode} \def\@if@ptions#1#2{% \@expandtwoargs\@if@pti@ns{\@ptionlist{#2.#1}}} -\@onlypreamble\@if@ptions % \end{macrocode} % % Probably shouldn't use |\CurrentOption| here\ldots (changed to @@ -993,6 +1011,7 @@ % {Add extra ,s so `two' is not matched with `twocolumn'} % \changes{v1.1i}{2011/08/19} % {Re-jig definition after more stringent \cs{in@} test.} +% \changes{v1.4e}{2021/07/19}{Drop \cs{@onlypreamble}} % \begin{macrocode} % %\IncludeInRelease{2017/01/01}% @@ -1038,12 +1057,45 @@ %<*2ekernel> % \end{macrocode} % -% \begin{macrocode} -\@onlypreamble\@if@pti@ns -% \end{macrocode} % \end{macro} % \end{macro} % +% +% +% +% \begin{macro}{\IfPackageLoadedTF,\IfPackageLoadedWithOptionsTF, +% \IfClassLoadedTF,\IfClassLoadedWithOptionsTF} +% More public names for the commands already available for a long time. +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/11/15}% +% {\IfPackageLoadedtTF}{Test package loading}% +\let \IfPackageLoadedTF \@ifpackageloaded +\let \IfClassLoadedTF \@ifclassloaded +\let \IfPackageLoadedWithOptionsTF \@ifpackagewith +\let \IfClassLoadedWithOptionsTF \@ifclasswith +% \end{macrocode} +% For rollback pretend it was available since the beginning of dawn. +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\IfPackageLoadedtTF}{Test package loading}% +% +%\let \IfPackageLoadedTF \@ifpackageloaded +%\let \IfClassLoadedTF \@ifclassloaded +%\let \IfPackageLoadedWithOptionsTF \@ifpackagewith +%\let \IfClassLoadedWithOptionsTF \@ifclasswith +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% +% +% % \begin{macro}{\ProvidesPackage} % Checks that the current filename is correct, and defines % |\ver@filename|. @@ -1979,8 +2031,9 @@ \ifx\@nnil##1\@nnil\else % \end{macrocode} % +% \changes{v1.4d}{2021/07/12}{add \cs{unexpanded}} % \begin{macrocode} - \noexpand\@onefilewithoptions##1[{#2}][{#4}]% + \noexpand\@onefilewithoptions##1[{\unexpanded{#2}}][{#4}]% \noexpand\@pkgextension \fi \expandafter\reserved@b @@ -2289,7 +2342,7 @@ % \changes{v1.3u}{2020/11/20} % {Copy option list to the requested package.} % \changes{v1.4c}{2021/06/06} -% {Copy raw raw options for gh/580} +% {Copy raw options for gh/580} % \begin{macrocode} \expandafter\let \csname opt@\@currpkg@reqd\expandafter\endcsname @@ -2309,15 +2362,17 @@ % package otherwise, if it is \cs{@clsextension}, a class, so % depending on that we execute different hooks. If the extension is % neither, then it is another type of file without special hooks. +% \changes{v1.4e}{2021/07/23}{Make class/name/before a one-time hook} +% \changes{v1.4e}{2021/07/23}{Make package/name/before a one-time hook} % \begin{macrocode} %----------------------------------------- \ifx\@currext\@pkgextension \UseHook{package/before}% - \UseHook{package/before/\@currname}% + \UseOneTimeHook{package/\@currname/before}% \else \ifx\@currext\@clsextension \UseHook{class/before}% - \UseHook{class/before/\@currname}% + \UseOneTimeHook{class/\@currname/before}% \fi \fi % \end{macrocode} @@ -2376,27 +2431,35 @@ % \end{macrocode} % And same procedure, James, when we are finished loading, except % that the hook order is now reversed. +% \changes{v1.4e}{2021/07/23}{Make class/name/after a one-time hook} +% \changes{v1.4e}{2021/07/23}{Make package/name/after a one-time hook} % \begin{macrocode} %----------------------------------------- \ifx\@currext\@pkgextension - \UseHook{package/after/\@currname}% + \UseOneTimeHook{package/\@currname/after}% \UseHook{package/after}% \else \ifx\@currext\@clsextension - \UseHook{class/after/\@currname}% + \UseOneTimeHook{class/\@currname/after}% \UseHook{class/after}% \fi \fi}% %----------------------------------------- \@ifl@aded\@currext\@currname{}{\reserved@a}} % \end{macrocode} -% \end{macro} -% +% +% \changes{v1.4f}{2021/08/25}{Declare non-generic package and class hooks} +% Now declare the non-generic package and class hooks used above: % \begin{macrocode} -% +\NewHook{package/before} +\NewHook{class/before} +\NewReversedHook{package/after} +\NewReversedHook{class/after} % \end{macrocode} -% +% \end{macro} +% % \begin{macrocode} +% %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% % {\@onefilewithoptions}{Hooks and unused options issue}% diff --git a/macros/latex-dev/base/ltcmd.dtx b/macros/latex-dev/base/ltcmd.dtx index 6f2153c6ea..04be2abfbf 100644 --- a/macros/latex-dev/base/ltcmd.dtx +++ b/macros/latex-dev/base/ltcmd.dtx @@ -34,8 +34,8 @@ %%% From File: ltcmd.dtx % % \begin{macrocode} -\def\ltcmdversion{v1.0f} -\def\ltcmddate{2021-06-04} +\def\ltcmdversion{v1.0h} +\def\ltcmddate{2021-08-30} % \end{macrocode} % %<*driver> @@ -343,8 +343,7 @@ % % \begin{macro}{\@@_declare_cmd:Nnn, \@@_declare_expandable_cmd:Nnn} % \begin{macro}{\@@_declare_cmd_aux:Nnn} -% \begin{macro} -% {\@@_declare_cmd_internal:Nnnn, \@@_declare_cmd_internal:cnxn} +% \begin{macro}{\@@_declare_cmd_internal:Nnnn} % The main functions for creating commands set the appropriate flag then % use the same internal code to do the definition. % \begin{macrocode} @@ -400,7 +399,6 @@ #4 \@@_break_point:n {#2} } -\cs_generate_variant:Nn \@@_declare_cmd_internal:Nnnn { cnx } % \end{macrocode} % \end{macro} % \end{macro} @@ -565,15 +563,8 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_declare_env_internal:nnnn #1#2#3#4 { - \@@_declare_cmd_internal:cnxn { environment~ #1 } {#2} - { - \cs_set_nopar:Npx \exp_not:c { environment~ #1 ~end~aux } - { - \exp_not:N \exp_not:N \exp_not:c { environment~ #1~end~aux~ } - \exp_not:n { \exp_not:o \l_@@_args_tl } - } - \exp_not:n {#3} - } + \exp_args:Nc \@@_declare_cmd_internal:Nnnn { environment~ #1 } {#2} + {#3} { \cs_set_nopar:cpx { environment~ #1 ~end } { \exp_not:c { environment~ #1 ~end~aux } } @@ -584,6 +575,14 @@ \cs_set_eq:cc { end #1 } { environment~ #1 ~end } } } +\cs_new_protected:Npn \@@_set_environment_end:n #1 + { + \cs_set_nopar:cpx { environment~ #1 ~end~aux } + { + \exp_not:c { environment~ #1 ~end~aux~ } + \exp_not:o \l_@@_args_tl + } + } % \end{macrocode} % \end{macro} % \end{macro} @@ -639,7 +638,10 @@ \tl_set:Nn \l_@@_fn_code_tl {#2} \tl_set:Nn \l_@@_defaults_tl {#5} \tl_set:Nn \l_@@_process_all_tl {#6} - #4 \@@_run_code: + #4 + \bool_if:NT \l_@@_environment_bool + { \exp_args:No \@@_set_environment_end:n \l_@@_environment_str } + \@@_run_code: } \cs_generate_variant:Nn \@@_start_aux:NNnnnn { cc } % \end{macrocode} @@ -1505,12 +1507,21 @@ % % \begin{macro}{\@@_add_type_E:w} % The \texttt{E}-type argument needs a special handling of default -% values. +% values. Since each embellishment is a separate argument, it +% also needs to replicate the argument processors for each embellishment +% argument so that the numbers of arguments and processors remain in sync. +% \changes{v1.0g}{2021/08/07} +% {Replicate argument processors for all embellishments (gh/639)} % \begin{macrocode} \cs_new_protected:Npn \@@_add_type_E:w #1#2 { \@@_flush_m_args: \@@_add_default_E:nn {#1} {#2} + \use:x + { + \@@_replicate_processor:nn { \tl_count:n {#1} } + { \exp_not:o \l_@@_process_one_tl } + } \@@_add_grabber:N E \tl_put_right:Nn \l_@@_signature_tl { {#1} } \@@_prepare_signature:N @@ -1518,6 +1529,48 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_replicate_processor:nn} +% In the command's argument processor signature (the final argument of +% \cs{@@_start:nNNnnn}) there is one braced item for each formal +% argument (up to nine), and in each of these items there is one +% braced item for each processor (as many as there were processors +% declared for a given argument). Something like this: +% \begin{quote} +% \ttfamily \obeylines +% \{ \% argument processors +% \ \ \{ \% argument 1 +% \ \ \ \ \{ processor 1 \} \{ processor 2 \} \ldots\ \{ processor n \} +% \ \ \} \% end argument 1 +% \ \ \{ \ldots\ \} \% argument 2 +% \ \ \ \ \ \vdots +% \ \ \{ \ldots\ \} \% argument n +% \} \% end argument processors +% \end{quote} +% +% The function \cs{@@_add_grabber:N} adds one single grabber for an +% argument, and adds the braced item for that one argument. However, +% in an |E|-type argument each embellishment requires its own formal +% argument, so we need to break out of one layer of braces in +% \cs{l_@@_process_one_tl}, add copies of the processor as necessary, +% and then return the removed brace. The function below does just +% that: it defines \cs{l_@@_process_one_tl} starting with a |}|$_2$ +% and ending with a |{|$_1$, so that it adds as many processors as +% needed when |x|-expanded. +% \begin{macrocode} +\cs_new_protected:Npn \@@_replicate_processor:nn #1 #2 + { + \int_compare:nNnF {#1} > { 1 } { \use_none:nnn } + \tl_set:Nx \l_@@_process_one_tl + { + \exp_not:n { \exp_not:n {#2} \if_false: { \fi: } } + \prg_replicate:nn { #1 - 2 } + { \exp_not:n { \exp_not:n { {#2} } } } + \exp_not:n { { \if_false: } \fi: \exp_not:n {#2} } + } + } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_add_type_m:w} % The \texttt{m} type is special as short arguments which are not % post-processed are simply counted at this stage. Thus there is a check @@ -1608,6 +1661,8 @@ % \cs{l_@@_obey_spaces_bool} boolean can only be \texttt{true} for % trailing optional arguments. In that case spaces will not be % ignored when looking for that optional argument. +% \changes{v1.0g}{2021/08/07} +% {Replicate argument processors for all embellishments (gh/639)} % \begin{macrocode} \cs_new_protected:Npn \@@_add_grabber:N #1 { @@ -1624,7 +1679,12 @@ \bool_set_false:N \l_@@_long_bool \bool_set_false:N \l_@@_obey_spaces_bool \tl_put_right:Nx \l_@@_process_all_tl - { { \exp_not:o \l_@@_process_one_tl } } + { + { + \if_charcode:w E #1 \use_i:nn \fi: + \exp_not:o \l_@@_process_one_tl + } + } \tl_clear:N \l_@@_process_one_tl } % \end{macrocode} @@ -1676,8 +1736,7 @@ % We have already checked that short arguments are before long % arguments, so \cs{l_@@_long_bool} only changes from \texttt{false} % to \texttt{true} once (and there is no need to reset it after each -% argument). Also knock back the argument count because |+| is not an -% argument. Continue the loop. +% argument). Continue the loop. % \begin{macrocode} \cs_new_protected:cpn { @@_add_expandable_type_+:w } { @@ -1875,6 +1934,657 @@ % \end{macro} % \end{macro} % +% \subsubsection{Copying a command and its internal structure} +% +% \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_copy:NN}% +% {Support~\NewCommandCopy~in~ltcmd} +% \end{macrocode} +% +% \changes{v1.0h}{2021/08/30}{Added support for \cs{NewCommandCopy}} +% Since the 2020-10-01 \LaTeXe{} release, support for copying, and +% showing the definition of, robust commands has been available, but the +% specifics of each command are implemented separately. Here we'll add +% support for copying and showing \pkg{ltcmd} definitions. +% +% To fully support copying, we need two commands: a conditional to test +% if a command is in fact a \pkg{ltcmd} command, and another command to +% actually copy the command. The conditional is defined later as +% \cs{__kernel_cmd_if_xparse:NTF}, so now to the copying: +% +% \begin{macro}{\@@_copy:NN} +% \begin{macro}{\@@_set_eq_if_exist:NN,\@@_set_eq_if_exist:cc} +% This macro just branches to the proper copying command by using +% \cs{@@_cmd_type_cases:NnnnnF}. The copying command takes the names +% of the commands to be copied to and from, and the actual commands +% as its four arguments. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy:NN #1 #2 + { + \use:x + { + \int_set:Nn \tex_escapechar:D { 92 } + \exp_not:N \@@_cmd_type_cases:NnnnnF \exp_not:N #2 + { \@@_copy_command:nnNN } + { \@@_copy_expandable:nnNN } + { \@@_copy_environment:nnNN } + { \@@_copy_environment_end:nnNN } + { \@@_cant_copy:nwn { non-ltcmd } } + { \cs_to_str:N #1 } { \cs_to_str:N #2 } + \exp_not:N #1 \exp_not:N #2 + \exp_not:N \@@_break_point:n { \cs_to_str:N #2 } + \int_set:Nn \tex_escapechar:D { \int_use:N \tex_escapechar:D } + } + } +\cs_new_protected:Npn \@@_set_eq_if_exist:NN #1 #2 + { \cs_if_exist:NTF #2 { \cs_set_eq:NN } { \use_none:nn } #1 #2 } +\cs_generate_variant:Nn \@@_set_eq_if_exist:NN { cc } +% \end{macrocode} +% +% \begin{macro}{\@@_cant_copy:nwn} +% An utility macro similar to \cs{@@_bad_def:wn} to abort a command +% copy. Contrary to \cs{@@_bad_def:wn} though, when this happens the +% issue is most likely internal, because the command was already +% (supposedly) correcly defined so it should be copyable. Hopefully +% this macro will never be used ever, but if it does, apologise and +% give the reason for the failure so the user can report. +% \begin{macrocode} +\cs_new_protected:Npn \@@_cant_copy:nwn #1 #2 \@@_break_point:n #3 + { \msg_error:nnnn { cmd } { copy-bug } {#1} {#3} } +\msg_new:nnn { cmd } { copy-bug } + { + Error~while~copying~command~\iow_char:N\\#2:\\ + \str_case:nn {#1} + { + { non-ltcmd } { Command~is~not~a~valid~ltcmd~command. } + { unknown-type } { Found~an~unknown~argument~type. } + { invalid-end } + { Target~command~is~not~named~\iow_char:N \\end. } + } + } +% \end{macrocode} +% \end{macro} +% +% And, of course, add \cs{__kernel_cmd_if_xparse:NTF} and +% \cs{@@_copy:NN} to \cs{@declarecommandcopylisthook}: +% \begin{macrocode} +\tl_gput_right:Nn \@declarecommandcopylisthook + { { \__kernel_cmd_if_xparse:NTF \@@_copy:NN } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_copy_command:nnNN,\@@_copy_command:NnNNnnnn} +% A normal (non-expandable) command has a pretty straightforward +% structure. Its definition is stored in +% \cs{\meta{cmd}\textvisiblespace code}, its defaults (if any) are +% stored in \cs{\meta{cmd}\textvisiblespace defaults}, and its +% top-level definition contains its signature, which can just be +% copied over. \cs{@@_copy_command:nnNN} copies the command code and +% defaults, and then defines the top-level command using the auxiliary +% \cs{@@_copy_command:NnNNnnnn}. This macro takes the signature of +% the command being copied from its top-level definition, and replaces +% the named bits with the new name. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_command:nnNN #1 #2 #3 #4 + { + \cs_set_eq:cc { #1 ~ code } { #2 ~ code } + \@@_set_eq_if_exist:cc { #1 ~ defaults } { #2 ~ defaults } + \cs_set_protected_nopar:Npx #3 + { \exp_after:wN \@@_copy_command:NnNNnnnn #4 {#1} } + } +\cs_new:Npn \@@_copy_command:NnNNnnnn #1 #2 #3 #4 #5 #6 #7 #8 + { + #1 \exp_not:n { {#2} } + \exp_not:c { #8 ~ } \exp_not:c { #8 ~ code } + \exp_not:n { {#5} {#6} {#7} } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_copy_expandable:nnNN,\@@_copy_expandable:NnNNNNnnn} +% An expandable command is slightly more complicated. Besides the +% \cs{\meta{cmd}\textvisiblespace code}, and +% \cs{\meta{cmd}\textvisiblespace defaults}, it also has an auxiliary +% \cs{\meta{cmd}\textvisiblespace} for grabbing delimited arguments, +% and possibly another auxiliary +% \cs{\meta{cmd}\textvisiblespace\textvisiblespace}, if the command +% has both long and short arguments. Then, its signature also has +% several specific bits that are unique to that command; this is in contrast to +% non-expandable commands, which use a common set of parsing functions. +% +% We start by copying the basics, then call +% \cs{@@_copy_expandable_signature:NnNNNNnnn} to parse the signature +% of the command and build up the modified copy in a temporary token list, +% then we call \cs{@@_copy_expandable:NnNNNNnnn} that will copy the +% top-level definition of the command, with the proper internal +% renames. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_expandable:nnNN #1 #2 #3 #4 + { + \cs_set_eq:cc { #1 ~ code } { #2 ~ code } + \@@_set_eq_if_exist:cc { #1 ~ } { #2 ~ } + \@@_set_eq_if_exist:cc { #1 ~ \c_space_tl } { #2 ~ \c_space_tl } + \@@_set_eq_if_exist:cc { #1 ~ defaults } { #2 ~ defaults } + \exp_after:wN \@@_copy_expandable_signature:NnNNNNnnn #4 {#1} {#2} + \cs_set_nopar:Npx #3 + { \exp_after:wN \@@_copy_expandable:NnNNNNnnn #4 {#1} {#2} } + } +\cs_new:Npn \@@_copy_expandable:NnNNNNnnn #1 #2 #3 #4 #5 #6 #7 #8 #9 + { + \exp_not:N #1 \exp_not:n { {#2} } + \exp_not:c { #8 ~ } + \exp_not:c + { + #8 ~ + \str_if_eq:eeT + { \exp_not:c { #9 ~ \c_space_tl } } { \exp_not:N #4 } + { \c_space_tl } + } + \exp_not:c { #8 ~ code } + \str_if_eq:eeTF { \exp_not:N #6 } { ? } + { ? } + { \exp_not:c { #8 ~ defaults } } + { \exp_not:V \l_@@_tmpa_tl } + } +% \end{macrocode} +% +% \begin{macro}{ +% \@@_copy_expandable_signature:NnNNNNnnn, +% \@@_copy_expandable:nnN, +% \@@_copy_parse_grabber:w, +% } +% A signature for an expandable command contains as many +% \cs{expandable_grab_\meta{type}:w} as there are arguments, and what +% follows this macro depends on the \meta{type}. We'll start a loop +% through the signature, and at each argument grabber, we'll step the +% argument count, and look for the \meta{type} with +% \cs{@@_copy_parse_grabber:w} so that we know which +% \cs{@@_copy_grabber_\meta{type}:w} to call next. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_expandable_signature:NnNNNNnnn + #1 #2 #3 #4 #5 #6 #7 #8 #9 + { + \int_zero:N \l_@@_current_arg_int + \tl_clear:N \l_@@_tmpa_tl + \@@_copy_expandable:nnN {#8} {#9} #7 + \q_recursion_tail \q_recursion_stop + } +\cs_new_protected:Npn \@@_copy_expandable:nnN #1 #2 #3 + { + \quark_if_recursion_tail_stop:n {#3} + \int_incr:N \l_@@_current_arg_int + \exp_after:wN \@@_copy_parse_grabber:w \token_to_str:N #3 {#1} {#2} + } +\use:x + { + \cs_new_protected:Npn \exp_not:N \@@_copy_parse_grabber:w ##1 + \tl_to_str:n { expandable_grab_ } ##2 \tl_to_str:n { :w } + { + \tl_put_right:Nx \exp_not:N \l_@@_tmpa_tl + { \exp_not:N \exp_not:c { @@_expandable_grab_##2:w } } + \exp_not:N \cs_if_exist_use:cF { @@_copy_grabber_##2:w } + { \@@_cant_copy:nwn { unknown-type } } + } + } +% \end{macrocode} +% +% \begin{macro}{ +% \@@_copy_grabber_D:w,\@@_copy_grabber_D_alt:w, +% \@@_copy_grabber_R:w,\@@_copy_grabber_R_alt:w, +% \@@_copy_grabber_E:w,\@@_copy_grabber_E_long:w, +% \@@_copy_grabber_t:w, +% \@@_copy_grabber_m:w,\@@_copy_grabber_m_long:w, +% } +% The most complicated is the |D|elimited argument: each argument has +% a dedicated grabbing function named after the command that has to be +% copied over (of the form +% \cs{\meta{cmd}\textvisiblespace(arg\textvisiblespace\meta{num})}). +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_grabber_D:w #1 #2 #3 #4 #5 + { + \tl_put_right:Nx \l_@@_tmpa_tl + { + \exp_not:c { #1 ~ (arg ~ \int_use:N \l_@@_current_arg_int ) } + \exp_not:n { #4 #5 } + } + \cs_set_eq:cc + { #1 ~ (arg ~ \int_use:N \l_@@_current_arg_int ) } + { #2 ~ (arg ~ \int_use:N \l_@@_current_arg_int ) } + \@@_copy_expandable:nnN {#1} {#2} + } +% \end{macrocode} +% +% |D_alt| is just a special case of |D| that uses a single delimiter +% (used when both delimiters of the argument are identical): +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_grabber_D_alt:w #1 #2 #3 #4 + { \@@_copy_grabber_D:w {#1} {#2} {#3} {#4} { } } +% \end{macrocode} +% +% As far as copying is concerned, |R| is identical to |D|: +% \begin{macrocode} +\cs_new_eq:NN \@@_copy_grabber_R:w \@@_copy_grabber_D:w +\cs_new_eq:NN \@@_copy_grabber_R_alt:w \@@_copy_grabber_D_alt:w +% \end{macrocode} +% +% |E| is straightforward: we just copy the embellishments over, and +% increase the current argument number \cs{l_@@_current_arg_int} by +% the number of embellishments (minus one because there is a +% \cs{int_incr:N} down the line). +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_grabber_E:w #1 #2 #3 #4 + { + \tl_put_right:Nn \l_@@_tmpa_tl { {#3} {#4} } + \int_add:Nn \l_@@_current_arg_int { \tl_count:n {#4} - 1 } + \@@_copy_expandable:nnN {#1} {#2} + } +\cs_new_eq:NN \@@_copy_grabber_E_long:w \@@_copy_grabber_E:w +% \end{macrocode} +% +% |t| just needs copying the token to be tested for: +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_grabber_t:w #1 #2 #3 #4 + { + \tl_put_right:Nn \l_@@_tmpa_tl { #3 #4 } + \@@_copy_expandable:nnN {#1} {#2} + } +% \end{macrocode} +% +% And last but not least, |m| is the simplest; the grabber is just +% \cs{@@_expandable_grab_m:w}, which is already added to the new +% command so here we just resume the loop: +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_grabber_m:w { \@@_copy_expandable:nnN } +\cs_new_eq:NN \@@_copy_grabber_m_long:w \@@_copy_grabber_m:w +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_copy_environment:nnNN} +% \begin{macro}{\@@_copy_environment:Nnnnnnn} +% Copying an environment's \cs{begin} part is pretty much like copying +% a command, except it has a longer name, and at the end we have to +% copy \cs[no-index]{environment~\meta{name}} into +% \cs[no-index]{\meta{name}}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_environment:nnNN #1 #2 #3 #4 + { + \cs_set_eq:cc { environment~ #1 ~ code } { environment~ #2 ~ code } + \@@_set_eq_if_exist:cc + { environment~ #1 ~ defaults } { environment~ #2 ~ defaults } + \cs_set_protected_nopar:cpx { environment~ #1 } + { \exp_after:wN \@@_copy_environment:Nnnnnnn #4 {#1} } + \cs_set_eq:cc {#1} { environment~ #1 } + } +\cs_new:Npn \@@_copy_environment:Nnnnnnn #1 #2 #3 #4 #5 #6 #7 + { #1 \exp_not:n { {#2} } {#7} \exp_not:n { {#4} {#5} {#6} } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@@_copy_environment_end:nnNN} +% \begin{macro}{\@@_copy_environment_end_aux:nnNN} +% Copying an environment's \cs{end} part is a bit trickier. We first +% have to make sure that both parts are named +% \cs[no-index]{end\meta{name}} (that's actually not a hard +% requirement, but an environment \cs{end} command makes no sense +% without the |end| in its name), and strip the leading |end| from the +% strings. After that, copying is straightforward. +% \begin{macrocode} +\cs_new_protected:Npn \@@_copy_environment_end:nnNN #1 #2 + { + \@@_check_end:Nn \l_@@_tmpa_tl {#1} + \@@_check_end:Nn \l_@@_tmpb_tl {#2} + \exp_args:Noo \@@_copy_environment_end_aux:nnNN + { \l_@@_tmpa_tl } { \l_@@_tmpb_tl } + } +\cs_new_protected:Npn \@@_copy_environment_end_aux:nnNN #1 #2 #3 #4 + { + \cs_set_nopar:cpx { environment~ #1 ~end } + { \exp_not:c { environment~ #1 ~end~aux } } + \cs_set_eq:cc + { environment~ #1 ~end~aux~ } { environment~ #2 ~end~aux~ } + \cs_set_eq:cc { end #1 } { environment~ #1 ~end } + } +% \end{macrocode} +% +% \begin{macro}{\@@_check_end:Nn,\@@_check_end:n,\@@_check_end:w} +% To check whether an \cs{end} command is valid, we look for the +% string |end| at the beginning of the command name, and if not found, +% raise an error: +% \begin{macrocode} +\cs_new_protected:Npn \@@_check_end:Nn #1 #2 + { + \tl_set:Nx #1 { \@@_check_end:n {#2} } + \token_if_eq_meaning:NNT #1 \q_nil + { \@@_cant_copy:nwn { invalid-end } } + } +\cs_set_protected:Npn \@@_tmp:w #1 + { + \cs_new:Npn \@@_check_end:n ##1 + { + \exp_after:wN \@@_check_end:w \tl_to_str:n {##1} + #1 \q_mark #1 \q_stop + } + \cs_new:Npn \@@_check_end:w ##1 #1 ##2 #1 ##3 \q_stop + { \if_meaning:w ##2 \q_mark \exp_not:N \q_nil \else: ##2 \fi: } + } +\exp_args:No \@@_tmp:w { \tl_to_str:n { end } } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Not much to do regarding \pkg{latexrelease}: we could remove the +% entries from \cs{@declarecommandcopylisthook}, but it doesn't seem +% worth it. +% \begin{macrocode} +%\EndIncludeInRelease +%\IncludeInRelease{2020/10/01}{\@@_copy:NN}% +% {Support~\NewCommandCopy~in~ltcmd} +%\EndIncludeInRelease +% \end{macrocode} +% +% \subsubsection{Showing the definition of a command} +% +% \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_show:N}% +% {Support~\ShowCommand~in~ltcmd} +% \end{macrocode} +% +% \changes{v1.0h}{2021/08/30}{Added support for \cs{ShowCommand}} +% To show the definition of a command we need more or less the same +% building blocks as for copying, except that instead of making a copy, +% we'll just print stuff to the terminal. +% +% \begin{macro}{\@@_show:N} +% This macro just branches to the proper showing command by using +% \cs{@@_cmd_type_cases:NnnnnF}. The showing command takes the command +% to be shown as argument. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show:N #1 + { + \use:x + { + \int_set:Nn \tex_escapechar:D { 92 } + \exp_not:N \@@_cmd_type_cases:NnnnnF \exp_not:N #1 + { \@@_show_command:N } + { \@@_show_expandable:N } + { \@@_show_environment:N } + { \@@_show_environment_end:N } + { \@@_cant_copy:nwn { non-ltcmd } } + \exp_not:N #1 + \exp_not:N \@@_break_point:n { \cs_to_str:N #1 } + \int_set:Nn \tex_escapechar:D { \int_use:N \tex_escapechar:D } + } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ +% \@@_show_command:N, +% \@@_show_command:NnNNwN, +% \@@_show_expandable:N, +% \@@_show_expandable:NnNNNNnN, +% \@@_show_command_aux:nNNn, +% \@@_show_environment:N, +% } +% These commands just expand the command once to reveal its innards, +% then pass the type of command, the control sequence, the signature, +% and the code macro to \cs{@@_show_command_aux:nNNn}. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_command:N #1 + { \exp_after:wN \@@_show_command:NnNNwN #1 \q_@@ #1 } +\cs_new_protected:Npn \@@_show_command:NnNNwN #1 #2 #3 #4 #5 \q_@@ #6 + { \@@_show_command_aux:nNNn { document~command } #6 #4 {#2} } +\cs_new_protected:Npn \@@_show_expandable:N #1 + { \exp_after:wN \@@_show_expandable:NnNNNNnN #1 #1 } +\cs_new_protected:Npn \@@_show_expandable:NnNNNNnN #1 #2 #3 #4 #5 #6 #7 #8 + { \@@_show_command_aux:nNNn { expandable~document~command } #8 #5 {#2} } +% \end{macrocode} +% +% Now just print everything in the required format. The auxiliary +% \cs{@@_split_signature:n} stores a ready-to-print token list in +% \cs{l_@@_tmpa_tl}, so we ust use that here: +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_command_aux:nNNn #1 #2 #3 #4 + { + \@@_split_signature:n {#4} + \iow_term:x + { + > ~ \token_to_str:N #2 = #1: \iow_newline: + \tl_use:N \l_@@_tmpa_tl + -> \cs_replacement_spec:N #3 . + } + } +% \end{macrocode} +% +% We can reuse most of the above to show an environment, except that +% we need to ensure that the proper \cs[no-index]{environment~\ldots} +% are passed to \cs{@@_show_command_aux:nNNn}. Additionally, when +% |\ShowCommand\foo| is used (if |foo| is an environment), we show +% |\endfoo| as well, and when |\ShowCommand\endfoo| is used, change +% that to |\ShowCommand\foo| and do the same. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_environment:N #1 + { + \exp_after:wN \@@_show_environment:Nnnw #1 \q_@@ + \iow_term:x + { + > ~ \token_to_str:N \end { \cs_to_str:N #1 } : \iow_newline: + -> \exp_args:Nc \cs_replacement_spec:N + { environment~ \cs_to_str:N #1 ~end~aux~ } . + } + } +\cs_new_protected:Npn \@@_show_environment:Nnnw #1 #2 #3 #4 \q_@@ + { + \use:x + { + \@@_show_command_aux:nNNn { document~environment } + { \exp_not:N \begin {#3} } + \exp_not:c { environment~ #3 ~ code } + {#2} + } + } +\cs_new_protected:Npn \@@_show_environment_end:N #1 + { + \exp_args:NNx \@@_check_end:Nn \l_@@_tmpa_tl { \cs_to_str:N #1 } + \exp_args:Nc \@@_show_environment:N { \l_@@_tmpa_tl } + } +% \end{macrocode} +% +% And, of course, add \cs{__kernel_cmd_if_xparse:NTF} and +% \cs{@@_show:N} to \cs{@showcommandlisthook}: +% \begin{macrocode} +\tl_gput_right:Nn \@showcommandlisthook + { { \__kernel_cmd_if_xparse:NTF \@@_show:N } } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_split_signature:n} +% Now we'll try a least-effort adventure into splitting the symbolic +% user-provided signature for a command into individual parameters for +% pretty-printing. A counter is used to keep track of the current +% argument number, and two token lists are used: \cs{l_@@_tmpa_tl} +% holds the final token list to be printed, and \cs{l_@@_tmpb_tl} +% holds just the current item, so that we can make changes to an +% individual item without having to dissect the whole thing (this is +% used for |e|- and |E|-types). +% \begin{macrocode} +\cs_new_protected:Npn \@@_split_signature:n #1 + { + \int_set:Nn \l_@@_current_arg_int { 1 } + \tl_clear:N \l_@@_tmpa_tl + \tl_clear:N \l_@@_tmpb_tl + \@@_split_signature_loop:Nw #1 \q_recursion_tail \q_recursion_stop + } +% \end{macrocode} +% +% \begin{macro}{\@@_split_signature_loop:Nw} +% This is the main chunk of the loop: it starts an item with +% \cs{@@_split_start_item:} +% (this adds indentation and the argument number to +% \cs{l_@@_tmpb_tl}), then checks if a special token list +% \cs[no-index]{c_@@_show_type_\meta{type}_tl} exists. If it doesn't, +% the current argument is a ``simple'' type which needs no extra +% processing. Otherwise, call a specific function depending on the +% value of said token list. +% \begin{macrocode} +\cs_new_protected:Npn \@@_split_signature_loop:Nw #1 + { + \quark_if_recursion_tail_stop:N #1 + \tl_if_empty:NT \l_@@_tmpb_tl { \@@_split_start_item: } + \tl_if_exist:cTF { c_@@_show_type_#1_tl } + { + \use:c + { + @@_show_ + \if_case:w \tl_use:c { c_@@_show_type_#1_tl } \exp_stop_f: + delim \or: delims \or: delims_opt \or: opt \or: + e \or: E \or: prefix \or: processor \fi: :Nw + } #1 + } + { \@@_split_end_item:n {#1} \@@_split_signature_loop:Nw } + } +% \end{macrocode} +% +% \begin{macro}{ +% \c_@@_show_type_t_tl, +% \c_@@_show_type_r_tl,\c_@@_show_type_d_tl, +% \c_@@_show_type_R_tl,\c_@@_show_type_D_tl, +% \c_@@_show_type_O_tl, +% \c_@@_show_type_e_tl, +% \c_@@_show_type_E_tl, +% \c_@@_show_type_+_tl,\c_@@_show_type_!_tl, +% \c_@@_show_type_>_tl, +% } +% The token lists \cs[no-index]{c_@@_show_type_\meta{type}_tl} exist +% for nontrivial (for printing) \meta{types} that require special +% parsing (like delimiters or optional arguments). Values from~0 to~7 +% are assigned to each type: +% \begin{enumerate} +% \item a single delimiter token; +% \item two delimiter tokens; +% \item two delimiter tokens plus a default value; +% \item a default value; +% \item a list of embellishments (exclusive for |e|-type); +% \item embellishments plus defaults (exclusive for |E|-type); +% \item simple prefixes; +% \item prefixes with arguments (argument processors); +% \end{enumerate} +% \begin{macrocode} +\cs_set_protected:Npn \@@_tmp:w #1 #2 + { + \quark_if_nil:nF {#1} + { \tl_const:cn { c_@@_show_type_#1_tl } {#2} \@@_tmp:w } + } +\@@_tmp:w t0 r1 d1 R2 D2 O3 e4 E5 +6 !6 >7 \q_nil \q_nil +% \end{macrocode} +% +% \begin{macro}{ +% \@@_show_delim:Nw,\@@_show_delims:Nw, +% \@@_show_delims_opt:Nw,\@@_show_opt:Nw, +% \@@_show_e:Nw,\@@_show_E:Nw, +% \@@_show_prefix:Nw,\@@_show_processor:Nw, +% } +% Now, based on each type we know how to act. In most cases it is +% just a matter of feeding in the grabbed arguments and resuming the +% loop. The embellishments require a bit more attention: the +% |e|-type loops through the list of embellishments and adds each to +% the token list as a separate argument. The |E|-type does more or +% less the same, but uses \cs{@@_tl_mapthread_function:nnN} to map +% over two lists simultaneously, adding each token and default to the +% token list for printing. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_delim:Nw #1 #2 + { \@@_split_end_item:n { #1 #2 } \@@_split_signature_loop:Nw } +\cs_new_protected:Npn \@@_show_delims:Nw #1 #2 #3 + { \@@_split_end_item:n { #1 #2 #3 } \@@_split_signature_loop:Nw } +\cs_new_protected:Npn \@@_show_delims_opt:Nw #1 #2 #3 #4 + { \@@_split_end_item:n { #1 #2 #3 {#4} } \@@_split_signature_loop:Nw } +\cs_new_protected:Npn \@@_show_opt:Nw #1 #2 + { \@@_split_end_item:n { #1 {#2} } \@@_split_signature_loop:Nw } +\cs_new_protected:Npn \@@_show_e:Nw #1 #2 + { + \tl_map_inline:nn {#2} + { + \@@_split_start_item: + \@@_split_end_item:n { #1 ##1 } + } + \@@_split_signature_loop:Nw + } +\cs_set_protected:Npn \@@_tmp:w #1 + { + \cs_new_protected:Npn \@@_show_E:Nw ##1 ##2 ##3 + { + \cs_set_protected:Npn \@@_tmp:w ####1 ####2 + { + \@@_split_start_item: + \@@_split_end_item:n { ##1 ####1 {####2} } + } + \@@_tl_mapthread_function:nnN {##2} + { ##3 {#1} {#1} {#1} {#1} {#1} {#1} {#1} {#1} {#1} } \@@_tmp:w + \@@_split_signature_loop:Nw + } + } +\exp_args:NV \@@_tmp:w \c_novalue_tl +% \end{macrocode} +% +% Minor wrinkle with the prefixes: they use \cs{@@_split_add_item:n} +% instead of \cs{@@_split_end_item:n} (|add| \emph{vs.} |end|) because +% they are followed by an argument, so they can't end the item. +% \begin{macrocode} +\cs_new_protected:Npn \@@_show_prefix:Nw #1 + { \@@_split_add_item:n {#1} \@@_split_signature_loop:Nw } +\cs_new_protected:Npn \@@_show_processor:Nw #1 #2 + { \@@_split_add_item:n { #1 {#2} } \@@_split_signature_loop:Nw } +% \end{macrocode} +% +% \begin{macro}{ +% \@@_split_start_item:, +% \@@_split_add_item:n, +% \@@_split_end_item:n, +% } +% And now the auxiliaries that store the strings to be printed. +% \cs{@@_split_start_item:} starts an item from scratch, +% \cs{@@_split_add_item:n} adds tokens to an item without adding a +% newline, and \cs{@@_split_end_item:n} adds tokens, terminates the +% item with a newline, and steps the argument count. +% \begin{macrocode} +\cs_new_protected:Npn \@@_split_start_item: + { + \tl_set:Nx \l_@@_tmpb_tl + { ~ \c_space_tl \c_hash_str \int_use:N \l_@@_current_arg_int : } + } +\cs_new_protected:Npn \@@_split_add_item:n #1 + { \tl_put_right:Nx \l_@@_tmpb_tl { \tl_to_str:n {#1} } } +\cs_new_protected:Npn \@@_split_end_item:n #1 + { + \tl_put_right:Nx \l_@@_tmpa_tl + { \l_@@_tmpb_tl \tl_to_str:n {#1} \iow_newline: } + \tl_clear:N \l_@@_tmpb_tl + \int_incr:N \l_@@_current_arg_int + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% Not much to do regarding \pkg{latexrelease}: we could remove the +% entries from \cs{@showcommandlisthook}, but it doesn't seem +% worth it. +% \begin{macrocode} +%\EndIncludeInRelease +% +%\IncludeInRelease{2020/10/01}{\@@_show:N}% +% {Support~\ShowCommand~in~ltcmd} +%\EndIncludeInRelease +% \end{macrocode} +% % \subsection{Grabbing arguments} % % All of the grabbers follow the same basic pattern. The initial @@ -2023,6 +2733,7 @@ % \end{macro} % \end{macro} % \end{macro} +% % \begin{macro}{\@@_grab_D_nested:NNnN} % \begin{macro}{\@@_grab_D_nested:w} % \begin{macro}{\l_@@_nesting_a_tl} @@ -3375,8 +4086,11 @@ % \end{macro} % % \begin{macro}{\__kernel_cmd_if_xparse:NTF} +% \begin{macro}{\@@_cmd_type_cases:Nnnnn} % \changes{v1.0d}{2021/04/19}{Renamed \cs{__cmd_cmd_if_xparse:NTF} to % \cs{__kernel_cmd_if_xparse:NTF} for cross-module usage} +% \changes{v1.0d}{2021/07/30}{Added \cs{@@_cmd_type_cases:Nnnnn} for +% \cs{NewCommandCopy} and \cs{ShowCommand} support} % \begin{macro}{\@@_cmd_if_xparse_aux:N} % % To determine whether the command is an \pkg{xparse} command check @@ -3384,31 +4098,50 @@ % that its |replacement_spec| starts with either % \cs{@@_start:nNNnnn} (non-expandable command) or % \cs{@@_start_expandable:nNNNNn} (expandable command) or -% \cs{@@_start_env:nnnnn} (environment). +% \cs{@@_start_env:nnnnn} (environment) or +% \cs[no-index]{environment~\#1~end~aux} (environment end). % % This conditional is needed in several kernel modules and is % therefore has a kernel-internal name. % \begin{macrocode} -\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1 +\cs_new_protected:Npn \@@_cmd_type_cases:NnnnnF #1 #2 #3 #4 #5 #6 { - \exp_args:Nf \str_case_e:nnTF + \exp_args:Ne \str_case_e:nnF { \exp_args:Nf \tl_if_empty:nT { \cs_argument_spec:N #1 } { - \exp_last_unbraced:Nf \@@_cmd_if_xparse_aux:w - { \cs_replacement_spec:N #1 } ~ \q_stop + \token_if_macro:NT #1 + { + \exp_after:wN \exp_after:wN + \exp_after:wN \token_to_str:N + \exp_after:wN \use_i_delimit_by_q_stop:nw + #1 \scan_stop: \q_stop + } } } { - { \token_to_str:N \@@_start:nNNnnn } { } - { \token_to_str:N \@@_start_expandable:nNNNNn } { } - { \token_to_str:N \@@_start_env:nnnnn } { } + { \token_to_str:N \@@_start:nNNnnn } {#2} + { \token_to_str:N \@@_start_expandable:nNNNNn } {#3} + { \token_to_str:N \@@_start_env:nnnnn } {#4} + { + \exp_after:wN \token_to_str:N + \cs:w environment~ + \exp_last_unbraced:Ne \use_none:nnn + { \cs_to_str:N #1 } ~end~aux \cs_end: + } {#5} } + {#6} + } +\cs_new_protected:Npn \__kernel_cmd_if_xparse:NTF #1 + { + \@@_cmd_type_cases:NnnnnF #1 + { } { } { } { } { \use_iii:nnn } + \use_i:nn } -\cs_new:Npn \@@_cmd_if_xparse_aux:w #1 ~ #2 \q_stop {#1} % \end{macrocode} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\@@_peek_nonspace:NTF, \@@_peek_nonspace_remove:NTF, \@@_peek_nonspace_aux:nNNTF} % Collect spaces in a loop, and put the collected spaces back in the @@ -3434,7 +4167,7 @@ % token is a control sequence, also check that the \meta{csname} is % the same as the control sequence peeked at. This extra verification % is necessary when the command is delimited by control sequence tokens -% (as opposed to character tokens), and we want the the exact same +% (as opposed to character tokens), and we want the exact same % control sequence to match. % \begin{macrocode} \cs_new_protected:Npn \@@_peek_meaning:NTF @@ -3541,6 +4274,13 @@ with~an~environment~that~already~has~a~definition. \\ \\ The~existing~definition~of~'#1'~will~not~be~altered. } +\msg_new:nnnn { cmd } { env-end-already-defined } + { End~of~environment~'#1'~already~defined. } + { + You~have~used~\NewDocumentEnvironment + with~an~environment~that~already~has~a~definition~for~'end#1'. \\ \\ + The~existing~definition~of~'#1'~will~not~be~altered. + } \msg_new:nnnn { cmd } { env-undefined } { Environment~'#1'~undefined. } { @@ -3829,6 +4569,7 @@ % \end{macro} % % \begin{macro}{\NewDocumentEnvironment} +% \changes{v1.0h}{2021/08/27}{Check for end-of-environment command} % \begin{macro}{\RenewDocumentEnvironment} % \begin{macro}{\ProvideDocumentEnvironment} % \begin{macro}{\DeclareDocumentEnvironment} @@ -3838,7 +4579,11 @@ { \cs_if_exist:cTF {#1} { \msg_error:nnx { cmd } { env-already-defined } {#1} } - { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} } + { + \cs_if_exist:cTF { end #1 } + { \msg_error:nnx { cmd } { env-end-already-defined } {#1} } + { \@@_declare_env:nnnn {#1} {#2} {#3} {#4} } + } } \cs_new_protected:Npn \RenewDocumentEnvironment #1#2#3#4 { diff --git a/macros/latex-dev/base/ltcmdhooks-code.pdf b/macros/latex-dev/base/ltcmdhooks-code.pdf index 093f9d41bb..7dc8850331 100644 Binary files a/macros/latex-dev/base/ltcmdhooks-code.pdf and b/macros/latex-dev/base/ltcmdhooks-code.pdf differ diff --git a/macros/latex-dev/base/ltcmdhooks-doc.pdf b/macros/latex-dev/base/ltcmdhooks-doc.pdf index 75febb8f36..6ee7bc215c 100644 Binary files a/macros/latex-dev/base/ltcmdhooks-doc.pdf and b/macros/latex-dev/base/ltcmdhooks-doc.pdf differ diff --git a/macros/latex-dev/base/ltcmdhooks.dtx b/macros/latex-dev/base/ltcmdhooks.dtx index 40cd55e52c..b6c57a41ac 100644 --- a/macros/latex-dev/base/ltcmdhooks.dtx +++ b/macros/latex-dev/base/ltcmdhooks.dtx @@ -13,8 +13,8 @@ % %%% From File: ltcmdhooks.dtx % -\def\ltcmdhooksversion{v1.0b} -\def\ltcmdhooksdate{2021/05/26} +\def\ltcmdhooksversion{v1.0d} +\def\ltcmdhooksdate{2021/08/25} % % % @@ -400,24 +400,44 @@ % % \subsection{Patching or delaying} % -% \begin{macro}{\@@_try_put_cmd_hook:n,\@@_try_put_cmd_hook:w} % Before |\begin{document}| all patching is delayed. +% +% \begin{macro}{\@@_try_put_cmd_hook:n,\@@_try_put_cmd_hook:w} % This function is called from within \cs{AddToHook}, when code is -% added to a generic |cmd| hook is newly declared. It checks whether -% the patch position is valid, then proceeds to trying to patch or -% delaying to |\begin{document}| if in the preamble. +% first added to a generic |cmd| hook. +% If it is called within in the preamble, it delays the action +% until |\begin{document}|; +% otherwise it tries to update the hook. +% \changes{v1.0d}{2021/08/25}{Simplify generic hook detection} % \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_try_put_cmd_hook:n}% +% {Standardise~generic~hook~names} \cs_new_protected:Npn \@@_try_put_cmd_hook:n #1 { \@@_try_put_cmd_hook:w #1 / / / \s_@@_mark {#1} } \cs_new_protected:Npn \@@_try_put_cmd_hook:w #1 / #2 / #3 / #4 \s_@@_mark #5 { \@@_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } - \str_case:nnTF {#3} - { { before } { } { after } { } } - { \exp_args:Nc \@@_patch_cmd_or_delay:Nnn {#2} {#2} {#3} } - { \msg_error:nnnn { hooks } { wrong-cmd-hook } {#2} {#3} } + \exp_args:Nc \@@_patch_cmd_or_delay:Nnn {#2} {#2} {#3} } +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2021/06/01}{\@@_try_put_cmd_hook:n}% +% {Standardise~generic~hook~names} +%\cs_new_protected:Npn \@@_try_put_cmd_hook:n #1 +% { \@@_try_put_cmd_hook:w #1 / / / \s_@@_mark {#1} } +%\cs_new_protected:Npn \@@_try_put_cmd_hook:w +% #1 / #2 / #3 / #4 \s_@@_mark #5 +% { +% \@@_debug:n { \iow_term:n { ->~Adding~cmd~hook~to~'#2'~(#3): } } +% \str_case:nnTF {#3} +% { { before } { } { after } { } } +% { \exp_args:Nc \@@_patch_cmd_or_delay:Nnn {#2} {#2} {#3} } +% { \msg_error:nnnn { hooks } { wrong-cmd-hook } {#2} {#3} } +% } +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % @@ -592,17 +612,28 @@ % % With \cs{@@_patch_DeclareRobustCommand:Nnn} we check if the command % has an optional argument (with a test counter-intuitively called -% \tn{@if@newcommand}). If so, we forward the action to -% \cs{@@_patch_newcommand:Nnn}, otherwise call the patching engine +% \tn{@if@newcommand}; also make sure the command doesn't take args by +% calling \cs{robust@command@chk@safe}). If so, we pass the patching action +% to \cs{@@_patch_newcommand:Nnn}, otherwise we call the patching engine % \cs{@@_patch_expand_redefine:NNnn} with a \cs{c_false_bool} to % indicate that there is no optional argument. +% +% \changes{v1.0c}{2021/07/20} +% {Use \cs{robust@command@chk@safe} before \cs{@if@newcommand}.} % \begin{macrocode} \cs_new_protected:Npn \@@_patch_DeclareRobustCommand:Nnn #1 { - \exp_args:Nc \@if@newcommand { \cs_to_str:N #1 ~ } - { \exp_args:Nc \@@_patch_newcommand:Nnn } - { \exp_args:NNc \@@_patch_expand_redefine:NNnn \c_false_bool } - { \cs_to_str:N #1 ~ } + \exp_args:Nc \@@_patch_DeclareRobustCommand_aux:Nnn + { \cs_to_str:N #1 ~ } + } +\cs_new_protected:Npn \@@_patch_DeclareRobustCommand_aux:Nnn #1 + { + \robust@command@chk@safe #1 + { \@if@newcommand #1 } + { \use_ii:nn } + { \@@_patch_newcommand:Nnn } + { \@@_patch_expand_redefine:NNnn \c_false_bool } + #1 } % \end{macrocode} % \end{macro} @@ -1039,15 +1070,21 @@ % \subsection{Messages} % % \begin{macrocode} -\msg_new:nnnn { hooks } { wrong-cmd-hook } - { - Generic~hook~`cmd/#1/#2'~is~invalid. -% The~hook~should~be~`cmd/#1/before'~or~`cmd/#1/after'. - } - { - You~tried~to~add~a~generic~hook~to~command~\iow_char:N \\#1,~but~`#2'~ - is~an~invalid~component.~Only~`before'~or~`after'~are~allowed. - } +%\IncludeInRelease{2021/11/15}{wrong-cmd-hook}% +% {Standardise~generic~hook~names} +%\EndIncludeInRelease +%\IncludeInRelease{2021/11/15}{wrong-cmd-hook}% +% {Standardise~generic~hook~names} +%\msg_new:nnnn { hooks } { wrong-cmd-hook } +% { +% Generic~hook~`cmd/#1/#2'~is~invalid. +%% The~hook~should~be~`cmd/#1/before'~or~`cmd/#1/after'. +% } +% { +% You~tried~to~add~a~generic~hook~to~command~\iow_char:N \\#1,~but~`#2'~ +% is~an~invalid~component.~Only~`before'~or~`after'~are~allowed. +% } +%\EndIncludeInRelease \msg_new:nnnn { hooks } { cant-patch } { Generic~hooks~cannot~be~added~to~'#1'. diff --git a/macros/latex-dev/base/ltcounts.dtx b/macros/latex-dev/base/ltcounts.dtx index 445cac2f2e..39fb47728d 100644 --- a/macros/latex-dev/base/ltcounts.dtx +++ b/macros/latex-dev/base/ltcounts.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltcounts.dtx} - [2020/12/04 v1.1l LaTeX Kernel (Counters)] + [2021/07/08 v1.1m LaTeX Kernel (Counters)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltcounts.dtx} @@ -106,20 +106,22 @@ % % % \DescribeMacro\counterwithin -% |\counterwithin|\marg{counter}\marg{within-counter}: +% |\counterwithin|\oarg{format}\marg{counter}\marg{within-counter}: % Resets \meta{counter} whenever % \meta{within-counter} is stepped. Also % redefines |\the|\meta{counter} command to produce -% |\the|\meta{within-counter}|.\arabic|\marg{counter}. +% |\the|\meta{within-counter}.\meta{format}\marg{counter} with \cs{arabic} as +% the default for \meta{format}. % Star form omits redefining the print representation. % % \DescribeMacro\counterwithout -% |\counterwithout|\marg{counter}\marg{within-counter}: +% |\counterwithout|\oarg{format}\marg{counter}\marg{within-counter}: % Removes \meta{counter} from the reset list of \meta{within-counter}. % Also % redefines |\the|\meta{counter} command to produce -% |\arabic|\marg{counter}. +% \meta{format}\marg{counter} with \cs{arabic} as +% the default for \meta{format}. % Star form omits redefining the print representation. % % \StopEventually{} @@ -371,67 +373,94 @@ #3}}} % \end{macrocode} % \end{macro} - - -% \begin{macro}{\counterwithout} % -% \changes{v1.1k}{2018/03/08}{Interface added} % \begin{macrocode} -\def\counterwithout {\@ifstar\counterwithout@s\counterwithout@x} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000-00-00} +% {\@removefromreset}{Add interfaces}% +%\let \@removefromreset \undefined +%\let \@ifbothcounters \undefined +%\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % -% \begin{macrocode} -\def\counterwithout@s#1#2{% - \@ifbothcounters{#1}{#2}{\@removefromreset{#1}{#2}}} -% \end{macrocode} % -% \begin{macrocode} -\def\counterwithout@x#1#2{% - \@ifbothcounters{#1}{#2}% - {\@removefromreset{#1}{#2}% - \expandafter - \gdef\csname the#1\expandafter\endcsname\expandafter - {\expandafter - \@arabic\csname c@#1\endcsname}}} -% \end{macrocode} -% \end{macro} - - - -% \begin{macro}{\counterwithin} % -% \changes{v1.1k}{2018/03/08}{Interface added} +% +% \begin{macro}{\counterwithout,\counterwithin} +% New implementation using xparse and supporting an optional +% format argument. +% \changes{v1.1m}{2021/07/08}{New implementation for +% \cs{counterwithout} and \cs{counterwithin}} % \begin{macrocode} -\def\counterwithin{\@ifstar\counterwithin@s\counterwithin@x} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/11/15}% +% {\counterwithout}{counter without/within}% % \end{macrocode} % % \begin{macrocode} -\def\counterwithin@s#1#2{% - \@ifbothcounters{#1}{#2}{\@addtoreset{#1}{#2}}} +\NewDocumentCommand \counterwithout {sO{\arabic}mm}{% + \@ifbothcounters{#3}{#4}{% + \@removefromreset{#3}{#4}% + \IfBooleanF #1% + {\expandafter + \gdef\csname the#3\endcsname {#2{#3}}}% + }% +} +% \end{macrocode} +% +% \begin{macrocode} +\NewDocumentCommand \counterwithin {sO{\arabic}mm}{% + \@ifbothcounters{#3}{#4}{% + \@addtoreset{#3}{#4}% + \IfBooleanF #1% + {\expandafter + \gdef\csname the#3\expandafter\endcsname + \expandafter + {\csname the#4\endcsname .#2{#3}}}% + }% +} % \end{macrocode} % -% \changes{v1.1l}{2018/04/11}{Correct default (issue/38)} +% \changes{v1.1k}{2018/03/08}{Interface added} % \begin{macrocode} -\def\counterwithin@x#1#2{% - \@ifbothcounters{#1}{#2}% - {\@addtoreset{#1}{#2}% - \expandafter - \gdef\csname the#1\expandafter\endcsname\expandafter - {\csname the#2\expandafter\endcsname\expandafter - .\expandafter - \@arabic\csname c@#1\endcsname}}} +% +%\EndIncludeInRelease +%\IncludeInRelease{2018-04-01} +% {\counterwithout}{counter without/within}% +% +%\def\counterwithout {\@ifstar\counterwithout@s\counterwithout@x} +%\def\counterwithout@s#1#2{% +% \@ifbothcounters{#1}{#2}{\@removefromreset{#1}{#2}}} +%\def\counterwithout@x#1#2{% +% \@ifbothcounters{#1}{#2}% +% {\@removefromreset{#1}{#2}% +% \expandafter +% \gdef\csname the#1\expandafter\endcsname\expandafter +% {\expandafter +% \@arabic\csname c@#1\endcsname}}} +% +%\def\counterwithin{\@ifstar\counterwithin@s\counterwithin@x} +%\def\counterwithin@s#1#2{% +% \@ifbothcounters{#1}{#2}{\@addtoreset{#1}{#2}}} % \end{macrocode} -% \end{macro} - - % +% \changes{v1.1l}{2018/04/11}{Correct default (issue/38)} % \begin{macrocode} -% +%\def\counterwithin@x#1#2{% +% \@ifbothcounters{#1}{#2}% +% {\@addtoreset{#1}{#2}% +% \expandafter +% \gdef\csname the#1\expandafter\endcsname\expandafter +% {\csname the#2\expandafter\endcsname\expandafter +% .\expandafter +% \@arabic\csname c@#1\endcsname}}} +% %\EndIncludeInRelease %\IncludeInRelease{0000-00-00} -% {\@removefromreset}{Add interfaces}% -%\let \@removefromreset \undefined -%\let \@ifbothcounters \undefined +% {\counterwithout}{counter without/within}% %\let \counterwithout \undefined %\let \counterwithout@s \undefined %\let \counterwithout@x \undefined @@ -441,6 +470,9 @@ %\EndIncludeInRelease %<*2ekernel> % \end{macrocode} +% \end{macro} +% +% % % % Numbering commands for definitions of |\theCOUNTER| and |\list| @@ -596,7 +628,7 @@ % recommended) this unfortunate side effect is not present. % \begin{macrocode} % -%\IncludeInRelease{2015/01/01}{\@fnsymbol}{Use \TexOrMath}% +%\IncludeInRelease{2015/01/01}{\@fnsymbol}{Use \TextOrMath}% %<*2ekernel|latexrelease> \def\@fnsymbol#1{% \ifcase#1\or \TextOrMath\textasteriskcentered *\or @@ -612,7 +644,7 @@ }% % %\EndIncludeInRelease -%\IncludeInRelease{0000/00/00}{\@fnsymbol}{Use \TexOrMath}% +%\IncludeInRelease{0000/00/00}{\@fnsymbol}{Use \TextOrMath}% %\def\@fnsymbol#1{\ensuremath{% % \ifcase#1\or *\or \dagger\or \ddagger\or \mathsection\or % \mathparagraph\or \|\or **\or \dagger\dagger diff --git a/macros/latex-dev/base/lterror.dtx b/macros/latex-dev/base/lterror.dtx index 43eef7b289..10d93a1dbd 100644 --- a/macros/latex-dev/base/lterror.dtx +++ b/macros/latex-dev/base/lterror.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{lterror.dtx} - [2021/06/09 v1.2r LaTeX Kernel (errors)] + [2021/08/20 v1.2t LaTeX Kernel (errors)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{lterror.dtx} @@ -375,6 +375,58 @@ Type H for immediate help.}% % \end{macro} % \end{macro} % +% +% +% \begin{macro}{\ClassNote,\ClassNoteNoLine, +% \PackageNote,\PackageNoteNoLine} +% +% \changes{v1.2s}{2021/07/11}{Provide \cs{ClassNote} and \cs{PackageNote}} +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/11/15}% +% {\ClassNote}{Notes for classes/packages}% +% \end{macrocode} +% +% \begin{macrocode} +\def\ClassNote#1#2{% + \GenericWarning{% + (#1) \space\space\@spaces\@spaces + }{% + Class #1 Info: #2% + }% +} +\def\ClassNoteNoLine#1#2{\ClassNote{#1}{#2\@gobble}} +% \end{macrocode} +% +% \begin{macrocode} +\def\PackageNote#1#2{% + \GenericWarning{% + (#1) \@spaces\@spaces\@spaces + }{% + Package #1 Info: #2% + }% +} +\def\PackageNoteNoLine#1#2{\PackageNote{#1}{#2\@gobble}} +% +%\EndIncludeInRelease +% \end{macrocode} +% We don't roll back, because if this code is used by packages then +% most often they will not have rollback code implemented, so they +% would immediately break even if they otherwise would work fine. +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\ClassNote}{Notes for classes/packages}% +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} +% \end{macro} +% +% +% +% +% % \begin{macro}{\@latex@error} % \begin{macro}{\@latex@warning} % \begin{macro}{\@latex@warning@no@line} @@ -635,10 +687,19 @@ Type H for immediate help.}% % RmS 1992/08/24: added code to |\@badend| to display position of % non-matching |\begin|. % FMi 1993/01/14: missing space added. +% +% The environment name has to literally match, i.e., what is stored +% in \cs{@currenvir} (after one expansion) must match what is +% passed to \cs{end} (without expansion). If not we complain. Not +% the absolute best solution but at least it avoids getting +% \verb=\begin{foo} ended by \end{foo}= which was possible in the +% past. +% \changes{v1.2t}{2021/08/20}{Improve \cs{@badend} error message (gh/587)} % \begin{macrocode} \gdef\@badend#1{% - \@latex@error{\protect\begin{\@currenvir}\@currenvline - \space ended by \protect\end{#1}}\@eha} + \@latex@error{\protect\begin + {\detokenize\expandafter{\@currenvir}}\@currenvline + \space ended by \protect\end{\detokenize{#1}}}\@eha} % \end{macrocode} % \end{macro} % diff --git a/macros/latex-dev/base/ltexpl.dtx b/macros/latex-dev/base/ltexpl.dtx index 6d7ec3ff60..021edc644c 100644 --- a/macros/latex-dev/base/ltexpl.dtx +++ b/macros/latex-dev/base/ltexpl.dtx @@ -86,7 +86,7 @@ % \end{macrocode} % We only initialize these kernel hooks if they are not already % existing. Otherwise they would be set to \cs{@empty} on rollback -% which would be wrong because code that has been added to to them +% which would be wrong because code that has been added to them % may still have to be executed in the rollback situation . Instead % code that writes to them needs to handle the rollback as needed. % It is likely that we have to change that approach in the future, diff --git a/macros/latex-dev/base/ltfilehook-code.pdf b/macros/latex-dev/base/ltfilehook-code.pdf index 029273e28d..01d8a52583 100644 Binary files a/macros/latex-dev/base/ltfilehook-code.pdf and b/macros/latex-dev/base/ltfilehook-code.pdf differ diff --git a/macros/latex-dev/base/ltfilehook-doc.pdf b/macros/latex-dev/base/ltfilehook-doc.pdf index 137af2e877..ed7c6213e6 100644 Binary files a/macros/latex-dev/base/ltfilehook-doc.pdf and b/macros/latex-dev/base/ltfilehook-doc.pdf differ diff --git a/macros/latex-dev/base/ltfilehook.dtx b/macros/latex-dev/base/ltfilehook.dtx index 5d0acc8fdf..000f4d8c2a 100644 --- a/macros/latex-dev/base/ltfilehook.dtx +++ b/macros/latex-dev/base/ltfilehook.dtx @@ -31,8 +31,8 @@ %%% From File: ltfilehook.dtx % % \begin{macrocode} -\providecommand\ltfilehookversion{v1.0k} -\providecommand\ltfilehookdate{2021/05/25} +\providecommand\ltfilehookversion{v1.0l} +\providecommand\ltfilehookdate{2021/08/27} % \end{macrocode} % %<*driver> @@ -48,7 +48,7 @@ \vbox_unpack_drop:N \l__codedoc_macro_box \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 \MacroFont % <----- without it the \ is in lmr10 if a link is made - \ + \ } } } \int_incr:N \l__codedoc_macro_int @@ -115,12 +115,12 @@ % \cs{usepackage}, etc. They are not called for files read using % internal low-level methods, such as \cs{@input} or \cs{openin}. % -% \begin{variable}{file/before,file/before/..., -% file/after/...,file/after, +% \begin{variable}{file/before,file/.../before, +% file/.../after,file/after, % } % These are: % \begin{description} -% \item[\texttt{file/before}, \texttt{file/before/\meta{file-name}}] +% \item[\texttt{file/before}, \texttt{file/\meta{file-name}/before}] % % These hooks are executed in that order just before the file is % loaded for reading. The code of the first hook is used @@ -128,7 +128,7 @@ % file with matching \meta{file-name} allowing you to specify % code that only applies to one file. % -% \item[\texttt{file/after/\meta{file-name}}, \texttt{file/after}] +% \item[\texttt{file/\meta{file-name}/after}, \texttt{file/after}] % % These hooks are after the file with name \meta{file-name} has % been fully consumed. The order is swapped (the specific one @@ -149,9 +149,9 @@ % \begin{tabbing} % mm\=mm\=mm\=mm\=\kill % \>\cs{UseHook}\marg{\hook{file/before}} \\ -% \>\cs{UseHook}\marg{\hook{file/before/\meta{file name}}} \\ +% \>\cs{UseHook}\marg{\hook{file/\meta{file name}/before}} \\ % \>\> \meta{file contents} \\ -% \>\cs{UseHook}\marg{\hook{file/after/\meta{file name}}} \\ +% \>\cs{UseHook}\marg{\hook{file/\meta{file name}/after}} \\ % \>\cs{UseHook}\marg{\hook{file/after}} % \end{tabbing} % @@ -172,8 +172,8 @@ % % When a file is input, the \meta{file name} is available in % \cs{CurrentFile}, which is then used when accessing the -% \hook{file/before/\meta{file name}} and -% \hook{file/after/\meta{file name}}. +% \hook{file/\meta{file name}/before} and +% \hook{file/\meta{file name}/after}. % % \begin{variable}{\CurrentFile} % The name of the file about to be read (or just finished) is @@ -216,7 +216,7 @@ % \cs{RequirePackage}, \cs{LoadPackageWithOptions}, etc.) offer the % hooks from section~\ref{sec:general-file-hooks} when they are % used to load a package or class file, e.g., -% \texttt{file/after/array.sty} would be called after the +% \texttt{file/array.sty/after} would be called after the % \pkg{array} package got loaded. But as packages and classes form as special group % of files, there are some additional hooks available that only % apply when a package or class is loaded. @@ -224,9 +224,9 @@ % % \begin{variable}{ % package/before,package/after, -% package/before/...,package/after/..., +% package/.../before,package/.../after, % class/before,class/after, -% class/before/...,class/after/..., +% class/.../before,class/.../after, % } % These are: % \begin{description} @@ -234,8 +234,8 @@ % % These hooks are called for each package being loaded. % -% \item[\texttt{package/before/\meta{name}}, -% \texttt{package/after/\meta{name}}] +% \item[\texttt{package/\meta{name}/before}, +% \texttt{package/\meta{name}/after}] % % These hooks are additionally called if the package name is % \meta{name} (without extension). @@ -244,7 +244,7 @@ % % These hooks are called for each class being loaded. % -% \item[\texttt{class/before/\meta{name}}, \texttt{class/after/\meta{name}}] +% \item[\texttt{class/\meta{name}/before}, \texttt{class/\meta{name}/after}] % % These hooks are additionally called if the class name is % \meta{name} (without extension). @@ -258,16 +258,16 @@ % \begin{tabbing} % mm\=mm\=mm\=mm\=\kill % \>\cs{UseHook}\marg{\hook{package/before}} \\ -% \>\cs{UseHook}\marg{\hook{package/before/\meta{package name}}} \\[5pt] +% \>\cs{UseHook}\marg{\hook{package/\meta{package name}/before}} \\[5pt] % \>\>\cs{UseHook}\marg{\hook{file/before}} \\ -% \>\>\cs{UseHook}\marg{\hook{file/before/\meta{package name}.sty}} \\ +% \>\>\cs{UseHook}\marg{\hook{file/\meta{package name}.sty/before}} \\ % \>\>\> \meta{package contents} \\ -% \>\>\cs{UseHook}\marg{\hook{file/after/\meta{package name}.sty}} \\ +% \>\>\cs{UseHook}\marg{\hook{file/\meta{package name}.sty/after}} \\ % \>\>\cs{UseHook}\marg{\hook{file/after}} \\[5pt] % \>\>\emph{code from \cs{AtEndOfPackage} if % used inside the package} \\[5pt] -% \>\cs{UseHook}\marg{\hook{package/after/\meta{package name}}} \\ -% \>\cs{UseHook}\marg{\hook{package/after}} +% \>\cs{UseHook}\marg{\hook{package/\meta{package name}/after}} \\ +% \>\cs{UseHook}\marg{\hook{package/after}} % \end{tabbing} % and similar for class file loading, except that \texttt{package/} % is replaced by \texttt{class/} and \cs{AtEndOfPackage} by @@ -276,6 +276,20 @@ % If a package or class is not loaded (or it was loaded before the % hooks were set) none of the hooks are executed! % +% All class or package hooks involving the name of the class or +% package are implemented as +% one-time hooks, whereas all other such hooks are normal hooks. +% This allows for the following use case +%\begin{verbatim} +% \AddToHook{package/varioref/after} +% { ... apply my customizations if the package gets +% loaded (or was loaded already) ... } +%\end{verbatim} +% without the need to first test if the package is already loaded. +% +% +% +% % \subsection{Hooks for \cs{include} files} % % To manage \cs{include} files, \LaTeX{} issues a \cs{clearpage} @@ -300,14 +314,14 @@ % is \enquote{\texttt{No file \meta{filename}.tex}}). % % -% \begin{variable}{include/before,include/before/..., -% include/end,include/end/..., -% include/after,include/after/..., +% \begin{variable}{include/before,include/.../before, +% include/end,include/.../end, +% include/after,include/.../after, % } % These are: % \begin{description} % -% \item[\texttt{include/before}, \texttt{include/before/\meta{name}}] +% \item[\texttt{include/before}, \texttt{include/\meta{name}/before}] % % These hooks are executed (in that order) after the initial % \cs{clearpage} and after \texttt{.aux} file is changed to use @@ -317,14 +331,14 @@ % file. % % -% \item[\texttt{include/end/\meta{name}}, \texttt{include/end}] +% \item[\texttt{include/\meta{name}/end}, \texttt{include/end}] % % These hooks are executed (in that order) after \LaTeX{} has % stopped reading from the \cs{include} file, but before it has % issued a \cs{clearpage} to output any deferred floats. % % -% \item[\texttt{include/after/\meta{name}}, \texttt{include/after}] +% \item[\texttt{include/\meta{name}/after}, \texttt{include/after}] % % These hooks are executed (in that order) after \LaTeX{} has % issued the \cs{clearpage} but before is has switched back @@ -341,6 +355,13 @@ % normally does nothing, but starts a new page if further material % got added this way.} % +% +% All \hook{include} hooks involving the name of the included file are implemented as +% one-time hooks (whereas all other such hooks are normal hooks). +% +% +% +% % \subsection{High-level interfaces for \LaTeX{}} % % We do not provide any additional wrappers around the hooks (like @@ -531,7 +552,7 @@ % The output of \cs{@@_file_parse_full_name:nN} is passed on to the % |#2|---a 3-argument macro that takes the \meta{path}, \meta{base}, % and \meta{ext} parts of the file name. -% +% % \begin{macrocode} \cs_new:Npn \@@_file_parse_full_name:nN #1 { @@ -591,6 +612,7 @@ % \changes{v1.0h}{2021/03/18} % {Define \cs{g_@@_input_file_seq} to avoid losing data when % rolling back.} +% \changes{v1.0l}{2021/08/27}{Internal message name changes} % \begin{macrocode} \tl_new:N \l_@@_internal_tl \seq_if_exist:NF \g_@@_input_file_seq @@ -608,7 +630,7 @@ \seq_gpop:NNTF \g_@@_input_file_seq \l_@@_internal_tl { \exp_after:wN \@@_file_pop_assign:nnnn \l_@@_internal_tl } { - \msg_error:nnn { kernel } { should-not-happen } + \msg_error:nnn { latex2e } { should-not-happen } { Tried~to~pop~from~an~empty~file~name~stack. } } } @@ -624,7 +646,7 @@ % \end{macro} % \end{macro} % \end{macro} -% +% % \begin{macrocode} % %\EndIncludeInRelease @@ -683,7 +705,7 @@ % { \use_none:n #1 \prg_do_nothing: } % {#2} % } -%} +%} %\ExplSyntaxOff % %\EndIncludeInRelease @@ -697,16 +719,17 @@ % % \subsection{Declaring the file-related hooks} % -% All hooks starting with \texttt{file/} \texttt{include/}, -% \texttt{class/} or \texttt{package/} are generic and will be -% allocated if code is added to them. Thus there is no need to -% explicitly declare any hook in the code below. -% -% Furthermore, those named \texttt{.../after} or \texttt{.../end} are -% automatically declared as reversed hooks if filled with code, so this -% is also automatically taken care of. -% +% These hooks have names with three-parts that +% start with \hook{file/}, \hook{include/}, +% \hook{class/} or \hook{package/} and end with \hook{/before} or +% \hook{/after} (or \hook{/end} in the case of \hook{include/}). +% They are all generic hooks +% so will be declared only if code is added to them; +% this declaration is done for you automatically and, indeed, they should +% not be declared explicitly. % +% Those named \hook{.../after} and \texttt{include/.../end} +% are, when code is added, declared as reversed hooks. % % % \subsection{Patching \LaTeX{}'s \cs{InputIfFileExists} command} @@ -760,7 +783,7 @@ % can't rely on that still being true after the file has been % processed. Thus for using the name in the file hooks we need to % preserve the name and then restore it for the -% \texttt{file/after/...} hook. +% \texttt{file/.../after} hook. % % The hook always refers to the file requested by the user. The hook % is \emph{always} loaded for \cs{CurrentFile} which usually is the @@ -814,20 +837,27 @@ % The current file name is available in \cs{CurrentFile} so we use % that in the specific hook. % \begin{macrocode} - \UseHook{file/before/\CurrentFile}% + \UseHook{file/\CurrentFile/before}% \@@input #1% <- trailing space comes from \@filef@und }% % \end{macrocode} % And here, \cs{CurrentFile} is restored % (by \cs{@expl@@@filehook@file@pop@assign@@nnnn}) so we can use it once more. % \begin{macrocode} - \UseHook{file/after/\CurrentFile}% + \UseHook{file/\CurrentFile/after}% \UseHook{file/after}} \def\unqu@tefilef@und"#1" \@nil{#1} +% \end{macrocode} +% +% \changes{v1.0l}{2021/08/25}{Declare non-generic file hooks} +% Now declare the non-generic file hooks used above: +% \begin{macrocode} +\NewHook{file/before} +\NewReversedHook{file/after} %\EndIncludeInRelease % % \end{macrocode} -% +% % \changes{v0.9b} % {1993/12/04}{Macro added} % \changes{v0.9p} @@ -949,7 +979,7 @@ { \if_meaning:w #1 #2 .tex \else: \token_to_str:N #2 \fi: } % \end{macrocode} % \end{macro} -% +% % \begin{macro}[int]{\use_ii_iii:nnn} % A variant of \cs[no-index]{use_...} to discard the first of three % arguments. @@ -1085,7 +1115,7 @@ % %\EndIncludeInRelease % \end{macrocode} -% +% % \begin{macrocode} %\IncludeInRelease{2020/10/01}% % {\set@curr@file}{Setting current file name}% @@ -1108,7 +1138,7 @@ % \endgroup} %\EndIncludeInRelease % \end{macrocode} -% +% % \begin{macrocode} %\IncludeInRelease{2019/10/01}% % {\set@curr@file}{Setting current file name}% @@ -1124,7 +1154,7 @@ %} %\EndIncludeInRelease % \end{macrocode} -% +% % \begin{macrocode} %\IncludeInRelease{0000/00/00}% % {\set@curr@file}{Setting current file name}% @@ -1383,6 +1413,7 @@ % \@@_file_subst_cycle_error:NN, % \@@_file_subst_cycle_error:cN, % } +% \changes{v1.0l}{2021/08/27}{Use \cs{msg_...} not \cs{__kernel_msg_...}} % Showing this type of error expandably is tricky, as we have a very % limited amount of characters to show and a potentially large list. % As a work around, several errors are printed, each showing one step @@ -1390,7 +1421,7 @@ % \begin{macrocode} \cs_new:Npn \@@_file_subst_cycle_error:NN #1 #2 { - \__kernel_msg_expandable_error:nnff { kernel } { file-cycle } + \msg_expandable_error:nnff { latex2e } { file-cycle } {#1} { \use:c { @file-subst@ #1 } } \token_if_eq_meaning:NNF #1 #2 { \@@_file_subst_cycle_error:cN { @file-subst@ #1 } #2 } @@ -1400,7 +1431,7 @@ % % And the error message: % \begin{macrocode} -\__kernel_msg_new:nnn { kernel } { file-cycle } +\msg_new:nnn { latex2e } { file-cycle } { File~loop!~#1~replaced~by~#2... } % \end{macrocode} % \end{macro} @@ -1412,7 +1443,7 @@ %\EndIncludeInRelease %<*2ekernel> % \end{macrocode} -% +% % % \begin{macrocode} %<@@=> @@ -1438,7 +1469,7 @@ \def\disable@package@load#1#2{% \global\@namedef{@pkg-disable@#1.\@pkgextension}{#2}} % \end{macrocode} -% +% % \begin{macrocode} \def\@disable@packageload@do#1#2{% \@ifundefined{@pkg-disable@#1}{#2}% @@ -1453,7 +1484,7 @@ \csname @pkg-disable@#1.\@pkgextension \endcsname \@undefined} % \end{macrocode} % -% +% % \begin{macrocode} % %\EndIncludeInRelease @@ -1502,7 +1533,7 @@ % {\@expl@@@filehook@if@no@extension@@nTF}{2e tmp interfaces}% \ExplSyntaxOn % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@if@no@extension@@nTF \__filehook_if_no_extension:nTF @@ -1512,7 +1543,7 @@ \cs_new_eq:NN \@expl@@@filehook@set@curr@file@@nNN \__filehook_set_curr_file:nNN % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@resolve@file@subst@@w \__filehook_resolve_file_subst:w @@ -1522,7 +1553,7 @@ \cs_new_eq:NN \@expl@@@filehook@normalize@file@name@@w \__filehook_normalize_file_name:w % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@if@file@replaced@@TF \__filehook_if_file_replaced:TF @@ -1537,23 +1568,23 @@ \cs_new_eq:NN \@expl@@@filehook@drop@extension@@N \__filehook_drop_extension:N % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@file@push@@ \__filehook_file_push: % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@file@pop@@ \__filehook_file_pop: % \end{macrocode} -% +% % \begin{macrocode} \cs_new_eq:NN \@expl@@@filehook@file@pop@assign@@nnnn \__filehook_file_pop_assign:nnnn % \end{macrocode} % \InternalDetectionOn -% +% % % \begin{macrocode} \ExplSyntaxOff @@ -1682,7 +1713,7 @@ %<*atveryend-ltx> \ProvidesPackage{atveryend-ltx} [2020/08/19 v1.0a - Emulation of the original atvery package^^Jwith kernel methods] + Emulation of the original atveryend package^^Jwith kernel methods] % \end{macrocode} % % @@ -1698,14 +1729,14 @@ % \begin{macrocode} \newcommand\AtEndAfterFileList{\AddToHook{enddocument/info}} % \end{macrocode} -% +% % \begin{macrocode} \newcommand\AtVeryVeryEnd {\AddToHook{enddocument/end}} % \end{macrocode} % % \begin{macro}{\BeforeClearDocument} % This one is the only one we don't implement or rather don't have -% a dedicated hook in the code. +% a dedicated hook in the code. % \begin{macrocode} \ExplSyntaxOn \newcommand\BeforeClearDocument[1] @@ -1713,7 +1744,7 @@ \atveryend@DEPRECATED{BeforeClearDocument \tl_to_str:n{#1}} } % \end{macrocode} -% +% % \begin{macrocode} \cs_new:Npn\atveryend@DEPRECATED #1 {\iow_term:x{======~DEPRECATED~USAGE~#1~==========}} @@ -1721,7 +1752,7 @@ % \end{macrocode} % \end{macro} % -% +% % \begin{macrocode} % % \end{macrocode} @@ -1735,4 +1766,3 @@ \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - diff --git a/macros/latex-dev/base/ltfiles.dtx b/macros/latex-dev/base/ltfiles.dtx index bcaac58220..4dee83c4d6 100644 --- a/macros/latex-dev/base/ltfiles.dtx +++ b/macros/latex-dev/base/ltfiles.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfiles.dtx} - [2021/04/17 v1.2m LaTeX Kernel (File Handling)] + [2021/08/25 v1.2o LaTeX Kernel (File Handling)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfiles.dtx} @@ -850,16 +850,19 @@ % \end{macrocode} % Execute the \texttt{before} hooks just after we switched the % \texttt{.aux} file \ldots +% \changes{v1.2n}{2021/07/23}{Make include/name/before a one-time hook} +% \changes{v1.2o}{2021/08/25}{Standardise generic hook names (gh/648)} % \begin{macrocode} \UseHook{include/before}% - \UseHook{include/before/#1}% + \UseOneTimeHook{include/#1/before}% %----------------------------------------- \@input@{#1.tex}% %----------------------------------------- % \end{macrocode} % \ldots{} then \texttt{end} hooks \ldots +% \changes{v1.2n}{2021/07/23}{Make include/name/end a one-time hook} % \begin{macrocode} - \UseHook{include/end/#1}% + \UseOneTimeHook{include/#1/end}% \UseHook{include/end}% %----------------------------------------- \clearpage @@ -869,8 +872,9 @@ % followed by another \cs{clearpage} just in case new material got % added (after all we need to be in well defined state after the % \cs{include}). +% \changes{v1.2n}{2021/07/23}{Make include/name/after a one-time hook} % \begin{macrocode} - \UseHook{include/after/#1}% + \UseOneTimeHook{include/#1/after}% \UseHook{include/after}% \clearpage %----------------------------------------- @@ -889,6 +893,14 @@ \@nameuse{cp@#1}% \fi \let\@auxout\@mainaux} +% \end{macrocode} +% +% \changes{v1.2o}{2021/08/25}{Declare non-generic include hooks} +% Now declare the non-generic \hook{include} hooks used above: +% \begin{macrocode} +\NewHook{include/before} +\NewReversedHook{include/end} +\NewReversedHook{include/after} %\EndIncludeInRelease % % \end{macrocode} diff --git a/macros/latex-dev/base/ltfinal.dtx b/macros/latex-dev/base/ltfinal.dtx index 19f82934aa..5d77fb2e83 100644 --- a/macros/latex-dev/base/ltfinal.dtx +++ b/macros/latex-dev/base/ltfinal.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltfinal.dtx} - [2021/04/18 v2.2o LaTeX Kernel (Final Settings)] + [2021/09/06 v2.2q LaTeX Kernel (Final Settings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfinal.dtx} @@ -1074,9 +1074,11 @@ }} % \end{macrocode} % +% \changes{v2.2q}{2021/09/06}{Correctly upper and lowercase +% \cs{ij} and \cs{IJ} (gh/658)} % \begin{macrocode} \def\@uclclist{\oe\OE\o\O\ae\AE - \dh\DH\dj\DJ\l\L\ng\NG\ss\SS\th\TH} + \dh\DH\dj\DJ\l\L\ng\NG\ss\SS\ij\IJ\th\TH} % \end{macrocode} % The above code works, but has the nasty side-effect that if you % say something like: @@ -1244,6 +1246,38 @@ % \end{macro} % \end{macro} % +% \subsection{Prepare for supporting PDF management in backends} +% +% At the current point in time support for PDF management in +% backends is not part of \LaTeX{} core but provided by external +% packages. At some time in the future that work will be placed +% into the kernel but for now it is separate and has to be +% explicitly loaded in the document. +% +% There is a command \cs{IfPDFManagementActiveTF} in that code +% which checks if the PDF management code is activated, which can +% be used by packages to execute different code branches depending +% on the state. +% +% To make this also work properly if the external package is not +% loaded at all this command is already made available in the +% kernel (with a trivial definition) so that other packages can +% query the state in all circumstances. Once the PDF management +% support moves to the kernel this definition here will vanish +% again or rather will be replaced by a real test. +% +% +% \begin{macro}{\IfPDFManagementActiveTF} +% While the PDF management code is not loaded, the test will +% always return the false branch. Once this code is loaded, it +% is replaced by a real test (as then it is possible that the +% management code is activate or not activated). +% \changes{v2.2p}{2021/08/08}{Default definition added (gh/640)} +% \begin{macrocode} +\let \IfPDFManagementActiveTF \@secondoftwo +% \end{macrocode} +% \end{macro} +% % % % \subsection{Do some temporary work for pre-release} @@ -1253,7 +1287,7 @@ % \begin{macrocode} % \end{macrocode} % -% \subsection{Some last minute initializations \ldots} +% \subsection{Some last minute initializations \ldots} % % Load the first aid set of definitions for external packages that await updates. % \changes{v2.2j}{2020/09/26} diff --git a/macros/latex-dev/base/ltfntcmd.dtx b/macros/latex-dev/base/ltfntcmd.dtx index 5f70053a68..6c4ec4b3d1 100644 --- a/macros/latex-dev/base/ltfntcmd.dtx +++ b/macros/latex-dev/base/ltfntcmd.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltfntcmd.dtx} - [2020/12/05 v3.4c LaTeX Kernel (Font commands)] + [2021/09/12 v3.5a LaTeX Kernel (Font commands)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltfntcmd.dtx} @@ -466,9 +466,10 @@ % Is this the correct action in the `empty' case? It is efficient but % typographically it is, strictly, incorrect! % \changes{v3.3l}{1994/06/18}{Added check for empty text} +% \changes{v3.5a}{2021/09/12}{use \cs{unexpanded} to make \# safe} % \begin{macrocode} \def \text@command #1{% - \def \reserved@a {#1}% + \edef \reserved@a {\unexpanded{#1}}% \ifx \reserved@a \@empty \let \check@icl \@empty \let \check@icr \@empty diff --git a/macros/latex-dev/base/ltfssini.dtx b/macros/latex-dev/base/ltfssini.dtx index b06fc161b0..f817fdd847 100644 --- a/macros/latex-dev/base/ltfssini.dtx +++ b/macros/latex-dev/base/ltfssini.dtx @@ -36,7 +36,7 @@ % % \ProvidesFile{ltfssini.dtx} - [2021/04/26 v3.2h LaTeX Kernel (NFSS Initialisation)] + [2021/09/10 v3.2i LaTeX Kernel (NFSS Initialisation)] % \iffalse \documentclass{ltxdoc} \begin{document} @@ -207,7 +207,7 @@ % \begin{macrocode} % %<*2ekernel|latexrelease> -%\IncludeInRelease{2020/02/02}% +%\IncludeInRelease{2021/11/15}% % {\DeclareFontSeriesDefault}{Custom series}% % \end{macrocode} % @@ -280,6 +280,17 @@ % \begin{macrocode} \let\DeclareFontSeriesDefault\@undefined % for rollback \newcommand\DeclareFontSeriesDefault[3][]{% +% \end{macrocode} +% +% \changes{v3.2i}{2021/09/10}{Do delayed changes to \cs{bfdefault} or +% \cs{mddefault} first (gh/663)} +% \begin{macrocode} + \expand@font@defaults + \maybe@update@bfseries@defaults + \maybe@update@mdseries@defaults +% \end{macrocode} +% +% \begin{macrocode} \def\reserved@a{#1}% % \end{macrocode} % No optional argument: set up general default. @@ -333,7 +344,77 @@ % \end{macro} +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{2020/02/02}% +% {\DeclareFontSeriesDefault}{Custom series}% +% +%\let\DeclareFontSeriesDefault\@undefined % for rollback +%\newcommand\DeclareFontSeriesDefault[3][]{% +% \def\reserved@a{#1}% +% \ifx\reserved@a\@empty +% \ifcsname #2series\endcsname % supported are +% % \[md/bf]default +% \expandafter\def +% \csname #2default\endcsname{#3\@empty}% +% \expandafter\def +% \csname #2default@previous\endcsname{#3\@empty}% +% \else +% \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% +% {Mandatory first argument must be 'md' or 'bf'.} +% \fi +% \else +% \ifcsname #2series@#1\endcsname % supported are +% % \[md/bf]series@[rm/sf/tt] +% \expandafter\edef +% \csname #2series@#1\endcsname{#3}% +% \expandafter\let +% \csname #2series@#1@kernel\endcsname\@undefined +% \else +% \@latex@error{Wrong syntax for \string\DeclareFontSeriesDefault}% +% {Optional argument must be 'rm', 'sf', or 'tt'. \MessageBreak +% Mandatory first argument must be 'md' or 'bf'.} +% \fi +% \fi +%} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\DeclareFontSeriesDefault}{Custom series}% +% +%\let\DeclareFontSeriesDefault\@undefined +%\let\bfseries@rm\@undefined +%\let\bfseries@sf\@undefined +%\let\bfseries@tt\@undefined +%\let\bfseries@rm@kernel\@undefined +%\let\bfseries@sf@kernel\@undefined +%\let\bfseries@tt@kernel\@undefined +%\let\mdseries@rm\@undefined +%\let\mdseries@sf\@undefined +%\let\mdseries@tt\@undefined +%\expandafter\let\csname ver@mweights.sty\endcsname\@undefined +% +%\let\@meta@family@list\@undefined +%\let\prepare@family@series@update\@undefined +%\let\update@series@target@value\@undefined +% +% \end{macrocode} +% This is always called in \cs{document} so don't make it undefined. +% \begin{macrocode} +%\let\init@series@setup\relax +% +%\EndIncludeInRelease +%<*2ekernel> +% \end{macrocode} + +% \begin{macrocode} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/02/02}% +% {\mdseries@rm}{Custom series}% +% \end{macrocode} % \begin{macro}{\mdseries@rm} % \begin{macro}{\mdseries@sf} @@ -704,9 +785,8 @@ % %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% -% {\DeclareFontSeriesDefault}{Custom series}% +% {\mdseries@rm}{Custom series}% % -%\let\DeclareFontSeriesDefault\@undefined %\let\bfseries@rm\@undefined %\let\bfseries@sf\@undefined %\let\bfseries@tt\@undefined @@ -735,55 +815,11 @@ % \begin{macrocode} % %<*2ekernel|latexrelease> -%\IncludeInRelease{2020/10/01}% +%\IncludeInRelease{2021/11/15}% % {\bfseries}{Custom series with hooks}% % \end{macrocode} -% \begin{macro}{\expand@font@defaults} -% \begin{macro}{\rm@def@ult} -% \begin{macro}{\sf@def@ult} -% \begin{macro}{\tt@def@ult} -% \begin{macro}{\md@def@ult} -% \begin{macro}{\bf@def@ult} -% -% The family specific defaults are fully expanded, i.e., they are -% defined via \cs{edef} inside \cs{DeclareFontSeriesDefault}. -% However, the overall defaults, e.g., \cs{bfdefault} may have been -% redefined by the user and thus may not be fully expanded. So to -% enable reliable comparison we make expanded versions of -% them. That we rerun each time. The alternative would be to only -% allow for changes before begin document. -% \begin{macrocode} -\def\expand@font@defaults{% - \edef\rmdef@ult{\rmdefault}% - \edef\sfdef@ult{\sfdefault}% - \edef\ttdef@ult{\ttdefault}% -% \end{macrocode} -% The series defaults may contain some surplus \texttt{m} that we -% need to drop here. -% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from \cs{bfdef@ult} -% and \cs{mddef@ult} (gh/291)} -% \begin{macrocode} - \series@maybe@drop@one@m\bfdefault\bfdef@ult - \series@maybe@drop@one@m\mddefault\mddef@ult -% \end{macrocode} -% Formats that set up parallel fonts, e.g., for Japanese, can use -% this hook to add additional code here. -% \changes{v3.1m}{2020/04/06}{Hook added (gh/306)} -% \changes{v3.2b}{2020/08/21}{Integration of new hook management interface} -% \begin{macrocode} - \UseHook{expand@font@defaults}% -} -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} - - % \begin{macro}{\bfseries} % This document command switches to the bold series. % \begin{macrocode} @@ -797,9 +833,35 @@ % \cs{ttdef@ult} and the select the correct family default in that case. % \changes{v3.1i}{2020/02/18}{Make the \cs{ifx} selection outside % of \cs{fontseries} argument so that it is not done several times} +% \changes{v3.2i}{2021/09/10}{Do delayed changes to \cs{bfdefault} in +% a separate macro for better reuse (gh/663)} % \begin{macrocode} \expand@font@defaults + \maybe@update@bfseries@defaults +% \end{macrocode} +% +% \begin{macrocode} + \ifx\f@family\rmdef@ult \fontseries\bfseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt +% \end{macrocode} +% If not \cs{bfdefault} is used. +% \begin{macrocode} + \else \fontseries\bfdefault + \fi\fi\fi % \end{macrocode} +% This hook in contrast is always executed. +% \begin{macrocode} + \UseHook{bfseries}% + \selectfont +} +% \end{macrocode} +% \end{macro} + + + +% \begin{macro}{\maybe@update@bfseries@defaults} +% % If \cs{bfdefault} and \cs{bfdefault@previous} are different then % the default got changed directly through the legacy interface % (i.e., via \cs{def} or \cs{renewcommand}. In that case we reset @@ -807,7 +869,10 @@ % the case before the new mechanism was introduced. % \changes{v3.1k}{2020/03/19}{Support legacy use of \cs{bfdefault} % and \cs{mddefault} (gh/306)} +% \changes{v3.2i}{2021/09/10}{Do delayed changes to \cs{bfdefault} in +% a separate macro for better reuse (gh/663)} % \begin{macrocode} +\def\maybe@update@bfseries@defaults{% \ifx\bfdefault\bfdefault@previous\else % \end{macrocode} % We add \cs{@empty} and then let \cs{bfdefault@previous} to @@ -835,28 +900,11 @@ % \begin{macrocode} \UseHook{bfseries/defaults}% \fi -% \end{macrocode} -% -% \begin{macrocode} - \ifx\f@family\rmdef@ult \fontseries\bfseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt -% \end{macrocode} -% If not \cs{bfdefault} is used. -% \begin{macrocode} - \else \fontseries\bfdefault - \fi\fi\fi -% \end{macrocode} -% This hook in contrast is always executed. -% \begin{macrocode} - \UseHook{bfseries}% - \selectfont } % \end{macrocode} % \end{macro} - % \begin{macro}{\mdseries} % This document command switches to the medium series. % \changes{v3.1i}{2020/02/18}{Make the \cs{ifx} selection outside @@ -865,10 +913,30 @@ % and \cs{mddefault} (gh/306)} % \changes{v3.2d}{2020/09/30}{\cs{mddefault@previous} not \cs{mdseries@previous} % (gh/395)} +% \changes{v3.2i}{2021/09/10}{Do delayed changes to \cs{mddefault} in +% a separate macro for better reuse (gh/663)} % \begin{macrocode} \DeclareRobustCommand\mdseries{% \not@math@alphabet\mdseries\relax \expand@font@defaults + \maybe@update@mdseries@defaults + \ifx\f@family\rmdef@ult \fontseries\mdseries@rm + \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf + \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt + \else \fontseries\mddefault + \fi\fi\fi + \UseHook{mdseries}% + \selectfont +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\maybe@update@mdseries@defaults} +% +% \changes{v3.2i}{2021/09/10}{Do delayed changes to \cs{mddefault} in +% a separate macro for better reuse (gh/663)} +% \begin{macrocode} +\def\maybe@update@mdseries@defaults{% \ifx\mddefault\mddefault@previous\else \expandafter\def\expandafter\mddefault\expandafter{\mddefault\@empty}% \let\mddefault@previous\mddefault @@ -884,17 +952,161 @@ % \begin{macrocode} \UseHook{mdseries/defaults}% \fi - \ifx\f@family\rmdef@ult \fontseries\mdseries@rm - \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf - \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt - \else \fontseries\mddefault - \fi\fi\fi - \UseHook{mdseries}% - \selectfont } % \end{macrocode} % \end{macro} +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{2020/10/01}% +% {\bfseries}{Custom series with hooks}% +% +%\let\maybe@update@bfseries@defaults\@undefined +%\let\maybe@update@mdseries@defaults\@undefined +% +%\DeclareRobustCommand\bfseries{% +% \not@math@alphabet\bfseries\mathbf +% \expand@font@defaults +% \ifx\bfdefault\bfdefault@previous\else +% \expandafter\def\expandafter\bfdefault +% \expandafter{\bfdefault\@empty}% +% \let\bfdefault@previous\bfdefault +% \let\bfseries@rm\bfdef@ult +% \let\bfseries@sf\bfdef@ult +% \let\bfseries@tt\bfdef@ult +% \UseHook{bfseries/defaults}% +% \fi +% \ifx\f@family\rmdef@ult \fontseries\bfseries@rm +% \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf +% \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt +% \else \fontseries\bfdefault +% \fi\fi\fi +% \UseHook{bfseries}% +% \selectfont +%} +% +%\DeclareRobustCommand\mdseries{% +% \not@math@alphabet\mdseries\relax +% \expand@font@defaults +% \ifx\mddefault\mddefault@previous\else +% \expandafter\def\expandafter\mddefault\expandafter{\mddefault\@empty}% +% \let\mddefault@previous\mddefault +% \let\mdseries@rm\mddef@ult +% \let\mdseries@sf\mddef@ult +% \let\mdseries@tt\mddef@ult +% \UseHook{mdseries/defaults}% +% \fi +% \ifx\f@family\rmdef@ult \fontseries\mdseries@rm +% \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf +% \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt +% \else \fontseries\mddefault +% \fi\fi\fi +% \UseHook{mdseries}% +% \selectfont +%} +%\EndIncludeInRelease +%\IncludeInRelease{2020/02/02}% +% {\bfseries}{Custom series with hooks}% +% +% +%\DeclareRobustCommand\bfseries{% +% \not@math@alphabet\bfseries\mathbf +% \expand@font@defaults +% \ifx\f@family\rmdef@ult \fontseries\bfseries@rm +% \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf +% \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt +% \else \fontseries\bfdefault +% \fi\fi\fi +% \selectfont +%} +% +%\DeclareRobustCommand\mdseries{% +% \not@math@alphabet\mdseries\relax +% \expand@font@defaults +% \ifx\f@family\rmdef@ult \fontseries\mdseries@rm +% \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf +% \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt +% \else \fontseries\mddefault +% \fi\fi\fi +% \selectfont +%} +% +% +% \end{macrocode} +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\bfseries}{Custom series with hooks}% +% +%\DeclareRobustCommand\bfseries +% {\not@math@alphabet\bfseries\mathbf +% \fontseries\bfdefault\selectfont} +%\DeclareRobustCommand\mdseries +% {\not@math@alphabet\mdseries\relax +% \fontseries\mddefault\selectfont} +% +%\EndIncludeInRelease +%<*2ekernel> + + + + +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2020/10/01}% +% {\expand@font@defaults}{Custom series with hooks}% +% \end{macrocode} + + + +% \begin{macro}{\expand@font@defaults} +% \begin{macro}{\rm@def@ult} +% \begin{macro}{\sf@def@ult} +% \begin{macro}{\tt@def@ult} +% \begin{macro}{\md@def@ult} +% \begin{macro}{\bf@def@ult} +% +% The family specific defaults are fully expanded, i.e., they are +% defined via \cs{edef} inside \cs{DeclareFontSeriesDefault}. +% However, the overall defaults, e.g., \cs{bfdefault} may have been +% redefined by the user and thus may not be fully expanded. So to +% enable reliable comparison we make expanded versions of +% them. That we rerun each time. The alternative would be to only +% allow for changes before begin document. +% \begin{macrocode} +\def\expand@font@defaults{% + \edef\rmdef@ult{\rmdefault}% + \edef\sfdef@ult{\sfdefault}% + \edef\ttdef@ult{\ttdefault}% +% \end{macrocode} +% The series defaults may contain some surplus \texttt{m} that we +% need to drop here. +% \changes{v3.1j}{2020/02/25}{Drop surplus ``m'' from \cs{bfdef@ult} +% and \cs{mddef@ult} (gh/291)} +% \begin{macrocode} + \series@maybe@drop@one@m\bfdefault\bfdef@ult + \series@maybe@drop@one@m\mddefault\mddef@ult +% \end{macrocode} +% Formats that set up parallel fonts, e.g., for Japanese, can use +% this hook to add additional code here. +% \changes{v3.1m}{2020/04/06}{Hook added (gh/306)} +% \changes{v3.2b}{2020/08/21}{Integration of new hook management interface} +% \begin{macrocode} + \UseHook{expand@font@defaults}% +} +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} + + % \begin{macro}{\rmfamily} % Here are the document level commands for changing the main font @@ -1094,7 +1306,7 @@ % %\EndIncludeInRelease %\IncludeInRelease{2020/02/02}% -% {\bfseries}{Custom series with hooks}% +% {\expand@font@defaults}{Custom series with hooks}% % %\def\expand@font@defaults{% % \edef\rmdef@ult{\rmdefault}% @@ -1105,27 +1317,6 @@ % \edef\famdef@ult{\familydefault}% %} % -%\DeclareRobustCommand\bfseries{% -% \not@math@alphabet\bfseries\mathbf -% \expand@font@defaults -% \ifx\f@family\rmdef@ult \fontseries\bfseries@rm -% \else\ifx\f@family\sfdef@ult \fontseries\bfseries@sf -% \else\ifx\f@family\ttdef@ult \fontseries\bfseries@tt -% \else \fontseries\bfdefault -% \fi\fi\fi -% \selectfont -%} -% -%\DeclareRobustCommand\mdseries{% -% \not@math@alphabet\mdseries\relax -% \expand@font@defaults -% \ifx\f@family\rmdef@ult \fontseries\mdseries@rm -% \else\ifx\f@family\sfdef@ult \fontseries\mdseries@sf -% \else\ifx\f@family\ttdef@ult \fontseries\mdseries@tt -% \else \fontseries\mddefault -% \fi\fi\fi -% \selectfont -%} % %\DeclareRobustCommand\rmfamily{% % \not@math@alphabet\rmfamily\mathrm @@ -1152,7 +1343,7 @@ % %\EndIncludeInRelease %\IncludeInRelease{0000/00/00}% -% {\bfseries}{Custom series with hooks}% +% {\expand@font@defaults}{Custom series with hooks}% % %\let\expand@font@defaults\@undefined % diff --git a/macros/latex-dev/base/ltfsstrc.dtx b/macros/latex-dev/base/ltfsstrc.dtx index c6aec105ba..f562a4fa90 100644 --- a/macros/latex-dev/base/ltfsstrc.dtx +++ b/macros/latex-dev/base/ltfsstrc.dtx @@ -495,7 +495,7 @@ \delayed@f@adjustment % \end{macrocode} % We then check if the resulting cominbation is valid but for this -% we have to make sure the the appropiate \texttt{.fd} is loaded if +% we have to make sure that the appropiate \texttt{.fd} is loaded if % that hasn't happened so far. % \begin{macrocode} \maybe@load@fontshape diff --git a/macros/latex-dev/base/lthooks-code.pdf b/macros/latex-dev/base/lthooks-code.pdf index 675f068676..8f563f3955 100644 Binary files a/macros/latex-dev/base/lthooks-code.pdf and b/macros/latex-dev/base/lthooks-code.pdf differ diff --git a/macros/latex-dev/base/lthooks-doc.pdf b/macros/latex-dev/base/lthooks-doc.pdf index 54f688d47b..9f6df1b13b 100644 Binary files a/macros/latex-dev/base/lthooks-doc.pdf and b/macros/latex-dev/base/lthooks-doc.pdf differ diff --git a/macros/latex-dev/base/lthooks.dtx b/macros/latex-dev/base/lthooks.dtx index 20e172a57f..3969a2be56 100644 --- a/macros/latex-dev/base/lthooks.dtx +++ b/macros/latex-dev/base/lthooks.dtx @@ -31,8 +31,8 @@ %%% From File: lthooks.dtx % % \begin{macrocode} -\def\lthooksversion{v1.0n} -\def\lthooksdate{2021/05/26} +\def\lthooksversion{v1.0r} +\def\lthooksdate{2021/09/06} % \end{macrocode} % %<*driver> @@ -47,7 +47,7 @@ \vbox_unpack_drop:N \l__codedoc_macro_box \hbox { \llap { \__codedoc_print_macroname:nN {#1} #2 \MacroFont % <----- without it the \ is in lmr10 if a link is made - \ + \ } } } \int_incr:N \l__codedoc_macro_int @@ -74,9 +74,9 @@ % \providecommand\pho[1]{\marginpar{\footnotesize PhO: #1}} % \providecommand\phoinline[1]{\begin{quote}\itshape\footnotesize PhO: #1\end{quote}} % -% % -% \title{The \texttt{lthooks} package\thanks{This package has version +% +% \title{\LaTeX{}'s hook management\thanks{This module has version % \lthooksversion\ dated \lthooksdate, \copyright\ \LaTeX\ % Project.}} % @@ -127,22 +127,18 @@ % % \subsubsection{Declaring hooks} % -% With a few exceptions, hooks have to be declared before they can -% be used. The exceptions are the generic hooks for commands, -% environments (i.e., executed at \cs{begin} and \cs{end}) and -% hooks run when loading files, e.g. before and after a package is -% loaded, etc. Their hook names depend on the command, -% environment or the -% file name and so declaring them beforehand is not practical. -% +% With a few exceptions, hooks have to be declared before they can +% be used. The exceptions are the generic hooks for commands and +% environments (executed at \cs{begin} and \cs{end}), and the +% hooks run when loading files (see section~\ref{sec:generic}). % % \begin{function}{\NewHook} % \begin{syntax} % \cs{NewHook} \Arg{hook} % \end{syntax} % Creates a new \meta{hook}. -% If this is a hook provided as part of a package it is suggested -% that the \meta{hook} name is always structured as follows: +% If this hook is declared within a package it is suggested +% that its name is always structured as follows: % \meta{package-name}\texttt{/}\meta{hook-name}. If necessary you % can further subdivide the name by adding more \texttt{/} parts. % If a hook name is already taken, an error is raised and the hook @@ -180,17 +176,19 @@ % \end{function} % % -% \subsubsection{Special declarations for hooks} +% \subsubsection{Special declarations for generic hooks} % % The declarations here should normally not be used. They are available % to provide support for special use cases mainly involving % generic command hooks. % -% \begin{function}{\DisableHook} +% \changes{v1.0p}{2021/08/20}{Documentation updates for generic hook commands (gh/638)} +% +% \begin{function}{\DisableGenericHook} % \begin{syntax} -% \cs{DisableHook} \Arg{hook} +% \cs{DisableGenericHook} \Arg{hook} % \end{syntax} -% After this declaration the \meta{hook} is no longer usable: Any +% After this declaration\footnotemark{} the \meta{hook} is no longer usable: Any % attempt to add further code to it will result in an error and any % use, e.g., via \cs{UseHook}, will simply do nothing. % @@ -201,37 +199,27 @@ % % The \meta{hook} can be specified using the dot-syntax to denote % the current package name. See section~\ref{sec:default-label}. -% \end{function} +% \end{function}\footnotetext{In the 2020/06 release this command was +% called \cs{DisableHook}, but that name was misleading as it +% shouldn't be used to disable non-generic hooks.} % % -% \begin{function}{\ProvideHook} +% \begin{function}{\ActivateGenericHook} % \begin{syntax} -% \cs{ProvideHook} \Arg{hook} +% \cs{ActivateGenericHook} \Arg{hook} % \end{syntax} -% Like \cs{NewHook} but does nothing if the hook was previously -% declared with \cs{NewHook}. This declaration should only be used -% in special situations, e.g., when command of another package -% need to be altered and it is is not clear if for that command a -% generic hook was already explicitly declared before. -% -% Normally \cs{NewHook} should be used instead. +% This declaration activates a generic hook provided by a package/class +% (e.g., one used in code with \cs{UseHook} or +% \cs{UseOneTimeHook}) without it being explicitly declared with +% \cs{NewHook}). +% This command undoes the effect of \cs{DisableGenericHook}. +% If the hook is already activated, this command does nothing. +% +% See section~\ref{sec:generic-hooks} for a discussion of when this +% declaration is appropriate. % \end{function} % -% \begin{function}{\ProvideReversedHook} -% \begin{syntax} -% \cs{ProvideReversedHook} \Arg{hook} -% \end{syntax} -% Like \cs{NewReversedHook} but does nothing if the hook was -% previously declared as a reversed hook. -% \end{function} % -% \begin{function}{\ProvideMirroredHookPair} -% \begin{syntax} -% \cs{ProvideMirroredHookPair} \Arg{hook-1} \Arg{hook-2} -% \end{syntax} -% A shorthand for -% \cs{ProvideHook}\Arg{hook-1}\cs{ProvideReversedHook}\Arg{hook-2}. -% \end{function} % % % @@ -272,12 +260,20 @@ % consumed and any further attempt to add to it will result in % executing the code to be added immediately. % -% \fmiinline{Maybe add an error version as well?} -% % 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 +% then the hook executes during only the \emph{first} invocation of that +% command; this allows its use as an \enquote{initialization hook}. +% +% 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}. +% % \end{function} % % @@ -321,15 +317,19 @@ % When the optional argument \meta{label} is not provided, the % \meta{default label} is used (see section~\ref{sec:default-label}). % -% If the code for that \meta{label} wasn't yet added to the -% \meta{hook}, an order is set so that when some code attempts to add -% that label, the removal order takes action and the code is not -% added. +% If there is no code under the \meta{label} in the \meta{hook}, +% or if the \meta{hook} does not exist, a warning is issued when +% you attempt to \cs{RemoveFromHook}, and the command is ignored. +% \cs{RemoveFromHook} should be used only when you know exactly what +% labels are in a hook. Typically this will be when some code gets added to a hook +% by a package, then later this code is removed by that same package. +% If you want to prevent the execution of code from another +% package, use the |voids| rule instead (see section~\ref{sec:rules}). % % If the optional \meta{label} argument is \texttt{*}, then all code chunks are -% removed. This is rather dangerous as it drops code from other -% packages one may not know about and should therefore not by used -% by packages but only in document preambles! +% removed. This is rather dangerous as it may well drop code from other +% packages (that one may not know about); it should therefore not be used +% in packages but only in document preambles! % % The \meta{hook} and \meta{label} can be specified using the % dot-syntax to denote the current package name. @@ -378,14 +378,28 @@ % The code is executed after the normal hook code has finished and % it is executed only once, i.e. it is deleted after it was used. % -% Using the declaration is a global operation, i.e., the code is -% not lost, even if the declaration is used inside a group and the -% next invocation happens after the group. If the declaration is +% Using this declaration is a global operation, i.e., the code is +% not lost even if the declaration is used inside a group and the +% next invocation of the hook happens after the end of that group. +% If the declaration is % used several times before the hook is executed then all code is % executed in the order in which it was declared.\footnotemark % -% It is possible to nest declarations using the same hook (or -% different hooks), e.g., +% If this declaration is used with a one-time hook then the code +% is only ever used if the declaration comes before the hook’s +% invocation. This is because, in contrast +% to \cs{AddToHook}, the code in this declaration is not +% executed immediately in the case when the invocation of the hook +% has already happened---in other words, this code will truly execute +% only on the next invocation of the hook (and in the case of a +% one-time hook there is no such \enquote{next invocation}). +% This gives you a choice: should my code execute +% always, or should it execute only at the point where the +% one-time hook is used (and not at all if this is impossible)? For +% both of these possibilities there are use cases. +% +% It is possible to nest this declaration using the same hook (or +% different hooks): e.g., % \begin{quote} % \cs{AddToHookNext}\Arg{hook}\verb={=\meta{code-1}^^A % \cs{AddToHookNext}\Arg{hook}\Arg{code-2}\verb=}= @@ -404,6 +418,25 @@ % \end{function}\footnotetext{There is % no mechanism to reorder such code chunks (or delete them).} % +% +% +% \begin{function}{\ClearHookNext} +% \begin{syntax} +% \cs{ClearHookNext}\Arg{hook} +% \end{syntax} +% Normally \cs{AddToHookNext} is only used when you know precisely +% where it will apply and why you want some extra code at that +% point. However, there are a few use cases in which such a +% declaration needs to be canceled, for example, when +% discarding a page with \cs{DiscardShipoutBox} (but even then not +% always), and in such situations \cs{ClearHookNext} can be +% used. +% \end{function} +% +% +% +% +% % \subsubsection{Hook names and default labels} % \label{sec:default-label} % @@ -424,7 +457,7 @@ % % Except for \cs{UseHook}, \cs{UseOneTimeHook} and \cs{IfHookEmptyTF} % (and their \pkg{expl3} interfaces \cs{hook_use:n}, -% \cs{hook_use_once:n} and \cs{hook_if_empty:nTF}, all \meta{hook} +% \cs{hook_use_once:n} and \cs{hook_if_empty:nTF}), all \meta{hook} % and \meta{label} arguments are processed in the same way: first, % spaces are trimmed around the argument, then it is fully expanded % until only character tokens remain. If the full expansion of the @@ -458,7 +491,7 @@ % \AddToHook {./hook}[.]{code} % Same as \AddToHook{./hook}{code} % \AddToHook {./hook}[./sub]{code} % \DeclareHookRule{begindocument}{.}{before}{babel} -% \AddToHook {file/after/foo.tex}{code} +% \AddToHook {file/foo.tex/after}{code} % \end{verbatim} % are equivalent to: % \begin{verbatim} @@ -466,7 +499,7 @@ % \AddToHook {mypackage/hook}[mypackage]{code} % \AddToHook {mypackage/hook}[mypackage/sub]{code} % \DeclareHookRule{begindocument}{mypackage}{before}{babel} -% \AddToHook {file/after/foo.tex}{code} % unchanged +% \AddToHook {file/foo.tex/after}{code} % unchanged % \end{verbatim} % % The \meta{default label} is automatically set equal to the name of the @@ -534,7 +567,7 @@ % Packages that provide their own package-like interfaces % (Ti\textit{k}Z's \cs{usetikzlibrary}, for example) can use % \cs{PushDefaultHookLabel} and \cs{PopDefaultHookLabel} to set -% dedicated labels and emulate \cs{usepackage}-like hook behaviour +% dedicated labels and to emulate \cs{usepackage}-like hook behavior % within those contexts. % % The |top-level| label is treated differently, and is reserved to the @@ -588,6 +621,7 @@ % with that label from a package results in an error. % % \subsubsection{Defining relations between hook code} +% \label{sec:rules} % % The default assumption is that code added to hooks by different % packages are independent and the order in which they are executed is @@ -712,8 +746,8 @@ % \item exist and be non-empty; and % \item not exist (in which case emptiness doesn't apply); % \end{itemize} -% Hooks are a bit more complicated: -% a hook may exist or not, and either way it may or may not be empty. +% Hooks are a bit more complicated: +% a hook may exist or not, and independently it may or may not be empty. % This means that even a hook that doesn't exist may be non-empty and % it can also be disabled. % @@ -854,7 +888,7 @@ % \end{quote} % which means that the \meta{relation} applies to \meta{label-1} and % \meta{label-2}, in that order, as detailed in \cs{DeclareHookRule}. -% If the relation is \texttt{default} it means that that rule applies +% If the relation is \texttt{default} it means that this rule applies % to \meta{label-1} and \meta{label-2} in \emph{all} hooks, (unless % overridden by a non-default relation). % @@ -905,9 +939,9 @@ % % % -% \begin{function}{\hook_disable:n} +% \begin{function}{\hook_disable_generic:n} % \begin{syntax} -% \cs{hook_disable:n} \Arg{hook} +% \cs{hook_disable_generic:n} \Arg{hook} % \end{syntax} % Marks \Arg{hook} as disabled. Any further attempt to add code to % it or declare it, will result in an error and any call to @@ -921,34 +955,19 @@ % the current package name. See section~\ref{sec:default-label}. % \end{function} % -% \begin{function}{\hook_provide:n} +% \begin{function}{\hook_activate_generic:n} % \begin{syntax} -% \cs{hook_provide:n} \Arg{hook} +% \cs{hook_activate_generic:n} \Arg{hook} % \end{syntax} % Like \cs{hook_new:n} but does nothing if the hook was previously % declared with \cs{hook_new:n}. This declaration should only be used % in special situations, e.g., when a command of another package -% needs to be altered and it is is not clear if for that command a +% needs to be altered and it is not clear if for that command a % generic \hook{cmd} hook was already explicitly declared before. % % Normally \cs{hook_new:n} should be used instead. % \end{function} % -% \begin{function}{\hook_provide_reversed:n} -% \begin{syntax} -% \cs{hook_provide_reversed:n} \Arg{hook} -% \end{syntax} -% Like \cs{hook_new_reversed:n} but does nothing if the hook was -% previously declared as a reversed hook. -% \end{function} -% -% \begin{function}{\hook_provide_pair:nn} -% \begin{syntax} -% \cs{hook_provide_pair:nn} \Arg{hook-1} \Arg{hook-2} -% \end{syntax} -% A shorthand for -% \cs{hook_provide:n}\Arg{hook-1}\cs{hook_provide_reversed:n}\Arg{hook-2}. -% \end{function} % % % @@ -1013,6 +1032,15 @@ % \end{function} % % +% \begin{function} +% {\hook_gclear_next_code:n} +% \begin{syntax} +% \cs{hook_gclear_next_code:n} \Arg{hook} +% \end{syntax} +% Undo any earlier \cs{hook_gput_next_code:nn}. +% \end{function} +% +% % % \begin{function}{\hook_gremove_code:nn} % \begin{syntax} @@ -1020,10 +1048,9 @@ % \end{syntax} % Removes any code for \meta{hook} labeled \meta{label}. % -% If the code for that \meta{label} wasn't yet added to the -% \meta{hook}, an order is set so that when some code attempts to add -% that label, the removal order takes action and the code is not -% added. +% If there is no code under the \meta{label} in the \meta{hook}, +% or if the \meta{hook} does not exist, a warning is issued when +% you attempt to use \cs{hook_gremove_code:nn}, and the command is ignored. % % If the second argument is \texttt{*}, then all code chunks are % removed. This is rather dangerous as it drops code from other @@ -1138,7 +1165,7 @@ % which key-value pairs got added. However, that is only true if % nothing other than adding happens! % -% Suppose, or example, you want to replace the code chunk for +% Suppose, for example, you want to replace the code chunk for % \texttt{packageA}, e.g., %\begin{verbatim} % \RemoveFromHook{myhook}[packageA] @@ -1297,7 +1324,7 @@ % \cs{AtBeginDocument} which is why it is supported.} (all three % code chunks are executed one after another), but it makes little % sense with a normal hook, because with a normal hook the first time -% \verb=\UseHook{myhook}= is executed it would +% \verb=\UseHook{myhook}= is executed it would % \begin{itemize} % \item % execute \meta{code-1}, @@ -1315,6 +1342,70 @@ % % % +% \subsection{Generic hooks provided by packages} +% \label{sec:generic-hooks} +% +% \changes{v1.0p}{2021/08/20}{Section on generic hooks added (gh/638)} +% +% The hook management system also implements a category of hooks +% that are called \enquote{Generic Hooks}. Normally a hook has to +% be explicitly declared before it can be used in code. This +% ensures that different packages are not using the same hook name +% for unrelated purposes---something that would result in absolute +% chaos. However, there are a number of \enquote{standard} hooks +% where it is unreasonable to declare them beforehand, e.g, each +% and every command has (in theory) an associated \texttt{before} +% and \texttt{after} hook. In such cases, i.e., for command, +% environment or file hooks, they can be used simply by adding code +% to them with \cs{AddToHook}. For more specialized generic hooks, +% e.g., those provided by \pkg{babel}, you have to additionally +% enable them with \cs{ActivateGenericHook} as explained below. +% +% The generic hooks provided by \LaTeX{} are those for +% \hook{cmd}, +% \hook{env}, +% \hook{file}, +% \hook{include} +% \hook{package}, and +% \hook{class}, +% and all these are available out of the box: you only have to +% use \cs{AddToHook} to +% add code to them, but you don't have to add \cs{UseHook} or +% \cs{UseOneTimeHook} to your code, because this is already done for +% you (or, in the case of \hook{cmd} hooks, the command’s code is +% patched at \verb=\begin{document}=, if necessary). +% +% However, if you want to provide further generic hooks in your own +% code, the situation is slightly different. To do this you should +% use \cs{UseHook} or \cs{UseOneTimeHook}, but +% \emph{without declaring the hook} with \cs{NewHook}. As +% mentioned earlier, a call to \cs{UseHook} with an undeclared hook +% name does nothing. So as an additional setup step, you need to +% explicitly activate your generic hook. Note that a generic hook +% produced in this way is always a normal hook. +% +% For a truly generic hook, with a variable part in the hook name, +% such upfront activation would be difficult or impossible, because +% you typically do not know what kind of variable parts may come up +% in real documents. +% +% For example, \pkg{babel} may want to provide hooks such as +% \hook{babel/afterextras/\meta{language}}. Language support in +% \pkg{babel} is often done through external language +% packages. Thus doing the activation for all languages inside the +% core \pkg{babel} code is not a viable approach. Instead it needs +% to be done by each language package (or by the user who wants to +% use a particular hook). +% +% Because the hooks are not declared with \cs{NewHook} their names +% should be carefully chosen to ensure that they are (likely to be) +% unique. Best practice is to include the package or +% command name, as was done in the \pkg{babel} example above. +% +% 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. % % % \subsection{Private \LaTeX{} kernel hooks} @@ -1354,8 +1445,8 @@ % % \subsection{Legacy \LaTeXe{} interfaces} % -% \newcommand\onetimetext{% -% This is a one-time hook, so after it is executed, all further +% \newcommand\onetimetext{This is a one-time hook, so after it +% is executed, all further % attempts to add code to it will execute such code immediately % (see section~\ref{sec:onetime-hooks}).} % @@ -1363,7 +1454,7 @@ % add to them. They are listed here and are retained for backwards % compatibility. % -% With the new hook management several additional hooks have been added +% With the new hook management, several additional hooks have been added % to \LaTeX\ and more will follow. See the next section for what % is already available. % @@ -1374,7 +1465,7 @@ % \end{syntax} % If used without the optional argument \meta{label}, it works essentially % like before, i.e., it is adding \meta{code} to the hook -% \hook{begindocument} +% \hook{begindocument} % (which is executed inside \verb=\begin{document}=). % However, all code added this way is labeled with the label % \hook{top-level} (see section~\ref{sec:top-level}) @@ -1430,10 +1521,54 @@ % the processing. % % -% \subsection{\LaTeXe{} commands and environments augmented by -% hooks} -% -% \emph{intro to be written} +% \section{\LaTeXe{} commands and environments augmented by hooks} +% +% In this section we describe the standard hooks that are now +% offered by \LaTeX{}, or give pointers to other documents in which +% they are described. This section will grow over time (and +% perhaps eventually move to usrguide3). +% +% \subsection{Generic hooks} +% \label{sec:generic} +% +% As stated earlier, with the exception of generic hooks, all hooks must +% be declared with \cs{NewHook} before they can be used. +% All generic hooks have names of the form +% \enquote{\meta{type}/\meta{name}/\meta{position}}, where \meta{type} +% is from the predefined list shown below, and \meta{name} is the variable +% part whose meaning will depend on the \meta{type}. The last component, +% \meta{position}, has more complex possibilities: +% it can always be |before| or |after|; for |env| hooks, it can also be |begin| +% or |end|; and for |include| hooks it can also be |end|. Each specific +% hook is documented below, or in \texttt{ltcmdhooks-doc.pdf} or +% \texttt{ltfilehook-doc.pdf}. +% +% The generic hooks provided by \LaTeX{} belong to one of the six types: +% \begin{description} +% \item[env] Hooks executed before and after environments -- +% \meta{name} is the name of the environment, and available values +% for \meta{position} are |before|, |begin|, |end|, and |after|; +% \item[cmd] Hooks added to and executed before and after commands -- +% \meta{name} is the name of the command, and available values +% for \meta{position} are |before| and |after|; +% \item[file] Hooks executed before and after reading a file -- +% \meta{name} is the name of the file (with extension), and +% available values for \meta{position} are |before| and |after|; +% \item[package] Hooks executed before and after loading packages -- +% \meta{name} is the name of the package, and available values for +% \meta{position} are |before| and |after|; +% \item[class] Hooks executed before and after loading classes -- +% \meta{name} is the name of the class, and available values for +% \meta{position} are |before| and |after|; +% \item[include] Hooks executed before and after \cs{include}d files -- +% \meta{name} is the name of the included file (without the |.tex| +% extension), and available values for \meta{position} are |before|, +% |end|, and |after|. +% \end{description} +% +% Each of the hooks above are detailed in the following sections and +% in linked documentation. +% ^^A^^A^^A \pho{Wouldn't it be better to document all hooks here?} % % \subsubsection{Generic hooks for all environments} % @@ -1495,9 +1630,15 @@ % to add the outer hooks, etc. % % +% Largely for compatibility with existing packages, the following +% four commands are also available to set the environment hooks; but for +% new packages we recommend directly using the hook names and +% \cs{AddToHook}. +% +% % \begin{function}{\BeforeBeginEnvironment} % \begin{syntax} -% \cs{BeforeBeginEnvironment} \oarg{label} \Arg{code} +% \cs{BeforeBeginEnvironment} \oarg{label} \Arg{env} \Arg{code} % \end{syntax} % This declaration adds to the \hook{env/\meta{env}/before} hook % using the \meta{label}. If \meta{label} is not given, the @@ -1506,23 +1647,23 @@ % % \begin{function}{\AtBeginEnvironment} % \begin{syntax} -% \cs{AtBeginEnvironment} \oarg{label} \Arg{code} +% \cs{AtBeginEnvironment} \oarg{label} \Arg{env} \Arg{code} % \end{syntax} -% Like \cs{BeforeBeginEnvironment} but adds to the \hook{env/\meta{env}/begin} hook. +% This is like \cs{BeforeBeginEnvironment} but it adds to the \hook{env/\meta{env}/begin} hook. % \end{function} % % \begin{function}{\AtEndEnvironment} % \begin{syntax} -% \cs{AtEndEnvironment} \oarg{label} \Arg{code} +% \cs{AtEndEnvironment} \oarg{label} \Arg{env} \Arg{code} % \end{syntax} -% Like \cs{BeforeBeginEnvironment} but adds to the \hook{env/\meta{env}/end} hook. +% This is like \cs{BeforeBeginEnvironment} but it adds to the \hook{env/\meta{env}/end} hook. % \end{function} % % \begin{function}{\AfterEndEnvironment} % \begin{syntax} -% \cs{AfterEndEnvironment} \oarg{label} \Arg{code} +% \cs{AfterEndEnvironment} \oarg{label} \Arg{env} \Arg{code} % \end{syntax} -% Like \cs{BeforeBeginEnvironment} but adds to the \hook{env/\meta{env}/after} hook. +% This is like \cs{BeforeBeginEnvironment} but it adds to the \hook{env/\meta{env}/after} hook. % \end{function} % % @@ -1559,7 +1700,7 @@ % % % -% \subsubsection{Hooks provided by \cs{begin}\texttt{\{document\}}} +% \subsection{Hooks provided by \cs{begin}\texttt{\{document\}}} % \label{sec:begindocument-hooks} % % Until 2020 \cs{begin}\texttt{\{document\}} offered exactly one @@ -1618,7 +1759,7 @@ % % % -% \subsubsection{Hooks provided by \cs{end}\texttt{\{document\}}} +% \subsection{Hooks provided by \cs{end}\texttt{\{document\}}} % % \LaTeXe{} always provided \cs{AtEndDocument} to add code to the % execution of \verb=\end{document}= just in front of the code that @@ -1726,7 +1867,7 @@ % % % -% \subsubsection{Hooks provided by \cs{shipout} operations} +% \subsection{Hooks provided by \cs{shipout} operations} % \label{sec:shipout} % % There are several hooks and mechanisms added to \LaTeX{}'s @@ -1735,36 +1876,44 @@ % \texttt{ltshipout-code.pdf}. % % +% \subsection{Hooks provided for paragraphs} +% \label{sec:para} +% +% The paragraph processing has been augmented to include a number of +% internal and public hooks. These are documented in +% \texttt{ltpara-doc.pdf} or with code in +% \texttt{ltpara-code.pdf}. +% +% % -% \subsubsection{Hooks provided in NFSS commands} +% \subsection{Hooks provided in NFSS commands} % % In languages that need to support for more than one script in -% parallel (and thus several sets of fonts), e.g., Latin and -% Japanese fonts, NFSS font commands, such as \cs{sffamily}, need +% parallel (and thus several sets of fonts, e.g., supporting both Latin and +% Japanese fonts), NFSS font commands such as \cs{sffamily} need % to switch both the Latin family to ``Sans Serif'' and in addition % alter a second set of fonts. % -% To support this several NFSS have hooks in which such support can -% be added. +% To support this, several NFSS commands have hooks to which +% such support can be added. % \begin{description} % % \item[\hook{rmfamily}] % % After \cs{rmfamily} has done its initial checks and prepared a -% any font series update this hook is executed and only -% afterwards \cs{selectfont}. +% font series update, this hook is executed before \cs{selectfont}. % % \item[\hook{sffamily}] % -% Like the \hook{rmfamily} hook but for the \cs{sffamily} command. +% This is like the \hook{rmfamily} hook, but for the \cs{sffamily} command. % % \item[\hook{ttfamily}] % -% Like the \hook{rmfamily} hook but for the \cs{ttfamily} command. +% This is like the \hook{rmfamily} hook, but for the \cs{ttfamily} command. % % \item[\hook{normalfont}] % -% The \cs{normalfont} command resets font encoding family series +% The \cs{normalfont} command resets the font encoding, family, series % and shape to their document defaults. It then executes this % hook and finally calls \cs{selectfont}. % @@ -1779,21 +1928,36 @@ % % \item[\hook{bfseries/defaults}, \hook{bfseries}] % -% If the \cs{bfdefault} was explicitly changed by the user its +% If the \cs{bfdefault} was explicitly changed by the user, its % new value is used to set the bf series defaults for the meta -% families (rm/sf/tt) when \cs{bfseries} is called. In the -% \hook{bfseries/defaults} hook further adjustments can be made +% families (rm/sf/tt) when \cs{bfseries} is called. The +% \hook{bfseries/defaults} hook allows further adjustments to be made % in this case. This hook is only executed if such a change is -% detected. In contrast the \hook{bfseries} hook is always +% detected. In contrast, the \hook{bfseries} hook is always % executed just before \cs{selectfont} is called to change to the % new series. % % % \item[\hook{mdseries/defaults}, \hook{mdseries}] % -% These two hooks are like the previous ones but used in +% These two hooks are like the previous ones but they are in the % \cs{mdseries} command. % +% \item[\hook{selectfont}] +% +% This hook is executed inside \cs{selectfont}, after the current +% values for \textit{encoding}, \textit{family}, \textit{series}, +% \textit{shape}, and \textit{size} are evaluated and the new font +% is selected (and if necessary loaded). After the hook has +% executed, NFSS will still do any updates necessary for a new +% \textit{size} (such as changing the size of \cs{strut}) and any +% updates necessary to a change in \textit{encoding}. +% +% This hook is intended for use cases where, in parallel to a +% change in the main font, some other fonts need to be altered +% (e.g., in CJK processing where you may need to deal with several +% different alphabets). +% % \end{description} % % @@ -1859,7 +2023,7 @@ % % \begin{macro}[EXP]{\@@_str_compare:nn} % Private copy of \cs{__str_if_eq:nn} -% \InternalDetectionOff +% \InternalDetectionOff % \begin{macrocode} \cs_new_eq:NN \@@_str_compare:nn \__str_if_eq:nn % \end{macrocode} @@ -1892,13 +2056,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\g_@@_removal_list_prop} -% A token list to hold delayed removals. -% \begin{macrocode} -\tl_new:N \g_@@_removal_list_tl -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\l_@@_cur_hook_tl} % Stores the name of the hook currently being sorted. % \begin{macrocode} @@ -1916,13 +2073,6 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\g_@@_execute_immediately_prop} -% List of hooks that from no on should not longer receive code. -% \begin{macrocode} -\prop_new:N \g_@@_execute_immediately_prop -% \end{macrocode} -% \end{macro} -% % \begin{macro}{\g_@@_used_prop} % All hooks that receive code (for use in debugging display). % \begin{macrocode} @@ -1963,6 +2113,13 @@ % \end{macrocode} % \end{macro} % +% \begin{macro}{\@@_clean_to_scan:w} +% Removes tokens until the next \cs{s_@@_mark}. +% \begin{macrocode} +\cs_new:Npn \@@_clean_to_scan:w #1 \s_@@_mark { } +% \end{macrocode} +% \end{macro} +% % \begin{macro}{\@@_tl_set:Nn,\@@_tl_set:Nx, % \@@_tl_set:cn,\@@_tl_set:cx} % Private copies of a few \pkg{expl3} functions. \pkg{l3debug} will @@ -2055,7 +2212,7 @@ % \item[\cs{g_@@_\meta{hook}_code_prop}] A property list holding the code % for the hook in separate chunks. The keys are by default the % package names that add code to the hook, but it is possible -% for packages to define other keys. +% for packages to define other keys. % % \item[{\cs[no-index]{g_@@_\meta{hook}_rule_\meta{label1}\string|\meta{label2}_tl}}] % A token list holding the relation between \meta{label1} and @@ -2108,19 +2265,19 @@ % \label{sec:existence} % % A hook may be in different states of existence. Here we give an -% overview of internal commands to set up hooks and explain how the +% overview of the internal commands to set up hooks and explain how the % different states are distinguished. The actual implementation -% then follows in the next sections. +% then follows in subsequent sections. % -% One problem we have to solve is, that we need to be able to add +% One problem we have to solve is that we need to be able to add % code to hooks (e.g., with \cs{AddToHook}) even if that code has -% not been declared yet. For example, one package needs to write -% into a hook of another package, but that package ay not get -% loaded or only loaded later. Another problem most hooks require -% declaration but this is not the case for the generic hooks. +% not yet been declared. For example, one package needs to write +% into a hook of another package, but that package may not get +% loaded, or is loaded only later. Another problem is that most hooks, +% but not the generic hooks, require a declaration. % -% We therefore distinguish the following states for a hook and they -% are managed with four different tests: structure existence +% We therefore distinguish the following states for a hook, which +% are managed by four different tests: structure existence % (\cs{@@_if_structure_exist:nTF}), creation % (\cs{@@_if_usable:nTF}), declaration (\cs{@@_if_declared:nTF}) % and disabled or not (\cs{@@_if_disabled:nTF}) @@ -2151,12 +2308,12 @@ % \item [@@_if_disabled:nTF] returns |false|. % \end{itemize} % -% The allowed acctions are the same as in the \enquote{not +% The allowed actions are the same as in the \enquote{not % existing} state. % % \item[declared] % -% A hook is in this state it is not disabled and was explicity declared (e.g., +% A hook is in this state it is not disabled and was explicitly declared (e.g., % with \cs{NewHook}). In this case the four tests give the % following results: % \begin{itemize} @@ -2187,8 +2344,8 @@ % % \item[disabled] % -% A hook in any state is moved to this state when -% \cs{DisableHook} is used. This changes the tests to give the +% A generic hook in any state is moved to this state when +% \cs{DisableGenericHook} is used. This changes the tests to give the % following results: % \begin{itemize} % \item [@@_if_structure_exist:nTF] \emph{unchanged}. @@ -2197,7 +2354,7 @@ % \item [@@_if_disabled:nTF] returns |true|. % \end{itemize} % The structure test is unchanged (if the hook was unknown before it is -% false, otherwise true). The usable test returns false so that +% |false|, otherwise |true|). The usable test returns |false| so that % any \cs{UseHook} will bypass the hook from now on. The % declared test returns true so that any further \cs{NewHook} % generates an error and the disabled test returns true so that @@ -2240,8 +2397,8 @@ % \end{macrocode} % \end{macro} % -% -% +% +% % \begin{macro}{\@@_make_usable:n} % % This initializes all hook data structures for the hook but if @@ -2315,7 +2472,7 @@ % (\cs[no-index]{g_@@_\meta{hook}_code_prop}) and the |top-level| % and |next| token lists. A hook is initialized with % \cs{@@_init_structure:n} the first time anything is added to it. -% Inizializing a hook just with \cs{@@_init_structure:n} will not +% Initializing a hook just with \cs{@@_init_structure:n} will not % make it usable with \cs{hook_use:n}. % \begin{macrocode} \cs_new_protected:Npn \@@_init_structure:n #1 @@ -2407,7 +2564,9 @@ % % \subsubsection{Disabling and providing hooks} % -% \begin{macro}{\hook_disable:n} +% \changes{v1.0p}{2021/08/20}{Renames of generic hook commands (gh/638)} +% +% \begin{macro}{\hook_disable_generic:n} % \begin{macro}{\@@_disable:n} % \begin{macro}[pTF]{\@@_if_disabled:n} % @@ -2423,11 +2582,11 @@ % % \begin{macrocode} %\IncludeInRelease{2021/06/01}% -% {\hook_disable:n}{Disable~hooks} +% {\hook_disable_generic:n}{Disable~hooks} % \end{macrocode} -% +% % \begin{macrocode} -\cs_new_protected:Npn \hook_disable:n #1 +\cs_new_protected:Npn \hook_disable_generic:n #1 { \@@_normalize_hook_args:Nn \@@_disable:n {#1} } \cs_new_protected:Npn \@@_disable:n #1 { @@ -2447,9 +2606,9 @@ % % \begin{macrocode} %\IncludeInRelease{2020/10/01} -% {\hook_disable:n}{Disable~hooks} +% {\hook_disable_generic:n}{Disable~hooks} % -%\cs_new_protected:Npn \hook_disable:n #1 {} +%\cs_new_protected:Npn \hook_disable_generic:n #1 {} % %\EndIncludeInRelease % \end{macrocode} @@ -2457,71 +2616,47 @@ % \end{macro} % \end{macro} % -% \begin{macro}{\hook_provide:n} -% \begin{macro}{\hook_provide_reversed:n} -% \begin{macro}{\@@_provide:n} -% The \cs{hook_provide:n} declaration declares a new hook if it +% \begin{macro}{\hook_activate_generic:n} +% \begin{macro}{\@@_activate_generic:n} +% The \cs{hook_activate_generic:n} declaration declares a new hook if it % wasn't declared already, in which case it only checks that the % already existing hook is not a reversed hook. -% The \cs{hook_provide_reversed:n} does the same for reversed hooks. -% \hook{begindocument}. % \begin{macrocode} %\IncludeInRelease{2021/06/01}% -% {\hook_provide:n}{Providing~hooks} +% {\hook_activate_generic:n}{Providing~hooks} % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \hook_provide:n #1 - { \@@_normalize_hook_args:Nn \@@_provide:nn {#1} { } } -\cs_new_protected:Npn \hook_provide_reversed:n #1 - { \@@_normalize_hook_args:Nn \@@_provide:nn {#1} { - } } +\cs_new_protected:Npn \hook_activate_generic:n #1 + { \@@_normalize_hook_args:Nn \@@_activate_generic:nn {#1} { } } % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_provide:nn #1 #2 +\cs_new_protected:Npn \@@_activate_generic:nn #1 #2 { % \end{macrocode} -% If the hook to be provided was disabled we warn (for now --- this +% If the hook to be activated was disabled we warn (for now --- this % may change). % \begin{macrocode} \@@_if_disabled:nTF {#1} - { \msg_warning:nnn { hooks } { provide-disabled } {#1} } + { \msg_warning:nnn { hooks } { activate-disabled } {#1} } % \end{macrocode} -% Otherwise we check if it was already declared. +% Otherwise we check if the hook is not declared, and if it isn't, +% figure out if it's reversed or not, then declare it accordingly. % \begin{macrocode} { - \@@_if_declared:nTF {#1} - { -% \end{macrocode} -% Issue an error if we try to provide a a hook that is reversed and -% the already existing one is not (or vice versa). -% \begin{macrocode} - \str_if_eq:eeF { \tl_use:c { g_@@_#1_reversed_tl } } {#2} - { \msg_error:nnn { hooks } { provide-error } {#1} } - } -% \end{macrocode} -% If it wasn't declared, we declared as a normal or reversed hook -% as appropriate. -% \begin{macrocode} + \@@_if_declared:nF {#1} { \tl_new:c { g_@@_#1_declared_tl } \@@_make_usable:n {#1} - \tl_gset:cn { g_@@_#1_reversed_tl } {#2} + \tl_gset:cx { g_@@_#1_reversed_tl } + { \@@_if_generic_reversed:nT {#1} { - } } } } } % \end{macrocode} % \end{macro} % \end{macro} -% \end{macro} -% -% \begin{macro}{\hook_provide_pair:nn} -% A shorthand for providing a normal and a (matching) reversed hook in one go. -% \begin{macrocode} -\cs_new_protected:Npn \hook_provide_pair:nn #1#2 - { \hook_provide:n {#1} \hook_provide_reversed:n {#2} } -% \end{macrocode} -% \end{macro} % % \begin{macrocode} %\EndIncludeInRelease @@ -2529,11 +2664,9 @@ % % \begin{macrocode} %\IncludeInRelease{2020/10/01} -% {\hook_provide:n}{Providing~hooks} +% {\hook_activate_generic:n}{Providing~hooks} % -%\cs_new_protected:Npn \hook_provide_reversed:n #1 {} -%\cs_new_protected:Npn \hook_provide:n #1 {} -%\cs_new_protected:Npn \hook_provide_pair:nn #1#2 {} +%\cs_new_protected:Npn \hook_activate_generic:n #1 {} % %\EndIncludeInRelease % \end{macrocode} @@ -2600,8 +2733,8 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_currname_or_default:} -% Uses \cs{g_@@_hook_curr_name_tl} if it is set, otherwise tries -% \cs{@currname}. If neither is set, raises an error and uses the +% This uses \cs{g_@@_hook_curr_name_tl} if it is set, otherwise it tries +% \cs{@currname}. If neither is set, it raises an error and uses the % fallback value \verb|label-missing|. % \begin{macrocode} \cs_new:Npn \@@_currname_or_default: @@ -2610,7 +2743,7 @@ { \tl_if_empty:NTF \@currname { - \msg_expandable_error:nnn { kernel } { should-not-happen } + \msg_expandable_error:nnn { latex2e } { should-not-happen } { Empty~default~label. } \@@_make_name:n { label-missing } } @@ -2622,7 +2755,7 @@ % \end{macro} % % \begin{macro}[EXP]{\@@_make_name:n,\@@_make_name:w} -% Provides a standard sanitization of a hook's name. +% This provides a standard sanitization of a hook's name. % It uses \cs{cs:w} to build a control sequence out of the hook name, % then uses \cs{cs_to_str:N} to get the string representation of that, % without the escape character. \cs{cs:w}-based expansion is used @@ -2646,7 +2779,7 @@ % \begin{macro}{\@@_normalize_hook_args:Nnn} % \begin{macro}{\@@_normalize_hook_rule_args:Nnnnn} % \begin{macro}{\@@_normalize_hook_args_aux:Nn} -% Standard route for normalising hook and label arguments. The main +% This is the standard route for normalizing hook and label arguments. The main % macro does the entire operation within a group so that csnames made % by \cs{@@_make_name:n} are wiped off before continuing. This means % that this function cannot be used for \cs{hook_use:n}! @@ -2689,16 +2822,151 @@ % \end{macro} % \end{macro} % +% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_push_aux:n} +% \begin{macro}{\@@_curr_name_pop:} +% \begin{macro}{\@@_end_document_label_check:} +% The token list \cs{g_@@_hook_curr_name_tl} stores the name of the +% current package/file to be used as the default label in hooks. +% Providing a consistent interface is tricky because packages can +% be loaded within packages, and some packages may not use +% \cs{SetDefaultHookLabel} to change the default label (in which +% case \cs{@currname} is used). +% +% To pull that one off, we keep a stack that contains the default +% label for each level of input. The bottom of the stack contains the +% default label for the |top-level| (this stack should never go +% empty). If we're building the format, set the default label to be +% |top-level|: +% \begin{macrocode} +\tl_gset:Nn \g_@@_hook_curr_name_tl { top-level } +% \end{macrocode} +% +% Then, in case we're in \pkg{latexrelease} we push something on +% the stack to support roll forward. But in some rare cases, +% \pkg{latexrelease} may be loaded inside another package (notably +% \pkg{platexrelease}), so we'll first push the |top-level| entry: +% \changes{v1.0i}{2021/03/18} +% {Only add \texttt{top-level} if not already there.} +% \begin{macrocode} +%\seq_if_empty:NT \g_@@_name_stack_seq +% { \seq_gput_right:Nn \g_@@_name_stack_seq { top-level } } +% \end{macrocode} +% then we dissect the \cs{@currnamestack}, adding \cs{@currname} to +% the stack: +% \changes{v1.0f}{2020/11/24}{Support for roll forward (gh/434)} +% \begin{macrocode} +%\cs_set_protected:Npn \@@_tmp:w #1 #2 #3 +% { +% \quark_if_recursion_tail_stop:n {#1} +% \seq_gput_right:Nn \g_@@_name_stack_seq {#1} +% \@@_tmp:w +% } +%\exp_after:wN \@@_tmp:w \@currnamestack +% \q_recursion_tail \q_recursion_tail +% \q_recursion_tail \q_recursion_stop +% \end{macrocode} +% and finally set the default label to be the \cs{@currname}: +% \changes{v1.0i}{2021/03/18} +% {Remove the (empty) \enquote{top-level} from \cs{@currnamestack}.} +% \begin{macrocode} +%\tl_gset:Nx \g_@@_hook_curr_name_tl { \@currname } +%\seq_gpop_right:NN \g_@@_name_stack_seq \l_@@_tmpa_tl +% \end{macrocode} +% +% Two commands keep track of the stack: when a file is input, +% \cs{@@_curr_name_push:n} pushes the current default label onto the +% stack and sets the new default label (all in one go): +% \begin{macrocode} +\cs_new_protected:Npn \@@_curr_name_push:n #1 + { \exp_args:Nx \@@_curr_name_push_aux:n { \@@_make_name:n {#1} } } +\cs_new_protected:Npn \@@_curr_name_push_aux:n #1 + { + \tl_if_blank:nTF {#1} + { \msg_error:nn { hooks } { no-default-label } } + { + \str_if_eq:nnTF {#1} { top-level } + { + \msg_error:nnnnn { hooks } { set-top-level } + { to } { PushDefaultHookLabel } {#1} + } + { + \seq_gpush:NV \g_@@_name_stack_seq \g_@@_hook_curr_name_tl + \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} + } + } + } +% \end{macrocode} +% and when an input is over, the topmost item of the stack is popped, +% since that label will not be used again, and \cs{g_@@_hook_curr_name_tl} +% is updated to equal the now topmost item of the stack: +% \begin{macrocode} +\cs_new_protected:Npn \@@_curr_name_pop: + { + \seq_gpop:NNTF \g_@@_name_stack_seq \l_@@_return_tl + { \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl } + { \msg_error:nn { hooks } { extra-pop-label } } + } +% \end{macrocode} +% +% At the end of the document we want to check if there was no +% \cs{@@_curr_name_push:n} without a matching \cs{@@_curr_name_pop:} +% (not a critical error, but it might indicate that something else is +% not quite right): +% \begin{macrocode} +\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage + { \@@_end_document_label_check: } +\cs_new_protected:Npn \@@_end_document_label_check: + { + \seq_gpop:NNT \g_@@_name_stack_seq \l_@@_return_tl + { + \msg_error:nnx { hooks } { missing-pop-label } + { \g_@@_hook_curr_name_tl } + \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl + \@@_end_document_label_check: + } + } +% \end{macrocode} % +% The token list \cs{g_@@_hook_curr_name_tl} is but a mirror of the +% top of the stack. +% +% \begin{macro}{\@@_set_default_hook_label:n,\@@_set_default_label:n} +% Now define a wrapper that replaces the top of the stack with the +% argument, and updates \cs{g_@@_hook_curr_name_tl} accordingly. +% \begin{macrocode} +\cs_new_protected:Npn \@@_set_default_hook_label:n #1 + { + \seq_if_empty:NTF \g_@@_name_stack_seq + { + \msg_error:nnnnn { hooks } { set-top-level } + { for } { SetDefaultHookLabel } {#1} + } + { \exp_args:Nx \@@_set_default_label:n { \@@_make_name:n {#1} } } + } +\cs_new_protected:Npn \@@_set_default_label:n #1 + { + \str_if_eq:nnTF {#1} { top-level } + { + \msg_error:nnnnn { hooks } { set-top-level } + { to } { SetDefaultHookLabel } {#1} + } + { \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} % % \subsection{Adding or removing hook code} % % \begin{macro}{\hook_gput_code:nnn} -% \begin{macro}{\@@_gput_code:nnn,\@@_gput_code:nxv,\@@_hook_gput_code_do:nnn} +% \begin{macro}{\@@_gput_code:nnn,\@@_hook_gput_code_do:nnn} % % With \cs{hook_gput_code:nnn}\Arg{hook}\Arg{label}\Arg{code} a % chunk of \meta{code} is added to an existing \meta{hook} labeled % with \meta{label}. +% \changes{v1.0o}{2021/07/22}{Do not queue removals (gh/625)} % \begin{macrocode} \cs_new_protected:Npn \hook_gput_code:nnn #1 #2 { \@@_normalize_hook_args:Nnn \@@_gput_code:nnn {#1} {#2} } @@ -2708,61 +2976,46 @@ \cs_new_protected:Npn \@@_gput_code:nnn #1 #2 #3 { % \end{macrocode} -% First check if the hook was used as a one-time hook: +% First check if the code should be executed immediately, rather than +% stored: +% \changes{v1.0r}{2021/09/06}{Use dedicated conditional (gh/606)} % \begin{macrocode} - \prop_if_in:NnTF \g_@@_execute_immediately_prop {#1} + \@@_if_execute_immediately:nTF {#1} {#3} { % \end{macrocode} -% Then check if the current \meta{hook}/\meta{label} pair was marked -% for removal, in which case \cs{@@_unmark_removal:nn} is used to -% remove that mark (once). This may happen when a package removes -% code from another package which was not yet loaded: the removal -% order is stored, and at this stage it is executed by not adding to -% the hook. +% Then check if the hook is usable. % \begin{macrocode} - \@@_if_marked_removal:nnTF {#1} {#2} - { \@@_unmark_removal:nn {#1} {#2} } - { -% \end{macrocode} -% If no removal is queued, we are free to add. Start by checking if -% the hook exists. -% \begin{macrocode} - \@@_if_usable:nTF {#1} + \@@_if_usable:nTF {#1} % \end{macrocode} % If so we simply add (or append) the new code to the property list % holding different chunks for the hook. At \verb=\begin{document}= % this is then sorted into a token list for fast execution. % \begin{macrocode} - { - \@@_hook_gput_code_do:nnn {#1} {#2} {#3} + { + \@@_hook_gput_code_do:nnn {#1} {#2} {#3} % \end{macrocode} % However, if there is an update within the document we need to alter % this execution code which is done by % \cs{@@_update_hook_code:n}. In the preamble this does nothing. % \begin{macrocode} - \@@_update_hook_code:n {#1} - } + \@@_update_hook_code:n {#1} + } % \end{macrocode} % -% If the hook does not exist, however, before giving up try to -% declare it as a generic hook, if its name matches one of the valid -% patterns. +% If the hook is not usable, before giving up, check if it's not +% disabled and otherwise try to declare it as a generic hook, if its +% name matches one of the valid patterns. % \begin{macrocode} - { - \@@_if_disabled:nTF {#1} - { \msg_error:nnn { hooks } { hook-disabled } {#1} } - { \@@_try_declaring_generic_hook:nnn {#1} {#2} {#3} } - } + { + \@@_if_disabled:nTF {#1} + { \msg_error:nnn { hooks } { hook-disabled } {#1} } + { \@@_try_declaring_generic_hook:nnn {#1} {#2} {#3} } } } } % \end{macrocode} % -% \begin{macrocode} -\cs_generate_variant:Nn \@@_gput_code:nnn { nxv } -% \end{macrocode} -% % This macro will unconditionally add a chunk of code to the given hook. % \begin{macrocode} \cs_new_protected:Npn \@@_hook_gput_code_do:nnn #1 #2 #3 @@ -2839,21 +3092,40 @@ % next-execution hooks does the same: it defers the code to % \cs{hook_gput_next_code:nn} if the generic hook was declared, or % to \cs{@@_gput_next_do:nn} otherwise. +% \changes{v1.0p}{2021/08/25}{Standardise generic hook names (gh/648)} % \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_try_declaring_generic_hook:nnn} +% {Standardise~generic~hook~names} \cs_new_protected:Npn \@@_try_declaring_generic_hook:nnn #1 { - \@@_try_declaring_generic_hook:nNNnn {#1} - \hook_gput_code:nnn \@@_gput_undeclared_hook:nnn + \@@_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} + \hook_gput_code:nnn + \@@_gput_undeclared_hook:nnn + {#1} } \cs_new_protected:Npn \@@_try_declaring_generic_next_hook:nn #1 { - \@@_try_declaring_generic_hook:nNNnn {#1} - \hook_gput_next_code:nn \@@_gput_next_do:nn + \@@_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} + \hook_gput_next_code:nn + \@@_gput_next_do:nn + {#1} } +%\EndIncludeInRelease +%\IncludeInRelease{2020/10/01}{\@@_try_declaring_generic_hook:nnn} +% {Standardise~generic~hook~names} +%\cs_new_protected:Npn \@@_try_declaring_generic_hook:nnn #1 +% { +% \@@_try_declaring_generic_hook:nNNnn {#1} +% \hook_gput_code:nnn \@@_gput_undeclared_hook:nnn +% } +%\cs_new_protected:Npn \@@_try_declaring_generic_next_hook:nn #1 +% { +% \@@_try_declaring_generic_hook:nNNnn {#1} +% \hook_gput_next_code:nn \@@_gput_next_do:nn +% } % \end{macrocode} % \end{macro} % -% % \begin{macro}{\@@_try_declaring_generic_hook:nNNnn, % \@@_try_declaring_generic_hook_split:nNNnn} % @@ -2867,43 +3139,39 @@ % the function returns \meta{true} for a generic hook and \meta{false} % in other cases. % \begin{macrocode} -\cs_new_protected:Npn \@@_try_declaring_generic_hook:nNNnn #1 - { - \@@_if_file_hook:wTF #1 / / \s_@@_mark - { - \exp_args:Ne \@@_try_declaring_generic_hook_split:nNNnn - { \exp_args:Ne \@@_file_hook_normalize:n {#1} } - } - { \@@_try_declaring_generic_hook_split:nNNnn {#1} } - } +%\cs_new_protected:Npn \@@_try_declaring_generic_hook:nNNnn #1 +% { +% \@@_if_file_hook:wTF #1 / \s_@@_mark {#1} +% { +% \exp_args:Ne \@@_try_declaring_generic_hook_split:nNNnn +% { \exp_args:Ne \@@_file_hook_normalize:n {#1} } +% } +% { \@@_try_declaring_generic_hook_split:nNNnn {#1} } +% } % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_try_declaring_generic_hook_split:nNNnn #1 #2 #3 - { - \@@_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} - { #2 } - { #3 } {#1} - } +%\cs_new_protected:Npn \@@_try_declaring_generic_hook_split:nNNnn #1 #2 #3 +% { +% \@@_try_declaring_generic_hook:wnTF #1 / / / \scan_stop: {#1} +% { #2 } +% { #3 } {#1} +% } +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % -% % \begin{macro}[TF]{\@@_try_declaring_generic_hook:wn} -% % \begin{macrocode} -%\IncludeInRelease{2021/06/01}% -% {\@@_try_declaring_generic_hook:wn}{Support~cmd~hooks} +%\IncludeInRelease{2021/11/15}{\@@_try_declaring_generic_hook:wn}% +% {Standardise~generic~hook~names} \prg_new_protected_conditional:Npnn \@@_try_declaring_generic_hook:wn #1 / #2 / #3 / #4 \scan_stop: #5 { TF } { - \tl_if_empty:nTF {#2} - { \prg_return_false: } + \@@_if_generic:nTF {#5} { - \prop_if_in:NnTF \c_@@_generics_prop {#1} + \@@_if_usable:nF {#5} { - \@@_if_usable:nF {#5} - { % \end{macrocode} % If the hook doesn't exist yet we check if it is a \texttt{cmd} % hook and if so we attempt patching the command in addition to @@ -2913,8 +3181,8 @@ % \cs{@@_patch_cmd_or_delay:Nnn} (defined in \texttt{ltcmdhooks}) % will generate an appropriate error message. % \begin{macrocode} - \str_if_eq:nnT {#1} { cmd } - { \@@_try_put_cmd_hook:n {#5} } + \str_if_eq:nnT {#1} { cmd } + { \@@_try_put_cmd_hook:n {#5} } % \end{macrocode} % % Declare the hook always even if it can't really be used (error @@ -2923,27 +3191,126 @@ % Here we use \cs{@@_make_usable:n}, so that a \cs{hook_new:n} is still % possible later. % \begin{macrocode} - \@@_make_usable:n {#5} - } - \prop_if_in:NnTF \c_@@_generics_reversed_ii_prop {#2} - { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } - { - \prop_if_in:NnT \c_@@_generics_reversed_iii_prop {#3} - { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } - } - \prg_return_true: + \@@_make_usable:n {#5} } - { \prg_return_false: } + \@@_if_generic_reversed:nT {#5} + { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } + \prg_return_true: } - } -%\EndIncludeInRelease + { % \end{macrocode} % +% Generic hooks are all named \meta{type}/\meta{name}/\meta{place}, +% where \meta{type} and \meta{place} are predefined +% (\cs{c_@@_generic_\meta{type}/./\meta{place}_tl}), and \meta{name} +% is the variable component. Older releases had some hooks with the +% \meta{name} in the third part, so the code below supports that +% syntax for a while, with a warning. +% +% The \cs{exp_after:wN} |...| \cs{exp:w} trick is there to remove the +% conditional structure inserted by +% \cs{@@_try_declaring_generic_hook:wnTF} and thus allow access to the +% tokens that follow it, as is needed to keep things going. +% +% When the deprecation cycle ends, the lines below should all be +% replaced by \cs{prg_return_false:}. % \begin{macrocode} -%\IncludeInRelease{2020/10/01}% -% {\@@_try_declaring_generic_hook:wn}{Support~cmd~hooks} -% -%\prg_new_protected_conditional:Npnn \@@_try_declaring_generic_hook:wn + \@@_if_deprecated_generic:nTF {#5} + { + \@@_deprecated_generic_warn:n {#5} + \exp_after:wN \@@_declare_deprecated_generic:NNn + \exp:w % \exp_end: + } + { \prg_return_false: } + } + } +% \end{macrocode} +% +% \begin{macro}{ +% \@@_deprecated_generic_warn:Nn, +% \@@_deprecated_generic_warn:Nw, +% } +% \cs{@@_deprecated_generic_warn:n} will issue a deprecation warning +% for a given hook, and mark that hook such that the warning will not +% be issued again (multiple warnings can be issued, but only once per +% hook). +% \begin{macrocode} +\cs_new_protected:Npn \@@_deprecated_generic_warn:n #1 + { \@@_deprecated_generic_warn:w #1 \s_@@_mark } +\cs_new_protected:Npn \@@_deprecated_generic_warn:w + #1 / #2 / #3 \s_@@_mark + { + \if_cs_exist:w @@~#1/#2/#3 \cs_end: \else: + \msg_warning:nnnnn { hooks } { generic-deprecated } {#1} {#2} {#3} + \fi: + \cs_gset_eq:cN { @@~#1/#2/#3 } \scan_stop: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ +% \@@_do_deprecated_generic:Nn, +% \@@_do_deprecated_generic:Nw, +% \@@_declare_deprecated_generic:NNw, +% \@@_declare_deprecated_generic:NNw, +% } +% Now that the user has been told about the deprecation, we proceed by +% swapping \meta{name} and \meta{place} and adding the code to the +% correct hook. +% \begin{macrocode} +\cs_new_protected:Npn \@@_do_deprecated_generic:Nn #1 #2 + { \@@_do_deprecated_generic:Nw #1 #2 \s_@@_mark } +\cs_new_protected:Npn \@@_do_deprecated_generic:Nw #1 + #2 / #3 / #4 \s_@@_mark + { #1 { #2 / #4 / #3 } } +\cs_new_protected:Npn \@@_declare_deprecated_generic:NNn #1 #2 #3 + { \@@_declare_deprecated_generic:NNw #1 #2 #3 \s_@@_mark } +\cs_new_protected:Npn \@@_declare_deprecated_generic:NNw #1 #2 + #3 / #4 / #5 \s_@@_mark + { + \@@_try_declaring_generic_hook:wnTF #3 / #5 / #4 / \scan_stop: + { #3 / #5 / #4 } + #1 #2 { #3 / #5 / #4 } + } +%\EndIncludeInRelease +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +%\IncludeInRelease{2021/06/01}{\@@_try_declaring_generic_hook:wn} +% {Support~cmd~hooks} +%\prg_new_protected_conditional:Npnn \@@_try_declaring_generic_hook:wn +% #1 / #2 / #3 / #4 \scan_stop: #5 { TF } +% { +% \tl_if_empty:nTF {#2} +% { \prg_return_false: } +% { +% \prop_if_in:NnTF \c_@@_generics_prop {#1} +% { +% \@@_if_usable:nF {#5} +% { +% \str_if_eq:nnT {#1} { cmd } +% { \@@_try_put_cmd_hook:n {#5} } +% \@@_make_usable:n {#5} +% } +% \prop_if_in:NnTF \c_@@_generics_reversed_ii_prop {#2} +% { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } +% { +% \prop_if_in:NnT \c_@@_generics_reversed_iii_prop {#3} +% { \tl_gset:cn { g_@@_#5_reversed_tl } { - } } +% } +% \prg_return_true: +% } +% { \prg_return_false: } +% } +% } +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/10/01}{\@@_try_declaring_generic_hook:wn}% +% {Support~cmd~hooks} +%\prg_new_protected_conditional:Npnn \@@_try_declaring_generic_hook:wn % #1 / #2 / #3 / #4 \scan_stop: #5 { TF } % { % \tl_if_empty:nTF {#2} @@ -2968,77 +3335,107 @@ % \end{macrocode} % \end{macro} % +% % \begin{macro}[pTF]{\@@_if_file_hook:w} % \cs{@@_if_file_hook:wTF} checks if the argument is a valid % file-specific hook (not, for example, |file/before|, but -% |file/before/foo.tex|). If it is a file-specific hook, then it +% |file/foo.tex/before|). If it is a file-specific hook, then it % executes the \meta{true} branch, otherwise \meta{false}. -% -% A file-specific hook is \hook{file/\meta{position}/\meta{name}}. -% If any of these parts don't exist, it is a general file hook or not -% a file hook at all, so the conditional evaluates to \meta{false}. -% Otherwise, it checks that the first part is |file| and that the -% \meta{position} is in the \cs{c_@@_generics_file_prop}. -% -% A property list is used here to avoid having to worry with catcodes, -% because \pkg{expl3}'s file name parsing turns all characters into -% catcode-12 tokens, which might differ from hand-input letters. % \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_if_file_hook:w}% +% {Standardise~generic~hook~names} \prg_new_conditional:Npnn \@@_if_file_hook:w - #1 / #2 / #3 \s_@@_mark { TF } + #1 / #2 \s_@@_mark #3 { TF } { - \str_if_eq:nnTF {#1} { file } + \@@_if_generic:nTF {#3} { - \bool_lazy_or:nnTF - { \tl_if_empty_p:n {#3} } - { \str_if_eq_p:nn {#3} { / } } + \str_if_eq:nnTF {#1} { file } + { \prg_return_true: } { \prg_return_false: } - { - \prop_if_in:NnTF \c_@@_generics_file_prop {#2} - { \prg_return_true: } - { \prg_return_false: } - } } { \prg_return_false: } } +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/10/01}{\@@_if_file_hook:w}% +% {Standardise~generic~hook~names} +%\prg_new_conditional:Npnn \@@_if_file_hook:w +% #1 / #2 / #3 \s_@@_mark { TF } +% { +% \str_if_eq:nnTF {#1} { file } +% { +% \bool_lazy_or:nnTF +% { \tl_if_empty_p:n {#3} } +% { \str_if_eq_p:nn {#3} { / } } +% { \prg_return_false: } +% { +% \prop_if_in:NnTF \c_@@_generics_file_prop {#2} +% { \prg_return_true: } +% { \prg_return_false: } +% } +% } +% { \prg_return_false: } +% } +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}[EXP]{\@@_file_hook_normalize:n} % \begin{macro}[EXP]{\@@_strip_double_slash:n,\@@_strip_double_slash:w} +% +% \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\@@_file_hook_normalize:n}% +% {Standardise~generic~hook~names} +%\EndIncludeInRelease +% \end{macrocode} +% % When a file-specific hook is found, before being declared it is % lightly normalized by \cs{@@_file_hook_normalize:n}. The current % implementation just replaces two consecutive slashes (|//|) by a % single one, to cope with simple cases where the user did something % like \verb|\def\input@path{{./mypath/}}|, in which case a hook would -% have to be \verb|\AddToHook{file/after/./mypath//file.tex}|. +% have to be \verb|\AddToHook{file/./mypath//file.tex/after}|. % \begin{macrocode} -\cs_new:Npn \@@_file_hook_normalize:n #1 - { \@@_strip_double_slash:n {#1} } -\cs_new:Npn \@@_strip_double_slash:n #1 - { \@@_strip_double_slash:w #1 // \s_@@_mark } +%\IncludeInRelease{2020/10/01}{\@@_file_hook_normalize:n}% +% {Standardise~generic~hook~names} +%\cs_new:Npn \@@_file_hook_normalize:n #1 +% { \@@_strip_double_slash:n {#1} } +%\cs_new:Npn \@@_strip_double_slash:n #1 +% { \@@_strip_double_slash:w #1 // \s_@@_mark } % \end{macrocode} % This function is always called after testing if the argument is a % file hook with \cs{@@_if_file_hook:wTF}, so we can assume it has -% three parts (it is either \verb|file/before/...| or -% \verb|file/after/...|), so we use \verb|#1/#2/#3 //| instead of just +% three parts (it is either \verb|file/.../before| or +% \verb|file/.../after|), so we use \verb|#1/#2/#3 //| instead of just % \verb|#1 //| to prevent losing a slash if the file name is empty. % \changes{v1.0h}{2021/01/07}{Assume hook name has at least three % nonempty parts (gh/464)} % \begin{macrocode} -\cs_new:Npn \@@_strip_double_slash:w #1/#2/#3 // #4 \s_@@_mark - { - \tl_if_empty:nTF {#4} - { #1/#2/#3 } - { \@@_strip_double_slash:w #1/#2/#3 / #4 \s_@@_mark } - } +%\cs_new:Npn \@@_strip_double_slash:w #1/#2/#3 // #4 \s_@@_mark +% { +% \tl_if_empty:nTF {#4} +% { #1/#2/#3 } +% { \@@_strip_double_slash:w #1/#2/#3 / #4 \s_@@_mark } +% } +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\c_@@_generics_prop} -% Property list holding the generic names. We don't provide any user -% interface to this as this is meant to be static. +% \begin{macro}{ +% \c_@@_generic_cmd/./before_tl,\c_@@_generic_cmd/./after_tl, +% \c_@@_generic_env/./before_tl,\c_@@_generic_env/./after_tl, +% \c_@@_generic_file/./before_tl,\c_@@_generic_file/./after_tl, +% \c_@@_generic_package/./before_tl,\c_@@_generic_package/./after_tl, +% \c_@@_generic_class/./before_tl,\c_@@_generic_class/./after_tl, +% \c_@@_generic_include/./before_tl,\c_@@_generic_include/./after_tl, +% \c_@@_generic_env/./begin_tl,\c_@@_generic_env/./end_tl, +% \c_@@_generic_include/./end_tl +% } +% Token lists defining the possible generic hooks. We don't provide +% any user interface to this as this is meant to be static. % \begin{description} % \item[\texttt{cmd}] % The generic hooks used for commands. @@ -3048,28 +3445,65 @@ % The generic hooks used when loading a file % \end{description} % \begin{macrocode} -\prop_const_from_keyval:Nn \c_@@_generics_prop - {cmd=,env=,file=,package=,class=,include=} +%\IncludeInRelease{2021/11/15}{\c_@@_generics_prop}% +% {Standardise~generic~hook~names} +\clist_map_inline:nn { cmd , env , file , package , class , include } + { + \tl_const:cn { c_@@_generic_#1/./before_tl } { + } + \tl_const:cn { c_@@_generic_#1/./after_tl } { - } + } +\tl_const:cn { c_@@_generic_env/./begin_tl } { + } +\tl_const:cn { c_@@_generic_env/./end_tl } { + } +\tl_const:cn { c_@@_generic_include/./end_tl } { - } +% \end{macrocode} +% +% Deprecated generic hooks: +% \begin{macrocode} +\clist_map_inline:nn { file , package , class , include } + { + \tl_const:cn { c_@@_deprecated_#1/./before_tl } { } + \tl_const:cn { c_@@_deprecated_#1/./after_tl } { } + } +\tl_const:cn { c_@@_deprecated_include/./end_tl } { } +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/10/01}{\c_@@_generics_prop}% +% {Standardise~generic~hook~names} +%\prop_const_from_keyval:Nn \c_@@_generics_prop +% {cmd=,env=,file=,package=,class=,include=} +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\c_@@_generics_reversed_ii_prop, % \c_@@_generics_reversed_iii_prop, % \c_@@_generics_file_prop} -% Some of the generic hooks are supposed to use reverse ordering, these are -% the following (only the second or third sub-component is checked): +% The following generic hooks are supposed to use reverse ordering +% (the |ii| and |iii| names are kept for the deprecation cycle): +% \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\c_@@_generics_reversed_ii_prop}% +% {Standardise~generic~hook~names} +%\EndIncludeInRelease +% \end{macrocode} +% % \begin{macrocode} -\prop_const_from_keyval:Nn \c_@@_generics_reversed_ii_prop {after=,end=} -\prop_const_from_keyval:Nn \c_@@_generics_reversed_iii_prop {after=} -\prop_const_from_keyval:Nn \c_@@_generics_file_prop {before=,after=} +%\IncludeInRelease{2020/10/01}{\c_@@_generics_reversed_ii_prop}% +% {Standardise~generic~hook~names} +%\prop_const_from_keyval:Nn \c_@@_generics_reversed_ii_prop {after=,end=} +%\prop_const_from_keyval:Nn \c_@@_generics_reversed_iii_prop {after=} +%\prop_const_from_keyval:Nn \c_@@_generics_file_prop {before=,after=} +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % % \begin{macro}{\hook_gremove_code:nn} % \begin{macro}{\@@_gremove_code:nn} -% +% % With \cs{hook_gremove_code:nn}\Arg{hook}\Arg{label} any code % for \meta{hook} stored under \meta{label} is removed. +% \changes{v1.0o}{2021/07/22}{Do not queue removals (gh/625)} % \begin{macrocode} \cs_new_protected:Npn \hook_gremove_code:nn #1 #2 { \@@_normalize_hook_args:Nnn \@@_gremove_code:nn {#1} {#2} } @@ -3101,27 +3535,13 @@ { % \end{macrocode} % If the label is |top-level| then clear the token list, as all code -% there is under the same label. Marked removal is not implemented -% for |top-level| because it is hard to reliably know that no code -% was added to \cs{@@_toplevel\textvisiblespace\meta{hook}} (granted that -% an empty code could be interpreted as that, but then it differs in -% behaviour from other labels, in which an empty chunk is still valid -% for removal). Besides, it doesn't make much (if any) sense for -% packages to remove |top-level| code. So here the chunk is just -% cleared unconditionally. +% there is under the same label. % \begin{macrocode} \str_if_eq:nnTF {#2} { top-level } { \@@_tl_gclear:c { @@_toplevel~#1 } } { -% \end{macrocode} -% Otherwise check if the label being removed exists in the code pool. -% If it does, just call \cs{@@_gremove_code_do:nn} to do the removal, -% otherwise mark it to be removed. -% \begin{macrocode} - \prop_get:cnNTF { g_@@_#1_code_prop } {#2} \l_@@_return_tl - { \@@_gremove_code_do:nn } - { \@@_mark_removal:nn } - {#1} {#2} + \prop_gpop:cnNF { g_@@_#1_code_prop } {#2} \l_@@_return_tl + { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} } } } % \end{macrocode} @@ -3132,82 +3552,21 @@ } % \end{macrocode} % -% If the code pool for this hook doesn't exist it means that nothing -% tried to add to it before, so we just queue this removal order for -% later. -% \begin{macrocode} - { \@@_mark_removal:nn {#1} {#2} } - } -% \end{macrocode} -% -% \begin{macro}{\@@_gremove_code_do:nn} -% Remove code for a given label. -% \begin{macrocode} -\cs_new_protected:Npn \@@_gremove_code_do:nn #1 #2 - { \prop_gremove:cn { g_@@_#1_code_prop } {#2} } -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\@@_mark_removal:nn} -% Marks \meta{label} (\verb=#2=) to be removed from \meta{hook} -% (\verb=#1=). The number of removals should be fairly small, and -% \cs{tl_gremove_once:Nx} is fairly efficient even for longer token -% lists, so we use a single global token list, rather than one for -% each hook. -% -% A hand-crafted token list is used here because property lists don't -% hold repeated items, so multiple usages of \cs{@@_mark_removal:nn} -% would be cancelled by a single \cs{@@_unmark_removal:nn}. -% \begin{macrocode} -\cs_new_protected:Npn \@@_mark_removal:nn #1 #2 - { - \tl_gput_right:Nx \g_@@_removal_list_tl - { \@@_removal_tl:nn {#1} {#2} } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\@@_unmark_removal:nn} -% Unmarks \meta{label} (\verb=#2=) to be removed from \meta{hook} -% (\verb=#1=). \cs{tl_gremove_once:Nx} is used rather than -% \cs{tl_gremove_all:Nx} so that two additions are needed to cancel -% two marked removals, rather than only one. +% If the code pool for this hook doesn't exist, show a warning: % \begin{macrocode} -\cs_new_protected:Npn \@@_unmark_removal:nn #1 #2 - { - \tl_gremove_once:Nx \g_@@_removal_list_tl - { \@@_removal_tl:nn {#1} {#2} } - } -% \end{macrocode} -% \end{macro} -% -% \begin{macro}[TF]{\@@_if_marked_removal:nn} -% Checks if the \cs{g_@@_removal_list_tl} contains the current -% \meta{label} (\verb=#2=) and \meta{hook} (\verb=#1=). -% \begin{macrocode} -\prg_new_protected_conditional:Npnn \@@_if_marked_removal:nn #1 #2 { TF } - { - \exp_args:NNx \tl_if_in:NnTF \g_@@_removal_list_tl - { \@@_removal_tl:nn {#1} {#2} } - { \prg_return_true: } { \prg_return_false: } + { + \@@_if_deprecated_generic:nTF {#1} + { + \@@_deprecated_generic_warn:n {#1} + \@@_do_deprecated_generic:Nn \@@_gremove_code:nn {#1} {#2} + } + { \msg_warning:nnnn { hooks } { cannot-remove } {#1} {#2} } + } } % \end{macrocode} % \end{macro} -% -% \begin{macro}[rEXP]{\@@_removal_tl:nn} -% Builds a token list with \verb=#1= and \verb=#2= which can only be -% matched by \verb=#1= and \verb=#2=. The |&|$_4$ anchors a removal, -% so that \verb=#1= can't be mistaken by \verb=#2= and vice versa, and -% the two |$|$_3$ delimit the two arguments -% \begin{macrocode} -\cs_new:Npn \@@_removal_tl:nn #1 #2 - { & \tl_to_str:n {#2} $ \tl_to_str:n {#1} $ } -% \end{macrocode} % \end{macro} % -% % \begin{macro}{ % \g_@@_??_code_prop, % \@@~??, @@ -3263,6 +3622,13 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_gset_rule:nnnn #1#2#3#4 { + \@@_if_deprecated_generic:nT {#1} + { + \@@_deprecated_generic_warn:n {#1} + \@@_do_deprecated_generic:Nn \@@_gset_rule:nnnn {#1} + {#2} {#3} {#4} + \exp_after:wN \use_none:nnnnnnnnn \use_none:n + } % \end{macrocode} % First we ensure the basic data structure of the hook exists: % \begin{macrocode} @@ -3399,12 +3765,12 @@ % |#1| is lexically greater, and \cs{use_iii:nn} otherwise. % \begin{macrocode} \cs_new:Npn \@@_if_label_case:nnnnn #1#2 - { - \cs:w use_ - \if_case:w \@@_str_compare:nn {#1} {#2} - i \or: ii \else: iii \fi: :nnn - \cs_end: - } + { + \cs:w use_ + \if_case:w \@@_str_compare:nn {#1} {#2} + i \or: ii \else: iii \fi: :nnn + \cs_end: + } % \end{macrocode} % \end{macro} % @@ -3440,7 +3806,7 @@ } % \end{macrocode} % If we are debugging we show results hook by hook for all hooks -% that have data. +% that have data. % \begin{macrocode} \@@_debug:n { \iow_term:x{^^JAll~ initialized~ (non-empty)~ hooks:} @@ -3492,7 +3858,7 @@ % \begin{macrocode} \@@_if_usable:nT {#1} { - \prop_if_empty:cTF {g_@@_#1_code_prop} + \prop_if_empty:cTF { g_@@_#1_code_prop } { \@@_tl_gset:co { @@~#1 } { @@ -3503,11 +3869,11 @@ { % \end{macrocode} % By default the algorithm sorts the code chunks and then saves the -% result in a token list for fast execution by adding the code one -% after another using \cs{tl_gput_right:NV}. When we sort code for +% result in a token list for fast execution; this is done by adding the code chunks +% one after another, using \cs{tl_gput_right:NV}. When we sort code for % a reversed hook, all we have to do is to add the code chunks in % the opposite order into the token list. So all we have to do -% in preparation is to change two definitions used later on. +% in preparation is to change two definitions that are used later on. % \begin{macrocode} \@@_if_reversed:nTF {#1} { \cs_set_eq:NN \@@_tl_gput:Nn \@@_tl_gput_left:Nn @@ -3518,8 +3884,9 @@ % % When sorting, some relations (namely \verb|voids|) need to % act destructively on the code property lists to remove code that -% shouldn't appear in the sorted hook token list, so we temporarily -% save the old code property list so that it can be restored later. +% shouldn't appear in the sorted hook token list, so we make a copy +% of the code property list that we can safely work on without +% changing the main one. % \begin{macrocode} \prop_set_eq:Nc \l_@@_work_prop { g_@@_#1_code_prop } \@@_initialize_single:ccn @@ -3606,8 +3973,8 @@ % alphanumeric labels. As usual Don's data structures are chosen in % a way that one can omit a lot of tests and I have mimicked that as % far as possible. The result is a restriction I do not test for at -% the moment: a label can't be equal to the number 0! \fmi{Needs -% checking for, just in case ... maybe} +% the moment: a label can't be equal to the number 0! +% \fmiinline{Needs checking for, just in case ... maybe} % % ^^A #1 <- \@@~#1 % ^^A #2 <- \g_@@_#1_labels_clist @@ -3626,11 +3993,11 @@ % \begin{macrocode} \tl_set:Nn \l_@@_cur_hook_tl {#3} % \end{macrocode} -% +% % We loop over the property list holding the code and record all -% labels listed there. Only rules for those labels are of interest +% the labels listed there. Only the rules for those labels are of interest % to us. While we are at it we count them (which gives us the $N$ -% in Knuth's algorithm. The prefix |label_| is added to the variables +% in Knuth's algorithm). The prefix |label_| is added to the variables % to ensure that labels named |front|, |rear|, |labels|, or |return| % don't interact with our code. % \begin{macrocode} @@ -3642,11 +4009,11 @@ \seq_clear_new:c { \@@_seq_csname:n {##1} } } % \end{macrocode} -% Steps T2 and T3: Sort the relevant rules into the data structure\ldots -% +% Steps T2 and T3: Here we sort the relevant rules into the data structure\ldots +% % This loop constitutes a square matrix of the labels in % \cs{l_@@_work_prop} in the -% vertical and the horizontal directions. However since the rule +% vertical and the horizontal directions. However, since the rule % $l_A\meta{rel}l_B$ is the same as $l_B\meta{rel}^{-1}l_A$ we can cut % the loop short at the diagonal of the matrix (\emph{i.e.}, when % both labels are equal), saving a good amount of time. The way the @@ -3668,12 +4035,12 @@ } } % \end{macrocode} -% Take a breath and take a look at the data structures that have +% Now take a breath, and look at the data structures that have % been set up: % \begin{macrocode} \@@_debug:n { \@@_debug_label_data:N \l_@@_work_prop } % \end{macrocode} -% +% % % Step T4: % \begin{macrocode} @@ -3689,13 +4056,13 @@ } \tl_set_eq:Nc \l_@@_front_tl { \@@_tl_csname:n { 0 } } % \end{macrocode} -% +% % \begin{macrocode} \@@_tl_gclear:N #1 \clist_gclear:N #2 % \end{macrocode} % -% The whole loop combines steps T5--T7: +% The whole loop gets combined in steps T5--T7: % \begin{macrocode} \bool_while_do:nn { ! \str_if_eq_p:Vn \l_@@_front_tl { 0 } } { @@ -3706,13 +4073,13 @@ \prop_get:NVN \l_@@_work_prop \l_@@_front_tl \l_@@_return_tl \exp_args:NNV \@@_tl_gput:Nn #1 \l_@@_return_tl % \end{macrocode} -% +% % \begin{macrocode} \@@_clist_gput:NV #2 \l_@@_front_tl \@@_debug:n{ \iow_term:x{Handled~ code~ for~ \l_@@_front_tl} } % \end{macrocode} % -% This is step T6 except that we don't use a pointer $P$ to move +% This is step T6, except that we don't use a pointer $P$ to move % through the successors, but instead use \verb=##1= of the mapping % function. % \begin{macrocode} @@ -3730,7 +4097,7 @@ } } % \end{macrocode} -% and step T7: +% and here is step T7: % \begin{macrocode} \tl_set_eq:Nc \l_@@_front_tl { \@@_tl_csname:n { \l_@@_front_tl } } @@ -3748,14 +4115,14 @@ % \end{macrocode} % % This is not really the information one needs in the error case -% but will do for now \ldots \fmi{improve output on a rainy day} +% but it will do for now \ldots \fmiinline{improve output on a rainy day} % \begin{macrocode} \@@_debug_label_data:N \l_@@_work_prop \iow_term:x{====================} } % \end{macrocode} -% After we have added all hook code to \verb=#1= we finish it off -% with adding extra code for the |top-level| (\verb=#2=) and for one +% After we have added all hook code to \verb=#1=, we finish it off +% by adding extra code for the |top-level| (\verb=#2=) and for one % time execution (\verb=#3=). These should normally be empty. The % |top-level| code is added with \cs{@@_tl_gput:Nn} as that might % change for a reversed hook (then |top-level| is the very first code @@ -3905,10 +4272,10 @@ % \begin{macro}{\@@_apply_rule_->:nnn,\@@_apply_rule_<-:nnn} % If we see \texttt{\detokenize{->}} we have to drop code for label % \verb=#3= and carry on. We could do a little better and drop -% everything for that label since it doesn't matter where we sort -% in the empty code. However that would complicate the algorithm a -% lot with little gain.\footnote{This also hase the advantage that -% the result of the sorting doesn't change which might otherwise +% everything for that label since it doesn't matter where we put +% such empty code. However that would complicate the algorithm a +% lot with little gain.\footnote{This also has the advantage that +% the result of the sorting doesn't change, as it might otherwise do % (for unrelated chunks) if we aren't careful.} So we still % unnecessarily try to sort it in and depending on the rules that % might result in a loop that is otherwise resolved. If that turns @@ -3916,8 +4283,8 @@ % % Here the code is removed from \cs{l_@@_cur_hook_tl} rather than % \verb=#3= because the latter may be \verb=??=, and the default -% hook doesn't store any code. Removing from \cs{l_@@_cur_hook_tl} -% makes default rules \verb=->= and \verb=<-= work properly. +% hook doesn't store any code. Removing it instead from \cs{l_@@_cur_hook_tl} +% makes the default rules \verb=->= and \verb=<-= work properly. % \begin{macrocode} \cs_new_protected:cpn { @@_apply_rule_->:nnn } #1#2#3 { @@ -3978,7 +4345,7 @@ % % % \begin{macro}{\@@_debug_label_data:N} -% +% % \begin{macrocode} \cs_new_protected:Npn \@@_debug_label_data:N #1 { \iow_term:x{Code~ labels~ for~ sorting:} @@ -4024,8 +4391,15 @@ % \begin{macrocode} \cs_new_protected:Npn \@@_log:nN #1 #2 { + \@@_if_deprecated_generic:nT {#1} + { + \@@_deprecated_generic_warn:n {#1} + \@@_do_deprecated_generic:Nn \@@_log:nN {#1} #2 + \exp_after:wN \use_none:nnnnnnnnn \use_none:nnnnn + } \@@_preamble_hook:n {#1} - \@@_log_cmd:x { ^^J ->~The~hook~'#1': } + \@@_log_cmd:x + { ^^J ->~The~ \@@_if_generic:nT {#1} { generic~ } hook~'#1': } % \end{macrocode} % % \begin{macrocode} @@ -4234,16 +4608,14 @@ % % \begin{macro}{\@@_gput_next_code:nn, % \@@_gput_next_do:nn, -% \@@_gput_next_do:Nnn, -% \@@_clear_next:n} +% \@@_gput_next_do:Nnn} % \begin{macrocode} \cs_new_protected:Npn \@@_gput_next_code:nn #1 #2 { \@@_if_disabled:nTF {#1} { \msg_error:nnn { hooks } { hook-disabled } {#1} } { - \@@_init_structure:n {#1} - \@@_if_usable:nTF {#1} + \@@_if_structure_exist:nTF {#1} { \@@_gput_next_do:nn {#1} {#2} } { \@@_try_declaring_generic_next_hook:nn {#1} {#2} } } @@ -4275,13 +4647,21 @@ { \@@_tl_gset:Nn #1 { \@@_clear_next:n {#2} } } \@@_tl_gput_right:Nn #1 } -\cs_new_protected:Npn \@@_clear_next:n #1 - { \cs_gset_eq:cN { @@_next~#1 } \c_empty_tl } % \end{macrocode} % \end{macro} % % % +% \begin{macro}{\hook_gclear_next_code:n,\@@_clear_next:n} +% Discard anything set up for next invocation of the hook. +% \changes{v1.0o}{2021/07/27}{Macro made public} +% \begin{macrocode} +\cs_new_protected:Npn \hook_gclear_next_code:n #1 + { \@@_normalize_hook_args:Nn \@@_clear_next:n {#1} } +\cs_new_protected:Npn \@@_clear_next:n #1 + { \cs_gset_eq:cN { @@_next~#1 } \c_empty_tl } +% \end{macrocode} +% \end{macro} % % % @@ -4302,44 +4682,68 @@ % the preamble. \cs{@@_preamble_hook:n} initializes the hook in the % preamble, and is redefined to \cs{use_none:n} at |\begin{document}|. % -% Both versions do the same internally: check if the hook exist as -% given, and if so use it as quickly as possible. If it doesn't -% exist, the a call to \cs{@@_use:wn} checks for file hooks. +% Both versions do the same thing internally: they check that the hook exists as +% given, and if so they use it as quickly as possible. % % At |\begin{document}|, all hooks are initialized, and any change in % them causes an update, so \cs{hook_use:n} can be made expandable. % This one is better not protected so that it can expand into nothing % if containing no code. Also important in case of generic hooks that -% we do not generate a \cs[no-index]{relax} as a side effect of checking for a -% csname. In contrast to the \TeX{} low-level +% we do not generate a \cs[no-index]{relax} as a side effect of +% checking for a csname. In contrast to the \TeX{} low-level % \verb=\csname ...\endcsname= construct \cs{tl_if_exist:c} is % careful to avoid this. % \begin{macrocode} +%\IncludeInRelease{2021/11/15}{\hook_use:n} +% {Standardise~generic~hook~names} \cs_new_protected:Npn \hook_use:n #1 { - \tl_if_exist:cTF { @@~#1 } + \tl_if_exist:cT { @@~#1 } { \@@_preamble_hook:n {#1} \cs:w @@~#1 \cs_end: } - { \@@_use:wn #1 / \s_@@_mark {#1} } } \cs_new:Npn \@@_use_initialized:n #1 { \if_cs_exist:w @@~#1 \cs_end: - \else: - \@@_use_undefined:w + \cs:w @@~#1 \exp_after:wN \cs_end: \fi: - \cs:w @@~#1 \@@_use_end: - } -\cs_new:Npn \@@_use_undefined:w #1 #2 @@~#3 \@@_use_end: - { - #1 % fi - \@@_use:wn #3 / \s_@@_mark {#3} } \cs_new_protected:Npn \@@_preamble_hook:n #1 { \@@_initialize_hook_code:n {#1} } -\cs_new_eq:NN \@@_use_end: \cs_end: +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{2020/10/01}{\hook_use:n} +% {Standardise~generic~hook~names} +%\cs_new_protected:Npn \hook_use:n #1 +% { +% \tl_if_exist:cTF { @@~#1 } +% { +% \@@_preamble_hook:n {#1} +% \cs:w @@~#1 \cs_end: +% } +% { \@@_use:wn #1 / \s_@@_mark {#1} } +% } +%\cs_new:Npn \@@_use_initialized:n #1 +% { +% \if_cs_exist:w @@~#1 \cs_end: +% \else: +% \@@_use_undefined:w +% \fi: +% \cs:w @@~#1 \@@_use_end: +% } +%\cs_new:Npn \@@_use_undefined:w #1 #2 @@~#3 \@@_use_end: +% { +% #1 % fi +% \@@_use:wn #3 / \s_@@_mark {#3} +% } +%\cs_new_protected:Npn \@@_preamble_hook:n #1 +% { \@@_initialize_hook_code:n {#1} } +%\cs_new_eq:NN \@@_use_end: \cs_end: +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} @@ -4360,63 +4764,121 @@ % \cs{@@_if_usable_use:n} checks if the hook exist, and calls % \cs{@@_preamble_hook:n} if so, then uses the hook. % \begin{macrocode} -\cs_new:Npn \@@_use:wn #1 / #2 \s_@@_mark #3 - { - \str_if_eq:nnTF {#1} { file } - { \@@_try_file_hook:n {#3} } - { } % Hook doesn't exist - } +%\IncludeInRelease{2021/11/15}{\@@_use:wn} +% {Standardise~generic~hook~names} +%\EndIncludeInRelease +%\IncludeInRelease{2020/10/01}{\@@_use:wn} +% {Standardise~generic~hook~names} +%\cs_new:Npn \@@_use:wn #1 / #2 \s_@@_mark #3 +% { +% \str_if_eq:nnTF {#1} { file } +% { \@@_try_file_hook:n {#3} } +% { } % Hook doesn't exist +% } % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_try_file_hook:n #1 - { - \@@_if_file_hook:wTF #1 / / \s_@@_mark - { - \exp_args:Ne \@@_if_usable_use:n - { \exp_args:Ne \@@_file_hook_normalize:n {#1} } - } - { \@@_if_usable_use:n {#1} } % file/ generic hook (e.g. file/before) - } +%\cs_new_protected:Npn \@@_try_file_hook:n #1 +% { +% \@@_if_file_hook:wTF #1 / \s_@@_mark {#1} +% { +% \exp_args:Ne \@@_if_usable_use:n +% { \exp_args:Ne \@@_file_hook_normalize:n {#1} } +% } +% { \@@_if_usable_use:n {#1} } % file/ generic hook (e.g. file/before) +% } % \end{macrocode} % % \begin{macrocode} -\cs_new_protected:Npn \@@_if_usable_use:n #1 - { - \tl_if_exist:cT { @@~#1 } - { - \@@_preamble_hook:n {#1} - \cs:w @@~#1 \cs_end: - } - } +%\cs_new_protected:Npn \@@_if_usable_use:n #1 +% { +% \tl_if_exist:cT { @@~#1 } +% { +% \@@_preamble_hook:n {#1} +% \cs:w @@~#1 \cs_end: +% } +% } +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % \end{macro} % -% \begin{macro}{\hook_use_once:n} -% For hooks that can and should be used only once we have a special -% use command that remembers the hook name in -% \cs{g_@@_execute_immediately_prop}. This has the effect that any -% further code added to the hook is executed immediately rather -% than stored in the hook. +% \begin{macro}{\hook_use_once:n} +% \begin{macro}{\@@_use_once:n} +% For hooks that can and should be used only once we have a special +% use command that further inhibits the hook from getting more code +% added to it. This has the effect that any +% further code added to the hook is executed immediately rather +% than stored in the hook. % -% The code needs some gymnastics to prevent space trimming from the -% hook name, since \cs{hook_use:n} and \cs{hook_use_once:n} are -% documented to not trim spaces. +% The code needs some gymnastics to prevent space trimming from the +% hook name, since \cs{hook_use:n} and \cs{hook_use_once:n} are +% documented to not trim spaces. % +% \changes{v1.0r}{2021/09/06}{Clean up after \cs{UseOneTimeHook} (gh/606)} % \begin{macrocode} \cs_new_protected:Npn \hook_use_once:n #1 { - \tl_if_exist:cT { @@~#1 } + \@@_if_execute_immediately:nF {#1} + { \@@_normalize_hook_args:Nn \@@_use_once:n { \use:n {#1} } } + } +\cs_new_protected:Npn \@@_use_once:n #1 + { + \@@_preamble_hook:n {#1} + \@@_use_once_set:n {#1} + \@@_use_initialized:n {#1} + \@@_use_once_clear:n {#1} + } +% \end{macrocode} +% +% \begin{macro}{\@@_use_once_set:n} +% \begin{macro}{\@@_use_once_clear:n} +% \cs{@@_use_once_set:n} is used before the actual hook code is +% executed so that any usage of \cs{AddToHook} inside the hook causes +% the code to execute immediately. Setting +% \cs[no-index]{g_@@_\meta{hook}_reversed_tl} to |I| prevents further +% code from being added to the hook. \cs{@@_use_once_clear:n} then +% clears the hook so that any further call to \cs{hook_use:n} or +% \cs{hook_use_once:n} will expand to nothing. +% \changes{v1.0r}{2021/09/06}{Clean up after \cs{UseOneTimeHook} (gh/606)} +% \begin{macrocode} +\cs_new_protected:Npn \@@_use_once_set:n #1 + { \@@_tl_gset:cn { g_@@_#1_reversed_tl } { I } } +\cs_new_protected:Npn \@@_use_once_clear:n #1 + { + \@@_tl_gclear:c { @@~#1 } + \@@_tl_gclear:c { @@_next~#1 } + \@@_tl_gclear:c { @@_toplevel~#1 } + \prop_gclear:c { g_@@_#1_code_prop } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}[pTF]{\@@_if_execute_immediately:n} +% To check whether the code being added should be executed immediately (that +% is, if the hook is a one-time hook), we check if it's usable (it +% can't be one-time if it was not already usable), then we check that +% \cs[no-index]{g_@@_\meta{hook}_reversed_tl} is |I|. The gymnastics +% around \cs{if:w} is there to allow the |reversed| token list to be +% empty. +% \changes{v1.0r}{2021/09/06}{Macro added (gh/606)} +% \begin{macrocode} +\prg_new_conditional:Npnn \@@_if_execute_immediately:n #1 { F, TF } + { + \@@_if_usable:nTF {#1} { - \tl_set:Nn \l_@@_return_tl {#1} - \@@_normalize_hook_args:Nn \@@_use_once_store:n - { \l_@@_return_tl } - \hook_use:n {#1} + \exp_after:wN \@@_clean_to_scan:w + \if:w I \cs:w g_@@_#1_reversed_tl \cs_end: + \s_@@_mark \prg_return_true: + \else: + \s_@@_mark \prg_return_false: + \fi: } + { \prg_return_false: } } -\cs_new_protected:Npn \@@_use_once_store:n #1 - { \prop_gput:Nnn \g_@@_execute_immediately_prop {#1} { } } % \end{macrocode} % \end{macro} % @@ -4504,9 +4966,8 @@ } % \end{macrocode} % \end{macro} -% -% -% +% +% % \begin{macro}[pTF]{\@@_if_declared:n} % % Internal test to check if the hook was officially declared with @@ -4526,28 +4987,76 @@ % \begin{macrocode} \prg_new_conditional:Npnn \@@_if_reversed:n #1 { p , T , F , TF } { - \if_int_compare:w \cs:w g_@@_#1_reversed_tl \cs_end: 1 < 0 \exp_stop_f: + \exp_after:wN \@@_clean_to_scan:w + \if:w - \cs:w g_@@_#1_reversed_tl \cs_end: + \s_@@_mark \prg_return_true: + \else: + \s_@@_mark \prg_return_false: + \fi: + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}[pTF]{\@@_if_generic:n} +% \begin{macro}[pTF]{\@@_if_deprecated_generic:n} +% An internal conditional that checks if a name belongs to a generic +% hook. The deprecated version needs to check if |#3| is empty to +% avoid returning true on \hook{file/before}, for example. +% \begin{macrocode} +\prg_new_conditional:Npnn \@@_if_generic:n #1 { T, TF } + { \@@_if_generic:w #1 / / / \s_@@_mark } +\cs_new:Npn \@@_if_generic:w #1 / #2 / #3 / #4 \s_@@_mark + { + \cs_if_exist:cTF { c_@@_generic_#1/./#3_tl } + { \prg_return_true: } + { \prg_return_false: } + } +\prg_new_conditional:Npnn \@@_if_deprecated_generic:n #1 { T, TF } + { \@@_if_deprecated_generic:w #1 / / / \s_@@_mark } +\cs_new:Npn \@@_if_deprecated_generic:w #1 / #2 / #3 / #4 \s_@@_mark + { + \cs_if_exist:cTF { c_@@_deprecated_#1/./#2_tl } + { + \tl_if_empty:nTF {#3} + { \prg_return_false: } + { \prg_return_true: } + } + { \prg_return_false: } + } +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}[pTF]{\@@_if_generic_reversed:n} +% An internal conditional that checks if a name belongs to a generic +% reversed hook. +% \begin{macrocode} +\prg_new_conditional:Npnn \@@_if_generic_reversed:n #1 { T } + { \@@_if_generic_reversed:w #1 / / / \scan_stop: } +\cs_new:Npn \@@_if_generic_reversed:w #1 / #2 / #3 / #4 \scan_stop: + { + \if_charcode:w - \cs:w c_@@_generic_#1/./#3_tl \cs_end: \prg_return_true: \else: \prg_return_false: \fi: } % \end{macrocode} -% \end{macro} -% +% \end{macro} % % \subsection{Messages} % -% Hook errors are LaTeX kernel errors: +% Hook errors are LaTeX kernel errors: % \begin{macrocode} \prop_gput:Nnn \g_msg_module_type_prop { hooks } { LaTeX } % \end{macrocode} +% \changes{v1.0q}{2021/08/27}{Internal message name changes} % And so are kernel errors (this should move elsewhere eventually). % \begin{macrocode} -\prop_gput:Nnn \g_msg_module_type_prop { kernel } { LaTeX } -%\prop_gput:Nnn \g_msg_module_name_prop { kernel } { } % <-- currently not working +\prop_gput:Nnn \g_msg_module_type_prop { latex2e } { LaTeX } +\prop_gput:Nnn \g_msg_module_name_prop { latex2e } { kernel } % \end{macrocode} -% +% % \begin{macrocode} \msg_new:nnnn { hooks } { labels-incompatible } { @@ -4560,7 +5069,7 @@ { LaTeX~found~two~incompatible~labels~in~the~same~hook.~ This~indicates~an~incompatibility~between~packages. } % \end{macrocode} -% +% % \begin{macrocode} \msg_new:nnnn { hooks } { exists } { Hook~'#1'~ has~ already~ been~ declared. } @@ -4568,14 +5077,14 @@ name.\\ Please~ use~ a~ different~ name~ for~ your~ hook.} % \end{macrocode} -% +% % % \begin{macrocode} \msg_new:nnnn { hooks } { hook-disabled } { Cannot~add~code~to~disabled~hook~'#1'. } { The~hook~'#1'~you~tried~to~add~code~to~was~previously~disabled~ - with~\iow_char:N\\hook_disable:n~or~\iow_char:N\\DisableHook,~so~ + with~\iow_char:N\\hook_disable_generic:n~or~\iow_char:N\\DisableGenericHook,~so~ it~cannot~have~code~added~to~it. } % \end{macrocode} @@ -4601,7 +5110,7 @@ { Unknown~ relationship~ '#3'~ between~ labels~ '#2'~ and~ '#4'~ \str_if_eq:nnF {#1} {??} { ~in~hook~'#1' }. ~ - Perhaps~ a~ missspelling? + Perhaps~ a~ misspelling? } { The~ relation~ used~ not~ known~ to~ the~ system.~ Allowed~ values~ are~ @@ -4613,7 +5122,7 @@ 'unrelated'. } % \end{macrocode} -% +% % \begin{macrocode} \msg_new:nnnn { hooks } { misused-top-level } { @@ -4651,7 +5160,7 @@ % \end{macrocode} % % \begin{macrocode} -\msg_new:nnn { kernel } { should-not-happen } +\msg_new:nnn { latex2e } { should-not-happen } { This~should~not~happen.~#1 \\ Please~report~at~https://github.com/latex3/latex2e. @@ -4661,32 +5170,31 @@ % % % \begin{macrocode} -\msg_new:nnn { hooks } { provide-disabled } +\msg_new:nnn { hooks } { activate-disabled } { - Cannot~ provide~ hook~ '#1'~ because~ it~ is~ disabled! + Cannot~ activate~ hook~ '#1'~ because~ it~ is~ disabled! } % \end{macrocode} % % \begin{macrocode} -\msg_new:nnnn { hooks } { provide-error } +\msg_new:nnn { hooks } { cannot-remove } { - Hook~'#1'~ already~ declared~ as~ a~ - \@@_if_reversed:nTF {#1} { reversed } { normal }~ hook! + Cannot~remove~chunk~'#2'~from~hook~'#1'~because~ + \@@_if_structure_exist:nTF {#1} + { it~does~not~exist~in~that~hook. } + { the~hook~does~not~exist. } } +% \end{macrocode} +% +% \begin{macrocode} +\msg_new:nnn { hooks } { generic-deprecated } { - You~ attempted~ to~ provide~ the~ hook~'#1'~ as~ a~ - \@@_if_reversed:nTF {#1} { normal } { reversed }~ hook,~ but~ it~ - was~ already~ previously~ declared~ as~ a~ - \@@_if_reversed:nTF {#1} { reversed } { normal }~ hook.~ - A~ redeclaration~ is~ not~ possible. + Generic~hook~'#1/#2/#3'~is~deprecated. \\ + Use~hook~'#1/#3/#2'~instead. } % \end{macrocode} % % -% -% -% -% % \subsection{\LaTeXe{} package interface commands} % % @@ -4704,42 +5212,38 @@ % % \begin{macrocode} %\IncludeInRelease{2021/06/01}% -% {\hook_provide:n}{Providing~hooks} +% {\hook_activate_generic:n}{Providing~hooks} % \end{macrocode} % -% \begin{macro}{\ProvideHook,\ProvideReversedHook,\ProvideMirroredHookPair} +% \begin{macro}{\ActivateGenericHook} % Providing new hooks \ldots % \changes{v1.0m}{2021/04/29}{Add \cs{ProvideHook} etc.} +% \changes{v1.0o}{2021/08/02}{Change name} % \begin{macrocode} -\NewDocumentCommand \ProvideHook { m }{ \hook_provide:n {#1} } -\NewDocumentCommand \ProvideReversedHook { m }{ \hook_provide_reversed:n {#1} } -\NewDocumentCommand \ProvideMirroredHookPair { mm }{ \hook_provide_pair:nn {#1}{#2} } +\NewDocumentCommand \ActivateGenericHook { m }{ \hook_activate_generic:n {#1} } % \end{macrocode} % \end{macro} % -% -% \begin{macro}{\DisableHook} -% Disabling a (generic) hook. +% \begin{macro}{\DisableGenericHook} +% Disabling a generic hook. +% \changes{v1.0o}{2021/08/02}{Change name} % \begin{macrocode} -\NewDocumentCommand \DisableHook { m }{ \hook_disable:n {#1} } +\NewDocumentCommand \DisableGenericHook { m }{ \hook_disable_generic:n {#1} } % \end{macrocode} % \end{macro} % % \begin{macrocode} %\EndIncludeInRelease %\IncludeInRelease{2020/10/01} -% {\hook_provide:n}{Providing~hooks} +% {\hook_activate_generic:n}{Providing~hooks} % -%\def \ProvideHook#1{} -%\def \ProvideReversedHook#1{} -%\def \ProvideMirroredHookPair#1#2{} +%\def \ActivateGenericHook#1{} % %\EndIncludeInRelease % \end{macrocode} % % % \begin{macro}{\AddToHook} -% % \begin{macrocode} \NewDocumentCommand \AddToHook { m o +m } { \hook_gput_code:nnn {#1} {#2} {#3} } @@ -4747,16 +5251,22 @@ % \end{macro} % % \begin{macro}{\AddToHookNext} -% % \begin{macrocode} \NewDocumentCommand \AddToHookNext { m +m } { \hook_gput_next_code:nn {#1} {#2} } % \end{macrocode} % \end{macro} % +% \begin{macro}{\ClearHookNext} +% \changes{v1.0o}{2021/07/27}{Macro added} +% \begin{macrocode} +\NewDocumentCommand \ClearHookNext { m } + { \hook_gclear_next_code:n {#1} } +% \end{macrocode} +% \end{macro} +% % % \begin{macro}{\RemoveFromHook} -% % \begin{macrocode} \NewDocumentCommand \RemoveFromHook { m o } { \hook_gremove_code:nn {#1} {#2} } @@ -4766,140 +5276,11 @@ % \begin{macro}{\SetDefaultHookLabel} % \begin{macro}{\PushDefaultHookLabel} % \begin{macro}{\PopDefaultHookLabel} -% -% \fmiinline{Docu task: At some point this code for this should be moved to the -% label section earlier and here we should keep only the interface commands.} -% -% \begin{macro}{\@@_curr_name_push:n,\@@_curr_name_push_aux:n} -% \begin{macro}{\@@_curr_name_pop:} -% \begin{macro}{\@@_end_document_label_check:} -% The token list \cs{g_@@_hook_curr_name_tl} stores the name of the -% current package/file to be used as label for hooks. -% Providing a consistent interface is tricky, because packages can -% be loaded within packages, and some packages may not use -% \cs{SetDefaultHookLabel} to change the default label (in which -% case \cs{@currname} is used). -% -% To pull that one off, we keep a stack that contains the default -% label for each level of input. The bottom of the stack contains the -% default label for the |top-level| (this stack should never go -% empty). If we're building the format, set the default label to be -% |top-level|: -% \begin{macrocode} -\tl_gset:Nn \g_@@_hook_curr_name_tl { top-level } -% \end{macrocode} -% -% Then, in case we're in \pkg{latexrelease} we push something on -% the stack to support roll forward. But in some rare cases, -% \pkg{latexrelease} may be loaded inside another package (notably -% \pkg{platexrelease}), so we'll first push the |top-level| entry: -% \changes{v1.0i}{2021/03/18} -% {Only add \texttt{top-level} if not already there.} -% \begin{macrocode} -%\seq_if_empty:NT \g_@@_name_stack_seq -% { \seq_gput_right:Nn \g_@@_name_stack_seq { top-level } } -% \end{macrocode} -% then we dissect the \cs{@currnamestack}, adding \cs{@currname} to -% the stack: -% \changes{v1.0f}{2020/11/24}{Support for roll forward (gh/434)} -% \begin{macrocode} -%\cs_set_protected:Npn \@@_tmp:w #1 #2 #3 -% { -% \quark_if_recursion_tail_stop:n {#1} -% \seq_gput_right:Nn \g_@@_name_stack_seq {#1} -% \@@_tmp:w -% } -%\exp_after:wN \@@_tmp:w \@currnamestack -% \q_recursion_tail \q_recursion_tail -% \q_recursion_tail \q_recursion_stop -% \end{macrocode} -% and finally set the default label to be the \cs{@currname}: -% \changes{v1.0i}{2021/03/18} -% {Remove the (empty) \enquote{top-level} from \cs{@currnamestack}.} -% \begin{macrocode} -%\tl_gset:Nx \g_@@_hook_curr_name_tl { \@currname } -%\seq_gpop_right:NN \g_@@_name_stack_seq \l_@@_tmpa_tl -% \end{macrocode} -% -% Two commands keep track of the stack: when a file is input, -% \cs{@@_curr_name_push:n} pushes the current default label to the -% stack, and sets the new default label in one go: -% \begin{macrocode} -\cs_new_protected:Npn \@@_curr_name_push:n #1 - { \exp_args:Nx \@@_curr_name_push_aux:n { \@@_make_name:n {#1} } } -\cs_new_protected:Npn \@@_curr_name_push_aux:n #1 - { - \tl_if_blank:nTF {#1} - { \msg_error:nn { hooks } { no-default-label } } - { - \str_if_eq:nnTF {#1} { top-level } - { - \msg_error:nnnnn { hooks } { set-top-level } - { to } { PushDefaultHookLabel } {#1} - } - { - \seq_gpush:NV \g_@@_name_stack_seq \g_@@_hook_curr_name_tl - \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} - } - } - } -% \end{macrocode} -% and when an input is over, the topmost item of the stack is popped, -% since the label will not be used again, and \cs{g_@@_hook_curr_name_tl} -% is updated to the now topmost item of the stack: -% \begin{macrocode} -\cs_new_protected:Npn \@@_curr_name_pop: - { - \seq_gpop:NNTF \g_@@_name_stack_seq \l_@@_return_tl - { \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl } - { \msg_error:nn { hooks } { extra-pop-label } } - } -% \end{macrocode} -% -% At the end of the document we want to check if there was no -% \cs{@@_curr_name_push:n} without a matching \cs{@@_curr_name_pop:} -% (not a critical error, but it might indicate that something else is -% not quite right): -% \begin{macrocode} -\tl_gput_right:Nn \@kernel@after@enddocument@afterlastpage - { \@@_end_document_label_check: } -\cs_new_protected:Npn \@@_end_document_label_check: - { - \seq_gpop:NNT \g_@@_name_stack_seq \l_@@_return_tl - { - \msg_error:nnx { hooks } { missing-pop-label } - { \g_@@_hook_curr_name_tl } - \tl_gset_eq:NN \g_@@_hook_curr_name_tl \l_@@_return_tl - \@@_end_document_label_check: - } - } -% \end{macrocode} -% -% The token list \cs{g_@@_hook_curr_name_tl} is but a mirror of the top -% of the stack. -% % Now define a wrapper that replaces the top of the stack with the % argument, and updates \cs{g_@@_hook_curr_name_tl} accordingly. % \begin{macrocode} \NewDocumentCommand \SetDefaultHookLabel { m } - { - \seq_if_empty:NTF \g_@@_name_stack_seq - { - \msg_error:nnnnn { hooks } { set-top-level } - { for } { SetDefaultHookLabel } {#1} - } - { \exp_args:Nx \@@_set_default_label:n { \@@_make_name:n {#1} } } - } -\cs_new_protected:Npn \@@_set_default_label:n #1 - { - \str_if_eq:nnTF {#1} { top-level } - { - \msg_error:nnnnn { hooks } { set-top-level } - { to } { SetDefaultHookLabel } {#1} - } - { \tl_gset:Nn \g_@@_hook_curr_name_tl {#1} } - } -% \end{macrocode} + { \@@_set_default_hook_label:n {#1} } % % The label is only automatically updated with \cs{@onefilewithoptions} % (\cs{usepackage} and \cs{documentclass}), but some packages, like @@ -4907,7 +5288,7 @@ % \cs{usetikzlibrary} that are wrappers around \cs{input}, so they % inherit the default label currently in force (usually |top-level|, % but it may change if loaded in another package). To provide a -% package-like behaviour also for hooks in these files, we provide +% package-like behavior also for hooks in these files, we provide % high-level access to the default label stack. % \begin{macrocode} \NewDocumentCommand \PushDefaultHookLabel { m } @@ -4935,9 +5316,6 @@ % \end{macro} % \end{macro} % \end{macro} -% \end{macro} -% \end{macro} -% \end{macro} % % % @@ -4961,7 +5339,7 @@ % \end{macro} % % \begin{macro}{\DebugHooksOn,\DebugHooksOff} -% +% % \begin{macrocode} \cs_new_protected:Npn \DebugHooksOn { \hook_debug_on: } \cs_new_protected:Npn \DebugHooksOff { \hook_debug_off: } @@ -4971,7 +5349,7 @@ % % % \begin{macro}{\DeclareHookRule} -% +% % \begin{macrocode} \NewDocumentCommand \DeclareHookRule { m m m m } { \hook_gset_rule:nnnn {#1}{#2}{#3}{#4} } @@ -5001,7 +5379,7 @@ % \begin{macro}[EXP]{\IfHookEmptyTF} % Here we avoid the overhead of \pkg{xparse}, since \cs{IfHookEmptyTF} % is used in \cs{end} (that is, every \LaTeX{} environment). As a -% further optimisation, use \cs{let} rather than \cs{def} to avoid one +% further optimization, use \cs{let} rather than \cs{def} to avoid one % expansion step. % \begin{macrocode} \cs_new_eq:NN \IfHookEmptyTF \hook_if_empty:nTF @@ -5025,6 +5403,111 @@ % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % +% \subsection{Deprecated that needs cleanup at some point} +% +% \changes{v1.0p}{2021/08/20}{Added deprecation warnings for +% old generic hook commands (gh/638)} +% +% \begin{macro}{ +% \hook_disable:n, +% \hook_provide:n, +% \hook_provide_reversed:n, +% \hook_provide_pair:nn, +% \@@_activate_generic_reversed:n, +% \@@_activate_generic_pair:nn, +% } +% Deprecated. +% \begin{macrocode} +\cs_new_protected:Npn \hook_disable:n + { + \@@_deprecated_warn:nn + { hook_disable:n } + { hook_disable_generic:n } + \hook_disable_generic:n + } +\cs_new_protected:Npn \hook_provide:n + { + \@@_deprecated_warn:nn + { hook_provide:n } + { hook_activate_generic:n } + \hook_activate_generic:n + } +\cs_new_protected:Npn \hook_provide_reversed:n + { + \@@_deprecated_warn:nn + { hook_provide_reversed:n } + { hook_activate_generic:n } + \@@_activate_generic_reversed:n + } +\cs_new_protected:Npn \hook_provide_pair:nn + { + \@@_deprecated_warn:nn + { hook_provide_pair:nn } + { hook_activate_generic:n } + \@@_activate_generic_pair:nn + } +\cs_new_protected:Npn \@@_activate_generic_reversed:n #1 + { \@@_normalize_hook_args:Nn \@@_activate_generic:nn {#1} { - } } +\cs_new_protected:Npn \@@_activate_generic_pair:nn #1#2 + { \hook_activate_generic:n {#1} \@@_activate_generic_reversed:n {#2} } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{ +% \DisableHook, +% \ProvideHook, +% \ProvideReversedHook, +% \ProvideMirroredHookPair, +% } +% Deprecated. +% \begin{macrocode} +\cs_new_protected:Npn \DisableHook + { + \@@_deprecated_warn:nn + { DisableHook } + { DisableGenericHook } + \hook_disable_generic:n + } +\cs_new_protected:Npn \ProvideHook + { + \@@_deprecated_warn:nn + { ProvideHook } + { ActivateGenericHook } + \hook_activate_generic:n + } +\cs_new_protected:Npn \ProvideReversedHook + { + \@@_deprecated_warn:nn + { ProvideReversedHook } + { ActivateGenericHook } + \@@_activate_generic_reversed:n + } +\cs_new_protected:Npn \ProvideMirroredHookPair + { + \@@_deprecated_warn:nn + { ProvideMirroredHookPair } + { ActivateGenericHook } + \@@_activate_generic_pair:nn + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_deprecated_warn:nn} +% Warns about a deprecation, telling what should be used instead. +% \begin{macrocode} +\cs_new_protected:Npn \@@_deprecated_warn:nn #1 #2 + { \msg_warning:nnnn { hooks } { deprecated } {#1} {#2} } +\msg_new:nnn { hooks } { deprecated } + { + Command~\iow_char:N\\#1~is~deprecated~and~will~be~removed~in~a~ + future~release. \\ \\ + Use~\iow_char:N\\#2~instead. + } +% \end{macrocode} +% \end{macro} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % % \subsection{Internal commands needed elsewhere} % @@ -5068,7 +5551,7 @@ %\def \NewReversedHook#1{} %\def \NewMirroredHookPair#1#2{} % -%\def \DisableHook #1{} +%\def \DisableGenericHook #1{} % %\long\def\AddToHookNext#1#2{} % @@ -5105,6 +5588,6 @@ % \Finale % % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex-dev/base/ltluatex.dtx b/macros/latex-dev/base/ltluatex.dtx index 3b9a337731..2508f5a7cc 100644 --- a/macros/latex-dev/base/ltluatex.dtx +++ b/macros/latex-dev/base/ltluatex.dtx @@ -28,7 +28,7 @@ \ProvidesFile{ltluatex.dtx} % %<*tex> -[2021/04/18 v1.1t +[2021/08/11 v1.1u % % LuaTeX support for plain TeX (core) %<*tex> @@ -912,12 +912,14 @@ local luatexbase = luatexbase % \end{macro} % % Some Lua best practice: use local versions of functions where possible. +% \changes{v1.1u}{2021/08/11}{Define missing local function} % \begin{macrocode} local string_gsub = string.gsub local tex_count = tex.count local tex_setattribute = tex.setattribute local tex_setcount = tex.setcount local texio_write_nl = texio.write_nl +local flush_list = node.flush_list % \end{macrocode} % \changes{v1.0i}{2015/11/29}{Declare this as local before used in the module error definitions (PHG)} % \begin{macrocode} diff --git a/macros/latex-dev/base/ltluatex.pdf b/macros/latex-dev/base/ltluatex.pdf index d67b1c48f9..6eeefd94d4 100644 Binary files a/macros/latex-dev/base/ltluatex.pdf and b/macros/latex-dev/base/ltluatex.pdf differ diff --git a/macros/latex-dev/base/ltnews.pdf b/macros/latex-dev/base/ltnews.pdf index 7fbbd4e7bf..2869b242c9 100644 Binary files a/macros/latex-dev/base/ltnews.pdf and b/macros/latex-dev/base/ltnews.pdf differ diff --git a/macros/latex-dev/base/ltnews01.pdf b/macros/latex-dev/base/ltnews01.pdf index 702de3cb4a..cfcc5d6c60 100644 Binary files a/macros/latex-dev/base/ltnews01.pdf and b/macros/latex-dev/base/ltnews01.pdf differ diff --git a/macros/latex-dev/base/ltnews02.pdf b/macros/latex-dev/base/ltnews02.pdf index 2996986cf0..4d389f4e2c 100644 Binary files a/macros/latex-dev/base/ltnews02.pdf and b/macros/latex-dev/base/ltnews02.pdf differ diff --git a/macros/latex-dev/base/ltnews03.pdf b/macros/latex-dev/base/ltnews03.pdf index 00e326d04e..4ad827fbe1 100644 Binary files a/macros/latex-dev/base/ltnews03.pdf and b/macros/latex-dev/base/ltnews03.pdf differ diff --git a/macros/latex-dev/base/ltnews04.pdf b/macros/latex-dev/base/ltnews04.pdf index 4c7e8605ee..3e3948c941 100644 Binary files a/macros/latex-dev/base/ltnews04.pdf and b/macros/latex-dev/base/ltnews04.pdf differ diff --git a/macros/latex-dev/base/ltnews05.pdf b/macros/latex-dev/base/ltnews05.pdf index 0c5fe190a5..6619a66579 100644 Binary files a/macros/latex-dev/base/ltnews05.pdf and b/macros/latex-dev/base/ltnews05.pdf differ diff --git a/macros/latex-dev/base/ltnews06.pdf b/macros/latex-dev/base/ltnews06.pdf index 43bf07971f..85e4996709 100644 Binary files a/macros/latex-dev/base/ltnews06.pdf and b/macros/latex-dev/base/ltnews06.pdf differ diff --git a/macros/latex-dev/base/ltnews07.pdf b/macros/latex-dev/base/ltnews07.pdf index 14a96266db..79b731a27b 100644 Binary files a/macros/latex-dev/base/ltnews07.pdf and b/macros/latex-dev/base/ltnews07.pdf differ diff --git a/macros/latex-dev/base/ltnews08.pdf b/macros/latex-dev/base/ltnews08.pdf index 50a61a1f6e..2ae4ed4d23 100644 Binary files a/macros/latex-dev/base/ltnews08.pdf and b/macros/latex-dev/base/ltnews08.pdf differ diff --git a/macros/latex-dev/base/ltnews09.pdf b/macros/latex-dev/base/ltnews09.pdf index 334fd2fc9a..0bce55eaa5 100644 Binary files a/macros/latex-dev/base/ltnews09.pdf and b/macros/latex-dev/base/ltnews09.pdf differ diff --git a/macros/latex-dev/base/ltnews10.pdf b/macros/latex-dev/base/ltnews10.pdf index 1702b9dd60..437faed1d7 100644 Binary files a/macros/latex-dev/base/ltnews10.pdf and b/macros/latex-dev/base/ltnews10.pdf differ diff --git a/macros/latex-dev/base/ltnews11.pdf b/macros/latex-dev/base/ltnews11.pdf index 4c5a9ef0e8..45c6fd4d57 100644 Binary files a/macros/latex-dev/base/ltnews11.pdf and b/macros/latex-dev/base/ltnews11.pdf differ diff --git a/macros/latex-dev/base/ltnews12.pdf b/macros/latex-dev/base/ltnews12.pdf index 68c5fd29c2..69b3920e0a 100644 Binary files a/macros/latex-dev/base/ltnews12.pdf and b/macros/latex-dev/base/ltnews12.pdf differ diff --git a/macros/latex-dev/base/ltnews13.pdf b/macros/latex-dev/base/ltnews13.pdf index 315c89b06d..304fe2ab43 100644 Binary files a/macros/latex-dev/base/ltnews13.pdf and b/macros/latex-dev/base/ltnews13.pdf differ diff --git a/macros/latex-dev/base/ltnews14.pdf b/macros/latex-dev/base/ltnews14.pdf index cb07e551cf..e6b444ca02 100644 Binary files a/macros/latex-dev/base/ltnews14.pdf and b/macros/latex-dev/base/ltnews14.pdf differ diff --git a/macros/latex-dev/base/ltnews15.pdf b/macros/latex-dev/base/ltnews15.pdf index 798c8b1222..e8b197ddc1 100644 Binary files a/macros/latex-dev/base/ltnews15.pdf and b/macros/latex-dev/base/ltnews15.pdf differ diff --git a/macros/latex-dev/base/ltnews16.pdf b/macros/latex-dev/base/ltnews16.pdf index 8acc6372f1..6ef0fdbd51 100644 Binary files a/macros/latex-dev/base/ltnews16.pdf and b/macros/latex-dev/base/ltnews16.pdf differ diff --git a/macros/latex-dev/base/ltnews17.pdf b/macros/latex-dev/base/ltnews17.pdf index 7b0b085727..1475bf5fb5 100644 Binary files a/macros/latex-dev/base/ltnews17.pdf and b/macros/latex-dev/base/ltnews17.pdf differ diff --git a/macros/latex-dev/base/ltnews18.pdf b/macros/latex-dev/base/ltnews18.pdf index ddecd73fc1..368f808908 100644 Binary files a/macros/latex-dev/base/ltnews18.pdf and b/macros/latex-dev/base/ltnews18.pdf differ diff --git a/macros/latex-dev/base/ltnews19.pdf b/macros/latex-dev/base/ltnews19.pdf index f0f6e8dfb0..aa2c6801a4 100644 Binary files a/macros/latex-dev/base/ltnews19.pdf and b/macros/latex-dev/base/ltnews19.pdf differ diff --git a/macros/latex-dev/base/ltnews20.pdf b/macros/latex-dev/base/ltnews20.pdf index 5b0f456379..d0dcaaad1b 100644 Binary files a/macros/latex-dev/base/ltnews20.pdf and b/macros/latex-dev/base/ltnews20.pdf differ diff --git a/macros/latex-dev/base/ltnews21.pdf b/macros/latex-dev/base/ltnews21.pdf index 3d67ec6827..258f2ad4d6 100644 Binary files a/macros/latex-dev/base/ltnews21.pdf and b/macros/latex-dev/base/ltnews21.pdf differ diff --git a/macros/latex-dev/base/ltnews22.pdf b/macros/latex-dev/base/ltnews22.pdf index ae3c410845..878636b1f7 100644 Binary files a/macros/latex-dev/base/ltnews22.pdf and b/macros/latex-dev/base/ltnews22.pdf differ diff --git a/macros/latex-dev/base/ltnews23.pdf b/macros/latex-dev/base/ltnews23.pdf index 6c88bbe343..7978622df5 100644 Binary files a/macros/latex-dev/base/ltnews23.pdf and b/macros/latex-dev/base/ltnews23.pdf differ diff --git a/macros/latex-dev/base/ltnews24.pdf b/macros/latex-dev/base/ltnews24.pdf index 2fe187077e..1752ed71a7 100644 Binary files a/macros/latex-dev/base/ltnews24.pdf and b/macros/latex-dev/base/ltnews24.pdf differ diff --git a/macros/latex-dev/base/ltnews25.pdf b/macros/latex-dev/base/ltnews25.pdf index d5ac053d58..6314a5dce5 100644 Binary files a/macros/latex-dev/base/ltnews25.pdf and b/macros/latex-dev/base/ltnews25.pdf differ diff --git a/macros/latex-dev/base/ltnews26.pdf b/macros/latex-dev/base/ltnews26.pdf index c370c8bfff..1e9afbaf6d 100644 Binary files a/macros/latex-dev/base/ltnews26.pdf and b/macros/latex-dev/base/ltnews26.pdf differ diff --git a/macros/latex-dev/base/ltnews27.pdf b/macros/latex-dev/base/ltnews27.pdf index e99eb47223..cc752c82a0 100644 Binary files a/macros/latex-dev/base/ltnews27.pdf and b/macros/latex-dev/base/ltnews27.pdf differ diff --git a/macros/latex-dev/base/ltnews28.pdf b/macros/latex-dev/base/ltnews28.pdf index 57d6163994..ac35b00b69 100644 Binary files a/macros/latex-dev/base/ltnews28.pdf and b/macros/latex-dev/base/ltnews28.pdf differ diff --git a/macros/latex-dev/base/ltnews29.pdf b/macros/latex-dev/base/ltnews29.pdf index 6887325d79..fc3b51d12b 100644 Binary files a/macros/latex-dev/base/ltnews29.pdf and b/macros/latex-dev/base/ltnews29.pdf differ diff --git a/macros/latex-dev/base/ltnews30.pdf b/macros/latex-dev/base/ltnews30.pdf index 47a6003be5..a02ff71f46 100644 Binary files a/macros/latex-dev/base/ltnews30.pdf and b/macros/latex-dev/base/ltnews30.pdf differ diff --git a/macros/latex-dev/base/ltnews31.pdf b/macros/latex-dev/base/ltnews31.pdf index c169d35899..42ba4d841e 100644 Binary files a/macros/latex-dev/base/ltnews31.pdf and b/macros/latex-dev/base/ltnews31.pdf differ diff --git a/macros/latex-dev/base/ltnews32.pdf b/macros/latex-dev/base/ltnews32.pdf index 2ad8dc792b..9061a66608 100644 Binary files a/macros/latex-dev/base/ltnews32.pdf and b/macros/latex-dev/base/ltnews32.pdf differ diff --git a/macros/latex-dev/base/ltnews33.pdf b/macros/latex-dev/base/ltnews33.pdf index fe95ad1a99..a4344abff5 100644 Binary files a/macros/latex-dev/base/ltnews33.pdf and b/macros/latex-dev/base/ltnews33.pdf differ diff --git a/macros/latex-dev/base/ltnews34.pdf b/macros/latex-dev/base/ltnews34.pdf index 174751f9d9..cf2cdcf139 100644 Binary files a/macros/latex-dev/base/ltnews34.pdf and b/macros/latex-dev/base/ltnews34.pdf differ diff --git a/macros/latex-dev/base/ltnews34.tex b/macros/latex-dev/base/ltnews34.tex index 94d2d595df..7497b71879 100644 --- a/macros/latex-dev/base/ltnews34.tex +++ b/macros/latex-dev/base/ltnews34.tex @@ -106,14 +106,18 @@ \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{2021 --- Draft Version} +\publicationyear{2021 --- Draft Version (with many unfinished blocks)} \publicationissue{34} @@ -138,13 +142,313 @@ \emph{write} -\section{???} -\emph{write} + + +\section{Hook business} + +After the introduction of the hook management system in the 2020 +release of \LaTeX{}~\cite{34:ltnews32} package developers have started +to make more and more use of the new functionality. This resulted in a +number of queries showing that some of the documentation was not +precise enough and that one or the other clarification was +needed. This has now been addressed in the documentation. The extended +usage also showed a small number of deficiencies that we thought +should be corrected now while the adoption rate is still relatively +small. These are addressed in this release and documented below. + + +\subsection{Providing \cs{ActivateGenericHook}} + +The hook management system offers a number of generic hooks, i.e., +hooks whose names contain a variable component, for example the name +of an environment. Predeclaring such hooks as not really feasible +which is why these hooks use a different mechanism: they are +implicitly available end spring into life the moment a package or the +user in the preamble adds code to them using \cs{AddToHook}. The +kernel offers such hooks for environments \texttt{env/...}, commands +\texttt{cmd/...}, and files, package or classes, \texttt{file/...}, +\texttt{include/...}, \texttt{package/...}, and \texttt{class/...}. + +It is possible to offer generic hooks in packages, e.g., if you have +hooks that depend on the current language and therefore need the +language name as part of the hook name and you don't know all possible +names beforehand. + +If you want to offer your generic hooks you do this by using +\cs{UseHook} or \cs{UseOneTimeHook} in your (package) code, but +\emph{without declaring the hook} with \cs{NewHook}. Without any +further work a call to \cs{UseHook} with an undeclared hook name does +nothing. So as an additional setup step, it is necessary to explicitly +activate the generic hook with \cs{ActivateGenericHook}.\footnote{Note + that in the previous release we offered \cs{ProvideHook} as a means + to achieve this effect, but the name was badly chosen so we decided + to deprecate it and now offer \cs{ActivateGenericHook} instead + because that is what it is meant for.} + +Assuming +that you don't know all the different hook names up front it will +remain the task of the users of your package to activate the hook +themselves before adding code to it. For example, Babel offers hooks +such as \texttt{babel/afterextras/\meta{language}} enabling the user +to add language specific declarations there. They can then write +\begin{verbatim} +\ActivateGenericHook + {babel/afterextras/ngerman} +\AddToHook{babel/afterextras/ngerman} + {\color{blue}} +\end{verbatim} +after which all German words would be colored blue in the text. + +Note that a generic hook produced in this way is always a normal hook. + + + + +\subsection{Clear extra hook code for next invocation} + +There are a few use cases where it would be helpful if one can cancel +an earlier use of \cs{AddToHookNext}, for example, when a page is +discarded with \cs{DiscardShipoutBox} because only some pages of the +document are printed. For such situations the new command +\cs{ClearHookNext} is provided. +% +\githubissue{565} + + + +\subsection{Clean up after \cs{UseOneTimeHook}} + +Some hooks are meant to be used only once in a document, and any +further attempt to add code to them causes the code to be executed +immediately instead of being added to the hook. The initial implementation of +this concept was very simple and didn't anticipate that packages may try to +execute a one-time hook several times resulting in the hook code +being executed repeatedly. Thus, the implementation was fine for +simple usages (e.g., the \hook{begindocument} hook), but caused +trouble if the one-time hook was intended, for example, as an +initialization hook that is used once when a command is first +called, but then ignored in further calls. + +This deficiency has been addressed, and now a one-time hook will only be executed once +and the hook code is removed after usage to free up the memory. +% +\githubissue{565} + + + +\subsection{Class, package, and include hook improvements} + +Classes, packages and include files can only be loaded once in a +\LaTeX{} document. For that reasons hooks that are specific to such +files have been made one-time hooks. Beside being more efficient this +supports the following important use case +\begin{verbatim} +\AddToHook{package/varioref/after} + { ... apply my customizations if the package + gets loaded (or was loaded already) ... } +\end{verbatim} +without the need to first test if the package was already loaded +before. +% +\githubissue{623} + + +\subsection{Standardizing generic hook names} + +The initial set of generic hooks provided by the \LaTeXe{} kernel had +two patterns of hook names: ones like +\verb|env/|\meta{name}\verb|/after|, with the variable (\meta{name}) +part in the middle position, and ones like +\verb|file/after/|\meta{name}, with the variable part in the third +position. The coexistence of these two types caused confusion, because +the user had to remember in which position was the variable part +supposed to go, and made the code more complicated and slower. + +The file-related hooks have been renamed so that the variable part of +their is in the middle, as with other hooks. The changes were: +\begin{center} + \small\ttfamily + \begin{tabular}{l@{\;$\rightarrow$\;}l} + \hline + \multicolumn{1}{l}{Old name} & \rmfamily New name \\ + \hline + file/before/\meta{name} & file/\meta{name}/before \\ + file/after/\meta{name} & file/\meta{name}/after \\ + package/before/\meta{name} & package/\meta{name}/before \\ + package/after/\meta{name} & package/\meta{name}/after \\ + class/before/\meta{name} & class/\meta{name}/before \\ + class/after/\meta{name} & class/\meta{name}/after \\ + include/before/\meta{name} & include/\meta{name}/before \\ + include/end/\meta{name} & include/\meta{name}/end \\ + include/after/\meta{name} & include/\meta{name}/after \\ + \hline + \end{tabular} +\end{center} + +Since this is a breaking change, the old names will still work for a +while, so that users and package authors have enough time to adjust, and +a warning will be issued when the old names are used. Eventually the +deprecated names will be turned into errors and then removed completely. +% +\githubissue{648} + + + +\subsection{Changed how \cs{RemoveFromHook} treats code that isn't in the hook} + +In the first version of \cs{RemoveFromHook}, in case the code label +being removed didn't exist in the hook, a ``removal order'' would be +queued, and the next time something tried to add that label to the hook, +the \cs{AddToHook} would be cancelled by the removal order, and no code +would be added that once. This was so that in principle package loading +order wouldn't matter. However this implementation didn't work quite as +intended, because while two \cs{AddToHook} to a given label would be +removed by a single \cs{RemoveFromHook}, one \cs{RemoveFromHook} could +not cancel two \cs{AddToHook} to that label, and this asymmetry caused +confusion and was a recipe for further problems. + +The implementation was changed and now \cs{RemoveFromHook} only removes +labels that already exist in a hook, and will display a warning if they +don't. For usage across packages, for removing code in a hook, the +\texttt{voids} relation should be used instead: this relation is +non-destructive (meaning it can be later reverted with another one), and +it is truly independent of package loading order, so it should be +preferred. +% +\githubissue{625} + + + + +\subsection{???} + +% +\githubissue{000} + + \section{New or improved commands} + +\subsection{Added \cs{PackageNote} and \cs{ClassNote}} + +\LaTeX{} offers \cs{PackageError} to signal errors that stop +processing, \cs{PackageWarning} that generates a warning message on the +terminal, but continues with the processing and also \cs{PackageInfo} +to provide some information that is only written to the \texttt{.log} +file. What hasn't existed up to now is a way to provide some +information on the terminal that is identifying itself as coming from +a specific package but which isn't claiming to be a warning. Thus, +packages that wanted to write to the terminal used \cs{PackageWarning} +even though the information wasn't really warning the user. For this +we now have \cs{PackageNote} and \cs{PackageNoteNoLine}, that identify +themselves as \enquote{informational}, but still go to the terminal and +not only to the transcript. + +Similar commands exist for classes and there we have added the missing +\cs{ClassNote} and \cs{ClassNoteNoLine} as well. +% +\githubissue{613} + + +\subsection{New implementation for \cs{counterwithin}} + +New implementation for \cs{counterwithout} and \cs{counterwithin} with +an additional optional arg so it becomes a drop-in replacement for +amsmath \cs{numberwithin}. + +\emph{write appropriate description} + + + +\subsection{New default for \cs{tracinglostchars}} + +In 2021 the \TeX{} engines got enhanced so that \cs{tracinglostchars} +is now also supporting the value \texttt{3}, turning missing +characters into errors and not just warnings. This change made us +realize that \LaTeX{} should use a better default for this parameter +(so far the warning was only written to the transcript file). +Using the now available \texttt{3} would really be the best, but for +compatibility reasons we only set it to \texttt{2} in the kernel. +However, we recommend adding \cs{tracinglostchars}\texttt{=3} to the +preamble of documents, because missing glyphs in the output are an +error and should therefore be properly looked at. + + + + + + +\subsection{Provide tests for package and class loading} + +To test if a package was loaded you can now use \cs{IfPackageLoadedTF} +\Arg{package} \Arg{true} \Arg{false} and based on the result execute +different code. It is also possible to check if the package was loaded +with certain options. This is done with +\cs{IfPackageLoadedWithOptionsTF}. It takes four arguments: +\Arg{package}\Arg{option-list}\Arg{true}\Arg{false}. It uses the +\meta{false} code if at least one option in the \meta{option-list} has +not been used during loading or if the package hasn't been loaded at +all. +% +Both commands can be used anywhere in the document, i.e., they are not +restricted to the preamble.\footnote{This is now also true for the + corresponding internal commands, e.g., \cs{@ifpackageloaded}, that + had this restriction in the past.} + +For classes similar commands (\texttt{Package} replaced by +\texttt{Class} in the name) are provided. +% +\githubissue{621} + + + + + + + + + +\subsection{New \cs{ShowFloat} command} + +The package \pkg{fltrace} offers a (fairly low-level but very +detailed) way to trace \LaTeX's float mechanism. This can help to +understand why a certain float is placed into a certain region or why +it shows up unexpectedly on a later page. \LaTeX{} stores floats in +registers named \cs{bx@A}, \cs{bx@B}, etc., and these names show up in +the tracing information. +% +To display their contents you can now say +\verb=\ShowFloat{=\textit{identifier}\verb=}= where +\textit{identifier} is the uppercase letter (or letters) after +\texttt{bx@} in the register name shown in the tracing. If additional +registers have been allocated with \cs{extrafloats}, the +\textit{identifier} can also be a number. The command is generally +available, whether or not you have loaded \pkg{fltrace}, because it is +also useful when interpreting the tracing output of the +\pkg{fewerfloatpages} package. + + +\subsection{Add \pkg{ltcmd} support for \cs{NewCommandCopy} and \cs{ShowCommand}} + +Since the 2020-10-01 release (see~\cite{34:ltnews32}), \LaTeX{} provides +\cs{NewCommandCopy} to copy robust commands, and \cs{ShowCommand} to +show their definition in the terminal. In the same release, the +\pkg{xparse} package was integrated in the kernel (now called +\pkg{ltcmd}). However, the extended support for \cs{NewCommandCopy} and +\cs{ShowCommand} was not implemented in \pkg{ltcmd}. The present +\LaTeX{} release ships with that support implemented, so now commands +defined with \pkg{xparse}/\pkg{ltcmd} can be copied and their definition +can be easily shown in the terminal without \cs{csname} gymnastics. +% +\githubissue{569} + + + + + \subsection{???} % @@ -155,6 +459,68 @@ \section{Code improvements} +\subsection{Detect ``\cs{endfoo}'' when using \cs{NewDocumentEnvironment}} + +The \cs{newenvironment} command has always checked that both \cs{foo} and +\cs{endfoo} do not exist before creating a \texttt{foo} environment. In +contrast, \cs{NewDocumentEnvironment} has only to date checked for \cs{foo}; +this reflects the fact that historically the code was designed around the +target of an entirely new format. The behavior of \cs{NewDocumentEnvironment} +now aligns with \cs{newenvironment}, except that it gives separate errors +for the existence of \cs{foo} and \cs{endfoo}. + +\subsection{Improve ``\cs{begin} ended by'' error message} + +In the past it was possible to get an error message stating something +like \verb=\begin{foo} ended by \end{foo}=. This could happen when the +environment name was partly hidden inside a macro, because the test was +comparing the literal strings while the error message expanded the +strings fully. This has now been changed to show a more sensible error +message in this instance. +% +\githubissue{587} + + + +\subsection{Additional Extended Latin characters predefined} +Some additional characters such as \'k (U+1E131) are now pre-defined and +will work without needing \verb|\DeclareUnicodeCharacter| declarations. +% +\githubissue{593} + + +\subsection{Use OpenType version of Latin Modern Upright Italic} +When Latin Modern is used with the TU encoding under \XeTeX\ or \LuaTeX\ +and fontshape \texttt{ui} is requested, \LaTeX\ now uses the OpenType +version instead of substituting the (T1 encoded) Type 1 version. + + +\subsection{Pick up all arguments to \cs{contentsline}} + +The \cs{contentsline} commands in the TOC file are always followed by +four arguments, the last one being empty by default and only used by +\pkg{hyperref}. The \cs{contentsline} command itself only used the +first three arguments and relied on the fourth being empty (and thus +doing no harm). But this assumption is not always correct, e.g., if +you use \pkg{hyperref} and then remove it from the preamble. + +So now we pick up all four arguments and save the last one away, so +that it can be used by \pkg{hyperref}. +% +\githubissue{633} + + +\subsection{Fix dropping math lists in \LuaTeX\ callbacks} + +The \LuaTeX\ callbacks \texttt{pre\_mlist\_to\_hlist\_filter} +and \texttt{post\_mlist\_to\_hlist\_filter} no longer create an error if +the callback handler indicates to remove the entire math block. +% +\githubissue{644} + + + + \subsection{???} % @@ -163,7 +529,82 @@ -\section{Changes to packages in the \pkg{graphics} category} +\section{Bug fixes} + +\subsection{Replicate argument processors for all embellishments} + +There was a bug in \pkg{ltcmd} (former \pkg{xparse}) that caused +commands to misbehave if they were defined with embellishments and +argument processors. In that case, only one (possibly void) argument +processor would be added to the full set of embellishment arguments, +resulting in too few processors in some cases, leading to unpredictable +behavior. This bug has been fixed by applying the same argument +processors to all the embellishments in a set, so a declaration like: +\begin{verbatim} +\NewDocumentCommand\foo{>{\TrimSpaces}e{_^}} + {(#1)[#2]} +\foo^{ a }_{ b } +\end{verbatim} +will now correctly apply \cs{TrimSpaces} to both arguments. +% +\githubissue{639} + + + +\subsection{Correct case changes for \cs{ij} and \cs{IJ}} + + +The ligatures \enquote{\ij} and \enquote{\IJ}, as used in Dutch, +are only available in most \TeX{} fonts, if the commands \cs{ij} or +\cs{IJ} are used or when you enter them as UTF-8 characters U+0133 or +U+0132. +% +However, when using \texttt{OT1} or \texttt{T1} encoded fonts in +\pdfTeX, the upper or lower casing with \cs{MakeUppercase} and +\cs{MakeLowercase} would always fail regardless of the input method. +This has now been corrected. At the same time we improved the +hyphenation results for words containing this ligature (when +typesetting is done in \texttt{OT1} encoding). +% +\githubissue{658} + + + +\subsection{Improve handling of legacy \cs{bfdefault} changes} + +In the past, changes to the font series defaults were made by directly +altering \cs{bfdefault} or \cs{mddefault}. Since 2020 there is now +\cs{DeclareFontSeriesDefault} that allows more granular control, +i.e., with that declaration you can alter the default for individual meta +font families, for example, by only altering the bold settings for the +sans serif family without changing it for \cs{rmfamily} or \cs{ttfamily}. +See~\cite{34:ltnews31} for more details. + +For backwards compatibility, changing \cs{bfdefault} with +\cs{renewcommand} remained possible. If used, it alters the setting +for all meta families in one go. This cannot be done when the +\cs{renewcommand} happens and was therefore delayed until the next +time \cs{bfseries} or \cs{mdseries} was executed. + +However, the problem with that +approach was that any call to \cs{DeclareFontSeriesDefault} that +happened in the mean time was overwritten---the two approaches didn't +work well side by side. This is a problem because older font packages +use the legacy method while newer ones use +\cs{DeclareFontSeriesDefault}. This has now been corrected by changing +\cs{DeclareFontSeriesDefault} to do any necessary resetting prior to +setting new defaults. +% +\githubissue{663} + + +\subsection{Use of \# in \cs{textbf} and similar commands} +Previously you could not use the macro parameter character \# in inline functions +in the argument of \cs{texbf} and similar text font commands. +An internal definition is now guarded with \cs{unexpanded} +so that \# does not generate an error. +% +\githubissue{665} \subsection{???} @@ -173,8 +614,56 @@ + + + +\section{Changes to packages in the \pkg{graphics} category} + + +\subsection{Key for alt text} +A new key \texttt{alt} has been added to \verb|\includegraphics| allowing specification +of an alternative text for accessibility. +This is unused by default but may be used by extension packages and possible future use. +% +\githubissue{651} + + + \section{Changes to packages in the \pkg{tools} category} +\subsection{\pkg{varioref}: Improve missing label handling} + +If an undefined label is referenced, \pkg{varioref} makes a default +definition so that later processing finds the right structure (two +brace groups inside \cs{r@}\meta{label}) However, if \pkg{nameref} or +\pkg{hyperref} is loaded, the data structure changes to five +arguments, resulting in low-evel errors in some cases. The code has +been changed to avoid these errors. +% +\sxissue{603948} + + +\subsection{\pkg{array}: Cancel \cs{mathsurround} for \env{tabular}} + +A \env{tabular} environment is internally typeset as an \env{array} +environment with special settings and therefore in math mode. This +math group should not get any \cs{mathsuround} added as it isn't a +real formula because otherwise the spacing around the \env{tabular} +changes. This bug has been there forever (which means not many people +use \cs{mathsurround} or noticed the difference). Anyhow, this now got +fixed. +% +\githubissue{614} + +\subsection{\pkg{longtable}: Improve behavior after a section heading} +The \env{longtable} environment now sets the \cs{@nobreakfalse} flag so that +spacing and indentation changes after a section heading are not triggered by +a paragraph which follows a table which starts a section. Similarly a test for +\cs{if@noskipsec} added so that a table follows a run-in heading +rather than appearing before it. +% +\githubissue[s]{131 and 173} + \subsection{???} % @@ -182,6 +671,15 @@ \section{Changes to packages in the \pkg{amsmath} category} +\subsection{Improve compability with hyperref} + +When \pkg{hyperref} is used, incrementing a counter creates anchors and this can affect spacing. +For a long time \pkg{hyperref} patched the \env{equation} environment to +avoid some of the side effects. This patch has now been moved directly into \pkg{amsmath}. +Additionally, +a \cs{mathopen} has been added to avoid that the anchor affects a following unary symbol. +% +\githubissue{652} \subsection{???} @@ -205,6 +703,10 @@ \emph{\LaTeX{} documentation on the \LaTeX{} Project Website}.\\ \url{https://latex-project.org/help/documentation/} +\bibitem{34:ltnews31} \LaTeX{} Project Team: + \emph{\LaTeXe{} news 31}.\\ + \url{https://latex-project.org/news/latex2e-news/ltnews31.pdf} + \bibitem{34:ltnews32} \LaTeX{} Project Team: \emph{\LaTeXe{} news 32}.\\ \url{https://latex-project.org/news/latex2e-news/ltnews32.pdf} diff --git a/macros/latex-dev/base/ltoutenc.dtx b/macros/latex-dev/base/ltoutenc.dtx index eb2ecd1e53..14518d2fb2 100644 --- a/macros/latex-dev/base/ltoutenc.dtx +++ b/macros/latex-dev/base/ltoutenc.dtx @@ -44,7 +44,7 @@ %<*driver> % \fi \ProvidesFile{ltoutenc.dtx} - [2021/04/29 v2.0v LaTeX Kernel (font encodings)] + [2021/09/12 v2.0w LaTeX Kernel (font encodings)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutenc.dtx} @@ -1783,12 +1783,14 @@ % {Added \cs{ij} and \cs{IJ} from babel. (pr/3771)} % The dutch language uses the letter `ij'. It is available in % \texttt{T1} encoded fonts, but not in the \texttt{OT1} encoded -% fonts. Therefor we fake it for the \texttt{OT1} encoding. +% fonts. Therefore we fake it for the \texttt{OT1} encoding. +% \changes{v2.0w}{2021/09/12}{Move zero skip between +% i and j for hyphenation (gh/658)} % \begin{macrocode} \DeclareTextCommand{\ij}{OT1}{% - \nobreak\hskip\z@skip i\kern-0.02em j\nobreak\hskip\z@skip} + \nobreak\hskip\z@skip i\kern-0.02em\nobreak\hskip\z@skip j} \DeclareTextCommand{\IJ}{OT1}{% - \nobreak\hskip\z@skip I\kern-0.02em J\nobreak\hskip\z@skip} + \nobreak\hskip\z@skip I\kern-0.02em\nobreak\hskip\z@skip J} % \end{macrocode} % In the OT1 encoding, \pounds~and \$ share a slot. % \changes{v1.9y}{2000/01/30}{Use \cs{hmode@bgroup} where applicable diff --git a/macros/latex-dev/base/ltoutput.dtx b/macros/latex-dev/base/ltoutput.dtx index b1b3a24096..78b0f2335f 100644 --- a/macros/latex-dev/base/ltoutput.dtx +++ b/macros/latex-dev/base/ltoutput.dtx @@ -30,14 +30,14 @@ %%% From File: ltoutput.dtx %\ProvidesPackage{flafter} %\ProvidesPackage{fltrace} -% [2018/11/28 v1.4d +% [2021/07/31 v1.4e % Standard LaTeX floats after reference (FMi)] % Tracing LaTeX floats algorithm (FMi)] % %<*driver> % \fi \ProvidesFile{ltoutput.dtx} - [2021/05/05 v1.4g LaTeX Kernel (Output Routine)] + [2021/09/03 v1.4h LaTeX Kernel (Output Routine)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltoutput.dtx} @@ -3945,10 +3945,69 @@ \fi \fi } +% \end{macrocode} +% \end{macro} +% +% +% +% +% +% \begin{macro}{\ShowFloat} +% This command provides some information about the contenta of a +% float register. Float registers have internal names of the form +% \cs{bx@}\meta{Uppercase-letter(s)-or numbers} and you specify just this +% letter or letters as the argument, e.g., \verb=\ShowFloat{A}=. +% (There is not much error recovery if you specify something that +% isn't a float.) +% \changes{v1.4g}{2021/07/31}{Macro added} +% \changes{v1.4h}{2021/09/03}{Renamed, original name never distributed} +% \begin{macrocode} % +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/11/15}% +% {\ShowFloat}{Show float register contents}% +\def\ShowFloat#1{\begingroup + \let \fl@trace \fl@tracemessage + \fl@trace{***Float #1 details:}% + \ifcsname bx@#1\endcsname + \expandafter\fl@ShowFloat\csname bx@#1\endcsname + \else + \fl@trace{Not a float!}% + \fi + \endgroup +} +\def\fl@ShowFloat#1{% + \fl@traceval{\count#1}% % this here should be interpreted on day + \fl@traceval{\ht#1}% + \fl@traceval{\dp#1}% + \fl@traceval{\wd#1}% + {\tracingonline1\showboxbreadth10\showboxdepth3\showbox#1}% +} +% \end{macrocode} +% Here are two definitions from \texttt{fltrace} that make the above +% code work: +% \begin{macrocode} +\def \fl@traceval #1{\fl@trace{\string #1 = \the #1}} +\def \fl@tracemessage #1{{\let\@elt\@empty\typeout{LaTeX2e: #1}}} +% +%\EndIncludeInRelease +% \end{macrocode} +% +% \begin{macrocode} +%\IncludeInRelease{0000/00/00}% +% {\ShowFloat}{Show float register contents}% +% +%\let\ShowFloat\@undefined +%\let\fl@ShowFloat\@undefined +%\let\fl@traceval\@undefined +%\let\fl@tracemessage\@undefined +%\EndIncludeInRelease % \end{macrocode} % \end{macro} % +% +% +% % \subsubsection{Float control} % % This part implements controllable floats and other changes @@ -4025,6 +4084,16 @@ % wrong value.\footnote{This is a somewhat questionable design.} % \begin{macrocode} \begingroup +% \end{macrocode} +% When the user requests \cs{tracefloatvals} then they should show +% regardless of the tracing state, so locally we make sure that it +% is activated. +% \changes{v1.4e}{2021/07/31}{Enable display when doing \cs{tracefloatvals}} +% \begin{macrocode} + \tracefloats +% \end{macrocode} +% +% \begin{macrocode} \@dblfloatplacement \@floatplacement \fl@trace{***Float placement parameters:}% @@ -4052,6 +4121,7 @@ {trace float vals}% \def \tracefloatvals{% \begingroup + \tracefloats \@dblfloatplacement \@floatplacement \fl@trace{***Float placement parameters:}% @@ -4077,6 +4147,10 @@ } \EndIncludeInRelease % \end{macrocode} +% +% +% +% % We need to make sure that \texttt{fltrace} comes before % \texttt{flafter} to make the tracing work. % \begin{macrocode} diff --git a/macros/latex-dev/base/ltpara-code.pdf b/macros/latex-dev/base/ltpara-code.pdf index 5a16a8c1e4..c39ce4eb6b 100644 Binary files a/macros/latex-dev/base/ltpara-code.pdf and b/macros/latex-dev/base/ltpara-code.pdf differ diff --git a/macros/latex-dev/base/ltpara-doc.pdf b/macros/latex-dev/base/ltpara-doc.pdf index 296d020142..2d05e77304 100644 Binary files a/macros/latex-dev/base/ltpara-doc.pdf and b/macros/latex-dev/base/ltpara-doc.pdf differ diff --git a/macros/latex-dev/base/ltpara.dtx b/macros/latex-dev/base/ltpara.dtx index 5ab52a5e9b..bc51e4688f 100644 --- a/macros/latex-dev/base/ltpara.dtx +++ b/macros/latex-dev/base/ltpara.dtx @@ -14,8 +14,8 @@ %%% From File: ltpara.dtx % % \begin{macrocode} -\def\ltparaversion{v1.0g} -\def\ltparadate{2021/05/27} +\def\ltparaversion{v1.0j} +\def\ltparadate{2021/09/18} % \end{macrocode} %<*driver> \documentclass{l3doc} @@ -468,7 +468,7 @@ % % The commands \cs{RawIndent} and \cs{RawNoindent} are not meant % for normal paragraph building (where the result is a textual -% paragraph in the the traditional meaning of the word), but for +% paragraph in the traditional meaning of the word), but for % special cases where \TeX{}'s low-level algorithm is used to % achieve special effects, but where the result is not a % \enquote{paragraph}. @@ -972,6 +972,30 @@ % above construct but two conditionals instead. Using low-level % \cs{if_mode...} conditions would be even faster but has the % danger to conflict with conditionals in the user hooks. +% +% If \cs{para_end:} is executed while \TeX{} is currently doing a +% low-level assignment the test for horizontal mode may get +% executed as part of the assignment. That is normally not an issue +% but we just found one case where it is: +%\begin{verbatim} +% \afterassignment\lst@vskip\@tempskipa \z@ \par +%\end{verbatim} +% If \TeX{} is in hmode while that assignment happens then the +% \cs{par} is seen in hmode (because in the above case the +% assignment isn't finished (one should have used \cs{z@skip} and +% the \cs{lst@vskip} will get inserted into the middle of the +% conditional. The \cs{lst@vskip} then changes to vmode and you get +% a surprising error about the \texttt{para/end} hook having +% changed modes even if you don't have any hook code because it is +% the instered \cs{lst@vskip} that is causing it. That happened +% when the output routines got started while a \texttt{lstlisting} +% environment (that redefines \cs{vskip} in this way) was +% active. This is really faulty coding, but we try to be proactive +% and guard the conditional so thatany scanning is stopped before it: +% \begin{macrocode} + \scan_stop: +% \end{macrocode} +% % \begin{macrocode} \mode_if_horizontal:TF { \mode_if_inner:F { @@ -1008,12 +1032,13 @@ \mode_if_horizontal:TF { % \end{macrocode} % The final action (before getting to the point where -% \cs{tex_par:D} is called) is to add a kern item so that the +% \cs{tex_par:D} is called) is to add a glue item so that the % primitive is prevented from removing glue (if there was some). If % we don't do this and the % horizontal list ended in several glue items we would end up with % removing two instead of just the last one, which would be wrong. -% We use a kern as that is minimally faster. +% We use glue (rather than a kern) as that will be removed by the primitive +% par. % % There is however one other \TeX{} optimization that hurts: in a % sequence like this \verb=$$ ... $$ \par= \TeX{} will be in @@ -1023,17 +1048,19 @@ % away. The space between \verb=$$= and \cs{par} got already % dropped during the display processing so the \cs{par} is not % removing any space and appending \cs{parfillskip}, instead it -% simply goes silently to vmode. Now if we would had added something (to +% simply goes silently to vmode. Now if we would have added something (to % prevent glue removal) that would look to \TeX{} like material % after the display and so we would end up with an empty paragraph % just containing \cs{parfillskip}. % -% We therefore check if the current hlist is empty -% (\cs{tex_lastnodetype:D} has the value \texttt{-1} and -% only if not we add our kern. +% We therefore check if the current hlist does end in glue +% (\cs{tex_lastnodetype:D} has the value \texttt{11}) and +% if so we add a zero-length guard skip which will be removed by the +% following \cs{tex_par:D}. +% \changes{v1.0i}{2021/09/18}{Use skip rather than kern as guard.} % \begin{macrocode} - \if_int_compare:w 0 < \tex_lastnodetype:D - \tex_kern:D \c_zero_dim + \if_int_compare:w 11 = \tex_lastnodetype:D + \tex_hskip:D \c_zero_dim \fi: % \end{macrocode} % To run the \hook{para/after} hook we first end the @@ -1054,7 +1081,7 @@ % Finally close out the nested conditionals. % \begin{macrocode} } - } + } % \end{macrocode} % % \begin{macrocode} @@ -1090,7 +1117,7 @@ \@@_handle_indent: \the\everypar } } - { \msg_error:nn { kernel }{ raw-para } } + { \msg_error:nn { latex2e }{ raw-para } } \tex_indent:D } % \end{macrocode} @@ -1103,7 +1130,7 @@ \tex_everypar:D { \g_@@_standard_everypar_tl } \the\everypar } } - { \msg_error:nn { kernel }{ raw-para } } + { \msg_error:nn { latex2e }{ raw-para } } \tex_noindent:D } % \end{macrocode} @@ -1161,7 +1188,7 @@ % The first argument is the hook name second the mode % it should have stayed in but didn't. % -% \begin{macrocode} +% \begin{macrocode} \msg_new:nnnn { hooks } { para-mode } { Illegal~mode~ change~ in~ hook~ 'para/#1'.\\ @@ -1175,10 +1202,11 @@ } % \end{macrocode} % +% \changes{v1.0i}{2021/08/27}{Internal message name changes} % And here is one used in the \enquote{raw} commands when they are -% used outside of vertical mode. +% used outside of vertical mode. % \begin{macrocode} -\msg_new:nnnn { kernel } { raw-para } +\msg_new:nnnn { latex2e } { raw-para } { Not~ in~ vertical~ mode. } @@ -1206,7 +1234,7 @@ %\cs_set_eq:NN \par \tex_par:D %\cs_set_eq:NN \@@par \tex_par:D %\cs_set_eq:NN \endgraf \tex_par:D -% +% %\EndModuleRelease \ExplSyntaxOff % @@ -1220,4 +1248,3 @@ \endinput %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % - diff --git a/macros/latex-dev/base/ltplain.dtx b/macros/latex-dev/base/ltplain.dtx index e0fbcecf1b..5fa7039679 100644 --- a/macros/latex-dev/base/ltplain.dtx +++ b/macros/latex-dev/base/ltplain.dtx @@ -32,7 +32,7 @@ %<*driver> % \fi \ProvidesFile{ltplain.dtx} - [2021/04/18 v2.3f LaTeX Kernel (Plain TeX)] + [2021/07/16 v2.3g LaTeX Kernel (Plain TeX)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltplain.dtx} @@ -906,6 +906,7 @@ \finalhyphendemerits=5000 \adjdemerits=10000 % \end{macrocode} +% \begin{macrocode} % \looseness=0, cleared by TeX after each paragraph % \pausing=0 % \holdinginserts=0 @@ -915,9 +916,24 @@ % \tracingparagraphs=0 % \tracingpages=0 % \tracingoutput=0 +% \end{macrocode} +% In the past \LaTeX{} used the default value of \texttt{1} for +% \cs{tracinglostchars} because this was the best it could do. This +% way one would at least get a warning in the \texttt{.log} +% file. e-\TeX{} improved on that and supported a value of \texttt{2} +% to show the warning on the terminal, so we could have changed the +% default when we made the e-\TeX{} extensions required---however, +% we overlooked that oportunity. +% In 2021 this parameter was improved on again and now also accepts +% the value \texttt{3} +% (error on the terminal). This made us realize that we should +% change the default. Using \texttt{3} would really be the +% best, but for compatibility reasons we only use \texttt{2}. +% \changes{v2.3g}{2021/07/16}{Use 2 as default value for \cs{tracinglostchars}} % \begin{macrocode} -\tracinglostchars=1 +\tracinglostchars=2 % \end{macrocode} +% \begin{macrocode} % \tracingcommands=0 % \tracingrestores=0 % \end{macrocode} diff --git a/macros/latex-dev/base/ltsect.dtx b/macros/latex-dev/base/ltsect.dtx index 29ea142ba6..67974c7387 100644 --- a/macros/latex-dev/base/ltsect.dtx +++ b/macros/latex-dev/base/ltsect.dtx @@ -31,7 +31,7 @@ %%% From File: ltsect.dtx %<*driver> % \fi -\ProvidesFile{ltsect.dtx}[2020/12/05 v1.1e LaTeX Kernel (Sectioning)] +\ProvidesFile{ltsect.dtx}[2021/07/28 v1.1f LaTeX Kernel (Sectioning)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltsect.dtx} @@ -765,7 +765,7 @@ % The |\addcontentsline{|\meta{table}|}{|\meta{type}|}{|% % \meta{entry}|}| command allows the user to add % his/her own entry to a table of contents, etc. The command adds the -% entry |\contentsline{|\meta{type}|}{|\meta{entry}|}{|\meta{page}|}| +% entry |\contentsline{|\meta{type}|}{|\meta{entry}|}{|\meta{page}|}{}| % to the |.|\meta{table} file. % % This macro is implemented as an application of |\addtocontents|. @@ -833,7 +833,7 @@ % \end{macro} % % \begin{macro}{\contentsline} -% The |\contentsline{|\meta{type}|}{|\meta{entry}|}{|\meta{page}|}| +% The |\contentsline{|\meta{type}|}{|\meta{entry}|}{|\meta{page}|}{}| % macro produces a \meta{type} entry in a table of contents, etc. % It will appear in the |.toc| or other file. For example, % The entry for subsection 1.4.3 in the table of contents for @@ -848,10 +848,44 @@ % without expanding them. % % \begin{macrocode} -\def\contentsline#1{\csname l@#1\endcsname} +% +%<*2ekernel|latexrelease> +%\IncludeInRelease{2021/11/15}% +% {\contentsline}{Four arguments}% +% \end{macrocode} +% +% In the toc file \cs{contentsline} is followed by 4 arguments +% these days, but only the first 3 are used in the old +% interface. The fourth was by default empty and only used when +% \pkg{hyperref} was loaded. We now pick up all 4 arguments, save +% the last one away in \cs{@contentsline@destination} and then call +% the old interface. This is done to simplify the interface to +% \pkg{hyperref} and to prepare for future changes. +% \changes{v1.1f}{2021/07/28}{Pick up four arguments (gh/633)} +% \begin{macrocode} +\def\contentsline#1#2#3#4{\gdef\@contentsline@destination{#4}% + \csname l@#1\endcsname{#2}{#3}} +% \end{macrocode} +% Default definition. +% \begin{macrocode} +\let\@contentsline@destination\@empty +% \end{macrocode} +% +% \begin{macrocode} +% +%\EndIncludeInRelease +%\IncludeInRelease{0000/00/00}% +% {\contentsline}{Four arguments}% +% +%\def\contentsline#1{\csname l@#1\endcsname} +%\let\@contentsline@destination\@undefined +%\EndIncludeInRelease +%<*2ekernel> % \end{macrocode} % \end{macro} % +% +% % |\@dottedtocline{|\meta{level}|}{|\meta{indent}|}{|\meta{numwidth}% % |}{|\meta{title}|}{|\meta{page}|}|: % Macro to produce a table of contents line with the following diff --git a/macros/latex-dev/base/ltshipout-code.pdf b/macros/latex-dev/base/ltshipout-code.pdf index b9b89d57e0..2bb3e8e560 100644 Binary files a/macros/latex-dev/base/ltshipout-code.pdf and b/macros/latex-dev/base/ltshipout-code.pdf differ diff --git a/macros/latex-dev/base/ltshipout-doc.pdf b/macros/latex-dev/base/ltshipout-doc.pdf index 288b55cce9..c422ae9794 100644 Binary files a/macros/latex-dev/base/ltshipout-doc.pdf and b/macros/latex-dev/base/ltshipout-doc.pdf differ diff --git a/macros/latex-dev/base/ltshipout.dtx b/macros/latex-dev/base/ltshipout.dtx index 6e687ee444..7f6555d18c 100644 --- a/macros/latex-dev/base/ltshipout.dtx +++ b/macros/latex-dev/base/ltshipout.dtx @@ -283,7 +283,7 @@ % includes the background and foreground material). % % \textbf{Note:} Just like \hook{shipout/before} this hook is -% not meant to be used for adding adding typeset material back +% not meant to be used for adding typeset material back % to the main vertical list---it might vanish or the % vertical spacing will be wrong! % diff --git a/macros/latex-dev/base/ltvers.dtx b/macros/latex-dev/base/ltvers.dtx index 9ccd2bd02e..3f2f119cb1 100644 --- a/macros/latex-dev/base/ltvers.dtx +++ b/macros/latex-dev/base/ltvers.dtx @@ -33,7 +33,7 @@ %<*driver> % \fi \ProvidesFile{ltvers.dtx} - [2021/04/16 v1.1g LaTeX Kernel (Version Info)] + [2021/08/10 v1.1h LaTeX Kernel (Version Info)] % \iffalse \documentclass{ltxdoc} \GetFileInfo{ltvers.dtx} @@ -115,7 +115,7 @@ {2021-11-15} % %<*2ekernel> -\def\patch@level{-1} +\def\patch@level{-2} % \end{macrocode} % % \begin{macro}{\development@branch@name} @@ -230,6 +230,7 @@ % \changes{v1.0o}{2015/01/19}{Optional argument} % \changes{v1.0q}{2015/02/19}{Swap argument order} % \changes{v1.1f}{2021/03/18}{Add support for usage in \cs{NewModuleRelease}} +% \changes{v1.1h}{2021/08/10}{Add error to aid debugging} % % \begin{macrocode} %<*2ekernel|latexrelease> @@ -257,6 +258,15 @@ {\@IncludeInRelease{#1}[#1]}}} \def\finish@module@release#1#2#3{% \toks@{[#1] #3}% + \begingroup + \edef\x{\detokenize\expandafter{\new@modulename}}% + \edef\y{\detokenize{#2}}% + \expandafter\endgroup + \ifx\x\y \else + \@latex@error{\noexpand\IncludeInRelease dated #1 in a module is not + allowed.\MessageBreak Use a date at least equal to \new@moduledate + \space for complete rollback}\@ehd + \fi \ifnum\expandafter\@parse@version\new@moduledate//00\@nil >\expandafter\@parse@version\fmtversion//00\@nil \GenericInfo{}{Applying: \the\toks@}% diff --git a/macros/latex-dev/base/ltx3info.pdf b/macros/latex-dev/base/ltx3info.pdf index 595d23353b..3f492d24c7 100644 Binary files a/macros/latex-dev/base/ltx3info.pdf and b/macros/latex-dev/base/ltx3info.pdf differ diff --git a/macros/latex-dev/base/ltxdoc.pdf b/macros/latex-dev/base/ltxdoc.pdf index e149e03cf9..7f3de03312 100644 Binary files a/macros/latex-dev/base/ltxdoc.pdf and b/macros/latex-dev/base/ltxdoc.pdf differ diff --git a/macros/latex-dev/base/makeindx.pdf b/macros/latex-dev/base/makeindx.pdf index 47e9bbe4fe..736ef277a2 100644 Binary files a/macros/latex-dev/base/makeindx.pdf and b/macros/latex-dev/base/makeindx.pdf differ diff --git a/macros/latex-dev/base/manifest.txt b/macros/latex-dev/base/manifest.txt index 65e6f80389..f6afcccce7 100644 --- a/macros/latex-dev/base/manifest.txt +++ b/macros/latex-dev/base/manifest.txt @@ -76,7 +76,7 @@ % % ltx3info.tex -- Information about the LaTeX3 project. % -% manual.err -- Errata for the LaTeX Manual. +% lamport-manual.err -- Errata for the LaTeX Manual book, second edition. % tlc2.err -- Errata for the LaTeX Companion, second edition. % lb2.err -- Errata for the LaTeX-Begleiter, 2te erw. Auflage (German). % lgc2.err -- Errata for the LaTeX Graphics Companion, second edition. diff --git a/macros/latex-dev/base/manual.err b/macros/latex-dev/base/manual.err deleted file mode 100644 index c6ea889ed3..0000000000 --- a/macros/latex-dev/base/manual.err +++ /dev/null @@ -1,365 +0,0 @@ -\documentclass{article} - -\newcommand{\reportedby}[2]{{\small [First reported by #1 on \mbox{#2}.]}} -\newcommand{\erratum}[1]{\subsubsection*{#1}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% MODIFICATION DATE % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% Defines \moddate to expand to modification date such as % -% % -% 5 Aug 1991 % -% % -% and \prdate to print it in a large box. Assumes editor % -% updates modification date in standard SRC Gnu Emacs style. % -% (should work for any user name). % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\ypmd{% % -% % -% % - Last modified on Sat 13 October 2018 at 12:56:41 PST by lamport % - endypmd} % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\newcommand{\moddate}{\expandafter\xpmd\ypmd} % -\def\xpmd Last modified % -on #1 #2 #3 #4 at #5:#6:#7 #8 by #9 endypmd{#2 #3 #4} % -\newcommand{\prdate}{\noindent\fbox{\Large\moddate}} % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newcommand{\mytt}{\normalfont\ttfamily} -\newcommand{\cindex}{\index} -\newcommand\bs{\char '134 } % A backslash character for \tt font - -\title{Errata to the Second Edition of the \LaTeX\ Manual} -\author{Leslie Lamport} -\date{\moddate} - -\begin{document} -\maketitle - -\noindent These are all the errors and omissions to the manual, -\LaTeX: {\em A Document Preparation System}, second edition, published -by Addison-Wesley, reported as of \moddate. Positions in the book are -indicated by page and line number, where the top line of a page is -number 1 and the bottom line is number $-1$. A running head and a -page number are not considered to be lines, but all other lines are. -Please report any additional errors to The \LaTeX\ Project at -\texttt{www.latex-project.org/bugs/}\,. - - -\subsection*{Errors Corrected in the First Printing} - -\erratum{page 25, example of \texttt{verse} environment} -Replace \verb|{\em all\/}| by \verb|\emph{all}|. - \reportedby{Rosemary Bailey}{29 Aug 1994} - -\erratum{page 28, first paragraph} -Not an error, but it would be -helpful to add the following sentence to the end of that paragraph: - ``(If a declaration has arguments, they become additional -arguments of the corresponding environment's \verb|\begin| command.)'' - - -\erratum{page 33, line 10} -Add \verb|\]| to the list of fragile commands. - \reportedby{Rosemary Bailey}{29 Aug 1994} - -\erratum{page 43, table 3.5} -Add an entry for \verb|\notin| ($\notin$). - \reportedby{Rosemary Bailey}{29 Aug 1994} - -\erratum{page 72, two examples} -Change \verb|{\em ...}| to \verb|\emph{...}| - \reportedby{Rosemary Bailey}{29 Aug 1994} - -\erratum{page 101} -This is not an error, but some readers will find it helpful if, in the -descriptions of \verb|\setlength| and \verb|\addtolength|, -\verb|\gnat| were replaced by \verb|\parskip|. - \reportedby{Ellen Gilkerson}{9 Aug 1994} - -\erratum{page 108, lines 7 and 10} -This is not an error, but it might be easier to understand -the example if \verb|\len| were replaced by something like \verb|\saved|. - \reportedby{Rosemary Bailey}{29 Aug 1994} - -\erratum{page 139, lines $-8$ and $-9$} - -The funny break between these two lines should be eliminated. -\reportedby{Malcolm Clark}{9 Aug 1994} - -\erratum{page 177, line $-12$} - -The \verb|twocolumn| option cannot be used with the \verb|letters| -class. - -\erratum{page 197, lines 7 and 9} - -The \verb|figure*| environment is ended by \verb|\end{figure*}|, and -the \verb|table*| environment is ended by \verb|\end{table*}|. -\reportedby{Malcolm Clark}{9 Aug 1994} - -\erratum{page 228} - -Add a note that, before running a LaTeX2.09 file in compatibility mode -in LaTeX2e, you should delete the old versions of the auxiliary files. - -\subsection*{Errors Corrected in the Second Printing} - -\erratum{page xv, line 10} -``Chris Rowley'' should come after ``Sebastian Rahtz''. -\reportedby{Martin Schr\"{o}der}{24 April 1995} - - - -\erratum{page 29, line $-10$} -Change ``error indicator line'' to ``error locator line''. -\reportedby{Xavier Perramon}{2 Jan 1995} - -\erratum{page 37, lines 26--28} -Change the two sentences ``None of these \ldots formula.'' to: -\begin{quote} -These text-producing commands can be used in math mode to put ordinary -text in a formula. (When the command is used in math mode, its -argument is processed in LR mode.) The declarations cannot be used in -math mode. Section 3.3.8 explains how to change the type style of a -formula's math-mode symbols. -\end{quote} -\reportedby{Mike Piff}{7 Mar 1995} - -\erratum{page 39, line 6} -Replace ``any mode'' with ``paragraph and LR mode''. Also, -after line 8, add: -\begin{quote} -The commands \verb|\dag|, \verb|\ddag|, \verb|\S|, and \verb|\P| -can also be used in math mode. -\end{quote} - -\erratum{page 53, line 24} -Change ``are needed in the'' to ``are used in the'' -\reportedby{Mike Piff}{21 Oct 1994} - -\erratum{page 80, line 1} -The section heading should not be outdented. -\reportedby{Martin Schr\"{o}der}{23 Jan 1995} - -\erratum{page 83, line $-8$} -Change ``\verb|\resettime|'' to ``\verb|\settime|''. - -\erratum{page 84, after line $11$} Add the following sentence: ``The -\hbox{\verb|\onlyslides|} and \hbox{\verb|\onlynotes|} commands may -not work right if a \texttt{slide}, \texttt{overlay}, or \texttt{note} -environment appears in the argument of any command.'' -\reportedby{Eike Ritter}{May 1996} - -\erratum{page 153, line 1} -Add ``or subentry'' after ``entry''. -\reportedby{Martin Schr\"{o}der}{22 Feb 1995} - -\erratum{page 171} -Add the following before line $-4$: -\begin{description} -\item[\mytt \bs columnwidth] -Normal width - \cindex{columnwidth}% -of a column; -% \index{column!width}% - \index{width!of column}% -equals \verb|\textwidth| except for multiple-column styles. -Its value should not be changed with the length-setting commands. -\end{description} -Also, in line $-4$, change \verb|\textwidth| to \verb|\columnwidth|. -%\reportedby{Volker Kuhlmav}{20 Jan 1995} -\reportedby{Rosemary Bailey}{9 Sep 1994} - -\erratum{page 180, lines 15--19} -% -Replace these five lines (which begin ``These commands are overridden'') -with: -\begin{itemize} \item[] -To override a heading on a right-hand page (any page for one-sided -printing), put a \verb|\markright| after the sectioning command and in -its mandatory argument, and add an optional argument without the -\verb|markright|, as in -\begin{itemize} -\item[] - \verb|\chapter[Gnu Scents]{Gnu Scents\markright{|\textit{right\_head}\verb|}}|\\ - \verb|\markright{|\textit{right\_head}\verb|}| -\end{itemize} -To change the heading on a left-hand page, put a \verb|\markboth| -command immediately after the sectioning command. -\end{itemize} -\reportedby{Jerome Breitenbach}{14 Dec 1995} - -\erratum{page 182} -The dimensions -\verb|\pageheight| and \verb|\pagewidth| -should be \verb|\paperheight| and \verb|\paperwidth|, -respectively. (The index entries on page 260 should also be changed.) -\reportedby{Alan Jeffrey, on behalf of a user}{12 Sep 1995} -\erratum{page 192, line 19} -Change ``\emph{cmd}'' to ``\emph{def}''. -\reportedby{Martin Schr\"{o}der}{9 Mar 1995} - - -\erratum{page 195, line 14} -Change ``numbered `within' it'' to ``numbered directly `within' it''. -\reportedby{Martin Schr\"{o}der}{5 Dec 1994} - -\erratum{page 197, line 14} -After ``\verb|\textwidth|'' add ``or \verb|\columnwidth|'' -\reportedby{Volker Kuhlmann}{22 Jan 1995} - -\erratum{page 226} - -After line 7, add -\begin{quote} -These declarations may not be used in math mode. -\end{quote} -Replace lines 16-19 (beginning ``None of these commands'') with -\begin{quote} -When these commands are used in math mode, the \emph{text} -argument is processed in LR mode. - -These commands and declarations are robust. Words typeset in -typewriter style are not hyphenated except where permitted by \verb|\-| -commands. -\end{quote} -\reportedby{Marc Lavine}{22 Aug 1995} - -\erratum{page 228} -To the section ``Type Styles and Sizes'', add the following sentence: -A few mathematical symbols now require the \texttt{latexsym} package---see -Tables 3.4--3.7. - -\subsection*{Errors Corrected in the Sixteenth Printing} - -\erratum{page 42, line 14} -Change ``through a symbol'' by ``through a relation symbol''. -\reportedby{Frank Mittelbach}{15 Nov 1996} - -\erratum{page 42, Table 3.4} -\verb|\land| should be listed as a synonym for \verb|\wedge|, and -\verb|\lor| should be listed as a synonym for \verb|\vee|. -\reportedby{Chris Rowley}{28 Oct 1998} - -\erratum{page 43, Table 3.7} -\verb|\lnot| should be listed as a synonym for \verb|\neg|. -\reportedby{Chris Rowley}{15 Oct 1998} - -\erratum{page 137} This is not an error, but it would be better to -change lines 23 and 24 to: -\begin{quote} -\LaTeX\ - \index{file!not found error}% - \index{file!nonexistent}% -is trying to read a file that apparently doesn't exist. If the missing -file has the extension \texttt{tex}, then \LaTeX\ is trying to - \index{input)@\verb+\input+!of nonexistent file}% - \index{include)@\verb+\include+!of nonexistent file}% -\verb|\input| or \verb|\include| it; if it -\end{quote} - -\erratum{page 171, line 19} -Change the description of \verb|\indent| to: -\begin{description} -\item[\mytt \bs indent] -Produces a -% \cindex{indent}% -% \index{paragraph!indentation}% -horizontal space whose width equals the width of the -paragraph indentation. It can be used to add a paragraph indentation -where one would otherwise be suppressed. (If it doesn't work, -try typing \verb|\indent\indent|.) Robust. -\end{description} -\reportedby{Chris Rowley}{15 Oct 1998} - -\erratum{page 179, line 19} -% -Change to: -\begin{quote} -page style for the \texttt{article} and \texttt{report} document classes. -\end{quote} -\reportedby{Stephen J. Alter}{17 Sep 1997} - -\erratum{page 195, line 28} -Replace ``\textit{num}$_1$ and \textit{num}$_1$ are numbers'' -with ``\textit{num}$_1$ and \textit{num}$_2$ are numbers''. -\reportedby{Magnus Lewis-Smith}{14 Jan 1999} - -\erratum{page 196, line $-5$} -Change \verb|\newboolean{|\emph{name}\verb|}| to -\verb|\newboolean{|\emph{nam}\verb|}|. -\reportedby{Christopher von B\"{u}low}{28 Aug 2000} - - -\erratum{page 198, line 14} -Change ``it will not be printed'' to ``it will usually not be printed''. - -\erratum{page 218, line $-14$} -Change ``\texttt{tabular}'' to ``\texttt{tabbing}''. -\reportedby{Carlos Pita}{27 Aug 2001} - -\erratum{foldout, column 3, line 3} -Replace \emph{style} with \emph{class}. \reportedby{Christopher von B\"{u}low}{28 Aug 2000} - -\subsection*{Errors Corrected in the Seventeenth Printing} - -\erratum{page 51, line 8} -Change ``The \verb|\,| command'' to ``The \verb|\,| and \verb*|\ | commands''. -\reportedby{Phillip J Shelton}{2 Jul 1999} - -\erratum{page 61, second example (middle of page)} -Remove the \verb|\mbox{}| following the \texttt{tabbing} environment. -\reportedby{Marcin Wolinski}{17 Sep 2003} - -\erratum{page 210, line 20} -Add a space after ``bibliography''. -\reportedby{Marcin Wolinski}{17 Sep 2003} - -\subsection*{Error Corrected in the Twenty-First Printing} -\erratum{page 198, line $-11$} -The sentence beginning ``The last three rules'' is hard to read. Better -would be: -\begin{quote} -\noindent The last three rules are suspended when a - \verb|\clearpage|,\linebreak - \verb|\cleardoublepage|, or - \verb|\end{document}| command occurs, -at which point all unprocessed figures and tables are allowed a -\hbox{\mytt p} option and printed. -\end{quote} -\reportedby{Paul Stanford}{9 Oct 2004} - -\subsection*{Error Corrected in the Twenty-Second Printing} - -\erratum{page 253, column 2, lines $-5$ and $-6$} - -The two index entries for \verb|\ldots| should be combined. - - -\reportedby{Christopher Dutchyn}{22 July 2005} - - -\subsection*{Uncorrected Errors} - -\erratum{page 206, line 17 (\texttt{\string\multicolumn} explanation)} - -Insert the following text right after ``\texttt{l}, and \texttt{r}.'' -\begin{quote} -If the part of the environment's \emph{cols} argument being replaced -immediately follows an \texttt{@} expression, then the \emph{item} -will be preceded by a normal intercolumn space unless the -\verb|\multicolumn| command's \emph{col} argument begins with an -\texttt{@} expression. In particular, beginning the \emph{col} -argument with \verb|@{}| will suppress that space. -\end{quote} -\reportedby{Ulrike Fischer, Frank Mittelbach}{23 Sep 2018} - -\end{document} - -%try -%try diff --git a/macros/latex-dev/base/manual.pdf b/macros/latex-dev/base/manual.pdf deleted file mode 100644 index 946069a0b4..0000000000 Binary files a/macros/latex-dev/base/manual.pdf and /dev/null differ diff --git a/macros/latex-dev/base/modguide.pdf b/macros/latex-dev/base/modguide.pdf index 4c1ddbe949..73386625ce 100644 Binary files a/macros/latex-dev/base/modguide.pdf and b/macros/latex-dev/base/modguide.pdf differ diff --git a/macros/latex-dev/base/nfssfont.pdf b/macros/latex-dev/base/nfssfont.pdf index 82938a5bd8..904aafcd7d 100644 Binary files a/macros/latex-dev/base/nfssfont.pdf and b/macros/latex-dev/base/nfssfont.pdf differ diff --git a/macros/latex-dev/base/proc.pdf b/macros/latex-dev/base/proc.pdf index 2997bbec09..7edbb77c6b 100644 Binary files a/macros/latex-dev/base/proc.pdf and b/macros/latex-dev/base/proc.pdf differ diff --git a/macros/latex-dev/base/slides.pdf b/macros/latex-dev/base/slides.pdf index e71d6e8bc2..69e2a0c1ae 100644 Binary files a/macros/latex-dev/base/slides.pdf and b/macros/latex-dev/base/slides.pdf differ diff --git a/macros/latex-dev/base/slifonts.pdf b/macros/latex-dev/base/slifonts.pdf index f0de95ec17..c18e1a26d2 100644 Binary files a/macros/latex-dev/base/slifonts.pdf and b/macros/latex-dev/base/slifonts.pdf differ diff --git a/macros/latex-dev/base/source2e.pdf b/macros/latex-dev/base/source2e.pdf index d400012bb0..cb22937a33 100644 Binary files a/macros/latex-dev/base/source2e.pdf and b/macros/latex-dev/base/source2e.pdf differ diff --git a/macros/latex-dev/base/syntonly.pdf b/macros/latex-dev/base/syntonly.pdf index 6b6d25627d..4ab7c3814b 100644 Binary files a/macros/latex-dev/base/syntonly.pdf and b/macros/latex-dev/base/syntonly.pdf differ diff --git a/macros/latex-dev/base/tlc2.err b/macros/latex-dev/base/tlc2.err index a361d1673a..46ba9ed845 100644 --- a/macros/latex-dev/base/tlc2.err +++ b/macros/latex-dev/base/tlc2.err @@ -19,7 +19,7 @@ \begin{filecontents}{ttcterrata.cls} %% -%% Copyright (C) 1997,2004,2005,2007, 2014 Frank Mittelbach +%% Copyright (C) 1997-2021 Frank Mittelbach %% This class file is licenced under LPPL latest version; %% see https://www.latex-project.org/lppl % @@ -36,9 +36,10 @@ % % v1.0a - changed name from errata.cls to ttcterrata.cls % v1.0b - added \arraybackslash +% v1.0c - and took it out again and used \tabularnewline instead \ProvidesClass{ttcterrata} - [2021/04/22 v1.0b Mini class for errata files; subject to change (FMi)] + [2021/08/03 v1.0c Mini class for errata files; subject to change (FMi)] \LoadClass{article} @@ -63,7 +64,9 @@ \setbox\@tempboxa\vbox\bgroup \let\endgobble\egroup \let\hideamp\relax - \let\\\relax\let\par\@@par} + \let\\\relax + \let\tabularnewline\relax + \let\par\@@par} \newcommand*\hideamp{&} @@ -140,7 +143,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -154,18 +157,18 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } \newcommand\CHAPTER[1]{\endgobble - &\\[4pt]% - \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \\} + &\tabularnewline[4pt]% + \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \tabularnewline} \newenvironment{erratalist} - {\begin{longtable}{r>{\raggedright\arraybackslash}p{2cm}l>{\raggedright\arraybackslash}p{10cm}l}} + {\begin{longtable}{r>{\raggedright}p{2cm}l>{\raggedright}p{10cm}l}} {\endgobble\end{longtable}} \newcommand\erratatitle[2] @@ -213,7 +216,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -228,7 +231,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp @@ -420,7 +423,7 @@ Contest period ends & Winner \\[4pt] -\CHAPTER{Front matter} +\CHAPTER{Front matter} \erroronpage{iv}{bottom}{FMi}{2004/04/23}{2} Some updates indicating second printing (with corrections) diff --git a/macros/latex-dev/base/tlc2.pdf b/macros/latex-dev/base/tlc2.pdf index b31dc5d637..60c2def519 100644 Binary files a/macros/latex-dev/base/tlc2.pdf and b/macros/latex-dev/base/tlc2.pdf differ diff --git a/macros/latex-dev/base/tulm.fdd b/macros/latex-dev/base/tulm.fdd index 5c1566a5ba..243cbe30cc 100644 --- a/macros/latex-dev/base/tulm.fdd +++ b/macros/latex-dev/base/tulm.fdd @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright 2016-2019 +% Copyright 2016-2021 % The LaTeX Project and any individual authors listed elsewhere % in this file. % @@ -30,7 +30,7 @@ %\iffalse This is a META comment % % File `cmfonts.fdd'. -% Copyright (C) 2016-2019 LaTeX Project +% Copyright (C) 2016-2021 LaTeX Project % % %\ProvidesFile{tulmr.fd} @@ -42,7 +42,7 @@ %<*driver> \ProvidesFile{tulm.drv} % - [2017/01/26 v1.8 Standard LaTeX font definitions for Latin Modern] + [2021/07/23 v1.8a Standard LaTeX font definitions for Latin Modern] % %<*driver> \documentclass{ltxdoc} @@ -63,6 +63,7 @@ %\fi % % \section{TUlmr} +% \changes{v1.8a}{2021/07/23}{Use OpenType font for TU/lmr/m/ui} % \begin{macrocode} %<*TUlmr> \DeclareFontFamily{TU}{lmr}{} @@ -93,7 +94,7 @@ \DeclareFontShape{TU}{lmr}{m}{sc}% {<-> \UnicodeFontFile{lmromancaps10-regular}{\UnicodeFontTeXLigatures}}{} \DeclareFontShape{TU}{lmr}{m}{ui}% - {<-> ec-lmu10}{} + {<-> \UnicodeFontFile{lmromanunsl10-regular}{\UnicodeFontTeXLigatures}}{} \DeclareFontShape{TU}{lmr}{m}{scsl}% {<-> \UnicodeFontFile{lmromancaps10-oblique}{\UnicodeFontTeXLigatures}}{} \DeclareFontShape{TU}{lmr}{b}{n} diff --git a/macros/latex-dev/base/tulm.pdf b/macros/latex-dev/base/tulm.pdf index 5aa6b50141..eae26e7a6c 100644 Binary files a/macros/latex-dev/base/tulm.pdf and b/macros/latex-dev/base/tulm.pdf differ diff --git a/macros/latex-dev/base/usrguide.pdf b/macros/latex-dev/base/usrguide.pdf index 423fe4c8b4..35201e63bd 100644 Binary files a/macros/latex-dev/base/usrguide.pdf and b/macros/latex-dev/base/usrguide.pdf differ diff --git a/macros/latex-dev/base/usrguide3.pdf b/macros/latex-dev/base/usrguide3.pdf index 347116d157..bf279eb39a 100644 Binary files a/macros/latex-dev/base/usrguide3.pdf and b/macros/latex-dev/base/usrguide3.pdf differ diff --git a/macros/latex-dev/base/usrguide3.tex b/macros/latex-dev/base/usrguide3.tex index e86b2d8b0a..82c1c06863 100644 --- a/macros/latex-dev/base/usrguide3.tex +++ b/macros/latex-dev/base/usrguide3.tex @@ -302,7 +302,7 @@ argument specification: \end{verbatim} where \verb*|\foobar{arg1} [arg2]| will not find an optional argument. -There is one subtly here due to the difference in handling by \TeX{} of +There is one subtlety here due to the difference in handling by \TeX{} of `control symbols', where the command name is made up of a single character, such as `\texttt{\textbackslash\textbackslash}'. Spaces are not ignored by \TeX{} here, @@ -454,6 +454,18 @@ category code $13$ (active) character matching the \meta{token} will be replaced before the split takes place. Spaces are trimmed at each end of each item parsed. +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 +argument, all the arguments pass through that processor before being fed +to the \meta{code}. For example, this command +\begin{verbatim} + \NewDocumentCommand \foo { >{\TrimSpaces} e{_^} } + { [#1](#2) } +\end{verbatim} +applies \cs{TrimSpaces} to both arguments. + \begin{decl} |\SplitList| \arg{token(s)} \end{decl} diff --git a/macros/latex-dev/base/utf8ienc.dtx b/macros/latex-dev/base/utf8ienc.dtx index a517459441..75990d1b03 100644 --- a/macros/latex-dev/base/utf8ienc.dtx +++ b/macros/latex-dev/base/utf8ienc.dtx @@ -216,7 +216,7 @@ %<+ts1> \ProvidesFile{ts1enc.dfu} %<+x2> \ProvidesFile{x2enc.dfu} %<+all> \ProvidesFile{utf8enc.dfu} -%<-utf8-2018> [2021/06/08 v1.2m UTF-8 support] +%<-utf8-2018> [2021/06/21 v1.2n UTF-8 support] % \end{macrocode} % % \begin{macrocode} @@ -1704,17 +1704,31 @@ %\DeclareUnicodeCharacter{1E03}{\.b} % \end{macrocode} % \changes{v1.2k}{2021/01/27}{Added various additional dot accents (gh/484)} +% \changes{v1.2n}{2021/06/21}{more extended latin entries for gh/593} % \begin{macrocode} %\DeclareUnicodeCharacter{1E0D}{\d d} +%\DeclareUnicodeCharacter{1E1E}{\.F} +%\DeclareUnicodeCharacter{1E1F}{\.f} %\DeclareUnicodeCharacter{1E25}{\d h} +%\DeclareUnicodeCharacter{1E30}{\@tabacckludge'K} +%\DeclareUnicodeCharacter{1E31}{\@tabacckludge'k} %\DeclareUnicodeCharacter{1E37}{\d l} +%\DeclareUnicodeCharacter{1E8E}{\.Y} +%\DeclareUnicodeCharacter{1E8F}{\.y} %\DeclareUnicodeCharacter{1E43}{\d m} %\DeclareUnicodeCharacter{1E45}{\.n} %\DeclareUnicodeCharacter{1E47}{\d n} %\DeclareUnicodeCharacter{1E5B}{\d r} %\DeclareUnicodeCharacter{1E63}{\d s} %\DeclareUnicodeCharacter{1E6D}{\d t} +%\DeclareUnicodeCharacter{1E90}{\^Z} +%\DeclareUnicodeCharacter{1E91}{\^z} %\DeclareUnicodeCharacter{1E9E}{\SS} +%\DeclareUnicodeCharacter{1EF2}{\@tabacckludge`Y} +%\DeclareUnicodeCharacter{1EF3}{\@tabacckludge`y} +% \end{macrocode} +% +% \begin{macrocode} %\DeclareUnicodeCharacter{200C}{\textcompwordmark} % \end{macrocode} % \changes{v1.1s}{2016/02/28}{Add more hyphens and dashes} diff --git a/macros/latex-dev/base/utf8ienc.pdf b/macros/latex-dev/base/utf8ienc.pdf index ac07119618..bbcff9bc6f 100644 Binary files a/macros/latex-dev/base/utf8ienc.pdf and b/macros/latex-dev/base/utf8ienc.pdf differ diff --git a/macros/latex-dev/base/webcomp.err b/macros/latex-dev/base/webcomp.err index 6a62e258c5..1b3b7a2475 100644 --- a/macros/latex-dev/base/webcomp.err +++ b/macros/latex-dev/base/webcomp.err @@ -29,9 +29,10 @@ % % v1.0a - changed name from errata.cls to ttcterrata.cls % v1.0b - added \arraybackslash +% v1.0c - and took it out again and used \tabularnewline instead \ProvidesClass{ttcterrata} - [2021/04/22 v1.0b Mini class for errata files; subject to change (FMi)] + [2021/08/03 v1.0c Mini class for errata files; subject to change (FMi)] \LoadClass{article} @@ -56,7 +57,9 @@ \setbox\@tempboxa\vbox\bgroup \let\endgobble\egroup \let\hideamp\relax - \let\\\relax\let\par\@@par} + \let\\\relax + \let\tabularnewline\relax + \let\par\@@par} \newcommand*\hideamp{&} @@ -133,7 +136,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -147,18 +150,18 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } \newcommand\CHAPTER[1]{\endgobble - &\\[4pt]% - \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \\} + &\tabularnewline[4pt]% + \multicolumn{4}{l}{\framebox[10cm][l]{\textbf{\normalsize\strut#1}}} \tabularnewline} \newenvironment{erratalist} - {\begin{longtable}{r>{\raggedright\arraybackslash}p{2cm}l>{\raggedright\arraybackslash}p{10cm}l}} + {\begin{longtable}{r>{\raggedright}p{2cm}l>{\raggedright}p{10cm}l}} {\endgobble\end{longtable}} \newcommand\erratatitle[2] @@ -206,7 +209,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp } @@ -221,7 +224,7 @@ \typeout{Ignoring entry #1 #2 #3 #4}% \expandafter\gobbleerrata \fi - \hideamp \\% + \hideamp \tabularnewline \fbox{\bfseries !!}\hfill \displayrevisionfix{#1}{#5} \hideamp #2 \hideamp (\textsf{#3}) \hideamp diff --git a/macros/latex-dev/base/webcomp.pdf b/macros/latex-dev/base/webcomp.pdf index 6451799f0d..c28756a894 100644 Binary files a/macros/latex-dev/base/webcomp.pdf and b/macros/latex-dev/base/webcomp.pdf differ diff --git a/macros/latex-dev/required/amsmath/README.md b/macros/latex-dev/required/amsmath/README.md index 4054197883..48f1e27234 100644 --- a/macros/latex-dev/required/amsmath/README.md +++ b/macros/latex-dev/required/amsmath/README.md @@ -1,7 +1,7 @@ The amsmath bundle for LaTeX ============================ -Release 2021-11-15 pre-release 1 +Release 2021-11-15 pre-release 2 Overview -------- @@ -12,7 +12,7 @@ developed by the American Mathematical Society (AMS) and released for general use as a service to the mathematical community. A number of smaller auxiliary packages are also distributed with the `amsmath` package. -Effective in 2016, maintenance of `amsmath was transferred from AMS to +Effective in 2016, maintenance of `amsmath` was transferred from AMS to the LaTeX Project; as `amsmath` is considered a "required" package, this centralizes control over the core LaTeX components. @@ -28,7 +28,7 @@ Release distribution is carried out only through the CTAN archives. Documentation ------------- -The primary documentation for `amsmath` is in provided as `amsldoc.pdf`. +The primary documentation for `amsmath` is provided as `amsldoc.pdf`. Additional documentation files include: diff --git a/macros/latex-dev/required/amsmath/amsbsy.pdf b/macros/latex-dev/required/amsmath/amsbsy.pdf index 9766310c66..b85ad28df0 100644 Binary files a/macros/latex-dev/required/amsmath/amsbsy.pdf and b/macros/latex-dev/required/amsmath/amsbsy.pdf differ diff --git a/macros/latex-dev/required/amsmath/amscd.pdf b/macros/latex-dev/required/amsmath/amscd.pdf index ef305b0d62..23a47f71d6 100644 Binary files a/macros/latex-dev/required/amsmath/amscd.pdf and b/macros/latex-dev/required/amsmath/amscd.pdf differ diff --git a/macros/latex-dev/required/amsmath/amsgen.pdf b/macros/latex-dev/required/amsmath/amsgen.pdf index 1872ad8fe1..b5dda96a10 100644 Binary files a/macros/latex-dev/required/amsmath/amsgen.pdf and b/macros/latex-dev/required/amsmath/amsgen.pdf differ diff --git a/macros/latex-dev/required/amsmath/amsldoc.pdf b/macros/latex-dev/required/amsmath/amsldoc.pdf index caf0dffb06..38f627d41d 100644 Binary files a/macros/latex-dev/required/amsmath/amsldoc.pdf and b/macros/latex-dev/required/amsmath/amsldoc.pdf differ diff --git a/macros/latex-dev/required/amsmath/amsldoc.tex b/macros/latex-dev/required/amsmath/amsldoc.tex index 26ea6cf808..97294772e7 100644 --- a/macros/latex-dev/required/amsmath/amsldoc.tex +++ b/macros/latex-dev/required/amsmath/amsldoc.tex @@ -69,6 +69,11 @@ Bug reports can be opened (category \texttt{#1}) at\\% \def\@thanks{\bigskip\MaintainedByLaTeXTeam{amslatex}} \makeatother +% Very minor changes are not listed in the \date above: +% +% 2021-08-22: reported typo fixed mathools -> mathtools + + % Use the amsmath package and amscd package in order to print % examples. \usepackage{amsmath} @@ -1616,7 +1621,7 @@ bar symbols: \end{verbatim} whereupon the document would contain |\abs{z}| to produce $\lvert z\rvert$ and |\norm{v}| to produce $\lVert v\rVert$. -The \pkg{mathools} provides the command \cn{DeclarePairedDelimiter} +The \pkg{mathtools} provides the command \cn{DeclarePairedDelimiter} for defining |\abs|-like macros with scaling delimiters. \index{delimiters|)} diff --git a/macros/latex-dev/required/amsmath/amsmath.dtx b/macros/latex-dev/required/amsmath/amsmath.dtx index 8857861101..eec51f50cb 100644 --- a/macros/latex-dev/required/amsmath/amsmath.dtx +++ b/macros/latex-dev/required/amsmath/amsmath.dtx @@ -86,7 +86,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \end{macrocode} % % \begin{macrocode} -\ProvidesPackage{amsmath}[2021/04/20 v2.17j AMS math features] +\ProvidesPackage{amsmath}[2021/08/28 v2.17k AMS math features] % \end{macrocode} % % \section{Catcode defenses} @@ -2627,7 +2627,9 @@ ill-advised in LaTeX.% % % \begin{macro}{\numberwithin} % Provide a convenient way to specify that equations should be -% numbered within sections. +% numbered within sections. The \LaTeX{} kernel contains a similar command +% \cs{counterwithin} (with a slightly extended syntax) that can be used +% as a drop-in replacement for \cs{numberwithin}. % \begin{macrocode} \newcommand{\numberwithin}[3][\arabic]{% \@ifundefined{c@#2}{\@nocounterr{#2}}{% @@ -6500,8 +6502,17 @@ Cannot use `split' here;\MessageBreak trying to recover with `aligned'}% \let\mathdisplay@pop\@empty \def\mathdisplay@@pop{\the\mathdisplay@stack} % \end{macrocode} -% +%\changes{v2.17k}{2021/08/24}{Move the counter inside the equation and guard +% with a mathopen for better compability with hyperref, issue gh/652} +% As with hyperref incrementing the counter creates a box to raise the anchor +% it should be in a place where is doesn't affect spacing. +% Currently the code from hyperref is used to avoid this problem: +% If fleqn isn't active the counter is set inside the equation and the potential +% box guarded by a mathopen to avoid side effects on following unary symbols. +% If fleqn is activated it has to be outside to avoid problems with labels. +% This solution is temporary and not necessarly the best. % \begin{macrocode} +\if@fleqn \renewenvironment{equation}{% \incr@eqnum \mathdisplay@push @@ -6512,6 +6523,18 @@ Cannot use `split' here;\MessageBreak trying to recover with `aligned'}% \mathdisplay@pop \ignorespacesafterend } +\else +\renewenvironment{equation}{% + \mathdisplay@push + \st@rredfalse \global\@eqnswtrue + \mathdisplay{equation}% + \incr@eqnum\mathopen{}% +}{% + \endmathdisplay{equation}% + \mathdisplay@pop + \ignorespacesafterend +} +\fi % \end{macrocode} % % \begin{macrocode} diff --git a/macros/latex-dev/required/amsmath/amsmath.pdf b/macros/latex-dev/required/amsmath/amsmath.pdf index 7bce876d7b..e845d54387 100644 Binary files a/macros/latex-dev/required/amsmath/amsmath.pdf and b/macros/latex-dev/required/amsmath/amsmath.pdf differ diff --git a/macros/latex-dev/required/amsmath/amsopn.dtx b/macros/latex-dev/required/amsmath/amsopn.dtx index a71c13d6c8..03df1a116b 100644 --- a/macros/latex-dev/required/amsmath/amsopn.dtx +++ b/macros/latex-dev/required/amsmath/amsopn.dtx @@ -58,7 +58,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) [1994/12/01]% LaTeX date must December 1994 or later -\ProvidesPackage{amsopn}[2016/03/08 v2.02 operator names] +\ProvidesPackage{amsopn}[2021/08/26 v2.02 operator names] % \end{macrocode} % % What \cs{nolimits@} does is keep a \cn{limits} typed by the user @@ -72,13 +72,13 @@ Bug reports can be opened (category \texttt{#1}) at\\% % punctuation characters such as |*-/:'|. % Because the body of an % operator name is set in math mode, these few punctuation -% characters will not come out right (wrong symbol/and or wrong +% characters will not come out right (wrong symbol and/or wrong % spacing). The purpose of \cs{newmcodes@} is to make them act like % their normal text versions. % % Where practical, we use decimal numbers to cut down main mem % usage (\qc{\"} not needed). -% use |\Umathcodedefnum| with xetex and LuaTeX to avoid problems +% Use |\Umathcodedefnum| with xetex and LuaTeX to avoid problems % using |\mathcode| if |-| has already been defined using |\Umathcode|. % \changes{v2.02}{2016/03/08}{Unicode TeX version of \cs{newmcodes@}} % \begin{macrocode} diff --git a/macros/latex-dev/required/amsmath/amsopn.pdf b/macros/latex-dev/required/amsmath/amsopn.pdf index 4665ba523b..bc4a3590d9 100644 Binary files a/macros/latex-dev/required/amsmath/amsopn.pdf and b/macros/latex-dev/required/amsmath/amsopn.pdf differ diff --git a/macros/latex-dev/required/amsmath/amstext.dtx b/macros/latex-dev/required/amsmath/amstext.dtx index d6475561fb..88cc837f03 100644 --- a/macros/latex-dev/required/amsmath/amstext.dtx +++ b/macros/latex-dev/required/amsmath/amstext.dtx @@ -77,7 +77,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % \begin{macrocode} \NeedsTeXFormat{LaTeX2e}% LaTeX 2.09 can't be used (nor non-LaTeX) [1994/12/01]% LaTeX date must be December 1994 or later -\ProvidesPackage{amstext}[2000/06/29 v2.01 AMS text] +\ProvidesPackage{amstext}[2021/08/26 v2.01 AMS text] % \end{macrocode} % % \section{The implementation} @@ -108,7 +108,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% % If \cn{text} is encountered inside math mode the macro % \cs{text@} is called. It has one mandatory argument, the text % which should be produced. Since we do not know in which math -% style we are currently in we call \cs{mathchoice} to tyeset +% style we are currently in we call \cs{mathchoice} to typeset % our text in all four possible styles. % \begin{macrocode} \def\text@#1{{\mathchoice @@ -277,7 +277,7 @@ Bug reports can be opened (category \texttt{#1}) at\\% %\subsection{Applications of \cn{text}} % % \begin{macro}{\mathhexbox} -% We start with an re-definition of the \fn{plain.tex} macro +% We start with a re-definition of the \fn{plain.tex} macro % \cs{mathhexbox}. (Although M. Spivak in \amstex/ uses the name % \cs{mathhexbox@} for this purpose, I [FMi] don't see any reason % to use a new name since the new definition is superior, has the diff --git a/macros/latex-dev/required/amsmath/amstext.pdf b/macros/latex-dev/required/amsmath/amstext.pdf index a612a817cf..d3d5dbf093 100644 Binary files a/macros/latex-dev/required/amsmath/amstext.pdf and b/macros/latex-dev/required/amsmath/amstext.pdf differ diff --git a/macros/latex-dev/required/amsmath/amsxtra.pdf b/macros/latex-dev/required/amsmath/amsxtra.pdf index 2005cf8843..485d56d23e 100644 Binary files a/macros/latex-dev/required/amsmath/amsxtra.pdf and b/macros/latex-dev/required/amsmath/amsxtra.pdf differ diff --git a/macros/latex-dev/required/amsmath/changes.txt b/macros/latex-dev/required/amsmath/changes.txt index 63bea7e727..a07a5cee26 100644 --- a/macros/latex-dev/required/amsmath/changes.txt +++ b/macros/latex-dev/required/amsmath/changes.txt @@ -2,6 +2,11 @@ All changes above are only part of the development branch for the next release. ================================================================================ +2021-08-24 Ulrike Fischer + * amsmath.dtx (subsection{Implementing tags and labels}): + move \incr@eqnum inside the equation if fleqn isn't used and guard + it with a mathopen for better compability with hyperref, issue gh/652 + ######################### # 2021-06-01 Release ######################### diff --git a/macros/latex-dev/required/amsmath/subeqn.pdf b/macros/latex-dev/required/amsmath/subeqn.pdf index 9b600cf7e6..88db5466cd 100644 Binary files a/macros/latex-dev/required/amsmath/subeqn.pdf and b/macros/latex-dev/required/amsmath/subeqn.pdf differ diff --git a/macros/latex-dev/required/amsmath/technote.pdf b/macros/latex-dev/required/amsmath/technote.pdf index dc43245376..73fafa5f80 100644 Binary files a/macros/latex-dev/required/amsmath/technote.pdf and b/macros/latex-dev/required/amsmath/technote.pdf differ diff --git a/macros/latex-dev/required/amsmath/testmath.pdf b/macros/latex-dev/required/amsmath/testmath.pdf index 3376cc9958..811bb8be8b 100644 Binary files a/macros/latex-dev/required/amsmath/testmath.pdf and b/macros/latex-dev/required/amsmath/testmath.pdf differ diff --git a/macros/latex-dev/required/firstaid/changes.txt b/macros/latex-dev/required/firstaid/changes.txt index 634e3e5c9b..f84c9dbc5b 100644 --- a/macros/latex-dev/required/firstaid/changes.txt +++ b/macros/latex-dev/required/firstaid/changes.txt @@ -1,8 +1,28 @@ +2021-06-28 Frank Mittelbach + + * latex2e-first-aid-for-external-files.dtx: + Add first aid for strange bogus para/end error due to listings's + redefinition of \vskip. + +2021-06-24 Frank Mittelbach + + * latex2e-first-aid-for-external-files.dtx (subsection{\footref first aid}): + Taken out first aid for memoir and scrbase, they are now fixed + + (section{The Implementation}): show more details if a first aid + is not applied. + +2021-06-23 Marcel Krüger + + * latex2e-first-aid-for-external-files.dtx: + Temporary fix for gh591 to be taken out when the engine is fixed. + 2021-06-08 Frank Mittelbach * latex2e-first-aid-for-external-files.dtx: ulem doesn't handle \hspace gracefully now that it is calc aware. - varwidth needs an additional \unskip when unraveling a vertical list. + varwidth needs an additional \unskip when unraveling a vertical list + (but only if that skip is 0pt) 2021-03-15 Frank Mittelbach diff --git a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx index 84ddacb269..702dca0229 100644 --- a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx +++ b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.dtx @@ -111,8 +111,8 @@ % \end{macrocode} % % \begin{macrocode} -\def\LaTeXFirstAidDate{2021/06/08} -\def\LaTeXFirstAidVersion{v1.0m} +\def\LaTeXFirstAidDate{2021/06/28} +\def\LaTeXFirstAidVersion{v1.0o} % \end{macrocode} % % \begin{macrocode} @@ -120,8 +120,8 @@ [\LaTeXFirstAidDate\space \LaTeXFirstAidVersion\space LaTeX kernel fixes to external files and packages] % \end{macrocode} - % - +% +% % \begin{macro}{\FirstAidNeededT} % This is a very simple help to ensure that we only apply first aid % to an unmodified package or class. It only works in the case the @@ -135,7 +135,13 @@ \ExplSyntaxOn \cs_new:Npn\FirstAidNeededT#1#2#3{ \exp_args:Ncx\str_if_eq:onF{ver@#1.#2}{#3} - { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!} } + { \typeout{==>~ First~ Aid~ for~ #1.#2~ no~ longer~ applied!^^J + \@spaces Expected:^^J + \@spaces\@spaces #3^^J + \@spaces but~ found:^^J + \@spaces\@spaces \use:c{ver@#1.#2}^^J + \@spaces so~ I'm~ assuming~ it~ got~ fixed. + } } \exp_args:Ncx\str_if_eq:onT{ver@#1.#2}{#3} } \ExplSyntaxOff @@ -221,9 +227,9 @@ % % \begin{macrocode} \newcommand\AtBeginOfFile [2] - {\AddToHook{file/before/#1}{#2}} + {\AddToHook{file/#1/before}{#2}} \newcommand\AtEndOfFile [2] - {\AddToHook{file/after/#1}{#2}} + {\AddToHook{file/#1/after}{#2}} % \end{macrocode} % % Some commands offered a starred form @@ -232,8 +238,8 @@ {\IfBooleanTF{#1}% {\@ifpackageloaded{#2}% {#3}% - {\AddToHook{package/before/#2}{#3}}}% - {\AddToHook{package/before/#2}{#3}}% + {\AddToHook{package/#2/before}{#3}}}% + {\AddToHook{package/#2/before}{#3}}% } % \end{macrocode} % @@ -242,8 +248,8 @@ {\IfBooleanTF{#1}% {\@ifpackageloaded{#2}% {#3}% - {\AddToHook{package/after/#2}{#3}}}% - {\AddToHook{package/after/#2}{#3}}% + {\AddToHook{package/#2/after}{#3}}}% + {\AddToHook{package/#2/after}{#3}}% } % \end{macrocode} % @@ -254,25 +260,25 @@ {\IfBooleanTF{#1}% {\@ifclassloaded{#2}% {#3}% - {\AddToHook{class/before/#2}{#3}}}% - {\AddToHook{class/before/#2}{#3}}% + {\AddToHook{class/#2/before}{#3}}}% + {\AddToHook{class/#2/before}{#3}}% } \DeclareDocumentCommand \AtEndOfClassFile {smm} {\IfBooleanTF{#1}% {\@ifclassloaded{#2}% {#3}% - {\AddToHook{class/after/#2}{#3}}}% - {\AddToHook{class/after/#2}{#3}}% + {\AddToHook{class/#2/after}{#3}}}% + {\AddToHook{class/#2/after}{#3}}% } % \end{macrocode} % % \begin{macrocode} \newcommand\AtBeginOfIncludeFile [2] - {\AddToHook{include/before/#1}{#2}} + {\AddToHook{include/#1/before}{#2}} \newcommand\AtEndOfIncludeFile [2] - {\AddToHook{include/end/#1}{#2}} + {\AddToHook{include/#1/end}{#2}} \newcommand\AfterIncludeFile [2] - {\AddToHook{include/after/#1}{#2}} + {\AddToHook{include/#1/after}{#2}} % \end{macrocode} % % \begin{macrocode} @@ -296,7 +302,7 @@ % If the package gets updated one can easily take that out simply % through %\begin{verbatim} -% \RemoveFromHook{file/after/biditools.sty}[firstaid] +% \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. @@ -306,7 +312,7 @@ % \end{macrocode} % % \begin{macrocode} -\AddToHook{file/after/biditools.sty}[firstaid]{% +\AddToHook{file/biditools.sty/after}[firstaid]{% \FirstAidNeededT{biditools}{sty}% {2020/05/13 v2 Programming tools for bidi package}% {% @@ -341,7 +347,7 @@ % Again a case of a no longer correct \cs{endgroup} in document. % Here the fix is simply though. % \begin{macrocode} -\AddToHook{file/after/dinbrief.cls}[firstaid]{% +\AddToHook{file/dinbrief.cls/after}[firstaid]{% \FirstAidNeededT{dinbrief}{cls}{2000/03/02 LaTeX2e class}% {\AddToHook{env/document/begin}{\begingroup}}% } @@ -363,7 +369,7 @@ % % \begin{macrocode} \ExplSyntaxOn -\AddToHook{file/after/pgfpages.sty}[firstaid]{% +\AddToHook{file/pgfpages.sty/after}[firstaid]{% % \end{macrocode} % Undo overwriting \cs{shipout}: % \begin{macrocode} @@ -390,7 +396,7 @@ % % \begin{macrocode} \ExplSyntaxOn -\AddToHook{file/after/pgfmorepages.sty}[firstaid]{ +\AddToHook{file/pgfmorepages.sty/after}[firstaid]{ \cs_set_nopar:Npn \pgfhookintoshipout { \cs_set_eq:NN \pgfpages@originalshipout \tex_shipout:D \cs_set_eq:NN \tex_shipout:D \pgfpages@interceptshipout @@ -468,7 +474,7 @@ % \end{macrocode} % % \begin{macrocode} -\AddToHook{file/after/CJK.sty}[firstaid]{% +\AddToHook{file/CJK.sty/after}[firstaid]{% \FirstAidNeededT{CJK}{sty}% {2015/04/18 4.8.4}% {% @@ -493,20 +499,22 @@ % % A few classes unconditionally define \cs{footref}. Until that has % changed we provide some first aid to let them do this. +% +% --- This seems to be resolved now --- % % \begin{macrocode} -\AddToHook{file/after/scrkbase.sty}[firstaid]{% - \FirstAidNeededT{scrkbase}{sty}% - {2020/09/21 v3.32 KOMA-Script package (KOMA-Script-dependent basics and keyval usage)}% - {\let\footref\@undefined} - } +%\AddToHook{file/scrkbase.sty/after}[firstaid]{% +% \FirstAidNeededT{scrkbase}{sty}% +% {2020/09/21 v3.32 KOMA-Script package (KOMA-Script-dependent basics and keyval usage)}% +% {\let\footref\@undefined} +% } % \end{macrocode} % % \begin{macrocode} -\AddToHook{class/before/memoir}[firstaid]{% - % for version {2020/10/04 v3.7n configurable book, report, article document class}% - \let\footref\@undefined -} +%\AddToHook{class/memoir/before}[firstaid]{% +% % for version {2020/10/04 v3.7n configurable book, report, article document class}% +% \let\footref\@undefined +%} % \end{macrocode} % % @@ -528,7 +536,7 @@ % This firstaid therefore jumps over the problematical point by % pushing the count allocation to a safe value if necessary. % \begin{macrocode} -\AddToHook{file/after/bigfoot.sty}{% +\AddToHook{file/bigfoot.sty/after}{% \ifnum\count10<\insc@unt \global\count10=\insc@unt \fi @@ -548,7 +556,7 @@ % % % -% \subsection{\cs{ulem} first aid} +% \subsection{\pkg{ulem} first aid} % % In 2020 we fixed various kernel commands to accept \pkg{calc} % syntax. The \pkg{ulem} package redefines some internals and that @@ -558,14 +566,14 @@ % moment \pkg{ulem} gets adjusted. % % \begin{macrocode} -\AddToHook{file/after/ulem.sty}[firstaid]{% +\AddToHook{file/ulem.sty/after}[firstaid]{% \def\@hspace#1{\begingroup\setlength\skip@{#1}% \edef\x{\endgroup\hskip\the\skip@\relax}\x}% } % \end{macrocode} % % -% \subsection{\cs{varwidth} first aid} +% \subsection{\pkg{varwidth} first aid} % % The \pkg{varwidth} package does a lot of low-level paragraph % manipulation assuming traditional \TeX{} paragraphs. However, with @@ -577,13 +585,13 @@ % \cs{unskip}. % % \begin{macrocode} -\AddToHook{file/after/varwidth.sty}[firstaid]{% +\AddToHook{file/varwidth.sty/after}[firstaid]{% \FirstAidNeededT{varwidth}{sty}% {2009/03/30 ver 0.92; \space Variable-width minipages}% {% \def\@vwid@sift{% \skip@\lastskip\unskip - \unskip % <---- the first aid here + \ifdim\lastskip=\z@\unskip\fi % <---- the first aid here (not just unskip) \dimen@\lastkern\unkern \count@\lastpenalty\unpenalty \setbox\z@\lastbox @@ -618,6 +626,88 @@ % {Temporary fixes for the kernel \\ % (until the next patch-level release)} % +% This fixes GitHub issue 591. It is only needed in Lua\TeX\ and replaces just one +% instance of \cs{tex\_par:D} with the following version which removes +% other nodes in the current list first. +% \begin{macrocode} +\ExplSyntaxOn +\sys_if_engine_luatex:T + { + \newluafunction \g__para_end_empty_par_id_int + \exp_args:Nx \everyjob { + \exp_not:V \everyjob + \exp_not:N \lua_now:n { + local~texnest, flush_list, par_token = tex.nest, node.flush_list, token.create'tex_par:D'~ + lua.get_functions_table()[\int_use:N \g__para_end_empty_par_id_int] = function() + local~nest_level = texnest.top~ + local~cur_head = nest_level.head~ + flush_list(cur_head.next) + nest_level.tail, cur_head.next = cur_head, nil~ + token.put_next(par_token) + end + } + } + \protected \luadef \__para_end_empty_par: \g__para_end_empty_par_id_int + \group_begin: + \cs_set:Npn \__para_extract_everypar:w #1 \the \toks #2 \s_stop + { + \tl_gset:Nn \g__para_standard_everypar_tl { + \box_gset_to_last:N \g_para_indent_box + \group_begin: + \__para_end_empty_par: + \group_end: + \tex_everypar:D { \msg_error:nnnn { hooks }{ para-mode }{before}{vertical} } + \@kernel@before@para@before + \hook_use:n {para/before} + \group_begin: + \tex_everypar:D {} + \skip_zero:N \tex_parskip:D + \tex_noindent:D + \group_end: + \tex_everypar:D{\g__para_standard_everypar_tl} + \@kernel@before@para@begin + \hook_use:n {para/begin} + \if_mode_horizontal: \else: + \msg_error:nnnn { hooks }{ para-mode }{begin}{vertical} \fi: + \__para_handle_indent: + \the \toks #2 + } + } + \exp_last_unbraced:No \__para_extract_everypar:w \g__para_standard_everypar_tl \s_stop + \group_end: + } +\ExplSyntaxOff +% \end{macrocode} +% +% The next fixes Github issue 605 (by inserting a \cs{scan\_stop:} +% before doing the check for hmode). +% \begin{macrocode} +\ExplSyntaxOn +\cs_set_protected:Npn \para_end: { + \scan_stop: + \mode_if_horizontal:TF { + \mode_if_inner:F { + \tex_unskip:D + \hook_use:n{para/end} + \@kernel@after@para@end + \mode_if_horizontal:TF { + \if_int_compare:w 0 < \tex_lastnodetype:D + \tex_kern:D \c_zero_dim + \fi: + \tex_par:D + \hook_use:n{para/after} + \@kernel@after@para@after + } + { \msg_error:nnnn { hooks }{ para-mode }{end}{horizontal} } + } + } + \tex_par:D +} +\cs_set_eq:NN \par \para_end: +\cs_set_eq:NN \@@par \para_end: +\cs_set_eq:NN \endgraf \para_end: +\ExplSyntaxOff +% \end{macrocode} % % \begin{macrocode} % diff --git a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf index 137d4a9274..d57cfbc166 100644 Binary files a/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf and b/macros/latex-dev/required/firstaid/latex2e-first-aid-for-external-files.pdf differ diff --git a/macros/latex-dev/required/graphics/README.md b/macros/latex-dev/required/graphics/README.md index 51707022ae..c2ba96233d 100644 --- a/macros/latex-dev/required/graphics/README.md +++ b/macros/latex-dev/required/graphics/README.md @@ -1,7 +1,7 @@ The LaTeX `graphics` bundle =========================== -Release 2021-11-15 pre-release 1 +Release 2021-11-15 pre-release 2 Overview -------- diff --git a/macros/latex-dev/required/graphics/changes.txt b/macros/latex-dev/required/graphics/changes.txt index 0616e3b692..bd328646f1 100644 --- a/macros/latex-dev/required/graphics/changes.txt +++ b/macros/latex-dev/required/graphics/changes.txt @@ -4,12 +4,24 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2021-09-16 David Carlisle + + * graphicx.dtx: Add an alt key to \includegraphics gh/651 + +2021-08-13 David Carlisle + + * longtable.dtx: ensure \ext@table is defined (gh/g37) + +2021-08-11 David Carlisle + + * trig.dtx: correct csname for 180 \@clxxx not \@clxx + ================================================================================ All changes above are only part of the development branch for the next release. ================================================================================ ######################### -# 2021-16-01 Release +# 2021-06-01 Release ######################### 2021-03-04 Phelype Oleinik diff --git a/macros/latex-dev/required/graphics/color.pdf b/macros/latex-dev/required/graphics/color.pdf index 1118a879ed..dbc9c25788 100644 Binary files a/macros/latex-dev/required/graphics/color.pdf and b/macros/latex-dev/required/graphics/color.pdf differ diff --git a/macros/latex-dev/required/graphics/drivers.pdf b/macros/latex-dev/required/graphics/drivers.pdf index 009b496ee6..ecd63d0fb4 100644 Binary files a/macros/latex-dev/required/graphics/drivers.pdf and b/macros/latex-dev/required/graphics/drivers.pdf differ diff --git a/macros/latex-dev/required/graphics/epsfig.pdf b/macros/latex-dev/required/graphics/epsfig.pdf index 40ba161410..5787ecf75b 100644 Binary files a/macros/latex-dev/required/graphics/epsfig.pdf and b/macros/latex-dev/required/graphics/epsfig.pdf differ diff --git a/macros/latex-dev/required/graphics/graphics.pdf b/macros/latex-dev/required/graphics/graphics.pdf index d52ec97ee7..2a78345161 100644 Binary files a/macros/latex-dev/required/graphics/graphics.pdf and b/macros/latex-dev/required/graphics/graphics.pdf differ diff --git a/macros/latex-dev/required/graphics/graphicx.dtx b/macros/latex-dev/required/graphics/graphicx.dtx index a2fc17e393..29e0db5b12 100644 --- a/macros/latex-dev/required/graphics/graphicx.dtx +++ b/macros/latex-dev/required/graphics/graphicx.dtx @@ -19,7 +19,7 @@ % \ProvidesFile{graphicx.drv} % \fi % \ProvidesFile{graphicx.dtx} - [2020/12/05 v1.2c Enhanced LaTeX Graphics (DPC,SPQR)] + [2021/09/16 v1.2d Enhanced LaTeX Graphics (DPC,SPQR)] % % \iffalse %<*driver> @@ -565,6 +565,15 @@ % \end{macrocode} % \end{key} % +% \begin{key}{Gin}{alt} +% \changes{v1.2d}{2021/09/16 }{alt key gh/651} +% By default the |alt| key does nothing but may be used +% for alternative text for accessibility uses in extensions. +% \begin{macrocode} +\define@key{Gin}{alt}{} +% \end{macrocode} +% \end{key} +% % \begin{macro}{\Gin@boolkey} % Helper function for defining boolean valued functions. The order of % arguments allows |\lowercase| to only act on the user-supplied diff --git a/macros/latex-dev/required/graphics/graphicx.pdf b/macros/latex-dev/required/graphics/graphicx.pdf index 01724f9bb3..210d251efc 100644 Binary files a/macros/latex-dev/required/graphics/graphicx.pdf and b/macros/latex-dev/required/graphics/graphicx.pdf differ diff --git a/macros/latex-dev/required/graphics/grfguide.pdf b/macros/latex-dev/required/graphics/grfguide.pdf index b5e770a191..792686e0af 100644 Binary files a/macros/latex-dev/required/graphics/grfguide.pdf and b/macros/latex-dev/required/graphics/grfguide.pdf differ diff --git a/macros/latex-dev/required/graphics/keyval.pdf b/macros/latex-dev/required/graphics/keyval.pdf index ff9f10e7e0..3571d1347e 100644 Binary files a/macros/latex-dev/required/graphics/keyval.pdf and b/macros/latex-dev/required/graphics/keyval.pdf differ diff --git a/macros/latex-dev/required/graphics/lscape.pdf b/macros/latex-dev/required/graphics/lscape.pdf index d2bd4fa457..caf9f95ee7 100644 Binary files a/macros/latex-dev/required/graphics/lscape.pdf and b/macros/latex-dev/required/graphics/lscape.pdf differ diff --git a/macros/latex-dev/required/graphics/rotating.pdf b/macros/latex-dev/required/graphics/rotating.pdf index 1f257d72e5..e4c4a0df13 100644 Binary files a/macros/latex-dev/required/graphics/rotating.pdf and b/macros/latex-dev/required/graphics/rotating.pdf differ diff --git a/macros/latex-dev/required/graphics/rotex.pdf b/macros/latex-dev/required/graphics/rotex.pdf index 6d963e82bd..6a89c2edff 100644 Binary files a/macros/latex-dev/required/graphics/rotex.pdf and b/macros/latex-dev/required/graphics/rotex.pdf differ diff --git a/macros/latex-dev/required/graphics/trig.dtx b/macros/latex-dev/required/graphics/trig.dtx index 83e774ff20..533f3b0648 100644 --- a/macros/latex-dev/required/graphics/trig.dtx +++ b/macros/latex-dev/required/graphics/trig.dtx @@ -19,7 +19,7 @@ % \ProvidesFile{trig.drv} % \fi % \ProvidesFile{trig.dtx} - [2016/01/03 v1.10 sin cos tan (DPC)] + [2021/08/11 v1.11 sin cos tan (DPC)] % % \iffalse % @@ -86,13 +86,16 @@ %<*package> % \end{macrocode} % -% \begin{macro}{\nin@ty}\begin{macro}{\@clxx} -% \begin{macro}{\@lxxi}\begin{macro}{\@mmmmlxviii} +% \begin{macro}{\nin@ty} +% \begin{macro}{\@clxxx} +% \changes{v1.11}{2021/08/11}{180 is clxxx not clxx} +% \begin{macro}{\@lxxi} +% \begin{macro}{\@mmmmlxviii} % Some useful constants for converting between degrees and radians. % $$\frac{\pi}{180}\simeq\frac{355}{113\times180}=\frac{71}{4068}$$ % \begin{macrocode} \chardef\nin@ty=90 -\chardef\@clxx=180 +\chardef\@clxxx=180 \chardef\@lxxi=71 \mathchardef\@mmmmlxviii=4068 % \end{macrocode} @@ -217,7 +220,7 @@ % \begin{macrocode} \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} % \end{macrocode} diff --git a/macros/latex-dev/required/graphics/trig.pdf b/macros/latex-dev/required/graphics/trig.pdf index fce1bfec2f..fcfbf0a4da 100644 Binary files a/macros/latex-dev/required/graphics/trig.pdf and b/macros/latex-dev/required/graphics/trig.pdf differ diff --git a/macros/latex-dev/required/tools/README.md b/macros/latex-dev/required/tools/README.md index d2f51a78c9..4eb7829acd 100644 --- a/macros/latex-dev/required/tools/README.md +++ b/macros/latex-dev/required/tools/README.md @@ -1,7 +1,7 @@ The LaTeX `tools` bundle ======================== -Release 2021-11-15 pre-release 1 +Release 2021-11-15 pre-release 2 Overview -------- diff --git a/macros/latex-dev/required/tools/afterpage.pdf b/macros/latex-dev/required/tools/afterpage.pdf index 118a18b658..f1532c82b6 100644 Binary files a/macros/latex-dev/required/tools/afterpage.pdf and b/macros/latex-dev/required/tools/afterpage.pdf differ diff --git a/macros/latex-dev/required/tools/array.dtx b/macros/latex-dev/required/tools/array.dtx index 84376a486b..eab451fccd 100644 --- a/macros/latex-dev/required/tools/array.dtx +++ b/macros/latex-dev/required/tools/array.dtx @@ -33,7 +33,7 @@ %<+package>\DeclareCurrentRelease{}{2020-10-01} %<+package> %<+package>\ProvidesPackage{array} -%<+package> [2021/04/20 v2.5e Tabular extension package (FMi)] +%<+package> [2021/07/12 v2.5f Tabular extension package (FMi)] % % \fi % @@ -2489,9 +2489,11 @@ % \begin{macro}{\endtabular*} % To end a \textsf{tabular} or \textsf{tabular$*$} environment we % call up =\endarray=, close the math mode and then the surrounding -% =\hbox=. +% =\hbox=. This math mode around the tabular should not be surrounded by +% any =\mathsurround= so we cancel that with =\m@th=. +% \changes{v2.5f}{2021/07/12}{Cancel any outside \cs{mathsurround} (gh/614)} % \begin{macrocode} -\def\endtabular{\endarray $\egroup} +\def\endtabular{\endarray\m@th $\egroup} \expandafter\let\csname endtabular*\endcsname=\endtabular % \end{macrocode} % \end{macro} diff --git a/macros/latex-dev/required/tools/array.pdf b/macros/latex-dev/required/tools/array.pdf index a0b803946e..28778ed39c 100644 Binary files a/macros/latex-dev/required/tools/array.pdf and b/macros/latex-dev/required/tools/array.pdf differ diff --git a/macros/latex-dev/required/tools/bm.pdf b/macros/latex-dev/required/tools/bm.pdf index 2e7cf36c46..e69390ef57 100644 Binary files a/macros/latex-dev/required/tools/bm.pdf and b/macros/latex-dev/required/tools/bm.pdf differ diff --git a/macros/latex-dev/required/tools/calc.pdf b/macros/latex-dev/required/tools/calc.pdf index dd772bbba3..327661413a 100644 Binary files a/macros/latex-dev/required/tools/calc.pdf and b/macros/latex-dev/required/tools/calc.pdf differ diff --git a/macros/latex-dev/required/tools/changes.txt b/macros/latex-dev/required/tools/changes.txt index 17278e4a54..aa5a341960 100644 --- a/macros/latex-dev/required/tools/changes.txt +++ b/macros/latex-dev/required/tools/changes.txt @@ -1,4 +1,3 @@ - ======================================================================= This file lists changes to the LaTeX2e files in reverse chronological order. It is provided for convenience only. It therefore makes no claims to @@ -6,6 +5,28 @@ completeness or accuracy and it contains some references to files that are not part of the distribution. ======================================================================= +2021-09-01 David Carlisle + + * longtable.dtx: add \@nobreakfalse for github/173 and \if@noskipsec for gh/131 + +2021-07-12 Frank Mittelbach + + * array.dtx (section{The Environment Definitions}): + Cancel any outside \mathsurround on the outside of tabular which is + internally execuded in math mode (gh/614) + +2021-07-07 Frank Mittelbach + + * varioref.dtx (subsubsection{Supporting ranges}): + Use 3 additional (empty) arguments as default in case + nameref is active (sx/603948) + +2021-07-06 Frank Mittelbach + + * multicol.dtx (subsection{The output routines}]): + Removed spurious but harmless empty line (\par) in + code. + ================================================================================ All changes above are only part of the development branch for the next release. ================================================================================ diff --git a/macros/latex-dev/required/tools/dcolumn.pdf b/macros/latex-dev/required/tools/dcolumn.pdf index 8384bed482..c6e3921f1e 100644 Binary files a/macros/latex-dev/required/tools/dcolumn.pdf and b/macros/latex-dev/required/tools/dcolumn.pdf differ diff --git a/macros/latex-dev/required/tools/delarray.pdf b/macros/latex-dev/required/tools/delarray.pdf index 81c884c7ff..e5ad5342da 100644 Binary files a/macros/latex-dev/required/tools/delarray.pdf and b/macros/latex-dev/required/tools/delarray.pdf differ diff --git a/macros/latex-dev/required/tools/enumerate.pdf b/macros/latex-dev/required/tools/enumerate.pdf index 4e13322604..1cf36525a6 100644 Binary files a/macros/latex-dev/required/tools/enumerate.pdf and b/macros/latex-dev/required/tools/enumerate.pdf differ diff --git a/macros/latex-dev/required/tools/fileerr.pdf b/macros/latex-dev/required/tools/fileerr.pdf index 95ef092d45..9c6316e99a 100644 Binary files a/macros/latex-dev/required/tools/fileerr.pdf and b/macros/latex-dev/required/tools/fileerr.pdf differ diff --git a/macros/latex-dev/required/tools/fontsmpl.pdf b/macros/latex-dev/required/tools/fontsmpl.pdf index 2e852de100..123c70457c 100644 Binary files a/macros/latex-dev/required/tools/fontsmpl.pdf and b/macros/latex-dev/required/tools/fontsmpl.pdf differ diff --git a/macros/latex-dev/required/tools/ftnright.pdf b/macros/latex-dev/required/tools/ftnright.pdf index 55a28a91a3..78e4d069f7 100644 Binary files a/macros/latex-dev/required/tools/ftnright.pdf and b/macros/latex-dev/required/tools/ftnright.pdf differ diff --git a/macros/latex-dev/required/tools/hhline.pdf b/macros/latex-dev/required/tools/hhline.pdf index fc6171e454..36a4dd7104 100644 Binary files a/macros/latex-dev/required/tools/hhline.pdf and b/macros/latex-dev/required/tools/hhline.pdf differ diff --git a/macros/latex-dev/required/tools/indentfirst.pdf b/macros/latex-dev/required/tools/indentfirst.pdf index 5d10ea37a8..709cf3fef5 100644 Binary files a/macros/latex-dev/required/tools/indentfirst.pdf and b/macros/latex-dev/required/tools/indentfirst.pdf differ diff --git a/macros/latex-dev/required/tools/layout.pdf b/macros/latex-dev/required/tools/layout.pdf index 7d34729a49..5b447f8f6d 100644 Binary files a/macros/latex-dev/required/tools/layout.pdf and b/macros/latex-dev/required/tools/layout.pdf differ diff --git a/macros/latex-dev/required/tools/longtable.dtx b/macros/latex-dev/required/tools/longtable.dtx index 457891dac7..b66aef075e 100644 --- a/macros/latex-dev/required/tools/longtable.dtx +++ b/macros/latex-dev/required/tools/longtable.dtx @@ -37,7 +37,7 @@ % \ProvidesFile{longtable.drv} % \fi % \ProvidesFile{longtable.dtx} - [2021-05-07 v4.16 Multi-page Table package (DPC)] + [2021-09-01 v4.17 Multi-page Table package (DPC)] % % \iffalse %<*driver> @@ -973,6 +973,9 @@ % \begin{macro}{\c@table} % \begin{macro}{\fnum@table} % \begin{macro}{\tablename} +% \begin{macro}{\ext@table} +% \changes{v4.17}{2021/09/01} +% {ensure \cs{ext@table} is defined gh/637} % If the "table" counter is not defined (eg in "letter" style), define % it. (Added in V3.06.) % \begin{macrocode} @@ -983,10 +986,14 @@ \ifx\tablename\undefined \def\tablename{Table} \fi +\ifx\ext@table\undefined + \def\ext@table{lot} +\fi % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} +% \end{macro} % % \begin{macro}{\LT@out} % In a normal style, "longtable" uses the ".aux" file to record the @@ -1023,11 +1030,15 @@ % \subsection{The \env{longtable} environment} % % \begin{macro}{\longtable} +% \changes{v4.17}{2021/09/01} +% {\cs{@nobreakfalse} gh/173 \cs{ifnoskipsec} test for gh/131} % Called by "\begin{longtable}". This implementation does not work in % multiple column formats. "\par" added at V3.04. % \begin{macrocode} \def\longtable{% \par + \if@noskipsec\mbox{}\par\fi + \@nobreakfalse \ifx\multicols\@undefined \else \ifnum\col@number>\@ne diff --git a/macros/latex-dev/required/tools/longtable.pdf b/macros/latex-dev/required/tools/longtable.pdf index 80927e9f7b..05c3f41a99 100644 Binary files a/macros/latex-dev/required/tools/longtable.pdf and b/macros/latex-dev/required/tools/longtable.pdf differ diff --git a/macros/latex-dev/required/tools/multicol.dtx b/macros/latex-dev/required/tools/multicol.dtx index 1d16a01c15..25d4bc68db 100644 --- a/macros/latex-dev/required/tools/multicol.dtx +++ b/macros/latex-dev/required/tools/multicol.dtx @@ -98,7 +98,7 @@ % \ProvidesFile{multicol.drv} % \fi % \ProvidesFile{multicol.dtx} - [2019/12/09 v1.8y multicolumn formatting (FMi)] + [2021/07/06 v1.8z multicolumn formatting (FMi)] % % %% @@ -2281,7 +2281,7 @@ % |\@kludgeins| box will be the negation of the size by which the % page should be enlarged. If the star form of this command has % been used then we also need to shrink the resulting column. - +% % That local change will be reverted at the end of the output % routine So for the next page the original state will be % reestablished. However, in theory there is a possibility to sneak diff --git a/macros/latex-dev/required/tools/multicol.pdf b/macros/latex-dev/required/tools/multicol.pdf index 82adeb962e..e76bfdc8cc 100644 Binary files a/macros/latex-dev/required/tools/multicol.pdf and b/macros/latex-dev/required/tools/multicol.pdf differ diff --git a/macros/latex-dev/required/tools/rawfonts.pdf b/macros/latex-dev/required/tools/rawfonts.pdf index 223b57484d..e6163af063 100644 Binary files a/macros/latex-dev/required/tools/rawfonts.pdf and b/macros/latex-dev/required/tools/rawfonts.pdf differ diff --git a/macros/latex-dev/required/tools/shellesc.pdf b/macros/latex-dev/required/tools/shellesc.pdf index 87a3c463e5..2897cfc51a 100644 Binary files a/macros/latex-dev/required/tools/shellesc.pdf and b/macros/latex-dev/required/tools/shellesc.pdf differ diff --git a/macros/latex-dev/required/tools/showkeys.pdf b/macros/latex-dev/required/tools/showkeys.pdf index 7d9da9be0c..239bf98ed9 100644 Binary files a/macros/latex-dev/required/tools/showkeys.pdf and b/macros/latex-dev/required/tools/showkeys.pdf differ diff --git a/macros/latex-dev/required/tools/somedefs.pdf b/macros/latex-dev/required/tools/somedefs.pdf index 0bf8da7a7a..35da07a943 100644 Binary files a/macros/latex-dev/required/tools/somedefs.pdf and b/macros/latex-dev/required/tools/somedefs.pdf differ diff --git a/macros/latex-dev/required/tools/tabularx.pdf b/macros/latex-dev/required/tools/tabularx.pdf index 101fd32634..ac4f8d0765 100644 Binary files a/macros/latex-dev/required/tools/tabularx.pdf and b/macros/latex-dev/required/tools/tabularx.pdf differ diff --git a/macros/latex-dev/required/tools/theorem.pdf b/macros/latex-dev/required/tools/theorem.pdf index 5ac9039239..7464f0e78e 100644 Binary files a/macros/latex-dev/required/tools/theorem.pdf and b/macros/latex-dev/required/tools/theorem.pdf differ diff --git a/macros/latex-dev/required/tools/tools-overview.pdf b/macros/latex-dev/required/tools/tools-overview.pdf index 9c9f973bcd..8292ac5e8d 100644 Binary files a/macros/latex-dev/required/tools/tools-overview.pdf and b/macros/latex-dev/required/tools/tools-overview.pdf differ diff --git a/macros/latex-dev/required/tools/trace.pdf b/macros/latex-dev/required/tools/trace.pdf index 9c6c99faf9..ce8a6d778f 100644 Binary files a/macros/latex-dev/required/tools/trace.pdf and b/macros/latex-dev/required/tools/trace.pdf differ diff --git a/macros/latex-dev/required/tools/varioref.dtx b/macros/latex-dev/required/tools/varioref.dtx index eac06580e7..faf8b0383c 100644 --- a/macros/latex-dev/required/tools/varioref.dtx +++ b/macros/latex-dev/required/tools/varioref.dtx @@ -40,7 +40,7 @@ %\DeclareCurrentRelease{}{2019-10-01} % %\ProvidesPackage{varioref} -% [2020/08/11 v1.6e package for extended references (FMi)] +% [2021/07/07 v1.6f package for extended references (FMi)] % \fi % %% @@ -2413,9 +2413,11 @@ % and the page, thus defining the label this way. This means that % no label warning is generated for this label in case it is % undefined. +% \changes{v1.6f}{2021/07/07}{Use 3 additional (empty) arguments as +% default in case nameref is active} % \begin{macrocode} \def\vref@pagenum#1#2{% - \@ifundefined{r@#2}{\@namedef{r@#2}{{??}{??}}}{}% + \@ifundefined{r@#2}{\@namedef{r@#2}{{??}{??}{}{}{}}}{}% % \end{macrocode} % Extracting and saving the page number turned out to be a source of subtle % bugs. Initially it was done through an |\edef| with a bunch of diff --git a/macros/latex-dev/required/tools/varioref.pdf b/macros/latex-dev/required/tools/varioref.pdf index 5b72c6e823..3504106b14 100644 Binary files a/macros/latex-dev/required/tools/varioref.pdf and b/macros/latex-dev/required/tools/varioref.pdf differ diff --git a/macros/latex-dev/required/tools/verbatim.pdf b/macros/latex-dev/required/tools/verbatim.pdf index 768d0fa36b..11e237e5e3 100644 Binary files a/macros/latex-dev/required/tools/verbatim.pdf and b/macros/latex-dev/required/tools/verbatim.pdf differ diff --git a/macros/latex-dev/required/tools/xr.pdf b/macros/latex-dev/required/tools/xr.pdf index 2e53781fce..8b1eeee496 100644 Binary files a/macros/latex-dev/required/tools/xr.pdf and b/macros/latex-dev/required/tools/xr.pdf differ diff --git a/macros/latex-dev/required/tools/xspace.pdf b/macros/latex-dev/required/tools/xspace.pdf index cb250640f3..db9fa6bb44 100644 Binary files a/macros/latex-dev/required/tools/xspace.pdf and b/macros/latex-dev/required/tools/xspace.pdf differ diff --git a/macros/latex/contrib/elteikthesis/LICENSE b/macros/latex/contrib/elteikthesis/LICENSE index 569279193f..d760da3dee 100644 --- a/macros/latex/contrib/elteikthesis/LICENSE +++ b/macros/latex/contrib/elteikthesis/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2013-2020 Máté Cserép , Bálint Bognár +Copyright (c) 2013-2021 Máté Cserép , Bálint Bognár Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/macros/latex/contrib/elteikthesis/README.md b/macros/latex/contrib/elteikthesis/README.md index fc0e06a1c4..4b8add09a0 100644 --- a/macros/latex/contrib/elteikthesis/README.md +++ b/macros/latex/contrib/elteikthesis/README.md @@ -27,12 +27,17 @@ pdflatex elteikthesis.tex Compilation might be carried out through a preferred IDE (e.g. [TexStudio](https://www.texstudio.org/)), given the same commands should be executed. +## Syntax highlighting of code blocks + +The minted package is also supported for syntax highlighting. For its usage the Python interpreter and the `Pygments` package must be installed as a prerequisite. +See the `elteikthesis-minted.tex` file for example. + ## Required packages (without completeness) **Image handling:** * Minimal and maximal size: [adjustbox](https://ctan.org/pkg/adjustbox) -* Subfigures: [subfigure](https://ctan.org/pkg/subfigure) +* Subfigures: [subcaption](https://ctan.org/pkg/subcaption) * Rotation: [rotating](https://ctan.org/pkg/rotating) **Table management:** @@ -51,8 +56,8 @@ Compilation might be carried out through a preferred IDE (e.g. [TexStudio](https * Mathematical formulas: [amsmath](https://ctan.org/pkg/amsmath) * Mathematical definitions: [amsthm](https://ctan.org/pkg/amsthm) * Mathematical symbols: [amsfonts](https://ctan.org/pkg/amsfonts) -* Algorithms: [algorithmic](https://ctan.org/pkg/algorithms) -* Code blocks: [listingsutf8](https://ctan.org/pkg/listingsutf8) +* Algorithms: [algpseudocode](https://www.ctan.org/pkg/algorithmicx) +* Code blocks: [listingsutf8](https://ctan.org/pkg/listingsutf8), [minted](https://ctan.org/pkg/minted) **Miscellaneous:** diff --git a/macros/latex/contrib/elteikthesis/README.pdf b/macros/latex/contrib/elteikthesis/README.pdf index 4392582e6e..0cfeb82960 100644 Binary files a/macros/latex/contrib/elteikthesis/README.pdf and b/macros/latex/contrib/elteikthesis/README.pdf differ diff --git a/macros/latex/contrib/elteikthesis/README_hu.md b/macros/latex/contrib/elteikthesis/README_hu.md index 3e39384717..0f9550a339 100644 --- a/macros/latex/contrib/elteikthesis/README_hu.md +++ b/macros/latex/contrib/elteikthesis/README_hu.md @@ -27,12 +27,17 @@ pdflatex elteikthesis.tex A fordításhoz tetszőleges fejlesztő környezet is használható (pl. [TexStudio](https://www.texstudio.org/)), ugyanezen utasítások kiadásával. +## Kódblokkok szintaxis kiemelése + +A *minted* csomag támogatott a forráskódok szedésére és szintaxis kiemelésére. Használatához szükséges a Python interpreter és a `Pygments` csomag telepítése. +Lásd a `elteikthesis-minted.tex` fájlt példaként. + ## Fontosabb függőségi csomagok **Képkezelés:** * Minimális és maximális méret: [adjustbox](https://ctan.org/pkg/adjustbox) -* Alábrák: [subfigure](https://ctan.org/pkg/subfigure) +* Alábrák: [subcaption](https://ctan.org/pkg/subcaption) * Forgatás: [rotating](https://ctan.org/pkg/rotating) **Táblázatkezelés:** @@ -51,8 +56,8 @@ A fordításhoz tetszőleges fejlesztő környezet is használható (pl. [TexStu * Matematikai formulák: [amsmath](https://ctan.org/pkg/amsmath) * Matematikai definíciók: [amsthm](https://ctan.org/pkg/amsthm) * Matematikai szimbólumok: [amsfonts](https://ctan.org/pkg/amsfonts) -* Algoritmusok: [algorithmic](https://ctan.org/pkg/algorithms) -* Kódblokkok: [listingsutf8](https://ctan.org/pkg/listingsutf8) +* Algoritmusok: [algpseudocode](https://www.ctan.org/pkg/algorithmicx) +* Kódblokkok: [listingsutf8](https://ctan.org/pkg/listingsutf8), [minted](https://ctan.org/pkg/minted) **Egyebek:** diff --git a/macros/latex/contrib/elteikthesis/README_hu.pdf b/macros/latex/contrib/elteikthesis/README_hu.pdf index d1f7c5f38e..dc5029c0b5 100644 Binary files a/macros/latex/contrib/elteikthesis/README_hu.pdf and b/macros/latex/contrib/elteikthesis/README_hu.pdf differ diff --git a/macros/latex/contrib/elteikthesis/chapters/impl.tex b/macros/latex/contrib/elteikthesis/chapters/impl.tex index aad6f326f3..7f9e0a81fc 100644 --- a/macros/latex/contrib/elteikthesis/chapters/impl.tex +++ b/macros/latex/contrib/elteikthesis/chapters/impl.tex @@ -95,21 +95,21 @@ Példa forrása: \href{https://www.inf.u-szeged.hu/actacybernetica/}{Acta Cybern \label{alg:ibb} \textbf{\underline{Funct}} IBB($S,f$) \begin{algorithmic}[1] % sorszámok megjelenítése minden n. sor előtt, most n = 1 -\STATE Set the working list ${\cal L}_W$ := $\{S\}$ and the final list ${\cal L}_Q$ := $\{\}$ -\WHILE{( ${\cal L}_W \neq \emptyset$ )} \label{alg:igoend} - \STATE Select an interval $X$ from ${\cal L}_W$ \label{step:selrule}\COMMENT{Selection rule} - \STATE Compute $lbf(X)$ \COMMENT{Bounding rule} - \IF[Elimination rule]{$X$ cannot be eliminated} - \STATE Divide $X$ into $X^j,\ j=1,\dots, p$, subintervals \COMMENT{Division rule} - \FOR{$j=1,\ldots,p$} - \IF[Termination rule]{$X^j$ satisfies the termination criterion} - \STATE Store $X^j$ in ${\cal L}_W$ - \ELSE - \STATE Store $X^j$ in ${\cal L}_W$ - \ENDIF - \ENDFOR - \ENDIF -\ENDWHILE -\STATE \textbf{return} ${\cal L}_Q$ +\State Set the working list ${\cal L}_W$ := $\{S\}$ and the final list ${\cal L}_Q$ := $\{\}$ +\While{( ${\cal L}_W \neq \emptyset$ )} \label{alg:igoend} + \State Select an interval $X$ from ${\cal L}_W$ \label{step:selrule}\Comment{Selection rule} + \State Compute $lbf(X)$ \Comment{Bounding rule} + \If{$X$ cannot be eliminated} \Comment{Elimination rule} + \State Divide $X$ into $X^j,\ j=1,\dots, p$, subintervals \Comment{Division rule} + \For{$j=1,\ldots,p$} + \If{$X^j$ satisfies the termination criterion} \Comment{Termination rule} + \State Store $X^j$ in ${\cal L}_W$ + \Else + \State Store $X^j$ in ${\cal L}_W$ + \EndIf + \EndFor + \EndIf +\EndWhile +\State \textbf{return} ${\cal L}_Q$ \end{algorithmic} \end{algorithm} diff --git a/macros/latex/contrib/elteikthesis/chapters/user.tex b/macros/latex/contrib/elteikthesis/chapters/user.tex index 47e302f99e..f0318a5c2f 100644 --- a/macros/latex/contrib/elteikthesis/chapters/user.tex +++ b/macros/latex/contrib/elteikthesis/chapters/user.tex @@ -85,10 +85,10 @@ In non ipsum fermentum urna feugiat rutrum a at odio. Pellentesque habitant morb \begin{figure}[H] \centering - \subfigure[Vestibulum quis mattis urna]{ + \subcaptionbox{Vestibulum quis mattis urna}{ \includegraphics[width=0.45\linewidth]{elte_cimer_szines}} \hspace{5pt} - \subfigure[Donec hendrerit quis dui sit amet venenatis]{ + \subcaptionbox{Donec hendrerit quis dui sit amet venenatis}{ \includegraphics[width=0.45\linewidth]{elte_cimer_szines}} \caption{Aenean porttitor mi volutpat massa gravida} \label{fig:example-2} diff --git a/macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf b/macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf new file mode 100644 index 0000000000..409b970455 Binary files /dev/null and b/macros/latex/contrib/elteikthesis/elteikthesis-minted.pdf differ diff --git a/macros/latex/contrib/elteikthesis/elteikthesis-minted.tex b/macros/latex/contrib/elteikthesis/elteikthesis-minted.tex new file mode 100644 index 0000000000..c45a1afa5c --- /dev/null +++ b/macros/latex/contrib/elteikthesis/elteikthesis-minted.tex @@ -0,0 +1,33 @@ +\documentclass{elteikthesis}[2021/09/20] + +\usepackage[newfloat]{minted} + +\begin{document} +\documentlang{magyar} + +\chapter{Minted forráskód} +\label{ch:chapter} + +\begin{listing}[H] +\begin{minted}{cpp} +#include + +int main() +{ + int c; + std::cout << "Hello World!" << std::endl; + + std::cout << "Press any key to exit." << std::endl; + std::cin >> c; + + return 0; +} +\end{minted} +\caption{Hello World in C++} +\end{listing} + +\phantomsection +\addcontentsline{toc}{chapter}{\lstcodelabel} +\listoflistings + +\end{document} \ No newline at end of file diff --git a/macros/latex/contrib/elteikthesis/elteikthesis.cls b/macros/latex/contrib/elteikthesis/elteikthesis.cls index 347404ee8f..bdb616649f 100644 --- a/macros/latex/contrib/elteikthesis/elteikthesis.cls +++ b/macros/latex/contrib/elteikthesis/elteikthesis.cls @@ -1,7 +1,7 @@ %% MIT License %% -%% Version 2.1, 2020/05/15 -%% Copyright (c) 2013-2020 Máté Cserép , Bálint Bognár +%% Version 2.2, 2021/09/20 +%% Copyright (c) 2013-2021 Máté Cserép , Bálint Bognár %% %% Permission is hereby granted, free of charge, to any person obtaining a copy %% of this software and associated documentation files (the "Software"), to deal @@ -29,7 +29,7 @@ %% to the original package. \NeedsTeXFormat{LaTeX2e} -\ProvidesClass{elteikthesis}[2020/05/15 ELTE FI bachelor and master thesis template] +\ProvidesClass{elteikthesis}[2021/09/20 ELTE FI bachelor and master thesis template] % LaTeX programozói eszközök \RequirePackage{etoolbox} @@ -60,8 +60,13 @@ % ------------------------------ % Karakterkódolás, nyelv -\RequirePackage[utf8]{inputenc} -\RequirePackage[T1]{fontenc} +\RequirePackage{iftex} % XeTex or LuaTex +\iftutex + \RequirePackage{fontspec} +\else % other (PdfTex) + \RequirePackage[utf8]{inputenc} + \RequirePackage[T1]{fontenc} +\fi \RequirePackage[english,magyar]{babel} \RequirePackage{indentfirst} % ------------------------------ @@ -109,6 +114,7 @@ \newcommand{\alglabel}{Algoritmus} \newcommand{\biblabel}{Irodalomjegyzék} + \newcommand{\lstalgorithmlabel}{Algoritmusjegyzék} \newcommand{\lstfigurelabel}{Ábrajegyzék} \newcommand{\lsttablelabel}{Táblázatjegyzék} \newcommand{\lstcodelabel}{Forráskódjegyzék} @@ -132,6 +138,7 @@ \newcommand{\alglabel}{Algorithm} \newcommand{\biblabel}{Bibliography} + \newcommand{\lstalgorithmlabel}{List of Algorithms} \newcommand{\lstfigurelabel}{List of Figures} \newcommand{\lsttablelabel}{List of Tables} \newcommand{\lstcodelabel}{List of Codes} @@ -143,6 +150,13 @@ } % ------------------------------ +% ------------------------------ +% Margók +\RequirePackage[left=35mm, right=25mm, top=25mm, bottom=25mm, headheight=16pt]{geometry} +%\setlength{\textwidth}{150mm} +%\setlength{\textheight}{247mm} +% ------------------------------ + % ------------------------------ % Fejlécek és láblécek \RequirePackage{fancyhdr} @@ -201,7 +215,7 @@ % Maximális ill. minimális méret megadása ábráknak \RequirePackage[export]{adjustbox} % Több ábra egy figure-on belül -\RequirePackage[center]{subfigure} +\RequirePackage{subcaption} % Ábrák forgatása \RequirePackage{rotating} @@ -221,13 +235,6 @@ \paperheight 297mm % ------------------------------ -% ------------------------------ -% Margók -\RequirePackage[left=35mm, right=25mm, top=25mm, bottom=25mm]{geometry} -%\setlength{\textwidth}{150mm} -%\setlength{\textheight}{247mm} -% ------------------------------ - % ------------------------------ % Térköz bekezdések közé \iftoggle{parspace}{ @@ -254,7 +261,6 @@ % ------------------------------ % Helyközök és tördelés -\linespread{1.5} % Egyszeres helyköz a mondatok végén \frenchspacing % Szavak jobb margón túlnyúlásának tiltása @@ -263,10 +269,15 @@ \nottoggle{hypenation}{\RequirePackage[none]{hyphenat}}{} % Beállítás alternatív módon -%\RequirePackage{setspace} -%\singlespacing % ~1.0 linespread -%\onehalfspacing % ~1.3 linespread -%\doublespacing % ~1.6 linespread +\RequirePackage{setspace} +% According to +% https://tex.stackexchange.com/questions/442030/setting-spaces-with-titlespacing-and-fonts +% this matches the 1.5 linespacing in MS Word +\setstretch{1.427465} + +% Vektorok és mátrixok egyszeres sorközzel +% https://tex.stackexchange.com/questions/568084/problem-with-matrices-using-linespread +\everydisplay=\expandafter{\the\everydisplay\linespread{1}\selectfont} % Azonos sorköz használata láblácben %\RequirePackage{footmisc} @@ -293,8 +304,13 @@ % ------------------------------ % Tételek, definíciók +\theoremstyle{definition} \newtheorem{definition}{\deflabel} + +\theoremstyle{plain} \newtheorem{theorem}{\theolabel} + +\theoremstyle{remark} \newtheorem*{remark}{\remlabel} \newtheorem*{note}{\notelabel} % ------------------------------ @@ -322,7 +338,7 @@ % pdflatex-hez \newcommand{\hyperrefComp}{} -\RequirePackage[pdfborder={0 0 0}, unicode, \hyperrefComp]{hyperref} +\RequirePackage[pdfborder={0 0 0}, unicode, pdfusetitle, \hyperrefComp]{hyperref} \RequirePackage[all]{hypcap} \RequirePackage{url} \RequirePackage{bookmark} @@ -351,6 +367,9 @@ % ------------------------------ % Számozott elemek kezelése \RequirePackage{chngcntr} +% Lábjegyzet folytonos számozása fejezetek között +% Continuous counting of footnotes among chapters +\counterwithout{footnote}{chapter} % Lábjegyzet oldalak közti eltörésének tiltása \interfootnotelinepenalty=10000 % ------------------------------ @@ -381,7 +400,7 @@ % ------------------------------ % Feliratok, tartalomjegyzék, ábrajegyzék, táblázatjegyzék \RequirePackage[justification=centering]{caption} -\RequirePackage[subfigure]{tocloft} +\RequirePackage{tocloft} % ------------------------------ @@ -409,7 +428,7 @@ % ------------------------------ % Algoritmusok és kódblokkok írása \RequirePackage{algorithm} -\RequirePackage{algorithmic} +\RequirePackage{algpseudocode} \RequirePackage{listingsutf8} \lstset{ basicstyle=\footnotesize\ttfamily, @@ -429,17 +448,16 @@ breaklines=true, breakatwhitespace=false, float, - frame=linesc, + frame=lines, captionpos=b } % Forráskód elnevezése \renewcommand{\lstlistingname}{\codelabel} % Forráskódjegyzék elnevezése \renewcommand{\lstlistlistingname}{\lstcodelabel} -% Algoritmus kommentek jobb szélre igazítása -\renewcommand{\algorithmiccomment}[1]{\hfill {\it #1}} % Algoritmus elnevezése -\renewcommand{\ALG@name}{\alglabel} +\floatname{algorithm}{\alglabel} +\renewcommand{\listalgorithmname}{\lstalgorithmlabel} % ------------------------------ % ------------------------------ @@ -534,3 +552,40 @@ \setcounter{page}{1} } % ------------------------------ + +\AtBeginDocument{ + % If the minted package is loaded, then provide a default for the formatting, + % and set the labels for the listings + \@ifpackageloaded{minted}{ + \setminted{ + style=tango, + numbers=left, + stepnumber=1, + firstnumber=1, + numbersep=5pt, + showspaces=false, + showtabs=false, + tabsize=2, + breaklines=true, + frame=lines, + bgcolor=codebackg, + } + \SetupFloatingEnvironment{listing}{ + name=\codelabel, % Forráskód elnevezése + listname=\lstcodelabel, % Forráskódjegyzék elnevezése + } + } + + % Az oldalszámozás a tartalomjegyzékkel kezdődik, de ott nem látható + \let\oldtableofcontents\tableofcontents + \renewcommand{\tableofcontents}{ + \pagenumbering{gobble} + \oldtableofcontents + \cleardoublepage + % Oldalszám mentése és betöltésem mert a \pagenumbering visszállítja + \newcounter{conpageno} + \defcounter{conpageno}{\value{page}} + \pagenumbering{arabic} + \setcounter{page}{\value{conpageno}} + } +} diff --git a/macros/latex/contrib/elteikthesis/elteikthesis.pdf b/macros/latex/contrib/elteikthesis/elteikthesis.pdf index 58ec02b7cf..a637d85d32 100644 Binary files a/macros/latex/contrib/elteikthesis/elteikthesis.pdf and b/macros/latex/contrib/elteikthesis/elteikthesis.pdf differ diff --git a/macros/latex/contrib/elteikthesis/elteikthesis.tex b/macros/latex/contrib/elteikthesis/elteikthesis.tex index 162ce58e7c..c72a65a4e1 100644 --- a/macros/latex/contrib/elteikthesis/elteikthesis.tex +++ b/macros/latex/contrib/elteikthesis/elteikthesis.tex @@ -3,13 +3,18 @@ %noindent, % Bekezdésének első sora ne legyen behúzva / No indentation of first lines in each paragraph %nohyp, % Szavak sorvégi elválasztásának tiltása / No hyphenation of words %twoside, % Kétoldalas nyomtatás / Double sided format + %draft, % Gyorsabb fordítás ábrák rajzolása nélkül / Quicker draft compilation without rendering images %final, % Teendők elrejtése / Set final to hide todos -]{elteikthesis}[2020/05/15] +]{elteikthesis}[2021/09/20] + +% A minted csomag támogatott a forráskódok szedésére +% The minted package is also supported for source highlighting +%\usepackage[newfloat]{minted} % Dolgozat metaadatai % Document's metadata \title{Dolgozat címe} % cím / title -\date{2020} % védés éve / year of defense +\date{2021} % védés éve / year of defense % Szerző metaadatai % Author's metadata @@ -46,11 +51,7 @@ % Teendők listája (final dokumentumban nincs) % List of todos (not in the final document) -\listoftodos[\todolabel] - -% Dokumentum beállítások -% Some document settings -\input{settings.tex} +%\listoftodos[\todolabel] % Címlap (kötelező) % Title page (mandatory) @@ -84,24 +85,35 @@ % Irodalomjegyzék (kötelező) % Bibliography (mandatory) +\phantomsection \addcontentsline{toc}{chapter}{\biblabel} \printbibliography[title=\biblabel] \cleardoublepage % Ábrajegyzék (opcionális) - 3-5 ábra fölött érdemes % List of figures (optional) - useful over 3-5 figures +\phantomsection \addcontentsline{toc}{chapter}{\lstfigurelabel} \listoffigures \cleardoublepage % Táblázatjegyzék (opcionális) - 3-5 táblázat fölött érdemes % List of tables (optional) - useful over 3-5 tables +\phantomsection \addcontentsline{toc}{chapter}{\lsttablelabel} \listoftables \cleardoublepage +% Algorithmusjegyzék +% List of algorithms +\phantomsection +\addcontentsline{toc}{chapter}{\lstalgorithmlabel} +\listofalgorithms +\cleardoublepage + % Forráskódjegyzék (opcionális) - 3-5 kódpélda fölött érdemes % List of codes (optional) - useful over 3-5 code samples +\phantomsection \addcontentsline{toc}{chapter}{\lstcodelabel} \lstlistoflistings \cleardoublepage diff --git a/macros/latex/contrib/elteikthesis/settings.tex b/macros/latex/contrib/elteikthesis/settings.tex deleted file mode 100644 index d2040f9d24..0000000000 --- a/macros/latex/contrib/elteikthesis/settings.tex +++ /dev/null @@ -1,16 +0,0 @@ -% Lábjegyzet folytonos számozása fejezetek között -% Continuous counting of footnotes among chapters -\counterwithout{footnote}{chapter} - -% Tartalomjegyzék oldalszámozásának rejtése -% Hide page numbering of ToC -\newcounter{conpageno} -\let\oldtableofcontents\tableofcontents -\renewcommand{\tableofcontents}{ - \pagenumbering{gobble} - \oldtableofcontents - \cleardoublepage - \setcounter{conpageno}{\value{page}} - \pagenumbering{arabic} - \setcounter{page}{\value{conpageno}} -} diff --git a/macros/latex/contrib/genealogytree/CHANGES.md b/macros/latex/contrib/genealogytree/CHANGES.md new file mode 100644 index 0000000000..cdf54934e1 --- /dev/null +++ b/macros/latex/contrib/genealogytree/CHANGES.md @@ -0,0 +1,398 @@ +# Changelog +All notable changes to this project will be documented in this file. + +The format is based on +[Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to +[Semantic Versioning](http://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +### Changed +### Deprecated +### Removed +### Fixed +### Security + + + +## [2.1.0] - 2021-09-20 + +### Added +- Portuguese translation provided by Natan de Almeida Laverde +- Value `portuguese` for option `language` + +### Changed +- Readme moved and adapted from README to README.md +- Changelog moved from documentation `genealogytree.pdf` to CHANGES.md and adapted to + [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) +- From now on version numbers adhere to + [Semantic Versioning](http://semver.org/spec/v2.0.0.html) + +### Fixed +- `options for subtree` had no effect in v2.01 (issue #39) + + + +## [2.01] - 2020-07-28 + +### Added +- New *LaTeXÜ macros added corresponding to existing macros: + - `\getree_set_options_for_subtree:nn` + - `\getree_set_options_for_family:nn` + - `\getree_set_options_for_node:nn` +- Some hints for events with unknown dates added + to the documentation (issue #36) + +### Changed +- Implementation changed to avoid problems with spurious blanks + and resulting errors for + - Option `tcb/if image defined` + - Option `date range before` + - Option `date range after` + - Option `place text` + - Option `options for subtree` + - Option `options for family` + - Option `options for node` + - Option `ignore subtree` + - Option `ignore node` + - `\gtrsetoptionsforsubtree` + - `\gtrsetoptionsforfamily` + - `\gtrsetoptionsfornode` + - `\gtrignoresubtree` + - `\gtrignorenode` + - `\gtrloadlanguage` + - `\gtrSymbolsSetCreateSelected` + + + +## [2.00] - 2020-06-19 + +### Added +- New options for influencing the autolayout algorithm to avoid + overlapping edges for childless families (issue #34): + - Option `insert for childless families` + - Option `insert phantom for childless families` + - Option `insert for childless families level limit` +- New algorithm for automatic ancestor completion. This autofill is + controlled by the new options + - Option `autofill parents unspecific` + - Option `autofill parents unspecific*` + - Option `autofill parents male female` + - Option `autofill parents male female*` + - Option `autofill parents female male` + - Option `autofill parents female male*` + - Option `autofill parents none` + - Option `complemented` + - Option `complemented phantom` +- New option `ignore parent childs` to remove all + siblings in an ancestor tree. +- New data base keys for holding relation information: + - Option `database/relation` + - Option `database/ancestor` + - Option `database/descendant` + - Option `database/sibling` + - Option `database/unrelated` +- New data base key for holding age information and accompanying + options and macros: + - Option `database/age` + - Option `age code` + - `\gtrPrintAge` + - `\gtrifagedefined` + - `\gtrDBage` +- Conversion with MuPDF added and externalization rewritten for MuPDF. +- New auxiliary tools for graph (picture) sizing + - `\gtrautosizebox` + - `\gtrautosizebox*` + - Environment `autosizetikzpicture` + - Environment `autosizetikzpicture*` +- Graph example file `example.neumann.graph` +- New library `fanchart` to draw fan chart diagrams + with a plethora of macros and options (issue #31): + - `\gtrfanchart` + - `\gtrfanchartinput` + - Option `fanchart radii` + - Option `fanchart inner offset` + - Option `fanchart outer offset` + - Option `fanchart minor angle` + - Option `fanchart major angle` + - Option `fanchart angles` + - Option `fanchart open full` + - Option `fanchart open up` + - Option `fanchart open down` + - Option `fanchart open left` + - Option `fanchart open right` + - Option `fanchart open for` + - Option `fanchart reset bounds` + - Option `fanchart bounds border` + - Option `fanchart landscape from level` + - Option `fanchart text portrait` + - Option `fanchart text landscape` + - Option `fanchart boundary color` + - Option `fanchart boundary width` + - Option `fanchart root style` + - Option `fanchart root malefemale` + - Option `fanchart segment style` + - Option `fanchart segment malefemale` + - Option `fanchart segment relation` + - Option `fanchart segment wave` + - Option `fanchart segment colorwheel` + - Option `fanchart segment radial` + - Option `fanchart marker style` + - Option `fanchart marker malefemale` + - Option `fanchart marker relation` + - Option `fanchart marker wave` + - Option `fanchart marker colorwheel` + - Option `fanchart marker radial` + - Option `tikz/gtr set color wave` + - Option `tikz/gtr set color colorwheel` + - Option `tikz/gtr set color series` + - Option `fanchart complemented segment style` + - Option `fanchart complemented marker style` + - Option `fanchart segment style for levels` + - Option `fanchart marker style for levels` + - Option `fanchart segment style for ids` + - Option `fanchart marker style for ids` + - Option `fanchart male style` + - Option `fanchart female style` + - Option `fanchart neuter style` + - Option `fanchart ancestor style` + - Option `fanchart descendant style` + - Option `fanchart sibling style` + - Option `fanchart unrelated style` +- Option `fanchart template` with + - Template `malefemale sober` + - Template `malefemale relation` + - Template `colorwheel sober` + - Template `colorwheel serious` + - Template `colorwheel malefemale` + - Template `colorwheel rich` + - Template `colorwheel opulent` + - Template `wave sober` + - Template `wave serious` + - Template `wave malefemale` + - Template `wave rich` + - Template `wave opulent` + - Template `radial sober` + - Template `radial serious` + - Template `radial malefemale` + - Template `radial rich` + - Template `radial opulent` +- Advanced customization by + - `\gtrcomplemented` + - Option `fanchart-segment-definition` + - Option `fanchart-marker-definition` + - Option `fanchart-segment-code` + - Option `fanchart-root-code` + - `\l_getree_fanchart_minor_angle_tl` + - `\l_getree_fanchart_major_angle_tl` + - `\l_getree_fanchart_angle_a_tl` + - `\l_getree_fanchart_angle_b_tl` + - `\l_getree_fanchart_radius_a_tl` + - `\l_getree_fanchart_radius_b_tl` + - `\l_getree_fanchart_offset_a_tl` + - `\l_getree_fanchart_offset_b_tl` + - `\l_getree_fanchart_line_width_tl` + - `\l_getree_fanchart_level_tl` + - `\l_getree_fanchart_ratio_tl` + - `\l_getree_fanchart_id_tl` + - `\c_getree_fanchart_maximum_rings_tl` + - `\getree_fanchart_if_complemented_node_p:` + - `\getree_fanchart_if_complemented_node:TF` + - `\getree_fanchart_set_segment_style:n` + - `\getree_fanchart_set_marker_style:n` + - `\getree_fanchart_set_color_wave:n` + - `\getree_fanchart_set_color_colorwheel:n` + - `\getree_fanchart_draw_path:n` + - `\getree_fanchart_draw_path:nnn` + - `\getree_fanchart_draw_root_style:n` + - `\getree_fanchart_draw_segment_standard:` + +### Changed +- Implementation of `\genealogytree` slightly changed. + +### Fixed +- Template `database sideways` et.al. raised errors when used in combination with + `family database` (issue #31). + + + +## [1.32] - 2019-04-08 + +### Added +- Internal database print command documented `\gtrPrintDatabase` (issue #24) + +### Changed +- `tcolorbox` needs to be version 4.20 (2019/03/02) or newer. + +### Fixed +- The templates library used some internal color names of `tcolorbox`. + They are adapted now to the new official names (issue #30). + + + +## [1.31] - 2018-04-17 + +### Added +- Option `database/imageopt` +- Option `database/viewport` +- `\gtrDBimageopt` +- `\gtrincludeDBimage` +- TikZ-Option `fill overzoom DBimage` + +### Changed +- `tcolorbox` needs to be version 4.13 (2018/03/22) or newer. + + + +## [1.30] - 2017-12-08 + +### Added +- Spanish translation `language=spanish` provided by Francisco G. Pérez Sánchez +- Swedish translation `language=swedish` provided by Per Starbäck +- New values `date format`: `d/m yyyy`, `yyyy d/m` +- Warnings for missing language strings added to \url{genealogytree-languages.pdf} +- Option `edges shift` +- Option `edges up` +- Option `edges down` +- Option `edges up by` +- Option `edges down by` +- Option `reset edge level shift` +- Option `switch edge level shift` +- Option `nullify edge level shift` + + + +## [1.21] - 2017-09-15 + +### Added +- Italian translation `language=italian` provided by Andrea Vaccari +- Template `database pole reduced` +- Template `database poleportrait` +- Template `database poleportrait reduced` +- Template `database portrait reduced` +- Template `database traditional reduced` +- Template `database sideways reduced` +- Template `database sidewaysportait` +- Template `database sidewaysportait reduced` + +### Changed +- `\gtrsymFloruit` symbol rotated by 36 degrees for an enhanced + optical differentiation from `\gtrsymBorn`. + + + +## [1.20] - 2017-07-18 + +### Added +- Dutch translation `language=dutch` provided by Dirk Bosmans +- New event `floruit` with symbol `\gtrsymFloruit` proposed by Mikkel Eide Eriksen + Accompanying keys are + `database/floruit`, `database/floruit+`, `database/floruit-`, `symlang/Floruit`, `event prefix/floruit`. + The standard options for `database format` were extended for floruit. + The standard options for `database format` were extended for floruit. + + + +## [1.10] - 2017-01-29 + +### Added +- Danish translation `language=danish` provided by Mikkel Eide Eriksen +- French translation `language=french` provided by Denis Bitouzé +- Separate document `genealogytree-languages` added to give a short survey + of language settings. +- New values for `date format`: + `typical`, `dd mon.yyyy`, `d mon.yyyy`, `dd/mm yyyy`, `yyyymmdd` +- Option `database/profession` +- Option `profession code` +- Option `info separators` +- `\gtrDBprofession` +- `\gtrPrintProfession` +- `\gtrifprofessiondefined` +- Environment `gtrinfolist` +- `` + +### Changed +- Option settings for `database format` + updated to process `database/comment` and `database/profession`. +- Implementation for level sensitive variables changed to + support extension packages. +- Implementation for `\gtruselibrary` changed to support + third party extension packages. + + + +## [1.01] - 2016-07-29 + +### Added +- Option `tikz` +- Option `genealogytree extra edges scope` +- Tutorial *Multi-Ancestors* + +### Changed +- Family options like `pivot shift` are now applicable + for `options for family` and `gtrsetoptionsforfamily`. + + + +## [1.00] - 2015-09-21 + +### Added +- Template `database relationship` + +### Changed +- Library loading made compatible with expl3. + + + +## [0.91 beta] - 2015-06-22 + +### Added +- Option `id prefix` +- Option `id suffix` +- Template `database sideways` +- Tutorial *Externalization* +- Tutorial *Conversion* +- Option `date format` complemented with many more formats. + +### Changed +- Settings for `date range full` and `date range separator` changed. + +### Fixed +- `phantom` and `phantom*` switch off more settings of `tcolorbox`. + + + +## [0.90 beta] - 2015-05-22 + +### Added +- First functional beta release. +- Full genealogy tree customization, tree positioning, input insertion and deletion, + edge customization. +- Database processing. +- Genealogy symbols. +- Internationalization. +- Templates library. +- Tutorials. + + + +## [0.10 alpha] - 2015-01-12 + +### Added +- Initial public release (alpha version). +- Grammar and Debugger as preview release. + + + +## [0.00] - 2013-2014 + +### Added +- Pre publication development. + + + +[v2.1.0] https://github.com/T-F-S/genealogytree/compare/v2.01...2.1.0 +[v2.01] https://github.com/T-F-S/genealogytree/compare/v2.00...v2.01 + diff --git a/macros/latex/contrib/genealogytree/README b/macros/latex/contrib/genealogytree/README deleted file mode 100644 index 3b793e1cef..0000000000 --- a/macros/latex/contrib/genealogytree/README +++ /dev/null @@ -1,48 +0,0 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) -%% -%% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm -%% ------------------------------------------------------------------------------------------- -%% -%% This work may be distributed and/or modified under the -%% conditions of the LaTeX Project Public License, either version 1.3 -%% of this license or (at your option) any later version. -%% The latest version of this license is in -%% http://www.latex-project.org/lppl.txt -%% and version 1.3 or later is part of all distributions of LaTeX -%% version 2005/12/01 or later. -%% -%% This work has the LPPL maintenance status `author-maintained'. -%% -%% This work consists of all files listed in README -%% - -Pedigree and genealogical tree diagrams are proven tools to visualize genetic -and relational connections between individuals. The naming for mathematical tree -structures with parent nodes and child nodes is traded from historical family -diagrams. However, even the smallest family entity consisting of two parents and -several children is no mathematical tree but a more general graph. The -genealogytree packages provides a set of tools to typeset such genealogical -trees or, more precisely, to typeset a set of special graphs for the description -of family-like structures. The package uses an autolayout algorithm which can be -customized to e.g. prioritize certain paths. - -Contents of the package -======================= - 'README' this file - 'genealogytree.sty' LaTeX package file (style file) - '*.code.tex' LaTeX package file (library of genealogytree) - 'genealogytree.pdf' Documentation for genealogytree - 'genealogytree-example-*.pdf' Example pedigree charts - 'genealogytree-languages.pdf' Short language survey - 'genealogytree.doc.sources.zip' Source code of the documentation - -Installation -============ -Copy the contents of the 'genealogytree.tds.zip' from CTAN to your local TeX -file tree. - -Alternatively, put the files to their respective locations within the TeX installation: - 'genealogytree.sty' -> /tex/latex/genealogytree - '*.code.tex' -> /tex/latex/genealogytree - all other files -> /doc/latex/genealogytree diff --git a/macros/latex/contrib/genealogytree/README.md b/macros/latex/contrib/genealogytree/README.md new file mode 100644 index 0000000000..5d22561834 --- /dev/null +++ b/macros/latex/contrib/genealogytree/README.md @@ -0,0 +1,49 @@ +# The LaTeX package genealogytree - version 2.1.0 (2021/09/20) + +> Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm + +> This work may be distributed and/or modified under the +> conditions of the LaTeX Project Public License, either version 1.3 +> of this license or (at your option) any later version. +> The latest version of this license is in +> http://www.latex-project.org/lppl.txt +> and version 1.3 or later is part of all distributions of LaTeX +> version 2005/12/01 or later. + +> This work has the LPPL maintenance status `author-maintained`. + +> This work consists of all files listed in README.md + + +Pedigree and genealogical tree diagrams are proven tools to visualize genetic +and relational connections between individuals. The naming for mathematical tree +structures with parent nodes and child nodes is traded from historical family +diagrams. However, even the smallest family entity consisting of two parents and +several children is no mathematical tree but a more general graph. The +`genealogytree` packages provides a set of tools to typeset such genealogical +trees or, more precisely, to typeset a set of special graphs for the description +of family-like structures. The package uses an autolayout algorithm which can be +customized to e.g. prioritize certain paths. + + +## Contents of the package + +- `README.md` this file +- `CHANGES.md` log of changes (history) +- `genealogytree.sty` LaTeX package file (style file) +- `*.code.tex` LaTeX package file (library of genealogytree) +- `genealogytree.pdf` Documentation for genealogytree +- `genealogytree-example-*.pdf` Example pedigree charts +- `genealogytree-languages.pdf` Short language survey +- `genealogytree.doc.sources.zip` Source code of the documentation + + +## Installation + +Copy the contents of the `genealogytree.tds.zip` from CTAN to your local TeX file tree. + +Alternatively, put the files to their respective locations within the TeX installation: + +- `genealogytree.sty` -> /tex/latex/genealogytree +- `*.code.tex` -> /tex/latex/genealogytree +- all other files -> /doc/latex/genealogytree diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf index 0f4311d752..d05dc7aad8 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf and b/macros/latex/contrib/genealogytree/genealogytree-example-1.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf index ef6cb5cef5..1977763919 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf and b/macros/latex/contrib/genealogytree/genealogytree-example-2.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf index fb446c4923..1214fcfc3c 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf and b/macros/latex/contrib/genealogytree/genealogytree-example-3.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf index cd3c8ec48e..7a3beb3f52 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf and b/macros/latex/contrib/genealogytree/genealogytree-example-4.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf index 023068205a..44c63e7500 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree-languages.pdf and b/macros/latex/contrib/genealogytree/genealogytree-languages.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree.pdf b/macros/latex/contrib/genealogytree/genealogytree.pdf index fb25a1a87c..933a55d001 100644 Binary files a/macros/latex/contrib/genealogytree/genealogytree.pdf and b/macros/latex/contrib/genealogytree/genealogytree.pdf differ diff --git a/macros/latex/contrib/genealogytree/genealogytree.sty b/macros/latex/contrib/genealogytree/genealogytree.sty index e9675d9491..f6be902292 100644 --- a/macros/latex/contrib/genealogytree/genealogytree.sty +++ b/macros/latex/contrib/genealogytree/genealogytree.sty @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% genealogytree.sty: genealogy trees (graphs) %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -18,8 +18,8 @@ %% This work consists of all files listed in README %% \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{genealogytree}[2020/07/28 version 2.01 genealogy trees] -\def\gtr@version{2.01} +\ProvidesPackage{genealogytree}[2021/09/20 version 2.1.0 genealogy trees] +\def\gtr@version{2.1.0} \RequirePackage{expl3}[2020/02/25] \RequirePackage{xparse} @@ -140,6 +140,7 @@ \gtr@add@library{lang.french}{gtrlang.french.code.tex} \gtr@add@library{lang.german}{gtrlang.german.code.tex} \gtr@add@library{lang.italian}{gtrlang.italian.code.tex} +\gtr@add@library{lang.portuguese}{gtrlang.portuguese.code.tex} \gtr@add@library{lang.spanish}{gtrlang.spanish.code.tex} \gtr@add@library{lang.swedish}{gtrlang.swedish.code.tex} diff --git a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex index 70b302a0cb..cf4bb3d9e7 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.contour.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.contour.code.tex: Contours %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%%%%%%%%%%% %% Contour diff --git a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex index f917d7cc92..1112737c57 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.drawing.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.drawing.code.tex: Drawing %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%%%%%%%%%%% %% Auxiliary Tools diff --git a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex index a02204cef1..5baae2638b 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.node.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.node.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.node.code.tex: Node Boxes %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%% % Processors % diff --git a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex index 10eb3711a7..592ac1ea54 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.options.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.options.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.options.code.tex: Options %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%%%%%%%%%%% %% General handling @@ -102,7 +102,7 @@ \clist_set:Nn \l_tmpa_clist { #1 } \clist_map_inline:Nn \l_tmpa_clist { - \gtr@keys@addvalue{/gtr/sopt/##1}{#2} + \gtr@keys@addvalue{/gtr/sopt/##1}{subtree={#2}} } } @@ -147,7 +147,11 @@ \NewDocumentCommand{\gtrignoresubtree}{ m } { - \getree_set_options_for_subtree:nn{#1}{ignore} + \clist_set:Nn \l_tmpa_clist { #1 } + \clist_map_inline:Nn \l_tmpa_clist + { + \gtr@keys@addvalue{/gtr/sopt/##1}{ignore} + } } @@ -162,8 +166,8 @@ options~for~family/.code~n~args={2}{\getree_set_options_for_family:nn{#1}{#2}}, options~for~node/.code~n~args={2}{\getree_set_options_for_node:nn{#1}{#2}}, % - ignore~subtree/.code={\getree_set_options_for_subtree:nn{#1}{ignore}}, - ignore~node/.code={\getree_set_options_for_node:nn{#1}{ignore}}, + ignore~subtree/.code={\gtrignoresubtree{#1}}, + ignore~node/.code={\gtrignorenode{#1}}, } \ExplSyntaxOff diff --git a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex index 6b11207edd..239a0afa05 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.parser.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.parser.code.tex: Parser %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %% (local) stack implementation \def\gtrnewstack#1{% diff --git a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex index 2720096a29..dcc54415c2 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.processing.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.processing.code.tex: Processing %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%%%%%%%%%%% %% Processing - common %%%%%%%%%%%%%%%%%%%%%%% diff --git a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex index 783a75ca05..f95179043f 100644 --- a/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex +++ b/macros/latex/contrib/genealogytree/gtrcore.symbols.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrcore.symbols.code.tex: Symbols %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} %%%%%%%%%%%%%%%%%%%%%%% %% Symbols diff --git a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex index 9596726bbe..bb03fc5b40 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.danish.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.danish.code.tex: Danish language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Mikkel Eide Eriksen %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/danish/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex index 7b068271da..0410fa7819 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.dutch.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.dutch.code.tex: Dutch language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Dirk Bosmans %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/dutch/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex index ba77f95949..a208c468bc 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.english.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.english.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.english.code.tex: English language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/english/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex index cfe2af2b63..011443f392 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.french.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.french.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.french.code.tex: French language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Denis Bitouze %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/french/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex index e084601e0c..0e52d7c7dc 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.german.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.german.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.german.code.tex: German language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/german/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex index bc99cced20..8368cfcd37 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.italian.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.italian.code.tex: Italian language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Andrea Vaccari %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/italian/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex new file mode 100644 index 0000000000..8bdb4640b3 --- /dev/null +++ b/macros/latex/contrib/genealogytree/gtrlang.portuguese.code.tex @@ -0,0 +1,87 @@ +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) +%% gtrlang.portuguese.code.tex: Portuguese language +%% +%% ------------------------------------------------------------------------------------------- +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm +%% Translation by Natan de Almeida Laverde +%% ------------------------------------------------------------------------------------------- +%% +%% This work may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either version 1.3 +%% of this license or (at your option) any later version. +%% The latest version of this license is in +%% http://www.latex-project.org/lppl.txt +%% and version 1.3 or later is part of all distributions of LaTeX +%% version 2005/12/01 or later. +%% +%% This work has the LPPL maintenance status `author-maintained'. +%% +%% This work consists of all files listed in README +%% +\gtr@set@library@version{2.1.0} + +\gtrset{language@/portuguese/.code={% + \gtrset{symlang/.cd, + Born=nascimento, + Bornoutofwedlock=nascimento fora do matrim\^onio, + Stillborn=natimorto, + Diedonbirthday=morreu ao nascer, + Baptized=batizado, + Engaged=compromisso, + Married=matrim\^onio, + Divorced=div\'orcio, + Partnership=parceiros n\~ao casados, + Floruit=floruit, + Died=falecimento, + Killed=morreu em a\c{c}\~ao, + Buried=sepultamento, + Funeralurn=cremado(a), + Female=mulher, + Male=homem, + Neuter=neutro + }% + \gtrset{% + month long/.cd, + 01/.initial=janeiro, + 02/.initial=fevereiro, + 03/.initial=mar\c{c}o, + 04/.initial=abril, + 05/.initial=maio, + 06/.initial=junho, + 07/.initial=julho, + 08/.initial=agosto, + 09/.initial=setembro, + 10/.initial=outubro, + 11/.initial=novembro, + 12/.initial=dezembro, + }% + \gtrset{% + month short/.cd, + 01/.initial=jan\protect\dot, + 02/.initial=fev\protect\dot, + 03/.initial=mar\protect\dot, + 04/.initial=abr\protect\dot, + 05/.initial=mai\protect\dot, + 06/.initial=jun\protect\dot, + 07/.initial=jul\protect\dot, + 08/.initial=ago\protect\dot, + 09/.initial=set\protect\dot, + 10/.initial=out\protect\dot, + 11/.initial=nov\protect\dot, + 12/.initial=dez\protect\dot, + }% + \gtrset{% + set@typical@date@format=dd/mm/yyyy, + calendar text for=AD is {}{ d.~C.}, + calendar text for=BC is {}{ a.~C.}, + calendar text for=GR is {}{\protect\textsuperscript{greg.}}, + calendar text for=JU is {}{\protect\textsuperscript{jul.}}, + calendar text for=caAD is {ca.~}{ d.~C.}, + calendar text for=caBC is {ca.~}{ a.~C.}, + calendar text for=ca is {ca.~}{}, + date range full={}{ a }{}, + date range before={antes de }{}, + date range after={depois de }{}, + place text={em }{}, + }% +}} diff --git a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex index 81ffcee6f8..810aa3add4 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.spanish.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.spanish.code.tex: Spanish language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Francisco G. Perez Sanchez %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/spanish/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex index 0b4f57c79e..708ffb79f1 100644 --- a/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlang.swedish.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlang.swedish.code.tex: Swedish language %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% Translation by Per Starbaeck %% ------------------------------------------------------------------------------------------- %% @@ -18,7 +18,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \gtrset{language@/swedish/.code={% \gtrset{symlang/.cd, diff --git a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex index 2fd01928b0..5450d3f69b 100644 --- a/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlib.debug.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlib.debug.code.tex: Debugger %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \RequirePackage{array,tabularx} \tcbuselibrary{breakable} diff --git a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex index e62e479bdc..d9e485bc02 100644 --- a/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlib.fanchart.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlib.fanchart.code.tex: Fancharts %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} \ExplSyntaxOn diff --git a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex index d0d9564701..6460a178c7 100644 --- a/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex +++ b/macros/latex/contrib/genealogytree/gtrlib.templates.code.tex @@ -1,8 +1,8 @@ -%% The LaTeX package genealogytree - version 2.01 (2020/07/28) +%% The LaTeX package genealogytree - version 2.1.0 (2021/09/20) %% gtrlib.templates.code.tex: Templates %% %% ------------------------------------------------------------------------------------------- -%% Copyright (c) 2013-2020 by Prof. Dr. Dr. Thomas F. Sturm +%% Copyright (c) 2013-2021 by Prof. Dr. Dr. Thomas F. Sturm %% ------------------------------------------------------------------------------------------- %% %% This work may be distributed and/or modified under the @@ -17,7 +17,7 @@ %% %% This work consists of all files listed in README %% -\gtr@set@library@version{2.01} +\gtr@set@library@version{2.1.0} % Templates diff --git a/macros/latex/contrib/lipsum/CHANGELOG.md b/macros/latex/contrib/lipsum/CHANGELOG.md index 470e445784..a11ca10e43 100644 --- a/macros/latex/contrib/lipsum/CHANGELOG.md +++ b/macros/latex/contrib/lipsum/CHANGELOG.md @@ -5,6 +5,14 @@ documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project uses major+minor version identifiers. +## [2.7] + +### Changed +- Rework language loading mechanism (gh/10). + +### Fixed +- Hyphenation pattern setting with `polyglossia` (gh/10). + ## [v2.6] ### Changed diff --git a/macros/latex/contrib/lipsum/README.md b/macros/latex/contrib/lipsum/README.md new file mode 100644 index 0000000000..6f527351b1 --- /dev/null +++ b/macros/latex/contrib/lipsum/README.md @@ -0,0 +1,26 @@ +# lipsum + +150 paragraphs of Lorem ipsum dummy text for LaTeX. + +## Install + +In most cases it is not requried to install this package manually, it is +included in the major tex-distributions. If, for some reason, you want install +it manually, run lipsum.ins through (pdf)latex to generate the style file. To +generate the documentation, run lispum.dtx through a latex program that +understands utf8 input (XeLaTeX or lualatex). + +## Usage + +See the documentation. + +## Quick'n'dirty + +```latex +\documentclass{article} +\usepackage{lipsum} + +\begin{document} +\lipsum +\end {document} +``` diff --git a/macros/latex/contrib/lipsum/lipsum.dtx b/macros/latex/contrib/lipsum/lipsum.dtx index 944dac139f..fb81e62771 100644 --- a/macros/latex/contrib/lipsum/lipsum.dtx +++ b/macros/latex/contrib/lipsum/lipsum.dtx @@ -15,8 +15,8 @@ % Please send error reports and suggestions for improvements to % https://github.com/PhelypeOleinik/lipsum % -\def\lipsumversion{2.5} -\def\lipsumdate{2021-08-01} +\def\lipsumversion{2.7} +\def\lipsumdate{2021-09-20} %<*driver> \ProvidesFile{lipsum.dtx}% [\lipsumdate\space v\lipsumversion\space @@ -84,6 +84,9 @@ \emergencystretch 2em \newcommand\secref[1]{(see section~\ref{#1})} \usepackage{hyperref} +\def\ghissue#1{% + \texttt{\##1}\footnote{% + \url{https://github.com/PhelypeOleinik/lipsum/issues/#1}}} \begin{document} \DocInput{lipsum.dtx} \end{document} @@ -467,12 +470,6 @@ % disable automatic language switching with % |\setlipsum{auto-lang=false}|. % -% \pkg{lipsum} relies on \pkg{babel}'s \cs{hyphenrules} command to -% change the hyphenation patterns, thus it requires \pkg{babel} to be -% loaded in the document if |auto-lang=true|. If \pkg{babel} is not -% loaded, a warning is printed and the default language is used for -% hyphenation instead. -% % The language is defined individually for each dummy text % \secref{sec:other-texts}, but you may change it for the current dummy % text by using |\setlipsum{language=|\meta{lang}|}|. If you load @@ -1258,12 +1255,11 @@ % % \begin{macro}{\@@_set_hyphens:,\@@_restore_hyphens:} % Selects the hyphenation patterns for the language of the dummy text, -% using \pkg{babel}'s \cs{hyphenrules} if that's defined. -% If \cs{hyphenrules} doesn't exist (thus \pkg{babel} not loaded), -% call \cs{@@_set_hyphens_babel_missing:} which will behave in a -% slightly different way if encountered in the preamble or in the -% document body. The hyphenation patterns are properly restored by -% \cs{@@_restore_hypehens:} when the text ends. +% using \cs{hyphenrules} if that's defined. If \cs{hyphenrules} +% doesn't exist try setting hyphenation with \cs{@@_set_hyphens_raw:}. +% Each \cs[no-index]{@@_set_hyphens_\meta{method}:} function +% appropriately redefines \cs{@@_restore_hypehens:} to reset the +% hyphenation patterns. % \begin{macrocode} \cs_new_protected:Npn \@@_set_hyphens: { @@ -1272,15 +1268,11 @@ { \cs_if_exist:NTF \hyphenrules { - \cs_if_exist:cTF { l@ \g_@@_language_tl } - { - \exp_args:NV \hyphenrules \g_@@_language_tl - \cs_set_protected:Npx \@@_restore_hyphens: - { \exp_not:N \hyphenrules { \languagename } } - } - { \@@_missing_language_warning: } + \cs_if_exist:cTF { ver@polyglossia.sty } + { \@@_set_hyphens_polyglossia: } + { \@@_set_hyphens_babel: } } - { \@@_set_hyphens_babel_missing: } + { \@@_set_hyphens_raw: } } } \cs_new_protected:Npn \@@_restore_hyphens: @@ -1288,43 +1280,86 @@ % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_set_hyphens_babel_missing:} -% In the document preamble this emits a warning telling the user that -% the proper hyphenations can't be used because \pkg{babel} isn't -% loaded, then shut up for the rest of the preamble. In the document -% body however, this is more serious, so we give a final warning and -% deactivate automatic hyphenation setting. +% \begin{macro}{\@@_set_hyphens_babel:} +% \pkg{babel} makes things pretty simple. We just check if +% \cs[no-index]{l@\meta{lang}} is defined, and if so, use +% \cs{hyphenrules} to set it, and once more to reset in +% \cs{@@_restore_hyphens:}. \cs{hyphenrules} is actually an +% environment, but in \pkg{babel} its \cs[no-index]{end} part does +% nothing, and its effect can be undone by just using another +% \cs{hyphenrules} on top of it. +% +% If the language is not defined, the language either doesn't exist at +% all, or we are using Lua\TeX. Both cases are handled by +% \cs{@@_lang_not_available:}. % \begin{macrocode} -\cs_new_protected:Npn \@@_set_hyphens_babel_missing: +\cs_new_protected:Npn \@@_set_hyphens_babel: { - \msg_warning:nnn { lipsum } { missing-babel } { preamble } - \cs_gset_eq:NN \@@_set_hyphens_babel_missing: \prg_do_nothing: + \cs_if_exist:cTF { l@ \g_@@_language_tl } + { + \exp_args:NV \hyphenrules \g_@@_language_tl + \cs_set_protected:Npx \@@_restore_hyphens: + { \exp_not:N \hyphenrules { \languagename } } + } + { \@@_lang_not_available: } } -\AtBeginDocument +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_set_hyphens_polyglossia:} +% \pkg{polyglossia} less friendly. We also check if the language is +% loaded (looking at \cs[no-index]{\meta{lang}@loaded}), and if it +% is, load it with the \env{hyphenrules} environment. Here we can't +% use the command form, as the \cs[no-index]{end} part is not a no-op. +% This also means that an extra group is added around the dummy text, +% which causes issue \ghissue{1} when used with \pkg{wrapfig}, for +% example. But not too much we can do about that for now. +% +% In case the language is not loaded, fall back to +% \cs{@@_set_hyphens_raw:} for a final attempt before giving up. +% \begin{macrocode} +\cs_new_protected:Npn \@@_set_hyphens_polyglossia: { - \cs_gset_protected:Npx \@@_set_hyphens_babel_missing: + \cs_if_exist:cTF { \g_@@_language_tl @loaded } { - \@ifpackageloaded { babel } - { \msg_error:nnn { lipsum } { missing-babel } { impossible } } - { \msg_warning:nnn { lipsum } { missing-babel } { document } } - \setlipsum { auto-lang = false } + \exp_args:NnV \begin{hyphenrules} \g_@@_language_tl + \cs_set_protected:Npn \@@_restore_hyphens: + { \end{hyphenrules} } } + { \@@_set_hyphens_raw: } } -\cs_if_exist:NT \DeclareHookRule - { \DeclareHookRule { begindocument } { lipsum } { after } { babel } } % \end{macrocode} % \end{macro} % -% \begin{macro}{\@@_missing_language_warning:} -% Warn the user about an unknown/missing language. Most of the time -% the issue is a minimal installation that doesn't have Latin, but -% sometimes it may be a typo. Regardless of the case, warn the user -% then change the language to \cs{languagename} so the warning appears -% only once, at least until it is changed again. +% \begin{macro}{\@@_set_hyphens_raw:} +% If nothing else is available, try setting the language using +% \cs{language}\meta{number}. This is always available, +% except with Lua\TeX, which loads languages on-the-fly. % \begin{macrocode} -\cs_new_protected:Npn \@@_missing_language_warning: +\cs_new_protected:Npn \@@_set_hyphens_raw: { - \msg_warning:nn { lipsum } { missing-language } + \cs_if_exist:cTF { l@ \g_@@_language_tl } + { + \use:x + { + \language \use:c { l@ \g_@@_language_tl } + \cs_set_protected:Npn \@@_restore_hyphens: + { \language \int_eval:n { \language } \scan_stop: } + } + } + { \@@_lang_not_available: } + } +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@@_lang_not_available:} +% If the requested language is for some reason unavailable, warn the +% user, then fall back to the current language. +% \begin{macrocode} +\cs_new_protected:Npn \@@_lang_not_available: + { + \msg_warning:nnx { lipsum } { missing-language } + { \g_@@_language_tl } \tl_gset_eq:NN \g_@@_language_tl \languagename } % \end{macrocode} @@ -1523,32 +1558,24 @@ Command~'\iow_char:N\\#1'~deprecated. \\ See~the~lipsum~documentation~for~help. } -\msg_new:nnn { lipsum } { missing-babel } +\msg_new:nnn { lipsum } { missing-language } { - Hyphenation~patterns~for~'\g_@@_language_tl'~ - cannot~be~used~because~babel~is~not~loaded.~ - \str_case:nn {#1} + Unknown~language~'#1'.~Hyphenation~patterns~for~ + '\languagename'~will~be~used~instead. + \sys_if_engine_luatex:T { - { preamble } - { Loading~lipsum~after~babel~should~fix~the~issue. } - { document } + \\ \\ + \cs_if_exist:cTF { ver@polyglossia.sty } { - The~default~document~language~will~be~used~ - for~hyphenation~instead. + With~polyglossia,~you~have~to~explicitly~load~languages~ + with~\iow_char:N\\setotherlanguage{#1}~or~similar. } - { impossible } { - Something~wrong~happened~and~the~command~ - \iow_char:N\\hyphenrules~is~not~available. \\ \\ - Please~report! + With~LuaTeX,~lipsum~requires~babel~to~get~proper~ + hyphenation~(you~can~use~ + \iow_char:N\\usepackage[base]{babel}). } } - \\ \\ This~message~won't~be~shown~again. - } -\msg_new:nnn { lipsum } { missing-language } - { - Unknown~language~'\g_@@_language_tl'.~ - Hyphenation~patterns~for~'\languagename'~will~be~used~instead. } % \end{macrocode} % diff --git a/macros/latex/contrib/lipsum/lipsum.ins b/macros/latex/contrib/lipsum/lipsum.ins index e22af4b0c8..8a43f332fb 100644 --- a/macros/latex/contrib/lipsum/lipsum.ins +++ b/macros/latex/contrib/lipsum/lipsum.ins @@ -85,7 +85,7 @@ Please send error reports and suggestions for improvements to \else \inpartrue \advance\parno by 1 - \wline{\string\NewLipsumPar\lb\pc~{\the\parno}}% + \wline{\string\NewLipsumPar\lb\pc\~{\the\parno}}% \fi \fi \ifeof\lipsread\expandafter\genlipsumend\fi diff --git a/macros/latex/contrib/lipsum/lipsum.pdf b/macros/latex/contrib/lipsum/lipsum.pdf index a9a5d52217..1c8919dd72 100644 Binary files a/macros/latex/contrib/lipsum/lipsum.pdf and b/macros/latex/contrib/lipsum/lipsum.pdf differ diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.dtx b/macros/latex/contrib/spacingtricks/spacingtricks.dtx index 3c22a98a8a..d9ff9bc46d 100644 --- a/macros/latex/contrib/spacingtricks/spacingtricks.dtx +++ b/macros/latex/contrib/spacingtricks/spacingtricks.dtx @@ -1,6 +1,6 @@ % \iffalse meta-comment % -% Copyright (C) 2019-2020 by Antoine Missier +% Copyright (C) 2019-2021 by Antoine Missier % % This file may be distributed and/or modified under the conditions of % the LaTeX Project Public License, either version 1.3 of this license @@ -19,8 +19,8 @@ % %<*package> \NeedsTeXFormat{LaTeX2e}[2005/12/01] -\ProvidesPackage{spacingtricks} - [2020/11/02 v1.3 .dtx spacingtricks file] +\ProvidesPackage{spacingtricks} + [2021/09/20 v1.4 .dtx spacingtricks file] % %<*driver> \documentclass{ltxdoc} @@ -32,24 +32,24 @@ \usepackage{pifont} \usepackage{amsmath} \usepackage{pstricks-add} -\DisableCrossrefs +\DisableCrossrefs %\CodelineIndex %\RecordChanges \usepackage{hyperref} \hypersetup{% - colorlinks, + colorlinks, linkcolor=blue, citecolor=blue, - pdftitle={spacingtricks}, - pdfsubject={LaTeX package}, + pdftitle={spacingtricks}, + pdfsubject={LaTeX package}, pdfauthor={Antoine Missier} } \begin{document} - \DeleteShortVerb{\|} - \MakeShortVerb{\"} - \DocInput{spacingtricks.dtx} - %\PrintChanges - %\PrintIndex +\DeleteShortVerb{\|} +\MakeShortVerb{\"} +\DocInput{spacingtricks.dtx} +%\PrintChanges +%\PrintIndex \end{document} % % \fi @@ -81,13 +81,14 @@ % \changes{v1.2}{2019/09/09}{A bug correction in the last update} % \changes{v1.3}{2020/11/02}{Loading the setspace package, % small changes in compactlist environment, improvement in dualboxes macro} +% \changes{v1.4}{2021/09/21}{A mistake in the documentation is now corrected} % % \GetFileInfo{spacingtricks.sty} % % \title{The \texttt{spacingtricks} package\thanks{This document % corresponds to \textsf{spacingtricks}~\fileversion, dated \filedate.}} % \author{Antoine Missier \\ \texttt{antoine.missier@ac-toulouse.fr}} -% \date{November 02, 2020} +% \date{September 20, 2021} % \maketitle % % \section{Introduction} @@ -95,7 +96,7 @@ % This package offers some macros to deal with spacing issues. Thus: % \begin{compactlist} % \item "\centered" yields good horizontal centering without vertical spacing; -% \item "\footnote" has been redefined to avoid unsuitable spacings; +% \item "\footnote" has been redefined to avoid unsuitable spacing; % \item "\vstrut" produces a strut with variable height or depth; % \item "\indent" has been redefined to indent a line at the beginning % of a particular paragraph even if "\parindent" has been set to 0; @@ -105,7 +106,7 @@ % several aliases are provided to type some list symbols shorter: % "\bul", "\dash", "\ddash", "\aster", "\hand", "\checksymb", "\arrowsymb"; % \item the macros "\ie" and "\eg" attends to typeset common abbreviations -% \ie and \eg with correct spacings; +% \ie and \eg with correct spacing; % \item the "\dualboxes" command attends to place two boxes % (figures, tables, text) side by side by adjusting the vertical positioning. % \end{compactlist} @@ -115,12 +116,13 @@ % \textsf{setspace} (natively in \LaTeXe), % for setting line spacing in a piece of text % (with the \texttt{spacing} environment), and -% \textsf{xspace}~\cite{XSP}, which adds an interword space unless the macro +% \textsf{xspace}~\cite{XSP}, which adds an inter-word space unless the macro % is followed by a punctuation character. % % Otherwise, we provide the package \textsf{arraycols}~\cite{ARCOL}, -% wich allows a good management of spacings in \texttt{tabular} and \texttt{array} environments, -% and \textsf{mismath}~\cite{MSMATH} of which several macros tends to improve spacings +% which allows a good management of spacing in \texttt{tabular} +% and \texttt{array} environments, +% and \textsf{mismath}~\cite{MSMATH} of which several macros tends to improve spacing % in mathematical formulas. % % \section{Usage} @@ -216,11 +218,11 @@ % % \medskip % \DescribeMacro{\footnotespace} \DescribeMacro{\footenoteindent} -% Like the old one, the new "\footnote" command can take an opional argument +% Like the old one, the new "\footnote" command can take an optional argument % to force the number of the note. % Likewise, we have always the customization macros % "\footnotesize", "\footnotesep", "\footnoterule", -% but two new macros have been added to manage spacings: +% but two new macros have been added to manage spacing: % "\footnotespace" produces the space before the note call symbol % and "\footnoteindent" produces the space at the beginning of the footnote text. % For instance, with "\renewcommand{\footnotespace}{\,}" @@ -373,7 +375,7 @@ % \DescribeMacro{\checksymb}\DescribeMacro{\arrowsymb} % The following example is obtained with "\begin{compactlist}[\checksymb]": % \begin{compactlist}[\checksymb] -% \item Fisrt item. +% \item First item. % \item Second item. % \item Third item. % \end{compactlist} @@ -392,7 +394,7 @@ % \medskip % \DescribeMacro{\ie} \DescribeMacro{\eg} % In English, at the end of a sentence, the point is followed by an em space -% which is larger than an interword space. +% which is larger than an inter-word space. % We provide the "\ie" (\textit{id est}) and "\eg" (\textit{exempli gratia}) macros, % suggested in The \LaTeX\ Companion \cite{COMP}, % to get correct spacing after these abbreviations \eg here. @@ -433,11 +435,11 @@ % } % % \noindent -% The horizontal space is equally shared between left margin, interbox space and right margin. +% The horizontal space is equally shared between left margin, inter-box space and right margin. % % \medskip % In the following example the right box has been shifted back -% to make an overlaping with the left one, what \textsf{picins} cannot do. +% to make an overlapping with the left one, what \textsf{picins} cannot do. % %\dualboxes{\footnotesize % $\begin{array}{|*{7}{c|}} \hline @@ -452,7 +454,7 @@ % \end{pspicture} %} % \begin{verbatim} -% \dualboxes*{\footnotesize +% \dualboxes{\footnotesize % $\begin{array}{|*{7}{c|}} \hline % x & -2 & -1 & 0 & 1 & 2 & 3 \\ \hline % f(x) & -0.96 & -0.71 & 0 & 0.59 & 0.38 & 0.18 \\ \hline @@ -498,8 +500,8 @@ \RequirePackage{setspace} \RequirePackage{xspace} -\newcommand*{\centered}[1]{{\setlength{\parskip}{0pt}\par\noindent\hfill - #1\hfill\mbox{}}} +\newcommand*{\centered}[1]{{\setlength{\parskip}{0pt}\par\noindent\hfill + #1\hfill\mbox{}}} % \end{macrocode} % The double braces are necessary here to ensure that the "\parskip" modification applies % locally within the command and not globally to the rest of the document. @@ -534,29 +536,29 @@ \newenvironment*{indentblock}[1][\parindentlength]{ \begin{list}{}{% - \setlength{\leftmargin}{#1} - \setlength{\itemsep}{0pt} - \setlength{\topsep}{1ex} - \setlength{\partopsep}{0pt} + \setlength{\leftmargin}{#1} + \setlength{\itemsep}{0pt} + \setlength{\topsep}{1ex} + \setlength{\partopsep}{0pt} } - \item[] - }{\end{list}} + \item[] + }{\end{list}} \newlength{\compactlistindent} \setlength{\compactlistindent}{0.5em} \newenvironment*{compactlist}[1][\textbullet]{ \par % sometimes necessary \begin{list}{#1\unskip}{% \unskip suppresses the space created by \xspace - \setlength{\itemsep}{0pt} - \setlength{\parsep}{0pt} - \setlength{\topsep}{0ex} - \setlength{\partopsep}{0pt} - \setlength{\labelwidth}{1em} - \setlength{\leftmargin}{\labelwidth} - \addtolength{\leftmargin}{\labelsep} - \addtolength{\leftmargin}{\compactlistindent} + \setlength{\itemsep}{0pt} + \setlength{\parsep}{0pt} + \setlength{\topsep}{0ex} + \setlength{\partopsep}{0pt} + \setlength{\labelwidth}{1em} + \setlength{\leftmargin}{\labelwidth} + \addtolength{\leftmargin}{\labelsep} + \addtolength{\leftmargin}{\compactlistindent} } - }{\end{list}} + }{\end{list}} \providecommand{\bul}{\textbullet} \providecommand{\dash}{\textendash} @@ -571,19 +573,19 @@ \providecommand{\checksymb}{\ding{51}\xspace} \providecommand{\arrowsymb}{\ding{226}\xspace} -\providecommand{\ie}{i.e.\@\xspace} +\providecommand{\ie}{i.e.\@\xspace} \providecommand{\eg}{e.g.\@\xspace} \newcommand{\@@dualboxes}[3][1]{ \par\noindent \raisebox{\depth-#1\totalheight}{#2} \hfill \raisebox{\depth-#1\totalheight}{#3} \smallskip - } +} \newcommand{\@dualboxes}[3][1]{ \par\noindent \hfill \raisebox{\depth-#1\totalheight}{#2} \hfill \raisebox{\depth-#1\totalheight}{#3} \hfill\mbox{}\smallskip - } +} \newcommand{\dualboxes}{\@ifstar{\@@dualboxes}{\@dualboxes}} % \end{macrocode} % @@ -597,9 +599,9 @@ % \bibitem{CELLSP} \emph{The \textsf{cellspace} package}, Josselin Noirel, CTAN, v1.8 2019/03/11. % \bibitem{ENUM} \emph{Customizing lists with the \textsf{enumitem} package}, Javier Bezos, % CTAN, v3.9 2019/06/20. -% \bibitem{ARCOL} \emph{The \textsf{arraycols} package}, Antoine Missier, CTAN, v1.0 2019/06/26. +% \bibitem{ARCOL} \emph{The \textsf{arraycols} package}, Antoine Missier, CTAN, v1.2 2021/09/20. % \bibitem{MSMATH} \emph{\textsf{mismath} -- Miscellaneous mathematical macros}, Antoine Missier, -% CTAN, v1.6 2019/09/06. +% CTAN, v1.8 2020/11/15. % \bibitem{PICINS} \emph{Bilder in \LaTeX -Dokumenten -- PicIns-Benutzerhandbuch}, % Joachim Bleser, Edmund Lang, CTAN, v3.0 sept. 1992. % \bibitem{COMP} \emph{The \LaTeX\ Companion}. Frank Mittelbach, Michel Goossens, diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.ins b/macros/latex/contrib/spacingtricks/spacingtricks.ins index 28f889e0f1..fb950279c3 100644 --- a/macros/latex/contrib/spacingtricks/spacingtricks.ins +++ b/macros/latex/contrib/spacingtricks/spacingtricks.ins @@ -1,5 +1,5 @@ %% -%% Copyright (C) 2019-2020 by Antoine Missier +%% Copyright (C) 2019-2021 by Antoine Missier %% %% This file may be distributed and/or modified under the conditions of %% the LaTeX Project Public License, either version 1.3 of this license @@ -15,13 +15,13 @@ \input docstrip.tex \keepsilent -\usedir{tex/latex/mismac} +\usedir{tex/latex/spacingtricks} \preamble This is a generated file. -Copyright (C) 2019-2020 by Antoine Missier +Copyright (C) 2019-2021 by Antoine Missier This file may be distributed and/or modified under the conditions of the LaTeX Project Public License, either version 1.3 of this license diff --git a/macros/latex/contrib/spacingtricks/spacingtricks.pdf b/macros/latex/contrib/spacingtricks/spacingtricks.pdf index 58d3a0602a..a7ab69f54e 100644 Binary files a/macros/latex/contrib/spacingtricks/spacingtricks.pdf and b/macros/latex/contrib/spacingtricks/spacingtricks.pdf differ diff --git a/macros/luatex/generic/pdfextra/LICENSE b/macros/luatex/generic/pdfextra/LICENSE new file mode 100644 index 0000000000..7468558136 --- /dev/null +++ b/macros/luatex/generic/pdfextra/LICENSE @@ -0,0 +1,12 @@ +Copyright (C) 2021 Michal Vlasák + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. diff --git a/macros/luatex/generic/pdfextra/README.md b/macros/luatex/generic/pdfextra/README.md new file mode 100644 index 0000000000..70ef8febf7 --- /dev/null +++ b/macros/luatex/generic/pdfextra/README.md @@ -0,0 +1,41 @@ +# PDF Extra + +PDF Extra provides extra PDF features for OpTeX (or in limited form for plain +LuaTeX and LuaLaTeX). + +As a minimalistic package OpTeX doesn't support "advanced" features of PDF file +format in the base. This third party package aims to provide them. Summary of +supported features: + + - insertion of multimedia (audio, video, 3D); + - hyperlinks and other actions, + - trigger events; + - transitions; + - attachments. + +The repository of PDF Extra is at https://github.com/vlasakm/pdfextra. + +# Documentation + +See `pdfextra-doc.pdf` for documentation. It contains user documentation as +well as technical documentation interleaved with source code. + +# Installation instructions + +Put `pdfextra.opm` where your TeX can find it. Additionaly, for plain/LaTeX you +need `pdfextra.tex`, and on top of that `pdfextra.sty` for LaTeX. + +Or just copy paste anything you want. + +# Usage + +In OpTeX do: `\load [pdfextra]`. + +In plain LuaTeX do: `\input pdfextra`. + +In LuaLaTeX do: `\usepackage{pdfextra}`. + +# License + +This package is available under the Zero-Clause BSD license. See `LICENSE` for +more information. diff --git a/macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex b/macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex new file mode 100644 index 0000000000..dc5a31f9f1 --- /dev/null +++ b/macros/luatex/generic/pdfextra/examples/pdfextra-example-latex.tex @@ -0,0 +1,223 @@ +% Compiled with: +% env TEXMFDOTDIR='..//:~/src/texlive/texmf-dist/source/latex/media9/files/' lualatex pdfextra-example-latex.tex +\documentclass{article} + +\usepackage{hyperref} +\usepackage{xcolor} +\usepackage{graphicx} +\usepackage{pdfextra} +\sdef{_linkcolor}{\color{blue}} + +\begin{document} + +% Using document level JavaScript we can run initialization code right at the +% start (this is more flexible than \openaction). +\dljavascript[random]{ + function getRandomNumber() { + return 4; % chosen by fair dice roll, ![https://xkcd.com/221/] + } + console.println("initialized with seed " + getRandomNumber()); +} + + + +% For external references we need to `\filedef` "external" and "url" files +% beforehand: +\filedef/u[doc-internet]{http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf} +\filedef/x[doc-local]{optex-doc.pdf} + +% We then try to reference them using external references: +\hlink[extref:doc-internet:ref:langphrases]{OpTeX documentation, section ``Multilingual phrases and quotation marks''.} +\hlink[extpgref:doc-internet:12]{OpTeX documentation, page 12.} + + + +% Insert a video twice with different settings: +\filedef/e[video]{example-movie.mp4} +% Insert video into page using Renditions mechanism with controls and autoplay. +\render[video][ + controls=true, + aactions=\renditionautoplay, +]{\includegraphics[width=\textwidth]{example-image.pdf}} + +% We set red text color, blue border (RGB triplet) for "rendition" links. +\sdef{_renditionlinkcolor}{\color{red}} +\sdef{_renditionborder}{0 1 0} +% Then we add some buttons. +\hlink[rendition::play]{play} \hlink[rendition::pause]{pause} +\hlink[rendition::stop]{stop} \hlink[rendition::resume]{resume} + +% Render the same file again, but with different dimensions, no controls +% and explicit activation. +\render[video]{\includegraphics{example-image.pdf}} +% This one can't have buttons, because it doesn't have its own name -- "video" +% is used by the previous one. + + + +% Add already embedded video to the list of attachments shown in user +% interface. +\attach[video] + + +% We are done for this page, who not go to the next one? +% +% \hlink typesets in group, so we locally disable lining links (our button is +% bigger than normal line) +\hlink[named:NextPage]{\nolininglinks\scalebox{2}[2]{NEXT PAGE}} + + + +\clearpage + + + +% Deliver fresh random number to everyone who sees this page using "page open" +% ("O") trigger event of page's actions. +\pageactions[ + {O} {js:{app.alert("Random number for you is " + getRandomNumber());}} +] + + +% Link to previous page (predefined PDF action) with "Split" transition: +\hlink[named:PrevPage, transition:Split]{Go to previous page (with transition).} + + + +\clearpage + +% A 3D Rich Media annotation with a custom view and script follows: + +% First we define the 3D file, so we can use same name for the view and have it +% auto included. +\filedef/e[example]{pdfextra-example-part.prc} + +% Then a simplistic "front" view. +\DDDview[example][ + projection=ortho, + roo=400, +] + +% A 3D JavaScript script that will define function to use with action button. +% (we write the script only now, so we don't have to carry around an extra file +% in the package, you would normally have the contents in the file -- "turn.js" +% in this case). +\newwrite\js +\immediate\openout\js=turn.js +% rotate every node by angle degrees along $x$ axis +\immediate\write\js{\detokenize{ +function turn(angle) { + angle = angle * Math.PI / 180; + for (var i = 0; i < scene.nodes.count; i++) { + var node = scene.nodes.getByIndex(i); + node.transform.rotateAboutXInPlace(angle); + } +} +}} +\closeout\js + +% The annotation itself, with our script above. +\RM[example][ + activation=auto, + scripts=turn.js, +]{\textcolor{white}{\vrule width\textwidth height\textwidth}} + +\hlink[js:\DDDcontext{example}.turn(10);]{Turn by 10 degrees along $x$ axis.}\par +\hlink[js:\DDDcontext{example}.turn(30);]{Turn by 30 degrees along $x$ axis.}\par +\hlink[js:\DDDcontext{example}.turn(90);]{Turn by 90 degrees along $x$ axis.} + + + +\clearpage + + +% Here is the "epix" 3D model example from media9 documentation ported to +% pdfextra. +% +% First we define a view with the same name as the future Rich Media +% annotation. This view will then automatically be used if no `views` key is +% specified. No need to be excessive with decimal numbers. +\DDDview[epix][ + FOV=30, + c2c=4 2 3, + coo=4.41 2.19 0, + roo=430, +] + +% 3Dmenu is used often, lets use shortcut instead. +\filedef/e[3dmenu]{3Dmenu.js} +% We want to use the nice "epix" name for the view and annotation. +\filedef/e[epix]{epix.prc} + +% Just to spice things up, we diverge a bit from media9 and define custom +% background color. We can't use LaTeX's colors, so we use RGB triplet. +\newcommand{\GreyBG}{0.9 0.9 0.9} + +% Define the 3D Rich Media annotation. One view is automatically detected from +% name ("epix"). Scripts will run in specified order at initialization time +% (when the annotation is activated). +\RM[epix][ + scripts={ + asylabels.js, + 3Dspintool.js, + 3dmenu, + }, + background=\GreyBG, +]{\includegraphics[width=0.8\textwidth, height=0.8\textwidth]{epixposter.pdf}} + + + +\clearpage + + + +% Second media9 example is "dice" it has a lot of views, but they are simple. +% This time we can't use the view name deduction from `\RM` name -- there is +% more than one view. +\DDDview[Front][roo=27] +\DDDview[Back][roo=27, c2c=0 1 0] +\DDDview[Left][roo=27, c2c=-1 0 0] +\DDDview[Right][roo=27, c2c=1 0 0] +\DDDview[Top][roo=27, c2c=0 0 1] +\DDDview[Bottom][roo=27, c2c=0 0 -1] +\DDDview[Fish Eye at Centre][fov=120] + +% We want to use all the defined views, as well as autoactivate the annotation. +% This means that the preview mostly sets dimensions, because it will not be +% shown much. (Only in viewers that don't support 3D Rich Media -- that is, all +% except Acrobat). +\RM[dice.u3d][ + views={Front, Back, Left, Right, Top, Bottom, Fish Eye at Centre}, + activation=auto, + scripts=3dmenu, +]{\textcolor{red}{\vrule height.5\textwidth width.5\textwidth}} + +% A few buttons for switching views. +\hlink[goto3dview::/N]{\frame{Next view}} +\hlink[goto3dview::(Back)]{\frame{View ``Back''}} +\hlink[goto3dview::5]{\frame{6th view in the list}} + +\clearpage + + +% Last media9 example ported. It has its own JavaScript file for animation, +% which can be customized at runtime using JavaScript actions that access 3D +% context of the annotation. +\filedef/e[malte]{malte.u3d} +\DDDview[malte][c2c=1 1 1, roo=0.25] +\RM[malte][ + activation=auto, + scripts={3dmenu, malte.js}, +]{\textcolor{blue}{\vrule height 0.5\textwidth width 0.5\textwidth}} + +% Normal JavaScript actions, but we access functions defined globaly in the 3D +% JavaScript context of "malte" Rich Media annotation. +\hlink[js:\DDDcontext{malte}.cntrClockWise();] {\includegraphics[height=1.44em]{boutona.pdf}} +\hlink[js:\DDDcontext{malte}.pause();] {\includegraphics[height=1.44em]{boutonb.pdf}} +\hlink[js:\DDDcontext{malte}.clockWise();] {\includegraphics[height=1.44em]{boutonc.pdf}} +\hlink[js:\DDDcontext{malte}.scaleSpeed(1/1.1);]{\includegraphics[height=1.44em]{boutond.pdf}} +\hlink[js:\DDDcontext{malte}.origSpeed();] {\includegraphics[height=1.44em]{boutone.pdf}} +\hlink[js:\DDDcontext{malte}.scaleSpeed(1.1);] {\includegraphics[height=1.44em]{boutonf.pdf}} + + +\end{document} diff --git a/macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc b/macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc new file mode 100644 index 0000000000..812479dcbb Binary files /dev/null and b/macros/luatex/generic/pdfextra/examples/pdfextra-example-part.prc differ diff --git a/macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf b/macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf new file mode 100644 index 0000000000..24ca714a75 Binary files /dev/null and b/macros/luatex/generic/pdfextra/examples/pdfextra-example.pdf differ diff --git a/macros/luatex/generic/pdfextra/examples/pdfextra-example.tex b/macros/luatex/generic/pdfextra/examples/pdfextra-example.tex new file mode 100644 index 0000000000..6704ac4b98 --- /dev/null +++ b/macros/luatex/generic/pdfextra/examples/pdfextra-example.tex @@ -0,0 +1,345 @@ +% PDFextra example file. +% This file, apart from other topics, shows how to port 3D examples from media9 +% (https://ctan.org/pkg/media9) documentation. You probably have to adjust path +% searching to succesfully compile this example, e.g.: +% +% \begtt +% env TEXMFDOTDIR=.:~/src/texlive/texmf-dist/source/latex/media9/files/ optex pdfextra-example.tex +% \endtt + +% Basic \OpTeX/ settings: +\enlang\enquotes +\fontfam[lm] + +% Load the package from standard search path: +\load[pdfextra] + +% Before using \hlink we must activate hyperlinks: +\hyperlinks\Blue\Green + +% Maybe we want to greet the user and jump to page 2 right at the start? +\openaction[ + js:{% + app.alert("Javascript alert, open action"); + console.println("printing to console from openaction");}, + pg:2, +] + + + +% Using document level JavaScript we can run initialization code right at the +% start (this is more flexible than \openaction). +\dljavascript[random]{ + function getRandomNumber() { + return 4; % chosen by fair dice roll, ![https://xkcd.com/221/] + } + console.println("initialized with seed " + getRandomNumber()); +} + + + +% For external references we need to `\filedef` "external" and "url" files +% beforehand: +\filedef/u[doc-internet]{http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf} +\filedef/x[doc-local]{optex-doc.pdf} + +% We then try to reference them using external references: +\hlink[extref:doc-internet:ref:langphrases]{OpTeX documentation, section \"Multilingual phrases and quotation marks".} +\hlink[extpgref:doc-internet:12]{OpTeX documentation, page 12.} + + + +% Insert a video twice with different settings: +\filedef/e[video]{example-movie.mp4} +% Insert video into page using Renditions mechanism with controls and autoplay. +\render[video][ + controls=true, + aactions=\renditionautoplay, +]{\picwidth=\hsize \inspic{example-image.pdf}} + +% We set red text color, blue border (RGB triplet) for "rendition" links. +\let\_renditionlinkcolor\Red +\def\_renditionborder{0 1 0} +% Then we add some buttons. +\hlink[rendition::play]{play} \hlink[rendition::pause]{pause} +\hlink[rendition::stop]{stop} \hlink[rendition::resume]{resume} + +% Render the same file again, but with different dimensions, no controls +% and explicit activation. +\render[video]{\inspic{example-image.pdf}} +% This one can't have buttons, because it doesn't have its own name -- "video" +% is used by the previous one. + + + +% Add already embedded video to the list of attachments shown in user +% interface. +\attach[video] + + +% We are done for this page, who not go to the next one? +% +% \hlink typesets in group, so we locally disable lining links (our button is +% bigger than normal line) +\hlink[named:NextPage]{\nolininglinks\typoscale[2000/2000]\inoval{NEXT PAGE}} + + + +\vfil\break + + + +% Deliver fresh random number to everyone who sees this page using "page open" +% ("O") trigger event of page's actions. +\pageactions[ + {O} {js:{app.alert("Random number for you is " + getRandomNumber());}} +] + +% Link to OpTeX's page reference ("pg:1") with "Split" transition: +\hlink[pg:1, transition:Split]{Go to previous page (with transition).} + + + +\vfil\break + +% A 3D Rich Media annotation with a custom view and script follows: + +% First we define the 3D file, so we can use same name for the view and have it +% auto included. +\filedef/e[example]{pdfextra-example-part.prc} + +% Then a simplistic "front" view. +\DDDview[example][ + projection=ortho, + roo=400, +] + +% A 3D JavaScript script that will define function to use with action button. +% (we write the script only now, so we don't have to carry around an extra file +% in the package, you would normally have the contents in the file -- "turn.js" +% in this case). +\newwrite\js +\immediate\openout\js=turn.js +% rotate every node by angle degrees along $x$ axis +\immediate\write\js{\detokenize{ +function turn(angle) { + angle = angle * Math.PI / 180; + for (var i = 0; i < scene.nodes.count; i++) { + var node = scene.nodes.getByIndex(i); + node.transform.rotateAboutXInPlace(angle); + } +} +}} +\closeout\js + +% The annotation itself, with our script above. +\RM[example][ + activation=auto, + scripts=turn.js, +]{\White\vrule width\hsize height\hsize} + +\hlink[js:\DDDcontext{example}.turn(10);]{Turn by 10 degrees along $x$ axis.}\par +\hlink[js:\DDDcontext{example}.turn(30);]{Turn by 30 degrees along $x$ axis.}\par +\hlink[js:\DDDcontext{example}.turn(90);]{Turn by 90 degrees along $x$ axis.} + + + +\vfil\break + + +% Here is the "epix" 3D model example from media9 documentation ported to +% pdfextra. +% +% First we define a view with the same name as the future Rich Media +% annotation. This view will then automatically be used if no `views` key is +% specified. No need to be excessive with decimal numbers. +\DDDview[epix][ + FOV=30, + c2c=4 2 3, + coo=4.41 2.19 0, + roo=430, +] + +% 3Dmenu is used often, lets use shortcut instead. +\filedef/e[3dmenu]{3Dmenu.js} +% We want to use the nice "epix" name for the view and annotation. +\filedef/e[epix]{epix.prc} + +% Just to spice things up, we diverge a bit from media9 and define custom +% background color. +\colordef\GreyBG{0.1\Black} + +% Define the 3D Rich Media annotation. One view is automatically detected from +% name ("epix"). Scripts will run in specified order at initialization time +% (when the annotation is activated). +\RM[epix][ + scripts={ + asylabels.js, + 3Dspintool.js, + 3dmenu, + }, + background=\GreyBG, +]{\picwidth=0.8\hsize \picheight=0.8\hsize \inspic{epixposter.pdf}} + + + +\vfil\break + + + +% Second media9 example is "dice" it has a lot of views, but they are simple. +% This time we can't use the view name deduction from `\RM` name -- there is +% more than one view. +\DDDview[Front][roo=27] +\DDDview[Back][roo=27, c2c=0 1 0] +\DDDview[Left][roo=27, c2c=-1 0 0] +\DDDview[Right][roo=27, c2c=1 0 0] +\DDDview[Top][roo=27, c2c=0 0 1] +\DDDview[Bottom][roo=27, c2c=0 0 -1] +\DDDview[Fish Eye at Centre][fov=120] + +% We want to use all the defined views, as well as autoactivate the annotation. +% This means that the preview mostly sets dimensions, because it will not be +% shown much. (Only in viewers that don't support 3D Rich Media -- that is, all +% except Acrobat). +\RM[dice.u3d][ + views={Front, Back, Left, Right, Top, Bottom, Fish Eye at Centre}, + activation=auto, + scripts=3dmenu, +]{\Red \vrule height.5\hsize width.5\hsize} + +% A few buttons for switching views. +\hlink[goto3dview::/N]{\frame{Next view}} +\hlink[goto3dview::(Back)]{\frame{View \"Back"}} +\hlink[goto3dview::5]{\frame{6th view in the list}} + +\vfil\break + + +% Last media9 example ported. It has its own JavaScript file for animation, +% which can be customized at runtime using JavaScript actions that access 3D +% context of the annotation. +\filedef/e[malte]{malte.u3d} +\DDDview[malte][c2c=1 1 1, roo=0.25] +\RM[malte][ + activation=auto, + scripts={3dmenu, malte.js}, +]{\Blue \vrule height.5\hsize width0.5\hsize} + +{\picheight=1.44em +% Normal JavaScript actions, but we access functions defined globaly in the 3D +% JavaScript context of "malte" Rich Media annotation. +\hlink[js:\DDDcontext{malte}.cntrClockWise();]{\inspic{boutona.pdf}} +\hlink[js:\DDDcontext{malte}.pause();]{\inspic{boutonb.pdf}} +\hlink[js:\DDDcontext{malte}.clockWise();]{\inspic{boutonc.pdf}} +\hlink[js:\DDDcontext{malte}.scaleSpeed(1/1.1);]{\inspic{boutond.pdf}} +\hlink[js:\DDDcontext{malte}.origSpeed();]{\inspic{boutone.pdf}} +\hlink[js:\DDDcontext{malte}.scaleSpeed(1.1);]{\inspic{boutonf.pdf}} +} + + +\vfil\break + + +% Lastly a showcase of transitions / page durations in \OpTeX/ slideshow. +% Because transitions are displayed only in fullscreen mode, we could request +% it by using `\fullscreen`. But we have more pages before this, so we didn't. + +% We just turn the rest of the document into slideshow. +\slides +\slideshow +% To see the transitions better, we color each page with a background color. +\global\pgbackground={\bgcolor \hrule height\pdfpageheight width\pdfpagewidth} +\glet\bgcolor=\Yellow + +% Transitions on all pages where it is not said otherwise will be of type +% "Wipe" and be 1 second long. +\transitions[Wipe:1] + +% The slides will by default be shown for 3 seconds before advancing to the +% next one. +\defaultpageduration[3] +% But the first slide has override to only be shown for 1 second. +\pageduration[1] + +\tit Presentation + +\subtit Transistions and durations + +\pg; +\glet\bgcolor=\Red +% All transitions are defined on the page object and they are shown when we go +% to that page. That means that we probably didn't see the "Wipe:1" animation +% of the first slide, because we already were there. However, this second slide +% with "Fade" is now shown correctly. (The first one also will, when we go +% back to it.) +\transition[Fade] + +\sec First slide + +Some\pg+ +% In a slideshow, by using \pg+ we are on a new PDF page with independently set +% transition/duration. We can use this to disable page durations -- we have +% seen the "single page override" in action on previous page, and the default +% duration on this "page". +\defaultpageduration[] + +% Also apply a long transition on this "page"/"slide"/"subslide". +\transition[Dissolve:4] + +% More uses of currently set default values follow. +text\pg+ + +to\pg+ + +test\pg+ + +slideshow + +\pg; +% Now show different transitions on differently colored pages: +\glet\bgcolor=\Green +\transition[Split:3:/Dm /V /M /I] + +\sec Second slide + +\transitions[Blinds:2] + +more\pg+ + +text + +\transitions[Wipe] + +\pg; +\glet\bgcolor=\Brown +\transition[Dissolve] + +\sec Third slide + +\pg; +\glet\bgcolor=\Red +\transition[Box] + +\sec More + +\pg; +\glet\bgcolor=\Yellow + +\sec slides + +\pg; +\glet\bgcolor=\Red + +\sec using + +\pg; +\glet\bgcolor=\Yellow + +\sec default transition + +bye\pg+ + +bye + +\bye diff --git a/macros/luatex/generic/pdfextra/pdfextra-doc.pdf b/macros/luatex/generic/pdfextra/pdfextra-doc.pdf new file mode 100644 index 0000000000..9534e46bfa Binary files /dev/null and b/macros/luatex/generic/pdfextra/pdfextra-doc.pdf differ diff --git a/macros/luatex/generic/pdfextra/pdfextra-doc.tex b/macros/luatex/generic/pdfextra/pdfextra-doc.tex new file mode 100644 index 0000000000..292bb34ab2 --- /dev/null +++ b/macros/luatex/generic/pdfextra/pdfextra-doc.tex @@ -0,0 +1,772 @@ +% vim: tw=80 +\load [doc, pdfextra] +\catcode`\.=11 + +% table notes (http://petr.olsak.net/optex/optex-tricks.html#tnote) +\newcount\tnotenum +\def\tnotelist{} +\def\tnote#1{\incr\tnotenum $^{\rm\_romannumeral\tnotenum}$\global\addto\tnotelist{{#1}}} +\def\tnoteprint{\typoscale[920/920]\par \tnotenum=0 + \ea\foreach\tnotelist + \do{\advance\tnotenum by1 \par $^{\rm\_romannumeral\tnotenum}$##1 }\par + \global\tnotenum=0 \gdef\tnotelist{}% +} + +\let\_cslinkcolor\Blue + +% allow hyperlinking of \OpTeX's control sequences (see doc.opm) +\let\_pdfextra_extdocaction\_pdfextra_urlaction +\let\_extdoclinkcolor\Blue +\def\_Xindex#1#2{\sdef{,#1}{}\slet{el:#1}{optexdoclink}} +\def\optexdoclink{\hlink[extdoc:\optexdocurl\#cs:\_tmpa]{\csstring\\\_tmpb}} +\def\optexdocurl{http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf} +\isfile{optex-doc.eref}\iftrue \input{optex-doc.eref}\fi + +% allow hyperlinks to TeX's control sequences (TeX in a Nutshell) +\def\Xeref#1{\sdef{,#1}{}\slet{el:#1}{texdoclink}} +\def\texdoclink{\hlink[extdoc:\texdocurl\#cs:\_tmpa]{\csstring\\\_tmpb}} +\def\texdocurl{http://petr.olsak.net/ftp/olsak/optex/tex-nutshell.pdf} +\isfile{tex-nutshell.eref}\iftrue \input{tex-nutshell.eref}\fi + + +\insertoutline{PDF extra} +\tit PDF extra -- extra PDF features for \OpTeX/ + +\hfill Version \_pdfextra_version + +\centerline{\it Michal Vlasák, 2021} +\bigskip + +\noindent +`PDFextra` is a third party package for \OpTeX/. It aims to provide access to +more advanced PDF features, which are currently not supported in \OpTeX/ -- +especially interactive and multimedia features. The development is hosted at +\url{https://github.com/vlasakm/pdfextra}. + +In the spirit of \OpTeX/ you may use these macros in any form you want. Either +by installing this package and doing `\load[pdfextra]` in \OpTeX/, or just by +copying some useful parts of this package into your documents / packages. +\OpTeX/ namespacing is used, but it can be easily stripped, if you wish to +incorporate these macros into other macro packages. The code currently depends +on \LuaTeX/, but mostly uses only pdf\TeX/ primitives and a few simple macros +from \OpTeX/. Additionally, the package can be used in plain LuaTeX and +LuaLaTeX (in a limited form), see section~\ref[user:plain+latex]. + +User documentation (`pdfextra-doc.tex`) and technical documentation interleaved +with source code (`pdfextra.opm`) are all typeset in this PDF file. Some +examples of usage are in the user documentation, but file +`pdfextra-example.tex` contains more examples. + +\insertoutline{Contents}\outlines{0} +\notoc\nonum \sec Contents +\maketoc + +\vfil\break + +\chap User documentation + +\sec Defining files + +Many commands provided by this package require you to supply a file . This +is because many commands either work directly (like inserting attachments or +multimedia) or can optionally use files (like inserting JavaScript). +The \"right" way to use is to first define the with:\nl\indent +\^`\filedef``/[]{}`. + +Where is the name you will use to refer to this file. It is currently +limited to ASCII only (as all \"s" required by this package). +Interpretation of +depends on the type, which may be: + +\begitems + * `e`, \"embedded file". The file with path will be embedded to the PDF + file. A file that is embedded this once, can later be used many times in + different contexts, e.g. you may use it to attach a video as an attachment but + also have it play on page 1 and even other pages. This is the best way, because + the resulting PDF file is self contained. + * `x`, \"external file". can only be a path to the current directory. + To refer to the file only is used, sort of like a reference. This way + the file you want to refer to {\em has} to be present in the same directory as + the PDF file when it is {\em viewed}! + * `u`, \"URL file". is the URL of the file you want to refer to. +\enditems + +All these create the same type of object, which ideally could be used +interchangibly everywhere a {\em file specification} is required in PDF. This is +sadly not always true. The limitations to only certain types of `\filedef`'s +will be mentioned in due sections. But as a rule of thumb, most of the time you +want to embed the files into PDF. The external/URL references are good for +refering to external files, although other methods are also possible there. + +Because most of the times you want to be embedded file, you may omit the +prior definition and instead use the itself. The file will be +autoembedded. + +Examples: + +\begtt +\filedef/u[doc-internet]{http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf} +\filedef/x[doc-local]{optex-doc.pdf} +\filedef/e[doc-embedded]{optex-doc.pdf} +\endtt + +\label[user:multimedia] +\sec Multimedia + +It is possible to insert video, audio and 3D files for playback/display inside +a PDF file (on a page). There are several different PDF mechanisms for +inserting multimedia. For audio/video this package uses the so called +\"Renditions", which currently have the best support in PDF viewers (fully +works in Acrobat and Foxit, partly in Evince and Okular). Rich Media +annotations are used for 3D art (works only in Acrobat Reader), although it is +possible to also insert audio/video using this mechanism it is very restricting +and Renditions are recommended. + +Use command \^`\render``[][]{}` for +inserting audio/video with Renditions or +\^`\RM``[][]{}` for inserting +audio/video/3D as Rich Media annnotation. +The result of this command is similiar to what `\inspic` +produces\fnote{But because annotations are involved, transformations using PDF +literals will not work as expected.}. Both commands expect to be +\~`\filedef`'d name of the file to play/display. As usual, fallback for +interpreting as path (and embedding it) is in place. It is recommended +to only use embedded files with both mechanisms (Rich Media requires it, +Renditions with other than embedded files do not work in Acrobat). Optional +key-value parameters may be used to customize default values. They may be left +out enitrely (including brackets). Last parameter, , defines so +called \"normal apperance", which is shown before the annotation is activated +(audio/video starts playing or 3D scene is displayed). The dimensions of +resulting multimedia annotation will be taken from . Most likely +you want to use a \"poster" picture (inserted with `\inspic`) as appearance -- +the dimensions will be taken from it and e.g. aspect ratio will be nicely +preserved. + +Customization of Renditions is possible using key-value parameters, but beware +that it mostly doesn't work in Evince and Okular (Acrobat and Foxit are fine in +this regard). The available parameters are in Table~\ref[tab:kv-renditions]. +Most customizations of Rich Media concern 3D art. Available parameters are +listed in Table~\ref[tab:kv-rm]. + +\midinsert +\label[tab:kv-renditions] +\caption/t Key value parameters available for Renditions (\~`\render`) +\cskip +\centerline{\table{lllp{72mm\fL}}{ +Key & Possible values & Default & Description \crll +`controls` & `true` or `false` & `false` & Whether to display audio/video player controls. \crl +`volume` & decimal betwen 0 and 100 & 100 & Audio volume. \crl +`repeat` & integer $\geq$ 0 & 1 & Number of repetitions (0 means loop forever). \crl +`background` & \OpTeX/ color & `\White` & Color used for part of the annotation not covered by video player (for wrong aspect ratios). \crl +`opacity` & decimal between 0 and 1 & 1 & Opacity of `background`. \crl +`aactions` & `\renditionautoplay` & (none) & Can be used for autoplay on page open. \crl +`name` & ascii string & `` & Name for use with actions and scripts. \crll +}} +\endinsert + +\midinsert +\label[tab:kv-rm] +\caption/t Key value parameters available for Rich Media (\~`\RM`) +\cskip +\centerline{\table{lp{31mm\fL}lp{75mm\fL}}{ +Key & Possible values & Default & Description \crll +`activation` & `explicit` or `auto` & `explicit` & Whether to automatically activate the annotation on page open or display normal apperance until user clicks. \crl +`deactivation` & `explicit` or `auto` & `explicit` & Whether to automatically deactivate the annotation on page close or require explicit deactivation by user (from right click menu). \crl +`toolbar` & `true` or `false` & `true` & Whether to show 3D toolbar (with view and other options). \crl +`views` & comma separated list of view s & `` & List of names of 3D views to be used. The default is to try a view of same . Beware that unknown views are silently ignored. \crl +`scripts` & comma separated list of script s & (none) & List of names of JavaScript script file s to be used. \crl +`name` & ascii string & `` & Name for use with actions and scripts. \crll +}} +\endinsert + +The weird `name` key is only required if one media file is used +more than once and control using actions or JavaScript scripts is needed. + +Examples of video insertion: + +\begtt +% embed file under name "video" +\filedef/e[video]{example-movie.mp4} +% insert video into page using Renditions mechanism with controls and autoplay +\render[video][ + name=bigvideo, + controls=true, + aactions=\renditionautoplay, +]{\picwidth=\hsize \inspic{example-image.pdf}} + +% render the same file again, but with different dimensions, no controls +% and explicit activation +\render[video]{\inspic{example-image.pdf}} +\endtt + +When displaying 3D there are more things involved. First, only U3D and PRC can +be included in PDF files. The simplest way to show the 3D scene on page is without +any optional parameters: +\par\nobreak\begtt +\RM[part.prc]{\picwidth=\hsize \inspic{part.png}} +\endtt + +The resulting view will be what is defined in the 3D file. But it is possible +to customize it, by creating custom view. Or even more of them -- they will be +available in the user interface for easy switching, first one is considered +default. Parameters not defined in a custom view often take what is in the 3D +file as default value. \^`\DDDview``[][]` is +the command for defining 3D views. The brackets surrounding key-value +parameters have to be included even if no key-value parameters are used. The +available parameters are explained in Table~\ref[tab:kv-3dview]. + +\midinsert +\label[tab:kv-3dview] +\caption/t Key value parameters available for 3D views (\~`\DDDview`) +\cskip +\centerline{\table{lp{38mm\fL}lp{55mm\fL}}{ +Key & Possible values & Default & Description \crll +`projection` & `perspective` or `ortho` & `perspective` & Projection type to use (perspective distorts the view, e.g. parallel lines are not shown as such, but is more natural to human eye, orthogonal projection is what is generally used with technical parts). \crl +`scale` & decimal number & 1 & Scaling to use when orthogonal projection is used. \crl +`FOV` & number between 0 and 180 & 30 & Field of view for use with perspective projection. \crl +`background` & \OpTeX/ color & `\White` & Color used as background in the 3D scene. \crl +`rendermode` & {\typosize[9/10]`Solid`,\hfil\break`SolidWireframe`,\hfil\break`Transparent`,\hfil\break`TransparentWireframe`,\hfil\break`BoundingBox`,\hfil\break`TransparentBoundingBox`,\hfil\break`Wireframe`,\hfil\break`ShadedWireframe`,\hfil\break`Vertices`,\hfil\break`ShadedVertices`,\hfil\break`Illustration`,\hfil\break`SolidOutline`,\hfil\break`ShadedIllustration`} & (taken from 3D file) & Used rendering mode. See PDF standard\tnote{\url{https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf\#G12.2358303}} for more details. \crl +`lighting` & `White`, `Day`, `Night`, `Hard`, `Primary`, `Blue`, `Red`, `Cube`, `CAD`, `Headlamp` & (taken from 3D file) & Used lighting scheme. See PDF standard\tnote{\url{https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf\#G12.2358356}} for more details.\crl +`method` & `media9`, `manual`, `u3d` & `media9` & Method used for defining 3D camera position and orientation. \crll +}} +\tnoteprint +\endinsert + +The value of `method` key influences what other key-value +parameters are available. For details about the manual method see the technical +documentation~(\ref[mm-3dviews]). The `u3d` method works only with U3D files +(not with PRC files) and requires you to know the internal \"path" of the view +contained in the file and is hence not always useful (especially when the paths +are weirdly constructed by exporting applications). But if you know the path +you can use \"`method=u3d, u3dpath=`". All Unicode characters are allowed in +. + +The most useful method of specifying the camera position/orientation is +`method=media9`. The same method is also used in a number of other packages +(movie15, rmannot, Con\TeX/t). Its input are key-value parameters, listed in +Table~\ref[tab:kv-media9]. For illustration of the parameters check the +documentation\fnote{\url{https://mirrors.ctan.org/macros/latex/contrib/media9/doc/media9.pdf\#figure.8}} +of media9. + +\midinsert +\label[tab:kv-media9] +\caption/t Key value parameters available for media9 method of 3D views (\^`\DDDview`) +\cskip +\centerline{\table{lp{38mm\fL}lp{50mm\fL}}{ +Key & Possible values & Default & Description \crll +`coo` & three space separated (decimal) numbers & `0 0 0` & \"Center of orbit". Coordinates of the point camera is supposed to look at. \crl +`roo` & (decimal) number & `0` & Distance of camera from `coo`. \crl +`c2c` & three space separated (decimal) numbers & `0 -1 0` & \"Center of orbit to camera" vector. A directional vector (i.e. length doesn't matter). The direction the camera will be looking at is opposite of this vector. Default is view towards positive $y$.\crll +}} +\endinsert + +You can construct simple views only by using these few parameters. When talking +about meanings/names of different views it is needed to know the real placement +of the 3D object in the 3D world. But for a reasonably orientated object in the +center (`coo=0 0 0`) constructing simple views is very easy (keep in mind +`method=media9` is default): + +\begtt +\DDDview[front][ + projection=ortho, + roo=400, +] +\DDDview[left][ + projection=ortho, + roo=400, + c2c=-1 0 0, +] +\DDDview[top][ + projection=ortho, + roo=400, + c2c=0 0 1, +] +\DDDview[isometric][ + projection=ortho, + roo=500, + c2c=-1 -1 1, +] +\endtt + +We can then perhaps use these views in \^`\RM`: + +\begtt +% Auto activated 3D Rich Media annotation. White background just ensures +% the right dimensions. Comma in `views` is escaped using "{}". +\RM[part.prc][ + activation=auto, + views={front, left}, +]{{\White\vrule width\hsize height\vsize}} + +\RM[part.prc][ % the same 3D file, now with different views + name=part2, + activation=auto, + views={top, isometric}, +]{{\White\vrule width\hsize height\vsize}} +\endtt + +If you want to deduce the view parameters automatically it is possible. You can +just not specify any view, but include the `3Dmenu.js` script from media9 +package. It enables you to right click the annotation and select \"Get Current +View" (or even \"Generate Default View" which finds the view all by itself). A +window with generated parameters will show up. You can then copy the ones this +package understands (`c2c`, `coo`, `roo`) and use them. You don't have to be +excessive with precision, because after calculation everything gets rounded to +6 decimal places anyways. + +\begtt +% using 3Dmenu.js to generate 3D view parameters automatically +\RM[part.prc][ + name=part3, + activation=auto, + scripts=3Dmenu.js, +]{{\White\vrule width\hsize height\vsize}} +\endtt + +The use of `scripts` isn't limited to this though, there are many other +possibilities. First, you can use as many scripts as you want +(`scripts={script1.js, script2.js, ...}`), but be careful that 3D JavaScript is +kind of special, and has to come from embedded files (here we +were using the auto-embedding, but we could have used e.g. +\~`\filedef/e[3dmenu]{3Dmenu.js}` and then \"`3dmenu`" instead). For creating +your own scripts check out the Acrobat 3D JavaScript +API\fnote{\url{https://wwwimages.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/AcrobatDC_js_3d_api_reference.pdf}}. +It is possible to do different transformations and achieve animations using +\"time events". The implicit \"context" of 3D scripts can be accessed from +normal JavaScript actions (see~\ref[user:actions-3djs]). Vice versa 3D scripts +may access the global JavaScript environment using `host` object. + +More examples of 3D Rich Media, including usage of 3D JavaScript, are available +in the example file `pdfextra-example.tex`. They show how it is possible to +port the examples used by media9. + +\sec Actions + +Actions are very important aspect of interactivity in the context of PDF. There +are a few very useful types of actions, like \"goto" actions which jump to +other part of document. There are also a few ways how to {\em execute} actions. +The most usual is a clickable area on page, but clickable bookmarks (\"document +outline") also execute actions behind the scenes. \OpTeX/ supports only basic +\"goto" and \"URI" actions using `\ilink` (used for `\ref`, `\cite`, etc.) and +`\ulink` (used for `\url`). + +This package offers generalization of this mechanism. The core of it is a way +of specifying an action. This syntax is called and is used for +example by `\hlink` command, which can replace both `\ilink` and `\ulink`. + is a comma separated list of `:`. where +refers to the action type and the syntax of arguments is dependant on . +Leading spaces are ignored, trailing aren't. You probably won't often use the +possiblity of specifying multiple actions, but it is for chaining execution of +several actions. + +\^`\pdfaction``[]` is available for lower level creation of +different actions, but for clickable areas on page you will use +\^`\hlink``[]{}` with a very similiar syntax. Although note, +that `\hlink`'s interface is also not really high level and wrapping it inside +macros like `\ref` or `\url` might be beneficial. will be typeset +directly and the area it occupies will be clickable. Clicking it executes +action defined by . Line breaks inside will be possible, in +that case several clickable rectangles will be created, one for each line. +Normally in text you want the areas to be of the same height and depth +(calculated from `\baselineskip`), to achieve sort of a lining, uniform effect. +If you want to define big clickable buttons, you may need to turn off the +lining effect using \^`\nolininglinks`. It respects groups, but a counterpart +(\^`\lininglinks`) is also available. + +There are a few predefined action types (): `url`, `extref`, `extpgref`, +`named`, `transition`, `js`, `goto3dview` and `rendition`. They will be explained in a +moment. Any unrecognized is understood as an \"internal link", where +`:` is the destination of the link. Hence it is possible to +use `\hlink` as `\ilink` for example with \OpTeX/'s normal types +of internal links. For example: +\begtt +See section~\hlink[ref:section]{2.2.13} or page~\hlink[pg:5]{5}. +\endtt +`\ulink` may be replaced like this: +\begtt +Visit CTAN's \hlink[url:https://www.ctan.org/]{website}. +\endtt + +Before we really get into different types of actions, there is a nicer command +for setting the initial (\"open") action of PDF document, which is executed +when the document is opened. It defaults to opening the page with the zoom +level according to viewing user's preferences. But you can change this using +\^`\openaction``[]`: + +\begtt +\openaction[pg:2] +\endtt + +\secc External references +There are two actions analogous to internal links that can be used to link to +external documents. `[extref::]` can be used to refer +to named locations in a PDF document prepared by `\filedef` with . +`[extpgref::]` is similiar but refers to a page number. +Although it would be nice, these actions aren't well supported by all viewers. + +Example: + +\begtt +\hlink[extref:doc-internet:ref:langphrases]{OpTeX documentation, + section \"Multilingual phrases and quotation marks".} +\hlink[extpgref:doc-internet:12]{OpTeX documentation, page 12.} +\endtt + +(Note that \"`:`" in \"`ref:langphrase`" is not part of the syntactic rule, it +is just the value of in this case.) + +A little bit of customization is possible, see~\ref[actions-jump]. + +Because of the poor support you may find luck with the less universal url action with `#fragment`: + +\begtt +\hlink[url:http://petr.olsak.net/ftp/olsak/optex/optex-doc.pdf#ref:langphrases] + {OpTeX documentation, section \"Multilingual phrases and quotation marks".} +\endtt + +\secc Named actions +There are four defined in PDF standard, but viewers may support more. All in +examples: + +\begtt +\hlink[named:NextPage]{Go to next page,} +\hlink[named:PrevPage]{go to previous page,} +\hlink[named:FirstPage]{go to first page,} +\hlink[named:LastPage]{go to last page.} +\endtt + +\secc Transition actions + +Transition actions generally make sense only when chained {\em after} jump +actions. The specified transition/animation will occur, before destination is +opened, but it will not override a transition defined for the particular page. +The syntax is `[transition:]`. See~\ref[user:transitions] for +more information about ``. + +Example: +\begtt +\hlink[ref:yellow-slide, transition:Box:3:/M /O] + {Go to yellow slide with long outward Box transition} +\endtt + +\secc JavaScript actions + +They allow executing pieces of JavaScript code using syntax: +`[js:]`. If is a validly `\filedef`'d the script from file + will be executed (only embedded files are valid). Otherwise